@venizia/ignis-boot 0.2.0-8 → 0.2.0

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 (136) hide show
  1. package/LICENSE.md +0 -1
  2. package/README.md +104 -89
  3. package/dist/cjs/build-info/common/constants.d.ts +20 -0
  4. package/dist/cjs/build-info/common/constants.d.ts.map +1 -0
  5. package/dist/cjs/build-info/common/constants.js +41 -0
  6. package/dist/cjs/build-info/common/constants.js.map +1 -0
  7. package/dist/cjs/build-info/common/index.d.ts +3 -0
  8. package/dist/cjs/build-info/common/index.d.ts.map +1 -0
  9. package/dist/cjs/build-info/common/index.js +19 -0
  10. package/dist/cjs/build-info/common/index.js.map +1 -0
  11. package/dist/cjs/build-info/common/types.d.ts +16 -0
  12. package/dist/cjs/build-info/common/types.d.ts.map +1 -0
  13. package/dist/cjs/build-info/common/types.js +3 -0
  14. package/dist/cjs/build-info/common/types.js.map +1 -0
  15. package/dist/cjs/build-info/emitter.d.ts +12 -0
  16. package/dist/cjs/build-info/emitter.d.ts.map +1 -0
  17. package/dist/cjs/build-info/emitter.js +26 -0
  18. package/dist/cjs/build-info/emitter.js.map +1 -0
  19. package/dist/cjs/build-info/index.d.ts +10 -0
  20. package/dist/cjs/build-info/index.d.ts.map +1 -0
  21. package/dist/cjs/build-info/index.js +43 -0
  22. package/dist/cjs/build-info/index.js.map +1 -0
  23. package/dist/cjs/build-info/resolver.d.ts +25 -0
  24. package/dist/cjs/build-info/resolver.d.ts.map +1 -0
  25. package/dist/cjs/build-info/resolver.js +105 -0
  26. package/dist/cjs/build-info/resolver.js.map +1 -0
  27. package/dist/cjs/clis/artifacts.d.ts +3 -0
  28. package/dist/cjs/clis/artifacts.d.ts.map +1 -0
  29. package/dist/cjs/{cli.js → clis/artifacts.js} +12 -2
  30. package/dist/cjs/clis/artifacts.js.map +1 -0
  31. package/dist/cjs/clis/build-info.d.ts +3 -0
  32. package/dist/cjs/clis/build-info.d.ts.map +1 -0
  33. package/dist/cjs/clis/build-info.js +48 -0
  34. package/dist/cjs/clis/build-info.js.map +1 -0
  35. package/dist/cjs/common/install-quiet-logger.d.ts +2 -0
  36. package/dist/cjs/common/install-quiet-logger.d.ts.map +1 -0
  37. package/dist/cjs/common/install-quiet-logger.js +7 -0
  38. package/dist/cjs/common/install-quiet-logger.js.map +1 -0
  39. package/dist/cjs/common/quiet-logger.d.ts +18 -0
  40. package/dist/cjs/common/quiet-logger.d.ts.map +1 -0
  41. package/dist/cjs/common/quiet-logger.js +46 -0
  42. package/dist/cjs/common/quiet-logger.js.map +1 -0
  43. package/dist/cjs/generator/common/constants.d.ts +8 -1
  44. package/dist/cjs/generator/common/constants.d.ts.map +1 -1
  45. package/dist/cjs/generator/common/constants.js +12 -1
  46. package/dist/cjs/generator/common/constants.js.map +1 -1
  47. package/dist/cjs/generator/common/types.d.ts +5 -0
  48. package/dist/cjs/generator/common/types.d.ts.map +1 -1
  49. package/dist/cjs/generator/emitter.d.ts +14 -1
  50. package/dist/cjs/generator/emitter.d.ts.map +1 -1
  51. package/dist/cjs/generator/emitter.js +15 -3
  52. package/dist/cjs/generator/emitter.js.map +1 -1
  53. package/dist/cjs/generator/index.d.ts +4 -4
  54. package/dist/cjs/generator/index.d.ts.map +1 -1
  55. package/dist/cjs/generator/index.js +16 -9
  56. package/dist/cjs/generator/index.js.map +1 -1
  57. package/dist/cjs/generator/scanner.d.ts +8 -2
  58. package/dist/cjs/generator/scanner.d.ts.map +1 -1
  59. package/dist/cjs/generator/scanner.js +42 -14
  60. package/dist/cjs/generator/scanner.js.map +1 -1
  61. package/dist/cjs/index.d.ts +1 -0
  62. package/dist/cjs/index.d.ts.map +1 -1
  63. package/dist/cjs/index.js +1 -0
  64. package/dist/cjs/index.js.map +1 -1
  65. package/dist/esm/build-info/common/constants.d.ts +20 -0
  66. package/dist/esm/build-info/common/constants.d.ts.map +1 -0
  67. package/dist/esm/build-info/common/constants.js +36 -0
  68. package/dist/esm/build-info/common/constants.js.map +1 -0
  69. package/dist/esm/build-info/common/index.d.ts +3 -0
  70. package/dist/esm/build-info/common/index.d.ts.map +1 -0
  71. package/dist/esm/build-info/common/index.js +3 -0
  72. package/dist/esm/build-info/common/index.js.map +1 -0
  73. package/dist/esm/build-info/common/types.d.ts +16 -0
  74. package/dist/esm/build-info/common/types.d.ts.map +1 -0
  75. package/dist/esm/build-info/common/types.js +2 -0
  76. package/dist/esm/build-info/common/types.js.map +1 -0
  77. package/dist/esm/build-info/emitter.d.ts +12 -0
  78. package/dist/esm/build-info/emitter.d.ts.map +1 -0
  79. package/dist/esm/build-info/emitter.js +22 -0
  80. package/dist/esm/build-info/emitter.js.map +1 -0
  81. package/dist/esm/build-info/index.d.ts +10 -0
  82. package/dist/esm/build-info/index.d.ts.map +1 -0
  83. package/dist/esm/build-info/index.js +25 -0
  84. package/dist/esm/build-info/index.js.map +1 -0
  85. package/dist/esm/build-info/resolver.d.ts +25 -0
  86. package/dist/esm/build-info/resolver.d.ts.map +1 -0
  87. package/dist/esm/build-info/resolver.js +101 -0
  88. package/dist/esm/build-info/resolver.js.map +1 -0
  89. package/dist/esm/clis/artifacts.d.ts +3 -0
  90. package/dist/esm/clis/artifacts.d.ts.map +1 -0
  91. package/dist/esm/{cli.js → clis/artifacts.js} +12 -2
  92. package/dist/esm/clis/artifacts.js.map +1 -0
  93. package/dist/esm/clis/build-info.d.ts +3 -0
  94. package/dist/esm/clis/build-info.d.ts.map +1 -0
  95. package/dist/esm/clis/build-info.js +46 -0
  96. package/dist/esm/clis/build-info.js.map +1 -0
  97. package/dist/esm/common/install-quiet-logger.d.ts +2 -0
  98. package/dist/esm/common/install-quiet-logger.d.ts.map +1 -0
  99. package/dist/esm/common/install-quiet-logger.js +5 -0
  100. package/dist/esm/common/install-quiet-logger.js.map +1 -0
  101. package/dist/esm/common/quiet-logger.d.ts +18 -0
  102. package/dist/esm/common/quiet-logger.d.ts.map +1 -0
  103. package/dist/esm/common/quiet-logger.js +42 -0
  104. package/dist/esm/common/quiet-logger.js.map +1 -0
  105. package/dist/esm/generator/common/constants.d.ts +8 -1
  106. package/dist/esm/generator/common/constants.d.ts.map +1 -1
  107. package/dist/esm/generator/common/constants.js +12 -1
  108. package/dist/esm/generator/common/constants.js.map +1 -1
  109. package/dist/esm/generator/common/index.d.ts +2 -2
  110. package/dist/esm/generator/common/index.js +2 -2
  111. package/dist/esm/generator/common/types.d.ts +6 -1
  112. package/dist/esm/generator/common/types.d.ts.map +1 -1
  113. package/dist/esm/generator/emitter.d.ts +15 -2
  114. package/dist/esm/generator/emitter.d.ts.map +1 -1
  115. package/dist/esm/generator/emitter.js +16 -4
  116. package/dist/esm/generator/emitter.js.map +1 -1
  117. package/dist/esm/generator/index.d.ts +7 -7
  118. package/dist/esm/generator/index.d.ts.map +1 -1
  119. package/dist/esm/generator/index.js +21 -14
  120. package/dist/esm/generator/index.js.map +1 -1
  121. package/dist/esm/generator/scanner.d.ts +8 -2
  122. package/dist/esm/generator/scanner.d.ts.map +1 -1
  123. package/dist/esm/generator/scanner.js +43 -15
  124. package/dist/esm/generator/scanner.js.map +1 -1
  125. package/dist/esm/index.d.ts +2 -1
  126. package/dist/esm/index.d.ts.map +1 -1
  127. package/dist/esm/index.js +2 -1
  128. package/dist/esm/index.js.map +1 -1
  129. package/dist/esm/package.json +4 -0
  130. package/package.json +15 -8
  131. package/dist/cjs/cli.d.ts +0 -3
  132. package/dist/cjs/cli.d.ts.map +0 -1
  133. package/dist/cjs/cli.js.map +0 -1
  134. package/dist/esm/cli.d.ts +0 -3
  135. package/dist/esm/cli.d.ts.map +0 -1
  136. package/dist/esm/cli.js.map +0 -1
@@ -1 +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"}
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,EAAqC,EAAE;IAC3E,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,yBAAe,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC;QAC1E,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CAAC;IACH,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,8BAAoB,CAAC,mBAAmB;QACvE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;KACjE,CAAC,CAAC;IAEH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AACzC,CAAC,CAAC;AAEF,0GAA0G;AACnG,MAAM,qBAAqB,GAAG,CACnC,IAAsB,EAC+B,EAAE;IACvD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACrD,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,OAAO,EAAE,KAAK,EAAE,CAAC;IACzD,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,OAAO,EAAE,IAAI,EAAE,CAAC;AACxD,CAAC,CAAC;AAfW,QAAA,qBAAqB,yBAehC;AAEF,2HAA2H;AAC3H,MAAM,MAAM,GAAG,CAAC,OAAe,EAAU,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAErF,4GAA4G;AACrG,MAAM,kBAAkB,GAAG,CAChC,IAAsB,EAMtB,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACpD,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;IACvE,MAAM,OAAO,GAAG,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE5E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAChD,CAAC,CAAC;AAdW,QAAA,kBAAkB,sBAc7B;AAEF,2CAAyB;AACzB,4CAA0B;AAC1B,4CAA0B"}
@@ -1,12 +1,18 @@
1
1
  import { BaseHelper } from '@venizia/ignis-helpers';
2
- import { type IScanOptions, type IScannedArtifact } from './common';
2
+ import { type IScanOptions, type IScanReport, type IScannedArtifact } from './common';
3
3
  /** Finds exported classes carrying a stereotype decorator by reading the source, never by running it. */
4
4
  export declare class ArtifactScanner extends BaseHelper {
5
5
  private static instance?;
6
6
  private constructor();
7
7
  static getInstance(): ArtifactScanner;
8
8
  scan(opts: IScanOptions): IScannedArtifact[];
9
- private listSourceFiles;
9
+ /** `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. */
10
+ scanWithReport(opts: IScanOptions): IScanReport;
11
+ /** A hidden file is only reported on, never a reason to fail: a scan error becomes one warning and the file contributes nothing. */
12
+ private scanHiddenFile;
13
+ private sortArtifacts;
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
+ private partitionSourceFiles;
10
16
  private scanFile;
11
17
  /** local identifier -> stereotype name, for named imports from an IGNIS module (aliases resolved). */
12
18
  private collectStereotypeImports;
@@ -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,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"}
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"}
@@ -18,24 +18,49 @@ class ArtifactScanner extends ignis_helpers_1.BaseHelper {
18
18
  return (this.instance ??= new ArtifactScanner());
19
19
  }
20
20
  scan(opts) {
21
+ return this.scanWithReport(opts).artifacts;
22
+ }
23
+ /** `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. */
24
+ scanWithReport(opts) {
21
25
  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 }));
26
+ const defaultGlobs = common_1.ArtifactStereotypes.DEFAULT_IGNORE.map(pattern => new Bun.Glob(pattern));
27
+ const userGlobs = (opts.ignore ?? []).map(pattern => new Bun.Glob(pattern));
28
+ const { kept, hidden } = this.partitionSourceFiles({ root, defaultGlobs, userGlobs });
29
+ return {
30
+ artifacts: this.sortArtifacts(kept.flatMap(filePath => this.scanFile({ filePath }))),
31
+ ignored: this.sortArtifacts(hidden.flatMap(filePath => this.scanHiddenFile({ filePath }))),
32
+ };
33
+ }
34
+ /** A hidden file is only reported on, never a reason to fail: a scan error becomes one warning and the file contributes nothing. */
35
+ scanHiddenFile(opts) {
36
+ try {
37
+ return this.scanFile({ filePath: opts.filePath, isHidden: true });
38
+ }
39
+ catch (error) {
40
+ const reason = error instanceof Error ? error.message : String(error);
41
+ this.logger.for('scanHiddenFile').warn('Skipped hidden file %s | %s', opts.filePath, reason);
42
+ return [];
43
+ }
44
+ }
45
+ sortArtifacts(artifacts) {
24
46
  return artifacts.sort((a, b) => a.type.localeCompare(b.type) || a.className.localeCompare(b.className));
25
47
  }
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))) {
48
+ /** `kept` feeds the index; `hidden` is what only a user pattern excluded (a default pattern wins, so tests and generated files are never reported). */
49
+ partitionSourceFiles(opts) {
50
+ const kept = [];
51
+ const hidden = [];
52
+ const sync = new Bun.Glob('**/*.ts').scanSync({ cwd: opts.root });
53
+ for (const relative of sync) {
54
+ if (relative.endsWith('.d.ts') || opts.defaultGlobs.some(glob => glob.match(relative))) {
31
55
  continue;
32
56
  }
33
- files.push((0, node_path_1.join)(opts.root, relative));
57
+ const target = opts.userGlobs.some(glob => glob.match(relative)) ? hidden : kept;
58
+ target.push((0, node_path_1.join)(opts.root, relative));
34
59
  }
35
- return files.sort();
60
+ return { kept: kept.sort(), hidden: hidden.sort() };
36
61
  }
37
62
  scanFile(opts) {
38
- const { filePath } = opts;
63
+ const { filePath, isHidden = false } = opts;
39
64
  const source = typescript_1.default.createSourceFile(filePath, (0, node_fs_1.readFileSync)(filePath, 'utf8'), typescript_1.default.ScriptTarget.Latest, true);
40
65
  const stereotypeByLocalName = this.collectStereotypeImports({ source });
41
66
  if (stereotypeByLocalName.size === 0) {
@@ -68,9 +93,11 @@ class ArtifactScanner extends ignis_helpers_1.BaseHelper {
68
93
  exportedNames.has(className);
69
94
  const isAbstract = has(typescript_1.default.SyntaxKind.AbstractKeyword);
70
95
  if (!isNamedExport || isAbstract) {
71
- this.logger
72
- .for('scanFile')
73
- .warn('Skipped %s in %s | %s', className, filePath, isAbstract ? 'abstract' : 'not a named export');
96
+ if (!isHidden) {
97
+ this.logger
98
+ .for('scanFile')
99
+ .warn('Skipped %s in %s | %s', className, filePath, isAbstract ? 'abstract' : 'not a named export');
100
+ }
74
101
  return;
75
102
  }
76
103
  found.push({ className, filePath, type: types[0] });
@@ -118,7 +145,8 @@ class ArtifactScanner extends ignis_helpers_1.BaseHelper {
118
145
  artifactTypesOf(opts) {
119
146
  const { node, stereotypeByLocalName, filePath, className } = opts;
120
147
  const types = [];
121
- for (const decorator of typescript_1.default.getDecorators(node) ?? []) {
148
+ const decorators = typescript_1.default.getDecorators(node) ?? [];
149
+ for (const decorator of decorators) {
122
150
  const expression = decorator.expression;
123
151
  if (!typescript_1.default.isCallExpression(expression) || !typescript_1.default.isIdentifier(expression.expression)) {
124
152
  continue;
@@ -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":"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"}
@@ -1,2 +1,3 @@
1
+ export * from './build-info';
1
2
  export * from './generator';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -14,5 +14,6 @@ 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("./build-info"), exports);
17
18
  __exportStar(require("./generator"), exports);
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,8CAA4B"}
@@ -0,0 +1,20 @@
1
+ import type { TConstValue } from '@venizia/ignis-helpers';
2
+ export declare class BuildInfoFormats {
3
+ static readonly TS = "ts";
4
+ static readonly JSON = "json";
5
+ static readonly SCHEME_SET: Set<string>;
6
+ static isValid(value: string): boolean;
7
+ }
8
+ export type TBuildInfoFormat = TConstValue<typeof BuildInfoFormats>;
9
+ /**
10
+ * Each field is spelled differently by every CI provider, and `APP_ENV_*` is what this
11
+ * organisation's pipelines export - so it is read before the generic `APP_BUILD_*` pair and before
12
+ * anything provider-specific. The first key carrying a non-blank value wins.
13
+ */
14
+ export declare class BuildInfoEnvironmentKeys {
15
+ static readonly VERSION: readonly string[];
16
+ static readonly COMMIT: readonly string[];
17
+ static readonly BRANCH: readonly string[];
18
+ static readonly BUILT_AT: readonly string[];
19
+ }
20
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/build-info/common/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ;IAC1B,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAE9B,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAyC;IAEnE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC;AAED,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEpE;;;;GAIG;AACH,qBAAa,wBAAwB;IACnC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAKxC;IAEF,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAMvC;IAEF,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAKvC;IAEF,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAA4C;CACxF"}
@@ -0,0 +1,36 @@
1
+ export class BuildInfoFormats {
2
+ static { this.TS = 'ts'; }
3
+ static { this.JSON = 'json'; }
4
+ static { this.SCHEME_SET = new Set([this.TS, this.JSON]); }
5
+ static isValid(value) {
6
+ return this.SCHEME_SET.has(value);
7
+ }
8
+ }
9
+ /**
10
+ * Each field is spelled differently by every CI provider, and `APP_ENV_*` is what this
11
+ * organisation's pipelines export - so it is read before the generic `APP_BUILD_*` pair and before
12
+ * anything provider-specific. The first key carrying a non-blank value wins.
13
+ */
14
+ export class BuildInfoEnvironmentKeys {
15
+ static { this.VERSION = [
16
+ 'APP_ENV_BUILD_VERSION',
17
+ 'APP_BUILD_VERSION',
18
+ 'CI_COMMIT_TAG',
19
+ 'GITHUB_REF_NAME',
20
+ ]; }
21
+ static { this.COMMIT = [
22
+ 'APP_ENV_BUILD_COMMIT_TAG',
23
+ 'APP_BUILD_COMMIT',
24
+ 'CI_COMMIT_SHA',
25
+ 'GITHUB_SHA',
26
+ 'COMMIT_SHA',
27
+ ]; }
28
+ static { this.BRANCH = [
29
+ 'APP_BUILD_BRANCH',
30
+ 'CI_COMMIT_REF_NAME',
31
+ 'GITHUB_REF_NAME',
32
+ 'BRANCH_NAME',
33
+ ]; }
34
+ static { this.BUILT_AT = ['APP_ENV_BUILD_DATE', 'APP_BUILD_DATE']; }
35
+ }
36
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/build-info/common/constants.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,gBAAgB;aACX,OAAE,GAAG,IAAI,CAAC;aACV,SAAI,GAAG,MAAM,CAAC;aAEd,eAAU,GAAG,IAAI,GAAG,CAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnE,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;;AAKH;;;;GAIG;AACH,MAAM,OAAO,wBAAwB;aACnB,YAAO,GAAsB;QAC3C,uBAAuB;QACvB,mBAAmB;QACnB,eAAe;QACf,iBAAiB;KAClB,CAAC;aAEc,WAAM,GAAsB;QAC1C,0BAA0B;QAC1B,kBAAkB;QAClB,eAAe;QACf,YAAY;QACZ,YAAY;KACb,CAAC;aAEc,WAAM,GAAsB;QAC1C,kBAAkB;QAClB,oBAAoB;QACpB,iBAAiB;QACjB,aAAa;KACd,CAAC;aAEc,aAAQ,GAAsB,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './constants.js';
2
+ export * from './types.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/build-info/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './constants.js';
2
+ export * from './types.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/build-info/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { TBuildInfoRecord } from '@venizia/ignis-helpers/core';
2
+ import type { TBuildInfoFormat } from './constants.js';
3
+ export interface IBuildInfoOptions {
4
+ out: string;
5
+ /** Where `package.json` is read from and where `git` is asked; default the cwd. */
6
+ root?: string;
7
+ format?: TBuildInfoFormat;
8
+ /** Name of the exported constant in `ts` format; default `BUILD_INFO`. */
9
+ exportName?: string;
10
+ }
11
+ export interface IBuildInfoResult {
12
+ buildInfo: TBuildInfoRecord;
13
+ content: string;
14
+ out: string;
15
+ }
16
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/build-info/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/build-info/common/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import type { TBuildInfoRecord } from '@venizia/ignis-helpers/core';
2
+ import { type TBuildInfoFormat } from './common/index.js';
3
+ /** Renders the stamp: a static `ts` const a bundler bakes in, or the same record as `json` for a Vite app or a Tauri shell. */
4
+ export declare class BuildInfoEmitter {
5
+ static readonly DEFAULT_EXPORT_NAME = "BUILD_INFO";
6
+ static render(opts: {
7
+ buildInfo: TBuildInfoRecord;
8
+ format: TBuildInfoFormat;
9
+ exportName: string;
10
+ }): string;
11
+ }
12
+ //# sourceMappingURL=emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../../src/build-info/emitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEnE,+HAA+H;AAC/H,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,QAAQ,CAAC,mBAAmB,gBAAgB;IAEnD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAClB,SAAS,EAAE,gBAAgB,CAAC;QAC5B,MAAM,EAAE,gBAAgB,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,MAAM;CAmBX"}
@@ -0,0 +1,22 @@
1
+ import { BuildInfoFormats } from './common/index.js';
2
+ /** Renders the stamp: a static `ts` const a bundler bakes in, or the same record as `json` for a Vite app or a Tauri shell. */
3
+ export class BuildInfoEmitter {
4
+ static { this.DEFAULT_EXPORT_NAME = 'BUILD_INFO'; }
5
+ static render(opts) {
6
+ const { buildInfo, format, exportName } = opts;
7
+ if (format === BuildInfoFormats.JSON) {
8
+ return `${JSON.stringify(buildInfo, null, 2)}\n`;
9
+ }
10
+ const fields = Object.entries(buildInfo)
11
+ .map(([key, value]) => ` ${key}: ${JSON.stringify(value)},`)
12
+ .join('\n');
13
+ return [
14
+ '// AUTO-GENERATED by @venizia/ignis-boot - do not edit. Regenerate: ignis-build-info generate',
15
+ `export const ${exportName} = {`,
16
+ fields,
17
+ '} as const;',
18
+ '',
19
+ ].join('\n');
20
+ }
21
+ }
22
+ //# sourceMappingURL=emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../../src/build-info/emitter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAyB,MAAM,UAAU,CAAC;AAEnE,+HAA+H;AAC/H,MAAM,OAAO,gBAAgB;aACX,wBAAmB,GAAG,YAAY,CAAC;IAEnD,MAAM,CAAC,MAAM,CAAC,IAIb;QACC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAE/C,IAAI,MAAM,KAAK,gBAAgB,CAAC,IAAI,EAAE,CAAC;YACrC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;QACnD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;aACrC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;aAC5D,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO;YACL,+FAA+F;YAC/F,gBAAgB,UAAU,MAAM;YAChC,MAAM;YACN,aAAa;YACb,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type IBuildInfoOptions, type IBuildInfoResult } from './common/index.js';
2
+ /**
3
+ * Writes the stamp. Unlike the artifact index this ALWAYS writes: `builtAt` changes every run, so
4
+ * an unchanged-content short-circuit would be dead code that hides a stale timestamp.
5
+ */
6
+ export declare const generateBuildInfo: (opts: IBuildInfoOptions) => Promise<IBuildInfoResult>;
7
+ export * from './common/index.js';
8
+ export * from './emitter.js';
9
+ export * from './resolver.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/build-info/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAI3F;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAU,MAAM,iBAAiB,KAAG,OAAO,CAAC,gBAAgB,CAazF,CAAC;AAEF,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { mkdirSync, writeFileSync } from 'node:fs';
2
+ import { dirname, resolve } from 'node:path';
3
+ import { BuildInfoFormats } from './common/index.js';
4
+ import { BuildInfoEmitter } from './emitter.js';
5
+ import { BuildInfoResolver } from './resolver.js';
6
+ /**
7
+ * Writes the stamp. Unlike the artifact index this ALWAYS writes: `builtAt` changes every run, so
8
+ * an unchanged-content short-circuit would be dead code that hides a stale timestamp.
9
+ */
10
+ export const generateBuildInfo = async (opts) => {
11
+ const buildInfo = await BuildInfoResolver.getInstance().resolve({ root: opts.root });
12
+ const content = BuildInfoEmitter.render({
13
+ buildInfo,
14
+ format: opts.format ?? BuildInfoFormats.TS,
15
+ exportName: opts.exportName ?? BuildInfoEmitter.DEFAULT_EXPORT_NAME,
16
+ });
17
+ const out = resolve(opts.out);
18
+ mkdirSync(dirname(out), { recursive: true });
19
+ writeFileSync(out, content);
20
+ return { buildInfo, content, out };
21
+ };
22
+ export * from './common/index.js';
23
+ export * from './emitter.js';
24
+ export * from './resolver.js';
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/build-info/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAiD,MAAM,UAAU,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,IAAuB,EAA6B,EAAE;IAC5F,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACrF,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC;QACtC,SAAS;QACT,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,gBAAgB,CAAC,EAAE;QAC1C,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,gBAAgB,CAAC,mBAAmB;KACpE,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,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,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AACrC,CAAC,CAAC;AAEF,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { BaseHelper } from '@venizia/ignis-helpers';
2
+ import { type TBuildInfoRecord } from '@venizia/ignis-helpers/core';
3
+ /**
4
+ * Resolves the stamp: environment first (CI knows the release tag), then `git`, then the
5
+ * manifest. Every miss is logged with its reason and degrades one field to
6
+ * {@link BuildInfoRegistry.UNSPECIFIED} - a Distroless image has no `git` and an exported tarball
7
+ * has no manifest, and a build must not die over a stamp.
8
+ */
9
+ export declare class BuildInfoResolver extends BaseHelper {
10
+ private static instance?;
11
+ private constructor();
12
+ static getInstance(): BuildInfoResolver;
13
+ resolve(opts?: {
14
+ root?: string;
15
+ }): Promise<TBuildInfoRecord>;
16
+ private resolveEnvironmentValue;
17
+ /**
18
+ * `nothrow()` covers a nonzero exit; the `catch` covers `git` being absent and also `Bun` being
19
+ * absent - under plain Node the `ReferenceError` degrades the field instead of killing the build.
20
+ */
21
+ private resolveGitValue;
22
+ /** `JSON.parse` promises nothing about the shape, so a manifest holding `{ "name": 42 }` must not become a numeric `service`. */
23
+ private resolveManifest;
24
+ }
25
+ //# sourceMappingURL=resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../src/build-info/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAQvF;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,UAAU;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAoB;IAE5C,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,iBAAiB;IAIjC,OAAO,CAAC,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkClE,OAAO,CAAC,uBAAuB;IAW/B;;;OAGG;YACW,eAAe;IA4B7B,iIAAiI;IACjI,OAAO,CAAC,eAAe;CAyBxB"}
@@ -0,0 +1,101 @@
1
+ import { BaseHelper } from '@venizia/ignis-helpers';
2
+ import { BuildInfoRegistry } from '@venizia/ignis-helpers/core';
3
+ import { existsSync, readFileSync } from 'node:fs';
4
+ import { resolve } from 'node:path';
5
+ import { BuildInfoEnvironmentKeys } from './common/index.js';
6
+ /** Length of a short SHA; an env value already shorter is left alone. */
7
+ const COMMIT_LENGTH = 12;
8
+ /**
9
+ * Resolves the stamp: environment first (CI knows the release tag), then `git`, then the
10
+ * manifest. Every miss is logged with its reason and degrades one field to
11
+ * {@link BuildInfoRegistry.UNSPECIFIED} - a Distroless image has no `git` and an exported tarball
12
+ * has no manifest, and a build must not die over a stamp.
13
+ */
14
+ export class BuildInfoResolver extends BaseHelper {
15
+ constructor() {
16
+ super({ scope: BuildInfoResolver.name });
17
+ }
18
+ static getInstance() {
19
+ return (this.instance ??= new BuildInfoResolver());
20
+ }
21
+ async resolve(opts) {
22
+ const root = resolve(opts?.root ?? process.cwd());
23
+ const manifest = this.resolveManifest({ root });
24
+ // Independent processes; sequencing them would double the latency of the common case for nothing.
25
+ const [gitCommit, gitBranch] = await Promise.all([
26
+ this.resolveGitValue({ args: ['rev-parse', `--short=${COMMIT_LENGTH}`, 'HEAD'], root }),
27
+ this.resolveGitValue({ args: ['rev-parse', '--abbrev-ref', 'HEAD'], root }),
28
+ ]);
29
+ const unspecified = BuildInfoRegistry.UNSPECIFIED;
30
+ return {
31
+ service: manifest.name ?? unspecified,
32
+ version: this.resolveEnvironmentValue({ keys: BuildInfoEnvironmentKeys.VERSION }) ??
33
+ manifest.version ??
34
+ unspecified,
35
+ commit: this.resolveEnvironmentValue({ keys: BuildInfoEnvironmentKeys.COMMIT })?.slice(0, COMMIT_LENGTH) ??
36
+ gitCommit ??
37
+ unspecified,
38
+ branch: this.resolveEnvironmentValue({ keys: BuildInfoEnvironmentKeys.BRANCH }) ??
39
+ gitBranch ??
40
+ unspecified,
41
+ builtAt: this.resolveEnvironmentValue({ keys: BuildInfoEnvironmentKeys.BUILT_AT }) ??
42
+ new Date().toISOString(),
43
+ };
44
+ }
45
+ resolveEnvironmentValue(opts) {
46
+ for (const key of opts.keys) {
47
+ const value = process.env[key];
48
+ if (value !== undefined && value.trim().length > 0) {
49
+ return value.trim();
50
+ }
51
+ }
52
+ return undefined;
53
+ }
54
+ /**
55
+ * `nothrow()` covers a nonzero exit; the `catch` covers `git` being absent and also `Bun` being
56
+ * absent - under plain Node the `ReferenceError` degrades the field instead of killing the build.
57
+ */
58
+ async resolveGitValue(opts) {
59
+ const { args, root } = opts;
60
+ try {
61
+ const result = await Bun.$ `git ${args}`.cwd(root).quiet().nothrow();
62
+ // `rev-parse --abbrev-ref HEAD` in a repository with no commit prints the literal `HEAD` on
63
+ // stdout while exiting 128, so the exit code decides and stdout alone never does.
64
+ if (result.exitCode !== 0) {
65
+ this.logger.debug('git %s | exit: %d | %s', args.join(' '), result.exitCode, result.stderr.toString().trim());
66
+ return undefined;
67
+ }
68
+ const value = result.stdout.toString().trim();
69
+ return value.length > 0 ? value : undefined;
70
+ }
71
+ catch (error) {
72
+ this.logger.debug('git %s | unavailable: %s', args.join(' '), error);
73
+ return undefined;
74
+ }
75
+ }
76
+ /** `JSON.parse` promises nothing about the shape, so a manifest holding `{ "name": 42 }` must not become a numeric `service`. */
77
+ resolveManifest(opts) {
78
+ const manifest = resolve(opts.root, 'package.json');
79
+ if (!existsSync(manifest)) {
80
+ this.logger.debug('No package.json at %s', opts.root);
81
+ return {};
82
+ }
83
+ try {
84
+ const parsed = JSON.parse(readFileSync(manifest, 'utf8'));
85
+ if (typeof parsed !== 'object' || parsed === null) {
86
+ return {};
87
+ }
88
+ const name = 'name' in parsed ? parsed.name : undefined;
89
+ const version = 'version' in parsed ? parsed.version : undefined;
90
+ return {
91
+ name: typeof name === 'string' ? name : undefined,
92
+ version: typeof version === 'string' ? version : undefined,
93
+ };
94
+ }
95
+ catch (error) {
96
+ this.logger.debug('Unreadable package.json at %s | %s', manifest, error);
97
+ return {};
98
+ }
99
+ }
100
+ }
101
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/build-info/resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env bun
2
+ import '../common/install-quiet-logger.js';
3
+ //# sourceMappingURL=artifacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../../src/clis/artifacts.ts"],"names":[],"mappings":";AACA,OAAO,gCAAgC,CAAC"}
@@ -1,6 +1,8 @@
1
1
  #!/usr/bin/env bun
2
+ import '../common/install-quiet-logger.js';
3
+ import { relative } from 'node:path';
2
4
  import { parseArgs } from 'node:util';
3
- import { checkArtifactIndex, generateArtifactIndex } from './generator';
5
+ import { checkArtifactIndex, generateArtifactIndex } from '../generator/index.js';
4
6
  const USAGE = 'ignis-artifacts <generate|check> [--root src] [--out src/generated/artifacts.ts] [--ignore a,b] [--export GeneratedArtifacts]';
5
7
  const { positionals, values } = parseArgs({
6
8
  args: process.argv.slice(2),
@@ -21,16 +23,24 @@ const options = {
21
23
  .filter(Boolean),
22
24
  exportName: values.export,
23
25
  };
26
+ /** One stderr line per decorated class a user `--ignore` pattern hid; silence when nothing is hidden. */
27
+ const warnIgnored = (opts) => {
28
+ for (const artifact of opts.ignored) {
29
+ console.error(`warning: ${artifact.className} (${artifact.type}) in ${relative(opts.root, artifact.filePath)} matches --ignore and is left out of the index`);
30
+ }
31
+ };
24
32
  /** Exit code of the command, so the process exits in exactly one place. */
25
33
  const run = () => {
26
34
  switch (positionals[0]) {
27
35
  case 'generate': {
28
36
  const result = generateArtifactIndex(options);
29
37
  console.log(`${result.written ? 'wrote' : 'up to date'} ${options.out} | ${result.artifacts.length} artifact(s)`);
38
+ warnIgnored({ ignored: result.ignored, root: options.root });
30
39
  return 0;
31
40
  }
32
41
  case 'check': {
33
42
  const result = checkArtifactIndex(options);
43
+ warnIgnored({ ignored: result.ignored, root: options.root });
34
44
  if (result.isFresh) {
35
45
  console.log(`fresh ${options.out}`);
36
46
  return 0;
@@ -45,4 +55,4 @@ const run = () => {
45
55
  }
46
56
  };
47
57
  process.exit(run());
48
- //# sourceMappingURL=cli.js.map
58
+ //# sourceMappingURL=artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../src/clis/artifacts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env bun
2
+ import '../common/install-quiet-logger.js';
3
+ //# sourceMappingURL=build-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-info.d.ts","sourceRoot":"","sources":["../../../src/clis/build-info.ts"],"names":[],"mappings":";AACA,OAAO,gCAAgC,CAAC"}