@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 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#L20) 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.
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#L20) 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#L20) 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.
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.
@@ -1,12 +1,14 @@
1
1
  // @ts-check
2
2
  /* eslint-disable no-undef */
3
- const { stat, readFile, writeFile, mkdir, rm, readdir } = require('node:fs/promises');
4
- const path = require('node:path');
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 = '', esm = true, full = true) {
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: esm ? ts.ModuleKind.ESNext : ts.ModuleKind.CommonJS,
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 = require.resolve('@travetto/manifest/src/context.ts');
36
- const ctxDest = path.resolve(__dirname, 'gen.context.mjs');
37
- await writeIfStale(ctxFile, ctxDest, content => transpile(content, true, false));
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: ctx.packageType }, null, 2));
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), ctx.packageType === 'module'))));
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ25ELE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBTzVDLHNDQUFzQztBQUN0QyxNQUFNLE1BQU0sR0FBRyxDQUFDLFFBQWdCLEVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUMxSSxNQUFNLE9BQU8sR0FBRyxDQUFDLFFBQWdCLEVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzdFLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBWSxFQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFFOUgsbUJBQW1CO0FBQ25CLFNBQVMsV0FBVyxDQUFDLElBQVksRUFBRSxJQUEyQjtJQUM1RCxJQUFJLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDO0lBQ3pCLElBQUksUUFBZ0IsQ0FBQztJQUNyQixJQUFJLEdBQW9CLENBQUM7SUFDekIsTUFBTSxRQUFRLEdBQVUsRUFBRSxDQUFDO0lBRTNCLEdBQUcsQ0FBQztRQUNGLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLFFBQVEsR0FBRyxNQUFNLENBQUM7UUFDbEIsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDdkQsR0FBRyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDN0QsQ0FBQyxRQUNDLFFBQVEsS0FBSyxNQUFNLElBQUksY0FBYztRQUNyQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxtQkFBbUI7UUFDakMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxxQkFBcUI7TUFDL0Q7SUFFRixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDbkQsQ0FBQztTQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3pDLGtFQUFrRTtRQUNsRSxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxPQUFlLE9BQU8sQ0FBQyxHQUFHLEVBQUU7SUFDN0QsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNsRyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDOUMsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0YsTUFBTSxRQUFRLEdBQUcsR0FBRyxTQUFTLENBQUMsSUFBSSxHQUFHLENBQUM7SUFDdEMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDakUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsV0FBVyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUM7SUFFL0MsT0FBTztRQUNMLFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxJQUFJLFVBQVU7WUFDbEMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO1lBQ3BCLElBQUksRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVU7WUFDNUIsT0FBTyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLO1lBQy9FLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxJQUFJLFVBQVU7WUFDbEMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQUUsVUFBVSxJQUFJLE9BQU87U0FDdEQ7UUFDRCxLQUFLLEVBQUU7WUFDTCxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxvQkFBb0IsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3hFLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUM3RyxjQUFjLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLElBQUksZUFBZSxDQUFDO1lBQ2hFLFlBQVksRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksSUFBSSxhQUFhLENBQUM7WUFDMUQsVUFBVSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLFdBQVcsQ0FBQztZQUNwRCxXQUFXLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksWUFBWSxDQUFDO1NBQ3hEO1FBQ0QsSUFBSSxFQUFFO1lBQ0osSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLElBQUksVUFBVTtZQUMvQixNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUN6QyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87WUFDdkIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1NBQ2hDO0tBQ0YsQ0FBQztBQUNKLENBQUMifQ==
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
- require('./entry.common.js').load(operations => {
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.2",
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.1",
34
- "@travetto/transformer": "^7.0.0-rc.2"
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.2"
38
+ "@travetto/cli": "^7.0.0-rc.5"
38
39
  },
39
40
  "peerDependenciesMeta": {
40
41
  "@travetto/cli": {
package/src/compiler.ts CHANGED
@@ -225,6 +225,7 @@ export class Compiler {
225
225
  action: event.action,
226
226
  time: Date.now(),
227
227
  file: event.file,
228
+ import: event.entry.import,
228
229
  output: event.entry.outputFile!,
229
230
  module: event.entry.module.name
230
231
  });
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: 'create' | 'update' | 'delete', file: string, entry: CompileStateEntry };
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 = manifest.workspace.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: ctx.workspace.type, files }, null, 2);
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: 'changed', file: '*', module: ctx.workspace.name, sourceFile: '' } as const];
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 === 'added' || event.type === 'changed');
244
+ return delta.filter(event => event.type === 'create' || event.type === 'update');
245
245
  }
246
246
  }
@@ -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: (ctx.workspace.type === 'commonjs' ? ts.ModuleResolutionKind.NodeNext : ts.ModuleResolutionKind.Bundler),
37
- module: ctx.workspace.type === 'commonjs' ? ts.ModuleKind.NodeNext : ts.ModuleKind.ESNext,
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: 'create' | 'update' | 'delete', output: string, module: string, time: number };
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 };
package/tsconfig.trv.json CHANGED
@@ -5,7 +5,8 @@
5
5
  "moduleResolution": "Bundler",
6
6
  "allowImportingTsExtensions": true,
7
7
  "lib": [
8
- "ES2024"
8
+ "ES2024",
9
+ "ESNext.Collection"
9
10
  ],
10
11
  "jsx": "react-jsx",
11
12
  "strict": true,