@venizia/ignis-boot 0.2.0-6 → 0.2.0-8

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 (174) hide show
  1. package/README.md +87 -158
  2. package/dist/cjs/cli.d.ts +3 -0
  3. package/dist/cjs/cli.d.ts.map +1 -0
  4. package/dist/cjs/cli.js +50 -0
  5. package/dist/cjs/cli.js.map +1 -0
  6. package/dist/cjs/generator/common/constants.d.ts +39 -0
  7. package/dist/cjs/generator/common/constants.d.ts.map +1 -0
  8. package/dist/cjs/generator/common/constants.js +76 -0
  9. package/dist/cjs/generator/common/constants.js.map +1 -0
  10. package/dist/{esm → cjs/generator}/common/index.d.ts +1 -1
  11. package/dist/cjs/generator/common/index.d.ts.map +1 -0
  12. package/dist/cjs/{common → generator/common}/index.js +1 -1
  13. package/dist/cjs/generator/common/index.js.map +1 -0
  14. package/dist/cjs/generator/common/types.d.ts +13 -0
  15. package/dist/cjs/generator/common/types.d.ts.map +1 -0
  16. package/dist/cjs/generator/common/types.js +3 -0
  17. package/dist/cjs/generator/common/types.js.map +1 -0
  18. package/dist/cjs/generator/emitter.d.ts +16 -0
  19. package/dist/cjs/generator/emitter.d.ts.map +1 -0
  20. package/dist/cjs/generator/emitter.js +53 -0
  21. package/dist/cjs/generator/emitter.js.map +1 -0
  22. package/dist/cjs/generator/index.d.ts +24 -0
  23. package/dist/cjs/generator/index.d.ts.map +1 -0
  24. package/dist/cjs/generator/index.js +55 -0
  25. package/dist/cjs/generator/index.js.map +1 -0
  26. package/dist/cjs/generator/scanner.d.ts +18 -0
  27. package/dist/cjs/generator/scanner.d.ts.map +1 -0
  28. package/dist/cjs/generator/scanner.js +173 -0
  29. package/dist/cjs/generator/scanner.js.map +1 -0
  30. package/dist/cjs/index.d.ts +1 -6
  31. package/dist/cjs/index.d.ts.map +1 -1
  32. package/dist/cjs/index.js +1 -6
  33. package/dist/cjs/index.js.map +1 -1
  34. package/dist/esm/cli.d.ts +3 -0
  35. package/dist/esm/cli.d.ts.map +1 -0
  36. package/dist/esm/cli.js +48 -0
  37. package/dist/esm/cli.js.map +1 -0
  38. package/dist/esm/generator/common/constants.d.ts +39 -0
  39. package/dist/esm/generator/common/constants.d.ts.map +1 -0
  40. package/dist/esm/generator/common/constants.js +70 -0
  41. package/dist/esm/generator/common/constants.js.map +1 -0
  42. package/dist/{cjs → esm/generator}/common/index.d.ts +1 -1
  43. package/dist/esm/generator/common/index.d.ts.map +1 -0
  44. package/dist/esm/{common → generator/common}/index.js +1 -1
  45. package/dist/esm/generator/common/index.js.map +1 -0
  46. package/dist/esm/generator/common/types.d.ts +13 -0
  47. package/dist/esm/generator/common/types.d.ts.map +1 -0
  48. package/dist/esm/generator/common/types.js +2 -0
  49. package/dist/esm/generator/common/types.js.map +1 -0
  50. package/dist/esm/generator/emitter.d.ts +16 -0
  51. package/dist/esm/generator/emitter.d.ts.map +1 -0
  52. package/dist/esm/generator/emitter.js +49 -0
  53. package/dist/esm/generator/emitter.js.map +1 -0
  54. package/dist/esm/generator/index.d.ts +24 -0
  55. package/dist/esm/generator/index.d.ts.map +1 -0
  56. package/dist/esm/generator/index.js +36 -0
  57. package/dist/esm/generator/index.js.map +1 -0
  58. package/dist/esm/generator/scanner.d.ts +18 -0
  59. package/dist/esm/generator/scanner.d.ts.map +1 -0
  60. package/dist/esm/generator/scanner.js +166 -0
  61. package/dist/esm/generator/scanner.js.map +1 -0
  62. package/dist/esm/index.d.ts +1 -6
  63. package/dist/esm/index.d.ts.map +1 -1
  64. package/dist/esm/index.js +1 -6
  65. package/dist/esm/index.js.map +1 -1
  66. package/package.json +26 -45
  67. package/dist/cjs/base/base-artifact-booter.d.ts +0 -18
  68. package/dist/cjs/base/base-artifact-booter.d.ts.map +0 -1
  69. package/dist/cjs/base/base-artifact-booter.js +0 -85
  70. package/dist/cjs/base/base-artifact-booter.js.map +0 -1
  71. package/dist/cjs/base/index.d.ts +0 -2
  72. package/dist/cjs/base/index.d.ts.map +0 -1
  73. package/dist/cjs/base/index.js +0 -18
  74. package/dist/cjs/base/index.js.map +0 -1
  75. package/dist/cjs/boot.mixin.d.ts +0 -65
  76. package/dist/cjs/boot.mixin.d.ts.map +0 -1
  77. package/dist/cjs/boot.mixin.js +0 -29
  78. package/dist/cjs/boot.mixin.js.map +0 -1
  79. package/dist/cjs/booters/controller.booter.d.ts +0 -10
  80. package/dist/cjs/booters/controller.booter.d.ts.map +0 -1
  81. package/dist/cjs/booters/controller.booter.js +0 -45
  82. package/dist/cjs/booters/controller.booter.js.map +0 -1
  83. package/dist/cjs/booters/datasource.booter.d.ts +0 -10
  84. package/dist/cjs/booters/datasource.booter.d.ts.map +0 -1
  85. package/dist/cjs/booters/datasource.booter.js +0 -45
  86. package/dist/cjs/booters/datasource.booter.js.map +0 -1
  87. package/dist/cjs/booters/index.d.ts +0 -5
  88. package/dist/cjs/booters/index.d.ts.map +0 -1
  89. package/dist/cjs/booters/index.js +0 -21
  90. package/dist/cjs/booters/index.js.map +0 -1
  91. package/dist/cjs/booters/repository.booter.d.ts +0 -10
  92. package/dist/cjs/booters/repository.booter.d.ts.map +0 -1
  93. package/dist/cjs/booters/repository.booter.js +0 -45
  94. package/dist/cjs/booters/repository.booter.js.map +0 -1
  95. package/dist/cjs/booters/service.booter.d.ts +0 -10
  96. package/dist/cjs/booters/service.booter.d.ts.map +0 -1
  97. package/dist/cjs/booters/service.booter.js +0 -45
  98. package/dist/cjs/booters/service.booter.js.map +0 -1
  99. package/dist/cjs/bootstrapper.d.ts +0 -14
  100. package/dist/cjs/bootstrapper.d.ts.map +0 -1
  101. package/dist/cjs/bootstrapper.js +0 -121
  102. package/dist/cjs/bootstrapper.js.map +0 -1
  103. package/dist/cjs/common/constants.d.ts +0 -6
  104. package/dist/cjs/common/constants.d.ts.map +0 -1
  105. package/dist/cjs/common/constants.js +0 -10
  106. package/dist/cjs/common/constants.js.map +0 -1
  107. package/dist/cjs/common/index.d.ts.map +0 -1
  108. package/dist/cjs/common/index.js.map +0 -1
  109. package/dist/cjs/common/types.d.ts +0 -52
  110. package/dist/cjs/common/types.d.ts.map +0 -1
  111. package/dist/cjs/common/types.js +0 -5
  112. package/dist/cjs/common/types.js.map +0 -1
  113. package/dist/cjs/utilities/boot.utility.d.ts +0 -9
  114. package/dist/cjs/utilities/boot.utility.d.ts.map +0 -1
  115. package/dist/cjs/utilities/boot.utility.js +0 -51
  116. package/dist/cjs/utilities/boot.utility.js.map +0 -1
  117. package/dist/cjs/utilities/index.d.ts +0 -2
  118. package/dist/cjs/utilities/index.d.ts.map +0 -1
  119. package/dist/cjs/utilities/index.js +0 -18
  120. package/dist/cjs/utilities/index.js.map +0 -1
  121. package/dist/esm/base/base-artifact-booter.d.ts +0 -18
  122. package/dist/esm/base/base-artifact-booter.d.ts.map +0 -1
  123. package/dist/esm/base/base-artifact-booter.js +0 -81
  124. package/dist/esm/base/base-artifact-booter.js.map +0 -1
  125. package/dist/esm/base/index.d.ts +0 -2
  126. package/dist/esm/base/index.d.ts.map +0 -1
  127. package/dist/esm/base/index.js +0 -2
  128. package/dist/esm/base/index.js.map +0 -1
  129. package/dist/esm/boot.mixin.d.ts +0 -65
  130. package/dist/esm/boot.mixin.d.ts.map +0 -1
  131. package/dist/esm/boot.mixin.js +0 -25
  132. package/dist/esm/boot.mixin.js.map +0 -1
  133. package/dist/esm/booters/controller.booter.d.ts +0 -10
  134. package/dist/esm/booters/controller.booter.d.ts.map +0 -1
  135. package/dist/esm/booters/controller.booter.js +0 -42
  136. package/dist/esm/booters/controller.booter.js.map +0 -1
  137. package/dist/esm/booters/datasource.booter.d.ts +0 -10
  138. package/dist/esm/booters/datasource.booter.d.ts.map +0 -1
  139. package/dist/esm/booters/datasource.booter.js +0 -42
  140. package/dist/esm/booters/datasource.booter.js.map +0 -1
  141. package/dist/esm/booters/index.d.ts +0 -5
  142. package/dist/esm/booters/index.d.ts.map +0 -1
  143. package/dist/esm/booters/index.js +0 -5
  144. package/dist/esm/booters/index.js.map +0 -1
  145. package/dist/esm/booters/repository.booter.d.ts +0 -10
  146. package/dist/esm/booters/repository.booter.d.ts.map +0 -1
  147. package/dist/esm/booters/repository.booter.js +0 -42
  148. package/dist/esm/booters/repository.booter.js.map +0 -1
  149. package/dist/esm/booters/service.booter.d.ts +0 -10
  150. package/dist/esm/booters/service.booter.d.ts.map +0 -1
  151. package/dist/esm/booters/service.booter.js +0 -42
  152. package/dist/esm/booters/service.booter.js.map +0 -1
  153. package/dist/esm/bootstrapper.d.ts +0 -14
  154. package/dist/esm/bootstrapper.d.ts.map +0 -1
  155. package/dist/esm/bootstrapper.js +0 -118
  156. package/dist/esm/bootstrapper.js.map +0 -1
  157. package/dist/esm/common/constants.d.ts +0 -6
  158. package/dist/esm/common/constants.d.ts.map +0 -1
  159. package/dist/esm/common/constants.js +0 -6
  160. package/dist/esm/common/constants.js.map +0 -1
  161. package/dist/esm/common/index.d.ts.map +0 -1
  162. package/dist/esm/common/index.js.map +0 -1
  163. package/dist/esm/common/types.d.ts +0 -52
  164. package/dist/esm/common/types.d.ts.map +0 -1
  165. package/dist/esm/common/types.js +0 -2
  166. package/dist/esm/common/types.js.map +0 -1
  167. package/dist/esm/utilities/boot.utility.d.ts +0 -9
  168. package/dist/esm/utilities/boot.utility.d.ts.map +0 -1
  169. package/dist/esm/utilities/boot.utility.js +0 -46
  170. package/dist/esm/utilities/boot.utility.js.map +0 -1
  171. package/dist/esm/utilities/index.d.ts +0 -2
  172. package/dist/esm/utilities/index.d.ts.map +0 -1
  173. package/dist/esm/utilities/index.js +0 -2
  174. package/dist/esm/utilities/index.js.map +0 -1
@@ -0,0 +1,49 @@
1
+ import { dirname, relative, sep } from 'node:path';
2
+ import { ArtifactStereotypes, ArtifactTypes } from './common';
3
+ /** Renders the generated index: deterministic text, plain static imports, no IGNIS import - the object is type-checked where `registerArtifacts` receives it. */
4
+ export class ArtifactIndexEmitter {
5
+ /** Mirrors `printWidth` in @venizia/dev-configs prettier settings. */
6
+ static { this.PRINT_WIDTH = 100; }
7
+ static { this.HEADER = '// AUTO-GENERATED by @venizia/ignis-boot - do not edit. Regenerate: ignis-artifacts generate --root src --out src/generated/artifacts.ts'; }
8
+ static render(opts) {
9
+ const { artifacts, outFile, exportName } = opts;
10
+ const emitted = artifacts.filter(artifact => artifact.type !== ArtifactTypes.MODEL);
11
+ const imports = emitted
12
+ .map(artifact => ({
13
+ name: artifact.className,
14
+ path: ArtifactIndexEmitter.importPath({ from: outFile, to: artifact.filePath }),
15
+ }))
16
+ .sort((a, b) => a.path.localeCompare(b.path) || a.name.localeCompare(b.name))
17
+ .map(entry => `import { ${entry.name} } from '${entry.path}';`);
18
+ const fields = ArtifactStereotypes.EMIT_ORDER.flatMap(({ type, field }) => {
19
+ const names = emitted
20
+ .filter(artifact => artifact.type === type)
21
+ .map(artifact => artifact.className)
22
+ .sort((a, b) => a.localeCompare(b));
23
+ return ArtifactIndexEmitter.renderField({ field, names });
24
+ });
25
+ return [
26
+ ArtifactIndexEmitter.HEADER,
27
+ ...imports,
28
+ '',
29
+ `export const ${exportName} = {`,
30
+ ...fields,
31
+ '};',
32
+ '',
33
+ ].join('\n');
34
+ }
35
+ /** One line while it fits the repo's prettier width, else one name per line - so `prettier -l` on the generated file stays quiet. */
36
+ static renderField(opts) {
37
+ const { field, names } = opts;
38
+ const singleLine = ` ${field}: [${names.join(', ')}],`;
39
+ if (singleLine.length <= ArtifactIndexEmitter.PRINT_WIDTH) {
40
+ return [singleLine];
41
+ }
42
+ return [` ${field}: [`, ...names.map(name => ` ${name},`), ' ],'];
43
+ }
44
+ static importPath(opts) {
45
+ const raw = relative(dirname(opts.from), opts.to).split(sep).join('/').replace(/\.ts$/, '');
46
+ return raw.startsWith('.') ? raw : `./${raw}`;
47
+ }
48
+ }
49
+ //# sourceMappingURL=emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../../src/generator/emitter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { IScannedArtifact } from './common';
2
+ export interface IGenerateOptions {
3
+ root: string;
4
+ out: string;
5
+ ignore?: string[];
6
+ /** Name of the exported constant; default `GeneratedArtifacts`. */
7
+ exportName?: string;
8
+ }
9
+ /** Writes the index only when its content changed, so an unchanged tree leaves the file's mtime alone. */
10
+ export declare const generateArtifactIndex: (opts: IGenerateOptions) => {
11
+ content: string;
12
+ artifacts: IScannedArtifact[];
13
+ written: boolean;
14
+ };
15
+ /** Renders in memory and compares with the committed file - the staleness gate for lint and CI. */
16
+ export declare const checkArtifactIndex: (opts: IGenerateOptions) => {
17
+ isFresh: boolean;
18
+ expected: string;
19
+ actual: string | undefined;
20
+ };
21
+ export * from './common';
22
+ export * from './emitter';
23
+ export * from './scanner';
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generator/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAIjD,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;AAaD,0GAA0G;AAC1G,eAAO,MAAM,qBAAqB,GAChC,MAAM,gBAAgB,KACrB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAapE,CAAC;AAEF,mGAAmG;AACnG,eAAO,MAAM,kBAAkB,GAC7B,MAAM,gBAAgB,KACrB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAMlE,CAAC;AAEF,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { dirname, resolve } from 'node:path';
3
+ import { ArtifactIndexEmitter } from './emitter';
4
+ import { ArtifactScanner } from './scanner';
5
+ const render = (opts) => {
6
+ const artifacts = ArtifactScanner.getInstance().scan({ root: opts.root, ignore: opts.ignore });
7
+ const content = ArtifactIndexEmitter.render({
8
+ artifacts,
9
+ outFile: resolve(opts.out),
10
+ exportName: opts.exportName ?? 'GeneratedArtifacts',
11
+ });
12
+ return { content, artifacts };
13
+ };
14
+ /** Writes the index only when its content changed, so an unchanged tree leaves the file's mtime alone. */
15
+ export const generateArtifactIndex = (opts) => {
16
+ const { content, artifacts } = render(opts);
17
+ const out = resolve(opts.out);
18
+ const current = existsSync(out) ? readFileSync(out, 'utf8') : undefined;
19
+ if (current === content) {
20
+ return { content, artifacts, written: false };
21
+ }
22
+ mkdirSync(dirname(out), { recursive: true });
23
+ writeFileSync(out, content);
24
+ return { content, artifacts, written: true };
25
+ };
26
+ /** Renders in memory and compares with the committed file - the staleness gate for lint and CI. */
27
+ export const checkArtifactIndex = (opts) => {
28
+ const { content: expected } = render(opts);
29
+ const out = resolve(opts.out);
30
+ const actual = existsSync(out) ? readFileSync(out, 'utf8') : undefined;
31
+ return { isFresh: actual === expected, expected, actual };
32
+ };
33
+ export * from './common';
34
+ export * from './emitter';
35
+ export * from './scanner';
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAU5C,MAAM,MAAM,GAAG,CAAC,IAAsB,EAAsD,EAAE;IAC5F,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/F,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC;QAC1C,SAAS;QACT,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QAC1B,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,oBAAoB;KACpD,CAAC,CAAC;IAEH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF,0GAA0G;AAC1G,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,IAAsB,EACgD,EAAE;IACxE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAExE,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAChD,CAAC;IAED,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAE5B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC/C,CAAC,CAAC;AAEF,mGAAmG;AACnG,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,IAAsB,EAC8C,EAAE;IACtE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEvE,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC5D,CAAC,CAAC;AAEF,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { BaseHelper } from '@venizia/ignis-helpers';
2
+ import { type IScanOptions, type IScannedArtifact } from './common';
3
+ /** Finds exported classes carrying a stereotype decorator by reading the source, never by running it. */
4
+ export declare class ArtifactScanner extends BaseHelper {
5
+ private static instance?;
6
+ private constructor();
7
+ static getInstance(): ArtifactScanner;
8
+ scan(opts: IScanOptions): IScannedArtifact[];
9
+ private listSourceFiles;
10
+ private scanFile;
11
+ /** local identifier -> stereotype name, for named imports from an IGNIS module (aliases resolved). */
12
+ private collectStereotypeImports;
13
+ private collectExportClauseNames;
14
+ private artifactTypesOf;
15
+ private typeOfInjectableCall;
16
+ private asArtifactType;
17
+ }
18
+ //# sourceMappingURL=scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../../src/generator/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAY,MAAM,wBAAwB,CAAC;AAI9D,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EAEtB,MAAM,UAAU,CAAC;AAElB,yGAAyG;AACzG,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAkB;IAE1C,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,eAAe;IAIrC,IAAI,CAAC,IAAI,EAAE,YAAY,GAAG,gBAAgB,EAAE;IAa5C,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,QAAQ;IA+DhB,sGAAsG;IACtG,OAAO,CAAC,wBAAwB;IA8BhC,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,eAAe;IAyCvB,OAAO,CAAC,oBAAoB;IA6B5B,OAAO,CAAC,cAAc;CAMvB"}
@@ -0,0 +1,166 @@
1
+ import { BaseHelper, getError } from '@venizia/ignis-helpers';
2
+ import { readFileSync } from 'node:fs';
3
+ import { join, resolve } from 'node:path';
4
+ import ts from 'typescript';
5
+ import { ArtifactStereotypes, ArtifactTypes, } from './common';
6
+ /** Finds exported classes carrying a stereotype decorator by reading the source, never by running it. */
7
+ export class ArtifactScanner extends BaseHelper {
8
+ constructor() {
9
+ super({ scope: ArtifactScanner.name });
10
+ }
11
+ static getInstance() {
12
+ return (this.instance ??= new ArtifactScanner());
13
+ }
14
+ scan(opts) {
15
+ const root = resolve(opts.root);
16
+ const ignore = [...new Set([...ArtifactStereotypes.DEFAULT_IGNORE, ...(opts.ignore ?? [])])];
17
+ const artifacts = this.listSourceFiles({ root, ignore }).flatMap(filePath => this.scanFile({ filePath }));
18
+ return artifacts.sort((a, b) => a.type.localeCompare(b.type) || a.className.localeCompare(b.className));
19
+ }
20
+ listSourceFiles(opts) {
21
+ const ignoreGlobs = opts.ignore.map(pattern => new Bun.Glob(pattern));
22
+ const files = [];
23
+ for (const relative of new Bun.Glob('**/*.ts').scanSync({ cwd: opts.root })) {
24
+ if (relative.endsWith('.d.ts') || ignoreGlobs.some(glob => glob.match(relative))) {
25
+ continue;
26
+ }
27
+ files.push(join(opts.root, relative));
28
+ }
29
+ return files.sort();
30
+ }
31
+ scanFile(opts) {
32
+ const { filePath } = opts;
33
+ const source = ts.createSourceFile(filePath, readFileSync(filePath, 'utf8'), ts.ScriptTarget.Latest, true);
34
+ const stereotypeByLocalName = this.collectStereotypeImports({ source });
35
+ if (stereotypeByLocalName.size === 0) {
36
+ return [];
37
+ }
38
+ const exportedNames = this.collectExportClauseNames({ source });
39
+ const found = [];
40
+ ts.forEachChild(source, node => {
41
+ if (!ts.isClassDeclaration(node) || !node.name) {
42
+ return;
43
+ }
44
+ const className = node.name.text;
45
+ const types = this.artifactTypesOf({
46
+ node,
47
+ stereotypeByLocalName,
48
+ filePath,
49
+ className,
50
+ });
51
+ if (types.length === 0) {
52
+ return;
53
+ }
54
+ if (types.length > 1) {
55
+ throw getError({
56
+ message: `[ArtifactScanner] ${filePath} | class ${className} carries ${types.length} stereotypes (${types.join(', ')}) - one class is one artifact`,
57
+ });
58
+ }
59
+ const modifiers = ts.getModifiers(node) ?? [];
60
+ const has = (kind) => modifiers.some(m => m.kind === kind);
61
+ const isNamedExport = (has(ts.SyntaxKind.ExportKeyword) && !has(ts.SyntaxKind.DefaultKeyword)) ||
62
+ exportedNames.has(className);
63
+ const isAbstract = has(ts.SyntaxKind.AbstractKeyword);
64
+ if (!isNamedExport || isAbstract) {
65
+ this.logger
66
+ .for('scanFile')
67
+ .warn('Skipped %s in %s | %s', className, filePath, isAbstract ? 'abstract' : 'not a named export');
68
+ return;
69
+ }
70
+ found.push({ className, filePath, type: types[0] });
71
+ });
72
+ return found;
73
+ }
74
+ /** local identifier -> stereotype name, for named imports from an IGNIS module (aliases resolved). */
75
+ collectStereotypeImports(opts) {
76
+ const result = new Map();
77
+ for (const statement of opts.source.statements) {
78
+ if (!ts.isImportDeclaration(statement) || !ts.isStringLiteral(statement.moduleSpecifier)) {
79
+ continue;
80
+ }
81
+ if (!ArtifactStereotypes.SOURCE_MODULES.test(statement.moduleSpecifier.text)) {
82
+ continue;
83
+ }
84
+ const bindings = statement.importClause?.namedBindings;
85
+ if (!bindings || !ts.isNamedImports(bindings)) {
86
+ continue;
87
+ }
88
+ for (const element of bindings.elements) {
89
+ const imported = (element.propertyName ?? element.name).text;
90
+ const isStereotype = imported in ArtifactStereotypes.BY_DECORATOR ||
91
+ imported === ArtifactStereotypes.ROOT_DECORATOR;
92
+ if (isStereotype) {
93
+ result.set(element.name.text, imported);
94
+ }
95
+ }
96
+ }
97
+ return result;
98
+ }
99
+ collectExportClauseNames(opts) {
100
+ const names = new Set();
101
+ for (const statement of opts.source.statements) {
102
+ if (ts.isExportDeclaration(statement) &&
103
+ statement.exportClause &&
104
+ ts.isNamedExports(statement.exportClause)) {
105
+ for (const element of statement.exportClause.elements) {
106
+ names.add((element.propertyName ?? element.name).text);
107
+ }
108
+ }
109
+ }
110
+ return names;
111
+ }
112
+ artifactTypesOf(opts) {
113
+ const { node, stereotypeByLocalName, filePath, className } = opts;
114
+ const types = [];
115
+ for (const decorator of ts.getDecorators(node) ?? []) {
116
+ const expression = decorator.expression;
117
+ if (!ts.isCallExpression(expression) || !ts.isIdentifier(expression.expression)) {
118
+ continue;
119
+ }
120
+ const stereotype = stereotypeByLocalName.get(expression.expression.text);
121
+ if (!stereotype) {
122
+ continue;
123
+ }
124
+ if (stereotype !== ArtifactStereotypes.ROOT_DECORATOR) {
125
+ types.push(ArtifactStereotypes.BY_DECORATOR[stereotype]);
126
+ continue;
127
+ }
128
+ const type = this.typeOfInjectableCall({ call: expression });
129
+ if (!type) {
130
+ this.logger
131
+ .for('artifactTypesOf')
132
+ .warn('Skipped %s in %s | @injectable type is not a literal or ArtifactTypes.<NAME>', className, filePath);
133
+ continue;
134
+ }
135
+ types.push(type);
136
+ }
137
+ return types;
138
+ }
139
+ typeOfInjectableCall(opts) {
140
+ const [argument] = opts.call.arguments;
141
+ if (!argument || !ts.isObjectLiteralExpression(argument)) {
142
+ return undefined;
143
+ }
144
+ const property = argument.properties.find((entry) => ts.isPropertyAssignment(entry) && ts.isIdentifier(entry.name) && entry.name.text === 'type');
145
+ if (!property) {
146
+ return undefined;
147
+ }
148
+ const value = property.initializer;
149
+ if (ts.isStringLiteral(value)) {
150
+ return this.asArtifactType({ raw: value.text });
151
+ }
152
+ if (ts.isPropertyAccessExpression(value) &&
153
+ ts.isIdentifier(value.expression) &&
154
+ value.expression.text === 'ArtifactTypes') {
155
+ return this.asArtifactType({ raw: value.name.text.toLowerCase() });
156
+ }
157
+ return undefined;
158
+ }
159
+ asArtifactType(opts) {
160
+ const { raw } = opts;
161
+ return ArtifactStereotypes.EMIT_ORDER.map(entry => entry.type)
162
+ .concat(ArtifactTypes.MODEL)
163
+ .find(type => type === raw);
164
+ }
165
+ }
166
+ //# sourceMappingURL=scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../src/generator/scanner.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,2 @@
1
- export * from './base';
2
- export * from './boot.mixin';
3
- export * from './booters';
4
- export * from './bootstrapper';
5
- export * from './common';
6
- export * from './utilities';
1
+ export * from './generator';
7
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
package/dist/esm/index.js CHANGED
@@ -1,7 +1,2 @@
1
- export * from './base';
2
- export * from './boot.mixin';
3
- export * from './booters';
4
- export * from './bootstrapper';
5
- export * from './common';
6
- export * from './utilities';
1
+ export * from './generator';
7
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
package/package.json CHANGED
@@ -1,40 +1,16 @@
1
1
  {
2
2
  "name": "@venizia/ignis-boot",
3
- "version": "0.2.0-6",
4
- "description": "Convention-based auto-discovery and bootstrapping system for TypeScript applications. Three-phase lifecycle (configure, discover, load) using glob-based file matching and Template Method pattern. Auto-registers controllers, services, repositories, and datasources into the IoC container by file naming conventions. Inspired by LoopBack 4 boot system. Extensible via custom booters for any artifact type.",
3
+ "version": "0.2.0-8",
4
+ "description": "Build-time artifact index generator for IGNIS applications: scans decorated classes with the TypeScript AST and emits one static registration file per package, so bun build --compile sees plain imports.",
5
5
  "keywords": [
6
- "artifact-discovery",
7
- "artifact-loading",
8
- "auto-discovery",
9
- "auto-loading",
10
- "boot",
11
- "booter",
12
- "bootstrap",
13
- "bootstrapper",
14
- "bootstrapping",
15
- "bun",
16
- "controller-loading",
17
- "convention-based",
18
- "convention-over-configuration",
6
+ "artifact-index",
7
+ "build-time",
8
+ "code-generation",
9
+ "decorators",
19
10
  "dependency-injection",
20
- "design-patterns",
21
11
  "di",
22
- "extensible",
23
- "file-discovery",
24
- "glob",
25
- "glob-pattern",
26
12
  "ignis",
27
13
  "ioc",
28
- "lifecycle",
29
- "loopback",
30
- "loopback4",
31
- "modular",
32
- "nodejs",
33
- "plugin-system",
34
- "repository-loading",
35
- "service-discovery",
36
- "template-method",
37
- "three-phase",
38
14
  "typescript",
39
15
  "venizia"
40
16
  ],
@@ -66,7 +42,13 @@
66
42
  "require": "./dist/cjs/index.js",
67
43
  "default": "./dist/cjs/index.js"
68
44
  },
69
- "./package.json": "./package.json"
45
+ "./package.json": "./package.json",
46
+ "./generator": {
47
+ "types": "./dist/cjs/generator/index.d.ts",
48
+ "import": "./dist/esm/generator/index.js",
49
+ "require": "./dist/cjs/generator/index.js",
50
+ "default": "./dist/cjs/generator/index.js"
51
+ }
70
52
  },
71
53
  "files": [
72
54
  "README.md",
@@ -92,25 +74,24 @@
92
74
  "prettier:fix": "bun run prettier:cli --write",
93
75
  "rebuild": "sh ./scripts/rebuild.sh no-version",
94
76
  "prepublishOnly": "bun run rebuild",
95
- "pretest": "bun run rebuild",
96
- "pretest:watch": "bun run rebuild",
97
- "test": "NODE_ENV=test bun test --env-file=.env.test dist/cjs/__tests__/{**/**,**}/*.test.js",
98
- "test:watch": "NODE_ENV=test bun test --watch --env-file=.env.test dist/cjs/__tests__/{**/**,**}/*.test.js"
77
+ "test": "NODE_ENV=test bun test --env-file=.env.test",
78
+ "test:watch": "NODE_ENV=test bun test --watch --env-file=.env.test"
99
79
  },
100
80
  "dependencies": {
101
- "@venizia/ignis-helpers": "^0.2.0-7",
102
- "@venizia/ignis-inversion": "^0.2.0-3",
103
- "glob": "^13.0.6",
104
- "lodash": "^4.18.1",
105
- "reflect-metadata": "^0.2.2"
81
+ "@venizia/ignis-helpers": "^0.2.0-9"
106
82
  },
107
83
  "devDependencies": {
108
- "@types/bun": "^1.3.14",
109
- "@types/lodash": "^4.17.23",
84
+ "@types/bun": "^1.4.0",
110
85
  "@venizia/dev-configs": "^0.2.0-3",
111
- "eslint": "^10.7.0",
112
- "prettier": "^3.9.5",
113
- "tsc-alias": "^1.9.1",
86
+ "eslint": "^10.9.1",
87
+ "prettier": "^3.9.6",
88
+ "tsc-alias": "^1.9.4",
114
89
  "typescript": "^6.0.3"
90
+ },
91
+ "peerDependencies": {
92
+ "typescript": ">=5.0.0"
93
+ },
94
+ "bin": {
95
+ "ignis-artifacts": "./dist/cjs/cli.js"
115
96
  }
116
97
  }
@@ -1,18 +0,0 @@
1
- import { IArtifactOptions, IBooter, IBooterOptions } from '../common/types';
2
- import { BaseHelper } from '@venizia/ignis-helpers';
3
- import { TClass } from '@venizia/ignis-inversion';
4
- export declare abstract class BaseArtifactBooter extends BaseHelper implements IBooter {
5
- protected root: string;
6
- protected artifactOptions: IArtifactOptions;
7
- protected discoveredFiles: string[];
8
- protected loadedClasses: TClass<any>[];
9
- protected abstract getDefaultDirs(): string[];
10
- protected abstract getDefaultExtensions(): string[];
11
- protected abstract bind(): Promise<void>;
12
- constructor(opts: IBooterOptions);
13
- protected getPattern(): string;
14
- configure(): Promise<void>;
15
- discover(): Promise<void>;
16
- load(): Promise<void>;
17
- }
18
- //# sourceMappingURL=base-artifact-booter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base-artifact-booter.d.ts","sourceRoot":"","sources":["../../../src/base/base-artifact-booter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE3E,OAAO,EAAE,UAAU,EAAY,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,8BAAsB,kBAAmB,SAAQ,UAAW,YAAW,OAAO;IAC5E,SAAS,CAAC,IAAI,EAAE,MAAM,CAAM;IAC5B,SAAS,CAAC,eAAe,EAAE,gBAAgB,CAAM;IACjD,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,CAAM;IACzC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAM;IAE5C,SAAS,CAAC,QAAQ,CAAC,cAAc,IAAI,MAAM,EAAE;IAC7C,SAAS,CAAC,QAAQ,CAAC,oBAAoB,IAAI,MAAM,EAAE;IACnD,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;gBAE5B,IAAI,EAAE,cAAc;IAOhC,SAAS,CAAC,UAAU,IAAI,MAAM;IA+BxB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAY1B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBzB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAiB5B"}
@@ -1,85 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BaseArtifactBooter = void 0;
4
- const utilities_1 = require("../utilities");
5
- const ignis_helpers_1 = require("@venizia/ignis-helpers");
6
- class BaseArtifactBooter extends ignis_helpers_1.BaseHelper {
7
- constructor(opts) {
8
- super({ scope: opts.scope });
9
- this.root = '';
10
- this.artifactOptions = {};
11
- this.discoveredFiles = [];
12
- this.loadedClasses = [];
13
- this.artifactOptions = opts.artifactOptions;
14
- this.root = opts.root;
15
- }
16
- getPattern() {
17
- if (this.artifactOptions.glob) {
18
- return this.artifactOptions.glob;
19
- }
20
- if (!this.artifactOptions.dirs?.length) {
21
- throw (0, ignis_helpers_1.getError)({
22
- message: `[getPattern] No directories specified for artifact discovery`,
23
- });
24
- }
25
- if (!this.artifactOptions.extensions?.length) {
26
- throw (0, ignis_helpers_1.getError)({
27
- message: `[${this.scope}][getPattern] No file extensions specified for artifact discovery`,
28
- });
29
- }
30
- const dirs = this.artifactOptions.dirs.join(',');
31
- const exts = this.artifactOptions.extensions
32
- .map(e => (e.startsWith('.') ? e.slice(1) : e))
33
- .join(',');
34
- const nested = this.artifactOptions.isNested ? '{**/*,*}' : '*'; // NOTE: only suports one level of nesting now
35
- if (this.artifactOptions.dirs.length > 1 || this.artifactOptions.extensions.length > 1) {
36
- return `{${dirs}}/${nested}.{${exts}}`;
37
- }
38
- return `${dirs}/${nested}.${exts}`;
39
- }
40
- async configure() {
41
- // No trailing `...this.artifactOptions` spread: a key that EXISTS holding undefined (what `dirs: process.env.APP_DIRS?.split(',')` produces) would overwrite the just-computed default and getPattern() would throw.
42
- this.artifactOptions = {
43
- dirs: this.artifactOptions?.dirs ?? this.getDefaultDirs(),
44
- extensions: this.artifactOptions?.extensions ?? this.getDefaultExtensions(),
45
- isNested: this.artifactOptions?.isNested ?? true,
46
- glob: this.artifactOptions?.glob,
47
- };
48
- this.logger.for(this.configure.name).debug(`Configured: %j`, this.artifactOptions);
49
- }
50
- async discover() {
51
- const pattern = this.getPattern();
52
- try {
53
- this.discoveredFiles = [];
54
- this.discoveredFiles = await (0, utilities_1.discoverFiles)({ root: this.root, pattern });
55
- this.logger
56
- .for(this.discover.name)
57
- .debug(`Root: %s | Using pattern: %s | Discovered file: %j`, this.root, pattern, this.discoveredFiles);
58
- }
59
- catch (error) {
60
- throw (0, ignis_helpers_1.getError)({
61
- message: `[discover] Failed to discover files using pattern: ${pattern} | Error: ${error?.message}`,
62
- cause: error,
63
- });
64
- }
65
- }
66
- async load() {
67
- if (!this.discoveredFiles.length) {
68
- this.logger.for(this.load.name).debug(`No files discovered to load.`);
69
- return;
70
- }
71
- try {
72
- this.loadedClasses = [];
73
- this.loadedClasses = await (0, utilities_1.loadClasses)({ files: this.discoveredFiles });
74
- await this.bind();
75
- }
76
- catch (error) {
77
- throw (0, ignis_helpers_1.getError)({
78
- message: `[load] Failed to load classes from discovered files | Error: ${error?.message}`,
79
- cause: error,
80
- });
81
- }
82
- }
83
- }
84
- exports.BaseArtifactBooter = BaseArtifactBooter;
85
- //# sourceMappingURL=base-artifact-booter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base-artifact-booter.js","sourceRoot":"","sources":["../../../src/base/base-artifact-booter.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export * from './base-artifact-booter';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./base-artifact-booter"), exports);
18
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/base/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC"}