From a68bb53b09c9790d24bb7805243ff6326e9cbf13 Mon Sep 17 00:00:00 2001 From: jiyinyiyong Date: Sun, 13 Sep 2026 14:56:29 +0800 Subject: [PATCH 1/4] chore: align @calcit/procs to 0.14.16 --- package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 6f7cad0..ba5d928 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "vite": "^7.3.1" }, "dependencies": { - "@calcit/procs": "^0.13.27", + "@calcit/procs": "0.14.16", "diff": "^8.0.2" } } diff --git a/yarn.lock b/yarn.lock index 6be9756..d47a476 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,14 +5,14 @@ __metadata: version: 8 cacheKey: 10c0 -"@calcit/procs@npm:^0.13.27": - version: 0.13.27 - resolution: "@calcit/procs@npm:0.13.27" +"@calcit/procs@npm:0.14.16": + version: 0.14.16 + resolution: "@calcit/procs@npm:0.14.16" dependencies: "@calcit/ternary-tree": "npm:0.0.26" "@cirru/parser.ts": "npm:^0.0.9" "@cirru/writer.ts": "npm:^0.1.9" - checksum: 10c0/f3f2d1a3dd94797f99bec39cbf722b7d98d0308d0643f861997b1accc44fe68f5922149b268881aae1df4a3524968e3f10c58870358952bd959ff4dddcfd326a + checksum: 10c0/627197e5b42d6eb550eab24c2fd83b9cddfdc0cd00b9bd8a462e53f211267d36514fecbe77f722b5d591ca7e2d0c49bbd28f7e0d9cf0652eee202ed8f4f6794e languageName: node linkType: hard @@ -445,7 +445,7 @@ __metadata: version: 0.0.0-use.local resolution: "calcit-workflow@workspace:." dependencies: - "@calcit/procs": "npm:^0.13.27" + "@calcit/procs": "npm:0.14.16" bottom-tip: "npm:^0.1.5" diff: "npm:^8.0.2" vite: "npm:^7.3.1" From dd7282907148031a6e1cd9107baeef079c267c92 Mon Sep 17 00:00:00 2001 From: jiyinyiyong Date: Sun, 13 Sep 2026 14:56:29 +0800 Subject: [PATCH 2/4] chore: reformat snapshot with Calcit 0.14.16 --- calcit.cirru | 558 ++++++++++++++++++++++++--------------------------- deps.cirru | 2 +- 2 files changed, 268 insertions(+), 292 deletions(-) diff --git a/calcit.cirru b/calcit.cirru index 3a90525..8155fe7 100644 --- a/calcit.cirru +++ b/calcit.cirru @@ -1,213 +1,201 @@ -{} (:about "|Machine-generated snapshot. Do not edit directly — changes will be overwritten. Use `cr query` to inspect and `cr edit`/`cr tree` to modify. Run `cr docs agents --full` first. Manual edits must follow format and schema conventions, then run `cr edit format`.") (:package |app) - :entries $ {} - :default $ {} (:description |) (:init-fn 'app.main/main!) (:mode :native) (: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 :native) + :reload-fn 'app.main/reload! :feature-policy $ {} :modules $ [] |respo.calcit/ |lilac/ |respo-ui.calcit/ |respo-markdown.calcit/ |reel.calcit/ |js-ffi/ :type-slots $ {} :files $ {} - |app.comp.container $ %{} 'FileEntry + 'app.comp.container $ %{} 'FileEntry :defs $ {} - |comp-checked $ %{} 'CodeEntry (:doc |) - :code $ quote - defcomp comp-checked (checked? text handler) - div - {} (:class-name css/row-center) - :style $ {} (:cursor :pointer) - :on-click handler - input $ {} (:type |checkbox) (:checked checked?) - :style $ {} (:cursor :pointer) - <> text css/font-fancy + 'comp-checked $ %{} 'CodeEntry (:doc |) + :code $ quote $ defcomp comp-checked (checked? text handler) + div + {} (:class-name css/row-center) + :style $ {} $ :cursor :pointer + :on-click handler + input $ {} (:type |checkbox) (:checked checked?) + :style $ {} $ :cursor :pointer + <> text css/font-fancy :examples $ [] :schema $ :: 'Dynamic - |comp-container $ %{} 'CodeEntry (:doc |) - :code $ quote - defcomp comp-container (reel) - let - store $ unsafe-coerce (reel-schema/read-field reel :store) 'app.schema/StoreData - states $ :states store - sorted? $ :sorted? store - show-result? $ :show-result? store - by-word? $ :by-word? store - differ $ if by-word? diff/diffWords diff/diffLines - changes $ tagging-data - to-calcit-data $ if sorted? - differ - sort-by-line $ :old-text store - sort-by-line $ :new-text store - differ (:old-text store) (:new-text store) + 'comp-container $ %{} 'CodeEntry (:doc |) + :code $ quote $ defcomp comp-container (reel) + let + store $ unsafe-coerce + reel-schema/read-field reel :store + , 'app.schema/StoreData + states $ :states store + sorted? $ :sorted? store + show-result? $ :show-result? store + by-word? $ :by-word? store + differ $ if by-word? diff/diffWords diff/diffLines + changes $ tagging-data $ to-calcit-data + if sorted? + differ + sort-by-line $ :old-text store + sort-by-line $ :new-text store + differ (:old-text store) (:new-text store) + div + {} $ :class-name $ str-spaced css/global css/fullscreen css/column + comp-toolbar show-result? sorted? by-word? div - {} $ :class-name (str-spaced css/global css/fullscreen css/column) - comp-toolbar show-result? sorted? by-word? - div - {} - :class-name $ str-spaced css/flex css/row - :style $ {} (:overflow :auto) - if show-result? (comp-diff-view changes by-word?) - div - {} $ :class-name (str-spaced css/expand css/row css/flex) - textarea $ {} - :class-name $ str-spaced css/textarea css/expand style-text - :value $ :old-text store - :placeholder "|Old text" - :on-input $ fn (e d!) - d! $ :: :write-old - option:unwrap-or (get e :value) | - :spell-check false - :autofocus true - comp-divider - textarea $ {} - :class-name $ str-spaced css/textarea css/expand style-text - :value $ :new-text store - :placeholder "|New text" - :on-input $ fn (e d!) - d! $ :: :write-new - option:unwrap-or (get e :value) | - :spellcheck false - when dev? $ comp-reel (>> states :reel) reel ({}) - when dev? $ comp-inspect |Store store - {} $ :bottom 0 + {} + :class-name $ str-spaced css/flex css/row + :style $ {} $ :overflow :auto + if show-result? (comp-diff-view changes by-word?) + div + {} $ :class-name $ str-spaced css/expand css/row css/flex + textarea $ {} + :class-name $ str-spaced css/textarea css/expand style-text + :value $ :old-text store + :placeholder "|Old text" + :on-input $ fn (e d!) + d! $ :: :write-old $ option:unwrap-or (get e :value) | + :spell-check false + :autofocus true + comp-divider + textarea $ {} + :class-name $ str-spaced css/textarea css/expand style-text + :value $ :new-text store + :placeholder "|New text" + :on-input $ fn (e d!) + d! $ :: :write-new $ option:unwrap-or (get e :value) | + :spellcheck false + when dev? $ comp-reel (>> states :reel) reel $ {} + when dev? $ comp-inspect |Store store $ {} (:bottom 0) :examples $ [] - :schema $ :: 'Fn - {} (:return 'respo.schema/Component) - :args $ [] 'Dynamic - :features $ #{} :js-ffi - |comp-diff-view $ %{} 'CodeEntry (:doc |) - :code $ quote - defcomp comp-diff-view (changes by-word?) - list-> - {} (:class-name css/flex) - :style $ {} (:padding-bottom 80) (:overflow :auto) - :line-height $ if by-word? |20px - -> changes $ map-indexed - fn (idx chunk) - [] idx $ let - tok $ option:unwrap-or (get chunk :value) | - cond - option:some? $ get chunk :removed - div $ {} (:inner-text tok) - :class-name $ str-spaced style-line style-removed (if by-word? style-word-mode) - :title $ str "|Removed " - option:unwrap-or (get chunk :count) 0 - , "| chunks" - (option:some? (get chunk :added)) - div $ {} (:inner-text tok) - :class-name $ str-spaced style-line style-added (if by-word? style-word-mode) - :title $ str "|Added " - option:unwrap-or (get chunk :count) 0 - , "| chunks" - true $ div - {} (:inner-text tok) - :class-name $ str-spaced style-line style-no-change (if by-word? style-word-mode) - ; :title $ str (:count chunk) "| chunks reversed" + :schema $ :: 'Fn $ {} + :return 'respo.schema/Component + :args $ [] 'Dynamic + :features $ #{} :js-ffi + 'comp-diff-view $ %{} 'CodeEntry (:doc |) + :code $ quote $ defcomp comp-diff-view (changes by-word?) + list-> + {} (:class-name css/flex) + :style $ {} (:padding-bottom 80) (:overflow :auto) + :line-height $ if by-word? |20px + -> changes $ map-indexed $ fn (idx chunk) + [] idx $ let + tok $ option:unwrap-or (get chunk :value) | + cond + option:some? $ get chunk :removed + div $ {} (:inner-text tok) + :class-name $ str-spaced style-line style-removed $ if by-word? style-word-mode + :title $ str "|Removed " + option:unwrap-or (get chunk :count) 0 + , "| chunks" + (option:some? (get chunk :added)) + div $ {} (:inner-text tok) + :class-name $ str-spaced style-line style-added $ if by-word? style-word-mode + :title $ str "|Added " + option:unwrap-or (get chunk :count) 0 + , "| chunks" + true $ div $ {} (:inner-text tok) + :class-name $ str-spaced style-line style-no-change $ if by-word? style-word-mode + ; :title $ str (:count chunk) "| chunks reversed" :examples $ [] - :schema $ :: 'Fn - {} (:return 'respo.schema/Component) - :args $ [] 'Dynamic 'Bool - |comp-divider $ %{} 'CodeEntry (:doc |) - :code $ quote - defcomp comp-divider () $ div - {} $ :style - {} (:width 1) - :background-color $ hsl 0 0 94 + :schema $ :: 'Fn $ {} + :return 'respo.schema/Component + :args $ [] 'Dynamic 'Bool + 'comp-divider $ %{} 'CodeEntry (:doc |) + :code $ quote $ defcomp comp-divider () + div $ {} $ :style + {} (:width 1) + :background-color $ hsl 0 0 94 :examples $ [] :schema $ :: 'Dynamic - |comp-toolbar $ %{} 'CodeEntry (:doc |) - :code $ quote - defcomp comp-toolbar (show-result? sorted? by-word?) + 'comp-toolbar $ %{} 'CodeEntry (:doc |) + :code $ quote $ defcomp comp-toolbar (show-result? sorted? by-word?) + div + {} $ :class-name $ str-spaced css/row-parted style-toolbar + <> "|Diff View" $ {} + :color $ hsl 0 0 40 + :font-family ui/font-fancy div - {} $ :class-name (str-spaced css/row-parted style-toolbar) - <> "|Diff View" $ {} - :color $ hsl 0 0 40 - :font-family ui/font-fancy - div - {} $ :class-name (merge css/row-center) - comp-checked show-result? "|Result?(⌘ e)" $ fn (e d!) - d! $ :: :toggle-result - =< 16 nil - comp-checked sorted? |Sorted $ fn (e d!) - d! $ :: :toggle-sorted - =< 16 nil - comp-checked by-word? |ByWord $ fn (e d!) - d! $ :: :toggle-word - =< 16 nil - a $ {} (:class-name css/link) (:inner-text |Swap) (:title "|⌘ i") - :on-click $ fn (e d!) - d! $ :: :swap-text - =< 16 nil - a $ {} (:class-name css/link) (:inner-text |Clear) (:title "|⌘ k") - :on-click $ fn (e d!) - d! $ :: :clear-text + {} $ :class-name $ merge css/row-center + comp-checked show-result? "|Result?(⌘ e)" $ fn (e d!) + d! $ :: :toggle-result + =< 16 nil + comp-checked sorted? |Sorted $ fn (e d!) + d! $ :: :toggle-sorted + =< 16 nil + comp-checked by-word? |ByWord $ fn (e d!) + d! $ :: :toggle-word + =< 16 nil + a $ {} (:class-name css/link) (:inner-text |Swap) (:title "|⌘ i") + :on-click $ fn (e d!) + d! $ :: :swap-text + =< 16 nil + a $ {} (:class-name css/link) (:inner-text |Clear) (:title "|⌘ k") + :on-click $ fn (e d!) + d! $ :: :clear-text :examples $ [] :schema $ :: 'Dynamic - |sort-by-line $ %{} 'CodeEntry (:doc |) - :code $ quote - defn sort-by-line (text) - -> text (.split-lines) (.sort-by identity) (.join-str &newline) + 'sort-by-line $ %{} 'CodeEntry (:doc |) + :code $ quote $ defn sort-by-line (text) + -> text (.split-lines) (.sort-by identity) (.join-str &newline) :examples $ [] :schema $ :: 'Dynamic - |style-added $ %{} 'CodeEntry (:doc |) - :code $ quote - defstyle style-added $ {} - |& $ {} - :background-color $ hsl 200 100 92 + 'style-added $ %{} 'CodeEntry (:doc |) + :code $ quote $ defstyle style-added + {} $ |& $ {} + :background-color $ hsl 200 100 92 :examples $ [] :schema $ :: 'Dynamic - |style-line $ %{} 'CodeEntry (:doc |) - :code $ quote - defstyle style-line $ {} - |& $ {} (:line-height |24px) (:font-size 12) (:font-family ui/font-code) (:margin 0) (:padding "|0 8px") (:white-space :pre) (:overflow-x :auto) + 'style-line $ %{} 'CodeEntry (:doc |) + :code $ quote $ defstyle style-line + {} $ |& $ {} (:line-height |24px) (:font-size 12) (:font-family ui/font-code) (:margin 0) (:padding "|0 8px") (:white-space :pre) (:overflow-x :auto) :examples $ [] :schema $ :: 'Dynamic - |style-no-change $ %{} 'CodeEntry (:doc |) - :code $ quote - defstyle style-no-change $ {} - |& $ {} - :color $ hsl 0 0 80 - :line-height |15px + 'style-no-change $ %{} 'CodeEntry (:doc |) + :code $ quote $ defstyle style-no-change + {} $ |& $ {} + :color $ hsl 0 0 80 + :line-height |15px :examples $ [] :schema $ :: 'Dynamic - |style-removed $ %{} 'CodeEntry (:doc |) - :code $ quote - defstyle style-removed $ {} - |& $ {} - :background-color $ hsl 0 100 78 - :color :white + 'style-removed $ %{} 'CodeEntry (:doc |) + :code $ quote $ defstyle style-removed + {} $ |& $ {} + :background-color $ hsl 0 100 78 + :color :white :examples $ [] :schema $ :: 'Dynamic - |style-text $ %{} 'CodeEntry (:doc |) - :code $ quote - defstyle style-text $ {} - |& $ {} (:font-family ui/font-code) (:line-height |20px) (:font-size 12) (:white-space :pre) (:overflow :auto) (:border :none) (:padding "|8px 8px 80px 8px") (:resize :none) + 'style-text $ %{} 'CodeEntry (:doc |) + :code $ quote $ defstyle style-text + {} $ |& $ {} (:font-family ui/font-code) (:line-height |20px) (:font-size 12) (:white-space :pre) (:overflow :auto) (:border :none) + :padding "|8px 8px 80px 8px" + :resize :none :examples $ [] :schema $ :: 'Dynamic - |style-toolbar $ %{} 'CodeEntry (:doc |) - :code $ quote - defstyle style-toolbar $ {} - |& $ {} - :border-bottom $ str "|1px solid " (hsl 0 0 90) - :line-height |32px - :padding "|0 8px" + 'style-toolbar $ %{} 'CodeEntry (:doc |) + :code $ quote $ defstyle style-toolbar + {} $ |& $ {} + :border-bottom $ str "|1px solid " $ hsl 0 0 90 + :line-height |32px + :padding "|0 8px" :examples $ [] :schema $ :: 'Dynamic - |style-word-mode $ %{} 'CodeEntry (:doc |) - :code $ quote - defstyle style-word-mode $ {} - |& $ {} (:display :inline) (:white-space :pre-wrap) + 'style-word-mode $ %{} 'CodeEntry (:doc |) + :code $ quote $ defstyle style-word-mode + {} $ |& $ {} (:display :inline) (:white-space :pre-wrap) :examples $ [] :schema $ :: 'Dynamic - |tagging-data $ %{} 'CodeEntry (:doc |) - :code $ quote - defn tagging-data (xs) - if (map? xs) - map-kv xs $ fn (k v) - [] (turn-tag k) v - if (list? xs) (map xs tagging-data) xs + 'tagging-data $ %{} 'CodeEntry (:doc |) + :code $ quote $ defn tagging-data (xs) + if (map? xs) + map-kv xs $ fn (k v) + [] (turn-tag k) v + if (list? xs) (map xs tagging-data) xs :examples $ [] :schema $ :: 'Dynamic :ns $ %{} 'NsEntry (:doc |) - :code $ quote - ns app.comp.container $ :require + :code $ quote $ ns app.comp.container + :require respo-ui.core :refer $ hsl respo.css :refer $ defstyle respo-ui.css :as css @@ -220,87 +208,79 @@ respo-md.comp.md :refer $ comp-md app.config :refer $ dev? |diff :as diff - |app.config $ %{} 'FileEntry + 'app.config $ %{} 'FileEntry :defs $ {} - |dev? $ %{} 'CodeEntry (:doc |) - :code $ quote - def dev? $ = |dev - option:unwrap-or (get-env |mode) |release + 'dev? $ %{} 'CodeEntry (:doc |) + :code $ quote $ def dev? + = |dev $ option:unwrap-or (get-env |mode) |release :examples $ [] :schema $ :: 'Dynamic - |site $ %{} 'CodeEntry (:doc |) - :code $ quote - def site $ {} (:title |Diffview) (:storage-key |diffview) + 'site $ %{} 'CodeEntry (:doc |) + :code $ quote $ def site + {} (:title |Diffview) (:storage-key |diffview) :examples $ [] :schema $ :: 'Dynamic :ns $ %{} 'NsEntry (:doc |) - :code $ quote (ns app.config) - |app.main $ %{} 'FileEntry + :code $ quote $ ns app.config + 'app.main $ %{} 'FileEntry :defs $ {} - |*reel $ %{} 'CodeEntry (:doc |) - :code $ quote - defatom *reel $ -> reel-schema/reel (assoc :base schema/store) (assoc :store schema/store) + '*reel $ %{} 'CodeEntry (:doc |) + :code $ quote $ defatom *reel + -> reel-schema/reel (assoc :base schema/store) (assoc :store schema/store) :examples $ [] :schema $ :: 'Dynamic - |dispatch! $ %{} 'CodeEntry (:doc |) - :code $ quote - defn dispatch! (op) - when config/dev? $ js/console.log |Dispatch: op - reset! *reel $ reel-updater updater @*reel op + 'dispatch! $ %{} 'CodeEntry (:doc |) + :code $ quote $ defn dispatch! (op) + when config/dev? $ js/console.log |Dispatch: op + reset! *reel $ reel-updater updater @*reel op :examples $ [] :schema $ :: 'Dynamic - |main! $ %{} 'CodeEntry (:doc |) - :code $ quote - defn main! () - if config/dev? $ load-console-formatter! - println "|Running mode:" $ if config/dev? |dev |release - render-app! - add-watch *reel :changes $ fn (r p) (render-app!) - listen-devtools! |a dispatch! - js/window.addEventListener |beforeunload persist-storage! - repeat! 60 persist-storage! - let - raw $ js/localStorage.getItem - option:unwrap-or (get config/site :storage-key) | - when (js-present? raw) - dispatch! $ :: :hydrate-storage - parse-cirru-edn $ unsafe-coerce raw 'String - js/window.addEventListener |keydown $ fn (event) - cond - and (.-metaKey event) - = |e $ .-key event - dispatch! $ :: :toggle-result - (and (.-metaKey event) (= |k (.-key event))) - dispatch! $ :: :clear-text - (and (.-metaKey event) (= |i (.-key event))) - dispatch! $ :: :swap-text - true nil - println "|App started." + 'main! $ %{} 'CodeEntry (:doc |) + :code $ quote $ defn main! () + if config/dev? $ load-console-formatter! + println "|Running mode:" $ if config/dev? |dev |release + render-app! + add-watch *reel :changes $ fn (r p) (render-app!) + listen-devtools! |a dispatch! + js/window.addEventListener |beforeunload persist-storage! + repeat! 60 persist-storage! + let + raw $ js/localStorage.getItem $ option:unwrap-or (get config/site :storage-key) | + when (js-present? raw) + dispatch! $ :: :hydrate-storage $ parse-cirru-edn (unsafe-coerce raw 'String) + js/window.addEventListener |keydown $ fn (event) + cond + and (.-metaKey event) + = |e $ .-key event + dispatch! $ :: :toggle-result + (and (.-metaKey event) (= |k (.-key event))) + dispatch! $ :: :clear-text + (and (.-metaKey event) (= |i (.-key event))) + dispatch! $ :: :swap-text + true nil + println "|App started." :examples $ [] - :schema $ :: 'Fn - {} (:return 'Unit) - :args $ [] - :features $ #{} :js-ffi - |mount-target $ %{} 'CodeEntry (:doc |) - :code $ quote - def mount-target $ js/document.querySelector |.app + :schema $ :: 'Fn $ {} (:return 'Unit) + :args $ [] + :features $ #{} :js-ffi + 'mount-target $ %{} 'CodeEntry (:doc |) + :code $ quote $ def mount-target + js/document.querySelector |.app :examples $ [] :schema $ :: 'Dynamic - |persist-storage! $ %{} 'CodeEntry (:doc |) - :code $ quote - defn persist-storage! (? e) - js/localStorage.setItem - option:unwrap-or (get config/site :storage-key) | - format-cirru-edn $ reel-schema/read-field @*reel :store - , nil + 'persist-storage! $ %{} 'CodeEntry (:doc |) + :code $ quote $ defn persist-storage! (? e) + js/localStorage.setItem + option:unwrap-or (get config/site :storage-key) | + format-cirru-edn $ reel-schema/read-field @*reel :store + , nil :examples $ [] - :schema $ :: 'Fn - {} (:return 'Unit) - :args $ [] 'Dynamic - :features $ #{} :js-ffi - |reload! $ %{} 'CodeEntry (:doc |) - :code $ quote - defn reload! () $ if (nil? build-errors) + :schema $ :: 'Fn $ {} (:return 'Unit) + :args $ [] 'Dynamic + :features $ #{} :js-ffi + 'reload! $ %{} 'CodeEntry (:doc |) + :code $ quote $ defn reload! () + if (nil? build-errors) do (remove-watch *reel :changes) (clear-cache!) add-watch *reel :changes $ fn (reel prev) (render-app!) reset! *reel $ refresh-reel @*reel schema/store updater @@ -308,23 +288,22 @@ hud! |error build-errors :examples $ [] :schema $ :: 'Dynamic - |render-app! $ %{} 'CodeEntry (:doc |) - :code $ quote - defn render-app! () $ render! mount-target (comp-container @*reel) dispatch! + 'render-app! $ %{} 'CodeEntry (:doc |) + :code $ quote $ defn render-app! () + render! mount-target (comp-container @*reel) dispatch! :examples $ [] :schema $ :: 'Dynamic - |repeat! $ %{} 'CodeEntry (:doc |) - :code $ quote - defn repeat! (duration cb) - js/setTimeout - fn () (cb) - repeat! (* 1000 duration) cb - * 1000 duration + 'repeat! $ %{} 'CodeEntry (:doc |) + :code $ quote $ defn repeat! (duration cb) + js/setTimeout + fn () (cb) + repeat! (* 1000 duration) cb + * 1000 duration :examples $ [] :schema $ :: 'Dynamic :ns $ %{} 'NsEntry (:doc |) - :code $ quote - ns app.main $ :require + :code $ quote $ ns app.main + :require respo.core :refer $ render! clear-cache! realize-ssr! app.comp.container :refer $ comp-container app.updater :refer $ updater @@ -336,16 +315,15 @@ app.config :as config |./calcit.build-errors :default build-errors |bottom-tip :default hud! - |app.schema $ %{} 'FileEntry + 'app.schema $ %{} 'FileEntry :defs $ {} - |StoreData $ %{} 'CodeEntry (:doc |) - :code $ quote - defstruct StoreData (:states 'Dynamic) (:page 'Dynamic) (:sorted? 'Dynamic) (:show-result? 'Dynamic) (:by-word? 'Dynamic) (:old-text 'Dynamic) (:new-text 'Dynamic) + 'StoreData $ %{} 'CodeEntry (:doc |) + :code $ quote $ defstruct StoreData (:states 'Dynamic) (:page 'Dynamic) (:sorted? 'Dynamic) (:show-result? 'Dynamic) (:by-word? 'Dynamic) (:old-text 'Dynamic) (:new-text 'Dynamic) :examples $ [] :schema $ :: 'Enum - |store $ %{} 'CodeEntry (:doc |) - :code $ quote - def store $ {} + 'store $ %{} 'CodeEntry (:doc |) + :code $ quote $ def store + {} :states $ {} :page :editor :sorted? false @@ -356,36 +334,34 @@ :examples $ [] :schema $ :: 'app.schema/StoreData :ns $ %{} 'NsEntry (:doc |) - :code $ quote (ns app.schema) - |app.updater $ %{} 'FileEntry - :defs $ {} - |updater $ %{} 'CodeEntry (:doc |) - :code $ quote - defn updater (store op op-id op-time) - tag-match op - (:states cursor s) (update-states store cursor s) - (:write-old d) (assoc store :old-text d) - (:write-new d) (assoc store :new-text d) - (:hydrate-storage d) d - (:toggle-sorted) (update store :sorted? not) - (:toggle-result) (update store :show-result? not) - (:toggle-word) - if - nil? $ :by-word? store - assoc store :by-word? true - update store :by-word? not - (:clear-text) - -> store (assoc :old-text |) (assoc :new-text |) (assoc :show-result? false) - (:swap-text) - -> store - assoc :old-text $ :new-text store - assoc :new-text $ :old-text store - _ $ do (eprintln "|Unkown op:" op) store + :code $ quote $ ns app.schema + 'app.updater $ %{} 'FileEntry + :defs $ {} $ 'updater + %{} 'CodeEntry (:doc |) + :code $ quote $ defn updater (store op op-id op-time) + tag-match op + (:states cursor s) (update-states store cursor s) + (:write-old d) (assoc store :old-text d) + (:write-new d) (assoc store :new-text d) + (:hydrate-storage d) d + (:toggle-sorted) (update store :sorted? not) + (:toggle-result) (update store :show-result? not) + (:toggle-word) + if + nil? $ :by-word? store + assoc store :by-word? true + update store :by-word? not + (:clear-text) + -> store (assoc :old-text |) (assoc :new-text |) (assoc :show-result? false) + (:swap-text) + -> store + assoc :old-text $ :new-text store + assoc :new-text $ :old-text store + _ $ do (eprintln "|Unkown op:" op) store :examples $ [] - :schema $ :: 'Fn - {} (:return 'app.schema/StoreData) - :args $ [] 'app.schema/StoreData 'Dynamic 'Number 'Number + :schema $ :: 'Fn $ {} + :return 'app.schema/StoreData + :args $ [] 'app.schema/StoreData 'Dynamic 'Number 'Number :ns $ %{} 'NsEntry (:doc |) - :code $ quote - ns app.updater $ :require - respo.cursor :refer $ update-states + :code $ quote $ ns app.updater + :require $ respo.cursor :refer $ update-states diff --git a/deps.cirru b/deps.cirru index 8a15020..339bbfe 100644 --- a/deps.cirru +++ b/deps.cirru @@ -1,5 +1,5 @@ -{} (:calcit-version |0.13.27) +{} (:calcit-version |0.14.16) :version |0.1.0 :dependencies $ {} (|Respo/reel.calcit |main) |Respo/respo-markdown.calcit |0.4.22 From 7f8d6b11eba71d7fa7955c4bf8d5ce10ed951847 Mon Sep 17 00:00:00 2001 From: jiyinyiyong Date: Sun, 13 Sep 2026 15:46:43 +0800 Subject: [PATCH 3/4] chore: align CI toolchain to Calcit 0.14.16 --- .github/workflows/upload.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/upload.yaml b/.github/workflows/upload.yaml index 245475a..1cda407 100644 --- a/.github/workflows/upload.yaml +++ b/.github/workflows/upload.yaml @@ -23,7 +23,7 @@ jobs: corepack prepare yarn@4.12.0 --activate yarn --version - - uses: calcit-lang/setup-cr@0.0.9 + - uses: calcit-lang/setup-calcit@704b3f5cd6f9ce3bd1e0c926dbdd1d181adb8180 # v1.4.0 - name: "install modules" run: caps --ci From 755aecca1da28715bafcd1fe7ded9296af04e8a7 Mon Sep 17 00:00:00 2001 From: tiye Date: Mon, 14 Sep 2026 23:20:53 +0800 Subject: [PATCH 4/4] chore: upgrade Calcit to 0.14.17 --- .github/workflows/upload.yaml | 3 +- calcit.cirru | 184 +++++++++++++++++----------------- deps.cirru | 12 +-- package.json | 2 +- scripts/upgrade.test.mjs | 19 ++++ yarn.lock | 10 +- 6 files changed, 127 insertions(+), 103 deletions(-) create mode 100644 scripts/upgrade.test.mjs diff --git a/.github/workflows/upload.yaml b/.github/workflows/upload.yaml index 1cda407..cab2777 100644 --- a/.github/workflows/upload.yaml +++ b/.github/workflows/upload.yaml @@ -23,7 +23,7 @@ jobs: corepack prepare yarn@4.12.0 --activate yarn --version - - uses: calcit-lang/setup-calcit@704b3f5cd6f9ce3bd1e0c926dbdd1d181adb8180 # v1.4.0 + - uses: calcit-lang/setup-calcit@ca701be5a471759e442aa053cd100720bbe1f09f # v1.5.0 - name: "install modules" run: caps --ci @@ -39,6 +39,7 @@ jobs: cr calcit.cirru js yarn install --immutable yarn vite build --base=./ + node --test scripts/upgrade.test.mjs - name: Deploy to server id: deploy diff --git a/calcit.cirru b/calcit.cirru index 8155fe7..75c7dc8 100644 --- a/calcit.cirru +++ b/calcit.cirru @@ -3,8 +3,7 @@ :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 :native) - :reload-fn 'app.main/reload! + {} (:description |) (:init-fn 'app.main/main!) (:mode :native) (:reload-fn 'app.main/reload!) :feature-policy $ {} :modules $ [] |respo.calcit/ |lilac/ |respo-ui.calcit/ |respo-markdown.calcit/ |reel.calcit/ |js-ffi/ :type-slots $ {} @@ -21,24 +20,28 @@ :style $ {} $ :cursor :pointer <> text css/font-fancy :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'Fn $ {} (:return 'respo.schema/Component) + :args $ [] 'Bool 'String $ :: 'Fn + {} (:return 'Unit) + :args $ [] 'respo.schema/RespoEvent $ :: 'Fn + {} (:return 'Unit) + :args $ [] 'Dynamic 'comp-container $ %{} 'CodeEntry (:doc |) :code $ quote $ defcomp comp-container (reel) let - store $ unsafe-coerce - reel-schema/read-field reel :store - , 'app.schema/StoreData + store $ unsafe-coerce (reel-schema/read-field reel :store) 'app.schema/StoreData states $ :states store sorted? $ :sorted? store show-result? $ :show-result? store by-word? $ :by-word? store differ $ if by-word? diff/diffWords diff/diffLines - changes $ tagging-data $ to-calcit-data - if sorted? + changes $ decode-map-as + to-calcit-data $ if sorted? differ sort-by-line $ :old-text store sort-by-line $ :new-text store differ (:old-text store) (:new-text store) + :: 'List 'app.schema/DiffChunk div {} $ :class-name $ str-spaced css/global css/fullscreen css/column comp-toolbar show-result? sorted? by-word? @@ -68,9 +71,8 @@ when dev? $ comp-reel (>> states :reel) reel $ {} when dev? $ comp-inspect |Store store $ {} (:bottom 0) :examples $ [] - :schema $ :: 'Fn $ {} - :return 'respo.schema/Component - :args $ [] 'Dynamic + :schema $ :: 'Fn $ {} (:return 'respo.schema/Component) + :args $ [] $ :: 'Map 'Tag 'Dynamic :features $ #{} :js-ffi 'comp-diff-view $ %{} 'CodeEntry (:doc |) :code $ quote $ defcomp comp-diff-view (changes by-word?) @@ -80,34 +82,30 @@ :line-height $ if by-word? |20px -> changes $ map-indexed $ fn (idx chunk) [] idx $ let - tok $ option:unwrap-or (get chunk :value) | + tok $ :value chunk cond - option:some? $ get chunk :removed + option:some? $ :removed chunk div $ {} (:inner-text tok) :class-name $ str-spaced style-line style-removed $ if by-word? style-word-mode - :title $ str "|Removed " - option:unwrap-or (get chunk :count) 0 - , "| chunks" - (option:some? (get chunk :added)) + :title $ str "|Removed " (:count chunk) "| chunks" + (option:some? (:added chunk)) div $ {} (:inner-text tok) :class-name $ str-spaced style-line style-added $ if by-word? style-word-mode - :title $ str "|Added " - option:unwrap-or (get chunk :count) 0 - , "| chunks" + :title $ str "|Added " (:count chunk) "| chunks" true $ div $ {} (:inner-text tok) :class-name $ str-spaced style-line style-no-change $ if by-word? style-word-mode ; :title $ str (:count chunk) "| chunks reversed" :examples $ [] - :schema $ :: 'Fn $ {} - :return 'respo.schema/Component - :args $ [] 'Dynamic 'Bool + :schema $ :: 'Fn $ {} (:return 'respo.schema/Component) + :args $ [] (:: 'List 'app.schema/DiffChunk) 'Bool 'comp-divider $ %{} 'CodeEntry (:doc |) :code $ quote $ defcomp comp-divider () div $ {} $ :style {} (:width 1) :background-color $ hsl 0 0 94 :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'Fn $ {} (:return 'respo.schema/Component) + :args $ [] 'comp-toolbar $ %{} 'CodeEntry (:doc |) :code $ quote $ defcomp comp-toolbar (show-result? sorted? by-word?) div @@ -116,7 +114,7 @@ :color $ hsl 0 0 40 :font-family ui/font-fancy div - {} $ :class-name $ merge css/row-center + {} $ :class-name css/row-center comp-checked show-result? "|Result?(⌘ e)" $ fn (e d!) d! $ :: :toggle-result =< 16 nil @@ -134,44 +132,47 @@ :on-click $ fn (e d!) d! $ :: :clear-text :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'Fn $ {} (:return 'respo.schema/Component) + :args $ [] 'Bool 'Bool 'Bool 'sort-by-line $ %{} 'CodeEntry (:doc |) :code $ quote $ defn sort-by-line (text) - -> text (.split-lines) (.sort-by identity) (.join-str &newline) + join-str + sort (split-lines text) + fn (a b) (&compare a b) + , &newline :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'Fn $ {} (:return 'String) + :args $ [] 'String 'style-added $ %{} 'CodeEntry (:doc |) :code $ quote $ defstyle style-added {} $ |& $ {} :background-color $ hsl 200 100 92 :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'String 'style-line $ %{} 'CodeEntry (:doc |) :code $ quote $ defstyle style-line {} $ |& $ {} (:line-height |24px) (:font-size 12) (:font-family ui/font-code) (:margin 0) (:padding "|0 8px") (:white-space :pre) (:overflow-x :auto) :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'String 'style-no-change $ %{} 'CodeEntry (:doc |) :code $ quote $ defstyle style-no-change {} $ |& $ {} :color $ hsl 0 0 80 :line-height |15px :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'String 'style-removed $ %{} 'CodeEntry (:doc |) :code $ quote $ defstyle style-removed {} $ |& $ {} :background-color $ hsl 0 100 78 :color :white :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'String 'style-text $ %{} 'CodeEntry (:doc |) :code $ quote $ defstyle style-text - {} $ |& $ {} (:font-family ui/font-code) (:line-height |20px) (:font-size 12) (:white-space :pre) (:overflow :auto) (:border :none) - :padding "|8px 8px 80px 8px" - :resize :none + {} $ |& $ {} (:font-family ui/font-code) (:line-height |20px) (:font-size 12) (:white-space :pre) (:overflow :auto) (:border :none) (:padding "|8px 8px 80px 8px") (:resize :none) :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'String 'style-toolbar $ %{} 'CodeEntry (:doc |) :code $ quote $ defstyle style-toolbar {} $ |& $ {} @@ -179,20 +180,12 @@ :line-height |32px :padding "|0 8px" :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'String 'style-word-mode $ %{} 'CodeEntry (:doc |) :code $ quote $ defstyle style-word-mode {} $ |& $ {} (:display :inline) (:white-space :pre-wrap) :examples $ [] - :schema $ :: 'Dynamic - 'tagging-data $ %{} 'CodeEntry (:doc |) - :code $ quote $ defn tagging-data (xs) - if (map? xs) - map-kv xs $ fn (k v) - [] (turn-tag k) v - if (list? xs) (map xs tagging-data) xs - :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'String :ns $ %{} 'NsEntry (:doc |) :code $ quote $ ns app.comp.container :require @@ -214,12 +207,12 @@ :code $ quote $ def dev? = |dev $ option:unwrap-or (get-env |mode) |release :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'Bool 'site $ %{} 'CodeEntry (:doc |) :code $ quote $ def site {} (:title |Diffview) (:storage-key |diffview) :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'Map 'Tag 'String :ns $ %{} 'NsEntry (:doc |) :code $ quote $ ns app.config 'app.main $ %{} 'FileEntry @@ -228,13 +221,15 @@ :code $ quote $ defatom *reel -> reel-schema/reel (assoc :base schema/store) (assoc :store schema/store) :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'Ref $ :: 'Map 'Tag 'Dynamic 'dispatch! $ %{} 'CodeEntry (:doc |) :code $ quote $ defn dispatch! (op) when config/dev? $ js/console.log |Dispatch: op reset! *reel $ reel-updater updater @*reel op :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'Fn $ {} (:return 'Unit) + :args $ [] 'Dynamic + :features $ #{} :js-ffi 'main! $ %{} 'CodeEntry (:doc |) :code $ quote $ defn main! () if config/dev? $ load-console-formatter! @@ -242,22 +237,29 @@ render-app! add-watch *reel :changes $ fn (r p) (render-app!) listen-devtools! |a dispatch! - js/window.addEventListener |beforeunload persist-storage! + js/window.addEventListener |beforeunload $ fn (event) (persist-storage!) repeat! 60 persist-storage! let raw $ js/localStorage.getItem $ option:unwrap-or (get config/site :storage-key) | when (js-present? raw) dispatch! $ :: :hydrate-storage $ parse-cirru-edn (unsafe-coerce raw 'String) js/window.addEventListener |keydown $ fn (event) - cond - and (.-metaKey event) - = |e $ .-key event - dispatch! $ :: :toggle-result - (and (.-metaKey event) (= |k (.-key event))) - dispatch! $ :: :clear-text - (and (.-metaKey event) (= |i (.-key event))) - dispatch! $ :: :swap-text - true nil + hint-fn $ {} + :args $ [] 'JsObject + :return 'Unit + :features $ #{} :js-ffi + let + host $ unsafe-coerce event js-ffi.browser/KeyboardEventHost + key $ .-key host + meta-key? $ .-meta-key? host + cond + and meta-key? $ = |e key + dispatch! $ :: :toggle-result + (and meta-key? (= |k key)) + dispatch! $ :: :clear-text + (and meta-key? (= |i key)) + dispatch! $ :: :swap-text + true &unit println "|App started." :examples $ [] :schema $ :: 'Fn $ {} (:return 'Unit) @@ -265,42 +267,48 @@ :features $ #{} :js-ffi 'mount-target $ %{} 'CodeEntry (:doc |) :code $ quote $ def mount-target - js/document.querySelector |.app + option:unwrap $ query-selector |.app :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'js-ffi.browser/DomElementHost 'persist-storage! $ %{} 'CodeEntry (:doc |) - :code $ quote $ defn persist-storage! (? e) + :code $ quote $ defn persist-storage! () js/localStorage.setItem option:unwrap-or (get config/site :storage-key) | format-cirru-edn $ reel-schema/read-field @*reel :store - , nil + , &unit :examples $ [] :schema $ :: 'Fn $ {} (:return 'Unit) - :args $ [] 'Dynamic + :args $ [] :features $ #{} :js-ffi 'reload! $ %{} 'CodeEntry (:doc |) :code $ quote $ defn reload! () if (nil? build-errors) do (remove-watch *reel :changes) (clear-cache!) add-watch *reel :changes $ fn (reel prev) (render-app!) - reset! *reel $ refresh-reel @*reel schema/store updater + reset! *reel $ assert-type (refresh-reel @*reel schema/store updater) (:: 'Map 'Tag 'Dynamic) hud! |ok~ |Ok hud! |error build-errors :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'Fn $ {} (:return 'Unit) + :args $ [] 'render-app! $ %{} 'CodeEntry (:doc |) :code $ quote $ defn render-app! () render! mount-target (comp-container @*reel) dispatch! :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'Fn $ {} (:return 'Unit) + :args $ [] 'repeat! $ %{} 'CodeEntry (:doc |) :code $ quote $ defn repeat! (duration cb) js/setTimeout - fn () (cb) - repeat! (* 1000 duration) cb + fn () (cb) (repeat! duration cb) * 1000 duration + , &unit :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'Fn $ {} (:return 'Unit) + :args $ [] 'Number $ :: 'Fn + {} (:return 'Unit) + :args $ [] + :features $ #{} :js-ffi :ns $ %{} 'NsEntry (:doc |) :code $ quote $ ns app.main :require @@ -315,22 +323,23 @@ app.config :as config |./calcit.build-errors :default build-errors |bottom-tip :default hud! + js-ffi.browser :refer $ [] query-selector 'app.schema $ %{} 'FileEntry :defs $ {} + 'DiffChunk $ %{} 'CodeEntry (:doc |) + :code $ quote $ defstruct DiffChunk (:value 'String) + :added $ :: 'Option 'Bool + :removed $ :: 'Option 'Bool + :count 'Number + :examples $ [] + :schema $ :: 'StructDef 'StoreData $ %{} 'CodeEntry (:doc |) - :code $ quote $ defstruct StoreData (:states 'Dynamic) (:page 'Dynamic) (:sorted? 'Dynamic) (:show-result? 'Dynamic) (:by-word? 'Dynamic) (:old-text 'Dynamic) (:new-text 'Dynamic) + :code $ quote $ defstruct StoreData (:states 'Dynamic) (:page 'Tag) (:sorted? 'Bool) (:show-result? 'Bool) (:by-word? 'Bool) (:old-text 'String) (:new-text 'String) :examples $ [] - :schema $ :: 'Enum + :schema $ :: 'StructDef 'store $ %{} 'CodeEntry (:doc |) :code $ quote $ def store - {} - :states $ {} - :page :editor - :sorted? false - :show-result? false - :by-word? false - :old-text | - :new-text | + StoreData :states ({}) :page :editor :sorted? false :show-result? false :by-word? false :old-text | :new-text | :examples $ [] :schema $ :: 'app.schema/StoreData :ns $ %{} 'NsEntry (:doc |) @@ -339,18 +348,14 @@ :defs $ {} $ 'updater %{} 'CodeEntry (:doc |) :code $ quote $ defn updater (store op op-id op-time) - tag-match op + match op (:states cursor s) (update-states store cursor s) (:write-old d) (assoc store :old-text d) (:write-new d) (assoc store :new-text d) - (:hydrate-storage d) d + (:hydrate-storage d) (decode-map-as d 'app.schema/StoreData) (:toggle-sorted) (update store :sorted? not) (:toggle-result) (update store :show-result? not) - (:toggle-word) - if - nil? $ :by-word? store - assoc store :by-word? true - update store :by-word? not + (:toggle-word) (update store :by-word? not) (:clear-text) -> store (assoc :old-text |) (assoc :new-text |) (assoc :show-result? false) (:swap-text) @@ -359,8 +364,7 @@ assoc :new-text $ :old-text store _ $ do (eprintln "|Unkown op:" op) store :examples $ [] - :schema $ :: 'Fn $ {} - :return 'app.schema/StoreData + :schema $ :: 'Fn $ {} (:return 'app.schema/StoreData) :args $ [] 'app.schema/StoreData 'Dynamic 'Number 'Number :ns $ %{} 'NsEntry (:doc |) :code $ quote $ ns app.updater diff --git a/deps.cirru b/deps.cirru index 339bbfe..35c6c08 100644 --- a/deps.cirru +++ b/deps.cirru @@ -1,8 +1,8 @@ -{} (:calcit-version |0.14.16) +{} (:calcit-version |0.14.17) :version |0.1.0 - :dependencies $ {} (|Respo/reel.calcit |main) - |Respo/respo-markdown.calcit |0.4.22 - |Respo/respo-ui.calcit |0.7.9 - |Respo/respo.calcit |0.16.81 - |calcit-lang/lilac |main + :dependencies $ {} (|Respo/reel.calcit |0.6.24) + |Respo/respo-markdown.calcit |0.4.37 + |Respo/respo-ui.calcit |0.7.23 + |Respo/respo.calcit |0.16.102 + |calcit-lang/lilac |0.5.9 diff --git a/package.json b/package.json index ba5d928..c35144f 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "vite": "^7.3.1" }, "dependencies": { - "@calcit/procs": "0.14.16", + "@calcit/procs": "0.14.17", "diff": "^8.0.2" } } diff --git a/scripts/upgrade.test.mjs b/scripts/upgrade.test.mjs new file mode 100644 index 0000000..ee5e067 --- /dev/null +++ b/scripts/upgrade.test.mjs @@ -0,0 +1,19 @@ +import assert from "node:assert/strict"; +import test from "node:test"; + +import { assoc, init_tags } from "../js-out/calcit.core.mjs"; +import { comp_container } from "../js-out/app.comp.container.mjs"; +import { store as defaultStore } from "../js-out/app.schema.mjs"; +import { reel as reelSchema } from "../js-out/reel.schema.mjs"; + +test("npm diff chunks decode into typed Calcit data", () => { + const tags = init_tags(["base", "new-text", "old-text", "store"]); + const store = assoc( + assoc(defaultStore, tags["old-text"], "one\ntwo"), + tags["new-text"], + "one\nthree", + ); + const reel = assoc(assoc(reelSchema, tags.base, store), tags.store, store); + + assert.ok(comp_container(reel)); +}); diff --git a/yarn.lock b/yarn.lock index d47a476..135ccaa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,14 +5,14 @@ __metadata: version: 8 cacheKey: 10c0 -"@calcit/procs@npm:0.14.16": - version: 0.14.16 - resolution: "@calcit/procs@npm:0.14.16" +"@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/627197e5b42d6eb550eab24c2fd83b9cddfdc0cd00b9bd8a462e53f211267d36514fecbe77f722b5d591ca7e2d0c49bbd28f7e0d9cf0652eee202ed8f4f6794e + checksum: 10c0/91b236157b56eb3c9478796d31e2bb96f3668ec57dddb2875162c4a069f5b8ee769b8dd9146f3f34d71812393e72cff0c47022e59e605fffecbeca2b0787b8da languageName: node linkType: hard @@ -445,7 +445,7 @@ __metadata: version: 0.0.0-use.local resolution: "calcit-workflow@workspace:." dependencies: - "@calcit/procs": "npm:0.14.16" + "@calcit/procs": "npm:0.14.17" bottom-tip: "npm:^0.1.5" diff: "npm:^8.0.2" vite: "npm:^7.3.1"