modality-ts 0.0.13 → 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 +117 -27
  2. package/dist/cli/cli.js.map +1 -1
  3. package/dist/cli/features/check/command.d.ts +7 -0
  4. package/dist/cli/features/check/command.d.ts.map +1 -1
  5. package/dist/cli/features/check/command.js +39 -6
  6. package/dist/cli/features/check/command.js.map +1 -1
  7. package/dist/cli/features/check/index.d.ts +2 -0
  8. package/dist/cli/features/check/index.d.ts.map +1 -1
  9. package/dist/cli/features/check/index.js +1 -0
  10. package/dist/cli/features/check/index.js.map +1 -1
  11. package/dist/cli/features/check/output.d.ts +29 -0
  12. package/dist/cli/features/check/output.d.ts.map +1 -0
  13. package/dist/cli/features/check/output.js +174 -0
  14. package/dist/cli/features/check/output.js.map +1 -0
  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 +1 @@
1
- {"version":3,"file":"transitions.d.ts","sourceRoot":"","sources":["../../../../src/extract/sources/jotai/transitions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACb,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAQpE,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,SAAS,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACpC,aAAa,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,aAAa,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC7C,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,sBAA2B,GACnC,sBAAsB,CAqCxB"}
1
+ {"version":3,"file":"transitions.d.ts","sourceRoot":"","sources":["../../../../src/extract/sources/jotai/transitions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACb,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAUpE,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,SAAS,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACpC,aAAa,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,aAAa,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC7C,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,sBAA2B,GACnC,sBAAsB,CAgDxB"}
@@ -1,13 +1,17 @@
1
1
  import { extractSharedReactTransitions } from "../shared/react-transition-extract.js";
2
- import { discoverJotaiAtoms } from "./discover.js";
3
- import { discoverJotaiSafetyWarnings, discoverJotaiWriteChannels, } from "./writes.js";
2
+ import { discoverJotaiAtomsDetailed } from "./discover.js";
3
+ import { discoverJotaiSafetyWarnings, discoverJotaiWriteChannels, discoverJotaiWritesDetailed, jotaiResetSymbols, } from "./writes.js";
4
4
  import { jotaiSource } from "./plugin.js";
5
5
  export function extractJotaiSkeleton(sourceText, options = {}) {
6
6
  const fileName = options.fileName ?? "App.tsx";
7
7
  const route = options.route ?? "/";
8
- const discovered = discoverJotaiAtoms(sourceText, fileName);
8
+ const discovery = discoverJotaiAtomsDetailed(sourceText, fileName);
9
+ const writeDiscovery = discoverJotaiWritesDetailed(sourceText, fileName);
9
10
  const vars = [
10
- ...discovered
11
+ ...discovery.decls
12
+ .map((decl) => decl.var)
13
+ .filter((decl) => Boolean(decl)),
14
+ ...writeDiscovery.storeScopedDecls
11
15
  .map((decl) => decl.var)
12
16
  .filter((decl) => Boolean(decl)),
13
17
  ...(options.stateVars ?? []),
@@ -21,6 +25,10 @@ export function extractJotaiSkeleton(sourceText, options = {}) {
21
25
  message: warning.message,
22
26
  ...(warning.source ? { line: warning.source.line } : {}),
23
27
  }));
28
+ const discoveryWarnings = discovery.warnings.map((warning) => ({
29
+ message: warning.message,
30
+ ...(warning.source ? { line: warning.source.line } : {}),
31
+ }));
24
32
  const { transitions, warnings = [] } = extractSharedReactTransitions({
25
33
  sourceText,
26
34
  fileName,
@@ -30,12 +38,15 @@ export function extractJotaiSkeleton(sourceText, options = {}) {
30
38
  stateVars: vars,
31
39
  ...(writeChannels.length > 0 ? { writeChannels } : {}),
32
40
  sourcePlugins,
41
+ resetSymbols: jotaiResetSymbols(sourceText, fileName),
42
+ setterFixedEffects: writeDiscovery.setterFixedEffects,
43
+ resettableVarIds: writeDiscovery.resettableVarIds,
33
44
  ...(options.routerPlugin ? { routerPlugin: options.routerPlugin } : {}),
34
45
  });
35
46
  return {
36
47
  vars,
37
48
  transitions: [...transitions],
38
- warnings: [...safetyWarnings, ...warnings],
49
+ warnings: [...safetyWarnings, ...discoveryWarnings, ...warnings],
39
50
  };
40
51
  }
41
52
  //# sourceMappingURL=transitions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transitions.js","sourceRoot":"","sources":["../../../../src/extract/sources/jotai/transitions.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAEtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAa1C,MAAM,UAAU,oBAAoB,CAClC,UAAkB,EAClB,UAAkC,EAAE;IAEpC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,SAAS,CAAC;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC;IACnC,MAAM,UAAU,GAAG,kBAAkB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG;QACX,GAAG,UAAU;aACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;aACvB,MAAM,CAAC,CAAC,IAAI,EAAwB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxD,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;KAC7B,CAAC;IACF,MAAM,aAAa,GAAG;QACpB,GAAG,0BAA0B,CAAC,UAAU,EAAE,QAAQ,CAAC;QACnD,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;KACjC,CAAC;IACF,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;IACxE,MAAM,cAAc,GAAG,2BAA2B,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,GAAG,CAC1E,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACZ,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzD,CAAC,CACH,CAAC;IACF,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,6BAA6B,CAAC;QACnE,UAAU;QACV,QAAQ;QACR,KAAK;QACL,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;QACpC,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,EAAE;QAC1C,SAAS,EAAE,IAAI;QACf,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,aAAa;QACb,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxE,CAAC,CAAC;IACH,OAAO;QACL,IAAI;QACJ,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC;QAC7B,QAAQ,EAAE,CAAC,GAAG,cAAc,EAAE,GAAG,QAAQ,CAAC;KAC3C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"transitions.js","sourceRoot":"","sources":["../../../../src/extract/sources/jotai/transitions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { Value } from "modality-ts/core";
2
+ export type AtomConfigKind = "primitive" | "readOnlyDerived" | "readWriteDerived" | "writeOnlyDerived" | "storage" | "lazy" | "resettable" | "defaultResettable" | "refreshable" | "asyncWrapper" | "family" | "familyInstance";
3
+ export interface JotaiAtomMetadata {
4
+ atomName: string;
5
+ configKind: AtomConfigKind;
6
+ creator?: string;
7
+ storageKey?: string;
8
+ storageKind?: string;
9
+ getOnInit?: boolean;
10
+ resettableInitial?: Value;
11
+ readDependencies?: readonly string[];
12
+ familyFactory?: string;
13
+ familyParam?: string;
14
+ loadableState?: boolean;
15
+ asyncDerived?: boolean;
16
+ warning?: string;
17
+ }
18
+ export declare function metadataToRecord(metadata: JotaiAtomMetadata): Record<string, Value>;
19
+ export declare function metadataFromRecord(record: Record<string, Value> | undefined): JotaiAtomMetadata | undefined;
20
+ export declare function isResettableKind(kind: AtomConfigKind): boolean;
21
+ export declare function isWritableAtomKind(kind: AtomConfigKind): boolean;
22
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/extract/sources/jotai/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,MAAM,cAAc,GACtB,WAAW,GACX,iBAAiB,GACjB,kBAAkB,GAClB,kBAAkB,GAClB,SAAS,GACT,MAAM,GACN,YAAY,GACZ,mBAAmB,GACnB,aAAa,GACb,cAAc,GACd,QAAQ,GACR,gBAAgB,CAAC;AAErB,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,cAAc,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,KAAK,CAAC;IAC1B,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,iBAAiB,GAC1B,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAqBvB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,GACxC,iBAAiB,GAAG,SAAS,CAqC/B;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAO9D;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAWhE"}
@@ -0,0 +1,86 @@
1
+ export function metadataToRecord(metadata) {
2
+ const record = {
3
+ atomName: metadata.atomName,
4
+ configKind: metadata.configKind,
5
+ };
6
+ if (metadata.creator)
7
+ record.creator = metadata.creator;
8
+ if (metadata.storageKey)
9
+ record.storageKey = metadata.storageKey;
10
+ if (metadata.storageKind)
11
+ record.storageKind = metadata.storageKind;
12
+ if (metadata.getOnInit !== undefined)
13
+ record.getOnInit = metadata.getOnInit;
14
+ if (metadata.resettableInitial !== undefined)
15
+ record.resettableInitial = metadata.resettableInitial;
16
+ if (metadata.readDependencies)
17
+ record.readDependencies = metadata.readDependencies.join(",");
18
+ if (metadata.familyFactory)
19
+ record.familyFactory = metadata.familyFactory;
20
+ if (metadata.familyParam)
21
+ record.familyParam = metadata.familyParam;
22
+ if (metadata.loadableState !== undefined)
23
+ record.loadableState = metadata.loadableState;
24
+ if (metadata.asyncDerived !== undefined)
25
+ record.asyncDerived = metadata.asyncDerived;
26
+ if (metadata.warning)
27
+ record.warning = metadata.warning;
28
+ return record;
29
+ }
30
+ export function metadataFromRecord(record) {
31
+ if (!record || typeof record.atomName !== "string")
32
+ return undefined;
33
+ const configKind = record.configKind;
34
+ if (typeof configKind !== "string")
35
+ return undefined;
36
+ return {
37
+ atomName: record.atomName,
38
+ configKind: configKind,
39
+ ...(typeof record.creator === "string" ? { creator: record.creator } : {}),
40
+ ...(typeof record.storageKey === "string"
41
+ ? { storageKey: record.storageKey }
42
+ : {}),
43
+ ...(typeof record.storageKind === "string"
44
+ ? { storageKind: record.storageKind }
45
+ : {}),
46
+ ...(typeof record.getOnInit === "boolean"
47
+ ? { getOnInit: record.getOnInit }
48
+ : {}),
49
+ ...(record.resettableInitial !== undefined
50
+ ? { resettableInitial: record.resettableInitial }
51
+ : {}),
52
+ ...(typeof record.readDependencies === "string"
53
+ ? { readDependencies: record.readDependencies.split(",") }
54
+ : {}),
55
+ ...(typeof record.familyFactory === "string"
56
+ ? { familyFactory: record.familyFactory }
57
+ : {}),
58
+ ...(typeof record.familyParam === "string"
59
+ ? { familyParam: record.familyParam }
60
+ : {}),
61
+ ...(typeof record.loadableState === "boolean"
62
+ ? { loadableState: record.loadableState }
63
+ : {}),
64
+ ...(typeof record.asyncDerived === "boolean"
65
+ ? { asyncDerived: record.asyncDerived }
66
+ : {}),
67
+ ...(typeof record.warning === "string" ? { warning: record.warning } : {}),
68
+ };
69
+ }
70
+ export function isResettableKind(kind) {
71
+ return (kind === "resettable" ||
72
+ kind === "defaultResettable" ||
73
+ kind === "storage" ||
74
+ kind === "refreshable");
75
+ }
76
+ export function isWritableAtomKind(kind) {
77
+ return (kind === "primitive" ||
78
+ kind === "readWriteDerived" ||
79
+ kind === "storage" ||
80
+ kind === "lazy" ||
81
+ kind === "resettable" ||
82
+ kind === "defaultResettable" ||
83
+ kind === "refreshable" ||
84
+ kind === "familyInstance");
85
+ }
86
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/extract/sources/jotai/types.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,30 @@
1
+ import * as ts from "typescript";
1
2
  import type { WriteChannel } from "modality-ts/extract/engine/spi";
2
- import type { SourceAnchor } from "modality-ts/core";
3
+ import type { EffectIR, SourceAnchor, Value } from "modality-ts/core";
4
+ export interface JotaiWriteDiscovery {
5
+ channels: WriteChannel[];
6
+ warnings: {
7
+ message: string;
8
+ source?: SourceAnchor;
9
+ }[];
10
+ resetSymbol?: string;
11
+ resettableVarIds: Set<string>;
12
+ derivedWriteEffects: Map<string, EffectIR>;
13
+ setterFixedEffects: Map<string, EffectIR>;
14
+ storeScopedDecls: import("modality-ts/extract/engine/spi").SourceDecl[];
15
+ }
3
16
  export declare function discoverJotaiSafetyWarnings(sourceText: string, fileName?: string): {
4
17
  message: string;
5
18
  source?: SourceAnchor;
6
19
  }[];
7
20
  export declare function discoverJotaiWriteChannels(sourceText: string, fileName?: string): WriteChannel[];
21
+ export declare function discoverJotaiWritesDetailed(sourceText: string, fileName?: string): JotaiWriteDiscovery;
22
+ export declare function setAtomImportNames(source: ts.SourceFile): {
23
+ useAtom: Set<string>;
24
+ useSetAtom: Set<string>;
25
+ };
26
+ export declare function getDefaultStoreImportNames(source: ts.SourceFile): Set<string>;
27
+ export declare function isUseAtomLikeCall(node: ts.Expression, names: Set<string>): node is ts.CallExpression;
28
+ export declare function jotaiResetSymbols(sourceText: string, fileName: string): Set<string>;
29
+ export declare function jotaiInitialByVarId(decls: readonly import("modality-ts/extract/engine/spi").SourceDecl[]): Map<string, Value>;
8
30
  //# sourceMappingURL=writes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"writes.d.ts","sourceRoot":"","sources":["../../../../src/extract/sources/jotai/writes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,EAClB,QAAQ,SAAa,GACpB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,YAAY,CAAA;CAAE,EAAE,CA2B9C;AAED,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,QAAQ,SAAa,GACpB,YAAY,EAAE,CAmHhB"}
1
+ {"version":3,"file":"writes.d.ts","sourceRoot":"","sources":["../../../../src/extract/sources/jotai/writes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAyBtE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,YAAY,CAAA;KAAE,EAAE,CAAC;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3C,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC1C,gBAAgB,EAAE,OAAO,gCAAgC,EAAE,UAAU,EAAE,CAAC;CACzE;AAED,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,EAClB,QAAQ,SAAa,GACpB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,YAAY,CAAA;CAAE,EAAE,CA2F9C;AAED,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,QAAQ,SAAa,GACpB,YAAY,EAAE,CAEhB;AAED,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,EAClB,QAAQ,SAAa,GACpB,mBAAmB,CAqQrB;AAqJD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,GAAG;IACzD,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACzB,CASA;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,CAO7E;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,EAAE,CAAC,UAAU,EACnB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GACjB,IAAI,IAAI,EAAE,CAAC,cAAc,CAM3B;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,GAAG,CAAC,MAAM,CAAC,CAab;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,SAAS,OAAO,gCAAgC,EAAE,UAAU,EAAE,GACpE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAMpB"}