@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.
- package/README.md +1 -1
- package/dist/cjs/bun/auto-group.d.ts +22 -0
- package/dist/cjs/bun/auto-group.d.ts.map +1 -0
- package/dist/cjs/bun/auto-group.js +50 -0
- package/dist/cjs/bun/auto-group.js.map +1 -0
- package/dist/cjs/bun/auto-loader.d.ts +9 -0
- package/dist/cjs/bun/auto-loader.d.ts.map +1 -0
- package/dist/cjs/bun/auto-loader.js +26 -0
- package/dist/cjs/bun/auto-loader.js.map +1 -0
- package/dist/cjs/bun/auto.d.ts +5 -0
- package/dist/cjs/bun/auto.d.ts.map +1 -0
- package/dist/cjs/bun/auto.js +11 -0
- package/dist/cjs/bun/auto.js.map +1 -0
- package/dist/cjs/bun/group-resolver.d.ts +15 -0
- package/dist/cjs/bun/group-resolver.d.ts.map +1 -0
- package/dist/cjs/bun/group-resolver.js +38 -0
- package/dist/cjs/bun/group-resolver.js.map +1 -0
- package/dist/cjs/bun/index.d.ts +6 -0
- package/dist/cjs/bun/index.d.ts.map +1 -0
- package/dist/cjs/bun/index.js +22 -0
- package/dist/cjs/bun/index.js.map +1 -0
- package/dist/cjs/bun/plugin.d.ts +39 -0
- package/dist/cjs/bun/plugin.d.ts.map +1 -0
- package/dist/cjs/bun/plugin.js +224 -0
- package/dist/cjs/bun/plugin.js.map +1 -0
- package/dist/cjs/bun/sources.d.ts +17 -0
- package/dist/cjs/bun/sources.d.ts.map +1 -0
- package/dist/cjs/bun/sources.js +48 -0
- package/dist/cjs/bun/sources.js.map +1 -0
- package/dist/cjs/clis/artifacts.js +4 -2
- package/dist/cjs/clis/artifacts.js.map +1 -1
- package/dist/cjs/generator/common/constants.d.ts +9 -0
- package/dist/cjs/generator/common/constants.d.ts.map +1 -1
- package/dist/cjs/generator/common/constants.js +13 -2
- package/dist/cjs/generator/common/constants.js.map +1 -1
- package/dist/cjs/generator/common/types.d.ts +16 -1
- package/dist/cjs/generator/common/types.d.ts.map +1 -1
- package/dist/cjs/generator/emitter.d.ts +12 -0
- package/dist/cjs/generator/emitter.d.ts.map +1 -1
- package/dist/cjs/generator/emitter.js +19 -5
- package/dist/cjs/generator/emitter.js.map +1 -1
- package/dist/cjs/generator/index.d.ts +2 -0
- package/dist/cjs/generator/index.d.ts.map +1 -1
- package/dist/cjs/generator/index.js +12 -6
- package/dist/cjs/generator/index.js.map +1 -1
- package/dist/cjs/generator/reexport.d.ts +28 -0
- package/dist/cjs/generator/reexport.d.ts.map +1 -0
- package/dist/cjs/generator/reexport.js +131 -0
- package/dist/cjs/generator/reexport.js.map +1 -0
- package/dist/cjs/generator/scanner.d.ts +3 -1
- package/dist/cjs/generator/scanner.d.ts.map +1 -1
- package/dist/cjs/generator/scanner.js +62 -10
- package/dist/cjs/generator/scanner.js.map +1 -1
- package/dist/esm/bun/auto-group.d.ts +22 -0
- package/dist/esm/bun/auto-group.d.ts.map +1 -0
- package/dist/esm/bun/auto-group.js +46 -0
- package/dist/esm/bun/auto-group.js.map +1 -0
- package/dist/esm/bun/auto-loader.d.ts +9 -0
- package/dist/esm/bun/auto-loader.d.ts.map +1 -0
- package/dist/esm/bun/auto-loader.js +22 -0
- package/dist/esm/bun/auto-loader.js.map +1 -0
- package/dist/esm/bun/auto.d.ts +5 -0
- package/dist/esm/bun/auto.d.ts.map +1 -0
- package/dist/esm/bun/auto.js +9 -0
- package/dist/esm/bun/auto.js.map +1 -0
- package/dist/esm/bun/group-resolver.d.ts +15 -0
- package/dist/esm/bun/group-resolver.d.ts.map +1 -0
- package/dist/esm/bun/group-resolver.js +34 -0
- package/dist/esm/bun/group-resolver.js.map +1 -0
- package/dist/esm/bun/index.d.ts +6 -0
- package/dist/esm/bun/index.d.ts.map +1 -0
- package/dist/esm/bun/index.js +6 -0
- package/dist/esm/bun/index.js.map +1 -0
- package/dist/esm/bun/plugin.d.ts +39 -0
- package/dist/esm/bun/plugin.d.ts.map +1 -0
- package/dist/esm/bun/plugin.js +217 -0
- package/dist/esm/bun/plugin.js.map +1 -0
- package/dist/esm/bun/sources.d.ts +17 -0
- package/dist/esm/bun/sources.d.ts.map +1 -0
- package/dist/esm/bun/sources.js +44 -0
- package/dist/esm/bun/sources.js.map +1 -0
- package/dist/esm/clis/artifacts.js +5 -3
- package/dist/esm/clis/artifacts.js.map +1 -1
- package/dist/esm/generator/common/constants.d.ts +9 -0
- package/dist/esm/generator/common/constants.d.ts.map +1 -1
- package/dist/esm/generator/common/constants.js +11 -1
- package/dist/esm/generator/common/constants.js.map +1 -1
- package/dist/esm/generator/common/types.d.ts +16 -1
- package/dist/esm/generator/common/types.d.ts.map +1 -1
- package/dist/esm/generator/emitter.d.ts +12 -0
- package/dist/esm/generator/emitter.d.ts.map +1 -1
- package/dist/esm/generator/emitter.js +19 -5
- package/dist/esm/generator/emitter.js.map +1 -1
- package/dist/esm/generator/index.d.ts +2 -0
- package/dist/esm/generator/index.d.ts.map +1 -1
- package/dist/esm/generator/index.js +12 -6
- package/dist/esm/generator/index.js.map +1 -1
- package/dist/esm/generator/reexport.d.ts +28 -0
- package/dist/esm/generator/reexport.d.ts.map +1 -0
- package/dist/esm/generator/reexport.js +124 -0
- package/dist/esm/generator/reexport.js.map +1 -0
- package/dist/esm/generator/scanner.d.ts +3 -1
- package/dist/esm/generator/scanner.d.ts.map +1 -1
- package/dist/esm/generator/scanner.js +63 -11
- package/dist/esm/generator/scanner.js.map +1 -1
- package/dist/esm/package.json +3 -1
- package/package.json +23 -14
|
@@ -9,6 +9,7 @@ const node_fs_1 = require("node:fs");
|
|
|
9
9
|
const node_path_1 = require("node:path");
|
|
10
10
|
const typescript_1 = __importDefault(require("typescript"));
|
|
11
11
|
const common_1 = require("./common");
|
|
12
|
+
const reexport_1 = require("./reexport");
|
|
12
13
|
/** Finds exported classes carrying a stereotype decorator by reading the source, never by running it. */
|
|
13
14
|
class ArtifactScanner extends ignis_helpers_1.BaseHelper {
|
|
14
15
|
constructor() {
|
|
@@ -26,15 +27,26 @@ class ArtifactScanner extends ignis_helpers_1.BaseHelper {
|
|
|
26
27
|
const defaultGlobs = common_1.ArtifactStereotypes.DEFAULT_IGNORE.map(pattern => new Bun.Glob(pattern));
|
|
27
28
|
const userGlobs = (opts.ignore ?? []).map(pattern => new Bun.Glob(pattern));
|
|
28
29
|
const { kept, hidden } = this.partitionSourceFiles({ root, defaultGlobs, userGlobs });
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
const sourceModules = new Set(opts.sourceModules);
|
|
31
|
+
const resolver = opts.followReexports
|
|
32
|
+
? new reexport_1.StereotypeReexportResolver({ root, sourceModules })
|
|
33
|
+
: undefined;
|
|
34
|
+
const skipped = [];
|
|
35
|
+
const artifacts = this.sortArtifacts(kept.flatMap(filePath => this.scanFile({ filePath, sourceModules, resolver, skipped })));
|
|
36
|
+
const ignored = this.sortArtifacts(hidden.flatMap(filePath => this.scanHiddenFile({ filePath, sourceModules, resolver })));
|
|
37
|
+
for (const artifact of ignored) {
|
|
38
|
+
skipped.push({
|
|
39
|
+
className: artifact.className,
|
|
40
|
+
filePath: artifact.filePath,
|
|
41
|
+
reason: common_1.ScanSkipReasons.IGNORED,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return { artifacts, ignored, skipped };
|
|
33
45
|
}
|
|
34
46
|
/** A hidden file is only reported on, never a reason to fail: a scan error becomes one warning and the file contributes nothing. */
|
|
35
47
|
scanHiddenFile(opts) {
|
|
36
48
|
try {
|
|
37
|
-
return this.scanFile({
|
|
49
|
+
return this.scanFile({ ...opts, isHidden: true });
|
|
38
50
|
}
|
|
39
51
|
catch (error) {
|
|
40
52
|
const reason = error instanceof Error ? error.message : String(error);
|
|
@@ -60,9 +72,13 @@ class ArtifactScanner extends ignis_helpers_1.BaseHelper {
|
|
|
60
72
|
return { kept: kept.sort(), hidden: hidden.sort() };
|
|
61
73
|
}
|
|
62
74
|
scanFile(opts) {
|
|
63
|
-
const { filePath, isHidden = false } = opts;
|
|
75
|
+
const { filePath, sourceModules, resolver, skipped, isHidden = false } = opts;
|
|
64
76
|
const source = typescript_1.default.createSourceFile(filePath, (0, node_fs_1.readFileSync)(filePath, 'utf8'), typescript_1.default.ScriptTarget.Latest, true);
|
|
65
|
-
const stereotypeByLocalName = this.collectStereotypeImports({
|
|
77
|
+
const stereotypeByLocalName = this.collectStereotypeImports({
|
|
78
|
+
source,
|
|
79
|
+
sourceModules,
|
|
80
|
+
resolver,
|
|
81
|
+
});
|
|
66
82
|
if (stereotypeByLocalName.size === 0) {
|
|
67
83
|
return [];
|
|
68
84
|
}
|
|
@@ -94,6 +110,11 @@ class ArtifactScanner extends ignis_helpers_1.BaseHelper {
|
|
|
94
110
|
const isAbstract = has(typescript_1.default.SyntaxKind.AbstractKeyword);
|
|
95
111
|
if (!isNamedExport || isAbstract) {
|
|
96
112
|
if (!isHidden) {
|
|
113
|
+
skipped?.push({
|
|
114
|
+
className,
|
|
115
|
+
filePath,
|
|
116
|
+
reason: isAbstract ? common_1.ScanSkipReasons.ABSTRACT : common_1.ScanSkipReasons.NOT_EXPORTED,
|
|
117
|
+
});
|
|
97
118
|
this.logger
|
|
98
119
|
.for('scanFile')
|
|
99
120
|
.warn('Skipped %s in %s | %s', className, filePath, isAbstract ? 'abstract' : 'not a named export');
|
|
@@ -104,14 +125,20 @@ class ArtifactScanner extends ignis_helpers_1.BaseHelper {
|
|
|
104
125
|
});
|
|
105
126
|
return found;
|
|
106
127
|
}
|
|
107
|
-
/** local identifier -> stereotype name, for named imports from an IGNIS module (aliases resolved). */
|
|
128
|
+
/** local identifier -> stereotype name, for named imports from an IGNIS module or a caller-named source module (aliases resolved). */
|
|
108
129
|
collectStereotypeImports(opts) {
|
|
109
130
|
const result = new Map();
|
|
131
|
+
// Only a name a class actually wears as a decorator is worth following through re-exports.
|
|
132
|
+
const decoratorNames = opts.resolver
|
|
133
|
+
? this.collectClassDecoratorNames({ source: opts.source })
|
|
134
|
+
: new Set();
|
|
110
135
|
for (const statement of opts.source.statements) {
|
|
111
136
|
if (!typescript_1.default.isImportDeclaration(statement) || !typescript_1.default.isStringLiteral(statement.moduleSpecifier)) {
|
|
112
137
|
continue;
|
|
113
138
|
}
|
|
114
|
-
|
|
139
|
+
const specifier = statement.moduleSpecifier.text;
|
|
140
|
+
const isSourceModule = common_1.ArtifactStereotypes.SOURCE_MODULES.test(specifier) || opts.sourceModules.has(specifier);
|
|
141
|
+
if (!isSourceModule && !opts.resolver) {
|
|
115
142
|
continue;
|
|
116
143
|
}
|
|
117
144
|
const bindings = statement.importClause?.namedBindings;
|
|
@@ -119,7 +146,16 @@ class ArtifactScanner extends ignis_helpers_1.BaseHelper {
|
|
|
119
146
|
continue;
|
|
120
147
|
}
|
|
121
148
|
for (const element of bindings.elements) {
|
|
122
|
-
const
|
|
149
|
+
const name = (element.propertyName ?? element.name).text;
|
|
150
|
+
if (!isSourceModule && !decoratorNames.has(element.name.text)) {
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
const imported = isSourceModule
|
|
154
|
+
? name
|
|
155
|
+
: opts.resolver?.originOf({ fromFile: opts.source.fileName, specifier, name });
|
|
156
|
+
if (!imported) {
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
123
159
|
const isStereotype = imported in common_1.ArtifactStereotypes.BY_DECORATOR ||
|
|
124
160
|
imported === common_1.ArtifactStereotypes.ROOT_DECORATOR;
|
|
125
161
|
if (isStereotype) {
|
|
@@ -129,6 +165,22 @@ class ArtifactScanner extends ignis_helpers_1.BaseHelper {
|
|
|
129
165
|
}
|
|
130
166
|
return result;
|
|
131
167
|
}
|
|
168
|
+
/** The identifiers called as decorators on the file's top-level classes (`@service()`, `@kit.service()` is not followed). */
|
|
169
|
+
collectClassDecoratorNames(opts) {
|
|
170
|
+
const names = new Set();
|
|
171
|
+
for (const statement of opts.source.statements) {
|
|
172
|
+
if (!typescript_1.default.isClassDeclaration(statement)) {
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
for (const decorator of typescript_1.default.getDecorators(statement) ?? []) {
|
|
176
|
+
const expression = decorator.expression;
|
|
177
|
+
if (typescript_1.default.isCallExpression(expression) && typescript_1.default.isIdentifier(expression.expression)) {
|
|
178
|
+
names.add(expression.expression.text);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return names;
|
|
183
|
+
}
|
|
132
184
|
collectExportClauseNames(opts) {
|
|
133
185
|
const names = new Set();
|
|
134
186
|
for (const statement of opts.source.statements) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../src/generator/scanner.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA8D;AAC9D,qCAAuC;AACvC,yCAA0C;AAC1C,4DAA4B;AAC5B,
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../src/generator/scanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { TGeneratedArtifactIndex } from '../generator/index.js';
|
|
2
|
+
/** The application's own artifacts as the kernel's group protocol (`isArtifactGroup`), built without depending on the kernel: inlined `content` in a binary, `resolve()` from source. Reading a kind throws, so a function that walks `configs.artifacts` cannot drop it as an empty index. */
|
|
3
|
+
export declare class AutoArtifactGroup {
|
|
4
|
+
readonly isArtifactGroup: true;
|
|
5
|
+
readonly folder: undefined;
|
|
6
|
+
readonly site: undefined;
|
|
7
|
+
readonly content: TGeneratedArtifactIndex | undefined;
|
|
8
|
+
private readonly resolver;
|
|
9
|
+
constructor(opts: {
|
|
10
|
+
content?: TGeneratedArtifactIndex;
|
|
11
|
+
resolve?: () => Promise<TGeneratedArtifactIndex>;
|
|
12
|
+
});
|
|
13
|
+
resolve(): Promise<TGeneratedArtifactIndex>;
|
|
14
|
+
private static unreadKind;
|
|
15
|
+
get configurations(): never;
|
|
16
|
+
get dataSources(): never;
|
|
17
|
+
get components(): never;
|
|
18
|
+
get repositories(): never;
|
|
19
|
+
get services(): never;
|
|
20
|
+
get controllers(): never;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=auto-group.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-group.d.ts","sourceRoot":"","sources":["../../../src/bun/auto-group.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE5D,+RAA+R;AAC/R,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,eAAe,EAAG,IAAI,CAAU;IACzC,QAAQ,CAAC,MAAM,YAAa;IAC5B,QAAQ,CAAC,IAAI,YAAa;IAC1B,QAAQ,CAAC,OAAO,EAAE,uBAAuB,GAAG,SAAS,CAAC;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuD;gBAEpE,IAAI,EAAE;QAChB,OAAO,CAAC,EAAE,uBAAuB,CAAC;QAClC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,uBAAuB,CAAC,CAAC;KAClD;IAKK,OAAO,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAYjD,OAAO,CAAC,MAAM,CAAC,UAAU;IAOzB,IAAI,cAAc,IAAI,KAAK,CAE1B;IAED,IAAI,WAAW,IAAI,KAAK,CAEvB;IAED,IAAI,UAAU,IAAI,KAAK,CAEtB;IAED,IAAI,YAAY,IAAI,KAAK,CAExB;IAED,IAAI,QAAQ,IAAI,KAAK,CAEpB;IAED,IAAI,WAAW,IAAI,KAAK,CAEvB;CACF"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { getError } from '@venizia/ignis-helpers';
|
|
2
|
+
/** The application's own artifacts as the kernel's group protocol (`isArtifactGroup`), built without depending on the kernel: inlined `content` in a binary, `resolve()` from source. Reading a kind throws, so a function that walks `configs.artifacts` cannot drop it as an empty index. */
|
|
3
|
+
export class AutoArtifactGroup {
|
|
4
|
+
constructor(opts) {
|
|
5
|
+
this.isArtifactGroup = true;
|
|
6
|
+
this.folder = undefined;
|
|
7
|
+
this.site = undefined;
|
|
8
|
+
this.content = opts.content;
|
|
9
|
+
this.resolver = opts.resolve;
|
|
10
|
+
}
|
|
11
|
+
async resolve() {
|
|
12
|
+
if (this.content) {
|
|
13
|
+
return this.content;
|
|
14
|
+
}
|
|
15
|
+
if (!this.resolver) {
|
|
16
|
+
throw getError({
|
|
17
|
+
message: '[@venizia/ignis-boot/auto] The auto group has neither content nor a resolver',
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return this.resolver();
|
|
21
|
+
}
|
|
22
|
+
static unreadKind() {
|
|
23
|
+
throw getError({
|
|
24
|
+
message: '[@venizia/ignis-boot/auto] The application artifacts are resolved when artifacts are registered | A function that walks configs.artifacts must pass a group through untouched (check `isArtifactGroup`) instead of reading its kinds',
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
get configurations() {
|
|
28
|
+
return AutoArtifactGroup.unreadKind();
|
|
29
|
+
}
|
|
30
|
+
get dataSources() {
|
|
31
|
+
return AutoArtifactGroup.unreadKind();
|
|
32
|
+
}
|
|
33
|
+
get components() {
|
|
34
|
+
return AutoArtifactGroup.unreadKind();
|
|
35
|
+
}
|
|
36
|
+
get repositories() {
|
|
37
|
+
return AutoArtifactGroup.unreadKind();
|
|
38
|
+
}
|
|
39
|
+
get services() {
|
|
40
|
+
return AutoArtifactGroup.unreadKind();
|
|
41
|
+
}
|
|
42
|
+
get controllers() {
|
|
43
|
+
return AutoArtifactGroup.unreadKind();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=auto-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-group.js","sourceRoot":"","sources":["../../../src/bun/auto-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGlD,+RAA+R;AAC/R,MAAM,OAAO,iBAAiB;IAO5B,YAAY,IAGX;QATQ,oBAAe,GAAG,IAAa,CAAC;QAChC,WAAM,GAAG,SAAS,CAAC;QACnB,SAAI,GAAG,SAAS,CAAC;QAQxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,QAAQ,CAAC;gBACb,OAAO,EAAE,8EAA8E;aACxF,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAEO,MAAM,CAAC,UAAU;QACvB,MAAM,QAAQ,CAAC;YACb,OAAO,EACL,sOAAsO;SACzO,CAAC,CAAC;IACL,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,iBAAiB,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,iBAAiB,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,iBAAiB,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC;IAED,IAAI,YAAY;QACd,OAAO,iBAAiB,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,iBAAiB,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,iBAAiB,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { TGeneratedArtifactIndex } from '../generator/index.js';
|
|
2
|
+
/** Loads the application's index for `@venizia/ignis-boot/auto` from source: registers the run-time plugin, then imports the virtual module. A binary never runs this - the build replaces the module. */
|
|
3
|
+
export declare class AutoArtifactsLoader {
|
|
4
|
+
static assertRuntime(opts: {
|
|
5
|
+
hasBun: boolean;
|
|
6
|
+
}): void;
|
|
7
|
+
static load(): Promise<TGeneratedArtifactIndex>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=auto-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-loader.d.ts","sourceRoot":"","sources":["../../../src/bun/auto-loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE5D,0MAA0M;AAC1M,qBAAa,mBAAmB;IAC9B,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;WASxC,IAAI,IAAI,OAAO,CAAC,uBAAuB,CAAC;CAYtD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { getError } from '@venizia/ignis-helpers';
|
|
2
|
+
/** Loads the application's index for `@venizia/ignis-boot/auto` from source: registers the run-time plugin, then imports the virtual module. A binary never runs this - the build replaces the module. */
|
|
3
|
+
export class AutoArtifactsLoader {
|
|
4
|
+
static assertRuntime(opts) {
|
|
5
|
+
if (!opts.hasBun) {
|
|
6
|
+
throw getError({
|
|
7
|
+
message: '[@venizia/ignis-boot/auto] Auto artifacts need Bun (a Bun plugin builds the index) | On Node, generate the index with `ignis-artifacts generate --root src --out src/_artifacts.ts` and pass it to configs.artifacts',
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
static async load() {
|
|
12
|
+
AutoArtifactsLoader.assertRuntime({ hasBun: typeof Bun !== 'undefined' });
|
|
13
|
+
// A non-static specifier: a bundler must not pull the scanner (and TypeScript) into a binary.
|
|
14
|
+
const pluginModule = './plugin';
|
|
15
|
+
const { IgnisArtifactsPlugin } = await import(pluginModule);
|
|
16
|
+
await IgnisArtifactsPlugin.registerRuntime();
|
|
17
|
+
// A static specifier on purpose: a build without IgnisArtifactsPlugin then fails to resolve it, instead of shipping a binary with no classes.
|
|
18
|
+
const { GeneratedArtifacts } = await import('ignis:artifacts');
|
|
19
|
+
return GeneratedArtifacts;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=auto-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-loader.js","sourceRoot":"","sources":["../../../src/bun/auto-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGlD,0MAA0M;AAC1M,MAAM,OAAO,mBAAmB;IAC9B,MAAM,CAAC,aAAa,CAAC,IAAyB;QAC5C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,QAAQ,CAAC;gBACb,OAAO,EACL,sNAAsN;aACzN,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI;QACf,mBAAmB,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,OAAO,GAAG,KAAK,WAAW,EAAE,CAAC,CAAC;QAE1E,8FAA8F;QAC9F,MAAM,YAAY,GAAG,UAAU,CAAC;QAChC,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QAC5D,MAAM,oBAAoB,CAAC,eAAe,EAAE,CAAC;QAE7C,8IAA8I;QAC9I,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC/D,OAAO,kBAAkB,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { AutoArtifactGroup } from './auto-group.js';
|
|
2
|
+
/** The application's own decorated classes, found by the scanner - pass it in `configs.artifacts`. From source the run-time plugin builds the index when artifacts are registered; in a binary built with `IgnisArtifactsPlugin` this module is replaced by one carrying the built index. */
|
|
3
|
+
declare const AutoArtifacts: AutoArtifactGroup;
|
|
4
|
+
export default AutoArtifacts;
|
|
5
|
+
//# sourceMappingURL=auto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../../../src/bun/auto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAOjD,6RAA6R;AAC7R,QAAA,MAAM,aAAa,mBAAuE,CAAC;AAE3F,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AutoArtifactGroup } from './auto-group.js';
|
|
2
|
+
import { AutoArtifactsLoader } from './auto-loader.js';
|
|
3
|
+
import { GroupArtifactsResolver } from './group-resolver.js';
|
|
4
|
+
// Groups a shared package defined without content resolve from source through this resolver.
|
|
5
|
+
GroupArtifactsResolver.install();
|
|
6
|
+
/** The application's own decorated classes, found by the scanner - pass it in `configs.artifacts`. From source the run-time plugin builds the index when artifacts are registered; in a binary built with `IgnisArtifactsPlugin` this module is replaced by one carrying the built index. */
|
|
7
|
+
const AutoArtifacts = new AutoArtifactGroup({ resolve: () => AutoArtifactsLoader.load() });
|
|
8
|
+
export default AutoArtifacts;
|
|
9
|
+
//# sourceMappingURL=auto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto.js","sourceRoot":"","sources":["../../../src/bun/auto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,6FAA6F;AAC7F,sBAAsB,CAAC,OAAO,EAAE,CAAC;AAEjC,6RAA6R;AAC7R,MAAM,aAAa,GAAG,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAE3F,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type TGeneratedArtifactIndex } from '../generator/index.js';
|
|
2
|
+
/** Fills an `ArtifactGroup` defined without content, from source: the defining package is the nearest `package.json` above the group's call site, and the group is every decorated class under a directory named `folder` in its `src`. */
|
|
3
|
+
export declare class GroupArtifactsResolver {
|
|
4
|
+
/** The kernel's `SingletonRealm` slot for the group resolver (`ArtifactGroup.SINGLETON_REALM_KEY`). */
|
|
5
|
+
static readonly REALM_SLOT: unique symbol;
|
|
6
|
+
static resolve(opts: {
|
|
7
|
+
group: {
|
|
8
|
+
folder: string | undefined;
|
|
9
|
+
site: string | undefined;
|
|
10
|
+
};
|
|
11
|
+
}): Promise<TGeneratedArtifactIndex>;
|
|
12
|
+
/** Fills the kernel's realm slot; the holder may already exist (the kernel created it empty), so it is mutated, never replaced. */
|
|
13
|
+
static install(): void;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=group-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group-resolver.d.ts","sourceRoot":"","sources":["../../../src/bun/group-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAGjF,2OAA2O;AAC3O,qBAAa,sBAAsB;IACjC,uGAAuG;IACvG,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAA+D;WAE5E,OAAO,CAAC,IAAI,EAAE;QACzB,KAAK,EAAE;YAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;YAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;SAAE,CAAC;KACjE,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAsBpC,mIAAmI;IACnI,MAAM,CAAC,OAAO,IAAI,IAAI;CASvB"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { getError } from '@venizia/ignis-helpers';
|
|
2
|
+
import { ArtifactStereotypes } from '../generator/index.js';
|
|
3
|
+
import { ArtifactSources } from './sources.js';
|
|
4
|
+
/** Fills an `ArtifactGroup` defined without content, from source: the defining package is the nearest `package.json` above the group's call site, and the group is every decorated class under a directory named `folder` in its `src`. */
|
|
5
|
+
export class GroupArtifactsResolver {
|
|
6
|
+
/** The kernel's `SingletonRealm` slot for the group resolver (`ArtifactGroup.SINGLETON_REALM_KEY`). */
|
|
7
|
+
static { this.REALM_SLOT = Symbol.for('@venizia/ignis-kernel:artifact-group-resolver'); }
|
|
8
|
+
static async resolve(opts) {
|
|
9
|
+
const { folder, site } = opts.group;
|
|
10
|
+
if (!folder || !site) {
|
|
11
|
+
throw getError({
|
|
12
|
+
message: `[ArtifactGroup] '${folder ?? '<application>'}' has no call site to resolve from | Define it with ArtifactGroup.define in the shared package's own source`,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
const index = {};
|
|
16
|
+
for (const artifact of ArtifactSources.folderArtifacts({ folder, site })) {
|
|
17
|
+
const field = ArtifactStereotypes.EMIT_ORDER.find(entry => entry.type === artifact.type)?.field;
|
|
18
|
+
if (!field) {
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
const loaded = await import(artifact.filePath);
|
|
22
|
+
index[field] = [...(index[field] ?? []), loaded[artifact.className]];
|
|
23
|
+
}
|
|
24
|
+
return index;
|
|
25
|
+
}
|
|
26
|
+
/** Fills the kernel's realm slot; the holder may already exist (the kernel created it empty), so it is mutated, never replaced. */
|
|
27
|
+
static install() {
|
|
28
|
+
const existing = Reflect.get(globalThis, GroupArtifactsResolver.REALM_SLOT);
|
|
29
|
+
const holder = typeof existing === 'object' && existing !== null ? existing : {};
|
|
30
|
+
holder.resolve = (resolveOpts) => GroupArtifactsResolver.resolve(resolveOpts);
|
|
31
|
+
Reflect.set(globalThis, GroupArtifactsResolver.REALM_SLOT, holder);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=group-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group-resolver.js","sourceRoot":"","sources":["../../../src/bun/group-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,OAAO,EAAE,mBAAmB,EAAgC,MAAM,cAAc,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,2OAA2O;AAC3O,MAAM,OAAO,sBAAsB;IACjC,uGAAuG;aACvF,eAAU,GAAG,MAAM,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAEzF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAEpB;QACC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACpC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,QAAQ,CAAC;gBACb,OAAO,EAAE,oBAAoB,MAAM,IAAI,eAAe,6GAA6G;aACpK,CAAC,CAAC;QACL,CAAC;QAED,MAAM,KAAK,GAA2C,EAAE,CAAC;QACzD,KAAK,MAAM,QAAQ,IAAI,eAAe,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACzE,MAAM,KAAK,GAAG,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAC/C,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CACtC,EAAE,KAAK,CAAC;YACT,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC/C,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mIAAmI;IACnI,MAAM,CAAC,OAAO;QACZ,MAAM,QAAQ,GAAY,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC;QACrF,MAAM,MAAM,GACV,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,MAAM,CAAC,OAAO,GAAG,CAAC,WAEjB,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,sBAAsB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACrE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bun/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bun/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { BunPlugin } from 'bun';
|
|
2
|
+
/** 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. */
|
|
3
|
+
export declare class IgnisArtifactsPlugin {
|
|
4
|
+
static readonly NAME = "ignis-artifacts";
|
|
5
|
+
static readonly VIRTUAL = "ignis:artifacts";
|
|
6
|
+
static readonly EXPORT_NAME = "GeneratedArtifacts";
|
|
7
|
+
/** `@venizia/ignis-boot/auto`, from source or from either dist format - replaced at build time by a static re-export of the virtual module. */
|
|
8
|
+
static readonly AUTO_MODULE: RegExp;
|
|
9
|
+
/** A text test for a file worth parsing: `ArtifactGroup.define(`, with any spacing or line break around the dot. */
|
|
10
|
+
static readonly DEFINE_CALL: RegExp;
|
|
11
|
+
private static readonly RUNTIME_KEY;
|
|
12
|
+
/** The `src` beside the nearest `package.json` at or above `from` (default: the working directory). */
|
|
13
|
+
static defaultRoot(opts?: {
|
|
14
|
+
from?: string;
|
|
15
|
+
}): string;
|
|
16
|
+
/** The index as module source: every import absolute, since a virtual module has no directory to resolve from. */
|
|
17
|
+
static render(opts: {
|
|
18
|
+
root: string;
|
|
19
|
+
}): string;
|
|
20
|
+
/** 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. */
|
|
21
|
+
static rewriteGroups(opts: {
|
|
22
|
+
filePath: string;
|
|
23
|
+
source: string;
|
|
24
|
+
}): string;
|
|
25
|
+
/** 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. */
|
|
26
|
+
static groupDefinitionFiles(opts: {
|
|
27
|
+
root: string;
|
|
28
|
+
}): string[];
|
|
29
|
+
/** For `Bun.build({ plugins: [IgnisArtifactsPlugin.create()] })`; `isRuntime` is set by `registerRuntime`, which serves a virtual module instead. */
|
|
30
|
+
static create(opts?: {
|
|
31
|
+
root?: string;
|
|
32
|
+
isRuntime?: boolean;
|
|
33
|
+
}): BunPlugin;
|
|
34
|
+
/** Registers the run-time plugin once per process; a second call is a no-op. */
|
|
35
|
+
static registerRuntime(opts?: {
|
|
36
|
+
root?: string;
|
|
37
|
+
}): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/bun/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAQrC,6QAA6Q;AAC7Q,qBAAa,oBAAoB;IAC/B,MAAM,CAAC,QAAQ,CAAC,IAAI,qBAAqB;IACzC,MAAM,CAAC,QAAQ,CAAC,OAAO,qBAAqB;IAC5C,MAAM,CAAC,QAAQ,CAAC,WAAW,wBAAwB;IAEnD,+IAA+I;IAC/I,MAAM,CAAC,QAAQ,CAAC,WAAW,SAC0F;IAErH,oHAAoH;IACpH,MAAM,CAAC,QAAQ,CAAC,WAAW,SAAsC;IAEjE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAA8D;IAEjG,uGAAuG;IACvG,MAAM,CAAC,WAAW,CAAC,IAAI,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,MAAM;IAIxD,kHAAkH;IAClH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAgB7C,uWAAuW;IACvW,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAsGxE,wPAAwP;IACxP,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,EAAE;IAiD7D,qJAAqJ;IACrJ,MAAM,CAAC,MAAM,CAAC,IAAI,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,SAAS;IAyC3E,gFAAgF;WACnE,eAAe,CAAC,IAAI,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAO1E"}
|