@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 @@
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,55 @@
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
+ exports.checkArtifactIndex = exports.generateArtifactIndex = void 0;
18
+ const node_fs_1 = require("node:fs");
19
+ const node_path_1 = require("node:path");
20
+ const emitter_1 = require("./emitter");
21
+ const scanner_1 = require("./scanner");
22
+ const render = (opts) => {
23
+ const artifacts = scanner_1.ArtifactScanner.getInstance().scan({ root: opts.root, ignore: opts.ignore });
24
+ const content = emitter_1.ArtifactIndexEmitter.render({
25
+ artifacts,
26
+ outFile: (0, node_path_1.resolve)(opts.out),
27
+ exportName: opts.exportName ?? 'GeneratedArtifacts',
28
+ });
29
+ return { content, artifacts };
30
+ };
31
+ /** Writes the index only when its content changed, so an unchanged tree leaves the file's mtime alone. */
32
+ const generateArtifactIndex = (opts) => {
33
+ const { content, artifacts } = render(opts);
34
+ const out = (0, node_path_1.resolve)(opts.out);
35
+ const current = (0, node_fs_1.existsSync)(out) ? (0, node_fs_1.readFileSync)(out, 'utf8') : undefined;
36
+ if (current === content) {
37
+ return { content, artifacts, written: false };
38
+ }
39
+ (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(out), { recursive: true });
40
+ (0, node_fs_1.writeFileSync)(out, content);
41
+ return { content, artifacts, written: true };
42
+ };
43
+ exports.generateArtifactIndex = generateArtifactIndex;
44
+ /** Renders in memory and compares with the committed file - the staleness gate for lint and CI. */
45
+ const checkArtifactIndex = (opts) => {
46
+ const { content: expected } = render(opts);
47
+ const out = (0, node_path_1.resolve)(opts.out);
48
+ const actual = (0, node_fs_1.existsSync)(out) ? (0, node_fs_1.readFileSync)(out, 'utf8') : undefined;
49
+ return { isFresh: actual === expected, expected, actual };
50
+ };
51
+ exports.checkArtifactIndex = checkArtifactIndex;
52
+ __exportStar(require("./common"), exports);
53
+ __exportStar(require("./emitter"), exports);
54
+ __exportStar(require("./scanner"), exports);
55
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qCAA6E;AAC7E,yCAA6C;AAE7C,uCAAiD;AACjD,uCAA4C;AAU5C,MAAM,MAAM,GAAG,CAAC,IAAsB,EAAsD,EAAE;IAC5F,MAAM,SAAS,GAAG,yBAAe,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,8BAAoB,CAAC,MAAM,CAAC;QAC1C,SAAS;QACT,OAAO,EAAE,IAAA,mBAAO,EAAC,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;AACnG,MAAM,qBAAqB,GAAG,CACnC,IAAsB,EACgD,EAAE;IACxE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAA,sBAAY,EAAC,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,IAAA,mBAAS,EAAC,IAAA,mBAAO,EAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,IAAA,uBAAa,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAE5B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC/C,CAAC,CAAC;AAfW,QAAA,qBAAqB,yBAehC;AAEF,mGAAmG;AAC5F,MAAM,kBAAkB,GAAG,CAChC,IAAsB,EAC8C,EAAE;IACtE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,IAAA,oBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAA,sBAAY,EAAC,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;AARW,QAAA,kBAAkB,sBAQ7B;AAEF,2CAAyB;AACzB,4CAA0B;AAC1B,4CAA0B"}
@@ -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,173 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ArtifactScanner = void 0;
7
+ const ignis_helpers_1 = require("@venizia/ignis-helpers");
8
+ const node_fs_1 = require("node:fs");
9
+ const node_path_1 = require("node:path");
10
+ const typescript_1 = __importDefault(require("typescript"));
11
+ const common_1 = require("./common");
12
+ /** Finds exported classes carrying a stereotype decorator by reading the source, never by running it. */
13
+ class ArtifactScanner extends ignis_helpers_1.BaseHelper {
14
+ constructor() {
15
+ super({ scope: ArtifactScanner.name });
16
+ }
17
+ static getInstance() {
18
+ return (this.instance ??= new ArtifactScanner());
19
+ }
20
+ scan(opts) {
21
+ const root = (0, node_path_1.resolve)(opts.root);
22
+ const ignore = [...new Set([...common_1.ArtifactStereotypes.DEFAULT_IGNORE, ...(opts.ignore ?? [])])];
23
+ const artifacts = this.listSourceFiles({ root, ignore }).flatMap(filePath => this.scanFile({ filePath }));
24
+ return artifacts.sort((a, b) => a.type.localeCompare(b.type) || a.className.localeCompare(b.className));
25
+ }
26
+ listSourceFiles(opts) {
27
+ const ignoreGlobs = opts.ignore.map(pattern => new Bun.Glob(pattern));
28
+ const files = [];
29
+ for (const relative of new Bun.Glob('**/*.ts').scanSync({ cwd: opts.root })) {
30
+ if (relative.endsWith('.d.ts') || ignoreGlobs.some(glob => glob.match(relative))) {
31
+ continue;
32
+ }
33
+ files.push((0, node_path_1.join)(opts.root, relative));
34
+ }
35
+ return files.sort();
36
+ }
37
+ scanFile(opts) {
38
+ const { filePath } = opts;
39
+ const source = typescript_1.default.createSourceFile(filePath, (0, node_fs_1.readFileSync)(filePath, 'utf8'), typescript_1.default.ScriptTarget.Latest, true);
40
+ const stereotypeByLocalName = this.collectStereotypeImports({ source });
41
+ if (stereotypeByLocalName.size === 0) {
42
+ return [];
43
+ }
44
+ const exportedNames = this.collectExportClauseNames({ source });
45
+ const found = [];
46
+ typescript_1.default.forEachChild(source, node => {
47
+ if (!typescript_1.default.isClassDeclaration(node) || !node.name) {
48
+ return;
49
+ }
50
+ const className = node.name.text;
51
+ const types = this.artifactTypesOf({
52
+ node,
53
+ stereotypeByLocalName,
54
+ filePath,
55
+ className,
56
+ });
57
+ if (types.length === 0) {
58
+ return;
59
+ }
60
+ if (types.length > 1) {
61
+ throw (0, ignis_helpers_1.getError)({
62
+ message: `[ArtifactScanner] ${filePath} | class ${className} carries ${types.length} stereotypes (${types.join(', ')}) - one class is one artifact`,
63
+ });
64
+ }
65
+ const modifiers = typescript_1.default.getModifiers(node) ?? [];
66
+ const has = (kind) => modifiers.some(m => m.kind === kind);
67
+ const isNamedExport = (has(typescript_1.default.SyntaxKind.ExportKeyword) && !has(typescript_1.default.SyntaxKind.DefaultKeyword)) ||
68
+ exportedNames.has(className);
69
+ const isAbstract = has(typescript_1.default.SyntaxKind.AbstractKeyword);
70
+ if (!isNamedExport || isAbstract) {
71
+ this.logger
72
+ .for('scanFile')
73
+ .warn('Skipped %s in %s | %s', className, filePath, isAbstract ? 'abstract' : 'not a named export');
74
+ return;
75
+ }
76
+ found.push({ className, filePath, type: types[0] });
77
+ });
78
+ return found;
79
+ }
80
+ /** local identifier -> stereotype name, for named imports from an IGNIS module (aliases resolved). */
81
+ collectStereotypeImports(opts) {
82
+ const result = new Map();
83
+ for (const statement of opts.source.statements) {
84
+ if (!typescript_1.default.isImportDeclaration(statement) || !typescript_1.default.isStringLiteral(statement.moduleSpecifier)) {
85
+ continue;
86
+ }
87
+ if (!common_1.ArtifactStereotypes.SOURCE_MODULES.test(statement.moduleSpecifier.text)) {
88
+ continue;
89
+ }
90
+ const bindings = statement.importClause?.namedBindings;
91
+ if (!bindings || !typescript_1.default.isNamedImports(bindings)) {
92
+ continue;
93
+ }
94
+ for (const element of bindings.elements) {
95
+ const imported = (element.propertyName ?? element.name).text;
96
+ const isStereotype = imported in common_1.ArtifactStereotypes.BY_DECORATOR ||
97
+ imported === common_1.ArtifactStereotypes.ROOT_DECORATOR;
98
+ if (isStereotype) {
99
+ result.set(element.name.text, imported);
100
+ }
101
+ }
102
+ }
103
+ return result;
104
+ }
105
+ collectExportClauseNames(opts) {
106
+ const names = new Set();
107
+ for (const statement of opts.source.statements) {
108
+ if (typescript_1.default.isExportDeclaration(statement) &&
109
+ statement.exportClause &&
110
+ typescript_1.default.isNamedExports(statement.exportClause)) {
111
+ for (const element of statement.exportClause.elements) {
112
+ names.add((element.propertyName ?? element.name).text);
113
+ }
114
+ }
115
+ }
116
+ return names;
117
+ }
118
+ artifactTypesOf(opts) {
119
+ const { node, stereotypeByLocalName, filePath, className } = opts;
120
+ const types = [];
121
+ for (const decorator of typescript_1.default.getDecorators(node) ?? []) {
122
+ const expression = decorator.expression;
123
+ if (!typescript_1.default.isCallExpression(expression) || !typescript_1.default.isIdentifier(expression.expression)) {
124
+ continue;
125
+ }
126
+ const stereotype = stereotypeByLocalName.get(expression.expression.text);
127
+ if (!stereotype) {
128
+ continue;
129
+ }
130
+ if (stereotype !== common_1.ArtifactStereotypes.ROOT_DECORATOR) {
131
+ types.push(common_1.ArtifactStereotypes.BY_DECORATOR[stereotype]);
132
+ continue;
133
+ }
134
+ const type = this.typeOfInjectableCall({ call: expression });
135
+ if (!type) {
136
+ this.logger
137
+ .for('artifactTypesOf')
138
+ .warn('Skipped %s in %s | @injectable type is not a literal or ArtifactTypes.<NAME>', className, filePath);
139
+ continue;
140
+ }
141
+ types.push(type);
142
+ }
143
+ return types;
144
+ }
145
+ typeOfInjectableCall(opts) {
146
+ const [argument] = opts.call.arguments;
147
+ if (!argument || !typescript_1.default.isObjectLiteralExpression(argument)) {
148
+ return undefined;
149
+ }
150
+ const property = argument.properties.find((entry) => typescript_1.default.isPropertyAssignment(entry) && typescript_1.default.isIdentifier(entry.name) && entry.name.text === 'type');
151
+ if (!property) {
152
+ return undefined;
153
+ }
154
+ const value = property.initializer;
155
+ if (typescript_1.default.isStringLiteral(value)) {
156
+ return this.asArtifactType({ raw: value.text });
157
+ }
158
+ if (typescript_1.default.isPropertyAccessExpression(value) &&
159
+ typescript_1.default.isIdentifier(value.expression) &&
160
+ value.expression.text === 'ArtifactTypes') {
161
+ return this.asArtifactType({ raw: value.name.text.toLowerCase() });
162
+ }
163
+ return undefined;
164
+ }
165
+ asArtifactType(opts) {
166
+ const { raw } = opts;
167
+ return common_1.ArtifactStereotypes.EMIT_ORDER.map(entry => entry.type)
168
+ .concat(common_1.ArtifactTypes.MODEL)
169
+ .find(type => type === raw);
170
+ }
171
+ }
172
+ exports.ArtifactScanner = ArtifactScanner;
173
+ //# 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/cjs/index.js CHANGED
@@ -14,10 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./base"), exports);
18
- __exportStar(require("./boot.mixin"), exports);
19
- __exportStar(require("./booters"), exports);
20
- __exportStar(require("./bootstrapper"), exports);
21
- __exportStar(require("./common"), exports);
22
- __exportStar(require("./utilities"), exports);
17
+ __exportStar(require("./generator"), exports);
23
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,+CAA6B;AAC7B,4CAA0B;AAC1B,iDAA+B;AAC/B,2CAAyB;AACzB,8CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env bun
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/env bun
2
+ import { parseArgs } from 'node:util';
3
+ import { checkArtifactIndex, generateArtifactIndex } from './generator';
4
+ const USAGE = 'ignis-artifacts <generate|check> [--root src] [--out src/generated/artifacts.ts] [--ignore a,b] [--export GeneratedArtifacts]';
5
+ const { positionals, values } = parseArgs({
6
+ args: process.argv.slice(2),
7
+ allowPositionals: true,
8
+ options: {
9
+ root: { type: 'string', default: 'src' },
10
+ out: { type: 'string', default: 'src/generated/artifacts.ts' },
11
+ ignore: { type: 'string' },
12
+ export: { type: 'string', default: 'GeneratedArtifacts' },
13
+ },
14
+ });
15
+ const options = {
16
+ root: values.root,
17
+ out: values.out,
18
+ ignore: values.ignore
19
+ ?.split(',')
20
+ .map(pattern => pattern.trim())
21
+ .filter(Boolean),
22
+ exportName: values.export,
23
+ };
24
+ /** Exit code of the command, so the process exits in exactly one place. */
25
+ const run = () => {
26
+ switch (positionals[0]) {
27
+ case 'generate': {
28
+ const result = generateArtifactIndex(options);
29
+ console.log(`${result.written ? 'wrote' : 'up to date'} ${options.out} | ${result.artifacts.length} artifact(s)`);
30
+ return 0;
31
+ }
32
+ case 'check': {
33
+ const result = checkArtifactIndex(options);
34
+ if (result.isFresh) {
35
+ console.log(`fresh ${options.out}`);
36
+ return 0;
37
+ }
38
+ console.error(`stale ${options.out} - run: ignis-artifacts generate --root ${options.root} --out ${options.out}`);
39
+ return 1;
40
+ }
41
+ default: {
42
+ console.error(USAGE);
43
+ return 2;
44
+ }
45
+ }
46
+ };
47
+ process.exit(run());
48
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAExE,MAAM,KAAK,GACT,+HAA+H,CAAC;AAElI,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACxC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3B,gBAAgB,EAAE,IAAI;IACtB,OAAO,EAAE;QACP,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QACxC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,4BAA4B,EAAE;QAC9D,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE;KAC1D;CACF,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG;IACd,IAAI,EAAE,MAAM,CAAC,IAAI;IACjB,GAAG,EAAE,MAAM,CAAC,GAAG;IACf,MAAM,EAAE,MAAM,CAAC,MAAM;QACnB,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SAC9B,MAAM,CAAC,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM;CAC1B,CAAC;AAEF,2EAA2E;AAC3E,MAAM,GAAG,GAAG,GAAW,EAAE;IACvB,QAAQ,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CACT,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,cAAc,CACrG,CAAC;YACF,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;gBACpC,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,CAAC,KAAK,CACX,SAAS,OAAO,CAAC,GAAG,2CAA2C,OAAO,CAAC,IAAI,UAAU,OAAO,CAAC,GAAG,EAAE,CACnG,CAAC;YACF,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC"}
@@ -0,0 +1,39 @@
1
+ import type { TConstValue } from '@venizia/ignis-helpers';
2
+ /** Mirrors the kernel's `ArtifactTypes` values; boot must not depend on kernel (`{boot, kernel} -> core` in the build chain). */
3
+ export declare class ArtifactTypes {
4
+ static readonly COMPONENT = "component";
5
+ static readonly CONTROLLER = "controller";
6
+ static readonly SERVICE = "service";
7
+ static readonly REPOSITORY = "repository";
8
+ static readonly DATASOURCE = "datasource";
9
+ static readonly MODEL = "model";
10
+ static readonly SCHEME_SET: Set<string>;
11
+ static isValid(value: string): boolean;
12
+ }
13
+ export type TArtifactType = TConstValue<typeof ArtifactTypes>;
14
+ /** Mirrors the kernel's `ArtifactIndexFields` - the keys of the object the emitter writes and `registerArtifacts` reads. */
15
+ export declare class ArtifactIndexFields {
16
+ static readonly DATA_SOURCES = "dataSources";
17
+ static readonly COMPONENTS = "components";
18
+ static readonly REPOSITORIES = "repositories";
19
+ static readonly SERVICES = "services";
20
+ static readonly CONTROLLERS = "controllers";
21
+ static readonly SCHEME_SET: Set<string>;
22
+ static isValid(value: string): boolean;
23
+ }
24
+ export type TArtifactIndexField = TConstValue<typeof ArtifactIndexFields>;
25
+ export declare class ArtifactStereotypes {
26
+ /** Decorator name as imported from `@venizia/ignis` or `@venizia/ignis-kernel` -> artifact type. */
27
+ static readonly BY_DECORATOR: Readonly<Record<string, TArtifactType>>;
28
+ static readonly ROOT_DECORATOR = "injectable";
29
+ static readonly SCHEME_SET: Set<string>;
30
+ static isValid(value: string): boolean;
31
+ static readonly SOURCE_MODULES: RegExp;
32
+ static readonly DEFAULT_IGNORE: string[];
33
+ /** The kernel's `registerArtifacts` order; `model` is never emitted. */
34
+ static readonly EMIT_ORDER: ReadonlyArray<{
35
+ type: TArtifactType;
36
+ field: TArtifactIndexField;
37
+ }>;
38
+ }
39
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +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,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,cAOvB;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,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,cAMvB;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,CAOnE;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,wEAAwE;IACxE,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,aAAa,CAAC;QAAC,KAAK,EAAE,mBAAmB,CAAA;KAAE,CAAC,CAM5F;CACH"}
@@ -0,0 +1,70 @@
1
+ /** Mirrors the kernel's `ArtifactTypes` values; boot must not depend on kernel (`{boot, kernel} -> core` in the build chain). */
2
+ export class ArtifactTypes {
3
+ static { this.COMPONENT = 'component'; }
4
+ static { this.CONTROLLER = 'controller'; }
5
+ static { this.SERVICE = 'service'; }
6
+ static { this.REPOSITORY = 'repository'; }
7
+ static { this.DATASOURCE = 'datasource'; }
8
+ static { this.MODEL = 'model'; }
9
+ static { this.SCHEME_SET = new Set([
10
+ this.COMPONENT,
11
+ this.CONTROLLER,
12
+ this.SERVICE,
13
+ this.REPOSITORY,
14
+ this.DATASOURCE,
15
+ this.MODEL,
16
+ ]); }
17
+ static isValid(value) {
18
+ return this.SCHEME_SET.has(value);
19
+ }
20
+ }
21
+ /** Mirrors the kernel's `ArtifactIndexFields` - the keys of the object the emitter writes and `registerArtifacts` reads. */
22
+ export class ArtifactIndexFields {
23
+ static { this.DATA_SOURCES = 'dataSources'; }
24
+ static { this.COMPONENTS = 'components'; }
25
+ static { this.REPOSITORIES = 'repositories'; }
26
+ static { this.SERVICES = 'services'; }
27
+ static { this.CONTROLLERS = 'controllers'; }
28
+ static { this.SCHEME_SET = new Set([
29
+ this.DATA_SOURCES,
30
+ this.COMPONENTS,
31
+ this.REPOSITORIES,
32
+ this.SERVICES,
33
+ this.CONTROLLERS,
34
+ ]); }
35
+ static isValid(value) {
36
+ return this.SCHEME_SET.has(value);
37
+ }
38
+ }
39
+ export class ArtifactStereotypes {
40
+ /** Decorator name as imported from `@venizia/ignis` or `@venizia/ignis-kernel` -> artifact type. */
41
+ static { this.BY_DECORATOR = {
42
+ component: ArtifactTypes.COMPONENT,
43
+ controller: ArtifactTypes.CONTROLLER,
44
+ service: ArtifactTypes.SERVICE,
45
+ repository: ArtifactTypes.REPOSITORY,
46
+ datasource: ArtifactTypes.DATASOURCE,
47
+ model: ArtifactTypes.MODEL,
48
+ }; }
49
+ static { this.ROOT_DECORATOR = 'injectable'; }
50
+ static { this.SCHEME_SET = new Set(Object.values(ArtifactStereotypes.BY_DECORATOR)); }
51
+ static isValid(value) {
52
+ return this.SCHEME_SET.has(value);
53
+ }
54
+ static { this.SOURCE_MODULES = /^@venizia\/ignis(-kernel)?$/; }
55
+ static { this.DEFAULT_IGNORE = [
56
+ '**/__tests__/**',
57
+ '**/*.test.ts',
58
+ '**/*.spec.ts',
59
+ '**/generated/**',
60
+ ]; }
61
+ /** The kernel's `registerArtifacts` order; `model` is never emitted. */
62
+ static { this.EMIT_ORDER = [
63
+ { type: ArtifactTypes.DATASOURCE, field: ArtifactIndexFields.DATA_SOURCES },
64
+ { type: ArtifactTypes.COMPONENT, field: ArtifactIndexFields.COMPONENTS },
65
+ { type: ArtifactTypes.REPOSITORY, field: ArtifactIndexFields.REPOSITORIES },
66
+ { type: ArtifactTypes.SERVICE, field: ArtifactIndexFields.SERVICES },
67
+ { type: ArtifactTypes.CONTROLLER, field: ArtifactIndexFields.CONTROLLERS },
68
+ ]; }
69
+ }
70
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/generator/common/constants.ts"],"names":[],"mappings":"AAEA,iIAAiI;AACjI,MAAM,OAAO,aAAa;aACR,cAAS,GAAG,WAAW,CAAC;aACxB,eAAU,GAAG,YAAY,CAAC;aAC1B,YAAO,GAAG,SAAS,CAAC;aACpB,eAAU,GAAG,YAAY,CAAC;aAC1B,eAAU,GAAG,YAAY,CAAC;aAC1B,UAAK,GAAG,OAAO,CAAC;aAEhB,eAAU,GAAG,IAAI,GAAG,CAAS;QAC3C,IAAI,CAAC,SAAS;QACd,IAAI,CAAC,UAAU;QACf,IAAI,CAAC,OAAO;QACZ,IAAI,CAAC,UAAU;QACf,IAAI,CAAC,UAAU;QACf,IAAI,CAAC,KAAK;KACX,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;;AAKH,4HAA4H;AAC5H,MAAM,OAAO,mBAAmB;aACd,iBAAY,GAAG,aAAa,CAAC;aAC7B,eAAU,GAAG,YAAY,CAAC;aAC1B,iBAAY,GAAG,cAAc,CAAC;aAC9B,aAAQ,GAAG,UAAU,CAAC;aACtB,gBAAW,GAAG,aAAa,CAAC;aAE5B,eAAU,GAAG,IAAI,GAAG,CAAS;QAC3C,IAAI,CAAC,YAAY;QACjB,IAAI,CAAC,UAAU;QACf,IAAI,CAAC,YAAY;QACjB,IAAI,CAAC,QAAQ;QACb,IAAI,CAAC,WAAW;KACjB,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;;AAKH,MAAM,OAAO,mBAAmB;IAC9B,oGAAoG;aACpF,iBAAY,GAA4C;QACtE,SAAS,EAAE,aAAa,CAAC,SAAS;QAClC,UAAU,EAAE,aAAa,CAAC,UAAU;QACpC,OAAO,EAAE,aAAa,CAAC,OAAO;QAC9B,UAAU,EAAE,aAAa,CAAC,UAAU;QACpC,UAAU,EAAE,aAAa,CAAC,UAAU;QACpC,KAAK,EAAE,aAAa,CAAC,KAAK;KAC3B,CAAC;aAEc,mBAAc,GAAG,YAAY,CAAC;aAE9B,eAAU,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC;IAE9F,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;aAEe,mBAAc,GAAG,6BAA6B,CAAC;aAE/C,mBAAc,GAAG;QAC/B,iBAAiB;QACjB,cAAc;QACd,cAAc;QACd,iBAAiB;KAClB,CAAC;IAEF,wEAAwE;aACxD,eAAU,GAAuE;QAC/F,EAAE,IAAI,EAAE,aAAa,CAAC,UAAU,EAAE,KAAK,EAAE,mBAAmB,CAAC,YAAY,EAAE;QAC3E,EAAE,IAAI,EAAE,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,mBAAmB,CAAC,UAAU,EAAE;QACxE,EAAE,IAAI,EAAE,aAAa,CAAC,UAAU,EAAE,KAAK,EAAE,mBAAmB,CAAC,YAAY,EAAE;QAC3E,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,mBAAmB,CAAC,QAAQ,EAAE;QACpE,EAAE,IAAI,EAAE,aAAa,CAAC,UAAU,EAAE,KAAK,EAAE,mBAAmB,CAAC,WAAW,EAAE;KAC3E,CAAC"}
@@ -1,3 +1,3 @@
1
- export * from './types';
2
1
  export * from './constants';
2
+ export * from './types';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/generator/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
@@ -1,3 +1,3 @@
1
- export * from './types';
2
1
  export * from './constants';
2
+ export * from './types';
3
3
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/generator/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { TArtifactType } from './constants';
2
+ export interface IScannedArtifact {
3
+ className: string;
4
+ /** Absolute path of the declaring file. */
5
+ filePath: string;
6
+ type: TArtifactType;
7
+ }
8
+ export interface IScanOptions {
9
+ root: string;
10
+ /** Glob patterns relative to `root`; defaults to `ArtifactStereotypes.DEFAULT_IGNORE`. */
11
+ ignore?: string[];
12
+ }
13
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/generator/common/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import { type IScannedArtifact } from './common';
2
+ /** Renders the generated index: deterministic text, plain static imports, no IGNIS import - the object is type-checked where `registerArtifacts` receives it. */
3
+ export declare class ArtifactIndexEmitter {
4
+ /** Mirrors `printWidth` in @venizia/dev-configs prettier settings. */
5
+ static readonly PRINT_WIDTH = 100;
6
+ static readonly HEADER = "// AUTO-GENERATED by @venizia/ignis-boot - do not edit. Regenerate: ignis-artifacts generate --root src --out src/generated/artifacts.ts";
7
+ static render(opts: {
8
+ artifacts: IScannedArtifact[];
9
+ outFile: string;
10
+ exportName: string;
11
+ }): string;
12
+ /** One line while it fits the repo's prettier width, else one name per line - so `prettier -l` on the generated file stays quiet. */
13
+ private static renderField;
14
+ private static importPath;
15
+ }
16
+ //# sourceMappingURL=emitter.d.ts.map
@@ -0,0 +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,MAAM,8IACuH;IAE7I,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAClB,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,MAAM;IAgCV,qIAAqI;IACrI,OAAO,CAAC,MAAM,CAAC,WAAW;IAW1B,OAAO,CAAC,MAAM,CAAC,UAAU;CAI1B"}