@xpertss/projen-types 0.0.0 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/.jsii +1083 -92
  2. package/API.md +7459 -4313
  3. package/README.md +103 -1
  4. package/lib/actions/action-build-workflow.d.ts +17 -0
  5. package/lib/actions/action-build-workflow.js +52 -0
  6. package/lib/actions/action-dogfood-workflow.d.ts +47 -0
  7. package/lib/actions/action-dogfood-workflow.js +84 -0
  8. package/lib/actions/action-sonar-workflow.d.ts +25 -0
  9. package/lib/actions/action-sonar-workflow.js +64 -0
  10. package/lib/actions/github-action-project.d.ts +60 -0
  11. package/lib/actions/github-action-project.js +155 -0
  12. package/lib/cdk/app-runtime-scaffold.js +1 -1
  13. package/lib/cdk/cdk-app-project.js +2 -4
  14. package/lib/cdk/cdk-infra-project.js +1 -1
  15. package/lib/cdk/cdk-typescript-base.js +16 -3
  16. package/lib/cdk/components/ecr-ecs-constructs.js +1 -1
  17. package/lib/cdk/components/edge-networking-constructs.js +1 -1
  18. package/lib/cdk/database-component.js +1 -1
  19. package/lib/cdk/options.d.ts +0 -2
  20. package/lib/cdk/options.js +1 -1
  21. package/lib/common/actions-allowlist-guard.d.ts +37 -0
  22. package/lib/common/actions-allowlist-guard.js +70 -0
  23. package/lib/common/internal-actions.d.ts +10 -0
  24. package/lib/common/internal-actions.js +33 -0
  25. package/lib/common/manual-deploy-workflow.d.ts +0 -2
  26. package/lib/common/manual-deploy-workflow.js +1 -12
  27. package/lib/common/projen-drift-check-workflow.d.ts +36 -0
  28. package/lib/common/projen-drift-check-workflow.js +73 -0
  29. package/lib/common/upgrade-workflow.js +6 -2
  30. package/lib/common/workflow-change-notice-workflow.d.ts +33 -0
  31. package/lib/common/workflow-change-notice-workflow.js +58 -0
  32. package/lib/index.d.ts +8 -0
  33. package/lib/index.js +9 -1
  34. package/lib/java/components/cdk-deploy-hook.js +1 -1
  35. package/lib/java/components/code-index-workflow.js +1 -1
  36. package/lib/java/components/docker-publish.js +1 -1
  37. package/lib/java/components/flyway-migration.js +1 -1
  38. package/lib/java/components/github-packages-publish.js +1 -1
  39. package/lib/java/components/maven-central-publish.js +1 -1
  40. package/lib/java/java-app-project.js +1 -1
  41. package/lib/java/java-library-project.js +1 -1
  42. package/lib/java/java-maven-base.js +13 -4
  43. package/lib/java/java-service-project.js +1 -1
  44. package/package.json +1 -1
  45. package/release-publishing.md +125 -0
  46. package/lib/common/drift-check.d.ts +0 -8
  47. package/lib/common/drift-check.js +0 -18
  48. package/spec/npm-publishing-setup.md +0 -150
  49. package/spec/projen-cdk-spec.md +0 -80
  50. package/spec/projen-java-spec.md +0 -96
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GitHubActionProject = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const projen_1 = require("projen");
6
+ const action_build_workflow_1 = require("./action-build-workflow");
7
+ const action_dogfood_workflow_1 = require("./action-dogfood-workflow");
8
+ const action_sonar_workflow_1 = require("./action-sonar-workflow");
9
+ const actions_allowlist_guard_1 = require("../common/actions-allowlist-guard");
10
+ const constants_1 = require("../common/constants");
11
+ const internal_actions_1 = require("../common/internal-actions");
12
+ const projen_drift_check_workflow_1 = require("../common/projen-drift-check-workflow");
13
+ const workflow_change_notice_workflow_1 = require("../common/workflow-change-notice-workflow");
14
+ // `require('projen/package.json')`/`require('../../package.json')` resolve
15
+ // via Node's normal module resolution, so in a *published* package these
16
+ // read the versions actually installed in the consuming repo's
17
+ // node_modules - exactly the "PROJEN_VERSION of the synth" / "version of
18
+ // this package that scaffolded the repo" the private package.json's
19
+ // devDependencies need to pin (see F010 CI-dependencies section).
20
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
21
+ const PROJEN_VERSION = require('projen/package.json').version;
22
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
23
+ const PROJEN_TYPES_VERSION = require('../../package.json').version;
24
+ // Exact pins, recorded as component constants (AD-001: no latest/moving
25
+ // tag/semver range in anything a generated repo depends on). Upgrading any
26
+ // of these is a reviewed diff of this file.
27
+ const COMMIT_AND_TAG_VERSION = '13.2.1';
28
+ const TS_NODE_VERSION = '10.9.2';
29
+ const TYPESCRIPT_VERSION = '6.0.3';
30
+ function defaultReadmeContents(options) {
31
+ return `# ${options.name}
32
+
33
+ ${options.description ?? ''}
34
+
35
+ ## Usage
36
+
37
+ \`\`\`yaml
38
+ - uses: xpertss/${options.name}@<ref>
39
+ \`\`\`
40
+
41
+ ## Bumping
42
+
43
+ A \`feat:\`/\`fix:\` commit pushed to \`main\` is released automatically: bump,
44
+ tag \`vX.Y.Z\`, GitHub Release. See \`.github/workflows/release.yml\`.
45
+
46
+ ## Trust contract
47
+
48
+ This is a composite (shell) action - no Node/npm at runtime, no Docker. Its
49
+ CI lint gate (\`build.yml\`), dogfood test (\`test-dogfood.yml\`), and Sonar
50
+ scan (\`sonar.yml\`) are scaffolded by \`@xpertss/projen-types\`'
51
+ \`GitHubActionProject\`; only \`action.yml\` and its shell scripts are
52
+ hand-committed.
53
+ `;
54
+ }
55
+ /**
56
+ * Scaffolds the repo lifecycle (AD-001) around a hand-committed, composite
57
+ * (shell) GitHub Action: the `build`/`test-dogfood`/`sonar`/`release`
58
+ * workflows, versioning and release discipline, the F003 verify components,
59
+ * the F009 allowlist guard, and repo boilerplate (`tsconfig.json` for
60
+ * `.projenrc.ts`, a private version-source `package.json`, `.yamllint`,
61
+ * `LICENSE`, and a `README.md` template). The action's own content
62
+ * (`action.yml`, its shell scripts, `test/` fixtures) is authored by hand
63
+ * per the action's own F### spec - this type only lints it.
64
+ */
65
+ class GitHubActionProject extends projen_1.github.GitHubProject {
66
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.GitHubActionProject", version: "0.0.2" };
67
+ buildWorkflow;
68
+ dogfoodWorkflow;
69
+ sonarWorkflow;
70
+ release;
71
+ constructor(options) {
72
+ if (!options.sonarHostUrl) {
73
+ throw new Error('GitHubActionProject requires sonarHostUrl');
74
+ }
75
+ if (!options.dogfood?.scenario || options.dogfood.scenario.length === 0) {
76
+ throw new Error('GitHubActionProject requires dogfood.scenario with at least one step');
77
+ }
78
+ if (!options.dogfood.cleanup || options.dogfood.cleanup.length === 0) {
79
+ throw new Error('GitHubActionProject requires dogfood.cleanup');
80
+ }
81
+ super({
82
+ ...options,
83
+ readme: options.readme ?? { contents: defaultReadmeContents(options) },
84
+ });
85
+ const gh = this.github;
86
+ if (!gh) {
87
+ throw new Error('GitHubActionProject requires GitHub integration to be enabled');
88
+ }
89
+ (0, internal_actions_1.applyInternalActionOverrides)(gh);
90
+ new projen_drift_check_workflow_1.ProjenDriftCheckWorkflow(this, {
91
+ gheTokenSecret: options.gheTokenSecret ?? constants_1.DEFAULT_GHE_TOKEN_SECRET,
92
+ });
93
+ new workflow_change_notice_workflow_1.WorkflowChangeNoticeWorkflow(this);
94
+ new actions_allowlist_guard_1.ActionsAllowlistGuard(this);
95
+ new projen_1.License(this, {
96
+ spdx: options.license ?? 'MIT',
97
+ copyrightOwner: 'xpertss',
98
+ });
99
+ // Wires the default task to run `.projenrc.ts` via ts-node - a bare
100
+ // GitHubProject has no default task that does this on its own. Runs
101
+ // `npx -y -p ts-node -c ...` under the hood; pinning `ts-node`/
102
+ // `typescript` below as exact devDeps means that, after `npm ci`, this
103
+ // resolves from the committed local install instead of the registry.
104
+ new projen_1.typescript.ProjenrcTs(this, { tsconfigFileName: 'tsconfig.json' });
105
+ new projen_1.JsonFile(this, 'package.json', {
106
+ obj: {
107
+ name: options.name,
108
+ version: '0.0.0',
109
+ private: true,
110
+ description: options.description,
111
+ devDependencies: {
112
+ 'projen': PROJEN_VERSION,
113
+ '@xpertss/projen-types': PROJEN_TYPES_VERSION,
114
+ 'commit-and-tag-version': COMMIT_AND_TAG_VERSION,
115
+ 'ts-node': TS_NODE_VERSION,
116
+ 'typescript': TYPESCRIPT_VERSION,
117
+ },
118
+ },
119
+ });
120
+ new projen_1.YamlFile(this, '.yamllint', {
121
+ obj: {
122
+ extends: 'default',
123
+ rules: { 'line-length': { max: 120 } },
124
+ },
125
+ });
126
+ this.buildWorkflow = new action_build_workflow_1.ActionBuildWorkflow(this);
127
+ this.dogfoodWorkflow = new action_dogfood_workflow_1.ActionDogfoodWorkflow(this, options.dogfood);
128
+ this.sonarWorkflow = new action_sonar_workflow_1.ActionSonarWorkflow(this, {
129
+ sonarHostUrl: options.sonarHostUrl,
130
+ sonarTokenSecret: options.sonarTokenSecret,
131
+ sonarPullRequestGate: options.sonarPullRequestGate,
132
+ });
133
+ // `githubRelease` defaults to true, which auto-wires
134
+ // `publishToGitHubReleases` - its `gh release create ... --target
135
+ // $GITHUB_SHA` creates the tag *and* the release together for our
136
+ // continuous (push-to-main) trigger. No separate `publishToGit` call
137
+ // needed (that path only fires for a manual release trigger).
138
+ this.release = new projen_1.release.Release(this, {
139
+ branch: 'main',
140
+ // No build artifact for a composite action (AD-001) - this is only
141
+ // where Release stages its own version/changelog files.
142
+ artifactsDirectory: 'dist',
143
+ tasks: [this.buildWorkflow.task],
144
+ versionFile: 'package.json',
145
+ releasableCommits: projen_1.ReleasableCommits.featuresAndFixes(),
146
+ releaseTrigger: projen_1.release.ReleaseTrigger.continuous(),
147
+ bumpPackage: `commit-and-tag-version@${COMMIT_AND_TAG_VERSION}`,
148
+ releaseWorkflowSetupSteps: [
149
+ { name: 'Install dependencies', run: 'npm ci' },
150
+ ],
151
+ });
152
+ }
153
+ }
154
+ exports.GitHubActionProject = GitHubActionProject;
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0aHViLWFjdGlvbi1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FjdGlvbnMvZ2l0aHViLWFjdGlvbi1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxtQ0FRZ0I7QUFDaEIsbUVBQThEO0FBQzlELHVFQUF3RjtBQUN4RixtRUFBOEQ7QUFDOUQsK0VBQTBFO0FBQzFFLG1EQUErRDtBQUMvRCxpRUFBMEU7QUFDMUUsdUZBQWlGO0FBQ2pGLCtGQUF5RjtBQUV6RiwyRUFBMkU7QUFDM0UseUVBQXlFO0FBQ3pFLCtEQUErRDtBQUMvRCx5RUFBeUU7QUFDekUsb0VBQW9FO0FBQ3BFLGtFQUFrRTtBQUNsRSxpRUFBaUU7QUFDakUsTUFBTSxjQUFjLEdBQVcsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUMsT0FBTyxDQUFDO0FBQ3RFLGlFQUFpRTtBQUNqRSxNQUFNLG9CQUFvQixHQUFXLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUUzRSx3RUFBd0U7QUFDeEUsMkVBQTJFO0FBQzNFLDRDQUE0QztBQUM1QyxNQUFNLHNCQUFzQixHQUFHLFFBQVEsQ0FBQztBQUN4QyxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUM7QUFDakMsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUM7QUFpRG5DLFNBQVMscUJBQXFCLENBQUMsT0FBbUM7SUFDaEUsT0FBTyxLQUFLLE9BQU8sQ0FBQyxJQUFJOztFQUV4QixPQUFPLENBQUMsV0FBVyxJQUFJLEVBQUU7Ozs7O2tCQUtULE9BQU8sQ0FBQyxJQUFJOzs7Ozs7Ozs7Ozs7Ozs7Q0FlN0IsQ0FBQztBQUNGLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLG1CQUFvQixTQUFRLGVBQU0sQ0FBQyxhQUFhOztJQUMzQyxhQUFhLENBQXNCO0lBQ25DLGVBQWUsQ0FBd0I7SUFDdkMsYUFBYSxDQUFzQjtJQUNuQyxPQUFPLENBQWtCO0lBRXpDLFlBQVksT0FBbUM7UUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFFBQVEsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEUsTUFBTSxJQUFJLEtBQUssQ0FDYixzRUFBc0UsQ0FDdkUsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JFLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBRUQsS0FBSyxDQUFDO1lBQ0osR0FBRyxPQUFPO1lBQ1YsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRSxRQUFRLEVBQUUscUJBQXFCLENBQUMsT0FBTyxDQUFDLEVBQUU7U0FDdkUsQ0FBQyxDQUFDO1FBRUgsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN2QixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDUixNQUFNLElBQUksS0FBSyxDQUNiLCtEQUErRCxDQUNoRSxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUEsK0NBQTRCLEVBQUMsRUFBRSxDQUFDLENBQUM7UUFFakMsSUFBSSxzREFBd0IsQ0FBQyxJQUFJLEVBQUU7WUFDakMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjLElBQUksb0NBQXdCO1NBQ25FLENBQUMsQ0FBQztRQUNILElBQUksOERBQTRCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsSUFBSSwrQ0FBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVoQyxJQUFJLGdCQUFPLENBQUMsSUFBSSxFQUFFO1lBQ2hCLElBQUksRUFBRSxPQUFPLENBQUMsT0FBTyxJQUFJLEtBQUs7WUFDOUIsY0FBYyxFQUFFLFNBQVM7U0FDMUIsQ0FBQyxDQUFDO1FBRUgsb0VBQW9FO1FBQ3BFLG9FQUFvRTtRQUNwRSxnRUFBZ0U7UUFDaEUsdUVBQXVFO1FBQ3ZFLHFFQUFxRTtRQUNyRSxJQUFJLG1CQUFVLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFFdkUsSUFBSSxpQkFBUSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDakMsR0FBRyxFQUFFO2dCQUNILElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtnQkFDbEIsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLE9BQU8sRUFBRSxJQUFJO2dCQUNiLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztnQkFDaEMsZUFBZSxFQUFFO29CQUNmLFFBQVEsRUFBRSxjQUFjO29CQUN4Qix1QkFBdUIsRUFBRSxvQkFBb0I7b0JBQzdDLHdCQUF3QixFQUFFLHNCQUFzQjtvQkFDaEQsU0FBUyxFQUFFLGVBQWU7b0JBQzFCLFlBQVksRUFBRSxrQkFBa0I7aUJBQ2pDO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLGlCQUFRLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtZQUM5QixHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxFQUFFLFNBQVM7Z0JBQ2xCLEtBQUssRUFBRSxFQUFFLGFBQWEsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTthQUN2QztTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSwyQ0FBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksK0NBQXFCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4RSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksMkNBQW1CLENBQUMsSUFBSSxFQUFFO1lBQ2pELFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtZQUNsQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsZ0JBQWdCO1lBQzFDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxvQkFBb0I7U0FDbkQsQ0FBQyxDQUFDO1FBRUgscURBQXFEO1FBQ3JELGtFQUFrRTtRQUNsRSxrRUFBa0U7UUFDbEUscUVBQXFFO1FBQ3JFLDhEQUE4RDtRQUM5RCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksZ0JBQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ3ZDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsbUVBQW1FO1lBQ25FLHdEQUF3RDtZQUN4RCxrQkFBa0IsRUFBRSxNQUFNO1lBQzFCLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQ2hDLFdBQVcsRUFBRSxjQUFjO1lBQzNCLGlCQUFpQixFQUFFLDBCQUFpQixDQUFDLGdCQUFnQixFQUFFO1lBQ3ZELGNBQWMsRUFBRSxnQkFBTyxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUU7WUFDbkQsV0FBVyxFQUFFLDBCQUEwQixzQkFBc0IsRUFBRTtZQUMvRCx5QkFBeUIsRUFBRTtnQkFDekIsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRTthQUNoRDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBdEdILGtEQXVHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEpzb25GaWxlLFxuICBMaWNlbnNlLFxuICBSZWxlYXNhYmxlQ29tbWl0cyxcbiAgWWFtbEZpbGUsXG4gIGdpdGh1YixcbiAgcmVsZWFzZSxcbiAgdHlwZXNjcmlwdCxcbn0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IEFjdGlvbkJ1aWxkV29ya2Zsb3cgfSBmcm9tICcuL2FjdGlvbi1idWlsZC13b3JrZmxvdyc7XG5pbXBvcnQgeyBBY3Rpb25Eb2dmb29kT3B0aW9ucywgQWN0aW9uRG9nZm9vZFdvcmtmbG93IH0gZnJvbSAnLi9hY3Rpb24tZG9nZm9vZC13b3JrZmxvdyc7XG5pbXBvcnQgeyBBY3Rpb25Tb25hcldvcmtmbG93IH0gZnJvbSAnLi9hY3Rpb24tc29uYXItd29ya2Zsb3cnO1xuaW1wb3J0IHsgQWN0aW9uc0FsbG93bGlzdEd1YXJkIH0gZnJvbSAnLi4vY29tbW9uL2FjdGlvbnMtYWxsb3dsaXN0LWd1YXJkJztcbmltcG9ydCB7IERFRkFVTFRfR0hFX1RPS0VOX1NFQ1JFVCB9IGZyb20gJy4uL2NvbW1vbi9jb25zdGFudHMnO1xuaW1wb3J0IHsgYXBwbHlJbnRlcm5hbEFjdGlvbk92ZXJyaWRlcyB9IGZyb20gJy4uL2NvbW1vbi9pbnRlcm5hbC1hY3Rpb25zJztcbmltcG9ydCB7IFByb2plbkRyaWZ0Q2hlY2tXb3JrZmxvdyB9IGZyb20gJy4uL2NvbW1vbi9wcm9qZW4tZHJpZnQtY2hlY2std29ya2Zsb3cnO1xuaW1wb3J0IHsgV29ya2Zsb3dDaGFuZ2VOb3RpY2VXb3JrZmxvdyB9IGZyb20gJy4uL2NvbW1vbi93b3JrZmxvdy1jaGFuZ2Utbm90aWNlLXdvcmtmbG93JztcblxuLy8gYHJlcXVpcmUoJ3Byb2plbi9wYWNrYWdlLmpzb24nKWAvYHJlcXVpcmUoJy4uLy4uL3BhY2thZ2UuanNvbicpYCByZXNvbHZlXG4vLyB2aWEgTm9kZSdzIG5vcm1hbCBtb2R1bGUgcmVzb2x1dGlvbiwgc28gaW4gYSAqcHVibGlzaGVkKiBwYWNrYWdlIHRoZXNlXG4vLyByZWFkIHRoZSB2ZXJzaW9ucyBhY3R1YWxseSBpbnN0YWxsZWQgaW4gdGhlIGNvbnN1bWluZyByZXBvJ3Ncbi8vIG5vZGVfbW9kdWxlcyAtIGV4YWN0bHkgdGhlIFwiUFJPSkVOX1ZFUlNJT04gb2YgdGhlIHN5bnRoXCIgLyBcInZlcnNpb24gb2Zcbi8vIHRoaXMgcGFja2FnZSB0aGF0IHNjYWZmb2xkZWQgdGhlIHJlcG9cIiB0aGUgcHJpdmF0ZSBwYWNrYWdlLmpzb24nc1xuLy8gZGV2RGVwZW5kZW5jaWVzIG5lZWQgdG8gcGluIChzZWUgRjAxMCBDSS1kZXBlbmRlbmNpZXMgc2VjdGlvbikuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuY29uc3QgUFJPSkVOX1ZFUlNJT046IHN0cmluZyA9IHJlcXVpcmUoJ3Byb2plbi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbmNvbnN0IFBST0pFTl9UWVBFU19WRVJTSU9OOiBzdHJpbmcgPSByZXF1aXJlKCcuLi8uLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uO1xuXG4vLyBFeGFjdCBwaW5zLCByZWNvcmRlZCBhcyBjb21wb25lbnQgY29uc3RhbnRzIChBRC0wMDE6IG5vIGxhdGVzdC9tb3Zpbmdcbi8vIHRhZy9zZW12ZXIgcmFuZ2UgaW4gYW55dGhpbmcgYSBnZW5lcmF0ZWQgcmVwbyBkZXBlbmRzIG9uKS4gVXBncmFkaW5nIGFueVxuLy8gb2YgdGhlc2UgaXMgYSByZXZpZXdlZCBkaWZmIG9mIHRoaXMgZmlsZS5cbmNvbnN0IENPTU1JVF9BTkRfVEFHX1ZFUlNJT04gPSAnMTMuMi4xJztcbmNvbnN0IFRTX05PREVfVkVSU0lPTiA9ICcxMC45LjInO1xuY29uc3QgVFlQRVNDUklQVF9WRVJTSU9OID0gJzYuMC4zJztcblxuZXhwb3J0IGludGVyZmFjZSBHaXRIdWJBY3Rpb25Qcm9qZWN0T3B0aW9uc1xuICBleHRlbmRzIGdpdGh1Yi5HaXRIdWJQcm9qZWN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBPbmUtbGluZSBkZXNjcmlwdGlvbiBvZiB0aGUgYWN0aW9uLiBVc2VkIGluIHRoZSBkZWZhdWx0IFJFQURNRVxuICAgKiB0ZW1wbGF0ZSBhbmQgcmVjb3JkZWQgaW4gdGhlIHByaXZhdGUgYHBhY2thZ2UuanNvbmAuXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgR2l0SHViIEFjdGlvbnMgc2VjcmV0IGhvbGRpbmcgdGhlIFBBVCB1c2VkIGZvclxuICAgKiBwcm9qZW4tYXV0b21hdGlvbiBQUiBjb21tZW50cyAoRjAwMy9GMDA5KSBhbmQsIHdoZW4gdGhlIGFjdGlvbiBoYXMgYVxuICAgKiBgdG9rZW5gIGlucHV0LCB0aGUgZG9nZm9vZCdzIGludm9jYXRpb24gb2YgaXQuXG4gICAqIEBkZWZhdWx0IFwiUFJPSkVOX0dJVEhVQl9UT0tFTlwiXG4gICAqL1xuICByZWFkb25seSBnaGVUb2tlblNlY3JldD86IHN0cmluZztcblxuICAvKipcbiAgICogVVJMIG9mIHRoZSBvcmcncyBzZWxmLWhvc3RlZCBTb25hclF1YmUgaW5zdGFuY2UuIE1VU1QgYmUgcmVhY2hhYmxlIGZyb21cbiAgICogZ2l0aHViLmNvbS1ob3N0ZWQgKHB1YmxpYykgcnVubmVycyAoQUQtMDAxKS4gUmVxdWlyZWQsIG5vIGRlZmF1bHQ6IGFcbiAgICogZ3Vlc3NlZCBzZXJ2ZXIgaXMgd29yc2UgdGhhbiBhIGxvdWQgZmFpbHVyZS5cbiAgICovXG4gIHJlYWRvbmx5IHNvbmFySG9zdFVybDogc3RyaW5nO1xuXG4gIC8qKiBAZGVmYXVsdCBcIlNPTkFSX1RPS0VOXCIgKi9cbiAgcmVhZG9ubHkgc29uYXJUb2tlblNlY3JldD86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBgc29uYXIueW1sYCBhbHNvIHJ1bnMgb24gYHB1bGxfcmVxdWVzdGAgYXMgYSBwYXNzL2ZhaWwgZ2F0ZS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc29uYXJQdWxsUmVxdWVzdEdhdGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZG9nZm9vZCBzY2VuYXJpbyAoQUQtMDAxKS4gV2hhdCBmaXh0dXJlIHN0YXRlLCB3aGF0IHRvIGFzc2VydCwgYW5kXG4gICAqIGhvdyB0byBjbGVhbiB1cCBhcmUgc3BlY2lmaWVkIGJ5IHRoZSBhY3Rpb24ncyBvd24gRiMjIyBzcGVjIC0gdGhlXG4gICAqIGhpZ2hlc3QtcmlzayBiZWhhdmlvciBvZiB0aGF0IGFjdGlvbi4gUmVxdWlyZWQ6IGEgZGVmYXVsdCBuby1vcFxuICAgKiBkb2dmb29kIHdvdWxkIHNpbGVudGx5IGhvbGxvdyBvdXQgYSBsb2FkLWJlYXJpbmcgQUQtMDAxIHdvcmtmbG93LlxuICAgKi9cbiAgcmVhZG9ubHkgZG9nZm9vZDogQWN0aW9uRG9nZm9vZE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFNQRFggaWRlbnRpZmllciBmb3IgdGhlIGdlbmVyYXRlZCBgTElDRU5TRWAuXG4gICAqIEBkZWZhdWx0IFwiTUlUXCJcbiAgICovXG4gIHJlYWRvbmx5IGxpY2Vuc2U/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRSZWFkbWVDb250ZW50cyhvcHRpb25zOiBHaXRIdWJBY3Rpb25Qcm9qZWN0T3B0aW9ucyk6IHN0cmluZyB7XG4gIHJldHVybiBgIyAke29wdGlvbnMubmFtZX1cblxuJHtvcHRpb25zLmRlc2NyaXB0aW9uID8/ICcnfVxuXG4jIyBVc2FnZVxuXG5cXGBcXGBcXGB5YW1sXG4tIHVzZXM6IHhwZXJ0c3MvJHtvcHRpb25zLm5hbWV9QDxyZWY+XG5cXGBcXGBcXGBcblxuIyMgQnVtcGluZ1xuXG5BIFxcYGZlYXQ6XFxgL1xcYGZpeDpcXGAgY29tbWl0IHB1c2hlZCB0byBcXGBtYWluXFxgIGlzIHJlbGVhc2VkIGF1dG9tYXRpY2FsbHk6IGJ1bXAsXG50YWcgXFxgdlguWS5aXFxgLCBHaXRIdWIgUmVsZWFzZS4gU2VlIFxcYC5naXRodWIvd29ya2Zsb3dzL3JlbGVhc2UueW1sXFxgLlxuXG4jIyBUcnVzdCBjb250cmFjdFxuXG5UaGlzIGlzIGEgY29tcG9zaXRlIChzaGVsbCkgYWN0aW9uIC0gbm8gTm9kZS9ucG0gYXQgcnVudGltZSwgbm8gRG9ja2VyLiBJdHNcbkNJIGxpbnQgZ2F0ZSAoXFxgYnVpbGQueW1sXFxgKSwgZG9nZm9vZCB0ZXN0IChcXGB0ZXN0LWRvZ2Zvb2QueW1sXFxgKSwgYW5kIFNvbmFyXG5zY2FuIChcXGBzb25hci55bWxcXGApIGFyZSBzY2FmZm9sZGVkIGJ5IFxcYEB4cGVydHNzL3Byb2plbi10eXBlc1xcYCdcblxcYEdpdEh1YkFjdGlvblByb2plY3RcXGA7IG9ubHkgXFxgYWN0aW9uLnltbFxcYCBhbmQgaXRzIHNoZWxsIHNjcmlwdHMgYXJlXG5oYW5kLWNvbW1pdHRlZC5cbmA7XG59XG5cbi8qKlxuICogU2NhZmZvbGRzIHRoZSByZXBvIGxpZmVjeWNsZSAoQUQtMDAxKSBhcm91bmQgYSBoYW5kLWNvbW1pdHRlZCwgY29tcG9zaXRlXG4gKiAoc2hlbGwpIEdpdEh1YiBBY3Rpb246IHRoZSBgYnVpbGRgL2B0ZXN0LWRvZ2Zvb2RgL2Bzb25hcmAvYHJlbGVhc2VgXG4gKiB3b3JrZmxvd3MsIHZlcnNpb25pbmcgYW5kIHJlbGVhc2UgZGlzY2lwbGluZSwgdGhlIEYwMDMgdmVyaWZ5IGNvbXBvbmVudHMsXG4gKiB0aGUgRjAwOSBhbGxvd2xpc3QgZ3VhcmQsIGFuZCByZXBvIGJvaWxlcnBsYXRlIChgdHNjb25maWcuanNvbmAgZm9yXG4gKiBgLnByb2plbnJjLnRzYCwgYSBwcml2YXRlIHZlcnNpb24tc291cmNlIGBwYWNrYWdlLmpzb25gLCBgLnlhbWxsaW50YCxcbiAqIGBMSUNFTlNFYCwgYW5kIGEgYFJFQURNRS5tZGAgdGVtcGxhdGUpLiBUaGUgYWN0aW9uJ3Mgb3duIGNvbnRlbnRcbiAqIChgYWN0aW9uLnltbGAsIGl0cyBzaGVsbCBzY3JpcHRzLCBgdGVzdC9gIGZpeHR1cmVzKSBpcyBhdXRob3JlZCBieSBoYW5kXG4gKiBwZXIgdGhlIGFjdGlvbidzIG93biBGIyMjIHNwZWMgLSB0aGlzIHR5cGUgb25seSBsaW50cyBpdC5cbiAqL1xuZXhwb3J0IGNsYXNzIEdpdEh1YkFjdGlvblByb2plY3QgZXh0ZW5kcyBnaXRodWIuR2l0SHViUHJvamVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBidWlsZFdvcmtmbG93OiBBY3Rpb25CdWlsZFdvcmtmbG93O1xuICBwdWJsaWMgcmVhZG9ubHkgZG9nZm9vZFdvcmtmbG93OiBBY3Rpb25Eb2dmb29kV29ya2Zsb3c7XG4gIHB1YmxpYyByZWFkb25seSBzb25hcldvcmtmbG93OiBBY3Rpb25Tb25hcldvcmtmbG93O1xuICBwdWJsaWMgcmVhZG9ubHkgcmVsZWFzZTogcmVsZWFzZS5SZWxlYXNlO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEdpdEh1YkFjdGlvblByb2plY3RPcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zLnNvbmFySG9zdFVybCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdHaXRIdWJBY3Rpb25Qcm9qZWN0IHJlcXVpcmVzIHNvbmFySG9zdFVybCcpO1xuICAgIH1cbiAgICBpZiAoIW9wdGlvbnMuZG9nZm9vZD8uc2NlbmFyaW8gfHwgb3B0aW9ucy5kb2dmb29kLnNjZW5hcmlvLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnR2l0SHViQWN0aW9uUHJvamVjdCByZXF1aXJlcyBkb2dmb29kLnNjZW5hcmlvIHdpdGggYXQgbGVhc3Qgb25lIHN0ZXAnLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCFvcHRpb25zLmRvZ2Zvb2QuY2xlYW51cCB8fCBvcHRpb25zLmRvZ2Zvb2QuY2xlYW51cC5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignR2l0SHViQWN0aW9uUHJvamVjdCByZXF1aXJlcyBkb2dmb29kLmNsZWFudXAnKTtcbiAgICB9XG5cbiAgICBzdXBlcih7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgcmVhZG1lOiBvcHRpb25zLnJlYWRtZSA/PyB7IGNvbnRlbnRzOiBkZWZhdWx0UmVhZG1lQ29udGVudHMob3B0aW9ucykgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGdoID0gdGhpcy5naXRodWI7XG4gICAgaWYgKCFnaCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnR2l0SHViQWN0aW9uUHJvamVjdCByZXF1aXJlcyBHaXRIdWIgaW50ZWdyYXRpb24gdG8gYmUgZW5hYmxlZCcsXG4gICAgICApO1xuICAgIH1cbiAgICBhcHBseUludGVybmFsQWN0aW9uT3ZlcnJpZGVzKGdoKTtcblxuICAgIG5ldyBQcm9qZW5EcmlmdENoZWNrV29ya2Zsb3codGhpcywge1xuICAgICAgZ2hlVG9rZW5TZWNyZXQ6IG9wdGlvbnMuZ2hlVG9rZW5TZWNyZXQgPz8gREVGQVVMVF9HSEVfVE9LRU5fU0VDUkVULFxuICAgIH0pO1xuICAgIG5ldyBXb3JrZmxvd0NoYW5nZU5vdGljZVdvcmtmbG93KHRoaXMpO1xuICAgIG5ldyBBY3Rpb25zQWxsb3dsaXN0R3VhcmQodGhpcyk7XG5cbiAgICBuZXcgTGljZW5zZSh0aGlzLCB7XG4gICAgICBzcGR4OiBvcHRpb25zLmxpY2Vuc2UgPz8gJ01JVCcsXG4gICAgICBjb3B5cmlnaHRPd25lcjogJ3hwZXJ0c3MnLFxuICAgIH0pO1xuXG4gICAgLy8gV2lyZXMgdGhlIGRlZmF1bHQgdGFzayB0byBydW4gYC5wcm9qZW5yYy50c2AgdmlhIHRzLW5vZGUgLSBhIGJhcmVcbiAgICAvLyBHaXRIdWJQcm9qZWN0IGhhcyBubyBkZWZhdWx0IHRhc2sgdGhhdCBkb2VzIHRoaXMgb24gaXRzIG93bi4gUnVuc1xuICAgIC8vIGBucHggLXkgLXAgdHMtbm9kZSAtYyAuLi5gIHVuZGVyIHRoZSBob29kOyBwaW5uaW5nIGB0cy1ub2RlYC9cbiAgICAvLyBgdHlwZXNjcmlwdGAgYmVsb3cgYXMgZXhhY3QgZGV2RGVwcyBtZWFucyB0aGF0LCBhZnRlciBgbnBtIGNpYCwgdGhpc1xuICAgIC8vIHJlc29sdmVzIGZyb20gdGhlIGNvbW1pdHRlZCBsb2NhbCBpbnN0YWxsIGluc3RlYWQgb2YgdGhlIHJlZ2lzdHJ5LlxuICAgIG5ldyB0eXBlc2NyaXB0LlByb2plbnJjVHModGhpcywgeyB0c2NvbmZpZ0ZpbGVOYW1lOiAndHNjb25maWcuanNvbicgfSk7XG5cbiAgICBuZXcgSnNvbkZpbGUodGhpcywgJ3BhY2thZ2UuanNvbicsIHtcbiAgICAgIG9iajoge1xuICAgICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICAgIHZlcnNpb246ICcwLjAuMCcsXG4gICAgICAgIHByaXZhdGU6IHRydWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb25zLmRlc2NyaXB0aW9uLFxuICAgICAgICBkZXZEZXBlbmRlbmNpZXM6IHtcbiAgICAgICAgICAncHJvamVuJzogUFJPSkVOX1ZFUlNJT04sXG4gICAgICAgICAgJ0B4cGVydHNzL3Byb2plbi10eXBlcyc6IFBST0pFTl9UWVBFU19WRVJTSU9OLFxuICAgICAgICAgICdjb21taXQtYW5kLXRhZy12ZXJzaW9uJzogQ09NTUlUX0FORF9UQUdfVkVSU0lPTixcbiAgICAgICAgICAndHMtbm9kZSc6IFRTX05PREVfVkVSU0lPTixcbiAgICAgICAgICAndHlwZXNjcmlwdCc6IFRZUEVTQ1JJUFRfVkVSU0lPTixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBuZXcgWWFtbEZpbGUodGhpcywgJy55YW1sbGludCcsIHtcbiAgICAgIG9iajoge1xuICAgICAgICBleHRlbmRzOiAnZGVmYXVsdCcsXG4gICAgICAgIHJ1bGVzOiB7ICdsaW5lLWxlbmd0aCc6IHsgbWF4OiAxMjAgfSB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuYnVpbGRXb3JrZmxvdyA9IG5ldyBBY3Rpb25CdWlsZFdvcmtmbG93KHRoaXMpO1xuXG4gICAgdGhpcy5kb2dmb29kV29ya2Zsb3cgPSBuZXcgQWN0aW9uRG9nZm9vZFdvcmtmbG93KHRoaXMsIG9wdGlvbnMuZG9nZm9vZCk7XG5cbiAgICB0aGlzLnNvbmFyV29ya2Zsb3cgPSBuZXcgQWN0aW9uU29uYXJXb3JrZmxvdyh0aGlzLCB7XG4gICAgICBzb25hckhvc3RVcmw6IG9wdGlvbnMuc29uYXJIb3N0VXJsLFxuICAgICAgc29uYXJUb2tlblNlY3JldDogb3B0aW9ucy5zb25hclRva2VuU2VjcmV0LFxuICAgICAgc29uYXJQdWxsUmVxdWVzdEdhdGU6IG9wdGlvbnMuc29uYXJQdWxsUmVxdWVzdEdhdGUsXG4gICAgfSk7XG5cbiAgICAvLyBgZ2l0aHViUmVsZWFzZWAgZGVmYXVsdHMgdG8gdHJ1ZSwgd2hpY2ggYXV0by13aXJlc1xuICAgIC8vIGBwdWJsaXNoVG9HaXRIdWJSZWxlYXNlc2AgLSBpdHMgYGdoIHJlbGVhc2UgY3JlYXRlIC4uLiAtLXRhcmdldFxuICAgIC8vICRHSVRIVUJfU0hBYCBjcmVhdGVzIHRoZSB0YWcgKmFuZCogdGhlIHJlbGVhc2UgdG9nZXRoZXIgZm9yIG91clxuICAgIC8vIGNvbnRpbnVvdXMgKHB1c2gtdG8tbWFpbikgdHJpZ2dlci4gTm8gc2VwYXJhdGUgYHB1Ymxpc2hUb0dpdGAgY2FsbFxuICAgIC8vIG5lZWRlZCAodGhhdCBwYXRoIG9ubHkgZmlyZXMgZm9yIGEgbWFudWFsIHJlbGVhc2UgdHJpZ2dlcikuXG4gICAgdGhpcy5yZWxlYXNlID0gbmV3IHJlbGVhc2UuUmVsZWFzZSh0aGlzLCB7XG4gICAgICBicmFuY2g6ICdtYWluJyxcbiAgICAgIC8vIE5vIGJ1aWxkIGFydGlmYWN0IGZvciBhIGNvbXBvc2l0ZSBhY3Rpb24gKEFELTAwMSkgLSB0aGlzIGlzIG9ubHlcbiAgICAgIC8vIHdoZXJlIFJlbGVhc2Ugc3RhZ2VzIGl0cyBvd24gdmVyc2lvbi9jaGFuZ2Vsb2cgZmlsZXMuXG4gICAgICBhcnRpZmFjdHNEaXJlY3Rvcnk6ICdkaXN0JyxcbiAgICAgIHRhc2tzOiBbdGhpcy5idWlsZFdvcmtmbG93LnRhc2tdLFxuICAgICAgdmVyc2lvbkZpbGU6ICdwYWNrYWdlLmpzb24nLFxuICAgICAgcmVsZWFzYWJsZUNvbW1pdHM6IFJlbGVhc2FibGVDb21taXRzLmZlYXR1cmVzQW5kRml4ZXMoKSxcbiAgICAgIHJlbGVhc2VUcmlnZ2VyOiByZWxlYXNlLlJlbGVhc2VUcmlnZ2VyLmNvbnRpbnVvdXMoKSxcbiAgICAgIGJ1bXBQYWNrYWdlOiBgY29tbWl0LWFuZC10YWctdmVyc2lvbkAke0NPTU1JVF9BTkRfVEFHX1ZFUlNJT059YCxcbiAgICAgIHJlbGVhc2VXb3JrZmxvd1NldHVwU3RlcHM6IFtcbiAgICAgICAgeyBuYW1lOiAnSW5zdGFsbCBkZXBlbmRlbmNpZXMnLCBydW46ICducG0gY2knIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -8,7 +8,7 @@ const projen_1 = require("projen");
8
8
  * layered on top of `CdkTypescriptProject`'s pure-infra scaffold.
9
9
  */
10
10
  class AppRuntimeScaffold extends projen_1.Component {
11
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.AppRuntimeScaffold", version: "0.0.0" };
11
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.AppRuntimeScaffold", version: "0.0.2" };
12
12
  constructor(project, appEntryPoint = 'src/app.ts') {
13
13
  super(project, 'AppRuntimeScaffold');
14
14
  const app = new projen_1.SourceCode(project, appEntryPoint);
@@ -6,14 +6,13 @@ const projen_1 = require("projen");
6
6
  const app_runtime_scaffold_1 = require("./app-runtime-scaffold");
7
7
  const cdk_infra_project_1 = require("./cdk-infra-project");
8
8
  const database_component_1 = require("./database-component");
9
- const drift_check_1 = require("../common/drift-check");
10
9
  /**
11
10
  * Full TypeScript service application running behind API Gateway (or
12
11
  * similar), with the infra to support it - `CdkInfraProject` plus
13
12
  * application source, a database, and an app-level build/test workflow.
14
13
  */
15
14
  class CdkAppProject extends cdk_infra_project_1.CdkInfraProject {
16
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.CdkAppProject", version: "0.0.0" };
15
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.CdkAppProject", version: "0.0.2" };
17
16
  constructor(options) {
18
17
  super(options);
19
18
  new app_runtime_scaffold_1.AppRuntimeScaffold(this, options.appEntryPoint ?? 'src/app.ts');
@@ -26,10 +25,9 @@ class CdkAppProject extends cdk_infra_project_1.CdkInfraProject {
26
25
  task: this.testTask,
27
26
  triggers: { pullRequest: {}, workflowDispatch: {} },
28
27
  permissions: { contents: projen_1.github.workflows.JobPermission.READ },
29
- postBuildSteps: (0, drift_check_1.driftCheckSteps)(),
30
28
  });
31
29
  }
32
30
  }
33
31
  }
34
32
  exports.CdkAppProject = CdkAppProject;
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWFwcC1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Nkay9jZGstYXBwLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLG1DQUFnQztBQUNoQyxpRUFBNEQ7QUFDNUQsMkRBQXNEO0FBQ3RELDZEQUF5RDtBQUV6RCx1REFBd0Q7QUFFeEQ7Ozs7R0FJRztBQUNILE1BQWEsYUFBYyxTQUFRLG1DQUFlOztJQUNoRCxZQUFZLE9BQTZCO1FBQ3ZDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLElBQUkseUNBQWtCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxhQUFhLElBQUksWUFBWSxDQUFDLENBQUM7UUFDcEUsSUFBSSxzQ0FBaUIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTlDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDdkIsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNQLElBQUksZUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUU7Z0JBQzFCLElBQUksRUFBRSxXQUFXO2dCQUNqQixLQUFLLEVBQUUsV0FBVztnQkFDbEIsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUNuQixRQUFRLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsRUFBRTtnQkFDbkQsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLGVBQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRTtnQkFDOUQsY0FBYyxFQUFFLElBQUEsNkJBQWUsR0FBRTthQUNsQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs7QUFsQkgsc0NBbUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2l0aHViIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IEFwcFJ1bnRpbWVTY2FmZm9sZCB9IGZyb20gJy4vYXBwLXJ1bnRpbWUtc2NhZmZvbGQnO1xuaW1wb3J0IHsgQ2RrSW5mcmFQcm9qZWN0IH0gZnJvbSAnLi9jZGstaW5mcmEtcHJvamVjdCc7XG5pbXBvcnQgeyBEYXRhYmFzZUNvbXBvbmVudCB9IGZyb20gJy4vZGF0YWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IENka0FwcFByb2plY3RPcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zJztcbmltcG9ydCB7IGRyaWZ0Q2hlY2tTdGVwcyB9IGZyb20gJy4uL2NvbW1vbi9kcmlmdC1jaGVjayc7XG5cbi8qKlxuICogRnVsbCBUeXBlU2NyaXB0IHNlcnZpY2UgYXBwbGljYXRpb24gcnVubmluZyBiZWhpbmQgQVBJIEdhdGV3YXkgKG9yXG4gKiBzaW1pbGFyKSwgd2l0aCB0aGUgaW5mcmEgdG8gc3VwcG9ydCBpdCAtIGBDZGtJbmZyYVByb2plY3RgIHBsdXNcbiAqIGFwcGxpY2F0aW9uIHNvdXJjZSwgYSBkYXRhYmFzZSwgYW5kIGFuIGFwcC1sZXZlbCBidWlsZC90ZXN0IHdvcmtmbG93LlxuICovXG5leHBvcnQgY2xhc3MgQ2RrQXBwUHJvamVjdCBleHRlbmRzIENka0luZnJhUHJvamVjdCB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IENka0FwcFByb2plY3RPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICBuZXcgQXBwUnVudGltZVNjYWZmb2xkKHRoaXMsIG9wdGlvbnMuYXBwRW50cnlQb2ludCA/PyAnc3JjL2FwcC50cycpO1xuICAgIG5ldyBEYXRhYmFzZUNvbXBvbmVudCh0aGlzLCBvcHRpb25zLmRhdGFiYXNlKTtcblxuICAgIGNvbnN0IGdoID0gdGhpcy5naXRodWI7XG4gICAgaWYgKGdoKSB7XG4gICAgICBuZXcgZ2l0aHViLlRhc2tXb3JrZmxvdyhnaCwge1xuICAgICAgICBuYW1lOiAnYXBwLWJ1aWxkJyxcbiAgICAgICAgam9iSWQ6ICdhcHAtYnVpbGQnLFxuICAgICAgICB0YXNrOiB0aGlzLnRlc3RUYXNrLFxuICAgICAgICB0cmlnZ2VyczogeyBwdWxsUmVxdWVzdDoge30sIHdvcmtmbG93RGlzcGF0Y2g6IHt9IH0sXG4gICAgICAgIHBlcm1pc3Npb25zOiB7IGNvbnRlbnRzOiBnaXRodWIud29ya2Zsb3dzLkpvYlBlcm1pc3Npb24uUkVBRCB9LFxuICAgICAgICBwb3N0QnVpbGRTdGVwczogZHJpZnRDaGVja1N0ZXBzKCksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWFwcC1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Nkay9jZGstYXBwLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLG1DQUFnQztBQUNoQyxpRUFBNEQ7QUFDNUQsMkRBQXNEO0FBQ3RELDZEQUF5RDtBQUd6RDs7OztHQUlHO0FBQ0gsTUFBYSxhQUFjLFNBQVEsbUNBQWU7O0lBQ2hELFlBQVksT0FBNkI7UUFDdkMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSx5Q0FBa0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLGFBQWEsSUFBSSxZQUFZLENBQUMsQ0FBQztRQUNwRSxJQUFJLHNDQUFpQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFOUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN2QixJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ1AsSUFBSSxlQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRTtnQkFDMUIsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLEtBQUssRUFBRSxXQUFXO2dCQUNsQixJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ25CLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFO2dCQUNuRCxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsZUFBTSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFO2FBQy9ELENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOztBQWpCSCxzQ0FrQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnaXRodWIgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgQXBwUnVudGltZVNjYWZmb2xkIH0gZnJvbSAnLi9hcHAtcnVudGltZS1zY2FmZm9sZCc7XG5pbXBvcnQgeyBDZGtJbmZyYVByb2plY3QgfSBmcm9tICcuL2Nkay1pbmZyYS1wcm9qZWN0JztcbmltcG9ydCB7IERhdGFiYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhYmFzZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2RrQXBwUHJvamVjdE9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMnO1xuXG4vKipcbiAqIEZ1bGwgVHlwZVNjcmlwdCBzZXJ2aWNlIGFwcGxpY2F0aW9uIHJ1bm5pbmcgYmVoaW5kIEFQSSBHYXRld2F5IChvclxuICogc2ltaWxhciksIHdpdGggdGhlIGluZnJhIHRvIHN1cHBvcnQgaXQgLSBgQ2RrSW5mcmFQcm9qZWN0YCBwbHVzXG4gKiBhcHBsaWNhdGlvbiBzb3VyY2UsIGEgZGF0YWJhc2UsIGFuZCBhbiBhcHAtbGV2ZWwgYnVpbGQvdGVzdCB3b3JrZmxvdy5cbiAqL1xuZXhwb3J0IGNsYXNzIENka0FwcFByb2plY3QgZXh0ZW5kcyBDZGtJbmZyYVByb2plY3Qge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDZGtBcHBQcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgbmV3IEFwcFJ1bnRpbWVTY2FmZm9sZCh0aGlzLCBvcHRpb25zLmFwcEVudHJ5UG9pbnQgPz8gJ3NyYy9hcHAudHMnKTtcbiAgICBuZXcgRGF0YWJhc2VDb21wb25lbnQodGhpcywgb3B0aW9ucy5kYXRhYmFzZSk7XG5cbiAgICBjb25zdCBnaCA9IHRoaXMuZ2l0aHViO1xuICAgIGlmIChnaCkge1xuICAgICAgbmV3IGdpdGh1Yi5UYXNrV29ya2Zsb3coZ2gsIHtcbiAgICAgICAgbmFtZTogJ2FwcC1idWlsZCcsXG4gICAgICAgIGpvYklkOiAnYXBwLWJ1aWxkJyxcbiAgICAgICAgdGFzazogdGhpcy50ZXN0VGFzayxcbiAgICAgICAgdHJpZ2dlcnM6IHsgcHVsbFJlcXVlc3Q6IHt9LCB3b3JrZmxvd0Rpc3BhdGNoOiB7fSB9LFxuICAgICAgICBwZXJtaXNzaW9uczogeyBjb250ZW50czogZ2l0aHViLndvcmtmbG93cy5Kb2JQZXJtaXNzaW9uLlJFQUQgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -11,7 +11,7 @@ const edge_networking_constructs_1 = require("./components/edge-networking-const
11
11
  * externally-built images). Reference example: SimulcastAVDelivery.
12
12
  */
13
13
  class CdkInfraProject extends cdk_typescript_base_1.CdkTypescriptProject {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.CdkInfraProject", version: "0.0.0" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.CdkInfraProject", version: "0.0.2" };
15
15
  constructor(options) {
16
16
  super(options);
17
17
  if (options.ecrEcs?.enabled) {
@@ -3,8 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CdkTypescriptProject = void 0;
4
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
5
  const projen_1 = require("projen");
6
+ const actions_allowlist_guard_1 = require("../common/actions-allowlist-guard");
6
7
  const constants_1 = require("../common/constants");
8
+ const internal_actions_1 = require("../common/internal-actions");
7
9
  const manual_deploy_workflow_1 = require("../common/manual-deploy-workflow");
10
+ const projen_drift_check_workflow_1 = require("../common/projen-drift-check-workflow");
11
+ const workflow_change_notice_workflow_1 = require("../common/workflow-change-notice-workflow");
8
12
  /**
9
13
  * Shared CDK + TypeScript foundation for `CdkInfraProject` and
10
14
  * `CdkAppProject`: standard app structure (via `AwsCdkTypeScriptApp`,
@@ -13,7 +17,7 @@ const manual_deploy_workflow_1 = require("../common/manual-deploy-workflow");
13
17
  * `ManualDeployWorkflow` when `environments` is provided.
14
18
  */
15
19
  class CdkTypescriptProject extends projen_1.awscdk.AwsCdkTypeScriptApp {
16
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.CdkTypescriptProject", version: "0.0.0" };
20
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.CdkTypescriptProject", version: "0.0.2" };
17
21
  constructor(options) {
18
22
  super({
19
23
  name: options.name,
@@ -27,10 +31,19 @@ class CdkTypescriptProject extends projen_1.awscdk.AwsCdkTypeScriptApp {
27
31
  }),
28
32
  });
29
33
  this.addDevDeps('esbuild');
34
+ const gh = this.github;
35
+ if (!gh) {
36
+ throw new Error('CdkTypescriptProject requires GitHub integration to be enabled');
37
+ }
38
+ (0, internal_actions_1.applyInternalActionOverrides)(gh);
39
+ new projen_drift_check_workflow_1.ProjenDriftCheckWorkflow(this, {
40
+ gheTokenSecret: options.gheTokenSecret ?? constants_1.DEFAULT_GHE_TOKEN_SECRET,
41
+ });
42
+ new workflow_change_notice_workflow_1.WorkflowChangeNoticeWorkflow(this);
43
+ new actions_allowlist_guard_1.ActionsAllowlistGuard(this);
30
44
  if (options.environments && options.environments.length > 0) {
31
45
  new manual_deploy_workflow_1.ManualDeployWorkflow(this, {
32
46
  environments: options.environments,
33
- slackWebhookSecret: options.slackWebhookSecret,
34
47
  deploySteps: (env) => [
35
48
  {
36
49
  name: 'Install',
@@ -50,4 +63,4 @@ class CdkTypescriptProject extends projen_1.awscdk.AwsCdkTypeScriptApp {
50
63
  }
51
64
  }
52
65
  exports.CdkTypescriptProject = CdkTypescriptProject;
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXR5cGVzY3JpcHQtYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jZGsvY2RrLXR5cGVzY3JpcHQtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsbUNBQXdDO0FBRXhDLG1EQUErRDtBQUUvRCw2RUFBd0U7QUFNeEU7Ozs7OztHQU1HO0FBQ0gsTUFBYSxvQkFBcUIsU0FBUSxlQUFNLENBQUMsbUJBQW1COztJQUNsRSxZQUFZLE9BQW9DO1FBQzlDLEtBQUssQ0FBQztZQUNKLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtZQUNsQixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsSUFBSSxTQUFTO1lBQzNDLG9CQUFvQixFQUFFLE1BQU07WUFDNUIsVUFBVSxFQUFFLElBQUk7WUFDaEIsc0VBQXNFO1lBQ3RFLG9CQUFvQixFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRTtZQUM3QyxpQkFBaUIsRUFBRSxlQUFNLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLENBQUM7Z0JBQ2xFLE1BQU0sRUFBRSxPQUFPLENBQUMsY0FBYyxJQUFJLG9DQUF3QjthQUMzRCxDQUFDO1NBQ0gsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUzQixJQUFJLE9BQU8sQ0FBQyxZQUFZLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUQsSUFBSSw2Q0FBb0IsQ0FBQyxJQUFJLEVBQUU7Z0JBQzdCLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtnQkFDbEMsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLGtCQUFrQjtnQkFDOUMsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztvQkFDcEI7d0JBQ0UsSUFBSSxFQUFFLFNBQVM7d0JBQ2YsR0FBRyxFQUFFLFFBQVE7cUJBQ2Q7b0JBQ0Q7d0JBQ0UsSUFBSSxFQUFFLGVBQWUsR0FBRyxDQUFDLElBQUksR0FBRzt3QkFDaEMsR0FBRyxFQUFFLHVFQUF1RSxHQUFHLENBQUMsSUFBSSxFQUFFO3dCQUN0RixHQUFHLEVBQUU7NEJBQ0gsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7NEJBQ2hFLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3lCQUMxRDtxQkFDRjtpQkFDRjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOztBQXBDSCxvREFxQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhd3NjZGssIGdpdGh1YiB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBDb21tb25DZGtPcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zJztcbmltcG9ydCB7IERFRkFVTFRfR0hFX1RPS0VOX1NFQ1JFVCB9IGZyb20gJy4uL2NvbW1vbi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnRPcHRpb25zIH0gZnJvbSAnLi4vY29tbW9uL2Vudmlyb25tZW50LW9wdGlvbnMnO1xuaW1wb3J0IHsgTWFudWFsRGVwbG95V29ya2Zsb3cgfSBmcm9tICcuLi9jb21tb24vbWFudWFsLWRlcGxveS13b3JrZmxvdyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrVHlwZXNjcmlwdFByb2plY3RPcHRpb25zIGV4dGVuZHMgQ29tbW9uQ2RrT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGVudmlyb25tZW50cz86IChzdHJpbmcgfCBFbnZpcm9ubWVudE9wdGlvbnMpW107XG59XG5cbi8qKlxuICogU2hhcmVkIENESyArIFR5cGVTY3JpcHQgZm91bmRhdGlvbiBmb3IgYENka0luZnJhUHJvamVjdGAgYW5kXG4gKiBgQ2RrQXBwUHJvamVjdGA6IHN0YW5kYXJkIGFwcCBzdHJ1Y3R1cmUgKHZpYSBgQXdzQ2RrVHlwZVNjcmlwdEFwcGAsXG4gKiBgY2RrLmpzb25gLCBgY2RrIHN5bnRoYC9gY2RrIGRpZmZgIHRhc2tzKSwgYSBQUi1jaGVjayBidWlsZCB0aGF0IGhhcmQtZmFpbHNcbiAqIG9uIHByb2plbiBkcmlmdCAocmF0aGVyIHRoYW4gc2VsZi1tdXRhdGluZyksIGFuZCBhbiBvcHRpb25hbFxuICogYE1hbnVhbERlcGxveVdvcmtmbG93YCB3aGVuIGBlbnZpcm9ubWVudHNgIGlzIHByb3ZpZGVkLlxuICovXG5leHBvcnQgY2xhc3MgQ2RrVHlwZXNjcmlwdFByb2plY3QgZXh0ZW5kcyBhd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcCB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IENka1R5cGVzY3JpcHRQcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgIGNka1ZlcnNpb246IG9wdGlvbnMuY2RrVmVyc2lvbiA/PyAnMi4xODkuMScsXG4gICAgICBkZWZhdWx0UmVsZWFzZUJyYW5jaDogJ21haW4nLFxuICAgICAgc2FtcGxlQ29kZTogdHJ1ZSxcbiAgICAgIC8vIEZhaWwgUFIgY2hlY2tzIG9uIGRyaWZ0IGluc3RlYWQgb2YgYXV0by1jb21taXR0aW5nIHByb2plbidzIG91dHB1dC5cbiAgICAgIGJ1aWxkV29ya2Zsb3dPcHRpb25zOiB7IG11dGFibGVCdWlsZDogZmFsc2UgfSxcbiAgICAgIHByb2plbkNyZWRlbnRpYWxzOiBnaXRodWIuR2l0aHViQ3JlZGVudGlhbHMuZnJvbVBlcnNvbmFsQWNjZXNzVG9rZW4oe1xuICAgICAgICBzZWNyZXQ6IG9wdGlvbnMuZ2hlVG9rZW5TZWNyZXQgPz8gREVGQVVMVF9HSEVfVE9LRU5fU0VDUkVULFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZERldkRlcHMoJ2VzYnVpbGQnKTtcblxuICAgIGlmIChvcHRpb25zLmVudmlyb25tZW50cyAmJiBvcHRpb25zLmVudmlyb25tZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBuZXcgTWFudWFsRGVwbG95V29ya2Zsb3codGhpcywge1xuICAgICAgICBlbnZpcm9ubWVudHM6IG9wdGlvbnMuZW52aXJvbm1lbnRzLFxuICAgICAgICBzbGFja1dlYmhvb2tTZWNyZXQ6IG9wdGlvbnMuc2xhY2tXZWJob29rU2VjcmV0LFxuICAgICAgICBkZXBsb3lTdGVwczogKGVudikgPT4gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsJyxcbiAgICAgICAgICAgIHJ1bjogJ25wbSBjaScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBgY2RrIGRlcGxveSAoJHtlbnYubmFtZX0pYCxcbiAgICAgICAgICAgIHJ1bjogYG5weCBjZGsgZGVwbG95IC0tYWxsIC0tcmVxdWlyZS1hcHByb3ZhbCBuZXZlciAtLWNvbnRleHQgZW52aXJvbm1lbnQ9JHtlbnYubmFtZX1gLFxuICAgICAgICAgICAgZW52OiB7XG4gICAgICAgICAgICAgIC4uLihlbnYuYWNjb3VudElkID8geyBDREtfREVGQVVMVF9BQ0NPVU5UOiBlbnYuYWNjb3VudElkIH0gOiB7fSksXG4gICAgICAgICAgICAgIC4uLihlbnYucmVnaW9uID8geyBDREtfREVGQVVMVF9SRUdJT046IGVudi5yZWdpb24gfSA6IHt9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXR5cGVzY3JpcHQtYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jZGsvY2RrLXR5cGVzY3JpcHQtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsbUNBQXdDO0FBRXhDLCtFQUEwRTtBQUMxRSxtREFBK0Q7QUFFL0QsaUVBQTBFO0FBQzFFLDZFQUF3RTtBQUN4RSx1RkFBaUY7QUFDakYsK0ZBQXlGO0FBTXpGOzs7Ozs7R0FNRztBQUNILE1BQWEsb0JBQXFCLFNBQVEsZUFBTSxDQUFDLG1CQUFtQjs7SUFDbEUsWUFBWSxPQUFvQztRQUM5QyxLQUFLLENBQUM7WUFDSixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7WUFDbEIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLElBQUksU0FBUztZQUMzQyxvQkFBb0IsRUFBRSxNQUFNO1lBQzVCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLHNFQUFzRTtZQUN0RSxvQkFBb0IsRUFBRSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUU7WUFDN0MsaUJBQWlCLEVBQUUsZUFBTSxDQUFDLGlCQUFpQixDQUFDLHVCQUF1QixDQUFDO2dCQUNsRSxNQUFNLEVBQUUsT0FBTyxDQUFDLGNBQWMsSUFBSSxvQ0FBd0I7YUFDM0QsQ0FBQztTQUNILENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFM0IsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN2QixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDUixNQUFNLElBQUksS0FBSyxDQUNiLGdFQUFnRSxDQUNqRSxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUEsK0NBQTRCLEVBQUMsRUFBRSxDQUFDLENBQUM7UUFFakMsSUFBSSxzREFBd0IsQ0FBQyxJQUFJLEVBQUU7WUFDakMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjLElBQUksb0NBQXdCO1NBQ25FLENBQUMsQ0FBQztRQUNILElBQUksOERBQTRCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsSUFBSSwrQ0FBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVoQyxJQUFJLE9BQU8sQ0FBQyxZQUFZLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUQsSUFBSSw2Q0FBb0IsQ0FBQyxJQUFJLEVBQUU7Z0JBQzdCLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtnQkFDbEMsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztvQkFDcEI7d0JBQ0UsSUFBSSxFQUFFLFNBQVM7d0JBQ2YsR0FBRyxFQUFFLFFBQVE7cUJBQ2Q7b0JBQ0Q7d0JBQ0UsSUFBSSxFQUFFLGVBQWUsR0FBRyxDQUFDLElBQUksR0FBRzt3QkFDaEMsR0FBRyxFQUFFLHVFQUF1RSxHQUFHLENBQUMsSUFBSSxFQUFFO3dCQUN0RixHQUFHLEVBQUU7NEJBQ0gsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7NEJBQ2hFLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3lCQUMxRDtxQkFDRjtpQkFDRjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOztBQWpESCxvREFrREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhd3NjZGssIGdpdGh1YiB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBDb21tb25DZGtPcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zJztcbmltcG9ydCB7IEFjdGlvbnNBbGxvd2xpc3RHdWFyZCB9IGZyb20gJy4uL2NvbW1vbi9hY3Rpb25zLWFsbG93bGlzdC1ndWFyZCc7XG5pbXBvcnQgeyBERUZBVUxUX0dIRV9UT0tFTl9TRUNSRVQgfSBmcm9tICcuLi9jb21tb24vY29uc3RhbnRzJztcbmltcG9ydCB7IEVudmlyb25tZW50T3B0aW9ucyB9IGZyb20gJy4uL2NvbW1vbi9lbnZpcm9ubWVudC1vcHRpb25zJztcbmltcG9ydCB7IGFwcGx5SW50ZXJuYWxBY3Rpb25PdmVycmlkZXMgfSBmcm9tICcuLi9jb21tb24vaW50ZXJuYWwtYWN0aW9ucyc7XG5pbXBvcnQgeyBNYW51YWxEZXBsb3lXb3JrZmxvdyB9IGZyb20gJy4uL2NvbW1vbi9tYW51YWwtZGVwbG95LXdvcmtmbG93JztcbmltcG9ydCB7IFByb2plbkRyaWZ0Q2hlY2tXb3JrZmxvdyB9IGZyb20gJy4uL2NvbW1vbi9wcm9qZW4tZHJpZnQtY2hlY2std29ya2Zsb3cnO1xuaW1wb3J0IHsgV29ya2Zsb3dDaGFuZ2VOb3RpY2VXb3JrZmxvdyB9IGZyb20gJy4uL2NvbW1vbi93b3JrZmxvdy1jaGFuZ2Utbm90aWNlLXdvcmtmbG93JztcblxuZXhwb3J0IGludGVyZmFjZSBDZGtUeXBlc2NyaXB0UHJvamVjdE9wdGlvbnMgZXh0ZW5kcyBDb21tb25DZGtPcHRpb25zIHtcbiAgcmVhZG9ubHkgZW52aXJvbm1lbnRzPzogKHN0cmluZyB8IEVudmlyb25tZW50T3B0aW9ucylbXTtcbn1cblxuLyoqXG4gKiBTaGFyZWQgQ0RLICsgVHlwZVNjcmlwdCBmb3VuZGF0aW9uIGZvciBgQ2RrSW5mcmFQcm9qZWN0YCBhbmRcbiAqIGBDZGtBcHBQcm9qZWN0YDogc3RhbmRhcmQgYXBwIHN0cnVjdHVyZSAodmlhIGBBd3NDZGtUeXBlU2NyaXB0QXBwYCxcbiAqIGBjZGsuanNvbmAsIGBjZGsgc3ludGhgL2BjZGsgZGlmZmAgdGFza3MpLCBhIFBSLWNoZWNrIGJ1aWxkIHRoYXQgaGFyZC1mYWlsc1xuICogb24gcHJvamVuIGRyaWZ0IChyYXRoZXIgdGhhbiBzZWxmLW11dGF0aW5nKSwgYW5kIGFuIG9wdGlvbmFsXG4gKiBgTWFudWFsRGVwbG95V29ya2Zsb3dgIHdoZW4gYGVudmlyb25tZW50c2AgaXMgcHJvdmlkZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBDZGtUeXBlc2NyaXB0UHJvamVjdCBleHRlbmRzIGF3c2Nkay5Bd3NDZGtUeXBlU2NyaXB0QXBwIHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogQ2RrVHlwZXNjcmlwdFByb2plY3RPcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgY2RrVmVyc2lvbjogb3B0aW9ucy5jZGtWZXJzaW9uID8/ICcyLjE4OS4xJyxcbiAgICAgIGRlZmF1bHRSZWxlYXNlQnJhbmNoOiAnbWFpbicsXG4gICAgICBzYW1wbGVDb2RlOiB0cnVlLFxuICAgICAgLy8gRmFpbCBQUiBjaGVja3Mgb24gZHJpZnQgaW5zdGVhZCBvZiBhdXRvLWNvbW1pdHRpbmcgcHJvamVuJ3Mgb3V0cHV0LlxuICAgICAgYnVpbGRXb3JrZmxvd09wdGlvbnM6IHsgbXV0YWJsZUJ1aWxkOiBmYWxzZSB9LFxuICAgICAgcHJvamVuQ3JlZGVudGlhbHM6IGdpdGh1Yi5HaXRodWJDcmVkZW50aWFscy5mcm9tUGVyc29uYWxBY2Nlc3NUb2tlbih7XG4gICAgICAgIHNlY3JldDogb3B0aW9ucy5naGVUb2tlblNlY3JldCA/PyBERUZBVUxUX0dIRV9UT0tFTl9TRUNSRVQsXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkRGV2RGVwcygnZXNidWlsZCcpO1xuXG4gICAgY29uc3QgZ2ggPSB0aGlzLmdpdGh1YjtcbiAgICBpZiAoIWdoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDZGtUeXBlc2NyaXB0UHJvamVjdCByZXF1aXJlcyBHaXRIdWIgaW50ZWdyYXRpb24gdG8gYmUgZW5hYmxlZCcsXG4gICAgICApO1xuICAgIH1cbiAgICBhcHBseUludGVybmFsQWN0aW9uT3ZlcnJpZGVzKGdoKTtcblxuICAgIG5ldyBQcm9qZW5EcmlmdENoZWNrV29ya2Zsb3codGhpcywge1xuICAgICAgZ2hlVG9rZW5TZWNyZXQ6IG9wdGlvbnMuZ2hlVG9rZW5TZWNyZXQgPz8gREVGQVVMVF9HSEVfVE9LRU5fU0VDUkVULFxuICAgIH0pO1xuICAgIG5ldyBXb3JrZmxvd0NoYW5nZU5vdGljZVdvcmtmbG93KHRoaXMpO1xuICAgIG5ldyBBY3Rpb25zQWxsb3dsaXN0R3VhcmQodGhpcyk7XG5cbiAgICBpZiAob3B0aW9ucy5lbnZpcm9ubWVudHMgJiYgb3B0aW9ucy5lbnZpcm9ubWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgbmV3IE1hbnVhbERlcGxveVdvcmtmbG93KHRoaXMsIHtcbiAgICAgICAgZW52aXJvbm1lbnRzOiBvcHRpb25zLmVudmlyb25tZW50cyxcbiAgICAgICAgZGVwbG95U3RlcHM6IChlbnYpID0+IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnSW5zdGFsbCcsXG4gICAgICAgICAgICBydW46ICducG0gY2knLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogYGNkayBkZXBsb3kgKCR7ZW52Lm5hbWV9KWAsXG4gICAgICAgICAgICBydW46IGBucHggY2RrIGRlcGxveSAtLWFsbCAtLXJlcXVpcmUtYXBwcm92YWwgbmV2ZXIgLS1jb250ZXh0IGVudmlyb25tZW50PSR7ZW52Lm5hbWV9YCxcbiAgICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgICAuLi4oZW52LmFjY291bnRJZCA/IHsgQ0RLX0RFRkFVTFRfQUNDT1VOVDogZW52LmFjY291bnRJZCB9IDoge30pLFxuICAgICAgICAgICAgICAuLi4oZW52LnJlZ2lvbiA/IHsgQ0RLX0RFRkFVTFRfUkVHSU9OOiBlbnYucmVnaW9uIH0gOiB7fSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -10,7 +10,7 @@ const projen_1 = require("projen");
10
10
  * built from this project's own source (app projects).
11
11
  */
12
12
  class EcrEcsConstructs extends projen_1.Component {
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.EcrEcsConstructs", version: "0.0.0" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.EcrEcsConstructs", version: "0.0.2" };
14
14
  constructor(project, options = {}) {
15
15
  super(project, 'EcrEcsConstructs');
16
16
  const externalImageSource = options.externalImageSource ?? true;
@@ -42,7 +42,7 @@ const HELPERS = {
42
42
  * to whichever `edgeResources` the consuming project type opts into.
43
43
  */
44
44
  class EdgeNetworkingConstructs extends projen_1.Component {
45
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.EdgeNetworkingConstructs", version: "0.0.0" };
45
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.EdgeNetworkingConstructs", version: "0.0.2" };
46
46
  constructor(project, resources) {
47
47
  super(project, 'EdgeNetworkingConstructs');
48
48
  if (resources.length === 0) {
@@ -10,7 +10,7 @@ const projen_1 = require("projen");
10
10
  * the consuming team to wire up; no opinionated default is imposed.
11
11
  */
12
12
  class DatabaseComponent extends projen_1.Component {
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.DatabaseComponent", version: "0.0.0" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.DatabaseComponent", version: "0.0.2" };
14
14
  constructor(project, options = {}) {
15
15
  super(project, 'DatabaseComponent');
16
16
  const engine = options.engine ?? 'postgres';
@@ -17,8 +17,6 @@ export interface CommonCdkOptions {
17
17
  readonly cdkVersion?: string;
18
18
  /** @default "PROJEN_GITHUB_TOKEN" */
19
19
  readonly gheTokenSecret?: string;
20
- /** GitHub secret holding a Slack webhook URL for deploy notifications. */
21
- readonly slackWebhookSecret?: string;
22
20
  }
23
21
  export interface CdkInfraProjectOptions extends CommonCdkOptions {
24
22
  /** Deploy targets for the manual-dispatch deploy workflow, e.g. ["dev", "stage", "prod"]. */
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jZGsvb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW52aXJvbm1lbnRPcHRpb25zIH0gZnJvbSAnLi4vY29tbW9uL2Vudmlyb25tZW50LW9wdGlvbnMnO1xuXG5leHBvcnQgdHlwZSBFZGdlUmVzb3VyY2UgPVxuICB8ICdjbG91ZGZyb250J1xuICB8ICdyb3V0ZTUzJ1xuICB8ICdhcGlnYXRld2F5J1xuICB8ICdjb2duaXRvJ1xuICB8ICdzcXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVjckVjc09wdGlvbnMge1xuICAvKiogQGRlZmF1bHQgZmFsc2UgKi9cbiAgcmVhZG9ubHkgZW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIEVDUyBzZXJ2aWNlIHN0YW5kcyB1cCBhbiBleHRlcm5hbGx5LWJ1aWx0IGltYWdlIChpbmZyYS1vbmx5KVxuICAgKiByYXRoZXIgdGhhbiBvbmUgYnVpbHQgZnJvbSB0aGlzIHByb2plY3QncyBvd24gc291cmNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBleHRlcm5hbEltYWdlU291cmNlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21tb25DZGtPcHRpb25zIHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKiBAZGVmYXVsdCBcIjIuMTg5LjFcIiAqL1xuICByZWFkb25seSBjZGtWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKiBAZGVmYXVsdCBcIlBST0pFTl9HSVRIVUJfVE9LRU5cIiAqL1xuICByZWFkb25seSBnaGVUb2tlblNlY3JldD86IHN0cmluZztcblxuICAvKiogR2l0SHViIHNlY3JldCBob2xkaW5nIGEgU2xhY2sgd2ViaG9vayBVUkwgZm9yIGRlcGxveSBub3RpZmljYXRpb25zLiAqL1xuICByZWFkb25seSBzbGFja1dlYmhvb2tTZWNyZXQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrSW5mcmFQcm9qZWN0T3B0aW9ucyBleHRlbmRzIENvbW1vbkNka09wdGlvbnMge1xuICAvKiogRGVwbG95IHRhcmdldHMgZm9yIHRoZSBtYW51YWwtZGlzcGF0Y2ggZGVwbG95IHdvcmtmbG93LCBlLmcuIFtcImRldlwiLCBcInN0YWdlXCIsIFwicHJvZFwiXS4gKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnRzOiAoc3RyaW5nIHwgRW52aXJvbm1lbnRPcHRpb25zKVtdO1xuXG4gIHJlYWRvbmx5IGVjckVjcz86IEVjckVjc09wdGlvbnM7XG5cbiAgcmVhZG9ubHkgZWRnZVJlc291cmNlcz86IEVkZ2VSZXNvdXJjZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlT3B0aW9ucyB7XG4gIC8qKiBAZGVmYXVsdCBcInBvc3RncmVzXCIgKi9cbiAgcmVhZG9ubHkgZW5naW5lPzogJ3Bvc3RncmVzJyB8ICdteXNxbCcgfCAnZHluYW1vZGInO1xuXG4gIC8qKiBNaWdyYXRpb24gdG9vbCB0byB3aXJlIHVwLCBlLmcuIFwiZmx5d2F5XCIsIFwibGlxdWliYXNlXCIsIFwicHJpc21hXCIuIExlZnQgcGx1Z2dhYmxlIC0gbm8gZGVmYXVsdC4gKi9cbiAgcmVhZG9ubHkgbWlncmF0aW9uVG9vbD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDZGtBcHBQcm9qZWN0T3B0aW9ucyBleHRlbmRzIENka0luZnJhUHJvamVjdE9wdGlvbnMge1xuICByZWFkb25seSBkYXRhYmFzZT86IERhdGFiYXNlT3B0aW9ucztcblxuICAvKiogQGRlZmF1bHQgXCJzcmMvYXBwLnRzXCIgKi9cbiAgcmVhZG9ubHkgYXBwRW50cnlQb2ludD86IHN0cmluZztcbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jZGsvb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW52aXJvbm1lbnRPcHRpb25zIH0gZnJvbSAnLi4vY29tbW9uL2Vudmlyb25tZW50LW9wdGlvbnMnO1xuXG5leHBvcnQgdHlwZSBFZGdlUmVzb3VyY2UgPVxuICB8ICdjbG91ZGZyb250J1xuICB8ICdyb3V0ZTUzJ1xuICB8ICdhcGlnYXRld2F5J1xuICB8ICdjb2duaXRvJ1xuICB8ICdzcXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVjckVjc09wdGlvbnMge1xuICAvKiogQGRlZmF1bHQgZmFsc2UgKi9cbiAgcmVhZG9ubHkgZW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIEVDUyBzZXJ2aWNlIHN0YW5kcyB1cCBhbiBleHRlcm5hbGx5LWJ1aWx0IGltYWdlIChpbmZyYS1vbmx5KVxuICAgKiByYXRoZXIgdGhhbiBvbmUgYnVpbHQgZnJvbSB0aGlzIHByb2plY3QncyBvd24gc291cmNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBleHRlcm5hbEltYWdlU291cmNlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21tb25DZGtPcHRpb25zIHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKiBAZGVmYXVsdCBcIjIuMTg5LjFcIiAqL1xuICByZWFkb25seSBjZGtWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKiBAZGVmYXVsdCBcIlBST0pFTl9HSVRIVUJfVE9LRU5cIiAqL1xuICByZWFkb25seSBnaGVUb2tlblNlY3JldD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDZGtJbmZyYVByb2plY3RPcHRpb25zIGV4dGVuZHMgQ29tbW9uQ2RrT3B0aW9ucyB7XG4gIC8qKiBEZXBsb3kgdGFyZ2V0cyBmb3IgdGhlIG1hbnVhbC1kaXNwYXRjaCBkZXBsb3kgd29ya2Zsb3csIGUuZy4gW1wiZGV2XCIsIFwic3RhZ2VcIiwgXCJwcm9kXCJdLiAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudHM6IChzdHJpbmcgfCBFbnZpcm9ubWVudE9wdGlvbnMpW107XG5cbiAgcmVhZG9ubHkgZWNyRWNzPzogRWNyRWNzT3B0aW9ucztcblxuICByZWFkb25seSBlZGdlUmVzb3VyY2VzPzogRWRnZVJlc291cmNlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VPcHRpb25zIHtcbiAgLyoqIEBkZWZhdWx0IFwicG9zdGdyZXNcIiAqL1xuICByZWFkb25seSBlbmdpbmU/OiAncG9zdGdyZXMnIHwgJ215c3FsJyB8ICdkeW5hbW9kYic7XG5cbiAgLyoqIE1pZ3JhdGlvbiB0b29sIHRvIHdpcmUgdXAsIGUuZy4gXCJmbHl3YXlcIiwgXCJsaXF1aWJhc2VcIiwgXCJwcmlzbWFcIi4gTGVmdCBwbHVnZ2FibGUgLSBubyBkZWZhdWx0LiAqL1xuICByZWFkb25seSBtaWdyYXRpb25Ub29sPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENka0FwcFByb2plY3RPcHRpb25zIGV4dGVuZHMgQ2RrSW5mcmFQcm9qZWN0T3B0aW9ucyB7XG4gIHJlYWRvbmx5IGRhdGFiYXNlPzogRGF0YWJhc2VPcHRpb25zO1xuXG4gIC8qKiBAZGVmYXVsdCBcInNyYy9hcHAudHNcIiAqL1xuICByZWFkb25seSBhcHBFbnRyeVBvaW50Pzogc3RyaW5nO1xufVxuIl19
@@ -0,0 +1,37 @@
1
+ import { Component, github } from 'projen';
2
+ /**
3
+ * Blocking, tamper-proof PR check that stops a disallowed GitHub Action
4
+ * reference from ever (re)appearing in a repo's workflow or composite-action
5
+ * files.
6
+ *
7
+ * Runs on `pull_request_target` so it always executes the copy of this
8
+ * workflow committed on the base branch - a PR cannot edit this file to
9
+ * disable or weaken the check. It checks out and executes nothing from the
10
+ * PR; it only reads the PR head's file content via the GitHub API. Because
11
+ * `pull_request_target` runs with the base repo's token even for
12
+ * fork-originated PRs, the failure comment posts reliably.
13
+ *
14
+ * It performs a flat, unconditional scan of the PR's head ref (no
15
+ * base-vs-head comparison): fetch the content of every GitHub workflow and
16
+ * composite-action file, extract every `uses:` value, and fail if any does
17
+ * not start with one of the three trusted namespaces from AD-001
18
+ * (`actions/`, `docker/`, `xpertss/`). The single
19
+ * exemption is a local same-repo reference (`uses: .` or
20
+ * `uses: ./.github/actions/<name>`) - the repo's own hand-committed action,
21
+ * to which the org policy's "allow select actions" setting does not apply.
22
+ */
23
+ export interface ActionsAllowlistGuardOptions {
24
+ /**
25
+ * GitHub secret holding a token with permission to comment on PRs, used
26
+ * for the failure comment. The check still fails without it, so fork PRs -
27
+ * which get no secrets - are only missing the extra comment.
28
+ * @default "PROJEN_GITHUB_TOKEN"
29
+ */
30
+ readonly gheTokenSecret?: string;
31
+ /** @default "actions-allowlist-guard" */
32
+ readonly workflowName?: string;
33
+ }
34
+ export declare class ActionsAllowlistGuard extends Component {
35
+ readonly workflow: github.GithubWorkflow;
36
+ constructor(scope: github.GitHubProject, options?: ActionsAllowlistGuardOptions);
37
+ }
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ActionsAllowlistGuard = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const projen_1 = require("projen");
6
+ const constants_1 = require("./constants");
7
+ class ActionsAllowlistGuard extends projen_1.Component {
8
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.ActionsAllowlistGuard", version: "0.0.2" };
9
+ workflow;
10
+ constructor(scope, options = {}) {
11
+ super(scope, 'ActionsAllowlistGuard');
12
+ const gh = scope.github;
13
+ if (!gh) {
14
+ throw new Error('ActionsAllowlistGuard requires GitHub integration to be enabled');
15
+ }
16
+ const gheTokenSecret = options.gheTokenSecret ?? constants_1.DEFAULT_GHE_TOKEN_SECRET;
17
+ this.workflow = new projen_1.github.GithubWorkflow(gh, options.workflowName ?? 'actions-allowlist-guard');
18
+ this.workflow.on({ pullRequestTarget: {} });
19
+ this.workflow.addJob('check', {
20
+ runsOn: ['ubuntu-latest'],
21
+ permissions: {
22
+ contents: projen_1.github.workflows.JobPermission.READ,
23
+ pullRequests: projen_1.github.workflows.JobPermission.WRITE,
24
+ },
25
+ env: { GH_TOKEN: `\${{ secrets.${gheTokenSecret} }}` },
26
+ steps: [
27
+ {
28
+ name: 'Enforce action allow-list',
29
+ run: `set -uo pipefail
30
+ head_sha="\${{ github.event.pull_request.head.sha }}"
31
+ pr_number="\${{ github.event.number }}"
32
+ repo="\${GITHUB_REPOSITORY}"
33
+ # All files at the PR head (recursive tree), narrowed to workflow and
34
+ # composite-action files.
35
+ files="$(gh api "repos/$repo/git/trees/$head_sha?recursive=1" --jq '.tree[] | select(.type=="blob") | .path' | grep -E '^\\.github/(workflows/[^/]+\\.(yml|yaml)|actions/[^/]+/action\\.(yml|yaml))$' || true)"
36
+ violations=()
37
+ while IFS= read -r path; do
38
+ [ -z "$path" ] && continue
39
+ content="$(gh api "repos/$repo/contents/$path?ref=$head_sha" --jq -r '.content' 2>/dev/null | base64 -d 2>/dev/null || true)"
40
+ lineno=0
41
+ while IFS= read -r line; do
42
+ lineno=$((lineno + 1))
43
+ value="$(printf '%s\\n' "$line" | sed -n 's/^[[:space:]]*uses:[[:space:]]*//p' | tr -d '\\\"')"
44
+ [ -z "$value" ] && continue
45
+ case "$value" in
46
+ actions/*|docker/*|xpertss/*|.|./*) ;;
47
+ *) violations+=(" - $path:$lineno — uses: $value") ;;
48
+ esac
49
+ done <<< "$content"
50
+ done <<< "$files"
51
+ if [ "\${#violations[@]}" -gt 0 ]; then
52
+ {
53
+ echo "❌ Disallowed GitHub Action reference"
54
+ echo ""
55
+ echo "This PR references an action outside the allow-list:"
56
+ echo ""
57
+ printf '%s\\n' "\${violations[@]}"
58
+ echo ""
59
+ echo "Org policy trusts only actions/*, docker/*, and xpertss/*. Use an equivalent internal action, or ask its maintainers to add one."
60
+ } | gh pr comment "$pr_number" --body-file - || echo "::warning::could not post PR comment (fork PR or missing token)"
61
+ exit 1
62
+ fi
63
+ `,
64
+ },
65
+ ],
66
+ });
67
+ }
68
+ }
69
+ exports.ActionsAllowlistGuard = ActionsAllowlistGuard;
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy1hbGxvd2xpc3QtZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbW9uL2FjdGlvbnMtYWxsb3dsaXN0LWd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxtQ0FBMkM7QUFDM0MsMkNBQXVEO0FBb0N2RCxNQUFhLHFCQUFzQixTQUFRLGtCQUFTOztJQUNsQyxRQUFRLENBQXdCO0lBRWhELFlBQ0UsS0FBMkIsRUFDM0IsVUFBd0MsRUFBRTtRQUUxQyxLQUFLLENBQUMsS0FBSyxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFFdEMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUN4QixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDUixNQUFNLElBQUksS0FBSyxDQUNiLGlFQUFpRSxDQUNsRSxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sY0FBYyxHQUNsQixPQUFPLENBQUMsY0FBYyxJQUFJLG9DQUF3QixDQUFDO1FBRXJELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxlQUFNLENBQUMsY0FBYyxDQUN2QyxFQUFFLEVBQ0YsT0FBTyxDQUFDLFlBQVksSUFBSSx5QkFBeUIsQ0FDbEQsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDNUIsTUFBTSxFQUFFLENBQUMsZUFBZSxDQUFDO1lBQ3pCLFdBQVcsRUFBRTtnQkFDWCxRQUFRLEVBQUUsZUFBTSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSTtnQkFDN0MsWUFBWSxFQUFFLGVBQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUs7YUFDbkQ7WUFDRCxHQUFHLEVBQUUsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLGNBQWMsS0FBSyxFQUFFO1lBQ3RELEtBQUssRUFBRTtnQkFDTDtvQkFDRSxJQUFJLEVBQUUsMkJBQTJCO29CQUNqQyxHQUFHLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FrQ2Q7aUJBQ1E7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBeEVILHNEQXlFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZ2l0aHViIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IERFRkFVTFRfR0hFX1RPS0VOX1NFQ1JFVCB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuLyoqXG4gKiBCbG9ja2luZywgdGFtcGVyLXByb29mIFBSIGNoZWNrIHRoYXQgc3RvcHMgYSBkaXNhbGxvd2VkIEdpdEh1YiBBY3Rpb25cbiAqIHJlZmVyZW5jZSBmcm9tIGV2ZXIgKHJlKWFwcGVhcmluZyBpbiBhIHJlcG8ncyB3b3JrZmxvdyBvciBjb21wb3NpdGUtYWN0aW9uXG4gKiBmaWxlcy5cbiAqXG4gKiBSdW5zIG9uIGBwdWxsX3JlcXVlc3RfdGFyZ2V0YCBzbyBpdCBhbHdheXMgZXhlY3V0ZXMgdGhlIGNvcHkgb2YgdGhpc1xuICogd29ya2Zsb3cgY29tbWl0dGVkIG9uIHRoZSBiYXNlIGJyYW5jaCAtIGEgUFIgY2Fubm90IGVkaXQgdGhpcyBmaWxlIHRvXG4gKiBkaXNhYmxlIG9yIHdlYWtlbiB0aGUgY2hlY2suIEl0IGNoZWNrcyBvdXQgYW5kIGV4ZWN1dGVzIG5vdGhpbmcgZnJvbSB0aGVcbiAqIFBSOyBpdCBvbmx5IHJlYWRzIHRoZSBQUiBoZWFkJ3MgZmlsZSBjb250ZW50IHZpYSB0aGUgR2l0SHViIEFQSS4gQmVjYXVzZVxuICogYHB1bGxfcmVxdWVzdF90YXJnZXRgIHJ1bnMgd2l0aCB0aGUgYmFzZSByZXBvJ3MgdG9rZW4gZXZlbiBmb3JcbiAqIGZvcmstb3JpZ2luYXRlZCBQUnMsIHRoZSBmYWlsdXJlIGNvbW1lbnQgcG9zdHMgcmVsaWFibHkuXG4gKlxuICAqIEl0IHBlcmZvcm1zIGEgZmxhdCwgdW5jb25kaXRpb25hbCBzY2FuIG9mIHRoZSBQUidzIGhlYWQgcmVmIChub1xuICAqIGJhc2UtdnMtaGVhZCBjb21wYXJpc29uKTogZmV0Y2ggdGhlIGNvbnRlbnQgb2YgZXZlcnkgR2l0SHViIHdvcmtmbG93IGFuZFxuICAqIGNvbXBvc2l0ZS1hY3Rpb24gZmlsZSwgZXh0cmFjdCBldmVyeSBgdXNlczpgIHZhbHVlLCBhbmQgZmFpbCBpZiBhbnkgZG9lc1xuICAqIG5vdCBzdGFydCB3aXRoIG9uZSBvZiB0aGUgdGhyZWUgdHJ1c3RlZCBuYW1lc3BhY2VzIGZyb20gQUQtMDAxXG4gICogKGBhY3Rpb25zL2AsIGBkb2NrZXIvYCwgYHhwZXJ0c3MvYCkuIFRoZSBzaW5nbGVcbiAqIGV4ZW1wdGlvbiBpcyBhIGxvY2FsIHNhbWUtcmVwbyByZWZlcmVuY2UgKGB1c2VzOiAuYCBvclxuICogYHVzZXM6IC4vLmdpdGh1Yi9hY3Rpb25zLzxuYW1lPmApIC0gdGhlIHJlcG8ncyBvd24gaGFuZC1jb21taXR0ZWQgYWN0aW9uLFxuICogdG8gd2hpY2ggdGhlIG9yZyBwb2xpY3kncyBcImFsbG93IHNlbGVjdCBhY3Rpb25zXCIgc2V0dGluZyBkb2VzIG5vdCBhcHBseS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25zQWxsb3dsaXN0R3VhcmRPcHRpb25zIHtcbiAgLyoqXG4gICAqIEdpdEh1YiBzZWNyZXQgaG9sZGluZyBhIHRva2VuIHdpdGggcGVybWlzc2lvbiB0byBjb21tZW50IG9uIFBScywgdXNlZFxuICAgKiBmb3IgdGhlIGZhaWx1cmUgY29tbWVudC4gVGhlIGNoZWNrIHN0aWxsIGZhaWxzIHdpdGhvdXQgaXQsIHNvIGZvcmsgUFJzIC1cbiAgICogd2hpY2ggZ2V0IG5vIHNlY3JldHMgLSBhcmUgb25seSBtaXNzaW5nIHRoZSBleHRyYSBjb21tZW50LlxuICAgKiBAZGVmYXVsdCBcIlBST0pFTl9HSVRIVUJfVE9LRU5cIlxuICAgKi9cbiAgcmVhZG9ubHkgZ2hlVG9rZW5TZWNyZXQ/OiBzdHJpbmc7XG5cbiAgLyoqIEBkZWZhdWx0IFwiYWN0aW9ucy1hbGxvd2xpc3QtZ3VhcmRcIiAqL1xuICByZWFkb25seSB3b3JrZmxvd05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25zQWxsb3dsaXN0R3VhcmQgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwdWJsaWMgcmVhZG9ubHkgd29ya2Zsb3c6IGdpdGh1Yi5HaXRodWJXb3JrZmxvdztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogZ2l0aHViLkdpdEh1YlByb2plY3QsXG4gICAgb3B0aW9uczogQWN0aW9uc0FsbG93bGlzdEd1YXJkT3B0aW9ucyA9IHt9LFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgJ0FjdGlvbnNBbGxvd2xpc3RHdWFyZCcpO1xuXG4gICAgY29uc3QgZ2ggPSBzY29wZS5naXRodWI7XG4gICAgaWYgKCFnaCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQWN0aW9uc0FsbG93bGlzdEd1YXJkIHJlcXVpcmVzIEdpdEh1YiBpbnRlZ3JhdGlvbiB0byBiZSBlbmFibGVkJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZ2hlVG9rZW5TZWNyZXQgPVxuICAgICAgb3B0aW9ucy5naGVUb2tlblNlY3JldCA/PyBERUZBVUxUX0dIRV9UT0tFTl9TRUNSRVQ7XG5cbiAgICB0aGlzLndvcmtmbG93ID0gbmV3IGdpdGh1Yi5HaXRodWJXb3JrZmxvdyhcbiAgICAgIGdoLFxuICAgICAgb3B0aW9ucy53b3JrZmxvd05hbWUgPz8gJ2FjdGlvbnMtYWxsb3dsaXN0LWd1YXJkJyxcbiAgICApO1xuICAgIHRoaXMud29ya2Zsb3cub24oeyBwdWxsUmVxdWVzdFRhcmdldDoge30gfSk7XG4gICAgdGhpcy53b3JrZmxvdy5hZGRKb2IoJ2NoZWNrJywge1xuICAgICAgcnVuc09uOiBbJ3VidW50dS1sYXRlc3QnXSxcbiAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgIGNvbnRlbnRzOiBnaXRodWIud29ya2Zsb3dzLkpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgICAgcHVsbFJlcXVlc3RzOiBnaXRodWIud29ya2Zsb3dzLkpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICB9LFxuICAgICAgZW52OiB7IEdIX1RPS0VOOiBgXFwke3sgc2VjcmV0cy4ke2doZVRva2VuU2VjcmV0fSB9fWAgfSxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnRW5mb3JjZSBhY3Rpb24gYWxsb3ctbGlzdCcsXG4gICAgICAgICAgcnVuOiBgc2V0IC11byBwaXBlZmFpbFxuaGVhZF9zaGE9XCJcXCR7eyBnaXRodWIuZXZlbnQucHVsbF9yZXF1ZXN0LmhlYWQuc2hhIH19XCJcbnByX251bWJlcj1cIlxcJHt7IGdpdGh1Yi5ldmVudC5udW1iZXIgfX1cIlxucmVwbz1cIlxcJHtHSVRIVUJfUkVQT1NJVE9SWX1cIlxuIyBBbGwgZmlsZXMgYXQgdGhlIFBSIGhlYWQgKHJlY3Vyc2l2ZSB0cmVlKSwgbmFycm93ZWQgdG8gd29ya2Zsb3cgYW5kXG4jIGNvbXBvc2l0ZS1hY3Rpb24gZmlsZXMuXG5maWxlcz1cIiQoZ2ggYXBpIFwicmVwb3MvJHJlcG8vZ2l0L3RyZWVzLyRoZWFkX3NoYT9yZWN1cnNpdmU9MVwiIC0tanEgJy50cmVlW10gfCBzZWxlY3QoLnR5cGU9PVwiYmxvYlwiKSB8IC5wYXRoJyB8IGdyZXAgLUUgJ15cXFxcLmdpdGh1Yi8od29ya2Zsb3dzL1teL10rXFxcXC4oeW1sfHlhbWwpfGFjdGlvbnMvW14vXSsvYWN0aW9uXFxcXC4oeW1sfHlhbWwpKSQnIHx8IHRydWUpXCJcbnZpb2xhdGlvbnM9KClcbndoaWxlIElGUz0gcmVhZCAtciBwYXRoOyBkb1xuICBbIC16IFwiJHBhdGhcIiBdICYmIGNvbnRpbnVlXG4gIGNvbnRlbnQ9XCIkKGdoIGFwaSBcInJlcG9zLyRyZXBvL2NvbnRlbnRzLyRwYXRoP3JlZj0kaGVhZF9zaGFcIiAtLWpxIC1yICcuY29udGVudCcgMj4vZGV2L251bGwgfCBiYXNlNjQgLWQgMj4vZGV2L251bGwgfHwgdHJ1ZSlcIlxuICBsaW5lbm89MFxuICB3aGlsZSBJRlM9IHJlYWQgLXIgbGluZTsgZG9cbiAgICBsaW5lbm89JCgobGluZW5vICsgMSkpXG4gICAgdmFsdWU9XCIkKHByaW50ZiAnJXNcXFxcbicgXCIkbGluZVwiIHwgc2VkIC1uICdzL15bWzpzcGFjZTpdXSp1c2VzOltbOnNwYWNlOl1dKi8vcCcgfCB0ciAtZCAnXFxcXFxcXCInKVwiXG4gICAgWyAteiBcIiR2YWx1ZVwiIF0gJiYgY29udGludWVcbiAgICBjYXNlIFwiJHZhbHVlXCIgaW5cbiAgICAgIGFjdGlvbnMvKnxkb2NrZXIvKnx4cGVydHNzLyp8LnwuLyopIDs7XG4gICAgICAqKSB2aW9sYXRpb25zKz0oXCIgIC0gJHBhdGg6JGxpbmVubyDigJQgdXNlczogJHZhbHVlXCIpIDs7XG4gICAgZXNhY1xuICBkb25lIDw8PCBcIiRjb250ZW50XCJcbmRvbmUgPDw8IFwiJGZpbGVzXCJcbmlmIFsgXCJcXCR7I3Zpb2xhdGlvbnNbQF19XCIgLWd0IDAgXTsgdGhlblxuICB7XG4gICAgZWNobyBcIuKdjCBEaXNhbGxvd2VkIEdpdEh1YiBBY3Rpb24gcmVmZXJlbmNlXCJcbiAgICBlY2hvIFwiXCJcbiAgICBlY2hvIFwiVGhpcyBQUiByZWZlcmVuY2VzIGFuIGFjdGlvbiBvdXRzaWRlIHRoZSBhbGxvdy1saXN0OlwiXG4gICAgZWNobyBcIlwiXG4gICAgcHJpbnRmICclc1xcXFxuJyBcIlxcJHt2aW9sYXRpb25zW0BdfVwiXG4gICAgZWNobyBcIlwiXG4gICAgZWNobyBcIk9yZyBwb2xpY3kgdHJ1c3RzIG9ubHkgYWN0aW9ucy8qLCBkb2NrZXIvKiwgYW5kIHhwZXJ0c3MvKi4gVXNlIGFuIGVxdWl2YWxlbnQgaW50ZXJuYWwgYWN0aW9uLCBvciBhc2sgaXRzIG1haW50YWluZXJzIHRvIGFkZCBvbmUuXCJcbiAgfSB8IGdoIHByIGNvbW1lbnQgXCIkcHJfbnVtYmVyXCIgLS1ib2R5LWZpbGUgLSB8fCBlY2hvIFwiOjp3YXJuaW5nOjpjb3VsZCBub3QgcG9zdCBQUiBjb21tZW50IChmb3JrIFBSIG9yIG1pc3NpbmcgdG9rZW4pXCJcbiAgZXhpdCAxXG5maVxuYCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,10 @@
1
+ import { github } from 'projen';
2
+ /**
3
+ * Redirects every out-of-policy third-party action reference to the
4
+ * first-party `xpertss/*` internal actions across the whole project, using
5
+ * projen's `GitHubActionsProvider`. Call once per `GitHubProject`. Because
6
+ * every generated `uses:` is resolved through this map at synth time -
7
+ * including projen's built-in `upgrade-main` / `pull-request-lint` workflows
8
+ * - this single call covers all current out-of-policy call sites.
9
+ */
10
+ export declare function applyInternalActionOverrides(gh: github.GitHub): void;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyInternalActionOverrides = applyInternalActionOverrides;
4
+ // Placeholder until the internal action repos are built and released (AD-002
5
+ // Phase 1, step 8) - a real 40-char SHA replaces this in each entry at that
6
+ // point. Landed with placeholders so the override mechanism is in place while
7
+ // the untrusted workflows it retargets are non-gating (AD-002 Phase 0).
8
+ const PLACEHOLDER_SHA = 'PLACEHOLDER_SHA';
9
+ // Name (without ref) -> SHA-pinned internal-action override. Per projen's
10
+ // GitHubActionsProvider.get() a name-keyed override redirects every ref
11
+ // variant at once, so a single entry covers both this package's literals
12
+ // (@v7/@v5) and projen's built-in workflows (@v8.1.1/SHA) for the same
13
+ // action. Only actions outside the trusted namespaces (actions/*, docker/*,
14
+ // xpertss/*) ever need an entry.
15
+ const ACTION_OVERRIDES = {
16
+ 'peter-evans/create-pull-request': `xpertss/create-pull-request@${PLACEHOLDER_SHA}`,
17
+ 'stefanzweifel/git-auto-commit-action': `xpertss/auto-commit@${PLACEHOLDER_SHA}`,
18
+ 'amannn/action-semantic-pull-request': `xpertss/semantic-pull-request@${PLACEHOLDER_SHA}`,
19
+ };
20
+ /**
21
+ * Redirects every out-of-policy third-party action reference to the
22
+ * first-party `xpertss/*` internal actions across the whole project, using
23
+ * projen's `GitHubActionsProvider`. Call once per `GitHubProject`. Because
24
+ * every generated `uses:` is resolved through this map at synth time -
25
+ * including projen's built-in `upgrade-main` / `pull-request-lint` workflows
26
+ * - this single call covers all current out-of-policy call sites.
27
+ */
28
+ function applyInternalActionOverrides(gh) {
29
+ for (const [action, override] of Object.entries(ACTION_OVERRIDES)) {
30
+ gh.actions.set(action, override);
31
+ }
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwtYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tb24vaW50ZXJuYWwtYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTRCQSxvRUFJQztBQTlCRCw2RUFBNkU7QUFDN0UsNEVBQTRFO0FBQzVFLDhFQUE4RTtBQUM5RSx3RUFBd0U7QUFDeEUsTUFBTSxlQUFlLEdBQUcsaUJBQWlCLENBQUM7QUFFMUMsMEVBQTBFO0FBQzFFLHdFQUF3RTtBQUN4RSx5RUFBeUU7QUFDekUsdUVBQXVFO0FBQ3ZFLDRFQUE0RTtBQUM1RSxpQ0FBaUM7QUFDakMsTUFBTSxnQkFBZ0IsR0FBMkI7SUFDL0MsaUNBQWlDLEVBQUUsK0JBQStCLGVBQWUsRUFBRTtJQUNuRixzQ0FBc0MsRUFBRSx1QkFBdUIsZUFBZSxFQUFFO0lBQ2hGLHFDQUFxQyxFQUFFLGlDQUFpQyxlQUFlLEVBQUU7Q0FDMUYsQ0FBQztBQUVGOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQiw0QkFBNEIsQ0FBQyxFQUFpQjtJQUM1RCxLQUFLLE1BQU0sQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7UUFDbEUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2l0aHViIH0gZnJvbSAncHJvamVuJztcblxuLy8gUGxhY2Vob2xkZXIgdW50aWwgdGhlIGludGVybmFsIGFjdGlvbiByZXBvcyBhcmUgYnVpbHQgYW5kIHJlbGVhc2VkIChBRC0wMDJcbi8vIFBoYXNlIDEsIHN0ZXAgOCkgLSBhIHJlYWwgNDAtY2hhciBTSEEgcmVwbGFjZXMgdGhpcyBpbiBlYWNoIGVudHJ5IGF0IHRoYXRcbi8vIHBvaW50LiBMYW5kZWQgd2l0aCBwbGFjZWhvbGRlcnMgc28gdGhlIG92ZXJyaWRlIG1lY2hhbmlzbSBpcyBpbiBwbGFjZSB3aGlsZVxuLy8gdGhlIHVudHJ1c3RlZCB3b3JrZmxvd3MgaXQgcmV0YXJnZXRzIGFyZSBub24tZ2F0aW5nIChBRC0wMDIgUGhhc2UgMCkuXG5jb25zdCBQTEFDRUhPTERFUl9TSEEgPSAnUExBQ0VIT0xERVJfU0hBJztcblxuLy8gTmFtZSAod2l0aG91dCByZWYpIC0+IFNIQS1waW5uZWQgaW50ZXJuYWwtYWN0aW9uIG92ZXJyaWRlLiBQZXIgcHJvamVuJ3Ncbi8vIEdpdEh1YkFjdGlvbnNQcm92aWRlci5nZXQoKSBhIG5hbWUta2V5ZWQgb3ZlcnJpZGUgcmVkaXJlY3RzIGV2ZXJ5IHJlZlxuLy8gdmFyaWFudCBhdCBvbmNlLCBzbyBhIHNpbmdsZSBlbnRyeSBjb3ZlcnMgYm90aCB0aGlzIHBhY2thZ2UncyBsaXRlcmFsc1xuLy8gKEB2Ny9AdjUpIGFuZCBwcm9qZW4ncyBidWlsdC1pbiB3b3JrZmxvd3MgKEB2OC4xLjEvU0hBKSBmb3IgdGhlIHNhbWVcbi8vIGFjdGlvbi4gT25seSBhY3Rpb25zIG91dHNpZGUgdGhlIHRydXN0ZWQgbmFtZXNwYWNlcyAoYWN0aW9ucy8qLCBkb2NrZXIvKixcbi8vIHhwZXJ0c3MvKikgZXZlciBuZWVkIGFuIGVudHJ5LlxuY29uc3QgQUNUSU9OX09WRVJSSURFUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgJ3BldGVyLWV2YW5zL2NyZWF0ZS1wdWxsLXJlcXVlc3QnOiBgeHBlcnRzcy9jcmVhdGUtcHVsbC1yZXF1ZXN0QCR7UExBQ0VIT0xERVJfU0hBfWAsXG4gICdzdGVmYW56d2VpZmVsL2dpdC1hdXRvLWNvbW1pdC1hY3Rpb24nOiBgeHBlcnRzcy9hdXRvLWNvbW1pdEAke1BMQUNFSE9MREVSX1NIQX1gLFxuICAnYW1hbm5uL2FjdGlvbi1zZW1hbnRpYy1wdWxsLXJlcXVlc3QnOiBgeHBlcnRzcy9zZW1hbnRpYy1wdWxsLXJlcXVlc3RAJHtQTEFDRUhPTERFUl9TSEF9YCxcbn07XG5cbi8qKlxuICogUmVkaXJlY3RzIGV2ZXJ5IG91dC1vZi1wb2xpY3kgdGhpcmQtcGFydHkgYWN0aW9uIHJlZmVyZW5jZSB0byB0aGVcbiAqIGZpcnN0LXBhcnR5IGB4cGVydHNzLypgIGludGVybmFsIGFjdGlvbnMgYWNyb3NzIHRoZSB3aG9sZSBwcm9qZWN0LCB1c2luZ1xuICogcHJvamVuJ3MgYEdpdEh1YkFjdGlvbnNQcm92aWRlcmAuIENhbGwgb25jZSBwZXIgYEdpdEh1YlByb2plY3RgLiBCZWNhdXNlXG4gKiBldmVyeSBnZW5lcmF0ZWQgYHVzZXM6YCBpcyByZXNvbHZlZCB0aHJvdWdoIHRoaXMgbWFwIGF0IHN5bnRoIHRpbWUgLVxuICogaW5jbHVkaW5nIHByb2plbidzIGJ1aWx0LWluIGB1cGdyYWRlLW1haW5gIC8gYHB1bGwtcmVxdWVzdC1saW50YCB3b3JrZmxvd3NcbiAqIC0gdGhpcyBzaW5nbGUgY2FsbCBjb3ZlcnMgYWxsIGN1cnJlbnQgb3V0LW9mLXBvbGljeSBjYWxsIHNpdGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlJbnRlcm5hbEFjdGlvbk92ZXJyaWRlcyhnaDogZ2l0aHViLkdpdEh1Yik6IHZvaWQge1xuICBmb3IgKGNvbnN0IFthY3Rpb24sIG92ZXJyaWRlXSBvZiBPYmplY3QuZW50cmllcyhBQ1RJT05fT1ZFUlJJREVTKSkge1xuICAgIGdoLmFjdGlvbnMuc2V0KGFjdGlvbiwgb3ZlcnJpZGUpO1xuICB9XG59XG4iXX0=
@@ -24,8 +24,6 @@ export interface ManualDeployWorkflowOptions {
24
24
  * `repository_dispatch` to a companion infra repo).
25
25
  */
26
26
  readonly deploySteps?: (env: EnvironmentOptions) => github.workflows.JobStep[];
27
- /** GitHub secret holding a Slack webhook URL used to notify on deploy. */
28
- readonly slackWebhookSecret?: string;
29
27
  }
30
28
  /** @internal */
31
29
  export declare class ManualDeployWorkflow extends Component {
@@ -49,17 +49,6 @@ class ManualDeployWorkflow extends projen_1.Component {
49
49
  },
50
50
  ...deploySteps(env),
51
51
  ];
52
- if (options.slackWebhookSecret) {
53
- steps.push({
54
- name: 'Notify Slack',
55
- if: 'always()',
56
- uses: 'slackapi/slack-github-action@v2',
57
- with: { 'webhook-type': 'incoming-webhook' },
58
- env: {
59
- SLACK_WEBHOOK_URL: `\${{ secrets.${options.slackWebhookSecret} }}`,
60
- },
61
- });
62
- }
63
52
  this.workflow.addJob(`deploy-${env.name}`, {
64
53
  name: `Deploy (${env.name})`,
65
54
  if: `github.event.inputs.environment == '${env.name}'`,
@@ -75,4 +64,4 @@ class ManualDeployWorkflow extends projen_1.Component {
75
64
  }
76
65
  }
77
66
  exports.ManualDeployWorkflow = ManualDeployWorkflow;
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFudWFsLWRlcGxveS13b3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tb24vbWFudWFsLWRlcGxveS13b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBMkM7QUFDM0MsK0RBRytCO0FBbUMvQixnQkFBZ0I7QUFDaEIsTUFBYSxvQkFBcUIsU0FBUSxrQkFBUztJQUNqQyxRQUFRLENBQXdCO0lBRWhELFlBQ0UsS0FBMkIsRUFDM0IsT0FBb0M7UUFFcEMsS0FBSyxDQUFDLEtBQUssRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBRXJDLE1BQU0sWUFBWSxHQUFHLElBQUEsMkNBQXFCLEVBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDeEIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1IsTUFBTSxJQUFJLEtBQUssQ0FDYixnRUFBZ0UsQ0FDakUsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxJQUFJLFFBQVEsQ0FBQztRQUN0RCxNQUFNLFdBQVcsR0FDZixPQUFPLENBQUMsV0FBVztZQUNuQixDQUFDLENBQUMsR0FBdUIsRUFBOEIsRUFBRSxDQUFDO2dCQUN4RDtvQkFDRSxJQUFJLEVBQUUsVUFBVSxHQUFHLENBQUMsSUFBSSxFQUFFO29CQUMxQixHQUFHLEVBQUUsdURBQXVELEdBQUcsQ0FBQyxJQUFJLElBQUk7aUJBQ3pFO2FBQ0YsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGVBQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2YsZ0JBQWdCLEVBQUU7Z0JBQ2hCLE1BQU0sRUFBRTtvQkFDTixXQUFXLEVBQUU7d0JBQ1gsV0FBVyxFQUFFLHVCQUF1Qjt3QkFDcEMsUUFBUSxFQUFFLElBQUk7d0JBQ2QsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsT0FBTyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7cUJBQ3pDO29CQUNELE9BQU8sRUFBRTt3QkFDUCxXQUFXLEVBQ1QsZ0VBQWdFO3dCQUNsRSxRQUFRLEVBQUUsS0FBSztxQkFDaEI7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUVILEtBQUssTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7WUFDL0IsTUFBTSxLQUFLLEdBQStCO2dCQUN4QztvQkFDRSxJQUFJLEVBQUUsVUFBVTtvQkFDaEIsSUFBSSxFQUFFLHFCQUFxQjtvQkFDM0IsSUFBSSxFQUFFO3dCQUNKLEdBQUcsRUFBRSxrREFBa0Q7cUJBQ3hEO2lCQUNGO2dCQUNELEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQzthQUNwQixDQUFDO1lBRUYsSUFBSSxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDL0IsS0FBSyxDQUFDLElBQUksQ0FBQztvQkFDVCxJQUFJLEVBQUUsY0FBYztvQkFDcEIsRUFBRSxFQUFFLFVBQVU7b0JBQ2QsSUFBSSxFQUFFLGlDQUFpQztvQkFDdkMsSUFBSSxFQUFFLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFO29CQUM1QyxHQUFHLEVBQUU7d0JBQ0gsaUJBQWlCLEVBQUUsZ0JBQWdCLE9BQU8sQ0FBQyxrQkFBa0IsS0FBSztxQkFDbkU7aUJBQ0YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUN6QyxJQUFJLEVBQUUsV0FBVyxHQUFHLENBQUMsSUFBSSxHQUFHO2dCQUM1QixFQUFFLEVBQUUsdUNBQXVDLEdBQUcsQ0FBQyxJQUFJLEdBQUc7Z0JBQ3RELE1BQU0sRUFBRSxDQUFDLGVBQWUsQ0FBQztnQkFDekIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDeEQsV0FBVyxFQUFFO29CQUNYLE9BQU8sRUFBRSxlQUFNLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLO29CQUM3QyxRQUFRLEVBQUUsZUFBTSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSTtpQkFDOUM7Z0JBQ0QsS0FBSzthQUNOLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFuRkQsb0RBbUZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBnaXRodWIgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHtcbiAgRW52aXJvbm1lbnRPcHRpb25zLFxuICBub3JtYWxpemVFbnZpcm9ubWVudHMsXG59IGZyb20gJy4vZW52aXJvbm1lbnQtb3B0aW9ucyc7XG5cbi8qKlxuICogU2hhcmVkLCBlbnZpcm9ubWVudC1wYXJhbWV0ZXJpemVkIG1hbnVhbC1kaXNwYXRjaCBkZXBsb3kgd29ya2Zsb3cuXG4gKlxuICogVGhpcyBpcyB0aGUgb25lIFwidHJpZ2dlciBhIGRlcGxveVwiIGNvbnRyYWN0IHVzZWQgYnkgYm90aCB0aGUgQ0RLIHByb2plY3RcbiAqIHR5cGVzIChkZXBsb3lpbmcgdGhlaXIgb3duIHN0YWNrcykgYW5kIHRoZSBKYXZhIGBDZGtEZXBsb3lIb29rYCBjb21wb25lbnRcbiAqIChkaXNwYXRjaGluZyBhIGRlcGxveSBpbiBhIGNvbXBhbmlvbiBDREsgcmVwbykgLSBzZWUgdGhlIFwiT3BlbiBRdWVzdGlvbnNcIlxuICogc2VjdGlvbnMgb2YgdGhlIHR3byBzcGVjcy5cbiAqXG4gKiBAaW50ZXJuYWwgLSBub3QgcGFydCBvZiB0aGUganNpaS1leHBvcnRlZCBBUEkgKGl0cyBgZGVwbG95U3RlcHNgIGNhbGxiYWNrXG4gKiBpc24ndCByZXByZXNlbnRhYmxlIGFjcm9zcyBqc2lpIGxhbmd1YWdlcyk7IGNvbnN1bWVkIGRpcmVjdGx5IGJ5IG90aGVyXG4gKiBUeXBlU2NyaXB0IHNvdXJjZSBpbiB0aGlzIHBhY2thZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFudWFsRGVwbG95V29ya2Zsb3dPcHRpb25zIHtcbiAgLyoqIERlcGxveSB0YXJnZXRzIGV4cG9zZWQgYXMgdGhlIGBlbnZpcm9ubWVudGAgd29ya2Zsb3dfZGlzcGF0Y2ggY2hvaWNlLiAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudHM6IChzdHJpbmcgfCBFbnZpcm9ubWVudE9wdGlvbnMpW107XG5cbiAgLyoqIEBkZWZhdWx0IFwiZGVwbG95XCIgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RlcHMgdGhhdCBhY3R1YWxseSBwZXJmb3JtIHRoZSBkZXBsb3kgZm9yIGEgZ2l2ZW4gZW52aXJvbm1lbnQuXG4gICAqIERlZmF1bHRzIHRvIGEgcGxhY2Vob2xkZXIgYGVjaG9gIHN0ZXAgLSBwcm9qZWN0IHR5cGVzIGFyZSBleHBlY3RlZCB0b1xuICAgKiBvdmVycmlkZSB0aGlzIHdpdGggc29tZXRoaW5nIHJlYWwgKGUuZy4gYGNkayBkZXBsb3lgLCBvciBhXG4gICAqIGByZXBvc2l0b3J5X2Rpc3BhdGNoYCB0byBhIGNvbXBhbmlvbiBpbmZyYSByZXBvKS5cbiAgICovXG4gIHJlYWRvbmx5IGRlcGxveVN0ZXBzPzogKFxuICAgIGVudjogRW52aXJvbm1lbnRPcHRpb25zLFxuICApID0+IGdpdGh1Yi53b3JrZmxvd3MuSm9iU3RlcFtdO1xuXG4gIC8qKiBHaXRIdWIgc2VjcmV0IGhvbGRpbmcgYSBTbGFjayB3ZWJob29rIFVSTCB1c2VkIHRvIG5vdGlmeSBvbiBkZXBsb3kuICovXG4gIHJlYWRvbmx5IHNsYWNrV2ViaG9va1NlY3JldD86IHN0cmluZztcbn1cblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGNsYXNzIE1hbnVhbERlcGxveVdvcmtmbG93IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHVibGljIHJlYWRvbmx5IHdvcmtmbG93OiBnaXRodWIuR2l0aHViV29ya2Zsb3c7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IGdpdGh1Yi5HaXRIdWJQcm9qZWN0LFxuICAgIG9wdGlvbnM6IE1hbnVhbERlcGxveVdvcmtmbG93T3B0aW9ucyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsICdNYW51YWxEZXBsb3lXb3JrZmxvdycpO1xuXG4gICAgY29uc3QgZW52aXJvbm1lbnRzID0gbm9ybWFsaXplRW52aXJvbm1lbnRzKG9wdGlvbnMuZW52aXJvbm1lbnRzKTtcbiAgICBjb25zdCBnaCA9IHNjb3BlLmdpdGh1YjtcbiAgICBpZiAoIWdoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdNYW51YWxEZXBsb3lXb3JrZmxvdyByZXF1aXJlcyBHaXRIdWIgaW50ZWdyYXRpb24gdG8gYmUgZW5hYmxlZCcsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHdvcmtmbG93TmFtZSA9IG9wdGlvbnMud29ya2Zsb3dOYW1lID8/ICdkZXBsb3knO1xuICAgIGNvbnN0IGRlcGxveVN0ZXBzID1cbiAgICAgIG9wdGlvbnMuZGVwbG95U3RlcHMgPz9cbiAgICAgICgoZW52OiBFbnZpcm9ubWVudE9wdGlvbnMpOiBnaXRodWIud29ya2Zsb3dzLkpvYlN0ZXBbXSA9PiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBgRGVwbG95ICR7ZW52Lm5hbWV9YCxcbiAgICAgICAgICBydW46IGBlY2hvIFwiVE9ETzogaW1wbGVtZW50IGRlcGxveSBzdGVwcyBmb3IgZW52aXJvbm1lbnQgJyR7ZW52Lm5hbWV9J1wiYCxcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuXG4gICAgdGhpcy53b3JrZmxvdyA9IG5ldyBnaXRodWIuR2l0aHViV29ya2Zsb3coZ2gsIHdvcmtmbG93TmFtZSk7XG4gICAgdGhpcy53b3JrZmxvdy5vbih7XG4gICAgICB3b3JrZmxvd0Rpc3BhdGNoOiB7XG4gICAgICAgIGlucHV0czoge1xuICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0Vudmlyb25tZW50IHRvIGRlcGxveScsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIHR5cGU6ICdjaG9pY2UnLFxuICAgICAgICAgICAgb3B0aW9uczogZW52aXJvbm1lbnRzLm1hcCgoZSkgPT4gZS5uYW1lKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdpdF9zaGE6IHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAnT3B0aW9uYWwgY29tbWl0IFNIQSB0byBkZXBsb3kgKGRlZmF1bHRzIHRvIHRoZSBkZWZhdWx0IGJyYW5jaCknLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgZm9yIChjb25zdCBlbnYgb2YgZW52aXJvbm1lbnRzKSB7XG4gICAgICBjb25zdCBzdGVwczogZ2l0aHViLndvcmtmbG93cy5Kb2JTdGVwW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnQ2hlY2tvdXQnLFxuICAgICAgICAgIHVzZXM6ICdhY3Rpb25zL2NoZWNrb3V0QHY0JyxcbiAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICByZWY6ICcke3sgZ2l0aHViLmV2ZW50LmlucHV0cy5naXRfc2hhIHx8IGdpdGh1Yi5zaGEgfX0nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIC4uLmRlcGxveVN0ZXBzKGVudiksXG4gICAgICBdO1xuXG4gICAgICBpZiAob3B0aW9ucy5zbGFja1dlYmhvb2tTZWNyZXQpIHtcbiAgICAgICAgc3RlcHMucHVzaCh7XG4gICAgICAgICAgbmFtZTogJ05vdGlmeSBTbGFjaycsXG4gICAgICAgICAgaWY6ICdhbHdheXMoKScsXG4gICAgICAgICAgdXNlczogJ3NsYWNrYXBpL3NsYWNrLWdpdGh1Yi1hY3Rpb25AdjInLFxuICAgICAgICAgIHdpdGg6IHsgJ3dlYmhvb2stdHlwZSc6ICdpbmNvbWluZy13ZWJob29rJyB9LFxuICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgU0xBQ0tfV0VCSE9PS19VUkw6IGBcXCR7eyBzZWNyZXRzLiR7b3B0aW9ucy5zbGFja1dlYmhvb2tTZWNyZXR9IH19YCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy53b3JrZmxvdy5hZGRKb2IoYGRlcGxveS0ke2Vudi5uYW1lfWAsIHtcbiAgICAgICAgbmFtZTogYERlcGxveSAoJHtlbnYubmFtZX0pYCxcbiAgICAgICAgaWY6IGBnaXRodWIuZXZlbnQuaW5wdXRzLmVudmlyb25tZW50ID09ICcke2Vudi5uYW1lfSdgLFxuICAgICAgICBydW5zT246IFsndWJ1bnR1LWxhdGVzdCddLFxuICAgICAgICBlbnZpcm9ubWVudDogZW52LnJlcXVpcmVzQXBwcm92YWwgPyBlbnYubmFtZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgICBpZFRva2VuOiBnaXRodWIud29ya2Zsb3dzLkpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICAgICAgY29udGVudHM6IGdpdGh1Yi53b3JrZmxvd3MuSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICB9LFxuICAgICAgICBzdGVwcyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFudWFsLWRlcGxveS13b3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tb24vbWFudWFsLWRlcGxveS13b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBMkM7QUFDM0MsK0RBRytCO0FBZ0MvQixnQkFBZ0I7QUFDaEIsTUFBYSxvQkFBcUIsU0FBUSxrQkFBUztJQUNqQyxRQUFRLENBQXdCO0lBRWhELFlBQ0UsS0FBMkIsRUFDM0IsT0FBb0M7UUFFcEMsS0FBSyxDQUFDLEtBQUssRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBRXJDLE1BQU0sWUFBWSxHQUFHLElBQUEsMkNBQXFCLEVBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDeEIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1IsTUFBTSxJQUFJLEtBQUssQ0FDYixnRUFBZ0UsQ0FDakUsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxJQUFJLFFBQVEsQ0FBQztRQUN0RCxNQUFNLFdBQVcsR0FDZixPQUFPLENBQUMsV0FBVztZQUNuQixDQUFDLENBQUMsR0FBdUIsRUFBOEIsRUFBRSxDQUFDO2dCQUN4RDtvQkFDRSxJQUFJLEVBQUUsVUFBVSxHQUFHLENBQUMsSUFBSSxFQUFFO29CQUMxQixHQUFHLEVBQUUsdURBQXVELEdBQUcsQ0FBQyxJQUFJLElBQUk7aUJBQ3pFO2FBQ0YsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGVBQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2YsZ0JBQWdCLEVBQUU7Z0JBQ2hCLE1BQU0sRUFBRTtvQkFDTixXQUFXLEVBQUU7d0JBQ1gsV0FBVyxFQUFFLHVCQUF1Qjt3QkFDcEMsUUFBUSxFQUFFLElBQUk7d0JBQ2QsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsT0FBTyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7cUJBQ3pDO29CQUNELE9BQU8sRUFBRTt3QkFDUCxXQUFXLEVBQ1QsZ0VBQWdFO3dCQUNsRSxRQUFRLEVBQUUsS0FBSztxQkFDaEI7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUVILEtBQUssTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7WUFDL0IsTUFBTSxLQUFLLEdBQStCO2dCQUN4QztvQkFDRSxJQUFJLEVBQUUsVUFBVTtvQkFDaEIsSUFBSSxFQUFFLHFCQUFxQjtvQkFDM0IsSUFBSSxFQUFFO3dCQUNKLEdBQUcsRUFBRSxrREFBa0Q7cUJBQ3hEO2lCQUNGO2dCQUNELEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQzthQUNwQixDQUFDO1lBRUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3pDLElBQUksRUFBRSxXQUFXLEdBQUcsQ0FBQyxJQUFJLEdBQUc7Z0JBQzVCLEVBQUUsRUFBRSx1Q0FBdUMsR0FBRyxDQUFDLElBQUksR0FBRztnQkFDdEQsTUFBTSxFQUFFLENBQUMsZUFBZSxDQUFDO2dCQUN6QixXQUFXLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUN4RCxXQUFXLEVBQUU7b0JBQ1gsT0FBTyxFQUFFLGVBQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUs7b0JBQzdDLFFBQVEsRUFBRSxlQUFNLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJO2lCQUM5QztnQkFDRCxLQUFLO2FBQ04sQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXZFRCxvREF1RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGdpdGh1YiB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQge1xuICBFbnZpcm9ubWVudE9wdGlvbnMsXG4gIG5vcm1hbGl6ZUVudmlyb25tZW50cyxcbn0gZnJvbSAnLi9lbnZpcm9ubWVudC1vcHRpb25zJztcblxuLyoqXG4gKiBTaGFyZWQsIGVudmlyb25tZW50LXBhcmFtZXRlcml6ZWQgbWFudWFsLWRpc3BhdGNoIGRlcGxveSB3b3JrZmxvdy5cbiAqXG4gKiBUaGlzIGlzIHRoZSBvbmUgXCJ0cmlnZ2VyIGEgZGVwbG95XCIgY29udHJhY3QgdXNlZCBieSBib3RoIHRoZSBDREsgcHJvamVjdFxuICogdHlwZXMgKGRlcGxveWluZyB0aGVpciBvd24gc3RhY2tzKSBhbmQgdGhlIEphdmEgYENka0RlcGxveUhvb2tgIGNvbXBvbmVudFxuICogKGRpc3BhdGNoaW5nIGEgZGVwbG95IGluIGEgY29tcGFuaW9uIENESyByZXBvKSAtIHNlZSB0aGUgXCJPcGVuIFF1ZXN0aW9uc1wiXG4gKiBzZWN0aW9ucyBvZiB0aGUgdHdvIHNwZWNzLlxuICpcbiAqIEBpbnRlcm5hbCAtIG5vdCBwYXJ0IG9mIHRoZSBqc2lpLWV4cG9ydGVkIEFQSSAoaXRzIGBkZXBsb3lTdGVwc2AgY2FsbGJhY2tcbiAqIGlzbid0IHJlcHJlc2VudGFibGUgYWNyb3NzIGpzaWkgbGFuZ3VhZ2VzKTsgY29uc3VtZWQgZGlyZWN0bHkgYnkgb3RoZXJcbiAqIFR5cGVTY3JpcHQgc291cmNlIGluIHRoaXMgcGFja2FnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYW51YWxEZXBsb3lXb3JrZmxvd09wdGlvbnMge1xuICAvKiogRGVwbG95IHRhcmdldHMgZXhwb3NlZCBhcyB0aGUgYGVudmlyb25tZW50YCB3b3JrZmxvd19kaXNwYXRjaCBjaG9pY2UuICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50czogKHN0cmluZyB8IEVudmlyb25tZW50T3B0aW9ucylbXTtcblxuICAvKiogQGRlZmF1bHQgXCJkZXBsb3lcIiAqL1xuICByZWFkb25seSB3b3JrZmxvd05hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGVwcyB0aGF0IGFjdHVhbGx5IHBlcmZvcm0gdGhlIGRlcGxveSBmb3IgYSBnaXZlbiBlbnZpcm9ubWVudC5cbiAgICogRGVmYXVsdHMgdG8gYSBwbGFjZWhvbGRlciBgZWNob2Agc3RlcCAtIHByb2plY3QgdHlwZXMgYXJlIGV4cGVjdGVkIHRvXG4gICAqIG92ZXJyaWRlIHRoaXMgd2l0aCBzb21ldGhpbmcgcmVhbCAoZS5nLiBgY2RrIGRlcGxveWAsIG9yIGFcbiAgICogYHJlcG9zaXRvcnlfZGlzcGF0Y2hgIHRvIGEgY29tcGFuaW9uIGluZnJhIHJlcG8pLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwbG95U3RlcHM/OiAoXG4gICAgZW52OiBFbnZpcm9ubWVudE9wdGlvbnMsXG4gICkgPT4gZ2l0aHViLndvcmtmbG93cy5Kb2JTdGVwW107XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBjbGFzcyBNYW51YWxEZXBsb3lXb3JrZmxvdyBleHRlbmRzIENvbXBvbmVudCB7XG4gIHB1YmxpYyByZWFkb25seSB3b3JrZmxvdzogZ2l0aHViLkdpdGh1YldvcmtmbG93O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBnaXRodWIuR2l0SHViUHJvamVjdCxcbiAgICBvcHRpb25zOiBNYW51YWxEZXBsb3lXb3JrZmxvd09wdGlvbnMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCAnTWFudWFsRGVwbG95V29ya2Zsb3cnKTtcblxuICAgIGNvbnN0IGVudmlyb25tZW50cyA9IG5vcm1hbGl6ZUVudmlyb25tZW50cyhvcHRpb25zLmVudmlyb25tZW50cyk7XG4gICAgY29uc3QgZ2ggPSBzY29wZS5naXRodWI7XG4gICAgaWYgKCFnaCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnTWFudWFsRGVwbG95V29ya2Zsb3cgcmVxdWlyZXMgR2l0SHViIGludGVncmF0aW9uIHRvIGJlIGVuYWJsZWQnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCB3b3JrZmxvd05hbWUgPSBvcHRpb25zLndvcmtmbG93TmFtZSA/PyAnZGVwbG95JztcbiAgICBjb25zdCBkZXBsb3lTdGVwcyA9XG4gICAgICBvcHRpb25zLmRlcGxveVN0ZXBzID8/XG4gICAgICAoKGVudjogRW52aXJvbm1lbnRPcHRpb25zKTogZ2l0aHViLndvcmtmbG93cy5Kb2JTdGVwW10gPT4gW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogYERlcGxveSAke2Vudi5uYW1lfWAsXG4gICAgICAgICAgcnVuOiBgZWNobyBcIlRPRE86IGltcGxlbWVudCBkZXBsb3kgc3RlcHMgZm9yIGVudmlyb25tZW50ICcke2Vudi5uYW1lfSdcImAsXG4gICAgICAgIH0sXG4gICAgICBdKTtcblxuICAgIHRoaXMud29ya2Zsb3cgPSBuZXcgZ2l0aHViLkdpdGh1YldvcmtmbG93KGdoLCB3b3JrZmxvd05hbWUpO1xuICAgIHRoaXMud29ya2Zsb3cub24oe1xuICAgICAgd29ya2Zsb3dEaXNwYXRjaDoge1xuICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdFbnZpcm9ubWVudCB0byBkZXBsb3knLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICB0eXBlOiAnY2hvaWNlJyxcbiAgICAgICAgICAgIG9wdGlvbnM6IGVudmlyb25tZW50cy5tYXAoKGUpID0+IGUubmFtZSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBnaXRfc2hhOiB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgJ09wdGlvbmFsIGNvbW1pdCBTSEEgdG8gZGVwbG95IChkZWZhdWx0cyB0byB0aGUgZGVmYXVsdCBicmFuY2gpJyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3QgZW52IG9mIGVudmlyb25tZW50cykge1xuICAgICAgY29uc3Qgc3RlcHM6IGdpdGh1Yi53b3JrZmxvd3MuSm9iU3RlcFtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0NoZWNrb3V0JyxcbiAgICAgICAgICB1c2VzOiAnYWN0aW9ucy9jaGVja291dEB2NCcsXG4gICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgcmVmOiAnJHt7IGdpdGh1Yi5ldmVudC5pbnB1dHMuZ2l0X3NoYSB8fCBnaXRodWIuc2hhIH19JyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICAuLi5kZXBsb3lTdGVwcyhlbnYpLFxuICAgICAgXTtcblxuICAgICAgdGhpcy53b3JrZmxvdy5hZGRKb2IoYGRlcGxveS0ke2Vudi5uYW1lfWAsIHtcbiAgICAgICAgbmFtZTogYERlcGxveSAoJHtlbnYubmFtZX0pYCxcbiAgICAgICAgaWY6IGBnaXRodWIuZXZlbnQuaW5wdXRzLmVudmlyb25tZW50ID09ICcke2Vudi5uYW1lfSdgLFxuICAgICAgICBydW5zT246IFsndWJ1bnR1LWxhdGVzdCddLFxuICAgICAgICBlbnZpcm9ubWVudDogZW52LnJlcXVpcmVzQXBwcm92YWwgPyBlbnYubmFtZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgICBpZFRva2VuOiBnaXRodWIud29ya2Zsb3dzLkpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICAgICAgY29udGVudHM6IGdpdGh1Yi53b3JrZmxvd3MuSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICB9LFxuICAgICAgICBzdGVwcyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19