@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,462 @@
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 ts from 'typescript';
40
+ import { resolve, dirname, basename, join, relative, sep } from 'node:path';
41
+ import { writeFileSync, existsSync } from 'node:fs';
42
+ import { analyzeHandler } from './analyzer.js';
43
+ import { filterUsingExportsDiagnostics } from './errors.js';
44
+ import { createProcessTransformer } from './transformer.js';
45
+ import { extractAndInjectExportsTypes, createModifiedHost } from './exports-prepass.js';
46
+ import { parseConfig, defaultConfig } from '../config/index.js';
47
+ import '../plugins/index.js';
48
+ import { getPlugins } from '../plugins/types.js';
49
+ // Version from package.json
50
+ const VERSION = '0.1.0';
51
+ // Parse command line arguments
52
+ const args = process.argv.slice(2);
53
+ // Handle --version
54
+ if (args.includes('--version') || args.includes('-v')) {
55
+ console.log(`ptsc Version ${VERSION}`);
56
+ console.log(`TypeScript ${ts.version}`);
57
+ process.exit(0);
58
+ }
59
+ // Handle --help
60
+ if (args.includes('--help') || args.includes('-h') || args.includes('-?')) {
61
+ printHelp();
62
+ process.exit(0);
63
+ }
64
+ // Handle --init
65
+ if (args.includes('--init')) {
66
+ initConfig();
67
+ process.exit(0);
68
+ }
69
+ // Normalize -b/--build to --project - same compile pipeline, just a different flag name.
70
+ // tsc treats -b specially (incremental, project references) but our pipeline handles
71
+ // all of that through the standard path with proto/process transforms.
72
+ const buildModeIndex = args.findIndex((arg) => arg === '-b' || arg === '--build');
73
+ if (buildModeIndex !== -1) {
74
+ args[buildModeIndex] = '--project';
75
+ }
76
+ // Parse command line using TypeScript's parser
77
+ const parsedCommandLine = ts.parseCommandLine(args);
78
+ if (parsedCommandLine.errors.length > 0) {
79
+ console.error(ts.formatDiagnosticsWithColorAndContext(parsedCommandLine.errors, formatHost()));
80
+ process.exit(1);
81
+ }
82
+ // Find tsconfig
83
+ let configPath;
84
+ if (parsedCommandLine.options.project) {
85
+ configPath = resolve(parsedCommandLine.options.project);
86
+ }
87
+ else if (parsedCommandLine.fileNames.length === 0) {
88
+ // No files specified, look for tsconfig
89
+ configPath = ts.findConfigFile(process.cwd(), ts.sys.fileExists, 'tsconfig.json');
90
+ }
91
+ // If we have a config, parse it
92
+ let parsedConfig;
93
+ let justscaleConfig = { ...defaultConfig };
94
+ if (configPath) {
95
+ if (!existsSync(configPath)) {
96
+ console.error(`error TS6053: File '${configPath}' not found.`);
97
+ process.exit(1);
98
+ }
99
+ parsedConfig = parseConfig(configPath, parsedCommandLine.options);
100
+ if (parsedConfig.errors.length > 0) {
101
+ console.error(ts.formatDiagnosticsWithColorAndContext(parsedConfig.errors, formatHost()));
102
+ process.exit(1);
103
+ }
104
+ justscaleConfig = parsedConfig.justscale;
105
+ }
106
+ else if (parsedCommandLine.fileNames.length > 0) {
107
+ // Compile specific files without tsconfig
108
+ parsedConfig = {
109
+ compilerOptions: {
110
+ ...parsedCommandLine.options,
111
+ // Default options for standalone compilation
112
+ target: parsedCommandLine.options.target ?? ts.ScriptTarget.ES2022,
113
+ module: parsedCommandLine.options.module ?? ts.ModuleKind.NodeNext,
114
+ moduleResolution: parsedCommandLine.options.moduleResolution ?? ts.ModuleResolutionKind.NodeNext,
115
+ },
116
+ fileNames: parsedCommandLine.fileNames,
117
+ justscale: defaultConfig,
118
+ configFilePath: '',
119
+ errors: [],
120
+ };
121
+ }
122
+ else {
123
+ console.error('error: Cannot find tsconfig.json');
124
+ process.exit(1);
125
+ }
126
+ if (parsedConfig.compilerOptions.watch) {
127
+ runWatchMode(configPath, parsedConfig);
128
+ }
129
+ else {
130
+ const exitCode = runBuild(parsedConfig, justscaleConfig);
131
+ process.exit(exitCode);
132
+ }
133
+ function runBuild(config, jsConfig) {
134
+ const verbose = jsConfig.verbose;
135
+ if (verbose) {
136
+ console.log(`Compiling ${config.fileNames.length} file(s)...`);
137
+ }
138
+ const baseDir = config.configFilePath ? dirname(config.configFilePath) : process.cwd();
139
+ const plugins = getPlugins();
140
+ // Create one resolver per plugin
141
+ const pluginResolvers = plugins.map(plugin => plugin.createResolver({
142
+ baseDir,
143
+ sourceMapMode: 'external',
144
+ }));
145
+ // Chain compiler hosts: each plugin wraps the previous host
146
+ const combinedHost = plugins.reduce((prevHost, plugin, i) => plugin.createAwareCompilerHost(config.compilerOptions, pluginResolvers[i], prevHost), undefined) ?? ts.createCompilerHost(config.compilerOptions);
147
+ const program1 = ts.createProgram({
148
+ rootNames: config.fileNames,
149
+ options: config.compilerOptions,
150
+ projectReferences: config.projectReferences,
151
+ host: combinedHost,
152
+ });
153
+ // Two-pass: extract `using exports` types, inject __exportsType, re-create program.
154
+ // TypeScript infers TExports correctly from the phantom property; oldProgram reuses unchanged files.
155
+ const modifiedSources = extractAndInjectExportsTypes(program1);
156
+ let program;
157
+ if (modifiedSources.size > 0) {
158
+ const host2 = createModifiedHost(combinedHost, modifiedSources);
159
+ program = ts.createProgram({
160
+ rootNames: config.fileNames,
161
+ options: config.compilerOptions,
162
+ projectReferences: config.projectReferences,
163
+ host: host2,
164
+ oldProgram: program1,
165
+ });
166
+ if (verbose) {
167
+ console.log(`[ptsc] Re-parsed ${modifiedSources.size} file(s) with injected export types`);
168
+ }
169
+ }
170
+ else {
171
+ program = program1;
172
+ }
173
+ const pluginDiagnostics = plugins.map(() => []);
174
+ const diagnostics = filterUsingExportsDiagnostics([
175
+ ...program.getConfigFileParsingDiagnostics(),
176
+ ...program.getSyntacticDiagnostics(),
177
+ ...program.getOptionsDiagnostics(),
178
+ ...program.getGlobalDiagnostics(),
179
+ ...program.getSemanticDiagnostics(),
180
+ ]);
181
+ const processDiagnostics = getProcessDiagnostics(program, jsConfig);
182
+ const allDiagnostics = [...diagnostics, ...processDiagnostics];
183
+ if (allDiagnostics.length > 0) {
184
+ console.log(ts.formatDiagnosticsWithColorAndContext(allDiagnostics, formatHost()));
185
+ }
186
+ if (!config.compilerOptions.noEmit) {
187
+ // Clear emitted-file maps before fresh emit
188
+ plugins.forEach((plugin, i) => plugin.clearEmittedFiles(pluginResolvers[i]));
189
+ const pluginTransformers = plugins.map((plugin, i) => plugin.createTransformer(program, pluginResolvers[i], pluginDiagnostics[i]));
190
+ const emitResult = program.emit(undefined, // targetSourceFile - emit all files
191
+ undefined, // writeFile - use default
192
+ undefined, // cancellationToken
193
+ undefined, // emitOnlyDtsFiles
194
+ {
195
+ before: [
196
+ createProcessTransformer(program, { verbose: verbose ?? false }),
197
+ ...pluginTransformers,
198
+ ],
199
+ });
200
+ allDiagnostics.push(...emitResult.diagnostics);
201
+ pluginDiagnostics.forEach(diags => allDiagnostics.push(...diags));
202
+ const outDir = config.compilerOptions.outDir;
203
+ const rootDir = config.compilerOptions.rootDir;
204
+ // Helper to ensure directory exists
205
+ const mkdirp = (p) => {
206
+ const parent = dirname(p);
207
+ if (!existsSync(parent))
208
+ mkdirp(parent);
209
+ if (!existsSync(p))
210
+ ts.sys.createDirectory(p);
211
+ };
212
+ for (let i = 0; i < plugins.length; i++) {
213
+ const emittedFiles = plugins[i].getEmittedFiles(pluginResolvers[i]);
214
+ for (const [filePath, content] of emittedFiles) {
215
+ let outputPath = filePath;
216
+ if (outDir) {
217
+ if (rootDir) {
218
+ const relativePath = relative(rootDir, filePath);
219
+ outputPath = join(outDir, relativePath);
220
+ }
221
+ else {
222
+ outputPath = join(outDir, basename(filePath));
223
+ }
224
+ const canonicalOutDir = resolve(outDir);
225
+ const canonicalOutPath = resolve(outputPath);
226
+ if (canonicalOutPath !== canonicalOutDir && !canonicalOutPath.startsWith(canonicalOutDir + sep)) {
227
+ throw new Error(`Refusing to emit ${filePath}: resolved output ${canonicalOutPath} escapes outDir ${canonicalOutDir}`);
228
+ }
229
+ }
230
+ const dir = dirname(outputPath);
231
+ if (!existsSync(dir))
232
+ mkdirp(dir);
233
+ ts.sys.writeFile(outputPath, content);
234
+ if (verbose) {
235
+ console.log(` Emitted: ${outputPath}`);
236
+ }
237
+ }
238
+ }
239
+ }
240
+ else {
241
+ const pluginTransformers = plugins.map((plugin, i) => plugin.createTransformer(program, pluginResolvers[i], pluginDiagnostics[i]));
242
+ for (const sourceFile of program.getSourceFiles()) {
243
+ if (!sourceFile.isDeclarationFile) {
244
+ ts.transform(sourceFile, pluginTransformers);
245
+ }
246
+ }
247
+ pluginDiagnostics.forEach(diags => allDiagnostics.push(...diags));
248
+ }
249
+ const schemaDiagnostics = pluginDiagnostics.flat();
250
+ if (schemaDiagnostics.length > 0) {
251
+ console.log(ts.formatDiagnosticsWithColorAndContext(schemaDiagnostics, formatHost()));
252
+ }
253
+ const errorCount = allDiagnostics.filter((d) => d.category === ts.DiagnosticCategory.Error).length;
254
+ if (errorCount > 0) {
255
+ console.log('');
256
+ console.log(`Found ${errorCount} error${errorCount > 1 ? 's' : ''}.`);
257
+ }
258
+ return errorCount > 0 ? 1 : 0;
259
+ }
260
+ function runWatchMode(configPath, config) {
261
+ const jsConfig = config.justscale;
262
+ const host = ts.createWatchCompilerHost(configPath, config.compilerOptions, ts.sys, ts.createEmitAndSemanticDiagnosticsBuilderProgram, reportDiagnostic, reportWatchStatus);
263
+ const originalAfterProgramCreate = host.afterProgramCreate;
264
+ host.afterProgramCreate = (builderProgram) => {
265
+ const program1 = builderProgram.getProgram();
266
+ const modifiedSources = extractAndInjectExportsTypes(program1);
267
+ let program;
268
+ if (modifiedSources.size > 0) {
269
+ const host2 = createModifiedHost(ts.createCompilerHost(config.compilerOptions), modifiedSources);
270
+ program = ts.createProgram({
271
+ rootNames: program1.getRootFileNames(),
272
+ options: program1.getCompilerOptions(),
273
+ host: host2,
274
+ oldProgram: program1,
275
+ });
276
+ }
277
+ else {
278
+ program = program1;
279
+ }
280
+ const processDiagnostics = getProcessDiagnostics(program, jsConfig);
281
+ for (const diag of processDiagnostics) {
282
+ reportDiagnostic(diag);
283
+ }
284
+ if (!config.compilerOptions.noEmit) {
285
+ program.emit(undefined, undefined, undefined, undefined, {
286
+ before: [createProcessTransformer(program, { verbose: jsConfig.verbose ?? false })],
287
+ });
288
+ }
289
+ if (originalAfterProgramCreate) {
290
+ originalAfterProgramCreate(builderProgram);
291
+ }
292
+ };
293
+ ts.createWatchProgram(host);
294
+ }
295
+ function getProcessDiagnostics(program, config) {
296
+ const diagnostics = [];
297
+ const typeChecker = program.getTypeChecker();
298
+ const processModules = config.processModules ?? defaultConfig.processModules;
299
+ for (const sourceFile of program.getSourceFiles()) {
300
+ if (sourceFile.isDeclarationFile)
301
+ continue;
302
+ if (sourceFile.fileName.includes('node_modules'))
303
+ continue;
304
+ if (!isProcessFile(sourceFile, config, processModules))
305
+ continue;
306
+ ts.forEachChild(sourceFile, function visit(node) {
307
+ if (ts.isCallExpression(node)) {
308
+ const expr = node.expression;
309
+ if (ts.isIdentifier(expr) && expr.text === 'createProcess') {
310
+ const configArg = node.arguments[0];
311
+ if (configArg && ts.isObjectLiteralExpression(configArg)) {
312
+ const handler = findHandler(configArg);
313
+ if (handler) {
314
+ const analysis = analyzeHandler(handler, typeChecker);
315
+ diagnostics.push(...analysis.diagnostics);
316
+ }
317
+ }
318
+ }
319
+ }
320
+ ts.forEachChild(node, visit);
321
+ });
322
+ }
323
+ return diagnostics;
324
+ }
325
+ function isProcessFile(sourceFile, config, processModules) {
326
+ const pattern = config.processFilePattern;
327
+ if (pattern && sourceFile.fileName.includes(pattern.replace('*', ''))) {
328
+ return true;
329
+ }
330
+ if (sourceFile.fileName.includes('.process.'))
331
+ return true;
332
+ for (const stmt of sourceFile.statements) {
333
+ if (ts.isImportDeclaration(stmt)) {
334
+ const moduleSpecifier = stmt.moduleSpecifier;
335
+ if (ts.isStringLiteral(moduleSpecifier)) {
336
+ if (processModules.includes(moduleSpecifier.text)) {
337
+ return true;
338
+ }
339
+ }
340
+ }
341
+ }
342
+ return false;
343
+ }
344
+ function findHandler(configObj) {
345
+ for (const prop of configObj.properties) {
346
+ if (ts.isMethodDeclaration(prop)) {
347
+ if (ts.isIdentifier(prop.name) && prop.name.text === 'handler') {
348
+ return prop;
349
+ }
350
+ }
351
+ else if (ts.isPropertyAssignment(prop)) {
352
+ if (ts.isIdentifier(prop.name) && prop.name.text === 'handler') {
353
+ if (ts.isFunctionExpression(prop.initializer) || ts.isArrowFunction(prop.initializer)) {
354
+ return prop.initializer;
355
+ }
356
+ }
357
+ }
358
+ }
359
+ return undefined;
360
+ }
361
+ function formatHost() {
362
+ return {
363
+ getCanonicalFileName: (path) => path,
364
+ getCurrentDirectory: ts.sys.getCurrentDirectory,
365
+ getNewLine: () => ts.sys.newLine,
366
+ };
367
+ }
368
+ function reportDiagnostic(diagnostic) {
369
+ console.log(ts.formatDiagnosticsWithColorAndContext([diagnostic], formatHost()));
370
+ }
371
+ function reportWatchStatus(diagnostic) {
372
+ console.log(ts.formatDiagnostic(diagnostic, formatHost()));
373
+ }
374
+ function printHelp() {
375
+ console.log(`
376
+ ptsc - Process TypeScript Compiler
377
+ Drop-in replacement for tsc with JustScale process compilation support.
378
+
379
+ Version: ${VERSION}
380
+ TypeScript: ${ts.version}
381
+
382
+ Usage:
383
+ ptsc [options] [file...]
384
+
385
+ Examples:
386
+ ptsc Compile using nearest tsconfig.json
387
+ ptsc hello.ts Compile a single file
388
+ ptsc --noEmit Type check only (no output)
389
+ ptsc -p tsconfig.json Use specific config file
390
+ ptsc -b tsconfig.build.json Build mode with project references
391
+ ptsc -w Watch mode
392
+ ptsc --init Initialize tsconfig.json
393
+
394
+ Common Options:
395
+ -w, --watch Watch input files
396
+ -p, --project <path> Compile the project given the path to tsconfig.json
397
+ -b, --build Build one or more projects and their dependencies
398
+ --noEmit Disable emitting files from compilation
399
+ --declaration Generate .d.ts declaration files
400
+ --outDir <path> Redirect output structure to the directory
401
+ --rootDir <path> Specify root directory of input files
402
+ --strict Enable all strict type-checking options
403
+ --target <version> Set ECMAScript target version
404
+ --module <type> Specify module code generation
405
+ -h, --help Show this help message
406
+ -v, --version Print version information
407
+
408
+ JustScale Options (in tsconfig.json):
409
+ {
410
+ "justscale": {
411
+ "processFilePattern": "*.process.ts", // File pattern for processes
412
+ "strict": true, // Strict process checking
413
+ "verbose": false, // Verbose output
414
+ "processModules": ["@justscale/core/process"]
415
+ }
416
+ }
417
+
418
+ Process Diagnostics (TSPxxxx):
419
+ TSP0001: Missing await on suspension point
420
+ TSP0002: Variable captured across suspension point
421
+ TSP0003: Invalid process handler signature
422
+ TSP0004: Unsupported control flow in process
423
+
424
+ For more information, see: https://justscale.sh/docs/typescript
425
+ `);
426
+ }
427
+ function initConfig() {
428
+ const configPath = resolve(process.cwd(), 'tsconfig.json');
429
+ if (existsSync(configPath)) {
430
+ console.error(`error: tsconfig.json already exists at ${configPath}`);
431
+ process.exit(1);
432
+ }
433
+ const config = {
434
+ compilerOptions: {
435
+ target: 'ES2022',
436
+ module: 'NodeNext',
437
+ moduleResolution: 'NodeNext',
438
+ strict: true,
439
+ esModuleInterop: true,
440
+ skipLibCheck: true,
441
+ forceConsistentCasingInFileNames: true,
442
+ outDir: './dist',
443
+ rootDir: './src',
444
+ declaration: true,
445
+ declarationMap: true,
446
+ sourceMap: true,
447
+ plugins: [
448
+ { name: '@justscale/typescript/language-service' }
449
+ ]
450
+ },
451
+ justscale: {
452
+ processFilePattern: '*.process.ts',
453
+ strict: true,
454
+ verbose: false
455
+ },
456
+ include: ['src/**/*'],
457
+ exclude: ['node_modules', 'dist']
458
+ };
459
+ writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n');
460
+ console.log(`Created tsconfig.json at ${configPath}`);
461
+ }
462
+ //# sourceMappingURL=ptsc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ptsc.js","sourceRoot":"","sources":["../../src/compiler/ptsc.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,aAAa,EAA2C,MAAM,oBAAoB,CAAC;AACzG,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAuB,MAAM,qBAAqB,CAAC;AAEtE,4BAA4B;AAC5B,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,+BAA+B;AAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,mBAAmB;AACnB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,gBAAgB;AAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1E,SAAS,EAAE,CAAC;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,gBAAgB;AAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC5B,UAAU,EAAE,CAAC;IACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,yFAAyF;AACzF,qFAAqF;AACrF,uEAAuE;AACvE,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,CAAC,CAAC;AAClF,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;IAC1B,IAAI,CAAC,cAAc,CAAC,GAAG,WAAW,CAAC;AACrC,CAAC;AAED,+CAA+C;AAC/C,MAAM,iBAAiB,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAEpD,IAAI,iBAAiB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IACxC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,oCAAoC,CAAC,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IAC/F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,gBAAgB;AAChB,IAAI,UAA8B,CAAC;AACnC,IAAI,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACtC,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC1D,CAAC;KAAM,IAAI,iBAAiB,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IACpD,wCAAwC;IACxC,UAAU,GAAG,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AACpF,CAAC;AAED,gCAAgC;AAChC,IAAI,YAAsC,CAAC;AAC3C,IAAI,eAAe,GAAoB,EAAE,GAAG,aAAa,EAAE,CAAC;AAE5D,IAAI,UAAU,EAAE,CAAC;IACf,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,uBAAuB,UAAU,cAAc,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,YAAY,GAAG,WAAW,CAAC,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAElE,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,oCAAoC,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QAC1F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,eAAe,GAAG,YAAY,CAAC,SAAS,CAAC;AAC3C,CAAC;KAAM,IAAI,iBAAiB,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IAClD,0CAA0C;IAC1C,YAAY,GAAG;QACb,eAAe,EAAE;YACf,GAAG,iBAAiB,CAAC,OAAO;YAC5B,6CAA6C;YAC7C,MAAM,EAAE,iBAAiB,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,YAAY,CAAC,MAAM;YAClE,MAAM,EAAE,iBAAiB,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ;YAClE,gBAAgB,EAAE,iBAAiB,CAAC,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAAC,oBAAoB,CAAC,QAAQ;SACjG;QACD,SAAS,EAAE,iBAAiB,CAAC,SAAS;QACtC,SAAS,EAAE,aAAa;QACxB,cAAc,EAAE,EAAE;QAClB,MAAM,EAAE,EAAE;KACX,CAAC;AACJ,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,YAAY,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IACvC,YAAY,CAAC,UAAW,EAAE,YAAY,CAAC,CAAC;AAC1C,CAAC;KAAM,CAAC;IACN,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IACzD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,QAAQ,CAAC,MAAoB,EAAE,QAAyB;IAC/D,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IAEjC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,SAAS,CAAC,MAAM,aAAa,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IACvF,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,iCAAiC;IACjC,MAAM,eAAe,GAAqB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAC7D,MAAM,CAAC,cAAc,CAAC;QACpB,OAAO;QACP,aAAa,EAAE,UAAU;KAC1B,CAAC,CACH,CAAC;IAEF,4DAA4D;IAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CACjC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CACtB,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EACtF,SAAS,CACV,IAAI,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAG,EAAE,CAAC,aAAa,CAAC;QAChC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,OAAO,EAAE,MAAM,CAAC,eAAe;QAC/B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,IAAI,EAAE,YAAY;KACnB,CAAC,CAAC;IAEH,oFAAoF;IACpF,qGAAqG;IACrG,MAAM,eAAe,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IAC/D,IAAI,OAAmB,CAAC;IACxB,IAAI,eAAe,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,kBAAkB,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QAChE,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,eAAe;YAC/B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,IAAI,EAAE,KAAK;YACX,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;QACH,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,oBAAoB,eAAe,CAAC,IAAI,qCAAqC,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,QAAQ,CAAC;IACrB,CAAC;IAED,MAAM,iBAAiB,GAAsB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAEnE,MAAM,WAAW,GAAG,6BAA6B,CAAC;QAChD,GAAG,OAAO,CAAC,+BAA+B,EAAE;QAC5C,GAAG,OAAO,CAAC,uBAAuB,EAAE;QACpC,GAAG,OAAO,CAAC,qBAAqB,EAAE;QAClC,GAAG,OAAO,CAAC,oBAAoB,EAAE;QACjC,GAAG,OAAO,CAAC,sBAAsB,EAAE;KACpC,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpE,MAAM,cAAc,GAAG,CAAC,GAAG,WAAW,EAAE,GAAG,kBAAkB,CAAC,CAAC;IAE/D,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,oCAAoC,CAAC,cAAc,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QACnC,4CAA4C;QAC5C,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7E,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CACnD,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAC5E,CAAC;QAEF,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAC7B,SAAS,EAAE,oCAAoC;QAC/C,SAAS,EAAE,0BAA0B;QACrC,SAAS,EAAE,oBAAoB;QAC/B,SAAS,EAAE,mBAAmB;QAC9B;YACE,MAAM,EAAE;gBACN,wBAAwB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC;gBAChE,GAAG,kBAAkB;aACtB;SACF,CACF,CAAC;QACF,cAAc,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;QAC/C,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QAElE,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;QAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC;QAE/C,oCAAoC;QACpC,MAAM,MAAM,GAAG,CAAC,CAAS,EAAQ,EAAE;YACjC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;gBAAE,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,YAAY,EAAE,CAAC;gBAC/C,IAAI,UAAU,GAAG,QAAQ,CAAC;gBAC1B,IAAI,MAAM,EAAE,CAAC;oBACX,IAAI,OAAO,EAAE,CAAC;wBACZ,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;wBACjD,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;oBAC1C,CAAC;yBAAM,CAAC;wBACN,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAChD,CAAC;oBACD,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;oBACxC,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;oBAC7C,IAAI,gBAAgB,KAAK,eAAe,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,eAAe,GAAG,GAAG,CAAC,EAAE,CAAC;wBAChG,MAAM,IAAI,KAAK,CACb,oBAAoB,QAAQ,qBAAqB,gBAAgB,mBAAmB,eAAe,EAAE,CACtG,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;gBAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;oBAAE,MAAM,CAAC,GAAG,CAAC,CAAC;gBAClC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAEtC,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,EAAE,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CACnD,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAC5E,CAAC;QACF,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;YAClD,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;gBAClC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAC;IACnD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,oCAAoC,CAAC,iBAAiB,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAClD,CAAC,MAAM,CAAC;IAET,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CACT,SAAS,UAAU,SAAS,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CACzD,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,YAAY,CAAC,UAAkB,EAAE,MAAoB;IAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;IAElC,MAAM,IAAI,GAAG,EAAE,CAAC,uBAAuB,CACrC,UAAU,EACV,MAAM,CAAC,eAAe,EACtB,EAAE,CAAC,GAAG,EACN,EAAE,CAAC,8CAA8C,EACjD,gBAAgB,EAChB,iBAAiB,CAClB,CAAC;IAEF,MAAM,0BAA0B,GAAG,IAAI,CAAC,kBAAkB,CAAC;IAC3D,IAAI,CAAC,kBAAkB,GAAG,CAAC,cAAc,EAAE,EAAE;QAC3C,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,EAAE,CAAC;QAE7C,MAAM,eAAe,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;QAC/D,IAAI,OAAmB,CAAC;QACxB,IAAI,eAAe,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,kBAAkB,CAC9B,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,eAAe,CAAC,EAC7C,eAAe,CAChB,CAAC;YACF,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC;gBACzB,SAAS,EAAE,QAAQ,CAAC,gBAAgB,EAAc;gBAClD,OAAO,EAAE,QAAQ,CAAC,kBAAkB,EAAE;gBACtC,IAAI,EAAE,KAAK;gBACX,UAAU,EAAE,QAAQ;aACrB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,QAAQ,CAAC;QACrB,CAAC;QAED,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpE,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;YACtC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CACV,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT;gBACE,MAAM,EAAE,CAAC,wBAAwB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC;aACpF,CACF,CAAC;QACJ,CAAC;QAED,IAAI,0BAA0B,EAAE,CAAC;YAC/B,0BAA0B,CAAC,cAAc,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC;IAEF,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAmB,EAAE,MAAuB;IACzE,MAAM,WAAW,GAAoB,EAAE,CAAC;IACxC,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAC7C,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,aAAa,CAAC,cAAc,CAAC;IAE7E,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;QAClD,IAAI,UAAU,CAAC,iBAAiB;YAAE,SAAS;QAC3C,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC;YAAE,SAAS;QAC3D,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC;YAAE,SAAS;QAEjE,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,SAAS,KAAK,CAAC,IAAI;YAC7C,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;gBAC7B,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBACpC,IAAI,SAAS,IAAI,EAAE,CAAC,yBAAyB,CAAC,SAAS,CAAC,EAAE,CAAC;wBACzD,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;wBACvC,IAAI,OAAO,EAAE,CAAC;4BACZ,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;4BACtD,WAAW,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;wBAC5C,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,aAAa,CACpB,UAAyB,EACzB,MAAuB,EACvB,cAAwB;IAExB,MAAM,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAC1C,IAAI,OAAO,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3D,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;QACzC,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;YAC7C,IAAI,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,CAAC;gBACxC,IAAI,cAAc,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClD,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAClB,SAAqC;IAErC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;QACxC,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC/D,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;aAAM,IAAI,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC/D,IAAI,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;oBACtF,OAAO,IAAI,CAAC,WAAW,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,UAAU;IACjB,OAAO;QACL,oBAAoB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI;QACpC,mBAAmB,EAAE,EAAE,CAAC,GAAG,CAAC,mBAAmB;QAC/C,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;KACjC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAyB;IACjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,oCAAoC,CAAC,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAyB;IAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;WAIH,OAAO;cACJ,EAAE,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CvB,CAAC,CAAC;AACH,CAAC;AAED,SAAS,UAAU;IACjB,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,CAAC;IAE3D,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,0CAA0C,UAAU,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG;QACb,eAAe,EAAE;YACf,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,UAAU;YAClB,gBAAgB,EAAE,UAAU;YAC5B,MAAM,EAAE,IAAI;YACZ,eAAe,EAAE,IAAI;YACrB,YAAY,EAAE,IAAI;YAClB,gCAAgC,EAAE,IAAI;YACtC,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,IAAI;YACjB,cAAc,EAAE,IAAI;YACpB,SAAS,EAAE,IAAI;YACf,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,wCAAwC,EAAE;aACnD;SACF;QACD,SAAS,EAAE;YACT,kBAAkB,EAAE,cAAc;YAClC,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,KAAK;SACf;QACD,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,OAAO,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC;KAClC,CAAC;IAEF,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * @justscale/core/process - AST Rewriter
3
+ *
4
+ * Rewrites variable references in block bodies to use state.vars and services.
5
+ *
6
+ * Transforms:
7
+ * - Handler params (orderId) -> state.vars.orderId
8
+ * - Injected services (payments) -> services.payments
9
+ * - Local variables (payment) -> state.vars.payment
10
+ * - Using variables (order) -> state.vars.order (rehydrated before block)
11
+ */
12
+ import ts from 'typescript';
13
+ export interface RewriterContext {
14
+ /** Variables from handler params: [orderId] or { order: orderId } */
15
+ paramVars: Set<string>;
16
+ /** Aliases: local name -> param name, for { user: userId } -> Map("userId" -> "user") */
17
+ paramAliases: Map<string, string>;
18
+ /** Injected service names: { payments, shipping } */
19
+ serviceVars: Set<string>;
20
+ /** Local variables created via STORE opcodes (cross-block state) */
21
+ localVars: Set<string>;
22
+ /** Using variables that need rehydration */
23
+ usingVars: Set<string>;
24
+ /** Race result variables (from const r = race()) - rewrite to __raceResult */
25
+ raceVars: Set<string>;
26
+ /** Variables declared within the current block - don't rewrite these */
27
+ blockLocalVars?: Set<string>;
28
+ /**
29
+ * Step index an unlabeled `break` should jump to when encountered
30
+ * inside this rewrite scope. Used for race-branch case bodies, where
31
+ * the user wrote `break;` to exit their `switch(true) { case signal(r, …): … }`
32
+ * and we need the generated code to jump to the race's continuation step
33
+ * instead of silently breaking out of the compiled `switch(step)`.
34
+ *
35
+ * Cleared when entering user-written loops or switches (their `break`
36
+ * targets those constructs, not ours).
37
+ */
38
+ breakTarget?: number;
39
+ /**
40
+ * Step index an unlabeled `continue` should jump to when encountered
41
+ * inside this rewrite scope. Same problem as `break`: a naked `continue`
42
+ * inside an if-body of a race branch restarts `main_loop` without advancing
43
+ * `step`, causing the same branch body to re-execute immediately - infinite
44
+ * loop. Rewrite to `step = continueTarget; continue main_loop;`.
45
+ *
46
+ * For race branches inside a while loop, `continueTarget` equals `nextStep`
47
+ * (the continuation step). Both `break` and `continue` at the top of a race
48
+ * branch body lead to the same place: the step after the branch completes.
49
+ */
50
+ continueTarget?: number;
51
+ }
52
+ /**
53
+ * Rewrite a statement to use state.vars and services.
54
+ * Preserves source positions for accurate source maps.
55
+ */
56
+ export declare function rewriteStatement(factory: ts.NodeFactory, stmt: ts.Statement, ctx: RewriterContext): ts.Statement;
57
+ /**
58
+ * Rewrite an expression to use state.vars and services.
59
+ * Preserves source positions for accurate source maps.
60
+ */
61
+ export declare function rewriteExpression(factory: ts.NodeFactory, expr: ts.Expression, ctx: RewriterContext): ts.Expression;
62
+ /**
63
+ * Extract param variable names from handler parameters.
64
+ *
65
+ * Handles both tuple and object destructuring:
66
+ * handler(deps, [orderId]) -> paramVars: {orderId}, aliases: {}
67
+ * handler(deps, { order: orderId }) -> paramVars: {orderId}, aliases: {orderId -> order}
68
+ *
69
+ * The aliases map local names to the param names from the path.
70
+ * The rewriter uses aliases to access state.vars[paramName] instead of state.vars[localName].
71
+ */
72
+ export declare function extractParamVars(handler: ts.FunctionExpression | ts.ArrowFunction | ts.MethodDeclaration): Set<string>;
73
+ /**
74
+ * Extract param aliases from object destructuring rename patterns.
75
+ *
76
+ * For `{ user: userId }`, returns Map { "userId" -> "user" }.
77
+ * The rewriter uses this to access `state.vars.user` when it sees `userId`.
78
+ */
79
+ export declare function extractParamAliases(handler: ts.FunctionExpression | ts.ArrowFunction | ts.MethodDeclaration): Map<string, string>;
80
+ /**
81
+ * Extract service variable names from handler parameters.
82
+ *
83
+ * Handles: async handler({ payments, shipping }, [...])
84
+ */
85
+ export declare function extractServiceVars(handler: ts.FunctionExpression | ts.ArrowFunction | ts.MethodDeclaration): Set<string>;
86
+ /**
87
+ * Extract all variable names declared in a list of statements.
88
+ * Used to identify block-local variables that shouldn't be rewritten.
89
+ */
90
+ export declare function extractDeclaredVars(statements: ts.Statement[]): Set<string>;
91
+ /**
92
+ * Clone an expression, creating synthesized nodes that can be printed.
93
+ * This is necessary when the original expression comes from a different source file.
94
+ */
95
+ export declare function cloneExpression(factory: ts.NodeFactory, expr: ts.Expression): ts.Expression;
96
+ //# sourceMappingURL=rewriter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewriter.d.ts","sourceRoot":"","sources":["../../src/compiler/rewriter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACtB,yFAAyF;IACzF,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,qDAAqD;IACrD,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACxB,oEAAoE;IACpE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACtB,4CAA4C;IAC5C,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACtB,8EAA8E;IAC9E,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACrB,wEAAwE;IACxE,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC5B;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,IAAI,EAAE,EAAE,CAAC,SAAS,EAClB,GAAG,EAAE,eAAe,GACnB,EAAE,CAAC,SAAS,CAKd;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,IAAI,EAAE,EAAE,CAAC,UAAU,EACnB,GAAG,EAAE,eAAe,GACnB,EAAE,CAAC,UAAU,CAKf;AAwRD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,EAAE,CAAC,kBAAkB,GAAG,EAAE,CAAC,aAAa,GAAG,EAAE,CAAC,iBAAiB,GACvE,GAAG,CAAC,MAAM,CAAC,CASb;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,EAAE,CAAC,kBAAkB,GAAG,EAAE,CAAC,aAAa,GAAG,EAAE,CAAC,iBAAiB,GACvE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBrB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,EAAE,CAAC,kBAAkB,GAAG,EAAE,CAAC,aAAa,GAAG,EAAE,CAAC,iBAAiB,GACvE,GAAG,CAAC,MAAM,CAAC,CAUb;AAuBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAY3E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU,CAoI3F"}