@venizia/ignis-boot 0.2.0 → 0.2.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 (107) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/bun/auto-group.d.ts +22 -0
  3. package/dist/cjs/bun/auto-group.d.ts.map +1 -0
  4. package/dist/cjs/bun/auto-group.js +50 -0
  5. package/dist/cjs/bun/auto-group.js.map +1 -0
  6. package/dist/cjs/bun/auto-loader.d.ts +9 -0
  7. package/dist/cjs/bun/auto-loader.d.ts.map +1 -0
  8. package/dist/cjs/bun/auto-loader.js +26 -0
  9. package/dist/cjs/bun/auto-loader.js.map +1 -0
  10. package/dist/cjs/bun/auto.d.ts +5 -0
  11. package/dist/cjs/bun/auto.d.ts.map +1 -0
  12. package/dist/cjs/bun/auto.js +11 -0
  13. package/dist/cjs/bun/auto.js.map +1 -0
  14. package/dist/cjs/bun/group-resolver.d.ts +15 -0
  15. package/dist/cjs/bun/group-resolver.d.ts.map +1 -0
  16. package/dist/cjs/bun/group-resolver.js +38 -0
  17. package/dist/cjs/bun/group-resolver.js.map +1 -0
  18. package/dist/cjs/bun/index.d.ts +6 -0
  19. package/dist/cjs/bun/index.d.ts.map +1 -0
  20. package/dist/cjs/bun/index.js +22 -0
  21. package/dist/cjs/bun/index.js.map +1 -0
  22. package/dist/cjs/bun/plugin.d.ts +39 -0
  23. package/dist/cjs/bun/plugin.d.ts.map +1 -0
  24. package/dist/cjs/bun/plugin.js +224 -0
  25. package/dist/cjs/bun/plugin.js.map +1 -0
  26. package/dist/cjs/bun/sources.d.ts +17 -0
  27. package/dist/cjs/bun/sources.d.ts.map +1 -0
  28. package/dist/cjs/bun/sources.js +48 -0
  29. package/dist/cjs/bun/sources.js.map +1 -0
  30. package/dist/cjs/clis/artifacts.js +4 -2
  31. package/dist/cjs/clis/artifacts.js.map +1 -1
  32. package/dist/cjs/generator/common/constants.d.ts +9 -0
  33. package/dist/cjs/generator/common/constants.d.ts.map +1 -1
  34. package/dist/cjs/generator/common/constants.js +13 -2
  35. package/dist/cjs/generator/common/constants.js.map +1 -1
  36. package/dist/cjs/generator/common/types.d.ts +16 -1
  37. package/dist/cjs/generator/common/types.d.ts.map +1 -1
  38. package/dist/cjs/generator/emitter.d.ts +12 -0
  39. package/dist/cjs/generator/emitter.d.ts.map +1 -1
  40. package/dist/cjs/generator/emitter.js +19 -5
  41. package/dist/cjs/generator/emitter.js.map +1 -1
  42. package/dist/cjs/generator/index.d.ts +2 -0
  43. package/dist/cjs/generator/index.d.ts.map +1 -1
  44. package/dist/cjs/generator/index.js +12 -6
  45. package/dist/cjs/generator/index.js.map +1 -1
  46. package/dist/cjs/generator/reexport.d.ts +28 -0
  47. package/dist/cjs/generator/reexport.d.ts.map +1 -0
  48. package/dist/cjs/generator/reexport.js +131 -0
  49. package/dist/cjs/generator/reexport.js.map +1 -0
  50. package/dist/cjs/generator/scanner.d.ts +3 -1
  51. package/dist/cjs/generator/scanner.d.ts.map +1 -1
  52. package/dist/cjs/generator/scanner.js +62 -10
  53. package/dist/cjs/generator/scanner.js.map +1 -1
  54. package/dist/esm/bun/auto-group.d.ts +22 -0
  55. package/dist/esm/bun/auto-group.d.ts.map +1 -0
  56. package/dist/esm/bun/auto-group.js +46 -0
  57. package/dist/esm/bun/auto-group.js.map +1 -0
  58. package/dist/esm/bun/auto-loader.d.ts +9 -0
  59. package/dist/esm/bun/auto-loader.d.ts.map +1 -0
  60. package/dist/esm/bun/auto-loader.js +22 -0
  61. package/dist/esm/bun/auto-loader.js.map +1 -0
  62. package/dist/esm/bun/auto.d.ts +5 -0
  63. package/dist/esm/bun/auto.d.ts.map +1 -0
  64. package/dist/esm/bun/auto.js +9 -0
  65. package/dist/esm/bun/auto.js.map +1 -0
  66. package/dist/esm/bun/group-resolver.d.ts +15 -0
  67. package/dist/esm/bun/group-resolver.d.ts.map +1 -0
  68. package/dist/esm/bun/group-resolver.js +34 -0
  69. package/dist/esm/bun/group-resolver.js.map +1 -0
  70. package/dist/esm/bun/index.d.ts +6 -0
  71. package/dist/esm/bun/index.d.ts.map +1 -0
  72. package/dist/esm/bun/index.js +6 -0
  73. package/dist/esm/bun/index.js.map +1 -0
  74. package/dist/esm/bun/plugin.d.ts +39 -0
  75. package/dist/esm/bun/plugin.d.ts.map +1 -0
  76. package/dist/esm/bun/plugin.js +217 -0
  77. package/dist/esm/bun/plugin.js.map +1 -0
  78. package/dist/esm/bun/sources.d.ts +17 -0
  79. package/dist/esm/bun/sources.d.ts.map +1 -0
  80. package/dist/esm/bun/sources.js +44 -0
  81. package/dist/esm/bun/sources.js.map +1 -0
  82. package/dist/esm/clis/artifacts.js +5 -3
  83. package/dist/esm/clis/artifacts.js.map +1 -1
  84. package/dist/esm/generator/common/constants.d.ts +9 -0
  85. package/dist/esm/generator/common/constants.d.ts.map +1 -1
  86. package/dist/esm/generator/common/constants.js +11 -1
  87. package/dist/esm/generator/common/constants.js.map +1 -1
  88. package/dist/esm/generator/common/types.d.ts +16 -1
  89. package/dist/esm/generator/common/types.d.ts.map +1 -1
  90. package/dist/esm/generator/emitter.d.ts +12 -0
  91. package/dist/esm/generator/emitter.d.ts.map +1 -1
  92. package/dist/esm/generator/emitter.js +19 -5
  93. package/dist/esm/generator/emitter.js.map +1 -1
  94. package/dist/esm/generator/index.d.ts +2 -0
  95. package/dist/esm/generator/index.d.ts.map +1 -1
  96. package/dist/esm/generator/index.js +12 -6
  97. package/dist/esm/generator/index.js.map +1 -1
  98. package/dist/esm/generator/reexport.d.ts +28 -0
  99. package/dist/esm/generator/reexport.d.ts.map +1 -0
  100. package/dist/esm/generator/reexport.js +124 -0
  101. package/dist/esm/generator/reexport.js.map +1 -0
  102. package/dist/esm/generator/scanner.d.ts +3 -1
  103. package/dist/esm/generator/scanner.d.ts.map +1 -1
  104. package/dist/esm/generator/scanner.js +63 -11
  105. package/dist/esm/generator/scanner.js.map +1 -1
  106. package/dist/esm/package.json +3 -1
  107. package/package.json +23 -14
@@ -0,0 +1,217 @@
1
+ import { getError } from '@venizia/ignis-helpers';
2
+ import { existsSync, readFileSync, realpathSync } from 'node:fs';
3
+ import { dirname, join, resolve, sep } from 'node:path';
4
+ import ts from 'typescript';
5
+ import { ArtifactIndexEmitter, ArtifactScanner, ArtifactStereotypes } from '../generator/index.js';
6
+ import { ArtifactSources } from './sources.js';
7
+ /** Serves `ignis:artifacts` - the application's generated index, rendered in memory from the scanner. At run time it is a virtual module (`build.module`); in `Bun.build` it is resolved and loaded (`onResolve`/`onLoad`), so a binary carries the list and never scans. */
8
+ export class IgnisArtifactsPlugin {
9
+ static { this.NAME = 'ignis-artifacts'; }
10
+ static { this.VIRTUAL = 'ignis:artifacts'; }
11
+ static { this.EXPORT_NAME = 'GeneratedArtifacts'; }
12
+ /** `@venizia/ignis-boot/auto`, from source or from either dist format - replaced at build time by a static re-export of the virtual module. */
13
+ static { this.AUTO_MODULE = /[\\/](?:@venizia[\\/]ignis-boot|packages[\\/]boot)[\\/](?:dist[\\/](?:esm|cjs)|src)[\\/]bun[\\/]auto\.(?:ts|js)$/; }
14
+ /** A text test for a file worth parsing: `ArtifactGroup.define(`, with any spacing or line break around the dot. */
15
+ static { this.DEFINE_CALL = /ArtifactGroup\s*\.\s*define\s*\(/; }
16
+ static { this.RUNTIME_KEY = Symbol.for('@venizia/ignis-boot:artifacts-runtime-plugin'); }
17
+ /** The `src` beside the nearest `package.json` at or above `from` (default: the working directory). */
18
+ static defaultRoot(opts = {}) {
19
+ return ArtifactSources.packageSource(opts);
20
+ }
21
+ /** The index as module source: every import absolute, since a virtual module has no directory to resolve from. */
22
+ static render(opts) {
23
+ const root = resolve(opts.root);
24
+ const outFile = join(root, '__ignis_artifacts__.ts');
25
+ const { artifacts } = ArtifactScanner.getInstance().scanWithReport({
26
+ root,
27
+ followReexports: true,
28
+ });
29
+ return ArtifactIndexEmitter.render({
30
+ artifacts,
31
+ outFile,
32
+ exportName: IgnisArtifactsPlugin.EXPORT_NAME,
33
+ command: { root, out: outFile },
34
+ absoluteImports: true,
35
+ });
36
+ }
37
+ /** Rewrites every `ArtifactGroup.define({ folder: '<literal>' })` in a source file to carry its classes as `content`, imported by absolute path - a binary then holds each group's list and never scans. A folder with no decorated class, or a define the plugin cannot read (an aliased `ArtifactGroup`, a folder that is not a string literal), fails the build. */
38
+ static rewriteGroups(opts) {
39
+ const { filePath, source } = opts;
40
+ const sourceFile = ts.createSourceFile(filePath, source, ts.ScriptTarget.Latest, true);
41
+ const aliases = new Set();
42
+ for (const statement of sourceFile.statements) {
43
+ const bindings = ts.isImportDeclaration(statement)
44
+ ? statement.importClause?.namedBindings
45
+ : undefined;
46
+ for (const element of bindings && ts.isNamedImports(bindings) ? bindings.elements : []) {
47
+ if ((element.propertyName ?? element.name).text === 'ArtifactGroup' &&
48
+ element.name.text !== 'ArtifactGroup') {
49
+ aliases.add(element.name.text);
50
+ }
51
+ }
52
+ }
53
+ const edits = [];
54
+ const imports = [];
55
+ let counter = 0;
56
+ const refuse = (node, reason) => {
57
+ const { line } = sourceFile.getLineAndCharacterOfPosition(node.getStart());
58
+ throw getError({
59
+ message: `[IgnisArtifactsPlugin] An ArtifactGroup.define at ${filePath}:${line + 1} cannot be rewritten | ${reason} - write ArtifactGroup.define({ folder: '<name>' }) with the class imported under its own name`,
60
+ });
61
+ };
62
+ const visit = (node) => {
63
+ if (ts.isCallExpression(node) &&
64
+ ts.isPropertyAccessExpression(node.expression) &&
65
+ node.expression.name.text === 'define' &&
66
+ ts.isIdentifier(node.expression.expression)) {
67
+ const callee = node.expression.expression.text;
68
+ if (aliases.has(callee)) {
69
+ refuse(node, `ArtifactGroup is imported as ${callee}`);
70
+ }
71
+ if (callee === 'ArtifactGroup') {
72
+ const [argument] = node.arguments;
73
+ if (!argument || !ts.isObjectLiteralExpression(argument)) {
74
+ refuse(node, 'the argument is not an object literal');
75
+ }
76
+ const literal = argument;
77
+ const named = (name) => literal.properties.find(entry => entry.name && ts.isIdentifier(entry.name) && entry.name.text === name);
78
+ const folderProperty = named('folder');
79
+ if (!named('content')) {
80
+ if (!folderProperty ||
81
+ !ts.isPropertyAssignment(folderProperty) ||
82
+ !ts.isStringLiteral(folderProperty.initializer)) {
83
+ refuse(node, 'folder is not a string literal');
84
+ }
85
+ const folder = folderProperty.initializer.text;
86
+ const artifacts = ArtifactSources.folderArtifacts({ folder, site: filePath });
87
+ if (artifacts.length === 0) {
88
+ throw getError({
89
+ message: `[IgnisArtifactsPlugin] ArtifactGroup '${folder}' resolved to no class | ${filePath} - check the folder name and that its classes carry a stereotype decorator`,
90
+ });
91
+ }
92
+ const fields = [];
93
+ for (const { type, field } of ArtifactStereotypes.EMIT_ORDER) {
94
+ const locals = artifacts
95
+ .filter(artifact => artifact.type === type)
96
+ .map(artifact => {
97
+ counter += 1;
98
+ const local = `__ignis_group_${counter}`;
99
+ const path = artifact.filePath.split(sep).join('/').replace(/\.ts$/, '');
100
+ imports.push(`import { ${artifact.className} as ${local} } from '${path}';`);
101
+ return local;
102
+ });
103
+ if (locals.length > 0) {
104
+ fields.push(`${field}: [${locals.join(', ')}]`);
105
+ }
106
+ }
107
+ const last = literal.properties[literal.properties.length - 1];
108
+ edits.push({
109
+ at: last ? last.getEnd() : literal.getStart() + 1,
110
+ text: `${last ? ', ' : ''}content: { ${fields.join(', ')} }`,
111
+ });
112
+ }
113
+ }
114
+ }
115
+ ts.forEachChild(node, visit);
116
+ };
117
+ visit(sourceFile);
118
+ let rewritten = source;
119
+ for (const edit of [...edits].sort((left, right) => right.at - left.at)) {
120
+ rewritten = rewritten.slice(0, edit.at) + edit.text + rewritten.slice(edit.at);
121
+ }
122
+ return imports.length > 0 ? `${imports.join('\n')}\n${rewritten}` : rewritten;
123
+ }
124
+ /** The source files that define groups: the application's own `src` and the `src` of each workspace dependency (a dependency whose real path is outside every `node_modules`), found by walking up the `node_modules` chain as Node resolution does. */
125
+ static groupDefinitionFiles(opts) {
126
+ const root = resolve(opts.root);
127
+ const packageDirectory = dirname(root);
128
+ const manifestPath = join(packageDirectory, 'package.json');
129
+ const manifest = existsSync(manifestPath) ? JSON.parse(readFileSync(manifestPath, 'utf8')) : {};
130
+ const names = Object.keys({
131
+ ...manifest.dependencies,
132
+ ...manifest.devDependencies,
133
+ ...manifest.peerDependencies,
134
+ });
135
+ const sources = new Set([root]);
136
+ for (const name of names) {
137
+ let directory = packageDirectory;
138
+ while (true) {
139
+ const linked = join(directory, 'node_modules', name);
140
+ if (existsSync(linked)) {
141
+ const real = realpathSync(linked);
142
+ if (!real.split(sep).includes('node_modules') && existsSync(join(real, 'src'))) {
143
+ sources.add(join(real, 'src'));
144
+ }
145
+ break;
146
+ }
147
+ const parent = dirname(directory);
148
+ if (parent === directory) {
149
+ break;
150
+ }
151
+ directory = parent;
152
+ }
153
+ }
154
+ const files = [];
155
+ for (const source of sources) {
156
+ if (!existsSync(source)) {
157
+ continue;
158
+ }
159
+ for (const relativePath of new Bun.Glob('**/*.ts').scanSync({ cwd: source })) {
160
+ const file = join(source, relativePath);
161
+ if (!relativePath.includes('__tests__') &&
162
+ IgnisArtifactsPlugin.DEFINE_CALL.test(readFileSync(file, 'utf8'))) {
163
+ files.push(file);
164
+ }
165
+ }
166
+ }
167
+ return files;
168
+ }
169
+ /** For `Bun.build({ plugins: [IgnisArtifactsPlugin.create()] })`; `isRuntime` is set by `registerRuntime`, which serves a virtual module instead. */
170
+ static create(opts = {}) {
171
+ const root = opts.root ?? IgnisArtifactsPlugin.defaultRoot();
172
+ const isRuntime = opts.isRuntime ?? false;
173
+ const contents = () => IgnisArtifactsPlugin.render({ root });
174
+ return {
175
+ name: IgnisArtifactsPlugin.NAME,
176
+ setup(build) {
177
+ if (isRuntime) {
178
+ build.module(IgnisArtifactsPlugin.VIRTUAL, () => ({
179
+ contents: contents(),
180
+ loader: 'ts',
181
+ }));
182
+ return;
183
+ }
184
+ const virtualPath = join(resolve(root), '__ignis_artifacts__.ts');
185
+ build.onResolve({ filter: /^ignis:artifacts$/ }, () => ({ path: virtualPath }));
186
+ build.onLoad({ filter: /__ignis_artifacts__\.ts$/ }, () => ({
187
+ contents: contents(),
188
+ loader: 'ts',
189
+ }));
190
+ const groupFiles = IgnisArtifactsPlugin.groupDefinitionFiles({ root });
191
+ if (groupFiles.length > 0) {
192
+ const escaped = groupFiles.map(file => file.replace(/[.*+?^${}()|[\]\\/]/g, '\\$&'));
193
+ build.onLoad({ filter: new RegExp(`^(?:${escaped.join('|')})$`) }, args => ({
194
+ contents: IgnisArtifactsPlugin.rewriteGroups({
195
+ filePath: args.path,
196
+ source: readFileSync(args.path, 'utf8'),
197
+ }),
198
+ loader: 'ts',
199
+ }));
200
+ }
201
+ build.onLoad({ filter: IgnisArtifactsPlugin.AUTO_MODULE }, () => ({
202
+ contents: `import { ${IgnisArtifactsPlugin.EXPORT_NAME} } from '${IgnisArtifactsPlugin.VIRTUAL}';\nimport { AutoArtifactGroup } from './auto-group.js';\nexport default new AutoArtifactGroup({ content: ${IgnisArtifactsPlugin.EXPORT_NAME} });\n`,
203
+ loader: 'ts',
204
+ }));
205
+ },
206
+ };
207
+ }
208
+ /** Registers the run-time plugin once per process; a second call is a no-op. */
209
+ static async registerRuntime(opts = {}) {
210
+ if (Reflect.get(globalThis, IgnisArtifactsPlugin.RUNTIME_KEY) === true) {
211
+ return;
212
+ }
213
+ await Bun.plugin(IgnisArtifactsPlugin.create({ ...opts, isRuntime: true }));
214
+ Reflect.set(globalThis, IgnisArtifactsPlugin.RUNTIME_KEY, true);
215
+ }
216
+ }
217
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/bun/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type IScannedArtifact } from '../generator/index.js';
2
+ /** Where a package's artifacts live: the `src` beside its nearest `package.json`, and the classes under one of its directories. One scan per package per process. */
3
+ export declare class ArtifactSources {
4
+ private static readonly scans;
5
+ /** The `src` beside the nearest `package.json` at or above `from` (default: the working directory). */
6
+ static packageSource(opts?: {
7
+ from?: string;
8
+ }): string;
9
+ /** The decorated classes under a directory named `folder` in the package whose source holds `site`. A site outside that source (a `dist` copy) is refused: its classes would be a second identity of the ones the package runs. */
10
+ static folderArtifacts(opts: {
11
+ folder: string;
12
+ site: string;
13
+ }): IScannedArtifact[];
14
+ /** Forgets every cached scan - for a long-lived process that rebuilds (a watch mode). */
15
+ static clear(): void;
16
+ }
17
+ //# sourceMappingURL=sources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sources.d.ts","sourceRoot":"","sources":["../../../src/bun/sources.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEtE,qKAAqK;AACrK,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAyC;IAEtE,uGAAuG;IACvG,MAAM,CAAC,aAAa,CAAC,IAAI,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,MAAM;IAa1D,mOAAmO;IACnO,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,gBAAgB,EAAE;IAsBlF,yFAAyF;IACzF,MAAM,CAAC,KAAK,IAAI,IAAI;CAGrB"}
@@ -0,0 +1,44 @@
1
+ import { getError } from '@venizia/ignis-helpers';
2
+ import { existsSync } from 'node:fs';
3
+ import { dirname, join, relative, resolve, sep } from 'node:path';
4
+ import { ArtifactScanner } from '../generator/index.js';
5
+ /** Where a package's artifacts live: the `src` beside its nearest `package.json`, and the classes under one of its directories. One scan per package per process. */
6
+ export class ArtifactSources {
7
+ static { this.scans = new Map(); }
8
+ /** The `src` beside the nearest `package.json` at or above `from` (default: the working directory). */
9
+ static packageSource(opts = {}) {
10
+ const start = resolve(opts.from ?? process.cwd());
11
+ let directory = start;
12
+ while (!existsSync(join(directory, 'package.json'))) {
13
+ const parent = dirname(directory);
14
+ if (parent === directory) {
15
+ return join(start, 'src');
16
+ }
17
+ directory = parent;
18
+ }
19
+ return join(directory, 'src');
20
+ }
21
+ /** The decorated classes under a directory named `folder` in the package whose source holds `site`. A site outside that source (a `dist` copy) is refused: its classes would be a second identity of the ones the package runs. */
22
+ static folderArtifacts(opts) {
23
+ const packageSource = ArtifactSources.packageSource({ from: dirname(opts.site) });
24
+ if (!resolve(opts.site).startsWith(`${packageSource}${sep}`)) {
25
+ throw getError({
26
+ message: `[ArtifactGroup] '${opts.folder}' is defined at ${opts.site}, outside the package source ${packageSource} | A package consumed through dist must ship its groups filled by its own build (IgnisArtifactsPlugin), or be consumed from source`,
27
+ });
28
+ }
29
+ let artifacts = ArtifactSources.scans.get(packageSource);
30
+ if (!artifacts) {
31
+ artifacts = ArtifactScanner.getInstance().scanWithReport({
32
+ root: packageSource,
33
+ followReexports: true,
34
+ }).artifacts;
35
+ ArtifactSources.scans.set(packageSource, artifacts);
36
+ }
37
+ return artifacts.filter(artifact => relative(packageSource, artifact.filePath).split(sep).slice(0, -1).includes(opts.folder));
38
+ }
39
+ /** Forgets every cached scan - for a long-lived process that rebuilds (a watch mode). */
40
+ static clear() {
41
+ ArtifactSources.scans.clear();
42
+ }
43
+ }
44
+ //# sourceMappingURL=sources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../../src/bun/sources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,eAAe,EAAyB,MAAM,cAAc,CAAC;AAEtE,qKAAqK;AACrK,MAAM,OAAO,eAAe;aACF,UAAK,GAAG,IAAI,GAAG,EAA8B,CAAC;IAEtE,uGAAuG;IACvG,MAAM,CAAC,aAAa,CAAC,OAA0B,EAAE;QAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAClD,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YAClC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC5B,CAAC;YACD,SAAS,GAAG,MAAM,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,mOAAmO;IACnO,MAAM,CAAC,eAAe,CAAC,IAAsC;QAC3D,MAAM,aAAa,GAAG,eAAe,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,aAAa,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC;YAC7D,MAAM,QAAQ,CAAC;gBACb,OAAO,EAAE,oBAAoB,IAAI,CAAC,MAAM,mBAAmB,IAAI,CAAC,IAAI,gCAAgC,aAAa,oIAAoI;aACtP,CAAC,CAAC;QACL,CAAC;QAED,IAAI,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC;gBACvD,IAAI,EAAE,aAAa;gBACnB,eAAe,EAAE,IAAI;aACtB,CAAC,CAAC,SAAS,CAAC;YACb,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CACjC,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CACzF,CAAC;IACJ,CAAC;IAED,yFAAyF;IACzF,MAAM,CAAC,KAAK;QACV,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC"}
@@ -2,8 +2,8 @@
2
2
  import '../common/install-quiet-logger.js';
3
3
  import { relative } from 'node:path';
4
4
  import { parseArgs } from 'node:util';
5
- import { checkArtifactIndex, generateArtifactIndex } from '../generator/index.js';
6
- const USAGE = 'ignis-artifacts <generate|check> [--root src] [--out src/generated/artifacts.ts] [--ignore a,b] [--export GeneratedArtifacts]';
5
+ import { ArtifactIndexEmitter, checkArtifactIndex, generateArtifactIndex } from '../generator/index.js';
6
+ const USAGE = 'ignis-artifacts <generate|check> [--root src] [--out src/generated/artifacts.ts] [--ignore a,b] [--export GeneratedArtifacts] [--source-module <specifier>]...';
7
7
  const { positionals, values } = parseArgs({
8
8
  args: process.argv.slice(2),
9
9
  allowPositionals: true,
@@ -12,6 +12,7 @@ const { positionals, values } = parseArgs({
12
12
  out: { type: 'string', default: 'src/generated/artifacts.ts' },
13
13
  ignore: { type: 'string' },
14
14
  export: { type: 'string', default: 'GeneratedArtifacts' },
15
+ 'source-module': { type: 'string', multiple: true },
15
16
  },
16
17
  });
17
18
  const options = {
@@ -22,6 +23,7 @@ const options = {
22
23
  .map(pattern => pattern.trim())
23
24
  .filter(Boolean),
24
25
  exportName: values.export,
26
+ sourceModules: values['source-module'],
25
27
  };
26
28
  /** One stderr line per decorated class a user `--ignore` pattern hid; silence when nothing is hidden. */
27
29
  const warnIgnored = (opts) => {
@@ -45,7 +47,7 @@ const run = () => {
45
47
  console.log(`fresh ${options.out}`);
46
48
  return 0;
47
49
  }
48
- console.error(`stale ${options.out} - run: ignis-artifacts generate --root ${options.root} --out ${options.out}`);
50
+ console.error(`stale ${options.out} - run: ${ArtifactIndexEmitter.renderCommand(options)}`);
49
51
  return 1;
50
52
  }
51
53
  default: {
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../src/clis/artifacts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../src/clis/artifacts.ts"],"names":[],"mappings":"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"}
@@ -43,4 +43,13 @@ export declare class ArtifactStereotypes {
43
43
  field: TArtifactIndexField;
44
44
  }>;
45
45
  }
46
+ /** Why a decorated class was left out of the index - reported, never silent. */
47
+ export declare class ScanSkipReasons {
48
+ static readonly ABSTRACT = "abstract";
49
+ static readonly NOT_EXPORTED = "not-exported";
50
+ static readonly IGNORED = "ignored";
51
+ static readonly SCHEME_SET: Set<string>;
52
+ static isValid(value: string): boolean;
53
+ }
54
+ export type TScanSkipReason = TConstValue<typeof ScanSkipReasons>;
46
55
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/generator/common/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,iIAAiI;AACjI,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,aAAa,mBAAmB;IAChD,MAAM,CAAC,QAAQ,CAAC,SAAS,eAAe;IACxC,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,OAAO,aAAa;IACpC,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAEhC,MAAM,CAAC,QAAQ,CAAC,UAAU,cAQvB;IAEH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC;AAE9D,4HAA4H;AAC5H,qBAAa,mBAAmB;IAC9B,MAAM,CAAC,QAAQ,CAAC,cAAc,oBAAoB;IAClD,MAAM,CAAC,QAAQ,CAAC,YAAY,iBAAiB;IAC7C,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,YAAY,kBAAkB;IAC9C,MAAM,CAAC,QAAQ,CAAC,QAAQ,cAAc;IACtC,MAAM,CAAC,QAAQ,CAAC,WAAW,iBAAiB;IAE5C,MAAM,CAAC,QAAQ,CAAC,UAAU,cAOvB;IAEH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC;AAED,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAE1E,qBAAa,mBAAmB;IAC9B,oGAAoG;IACpG,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAQnE;IAEF,MAAM,CAAC,QAAQ,CAAC,cAAc,gBAAgB;IAE9C,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAoE;IAE9F,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAItC,MAAM,CAAC,QAAQ,CAAC,cAAc,SAAiC;IAE/D,MAAM,CAAC,QAAQ,CAAC,cAAc,WAK5B;IAEF;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,aAAa,CAAC;QAAC,KAAK,EAAE,mBAAmB,CAAA;KAAE,CAAC,CAO5F;CACH"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/generator/common/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,iIAAiI;AACjI,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,aAAa,mBAAmB;IAChD,MAAM,CAAC,QAAQ,CAAC,SAAS,eAAe;IACxC,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,OAAO,aAAa;IACpC,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAEhC,MAAM,CAAC,QAAQ,CAAC,UAAU,cAQvB;IAEH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC;AAE9D,4HAA4H;AAC5H,qBAAa,mBAAmB;IAC9B,MAAM,CAAC,QAAQ,CAAC,cAAc,oBAAoB;IAClD,MAAM,CAAC,QAAQ,CAAC,YAAY,iBAAiB;IAC7C,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,YAAY,kBAAkB;IAC9C,MAAM,CAAC,QAAQ,CAAC,QAAQ,cAAc;IACtC,MAAM,CAAC,QAAQ,CAAC,WAAW,iBAAiB;IAE5C,MAAM,CAAC,QAAQ,CAAC,UAAU,cAOvB;IAEH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC;AAED,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAE1E,qBAAa,mBAAmB;IAC9B,oGAAoG;IACpG,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAQnE;IAEF,MAAM,CAAC,QAAQ,CAAC,cAAc,gBAAgB;IAE9C,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAoE;IAE9F,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAItC,MAAM,CAAC,QAAQ,CAAC,cAAc,SAA4C;IAE1E,MAAM,CAAC,QAAQ,CAAC,cAAc,WAK5B;IAEF;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,aAAa,CAAC;QAAC,KAAK,EAAE,mBAAmB,CAAA;KAAE,CAAC,CAO5F;CACH;AAED,gFAAgF;AAChF,qBAAa,eAAe;IAC1B,MAAM,CAAC,QAAQ,CAAC,QAAQ,cAAc;IACtC,MAAM,CAAC,QAAQ,CAAC,YAAY,kBAAkB;IAC9C,MAAM,CAAC,QAAQ,CAAC,OAAO,aAAa;IAEpC,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAqE;IAE/F,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC;AAED,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -56,7 +56,7 @@ export class ArtifactStereotypes {
56
56
  static isValid(value) {
57
57
  return this.SCHEME_SET.has(value);
58
58
  }
59
- static { this.SOURCE_MODULES = /^@venizia\/ignis(-kernel)?$/; }
59
+ static { this.SOURCE_MODULES = /^@venizia\/ignis(?:-kernel)?(?:\/.+)?$/; }
60
60
  static { this.DEFAULT_IGNORE = [
61
61
  '**/__tests__/**',
62
62
  '**/*.test.ts',
@@ -78,4 +78,14 @@ export class ArtifactStereotypes {
78
78
  { type: ArtifactTypes.CONTROLLER, field: ArtifactIndexFields.CONTROLLERS },
79
79
  ]; }
80
80
  }
81
+ /** Why a decorated class was left out of the index - reported, never silent. */
82
+ export class ScanSkipReasons {
83
+ static { this.ABSTRACT = 'abstract'; }
84
+ static { this.NOT_EXPORTED = 'not-exported'; }
85
+ static { this.IGNORED = 'ignored'; }
86
+ static { this.SCHEME_SET = new Set([this.ABSTRACT, this.NOT_EXPORTED, this.IGNORED]); }
87
+ static isValid(value) {
88
+ return this.SCHEME_SET.has(value);
89
+ }
90
+ }
81
91
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/generator/common/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/generator/common/constants.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import type { TArtifactType } from './constants.js';
1
+ import type { AnyType, TClass } from '@venizia/ignis-helpers';
2
+ import type { TArtifactIndexField, TArtifactType, TScanSkipReason } from './constants.js';
2
3
  export interface IScannedArtifact {
3
4
  className: string;
4
5
  /** Absolute path of the declaring file. */
@@ -9,10 +10,24 @@ export interface IScanOptions {
9
10
  root: string;
10
11
  /** Glob patterns relative to `root`; defaults to `ArtifactStereotypes.DEFAULT_IGNORE`. */
11
12
  ignore?: string[];
13
+ /** Module specifiers, matched exactly, whose stereotype imports also count - a package that re-exports the decorators. Adds to `ArtifactStereotypes.SOURCE_MODULES`. */
14
+ sourceModules?: string[];
15
+ /** Recognise a stereotype imported from any module whose exports lead, through `export *` and renaming re-exports, to a source module - a framework that re-exports the kernel's decorators. */
16
+ followReexports?: boolean;
17
+ }
18
+ /** A decorated class the index leaves out, and why. */
19
+ export interface IScanSkipped {
20
+ className: string;
21
+ filePath: string;
22
+ reason: TScanSkipReason;
12
23
  }
13
24
  /** The index content plus what a caller's `ignore` silently left out: decorated classes under a user pattern, never under a default one. */
14
25
  export interface IScanReport {
15
26
  artifacts: IScannedArtifact[];
16
27
  ignored: IScannedArtifact[];
28
+ /** Every decorated class left out - abstract, not a named export, or under a user ignore pattern. */
29
+ skipped: IScanSkipped[];
17
30
  }
31
+ /** The object a generated index exports - structurally the kernel's `IArtifactIndex` (boot does not depend on the kernel). */
32
+ export type TGeneratedArtifactIndex = Partial<Record<TArtifactIndexField, ReadonlyArray<TClass<AnyType>>>>;
18
33
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/generator/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,0FAA0F;IAC1F,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,4IAA4I;AAC5I,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/generator/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEvF,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,0FAA0F;IAC1F,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,wKAAwK;IACxK,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,gMAAgM;IAChM,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,uDAAuD;AACvD,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,4IAA4I;AAC5I,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,qGAAqG;IACrG,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,8HAA8H;AAC9H,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAC3C,MAAM,CAAC,mBAAmB,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAC5D,CAAC"}
@@ -4,22 +4,34 @@ export declare class ArtifactIndexEmitter {
4
4
  /** Mirrors `printWidth` in @venizia/dev-configs prettier settings. */
5
5
  static readonly PRINT_WIDTH = 100;
6
6
  static readonly DEFAULT_EXPORT_NAME = "GeneratedArtifacts";
7
+ /** The `ignis-artifacts generate` command for these options - the header and the CLI's stale hint print the same one. */
8
+ static renderCommand(opts: {
9
+ root: string;
10
+ out: string;
11
+ ignore?: string[];
12
+ exportName?: string;
13
+ sourceModules?: string[];
14
+ }): string;
7
15
  /** The exact command that regenerates the file, so the header never points at another path than the one the build used. */
8
16
  static renderHeader(opts: {
9
17
  root: string;
10
18
  out: string;
11
19
  ignore?: string[];
12
20
  exportName?: string;
21
+ sourceModules?: string[];
13
22
  }): string;
14
23
  static render(opts: {
15
24
  artifacts: IScannedArtifact[];
16
25
  outFile: string;
17
26
  exportName: string;
27
+ /** Absolute import paths - for a virtual module, which has no directory to resolve a relative one from. */
28
+ absoluteImports?: boolean;
18
29
  /** The CLI arguments as given, for the header; `outFile` above is the resolved path used for import specifiers. */
19
30
  command: {
20
31
  root: string;
21
32
  out: string;
22
33
  ignore?: string[];
34
+ sourceModules?: string[];
23
35
  };
24
36
  }): string;
25
37
  /** One line while it fits the repo's prettier width, else one name per line - so `prettier -l` on the generated file stays quiet. */
@@ -1 +1 @@
1
- {"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../../src/generator/emitter.ts"],"names":[],"mappings":"AACA,OAAO,EAAsC,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErF,iKAAiK;AACjK,qBAAa,oBAAoB;IAC/B,sEAAsE;IACtE,MAAM,CAAC,QAAQ,CAAC,WAAW,OAAO;IAElC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,wBAAwB;IAE3D,2HAA2H;IAC3H,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,MAAM;IAYV,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAClB,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,mHAAmH;QACnH,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;KAC3D,GAAG,MAAM;IAgCV,qIAAqI;IACrI,OAAO,CAAC,MAAM,CAAC,WAAW;IAW1B,OAAO,CAAC,MAAM,CAAC,UAAU;CAI1B"}
1
+ {"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../../src/generator/emitter.ts"],"names":[],"mappings":"AACA,OAAO,EAAsC,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErF,iKAAiK;AACjK,qBAAa,oBAAoB;IAC/B,sEAAsE;IACtE,MAAM,CAAC,QAAQ,CAAC,WAAW,OAAO;IAElC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,wBAAwB;IAE3D,yHAAyH;IACzH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,GAAG,MAAM;IAeV,2HAA2H;IAC3H,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,GAAG,MAAM;IAIV,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAClB,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,2GAA2G;QAC3G,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,mHAAmH;QACnH,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;YAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;KACrF,GAAG,MAAM;IAoCV,qIAAqI;IACrI,OAAO,CAAC,MAAM,CAAC,WAAW;IAW1B,OAAO,CAAC,MAAM,CAAC,UAAU;CAO1B"}
@@ -5,9 +5,9 @@ export class ArtifactIndexEmitter {
5
5
  /** Mirrors `printWidth` in @venizia/dev-configs prettier settings. */
6
6
  static { this.PRINT_WIDTH = 100; }
7
7
  static { this.DEFAULT_EXPORT_NAME = 'GeneratedArtifacts'; }
8
- /** The exact command that regenerates the file, so the header never points at another path than the one the build used. */
9
- static renderHeader(opts) {
10
- const { root, out, ignore = [], exportName } = opts;
8
+ /** The `ignis-artifacts generate` command for these options - the header and the CLI's stale hint print the same one. */
9
+ static renderCommand(opts) {
10
+ const { root, out, ignore = [], exportName, sourceModules = [] } = opts;
11
11
  const flags = [`--root ${root}`, `--out ${out}`];
12
12
  if (ignore.length > 0) {
13
13
  flags.push(`--ignore ${ignore.join(',')}`);
@@ -15,7 +15,14 @@ export class ArtifactIndexEmitter {
15
15
  if (exportName && exportName !== ArtifactIndexEmitter.DEFAULT_EXPORT_NAME) {
16
16
  flags.push(`--export ${exportName}`);
17
17
  }
18
- return `// AUTO-GENERATED by @venizia/ignis-boot - do not edit. Regenerate: ignis-artifacts generate ${flags.join(' ')}`;
18
+ for (const sourceModule of sourceModules) {
19
+ flags.push(`--source-module ${sourceModule}`);
20
+ }
21
+ return `ignis-artifacts generate ${flags.join(' ')}`;
22
+ }
23
+ /** The exact command that regenerates the file, so the header never points at another path than the one the build used. */
24
+ static renderHeader(opts) {
25
+ return `// AUTO-GENERATED by @venizia/ignis-boot - do not edit. Regenerate: ${ArtifactIndexEmitter.renderCommand(opts)}`;
19
26
  }
20
27
  static render(opts) {
21
28
  const { artifacts, outFile, exportName, command } = opts;
@@ -23,7 +30,11 @@ export class ArtifactIndexEmitter {
23
30
  const imports = emitted
24
31
  .map(artifact => ({
25
32
  name: artifact.className,
26
- path: ArtifactIndexEmitter.importPath({ from: outFile, to: artifact.filePath }),
33
+ path: ArtifactIndexEmitter.importPath({
34
+ from: outFile,
35
+ to: artifact.filePath,
36
+ isAbsolute: opts.absoluteImports ?? false,
37
+ }),
27
38
  }))
28
39
  .sort((a, b) => a.path.localeCompare(b.path) || a.name.localeCompare(b.name))
29
40
  .map(entry => `import { ${entry.name} } from '${entry.path}';`);
@@ -54,6 +65,9 @@ export class ArtifactIndexEmitter {
54
65
  return [` ${field}: [`, ...names.map(name => ` ${name},`), ' ],'];
55
66
  }
56
67
  static importPath(opts) {
68
+ if (opts.isAbsolute) {
69
+ return opts.to.split(sep).join('/').replace(/\.ts$/, '');
70
+ }
57
71
  const raw = relative(dirname(opts.from), opts.to).split(sep).join('/').replace(/\.ts$/, '');
58
72
  return raw.startsWith('.') ? raw : `./${raw}`;
59
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../../src/generator/emitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../../src/generator/emitter.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@ export interface IGenerateOptions {
5
5
  ignore?: string[];
6
6
  /** Name of the exported constant; default `GeneratedArtifacts`. */
7
7
  exportName?: string;
8
+ /** Extra module specifiers whose stereotype imports count; see `IScanOptions.sourceModules`. */
9
+ sourceModules?: string[];
8
10
  }
9
11
  /** Writes the index only when its content changed, so an unchanged tree leaves the file's mtime alone. */
10
12
  export declare const generateArtifactIndex: (opts: IGenerateOptions) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generator/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAI9D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAiBD,0GAA0G;AAC1G,eAAO,MAAM,qBAAqB,GAChC,MAAM,gBAAgB,KACrB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,WAa1C,CAAC;AAKF,4GAA4G;AAC5G,eAAO,MAAM,kBAAkB,GAC7B,MAAM,gBAAgB,KACrB;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAQ7B,CAAC;AAEF,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generator/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAI9D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gGAAgG;IAChG,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAuBD,0GAA0G;AAC1G,eAAO,MAAM,qBAAqB,GAChC,MAAM,gBAAgB,KACrB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,WAa1C,CAAC;AAKF,4GAA4G;AAC5G,eAAO,MAAM,kBAAkB,GAC7B,MAAM,gBAAgB,KACrB;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAQ7B,CAAC;AAEF,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}