@calcit/procs 0.12.45 → 0.12.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,84 @@
1
+ # effects-graph STE Tree 格式改进
2
+
3
+ 日期: 2026-06-16
4
+
5
+ ## 问题
6
+
7
+ `cr analyze effects-graph` 默认 `sketch` 格式产出的是项目级鸟瞰图(调用树+聚合 effect/state),而非 RFC 预想的 per-function State/Transform/Effect 分解图。用户无法通过输出快速理解单个函数的功能。
8
+
9
+ ## 改动
10
+
11
+ ### 1. State 提取:从操作名改为目标名
12
+
13
+ `record_state_operator` 原先记录操作名(如 `swap!`),现改为提取目标 atom 名称(如 `*store`)。
14
+
15
+ - 新增 `extract_state_target(list, op_name)` 从 AST 列表中提取第一个参数
16
+ - `swap!/reset!/deref/set!` → 提取第一个参数名
17
+ - `defatom/atom` → 提取第一个参数名
18
+ - 修改 `walk_expr` → `inspect_call_head` 传参,传入完整 list
19
+
20
+ ### 2. Effect 分类:添加 Respo 约定函数
21
+
22
+ `classify_by_name` 新增:
23
+ - `render-app!/mount-app!/rerender-app!/clear-cache!/realize-ssr!` → `render`
24
+ - `send-to-component!/dispatch!` → `lifecycle`
25
+ - `save-store!` → `storage`
26
+
27
+ `heuristic_effect_kinds` 优化:
28
+ - `unknown/effect!` → `effect`(更简洁)
29
+ - 函数名含 `load/init/setup` 时归类为 `io`
30
+
31
+ `set!` 加入 `is_state_operator` 和 early-return 列表(之前会被误分类为 effect)
32
+
33
+ ### 3. 深度截断节点保留分析
34
+
35
+ 原先 `max_depth` 到达时直接返回空壳节点(`empty_shell_node`)。
36
+ 现改为:始终执行 `analyze_code` 提取 state/effects/transform,仅在 children 构建时跳过。
37
+ 新增 `depth_exceeded` 字段标记截断节点。
38
+
39
+ ### 4. STE Tree 格式(`--format tree`)
40
+
41
+ 新增 `format_as_ste_tree` 函数,输出每个函数的 State/Transform/Effect 树形分解:
42
+
43
+ ```
44
+ └── respo.main/main! [program]
45
+ ├── State
46
+ │ ├── atom *store (write)
47
+ │ ├── return unit
48
+ │ └── watch *store
49
+ ├── Transform (calls: 3)
50
+ │ ├── → respo.app.core/render-app!
51
+ │ └── → respo.main/save-store!
52
+ └── Effects
53
+ ├── console println
54
+ ├── render render-app!
55
+ └── storage save-store!
56
+ ```
57
+
58
+ - `[program]` = 含 effect 的函数
59
+ - `[transform]` = 纯变换函数
60
+ - `[depth limit ↑]` = 深度截断(有分析但无子节点)
61
+ - `(summary)` = 折叠节点的单行摘要(doc + effects)
62
+
63
+ `cr.rs` 中 `format=tree` 调度改为 `format_as_ste_tree`(原为 `format_for_llm` mermaid)。
64
+
65
+ ### 5. 其他修复
66
+
67
+ - `birdview_state_labels` 匹配逻辑修复(kind 匹配而非 name 匹配)
68
+ - `effect_channel_name` 新增 `storage`/`lifecycle` 通道映射
69
+ - `ste_state_detail` 对 `return` 类型简化显示(仅类型,不显 "return" 前缀)
70
+ - `node_transform_summary` 修复 doc 与 summary 重复问题
71
+ - `empty_shell_node` 函数删除(不再使用)
72
+
73
+ ## 涉及文件
74
+
75
+ - `src/effects_graph.rs` — 主要改动
76
+ - `src/bin/cr.rs` — tree 格式调度
77
+ - `src/cli_args.rs` — 无改动(格式字符串不变)
78
+
79
+ ## 验证
80
+
81
+ - `cargo test effects_graph` — 5/5 通过
82
+ - `cargo clippy -- -D warnings` — 通过
83
+ - `yarn compile` — 通过
84
+ - `cr analyze effects-graph --format tree` on respo — 产出可用的 per-function STE 分解
@@ -0,0 +1,5 @@
1
+ - `tsconfig.json` 添加 `declaration: true`,使 `yarn compile` 生成 `.d.mts` 类型声明文件
2
+ - `yarn compile` 后 `lib/` 中与 `.mjs` 一一对应生成 18 个 `.d.mts` 文件
3
+ - `.npmignore` 不排除 `lib/`,这些声明文件在 npm publish 时会被包含
4
+ - 对 hovenia-editor:移除手动 `calcit-procs.d.ts`,改用上游生成的 `.d.mts`
5
+ - 本地验证:`cargo fmt` `cargo clippy` `yarn compile` `cargo test` `yarn check-all` 全部通过
@@ -0,0 +1,39 @@
1
+ import { Hash } from "@calcit/ternary-tree";
2
+ import { CalcitValue } from "./js-primes.mjs";
3
+ import { CalcitRef } from "./js-ref.mjs";
4
+ export declare class CalcitTag {
5
+ value: string;
6
+ cachedHash: Hash;
7
+ idx: number;
8
+ constructor(x: string);
9
+ toString(): string;
10
+ cmp(other: CalcitTag): number;
11
+ }
12
+ export declare class CalcitSymbol {
13
+ value: string;
14
+ cachedHash: Hash;
15
+ constructor(x: string);
16
+ toString(): string;
17
+ }
18
+ export declare class CalcitRecur {
19
+ args: CalcitValue[];
20
+ cachedHash: Hash;
21
+ constructor(xs: CalcitValue[]);
22
+ toString(): string;
23
+ }
24
+ export declare let isNestedCalcitData: (x: CalcitValue) => boolean;
25
+ export declare let tipNestedCalcitData: (x: CalcitValue) => string;
26
+ export type CalcitFn = (...xs: CalcitValue[]) => CalcitValue;
27
+ export declare let getStringName: (x: CalcitValue) => string;
28
+ /** returns -1 when not found */
29
+ export declare function findInFields(xs: Array<CalcitTag>, y: CalcitTag): number;
30
+ export declare let newTag: (content: string) => CalcitTag;
31
+ export declare let castTag: (x: CalcitValue) => CalcitTag;
32
+ export declare var refsRegistry: Map<string, CalcitRef>;
33
+ export declare let hashFunction: (x: CalcitValue) => Hash;
34
+ export declare let toString: (x: CalcitValue, escaped: boolean, disableJsDataWarning?: boolean) => string;
35
+ export declare let to_js_data: (x: CalcitValue, addColon?: boolean) => any;
36
+ export declare let _$n_map_$o_get: (xs: CalcitValue, k: CalcitValue) => CalcitValue;
37
+ export declare let _$n__$e_: (x: CalcitValue, y: CalcitValue) => boolean;
38
+ /** special trick for disabling ternary tree list check */
39
+ export declare let disable_list_structure_check_$x_: () => void;
@@ -0,0 +1,306 @@
1
+ export declare const calcit_version: string;
2
+ export declare const calcit_package_json: {
3
+ name: string;
4
+ version: string;
5
+ main: string;
6
+ devDependencies: {
7
+ "@types/node": string;
8
+ typescript: string;
9
+ };
10
+ scripts: {
11
+ compile: string;
12
+ "procs-link": string;
13
+ "cp-mac": string;
14
+ eval: string;
15
+ "fmt-rs": string;
16
+ "lint-rs": string;
17
+ "test-rs": string;
18
+ "test-fail": string;
19
+ "test-snippets": string;
20
+ "bench-recur-smoke": string;
21
+ "check-smooth": string;
22
+ "check-all": string;
23
+ "try-all": string;
24
+ "try-rs": string;
25
+ "warn-dyn-method": string;
26
+ "try-js-brk": string;
27
+ "try-js": string;
28
+ "try-ir": string;
29
+ "try-wasm": string;
30
+ };
31
+ repository: {
32
+ type: string;
33
+ url: string;
34
+ };
35
+ dependencies: {
36
+ "@calcit/ternary-tree": string;
37
+ "@cirru/parser.ts": string;
38
+ "@cirru/writer.ts": string;
39
+ };
40
+ packageManager: string;
41
+ };
42
+ import { ICirruNode } from "@cirru/parser.ts";
43
+ import { CalcitValue } from "./js-primes.mjs";
44
+ import { CalcitSymbol, CalcitTag, CalcitFn, CalcitRecur } from "./calcit-data.mjs";
45
+ import { CalcitRef } from "./js-ref.mjs";
46
+ import { CalcitRecord } from "./js-record.mjs";
47
+ import { CalcitImpl } from "./js-impl.mjs";
48
+ import { CalcitStruct } from "./js-struct.mjs";
49
+ import { CalcitEnum } from "./js-enum.mjs";
50
+ import { CalcitTrait } from "./js-trait.mjs";
51
+ export * from "./calcit-data.mjs";
52
+ export * from "./js-record.mjs";
53
+ export * from "./js-impl.mjs";
54
+ export * from "./js-struct.mjs";
55
+ export * from "./js-enum.mjs";
56
+ export * from "./js-map.mjs";
57
+ export * from "./js-list.mjs";
58
+ export * from "./js-set.mjs";
59
+ export * from "./js-primes.mjs";
60
+ export * from "./js-tuple.mjs";
61
+ export * from "./js-trait.mjs";
62
+ export * from "./custom-formatter.mjs";
63
+ export * from "./js-cirru.mjs";
64
+ export * from "./js-arity-helpers.mjs";
65
+ export * from "./js-tag-helpers.mjs";
66
+ export * from "./js-buf-list.mjs";
67
+ export { _$n_compare } from "./js-primes.mjs";
68
+ import { CalcitList, CalcitSliceList } from "./js-list.mjs";
69
+ import { CalcitMap, CalcitSliceMap } from "./js-map.mjs";
70
+ import { CalcitSet } from "./js-set.mjs";
71
+ import { CalcitTuple } from "./js-tuple.mjs";
72
+ import { CalcitCirruQuote } from "./js-cirru.mjs";
73
+ export declare let type_of: (x: any) => CalcitTag;
74
+ export declare let _$n_trait_$o__$o_new: (name: CalcitValue, methods: CalcitValue) => CalcitTrait;
75
+ export declare let _$n_assert_traits: (value: CalcitValue, traitDef: CalcitValue) => CalcitValue;
76
+ export declare let defstruct: (name: CalcitValue, ...entries: CalcitValue[]) => CalcitStruct;
77
+ export declare let defenum: (name: CalcitValue, ...variants: CalcitValue[]) => CalcitEnum;
78
+ export declare let _$n_impl_$o__$o_new: (name: CalcitValue, ...pairs: CalcitValue[]) => CalcitImpl;
79
+ export declare let _$n_struct_$o__$o_new: (name: CalcitValue, ...entries: CalcitValue[]) => CalcitStruct;
80
+ export declare let _$n_enum_$o__$o_new: (name: CalcitValue, ...variants: CalcitValue[]) => CalcitEnum;
81
+ export declare let print: (...xs: CalcitValue[]) => void;
82
+ export declare function _$n_list_$o_count(x: CalcitValue): number;
83
+ export declare function _$n_str_$o_count(x: CalcitValue): number;
84
+ export declare function _$n_map_$o_count(x: CalcitValue): number;
85
+ export declare function _$n_record_$o_count(x: CalcitValue): number;
86
+ export declare function _$n_record_$o_field_tag(x: CalcitValue, idx: CalcitValue): CalcitTag;
87
+ export declare function _$n_record_$o_nth(x: CalcitValue, idx: CalcitValue): CalcitValue;
88
+ export declare function _$n_set_$o_count(x: CalcitValue): number;
89
+ export declare let _$L_: (...xs: CalcitValue[]) => CalcitSliceList;
90
+ export declare let _SQUO_: (...xs: CalcitValue[]) => CalcitSliceList;
91
+ export declare let _$n__$M_: (...xs: CalcitValue[]) => CalcitSliceMap;
92
+ export declare let defatom: (path: string, x: CalcitValue) => CalcitValue;
93
+ export { atom } from "./js-ref.mjs";
94
+ export declare let peekDefatom: (path: string) => CalcitRef;
95
+ export declare let _$n_atom_$o_deref: (x: CalcitRef) => CalcitValue;
96
+ export declare let _$n__ADD_: (x: number, y: number) => number;
97
+ export declare let _$n__$s_: (x: number, y: number) => number;
98
+ export declare let _$n_str: (x: CalcitValue) => string;
99
+ export declare let _$n_str_$o_contains_$q_: (xs: CalcitValue, x: CalcitValue) => boolean;
100
+ export declare let _$n_list_$o_contains_$q_: (xs: CalcitValue, x: CalcitValue) => boolean;
101
+ export declare let _$n_map_$o_contains_$q_: (xs: CalcitValue, x: CalcitValue) => boolean;
102
+ export declare let _$n_record_$o_contains_$q_: (xs: CalcitValue, x: CalcitValue) => boolean;
103
+ export declare let _$n_str_$o_includes_$q_: (xs: CalcitValue, x: CalcitValue) => boolean;
104
+ export declare let _$n_list_$o_includes_$q_: (xs: CalcitValue, x: CalcitValue) => boolean;
105
+ export declare let _$n_map_$o_includes_$q_: (xs: CalcitValue, x: CalcitValue) => boolean;
106
+ export declare let _$n_set_$o_includes_$q_: (xs: CalcitValue, x: CalcitValue) => boolean;
107
+ export declare let _$n_str_$o_nth: (xs: CalcitValue, k: CalcitValue) => string;
108
+ export declare let _$n_list_$o_nth: (xs: CalcitValue, k: CalcitValue) => CalcitValue;
109
+ export declare let _$n_tuple_$o_nth: (xs: CalcitValue, k: CalcitValue) => CalcitValue;
110
+ export declare let _$n_tuple_$o_count: (xs: CalcitValue) => number;
111
+ export declare let _$n_tuple_$o_impls: (x: CalcitTuple) => CalcitSliceList;
112
+ export declare let _$n_tuple_$o_params: (x: CalcitTuple) => CalcitSliceList;
113
+ export declare let _$n_tuple_$o_with_impls: (x: CalcitTuple, y: CalcitValue) => CalcitTuple;
114
+ export declare let _$n_tuple_$o_impl_traits: (x: CalcitValue, ...traits: CalcitValue[]) => CalcitTuple;
115
+ export declare let _$n_tuple_$o_enum: (x: CalcitTuple) => CalcitEnum;
116
+ export declare let _$n_tuple_$o_enum_has_variant_$q_: (enumPrototype: CalcitValue, variantTag: CalcitTag) => boolean;
117
+ export declare let _$n_tuple_$o_enum_has_variant: (enumPrototype: CalcitValue, variantTag: CalcitTag) => boolean;
118
+ export declare let _$n_tuple_$o_enum_variant_arity: (enumPrototype: CalcitValue, variantTag: CalcitTag) => number;
119
+ export declare let _$n_tuple_$o_validate_enum: (tuple: CalcitValue, tag: CalcitValue) => CalcitValue;
120
+ export declare let _$n_record_$o_get: (xs: CalcitValue, k: CalcitTag) => CalcitValue;
121
+ export declare let _$n_list_$o_assoc: (xs: CalcitValue, k: CalcitValue, v: CalcitValue) => CalcitList;
122
+ export declare let _$n_tuple_$o_assoc: (xs: CalcitValue, k: CalcitValue, v: CalcitValue) => CalcitTuple;
123
+ export declare let _$n_map_$o_assoc: (xs: CalcitValue, ...args: CalcitValue[]) => CalcitMap | CalcitSliceMap;
124
+ export declare let _$n_record_$o_assoc: (xs: CalcitValue, k: CalcitValue, v: CalcitValue) => CalcitRecord;
125
+ export declare let _$n_record_$o_impls: (xs: CalcitValue) => CalcitSliceList;
126
+ export declare let _$n_record_$o_impl_traits: (xs: CalcitValue, ...traits: CalcitValue[]) => CalcitRecord;
127
+ export declare let _$n_struct_$o_impl_traits: (xs: CalcitValue, ...traits: CalcitValue[]) => CalcitStruct;
128
+ export declare let _$n_enum_$o_impl_traits: (xs: CalcitValue, ...traits: CalcitValue[]) => CalcitRecord | CalcitEnum;
129
+ export declare let _$n_impl_$o_origin: (impl: CalcitValue) => CalcitValue;
130
+ export declare let _$n_impl_$o_get: (impl: CalcitValue, name: CalcitValue) => CalcitValue;
131
+ export declare let _$n_impl_$o_nth: (impl: CalcitValue, index: CalcitValue) => CalcitValue;
132
+ export declare let _$n_list_$o_assoc_before: (xs: CalcitList | CalcitSliceList, k: number, v: CalcitValue) => CalcitList;
133
+ export declare let _$n_list_$o_assoc_after: (xs: CalcitSliceList, k: number, v: CalcitValue) => CalcitList | CalcitSliceList;
134
+ export declare let _$n_list_$o_dissoc: (xs: CalcitValue | CalcitSliceList, k: CalcitValue) => CalcitList | CalcitSliceList;
135
+ export declare let _$n_map_$o_dissoc: (xs: CalcitValue, ...args: CalcitValue[]) => CalcitMap | CalcitSliceMap;
136
+ export declare let reset_$x_: (a: CalcitRef, v: CalcitValue) => null;
137
+ export declare let add_watch: (a: CalcitRef, k: CalcitTag, f: CalcitFn) => null;
138
+ export declare let remove_watch: (a: CalcitRef, k: CalcitTag) => null;
139
+ export declare let range: (n: number, m: number, step?: number) => CalcitSliceList | CalcitList;
140
+ export declare function _$n_list_$o_empty_$q_(xs: CalcitValue): boolean;
141
+ export declare function _$n_str_$o_empty_$q_(xs: CalcitValue): boolean;
142
+ export declare function _$n_map_$o_empty_$q_(xs: CalcitValue): boolean;
143
+ export declare function _$n_set_$o_empty_$q_(xs: CalcitValue): boolean;
144
+ export declare let _$n_list_$o_first: (xs: CalcitValue) => CalcitValue;
145
+ export declare let _$n_str_$o_first: (xs: CalcitValue) => CalcitValue;
146
+ export declare let _$n_map_$o_destruct: (xs: CalcitValue) => CalcitValue;
147
+ export declare let _$n_set_$o_destruct: (xs: CalcitValue) => CalcitValue;
148
+ export declare let timeout_call: (duration: number, f: CalcitFn) => null;
149
+ export declare let _$n_list_$o_rest: (xs: CalcitValue) => CalcitValue;
150
+ export declare let _$n_str_$o_rest: (xs: CalcitValue) => CalcitValue;
151
+ export declare let recur: (...xs: CalcitValue[]) => CalcitRecur;
152
+ export declare let _$n_get_calcit_backend: () => CalcitTag;
153
+ export declare let not: (x: boolean) => boolean;
154
+ export declare let prepend: (xs: CalcitValue, v: CalcitValue) => CalcitList;
155
+ export declare let append: (xs: CalcitValue, v: CalcitValue) => CalcitList | CalcitSliceList;
156
+ export declare let last: (xs: CalcitValue) => CalcitValue;
157
+ export declare let butlast: (xs: CalcitValue) => CalcitValue;
158
+ export declare let initCrTernary: (x: string) => CalcitValue;
159
+ export declare let _SHA__$M_: (...xs: CalcitValue[]) => CalcitValue;
160
+ export declare let generate_id_$x_: () => string;
161
+ export declare let _$n_display_stack: () => null;
162
+ export declare let _$n_list_$o_slice: (xs: CalcitList, from: number, to: number) => CalcitSliceList | CalcitList;
163
+ export declare let _$n_list_$o_concat: (...lists: (CalcitList | CalcitSliceList)[]) => CalcitList | CalcitSliceList;
164
+ export declare let _$n_list_$o_reverse: (xs: CalcitList) => CalcitList;
165
+ export declare let format_ternary_tree: () => null;
166
+ export declare let _$n__GT_: (a: number, b: number) => boolean;
167
+ export declare let _$n__LT_: (a: number, b: number) => boolean;
168
+ export declare let _$n__: (a: number, b: number) => number;
169
+ export declare let _$n__SLSH_: (a: number, b: number) => number;
170
+ export declare let _$n_number_$o_rem: (a: number, b: number) => number;
171
+ export declare let round_$q_: (a: number) => boolean;
172
+ export declare let _$n_str_$o_concat: (a: string, b: string) => string;
173
+ export declare let sort: (xs: CalcitList | CalcitSliceList, f: CalcitFn) => CalcitSliceList;
174
+ export declare let floor: (n: number) => number;
175
+ export declare let _$n_merge: (a: CalcitValue, b: CalcitMap | CalcitSliceMap) => CalcitValue;
176
+ export declare let _$n_merge_non_nil: (a: CalcitMap | CalcitSliceMap, b: CalcitMap | CalcitSliceMap) => CalcitMap | CalcitSliceMap;
177
+ export declare let to_pairs: (xs: CalcitValue) => CalcitValue | CalcitSliceList;
178
+ export declare let sin: (n: number) => number;
179
+ export declare let cos: (n: number) => number;
180
+ export declare let pow: (n: number, m: number) => number;
181
+ export declare let ceil: (n: number) => number;
182
+ export declare let round: (n: number) => number;
183
+ export declare let _$n_number_$o_fract: (n: number) => number;
184
+ export declare let sqrt: (n: number) => number;
185
+ export declare let _$n_include: (xs: CalcitSet, y: CalcitValue) => CalcitSet;
186
+ export declare let _$n_exclude: (xs: CalcitSet, y: CalcitValue) => CalcitSet;
187
+ export declare let _$n_difference: (xs: CalcitSet, ys: CalcitSet) => CalcitSet;
188
+ export declare let _$n_union: (xs: CalcitSet, ys: CalcitSet) => CalcitSet;
189
+ export declare let _$n_set_$o_intersection: (xs: CalcitSet, ys: CalcitSet) => CalcitSet;
190
+ export declare let _$n_str_$o_replace: (x: string, y: string, z: string) => string;
191
+ export declare let split: (xs: string, x: string) => CalcitSliceList;
192
+ export declare let split_lines: (xs: string) => CalcitSliceList;
193
+ export declare let _$n_str_$o_slice: (xs: string, m: number, n: number) => string;
194
+ export declare let _$n_str_$o_find_index: (x: string, y: string) => number;
195
+ export declare let parse_float: (x: string) => number | null;
196
+ export declare let trim: (x: string, c: string) => string;
197
+ export declare let _$n_number_$o_format: (x: number, n: number) => string;
198
+ export declare let _$n_number_$o_display_by: (x: number, n: number) => string;
199
+ export declare let get_char_code: (c: string) => number;
200
+ export declare let char_from_code: (n: number) => string;
201
+ export declare let _$n_set_$o_to_list: (x: CalcitSet) => CalcitSliceList;
202
+ export declare let aget: (x: any, name: string) => any;
203
+ export declare let aset: (x: any, name: string, v: any) => any;
204
+ export declare let js_get: (x: any, name: string) => any;
205
+ export declare let js_set: (x: any, name: string, v: any) => any;
206
+ /** generates `delete a.b` */
207
+ export declare let js_delete: (obj: any, name: string) => any;
208
+ export declare let get_env: (name: string, v0: string) => string;
209
+ export declare let turn_tag: (x: CalcitValue) => CalcitTag;
210
+ export declare let turn_symbol: (x: CalcitValue) => CalcitSymbol;
211
+ export declare let to_lispy_string: (...args: CalcitValue[]) => string;
212
+ /** helper function for println, js only */
213
+ export declare let printable: (...args: CalcitValue[]) => string;
214
+ export declare let cpu_time: () => number;
215
+ export declare let quit_$x_: () => void;
216
+ export declare let turn_string: (x: CalcitValue) => string;
217
+ export declare let identical_$q_: (x: CalcitValue, y: CalcitValue) => boolean;
218
+ export declare let starts_with_$q_: (xs: CalcitValue, y: CalcitValue) => boolean;
219
+ export declare let ends_with_$q_: (xs: string, y: string) => boolean;
220
+ export declare let blank_$q_: (x: string) => boolean;
221
+ export declare let _$n_str_$o_compare: (x: string, y: string) => 0 | 1 | -1;
222
+ export declare let arrayToList: (xs: Array<CalcitValue>) => CalcitSliceList;
223
+ export declare let listToArray: (xs: CalcitList | CalcitSliceList) => Array<CalcitValue>;
224
+ export declare let number_$q_: (x: CalcitValue) => boolean;
225
+ export declare let string_$q_: (x: CalcitValue) => boolean;
226
+ export declare let bool_$q_: (x: CalcitValue) => boolean;
227
+ export declare let nil_$q_: (x: CalcitValue) => boolean;
228
+ export declare let tag_$q_: (x: CalcitValue) => boolean;
229
+ export declare let symbol_$q_: (x: CalcitValue) => boolean;
230
+ export declare let map_$q_: (x: CalcitValue) => boolean;
231
+ export declare let list_$q_: (x: CalcitValue) => boolean;
232
+ export declare let set_$q_: (x: CalcitValue) => boolean;
233
+ export declare let fn_$q_: (x: CalcitValue) => boolean;
234
+ export declare let ref_$q_: (x: CalcitValue) => boolean;
235
+ export declare let record_$q_: (x: CalcitValue) => boolean;
236
+ export declare let tuple_$q_: (x: CalcitValue) => boolean;
237
+ export declare let buffer_$q_: (x: CalcitValue) => boolean;
238
+ export declare let _$n_str_$o_escape: (x: string) => string;
239
+ export declare let read_file: (path: string) => string;
240
+ export declare let write_file: (path: string, content: string) => void;
241
+ export declare let parse_cirru: (code: string) => CalcitCirruQuote;
242
+ export declare let parse_cirru_list: (code: string) => CalcitList;
243
+ export declare let parse_cirru_edn: (code: string, options: CalcitValue) => CalcitValue;
244
+ export declare let json_parse: (code: CalcitValue) => CalcitValue;
245
+ export declare let json_stringify: (value: CalcitValue) => string;
246
+ export declare let json_pretty: (value: CalcitValue) => string;
247
+ export declare let format_to_lisp: (x: CalcitValue) => string;
248
+ export declare let format_to_cirru: (x: CalcitValue) => string;
249
+ export declare let transform_code_to_cirru: (x: CalcitValue) => ICirruNode;
250
+ /** for quickly creating js Array */
251
+ export declare let js_array: (...xs: CalcitValue[]) => CalcitValue[];
252
+ /** for..await alternative with function */
253
+ export declare let js_for_await: (stream: AsyncIterableIterator<CalcitValue>, f: (v: CalcitValue) => Promise<CalcitValue>) => Promise<CalcitValue>;
254
+ export declare let _$n_js_object: (...xs: CalcitValue[]) => Record<string, CalcitValue>;
255
+ export declare let _$o__$o_: (tagName: CalcitValue, ...extra: CalcitValue[]) => CalcitTuple;
256
+ export declare let _PCT__$o__$o_: (enumPrototype: CalcitValue, tag: CalcitValue, ...extra: CalcitValue[]) => CalcitTuple;
257
+ export declare let _PCT__PCT__$o__$o_: (impl: CalcitValue, enumPrototype: CalcitValue, tag: CalcitValue, ...extra: CalcitValue[]) => CalcitTuple;
258
+ type CalcitImplEntry = CalcitImpl | CalcitList | CalcitSliceList | null;
259
+ declare let calcit_builtin_impls: {
260
+ number: CalcitImplEntry;
261
+ string: CalcitImplEntry;
262
+ set: CalcitImplEntry;
263
+ list: CalcitImplEntry;
264
+ map: CalcitImplEntry;
265
+ fn: CalcitImplEntry;
266
+ tuple: CalcitImplEntry;
267
+ record: CalcitImplEntry;
268
+ };
269
+ export declare let register_calcit_builtin_impls: (options: typeof calcit_builtin_impls) => void;
270
+ /** method used as closure */
271
+ export declare function invoke_method_closure(p: string): (obj: CalcitValue, ...args: CalcitValue[]) => CalcitValue;
272
+ export declare function invoke_method(p: string, obj: CalcitValue, ...args: CalcitValue[]): CalcitValue;
273
+ export declare function _$n_methods_of(obj: CalcitValue): CalcitSliceList;
274
+ export declare function _$n_inspect_methods(obj: CalcitValue, note: CalcitValue): CalcitValue;
275
+ export declare function _$n_trait_call(traitDef: CalcitValue, method: CalcitValue, obj: CalcitValue, ...args: CalcitValue[]): CalcitValue;
276
+ export declare let _$n_map_$o_to_list: (m: CalcitValue) => CalcitSliceList;
277
+ export declare let _$n_map_$o_diff_new: (a: CalcitValue, b: CalcitValue) => CalcitMap;
278
+ export declare let _$n_map_$o_diff_keys: (a: CalcitValue, b: CalcitValue) => CalcitSet;
279
+ export declare let _$n_map_$o_common_keys: (a: CalcitValue, b: CalcitValue) => CalcitSet;
280
+ /** Single-pass diff: returns [drop-keys, new-diff, common-triples] in two traversals instead of 3+ */
281
+ export declare let _$n_map_$o_diff_triple: (a: CalcitValue, b: CalcitValue) => CalcitSliceList;
282
+ export declare let bit_shr: (base: number, step: number) => number;
283
+ export declare let bit_shl: (base: number, step: number) => number;
284
+ export declare let bit_and: (a: number, b: number) => number;
285
+ export declare let bit_or: (a: number, b: number) => number;
286
+ export declare let bit_xor: (a: number, b: number) => number;
287
+ export declare let bit_not: (a: number) => number;
288
+ export declare let _$n_list_$o_to_set: (xs: CalcitList) => CalcitSet;
289
+ export declare let _$n_list_$o_distinct: (xs: CalcitList) => CalcitSliceList;
290
+ export declare let _$n_str_$o_pad_left: (s: string, size: number, pattern: string) => string;
291
+ export declare let _$n_str_$o_pad_right: (s: string, size: number, pattern: string) => string;
292
+ export declare let _$n_get_os: () => CalcitTag;
293
+ export declare let _$n_buffer: (...xs: CalcitValue[]) => Uint8Array;
294
+ export declare let _$n_cirru_nth: (xs: CalcitCirruQuote, idx: number) => CalcitValue;
295
+ export declare let _$n_cirru_type: (xs: CalcitCirruQuote, idx: number) => CalcitTag;
296
+ export declare let _$n_hash: (x: CalcitValue) => number;
297
+ export declare let _$n_cirru_quote_$o_to_list: (x: CalcitCirruQuote) => CalcitValue;
298
+ export declare let reduce: (xs: CalcitValue, acc: CalcitValue, f: CalcitFn) => CalcitValue;
299
+ export declare let _$n_reset_gensym_index_$x_: () => void;
300
+ export declare let gensym: () => void;
301
+ export declare let macroexpand: () => void;
302
+ export declare let macroexpand_all: () => void;
303
+ export declare let _$n_get_calcit_running_mode: () => void;
304
+ export declare let _$n_get_def_doc: () => void;
305
+ export declare let _$n_get_def_schema: () => void;
306
+ export declare let raise: () => void;
@@ -0,0 +1,8 @@
1
+ declare global {
2
+ var devtoolsFormatters: {
3
+ header: (obj: any, config: any) => any[];
4
+ hasBody: (obj: any) => boolean;
5
+ body: (obj: any, config: any) => any[];
6
+ }[];
7
+ }
8
+ export declare let load_console_formatter_$x_: () => void;
@@ -0,0 +1,3 @@
1
+ export declare let _args_throw: (name: string, expected: number, got: number) => Error;
2
+ export declare let _args_fewer_throw: (name: string, min: number, got: number) => Error;
3
+ export declare let _args_between_throw: (name: string, min: number, max: number, got: number) => Error;
@@ -0,0 +1,11 @@
1
+ import { CalcitValue } from "./js-primes.mjs";
2
+ import { CalcitSliceList } from "./js-list.mjs";
3
+ export declare class CalcitBufList {
4
+ buf: CalcitValue[];
5
+ constructor(buf?: CalcitValue[]);
6
+ }
7
+ export declare function _$n_buf_list_$o_new(): CalcitBufList;
8
+ export declare function _$n_buf_list_$o_push(buf: CalcitValue, item: CalcitValue): CalcitBufList;
9
+ export declare function _$n_buf_list_$o_concat(buf: CalcitValue, xs: CalcitValue): CalcitBufList;
10
+ export declare function _$n_buf_list_$o_to_list(buf: CalcitValue): CalcitSliceList;
11
+ export declare function _$n_buf_list_$o_count(buf: CalcitValue): number;
@@ -0,0 +1,23 @@
1
+ import { CirruWriterNode } from "@cirru/writer.ts";
2
+ import { CalcitValue } from "./js-primes.mjs";
3
+ import { CalcitList } from "./js-list.mjs";
4
+ type CirruEdnFormat = string | CirruEdnFormat[];
5
+ export declare class CalcitCirruQuote {
6
+ value: CirruWriterNode[];
7
+ constructor(value: CirruWriterNode[]);
8
+ toString(): string;
9
+ toList(): CalcitValue;
10
+ nth(idx: number): CalcitValue;
11
+ /** provide a simple text representation in Console or std out, with indentations */
12
+ textForm(): string;
13
+ }
14
+ export declare let format_cirru: (data: CalcitCirruQuote | CalcitList, useInline: boolean) => string;
15
+ export declare let format_cirru_one_liner: (data: CalcitCirruQuote | CalcitList) => string;
16
+ /** better use string version of Cirru EDN in future */
17
+ export declare let to_cirru_edn: (x: CalcitValue) => CirruEdnFormat;
18
+ export declare let extract_cirru_edn: (x: CirruEdnFormat, options: CalcitValue) => CalcitValue;
19
+ export declare let format_cirru_edn: (data: CalcitValue, useInline?: boolean) => string;
20
+ export declare let to_calcit_data: (x: any, noKeyword?: boolean) => CalcitValue;
21
+ /** deep compare cirru array */
22
+ export declare let cirru_deep_equal: (x: CirruWriterNode, y: CirruWriterNode) => boolean;
23
+ export {};
@@ -0,0 +1,11 @@
1
+ import { CalcitRecord } from "./js-record.mjs";
2
+ import { CalcitImpl } from "./js-impl.mjs";
3
+ export declare class CalcitEnum {
4
+ prototype: CalcitRecord;
5
+ cachedHash: number;
6
+ constructor(prototype: CalcitRecord);
7
+ name(): string;
8
+ get impls(): CalcitImpl[];
9
+ withImpls(impls: CalcitImpl | CalcitImpl[]): CalcitEnum;
10
+ toString(): string;
11
+ }
@@ -0,0 +1,15 @@
1
+ import { Hash } from "@calcit/ternary-tree";
2
+ import { CalcitValue } from "./js-primes.mjs";
3
+ import { CalcitTag } from "./calcit-data.mjs";
4
+ import type { CalcitTrait } from "./js-trait.mjs";
5
+ export declare class CalcitImpl {
6
+ name: CalcitTag;
7
+ origin: CalcitTrait | null;
8
+ fields: Array<CalcitTag>;
9
+ values: Array<CalcitValue>;
10
+ cachedHash: Hash;
11
+ constructor(name: CalcitTag, fields: Array<CalcitTag>, values: Array<CalcitValue>, origin?: CalcitTrait | null);
12
+ get(k: CalcitValue): CalcitValue;
13
+ getOrNil(k: CalcitValue): CalcitValue;
14
+ toString(disableJsDataWarning?: boolean): string;
15
+ }
@@ -0,0 +1,61 @@
1
+ import { CalcitValue } from "./js-primes.mjs";
2
+ import { TernaryTreeList, Hash } from "@calcit/ternary-tree";
3
+ import { CalcitFn } from "./calcit-data.mjs";
4
+ export declare class CalcitList {
5
+ value: TernaryTreeList<CalcitValue>;
6
+ cachedHash: Hash;
7
+ constructor(value: TernaryTreeList<CalcitValue>);
8
+ len(): number;
9
+ get(idx: number): CalcitValue;
10
+ assoc(idx: number, v: CalcitValue): CalcitList;
11
+ assocBefore(idx: number, v: CalcitValue): CalcitList;
12
+ assocAfter(idx: number, v: CalcitValue): CalcitList;
13
+ dissoc(idx: number): CalcitList;
14
+ slice(from: number, to: number): CalcitList;
15
+ toString(shorter?: boolean, disableJsDataWarning?: boolean): string;
16
+ isEmpty(): boolean;
17
+ /** usage: `for of` */
18
+ items(): Generator<CalcitValue>;
19
+ append(v: CalcitValue): CalcitList;
20
+ prepend(v: CalcitValue): CalcitList;
21
+ first(): CalcitValue;
22
+ rest(): CalcitList;
23
+ concat(ys: CalcitList | CalcitSliceList): CalcitList;
24
+ map(f: (v: CalcitValue) => CalcitValue): CalcitList;
25
+ toArray(): CalcitValue[];
26
+ reverse(): CalcitList;
27
+ nestedDataInChildren(): boolean;
28
+ }
29
+ export declare class CalcitSliceList {
30
+ value: Array<CalcitValue>;
31
+ start: number;
32
+ end: number;
33
+ cachedHash: Hash;
34
+ /** reference to converted list */
35
+ cachedTreeListRef: CalcitList;
36
+ constructor(value: Array<CalcitValue>);
37
+ turnListMode(): CalcitList;
38
+ len(): number;
39
+ get(idx: number): CalcitValue;
40
+ assoc(idx: number, v: CalcitValue): CalcitList;
41
+ assocBefore(idx: number, v: CalcitValue): CalcitList;
42
+ assocAfter(idx: number, v: CalcitValue): CalcitList | CalcitSliceList;
43
+ dissoc(idx: number): CalcitList | CalcitSliceList;
44
+ slice(from: number, to: number): CalcitSliceList;
45
+ toString(shorter?: boolean, disableJsDataWarning?: boolean): string;
46
+ isEmpty(): boolean;
47
+ /** usage: `for of` */
48
+ items(): Generator<CalcitValue>;
49
+ append(v: CalcitValue): CalcitSliceList | CalcitList;
50
+ prepend(v: CalcitValue): CalcitList;
51
+ first(): CalcitValue;
52
+ rest(): CalcitSliceList;
53
+ concat(ys: CalcitSliceList | CalcitList): CalcitList | CalcitSliceList;
54
+ map(f: (v: CalcitValue) => CalcitValue): CalcitSliceList;
55
+ toArray(): CalcitValue[];
56
+ reverse(): CalcitList;
57
+ nestedDataInChildren(): boolean;
58
+ }
59
+ export declare let foldl: (xs: CalcitValue, acc: CalcitValue, f: CalcitFn) => CalcitValue;
60
+ export declare let foldl_shortcut: (xs: CalcitValue, acc: CalcitValue, v0: CalcitValue, f: CalcitFn) => CalcitValue;
61
+ export declare let foldr_shortcut: (xs: CalcitValue, acc: CalcitValue, v0: CalcitValue, f: CalcitFn) => CalcitValue;
@@ -0,0 +1,60 @@
1
+ import { CalcitValue } from "./js-primes.mjs";
2
+ import { CalcitSet } from "./js-set.mjs";
3
+ import { TernaryTreeMap, Hash } from "@calcit/ternary-tree";
4
+ /** need to compare by Calcit */
5
+ declare let DATA_EQUAL: (x: CalcitValue, y: CalcitValue) => boolean;
6
+ export declare let overwriteMapComparator: (f: typeof DATA_EQUAL) => void;
7
+ export declare class CalcitMap {
8
+ cachedHash: Hash;
9
+ value: TernaryTreeMap<CalcitValue, CalcitValue>;
10
+ constructor(value: TernaryTreeMap<CalcitValue, CalcitValue>);
11
+ len(): number;
12
+ get(k: CalcitValue): CalcitValue;
13
+ assoc(...args: CalcitValue[]): CalcitMap;
14
+ dissoc(...args: CalcitValue[]): CalcitMap;
15
+ toString(shorter?: boolean, disableJsDataWarning?: boolean): string;
16
+ isEmpty(): boolean;
17
+ pairs(): Array<[CalcitValue, CalcitValue]>;
18
+ keysArray(): Array<CalcitValue>;
19
+ contains(k: CalcitValue): boolean;
20
+ merge(ys: CalcitMap | CalcitSliceMap): CalcitMap;
21
+ mergeSkip(ys: CalcitMap | CalcitSliceMap, v: CalcitValue): CalcitMap;
22
+ /** TODO implement diff with low level code, opens opportunity for future optimizations */
23
+ diffNew(ys: CalcitMap | CalcitSliceMap): CalcitMap;
24
+ /** TODO implement diff with low level code, opens opportunity for future optimizations */
25
+ diffKeys(ys: CalcitMap | CalcitSliceMap): CalcitSet;
26
+ /** TODO implement diff with low level code, opens opportunity for future optimizations */
27
+ commonKeys(ys: CalcitMap | CalcitSliceMap): CalcitSet;
28
+ /** detecting in custom formatter */
29
+ nestedDataInChildren(): boolean;
30
+ }
31
+ export declare class CalcitSliceMap {
32
+ cachedHash: Hash;
33
+ /** in arrayMode, only flatten values, instead of tree structure */
34
+ chunk: CalcitValue[];
35
+ /** reference to generated HashMap in tree structure */
36
+ cachedTreeMapRef?: CalcitMap;
37
+ constructor(value: CalcitValue[]);
38
+ /** convert to tree map when needed, also cached in case converted over and over again */
39
+ turnMap(): CalcitMap;
40
+ len(): number;
41
+ get(k: CalcitValue): CalcitValue;
42
+ assoc(...args: CalcitValue[]): CalcitMap | CalcitSliceMap;
43
+ dissoc(...args: CalcitValue[]): CalcitMap | CalcitSliceMap;
44
+ toString(shorter?: boolean, disableJsDataWarning?: boolean): string;
45
+ isEmpty(): boolean;
46
+ pairs(): Array<[CalcitValue, CalcitValue]>;
47
+ keysArray(): Array<CalcitValue>;
48
+ contains(k: CalcitValue): boolean;
49
+ merge(ys: CalcitMap | CalcitSliceMap): CalcitMap | CalcitSliceMap;
50
+ mergeSkip(ys: CalcitMap | CalcitSliceMap, v: CalcitValue): CalcitMap | CalcitSliceMap;
51
+ /** TODO implement diff with low level code, opens opportunity for future optimizations */
52
+ diffNew(ys: CalcitSliceMap | CalcitMap): CalcitMap;
53
+ /** TODO implement diff with low level code, opens opportunity for future optimizations */
54
+ diffKeys(ys: CalcitMap | CalcitSliceMap): CalcitSet;
55
+ /** TODO implement diff with low level code, opens opportunity for future optimizations */
56
+ commonKeys(ys: CalcitMap | CalcitSliceMap): CalcitSet;
57
+ /** detecting in custom formatter */
58
+ nestedDataInChildren(): boolean;
59
+ }
60
+ export {};
@@ -0,0 +1,15 @@
1
+ import { CalcitTag, CalcitSymbol, CalcitFn, CalcitRecur } from "./calcit-data.mjs";
2
+ import { CalcitRef } from "./js-ref.mjs";
3
+ import { CalcitList, CalcitSliceList } from "./js-list.mjs";
4
+ import { CalcitRecord } from "./js-record.mjs";
5
+ import { CalcitImpl } from "./js-impl.mjs";
6
+ import { CalcitStruct } from "./js-struct.mjs";
7
+ import { CalcitEnum } from "./js-enum.mjs";
8
+ import { CalcitMap, CalcitSliceMap } from "./js-map.mjs";
9
+ import { CalcitSet as CalcitSet } from "./js-set.mjs";
10
+ import { CalcitTuple } from "./js-tuple.mjs";
11
+ import { CalcitCirruQuote } from "./js-cirru.mjs";
12
+ import { CalcitTrait } from "./js-trait.mjs";
13
+ export type CalcitValue = string | number | boolean | CalcitMap | CalcitSliceMap | CalcitList | CalcitSliceList | CalcitSet | CalcitTag | CalcitSymbol | CalcitRef | CalcitTuple | CalcitFn | CalcitRecur | CalcitRecord | CalcitImpl | CalcitTrait | CalcitStruct | CalcitEnum | CalcitCirruQuote | null;
14
+ export declare let isLiteral: (x: CalcitValue) => boolean;
15
+ export declare let _$n_compare: (a: CalcitValue, b: CalcitValue) => number;