modality-ts 0.0.14 → 0.0.15

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.
Files changed (154) hide show
  1. package/dist/cli/cli.js +108 -35
  2. package/dist/cli/cli.js.map +1 -1
  3. package/dist/cli/features/check/command.d.ts +2 -0
  4. package/dist/cli/features/check/command.d.ts.map +1 -1
  5. package/dist/cli/features/check/command.js +11 -3
  6. package/dist/cli/features/check/command.js.map +1 -1
  7. package/dist/cli/features/check/index.d.ts +2 -2
  8. package/dist/cli/features/check/index.d.ts.map +1 -1
  9. package/dist/cli/features/check/index.js +1 -1
  10. package/dist/cli/features/check/index.js.map +1 -1
  11. package/dist/cli/features/check/output.d.ts +22 -7
  12. package/dist/cli/features/check/output.d.ts.map +1 -1
  13. package/dist/cli/features/check/output.js +132 -76
  14. package/dist/cli/features/check/output.js.map +1 -1
  15. package/dist/cli/features/ci/command.d.ts +2 -0
  16. package/dist/cli/features/ci/command.d.ts.map +1 -1
  17. package/dist/cli/features/ci/command.js +21 -0
  18. package/dist/cli/features/ci/command.js.map +1 -1
  19. package/dist/cli/features/ci/index.d.ts +2 -0
  20. package/dist/cli/features/ci/index.d.ts.map +1 -1
  21. package/dist/cli/features/ci/index.js +1 -0
  22. package/dist/cli/features/ci/index.js.map +1 -1
  23. package/dist/cli/features/ci/output.d.ts +19 -0
  24. package/dist/cli/features/ci/output.d.ts.map +1 -0
  25. package/dist/cli/features/ci/output.js +40 -0
  26. package/dist/cli/features/ci/output.js.map +1 -0
  27. package/dist/cli/features/conform/index.d.ts +1 -0
  28. package/dist/cli/features/conform/index.d.ts.map +1 -1
  29. package/dist/cli/features/conform/index.js +1 -0
  30. package/dist/cli/features/conform/index.js.map +1 -1
  31. package/dist/cli/features/conform/output.d.ts +9 -0
  32. package/dist/cli/features/conform/output.d.ts.map +1 -0
  33. package/dist/cli/features/conform/output.js +28 -0
  34. package/dist/cli/features/conform/output.js.map +1 -0
  35. package/dist/cli/features/export/command.d.ts +2 -0
  36. package/dist/cli/features/export/command.d.ts.map +1 -1
  37. package/dist/cli/features/export/command.js +8 -2
  38. package/dist/cli/features/export/command.js.map +1 -1
  39. package/dist/cli/features/export/index.d.ts +1 -0
  40. package/dist/cli/features/export/index.d.ts.map +1 -1
  41. package/dist/cli/features/export/index.js +1 -0
  42. package/dist/cli/features/export/index.js.map +1 -1
  43. package/dist/cli/features/export/output.d.ts +8 -0
  44. package/dist/cli/features/export/output.d.ts.map +1 -0
  45. package/dist/cli/features/export/output.js +14 -0
  46. package/dist/cli/features/export/output.js.map +1 -0
  47. package/dist/cli/features/extract/command.d.ts +9 -0
  48. package/dist/cli/features/extract/command.d.ts.map +1 -1
  49. package/dist/cli/features/extract/command.js +20 -1
  50. package/dist/cli/features/extract/command.js.map +1 -1
  51. package/dist/cli/features/extract/index.d.ts +2 -0
  52. package/dist/cli/features/extract/index.d.ts.map +1 -1
  53. package/dist/cli/features/extract/index.js +1 -0
  54. package/dist/cli/features/extract/index.js.map +1 -1
  55. package/dist/cli/features/extract/output.d.ts +22 -0
  56. package/dist/cli/features/extract/output.d.ts.map +1 -0
  57. package/dist/cli/features/extract/output.js +48 -0
  58. package/dist/cli/features/extract/output.js.map +1 -0
  59. package/dist/cli/features/init/index.d.ts +1 -0
  60. package/dist/cli/features/init/index.d.ts.map +1 -1
  61. package/dist/cli/features/init/index.js +1 -0
  62. package/dist/cli/features/init/index.js.map +1 -1
  63. package/dist/cli/features/init/output.d.ts +4 -0
  64. package/dist/cli/features/init/output.d.ts.map +1 -0
  65. package/dist/cli/features/init/output.js +9 -0
  66. package/dist/cli/features/init/output.js.map +1 -0
  67. package/dist/cli/features/replay/index.d.ts +1 -0
  68. package/dist/cli/features/replay/index.d.ts.map +1 -1
  69. package/dist/cli/features/replay/index.js +1 -0
  70. package/dist/cli/features/replay/index.js.map +1 -1
  71. package/dist/cli/features/replay/output.d.ts +10 -0
  72. package/dist/cli/features/replay/output.d.ts.map +1 -0
  73. package/dist/cli/features/replay/output.js +37 -0
  74. package/dist/cli/features/replay/output.js.map +1 -0
  75. package/dist/cli/output.d.ts +28 -0
  76. package/dist/cli/output.d.ts.map +1 -0
  77. package/dist/cli/output.js +64 -0
  78. package/dist/cli/output.js.map +1 -0
  79. package/dist/extract/engine/ts/context.d.ts.map +1 -1
  80. package/dist/extract/engine/ts/context.js +7 -1
  81. package/dist/extract/engine/ts/context.js.map +1 -1
  82. package/dist/extract/engine/ts/react-source-transitions.d.ts +4 -1
  83. package/dist/extract/engine/ts/react-source-transitions.d.ts.map +1 -1
  84. package/dist/extract/engine/ts/react-source-transitions.js +11 -2
  85. package/dist/extract/engine/ts/react-source-transitions.js.map +1 -1
  86. package/dist/extract/engine/ts/transition/expressions.d.ts +1 -1
  87. package/dist/extract/engine/ts/transition/expressions.d.ts.map +1 -1
  88. package/dist/extract/engine/ts/transition/expressions.js +12 -1
  89. package/dist/extract/engine/ts/transition/expressions.js.map +1 -1
  90. package/dist/extract/engine/ts/transition/handlers.d.ts +3 -3
  91. package/dist/extract/engine/ts/transition/handlers.d.ts.map +1 -1
  92. package/dist/extract/engine/ts/transition/handlers.js +10 -7
  93. package/dist/extract/engine/ts/transition/handlers.js.map +1 -1
  94. package/dist/extract/engine/ts/transition/statement-summary.d.ts +6 -2
  95. package/dist/extract/engine/ts/transition/statement-summary.d.ts.map +1 -1
  96. package/dist/extract/engine/ts/transition/statement-summary.js +40 -6
  97. package/dist/extract/engine/ts/transition/statement-summary.js.map +1 -1
  98. package/dist/extract/engine/ts/types.d.ts +3 -0
  99. package/dist/extract/engine/ts/types.d.ts.map +1 -1
  100. package/dist/extract/sources/jotai/derived-writes.d.ts +11 -0
  101. package/dist/extract/sources/jotai/derived-writes.d.ts.map +1 -0
  102. package/dist/extract/sources/jotai/derived-writes.js +141 -0
  103. package/dist/extract/sources/jotai/derived-writes.js.map +1 -0
  104. package/dist/extract/sources/jotai/discover.d.ts +16 -0
  105. package/dist/extract/sources/jotai/discover.d.ts.map +1 -1
  106. package/dist/extract/sources/jotai/discover.js +163 -46
  107. package/dist/extract/sources/jotai/discover.js.map +1 -1
  108. package/dist/extract/sources/jotai/domains.d.ts +14 -1
  109. package/dist/extract/sources/jotai/domains.d.ts.map +1 -1
  110. package/dist/extract/sources/jotai/domains.js +481 -70
  111. package/dist/extract/sources/jotai/domains.js.map +1 -1
  112. package/dist/extract/sources/jotai/harness.d.ts +4 -1
  113. package/dist/extract/sources/jotai/harness.d.ts.map +1 -1
  114. package/dist/extract/sources/jotai/harness.js +10 -3
  115. package/dist/extract/sources/jotai/harness.js.map +1 -1
  116. package/dist/extract/sources/jotai/hydration.d.ts +16 -0
  117. package/dist/extract/sources/jotai/hydration.d.ts.map +1 -0
  118. package/dist/extract/sources/jotai/hydration.js +116 -0
  119. package/dist/extract/sources/jotai/hydration.js.map +1 -0
  120. package/dist/extract/sources/jotai/ids.d.ts +7 -0
  121. package/dist/extract/sources/jotai/ids.d.ts.map +1 -0
  122. package/dist/extract/sources/jotai/ids.js +23 -0
  123. package/dist/extract/sources/jotai/ids.js.map +1 -0
  124. package/dist/extract/sources/jotai/imports.d.ts +23 -0
  125. package/dist/extract/sources/jotai/imports.d.ts.map +1 -0
  126. package/dist/extract/sources/jotai/imports.js +111 -0
  127. package/dist/extract/sources/jotai/imports.js.map +1 -0
  128. package/dist/extract/sources/jotai/jsx.d.ts +4 -0
  129. package/dist/extract/sources/jotai/jsx.d.ts.map +1 -0
  130. package/dist/extract/sources/jotai/jsx.js +52 -0
  131. package/dist/extract/sources/jotai/jsx.js.map +1 -0
  132. package/dist/extract/sources/jotai/plugin.d.ts.map +1 -1
  133. package/dist/extract/sources/jotai/plugin.js +9 -2
  134. package/dist/extract/sources/jotai/plugin.js.map +1 -1
  135. package/dist/extract/sources/jotai/stores.d.ts +3 -0
  136. package/dist/extract/sources/jotai/stores.d.ts.map +1 -0
  137. package/dist/extract/sources/jotai/stores.js +40 -0
  138. package/dist/extract/sources/jotai/stores.js.map +1 -0
  139. package/dist/extract/sources/jotai/transitions.d.ts.map +1 -1
  140. package/dist/extract/sources/jotai/transitions.js +16 -5
  141. package/dist/extract/sources/jotai/transitions.js.map +1 -1
  142. package/dist/extract/sources/jotai/types.d.ts +22 -0
  143. package/dist/extract/sources/jotai/types.d.ts.map +1 -0
  144. package/dist/extract/sources/jotai/types.js +86 -0
  145. package/dist/extract/sources/jotai/types.js.map +1 -0
  146. package/dist/extract/sources/jotai/writes.d.ts +23 -1
  147. package/dist/extract/sources/jotai/writes.d.ts.map +1 -1
  148. package/dist/extract/sources/jotai/writes.js +330 -89
  149. package/dist/extract/sources/jotai/writes.js.map +1 -1
  150. package/dist/extract/sources/shared/react-transition-extract.d.ts +3 -0
  151. package/dist/extract/sources/shared/react-transition-extract.d.ts.map +1 -1
  152. package/dist/extract/sources/shared/react-transition-extract.js +5 -0
  153. package/dist/extract/sources/shared/react-transition-extract.js.map +1 -1
  154. package/package.json +1 -1
@@ -1,70 +1,425 @@
1
1
  import * as ts from "typescript";
2
2
  import { firstValue, inferDomainFromTypeNode, typeAliasDeclarations, } from "modality-ts/extract/engine/spi";
3
+ import { literalValue, propertyName } from "../../engine/ts/ast.js";
3
4
  import { validateValue, } from "modality-ts/core";
5
+ import { atomCreatorName } from "./imports.js";
6
+ import { getCallsInReadFunction, isAsyncReadFunction, isReadFunction, } from "./derived-writes.js";
4
7
  export { typeAliasDeclarations };
8
+ export function classifyAtomCall(call, atomName, imports, typeAliases) {
9
+ const creator = atomCreatorName(call, imports.atomCreators) ?? "atom";
10
+ switch (creator) {
11
+ case "atomWithStorage":
12
+ return classifyStorageAtom(call, atomName, typeAliases);
13
+ case "atomWithLazy":
14
+ return classifyLazyAtom(call, atomName, typeAliases);
15
+ case "atomWithReset":
16
+ return classifyResetAtom(call, atomName, typeAliases);
17
+ case "atomWithDefault":
18
+ return classifyDefaultAtom(call, atomName, typeAliases);
19
+ case "atomWithRefresh":
20
+ return classifyRefreshAtom(call, atomName, typeAliases);
21
+ case "loadable":
22
+ return classifyLoadableAtom(call, atomName);
23
+ case "unwrap":
24
+ return classifyUnwrapAtom(call, atomName);
25
+ case "atomWithObservable":
26
+ return classifyObservableAtom(call, atomName, typeAliases);
27
+ case "atomFamily":
28
+ return classifyFamilyAtom(atomName);
29
+ default:
30
+ return classifyCoreAtom(call, atomName, typeAliases);
31
+ }
32
+ }
33
+ function classifyCoreAtom(call, atomName, typeAliases) {
34
+ const args = call.arguments;
35
+ const first = args[0];
36
+ const second = args[1];
37
+ if (first && isReadFunction(first)) {
38
+ if (isAsyncReadFunction(first)) {
39
+ return {
40
+ configKind: "readOnlyDerived",
41
+ domain: { kind: "tokens", count: 1 },
42
+ initial: "tok1",
43
+ emitVar: true,
44
+ metadata: {
45
+ atomName,
46
+ configKind: "readOnlyDerived",
47
+ creator: "atom",
48
+ asyncDerived: true,
49
+ readDependencies: getCallsInReadFunction(first),
50
+ warning: "Jotai async derived atom read abstracted",
51
+ },
52
+ warning: "Jotai async derived atom read abstracted",
53
+ };
54
+ }
55
+ if (second && isReadFunction(second)) {
56
+ return {
57
+ configKind: "readWriteDerived",
58
+ domain: inferAtomDomain(call, typeAliases),
59
+ initial: firstValue(inferAtomDomain(call, typeAliases)),
60
+ emitVar: false,
61
+ metadata: {
62
+ atomName,
63
+ configKind: "readWriteDerived",
64
+ creator: "atom",
65
+ readDependencies: getCallsInReadFunction(first),
66
+ },
67
+ };
68
+ }
69
+ return {
70
+ configKind: "readOnlyDerived",
71
+ domain: { kind: "tokens", count: 1 },
72
+ initial: "tok1",
73
+ emitVar: true,
74
+ metadata: {
75
+ atomName,
76
+ configKind: "readOnlyDerived",
77
+ creator: "atom",
78
+ readDependencies: getCallsInReadFunction(first),
79
+ warning: "Jotai derived read-only atom uses token domain",
80
+ },
81
+ warning: "Jotai derived read-only atom uses token domain",
82
+ };
83
+ }
84
+ if ((first === undefined ||
85
+ first.kind === ts.SyntaxKind.NullKeyword ||
86
+ !isReadFunction(first)) &&
87
+ second &&
88
+ isReadFunction(second)) {
89
+ return {
90
+ configKind: "writeOnlyDerived",
91
+ domain: { kind: "tokens", count: 1 },
92
+ initial: "tok1",
93
+ emitVar: false,
94
+ metadata: {
95
+ atomName,
96
+ configKind: "writeOnlyDerived",
97
+ creator: "atom",
98
+ },
99
+ };
100
+ }
101
+ const domain = inferAtomDomain(call, typeAliases);
102
+ return {
103
+ configKind: "primitive",
104
+ domain,
105
+ initial: initialValueForAtom(call, domain),
106
+ emitVar: true,
107
+ metadata: { atomName, configKind: "primitive", creator: "atom" },
108
+ };
109
+ }
110
+ function classifyStorageAtom(call, atomName, typeAliases) {
111
+ const keyArg = call.arguments[0];
112
+ const initialArg = call.arguments[1];
113
+ const optionsArg = call.arguments[3];
114
+ const storageKey = keyArg && ts.isStringLiteral(keyArg) ? keyArg.text : undefined;
115
+ const domain = initialArg
116
+ ? domainFromExpression(initialArg, typeAliases, call.typeArguments?.[0])
117
+ : { kind: "tokens", count: 1 };
118
+ const initial = initialArg
119
+ ? valueFromExpression(initialArg, domain)
120
+ : firstValue(domain);
121
+ let getOnInit = false;
122
+ let storageKind;
123
+ if (optionsArg && ts.isObjectLiteralExpression(optionsArg)) {
124
+ for (const prop of optionsArg.properties) {
125
+ if (!ts.isPropertyAssignment(prop))
126
+ continue;
127
+ const name = propertyName(prop.name);
128
+ if (name === "getOnInit" &&
129
+ prop.initializer.kind === ts.SyntaxKind.TrueKeyword) {
130
+ getOnInit = true;
131
+ }
132
+ }
133
+ }
134
+ const storageArg = call.arguments[2];
135
+ if (storageArg) {
136
+ const text = storageArg.getText();
137
+ if (text.includes("localStorage"))
138
+ storageKind = "localStorage";
139
+ else if (text.includes("sessionStorage"))
140
+ storageKind = "sessionStorage";
141
+ }
142
+ const warning = getOnInit
143
+ ? "Jotai atomWithStorage getOnInit may read unknown stored value"
144
+ : undefined;
145
+ return {
146
+ configKind: "storage",
147
+ domain,
148
+ initial,
149
+ emitVar: true,
150
+ warning,
151
+ metadata: {
152
+ atomName,
153
+ configKind: "storage",
154
+ creator: "atomWithStorage",
155
+ ...(storageKey ? { storageKey } : {}),
156
+ ...(storageKind ? { storageKind } : {}),
157
+ getOnInit,
158
+ resettableInitial: initial,
159
+ ...(warning ? { warning } : {}),
160
+ },
161
+ };
162
+ }
163
+ function classifyLazyAtom(call, atomName, typeAliases) {
164
+ const initArg = call.arguments[0];
165
+ if (initArg &&
166
+ (ts.isArrowFunction(initArg) || ts.isFunctionExpression(initArg))) {
167
+ if (!ts.isBlock(initArg.body)) {
168
+ const domain = domainFromExpression(initArg.body, typeAliases);
169
+ const initial = valueFromExpression(initArg.body, domain);
170
+ return {
171
+ configKind: "lazy",
172
+ domain,
173
+ initial,
174
+ emitVar: true,
175
+ metadata: { atomName, configKind: "lazy", creator: "atomWithLazy" },
176
+ };
177
+ }
178
+ }
179
+ const warning = `Jotai lazy initializer ${atomName} not statically evaluated`;
180
+ return {
181
+ configKind: "lazy",
182
+ domain: { kind: "tokens", count: 1 },
183
+ initial: "tok1",
184
+ emitVar: true,
185
+ warning,
186
+ metadata: {
187
+ atomName,
188
+ configKind: "lazy",
189
+ creator: "atomWithLazy",
190
+ warning,
191
+ },
192
+ };
193
+ }
194
+ function classifyResetAtom(call, atomName, typeAliases) {
195
+ const domain = inferAtomDomain(call, typeAliases);
196
+ const initial = initialValueForAtom(call, domain);
197
+ return {
198
+ configKind: "resettable",
199
+ domain,
200
+ initial,
201
+ emitVar: true,
202
+ metadata: {
203
+ atomName,
204
+ configKind: "resettable",
205
+ creator: "atomWithReset",
206
+ resettableInitial: initial,
207
+ },
208
+ };
209
+ }
210
+ function classifyDefaultAtom(call, atomName, typeAliases) {
211
+ const readArg = call.arguments[0];
212
+ if (readArg && isReadFunction(readArg)) {
213
+ const deps = getCallsInReadFunction(readArg);
214
+ if (deps.length > 0) {
215
+ const warning = `Jotai atomWithDefault ${atomName} read not statically inlined`;
216
+ return {
217
+ configKind: "defaultResettable",
218
+ domain: { kind: "tokens", count: 1 },
219
+ initial: "tok1",
220
+ emitVar: true,
221
+ warning,
222
+ metadata: {
223
+ atomName,
224
+ configKind: "defaultResettable",
225
+ creator: "atomWithDefault",
226
+ readDependencies: deps,
227
+ warning,
228
+ },
229
+ };
230
+ }
231
+ }
232
+ const domain = inferAtomDomain(call, typeAliases);
233
+ return {
234
+ configKind: "defaultResettable",
235
+ domain,
236
+ initial: initialValueForAtom(call, domain),
237
+ emitVar: true,
238
+ metadata: {
239
+ atomName,
240
+ configKind: "defaultResettable",
241
+ creator: "atomWithDefault",
242
+ },
243
+ };
244
+ }
245
+ function classifyRefreshAtom(call, atomName, typeAliases) {
246
+ const readArg = call.arguments[0];
247
+ const warning = readArg && isReadFunction(readArg)
248
+ ? `Jotai atomWithRefresh ${atomName} re-evaluation abstracted`
249
+ : undefined;
250
+ const domain = inferAtomDomain(call, typeAliases);
251
+ return {
252
+ configKind: "refreshable",
253
+ domain,
254
+ initial: initialValueForAtom(call, domain),
255
+ emitVar: true,
256
+ warning,
257
+ metadata: {
258
+ atomName,
259
+ configKind: "refreshable",
260
+ creator: "atomWithRefresh",
261
+ ...(warning ? { warning } : {}),
262
+ },
263
+ };
264
+ }
265
+ function classifyLoadableAtom(call, atomName) {
266
+ return {
267
+ configKind: "asyncWrapper",
268
+ domain: {
269
+ kind: "tagged",
270
+ tag: "state",
271
+ variants: {
272
+ loading: { kind: "record", fields: {} },
273
+ hasData: {
274
+ kind: "record",
275
+ fields: { data: { kind: "tokens", count: 1 } },
276
+ },
277
+ hasError: {
278
+ kind: "record",
279
+ fields: { error: { kind: "tokens", count: 1 } },
280
+ },
281
+ },
282
+ },
283
+ initial: { state: "loading" },
284
+ emitVar: true,
285
+ metadata: {
286
+ atomName,
287
+ configKind: "asyncWrapper",
288
+ creator: "loadable",
289
+ loadableState: true,
290
+ },
291
+ };
292
+ }
293
+ function classifyUnwrapAtom(call, atomName) {
294
+ const fallback = call.arguments[1];
295
+ let warning;
296
+ let domain = {
297
+ kind: "option",
298
+ inner: { kind: "tokens", count: 1 },
299
+ };
300
+ let initial = null;
301
+ if (fallback &&
302
+ (ts.isArrowFunction(fallback) || ts.isFunctionExpression(fallback))) {
303
+ if (!ts.isBlock(fallback.body)) {
304
+ const lit = literalValue(fallback.body);
305
+ if (lit !== undefined) {
306
+ domain = { kind: "enum", values: [String(lit)] };
307
+ initial = lit;
308
+ }
309
+ else {
310
+ warning = `Jotai unwrap fallback for ${atomName} not statically evaluated`;
311
+ }
312
+ }
313
+ else {
314
+ warning = `Jotai unwrap fallback for ${atomName} not statically evaluated`;
315
+ }
316
+ }
317
+ else {
318
+ warning = `Jotai unwrap ${atomName} pending value abstracted`;
319
+ }
320
+ return {
321
+ configKind: "asyncWrapper",
322
+ domain,
323
+ initial,
324
+ emitVar: true,
325
+ warning,
326
+ metadata: {
327
+ atomName,
328
+ configKind: "asyncWrapper",
329
+ creator: "unwrap",
330
+ ...(warning ? { warning } : {}),
331
+ },
332
+ };
333
+ }
334
+ function classifyObservableAtom(call, atomName, typeAliases) {
335
+ const optionsArg = call.arguments[1];
336
+ let initialArg;
337
+ if (optionsArg && ts.isObjectLiteralExpression(optionsArg)) {
338
+ for (const prop of optionsArg.properties) {
339
+ if (!ts.isPropertyAssignment(prop))
340
+ continue;
341
+ if (propertyName(prop.name) === "initialValue") {
342
+ initialArg = prop.initializer;
343
+ }
344
+ }
345
+ }
346
+ if (initialArg) {
347
+ const domain = domainFromExpression(initialArg, typeAliases);
348
+ return {
349
+ configKind: "asyncWrapper",
350
+ domain,
351
+ initial: valueFromExpression(initialArg, domain),
352
+ emitVar: true,
353
+ metadata: {
354
+ atomName,
355
+ configKind: "asyncWrapper",
356
+ creator: "atomWithObservable",
357
+ },
358
+ };
359
+ }
360
+ const warning = `Jotai atomWithObservable ${atomName} may suspend before first value`;
361
+ return {
362
+ configKind: "asyncWrapper",
363
+ domain: { kind: "tokens", count: 1 },
364
+ initial: "tok1",
365
+ emitVar: true,
366
+ warning,
367
+ metadata: {
368
+ atomName,
369
+ configKind: "asyncWrapper",
370
+ creator: "atomWithObservable",
371
+ warning,
372
+ },
373
+ };
374
+ }
375
+ function classifyFamilyAtom(atomName) {
376
+ return {
377
+ configKind: "family",
378
+ domain: { kind: "tokens", count: 1 },
379
+ initial: "tok1",
380
+ emitVar: false,
381
+ metadata: {
382
+ atomName,
383
+ configKind: "family",
384
+ creator: "atomFamily",
385
+ },
386
+ };
387
+ }
388
+ export function classifyFamilyInstance(familyName, param, innerCall, typeAliases) {
389
+ const domain = inferAtomDomain(innerCall, typeAliases);
390
+ const initial = initialValueForAtom(innerCall, domain);
391
+ return {
392
+ configKind: "familyInstance",
393
+ domain,
394
+ initial,
395
+ emitVar: true,
396
+ metadata: {
397
+ atomName: familyName,
398
+ configKind: "familyInstance",
399
+ creator: "atomFamily",
400
+ familyFactory: familyName,
401
+ familyParam: param,
402
+ },
403
+ };
404
+ }
5
405
  export function inferAtomDomain(call, typeAliases = new Map()) {
6
406
  const typeArg = call.typeArguments?.[0];
7
407
  if (typeArg)
8
408
  return inferDomainFromTypeNode(typeArg, typeAliases);
9
409
  const initial = call.arguments[0];
10
- if (!initial)
410
+ if (!initial || isReadFunction(initial))
11
411
  return { kind: "tokens", count: 1 };
12
- if (initial.kind === ts.SyntaxKind.TrueKeyword ||
13
- initial.kind === ts.SyntaxKind.FalseKeyword)
14
- return { kind: "bool" };
15
- if (ts.isStringLiteral(initial))
16
- return { kind: "enum", values: [initial.text] };
17
- if (ts.isNumericLiteral(initial))
18
- return {
19
- kind: "boundedInt",
20
- min: Number(initial.text),
21
- max: Number(initial.text),
22
- };
23
- if (initial.kind === ts.SyntaxKind.NullKeyword)
24
- return { kind: "option", inner: { kind: "tokens", count: 1 } };
25
- if (ts.isArrayLiteralExpression(initial))
26
- return { kind: "lengthCat" };
27
- if (ts.isObjectLiteralExpression(initial))
28
- return domainFromObjectLiteral(initial);
29
- return { kind: "tokens", count: 1 };
412
+ return domainFromExpression(initial, typeAliases);
30
413
  }
31
414
  export function initialValueForAtom(call, domain) {
32
415
  const initial = call.arguments[0];
33
- if (!initial)
416
+ if (!initial || isReadFunction(initial))
34
417
  return firstValue(domain);
35
- if (initial.kind === ts.SyntaxKind.TrueKeyword)
36
- return validInitialOrFirst(domain, true);
37
- if (initial.kind === ts.SyntaxKind.FalseKeyword)
38
- return validInitialOrFirst(domain, false);
39
- if (ts.isStringLiteral(initial))
40
- return validInitialOrFirst(domain, initial.text);
41
- if (ts.isNumericLiteral(initial))
42
- return validInitialOrFirst(domain, Number(initial.text));
43
- if (initial.kind === ts.SyntaxKind.NullKeyword)
44
- return validInitialOrFirst(domain, null);
45
- if (ts.isArrayLiteralExpression(initial))
46
- return validInitialOrFirst(domain, initial.elements.length === 0
47
- ? "0"
48
- : initial.elements.length === 1
49
- ? "1"
50
- : "many");
51
- if (ts.isObjectLiteralExpression(initial))
52
- return valueFromObjectLiteral(initial, domain);
53
- return firstValue(domain);
418
+ return valueFromExpression(initial, domain);
54
419
  }
55
- function validInitialOrFirst(domain, value) {
56
- return validateValue(domain, value) ? value : firstValue(domain);
57
- }
58
- function domainFromObjectLiteral(node) {
59
- const fields = {};
60
- for (const prop of node.properties) {
61
- if (!ts.isPropertyAssignment(prop) || !ts.isIdentifier(prop.name))
62
- continue;
63
- fields[prop.name.text] = domainFromExpression(prop.initializer);
64
- }
65
- return { kind: "record", fields };
66
- }
67
- function domainFromExpression(expr) {
420
+ function domainFromExpression(expr, typeAliases, typeArg) {
421
+ if (typeArg)
422
+ return inferDomainFromTypeNode(typeArg, typeAliases);
68
423
  if (expr.kind === ts.SyntaxKind.TrueKeyword ||
69
424
  expr.kind === ts.SyntaxKind.FalseKeyword)
70
425
  return { kind: "bool" };
@@ -84,38 +439,94 @@ function domainFromExpression(expr) {
84
439
  return domainFromObjectLiteral(expr);
85
440
  return { kind: "tokens", count: 1 };
86
441
  }
87
- function valueFromObjectLiteral(node, domain) {
88
- const values = {};
442
+ function domainFromObjectLiteral(node) {
443
+ const fields = {};
89
444
  for (const prop of node.properties) {
90
445
  if (!ts.isPropertyAssignment(prop) || !ts.isIdentifier(prop.name))
91
446
  continue;
92
- values[prop.name.text] = valueFromExpression(prop.initializer);
447
+ fields[prop.name.text] = domainFromExpression(prop.initializer, new Map());
93
448
  }
94
- if (domain.kind === "tagged" && !(domain.tag in values)) {
95
- const tag = Object.keys(domain.variants)[0] ?? "unknown";
96
- return { ...values, [domain.tag]: tag };
97
- }
98
- return values;
449
+ return { kind: "record", fields };
99
450
  }
100
- function valueFromExpression(expr) {
451
+ function valueFromExpression(expr, domain) {
101
452
  if (expr.kind === ts.SyntaxKind.TrueKeyword)
102
- return true;
453
+ return validInitialOrFirst(domain, true);
103
454
  if (expr.kind === ts.SyntaxKind.FalseKeyword)
104
- return false;
455
+ return validInitialOrFirst(domain, false);
105
456
  if (ts.isStringLiteral(expr))
106
- return expr.text;
457
+ return validInitialOrFirst(domain, expr.text);
107
458
  if (ts.isNumericLiteral(expr))
108
- return Number(expr.text);
459
+ return validInitialOrFirst(domain, Number(expr.text));
109
460
  if (expr.kind === ts.SyntaxKind.NullKeyword)
110
- return null;
461
+ return validInitialOrFirst(domain, null);
111
462
  if (ts.isArrayLiteralExpression(expr))
112
- return expr.elements.length === 0
463
+ return validInitialOrFirst(domain, expr.elements.length === 0
113
464
  ? "0"
114
465
  : expr.elements.length === 1
115
466
  ? "1"
116
- : "many";
467
+ : "many");
117
468
  if (ts.isObjectLiteralExpression(expr))
118
- return valueFromObjectLiteral(expr, domainFromObjectLiteral(expr));
119
- return "tok1";
469
+ return valueFromObjectLiteral(expr, domain);
470
+ return firstValue(domain);
471
+ }
472
+ function validInitialOrFirst(domain, value) {
473
+ return validateValue(domain, value)
474
+ ? value
475
+ : firstValue(domain);
476
+ }
477
+ function valueFromObjectLiteral(node, domain) {
478
+ const values = {};
479
+ for (const prop of node.properties) {
480
+ if (!ts.isPropertyAssignment(prop) || !ts.isIdentifier(prop.name))
481
+ continue;
482
+ const fieldDomain = domain.kind === "record"
483
+ ? domain.fields[prop.name.text]
484
+ : domain.kind === "tagged"
485
+ ? taggedFieldDomain(domain, prop.name.text)
486
+ : undefined;
487
+ values[prop.name.text] = valueFromExpression(prop.initializer, fieldDomain ?? { kind: "tokens", count: 1 });
488
+ }
489
+ if (domain.kind === "tagged") {
490
+ const tagField = domain.tag;
491
+ if (!(tagField in values)) {
492
+ const tag = Object.keys(domain.variants)[0] ?? "unknown";
493
+ return { ...values, [tagField]: tag };
494
+ }
495
+ }
496
+ return values;
497
+ }
498
+ function taggedFieldDomain(domain, field) {
499
+ if (field === domain.tag) {
500
+ return {
501
+ kind: "enum",
502
+ values: Object.keys(domain.variants),
503
+ };
504
+ }
505
+ const variants = Object.values(domain.variants).filter((variant) => variant.kind === "record");
506
+ const fieldDomains = variants
507
+ .map((variant) => variant.fields[field])
508
+ .filter((candidate) => Boolean(candidate));
509
+ return fieldDomains[0];
510
+ }
511
+ export function staticFamilyParam(expression) {
512
+ if (ts.isStringLiteral(expression) || ts.isNumericLiteral(expression)) {
513
+ return expression.text;
514
+ }
515
+ if (ts.isObjectLiteralExpression(expression)) {
516
+ const fields = {};
517
+ for (const prop of expression.properties) {
518
+ if (!ts.isPropertyAssignment(prop))
519
+ return undefined;
520
+ const name = propertyName(prop.name);
521
+ if (!name)
522
+ return undefined;
523
+ const lit = literalValue(prop.initializer);
524
+ if (lit === undefined || typeof lit !== "string")
525
+ return undefined;
526
+ fields[name] = lit;
527
+ }
528
+ return JSON.stringify(fields);
529
+ }
530
+ return undefined;
120
531
  }
121
532
  //# sourceMappingURL=domains.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"domains.js","sourceRoot":"","sources":["../../../../src/extract/sources/jotai/domains.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domains.js","sourceRoot":"","sources":["../../../../src/extract/sources/jotai/domains.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,14 @@ import type { AbstractDomain, ModelState, Value } from "modality-ts/core";
3
3
  export interface JotaiHarnessHooks extends HarnessHooks {
4
4
  initialState: ModelState;
5
5
  atoms?: Record<string, unknown>;
6
+ stores?: Record<string, {
7
+ get(atom: unknown): Value;
8
+ }>;
6
9
  store?: {
7
10
  get(atom: unknown): Value;
8
11
  };
9
12
  }
10
- export declare function setup(ctx: HarnessCtx & Partial<Pick<JotaiHarnessHooks, "atoms" | "store">>): JotaiHarnessHooks;
13
+ export declare function setup(ctx: HarnessCtx & Partial<Pick<JotaiHarnessHooks, "atoms" | "store" | "stores">>): JotaiHarnessHooks;
11
14
  export declare function observe(varId: string, handles: HarnessHooks): ObservedRead | "unobservable";
12
15
  export declare function witness(_domain: AbstractDomain, _varId: string): WitnessFactory | undefined;
13
16
  //# sourceMappingURL=harness.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../../../src/extract/sources/jotai/harness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,cAAc,EACf,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE1E,MAAM,WAAW,iBAAkB,SAAQ,YAAY;IACrD,YAAY,EAAE,UAAU,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE;QACN,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;KAC3B,CAAC;CACH;AAED,wBAAgB,KAAK,CACnB,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,GACpE,iBAAiB,CAMnB;AAED,wBAAgB,OAAO,CACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,YAAY,GACpB,YAAY,GAAG,cAAc,CAW/B;AAED,wBAAgB,OAAO,CACrB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,MAAM,GACb,cAAc,GAAG,SAAS,CAE5B"}
1
+ {"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../../../src/extract/sources/jotai/harness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,cAAc,EACf,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAG1E,MAAM,WAAW,iBAAkB,SAAQ,YAAY;IACrD,YAAY,EAAE,UAAU,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,KAAK,CAAA;KAAE,CAAC,CAAC;IACvD,KAAK,CAAC,EAAE;QACN,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;KAC3B,CAAC;CACH;AAED,wBAAgB,KAAK,CACnB,GAAG,EAAE,UAAU,GACb,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC,GAC/D,iBAAiB,CAOnB;AAED,wBAAgB,OAAO,CACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,YAAY,GACpB,YAAY,GAAG,cAAc,CAgB/B;AAED,wBAAgB,OAAO,CACrB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,MAAM,GACb,cAAc,GAAG,SAAS,CAE5B"}