@venizia/ignis-boot 0.2.1-0 → 0.2.1-10

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 (131) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/bun/auto-group.d.ts +22 -0
  3. package/dist/cjs/bun/auto-group.d.ts.map +1 -0
  4. package/dist/cjs/bun/auto-group.js +51 -0
  5. package/dist/cjs/bun/auto-group.js.map +1 -0
  6. package/dist/cjs/bun/auto-loader.d.ts +13 -0
  7. package/dist/cjs/bun/auto-loader.d.ts.map +1 -0
  8. package/dist/cjs/bun/auto-loader.js +63 -0
  9. package/dist/cjs/bun/auto-loader.js.map +1 -0
  10. package/dist/cjs/bun/auto.d.ts +5 -0
  11. package/dist/cjs/bun/auto.d.ts.map +1 -0
  12. package/dist/cjs/bun/auto.js +11 -0
  13. package/dist/cjs/bun/auto.js.map +1 -0
  14. package/dist/cjs/bun/group-resolver.d.ts +16 -0
  15. package/dist/cjs/bun/group-resolver.d.ts.map +1 -0
  16. package/dist/cjs/bun/group-resolver.js +44 -0
  17. package/dist/cjs/bun/group-resolver.js.map +1 -0
  18. package/dist/cjs/bun/index.d.ts +7 -0
  19. package/dist/cjs/bun/index.d.ts.map +1 -0
  20. package/dist/cjs/bun/index.js +23 -0
  21. package/dist/cjs/bun/index.js.map +1 -0
  22. package/dist/cjs/bun/plugin.d.ts +44 -0
  23. package/dist/cjs/bun/plugin.d.ts.map +1 -0
  24. package/dist/cjs/bun/plugin.js +299 -0
  25. package/dist/cjs/bun/plugin.js.map +1 -0
  26. package/dist/cjs/bun/scan-cache.d.ts +22 -0
  27. package/dist/cjs/bun/scan-cache.d.ts.map +1 -0
  28. package/dist/cjs/bun/scan-cache.js +89 -0
  29. package/dist/cjs/bun/scan-cache.js.map +1 -0
  30. package/dist/cjs/bun/sources.d.ts +49 -0
  31. package/dist/cjs/bun/sources.d.ts.map +1 -0
  32. package/dist/cjs/bun/sources.js +115 -0
  33. package/dist/cjs/bun/sources.js.map +1 -0
  34. package/dist/cjs/clis/artifacts.js +4 -2
  35. package/dist/cjs/clis/artifacts.js.map +1 -1
  36. package/dist/cjs/generator/common/constants.d.ts +13 -0
  37. package/dist/cjs/generator/common/constants.d.ts.map +1 -1
  38. package/dist/cjs/generator/common/constants.js +19 -4
  39. package/dist/cjs/generator/common/constants.js.map +1 -1
  40. package/dist/cjs/generator/common/types.d.ts +16 -1
  41. package/dist/cjs/generator/common/types.d.ts.map +1 -1
  42. package/dist/cjs/generator/emitter.d.ts +12 -0
  43. package/dist/cjs/generator/emitter.d.ts.map +1 -1
  44. package/dist/cjs/generator/emitter.js +23 -6
  45. package/dist/cjs/generator/emitter.js.map +1 -1
  46. package/dist/cjs/generator/index.d.ts +2 -0
  47. package/dist/cjs/generator/index.d.ts.map +1 -1
  48. package/dist/cjs/generator/index.js +12 -6
  49. package/dist/cjs/generator/index.js.map +1 -1
  50. package/dist/cjs/generator/reexport.d.ts +28 -0
  51. package/dist/cjs/generator/reexport.d.ts.map +1 -0
  52. package/dist/cjs/generator/reexport.js +131 -0
  53. package/dist/cjs/generator/reexport.js.map +1 -0
  54. package/dist/cjs/generator/scanner.d.ts +3 -1
  55. package/dist/cjs/generator/scanner.d.ts.map +1 -1
  56. package/dist/cjs/generator/scanner.js +72 -17
  57. package/dist/cjs/generator/scanner.js.map +1 -1
  58. package/dist/cjs/vite/index.d.ts +2 -0
  59. package/dist/cjs/vite/index.d.ts.map +1 -0
  60. package/dist/cjs/vite/index.js +18 -0
  61. package/dist/cjs/vite/index.js.map +1 -0
  62. package/dist/cjs/vite/plugin.d.ts +33 -0
  63. package/dist/cjs/vite/plugin.d.ts.map +1 -0
  64. package/dist/cjs/vite/plugin.js +51 -0
  65. package/dist/cjs/vite/plugin.js.map +1 -0
  66. package/dist/esm/bun/auto-group.d.ts +22 -0
  67. package/dist/esm/bun/auto-group.d.ts.map +1 -0
  68. package/dist/esm/bun/auto-group.js +47 -0
  69. package/dist/esm/bun/auto-group.js.map +1 -0
  70. package/dist/esm/bun/auto-loader.d.ts +13 -0
  71. package/dist/esm/bun/auto-loader.d.ts.map +1 -0
  72. package/dist/esm/bun/auto-loader.js +59 -0
  73. package/dist/esm/bun/auto-loader.js.map +1 -0
  74. package/dist/esm/bun/auto.d.ts +5 -0
  75. package/dist/esm/bun/auto.d.ts.map +1 -0
  76. package/dist/esm/bun/auto.js +9 -0
  77. package/dist/esm/bun/auto.js.map +1 -0
  78. package/dist/esm/bun/group-resolver.d.ts +16 -0
  79. package/dist/esm/bun/group-resolver.d.ts.map +1 -0
  80. package/dist/esm/bun/group-resolver.js +40 -0
  81. package/dist/esm/bun/group-resolver.js.map +1 -0
  82. package/dist/esm/bun/index.d.ts +7 -0
  83. package/dist/esm/bun/index.d.ts.map +1 -0
  84. package/dist/esm/bun/index.js +7 -0
  85. package/dist/esm/bun/index.js.map +1 -0
  86. package/dist/esm/bun/plugin.d.ts +44 -0
  87. package/dist/esm/bun/plugin.d.ts.map +1 -0
  88. package/dist/esm/bun/plugin.js +292 -0
  89. package/dist/esm/bun/plugin.js.map +1 -0
  90. package/dist/esm/bun/scan-cache.d.ts +22 -0
  91. package/dist/esm/bun/scan-cache.d.ts.map +1 -0
  92. package/dist/esm/bun/scan-cache.js +85 -0
  93. package/dist/esm/bun/scan-cache.js.map +1 -0
  94. package/dist/esm/bun/sources.d.ts +49 -0
  95. package/dist/esm/bun/sources.d.ts.map +1 -0
  96. package/dist/esm/bun/sources.js +111 -0
  97. package/dist/esm/bun/sources.js.map +1 -0
  98. package/dist/esm/clis/artifacts.js +5 -3
  99. package/dist/esm/clis/artifacts.js.map +1 -1
  100. package/dist/esm/generator/common/constants.d.ts +13 -0
  101. package/dist/esm/generator/common/constants.d.ts.map +1 -1
  102. package/dist/esm/generator/common/constants.js +17 -3
  103. package/dist/esm/generator/common/constants.js.map +1 -1
  104. package/dist/esm/generator/common/types.d.ts +16 -1
  105. package/dist/esm/generator/common/types.d.ts.map +1 -1
  106. package/dist/esm/generator/emitter.d.ts +12 -0
  107. package/dist/esm/generator/emitter.d.ts.map +1 -1
  108. package/dist/esm/generator/emitter.js +23 -6
  109. package/dist/esm/generator/emitter.js.map +1 -1
  110. package/dist/esm/generator/index.d.ts +2 -0
  111. package/dist/esm/generator/index.d.ts.map +1 -1
  112. package/dist/esm/generator/index.js +12 -6
  113. package/dist/esm/generator/index.js.map +1 -1
  114. package/dist/esm/generator/reexport.d.ts +28 -0
  115. package/dist/esm/generator/reexport.d.ts.map +1 -0
  116. package/dist/esm/generator/reexport.js +124 -0
  117. package/dist/esm/generator/reexport.js.map +1 -0
  118. package/dist/esm/generator/scanner.d.ts +3 -1
  119. package/dist/esm/generator/scanner.d.ts.map +1 -1
  120. package/dist/esm/generator/scanner.js +75 -20
  121. package/dist/esm/generator/scanner.js.map +1 -1
  122. package/dist/esm/package.json +3 -1
  123. package/dist/esm/vite/index.d.ts +2 -0
  124. package/dist/esm/vite/index.d.ts.map +1 -0
  125. package/dist/esm/vite/index.js +2 -0
  126. package/dist/esm/vite/index.js.map +1 -0
  127. package/dist/esm/vite/plugin.d.ts +33 -0
  128. package/dist/esm/vite/plugin.d.ts.map +1 -0
  129. package/dist/esm/vite/plugin.js +47 -0
  130. package/dist/esm/vite/plugin.js.map +1 -0
  131. package/package.json +26 -4
@@ -0,0 +1,124 @@
1
+ import { BaseHelper } from '@venizia/ignis-helpers';
2
+ import { readFileSync } from 'node:fs';
3
+ import { dirname } from 'node:path';
4
+ import ts from 'typescript';
5
+ import { ArtifactStereotypes } from './common/index.js';
6
+ /** Follows a named import through `export *` and renaming re-exports until it reaches a source module, so a framework that re-exports the kernel's decorators is recognised. Reads declarations only; never builds a type-checked program. */
7
+ export class StereotypeReexportResolver extends BaseHelper {
8
+ static { this.MAX_DEPTH = 10; }
9
+ constructor(opts) {
10
+ super({ scope: StereotypeReexportResolver.name });
11
+ /** One scan reads the same barrels many times: resolutions, parsed files and answers are memoized per resolver. */
12
+ this.resolutions = new Map();
13
+ this.sources = new Map();
14
+ this.origins = new Map();
15
+ this.sourceModules = opts.sourceModules;
16
+ this.options = StereotypeReexportResolver.compilerOptionsFor({ root: opts.root });
17
+ }
18
+ /** The nearest tsconfig's options (for `paths` aliases), with bundler resolution as the fallback. */
19
+ static compilerOptionsFor(opts) {
20
+ const configPath = ts.findConfigFile(opts.root, ts.sys.fileExists);
21
+ const fallback = {
22
+ module: ts.ModuleKind.ESNext,
23
+ moduleResolution: ts.ModuleResolutionKind.Bundler,
24
+ allowJs: true,
25
+ };
26
+ if (!configPath) {
27
+ return fallback;
28
+ }
29
+ const parsed = ts.parseJsonConfigFileContent(ts.readConfigFile(configPath, ts.sys.readFile).config, ts.sys, dirname(configPath));
30
+ return { ...fallback, ...parsed.options };
31
+ }
32
+ /** The kernel name `name` (exported by `specifier`, as seen from `fromFile`) originates as, or `undefined` when the chain never reaches a source module. */
33
+ originOf(opts) {
34
+ const key = `${dirname(opts.fromFile)}|${opts.specifier}|${opts.name}`;
35
+ if (!this.origins.has(key)) {
36
+ this.origins.set(key, this.follow({ ...opts, depth: 0, seen: new Set() }));
37
+ }
38
+ return this.origins.get(key);
39
+ }
40
+ resolveFile(opts) {
41
+ const key = `${dirname(opts.fromFile)}|${opts.specifier}`;
42
+ if (!this.resolutions.has(key)) {
43
+ this.resolutions.set(key, ts.resolveModuleName(opts.specifier, opts.fromFile, this.options, ts.sys).resolvedModule
44
+ ?.resolvedFileName);
45
+ }
46
+ return this.resolutions.get(key);
47
+ }
48
+ parse(opts) {
49
+ let source = this.sources.get(opts.file);
50
+ if (!source) {
51
+ source = ts.createSourceFile(opts.file, readFileSync(opts.file, 'utf8'), ts.ScriptTarget.Latest, true);
52
+ this.sources.set(opts.file, source);
53
+ }
54
+ return source;
55
+ }
56
+ isSourceModule(opts) {
57
+ return (ArtifactStereotypes.SOURCE_MODULES.test(opts.specifier) ||
58
+ this.sourceModules.has(opts.specifier));
59
+ }
60
+ follow(opts) {
61
+ const { fromFile, specifier, name, depth, seen } = opts;
62
+ if (this.isSourceModule({ specifier })) {
63
+ return name;
64
+ }
65
+ if (depth >= StereotypeReexportResolver.MAX_DEPTH) {
66
+ return undefined;
67
+ }
68
+ const resolved = this.resolveFile({ fromFile, specifier });
69
+ const visit = `${resolved}#${name}`;
70
+ if (!resolved || seen.has(visit)) {
71
+ return undefined;
72
+ }
73
+ seen.add(visit);
74
+ const source = this.parse({ file: resolved });
75
+ const next = (target) => this.follow({ fromFile: resolved, ...target, depth: depth + 1, seen });
76
+ const importedBy = new Map();
77
+ for (const statement of source.statements) {
78
+ if (!ts.isImportDeclaration(statement) || !ts.isStringLiteral(statement.moduleSpecifier)) {
79
+ continue;
80
+ }
81
+ const bindings = statement.importClause?.namedBindings;
82
+ if (!bindings || !ts.isNamedImports(bindings)) {
83
+ continue;
84
+ }
85
+ for (const element of bindings.elements) {
86
+ importedBy.set(element.name.text, {
87
+ specifier: statement.moduleSpecifier.text,
88
+ name: (element.propertyName ?? element.name).text,
89
+ });
90
+ }
91
+ }
92
+ for (const statement of source.statements) {
93
+ if (!ts.isExportDeclaration(statement) || statement.isTypeOnly) {
94
+ continue;
95
+ }
96
+ const fromSpecifier = statement.moduleSpecifier && ts.isStringLiteral(statement.moduleSpecifier)
97
+ ? statement.moduleSpecifier.text
98
+ : undefined;
99
+ if (!statement.exportClause) {
100
+ const origin = fromSpecifier ? next({ specifier: fromSpecifier, name }) : undefined;
101
+ if (origin) {
102
+ return origin;
103
+ }
104
+ continue;
105
+ }
106
+ if (!ts.isNamedExports(statement.exportClause)) {
107
+ continue;
108
+ }
109
+ for (const element of statement.exportClause.elements) {
110
+ if (element.name.text !== name) {
111
+ continue;
112
+ }
113
+ const original = (element.propertyName ?? element.name).text;
114
+ if (fromSpecifier) {
115
+ return next({ specifier: fromSpecifier, name: original });
116
+ }
117
+ const imported = importedBy.get(original);
118
+ return imported ? next(imported) : undefined;
119
+ }
120
+ }
121
+ return undefined;
122
+ }
123
+ }
124
+ //# sourceMappingURL=reexport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reexport.js","sourceRoot":"","sources":["../../../src/generator/reexport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,8OAA8O;AAC9O,MAAM,OAAO,0BAA2B,SAAQ,UAAU;aACxC,cAAS,GAAG,EAAE,AAAL,CAAM;IAS/B,YAAY,IAAkD;QAC5D,KAAK,CAAC,EAAE,KAAK,EAAE,0BAA0B,CAAC,IAAI,EAAE,CAAC,CAAC;QANpD,mHAAmH;QAClG,gBAAW,GAAG,IAAI,GAAG,EAA8B,CAAC;QACpD,YAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;QAC3C,YAAO,GAAG,IAAI,GAAG,EAA8B,CAAC;QAI/D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,0BAA0B,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,qGAAqG;IAC7F,MAAM,CAAC,kBAAkB,CAAC,IAAsB;QACtD,MAAM,UAAU,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAuB;YACnC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM;YAC5B,gBAAgB,EAAE,EAAE,CAAC,oBAAoB,CAAC,OAAO;YACjD,OAAO,EAAE,IAAI;SACd,CAAC;QACF,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,CAAC,0BAA0B,CAC1C,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,EACrD,EAAE,CAAC,GAAG,EACN,OAAO,CAAC,UAAU,CAAC,CACpB,CAAC;QACF,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IAC5C,CAAC;IAED,4JAA4J;IAC5J,QAAQ,CAAC,IAA2D;QAClE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACvE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,EAAU,EAAE,CAAC,CAAC,CAAC;QACrF,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAEO,WAAW,CAAC,IAA6C;QAC/D,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAClB,GAAG,EACH,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,cAAc;gBACtF,EAAE,gBAAgB,CACrB,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,IAAsB;QAClC,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,EAAE,CAAC,gBAAgB,CAC1B,IAAI,CAAC,IAAI,EACT,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAC/B,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,CACL,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,cAAc,CAAC,IAA2B;QAChD,OAAO,CACL,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACvD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CACvC,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,IAMd;QACC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QACxD,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,KAAK,IAAI,0BAA0B,CAAC,SAAS,EAAE,CAAC;YAClD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEhB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,CAAC,MAA2C,EAAsB,EAAE,CAC/E,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzE,MAAM,UAAU,GAAG,IAAI,GAAG,EAA+C,CAAC;QAC1E,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAC1C,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC;gBACzF,SAAS;YACX,CAAC;YACD,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC;YACvD,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9C,SAAS;YACX,CAAC;YACD,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACxC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE;oBAChC,SAAS,EAAE,SAAS,CAAC,eAAe,CAAC,IAAI;oBACzC,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI;iBAClD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAC1C,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;gBAC/D,SAAS;YACX,CAAC;YACD,MAAM,aAAa,GACjB,SAAS,CAAC,eAAe,IAAI,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC;gBACxE,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI;gBAChC,CAAC,CAAC,SAAS,CAAC;YAEhB,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACpF,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,MAAM,CAAC;gBAChB,CAAC;gBACD,SAAS;YACX,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC/C,SAAS;YACX,CAAC;YAED,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;gBACtD,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBAC/B,SAAS;gBACX,CAAC;gBACD,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;gBAC7D,IAAI,aAAa,EAAE,CAAC;oBAClB,OAAO,IAAI,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC5D,CAAC;gBACD,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC1C,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC"}
@@ -14,8 +14,10 @@ export declare class ArtifactScanner extends BaseHelper {
14
14
  /** `kept` feeds the index; `hidden` is what only a user pattern excluded (a default pattern wins, so tests and generated files are never reported). */
15
15
  private partitionSourceFiles;
16
16
  private scanFile;
17
- /** local identifier -> stereotype name, for named imports from an IGNIS module (aliases resolved). */
17
+ /** local identifier -> stereotype name, for named imports from an IGNIS module or a caller-named source module (aliases resolved). */
18
18
  private collectStereotypeImports;
19
+ /** The identifiers called as decorators on the file's top-level classes (`@service()`, `@kit.service()` is not followed). */
20
+ private collectClassDecoratorNames;
19
21
  private collectExportClauseNames;
20
22
  private artifactTypesOf;
21
23
  private typeOfInjectableCall;
@@ -1 +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,WAAW,EAChB,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;IAI5C,+JAA+J;IAC/J,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,WAAW;IAY/C,oIAAoI;IACpI,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,aAAa;IAMrB,uJAAuJ;IACvJ,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,QAAQ;IAiEhB,sGAAsG;IACtG,OAAO,CAAC,wBAAwB;IA8BhC,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,eAAe;IA0CvB,OAAO,CAAC,oBAAoB;IA6B5B,OAAO,CAAC,cAAc;CAMvB"}
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,EAIL,KAAK,YAAY,EACjB,KAAK,WAAW,EAEhB,KAAK,gBAAgB,EAEtB,MAAM,UAAU,CAAC;AAGlB,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;IAI5C,+JAA+J;IAC/J,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,WAAW;IA8B/C,oIAAoI;IACpI,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,aAAa;IAMrB,uJAAuJ;IACvJ,OAAO,CAAC,oBAAoB;IAuB5B,OAAO,CAAC,QAAQ;IAgFhB,sIAAsI;IACtI,OAAO,CAAC,wBAAwB;IAkDhC,6HAA6H;IAC7H,OAAO,CAAC,0BAA0B;IAgBlC,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,eAAe;IA0CvB,OAAO,CAAC,oBAAoB;IA6B5B,OAAO,CAAC,cAAc;CAMvB"}
@@ -1,8 +1,9 @@
1
1
  import { BaseHelper, getError } from '@venizia/ignis-helpers';
2
- import { readFileSync } from 'node:fs';
3
- import { join, resolve } from 'node:path';
2
+ import { globSync, readFileSync } from 'node:fs';
3
+ import { join, matchesGlob, resolve } from 'node:path';
4
4
  import ts from 'typescript';
5
- import { ArtifactStereotypes, ArtifactTypes, } from './common/index.js';
5
+ import { ArtifactStereotypes, ArtifactTypes, ScanSkipReasons, } from './common/index.js';
6
+ import { StereotypeReexportResolver } from './reexport.js';
6
7
  /** Finds exported classes carrying a stereotype decorator by reading the source, never by running it. */
7
8
  export class ArtifactScanner extends BaseHelper {
8
9
  constructor() {
@@ -17,18 +18,31 @@ export class ArtifactScanner extends BaseHelper {
17
18
  /** `scan` plus the decorated classes a caller's own `ignore` pattern hid - the generator prints them so a stale pattern cannot drop an artifact in silence. */
18
19
  scanWithReport(opts) {
19
20
  const root = resolve(opts.root);
20
- const defaultGlobs = ArtifactStereotypes.DEFAULT_IGNORE.map(pattern => new Bun.Glob(pattern));
21
- const userGlobs = (opts.ignore ?? []).map(pattern => new Bun.Glob(pattern));
22
- const { kept, hidden } = this.partitionSourceFiles({ root, defaultGlobs, userGlobs });
23
- return {
24
- artifacts: this.sortArtifacts(kept.flatMap(filePath => this.scanFile({ filePath }))),
25
- ignored: this.sortArtifacts(hidden.flatMap(filePath => this.scanHiddenFile({ filePath }))),
26
- };
21
+ const { kept, hidden } = this.partitionSourceFiles({
22
+ root,
23
+ defaultGlobs: ArtifactStereotypes.DEFAULT_IGNORE,
24
+ userGlobs: opts.ignore ?? [],
25
+ });
26
+ const sourceModules = new Set(opts.sourceModules);
27
+ const resolver = opts.followReexports
28
+ ? new StereotypeReexportResolver({ root, sourceModules })
29
+ : undefined;
30
+ const skipped = [];
31
+ const artifacts = this.sortArtifacts(kept.flatMap(filePath => this.scanFile({ filePath, sourceModules, resolver, skipped })));
32
+ const ignored = this.sortArtifacts(hidden.flatMap(filePath => this.scanHiddenFile({ filePath, sourceModules, resolver })));
33
+ for (const artifact of ignored) {
34
+ skipped.push({
35
+ className: artifact.className,
36
+ filePath: artifact.filePath,
37
+ reason: ScanSkipReasons.IGNORED,
38
+ });
39
+ }
40
+ return { artifacts, ignored, skipped };
27
41
  }
28
42
  /** A hidden file is only reported on, never a reason to fail: a scan error becomes one warning and the file contributes nothing. */
29
43
  scanHiddenFile(opts) {
30
44
  try {
31
- return this.scanFile({ filePath: opts.filePath, isHidden: true });
45
+ return this.scanFile({ ...opts, isHidden: true });
32
46
  }
33
47
  catch (error) {
34
48
  const reason = error instanceof Error ? error.message : String(error);
@@ -43,20 +57,25 @@ export class ArtifactScanner extends BaseHelper {
43
57
  partitionSourceFiles(opts) {
44
58
  const kept = [];
45
59
  const hidden = [];
46
- const sync = new Bun.Glob('**/*.ts').scanSync({ cwd: opts.root });
47
- for (const relative of sync) {
48
- if (relative.endsWith('.d.ts') || opts.defaultGlobs.some(glob => glob.match(relative))) {
60
+ const sources = globSync(ArtifactStereotypes.SOURCE_GLOB, { cwd: opts.root });
61
+ for (const relative of sources) {
62
+ if (relative.endsWith('.d.ts') ||
63
+ opts.defaultGlobs.some(pattern => matchesGlob(relative, pattern))) {
49
64
  continue;
50
65
  }
51
- const target = opts.userGlobs.some(glob => glob.match(relative)) ? hidden : kept;
66
+ const target = opts.userGlobs.some(pattern => matchesGlob(relative, pattern)) ? hidden : kept;
52
67
  target.push(join(opts.root, relative));
53
68
  }
54
69
  return { kept: kept.sort(), hidden: hidden.sort() };
55
70
  }
56
71
  scanFile(opts) {
57
- const { filePath, isHidden = false } = opts;
72
+ const { filePath, sourceModules, resolver, skipped, isHidden = false } = opts;
58
73
  const source = ts.createSourceFile(filePath, readFileSync(filePath, 'utf8'), ts.ScriptTarget.Latest, true);
59
- const stereotypeByLocalName = this.collectStereotypeImports({ source });
74
+ const stereotypeByLocalName = this.collectStereotypeImports({
75
+ source,
76
+ sourceModules,
77
+ resolver,
78
+ });
60
79
  if (stereotypeByLocalName.size === 0) {
61
80
  return [];
62
81
  }
@@ -88,6 +107,11 @@ export class ArtifactScanner extends BaseHelper {
88
107
  const isAbstract = has(ts.SyntaxKind.AbstractKeyword);
89
108
  if (!isNamedExport || isAbstract) {
90
109
  if (!isHidden) {
110
+ skipped?.push({
111
+ className,
112
+ filePath,
113
+ reason: isAbstract ? ScanSkipReasons.ABSTRACT : ScanSkipReasons.NOT_EXPORTED,
114
+ });
91
115
  this.logger
92
116
  .for('scanFile')
93
117
  .warn('Skipped %s in %s | %s', className, filePath, isAbstract ? 'abstract' : 'not a named export');
@@ -98,14 +122,20 @@ export class ArtifactScanner extends BaseHelper {
98
122
  });
99
123
  return found;
100
124
  }
101
- /** local identifier -> stereotype name, for named imports from an IGNIS module (aliases resolved). */
125
+ /** local identifier -> stereotype name, for named imports from an IGNIS module or a caller-named source module (aliases resolved). */
102
126
  collectStereotypeImports(opts) {
103
127
  const result = new Map();
128
+ // Only a name a class actually wears as a decorator is worth following through re-exports.
129
+ const decoratorNames = opts.resolver
130
+ ? this.collectClassDecoratorNames({ source: opts.source })
131
+ : new Set();
104
132
  for (const statement of opts.source.statements) {
105
133
  if (!ts.isImportDeclaration(statement) || !ts.isStringLiteral(statement.moduleSpecifier)) {
106
134
  continue;
107
135
  }
108
- if (!ArtifactStereotypes.SOURCE_MODULES.test(statement.moduleSpecifier.text)) {
136
+ const specifier = statement.moduleSpecifier.text;
137
+ const isSourceModule = ArtifactStereotypes.SOURCE_MODULES.test(specifier) || opts.sourceModules.has(specifier);
138
+ if (!isSourceModule && !opts.resolver) {
109
139
  continue;
110
140
  }
111
141
  const bindings = statement.importClause?.namedBindings;
@@ -113,7 +143,16 @@ export class ArtifactScanner extends BaseHelper {
113
143
  continue;
114
144
  }
115
145
  for (const element of bindings.elements) {
116
- const imported = (element.propertyName ?? element.name).text;
146
+ const name = (element.propertyName ?? element.name).text;
147
+ if (!isSourceModule && !decoratorNames.has(element.name.text)) {
148
+ continue;
149
+ }
150
+ const imported = isSourceModule
151
+ ? name
152
+ : opts.resolver?.originOf({ fromFile: opts.source.fileName, specifier, name });
153
+ if (!imported) {
154
+ continue;
155
+ }
117
156
  const isStereotype = imported in ArtifactStereotypes.BY_DECORATOR ||
118
157
  imported === ArtifactStereotypes.ROOT_DECORATOR;
119
158
  if (isStereotype) {
@@ -123,6 +162,22 @@ export class ArtifactScanner extends BaseHelper {
123
162
  }
124
163
  return result;
125
164
  }
165
+ /** The identifiers called as decorators on the file's top-level classes (`@service()`, `@kit.service()` is not followed). */
166
+ collectClassDecoratorNames(opts) {
167
+ const names = new Set();
168
+ for (const statement of opts.source.statements) {
169
+ if (!ts.isClassDeclaration(statement)) {
170
+ continue;
171
+ }
172
+ for (const decorator of ts.getDecorators(statement) ?? []) {
173
+ const expression = decorator.expression;
174
+ if (ts.isCallExpression(expression) && ts.isIdentifier(expression.expression)) {
175
+ names.add(expression.expression.text);
176
+ }
177
+ }
178
+ }
179
+ return names;
180
+ }
126
181
  collectExportClauseNames(opts) {
127
182
  const names = new Set();
128
183
  for (const statement of opts.source.statements) {
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../src/generator/scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../src/generator/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,eAAe,GAMhB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAExD,yGAAyG;AACzG,MAAM,OAAO,eAAgB,SAAQ,UAAU;IAG7C;QACE,KAAK,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,OAAO,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,CAAC,IAAkB;QACrB,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;IAC7C,CAAC;IAED,+JAA+J;IAC/J,cAAc,CAAC,IAAkB;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC;YACjD,IAAI;YACJ,YAAY,EAAE,mBAAmB,CAAC,cAAc;YAChD,SAAS,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;SAC7B,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe;YACnC,CAAC,CAAC,IAAI,0BAA0B,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;YACzD,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,OAAO,GAAmB,EAAE,CAAC;QAEnC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAClC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CACxF,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAChC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,CACvF,CAAC;QACF,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,MAAM,EAAE,eAAe,CAAC,OAAO;aAChC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACzC,CAAC;IAED,oIAAoI;IAC5H,cAAc,CAAC,IAItB;QACC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,6BAA6B,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC7F,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,SAA6B;QACjD,OAAO,SAAS,CAAC,IAAI,CACnB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CACjF,CAAC;IACJ,CAAC;IAED,uJAAuJ;IAC/I,oBAAoB,CAAC,IAI5B;QACC,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,MAAM,OAAO,GAAG,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9E,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;YAC/B,IACE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EACjE,CAAC;gBACD,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9F,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;IACtD,CAAC;IAEO,QAAQ,CAAC,IAMhB;QACC,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;QAC9E,MAAM,MAAM,GAAG,EAAE,CAAC,gBAAgB,CAChC,QAAQ,EACR,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC9B,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,CACL,CAAC;QAEF,MAAM,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,CAAC;YAC1D,MAAM;YACN,aAAa;YACb,QAAQ;SACT,CAAC,CAAC;QACH,IAAI,qBAAqB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAChE,MAAM,KAAK,GAAuB,EAAE,CAAC;QAErC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YAC7B,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC/C,OAAO;YACT,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACjC,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;gBACjC,IAAI;gBACJ,qBAAqB;gBACrB,QAAQ;gBACR,SAAS;aACV,CAAC,CAAC;YACH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO;YACT,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,QAAQ,CAAC;oBACb,OAAO,EAAE,qBAAqB,QAAQ,YAAY,SAAS,YAAY,KAAK,CAAC,MAAM,iBAAiB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B;iBACpJ,CAAC,CAAC;YACL,CAAC;YAED,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9C,MAAM,GAAG,GAAG,CAAC,IAAmB,EAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YACnF,MAAM,aAAa,GACjB,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;gBACxE,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC/B,MAAM,UAAU,GAAG,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;YAEtD,IAAI,CAAC,aAAa,IAAI,UAAU,EAAE,CAAC;gBACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,OAAO,EAAE,IAAI,CAAC;wBACZ,SAAS;wBACT,QAAQ;wBACR,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,YAAY;qBAC7E,CAAC,CAAC;oBACH,IAAI,CAAC,MAAM;yBACR,GAAG,CAAC,UAAU,CAAC;yBACf,IAAI,CACH,uBAAuB,EACvB,SAAS,EACT,QAAQ,EACR,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAC/C,CAAC;gBACN,CAAC;gBACD,OAAO;YACT,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,sIAAsI;IAC9H,wBAAwB,CAAC,IAIhC;QACC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,2FAA2F;QAC3F,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ;YAClC,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1D,CAAC,CAAC,IAAI,GAAG,EAAU,CAAC;QAEtB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC/C,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC;gBACzF,SAAS;YACX,CAAC;YACD,MAAM,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC;YACjD,MAAM,cAAc,GAClB,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC1F,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACtC,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC;YACvD,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9C,SAAS;YACX,CAAC;YAED,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACxC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;gBACzD,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC9D,SAAS;gBACX,CAAC;gBACD,MAAM,QAAQ,GAAG,cAAc;oBAC7B,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACjF,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,SAAS;gBACX,CAAC;gBACD,MAAM,YAAY,GAChB,QAAQ,IAAI,mBAAmB,CAAC,YAAY;oBAC5C,QAAQ,KAAK,mBAAmB,CAAC,cAAc,CAAC;gBAClD,IAAI,YAAY,EAAE,CAAC;oBACjB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,6HAA6H;IACrH,0BAA0B,CAAC,IAA+B;QAChE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC/C,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACtC,SAAS;YACX,CAAC;YACD,KAAK,MAAM,SAAS,IAAI,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC1D,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;gBACxC,IAAI,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC9E,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,wBAAwB,CAAC,IAA+B;QAC9D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAEhC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC/C,IACE,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC;gBACjC,SAAS,CAAC,YAAY;gBACtB,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,EACzC,CAAC;gBACD,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;oBACtD,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,eAAe,CAAC,IAKvB;QACC,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAClE,MAAM,KAAK,GAAoB,EAAE,CAAC;QAElC,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAChD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;YACxC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChF,SAAS;YACX,CAAC;YAED,MAAM,UAAU,GAAG,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACzE,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,SAAS;YACX,CAAC;YACD,IAAI,UAAU,KAAK,mBAAmB,CAAC,cAAc,EAAE,CAAC;gBACtD,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;gBACzD,SAAS;YACX,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IAAI,CAAC,MAAM;qBACR,GAAG,CAAC,iBAAiB,CAAC;qBACtB,IAAI,CACH,8EAA8E,EAC9E,SAAS,EACT,QAAQ,CACT,CAAC;gBACJ,SAAS;YACX,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,oBAAoB,CAAC,IAAiC;QAC5D,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QACvC,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CACvC,CAAC,KAAK,EAAkC,EAAE,CACxC,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAC9F,CAAC;QACF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC;QACnC,IAAI,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,IACE,EAAE,CAAC,0BAA0B,CAAC,KAAK,CAAC;YACpC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC;YACjC,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,eAAe,EACzC,CAAC;YACD,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,cAAc,CAAC,IAAqB;QAC1C,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACrB,OAAO,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;aAC3D,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;aAC3B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;IAChC,CAAC;CACF"}
@@ -1,4 +1,6 @@
1
1
  {
2
2
  "type": "module",
3
- "sideEffects": false
3
+ "sideEffects": [
4
+ "./bun/auto.js"
5
+ ]
4
6
  }
@@ -0,0 +1,2 @@
1
+ export * from './plugin.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vite/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './plugin.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/vite/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
@@ -0,0 +1,33 @@
1
+ /** The slice of Vite's plugin contract this plugin uses - typed here so `@venizia/ignis-boot` does not depend on `vite`. */
2
+ export interface IIgnisVitePlugin {
3
+ name: string;
4
+ enforce: 'pre';
5
+ config: () => {
6
+ optimizeDeps: {
7
+ exclude: string[];
8
+ };
9
+ build: {
10
+ rolldownOptions: {
11
+ output: {
12
+ keepNames: boolean;
13
+ };
14
+ };
15
+ };
16
+ };
17
+ configResolved: (config: {
18
+ root: string;
19
+ }) => void;
20
+ resolveId: (id: string) => string | undefined;
21
+ load: (id: string) => string | undefined;
22
+ transform: (code: string, id: string) => string | undefined;
23
+ watchChange: (id: string) => void;
24
+ }
25
+ /** `IgnisArtifactsPlugin` for Vite: serves `ignis:artifacts`, replaces `@venizia/ignis-boot/auto` with an eager import of it (a browser bundle is tree-shaken only when eager), and inlines every `ArtifactGroup.define` / `application` call. Names are kept in the build, because binding keys are built from `Class.name` and a minifier renames classes. */
26
+ export declare class IgnisArtifactsVitePlugin {
27
+ static readonly RESOLVED_VIRTUAL: string;
28
+ /** `root`: the `src` to scan (default: the one beside the `package.json` of Vite's root). */
29
+ static create(opts?: {
30
+ root?: string;
31
+ }): IIgnisVitePlugin;
32
+ }
33
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/vite/plugin.ts"],"names":[],"mappings":"AAKA,4HAA4H;AAC5H,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,MAAM;QACZ,YAAY,EAAE;YAAE,OAAO,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;QACpC,KAAK,EAAE;YAAE,eAAe,EAAE;gBAAE,MAAM,EAAE;oBAAE,SAAS,EAAE,OAAO,CAAA;iBAAE,CAAA;aAAE,CAAA;SAAE,CAAC;KAChE,CAAC;IACF,cAAc,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnD,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC9C,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACzC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC5D,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,gWAAgW;AAChW,qBAAa,wBAAwB;IACnC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,SAAuC;IAMvE,6FAA6F;IAC7F,MAAM,CAAC,MAAM,CAAC,IAAI,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,gBAAgB;CAqC9D"}
@@ -0,0 +1,47 @@
1
+ import { resolve } from 'node:path';
2
+ import { ArtifactScanner } from '../generator/index.js';
3
+ import { IgnisArtifactsPlugin } from '../bun/plugin.js';
4
+ import { ArtifactSources } from '../bun/sources.js';
5
+ /** `IgnisArtifactsPlugin` for Vite: serves `ignis:artifacts`, replaces `@venizia/ignis-boot/auto` with an eager import of it (a browser bundle is tree-shaken only when eager), and inlines every `ArtifactGroup.define` / `application` call. Names are kept in the build, because binding keys are built from `Class.name` and a minifier renames classes. */
6
+ export class IgnisArtifactsVitePlugin {
7
+ static { this.RESOLVED_VIRTUAL = `\0${IgnisArtifactsPlugin.VIRTUAL}`; }
8
+ static {
9
+ ArtifactSources.useScanner({ scanner: ArtifactScanner.getInstance() });
10
+ }
11
+ /** `root`: the `src` to scan (default: the one beside the `package.json` of Vite's root). */
12
+ static create(opts = {}) {
13
+ let root = opts.root ? resolve(opts.root) : '';
14
+ let groupFiles = new Set();
15
+ const autoModule = `import { ${IgnisArtifactsPlugin.EXPORT_NAME} } from '${IgnisArtifactsPlugin.VIRTUAL}';\nimport { AutoArtifactGroup } from './auto-group';\nexport default new AutoArtifactGroup({ content: ${IgnisArtifactsPlugin.EXPORT_NAME} });\n`;
16
+ return {
17
+ name: IgnisArtifactsPlugin.NAME,
18
+ enforce: 'pre',
19
+ // Pre-bundling would hide `auto` inside a dependency chunk, out of reach of `load`.
20
+ config: () => ({
21
+ optimizeDeps: { exclude: ['@venizia/ignis-boot'] },
22
+ build: { rolldownOptions: { output: { keepNames: true } } },
23
+ }),
24
+ configResolved: config => {
25
+ root ||= ArtifactSources.packageSource({ from: config.root });
26
+ groupFiles = new Set(IgnisArtifactsPlugin.groupDefinitionFiles({ root }));
27
+ },
28
+ resolveId: id => id === IgnisArtifactsPlugin.VIRTUAL ? IgnisArtifactsVitePlugin.RESOLVED_VIRTUAL : undefined,
29
+ load: id => {
30
+ if (id === IgnisArtifactsVitePlugin.RESOLVED_VIRTUAL) {
31
+ return IgnisArtifactsPlugin.render({ root });
32
+ }
33
+ return IgnisArtifactsPlugin.AUTO_MODULE.test(id) ? autoModule : undefined;
34
+ },
35
+ transform: (code, id) => groupFiles.has(id)
36
+ ? IgnisArtifactsPlugin.rewriteGroups({ filePath: id, source: code })
37
+ : undefined,
38
+ // A file added, removed or edited under the root can change the index: rescan on the next load.
39
+ watchChange: id => {
40
+ if (id.startsWith(root)) {
41
+ ArtifactSources.clear();
42
+ }
43
+ },
44
+ };
45
+ }
46
+ }
47
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/vite/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAiBjD,gWAAgW;AAChW,MAAM,OAAO,wBAAwB;aACnB,qBAAgB,GAAG,KAAK,oBAAoB,CAAC,OAAO,EAAE,CAAC;IAEvE;QACE,eAAe,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,6FAA6F;IAC7F,MAAM,CAAC,MAAM,CAAC,OAA0B,EAAE;QACxC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,IAAI,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,MAAM,UAAU,GAAG,YAAY,oBAAoB,CAAC,WAAW,YAAY,oBAAoB,CAAC,OAAO,0GAA0G,oBAAoB,CAAC,WAAW,QAAQ,CAAC;QAE1P,OAAO;YACL,IAAI,EAAE,oBAAoB,CAAC,IAAI;YAC/B,OAAO,EAAE,KAAK;YACd,oFAAoF;YACpF,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;gBACb,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,qBAAqB,CAAC,EAAE;gBAClD,KAAK,EAAE,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;aAC5D,CAAC;YACF,cAAc,EAAE,MAAM,CAAC,EAAE;gBACvB,IAAI,KAAK,eAAe,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC9D,UAAU,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC5E,CAAC;YACD,SAAS,EAAE,EAAE,CAAC,EAAE,CACd,EAAE,KAAK,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;YAC7F,IAAI,EAAE,EAAE,CAAC,EAAE;gBACT,IAAI,EAAE,KAAK,wBAAwB,CAAC,gBAAgB,EAAE,CAAC;oBACrD,OAAO,oBAAoB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/C,CAAC;gBACD,OAAO,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5E,CAAC;YACD,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CACtB,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChB,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;gBACpE,CAAC,CAAC,SAAS;YACf,gGAAgG;YAChG,WAAW,EAAE,EAAE,CAAC,EAAE;gBAChB,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxB,eAAe,CAAC,KAAK,EAAE,CAAC;gBAC1B,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@venizia/ignis-boot",
3
- "version": "0.2.1-0",
3
+ "version": "0.2.1-10",
4
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
6
  "artifact-index",
@@ -49,6 +49,24 @@
49
49
  "require": "./dist/cjs/generator/index.js",
50
50
  "default": "./dist/cjs/generator/index.js"
51
51
  },
52
+ "./bun": {
53
+ "types": "./dist/cjs/bun/index.d.ts",
54
+ "import": "./dist/esm/bun/index.js",
55
+ "require": "./dist/cjs/bun/index.js",
56
+ "default": "./dist/cjs/bun/index.js"
57
+ },
58
+ "./auto": {
59
+ "types": "./dist/cjs/bun/auto.d.ts",
60
+ "import": "./dist/esm/bun/auto.js",
61
+ "require": "./dist/cjs/bun/auto.js",
62
+ "default": "./dist/cjs/bun/auto.js"
63
+ },
64
+ "./vite": {
65
+ "types": "./dist/cjs/vite/index.d.ts",
66
+ "import": "./dist/esm/vite/index.js",
67
+ "require": "./dist/cjs/vite/index.js",
68
+ "default": "./dist/cjs/vite/index.js"
69
+ },
52
70
  "./build-info": {
53
71
  "types": "./dist/cjs/build-info/index.d.ts",
54
72
  "import": "./dist/esm/build-info/index.js",
@@ -68,7 +86,10 @@
68
86
  "publishConfig": {
69
87
  "access": "public"
70
88
  },
71
- "sideEffects": false,
89
+ "sideEffects": [
90
+ "./dist/cjs/bun/auto.js",
91
+ "./dist/esm/bun/auto.js"
92
+ ],
72
93
  "scripts": {
73
94
  "force-update": "sh ./scripts/force-update.sh",
74
95
  "prepublishOnly": "make rebuild",
@@ -76,11 +97,12 @@
76
97
  "test:watch": "NODE_ENV=test bun test --watch --env-file=.env.test"
77
98
  },
78
99
  "dependencies": {
79
- "@venizia/ignis-helpers": "^0.2.2-5"
100
+ "@venizia/ignis-helpers": "0.2.2-9",
101
+ "@venizia/ignis-inversion": "0.2.2-6"
80
102
  },
81
103
  "devDependencies": {
82
104
  "@types/bun": "^1.4.1",
83
- "@venizia/dev-configs": "^0.3.1-0",
105
+ "@venizia/dev-configs": "0.3.1-4",
84
106
  "eslint": "^10.10.0",
85
107
  "oxfmt": "0.73.0",
86
108
  "oxlint": "1.88.0",