diff --git a/calcit.cirru b/calcit.cirru index 15b1472..348b036 100644 --- a/calcit.cirru +++ b/calcit.cirru @@ -1,112 +1,150 @@ -{} (:about "|Machine-generated snapshot. Do not edit directly — changes will be overwritten. Use `calcit query` to inspect and `calcit edit`/`calcit tree` to modify. Run `calcit docs agents --full` first. Manual edits must follow format and schema conventions, then run `calcit edit format`.") (:package |app) - :entries $ {} - :default $ {} (:description |) (:init-fn 'app.main/main!) (:mode :js) (:reload-fn 'app.main/reload!) +{} + :about "|Machine-generated snapshot. Do not edit directly — changes will be overwritten. Use `calcit query` to inspect and `calcit edit`/`calcit tree` to modify. Run `calcit docs agents --contract` before mutations; use `--full` for first orientation or changed contract digest. Manual edits must follow format and schema conventions, then run `calcit edit format`." + :package |app + :entries $ {} $ :default + {} (:description |) (:init-fn 'app.main/main!) (:mode :js) (:reload-fn 'app.main/reload!) :feature-policy $ {} :modules $ [] |skir/ |lilac/ :type-slots $ {} :files $ {} 'app.http $ %{} 'FileEntry :defs $ {} + 'IncomingRequestHost $ %{} 'CodeEntry (:doc |) + :code $ quote $ deftrait IncomingRequestHost + .on! $ :: 'Fn $ {} + :args $ [] 'app.http/IncomingRequestHost 'String 'Dynamic + :return 'app.http/IncomingRequestHost + :examples $ [] + :ffi $ {} (:backend :js) (:kind :external-object) (:target :node) + :names $ {} $ :on! |on + :schema $ :: 'Trait 'extract-body $ %{} 'CodeEntry (:doc |) - :code $ quote - defn extract-body (req cb) - let - *buf $ atom | - .!on req |data $ fn (d) (swap! *buf str d) - .!on req |end $ fn () - cb $ parse-cirru-edn (deref *buf) + :code $ quote $ defn extract-body (req cb) + let + *buf $ atom | + req .on! |data $ fn (d) (swap! *buf str d) + req .on! |end $ fn () $ cb + parse-cirru-edn $ deref *buf + , &unit :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'Fn $ {} (:return 'Unit) + :args $ [] 'app.http/IncomingRequestHost $ :: 'Fn + {} (:return 'Unit) + :args $ [] 'Dynamic + :features $ #{} :js-ffi :ns $ %{} 'NsEntry (:doc |) - :code $ quote (ns app.http) + :code $ quote $ ns app.http 'app.main $ %{} 'FileEntry :defs $ {} + 'CosClientHost $ %{} 'CodeEntry (:doc |) + :code $ quote $ deftrait CosClientHost + .get-object-url! $ :: 'Fn $ {} + :args $ [] 'app.main/CosClientHost 'JsObject $ :: 'Fn + {} + :args $ [] 'Dynamic 'Dynamic + :return 'Unit + :return 'Dynamic + :examples $ [] + :ffi $ {} (:backend :js) (:kind :external-object) (:target :node) + :names $ {} $ :get-object-url! |getObjectUrl + :schema $ :: 'Trait + 'CosDataHost $ %{} 'CodeEntry (:doc |) + :code $ quote $ deftrait CosDataHost (:url 'String) + :examples $ [] + :ffi $ {} (:backend :js) (:kind :external-object) (:target :node) + :names $ {} $ :url |Url + :schema $ :: 'Trait 'handle-token $ %{} 'CodeEntry (:doc |) - :code $ quote - defn handle-token (bucket app-id secret file-key cb) - &let - cos-obj $ new COS - js-object (:SecretId app-id) (:SecretKey secret) - w-js-log $ .!getObjectUrl cos-obj - js-object (:Bucket bucket) (:Region |ap-shanghai) - :Key $ str |cos-up/ (or file-key |demo0) - :Method |PUT - :Sign true - fn (err data) (js/console.log "|COS DATA:" err data) - if (some? err) - cb $ {} (:code 400) - :body $ {} - :message $ str err + :code $ quote $ defn handle-token (bucket app-id secret file-key cb) + let + cos-obj $ unsafe-coerce + new COS $ js-object (:SecretId app-id) (:SecretKey secret) + , app.main/CosClientHost + w-js-log $ cos-obj .get-object-url! + js-object (:Bucket bucket) (:Region |ap-shanghai) + :Key $ str |cos-up/ $ or file-key |demo0 + :Method |PUT + :Sign true + fn (err data) (js/console.log |COS_DATA: err data) + if (some? err) + cb $ {} (:code 400) + :body $ {} $ :message (str err) + let + cos-data $ unsafe-coerce data app.main/CosDataHost cb $ {} (:code 200) - :headers $ {} (|Access-Control-Allow-Origin |*) - :body $ {} - :url $ .-Url data + :headers $ {} $ |Access-Control-Allow-Origin |* + :body $ {} $ :url (.-url cos-data) :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'Fn $ {} (:return 'Unit) + :args $ [] 'String 'String 'String 'String $ :: 'Fn + {} (:return 'Unit) + :args $ [] 'Dynamic + :features $ #{} :js-ffi 'main! $ %{} 'CodeEntry (:doc |) - :code $ quote - defn main! () - println "|COS get" $ .-getAuthorization COS - skir/create-server! on-request! $ {} - :port $ js/parseInt - option:unwrap-or (get-env |PORT) |4000 + :code $ quote $ defn main! () + skir/create-server! on-request! $ %some $ {} + :port $ js/parseInt $ option:unwrap-or (get-env |PORT) |4000 + , &unit :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'Fn $ {} (:return 'Unit) + :args $ [] + :features $ #{} :js-ffi 'on-request! $ %{} 'CodeEntry (:doc |) - :code $ quote - defn on-request! (req-data res) - let - request $ unsafe-coerce req-data Map - method $ option:unwrap-or (get request :method) :get - request-path $ option:unwrap-or (get request :path) | - println $ format-cirru-edn - -> request (dissoc :original-request) (dissoc :headers) - if - and (= :post method) (= |/token request-path) - let - secrets $ unsafe-coerce - parse-cirru-edn $ fs/readFileSync - path/join (fileURLToPath js/import.meta.url) |../../secrets.cirru - , |utf8 - , Map - original-request $ option:unwrap-or (get request :original-request) nil - fn (cb) - extract-body original-request $ fn (body) - let - payload $ unsafe-coerce body Map - user $ option:unwrap-or (get payload :user) | - pass $ option:unwrap-or (get payload :pass) | - expected-user $ option:unwrap-or (get secrets :user) | - expected-pass $ option:unwrap-or (get secrets :pass-md5) | - println |BODY payload - if - and (= user expected-user) (= pass expected-pass) - handle-token - option:unwrap-or (get secrets :bucket) | - option:unwrap-or (get secrets :app-id) | - option:unwrap-or (get secrets :secret) | - option:unwrap-or (get payload :file-key) | - , cb - cb $ {} (:code 403) (:message "|Not user") - :headers $ {} - :body $ {} (:message "|not open for all users...") - if (= :options method) - {} (:code 200) (:message |OK) - :headers $ {} (|Access-Control-Allow-Origin |*) - {} (:code 404) (:message "|Non hit") - :headers $ {} - :body $ {} (:message "|only token is impelemented") + :code $ quote $ defn on-request! (req-data res) + let + request $ unsafe-coerce req-data Map + method $ option:unwrap-or (get request :method) :get + request-path $ option:unwrap-or (get request :path) | + println $ format-cirru-edn $ -> request (dissoc :original-request) (dissoc :headers) + if + and (= :post method) (= |/token request-path) + let + secrets $ unsafe-coerce + parse-cirru-edn $ fs/readFileSync + path/join (fileURLToPath js/import.meta.url) |../../secrets.cirru + , |utf8 + , Map + original-request $ option:unwrap-or (get request :original-request) nil + fn (cb) + extract-body original-request $ fn (body) + let + payload $ unsafe-coerce body Map + user $ option:unwrap-or (get payload :user) | + pass $ option:unwrap-or (get payload :pass) | + expected-user $ option:unwrap-or (get secrets :user) | + expected-pass $ option:unwrap-or (get secrets :pass-md5) | + println |BODY payload + if + and (= user expected-user) (= pass expected-pass) + handle-token + option:unwrap-or (get secrets :bucket) | + option:unwrap-or (get secrets :app-id) | + option:unwrap-or (get secrets :secret) | + option:unwrap-or (get payload :file-key) | + , cb + cb $ {} (:code 403) (:message "|Not user") + :headers $ {} + :body $ {} $ :message "|not open for all users..." + if (= :options method) + {} (:code 200) (:message |OK) + :headers $ {} $ |Access-Control-Allow-Origin |* + {} (:code 404) (:message "|Non hit") + :headers $ {} + :body $ {} $ :message "|only token is impelemented" :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'Fn $ {} (:return 'Dynamic) + :args $ [] 'skir.schema/Request 'Dynamic + :features $ #{} :js-ffi 'reload! $ %{} 'CodeEntry (:doc |) - :code $ quote - defn reload! () (skir/reset-req-handler! on-request!) (println |Reloaded.) + :code $ quote $ defn reload! () (skir/reset-req-handler! on-request!) (println |Reloaded.) :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'Fn $ {} (:return 'Unit) + :args $ [] + :features $ #{} :js-ffi :ns $ %{} 'NsEntry (:doc |) - :code $ quote - ns app.main $ :require (|cos-nodejs-sdk-v5 :default COS) (skir.core :as skir) + :code $ quote $ ns app.main + :require (|cos-nodejs-sdk-v5 :default COS) (skir.core :as skir) app.$meta :refer $ calcit-dirname |node:path :as path |node:url :refer $ fileURLToPath diff --git a/config/calcit-quality.cirru b/config/calcit-quality.cirru index 527e076..1aa84e3 100644 --- a/config/calcit-quality.cirru +++ b/config/calcit-quality.cirru @@ -4,56 +4,38 @@ :codeNil 0 :declaredOptional 0 :deprecatedCalls 0 - :schemaDynamic 1 - :typeNone 1 + :schemaDynamic 0 + :typeNone 0 :typeNotFull 1 - :unresolved 1 + :unresolved 0 :unsafeCoerce 0 |app.main/handle-token $ {} (:codeDynamic 0) :codeNil 0 :declaredOptional 0 :deprecatedCalls 0 - :schemaDynamic 1 - :typeNone 1 - :typeNotFull 1 - :unresolved 1 - :unsafeCoerce 0 - |app.main/main! $ {} (:codeDynamic 0) - :codeNil 0 - :declaredOptional 0 - :deprecatedCalls 0 - :schemaDynamic 1 - :typeNone 1 + :schemaDynamic 0 + :typeNone 0 :typeNotFull 1 - :unresolved 1 - :unsafeCoerce 0 + :unresolved 0 + :unsafeCoerce 2 |app.main/on-request! $ {} (:codeDynamic 0) :codeNil 1 :declaredOptional 0 :deprecatedCalls 0 - :schemaDynamic 1 - :typeNone 1 - :typeNotFull 1 - :unresolved 2 - :unsafeCoerce 3 - |app.main/reload! $ {} (:codeDynamic 0) - :codeNil 0 - :declaredOptional 0 - :deprecatedCalls 0 - :schemaDynamic 1 - :typeNone 1 + :schemaDynamic 0 + :typeNone 0 :typeNotFull 1 :unresolved 1 - :unsafeCoerce 0 + :unsafeCoerce 3 :metrics $ {} (:codeDynamic 0) :codeNil 1 :declaredOptional 0 :deprecatedCalls 0 - :schemaDynamic 5 - :typeNone 5 - :typeNotFull 5 - :unresolved 6 - :unsafeCoerce 3 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 3 + :unresolved 1 + :unsafeCoerce 5 :scope $ {} (:includeDependencies false) :namespace nil :namespacePrefix nil diff --git a/deps.cirru b/deps.cirru index 5335830..71d07e0 100644 --- a/deps.cirru +++ b/deps.cirru @@ -1,5 +1,5 @@ -{} (:calcit-version |0.13.77) (:version |0.0.7) +{} (:calcit-version |0.14.17) (:version |0.0.7) :dependencies $ {} - |calcit-lang/skir |0.0.23 + |calcit-lang/skir |0.0.24 |calcit-lang/lilac |0.5.9 diff --git a/package.json b/package.json index 24a4221..04bc224 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "packageManager": "yarn@4.12.0", "version": "0.0.7", "dependencies": { - "@calcit/procs": "0.13.77", + "@calcit/procs": "0.14.17", "cos-nodejs-sdk-v5": "^2.12.4" } } diff --git a/yarn.lock b/yarn.lock index 3c73a08..9ed4ff0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,14 +5,14 @@ __metadata: version: 8 cacheKey: 10c0 -"@calcit/procs@npm:0.13.77": - version: 0.13.77 - resolution: "@calcit/procs@npm:0.13.77" +"@calcit/procs@npm:0.14.17": + version: 0.14.17 + resolution: "@calcit/procs@npm:0.14.17" dependencies: "@calcit/ternary-tree": "npm:0.0.26" "@cirru/parser.ts": "npm:^0.0.9" "@cirru/writer.ts": "npm:^0.1.9" - checksum: 10c0/7f0d79ad9e7963728518c3754174136d7c2e906c7177785d633f622300be11b84a8f9ae659c5b93c9fb8f7d47e4fffba773bbe90a30a0f53fc3d1258ab850851 + checksum: 10c0/91b236157b56eb3c9478796d31e2bb96f3668ec57dddb2875162c4a069f5b8ee769b8dd9146f3f34d71812393e72cff0c47022e59e605fffecbeca2b0787b8da languageName: node linkType: hard @@ -600,7 +600,7 @@ __metadata: version: 0.0.0-use.local resolution: "root-workspace-0b6124@workspace:." dependencies: - "@calcit/procs": "npm:0.13.77" + "@calcit/procs": "npm:0.14.17" cos-nodejs-sdk-v5: "npm:^2.12.4" languageName: unknown linkType: soft