@venizia/ignis-boot 0.2.0-15 → 0.2.0-16
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 +47 -0
- 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/cjs/build-info/common/index.d.ts +3 -0
- package/dist/cjs/build-info/common/index.d.ts.map +1 -0
- package/dist/cjs/build-info/common/index.js +19 -0
- 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/{cli.js → clis/artifacts.js} +3 -3
- 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/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -0
- 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/build-info/common/index.js +3 -0
- 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/{cli.js → clis/artifacts.js} +3 -3
- 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/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/package.json +10 -3
- package/dist/cjs/cli.d.ts +0 -3
- package/dist/cjs/cli.d.ts.map +0 -1
- package/dist/cjs/cli.js.map +0 -1
- package/dist/esm/cli.d.ts +0 -3
- package/dist/esm/cli.d.ts.map +0 -1
- package/dist/esm/cli.js.map +0 -1
package/README.md
CHANGED
|
@@ -134,6 +134,53 @@ import { checkArtifactIndex } from '@venizia/ignis-boot/generator';
|
|
|
134
134
|
const { isFresh } = checkArtifactIndex({ root: 'src', out: 'src/generated/artifacts.ts' });
|
|
135
135
|
```
|
|
136
136
|
|
|
137
|
+
## `ignis-build-info` - stamp the build
|
|
138
|
+
|
|
139
|
+
A second binary in the same package. It resolves what a running service should be able to say
|
|
140
|
+
about itself - service, version, commit, branch, build time - at BUILD time, and writes it as a
|
|
141
|
+
static file the bundle bakes in. Nothing is read back at run time: a `bun build --compile` binary
|
|
142
|
+
ships no `node_modules`, no `.git` and no readable `package.json`, and a Distroless image has no
|
|
143
|
+
`git` to spawn, so a runtime resolver would report blanks in exactly the deployment that matters.
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
ignis-build-info generate [--out src/_build_info.ts] [--root .] [--format ts|json] [--export BUILD_INFO]
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
| Flag | Default | Meaning |
|
|
150
|
+
| :--- | :--- | :--- |
|
|
151
|
+
| `--out` | `src/_build_info.ts` | Output path; always rewritten - `builtAt` changes every run |
|
|
152
|
+
| `--root` | `.` | Where `package.json` is read and where `git` is asked |
|
|
153
|
+
| `--format` | `ts` | `ts` - a static `export const`; `json` - the same record, for a Vite app or a Tauri shell |
|
|
154
|
+
| `--export` | `BUILD_INFO` | Name of the exported constant in `ts` format |
|
|
155
|
+
|
|
156
|
+
Each field is read from the environment first, then `git`, then `package.json`; anything left reads
|
|
157
|
+
`unspecified`, so a pipeline that forgot a variable is visible rather than silent.
|
|
158
|
+
|
|
159
|
+
| Field | Environment, first present wins | Fallback |
|
|
160
|
+
| :--- | :--- | :--- |
|
|
161
|
+
| `version` | `APP_ENV_BUILD_VERSION`, `APP_BUILD_VERSION`, `CI_COMMIT_TAG`, `GITHUB_REF_NAME` | `package.json#version` |
|
|
162
|
+
| `commit` | `APP_ENV_BUILD_COMMIT_TAG`, `APP_BUILD_COMMIT`, `CI_COMMIT_SHA`, `GITHUB_SHA`, `COMMIT_SHA` | `git rev-parse --short=12 HEAD` |
|
|
163
|
+
| `branch` | `APP_BUILD_BRANCH`, `CI_COMMIT_REF_NAME`, `GITHUB_REF_NAME`, `BRANCH_NAME` | `git rev-parse --abbrev-ref HEAD` |
|
|
164
|
+
| `builtAt` | `APP_ENV_BUILD_DATE`, `APP_BUILD_DATE` | the moment the generator ran |
|
|
165
|
+
| `service` | - | `package.json#name` |
|
|
166
|
+
|
|
167
|
+
Register the stamp once at the entrypoint, and `GET /health/stats` reports it:
|
|
168
|
+
|
|
169
|
+
```typescript
|
|
170
|
+
import { BUILD_INFO } from './_build_info';
|
|
171
|
+
import { BuildInfoRegistry } from '@venizia/ignis-helpers/core';
|
|
172
|
+
|
|
173
|
+
BuildInfoRegistry.set({ buildInfo: BUILD_INFO });
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
`git` runs through Bun Shell, so the binary needs bun (it carries a `bun` shebang). Under plain
|
|
177
|
+
Node the `git` fields degrade to `unspecified` and the build still succeeds; set the variables
|
|
178
|
+
above if a Node invocation has to be exact.
|
|
179
|
+
|
|
180
|
+
Programmatic: `@venizia/ignis-boot/build-info` exports `generateBuildInfo(opts)`,
|
|
181
|
+
`BuildInfoResolver.getInstance().resolve({ root })`, `BuildInfoEmitter.render({ buildInfo, format, exportName })`,
|
|
182
|
+
`BuildInfoFormats` and `BuildInfoEnvironmentKeys`.
|
|
183
|
+
|
|
137
184
|
## What you must know
|
|
138
185
|
|
|
139
186
|
- **Output is deterministic.** Imports sorted by path, class names sorted within each field, one
|
|
@@ -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,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BuildInfoEnvironmentKeys = exports.BuildInfoFormats = void 0;
|
|
4
|
+
class BuildInfoFormats {
|
|
5
|
+
static { this.TS = 'ts'; }
|
|
6
|
+
static { this.JSON = 'json'; }
|
|
7
|
+
static { this.SCHEME_SET = new Set([this.TS, this.JSON]); }
|
|
8
|
+
static isValid(value) {
|
|
9
|
+
return this.SCHEME_SET.has(value);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.BuildInfoFormats = BuildInfoFormats;
|
|
13
|
+
/**
|
|
14
|
+
* Each field is spelled differently by every CI provider, and `APP_ENV_*` is what this
|
|
15
|
+
* organisation's pipelines export - so it is read before the generic `APP_BUILD_*` pair and before
|
|
16
|
+
* anything provider-specific. The first key carrying a non-blank value wins.
|
|
17
|
+
*/
|
|
18
|
+
class BuildInfoEnvironmentKeys {
|
|
19
|
+
static { this.VERSION = [
|
|
20
|
+
'APP_ENV_BUILD_VERSION',
|
|
21
|
+
'APP_BUILD_VERSION',
|
|
22
|
+
'CI_COMMIT_TAG',
|
|
23
|
+
'GITHUB_REF_NAME',
|
|
24
|
+
]; }
|
|
25
|
+
static { this.COMMIT = [
|
|
26
|
+
'APP_ENV_BUILD_COMMIT_TAG',
|
|
27
|
+
'APP_BUILD_COMMIT',
|
|
28
|
+
'CI_COMMIT_SHA',
|
|
29
|
+
'GITHUB_SHA',
|
|
30
|
+
'COMMIT_SHA',
|
|
31
|
+
]; }
|
|
32
|
+
static { this.BRANCH = [
|
|
33
|
+
'APP_BUILD_BRANCH',
|
|
34
|
+
'CI_COMMIT_REF_NAME',
|
|
35
|
+
'GITHUB_REF_NAME',
|
|
36
|
+
'BRANCH_NAME',
|
|
37
|
+
]; }
|
|
38
|
+
static { this.BUILT_AT = ['APP_ENV_BUILD_DATE', 'APP_BUILD_DATE']; }
|
|
39
|
+
}
|
|
40
|
+
exports.BuildInfoEnvironmentKeys = BuildInfoEnvironmentKeys;
|
|
41
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/build-info/common/constants.ts"],"names":[],"mappings":";;;AAEA,MAAa,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;;AARH,4CASC;AAID;;;;GAIG;AACH,MAAa,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;;AAvBzF,4DAwBC"}
|
|
@@ -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,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./constants"), exports);
|
|
18
|
+
__exportStar(require("./types"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/build-info/common/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,0CAAwB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { TBuildInfoRecord } from '@venizia/ignis-helpers/core';
|
|
2
|
+
import type { TBuildInfoFormat } from './constants';
|
|
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 @@
|
|
|
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';
|
|
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,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BuildInfoEmitter = void 0;
|
|
4
|
+
const common_1 = require("./common");
|
|
5
|
+
/** 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. */
|
|
6
|
+
class BuildInfoEmitter {
|
|
7
|
+
static { this.DEFAULT_EXPORT_NAME = 'BUILD_INFO'; }
|
|
8
|
+
static render(opts) {
|
|
9
|
+
const { buildInfo, format, exportName } = opts;
|
|
10
|
+
if (format === common_1.BuildInfoFormats.JSON) {
|
|
11
|
+
return `${JSON.stringify(buildInfo, null, 2)}\n`;
|
|
12
|
+
}
|
|
13
|
+
const fields = Object.entries(buildInfo)
|
|
14
|
+
.map(([key, value]) => ` ${key}: ${JSON.stringify(value)},`)
|
|
15
|
+
.join('\n');
|
|
16
|
+
return [
|
|
17
|
+
'// AUTO-GENERATED by @venizia/ignis-boot - do not edit. Regenerate: ignis-build-info generate',
|
|
18
|
+
`export const ${exportName} = {`,
|
|
19
|
+
fields,
|
|
20
|
+
'} as const;',
|
|
21
|
+
'',
|
|
22
|
+
].join('\n');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.BuildInfoEmitter = BuildInfoEmitter;
|
|
26
|
+
//# sourceMappingURL=emitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../../src/build-info/emitter.ts"],"names":[],"mappings":";;;AACA,qCAAmE;AAEnE,+HAA+H;AAC/H,MAAa,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,yBAAgB,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;;AAzBH,4CA0BC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type IBuildInfoOptions, type IBuildInfoResult } from './common';
|
|
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';
|
|
8
|
+
export * from './emitter';
|
|
9
|
+
export * from './resolver';
|
|
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,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.generateBuildInfo = void 0;
|
|
18
|
+
const node_fs_1 = require("node:fs");
|
|
19
|
+
const node_path_1 = require("node:path");
|
|
20
|
+
const common_1 = require("./common");
|
|
21
|
+
const emitter_1 = require("./emitter");
|
|
22
|
+
const resolver_1 = require("./resolver");
|
|
23
|
+
/**
|
|
24
|
+
* Writes the stamp. Unlike the artifact index this ALWAYS writes: `builtAt` changes every run, so
|
|
25
|
+
* an unchanged-content short-circuit would be dead code that hides a stale timestamp.
|
|
26
|
+
*/
|
|
27
|
+
const generateBuildInfo = async (opts) => {
|
|
28
|
+
const buildInfo = await resolver_1.BuildInfoResolver.getInstance().resolve({ root: opts.root });
|
|
29
|
+
const content = emitter_1.BuildInfoEmitter.render({
|
|
30
|
+
buildInfo,
|
|
31
|
+
format: opts.format ?? common_1.BuildInfoFormats.TS,
|
|
32
|
+
exportName: opts.exportName ?? emitter_1.BuildInfoEmitter.DEFAULT_EXPORT_NAME,
|
|
33
|
+
});
|
|
34
|
+
const out = (0, node_path_1.resolve)(opts.out);
|
|
35
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(out), { recursive: true });
|
|
36
|
+
(0, node_fs_1.writeFileSync)(out, content);
|
|
37
|
+
return { buildInfo, content, out };
|
|
38
|
+
};
|
|
39
|
+
exports.generateBuildInfo = generateBuildInfo;
|
|
40
|
+
__exportStar(require("./common"), exports);
|
|
41
|
+
__exportStar(require("./emitter"), exports);
|
|
42
|
+
__exportStar(require("./resolver"), exports);
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/build-info/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qCAAmD;AACnD,yCAA6C;AAC7C,qCAA2F;AAC3F,uCAA6C;AAC7C,yCAA+C;AAE/C;;;GAGG;AACI,MAAM,iBAAiB,GAAG,KAAK,EAAE,IAAuB,EAA6B,EAAE;IAC5F,MAAM,SAAS,GAAG,MAAM,4BAAiB,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACrF,MAAM,OAAO,GAAG,0BAAgB,CAAC,MAAM,CAAC;QACtC,SAAS;QACT,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,yBAAgB,CAAC,EAAE;QAC1C,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,0BAAgB,CAAC,mBAAmB;KACpE,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,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,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AACrC,CAAC,CAAC;AAbW,QAAA,iBAAiB,qBAa5B;AAEF,2CAAyB;AACzB,4CAA0B;AAC1B,6CAA2B"}
|
|
@@ -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,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BuildInfoResolver = void 0;
|
|
4
|
+
const ignis_helpers_1 = require("@venizia/ignis-helpers");
|
|
5
|
+
const core_1 = require("@venizia/ignis-helpers/core");
|
|
6
|
+
const node_fs_1 = require("node:fs");
|
|
7
|
+
const node_path_1 = require("node:path");
|
|
8
|
+
const common_1 = require("./common");
|
|
9
|
+
/** Length of a short SHA; an env value already shorter is left alone. */
|
|
10
|
+
const COMMIT_LENGTH = 12;
|
|
11
|
+
/**
|
|
12
|
+
* Resolves the stamp: environment first (CI knows the release tag), then `git`, then the
|
|
13
|
+
* manifest. Every miss is logged with its reason and degrades one field to
|
|
14
|
+
* {@link BuildInfoRegistry.UNSPECIFIED} - a Distroless image has no `git` and an exported tarball
|
|
15
|
+
* has no manifest, and a build must not die over a stamp.
|
|
16
|
+
*/
|
|
17
|
+
class BuildInfoResolver extends ignis_helpers_1.BaseHelper {
|
|
18
|
+
constructor() {
|
|
19
|
+
super({ scope: BuildInfoResolver.name });
|
|
20
|
+
}
|
|
21
|
+
static getInstance() {
|
|
22
|
+
return (this.instance ??= new BuildInfoResolver());
|
|
23
|
+
}
|
|
24
|
+
async resolve(opts) {
|
|
25
|
+
const root = (0, node_path_1.resolve)(opts?.root ?? process.cwd());
|
|
26
|
+
const manifest = this.resolveManifest({ root });
|
|
27
|
+
// Independent processes; sequencing them would double the latency of the common case for nothing.
|
|
28
|
+
const [gitCommit, gitBranch] = await Promise.all([
|
|
29
|
+
this.resolveGitValue({ args: ['rev-parse', `--short=${COMMIT_LENGTH}`, 'HEAD'], root }),
|
|
30
|
+
this.resolveGitValue({ args: ['rev-parse', '--abbrev-ref', 'HEAD'], root }),
|
|
31
|
+
]);
|
|
32
|
+
const unspecified = core_1.BuildInfoRegistry.UNSPECIFIED;
|
|
33
|
+
return {
|
|
34
|
+
service: manifest.name ?? unspecified,
|
|
35
|
+
version: this.resolveEnvironmentValue({ keys: common_1.BuildInfoEnvironmentKeys.VERSION }) ??
|
|
36
|
+
manifest.version ??
|
|
37
|
+
unspecified,
|
|
38
|
+
commit: this.resolveEnvironmentValue({ keys: common_1.BuildInfoEnvironmentKeys.COMMIT })?.slice(0, COMMIT_LENGTH) ??
|
|
39
|
+
gitCommit ??
|
|
40
|
+
unspecified,
|
|
41
|
+
branch: this.resolveEnvironmentValue({ keys: common_1.BuildInfoEnvironmentKeys.BRANCH }) ??
|
|
42
|
+
gitBranch ??
|
|
43
|
+
unspecified,
|
|
44
|
+
builtAt: this.resolveEnvironmentValue({ keys: common_1.BuildInfoEnvironmentKeys.BUILT_AT }) ??
|
|
45
|
+
new Date().toISOString(),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
resolveEnvironmentValue(opts) {
|
|
49
|
+
for (const key of opts.keys) {
|
|
50
|
+
const value = process.env[key];
|
|
51
|
+
if (value !== undefined && value.trim().length > 0) {
|
|
52
|
+
return value.trim();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* `nothrow()` covers a nonzero exit; the `catch` covers `git` being absent and also `Bun` being
|
|
59
|
+
* absent - under plain Node the `ReferenceError` degrades the field instead of killing the build.
|
|
60
|
+
*/
|
|
61
|
+
async resolveGitValue(opts) {
|
|
62
|
+
const { args, root } = opts;
|
|
63
|
+
try {
|
|
64
|
+
const result = await Bun.$ `git ${args}`.cwd(root).quiet().nothrow();
|
|
65
|
+
// `rev-parse --abbrev-ref HEAD` in a repository with no commit prints the literal `HEAD` on
|
|
66
|
+
// stdout while exiting 128, so the exit code decides and stdout alone never does.
|
|
67
|
+
if (result.exitCode !== 0) {
|
|
68
|
+
this.logger.debug('git %s | exit: %d | %s', args.join(' '), result.exitCode, result.stderr.toString().trim());
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
const value = result.stdout.toString().trim();
|
|
72
|
+
return value.length > 0 ? value : undefined;
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
this.logger.debug('git %s | unavailable: %s', args.join(' '), error);
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/** `JSON.parse` promises nothing about the shape, so a manifest holding `{ "name": 42 }` must not become a numeric `service`. */
|
|
80
|
+
resolveManifest(opts) {
|
|
81
|
+
const manifest = (0, node_path_1.resolve)(opts.root, 'package.json');
|
|
82
|
+
if (!(0, node_fs_1.existsSync)(manifest)) {
|
|
83
|
+
this.logger.debug('No package.json at %s', opts.root);
|
|
84
|
+
return {};
|
|
85
|
+
}
|
|
86
|
+
try {
|
|
87
|
+
const parsed = JSON.parse((0, node_fs_1.readFileSync)(manifest, 'utf8'));
|
|
88
|
+
if (typeof parsed !== 'object' || parsed === null) {
|
|
89
|
+
return {};
|
|
90
|
+
}
|
|
91
|
+
const name = 'name' in parsed ? parsed.name : undefined;
|
|
92
|
+
const version = 'version' in parsed ? parsed.version : undefined;
|
|
93
|
+
return {
|
|
94
|
+
name: typeof name === 'string' ? name : undefined,
|
|
95
|
+
version: typeof version === 'string' ? version : undefined,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
this.logger.debug('Unreadable package.json at %s | %s', manifest, error);
|
|
100
|
+
return {};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
exports.BuildInfoResolver = BuildInfoResolver;
|
|
105
|
+
//# 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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
"use strict";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
require("
|
|
4
|
+
require("../common/install-quiet-logger");
|
|
5
5
|
const node_path_1 = require("node:path");
|
|
6
6
|
const node_util_1 = require("node:util");
|
|
7
|
-
const generator_1 = require("
|
|
7
|
+
const generator_1 = require("../generator");
|
|
8
8
|
const USAGE = 'ignis-artifacts <generate|check> [--root src] [--out src/generated/artifacts.ts] [--ignore a,b] [--export GeneratedArtifacts]';
|
|
9
9
|
const { positionals, values } = (0, node_util_1.parseArgs)({
|
|
10
10
|
args: process.argv.slice(2),
|
|
@@ -57,4 +57,4 @@ const run = () => {
|
|
|
57
57
|
}
|
|
58
58
|
};
|
|
59
59
|
process.exit(run());
|
|
60
|
-
//# sourceMappingURL=
|
|
60
|
+
//# 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,48 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
require("../common/install-quiet-logger");
|
|
5
|
+
const node_util_1 = require("node:util");
|
|
6
|
+
const build_info_1 = require("../build-info");
|
|
7
|
+
const USAGE = 'ignis-build-info generate [--out src/_build_info.ts] [--root .] [--format ts|json] [--export BUILD_INFO]';
|
|
8
|
+
const { positionals, values } = (0, node_util_1.parseArgs)({
|
|
9
|
+
args: process.argv.slice(2),
|
|
10
|
+
allowPositionals: true,
|
|
11
|
+
options: {
|
|
12
|
+
out: { type: 'string', default: 'src/_build_info.ts' },
|
|
13
|
+
root: { type: 'string', default: '.' },
|
|
14
|
+
format: { type: 'string', default: build_info_1.BuildInfoFormats.TS },
|
|
15
|
+
export: { type: 'string', default: build_info_1.BuildInfoEmitter.DEFAULT_EXPORT_NAME },
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
/** Exit code of the command, so the process exits in exactly one place. */
|
|
19
|
+
const run = async () => {
|
|
20
|
+
if (positionals[0] !== 'generate') {
|
|
21
|
+
console.error(USAGE);
|
|
22
|
+
return 1;
|
|
23
|
+
}
|
|
24
|
+
if (!build_info_1.BuildInfoFormats.isValid(values.format)) {
|
|
25
|
+
console.error(`invalid --format '${values.format}' | expected one of: ${[...build_info_1.BuildInfoFormats.SCHEME_SET].join(', ')}`);
|
|
26
|
+
return 1;
|
|
27
|
+
}
|
|
28
|
+
// Narrowed by comparison, never asserted: `isValid` above already refused everything else.
|
|
29
|
+
const format = values.format === build_info_1.BuildInfoFormats.JSON ? build_info_1.BuildInfoFormats.JSON : build_info_1.BuildInfoFormats.TS;
|
|
30
|
+
const result = await (0, build_info_1.generateBuildInfo)({
|
|
31
|
+
out: values.out,
|
|
32
|
+
root: values.root,
|
|
33
|
+
format,
|
|
34
|
+
exportName: values.export,
|
|
35
|
+
});
|
|
36
|
+
const { service, version, commit, branch } = result.buildInfo;
|
|
37
|
+
console.log(`wrote ${values.out} | ${service}@${version} | ${commit} (${branch})`);
|
|
38
|
+
return 0;
|
|
39
|
+
};
|
|
40
|
+
run()
|
|
41
|
+
.then(code => {
|
|
42
|
+
process.exit(code);
|
|
43
|
+
})
|
|
44
|
+
.catch(error => {
|
|
45
|
+
console.error(error);
|
|
46
|
+
process.exit(1);
|
|
47
|
+
});
|
|
48
|
+
//# 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,0CAAwC;AACxC,yCAAsC;AACtC,8CAAsF;AAEtF,MAAM,KAAK,GACT,0GAA0G,CAAC;AAE7G,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,IAAA,qBAAS,EAAC;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,6BAAgB,CAAC,EAAE,EAAE;QACxD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,6BAAgB,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,6BAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,KAAK,CACX,qBAAqB,MAAM,CAAC,MAAM,wBAAwB,CAAC,GAAG,6BAAgB,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,6BAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,6BAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,6BAAgB,CAAC,EAAE,CAAC;IAExF,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAiB,EAAC;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"}
|
package/dist/cjs/index.d.ts
CHANGED
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -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
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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';
|
|
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 @@
|
|
|
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';
|
|
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';
|
|
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';
|
|
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';
|
|
8
|
+
export * from './emitter';
|
|
9
|
+
export * from './resolver';
|
|
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';
|
|
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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
|
-
import '
|
|
2
|
+
import '../common/install-quiet-logger';
|
|
3
3
|
import { relative } from 'node:path';
|
|
4
4
|
import { parseArgs } from 'node:util';
|
|
5
|
-
import { checkArtifactIndex, generateArtifactIndex } from '
|
|
5
|
+
import { checkArtifactIndex, generateArtifactIndex } from '../generator';
|
|
6
6
|
const USAGE = 'ignis-artifacts <generate|check> [--root src] [--out src/generated/artifacts.ts] [--ignore a,b] [--export GeneratedArtifacts]';
|
|
7
7
|
const { positionals, values } = parseArgs({
|
|
8
8
|
args: process.argv.slice(2),
|
|
@@ -55,4 +55,4 @@ const run = () => {
|
|
|
55
55
|
}
|
|
56
56
|
};
|
|
57
57
|
process.exit(run());
|
|
58
|
-
//# sourceMappingURL=
|
|
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"}
|
package/dist/esm/index.d.ts
CHANGED
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -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/esm/index.js
CHANGED
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@venizia/ignis-boot",
|
|
3
|
-
"version": "0.2.0-
|
|
3
|
+
"version": "0.2.0-16",
|
|
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",
|
|
@@ -48,6 +48,12 @@
|
|
|
48
48
|
"import": "./dist/esm/generator/index.js",
|
|
49
49
|
"require": "./dist/cjs/generator/index.js",
|
|
50
50
|
"default": "./dist/cjs/generator/index.js"
|
|
51
|
+
},
|
|
52
|
+
"./build-info": {
|
|
53
|
+
"types": "./dist/cjs/build-info/index.d.ts",
|
|
54
|
+
"import": "./dist/esm/build-info/index.js",
|
|
55
|
+
"require": "./dist/cjs/build-info/index.js",
|
|
56
|
+
"default": "./dist/cjs/build-info/index.js"
|
|
51
57
|
}
|
|
52
58
|
},
|
|
53
59
|
"files": [
|
|
@@ -78,7 +84,7 @@
|
|
|
78
84
|
"test:watch": "NODE_ENV=test bun test --watch --env-file=.env.test"
|
|
79
85
|
},
|
|
80
86
|
"dependencies": {
|
|
81
|
-
"@venizia/ignis-helpers": "^0.2.0-
|
|
87
|
+
"@venizia/ignis-helpers": "^0.2.0-21"
|
|
82
88
|
},
|
|
83
89
|
"devDependencies": {
|
|
84
90
|
"@types/bun": "^1.4.1",
|
|
@@ -92,6 +98,7 @@
|
|
|
92
98
|
"typescript": "^5.0.0 || ^6.0.0"
|
|
93
99
|
},
|
|
94
100
|
"bin": {
|
|
95
|
-
"ignis-artifacts": "./dist/cjs/
|
|
101
|
+
"ignis-artifacts": "./dist/cjs/clis/artifacts.js",
|
|
102
|
+
"ignis-build-info": "./dist/cjs/clis/build-info.js"
|
|
96
103
|
}
|
|
97
104
|
}
|
package/dist/cjs/cli.d.ts
DELETED
package/dist/cjs/cli.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,+BAA+B,CAAC"}
|
package/dist/cjs/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/cli.d.ts
DELETED
package/dist/esm/cli.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,+BAA+B,CAAC"}
|
package/dist/esm/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,+BAA+B,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGxE,MAAM,KAAK,GACT,+HAA+H,CAAC;AAElI,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACxC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3B,gBAAgB,EAAE,IAAI;IACtB,OAAO,EAAE;QACP,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QACxC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,4BAA4B,EAAE;QAC9D,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE;KAC1D;CACF,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG;IACd,IAAI,EAAE,MAAM,CAAC,IAAI;IACjB,GAAG,EAAE,MAAM,CAAC,GAAG;IACf,MAAM,EAAE,MAAM,CAAC,MAAM;QACnB,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SAC9B,MAAM,CAAC,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM;CAC1B,CAAC;AAEF,yGAAyG;AACzG,MAAM,WAAW,GAAG,CAAC,IAAmD,EAAQ,EAAE;IAChF,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CACX,YAAY,QAAQ,CAAC,SAAS,KAAK,QAAQ,CAAC,IAAI,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,gDAAgD,CAC/I,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,2EAA2E;AAC3E,MAAM,GAAG,GAAG,GAAW,EAAE;IACvB,QAAQ,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CACT,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,cAAc,CACrG,CAAC;YACF,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC3C,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;gBACpC,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,CAAC,KAAK,CACX,SAAS,OAAO,CAAC,GAAG,2CAA2C,OAAO,CAAC,IAAI,UAAU,OAAO,CAAC,GAAG,EAAE,CACnG,CAAC;YACF,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC"}
|