@macedon-technologies/batman 1.27.0 → 1.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +10 -10
- package/API.md +4 -2
- package/lib/BatmanProject.js +1 -1
- package/lib/BootcampProject.js +1 -1
- package/lib/CodeOwnersFile.js +1 -1
- package/lib/ProductionDeployWorkflow.js +1 -1
- package/lib/SoftwareFactoryBootstrap.d.ts +10 -0
- package/lib/SoftwareFactoryBootstrap.js +101 -0
- package/lib/SoftwareFactoryFiles.d.ts +4 -2
- package/lib/SoftwareFactoryFiles.js +10 -8
- package/lib/StagingDeployWorkflow.js +1 -1
- package/lib/ViteReactProject.js +471 -74
- package/lib/WorkflowAutoDiscover.js +1 -1
- package/lib/utils.js +26 -10
- package/package.json +1 -1
- package/swamp-bootstrap/pull-extensions.ts +68 -0
- package/swamp-bootstrap/tsconfig.json +13 -0
package/.jsii
CHANGED
|
@@ -801,7 +801,7 @@
|
|
|
801
801
|
"@macedon-technologies/batman.SoftwareFactoryFiles": {
|
|
802
802
|
"assembly": "@macedon-technologies/batman",
|
|
803
803
|
"docs": {
|
|
804
|
-
"remarks": "What swamp itself would generate (extension docs pulled via\n`swamp extension pull`, `.swamp.yaml`, the vault, and the \"swamp managed\nsection\" in CLAUDE.md) is deliberately NOT hand-templated here — those are\nproduced by the real `swamp` CLI. `swamp init` is idempotent (a no-op if\nthe repo is already initialized), so it's wired into the project's\n`install`/`install:ci` tasks and runs automatically on every install,\nguarded so it's a silent no-op on a machine without `swamp` on PATH (e.g.\nCI). The extension pulls and vault creation are one-time, not idempotent\nin a way that's safe to repeat on every install, so they stay in the\n`swamp:bootstrap` task this construct adds. Only exman's own authored\nconfig (the factory's state machine, the architecture-rule engine, the\nattestation mechanism, the OpenSpec task-completion gate, and the 3 swamp\nworkflows that wire them together) is templated.",
|
|
804
|
+
"remarks": "What swamp itself would generate (extension docs pulled via\n`swamp extension pull`, `.swamp.yaml`, the vault, and the \"swamp managed\nsection\" in CLAUDE.md) is deliberately NOT hand-templated here — those are\nproduced by the real `swamp` CLI. `swamp init` is idempotent (a no-op if\nthe repo is already initialized), so it's wired into the project's\n`install`/`install:ci` tasks and runs automatically on every install,\nguarded so it's a silent no-op on a machine without `swamp` on PATH (e.g.\nCI). The extension pulls (at the versions pinned in the repo's\n`extensions/models/upstream_extensions.json`) and vault creation are one-time, not idempotent\nin a way that's safe to repeat on every install, so they stay in the\n`swamp:bootstrap` task this construct adds. Only exman's own authored\nconfig (the factory's state machine, the architecture-rule engine, the\nattestation mechanism, the OpenSpec task-completion gate, the lockfile-driven\nextension pull, and the 3 swamp\nworkflows that wire them together) is templated.",
|
|
805
805
|
"stability": "stable",
|
|
806
806
|
"summary": "Backports exman's swamp \"software factory\" pattern (macedon-technologies/exman#13) as generated scaffolding: a `@swamp/software-factory` state machine that drives a GitHub issue from intake through an opened PR, enforcing OpenSpec usage, an architecture rule registry, and a pre-PR verification gate whose attestation is re-checked at merge time."
|
|
807
807
|
},
|
|
@@ -812,7 +812,7 @@
|
|
|
812
812
|
},
|
|
813
813
|
"locationInModule": {
|
|
814
814
|
"filename": "src/SoftwareFactoryFiles.ts",
|
|
815
|
-
"line":
|
|
815
|
+
"line": 65
|
|
816
816
|
},
|
|
817
817
|
"parameters": [
|
|
818
818
|
{
|
|
@@ -832,7 +832,7 @@
|
|
|
832
832
|
"kind": "class",
|
|
833
833
|
"locationInModule": {
|
|
834
834
|
"filename": "src/SoftwareFactoryFiles.ts",
|
|
835
|
-
"line":
|
|
835
|
+
"line": 64
|
|
836
836
|
},
|
|
837
837
|
"name": "SoftwareFactoryFiles",
|
|
838
838
|
"symbolId": "src/SoftwareFactoryFiles:SoftwareFactoryFiles"
|
|
@@ -847,7 +847,7 @@
|
|
|
847
847
|
"kind": "interface",
|
|
848
848
|
"locationInModule": {
|
|
849
849
|
"filename": "src/SoftwareFactoryFiles.ts",
|
|
850
|
-
"line":
|
|
850
|
+
"line": 12
|
|
851
851
|
},
|
|
852
852
|
"name": "SoftwareFactoryFilesOptions",
|
|
853
853
|
"properties": [
|
|
@@ -860,7 +860,7 @@
|
|
|
860
860
|
"immutable": true,
|
|
861
861
|
"locationInModule": {
|
|
862
862
|
"filename": "src/SoftwareFactoryFiles.ts",
|
|
863
|
-
"line":
|
|
863
|
+
"line": 18
|
|
864
864
|
},
|
|
865
865
|
"name": "repoName",
|
|
866
866
|
"type": {
|
|
@@ -876,7 +876,7 @@
|
|
|
876
876
|
"immutable": true,
|
|
877
877
|
"locationInModule": {
|
|
878
878
|
"filename": "src/SoftwareFactoryFiles.ts",
|
|
879
|
-
"line":
|
|
879
|
+
"line": 37
|
|
880
880
|
},
|
|
881
881
|
"name": "actionVersions",
|
|
882
882
|
"optional": true,
|
|
@@ -894,7 +894,7 @@
|
|
|
894
894
|
"immutable": true,
|
|
895
895
|
"locationInModule": {
|
|
896
896
|
"filename": "src/SoftwareFactoryFiles.ts",
|
|
897
|
-
"line":
|
|
897
|
+
"line": 32
|
|
898
898
|
},
|
|
899
899
|
"name": "baseBranch",
|
|
900
900
|
"optional": true,
|
|
@@ -912,7 +912,7 @@
|
|
|
912
912
|
"immutable": true,
|
|
913
913
|
"locationInModule": {
|
|
914
914
|
"filename": "src/SoftwareFactoryFiles.ts",
|
|
915
|
-
"line":
|
|
915
|
+
"line": 25
|
|
916
916
|
},
|
|
917
917
|
"name": "githubOwner",
|
|
918
918
|
"optional": true,
|
|
@@ -1283,6 +1283,6 @@
|
|
|
1283
1283
|
"symbolId": "src/WorkflowAutoDiscover:WorkflowAutoDiscover"
|
|
1284
1284
|
}
|
|
1285
1285
|
},
|
|
1286
|
-
"version": "1.
|
|
1287
|
-
"fingerprint": "
|
|
1286
|
+
"version": "1.28.0",
|
|
1287
|
+
"fingerprint": "sIMdBmmJuZSfzcTh916j9IilxaSosKqanFdLlX/ej/A="
|
|
1288
1288
|
}
|
package/API.md
CHANGED
|
@@ -10909,11 +10909,13 @@ produced by the real `swamp` CLI. `swamp init` is idempotent (a no-op if
|
|
|
10909
10909
|
the repo is already initialized), so it's wired into the project's
|
|
10910
10910
|
`install`/`install:ci` tasks and runs automatically on every install,
|
|
10911
10911
|
guarded so it's a silent no-op on a machine without `swamp` on PATH (e.g.
|
|
10912
|
-
CI). The extension pulls
|
|
10912
|
+
CI). The extension pulls (at the versions pinned in the repo's
|
|
10913
|
+
`extensions/models/upstream_extensions.json`) and vault creation are one-time, not idempotent
|
|
10913
10914
|
in a way that's safe to repeat on every install, so they stay in the
|
|
10914
10915
|
`swamp:bootstrap` task this construct adds. Only exman's own authored
|
|
10915
10916
|
config (the factory's state machine, the architecture-rule engine, the
|
|
10916
|
-
attestation mechanism, the OpenSpec task-completion gate,
|
|
10917
|
+
attestation mechanism, the OpenSpec task-completion gate, the lockfile-driven
|
|
10918
|
+
extension pull, and the 3 swamp
|
|
10917
10919
|
workflows that wire them together) is templated.
|
|
10918
10920
|
|
|
10919
10921
|
#### Initializers <a name="Initializers" id="@macedon-technologies/batman.SoftwareFactoryFiles.Initializer"></a>
|
package/lib/BatmanProject.js
CHANGED
|
@@ -12,7 +12,7 @@ const SoftwareFactoryFiles_1 = require("./SoftwareFactoryFiles");
|
|
|
12
12
|
const utils_1 = require("./utils");
|
|
13
13
|
const ViteReactProject_1 = require("./ViteReactProject");
|
|
14
14
|
class BatmanProject extends awscdk_1.AwsCdkTypeScriptApp {
|
|
15
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.BatmanProject", version: "1.
|
|
15
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.BatmanProject", version: "1.28.0" };
|
|
16
16
|
constructor(options) {
|
|
17
17
|
super({
|
|
18
18
|
...options,
|
package/lib/BootcampProject.js
CHANGED
|
@@ -12,7 +12,7 @@ const SoftwareFactoryFiles_1 = require("./SoftwareFactoryFiles");
|
|
|
12
12
|
const utils_1 = require("./utils");
|
|
13
13
|
const ViteReactProject_1 = require("./ViteReactProject");
|
|
14
14
|
class BootcampProject extends awscdk_1.AwsCdkTypeScriptApp {
|
|
15
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.BootcampProject", version: "1.
|
|
15
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.BootcampProject", version: "1.28.0" };
|
|
16
16
|
constructor(options) {
|
|
17
17
|
super({
|
|
18
18
|
...options,
|
package/lib/CodeOwnersFile.js
CHANGED
|
@@ -4,7 +4,7 @@ exports.CodeOwnersFile = void 0;
|
|
|
4
4
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
5
5
|
const projen_1 = require("projen");
|
|
6
6
|
class CodeOwnersFile extends projen_1.TextFile {
|
|
7
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.CodeOwnersFile", version: "1.
|
|
7
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.CodeOwnersFile", version: "1.28.0" };
|
|
8
8
|
constructor(project, options = {}) {
|
|
9
9
|
const defaultOwners = ['* @macedon-technologies/platform', '* @macedon-technologies/ai-development-team'];
|
|
10
10
|
const allOwners = [...defaultOwners, ...(options.additionalOwners || [])];
|
|
@@ -7,7 +7,7 @@ const javascript_1 = require("projen/lib/javascript");
|
|
|
7
7
|
const utils_1 = require("./utils");
|
|
8
8
|
const WorkflowActionVersions_1 = require("./WorkflowActionVersions");
|
|
9
9
|
class ProductionDeployWorkflow extends projen_1.YamlFile {
|
|
10
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.ProductionDeployWorkflow", version: "1.
|
|
10
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.ProductionDeployWorkflow", version: "1.28.0" };
|
|
11
11
|
constructor(project, options) {
|
|
12
12
|
const packageManager = project.package.packageManager;
|
|
13
13
|
const actionVersions = (0, WorkflowActionVersions_1.resolveActionVersions)(options.actionVersions);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { NodeProject } from 'projen/lib/javascript';
|
|
2
|
+
/**
|
|
3
|
+
* The extension step of `swamp:bootstrap`: a Node script, so it runs the same
|
|
4
|
+
* under projen's PowerShell 5.1 task shell on Windows as under bash/sh, that
|
|
5
|
+
* pulls every extension at the version pinned in the repo's swamp lockfile.
|
|
6
|
+
* Fully generic — no per-repo parameterization.
|
|
7
|
+
*/
|
|
8
|
+
export declare class SoftwareFactoryBootstrap {
|
|
9
|
+
constructor(project: NodeProject);
|
|
10
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SoftwareFactoryBootstrap = void 0;
|
|
4
|
+
const projen_1 = require("projen");
|
|
5
|
+
/**
|
|
6
|
+
* The extension step of `swamp:bootstrap`: a Node script, so it runs the same
|
|
7
|
+
* under projen's PowerShell 5.1 task shell on Windows as under bash/sh, that
|
|
8
|
+
* pulls every extension at the version pinned in the repo's swamp lockfile.
|
|
9
|
+
* Fully generic — no per-repo parameterization.
|
|
10
|
+
*/
|
|
11
|
+
class SoftwareFactoryBootstrap {
|
|
12
|
+
constructor(project) {
|
|
13
|
+
new projen_1.TextFile(project, 'swamp-bootstrap/pull-extensions.ts', {
|
|
14
|
+
marker: true,
|
|
15
|
+
lines: [
|
|
16
|
+
'/**',
|
|
17
|
+
' * Pulls each swamp extension at the version pinned in',
|
|
18
|
+
' * extensions/models/upstream_extensions.json, so a fresh clone runs the',
|
|
19
|
+
' * same extensions as the rest of the team, including any the repo added',
|
|
20
|
+
' * itself. A repo with no lockfile yet pulls DEFAULT_EXTENSIONS at their',
|
|
21
|
+
' * latest stable versions, which creates the lockfile.',
|
|
22
|
+
' *',
|
|
23
|
+
' * A pull rewrites the lockfile even at an identical version, and on Windows',
|
|
24
|
+
' * it writes backslash paths and deletes the committed files it tracks (e.g.',
|
|
25
|
+
' * .claude/skills/software-factory/). So afterwards the lockfile and every',
|
|
26
|
+
' * git-tracked file it lists are restored from git.',
|
|
27
|
+
' */',
|
|
28
|
+
"import { execFileSync } from 'node:child_process';",
|
|
29
|
+
"import { existsSync, readFileSync } from 'node:fs';",
|
|
30
|
+
'',
|
|
31
|
+
"const LOCKFILE = 'extensions/models/upstream_extensions.json';",
|
|
32
|
+
"const DEFAULT_EXTENSIONS = ['@swamp/software-factory', '@webframp/github', '@goodcraft/github'];",
|
|
33
|
+
'',
|
|
34
|
+
'interface LockfileEntry {',
|
|
35
|
+
' version: string;',
|
|
36
|
+
' files?: string[];',
|
|
37
|
+
'}',
|
|
38
|
+
'',
|
|
39
|
+
'function readLockfile(): Record<string, LockfileEntry> | undefined {',
|
|
40
|
+
' if (!existsSync(LOCKFILE)) {',
|
|
41
|
+
' return undefined;',
|
|
42
|
+
' }',
|
|
43
|
+
" return JSON.parse(readFileSync(LOCKFILE, 'utf8')) as Record<string, LockfileEntry>;",
|
|
44
|
+
'}',
|
|
45
|
+
'',
|
|
46
|
+
'function run(command: string, args: string[]): string {',
|
|
47
|
+
" return execFileSync(command, args, { encoding: 'utf8', stdio: ['ignore', 'pipe', 'inherit'] });",
|
|
48
|
+
'}',
|
|
49
|
+
'',
|
|
50
|
+
'function pull(extension: string): void {',
|
|
51
|
+
' console.log(`swamp extension pull ${extension} --force`);',
|
|
52
|
+
" execFileSync('swamp', ['extension', 'pull', extension, '--force'], { stdio: 'inherit' });",
|
|
53
|
+
'}',
|
|
54
|
+
'',
|
|
55
|
+
'function restoreTrackedFiles(lockfile: Record<string, LockfileEntry>): void {',
|
|
56
|
+
' const listed = Object.values(lockfile)',
|
|
57
|
+
' .flatMap((entry) => entry.files ?? [])',
|
|
58
|
+
" .map((file) => file.replace(/\\\\/g, '/'))",
|
|
59
|
+
" .filter((file) => !file.startsWith('.swamp/'));",
|
|
60
|
+
" const tracked = run('git', ['ls-files', '-z', '--', LOCKFILE, ...listed])",
|
|
61
|
+
" .split('\\0')",
|
|
62
|
+
' .filter(Boolean);',
|
|
63
|
+
' if (tracked.length > 0) {',
|
|
64
|
+
" run('git', ['checkout', '--', ...tracked]);",
|
|
65
|
+
' console.log(`Restored ${tracked.length} tracked file(s) from git`);',
|
|
66
|
+
' }',
|
|
67
|
+
'}',
|
|
68
|
+
'',
|
|
69
|
+
'function main(): void {',
|
|
70
|
+
' const lockfile = readLockfile();',
|
|
71
|
+
' if (!lockfile) {',
|
|
72
|
+
' console.log(`No ${LOCKFILE} yet: pulling the latest stable software-factory extensions`);',
|
|
73
|
+
' DEFAULT_EXTENSIONS.forEach(pull);',
|
|
74
|
+
' return;',
|
|
75
|
+
' }',
|
|
76
|
+
'',
|
|
77
|
+
' for (const [name, entry] of Object.entries(lockfile)) {',
|
|
78
|
+
' pull(`${name}@${entry.version}`);',
|
|
79
|
+
' }',
|
|
80
|
+
' restoreTrackedFiles(lockfile);',
|
|
81
|
+
'}',
|
|
82
|
+
'',
|
|
83
|
+
'main();',
|
|
84
|
+
],
|
|
85
|
+
});
|
|
86
|
+
new projen_1.JsonFile(project, 'swamp-bootstrap/tsconfig.json', {
|
|
87
|
+
marker: false,
|
|
88
|
+
obj: {
|
|
89
|
+
extends: '../tsconfig.json',
|
|
90
|
+
compilerOptions: {
|
|
91
|
+
noEmit: true,
|
|
92
|
+
rootDir: '.',
|
|
93
|
+
},
|
|
94
|
+
include: ['*.ts'],
|
|
95
|
+
exclude: ['node_modules'],
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
exports.SoftwareFactoryBootstrap = SoftwareFactoryBootstrap;
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU29mdHdhcmVGYWN0b3J5Qm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NvZnR3YXJlRmFjdG9yeUJvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBNEM7QUFHNUM7Ozs7O0dBS0c7QUFDSCxNQUFhLHdCQUF3QjtJQUNuQyxZQUFZLE9BQW9CO1FBQzlCLElBQUksaUJBQVEsQ0FBQyxPQUFPLEVBQUUsb0NBQW9DLEVBQUU7WUFDMUQsTUFBTSxFQUFFLElBQUk7WUFDWixLQUFLLEVBQUU7Z0JBQ0wsS0FBSztnQkFDTCx3REFBd0Q7Z0JBQ3hELDBFQUEwRTtnQkFDMUUsMEVBQTBFO2dCQUMxRSwwRUFBMEU7Z0JBQzFFLHdEQUF3RDtnQkFDeEQsSUFBSTtnQkFDSiw4RUFBOEU7Z0JBQzlFLDhFQUE4RTtnQkFDOUUsNEVBQTRFO2dCQUM1RSxxREFBcUQ7Z0JBQ3JELEtBQUs7Z0JBQ0wsb0RBQW9EO2dCQUNwRCxxREFBcUQ7Z0JBQ3JELEVBQUU7Z0JBQ0YsZ0VBQWdFO2dCQUNoRSxrR0FBa0c7Z0JBQ2xHLEVBQUU7Z0JBQ0YsMkJBQTJCO2dCQUMzQixvQkFBb0I7Z0JBQ3BCLHFCQUFxQjtnQkFDckIsR0FBRztnQkFDSCxFQUFFO2dCQUNGLHNFQUFzRTtnQkFDdEUsZ0NBQWdDO2dCQUNoQyx1QkFBdUI7Z0JBQ3ZCLEtBQUs7Z0JBQ0wsdUZBQXVGO2dCQUN2RixHQUFHO2dCQUNILEVBQUU7Z0JBQ0YseURBQXlEO2dCQUN6RCxtR0FBbUc7Z0JBQ25HLEdBQUc7Z0JBQ0gsRUFBRTtnQkFDRiwwQ0FBMEM7Z0JBQzFDLDZEQUE2RDtnQkFDN0QsNkZBQTZGO2dCQUM3RixHQUFHO2dCQUNILEVBQUU7Z0JBQ0YsK0VBQStFO2dCQUMvRSwwQ0FBMEM7Z0JBQzFDLDRDQUE0QztnQkFDNUMsZ0RBQWdEO2dCQUNoRCxxREFBcUQ7Z0JBQ3JELDZFQUE2RTtnQkFDN0UsbUJBQW1CO2dCQUNuQix1QkFBdUI7Z0JBQ3ZCLDZCQUE2QjtnQkFDN0IsaURBQWlEO2dCQUNqRCx5RUFBeUU7Z0JBQ3pFLEtBQUs7Z0JBQ0wsR0FBRztnQkFDSCxFQUFFO2dCQUNGLHlCQUF5QjtnQkFDekIsb0NBQW9DO2dCQUNwQyxvQkFBb0I7Z0JBQ3BCLCtGQUErRjtnQkFDL0YsdUNBQXVDO2dCQUN2QyxhQUFhO2dCQUNiLEtBQUs7Z0JBQ0wsRUFBRTtnQkFDRiwyREFBMkQ7Z0JBQzNELHVDQUF1QztnQkFDdkMsS0FBSztnQkFDTCxrQ0FBa0M7Z0JBQ2xDLEdBQUc7Z0JBQ0gsRUFBRTtnQkFDRixTQUFTO2FBQ1Y7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLGlCQUFRLENBQUMsT0FBTyxFQUFFLCtCQUErQixFQUFFO1lBQ3JELE1BQU0sRUFBRSxLQUFLO1lBQ2IsR0FBRyxFQUFFO2dCQUNILE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLGVBQWUsRUFBRTtvQkFDZixNQUFNLEVBQUUsSUFBSTtvQkFDWixPQUFPLEVBQUUsR0FBRztpQkFDYjtnQkFDRCxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7Z0JBQ2pCLE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQzthQUMxQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXpGRCw0REF5RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKc29uRmlsZSwgVGV4dEZpbGUgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgTm9kZVByb2plY3QgfSBmcm9tICdwcm9qZW4vbGliL2phdmFzY3JpcHQnO1xuXG4vKipcbiAqIFRoZSBleHRlbnNpb24gc3RlcCBvZiBgc3dhbXA6Ym9vdHN0cmFwYDogYSBOb2RlIHNjcmlwdCwgc28gaXQgcnVucyB0aGUgc2FtZVxuICogdW5kZXIgcHJvamVuJ3MgUG93ZXJTaGVsbCA1LjEgdGFzayBzaGVsbCBvbiBXaW5kb3dzIGFzIHVuZGVyIGJhc2gvc2gsIHRoYXRcbiAqIHB1bGxzIGV2ZXJ5IGV4dGVuc2lvbiBhdCB0aGUgdmVyc2lvbiBwaW5uZWQgaW4gdGhlIHJlcG8ncyBzd2FtcCBsb2NrZmlsZS5cbiAqIEZ1bGx5IGdlbmVyaWMg4oCUIG5vIHBlci1yZXBvIHBhcmFtZXRlcml6YXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBTb2Z0d2FyZUZhY3RvcnlCb290c3RyYXAge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBOb2RlUHJvamVjdCkge1xuICAgIG5ldyBUZXh0RmlsZShwcm9qZWN0LCAnc3dhbXAtYm9vdHN0cmFwL3B1bGwtZXh0ZW5zaW9ucy50cycsIHtcbiAgICAgIG1hcmtlcjogdHJ1ZSxcbiAgICAgIGxpbmVzOiBbXG4gICAgICAgICcvKionLFxuICAgICAgICAnICogUHVsbHMgZWFjaCBzd2FtcCBleHRlbnNpb24gYXQgdGhlIHZlcnNpb24gcGlubmVkIGluJyxcbiAgICAgICAgJyAqIGV4dGVuc2lvbnMvbW9kZWxzL3Vwc3RyZWFtX2V4dGVuc2lvbnMuanNvbiwgc28gYSBmcmVzaCBjbG9uZSBydW5zIHRoZScsXG4gICAgICAgICcgKiBzYW1lIGV4dGVuc2lvbnMgYXMgdGhlIHJlc3Qgb2YgdGhlIHRlYW0sIGluY2x1ZGluZyBhbnkgdGhlIHJlcG8gYWRkZWQnLFxuICAgICAgICAnICogaXRzZWxmLiBBIHJlcG8gd2l0aCBubyBsb2NrZmlsZSB5ZXQgcHVsbHMgREVGQVVMVF9FWFRFTlNJT05TIGF0IHRoZWlyJyxcbiAgICAgICAgJyAqIGxhdGVzdCBzdGFibGUgdmVyc2lvbnMsIHdoaWNoIGNyZWF0ZXMgdGhlIGxvY2tmaWxlLicsXG4gICAgICAgICcgKicsXG4gICAgICAgICcgKiBBIHB1bGwgcmV3cml0ZXMgdGhlIGxvY2tmaWxlIGV2ZW4gYXQgYW4gaWRlbnRpY2FsIHZlcnNpb24sIGFuZCBvbiBXaW5kb3dzJyxcbiAgICAgICAgJyAqIGl0IHdyaXRlcyBiYWNrc2xhc2ggcGF0aHMgYW5kIGRlbGV0ZXMgdGhlIGNvbW1pdHRlZCBmaWxlcyBpdCB0cmFja3MgKGUuZy4nLFxuICAgICAgICAnICogLmNsYXVkZS9za2lsbHMvc29mdHdhcmUtZmFjdG9yeS8pLiBTbyBhZnRlcndhcmRzIHRoZSBsb2NrZmlsZSBhbmQgZXZlcnknLFxuICAgICAgICAnICogZ2l0LXRyYWNrZWQgZmlsZSBpdCBsaXN0cyBhcmUgcmVzdG9yZWQgZnJvbSBnaXQuJyxcbiAgICAgICAgJyAqLycsXG4gICAgICAgIFwiaW1wb3J0IHsgZXhlY0ZpbGVTeW5jIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcIixcbiAgICAgICAgXCJpbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMgfSBmcm9tICdub2RlOmZzJztcIixcbiAgICAgICAgJycsXG4gICAgICAgIFwiY29uc3QgTE9DS0ZJTEUgPSAnZXh0ZW5zaW9ucy9tb2RlbHMvdXBzdHJlYW1fZXh0ZW5zaW9ucy5qc29uJztcIixcbiAgICAgICAgXCJjb25zdCBERUZBVUxUX0VYVEVOU0lPTlMgPSBbJ0Bzd2FtcC9zb2Z0d2FyZS1mYWN0b3J5JywgJ0B3ZWJmcmFtcC9naXRodWInLCAnQGdvb2RjcmFmdC9naXRodWInXTtcIixcbiAgICAgICAgJycsXG4gICAgICAgICdpbnRlcmZhY2UgTG9ja2ZpbGVFbnRyeSB7JyxcbiAgICAgICAgJyAgdmVyc2lvbjogc3RyaW5nOycsXG4gICAgICAgICcgIGZpbGVzPzogc3RyaW5nW107JyxcbiAgICAgICAgJ30nLFxuICAgICAgICAnJyxcbiAgICAgICAgJ2Z1bmN0aW9uIHJlYWRMb2NrZmlsZSgpOiBSZWNvcmQ8c3RyaW5nLCBMb2NrZmlsZUVudHJ5PiB8IHVuZGVmaW5lZCB7JyxcbiAgICAgICAgJyAgaWYgKCFleGlzdHNTeW5jKExPQ0tGSUxFKSkgeycsXG4gICAgICAgICcgICAgcmV0dXJuIHVuZGVmaW5lZDsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgXCIgIHJldHVybiBKU09OLnBhcnNlKHJlYWRGaWxlU3luYyhMT0NLRklMRSwgJ3V0ZjgnKSkgYXMgUmVjb3JkPHN0cmluZywgTG9ja2ZpbGVFbnRyeT47XCIsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICdmdW5jdGlvbiBydW4oY29tbWFuZDogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSk6IHN0cmluZyB7JyxcbiAgICAgICAgXCIgIHJldHVybiBleGVjRmlsZVN5bmMoY29tbWFuZCwgYXJncywgeyBlbmNvZGluZzogJ3V0ZjgnLCBzdGRpbzogWydpZ25vcmUnLCAncGlwZScsICdpbmhlcml0J10gfSk7XCIsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICdmdW5jdGlvbiBwdWxsKGV4dGVuc2lvbjogc3RyaW5nKTogdm9pZCB7JyxcbiAgICAgICAgJyAgY29uc29sZS5sb2coYHN3YW1wIGV4dGVuc2lvbiBwdWxsICR7ZXh0ZW5zaW9ufSAtLWZvcmNlYCk7JyxcbiAgICAgICAgXCIgIGV4ZWNGaWxlU3luYygnc3dhbXAnLCBbJ2V4dGVuc2lvbicsICdwdWxsJywgZXh0ZW5zaW9uLCAnLS1mb3JjZSddLCB7IHN0ZGlvOiAnaW5oZXJpdCcgfSk7XCIsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICdmdW5jdGlvbiByZXN0b3JlVHJhY2tlZEZpbGVzKGxvY2tmaWxlOiBSZWNvcmQ8c3RyaW5nLCBMb2NrZmlsZUVudHJ5Pik6IHZvaWQgeycsXG4gICAgICAgICcgIGNvbnN0IGxpc3RlZCA9IE9iamVjdC52YWx1ZXMobG9ja2ZpbGUpJyxcbiAgICAgICAgJyAgICAuZmxhdE1hcCgoZW50cnkpID0+IGVudHJ5LmZpbGVzID8/IFtdKScsXG4gICAgICAgIFwiICAgIC5tYXAoKGZpbGUpID0+IGZpbGUucmVwbGFjZSgvXFxcXFxcXFwvZywgJy8nKSlcIixcbiAgICAgICAgXCIgICAgLmZpbHRlcigoZmlsZSkgPT4gIWZpbGUuc3RhcnRzV2l0aCgnLnN3YW1wLycpKTtcIixcbiAgICAgICAgXCIgIGNvbnN0IHRyYWNrZWQgPSBydW4oJ2dpdCcsIFsnbHMtZmlsZXMnLCAnLXonLCAnLS0nLCBMT0NLRklMRSwgLi4ubGlzdGVkXSlcIixcbiAgICAgICAgXCIgICAgLnNwbGl0KCdcXFxcMCcpXCIsXG4gICAgICAgICcgICAgLmZpbHRlcihCb29sZWFuKTsnLFxuICAgICAgICAnICBpZiAodHJhY2tlZC5sZW5ndGggPiAwKSB7JyxcbiAgICAgICAgXCIgICAgcnVuKCdnaXQnLCBbJ2NoZWNrb3V0JywgJy0tJywgLi4udHJhY2tlZF0pO1wiLFxuICAgICAgICAnICAgIGNvbnNvbGUubG9nKGBSZXN0b3JlZCAke3RyYWNrZWQubGVuZ3RofSB0cmFja2VkIGZpbGUocykgZnJvbSBnaXRgKTsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJ30nLFxuICAgICAgICAnJyxcbiAgICAgICAgJ2Z1bmN0aW9uIG1haW4oKTogdm9pZCB7JyxcbiAgICAgICAgJyAgY29uc3QgbG9ja2ZpbGUgPSByZWFkTG9ja2ZpbGUoKTsnLFxuICAgICAgICAnICBpZiAoIWxvY2tmaWxlKSB7JyxcbiAgICAgICAgJyAgICBjb25zb2xlLmxvZyhgTm8gJHtMT0NLRklMRX0geWV0OiBwdWxsaW5nIHRoZSBsYXRlc3Qgc3RhYmxlIHNvZnR3YXJlLWZhY3RvcnkgZXh0ZW5zaW9uc2ApOycsXG4gICAgICAgICcgICAgREVGQVVMVF9FWFRFTlNJT05TLmZvckVhY2gocHVsbCk7JyxcbiAgICAgICAgJyAgICByZXR1cm47JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICBmb3IgKGNvbnN0IFtuYW1lLCBlbnRyeV0gb2YgT2JqZWN0LmVudHJpZXMobG9ja2ZpbGUpKSB7JyxcbiAgICAgICAgJyAgICBwdWxsKGAke25hbWV9QCR7ZW50cnkudmVyc2lvbn1gKTsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJyAgcmVzdG9yZVRyYWNrZWRGaWxlcyhsb2NrZmlsZSk7JyxcbiAgICAgICAgJ30nLFxuICAgICAgICAnJyxcbiAgICAgICAgJ21haW4oKTsnLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIG5ldyBKc29uRmlsZShwcm9qZWN0LCAnc3dhbXAtYm9vdHN0cmFwL3RzY29uZmlnLmpzb24nLCB7XG4gICAgICBtYXJrZXI6IGZhbHNlLFxuICAgICAgb2JqOiB7XG4gICAgICAgIGV4dGVuZHM6ICcuLi90c2NvbmZpZy5qc29uJyxcbiAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgbm9FbWl0OiB0cnVlLFxuICAgICAgICAgIHJvb3REaXI6ICcuJyxcbiAgICAgICAgfSxcbiAgICAgICAgaW5jbHVkZTogWycqLnRzJ10sXG4gICAgICAgIGV4Y2x1ZGU6IFsnbm9kZV9tb2R1bGVzJ10sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -39,11 +39,13 @@ export interface SoftwareFactoryFilesOptions {
|
|
|
39
39
|
* the repo is already initialized), so it's wired into the project's
|
|
40
40
|
* `install`/`install:ci` tasks and runs automatically on every install,
|
|
41
41
|
* guarded so it's a silent no-op on a machine without `swamp` on PATH (e.g.
|
|
42
|
-
* CI). The extension pulls
|
|
42
|
+
* CI). The extension pulls (at the versions pinned in the repo's
|
|
43
|
+
* `extensions/models/upstream_extensions.json`) and vault creation are one-time, not idempotent
|
|
43
44
|
* in a way that's safe to repeat on every install, so they stay in the
|
|
44
45
|
* `swamp:bootstrap` task this construct adds. Only exman's own authored
|
|
45
46
|
* config (the factory's state machine, the architecture-rule engine, the
|
|
46
|
-
* attestation mechanism, the OpenSpec task-completion gate,
|
|
47
|
+
* attestation mechanism, the OpenSpec task-completion gate, the lockfile-driven
|
|
48
|
+
* extension pull, and the 3 swamp
|
|
47
49
|
* workflows that wire them together) is templated.
|
|
48
50
|
*/
|
|
49
51
|
export declare class SoftwareFactoryFiles {
|
|
@@ -4,6 +4,7 @@ exports.SoftwareFactoryFiles = void 0;
|
|
|
4
4
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
5
5
|
const SoftwareFactoryArchitectureRules_1 = require("./SoftwareFactoryArchitectureRules");
|
|
6
6
|
const SoftwareFactoryAttestation_1 = require("./SoftwareFactoryAttestation");
|
|
7
|
+
const SoftwareFactoryBootstrap_1 = require("./SoftwareFactoryBootstrap");
|
|
7
8
|
const SoftwareFactoryModels_1 = require("./SoftwareFactoryModels");
|
|
8
9
|
const SoftwareFactoryOpenSpecGates_1 = require("./SoftwareFactoryOpenSpecGates");
|
|
9
10
|
const SoftwareFactoryWorkflows_1 = require("./SoftwareFactoryWorkflows");
|
|
@@ -23,15 +24,17 @@ const DEFAULT_GITHUB_OWNER = 'macedon-technologies';
|
|
|
23
24
|
* the repo is already initialized), so it's wired into the project's
|
|
24
25
|
* `install`/`install:ci` tasks and runs automatically on every install,
|
|
25
26
|
* guarded so it's a silent no-op on a machine without `swamp` on PATH (e.g.
|
|
26
|
-
* CI). The extension pulls
|
|
27
|
+
* CI). The extension pulls (at the versions pinned in the repo's
|
|
28
|
+
* `extensions/models/upstream_extensions.json`) and vault creation are one-time, not idempotent
|
|
27
29
|
* in a way that's safe to repeat on every install, so they stay in the
|
|
28
30
|
* `swamp:bootstrap` task this construct adds. Only exman's own authored
|
|
29
31
|
* config (the factory's state machine, the architecture-rule engine, the
|
|
30
|
-
* attestation mechanism, the OpenSpec task-completion gate,
|
|
32
|
+
* attestation mechanism, the OpenSpec task-completion gate, the lockfile-driven
|
|
33
|
+
* extension pull, and the 3 swamp
|
|
31
34
|
* workflows that wire them together) is templated.
|
|
32
35
|
*/
|
|
33
36
|
class SoftwareFactoryFiles {
|
|
34
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.SoftwareFactoryFiles", version: "1.
|
|
37
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.SoftwareFactoryFiles", version: "1.28.0" };
|
|
35
38
|
constructor(project, options) {
|
|
36
39
|
const { repoName, actionVersions } = options;
|
|
37
40
|
const githubOwner = options.githubOwner || DEFAULT_GITHUB_OWNER;
|
|
@@ -51,6 +54,7 @@ class SoftwareFactoryFiles {
|
|
|
51
54
|
new SoftwareFactoryAttestation_1.SoftwareFactoryAttestation(project, { repoName });
|
|
52
55
|
new SoftwareFactoryOpenSpecGates_1.SoftwareFactoryOpenSpecGates(project);
|
|
53
56
|
new SoftwareFactoryWorkflows_1.SoftwareFactoryWorkflows(project, { repoName, actionVersions });
|
|
57
|
+
new SoftwareFactoryBootstrap_1.SoftwareFactoryBootstrap(project);
|
|
54
58
|
project.addTask('validate:architecture', {
|
|
55
59
|
description: 'Run the architecture rule registry (architecture-rules/rules.json) against the repo',
|
|
56
60
|
exec: 'ts-node --project architecture-rules/tsconfig.json architecture-rules/check.ts',
|
|
@@ -70,11 +74,9 @@ class SoftwareFactoryFiles {
|
|
|
70
74
|
receiveArgs: true,
|
|
71
75
|
});
|
|
72
76
|
project.addTask('swamp:bootstrap', {
|
|
73
|
-
description: 'One-time setup: pull the
|
|
77
|
+
description: 'One-time setup: pull the swamp extensions at the versions pinned in extensions/models/upstream_extensions.json and create the secrets vault (swamp init itself already runs on every install)',
|
|
74
78
|
steps: [
|
|
75
|
-
{ exec: '
|
|
76
|
-
{ exec: 'swamp extension pull @webframp/github' },
|
|
77
|
-
{ exec: 'swamp extension pull @goodcraft/github' },
|
|
79
|
+
{ exec: 'ts-node --project swamp-bootstrap/tsconfig.json swamp-bootstrap/pull-extensions.ts' },
|
|
78
80
|
{ exec: `swamp vault create local_encryption ${secretsVault}` },
|
|
79
81
|
{
|
|
80
82
|
exec: `echo "Next: swamp vault put ${secretsVault} GITHUB_TOKEN --refresh-from 'gh auth token'"`,
|
|
@@ -100,4 +102,4 @@ class SoftwareFactoryFiles {
|
|
|
100
102
|
}
|
|
101
103
|
}
|
|
102
104
|
exports.SoftwareFactoryFiles = SoftwareFactoryFiles;
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU29mdHdhcmVGYWN0b3J5RmlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU29mdHdhcmVGYWN0b3J5RmlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLHlGQUFzRjtBQUN0Riw2RUFBMEU7QUFDMUUsbUVBQWdFO0FBQ2hFLGlGQUE4RTtBQUM5RSx5RUFBc0U7QUFHdEUsTUFBTSxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQztBQThCcEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILE1BQWEsb0JBQW9COztJQUMvQixZQUFZLE9BQW9CLEVBQUUsT0FBb0M7UUFDcEUsTUFBTSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDN0MsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxvQkFBb0IsQ0FBQztRQUNoRSxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQztRQUNoRCxNQUFNLFlBQVksR0FBRyxHQUFHLFFBQVEsVUFBVSxDQUFDO1FBQzNDLHNFQUFzRTtRQUN0RSxzRUFBc0U7UUFDdEUsdUVBQXVFO1FBQ3ZFLHlFQUF5RTtRQUN6RSxNQUFNLGFBQWEsR0FBRyxpRUFBaUUsQ0FBQztRQUV4RixJQUFJLDZDQUFxQixDQUFDLE9BQU8sRUFBRTtZQUNqQyxRQUFRO1lBQ1IsV0FBVztZQUNYLFVBQVU7U0FDWCxDQUFDLENBQUM7UUFFSCxJQUFJLG1FQUFnQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTlDLElBQUksdURBQTBCLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUV0RCxJQUFJLDJEQUE0QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFDLElBQUksbURBQXdCLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFFcEUsT0FBTyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRTtZQUN2QyxXQUFXLEVBQUUscUZBQXFGO1lBQ2xHLElBQUksRUFBRSxnRkFBZ0Y7U0FDdkYsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsRUFBRTtZQUMvQyxXQUFXLEVBQUUsMkZBQTJGO1lBQ3hHLElBQUksRUFBRSx1RkFBdUY7WUFDN0YsV0FBVyxFQUFFLElBQUk7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRTtZQUN0QyxXQUFXLEVBQUUsd0dBQXdHO1lBQ3JILElBQUksRUFBRSxxRUFBcUU7U0FDNUUsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRTtZQUNwQyxXQUFXLEVBQUUseUhBQXlIO1lBQ3RJLElBQUksRUFBRSxtRUFBbUU7WUFDekUsV0FBVyxFQUFFLElBQUk7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtZQUNqQyxXQUFXLEVBQUUsNElBQTRJO1lBQ3pKLEtBQUssRUFBRTtnQkFDTCxFQUFFLElBQUksRUFBRSw4Q0FBOEMsRUFBRTtnQkFDeEQsRUFBRSxJQUFJLEVBQUUsdUNBQXVDLEVBQUU7Z0JBQ2pELEVBQUUsSUFBSSxFQUFFLHdDQUF3QyxFQUFFO2dCQUNsRCxFQUFFLElBQUksRUFBRSx1Q0FBdUMsWUFBWSxFQUFFLEVBQUU7Z0JBQy9EO29CQUNFLElBQUksRUFBRSwrQkFBK0IsWUFBWSwrQ0FBK0M7aUJBQ2pHO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCx3RUFBd0U7UUFDeEUsd0VBQXdFO1FBQ3hFLHlFQUF5RTtRQUN6RSxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWxELHVFQUF1RTtRQUN2RSx3RUFBd0U7UUFDeEUsdUVBQXVFO1FBQ3ZFLG1FQUFtRTtRQUNuRSxvREFBb0Q7UUFDcEQsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoQyxPQUFPLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDNUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sQ0FBQyxZQUFZLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNwRCxPQUFPLENBQUMsWUFBWSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDckQsT0FBTyxDQUFDLFlBQVksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7O0FBOUVILG9EQStFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vZGVQcm9qZWN0IH0gZnJvbSAncHJvamVuL2xpYi9qYXZhc2NyaXB0JztcbmltcG9ydCB7IFNvZnR3YXJlRmFjdG9yeUFyY2hpdGVjdHVyZVJ1bGVzIH0gZnJvbSAnLi9Tb2Z0d2FyZUZhY3RvcnlBcmNoaXRlY3R1cmVSdWxlcyc7XG5pbXBvcnQgeyBTb2Z0d2FyZUZhY3RvcnlBdHRlc3RhdGlvbiB9IGZyb20gJy4vU29mdHdhcmVGYWN0b3J5QXR0ZXN0YXRpb24nO1xuaW1wb3J0IHsgU29mdHdhcmVGYWN0b3J5TW9kZWxzIH0gZnJvbSAnLi9Tb2Z0d2FyZUZhY3RvcnlNb2RlbHMnO1xuaW1wb3J0IHsgU29mdHdhcmVGYWN0b3J5T3BlblNwZWNHYXRlcyB9IGZyb20gJy4vU29mdHdhcmVGYWN0b3J5T3BlblNwZWNHYXRlcyc7XG5pbXBvcnQgeyBTb2Z0d2FyZUZhY3RvcnlXb3JrZmxvd3MgfSBmcm9tICcuL1NvZnR3YXJlRmFjdG9yeVdvcmtmbG93cyc7XG5pbXBvcnQgeyBXb3JrZmxvd0FjdGlvblZlcnNpb25zIH0gZnJvbSAnLi9Xb3JrZmxvd0FjdGlvblZlcnNpb25zJztcblxuY29uc3QgREVGQVVMVF9HSVRIVUJfT1dORVIgPSAnbWFjZWRvbi10ZWNobm9sb2dpZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvZnR3YXJlRmFjdG9yeUZpbGVzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgYmFyZSByZXBvIG5hbWUgKGUuZy4gYGV4cGVuc2UtdHJhY2tlcmApLCB1c2VkIHRvIGRlcml2ZSB0aGUgZmFjdG9yeSdzXG4gICAqIG1vZGVsIG5hbWVzIChgPHJlcG9OYW1lPi1mYWN0b3J5YCwgYDxyZXBvTmFtZT4taXNzdWVzYCwgYDxyZXBvTmFtZT4tcHJgLFxuICAgKiBgPHJlcG9OYW1lPi1zaGVsbCpgKSBhbmQgdmF1bHQgbmFtZSAoYDxyZXBvTmFtZT4tc2VjcmV0c2ApLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEdpdEh1YiBvcmcvdXNlciB0aGUgcmVwbyBsaXZlcyBpbi5cbiAgICpcbiAgICogQGRlZmF1bHQgJ21hY2Vkb24tdGVjaG5vbG9naWVzJ1xuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViT3duZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBicmFuY2ggdGhlIGZhY3Rvcnkgb3BlbnMgcHVsbCByZXF1ZXN0cyBhZ2FpbnN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAnbWFpbidcbiAgICovXG4gIHJlYWRvbmx5IGJhc2VCcmFuY2g/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlcyBmb3IgdGhlIHBpbm5lZCBhY3Rpb24gdmVyc2lvbnMgdXNlZCBieSBgdmVyaWZ5LWF0dGVzdGF0aW9uLnltbGAuXG4gICAqL1xuICByZWFkb25seSBhY3Rpb25WZXJzaW9ucz86IFdvcmtmbG93QWN0aW9uVmVyc2lvbnM7XG59XG5cbi8qKlxuICogQmFja3BvcnRzIGV4bWFuJ3Mgc3dhbXAgXCJzb2Z0d2FyZSBmYWN0b3J5XCIgcGF0dGVyblxuICogKG1hY2Vkb24tdGVjaG5vbG9naWVzL2V4bWFuIzEzKSBhcyBnZW5lcmF0ZWQgc2NhZmZvbGRpbmc6IGFcbiAqIGBAc3dhbXAvc29mdHdhcmUtZmFjdG9yeWAgc3RhdGUgbWFjaGluZSB0aGF0IGRyaXZlcyBhIEdpdEh1YiBpc3N1ZSBmcm9tXG4gKiBpbnRha2UgdGhyb3VnaCBhbiBvcGVuZWQgUFIsIGVuZm9yY2luZyBPcGVuU3BlYyB1c2FnZSwgYW4gYXJjaGl0ZWN0dXJlXG4gKiBydWxlIHJlZ2lzdHJ5LCBhbmQgYSBwcmUtUFIgdmVyaWZpY2F0aW9uIGdhdGUgd2hvc2UgYXR0ZXN0YXRpb24gaXNcbiAqIHJlLWNoZWNrZWQgYXQgbWVyZ2UgdGltZS5cbiAqXG4gKiBXaGF0IHN3YW1wIGl0c2VsZiB3b3VsZCBnZW5lcmF0ZSAoZXh0ZW5zaW9uIGRvY3MgcHVsbGVkIHZpYVxuICogYHN3YW1wIGV4dGVuc2lvbiBwdWxsYCwgYC5zd2FtcC55YW1sYCwgdGhlIHZhdWx0LCBhbmQgdGhlIFwic3dhbXAgbWFuYWdlZFxuICogc2VjdGlvblwiIGluIENMQVVERS5tZCkgaXMgZGVsaWJlcmF0ZWx5IE5PVCBoYW5kLXRlbXBsYXRlZCBoZXJlIOKAlCB0aG9zZSBhcmVcbiAqIHByb2R1Y2VkIGJ5IHRoZSByZWFsIGBzd2FtcGAgQ0xJLiBgc3dhbXAgaW5pdGAgaXMgaWRlbXBvdGVudCAoYSBuby1vcCBpZlxuICogdGhlIHJlcG8gaXMgYWxyZWFkeSBpbml0aWFsaXplZCksIHNvIGl0J3Mgd2lyZWQgaW50byB0aGUgcHJvamVjdCdzXG4gKiBgaW5zdGFsbGAvYGluc3RhbGw6Y2lgIHRhc2tzIGFuZCBydW5zIGF1dG9tYXRpY2FsbHkgb24gZXZlcnkgaW5zdGFsbCxcbiAqIGd1YXJkZWQgc28gaXQncyBhIHNpbGVudCBuby1vcCBvbiBhIG1hY2hpbmUgd2l0aG91dCBgc3dhbXBgIG9uIFBBVEggKGUuZy5cbiAqIENJKS4gVGhlIGV4dGVuc2lvbiBwdWxscyBhbmQgdmF1bHQgY3JlYXRpb24gYXJlIG9uZS10aW1lLCBub3QgaWRlbXBvdGVudFxuICogaW4gYSB3YXkgdGhhdCdzIHNhZmUgdG8gcmVwZWF0IG9uIGV2ZXJ5IGluc3RhbGwsIHNvIHRoZXkgc3RheSBpbiB0aGVcbiAqIGBzd2FtcDpib290c3RyYXBgIHRhc2sgdGhpcyBjb25zdHJ1Y3QgYWRkcy4gT25seSBleG1hbidzIG93biBhdXRob3JlZFxuICogY29uZmlnICh0aGUgZmFjdG9yeSdzIHN0YXRlIG1hY2hpbmUsIHRoZSBhcmNoaXRlY3R1cmUtcnVsZSBlbmdpbmUsIHRoZVxuICogYXR0ZXN0YXRpb24gbWVjaGFuaXNtLCB0aGUgT3BlblNwZWMgdGFzay1jb21wbGV0aW9uIGdhdGUsIGFuZCB0aGUgMyBzd2FtcFxuICogd29ya2Zsb3dzIHRoYXQgd2lyZSB0aGVtIHRvZ2V0aGVyKSBpcyB0ZW1wbGF0ZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBTb2Z0d2FyZUZhY3RvcnlGaWxlcyB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IE5vZGVQcm9qZWN0LCBvcHRpb25zOiBTb2Z0d2FyZUZhY3RvcnlGaWxlc09wdGlvbnMpIHtcbiAgICBjb25zdCB7IHJlcG9OYW1lLCBhY3Rpb25WZXJzaW9ucyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBnaXRodWJPd25lciA9IG9wdGlvbnMuZ2l0aHViT3duZXIgfHwgREVGQVVMVF9HSVRIVUJfT1dORVI7XG4gICAgY29uc3QgYmFzZUJyYW5jaCA9IG9wdGlvbnMuYmFzZUJyYW5jaCB8fCAnbWFpbic7XG4gICAgY29uc3Qgc2VjcmV0c1ZhdWx0ID0gYCR7cmVwb05hbWV9LXNlY3JldHNgO1xuICAgIC8vIEEgc2luZ2xlIHJlZGlyZWN0IG9ubHk6IHByb2plbidzIGJ1aWx0LWluIGNyb3NzLXBsYXRmb3JtIHRhc2sgc2hlbGxcbiAgICAvLyAoZGF4KSByZWplY3RzIGEgY29tbWFuZCB3aXRoIG1vcmUgdGhhbiBvbmUgcmVkaXJlY3QgKGUuZy4gY29tYmluaW5nXG4gICAgLy8gYD4vZGV2L251bGxgIHdpdGggYDI+JjFgKSB3aXRoIFwiTXVsdGlwbGUgcmVkaXJlY3RzIGFyZSBjdXJyZW50bHkgbm90XG4gICAgLy8gc3VwcG9ydGVkXCIg4oCUIGNvbmZpcm1lZCBieSBkb2dmb29kaW5nIHRoaXMgY29uc3RydWN0IG9uIHRoaXMgdmVyeSByZXBvLlxuICAgIGNvbnN0IHN3YW1wSW5pdFN0ZXAgPSAnY29tbWFuZCAtdiBzd2FtcCA+L2Rldi9udWxsICYmIHN3YW1wIGluaXQgLS10b29sIGNsYXVkZSB8fCB0cnVlJztcblxuICAgIG5ldyBTb2Z0d2FyZUZhY3RvcnlNb2RlbHMocHJvamVjdCwge1xuICAgICAgcmVwb05hbWUsXG4gICAgICBnaXRodWJPd25lcixcbiAgICAgIGJhc2VCcmFuY2gsXG4gICAgfSk7XG5cbiAgICBuZXcgU29mdHdhcmVGYWN0b3J5QXJjaGl0ZWN0dXJlUnVsZXMocHJvamVjdCk7XG5cbiAgICBuZXcgU29mdHdhcmVGYWN0b3J5QXR0ZXN0YXRpb24ocHJvamVjdCwgeyByZXBvTmFtZSB9KTtcblxuICAgIG5ldyBTb2Z0d2FyZUZhY3RvcnlPcGVuU3BlY0dhdGVzKHByb2plY3QpO1xuXG4gICAgbmV3IFNvZnR3YXJlRmFjdG9yeVdvcmtmbG93cyhwcm9qZWN0LCB7IHJlcG9OYW1lLCBhY3Rpb25WZXJzaW9ucyB9KTtcblxuICAgIHByb2plY3QuYWRkVGFzaygndmFsaWRhdGU6YXJjaGl0ZWN0dXJlJywge1xuICAgICAgZGVzY3JpcHRpb246ICdSdW4gdGhlIGFyY2hpdGVjdHVyZSBydWxlIHJlZ2lzdHJ5IChhcmNoaXRlY3R1cmUtcnVsZXMvcnVsZXMuanNvbikgYWdhaW5zdCB0aGUgcmVwbycsXG4gICAgICBleGVjOiAndHMtbm9kZSAtLXByb2plY3QgYXJjaGl0ZWN0dXJlLXJ1bGVzL3RzY29uZmlnLmpzb24gYXJjaGl0ZWN0dXJlLXJ1bGVzL2NoZWNrLnRzJyxcbiAgICB9KTtcblxuICAgIHByb2plY3QuYWRkVGFzaygnb3BlbnNwZWM6Y2hlY2stdGFza3MtY29tcGxldGUnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0ZhaWwgdW5sZXNzIGV2ZXJ5IHRhc2sgaW4gdGhlIG5hbWVkIE9wZW5TcGVjIGNoYW5nZSBpcyBjb21wbGV0ZSAodXNhZ2U6IC0tIDxjaGFuZ2Utc2x1Zz4pJyxcbiAgICAgIGV4ZWM6ICd0cy1ub2RlIC0tcHJvamVjdCBvcGVuc3BlYy1nYXRlcy90c2NvbmZpZy5qc29uIG9wZW5zcGVjLWdhdGVzL2NoZWNrLXRhc2tzLWNvbXBsZXRlLnRzJyxcbiAgICAgIHJlY2VpdmVBcmdzOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5hZGRUYXNrKCdhdHRlc3RhdGlvbjptYW5pZmVzdCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUHJpbnQgU0hBMjU2IGNoZWNrc3VtcyBvZiB0aGUgZmlsZXMgYSBQUiBhdHRlc3RhdGlvbiBpcyB2ZXJpZmllZCBhZ2FpbnN0IChzZWUgYXR0ZXN0YXRpb24vbWFuaWZlc3QudHMpJyxcbiAgICAgIGV4ZWM6ICd0cy1ub2RlIC0tcHJvamVjdCBhdHRlc3RhdGlvbi90c2NvbmZpZy5qc29uIGF0dGVzdGF0aW9uL21hbmlmZXN0LnRzJyxcbiAgICB9KTtcblxuICAgIHByb2plY3QuYWRkVGFzaygnYXR0ZXN0YXRpb246dmVyaWZ5Jywge1xuICAgICAgZGVzY3JpcHRpb246ICdWZXJpZnkgYSBQUlxcJ3MgZW1iZWRkZWQgYXR0ZXN0YXRpb24tbWFuaWZlc3QgYWdhaW5zdCB0aGUgY3VycmVudCBjaGVja291dCAodXNhZ2U6IC0tIC0tYm9keS1maWxlIDxwYXRoPiAtLWNvbW1pdCA8c2hhPiknLFxuICAgICAgZXhlYzogJ3RzLW5vZGUgLS1wcm9qZWN0IGF0dGVzdGF0aW9uL3RzY29uZmlnLmpzb24gYXR0ZXN0YXRpb24vdmVyaWZ5LnRzJyxcbiAgICAgIHJlY2VpdmVBcmdzOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5hZGRUYXNrKCdzd2FtcDpib290c3RyYXAnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ09uZS10aW1lIHNldHVwOiBwdWxsIHRoZSBzb2Z0d2FyZS1mYWN0b3J5L2dpdGh1YiBleHRlbnNpb25zIGFuZCBjcmVhdGUgdGhlIHNlY3JldHMgdmF1bHQgKHN3YW1wIGluaXQgaXRzZWxmIGFscmVhZHkgcnVucyBvbiBldmVyeSBpbnN0YWxsKScsXG4gICAgICBzdGVwczogW1xuICAgICAgICB7IGV4ZWM6ICdzd2FtcCBleHRlbnNpb24gcHVsbCBAc3dhbXAvc29mdHdhcmUtZmFjdG9yeScgfSxcbiAgICAgICAgeyBleGVjOiAnc3dhbXAgZXh0ZW5zaW9uIHB1bGwgQHdlYmZyYW1wL2dpdGh1YicgfSxcbiAgICAgICAgeyBleGVjOiAnc3dhbXAgZXh0ZW5zaW9uIHB1bGwgQGdvb2RjcmFmdC9naXRodWInIH0sXG4gICAgICAgIHsgZXhlYzogYHN3YW1wIHZhdWx0IGNyZWF0ZSBsb2NhbF9lbmNyeXB0aW9uICR7c2VjcmV0c1ZhdWx0fWAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGV4ZWM6IGBlY2hvIFwiTmV4dDogc3dhbXAgdmF1bHQgcHV0ICR7c2VjcmV0c1ZhdWx0fSBHSVRIVUJfVE9LRU4gLS1yZWZyZXNoLWZyb20gJ2doIGF1dGggdG9rZW4nXCJgLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIGBzd2FtcCBpbml0YCBpcyBzYWZlIHRvIHJlLXJ1biAoaWRlbXBvdGVudCB3aGVuIGFscmVhZHkgaW5pdGlhbGl6ZWQpLFxuICAgIC8vIHNvIGV2ZXJ5IGluc3RhbGwga2VlcHMgdGhlIHJlcG8gaW5pdGlhbGl6ZWQgd2l0aG91dCBhIHNlcGFyYXRlIG1hbnVhbFxuICAgIC8vIHN0ZXAg4oCUIGluY2x1ZGluZyBvbiBhIGZyZXNoIGNsb25lIHRoYXQgaGFzbid0IHJ1biBzd2FtcDpib290c3RyYXAgeWV0LlxuICAgIHByb2plY3QucGFja2FnZS5pbnN0YWxsVGFzay5leGVjKHN3YW1wSW5pdFN0ZXApO1xuICAgIHByb2plY3QucGFja2FnZS5pbnN0YWxsQ2lUYXNrLmV4ZWMoc3dhbXBJbml0U3RlcCk7XG5cbiAgICAvLyBNaXJyb3JzIHRoZSBwYXR0ZXJucyBgc3dhbXAgaW5pdGAgaXRzZWxmIHdvdWxkIGFwcGVuZCB0byAuZ2l0aWdub3JlLlxuICAgIC8vIHByb2plbidzIElnbm9yZUZpbGUgZnVsbHkgcmVnZW5lcmF0ZXMgLmdpdGlnbm9yZSBmcm9tIGl0cyBvd24gdHJhY2tlZFxuICAgIC8vIGVudHJpZXMgb24gZXZlcnkgc3ludGgsIHNvIGFueXRoaW5nIGBzd2FtcCBpbml0YCBhcHBlbmRzIG91dC1vZi1iYW5kXG4gICAgLy8gZ2V0cyBzaWxlbnRseSB3aXBlZCBieSB0aGUgbmV4dCBgbnB4IHByb2plbmAgcnVuIChjYXVnaHQgYnkgQ0knc1xuICAgIC8vIHNlbGYtbXV0YXRpb24gY2hlY2spIHVubGVzcyBpdCdzIGFsc28gYWRkZWQgaGVyZS5cbiAgICBwcm9qZWN0LmFkZEdpdElnbm9yZSgnLnN3YW1wLycpO1xuICAgIHByb2plY3QuYWRkR2l0SWdub3JlKCcuc3dhbXAtc291cmNlcy55YW1sJyk7XG4gICAgcHJvamVjdC5hZGRHaXRJZ25vcmUoJy5jbGF1ZGUvd29ya3RyZWVzLycpO1xuICAgIHByb2plY3QuYWRkR2l0SWdub3JlKCcuY2xhdWRlL3NldHRpbmdzLmxvY2FsLmpzb24nKTtcbiAgICBwcm9qZWN0LmFkZEdpdElnbm9yZSgnLmNsYXVkZS9zY2hlZHVsZWRfdGFza3MubG9jaycpO1xuICAgIHByb2plY3QuYWRkR2l0SWdub3JlKCcuY2xhdWRlL3NjaGVkdWxlZF90YXNrcy5qc29uJyk7XG4gIH1cbn1cbiJdfQ==
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU29mdHdhcmVGYWN0b3J5RmlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU29mdHdhcmVGYWN0b3J5RmlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLHlGQUFzRjtBQUN0Riw2RUFBMEU7QUFDMUUseUVBQXNFO0FBQ3RFLG1FQUFnRTtBQUNoRSxpRkFBOEU7QUFDOUUseUVBQXNFO0FBR3RFLE1BQU0sb0JBQW9CLEdBQUcsc0JBQXNCLENBQUM7QUE4QnBEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQWEsb0JBQW9COztJQUMvQixZQUFZLE9BQW9CLEVBQUUsT0FBb0M7UUFDcEUsTUFBTSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDN0MsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxvQkFBb0IsQ0FBQztRQUNoRSxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQztRQUNoRCxNQUFNLFlBQVksR0FBRyxHQUFHLFFBQVEsVUFBVSxDQUFDO1FBQzNDLHNFQUFzRTtRQUN0RSxzRUFBc0U7UUFDdEUsdUVBQXVFO1FBQ3ZFLHlFQUF5RTtRQUN6RSxNQUFNLGFBQWEsR0FBRyxpRUFBaUUsQ0FBQztRQUV4RixJQUFJLDZDQUFxQixDQUFDLE9BQU8sRUFBRTtZQUNqQyxRQUFRO1lBQ1IsV0FBVztZQUNYLFVBQVU7U0FDWCxDQUFDLENBQUM7UUFFSCxJQUFJLG1FQUFnQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTlDLElBQUksdURBQTBCLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUV0RCxJQUFJLDJEQUE0QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFDLElBQUksbURBQXdCLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFFcEUsSUFBSSxtREFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV0QyxPQUFPLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFO1lBQ3ZDLFdBQVcsRUFBRSxxRkFBcUY7WUFDbEcsSUFBSSxFQUFFLGdGQUFnRjtTQUN2RixDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsT0FBTyxDQUFDLCtCQUErQixFQUFFO1lBQy9DLFdBQVcsRUFBRSwyRkFBMkY7WUFDeEcsSUFBSSxFQUFFLHVGQUF1RjtZQUM3RixXQUFXLEVBQUUsSUFBSTtTQUNsQixDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFO1lBQ3RDLFdBQVcsRUFBRSx3R0FBd0c7WUFDckgsSUFBSSxFQUFFLHFFQUFxRTtTQUM1RSxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFO1lBQ3BDLFdBQVcsRUFBRSx5SEFBeUg7WUFDdEksSUFBSSxFQUFFLG1FQUFtRTtZQUN6RSxXQUFXLEVBQUUsSUFBSTtTQUNsQixDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFO1lBQ2pDLFdBQVcsRUFBRSwrTEFBK0w7WUFDNU0sS0FBSyxFQUFFO2dCQUNMLEVBQUUsSUFBSSxFQUFFLG9GQUFvRixFQUFFO2dCQUM5RixFQUFFLElBQUksRUFBRSx1Q0FBdUMsWUFBWSxFQUFFLEVBQUU7Z0JBQy9EO29CQUNFLElBQUksRUFBRSwrQkFBK0IsWUFBWSwrQ0FBK0M7aUJBQ2pHO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCx3RUFBd0U7UUFDeEUsd0VBQXdFO1FBQ3hFLHlFQUF5RTtRQUN6RSxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWxELHVFQUF1RTtRQUN2RSx3RUFBd0U7UUFDeEUsdUVBQXVFO1FBQ3ZFLG1FQUFtRTtRQUNuRSxvREFBb0Q7UUFDcEQsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoQyxPQUFPLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDNUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sQ0FBQyxZQUFZLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNwRCxPQUFPLENBQUMsWUFBWSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDckQsT0FBTyxDQUFDLFlBQVksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7O0FBOUVILG9EQStFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vZGVQcm9qZWN0IH0gZnJvbSAncHJvamVuL2xpYi9qYXZhc2NyaXB0JztcbmltcG9ydCB7IFNvZnR3YXJlRmFjdG9yeUFyY2hpdGVjdHVyZVJ1bGVzIH0gZnJvbSAnLi9Tb2Z0d2FyZUZhY3RvcnlBcmNoaXRlY3R1cmVSdWxlcyc7XG5pbXBvcnQgeyBTb2Z0d2FyZUZhY3RvcnlBdHRlc3RhdGlvbiB9IGZyb20gJy4vU29mdHdhcmVGYWN0b3J5QXR0ZXN0YXRpb24nO1xuaW1wb3J0IHsgU29mdHdhcmVGYWN0b3J5Qm9vdHN0cmFwIH0gZnJvbSAnLi9Tb2Z0d2FyZUZhY3RvcnlCb290c3RyYXAnO1xuaW1wb3J0IHsgU29mdHdhcmVGYWN0b3J5TW9kZWxzIH0gZnJvbSAnLi9Tb2Z0d2FyZUZhY3RvcnlNb2RlbHMnO1xuaW1wb3J0IHsgU29mdHdhcmVGYWN0b3J5T3BlblNwZWNHYXRlcyB9IGZyb20gJy4vU29mdHdhcmVGYWN0b3J5T3BlblNwZWNHYXRlcyc7XG5pbXBvcnQgeyBTb2Z0d2FyZUZhY3RvcnlXb3JrZmxvd3MgfSBmcm9tICcuL1NvZnR3YXJlRmFjdG9yeVdvcmtmbG93cyc7XG5pbXBvcnQgeyBXb3JrZmxvd0FjdGlvblZlcnNpb25zIH0gZnJvbSAnLi9Xb3JrZmxvd0FjdGlvblZlcnNpb25zJztcblxuY29uc3QgREVGQVVMVF9HSVRIVUJfT1dORVIgPSAnbWFjZWRvbi10ZWNobm9sb2dpZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvZnR3YXJlRmFjdG9yeUZpbGVzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgYmFyZSByZXBvIG5hbWUgKGUuZy4gYGV4cGVuc2UtdHJhY2tlcmApLCB1c2VkIHRvIGRlcml2ZSB0aGUgZmFjdG9yeSdzXG4gICAqIG1vZGVsIG5hbWVzIChgPHJlcG9OYW1lPi1mYWN0b3J5YCwgYDxyZXBvTmFtZT4taXNzdWVzYCwgYDxyZXBvTmFtZT4tcHJgLFxuICAgKiBgPHJlcG9OYW1lPi1zaGVsbCpgKSBhbmQgdmF1bHQgbmFtZSAoYDxyZXBvTmFtZT4tc2VjcmV0c2ApLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEdpdEh1YiBvcmcvdXNlciB0aGUgcmVwbyBsaXZlcyBpbi5cbiAgICpcbiAgICogQGRlZmF1bHQgJ21hY2Vkb24tdGVjaG5vbG9naWVzJ1xuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViT3duZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBicmFuY2ggdGhlIGZhY3Rvcnkgb3BlbnMgcHVsbCByZXF1ZXN0cyBhZ2FpbnN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAnbWFpbidcbiAgICovXG4gIHJlYWRvbmx5IGJhc2VCcmFuY2g/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlcyBmb3IgdGhlIHBpbm5lZCBhY3Rpb24gdmVyc2lvbnMgdXNlZCBieSBgdmVyaWZ5LWF0dGVzdGF0aW9uLnltbGAuXG4gICAqL1xuICByZWFkb25seSBhY3Rpb25WZXJzaW9ucz86IFdvcmtmbG93QWN0aW9uVmVyc2lvbnM7XG59XG5cbi8qKlxuICogQmFja3BvcnRzIGV4bWFuJ3Mgc3dhbXAgXCJzb2Z0d2FyZSBmYWN0b3J5XCIgcGF0dGVyblxuICogKG1hY2Vkb24tdGVjaG5vbG9naWVzL2V4bWFuIzEzKSBhcyBnZW5lcmF0ZWQgc2NhZmZvbGRpbmc6IGFcbiAqIGBAc3dhbXAvc29mdHdhcmUtZmFjdG9yeWAgc3RhdGUgbWFjaGluZSB0aGF0IGRyaXZlcyBhIEdpdEh1YiBpc3N1ZSBmcm9tXG4gKiBpbnRha2UgdGhyb3VnaCBhbiBvcGVuZWQgUFIsIGVuZm9yY2luZyBPcGVuU3BlYyB1c2FnZSwgYW4gYXJjaGl0ZWN0dXJlXG4gKiBydWxlIHJlZ2lzdHJ5LCBhbmQgYSBwcmUtUFIgdmVyaWZpY2F0aW9uIGdhdGUgd2hvc2UgYXR0ZXN0YXRpb24gaXNcbiAqIHJlLWNoZWNrZWQgYXQgbWVyZ2UgdGltZS5cbiAqXG4gKiBXaGF0IHN3YW1wIGl0c2VsZiB3b3VsZCBnZW5lcmF0ZSAoZXh0ZW5zaW9uIGRvY3MgcHVsbGVkIHZpYVxuICogYHN3YW1wIGV4dGVuc2lvbiBwdWxsYCwgYC5zd2FtcC55YW1sYCwgdGhlIHZhdWx0LCBhbmQgdGhlIFwic3dhbXAgbWFuYWdlZFxuICogc2VjdGlvblwiIGluIENMQVVERS5tZCkgaXMgZGVsaWJlcmF0ZWx5IE5PVCBoYW5kLXRlbXBsYXRlZCBoZXJlIOKAlCB0aG9zZSBhcmVcbiAqIHByb2R1Y2VkIGJ5IHRoZSByZWFsIGBzd2FtcGAgQ0xJLiBgc3dhbXAgaW5pdGAgaXMgaWRlbXBvdGVudCAoYSBuby1vcCBpZlxuICogdGhlIHJlcG8gaXMgYWxyZWFkeSBpbml0aWFsaXplZCksIHNvIGl0J3Mgd2lyZWQgaW50byB0aGUgcHJvamVjdCdzXG4gKiBgaW5zdGFsbGAvYGluc3RhbGw6Y2lgIHRhc2tzIGFuZCBydW5zIGF1dG9tYXRpY2FsbHkgb24gZXZlcnkgaW5zdGFsbCxcbiAqIGd1YXJkZWQgc28gaXQncyBhIHNpbGVudCBuby1vcCBvbiBhIG1hY2hpbmUgd2l0aG91dCBgc3dhbXBgIG9uIFBBVEggKGUuZy5cbiAqIENJKS4gVGhlIGV4dGVuc2lvbiBwdWxscyAoYXQgdGhlIHZlcnNpb25zIHBpbm5lZCBpbiB0aGUgcmVwbydzXG4gKiBgZXh0ZW5zaW9ucy9tb2RlbHMvdXBzdHJlYW1fZXh0ZW5zaW9ucy5qc29uYCkgYW5kIHZhdWx0IGNyZWF0aW9uIGFyZSBvbmUtdGltZSwgbm90IGlkZW1wb3RlbnRcbiAqIGluIGEgd2F5IHRoYXQncyBzYWZlIHRvIHJlcGVhdCBvbiBldmVyeSBpbnN0YWxsLCBzbyB0aGV5IHN0YXkgaW4gdGhlXG4gKiBgc3dhbXA6Ym9vdHN0cmFwYCB0YXNrIHRoaXMgY29uc3RydWN0IGFkZHMuIE9ubHkgZXhtYW4ncyBvd24gYXV0aG9yZWRcbiAqIGNvbmZpZyAodGhlIGZhY3RvcnkncyBzdGF0ZSBtYWNoaW5lLCB0aGUgYXJjaGl0ZWN0dXJlLXJ1bGUgZW5naW5lLCB0aGVcbiAqIGF0dGVzdGF0aW9uIG1lY2hhbmlzbSwgdGhlIE9wZW5TcGVjIHRhc2stY29tcGxldGlvbiBnYXRlLCB0aGUgbG9ja2ZpbGUtZHJpdmVuXG4gKiBleHRlbnNpb24gcHVsbCwgYW5kIHRoZSAzIHN3YW1wXG4gKiB3b3JrZmxvd3MgdGhhdCB3aXJlIHRoZW0gdG9nZXRoZXIpIGlzIHRlbXBsYXRlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNvZnR3YXJlRmFjdG9yeUZpbGVzIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogTm9kZVByb2plY3QsIG9wdGlvbnM6IFNvZnR3YXJlRmFjdG9yeUZpbGVzT3B0aW9ucykge1xuICAgIGNvbnN0IHsgcmVwb05hbWUsIGFjdGlvblZlcnNpb25zIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGdpdGh1Yk93bmVyID0gb3B0aW9ucy5naXRodWJPd25lciB8fCBERUZBVUxUX0dJVEhVQl9PV05FUjtcbiAgICBjb25zdCBiYXNlQnJhbmNoID0gb3B0aW9ucy5iYXNlQnJhbmNoIHx8ICdtYWluJztcbiAgICBjb25zdCBzZWNyZXRzVmF1bHQgPSBgJHtyZXBvTmFtZX0tc2VjcmV0c2A7XG4gICAgLy8gQSBzaW5nbGUgcmVkaXJlY3Qgb25seTogcHJvamVuJ3MgYnVpbHQtaW4gY3Jvc3MtcGxhdGZvcm0gdGFzayBzaGVsbFxuICAgIC8vIChkYXgpIHJlamVjdHMgYSBjb21tYW5kIHdpdGggbW9yZSB0aGFuIG9uZSByZWRpcmVjdCAoZS5nLiBjb21iaW5pbmdcbiAgICAvLyBgPi9kZXYvbnVsbGAgd2l0aCBgMj4mMWApIHdpdGggXCJNdWx0aXBsZSByZWRpcmVjdHMgYXJlIGN1cnJlbnRseSBub3RcbiAgICAvLyBzdXBwb3J0ZWRcIiDigJQgY29uZmlybWVkIGJ5IGRvZ2Zvb2RpbmcgdGhpcyBjb25zdHJ1Y3Qgb24gdGhpcyB2ZXJ5IHJlcG8uXG4gICAgY29uc3Qgc3dhbXBJbml0U3RlcCA9ICdjb21tYW5kIC12IHN3YW1wID4vZGV2L251bGwgJiYgc3dhbXAgaW5pdCAtLXRvb2wgY2xhdWRlIHx8IHRydWUnO1xuXG4gICAgbmV3IFNvZnR3YXJlRmFjdG9yeU1vZGVscyhwcm9qZWN0LCB7XG4gICAgICByZXBvTmFtZSxcbiAgICAgIGdpdGh1Yk93bmVyLFxuICAgICAgYmFzZUJyYW5jaCxcbiAgICB9KTtcblxuICAgIG5ldyBTb2Z0d2FyZUZhY3RvcnlBcmNoaXRlY3R1cmVSdWxlcyhwcm9qZWN0KTtcblxuICAgIG5ldyBTb2Z0d2FyZUZhY3RvcnlBdHRlc3RhdGlvbihwcm9qZWN0LCB7IHJlcG9OYW1lIH0pO1xuXG4gICAgbmV3IFNvZnR3YXJlRmFjdG9yeU9wZW5TcGVjR2F0ZXMocHJvamVjdCk7XG5cbiAgICBuZXcgU29mdHdhcmVGYWN0b3J5V29ya2Zsb3dzKHByb2plY3QsIHsgcmVwb05hbWUsIGFjdGlvblZlcnNpb25zIH0pO1xuXG4gICAgbmV3IFNvZnR3YXJlRmFjdG9yeUJvb3RzdHJhcChwcm9qZWN0KTtcblxuICAgIHByb2plY3QuYWRkVGFzaygndmFsaWRhdGU6YXJjaGl0ZWN0dXJlJywge1xuICAgICAgZGVzY3JpcHRpb246ICdSdW4gdGhlIGFyY2hpdGVjdHVyZSBydWxlIHJlZ2lzdHJ5IChhcmNoaXRlY3R1cmUtcnVsZXMvcnVsZXMuanNvbikgYWdhaW5zdCB0aGUgcmVwbycsXG4gICAgICBleGVjOiAndHMtbm9kZSAtLXByb2plY3QgYXJjaGl0ZWN0dXJlLXJ1bGVzL3RzY29uZmlnLmpzb24gYXJjaGl0ZWN0dXJlLXJ1bGVzL2NoZWNrLnRzJyxcbiAgICB9KTtcblxuICAgIHByb2plY3QuYWRkVGFzaygnb3BlbnNwZWM6Y2hlY2stdGFza3MtY29tcGxldGUnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0ZhaWwgdW5sZXNzIGV2ZXJ5IHRhc2sgaW4gdGhlIG5hbWVkIE9wZW5TcGVjIGNoYW5nZSBpcyBjb21wbGV0ZSAodXNhZ2U6IC0tIDxjaGFuZ2Utc2x1Zz4pJyxcbiAgICAgIGV4ZWM6ICd0cy1ub2RlIC0tcHJvamVjdCBvcGVuc3BlYy1nYXRlcy90c2NvbmZpZy5qc29uIG9wZW5zcGVjLWdhdGVzL2NoZWNrLXRhc2tzLWNvbXBsZXRlLnRzJyxcbiAgICAgIHJlY2VpdmVBcmdzOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5hZGRUYXNrKCdhdHRlc3RhdGlvbjptYW5pZmVzdCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUHJpbnQgU0hBMjU2IGNoZWNrc3VtcyBvZiB0aGUgZmlsZXMgYSBQUiBhdHRlc3RhdGlvbiBpcyB2ZXJpZmllZCBhZ2FpbnN0IChzZWUgYXR0ZXN0YXRpb24vbWFuaWZlc3QudHMpJyxcbiAgICAgIGV4ZWM6ICd0cy1ub2RlIC0tcHJvamVjdCBhdHRlc3RhdGlvbi90c2NvbmZpZy5qc29uIGF0dGVzdGF0aW9uL21hbmlmZXN0LnRzJyxcbiAgICB9KTtcblxuICAgIHByb2plY3QuYWRkVGFzaygnYXR0ZXN0YXRpb246dmVyaWZ5Jywge1xuICAgICAgZGVzY3JpcHRpb246ICdWZXJpZnkgYSBQUlxcJ3MgZW1iZWRkZWQgYXR0ZXN0YXRpb24tbWFuaWZlc3QgYWdhaW5zdCB0aGUgY3VycmVudCBjaGVja291dCAodXNhZ2U6IC0tIC0tYm9keS1maWxlIDxwYXRoPiAtLWNvbW1pdCA8c2hhPiknLFxuICAgICAgZXhlYzogJ3RzLW5vZGUgLS1wcm9qZWN0IGF0dGVzdGF0aW9uL3RzY29uZmlnLmpzb24gYXR0ZXN0YXRpb24vdmVyaWZ5LnRzJyxcbiAgICAgIHJlY2VpdmVBcmdzOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5hZGRUYXNrKCdzd2FtcDpib290c3RyYXAnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ09uZS10aW1lIHNldHVwOiBwdWxsIHRoZSBzd2FtcCBleHRlbnNpb25zIGF0IHRoZSB2ZXJzaW9ucyBwaW5uZWQgaW4gZXh0ZW5zaW9ucy9tb2RlbHMvdXBzdHJlYW1fZXh0ZW5zaW9ucy5qc29uIGFuZCBjcmVhdGUgdGhlIHNlY3JldHMgdmF1bHQgKHN3YW1wIGluaXQgaXRzZWxmIGFscmVhZHkgcnVucyBvbiBldmVyeSBpbnN0YWxsKScsXG4gICAgICBzdGVwczogW1xuICAgICAgICB7IGV4ZWM6ICd0cy1ub2RlIC0tcHJvamVjdCBzd2FtcC1ib290c3RyYXAvdHNjb25maWcuanNvbiBzd2FtcC1ib290c3RyYXAvcHVsbC1leHRlbnNpb25zLnRzJyB9LFxuICAgICAgICB7IGV4ZWM6IGBzd2FtcCB2YXVsdCBjcmVhdGUgbG9jYWxfZW5jcnlwdGlvbiAke3NlY3JldHNWYXVsdH1gIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBleGVjOiBgZWNobyBcIk5leHQ6IHN3YW1wIHZhdWx0IHB1dCAke3NlY3JldHNWYXVsdH0gR0lUSFVCX1RPS0VOIC0tcmVmcmVzaC1mcm9tICdnaCBhdXRoIHRva2VuJ1wiYCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBgc3dhbXAgaW5pdGAgaXMgc2FmZSB0byByZS1ydW4gKGlkZW1wb3RlbnQgd2hlbiBhbHJlYWR5IGluaXRpYWxpemVkKSxcbiAgICAvLyBzbyBldmVyeSBpbnN0YWxsIGtlZXBzIHRoZSByZXBvIGluaXRpYWxpemVkIHdpdGhvdXQgYSBzZXBhcmF0ZSBtYW51YWxcbiAgICAvLyBzdGVwIOKAlCBpbmNsdWRpbmcgb24gYSBmcmVzaCBjbG9uZSB0aGF0IGhhc24ndCBydW4gc3dhbXA6Ym9vdHN0cmFwIHlldC5cbiAgICBwcm9qZWN0LnBhY2thZ2UuaW5zdGFsbFRhc2suZXhlYyhzd2FtcEluaXRTdGVwKTtcbiAgICBwcm9qZWN0LnBhY2thZ2UuaW5zdGFsbENpVGFzay5leGVjKHN3YW1wSW5pdFN0ZXApO1xuXG4gICAgLy8gTWlycm9ycyB0aGUgcGF0dGVybnMgYHN3YW1wIGluaXRgIGl0c2VsZiB3b3VsZCBhcHBlbmQgdG8gLmdpdGlnbm9yZS5cbiAgICAvLyBwcm9qZW4ncyBJZ25vcmVGaWxlIGZ1bGx5IHJlZ2VuZXJhdGVzIC5naXRpZ25vcmUgZnJvbSBpdHMgb3duIHRyYWNrZWRcbiAgICAvLyBlbnRyaWVzIG9uIGV2ZXJ5IHN5bnRoLCBzbyBhbnl0aGluZyBgc3dhbXAgaW5pdGAgYXBwZW5kcyBvdXQtb2YtYmFuZFxuICAgIC8vIGdldHMgc2lsZW50bHkgd2lwZWQgYnkgdGhlIG5leHQgYG5weCBwcm9qZW5gIHJ1biAoY2F1Z2h0IGJ5IENJJ3NcbiAgICAvLyBzZWxmLW11dGF0aW9uIGNoZWNrKSB1bmxlc3MgaXQncyBhbHNvIGFkZGVkIGhlcmUuXG4gICAgcHJvamVjdC5hZGRHaXRJZ25vcmUoJy5zd2FtcC8nKTtcbiAgICBwcm9qZWN0LmFkZEdpdElnbm9yZSgnLnN3YW1wLXNvdXJjZXMueWFtbCcpO1xuICAgIHByb2plY3QuYWRkR2l0SWdub3JlKCcuY2xhdWRlL3dvcmt0cmVlcy8nKTtcbiAgICBwcm9qZWN0LmFkZEdpdElnbm9yZSgnLmNsYXVkZS9zZXR0aW5ncy5sb2NhbC5qc29uJyk7XG4gICAgcHJvamVjdC5hZGRHaXRJZ25vcmUoJy5jbGF1ZGUvc2NoZWR1bGVkX3Rhc2tzLmxvY2snKTtcbiAgICBwcm9qZWN0LmFkZEdpdElnbm9yZSgnLmNsYXVkZS9zY2hlZHVsZWRfdGFza3MuanNvbicpO1xuICB9XG59XG4iXX0=
|
|
@@ -7,7 +7,7 @@ const javascript_1 = require("projen/lib/javascript");
|
|
|
7
7
|
const utils_1 = require("./utils");
|
|
8
8
|
const WorkflowActionVersions_1 = require("./WorkflowActionVersions");
|
|
9
9
|
class StagingDeployWorkflow extends projen_1.YamlFile {
|
|
10
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.StagingDeployWorkflow", version: "1.
|
|
10
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.StagingDeployWorkflow", version: "1.28.0" };
|
|
11
11
|
constructor(project, options) {
|
|
12
12
|
const packageManager = project.package.packageManager;
|
|
13
13
|
const actionVersions = (0, WorkflowActionVersions_1.resolveActionVersions)(options.actionVersions);
|