@justscale/typescript 0.1.1

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 (245) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +128 -0
  3. package/dist/api.d.ts +144 -0
  4. package/dist/api.d.ts.map +1 -0
  5. package/dist/api.js +380 -0
  6. package/dist/api.js.map +1 -0
  7. package/dist/compiler/analyzer.d.ts +247 -0
  8. package/dist/compiler/analyzer.d.ts.map +1 -0
  9. package/dist/compiler/analyzer.js +3201 -0
  10. package/dist/compiler/analyzer.js.map +1 -0
  11. package/dist/compiler/cli.d.ts +12 -0
  12. package/dist/compiler/cli.d.ts.map +1 -0
  13. package/dist/compiler/cli.js +209 -0
  14. package/dist/compiler/cli.js.map +1 -0
  15. package/dist/compiler/compile.d.ts +26 -0
  16. package/dist/compiler/compile.d.ts.map +1 -0
  17. package/dist/compiler/compile.js +121 -0
  18. package/dist/compiler/compile.js.map +1 -0
  19. package/dist/compiler/errors.d.ts +336 -0
  20. package/dist/compiler/errors.d.ts.map +1 -0
  21. package/dist/compiler/errors.js +466 -0
  22. package/dist/compiler/errors.js.map +1 -0
  23. package/dist/compiler/exports-prepass.d.ts +31 -0
  24. package/dist/compiler/exports-prepass.d.ts.map +1 -0
  25. package/dist/compiler/exports-prepass.js +249 -0
  26. package/dist/compiler/exports-prepass.js.map +1 -0
  27. package/dist/compiler/hmr-change-detector.d.ts +47 -0
  28. package/dist/compiler/hmr-change-detector.d.ts.map +1 -0
  29. package/dist/compiler/hmr-change-detector.js +395 -0
  30. package/dist/compiler/hmr-change-detector.js.map +1 -0
  31. package/dist/compiler/hmr-transformer.d.ts +54 -0
  32. package/dist/compiler/hmr-transformer.d.ts.map +1 -0
  33. package/dist/compiler/hmr-transformer.js +535 -0
  34. package/dist/compiler/hmr-transformer.js.map +1 -0
  35. package/dist/compiler/index.d.ts +19 -0
  36. package/dist/compiler/index.d.ts.map +1 -0
  37. package/dist/compiler/index.js +16 -0
  38. package/dist/compiler/index.js.map +1 -0
  39. package/dist/compiler/primitive-detector.d.ts +70 -0
  40. package/dist/compiler/primitive-detector.d.ts.map +1 -0
  41. package/dist/compiler/primitive-detector.js +338 -0
  42. package/dist/compiler/primitive-detector.js.map +1 -0
  43. package/dist/compiler/ptsc.d.ts +40 -0
  44. package/dist/compiler/ptsc.d.ts.map +1 -0
  45. package/dist/compiler/ptsc.js +462 -0
  46. package/dist/compiler/ptsc.js.map +1 -0
  47. package/dist/compiler/rewriter.d.ts +96 -0
  48. package/dist/compiler/rewriter.d.ts.map +1 -0
  49. package/dist/compiler/rewriter.js +418 -0
  50. package/dist/compiler/rewriter.js.map +1 -0
  51. package/dist/compiler/step-hash.d.ts +43 -0
  52. package/dist/compiler/step-hash.d.ts.map +1 -0
  53. package/dist/compiler/step-hash.js +83 -0
  54. package/dist/compiler/step-hash.js.map +1 -0
  55. package/dist/compiler/switch-codegen.d.ts +84 -0
  56. package/dist/compiler/switch-codegen.d.ts.map +1 -0
  57. package/dist/compiler/switch-codegen.js +1540 -0
  58. package/dist/compiler/switch-codegen.js.map +1 -0
  59. package/dist/compiler/transformer.d.ts +29 -0
  60. package/dist/compiler/transformer.d.ts.map +1 -0
  61. package/dist/compiler/transformer.js +216 -0
  62. package/dist/compiler/transformer.js.map +1 -0
  63. package/dist/config/index.d.ts +122 -0
  64. package/dist/config/index.d.ts.map +1 -0
  65. package/dist/config/index.js +215 -0
  66. package/dist/config/index.js.map +1 -0
  67. package/dist/di-errors/formatter.d.ts +126 -0
  68. package/dist/di-errors/formatter.d.ts.map +1 -0
  69. package/dist/di-errors/formatter.js +384 -0
  70. package/dist/di-errors/formatter.js.map +1 -0
  71. package/dist/di-errors/index.d.ts +5 -0
  72. package/dist/di-errors/index.d.ts.map +1 -0
  73. package/dist/di-errors/index.js +13 -0
  74. package/dist/di-errors/index.js.map +1 -0
  75. package/dist/editor.d.ts +11 -0
  76. package/dist/editor.d.ts.map +1 -0
  77. package/dist/editor.js +2 -0
  78. package/dist/editor.js.map +1 -0
  79. package/dist/index.d.ts +35 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +40 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/language-service/index.d.ts +52 -0
  84. package/dist/language-service/index.d.ts.map +1 -0
  85. package/dist/language-service/index.js +366 -0
  86. package/dist/language-service/index.js.map +1 -0
  87. package/dist/language-service/process-quick-fixes.d.ts +20 -0
  88. package/dist/language-service/process-quick-fixes.d.ts.map +1 -0
  89. package/dist/language-service/process-quick-fixes.js +114 -0
  90. package/dist/language-service/process-quick-fixes.js.map +1 -0
  91. package/dist/language-service/quick-fix-discovery.d.ts +39 -0
  92. package/dist/language-service/quick-fix-discovery.d.ts.map +1 -0
  93. package/dist/language-service/quick-fix-discovery.js +124 -0
  94. package/dist/language-service/quick-fix-discovery.js.map +1 -0
  95. package/dist/loader/incremental.d.ts +50 -0
  96. package/dist/loader/incremental.d.ts.map +1 -0
  97. package/dist/loader/incremental.js +151 -0
  98. package/dist/loader/incremental.js.map +1 -0
  99. package/dist/loader/index.d.ts +25 -0
  100. package/dist/loader/index.d.ts.map +1 -0
  101. package/dist/loader/index.js +24 -0
  102. package/dist/loader/index.js.map +1 -0
  103. package/dist/loader/loader.d.ts +52 -0
  104. package/dist/loader/loader.d.ts.map +1 -0
  105. package/dist/loader/loader.js +248 -0
  106. package/dist/loader/loader.js.map +1 -0
  107. package/dist/loader/register.d.ts +14 -0
  108. package/dist/loader/register.d.ts.map +1 -0
  109. package/dist/loader/register.js +20 -0
  110. package/dist/loader/register.js.map +1 -0
  111. package/dist/plugins/index.d.ts +13 -0
  112. package/dist/plugins/index.d.ts.map +1 -0
  113. package/dist/plugins/index.js +13 -0
  114. package/dist/plugins/index.js.map +1 -0
  115. package/dist/plugins/index.public.d.ts +13 -0
  116. package/dist/plugins/index.public.d.ts.map +1 -0
  117. package/dist/plugins/index.public.js +13 -0
  118. package/dist/plugins/index.public.js.map +1 -0
  119. package/dist/plugins/types.d.ts +83 -0
  120. package/dist/plugins/types.d.ts.map +1 -0
  121. package/dist/plugins/types.js +24 -0
  122. package/dist/plugins/types.js.map +1 -0
  123. package/dist/server/index.d.ts +33 -0
  124. package/dist/server/index.d.ts.map +1 -0
  125. package/dist/server/index.js +42 -0
  126. package/dist/server/index.js.map +1 -0
  127. package/dist/server/tsserver.d.ts +28 -0
  128. package/dist/server/tsserver.d.ts.map +1 -0
  129. package/dist/server/tsserver.js +126 -0
  130. package/dist/server/tsserver.js.map +1 -0
  131. package/lib/lib.d.ts +20 -0
  132. package/lib/lib.decorators.d.ts +382 -0
  133. package/lib/lib.decorators.legacy.d.ts +20 -0
  134. package/lib/lib.dom.asynciterable.d.ts +18 -0
  135. package/lib/lib.dom.d.ts +45125 -0
  136. package/lib/lib.dom.iterable.d.ts +18 -0
  137. package/lib/lib.es2015.collection.d.ts +150 -0
  138. package/lib/lib.es2015.core.d.ts +595 -0
  139. package/lib/lib.es2015.d.ts +26 -0
  140. package/lib/lib.es2015.generator.d.ts +75 -0
  141. package/lib/lib.es2015.iterable.d.ts +603 -0
  142. package/lib/lib.es2015.promise.d.ts +79 -0
  143. package/lib/lib.es2015.proxy.d.ts +126 -0
  144. package/lib/lib.es2015.reflect.d.ts +142 -0
  145. package/lib/lib.es2015.symbol.d.ts +44 -0
  146. package/lib/lib.es2015.symbol.wellknown.d.ts +324 -0
  147. package/lib/lib.es2016.array.include.d.ts +114 -0
  148. package/lib/lib.es2016.d.ts +19 -0
  149. package/lib/lib.es2016.full.d.ts +21 -0
  150. package/lib/lib.es2016.intl.d.ts +29 -0
  151. package/lib/lib.es2017.arraybuffer.d.ts +19 -0
  152. package/lib/lib.es2017.d.ts +24 -0
  153. package/lib/lib.es2017.date.d.ts +29 -0
  154. package/lib/lib.es2017.full.d.ts +21 -0
  155. package/lib/lib.es2017.intl.d.ts +42 -0
  156. package/lib/lib.es2017.object.d.ts +47 -0
  157. package/lib/lib.es2017.sharedmemory.d.ts +133 -0
  158. package/lib/lib.es2017.string.d.ts +43 -0
  159. package/lib/lib.es2017.typedarrays.d.ts +51 -0
  160. package/lib/lib.es2018.asyncgenerator.d.ts +75 -0
  161. package/lib/lib.es2018.asynciterable.d.ts +51 -0
  162. package/lib/lib.es2018.d.ts +22 -0
  163. package/lib/lib.es2018.full.d.ts +22 -0
  164. package/lib/lib.es2018.intl.d.ts +81 -0
  165. package/lib/lib.es2018.promise.d.ts +28 -0
  166. package/lib/lib.es2018.regexp.d.ts +35 -0
  167. package/lib/lib.es2019.array.d.ts +77 -0
  168. package/lib/lib.es2019.d.ts +22 -0
  169. package/lib/lib.es2019.full.d.ts +22 -0
  170. package/lib/lib.es2019.intl.d.ts +21 -0
  171. package/lib/lib.es2019.object.d.ts +31 -0
  172. package/lib/lib.es2019.string.d.ts +35 -0
  173. package/lib/lib.es2019.symbol.d.ts +22 -0
  174. package/lib/lib.es2020.bigint.d.ts +763 -0
  175. package/lib/lib.es2020.d.ts +25 -0
  176. package/lib/lib.es2020.date.d.ts +40 -0
  177. package/lib/lib.es2020.full.d.ts +22 -0
  178. package/lib/lib.es2020.intl.d.ts +472 -0
  179. package/lib/lib.es2020.number.d.ts +26 -0
  180. package/lib/lib.es2020.promise.d.ts +45 -0
  181. package/lib/lib.es2020.sharedmemory.d.ts +97 -0
  182. package/lib/lib.es2020.string.d.ts +42 -0
  183. package/lib/lib.es2020.symbol.wellknown.d.ts +39 -0
  184. package/lib/lib.es2021.d.ts +21 -0
  185. package/lib/lib.es2021.full.d.ts +22 -0
  186. package/lib/lib.es2021.intl.d.ts +164 -0
  187. package/lib/lib.es2021.promise.d.ts +46 -0
  188. package/lib/lib.es2021.string.d.ts +31 -0
  189. package/lib/lib.es2021.weakref.d.ts +76 -0
  190. package/lib/lib.es2022.array.d.ts +119 -0
  191. package/lib/lib.es2022.d.ts +23 -0
  192. package/lib/lib.es2022.error.d.ts +73 -0
  193. package/lib/lib.es2022.full.d.ts +22 -0
  194. package/lib/lib.es2022.intl.d.ts +143 -0
  195. package/lib/lib.es2022.object.d.ts +24 -0
  196. package/lib/lib.es2022.regexp.d.ts +37 -0
  197. package/lib/lib.es2022.string.d.ts +23 -0
  198. package/lib/lib.es2023.array.d.ts +922 -0
  199. package/lib/lib.es2023.collection.d.ts +19 -0
  200. package/lib/lib.es2023.d.ts +20 -0
  201. package/lib/lib.es2023.full.d.ts +22 -0
  202. package/lib/lib.es2023.intl.d.ts +62 -0
  203. package/lib/lib.es2024.arraybuffer.d.ts +63 -0
  204. package/lib/lib.es2024.collection.d.ts +27 -0
  205. package/lib/lib.es2024.d.ts +24 -0
  206. package/lib/lib.es2024.full.d.ts +22 -0
  207. package/lib/lib.es2024.object.d.ts +27 -0
  208. package/lib/lib.es2024.promise.d.ts +33 -0
  209. package/lib/lib.es2024.regexp.d.ts +23 -0
  210. package/lib/lib.es2024.sharedmemory.d.ts +66 -0
  211. package/lib/lib.es2024.string.d.ts +27 -0
  212. package/lib/lib.es2025.collection.d.ts +94 -0
  213. package/lib/lib.es2025.d.ts +23 -0
  214. package/lib/lib.es2025.float16.d.ts +443 -0
  215. package/lib/lib.es2025.full.d.ts +22 -0
  216. package/lib/lib.es2025.intl.d.ts +200 -0
  217. package/lib/lib.es2025.iterator.d.ts +146 -0
  218. package/lib/lib.es2025.promise.d.ts +32 -0
  219. package/lib/lib.es2025.regexp.d.ts +30 -0
  220. package/lib/lib.es5.d.ts +4599 -0
  221. package/lib/lib.es6.d.ts +21 -0
  222. package/lib/lib.esnext.array.d.ts +33 -0
  223. package/lib/lib.esnext.collection.d.ts +47 -0
  224. package/lib/lib.esnext.d.ts +27 -0
  225. package/lib/lib.esnext.date.d.ts +21 -0
  226. package/lib/lib.esnext.decorators.d.ts +26 -0
  227. package/lib/lib.esnext.disposable.d.ts +191 -0
  228. package/lib/lib.esnext.error.d.ts +22 -0
  229. package/lib/lib.esnext.full.d.ts +22 -0
  230. package/lib/lib.esnext.intl.d.ts +107 -0
  231. package/lib/lib.esnext.sharedmemory.d.ts +23 -0
  232. package/lib/lib.esnext.temporal.d.ts +485 -0
  233. package/lib/lib.esnext.typedarrays.d.ts +90 -0
  234. package/lib/lib.scripthost.d.ts +320 -0
  235. package/lib/lib.webworker.asynciterable.d.ts +18 -0
  236. package/lib/lib.webworker.d.ts +15606 -0
  237. package/lib/lib.webworker.importscripts.d.ts +21 -0
  238. package/lib/lib.webworker.iterable.d.ts +18 -0
  239. package/lib/logger.js +144 -0
  240. package/lib/package.json +7 -0
  241. package/lib/tsserver.js +57 -0
  242. package/lib/tsserverlibrary.js +171 -0
  243. package/lib/typesMap.json +497 -0
  244. package/lib/typescript.js +373 -0
  245. package/package.json +115 -0
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @justscale/typescript - Primitive Detection
3
+ *
4
+ * Uses TypeScript's type system to detect process primitives (signal, delay, race)
5
+ * rather than simple string matching. This handles:
6
+ * - Renamed imports (import { signal as s })
7
+ * - Re-exports from other modules
8
+ * - Complex expressions
9
+ */
10
+ import ts from 'typescript';
11
+ /**
12
+ * Result of checking if an expression is a process primitive call.
13
+ */
14
+ export interface PrimitiveCallInfo {
15
+ kind: 'signal' | 'delay' | 'race' | 'signal.all' | 'signal.settled' | 'stream' | 'scope';
16
+ /** For race switch patterns: the race variable if present */
17
+ raceVar?: string;
18
+ /** The call expression node */
19
+ node: ts.CallExpression;
20
+ /** For delay: the time unit (seconds, minutes, hours, days) */
21
+ delayUnit?: 'seconds' | 'minutes' | 'hours' | 'days';
22
+ /** For signal.all/settled: whether it's the object form (vs array) */
23
+ isObjectForm?: boolean;
24
+ }
25
+ /**
26
+ * Check if a call expression is a process primitive call.
27
+ * Uses the type checker to resolve the actual symbol being called.
28
+ */
29
+ export declare function getPrimitiveCall(node: ts.CallExpression, typeChecker: ts.TypeChecker): PrimitiveCallInfo | null;
30
+ /**
31
+ * Check if an expression contains any suspension points (await on primitives).
32
+ * This is a deep check that handles:
33
+ * - Direct: await signal(x)
34
+ * - Nested: const { a } = await signal(x)
35
+ * - Complex: (await signal(x)).value + (await signal(y)).value
36
+ */
37
+ export declare function containsSuspensionPoint(expr: ts.Expression, typeChecker: ts.TypeChecker): boolean;
38
+ /**
39
+ * Find all await expressions on primitives within an expression.
40
+ * Returns them in order of appearance.
41
+ */
42
+ export declare function findSuspensionPoints(expr: ts.Expression, typeChecker: ts.TypeChecker): Array<{
43
+ await: ts.AwaitExpression;
44
+ primitive: PrimitiveCallInfo;
45
+ }>;
46
+ /**
47
+ * Check if an expression is a signal.all() or signal.settled() call.
48
+ */
49
+ export declare function isSignalCombinatorCall(node: ts.CallExpression, typeChecker: ts.TypeChecker): boolean;
50
+ /**
51
+ * Check if an expression is a race() call.
52
+ */
53
+ export declare function isRaceCall(node: ts.CallExpression, typeChecker: ts.TypeChecker): boolean;
54
+ /**
55
+ * Check if an expression is a signal() or waitFor() call.
56
+ */
57
+ export declare function isSignalCall(node: ts.CallExpression, typeChecker: ts.TypeChecker): boolean;
58
+ /**
59
+ * Check if an expression is a delay() call.
60
+ */
61
+ export declare function isDelayCall(node: ts.CallExpression, typeChecker: ts.TypeChecker): boolean;
62
+ /**
63
+ * Check if an expression is a scope() call.
64
+ */
65
+ export declare function isScopeCall(node: ts.CallExpression, typeChecker: ts.TypeChecker): boolean;
66
+ /**
67
+ * Check if an expression is a stream() call.
68
+ */
69
+ export declare function isStreamCall(node: ts.CallExpression, typeChecker: ts.TypeChecker): boolean;
70
+ //# sourceMappingURL=primitive-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitive-detector.d.ts","sourceRoot":"","sources":["../../src/compiler/primitive-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAW5B;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,YAAY,GAAG,gBAAgB,GAAG,QAAQ,GAAG,OAAO,CAAA;IACxF,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,+BAA+B;IAC/B,IAAI,EAAE,EAAE,CAAC,cAAc,CAAA;IACvB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAA;IACpD,sEAAsE;IACtE,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,EAAE,CAAC,cAAc,EACvB,WAAW,EAAE,EAAE,CAAC,WAAW,GAC1B,iBAAiB,GAAG,IAAI,CAqE1B;AA4MD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,EAAE,CAAC,UAAU,EACnB,WAAW,EAAE,EAAE,CAAC,WAAW,GAC1B,OAAO,CAgCT;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,EAAE,CAAC,UAAU,EACnB,WAAW,EAAE,EAAE,CAAC,WAAW,GAC1B,KAAK,CAAC;IAAE,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC;IAAC,SAAS,EAAE,iBAAiB,CAAA;CAAE,CAAC,CA0BpE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,EAAE,CAAC,cAAc,EACvB,WAAW,EAAE,EAAE,CAAC,WAAW,GAC1B,OAAO,CAGT;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,EAAE,CAAC,cAAc,EACvB,WAAW,EAAE,EAAE,CAAC,WAAW,GAC1B,OAAO,CAGT;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,EAAE,CAAC,cAAc,EACvB,WAAW,EAAE,EAAE,CAAC,WAAW,GAC1B,OAAO,CAGT;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,EAAE,CAAC,cAAc,EACvB,WAAW,EAAE,EAAE,CAAC,WAAW,GAC1B,OAAO,CAGT;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,EAAE,CAAC,cAAc,EACvB,WAAW,EAAE,EAAE,CAAC,WAAW,GAC1B,OAAO,CAGT;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,EAAE,CAAC,cAAc,EACvB,WAAW,EAAE,EAAE,CAAC,WAAW,GAC1B,OAAO,CAGT"}
@@ -0,0 +1,338 @@
1
+ /**
2
+ * @justscale/typescript - Primitive Detection
3
+ *
4
+ * Uses TypeScript's type system to detect process primitives (signal, delay, race)
5
+ * rather than simple string matching. This handles:
6
+ * - Renamed imports (import { signal as s })
7
+ * - Re-exports from other modules
8
+ * - Complex expressions
9
+ */
10
+ import ts from 'typescript';
11
+ /** Known delay unit methods */
12
+ const DELAY_UNITS = new Set(['seconds', 'minutes', 'hours', 'days']);
13
+ /** Known signal combinator methods */
14
+ const SIGNAL_COMBINATORS = new Set(['all', 'settled']);
15
+ /** The module we're looking for primitives from */
16
+ const PROCESS_MODULE = '@justscale/core/process';
17
+ /**
18
+ * Check if a call expression is a process primitive call.
19
+ * Uses the type checker to resolve the actual symbol being called.
20
+ */
21
+ export function getPrimitiveCall(node, typeChecker) {
22
+ const callee = node.expression;
23
+ // Check for delay.xxx() pattern (property access: delay.minutes, delay.hours, etc.)
24
+ if (ts.isPropertyAccessExpression(callee)) {
25
+ const delayResult = checkDelayPropertyAccess(callee, node, typeChecker);
26
+ if (delayResult)
27
+ return delayResult;
28
+ // Check for signal.all() or signal.settled() pattern
29
+ const signalCombinatorResult = checkSignalCombinatorCall(callee, node, typeChecker);
30
+ if (signalCombinatorResult)
31
+ return signalCombinatorResult;
32
+ }
33
+ // Get the symbol of the function being called
34
+ const symbol = typeChecker.getSymbolAtLocation(callee);
35
+ if (!symbol) {
36
+ // Fallback: try identifier matching for cases where type checker fails
37
+ return getPrimitiveCallByName(node);
38
+ }
39
+ // Follow aliases to get the original symbol
40
+ const originalSymbol = symbol.flags & ts.SymbolFlags.Alias
41
+ ? typeChecker.getAliasedSymbol(symbol)
42
+ : symbol;
43
+ // Check if the symbol is declared in @justscale/core/process
44
+ const declarations = originalSymbol.getDeclarations();
45
+ if (!declarations || declarations.length === 0) {
46
+ return getPrimitiveCallByName(node);
47
+ }
48
+ // Check if any declaration is from the process module
49
+ const isFromProcessModule = declarations.some(decl => {
50
+ const sourceFile = decl.getSourceFile();
51
+ const fileName = sourceFile.fileName;
52
+ // Check if it's from @justscale/core/process
53
+ return (fileName.includes('@justscale/core/process') ||
54
+ fileName.includes('justscale/process') ||
55
+ // Also check the module specifier in imports
56
+ isImportedFromProcessModule(decl, typeChecker));
57
+ });
58
+ if (!isFromProcessModule) {
59
+ return getPrimitiveCallByName(node);
60
+ }
61
+ // Get the primitive name
62
+ const primitiveName = originalSymbol.getName();
63
+ if (primitiveName === 'signal' || primitiveName === 'waitFor') {
64
+ return { kind: 'signal', node };
65
+ }
66
+ if (primitiveName === 'race') {
67
+ return { kind: 'race', node };
68
+ }
69
+ if (primitiveName === 'stream') {
70
+ return { kind: 'stream', node };
71
+ }
72
+ if (primitiveName === 'scope') {
73
+ return { kind: 'scope', node };
74
+ }
75
+ return null;
76
+ }
77
+ /**
78
+ * Check for delay.xxx() pattern (delay.seconds, delay.minutes, etc.)
79
+ */
80
+ function checkDelayPropertyAccess(callee, node, typeChecker) {
81
+ const methodName = callee.name.text;
82
+ // Check if method is a valid delay unit
83
+ if (!DELAY_UNITS.has(methodName)) {
84
+ return null;
85
+ }
86
+ const obj = callee.expression;
87
+ // Try type-based detection first
88
+ const symbol = typeChecker.getSymbolAtLocation(obj);
89
+ if (symbol) {
90
+ const originalSymbol = symbol.flags & ts.SymbolFlags.Alias
91
+ ? typeChecker.getAliasedSymbol(symbol)
92
+ : symbol;
93
+ const declarations = originalSymbol.getDeclarations();
94
+ if (declarations && declarations.length > 0) {
95
+ const isFromProcessModule = declarations.some(decl => {
96
+ const sourceFile = decl.getSourceFile();
97
+ const fileName = sourceFile.fileName;
98
+ return (fileName.includes('@justscale/core/process') ||
99
+ fileName.includes('justscale/process') ||
100
+ isImportedFromProcessModule(decl, typeChecker));
101
+ });
102
+ if (isFromProcessModule && originalSymbol.getName() === 'delay') {
103
+ return {
104
+ kind: 'delay',
105
+ node,
106
+ delayUnit: methodName,
107
+ };
108
+ }
109
+ }
110
+ }
111
+ // Fallback: check by identifier name
112
+ if (ts.isIdentifier(obj) && obj.text === 'delay') {
113
+ return {
114
+ kind: 'delay',
115
+ node,
116
+ delayUnit: methodName,
117
+ };
118
+ }
119
+ return null;
120
+ }
121
+ /**
122
+ * Check for signal.all() or signal.settled() pattern.
123
+ */
124
+ function checkSignalCombinatorCall(callee, node, typeChecker) {
125
+ const methodName = callee.name.text;
126
+ // Check if method is a valid signal combinator
127
+ if (!SIGNAL_COMBINATORS.has(methodName)) {
128
+ return null;
129
+ }
130
+ const obj = callee.expression;
131
+ // Determine if it's object form or array form by looking at the first argument
132
+ let isObjectForm = false;
133
+ const args = node.arguments;
134
+ if (args.length > 0) {
135
+ const firstArg = args[0];
136
+ // If first arg is an object literal, it's object form
137
+ // If first arg is array literal, it's array form
138
+ isObjectForm = ts.isObjectLiteralExpression(firstArg);
139
+ }
140
+ // Try type-based detection first
141
+ const symbol = typeChecker.getSymbolAtLocation(obj);
142
+ if (symbol) {
143
+ const originalSymbol = symbol.flags & ts.SymbolFlags.Alias
144
+ ? typeChecker.getAliasedSymbol(symbol)
145
+ : symbol;
146
+ const declarations = originalSymbol.getDeclarations();
147
+ if (declarations && declarations.length > 0) {
148
+ const isFromProcessModule = declarations.some(decl => {
149
+ const sourceFile = decl.getSourceFile();
150
+ const fileName = sourceFile.fileName;
151
+ return (fileName.includes('@justscale/core/process') ||
152
+ fileName.includes('justscale/process') ||
153
+ isImportedFromProcessModule(decl, typeChecker));
154
+ });
155
+ if (isFromProcessModule && originalSymbol.getName() === 'signal') {
156
+ return {
157
+ kind: methodName === 'all' ? 'signal.all' : 'signal.settled',
158
+ node,
159
+ isObjectForm,
160
+ };
161
+ }
162
+ }
163
+ }
164
+ // Fallback: check by identifier name
165
+ if (ts.isIdentifier(obj) && obj.text === 'signal') {
166
+ return {
167
+ kind: methodName === 'all' ? 'signal.all' : 'signal.settled',
168
+ node,
169
+ isObjectForm,
170
+ };
171
+ }
172
+ return null;
173
+ }
174
+ /**
175
+ * Fallback: Check by identifier name when type checker can't resolve.
176
+ * This handles cases in isolated compilation where full type info isn't available.
177
+ */
178
+ function getPrimitiveCallByName(node) {
179
+ const callee = node.expression;
180
+ // Check for delay.xxx() pattern
181
+ if (ts.isPropertyAccessExpression(callee)) {
182
+ const methodName = callee.name.text;
183
+ if (DELAY_UNITS.has(methodName) && ts.isIdentifier(callee.expression) && callee.expression.text === 'delay') {
184
+ return {
185
+ kind: 'delay',
186
+ node,
187
+ delayUnit: methodName,
188
+ };
189
+ }
190
+ // Check for signal.all() / signal.settled() pattern
191
+ if (SIGNAL_COMBINATORS.has(methodName) && ts.isIdentifier(callee.expression) && callee.expression.text === 'signal') {
192
+ let isObjectForm = false;
193
+ if (node.arguments.length > 0) {
194
+ isObjectForm = ts.isObjectLiteralExpression(node.arguments[0]);
195
+ }
196
+ return {
197
+ kind: methodName === 'all' ? 'signal.all' : 'signal.settled',
198
+ node,
199
+ isObjectForm,
200
+ };
201
+ }
202
+ }
203
+ if (ts.isIdentifier(callee)) {
204
+ const name = callee.text;
205
+ if (name === 'signal' || name === 'waitFor') {
206
+ return { kind: 'signal', node };
207
+ }
208
+ if (name === 'race') {
209
+ return { kind: 'race', node };
210
+ }
211
+ if (name === 'stream') {
212
+ return { kind: 'stream', node };
213
+ }
214
+ if (name === 'scope') {
215
+ return { kind: 'scope', node };
216
+ }
217
+ }
218
+ return null;
219
+ }
220
+ /**
221
+ * Check if a declaration is imported from the process module.
222
+ */
223
+ function isImportedFromProcessModule(decl, _typeChecker) {
224
+ // Walk up to find the import declaration
225
+ let node = decl;
226
+ while (node && !ts.isSourceFile(node)) {
227
+ if (ts.isImportDeclaration(node)) {
228
+ const moduleSpecifier = node.moduleSpecifier;
229
+ if (ts.isStringLiteral(moduleSpecifier)) {
230
+ return moduleSpecifier.text === PROCESS_MODULE;
231
+ }
232
+ }
233
+ node = node.parent;
234
+ }
235
+ return false;
236
+ }
237
+ /**
238
+ * Check if an expression contains any suspension points (await on primitives).
239
+ * This is a deep check that handles:
240
+ * - Direct: await signal(x)
241
+ * - Nested: const { a } = await signal(x)
242
+ * - Complex: (await signal(x)).value + (await signal(y)).value
243
+ */
244
+ export function containsSuspensionPoint(expr, typeChecker) {
245
+ let found = false;
246
+ const visit = (node) => {
247
+ if (found)
248
+ return;
249
+ // Check for await expressions
250
+ if (ts.isAwaitExpression(node)) {
251
+ const inner = node.expression;
252
+ // Direct call: await signal(x), await signal.all([...]), etc.
253
+ if (ts.isCallExpression(inner)) {
254
+ const primitive = getPrimitiveCall(inner, typeChecker);
255
+ if (primitive && (primitive.kind === 'signal' ||
256
+ primitive.kind === 'delay' ||
257
+ primitive.kind === 'signal.all' ||
258
+ primitive.kind === 'signal.settled' ||
259
+ primitive.kind === 'scope')) {
260
+ found = true;
261
+ return;
262
+ }
263
+ }
264
+ }
265
+ // Recurse into children
266
+ ts.forEachChild(node, visit);
267
+ };
268
+ visit(expr);
269
+ return found;
270
+ }
271
+ /**
272
+ * Find all await expressions on primitives within an expression.
273
+ * Returns them in order of appearance.
274
+ */
275
+ export function findSuspensionPoints(expr, typeChecker) {
276
+ const results = [];
277
+ const visit = (node) => {
278
+ if (ts.isAwaitExpression(node)) {
279
+ const inner = node.expression;
280
+ if (ts.isCallExpression(inner)) {
281
+ const primitive = getPrimitiveCall(inner, typeChecker);
282
+ if (primitive && (primitive.kind === 'signal' ||
283
+ primitive.kind === 'delay' ||
284
+ primitive.kind === 'signal.all' ||
285
+ primitive.kind === 'signal.settled' ||
286
+ primitive.kind === 'scope')) {
287
+ results.push({ await: node, primitive });
288
+ }
289
+ }
290
+ }
291
+ ts.forEachChild(node, visit);
292
+ };
293
+ visit(expr);
294
+ return results;
295
+ }
296
+ /**
297
+ * Check if an expression is a signal.all() or signal.settled() call.
298
+ */
299
+ export function isSignalCombinatorCall(node, typeChecker) {
300
+ const primitive = getPrimitiveCall(node, typeChecker);
301
+ return primitive?.kind === 'signal.all' || primitive?.kind === 'signal.settled';
302
+ }
303
+ /**
304
+ * Check if an expression is a race() call.
305
+ */
306
+ export function isRaceCall(node, typeChecker) {
307
+ const primitive = getPrimitiveCall(node, typeChecker);
308
+ return primitive?.kind === 'race';
309
+ }
310
+ /**
311
+ * Check if an expression is a signal() or waitFor() call.
312
+ */
313
+ export function isSignalCall(node, typeChecker) {
314
+ const primitive = getPrimitiveCall(node, typeChecker);
315
+ return primitive?.kind === 'signal';
316
+ }
317
+ /**
318
+ * Check if an expression is a delay() call.
319
+ */
320
+ export function isDelayCall(node, typeChecker) {
321
+ const primitive = getPrimitiveCall(node, typeChecker);
322
+ return primitive?.kind === 'delay';
323
+ }
324
+ /**
325
+ * Check if an expression is a scope() call.
326
+ */
327
+ export function isScopeCall(node, typeChecker) {
328
+ const primitive = getPrimitiveCall(node, typeChecker);
329
+ return primitive?.kind === 'scope';
330
+ }
331
+ /**
332
+ * Check if an expression is a stream() call.
333
+ */
334
+ export function isStreamCall(node, typeChecker) {
335
+ const primitive = getPrimitiveCall(node, typeChecker);
336
+ return primitive?.kind === 'stream';
337
+ }
338
+ //# sourceMappingURL=primitive-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitive-detector.js","sourceRoot":"","sources":["../../src/compiler/primitive-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * ptsc - Process TypeScript Compiler
4
+ *
5
+ * Drop-in replacement for tsc that compiles JustScale durable processes.
6
+ * Supports all tsc command-line options and behaviors.
7
+ *
8
+ * Features:
9
+ * - Full tsc CLI compatibility (all options work identically)
10
+ * - Process diagnostics (TSPxxxx error codes)
11
+ * - Transforms createProcess() calls into opcode-based execution
12
+ * - Supports project references with -b mode
13
+ * - Watch mode support
14
+ * - Custom justscale section in tsconfig.json
15
+ *
16
+ * Usage (exactly like tsc):
17
+ * ptsc # Compile using nearest tsconfig.json
18
+ * ptsc --noEmit # Type check only
19
+ * ptsc -p tsconfig.json # Use specific config
20
+ * ptsc -b tsconfig.build.json # Build mode with project references
21
+ * ptsc --watch # Watch mode
22
+ * ptsc --init # Initialize a new tsconfig.json
23
+ * ptsc --help # Show help
24
+ * ptsc --version # Show version
25
+ * ptsc file.ts # Compile a single file
26
+ *
27
+ * JustScale-specific options (via tsconfig.json):
28
+ * ```json
29
+ * {
30
+ * "compilerOptions": { ... },
31
+ * "justscale": {
32
+ * "processFilePattern": "*.process.ts",
33
+ * "strict": true,
34
+ * "verbose": false
35
+ * }
36
+ * }
37
+ * ```
38
+ */
39
+ import '../plugins/index.js';
40
+ //# sourceMappingURL=ptsc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ptsc.d.ts","sourceRoot":"","sources":["../../src/compiler/ptsc.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAUH,OAAO,qBAAqB,CAAC"}