@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.
- package/LICENSE +21 -0
- package/README.md +128 -0
- package/dist/api.d.ts +144 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +380 -0
- package/dist/api.js.map +1 -0
- package/dist/compiler/analyzer.d.ts +247 -0
- package/dist/compiler/analyzer.d.ts.map +1 -0
- package/dist/compiler/analyzer.js +3201 -0
- package/dist/compiler/analyzer.js.map +1 -0
- package/dist/compiler/cli.d.ts +12 -0
- package/dist/compiler/cli.d.ts.map +1 -0
- package/dist/compiler/cli.js +209 -0
- package/dist/compiler/cli.js.map +1 -0
- package/dist/compiler/compile.d.ts +26 -0
- package/dist/compiler/compile.d.ts.map +1 -0
- package/dist/compiler/compile.js +121 -0
- package/dist/compiler/compile.js.map +1 -0
- package/dist/compiler/errors.d.ts +336 -0
- package/dist/compiler/errors.d.ts.map +1 -0
- package/dist/compiler/errors.js +466 -0
- package/dist/compiler/errors.js.map +1 -0
- package/dist/compiler/exports-prepass.d.ts +31 -0
- package/dist/compiler/exports-prepass.d.ts.map +1 -0
- package/dist/compiler/exports-prepass.js +249 -0
- package/dist/compiler/exports-prepass.js.map +1 -0
- package/dist/compiler/hmr-change-detector.d.ts +47 -0
- package/dist/compiler/hmr-change-detector.d.ts.map +1 -0
- package/dist/compiler/hmr-change-detector.js +395 -0
- package/dist/compiler/hmr-change-detector.js.map +1 -0
- package/dist/compiler/hmr-transformer.d.ts +54 -0
- package/dist/compiler/hmr-transformer.d.ts.map +1 -0
- package/dist/compiler/hmr-transformer.js +535 -0
- package/dist/compiler/hmr-transformer.js.map +1 -0
- package/dist/compiler/index.d.ts +19 -0
- package/dist/compiler/index.d.ts.map +1 -0
- package/dist/compiler/index.js +16 -0
- package/dist/compiler/index.js.map +1 -0
- package/dist/compiler/primitive-detector.d.ts +70 -0
- package/dist/compiler/primitive-detector.d.ts.map +1 -0
- package/dist/compiler/primitive-detector.js +338 -0
- package/dist/compiler/primitive-detector.js.map +1 -0
- package/dist/compiler/ptsc.d.ts +40 -0
- package/dist/compiler/ptsc.d.ts.map +1 -0
- package/dist/compiler/ptsc.js +462 -0
- package/dist/compiler/ptsc.js.map +1 -0
- package/dist/compiler/rewriter.d.ts +96 -0
- package/dist/compiler/rewriter.d.ts.map +1 -0
- package/dist/compiler/rewriter.js +418 -0
- package/dist/compiler/rewriter.js.map +1 -0
- package/dist/compiler/step-hash.d.ts +43 -0
- package/dist/compiler/step-hash.d.ts.map +1 -0
- package/dist/compiler/step-hash.js +83 -0
- package/dist/compiler/step-hash.js.map +1 -0
- package/dist/compiler/switch-codegen.d.ts +84 -0
- package/dist/compiler/switch-codegen.d.ts.map +1 -0
- package/dist/compiler/switch-codegen.js +1540 -0
- package/dist/compiler/switch-codegen.js.map +1 -0
- package/dist/compiler/transformer.d.ts +29 -0
- package/dist/compiler/transformer.d.ts.map +1 -0
- package/dist/compiler/transformer.js +216 -0
- package/dist/compiler/transformer.js.map +1 -0
- package/dist/config/index.d.ts +122 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +215 -0
- package/dist/config/index.js.map +1 -0
- package/dist/di-errors/formatter.d.ts +126 -0
- package/dist/di-errors/formatter.d.ts.map +1 -0
- package/dist/di-errors/formatter.js +384 -0
- package/dist/di-errors/formatter.js.map +1 -0
- package/dist/di-errors/index.d.ts +5 -0
- package/dist/di-errors/index.d.ts.map +1 -0
- package/dist/di-errors/index.js +13 -0
- package/dist/di-errors/index.js.map +1 -0
- package/dist/editor.d.ts +11 -0
- package/dist/editor.d.ts.map +1 -0
- package/dist/editor.js +2 -0
- package/dist/editor.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/language-service/index.d.ts +52 -0
- package/dist/language-service/index.d.ts.map +1 -0
- package/dist/language-service/index.js +366 -0
- package/dist/language-service/index.js.map +1 -0
- package/dist/language-service/process-quick-fixes.d.ts +20 -0
- package/dist/language-service/process-quick-fixes.d.ts.map +1 -0
- package/dist/language-service/process-quick-fixes.js +114 -0
- package/dist/language-service/process-quick-fixes.js.map +1 -0
- package/dist/language-service/quick-fix-discovery.d.ts +39 -0
- package/dist/language-service/quick-fix-discovery.d.ts.map +1 -0
- package/dist/language-service/quick-fix-discovery.js +124 -0
- package/dist/language-service/quick-fix-discovery.js.map +1 -0
- package/dist/loader/incremental.d.ts +50 -0
- package/dist/loader/incremental.d.ts.map +1 -0
- package/dist/loader/incremental.js +151 -0
- package/dist/loader/incremental.js.map +1 -0
- package/dist/loader/index.d.ts +25 -0
- package/dist/loader/index.d.ts.map +1 -0
- package/dist/loader/index.js +24 -0
- package/dist/loader/index.js.map +1 -0
- package/dist/loader/loader.d.ts +52 -0
- package/dist/loader/loader.d.ts.map +1 -0
- package/dist/loader/loader.js +248 -0
- package/dist/loader/loader.js.map +1 -0
- package/dist/loader/register.d.ts +14 -0
- package/dist/loader/register.d.ts.map +1 -0
- package/dist/loader/register.js +20 -0
- package/dist/loader/register.js.map +1 -0
- package/dist/plugins/index.d.ts +13 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +13 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/index.public.d.ts +13 -0
- package/dist/plugins/index.public.d.ts.map +1 -0
- package/dist/plugins/index.public.js +13 -0
- package/dist/plugins/index.public.js.map +1 -0
- package/dist/plugins/types.d.ts +83 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +24 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/server/index.d.ts +33 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +42 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/tsserver.d.ts +28 -0
- package/dist/server/tsserver.d.ts.map +1 -0
- package/dist/server/tsserver.js +126 -0
- package/dist/server/tsserver.js.map +1 -0
- package/lib/lib.d.ts +20 -0
- package/lib/lib.decorators.d.ts +382 -0
- package/lib/lib.decorators.legacy.d.ts +20 -0
- package/lib/lib.dom.asynciterable.d.ts +18 -0
- package/lib/lib.dom.d.ts +45125 -0
- package/lib/lib.dom.iterable.d.ts +18 -0
- package/lib/lib.es2015.collection.d.ts +150 -0
- package/lib/lib.es2015.core.d.ts +595 -0
- package/lib/lib.es2015.d.ts +26 -0
- package/lib/lib.es2015.generator.d.ts +75 -0
- package/lib/lib.es2015.iterable.d.ts +603 -0
- package/lib/lib.es2015.promise.d.ts +79 -0
- package/lib/lib.es2015.proxy.d.ts +126 -0
- package/lib/lib.es2015.reflect.d.ts +142 -0
- package/lib/lib.es2015.symbol.d.ts +44 -0
- package/lib/lib.es2015.symbol.wellknown.d.ts +324 -0
- package/lib/lib.es2016.array.include.d.ts +114 -0
- package/lib/lib.es2016.d.ts +19 -0
- package/lib/lib.es2016.full.d.ts +21 -0
- package/lib/lib.es2016.intl.d.ts +29 -0
- package/lib/lib.es2017.arraybuffer.d.ts +19 -0
- package/lib/lib.es2017.d.ts +24 -0
- package/lib/lib.es2017.date.d.ts +29 -0
- package/lib/lib.es2017.full.d.ts +21 -0
- package/lib/lib.es2017.intl.d.ts +42 -0
- package/lib/lib.es2017.object.d.ts +47 -0
- package/lib/lib.es2017.sharedmemory.d.ts +133 -0
- package/lib/lib.es2017.string.d.ts +43 -0
- package/lib/lib.es2017.typedarrays.d.ts +51 -0
- package/lib/lib.es2018.asyncgenerator.d.ts +75 -0
- package/lib/lib.es2018.asynciterable.d.ts +51 -0
- package/lib/lib.es2018.d.ts +22 -0
- package/lib/lib.es2018.full.d.ts +22 -0
- package/lib/lib.es2018.intl.d.ts +81 -0
- package/lib/lib.es2018.promise.d.ts +28 -0
- package/lib/lib.es2018.regexp.d.ts +35 -0
- package/lib/lib.es2019.array.d.ts +77 -0
- package/lib/lib.es2019.d.ts +22 -0
- package/lib/lib.es2019.full.d.ts +22 -0
- package/lib/lib.es2019.intl.d.ts +21 -0
- package/lib/lib.es2019.object.d.ts +31 -0
- package/lib/lib.es2019.string.d.ts +35 -0
- package/lib/lib.es2019.symbol.d.ts +22 -0
- package/lib/lib.es2020.bigint.d.ts +763 -0
- package/lib/lib.es2020.d.ts +25 -0
- package/lib/lib.es2020.date.d.ts +40 -0
- package/lib/lib.es2020.full.d.ts +22 -0
- package/lib/lib.es2020.intl.d.ts +472 -0
- package/lib/lib.es2020.number.d.ts +26 -0
- package/lib/lib.es2020.promise.d.ts +45 -0
- package/lib/lib.es2020.sharedmemory.d.ts +97 -0
- package/lib/lib.es2020.string.d.ts +42 -0
- package/lib/lib.es2020.symbol.wellknown.d.ts +39 -0
- package/lib/lib.es2021.d.ts +21 -0
- package/lib/lib.es2021.full.d.ts +22 -0
- package/lib/lib.es2021.intl.d.ts +164 -0
- package/lib/lib.es2021.promise.d.ts +46 -0
- package/lib/lib.es2021.string.d.ts +31 -0
- package/lib/lib.es2021.weakref.d.ts +76 -0
- package/lib/lib.es2022.array.d.ts +119 -0
- package/lib/lib.es2022.d.ts +23 -0
- package/lib/lib.es2022.error.d.ts +73 -0
- package/lib/lib.es2022.full.d.ts +22 -0
- package/lib/lib.es2022.intl.d.ts +143 -0
- package/lib/lib.es2022.object.d.ts +24 -0
- package/lib/lib.es2022.regexp.d.ts +37 -0
- package/lib/lib.es2022.string.d.ts +23 -0
- package/lib/lib.es2023.array.d.ts +922 -0
- package/lib/lib.es2023.collection.d.ts +19 -0
- package/lib/lib.es2023.d.ts +20 -0
- package/lib/lib.es2023.full.d.ts +22 -0
- package/lib/lib.es2023.intl.d.ts +62 -0
- package/lib/lib.es2024.arraybuffer.d.ts +63 -0
- package/lib/lib.es2024.collection.d.ts +27 -0
- package/lib/lib.es2024.d.ts +24 -0
- package/lib/lib.es2024.full.d.ts +22 -0
- package/lib/lib.es2024.object.d.ts +27 -0
- package/lib/lib.es2024.promise.d.ts +33 -0
- package/lib/lib.es2024.regexp.d.ts +23 -0
- package/lib/lib.es2024.sharedmemory.d.ts +66 -0
- package/lib/lib.es2024.string.d.ts +27 -0
- package/lib/lib.es2025.collection.d.ts +94 -0
- package/lib/lib.es2025.d.ts +23 -0
- package/lib/lib.es2025.float16.d.ts +443 -0
- package/lib/lib.es2025.full.d.ts +22 -0
- package/lib/lib.es2025.intl.d.ts +200 -0
- package/lib/lib.es2025.iterator.d.ts +146 -0
- package/lib/lib.es2025.promise.d.ts +32 -0
- package/lib/lib.es2025.regexp.d.ts +30 -0
- package/lib/lib.es5.d.ts +4599 -0
- package/lib/lib.es6.d.ts +21 -0
- package/lib/lib.esnext.array.d.ts +33 -0
- package/lib/lib.esnext.collection.d.ts +47 -0
- package/lib/lib.esnext.d.ts +27 -0
- package/lib/lib.esnext.date.d.ts +21 -0
- package/lib/lib.esnext.decorators.d.ts +26 -0
- package/lib/lib.esnext.disposable.d.ts +191 -0
- package/lib/lib.esnext.error.d.ts +22 -0
- package/lib/lib.esnext.full.d.ts +22 -0
- package/lib/lib.esnext.intl.d.ts +107 -0
- package/lib/lib.esnext.sharedmemory.d.ts +23 -0
- package/lib/lib.esnext.temporal.d.ts +485 -0
- package/lib/lib.esnext.typedarrays.d.ts +90 -0
- package/lib/lib.scripthost.d.ts +320 -0
- package/lib/lib.webworker.asynciterable.d.ts +18 -0
- package/lib/lib.webworker.d.ts +15606 -0
- package/lib/lib.webworker.importscripts.d.ts +21 -0
- package/lib/lib.webworker.iterable.d.ts +18 -0
- package/lib/logger.js +144 -0
- package/lib/package.json +7 -0
- package/lib/tsserver.js +57 -0
- package/lib/tsserverlibrary.js +171 -0
- package/lib/typesMap.json +497 -0
- package/lib/typescript.js +373 -0
- 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"}
|