@venizia/ignis-boot 0.2.0-3 → 0.2.0-30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +127 -151
- package/dist/cjs/build-info/common/constants.d.ts +20 -0
- package/dist/cjs/build-info/common/constants.d.ts.map +1 -0
- package/dist/cjs/build-info/common/constants.js +41 -0
- package/dist/cjs/build-info/common/constants.js.map +1 -0
- package/dist/{esm → cjs/build-info}/common/index.d.ts +1 -1
- package/dist/cjs/build-info/common/index.d.ts.map +1 -0
- package/dist/cjs/{common → build-info/common}/index.js +1 -1
- package/dist/cjs/build-info/common/index.js.map +1 -0
- package/dist/cjs/build-info/common/types.d.ts +16 -0
- package/dist/cjs/build-info/common/types.d.ts.map +1 -0
- package/dist/cjs/build-info/common/types.js +3 -0
- package/dist/cjs/build-info/common/types.js.map +1 -0
- package/dist/cjs/build-info/emitter.d.ts +12 -0
- package/dist/cjs/build-info/emitter.d.ts.map +1 -0
- package/dist/cjs/build-info/emitter.js +26 -0
- package/dist/cjs/build-info/emitter.js.map +1 -0
- package/dist/cjs/build-info/index.d.ts +10 -0
- package/dist/cjs/build-info/index.d.ts.map +1 -0
- package/dist/cjs/build-info/index.js +43 -0
- package/dist/cjs/build-info/index.js.map +1 -0
- package/dist/cjs/build-info/resolver.d.ts +25 -0
- package/dist/cjs/build-info/resolver.d.ts.map +1 -0
- package/dist/cjs/build-info/resolver.js +105 -0
- package/dist/cjs/build-info/resolver.js.map +1 -0
- package/dist/cjs/clis/artifacts.d.ts +3 -0
- package/dist/cjs/clis/artifacts.d.ts.map +1 -0
- package/dist/cjs/clis/artifacts.js +60 -0
- package/dist/cjs/clis/artifacts.js.map +1 -0
- package/dist/cjs/clis/build-info.d.ts +3 -0
- package/dist/cjs/clis/build-info.d.ts.map +1 -0
- package/dist/cjs/clis/build-info.js +48 -0
- package/dist/cjs/clis/build-info.js.map +1 -0
- package/dist/cjs/common/install-quiet-logger.d.ts +2 -0
- package/dist/cjs/common/install-quiet-logger.d.ts.map +1 -0
- package/dist/cjs/common/install-quiet-logger.js +7 -0
- package/dist/cjs/common/install-quiet-logger.js.map +1 -0
- package/dist/cjs/common/quiet-logger.d.ts +18 -0
- package/dist/cjs/common/quiet-logger.d.ts.map +1 -0
- package/dist/cjs/common/quiet-logger.js +46 -0
- package/dist/cjs/common/quiet-logger.js.map +1 -0
- package/dist/cjs/generator/common/constants.d.ts +46 -0
- package/dist/cjs/generator/common/constants.d.ts.map +1 -0
- package/dist/cjs/generator/common/constants.js +87 -0
- package/dist/cjs/generator/common/constants.js.map +1 -0
- package/dist/cjs/{common → generator/common}/index.d.ts +1 -1
- package/dist/cjs/generator/common/index.d.ts.map +1 -0
- package/dist/cjs/{base → generator/common}/index.js +2 -1
- package/dist/cjs/generator/common/index.js.map +1 -0
- package/dist/cjs/generator/common/types.d.ts +18 -0
- package/dist/cjs/generator/common/types.d.ts.map +1 -0
- package/dist/cjs/generator/common/types.js +3 -0
- package/dist/cjs/generator/common/types.js.map +1 -0
- package/dist/cjs/generator/emitter.d.ts +29 -0
- package/dist/cjs/generator/emitter.d.ts.map +1 -0
- package/dist/cjs/generator/emitter.js +65 -0
- package/dist/cjs/generator/emitter.js.map +1 -0
- package/dist/cjs/generator/index.d.ts +24 -0
- package/dist/cjs/generator/index.d.ts.map +1 -0
- package/dist/cjs/generator/index.js +62 -0
- package/dist/cjs/generator/index.js.map +1 -0
- package/dist/cjs/generator/scanner.d.ts +24 -0
- package/dist/cjs/generator/scanner.d.ts.map +1 -0
- package/dist/cjs/generator/scanner.js +199 -0
- package/dist/cjs/generator/scanner.js.map +1 -0
- package/dist/cjs/index.d.ts +2 -6
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +2 -6
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/build-info/common/constants.d.ts +20 -0
- package/dist/esm/build-info/common/constants.d.ts.map +1 -0
- package/dist/esm/build-info/common/constants.js +36 -0
- package/dist/esm/build-info/common/constants.js.map +1 -0
- package/dist/esm/build-info/common/index.d.ts +3 -0
- package/dist/esm/build-info/common/index.d.ts.map +1 -0
- package/dist/esm/{common → build-info/common}/index.js +1 -1
- package/dist/esm/build-info/common/index.js.map +1 -0
- package/dist/esm/build-info/common/types.d.ts +16 -0
- package/dist/esm/build-info/common/types.d.ts.map +1 -0
- package/dist/esm/build-info/common/types.js +2 -0
- package/dist/esm/build-info/common/types.js.map +1 -0
- package/dist/esm/build-info/emitter.d.ts +12 -0
- package/dist/esm/build-info/emitter.d.ts.map +1 -0
- package/dist/esm/build-info/emitter.js +22 -0
- package/dist/esm/build-info/emitter.js.map +1 -0
- package/dist/esm/build-info/index.d.ts +10 -0
- package/dist/esm/build-info/index.d.ts.map +1 -0
- package/dist/esm/build-info/index.js +25 -0
- package/dist/esm/build-info/index.js.map +1 -0
- package/dist/esm/build-info/resolver.d.ts +25 -0
- package/dist/esm/build-info/resolver.d.ts.map +1 -0
- package/dist/esm/build-info/resolver.js +101 -0
- package/dist/esm/build-info/resolver.js.map +1 -0
- package/dist/esm/clis/artifacts.d.ts +3 -0
- package/dist/esm/clis/artifacts.d.ts.map +1 -0
- package/dist/esm/clis/artifacts.js +58 -0
- package/dist/esm/clis/artifacts.js.map +1 -0
- package/dist/esm/clis/build-info.d.ts +3 -0
- package/dist/esm/clis/build-info.d.ts.map +1 -0
- package/dist/esm/clis/build-info.js +46 -0
- package/dist/esm/clis/build-info.js.map +1 -0
- package/dist/esm/common/install-quiet-logger.d.ts +2 -0
- package/dist/esm/common/install-quiet-logger.d.ts.map +1 -0
- package/dist/esm/common/install-quiet-logger.js +5 -0
- package/dist/esm/common/install-quiet-logger.js.map +1 -0
- package/dist/esm/common/quiet-logger.d.ts +18 -0
- package/dist/esm/common/quiet-logger.d.ts.map +1 -0
- package/dist/esm/common/quiet-logger.js +42 -0
- package/dist/esm/common/quiet-logger.js.map +1 -0
- package/dist/esm/generator/common/constants.d.ts +46 -0
- package/dist/esm/generator/common/constants.d.ts.map +1 -0
- package/dist/esm/generator/common/constants.js +81 -0
- package/dist/esm/generator/common/constants.js.map +1 -0
- package/dist/esm/generator/common/index.d.ts +3 -0
- package/dist/esm/generator/common/index.d.ts.map +1 -0
- package/dist/esm/generator/common/index.js +3 -0
- package/dist/esm/generator/common/index.js.map +1 -0
- package/dist/esm/generator/common/types.d.ts +18 -0
- package/dist/esm/generator/common/types.d.ts.map +1 -0
- package/dist/esm/generator/common/types.js +2 -0
- package/dist/esm/generator/common/types.js.map +1 -0
- package/dist/esm/generator/emitter.d.ts +29 -0
- package/dist/esm/generator/emitter.d.ts.map +1 -0
- package/dist/esm/generator/emitter.js +61 -0
- package/dist/esm/generator/emitter.js.map +1 -0
- package/dist/esm/generator/index.d.ts +24 -0
- package/dist/esm/generator/index.d.ts.map +1 -0
- package/dist/esm/generator/index.js +43 -0
- package/dist/esm/generator/index.js.map +1 -0
- package/dist/esm/generator/scanner.d.ts +24 -0
- package/dist/esm/generator/scanner.d.ts.map +1 -0
- package/dist/esm/generator/scanner.js +192 -0
- package/dist/esm/generator/scanner.js.map +1 -0
- package/dist/esm/index.d.ts +2 -6
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -6
- package/dist/esm/index.js.map +1 -1
- package/package.json +34 -46
- package/dist/cjs/base/base-artifact-booter.d.ts +0 -18
- package/dist/cjs/base/base-artifact-booter.d.ts.map +0 -1
- package/dist/cjs/base/base-artifact-booter.js +0 -85
- package/dist/cjs/base/base-artifact-booter.js.map +0 -1
- package/dist/cjs/base/index.d.ts +0 -2
- package/dist/cjs/base/index.d.ts.map +0 -1
- package/dist/cjs/base/index.js.map +0 -1
- package/dist/cjs/boot.mixin.d.ts +0 -65
- package/dist/cjs/boot.mixin.d.ts.map +0 -1
- package/dist/cjs/boot.mixin.js +0 -29
- package/dist/cjs/boot.mixin.js.map +0 -1
- package/dist/cjs/booters/controller.booter.d.ts +0 -10
- package/dist/cjs/booters/controller.booter.d.ts.map +0 -1
- package/dist/cjs/booters/controller.booter.js +0 -45
- package/dist/cjs/booters/controller.booter.js.map +0 -1
- package/dist/cjs/booters/datasource.booter.d.ts +0 -10
- package/dist/cjs/booters/datasource.booter.d.ts.map +0 -1
- package/dist/cjs/booters/datasource.booter.js +0 -45
- package/dist/cjs/booters/datasource.booter.js.map +0 -1
- package/dist/cjs/booters/index.d.ts +0 -5
- package/dist/cjs/booters/index.d.ts.map +0 -1
- package/dist/cjs/booters/index.js +0 -21
- package/dist/cjs/booters/index.js.map +0 -1
- package/dist/cjs/booters/repository.booter.d.ts +0 -10
- package/dist/cjs/booters/repository.booter.d.ts.map +0 -1
- package/dist/cjs/booters/repository.booter.js +0 -45
- package/dist/cjs/booters/repository.booter.js.map +0 -1
- package/dist/cjs/booters/service.booter.d.ts +0 -10
- package/dist/cjs/booters/service.booter.d.ts.map +0 -1
- package/dist/cjs/booters/service.booter.js +0 -45
- package/dist/cjs/booters/service.booter.js.map +0 -1
- package/dist/cjs/bootstrapper.d.ts +0 -14
- package/dist/cjs/bootstrapper.d.ts.map +0 -1
- package/dist/cjs/bootstrapper.js +0 -121
- package/dist/cjs/bootstrapper.js.map +0 -1
- package/dist/cjs/common/constants.d.ts +0 -6
- package/dist/cjs/common/constants.d.ts.map +0 -1
- package/dist/cjs/common/constants.js +0 -10
- package/dist/cjs/common/constants.js.map +0 -1
- package/dist/cjs/common/index.d.ts.map +0 -1
- package/dist/cjs/common/index.js.map +0 -1
- package/dist/cjs/common/types.d.ts +0 -52
- package/dist/cjs/common/types.d.ts.map +0 -1
- package/dist/cjs/common/types.js +0 -5
- package/dist/cjs/common/types.js.map +0 -1
- package/dist/cjs/utilities/boot.utility.d.ts +0 -9
- package/dist/cjs/utilities/boot.utility.d.ts.map +0 -1
- package/dist/cjs/utilities/boot.utility.js +0 -51
- package/dist/cjs/utilities/boot.utility.js.map +0 -1
- package/dist/cjs/utilities/index.d.ts +0 -2
- package/dist/cjs/utilities/index.d.ts.map +0 -1
- package/dist/cjs/utilities/index.js +0 -18
- package/dist/cjs/utilities/index.js.map +0 -1
- package/dist/esm/base/base-artifact-booter.d.ts +0 -18
- package/dist/esm/base/base-artifact-booter.d.ts.map +0 -1
- package/dist/esm/base/base-artifact-booter.js +0 -81
- package/dist/esm/base/base-artifact-booter.js.map +0 -1
- package/dist/esm/base/index.d.ts +0 -2
- package/dist/esm/base/index.d.ts.map +0 -1
- package/dist/esm/base/index.js +0 -2
- package/dist/esm/base/index.js.map +0 -1
- package/dist/esm/boot.mixin.d.ts +0 -65
- package/dist/esm/boot.mixin.d.ts.map +0 -1
- package/dist/esm/boot.mixin.js +0 -25
- package/dist/esm/boot.mixin.js.map +0 -1
- package/dist/esm/booters/controller.booter.d.ts +0 -10
- package/dist/esm/booters/controller.booter.d.ts.map +0 -1
- package/dist/esm/booters/controller.booter.js +0 -42
- package/dist/esm/booters/controller.booter.js.map +0 -1
- package/dist/esm/booters/datasource.booter.d.ts +0 -10
- package/dist/esm/booters/datasource.booter.d.ts.map +0 -1
- package/dist/esm/booters/datasource.booter.js +0 -42
- package/dist/esm/booters/datasource.booter.js.map +0 -1
- package/dist/esm/booters/index.d.ts +0 -5
- package/dist/esm/booters/index.d.ts.map +0 -1
- package/dist/esm/booters/index.js +0 -5
- package/dist/esm/booters/index.js.map +0 -1
- package/dist/esm/booters/repository.booter.d.ts +0 -10
- package/dist/esm/booters/repository.booter.d.ts.map +0 -1
- package/dist/esm/booters/repository.booter.js +0 -42
- package/dist/esm/booters/repository.booter.js.map +0 -1
- package/dist/esm/booters/service.booter.d.ts +0 -10
- package/dist/esm/booters/service.booter.d.ts.map +0 -1
- package/dist/esm/booters/service.booter.js +0 -42
- package/dist/esm/booters/service.booter.js.map +0 -1
- package/dist/esm/bootstrapper.d.ts +0 -14
- package/dist/esm/bootstrapper.d.ts.map +0 -1
- package/dist/esm/bootstrapper.js +0 -118
- package/dist/esm/bootstrapper.js.map +0 -1
- package/dist/esm/common/constants.d.ts +0 -6
- package/dist/esm/common/constants.d.ts.map +0 -1
- package/dist/esm/common/constants.js +0 -6
- package/dist/esm/common/constants.js.map +0 -1
- package/dist/esm/common/index.d.ts.map +0 -1
- package/dist/esm/common/index.js.map +0 -1
- package/dist/esm/common/types.d.ts +0 -52
- package/dist/esm/common/types.d.ts.map +0 -1
- package/dist/esm/common/types.js +0 -2
- package/dist/esm/common/types.js.map +0 -1
- package/dist/esm/utilities/boot.utility.d.ts +0 -9
- package/dist/esm/utilities/boot.utility.d.ts.map +0 -1
- package/dist/esm/utilities/boot.utility.js +0 -46
- package/dist/esm/utilities/boot.utility.js.map +0 -1
- package/dist/esm/utilities/index.d.ts +0 -2
- package/dist/esm/utilities/index.d.ts.map +0 -1
- package/dist/esm/utilities/index.js +0 -2
- package/dist/esm/utilities/index.js.map +0 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { mkdirSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { dirname, resolve } from 'node:path';
|
|
3
|
+
import { BuildInfoFormats } from './common';
|
|
4
|
+
import { BuildInfoEmitter } from './emitter';
|
|
5
|
+
import { BuildInfoResolver } from './resolver';
|
|
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';
|
|
23
|
+
export * from './emitter';
|
|
24
|
+
export * from './resolver';
|
|
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';
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../../src/clis/artifacts.ts"],"names":[],"mappings":";AACA,OAAO,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
import '../common/install-quiet-logger';
|
|
3
|
+
import { relative } from 'node:path';
|
|
4
|
+
import { parseArgs } from 'node:util';
|
|
5
|
+
import { checkArtifactIndex, generateArtifactIndex } from '../generator';
|
|
6
|
+
const USAGE = 'ignis-artifacts <generate|check> [--root src] [--out src/generated/artifacts.ts] [--ignore a,b] [--export GeneratedArtifacts]';
|
|
7
|
+
const { positionals, values } = parseArgs({
|
|
8
|
+
args: process.argv.slice(2),
|
|
9
|
+
allowPositionals: true,
|
|
10
|
+
options: {
|
|
11
|
+
root: { type: 'string', default: 'src' },
|
|
12
|
+
out: { type: 'string', default: 'src/generated/artifacts.ts' },
|
|
13
|
+
ignore: { type: 'string' },
|
|
14
|
+
export: { type: 'string', default: 'GeneratedArtifacts' },
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
const options = {
|
|
18
|
+
root: values.root,
|
|
19
|
+
out: values.out,
|
|
20
|
+
ignore: values.ignore
|
|
21
|
+
?.split(',')
|
|
22
|
+
.map(pattern => pattern.trim())
|
|
23
|
+
.filter(Boolean),
|
|
24
|
+
exportName: values.export,
|
|
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
|
+
};
|
|
32
|
+
/** Exit code of the command, so the process exits in exactly one place. */
|
|
33
|
+
const run = () => {
|
|
34
|
+
switch (positionals[0]) {
|
|
35
|
+
case 'generate': {
|
|
36
|
+
const result = generateArtifactIndex(options);
|
|
37
|
+
console.log(`${result.written ? 'wrote' : 'up to date'} ${options.out} | ${result.artifacts.length} artifact(s)`);
|
|
38
|
+
warnIgnored({ ignored: result.ignored, root: options.root });
|
|
39
|
+
return 0;
|
|
40
|
+
}
|
|
41
|
+
case 'check': {
|
|
42
|
+
const result = checkArtifactIndex(options);
|
|
43
|
+
warnIgnored({ ignored: result.ignored, root: options.root });
|
|
44
|
+
if (result.isFresh) {
|
|
45
|
+
console.log(`fresh ${options.out}`);
|
|
46
|
+
return 0;
|
|
47
|
+
}
|
|
48
|
+
console.error(`stale ${options.out} - run: ignis-artifacts generate --root ${options.root} --out ${options.out}`);
|
|
49
|
+
return 1;
|
|
50
|
+
}
|
|
51
|
+
default: {
|
|
52
|
+
console.error(USAGE);
|
|
53
|
+
return 2;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
process.exit(run());
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"build-info.d.ts","sourceRoot":"","sources":["../../../src/clis/build-info.ts"],"names":[],"mappings":";AACA,OAAO,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
import '../common/install-quiet-logger';
|
|
3
|
+
import { parseArgs } from 'node:util';
|
|
4
|
+
import { BuildInfoEmitter, BuildInfoFormats, generateBuildInfo } from '../build-info';
|
|
5
|
+
const USAGE = 'ignis-build-info generate [--out src/_build_info.ts] [--root .] [--format ts|json] [--export BUILD_INFO]';
|
|
6
|
+
const { positionals, values } = parseArgs({
|
|
7
|
+
args: process.argv.slice(2),
|
|
8
|
+
allowPositionals: true,
|
|
9
|
+
options: {
|
|
10
|
+
out: { type: 'string', default: 'src/_build_info.ts' },
|
|
11
|
+
root: { type: 'string', default: '.' },
|
|
12
|
+
format: { type: 'string', default: BuildInfoFormats.TS },
|
|
13
|
+
export: { type: 'string', default: BuildInfoEmitter.DEFAULT_EXPORT_NAME },
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
/** Exit code of the command, so the process exits in exactly one place. */
|
|
17
|
+
const run = async () => {
|
|
18
|
+
if (positionals[0] !== 'generate') {
|
|
19
|
+
console.error(USAGE);
|
|
20
|
+
return 1;
|
|
21
|
+
}
|
|
22
|
+
if (!BuildInfoFormats.isValid(values.format)) {
|
|
23
|
+
console.error(`invalid --format '${values.format}' | expected one of: ${[...BuildInfoFormats.SCHEME_SET].join(', ')}`);
|
|
24
|
+
return 1;
|
|
25
|
+
}
|
|
26
|
+
// Narrowed by comparison, never asserted: `isValid` above already refused everything else.
|
|
27
|
+
const format = values.format === BuildInfoFormats.JSON ? BuildInfoFormats.JSON : BuildInfoFormats.TS;
|
|
28
|
+
const result = await generateBuildInfo({
|
|
29
|
+
out: values.out,
|
|
30
|
+
root: values.root,
|
|
31
|
+
format,
|
|
32
|
+
exportName: values.export,
|
|
33
|
+
});
|
|
34
|
+
const { service, version, commit, branch } = result.buildInfo;
|
|
35
|
+
console.log(`wrote ${values.out} | ${service}@${version} | ${commit} (${branch})`);
|
|
36
|
+
return 0;
|
|
37
|
+
};
|
|
38
|
+
run()
|
|
39
|
+
.then(code => {
|
|
40
|
+
process.exit(code);
|
|
41
|
+
})
|
|
42
|
+
.catch(error => {
|
|
43
|
+
console.error(error);
|
|
44
|
+
process.exit(1);
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=build-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-info.js","sourceRoot":"","sources":["../../../src/clis/build-info.ts"],"names":[],"mappings":";AACA,OAAO,gCAAgC,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEtF,MAAM,KAAK,GACT,0GAA0G,CAAC;AAE7G,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,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE;QACtD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAE,EAAE;QACxD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,CAAC,mBAAmB,EAAE;KAC1E;CACF,CAAC,CAAC;AAEH,2EAA2E;AAC3E,MAAM,GAAG,GAAG,KAAK,IAAqB,EAAE;IACtC,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,KAAK,CACX,qBAAqB,MAAM,CAAC,MAAM,wBAAwB,CAAC,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxG,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,2FAA2F;IAC3F,MAAM,MAAM,GACV,MAAM,CAAC,MAAM,KAAK,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAExF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;QACrC,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM;QACN,UAAU,EAAE,MAAM,CAAC,MAAM;KAC1B,CAAC,CAAC;IAEH,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,OAAO,IAAI,OAAO,MAAM,MAAM,KAAK,MAAM,GAAG,CAAC,CAAC;IAEnF,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAEF,GAAG,EAAE;KACF,IAAI,CAAC,IAAI,CAAC,EAAE;IACX,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC,CAAC;KACD,KAAK,CAAC,KAAK,CAAC,EAAE;IACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-quiet-logger.d.ts","sourceRoot":"","sources":["../../../src/common/install-quiet-logger.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { LoggerFactory } from '@venizia/ignis-helpers';
|
|
2
|
+
import { QuietLogger } from './quiet-logger';
|
|
3
|
+
// Imported first by the CLI: a provider registered after another module resolved its logger would still see the console fallback and its warning.
|
|
4
|
+
LoggerFactory.use({ provider: QuietLogger });
|
|
5
|
+
//# sourceMappingURL=install-quiet-logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-quiet-logger.js","sourceRoot":"","sources":["../../../src/common/install-quiet-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,kJAAkJ;AAClJ,aAAa,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ILogger, TLogLevel } from '@venizia/ignis-helpers/core';
|
|
2
|
+
/** The generator's own output goes through `console.log`; framework diagnostics below `warn` are dropped and the rest land on stderr, so a codegen run prints nothing but its result on stdout. */
|
|
3
|
+
export declare class QuietLogger implements ILogger {
|
|
4
|
+
private readonly scope;
|
|
5
|
+
private static readonly cache;
|
|
6
|
+
private readonly prefix;
|
|
7
|
+
private constructor();
|
|
8
|
+
static get(scope: string): ILogger;
|
|
9
|
+
private write;
|
|
10
|
+
debug(): void;
|
|
11
|
+
info(): void;
|
|
12
|
+
warn(message: string, ...args: unknown[]): void;
|
|
13
|
+
error(message: string, ...args: unknown[]): void;
|
|
14
|
+
emerg(message: string, ...args: unknown[]): void;
|
|
15
|
+
log(level: TLogLevel, message: string, ...args: unknown[]): void;
|
|
16
|
+
for(methodName: string): ILogger;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=quiet-logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quiet-logger.d.ts","sourceRoot":"","sources":["../../../src/common/quiet-logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAGtE,mMAAmM;AACnM,qBAAa,WAAY,YAAW,OAAO;IAIrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAH1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAkC;IAC/D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,OAAO;IAIP,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAWlC,OAAO,CAAC,KAAK;IAIb,KAAK,IAAI,IAAI;IAEb,IAAI,IAAI,IAAI;IAEZ,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIhD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIhD,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAQhE,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;CAGjC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { LogLevels } from '@venizia/ignis-helpers/core';
|
|
2
|
+
/** The generator's own output goes through `console.log`; framework diagnostics below `warn` are dropped and the rest land on stderr, so a codegen run prints nothing but its result on stdout. */
|
|
3
|
+
export class QuietLogger {
|
|
4
|
+
static { this.cache = new Map(); }
|
|
5
|
+
constructor(scope) {
|
|
6
|
+
this.scope = scope;
|
|
7
|
+
this.prefix = scope === '' ? '' : `[${scope}] `;
|
|
8
|
+
}
|
|
9
|
+
static get(scope) {
|
|
10
|
+
const cached = this.cache.get(scope);
|
|
11
|
+
if (cached) {
|
|
12
|
+
return cached;
|
|
13
|
+
}
|
|
14
|
+
const created = new QuietLogger(scope);
|
|
15
|
+
this.cache.set(scope, created);
|
|
16
|
+
return created;
|
|
17
|
+
}
|
|
18
|
+
write(opts) {
|
|
19
|
+
console.error(`${this.prefix}${opts.message}`, ...opts.args);
|
|
20
|
+
}
|
|
21
|
+
debug() { }
|
|
22
|
+
info() { }
|
|
23
|
+
warn(message, ...args) {
|
|
24
|
+
this.write({ message, args });
|
|
25
|
+
}
|
|
26
|
+
error(message, ...args) {
|
|
27
|
+
this.write({ message, args });
|
|
28
|
+
}
|
|
29
|
+
emerg(message, ...args) {
|
|
30
|
+
this.write({ message, args });
|
|
31
|
+
}
|
|
32
|
+
log(level, message, ...args) {
|
|
33
|
+
if (level === LogLevels.DEBUG || level === LogLevels.INFO) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
this.write({ message, args });
|
|
37
|
+
}
|
|
38
|
+
for(methodName) {
|
|
39
|
+
return QuietLogger.get(this.scope === '' ? methodName : `${this.scope}-${methodName}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=quiet-logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quiet-logger.js","sourceRoot":"","sources":["../../../src/common/quiet-logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,mMAAmM;AACnM,MAAM,OAAO,WAAW;aACE,UAAK,GAAG,IAAI,GAAG,EAAuB,CAAC;IAG/D,YAAqC,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;QAChD,IAAI,CAAC,MAAM,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,KAAa;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,IAA0C;QACtD,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,KAAU,CAAC;IAEhB,IAAI,KAAU,CAAC;IAEf,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QACtC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QACvC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QACvC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,GAAG,CAAC,KAAgB,EAAE,OAAe,EAAE,GAAG,IAAe;QACvD,IAAI,KAAK,KAAK,SAAS,CAAC,KAAK,IAAI,KAAK,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,GAAG,CAAC,UAAkB;QACpB,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,EAAE,CAAC,CAAC;IACzF,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
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 CONFIGURATION = "configuration";
|
|
5
|
+
static readonly COMPONENT = "component";
|
|
6
|
+
static readonly CONTROLLER = "controller";
|
|
7
|
+
static readonly SERVICE = "service";
|
|
8
|
+
static readonly REPOSITORY = "repository";
|
|
9
|
+
static readonly DATASOURCE = "datasource";
|
|
10
|
+
static readonly MODEL = "model";
|
|
11
|
+
static readonly SCHEME_SET: Set<string>;
|
|
12
|
+
static isValid(value: string): boolean;
|
|
13
|
+
}
|
|
14
|
+
export type TArtifactType = TConstValue<typeof ArtifactTypes>;
|
|
15
|
+
/** Mirrors the kernel's `ArtifactIndexFields` - the keys of the object the emitter writes and `registerArtifacts` reads. */
|
|
16
|
+
export declare class ArtifactIndexFields {
|
|
17
|
+
static readonly CONFIGURATIONS = "configurations";
|
|
18
|
+
static readonly DATA_SOURCES = "dataSources";
|
|
19
|
+
static readonly COMPONENTS = "components";
|
|
20
|
+
static readonly REPOSITORIES = "repositories";
|
|
21
|
+
static readonly SERVICES = "services";
|
|
22
|
+
static readonly CONTROLLERS = "controllers";
|
|
23
|
+
static readonly SCHEME_SET: Set<string>;
|
|
24
|
+
static isValid(value: string): boolean;
|
|
25
|
+
}
|
|
26
|
+
export type TArtifactIndexField = TConstValue<typeof ArtifactIndexFields>;
|
|
27
|
+
export declare class ArtifactStereotypes {
|
|
28
|
+
/** Decorator name as imported from `@venizia/ignis` or `@venizia/ignis-kernel` -> artifact type. */
|
|
29
|
+
static readonly BY_DECORATOR: Readonly<Record<string, TArtifactType>>;
|
|
30
|
+
static readonly ROOT_DECORATOR = "injectable";
|
|
31
|
+
static readonly SCHEME_SET: Set<string>;
|
|
32
|
+
static isValid(value: string): boolean;
|
|
33
|
+
static readonly SOURCE_MODULES: RegExp;
|
|
34
|
+
static readonly DEFAULT_IGNORE: string[];
|
|
35
|
+
/**
|
|
36
|
+
* The kernel's `registerArtifacts` order; `model` is never emitted. Configurations come first:
|
|
37
|
+
* `registerConfigurations` runs before the datasource and component sweeps, so a `@configuration`
|
|
38
|
+
* can shape what they read. The kernel sorts them among themselves by their `after` declarations
|
|
39
|
+
* at boot, so the order within the field does not matter here.
|
|
40
|
+
*/
|
|
41
|
+
static readonly EMIT_ORDER: ReadonlyArray<{
|
|
42
|
+
type: TArtifactType;
|
|
43
|
+
field: TArtifactIndexField;
|
|
44
|
+
}>;
|
|
45
|
+
}
|
|
46
|
+
//# 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,aAAa,mBAAmB;IAChD,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,cAQvB;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,cAAc,oBAAoB;IAClD,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,cAOvB;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,CAQnE;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;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,aAAa,CAAC;QAAC,KAAK,EAAE,mBAAmB,CAAA;KAAE,CAAC,CAO5F;CACH"}
|
|
@@ -0,0 +1,81 @@
|
|
|
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.CONFIGURATION = 'configuration'; }
|
|
4
|
+
static { this.COMPONENT = 'component'; }
|
|
5
|
+
static { this.CONTROLLER = 'controller'; }
|
|
6
|
+
static { this.SERVICE = 'service'; }
|
|
7
|
+
static { this.REPOSITORY = 'repository'; }
|
|
8
|
+
static { this.DATASOURCE = 'datasource'; }
|
|
9
|
+
static { this.MODEL = 'model'; }
|
|
10
|
+
static { this.SCHEME_SET = new Set([
|
|
11
|
+
this.CONFIGURATION,
|
|
12
|
+
this.COMPONENT,
|
|
13
|
+
this.CONTROLLER,
|
|
14
|
+
this.SERVICE,
|
|
15
|
+
this.REPOSITORY,
|
|
16
|
+
this.DATASOURCE,
|
|
17
|
+
this.MODEL,
|
|
18
|
+
]); }
|
|
19
|
+
static isValid(value) {
|
|
20
|
+
return this.SCHEME_SET.has(value);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/** Mirrors the kernel's `ArtifactIndexFields` - the keys of the object the emitter writes and `registerArtifacts` reads. */
|
|
24
|
+
export class ArtifactIndexFields {
|
|
25
|
+
static { this.CONFIGURATIONS = 'configurations'; }
|
|
26
|
+
static { this.DATA_SOURCES = 'dataSources'; }
|
|
27
|
+
static { this.COMPONENTS = 'components'; }
|
|
28
|
+
static { this.REPOSITORIES = 'repositories'; }
|
|
29
|
+
static { this.SERVICES = 'services'; }
|
|
30
|
+
static { this.CONTROLLERS = 'controllers'; }
|
|
31
|
+
static { this.SCHEME_SET = new Set([
|
|
32
|
+
this.CONFIGURATIONS,
|
|
33
|
+
this.DATA_SOURCES,
|
|
34
|
+
this.COMPONENTS,
|
|
35
|
+
this.REPOSITORIES,
|
|
36
|
+
this.SERVICES,
|
|
37
|
+
this.CONTROLLERS,
|
|
38
|
+
]); }
|
|
39
|
+
static isValid(value) {
|
|
40
|
+
return this.SCHEME_SET.has(value);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export class ArtifactStereotypes {
|
|
44
|
+
/** Decorator name as imported from `@venizia/ignis` or `@venizia/ignis-kernel` -> artifact type. */
|
|
45
|
+
static { this.BY_DECORATOR = {
|
|
46
|
+
configuration: ArtifactTypes.CONFIGURATION,
|
|
47
|
+
component: ArtifactTypes.COMPONENT,
|
|
48
|
+
controller: ArtifactTypes.CONTROLLER,
|
|
49
|
+
service: ArtifactTypes.SERVICE,
|
|
50
|
+
repository: ArtifactTypes.REPOSITORY,
|
|
51
|
+
datasource: ArtifactTypes.DATASOURCE,
|
|
52
|
+
model: ArtifactTypes.MODEL,
|
|
53
|
+
}; }
|
|
54
|
+
static { this.ROOT_DECORATOR = 'injectable'; }
|
|
55
|
+
static { this.SCHEME_SET = new Set(Object.values(ArtifactStereotypes.BY_DECORATOR)); }
|
|
56
|
+
static isValid(value) {
|
|
57
|
+
return this.SCHEME_SET.has(value);
|
|
58
|
+
}
|
|
59
|
+
static { this.SOURCE_MODULES = /^@venizia\/ignis(-kernel)?$/; }
|
|
60
|
+
static { this.DEFAULT_IGNORE = [
|
|
61
|
+
'**/__tests__/**',
|
|
62
|
+
'**/*.test.ts',
|
|
63
|
+
'**/*.spec.ts',
|
|
64
|
+
'**/generated/**',
|
|
65
|
+
]; }
|
|
66
|
+
/**
|
|
67
|
+
* The kernel's `registerArtifacts` order; `model` is never emitted. Configurations come first:
|
|
68
|
+
* `registerConfigurations` runs before the datasource and component sweeps, so a `@configuration`
|
|
69
|
+
* can shape what they read. The kernel sorts them among themselves by their `after` declarations
|
|
70
|
+
* at boot, so the order within the field does not matter here.
|
|
71
|
+
*/
|
|
72
|
+
static { this.EMIT_ORDER = [
|
|
73
|
+
{ type: ArtifactTypes.CONFIGURATION, field: ArtifactIndexFields.CONFIGURATIONS },
|
|
74
|
+
{ type: ArtifactTypes.DATASOURCE, field: ArtifactIndexFields.DATA_SOURCES },
|
|
75
|
+
{ type: ArtifactTypes.COMPONENT, field: ArtifactIndexFields.COMPONENTS },
|
|
76
|
+
{ type: ArtifactTypes.REPOSITORY, field: ArtifactIndexFields.REPOSITORIES },
|
|
77
|
+
{ type: ArtifactTypes.SERVICE, field: ArtifactIndexFields.SERVICES },
|
|
78
|
+
{ type: ArtifactTypes.CONTROLLER, field: ArtifactIndexFields.CONTROLLERS },
|
|
79
|
+
]; }
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/generator/common/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|
|
@@ -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,18 @@
|
|
|
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
|
+
/** The index content plus what a caller's `ignore` silently left out: decorated classes under a user pattern, never under a default one. */
|
|
14
|
+
export interface IScanReport {
|
|
15
|
+
artifacts: IScannedArtifact[];
|
|
16
|
+
ignored: IScannedArtifact[];
|
|
17
|
+
}
|
|
18
|
+
//# 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;AAED,4IAA4I;AAC5I,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/generator/common/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
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 DEFAULT_EXPORT_NAME = "GeneratedArtifacts";
|
|
7
|
+
/** The exact command that regenerates the file, so the header never points at another path than the one the build used. */
|
|
8
|
+
static renderHeader(opts: {
|
|
9
|
+
root: string;
|
|
10
|
+
out: string;
|
|
11
|
+
ignore?: string[];
|
|
12
|
+
exportName?: string;
|
|
13
|
+
}): string;
|
|
14
|
+
static render(opts: {
|
|
15
|
+
artifacts: IScannedArtifact[];
|
|
16
|
+
outFile: string;
|
|
17
|
+
exportName: string;
|
|
18
|
+
/** The CLI arguments as given, for the header; `outFile` above is the resolved path used for import specifiers. */
|
|
19
|
+
command: {
|
|
20
|
+
root: string;
|
|
21
|
+
out: string;
|
|
22
|
+
ignore?: string[];
|
|
23
|
+
};
|
|
24
|
+
}): string;
|
|
25
|
+
/** One line while it fits the repo's prettier width, else one name per line - so `prettier -l` on the generated file stays quiet. */
|
|
26
|
+
private static renderField;
|
|
27
|
+
private static importPath;
|
|
28
|
+
}
|
|
29
|
+
//# 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,mBAAmB,wBAAwB;IAE3D,2HAA2H;IAC3H,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,MAAM;IAYV,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAClB,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,mHAAmH;QACnH,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;KAC3D,GAAG,MAAM;IAgCV,qIAAqI;IACrI,OAAO,CAAC,MAAM,CAAC,WAAW;IAW1B,OAAO,CAAC,MAAM,CAAC,UAAU;CAI1B"}
|