@travetto/compiler 7.0.0-rc.2 → 7.0.0-rc.4
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/README.md +2 -2
- package/bin/entry.common.js +13 -14
- package/bin/{gen.context.mjs → gen.context.js} +5 -2
- package/bin/trvc.js +3 -1
- package/package.json +5 -4
- package/src/compiler.ts +1 -0
- package/src/state.ts +5 -1
- package/src/types.ts +3 -3
- package/src/util.ts +1 -1
- package/support/setup.ts +3 -3
- package/support/ts-util.ts +2 -2
- package/support/types.ts +3 -1
- package/tsconfig.trv.json +2 -1
package/README.md
CHANGED
|
@@ -22,7 +22,7 @@ This module expands upon the [Typescript](https://typescriptlang.org) compiler,
|
|
|
22
22
|
Beyond the [Typescript](https://typescriptlang.org) compiler functionality, the module provides the primary entry point into the development process.
|
|
23
23
|
|
|
24
24
|
## CLI
|
|
25
|
-
The compiler cli, [trvc](https://github.com/travetto/travetto/tree/main/module/compiler/bin/trvc.js#
|
|
25
|
+
The compiler cli, [trvc](https://github.com/travetto/travetto/tree/main/module/compiler/bin/trvc.js#L2) is the entry point for compilation-related operations. It has the ability to check for active builds, and ongoing watch operations to ensure only one process is building at a time. Within the framework, regardless of mono-repo or not, the compilation always targets the entire project. With the efficient caching behavior, this leads to generally a minimal overhead but allows for centralization of all operations.
|
|
26
26
|
|
|
27
27
|
The compiler cli supports the following operations:
|
|
28
28
|
* `start|watch` - Run the compiler in watch mode
|
|
@@ -88,4 +88,4 @@ The compiler will move through the following phases on a given compilation execu
|
|
|
88
88
|
* `Invoke Compiler` - Run [Typescript](https://typescriptlang.org) compiler with the aforementioned enhancements
|
|
89
89
|
|
|
90
90
|
### Bootstrapping
|
|
91
|
-
Given that the framework is distributed as [Typescript](https://typescriptlang.org) only files, there is a bootstrapping problem that needs to be mitigated. The [trvc](https://github.com/travetto/travetto/tree/main/module/compiler/bin/trvc.js#
|
|
91
|
+
Given that the framework is distributed as [Typescript](https://typescriptlang.org) only files, there is a bootstrapping problem that needs to be mitigated. The [trvc](https://github.com/travetto/travetto/tree/main/module/compiler/bin/trvc.js#L2) entrypoint, along with a small context utility in [Manifest](https://github.com/travetto/travetto/tree/main/module/manifest#readme "Support for project indexing, manifesting, along with file watching") are the only [Javascript](https://developer.mozilla.org/en-US/docs/Web/JavaScript) files needed to run the project. The [trvc](https://github.com/travetto/travetto/tree/main/module/compiler/bin/trvc.js#L2) entry point will compile `@travetto/compiler/support/*` files as the set that is used at startup. These files are also accessible to the compiler as they get re-compiled after the fact.
|
package/bin/entry.common.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
// @ts-check
|
|
2
2
|
/* eslint-disable no-undef */
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import { stat, readFile, writeFile, mkdir, rm, readdir } from 'node:fs/promises';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { createRequire } from 'node:module';
|
|
5
6
|
|
|
6
7
|
const COMP_MOD = '@travetto/compiler';
|
|
7
8
|
const SOURCE_EXT_REGEX = /[.][cm]?[tj]sx?$/;
|
|
8
9
|
const BARE_IMPORT_REGEX = /^(@[^/]+[/])?[^.][^@/]+$/;
|
|
9
10
|
const OUTPUT_EXT = '.js';
|
|
11
|
+
const REQUIRE = createRequire(import.meta.filename);
|
|
10
12
|
|
|
11
13
|
async function writeIfStale(sourceFile = '', destinationFile = '', transform = async (text = '') => text) {
|
|
12
14
|
const [srcStat, destStat] = await Promise.all([sourceFile, destinationFile].map(file => stat(`${file}`).then(stats => stats.mtimeMs, () => 0)));
|
|
@@ -18,11 +20,11 @@ async function writeIfStale(sourceFile = '', destinationFile = '', transform = a
|
|
|
18
20
|
}
|
|
19
21
|
}
|
|
20
22
|
|
|
21
|
-
async function transpile(content = '',
|
|
23
|
+
async function transpile(content = '', full = true) {
|
|
22
24
|
const ts = (await import('typescript')).default;
|
|
23
25
|
return ts.transpile(content, {
|
|
24
26
|
target: ts.ScriptTarget.ES2022,
|
|
25
|
-
module:
|
|
27
|
+
module: ts.ModuleKind.ESNext,
|
|
26
28
|
importHelpers: true,
|
|
27
29
|
sourceMap: false,
|
|
28
30
|
inlineSourceMap: true,
|
|
@@ -32,9 +34,9 @@ async function transpile(content = '', esm = true, full = true) {
|
|
|
32
34
|
}
|
|
33
35
|
|
|
34
36
|
async function getContext() {
|
|
35
|
-
const ctxFile =
|
|
36
|
-
const ctxDest = path.resolve(
|
|
37
|
-
await writeIfStale(ctxFile, ctxDest, content => transpile(content,
|
|
37
|
+
const ctxFile = REQUIRE.resolve('@travetto/manifest/src/context.ts');
|
|
38
|
+
const ctxDest = path.resolve(import.meta.dirname, 'gen.context.js');
|
|
39
|
+
await writeIfStale(ctxFile, ctxDest, content => transpile(content, false));
|
|
38
40
|
const ctx = await import(ctxDest).then((/** @type {import('@travetto/manifest')} */ value) => value.getManifestContext());
|
|
39
41
|
|
|
40
42
|
const srcPath = path.resolve.bind(path, ctx.workspace.path, ctx.build.compilerModuleFolder);
|
|
@@ -42,7 +44,6 @@ async function getContext() {
|
|
|
42
44
|
path.resolve(ctx.workspace.path, ctx.build.compilerFolder, 'node_modules', file).replace(SOURCE_EXT_REGEX, OUTPUT_EXT);
|
|
43
45
|
|
|
44
46
|
return {
|
|
45
|
-
packageType: ctx.workspace.type,
|
|
46
47
|
srcPath,
|
|
47
48
|
destPath,
|
|
48
49
|
tsconfig: path.resolve(ctx.workspace.path, 'tsconfig.json'),
|
|
@@ -60,7 +61,7 @@ async function getContext() {
|
|
|
60
61
|
}
|
|
61
62
|
|
|
62
63
|
/** @template T */
|
|
63
|
-
async function load(/** @type {(operations: import('../support/entry.main.ts').Operations) => T} */ callback) {
|
|
64
|
+
export async function load(/** @type {(operations: import('../support/entry.main.ts').Operations) => T} */ callback) {
|
|
64
65
|
const ctx = await getContext();
|
|
65
66
|
|
|
66
67
|
try {
|
|
@@ -68,11 +69,11 @@ async function load(/** @type {(operations: import('../support/entry.main.ts').O
|
|
|
68
69
|
async () => JSON.stringify({ extends: `${COMP_MOD}/tsconfig.trv.json` }, null, 2));
|
|
69
70
|
|
|
70
71
|
await writeIfStale(ctx.srcPath('package.json'), ctx.destPath(`${COMP_MOD}/package.json`),
|
|
71
|
-
async text => JSON.stringify({ ...JSON.parse(text || '{}'), type:
|
|
72
|
+
async text => JSON.stringify({ ...JSON.parse(text || '{}'), type: 'module' }, null, 2));
|
|
72
73
|
|
|
73
74
|
await Promise.all((await ctx.supportFiles()).map(file =>
|
|
74
75
|
writeIfStale(ctx.srcPath(file), ctx.destPath(`${COMP_MOD}/${file}`),
|
|
75
|
-
text => transpile(ctx.cleanImports(text)
|
|
76
|
+
text => transpile(ctx.cleanImports(text)))));
|
|
76
77
|
|
|
77
78
|
process.setSourceMapsEnabled(true); // Ensure source map during compilation/development
|
|
78
79
|
process.env.NODE_OPTIONS = `${process.env.NODE_OPTIONS ?? ''} --enable-source-maps`; // Ensure it passes to children
|
|
@@ -84,6 +85,4 @@ async function load(/** @type {(operations: import('../support/entry.main.ts').O
|
|
|
84
85
|
await rm(ctx.destPath(COMP_MOD), { recursive: true, force: true });
|
|
85
86
|
throw error;
|
|
86
87
|
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
module.exports = { load };
|
|
88
|
+
}
|
|
@@ -41,13 +41,16 @@ export function getManifestContext(root = process.cwd()) {
|
|
|
41
41
|
const modPkg = (!!workspace.workspaces && process.env.TRV_MODULE) ?
|
|
42
42
|
readPackage(resolve(`${process.env.TRV_MODULE}/package.json`)) :
|
|
43
43
|
findPackage(root, pkg => !!pkg) ?? workspace;
|
|
44
|
+
if (workspace.type !== 'module') {
|
|
45
|
+
console.error('ERROR: Only ESM modules are supported, package.json must be of type module');
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
44
48
|
return {
|
|
45
49
|
workspace: {
|
|
46
50
|
name: workspace.name ?? 'untitled',
|
|
47
51
|
path: workspace.path,
|
|
48
52
|
mono: !!workspace.workspaces,
|
|
49
53
|
manager: existsSync(path.resolve(workspace.path, 'yarn.lock')) ? 'yarn' : 'npm',
|
|
50
|
-
type: workspace.type ?? 'commonjs',
|
|
51
54
|
defaultEnv: workspace.travetto?.defaultEnv ?? 'local'
|
|
52
55
|
},
|
|
53
56
|
build: {
|
|
@@ -66,4 +69,4 @@ export function getManifestContext(root = process.cwd()) {
|
|
|
66
69
|
}
|
|
67
70
|
};
|
|
68
71
|
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ25ELE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBTzVDLHNDQUFzQztBQUN0QyxNQUFNLE1BQU0sR0FBRyxDQUFDLFFBQWdCLEVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUMxSSxNQUFNLE9BQU8sR0FBRyxDQUFDLFFBQWdCLEVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzdFLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBWSxFQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFFOUgsbUJBQW1CO0FBQ25CLFNBQVMsV0FBVyxDQUFDLElBQVksRUFBRSxJQUEyQjtJQUM1RCxJQUFJLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDO0lBQ3pCLElBQUksUUFBZ0IsQ0FBQztJQUNyQixJQUFJLEdBQW9CLENBQUM7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
|
package/bin/trvc.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { load } from './entry.common.js';
|
|
3
|
+
|
|
2
4
|
const help = `
|
|
3
5
|
npx trvc [command]
|
|
4
6
|
|
|
@@ -17,7 +19,7 @@ Available Commands:
|
|
|
17
19
|
const toJson = (/** @type {number} */ depth) => value => process.stdout.write(`${JSON.stringify(value, undefined, depth)}\n`) ||
|
|
18
20
|
new Promise(resolve => process.stdout.once('drain', resolve));
|
|
19
21
|
|
|
20
|
-
|
|
22
|
+
load(operations => {
|
|
21
23
|
const [operation, ...all] = process.argv.slice(2);
|
|
22
24
|
const args = all.filter(arg => !arg.startsWith('-'));
|
|
23
25
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@travetto/compiler",
|
|
3
|
-
"version": "7.0.0-rc.
|
|
3
|
+
"version": "7.0.0-rc.4",
|
|
4
|
+
"type": "module",
|
|
4
5
|
"description": "The compiler infrastructure for the Travetto framework",
|
|
5
6
|
"keywords": [
|
|
6
7
|
"compiler",
|
|
@@ -30,11 +31,11 @@
|
|
|
30
31
|
},
|
|
31
32
|
"dependencies": {
|
|
32
33
|
"@parcel/watcher": "^2.5.1",
|
|
33
|
-
"@travetto/manifest": "^7.0.0-rc.
|
|
34
|
-
"@travetto/transformer": "^7.0.0-rc.
|
|
34
|
+
"@travetto/manifest": "^7.0.0-rc.3",
|
|
35
|
+
"@travetto/transformer": "^7.0.0-rc.4"
|
|
35
36
|
},
|
|
36
37
|
"peerDependencies": {
|
|
37
|
-
"@travetto/cli": "^7.0.0-rc.
|
|
38
|
+
"@travetto/cli": "^7.0.0-rc.5"
|
|
38
39
|
},
|
|
39
40
|
"peerDependenciesMeta": {
|
|
40
41
|
"@travetto/cli": {
|
package/src/compiler.ts
CHANGED
package/src/state.ts
CHANGED
|
@@ -172,7 +172,7 @@ export class CompilerState implements ts.CompilerHost {
|
|
|
172
172
|
const tscOutputFile = path.resolve(this.#outputPath, ManifestModuleUtil.withOutputExtension(relativeSource));
|
|
173
173
|
const outputFile = path.resolve(this.#outputPath, ManifestModuleUtil.withOutputExtension(relativeOutput));
|
|
174
174
|
|
|
175
|
-
const entry: CompileStateEntry = { sourceFile, outputFile, module, tscOutputFile };
|
|
175
|
+
const entry: CompileStateEntry = { sourceFile, outputFile, module, tscOutputFile, import: `${module.name}/${moduleFile}` };
|
|
176
176
|
|
|
177
177
|
this.#outputToEntry.set(outputFile, entry);
|
|
178
178
|
this.#sourceFiles.add(sourceFile);
|
|
@@ -256,6 +256,10 @@ export class CompilerState implements ts.CompilerHost {
|
|
|
256
256
|
if (outputFile.endsWith('package.json')) {
|
|
257
257
|
text = CompilerUtil.rewritePackageJSON(this.#manifest, text);
|
|
258
258
|
}
|
|
259
|
+
|
|
260
|
+
// JSX runtime shenanigans
|
|
261
|
+
text = text.replace(/support\/jsx-runtime"/g, 'support/jsx-runtime.js"');
|
|
262
|
+
|
|
259
263
|
const location = this.#tscOutputFileToOuptut.get(outputFile) ?? outputFile;
|
|
260
264
|
|
|
261
265
|
if (ManifestModuleUtil.TYPINGS_WITH_MAP_EXT_REGEX.test(outputFile) || outputFile.endsWith('package.json')) {
|
package/src/types.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type ts from 'typescript';
|
|
2
2
|
|
|
3
|
-
import type { ManifestModule } from '@travetto/manifest';
|
|
3
|
+
import type { ChangeEventType, ManifestModule } from '@travetto/manifest';
|
|
4
4
|
|
|
5
5
|
export type CompileEmitError = Error | readonly ts.Diagnostic[];
|
|
6
6
|
export type CompileEmitter = (file: string, newProgram?: boolean) => Promise<CompileEmitError | undefined>;
|
|
7
7
|
export type CompileEmitEvent = { file: string, i: number, total: number, error?: CompileEmitError, duration: number };
|
|
8
|
-
export type CompileStateEntry = { sourceFile: string, tscOutputFile: string, outputFile?: string, module: ManifestModule };
|
|
9
|
-
export type CompilerWatchEvent = { action:
|
|
8
|
+
export type CompileStateEntry = { sourceFile: string, tscOutputFile: string, outputFile?: string, module: ManifestModule, import: string };
|
|
9
|
+
export type CompilerWatchEvent = { action: ChangeEventType, file: string, entry: CompileStateEntry };
|
|
10
10
|
export class CompilerReset extends Error { }
|
package/src/util.ts
CHANGED
|
@@ -29,7 +29,7 @@ export class CompilerUtil {
|
|
|
29
29
|
if (pkg.main) {
|
|
30
30
|
pkg.main = ManifestModuleUtil.withOutputExtension(pkg.main);
|
|
31
31
|
}
|
|
32
|
-
pkg.type =
|
|
32
|
+
pkg.type = 'module';
|
|
33
33
|
for (const key of ['devDependencies', 'dependencies', 'peerDependencies'] as const) {
|
|
34
34
|
if (key in pkg) {
|
|
35
35
|
for (const dependency of Object.keys(pkg[key] ?? {})) {
|
package/support/setup.ts
CHANGED
|
@@ -77,7 +77,7 @@ export class CompilerSetup {
|
|
|
77
77
|
const main = pkg.main ? this.#sourceToOutputExt(pkg.main) : undefined;
|
|
78
78
|
const files = pkg.files?.map(file => this.#sourceToOutputExt(file));
|
|
79
79
|
|
|
80
|
-
const content = JSON.stringify({ ...pkg, main, type:
|
|
80
|
+
const content = JSON.stringify({ ...pkg, main, type: 'module', files }, null, 2);
|
|
81
81
|
await CommonUtil.writeTextFile(outputFile, content);
|
|
82
82
|
}
|
|
83
83
|
}
|
|
@@ -208,7 +208,7 @@ export class CompilerSetup {
|
|
|
208
208
|
const delta = await Log.wrap('delta', async log => {
|
|
209
209
|
if (changes) {
|
|
210
210
|
log.debug('Skipping, everything changed');
|
|
211
|
-
return [{ type: '
|
|
211
|
+
return [{ type: 'update', file: '*', module: ctx.workspace.name, sourceFile: '' } as const];
|
|
212
212
|
} else {
|
|
213
213
|
return ManifestDeltaUtil.produceDelta(manifest);
|
|
214
214
|
}
|
|
@@ -241,6 +241,6 @@ export class CompilerSetup {
|
|
|
241
241
|
}
|
|
242
242
|
});
|
|
243
243
|
|
|
244
|
-
return delta.filter(event => event.type === '
|
|
244
|
+
return delta.filter(event => event.type === 'create' || event.type === 'update');
|
|
245
245
|
}
|
|
246
246
|
}
|
package/support/ts-util.ts
CHANGED
|
@@ -33,8 +33,8 @@ export class TypescriptUtil {
|
|
|
33
33
|
sourceRoot: ctx.workspace.path,
|
|
34
34
|
rootDir: ctx.workspace.path,
|
|
35
35
|
outDir: CommonUtil.resolveWorkspace(ctx),
|
|
36
|
-
moduleResolution:
|
|
37
|
-
module:
|
|
36
|
+
moduleResolution: ts.ModuleResolutionKind.Bundler,
|
|
37
|
+
module: ts.ModuleKind.ESNext,
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
40
|
return OPT_CACHE[ctx.workspace.path];
|
package/support/types.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import type { ChangeEventType } from '@travetto/manifest';
|
|
2
|
+
|
|
1
3
|
export type CompilerMode = 'build' | 'watch';
|
|
2
4
|
|
|
3
5
|
export type CompilerStateType = 'startup' | 'init' | 'compile-start' | 'compile-end' | 'watch-start' | 'watch-end' | 'reset' | 'closed';
|
|
4
|
-
export type CompilerChangeEvent = { file: string, action:
|
|
6
|
+
export type CompilerChangeEvent = { file: string, action: ChangeEventType, output: string, module: string, import: string, time: number };
|
|
5
7
|
export type CompilerLogLevel = 'info' | 'debug' | 'warn' | 'error';
|
|
6
8
|
export type CompilerLogEvent = { level: CompilerLogLevel, message: string, time?: number, args?: unknown[], scope?: string };
|
|
7
9
|
export type CompilerProgressEvent = { idx: number, total: number, message: string, operation: 'compile', complete?: boolean };
|