@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,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quick Fix Discovery
|
|
3
|
+
*
|
|
4
|
+
* Scans installed packages for "justscale" field with "quickFixes" entry,
|
|
5
|
+
* imports the quick fix modules, and registers them with the language service.
|
|
6
|
+
*
|
|
7
|
+
* Watches the lockfile for changes to detect new packages.
|
|
8
|
+
*/
|
|
9
|
+
import { existsSync, readFileSync, watchFile, unwatchFile } from 'node:fs';
|
|
10
|
+
import { join } from 'node:path';
|
|
11
|
+
/**
|
|
12
|
+
* Discover quick fix modules from installed packages.
|
|
13
|
+
*/
|
|
14
|
+
export async function discoverQuickFixes(projectRoot, log) {
|
|
15
|
+
const pkgPath = join(projectRoot, 'package.json');
|
|
16
|
+
if (!existsSync(pkgPath))
|
|
17
|
+
return [];
|
|
18
|
+
let pkg;
|
|
19
|
+
try {
|
|
20
|
+
pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return [];
|
|
24
|
+
}
|
|
25
|
+
const deps = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
26
|
+
const quickFixes = [];
|
|
27
|
+
for (const depName of Object.keys(deps)) {
|
|
28
|
+
try {
|
|
29
|
+
const depPkgPath = resolveDepPackageJson(projectRoot, depName);
|
|
30
|
+
if (!depPkgPath)
|
|
31
|
+
continue;
|
|
32
|
+
const depPkg = JSON.parse(readFileSync(depPkgPath, 'utf-8'));
|
|
33
|
+
const justscaleField = depPkg.justscale;
|
|
34
|
+
if (!justscaleField?.quickFixes)
|
|
35
|
+
continue;
|
|
36
|
+
const qfConfig = justscaleField.quickFixes;
|
|
37
|
+
const modulePath = resolveModulePath(depPkgPath, qfConfig);
|
|
38
|
+
if (!modulePath)
|
|
39
|
+
continue;
|
|
40
|
+
const qfModule = await import(modulePath);
|
|
41
|
+
// Collect exported quick fix definitions
|
|
42
|
+
for (const value of Object.values(qfModule)) {
|
|
43
|
+
if (isQuickFixDefinition(value)) {
|
|
44
|
+
quickFixes.push(value);
|
|
45
|
+
}
|
|
46
|
+
else if (Array.isArray(value)) {
|
|
47
|
+
for (const item of value) {
|
|
48
|
+
if (isQuickFixDefinition(item)) {
|
|
49
|
+
quickFixes.push(item);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
log(`Loaded ${quickFixes.length} quick fix(es) from ${depName}`);
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
log(`Warning: failed to load quick fixes from ${depName}: ${err.message}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return quickFixes;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Watch lockfile for changes and re-discover quick fixes.
|
|
64
|
+
*/
|
|
65
|
+
export function watchLockfile(projectRoot, onChange, log) {
|
|
66
|
+
const lockfiles = [
|
|
67
|
+
join(projectRoot, 'pnpm-lock.yaml'),
|
|
68
|
+
join(projectRoot, 'package-lock.json'),
|
|
69
|
+
join(projectRoot, 'yarn.lock'),
|
|
70
|
+
];
|
|
71
|
+
const watchers = [];
|
|
72
|
+
for (const lockfile of lockfiles) {
|
|
73
|
+
if (existsSync(lockfile)) {
|
|
74
|
+
watchFile(lockfile, { interval: 2000 }, () => {
|
|
75
|
+
log(`Lockfile changed: ${lockfile}`);
|
|
76
|
+
onChange();
|
|
77
|
+
});
|
|
78
|
+
watchers.push(lockfile);
|
|
79
|
+
log(`Watching lockfile: ${lockfile}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return () => {
|
|
83
|
+
for (const lockfile of watchers) {
|
|
84
|
+
unwatchFile(lockfile);
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
function resolveDepPackageJson(cwd, depName) {
|
|
89
|
+
let dir = cwd;
|
|
90
|
+
while (true) {
|
|
91
|
+
const candidate = join(dir, 'node_modules', depName, 'package.json');
|
|
92
|
+
if (existsSync(candidate))
|
|
93
|
+
return candidate;
|
|
94
|
+
const parent = join(dir, '..');
|
|
95
|
+
if (parent === dir)
|
|
96
|
+
break;
|
|
97
|
+
dir = parent;
|
|
98
|
+
}
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
function resolveModulePath(depPkgPath, config) {
|
|
102
|
+
const depDir = join(depPkgPath, '..');
|
|
103
|
+
if (config.import) {
|
|
104
|
+
const importPath = join(depDir, config.import);
|
|
105
|
+
if (existsSync(importPath))
|
|
106
|
+
return importPath;
|
|
107
|
+
}
|
|
108
|
+
if (config.source) {
|
|
109
|
+
const sourcePath = join(depDir, config.source);
|
|
110
|
+
if (existsSync(sourcePath))
|
|
111
|
+
return sourcePath;
|
|
112
|
+
}
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
function isQuickFixDefinition(value) {
|
|
116
|
+
if (!value || typeof value !== 'object')
|
|
117
|
+
return false;
|
|
118
|
+
const obj = value;
|
|
119
|
+
return typeof obj.id === 'string' &&
|
|
120
|
+
typeof obj.when === 'function' &&
|
|
121
|
+
typeof obj.label === 'string' &&
|
|
122
|
+
typeof obj.fix === 'function';
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=quick-fix-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quick-fix-discovery.js","sourceRoot":"","sources":["../../src/language-service/quick-fix-discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process TypeScript Compiler
|
|
3
|
+
*
|
|
4
|
+
* Compiles process files (*.process.ts) using TypeScript's compiler API
|
|
5
|
+
* and the process transformer.
|
|
6
|
+
*/
|
|
7
|
+
export interface CompilerOptions {
|
|
8
|
+
/** Root directory for finding process files */
|
|
9
|
+
rootDir: string;
|
|
10
|
+
/** Output directory for compiled files (default: .justscale/process-cache) */
|
|
11
|
+
cacheDir?: string;
|
|
12
|
+
/** Whether to emit source maps */
|
|
13
|
+
sourceMap?: boolean;
|
|
14
|
+
/** Verbose logging */
|
|
15
|
+
verbose?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface CompileResult {
|
|
18
|
+
/** Compiled JavaScript code (includes inline source map when sourceMap is enabled) */
|
|
19
|
+
code: string;
|
|
20
|
+
/**
|
|
21
|
+
* Raw source map JSON when sourceMap is enabled, otherwise undefined.
|
|
22
|
+
* Tooling that wants to attach its own map (esbuild, coverage reporters,
|
|
23
|
+
* stack remappers) should consume this rather than regex-extracting the
|
|
24
|
+
* base64 data URL from `code`.
|
|
25
|
+
*/
|
|
26
|
+
map?: string;
|
|
27
|
+
/** Whether this was a cache hit */
|
|
28
|
+
cached: boolean;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Process TypeScript compiler.
|
|
32
|
+
*/
|
|
33
|
+
export declare class PtsCompiler {
|
|
34
|
+
private readonly rootDir;
|
|
35
|
+
private readonly cacheDir;
|
|
36
|
+
private readonly sourceMap;
|
|
37
|
+
private readonly verbose;
|
|
38
|
+
constructor(options: CompilerOptions);
|
|
39
|
+
/**
|
|
40
|
+
* Compile a process file.
|
|
41
|
+
*/
|
|
42
|
+
compile(filePath: string): CompileResult;
|
|
43
|
+
private compileFile;
|
|
44
|
+
private createCompilerHost;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Create a PTS compiler instance.
|
|
48
|
+
*/
|
|
49
|
+
export declare function createCompiler(options: CompilerOptions): PtsCompiler;
|
|
50
|
+
//# sourceMappingURL=incremental.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"incremental.d.ts","sourceRoot":"","sources":["../../src/loader/incremental.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAA;IACf,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kCAAkC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,sBAAsB;IACtB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,sFAAsF;IACtF,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,mCAAmC;IACnC,MAAM,EAAE,OAAO,CAAA;CAChB;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;gBAEtB,OAAO,EAAE,eAAe;IAYpC;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa;IAsBxC,OAAO,CAAC,WAAW;IA0EnB,OAAO,CAAC,kBAAkB;CAiD3B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,WAAW,CAEpE"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process TypeScript Compiler
|
|
3
|
+
*
|
|
4
|
+
* Compiles process files (*.process.ts) using TypeScript's compiler API
|
|
5
|
+
* and the process transformer.
|
|
6
|
+
*/
|
|
7
|
+
import ts from 'typescript';
|
|
8
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
9
|
+
import { dirname, join, relative, resolve } from 'node:path';
|
|
10
|
+
import { createProcessTransformer } from '../compiler/transformer.js';
|
|
11
|
+
/**
|
|
12
|
+
* Process TypeScript compiler.
|
|
13
|
+
*/
|
|
14
|
+
export class PtsCompiler {
|
|
15
|
+
rootDir;
|
|
16
|
+
cacheDir;
|
|
17
|
+
sourceMap;
|
|
18
|
+
verbose;
|
|
19
|
+
constructor(options) {
|
|
20
|
+
this.rootDir = resolve(options.rootDir);
|
|
21
|
+
this.cacheDir = options.cacheDir ?? join(this.rootDir, '.justscale', 'process-cache');
|
|
22
|
+
this.sourceMap = options.sourceMap ?? false;
|
|
23
|
+
this.verbose = options.verbose ?? false;
|
|
24
|
+
// Ensure output directory exists
|
|
25
|
+
if (!existsSync(this.cacheDir)) {
|
|
26
|
+
mkdirSync(this.cacheDir, { recursive: true });
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Compile a process file.
|
|
31
|
+
*/
|
|
32
|
+
compile(filePath) {
|
|
33
|
+
const absolutePath = resolve(filePath);
|
|
34
|
+
const relativePath = relative(this.rootDir, absolutePath);
|
|
35
|
+
// Read source
|
|
36
|
+
const source = readFileSync(absolutePath, 'utf-8');
|
|
37
|
+
if (this.verbose) {
|
|
38
|
+
console.log(`[pts] Compiling: ${relativePath}`);
|
|
39
|
+
}
|
|
40
|
+
// Compile with transformer
|
|
41
|
+
const { code, map } = this.compileFile(absolutePath, source);
|
|
42
|
+
// Write compiled file for debugging
|
|
43
|
+
const outPath = join(this.cacheDir, relativePath.replace(/\.(process\.)?ts$/, '.js'));
|
|
44
|
+
mkdirSync(dirname(outPath), { recursive: true });
|
|
45
|
+
writeFileSync(outPath, code);
|
|
46
|
+
return { code, map, cached: false };
|
|
47
|
+
}
|
|
48
|
+
compileFile(filePath, source) {
|
|
49
|
+
// Compiler options - relaxed to handle missing type info. We emit the
|
|
50
|
+
// source map non-inline into a separate buffer so callers that want it
|
|
51
|
+
// as a distinct handle (esbuild plugin, coverage tooling) can have it
|
|
52
|
+
// without re-parsing a data URL. Runtime callers (the Node loader)
|
|
53
|
+
// still get the base64-inlined form appended to `code` below.
|
|
54
|
+
const compilerOptions = {
|
|
55
|
+
target: ts.ScriptTarget.ESNext,
|
|
56
|
+
module: ts.ModuleKind.ESNext,
|
|
57
|
+
moduleResolution: ts.ModuleResolutionKind.Bundler,
|
|
58
|
+
strict: false, // Relaxed - we don't need full type checking
|
|
59
|
+
esModuleInterop: true,
|
|
60
|
+
skipLibCheck: true,
|
|
61
|
+
declaration: false,
|
|
62
|
+
sourceMap: this.sourceMap,
|
|
63
|
+
inlineSources: this.sourceMap, // Embed original source in the map
|
|
64
|
+
noEmitOnError: false, // Emit even if there are errors
|
|
65
|
+
isolatedModules: true, // Each file is a module
|
|
66
|
+
};
|
|
67
|
+
// Create a virtual file system for compilation
|
|
68
|
+
const files = new Map();
|
|
69
|
+
files.set(filePath, source);
|
|
70
|
+
// Create compiler host
|
|
71
|
+
const host = this.createCompilerHost(files, compilerOptions);
|
|
72
|
+
// Create program
|
|
73
|
+
const program = ts.createProgram([filePath], compilerOptions, host);
|
|
74
|
+
// Get the transformer
|
|
75
|
+
const transformer = createProcessTransformer(program, {
|
|
76
|
+
sourceMap: this.sourceMap,
|
|
77
|
+
verbose: this.verbose,
|
|
78
|
+
});
|
|
79
|
+
// Get source file
|
|
80
|
+
const sourceFile = program.getSourceFile(filePath);
|
|
81
|
+
// Emit with transformer
|
|
82
|
+
let outputCode = '';
|
|
83
|
+
let outputMap;
|
|
84
|
+
program.emit(sourceFile, (fileName, text) => {
|
|
85
|
+
if (fileName.endsWith('.map')) {
|
|
86
|
+
outputMap = text;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
outputCode = text;
|
|
90
|
+
}
|
|
91
|
+
}, undefined, false, { before: [transformer] });
|
|
92
|
+
// The existing Node loader path expects the source map to be embedded
|
|
93
|
+
// in the emitted code (no companion .map file is written to disk), so
|
|
94
|
+
// re-inline as a base64 data URL. Strip any TypeScript-emitted
|
|
95
|
+
// sourceMappingURL comment first - with `sourceMap: true` tsc appends
|
|
96
|
+
// a `file.js.map` reference that doesn't exist on disk at runtime.
|
|
97
|
+
if (this.sourceMap && outputMap) {
|
|
98
|
+
// Anchor to start-of-line so we don't mangle source that legitimately
|
|
99
|
+
// contains the literal string "//# sourceMappingURL=" (e.g. tests that
|
|
100
|
+
// assert on this marker). tsc emits the comment on its own line.
|
|
101
|
+
outputCode = outputCode.replace(/(^|\n)\/\/# sourceMappingURL=.*$/m, '');
|
|
102
|
+
const base64 = Buffer.from(outputMap, 'utf-8').toString('base64');
|
|
103
|
+
outputCode += `\n//# sourceMappingURL=data:application/json;base64,${base64}\n`;
|
|
104
|
+
}
|
|
105
|
+
return { code: outputCode, map: outputMap };
|
|
106
|
+
}
|
|
107
|
+
createCompilerHost(files, options) {
|
|
108
|
+
const defaultHost = ts.createCompilerHost(options);
|
|
109
|
+
return {
|
|
110
|
+
...defaultHost,
|
|
111
|
+
getSourceFile: (fileName, languageVersion, onError) => {
|
|
112
|
+
// Check our virtual files first
|
|
113
|
+
const content = files.get(fileName);
|
|
114
|
+
if (content !== undefined) {
|
|
115
|
+
return ts.createSourceFile(fileName, content, languageVersion, true, ts.ScriptKind.TS);
|
|
116
|
+
}
|
|
117
|
+
// Fall back to default host
|
|
118
|
+
return defaultHost.getSourceFile(fileName, languageVersion, onError);
|
|
119
|
+
},
|
|
120
|
+
fileExists: (fileName) => {
|
|
121
|
+
if (files.has(fileName))
|
|
122
|
+
return true;
|
|
123
|
+
return defaultHost.fileExists(fileName);
|
|
124
|
+
},
|
|
125
|
+
readFile: (fileName) => {
|
|
126
|
+
const content = files.get(fileName);
|
|
127
|
+
if (content !== undefined)
|
|
128
|
+
return content;
|
|
129
|
+
return defaultHost.readFile(fileName);
|
|
130
|
+
},
|
|
131
|
+
// Override to prevent errors about missing files
|
|
132
|
+
getDefaultLibFileName: (options) => {
|
|
133
|
+
return defaultHost.getDefaultLibFileName(options);
|
|
134
|
+
},
|
|
135
|
+
writeFile: () => {
|
|
136
|
+
// No-op - we capture output in emit callback
|
|
137
|
+
},
|
|
138
|
+
getCurrentDirectory: () => this.rootDir,
|
|
139
|
+
getCanonicalFileName: (fileName) => fileName,
|
|
140
|
+
useCaseSensitiveFileNames: () => true,
|
|
141
|
+
getNewLine: () => '\n',
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Create a PTS compiler instance.
|
|
147
|
+
*/
|
|
148
|
+
export function createCompiler(options) {
|
|
149
|
+
return new PtsCompiler(options);
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=incremental.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"incremental.js","sourceRoot":"","sources":["../../src/loader/incremental.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AA2BtE;;GAEG;AACH,MAAM,OAAO,WAAW;IACL,OAAO,CAAS;IAChB,QAAQ,CAAS;IACjB,SAAS,CAAU;IACnB,OAAO,CAAU;IAElC,YAAY,OAAwB;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;QACtF,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;QAExC,iCAAiC;QACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,QAAgB;QACtB,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAE1D,cAAc;QACd,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAEnD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,oBAAoB,YAAY,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,2BAA2B;QAC3B,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAE7D,oCAAoC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAAC;QACtF,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAE7B,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACtC,CAAC;IAEO,WAAW,CAAC,QAAgB,EAAE,MAAc;QAClD,sEAAsE;QACtE,uEAAuE;QACvE,sEAAsE;QACtE,mEAAmE;QACnE,8DAA8D;QAC9D,MAAM,eAAe,GAAuB;YAC1C,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM;YAC9B,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM;YAC5B,gBAAgB,EAAE,EAAE,CAAC,oBAAoB,CAAC,OAAO;YACjD,MAAM,EAAE,KAAK,EAAE,6CAA6C;YAC5D,eAAe,EAAE,IAAI;YACrB,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE,KAAK;YAClB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,mCAAmC;YAClE,aAAa,EAAE,KAAK,EAAE,gCAAgC;YACtD,eAAe,EAAE,IAAI,EAAE,wBAAwB;SAChD,CAAC;QAEF,+CAA+C;QAC/C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;QACxC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE5B,uBAAuB;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QAE7D,iBAAiB;QACjB,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;QAEpE,sBAAsB;QACtB,MAAM,WAAW,GAAG,wBAAwB,CAAC,OAAO,EAAE;YACpD,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QAEH,kBAAkB;QAClB,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAEnD,wBAAwB;QACxB,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,SAA6B,CAAC;QAElC,OAAO,CAAC,IAAI,CACV,UAAU,EACV,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE;YACjB,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;QACH,CAAC,EACD,SAAS,EACT,KAAK,EACL,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,CAC1B,CAAC;QAEF,sEAAsE;QACtE,sEAAsE;QACtE,+DAA+D;QAC/D,sEAAsE;QACtE,mEAAmE;QACnE,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC;YAChC,sEAAsE;YACtE,uEAAuE;YACvE,iEAAiE;YACjE,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,mCAAmC,EAAE,EAAE,CAAC,CAAC;YACzE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAClE,UAAU,IAAI,uDAAuD,MAAM,IAAI,CAAC;QAClF,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IAC9C,CAAC;IAEO,kBAAkB,CACxB,KAA0B,EAC1B,OAA2B;QAE3B,MAAM,WAAW,GAAG,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAEnD,OAAO;YACL,GAAG,WAAW;YAEd,aAAa,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE;gBACpD,gCAAgC;gBAChC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACpC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC1B,OAAO,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBACzF,CAAC;gBAED,4BAA4B;gBAC5B,OAAO,WAAW,CAAC,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;YACvE,CAAC;YAED,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACvB,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,OAAO,IAAI,CAAC;gBACrC,OAAO,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC1C,CAAC;YAED,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACrB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACpC,IAAI,OAAO,KAAK,SAAS;oBAAE,OAAO,OAAO,CAAC;gBAC1C,OAAO,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACxC,CAAC;YAED,iDAAiD;YACjD,qBAAqB,EAAE,CAAC,OAAO,EAAE,EAAE;gBACjC,OAAO,WAAW,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;YACpD,CAAC;YAED,SAAS,EAAE,GAAG,EAAE;gBACd,6CAA6C;YAC/C,CAAC;YAED,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO;YAEvC,oBAAoB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ;YAE5C,yBAAyB,EAAE,GAAG,EAAE,CAAC,IAAI;YAErC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;SACvB,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAwB;IACrD,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @justscale/typescript/loader
|
|
3
|
+
*
|
|
4
|
+
* PTS (Process TypeScript) compiler and loader for JustScale.
|
|
5
|
+
*
|
|
6
|
+
* ## Usage
|
|
7
|
+
*
|
|
8
|
+
* ### As a Node.js loader (recommended)
|
|
9
|
+
*
|
|
10
|
+
* ```bash
|
|
11
|
+
* node --import @justscale/typescript/register --import tsx ./app.ts
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* ### Programmatic compilation
|
|
15
|
+
*
|
|
16
|
+
* ```typescript
|
|
17
|
+
* import { createCompiler } from '@justscale/typescript/loader'
|
|
18
|
+
*
|
|
19
|
+
* const compiler = createCompiler({ rootDir: process.cwd() })
|
|
20
|
+
* const result = compiler.compile('./processes/order.process.ts')
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export { PtsCompiler, createCompiler } from './incremental.js';
|
|
24
|
+
export type { CompilerOptions, CompileResult } from './incremental.js';
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/loader/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC/D,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @justscale/typescript/loader
|
|
3
|
+
*
|
|
4
|
+
* PTS (Process TypeScript) compiler and loader for JustScale.
|
|
5
|
+
*
|
|
6
|
+
* ## Usage
|
|
7
|
+
*
|
|
8
|
+
* ### As a Node.js loader (recommended)
|
|
9
|
+
*
|
|
10
|
+
* ```bash
|
|
11
|
+
* node --import @justscale/typescript/register --import tsx ./app.ts
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* ### Programmatic compilation
|
|
15
|
+
*
|
|
16
|
+
* ```typescript
|
|
17
|
+
* import { createCompiler } from '@justscale/typescript/loader'
|
|
18
|
+
*
|
|
19
|
+
* const compiler = createCompiler({ rootDir: process.cwd() })
|
|
20
|
+
* const result = compiler.compile('./processes/order.process.ts')
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export { PtsCompiler, createCompiler } from './incremental.js';
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/loader/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node.js ESM Loader for Process TypeScript and Proto files
|
|
3
|
+
*
|
|
4
|
+
* This loader hooks into Node.js module loading to:
|
|
5
|
+
* 1. Compile process files (*.process.ts or files importing @justscale/core/process)
|
|
6
|
+
* 2. Transform .proto imports to JavaScript
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* node --import @justscale/typescript/register --import tsx ./app.ts
|
|
10
|
+
*/
|
|
11
|
+
import '../plugins/index.js';
|
|
12
|
+
/** Exported for unit tests; takes an explicit root rather than using cwd. */
|
|
13
|
+
export declare function _isInsideRoot(filePath: string, root: string): boolean;
|
|
14
|
+
interface ResolveContext {
|
|
15
|
+
conditions: string[];
|
|
16
|
+
parentURL?: string;
|
|
17
|
+
}
|
|
18
|
+
interface ResolveResult {
|
|
19
|
+
url: string;
|
|
20
|
+
format?: string;
|
|
21
|
+
shortCircuit?: boolean;
|
|
22
|
+
}
|
|
23
|
+
type NextResolve = (specifier: string, context: ResolveContext) => Promise<ResolveResult>;
|
|
24
|
+
interface LoadContext {
|
|
25
|
+
format?: string;
|
|
26
|
+
conditions: string[];
|
|
27
|
+
}
|
|
28
|
+
interface LoadResult {
|
|
29
|
+
format: string;
|
|
30
|
+
source: string | ArrayBuffer;
|
|
31
|
+
shortCircuit?: boolean;
|
|
32
|
+
}
|
|
33
|
+
type NextLoad = (url: string, context: LoadContext) => Promise<LoadResult>;
|
|
34
|
+
/**
|
|
35
|
+
* Resolve hook - handles format imports (.proto, .capnp, .graphql/.gql).
|
|
36
|
+
* Tells Node.js where to find these files and marks them as ESM modules.
|
|
37
|
+
*/
|
|
38
|
+
export declare function resolve(specifier: string, context: ResolveContext, nextResolve: NextResolve): Promise<ResolveResult>;
|
|
39
|
+
/**
|
|
40
|
+
* Load hook - intercepts .ts files and compiles process files specially.
|
|
41
|
+
* Also handles .proto files for direct proto imports.
|
|
42
|
+
* Non-process .ts files are forwarded to the next loader (tsx).
|
|
43
|
+
*/
|
|
44
|
+
export declare function load(url: string, context: LoadContext, nextLoad: NextLoad): Promise<LoadResult>;
|
|
45
|
+
/**
|
|
46
|
+
* Initialize hook - called when the loader is registered.
|
|
47
|
+
*/
|
|
48
|
+
export declare function initialize(data?: {
|
|
49
|
+
verbose?: boolean;
|
|
50
|
+
}): Promise<void>;
|
|
51
|
+
export {};
|
|
52
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/loader/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,qBAAqB,CAAC;AAyC7B,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAqBrE;AAsDD,UAAU,cAAc;IACtB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,UAAU,aAAa;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,KAAK,WAAW,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAE1F,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,EAAE,CAAA;CACrB;AAED,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,GAAG,WAAW,CAAA;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,KAAK,QAAQ,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3E;;;GAGG;AACH,wBAAsB,OAAO,CAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,aAAa,CAAC,CAoBxB;AAED;;;;GAIG;AACH,wBAAsB,IAAI,CACxB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,UAAU,CAAC,CAkGrB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5E"}
|