projen 0.45.3 → 0.46.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 (171) hide show
  1. package/.jsii +1246 -462
  2. package/API.md +348 -61
  3. package/README.md +1 -0
  4. package/dist/changelog.md +2 -0
  5. package/dist/releasetag.txt +1 -0
  6. package/dist/version.txt +1 -0
  7. package/docs/build.md +55 -0
  8. package/docs/mutable-builds.md +0 -27
  9. package/docs/publisher.md +35 -1
  10. package/lib/awscdk/auto-discover.js +1 -1
  11. package/lib/awscdk/awscdk-app-ts.js +1 -1
  12. package/lib/awscdk/awscdk-construct.js +2 -2
  13. package/lib/awscdk/awscdk-deps.js +1 -1
  14. package/lib/awscdk/cdk-config.js +1 -1
  15. package/lib/awscdk/cdk-tasks.js +1 -1
  16. package/lib/awscdk/integration-test.js +5 -2
  17. package/lib/awscdk/java-app.js +1 -1
  18. package/lib/awscdk/lambda-function.js +2 -2
  19. package/lib/build/build-workflow.d.ts +125 -0
  20. package/lib/build/build-workflow.js +217 -0
  21. package/lib/build/index.d.ts +1 -0
  22. package/lib/build/index.js +14 -0
  23. package/lib/cdk/construct-lib.js +1 -1
  24. package/lib/cdk/consts.d.ts +14 -0
  25. package/lib/cdk/consts.js +37 -0
  26. package/lib/cdk/jsii-docgen.js +1 -1
  27. package/lib/cdk/jsii-project.d.ts +13 -0
  28. package/lib/cdk/jsii-project.js +107 -44
  29. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  30. package/lib/cdk8s/cdk8s-construct.js +1 -1
  31. package/lib/cdktf/cdktf-construct.js +1 -1
  32. package/lib/component.js +1 -1
  33. package/lib/dependencies.js +1 -1
  34. package/lib/dev-env.js +1 -1
  35. package/lib/docker-compose.js +2 -2
  36. package/lib/file.js +1 -1
  37. package/lib/gitattributes.js +1 -1
  38. package/lib/github/auto-approve.js +1 -1
  39. package/lib/github/auto-merge.js +1 -1
  40. package/lib/github/constants.js +2 -1
  41. package/lib/github/dependabot.js +1 -1
  42. package/lib/github/github-project.js +1 -1
  43. package/lib/github/github.d.ts +6 -0
  44. package/lib/github/github.js +11 -2
  45. package/lib/github/mergify.js +1 -1
  46. package/lib/github/pr-template.js +1 -1
  47. package/lib/github/pull-request-lint.js +1 -1
  48. package/lib/github/stale.js +1 -1
  49. package/lib/github/task-workflow.d.ts +4 -0
  50. package/lib/github/task-workflow.js +6 -5
  51. package/lib/github/workflows-model.d.ts +62 -0
  52. package/lib/github/workflows-model.js +1 -1
  53. package/lib/github/workflows.d.ts +8 -0
  54. package/lib/github/workflows.js +39 -3
  55. package/lib/gitpod.js +1 -1
  56. package/lib/ignore-file.js +1 -1
  57. package/lib/index.d.ts +1 -0
  58. package/lib/index.js +2 -1
  59. package/lib/ini.js +1 -1
  60. package/lib/java/java-project.js +1 -1
  61. package/lib/java/junit.js +1 -1
  62. package/lib/java/maven-compile.js +1 -1
  63. package/lib/java/maven-packaging.js +1 -1
  64. package/lib/java/maven-sample.js +1 -1
  65. package/lib/java/pom.js +1 -1
  66. package/lib/java/projenrc.js +1 -1
  67. package/lib/javascript/bundler.js +1 -1
  68. package/lib/javascript/eslint.js +1 -1
  69. package/lib/javascript/jest.js +1 -1
  70. package/lib/javascript/node-package.js +1 -1
  71. package/lib/javascript/node-project.d.ts +46 -7
  72. package/lib/javascript/node-project.js +64 -129
  73. package/lib/javascript/npm-config.js +1 -1
  74. package/lib/javascript/projenrc.js +1 -1
  75. package/lib/javascript/typescript-config.js +1 -1
  76. package/lib/javascript/upgrade-dependencies.d.ts +15 -0
  77. package/lib/javascript/upgrade-dependencies.js +18 -6
  78. package/lib/json.js +1 -1
  79. package/lib/license.js +1 -1
  80. package/lib/logger.js +1 -1
  81. package/lib/makefile.js +1 -1
  82. package/lib/object-file.js +1 -1
  83. package/lib/project-build.js +1 -1
  84. package/lib/project.js +1 -1
  85. package/lib/projects.js +1 -1
  86. package/lib/projenrc-json.js +1 -1
  87. package/lib/python/pip.js +1 -1
  88. package/lib/python/poetry.js +2 -2
  89. package/lib/python/projenrc.js +1 -1
  90. package/lib/python/pytest.js +1 -1
  91. package/lib/python/python-project.js +1 -1
  92. package/lib/python/python-sample.js +1 -1
  93. package/lib/python/requirements-file.js +1 -1
  94. package/lib/python/setuppy.js +1 -1
  95. package/lib/python/setuptools.js +1 -1
  96. package/lib/python/venv.js +1 -1
  97. package/lib/readme.js +1 -1
  98. package/lib/release/publisher.d.ts +39 -7
  99. package/lib/release/publisher.js +51 -43
  100. package/lib/release/release-trigger.js +1 -1
  101. package/lib/release/release.d.ts +20 -8
  102. package/lib/release/release.js +3 -2
  103. package/lib/sample-file.js +2 -2
  104. package/lib/semver.js +1 -1
  105. package/lib/source-code.js +1 -1
  106. package/lib/task-runtime.js +1 -1
  107. package/lib/task.js +1 -1
  108. package/lib/tasks.js +1 -1
  109. package/lib/testing.js +1 -1
  110. package/lib/textfile.js +1 -1
  111. package/lib/toml.js +1 -1
  112. package/lib/typescript/projenrc.js +1 -1
  113. package/lib/typescript/typescript-typedoc.js +1 -1
  114. package/lib/typescript/typescript.d.ts +0 -7
  115. package/lib/typescript/typescript.js +23 -28
  116. package/lib/version.js +1 -1
  117. package/lib/vscode/devcontainer.js +1 -1
  118. package/lib/vscode/launch-config.js +1 -1
  119. package/lib/vscode/vscode.js +1 -1
  120. package/lib/web/next.js +3 -3
  121. package/lib/web/postcss.js +1 -1
  122. package/lib/web/react.js +6 -6
  123. package/lib/web/tailwind.js +1 -1
  124. package/lib/xmlfile.js +1 -1
  125. package/lib/yaml.js +1 -1
  126. package/node_modules/xmlbuilder2/node_modules/@types/node/README.md +1 -1
  127. package/node_modules/xmlbuilder2/node_modules/@types/node/assert.d.ts +1 -1
  128. package/node_modules/xmlbuilder2/node_modules/@types/node/async_hooks.d.ts +7 -3
  129. package/node_modules/xmlbuilder2/node_modules/@types/node/buffer.d.ts +9 -9
  130. package/node_modules/xmlbuilder2/node_modules/@types/node/child_process.d.ts +1 -1
  131. package/node_modules/xmlbuilder2/node_modules/@types/node/cluster.d.ts +1 -1
  132. package/node_modules/xmlbuilder2/node_modules/@types/node/console.d.ts +1 -1
  133. package/node_modules/xmlbuilder2/node_modules/@types/node/crypto.d.ts +2 -2
  134. package/node_modules/xmlbuilder2/node_modules/@types/node/dgram.d.ts +2 -2
  135. package/node_modules/xmlbuilder2/node_modules/@types/node/diagnostics_channel.d.ts +1 -1
  136. package/node_modules/xmlbuilder2/node_modules/@types/node/dns/promises.d.ts +12 -10
  137. package/node_modules/xmlbuilder2/node_modules/@types/node/dns.d.ts +17 -12
  138. package/node_modules/xmlbuilder2/node_modules/@types/node/domain.d.ts +1 -1
  139. package/node_modules/xmlbuilder2/node_modules/@types/node/events.d.ts +2 -2
  140. package/node_modules/xmlbuilder2/node_modules/@types/node/fs/promises.d.ts +5 -5
  141. package/node_modules/xmlbuilder2/node_modules/@types/node/fs.d.ts +62 -11
  142. package/node_modules/xmlbuilder2/node_modules/@types/node/http.d.ts +20 -3
  143. package/node_modules/xmlbuilder2/node_modules/@types/node/http2.d.ts +3 -3
  144. package/node_modules/xmlbuilder2/node_modules/@types/node/https.d.ts +1 -1
  145. package/node_modules/xmlbuilder2/node_modules/@types/node/index.d.ts +1 -1
  146. package/node_modules/xmlbuilder2/node_modules/@types/node/inspector.d.ts +4 -5
  147. package/node_modules/xmlbuilder2/node_modules/@types/node/net.d.ts +11 -11
  148. package/node_modules/xmlbuilder2/node_modules/@types/node/os.d.ts +1 -1
  149. package/node_modules/xmlbuilder2/node_modules/@types/node/package.json +2 -2
  150. package/node_modules/xmlbuilder2/node_modules/@types/node/path.d.ts +9 -1
  151. package/node_modules/xmlbuilder2/node_modules/@types/node/perf_hooks.d.ts +6 -4
  152. package/node_modules/xmlbuilder2/node_modules/@types/node/punycode.d.ts +1 -1
  153. package/node_modules/xmlbuilder2/node_modules/@types/node/querystring.d.ts +1 -1
  154. package/node_modules/xmlbuilder2/node_modules/@types/node/readline.d.ts +121 -14
  155. package/node_modules/xmlbuilder2/node_modules/@types/node/repl.d.ts +1 -1
  156. package/node_modules/xmlbuilder2/node_modules/@types/node/stream/web.d.ts +3 -65
  157. package/node_modules/xmlbuilder2/node_modules/@types/node/stream.d.ts +2 -2
  158. package/node_modules/xmlbuilder2/node_modules/@types/node/string_decoder.d.ts +1 -1
  159. package/node_modules/xmlbuilder2/node_modules/@types/node/timers.d.ts +1 -1
  160. package/node_modules/xmlbuilder2/node_modules/@types/node/tls.d.ts +3 -2
  161. package/node_modules/xmlbuilder2/node_modules/@types/node/trace_events.d.ts +1 -1
  162. package/node_modules/xmlbuilder2/node_modules/@types/node/tty.d.ts +1 -1
  163. package/node_modules/xmlbuilder2/node_modules/@types/node/url.d.ts +58 -18
  164. package/node_modules/xmlbuilder2/node_modules/@types/node/util.d.ts +3 -3
  165. package/node_modules/xmlbuilder2/node_modules/@types/node/v8.d.ts +3 -3
  166. package/node_modules/xmlbuilder2/node_modules/@types/node/vm.d.ts +1 -1
  167. package/node_modules/xmlbuilder2/node_modules/@types/node/wasi.d.ts +1 -1
  168. package/node_modules/xmlbuilder2/node_modules/@types/node/worker_threads.d.ts +4 -4
  169. package/node_modules/xmlbuilder2/node_modules/@types/node/zlib.d.ts +1 -1
  170. package/package.json +11 -7
  171. package/docs/project.md +0 -30
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.BuildWorkflow = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const component_1 = require("../component");
7
+ const github_1 = require("../github");
8
+ const constants_1 = require("../github/constants");
9
+ const workflows_model_1 = require("../github/workflows-model");
10
+ const BRANCH_REF = '${{ github.event.pull_request.head.ref }}';
11
+ const REPO_REF = '${{ github.event.pull_request.head.repo.full_name }}';
12
+ const PRIMARY_JOB_ID = 'build';
13
+ const SELF_MUTATION_STEP = 'self_mutation';
14
+ const SELF_MUTATION_COMMIT = 'self_mutation_commit';
15
+ /**
16
+ * @experimental
17
+ */
18
+ class BuildWorkflow extends component_1.Component {
19
+ /**
20
+ * @experimental
21
+ */
22
+ constructor(project, options) {
23
+ var _b, _c, _d, _e, _f, _g;
24
+ super(project);
25
+ const github = github_1.GitHub.of(project);
26
+ if (!github) {
27
+ throw new Error('BuildWorkflow is currently only supported for GitHub projects');
28
+ }
29
+ this.github = github;
30
+ this.preBuildSteps = (_b = options.preBuildSteps) !== null && _b !== void 0 ? _b : [];
31
+ this.postBuildSteps = (_c = options.postBuildSteps) !== null && _c !== void 0 ? _c : [];
32
+ this.mutableBuilds = (_d = options.mutableBuild) !== null && _d !== void 0 ? _d : true;
33
+ this.gitIdentity = (_e = options.gitIdentity) !== null && _e !== void 0 ? _e : constants_1.DEFAULT_GITHUB_ACTIONS_USER;
34
+ this.buildTask = options.buildTask;
35
+ this.artifactsDirectory = options.artifactsDirectory;
36
+ const antitamper = (_f = options.antitamper) !== null && _f !== void 0 ? _f : true;
37
+ // disable anti-tamper if build workflow is mutable
38
+ this.antitamperSteps = ((_g = !this.mutableBuilds) !== null && _g !== void 0 ? _g : antitamper) ? [{
39
+ // anti-tamper check (fails if there were changes to committed files)
40
+ // this will identify any non-committed files generated during build (e.g. test snapshots)
41
+ name: 'Anti-tamper check',
42
+ run: 'git diff --ignore-space-at-eol --exit-code',
43
+ }] : [];
44
+ this.workflow = new github_1.GithubWorkflow(github, 'build');
45
+ this.workflow.on({
46
+ pullRequest: {},
47
+ workflowDispatch: {},
48
+ });
49
+ this.workflow.addJob(PRIMARY_JOB_ID, {
50
+ runsOn: ['ubuntu-latest'],
51
+ container: options.containerImage ? { image: options.containerImage } : undefined,
52
+ env: {
53
+ CI: 'true',
54
+ ...options.env,
55
+ },
56
+ permissions: {
57
+ contents: workflows_model_1.JobPermission.WRITE,
58
+ },
59
+ outputs: {
60
+ [SELF_MUTATION_COMMIT]: {
61
+ stepId: SELF_MUTATION_STEP,
62
+ outputName: SELF_MUTATION_COMMIT,
63
+ },
64
+ },
65
+ steps: (() => this.renderSteps()),
66
+ });
67
+ this.primaryJobId = PRIMARY_JOB_ID;
68
+ this._buildJobIds = [PRIMARY_JOB_ID];
69
+ this.workflow.addJob('update-status', {
70
+ runsOn: ['ubuntu-latest'],
71
+ permissions: {
72
+ checks: workflows_model_1.JobPermission.WRITE,
73
+ actions: workflows_model_1.JobPermission.WRITE,
74
+ },
75
+ needs: (() => this._buildJobIds),
76
+ if: `\${{ needs.${this.primaryJobId}.outputs.${SELF_MUTATION_COMMIT} }}`,
77
+ steps: [
78
+ // if we pushed changes, we need to manually update the status check so
79
+ // that the PR will be green (we won't get here for forks with updates
80
+ // because the push would have failed).
81
+ {
82
+ name: 'Update status check (if changed)',
83
+ run: [
84
+ 'gh api',
85
+ '-X POST',
86
+ `/repos/${REPO_REF}/check-runs`,
87
+ `-F name="${PRIMARY_JOB_ID}"`,
88
+ `-F head_sha="\${{ needs.${this.primaryJobId}.outputs.${SELF_MUTATION_COMMIT} }}"`,
89
+ '-F status="completed"',
90
+ '-F conclusion="success"',
91
+ ].join(' '),
92
+ env: {
93
+ GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}',
94
+ },
95
+ },
96
+ // if we pushed changes, we need to mark the current commit as failed, so
97
+ // that GitHub auto-merge does not risk merging this commit before the
98
+ // event for the new commit has registered.
99
+ {
100
+ name: 'Cancel workflow (if changed)',
101
+ run: [
102
+ 'gh api',
103
+ '-X POST',
104
+ `/repos/${REPO_REF}/actions/runs/\${{ github.run_id }}/cancel`,
105
+ ].join(' '),
106
+ env: {
107
+ GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}',
108
+ },
109
+ },
110
+ ],
111
+ });
112
+ }
113
+ /**
114
+ * (experimental) Returns a list of job IDs that are part of the build.
115
+ *
116
+ * @experimental
117
+ */
118
+ get buildJobIds() {
119
+ return [...this._buildJobIds];
120
+ }
121
+ /**
122
+ * (experimental) Adds steps that are executed after the build.
123
+ *
124
+ * @param steps The job steps.
125
+ * @experimental
126
+ */
127
+ addPostBuildSteps(...steps) {
128
+ this.postBuildSteps.push(...steps);
129
+ }
130
+ /**
131
+ * (experimental) Adds another job to the build workflow which is executed after the build job succeeded.
132
+ *
133
+ * @param id The id of the new job.
134
+ * @param job The job specification.
135
+ * @experimental
136
+ */
137
+ addPostBuildJob(id, job) {
138
+ const steps = [];
139
+ if (this.artifactsDirectory) {
140
+ const artfiactName = 'build-artifact';
141
+ // add a step at the end of the build workflow which will upload the
142
+ // artifact so we can download it in each post-build job (do it once).
143
+ if (!this.uploadArtitactSteps) {
144
+ this.uploadArtitactSteps = [{
145
+ name: 'Upload artifact',
146
+ uses: 'actions/upload-artifact@v2.1.1',
147
+ // Setting to always will ensure that this step will run even if
148
+ // the previous ones have failed (e.g. coverage report, internal logs, etc)
149
+ if: 'always()',
150
+ with: {
151
+ name: artfiactName,
152
+ path: this.artifactsDirectory,
153
+ },
154
+ }];
155
+ }
156
+ steps.push({
157
+ name: 'Download build artifacts',
158
+ uses: 'actions/download-artifact@v2',
159
+ with: {
160
+ name: artfiactName,
161
+ path: this.artifactsDirectory,
162
+ },
163
+ });
164
+ }
165
+ steps.push(...job.steps);
166
+ this.workflow.addJob(id, {
167
+ needs: [this.primaryJobId],
168
+ ...job,
169
+ steps: steps,
170
+ });
171
+ // add to the list of build job IDs
172
+ this._buildJobIds.push(id);
173
+ }
174
+ /**
175
+ * Called (lazily) during synth to render the build job steps.
176
+ */
177
+ renderSteps() {
178
+ const steps = new Array();
179
+ steps.push({
180
+ name: 'Checkout',
181
+ uses: 'actions/checkout@v2',
182
+ with: this.mutableBuilds ? {
183
+ ref: BRANCH_REF,
184
+ repository: REPO_REF,
185
+ } : undefined,
186
+ });
187
+ steps.push(constants_1.setGitIdentityStep(this.gitIdentity));
188
+ steps.push(...this.antitamperSteps);
189
+ steps.push(...this.preBuildSteps);
190
+ steps.push({
191
+ name: this.buildTask.name,
192
+ run: this.github.project.runTaskCommand(this.buildTask),
193
+ });
194
+ steps.push(...this.postBuildSteps);
195
+ steps.push(...this.antitamperSteps);
196
+ steps.push({
197
+ name: 'Self mutation',
198
+ id: SELF_MUTATION_STEP,
199
+ run: [
200
+ 'if ! git diff --exit-code; then',
201
+ ' git add .',
202
+ ' git commit -m "chore: self mutation"',
203
+ ` git push origin HEAD:${BRANCH_REF}`,
204
+ ` echo "::set-output name=${SELF_MUTATION_COMMIT}::$(git rev-parse HEAD)"`,
205
+ 'fi',
206
+ ].join('\n'),
207
+ });
208
+ if (this.uploadArtitactSteps) {
209
+ steps.push(...this.uploadArtitactSteps);
210
+ }
211
+ return steps;
212
+ }
213
+ }
214
+ exports.BuildWorkflow = BuildWorkflow;
215
+ _a = JSII_RTTI_SYMBOL_1;
216
+ BuildWorkflow[_a] = { fqn: "projen.build.BuildWorkflow", version: "0.46.2" };
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtd29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVpbGQvYnVpbGQtd29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSw0Q0FBeUM7QUFDekMsc0NBQWdFO0FBQ2hFLG1EQUFzRjtBQUN0RiwrREFBd0U7QUFHeEUsTUFBTSxVQUFVLEdBQUcsMkNBQTJDLENBQUM7QUFDL0QsTUFBTSxRQUFRLEdBQUcsc0RBQXNELENBQUM7QUFDeEUsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDO0FBQy9CLE1BQU0sa0JBQWtCLEdBQUcsZUFBZSxDQUFDO0FBQzNDLE1BQU0sb0JBQW9CLEdBQUcsc0JBQXNCLENBQUM7Ozs7QUErQnBELE1BQWEsYUFBYyxTQUFRLHFCQUFTOzs7O0lBZTFDLFlBQVksT0FBZ0IsRUFBRSxPQUE2Qjs7UUFDekQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsTUFBTSxNQUFNLEdBQUcsZUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQywrREFBK0QsQ0FBQyxDQUFDO1NBQ2xGO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFFckIsSUFBSSxDQUFDLGFBQWEsU0FBRyxPQUFPLENBQUMsYUFBYSxtQ0FBSSxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLGNBQWMsU0FBRyxPQUFPLENBQUMsY0FBYyxtQ0FBSSxFQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLGFBQWEsU0FBRyxPQUFPLENBQUMsWUFBWSxtQ0FBSSxJQUFJLENBQUM7UUFDbEQsSUFBSSxDQUFDLFdBQVcsU0FBRyxPQUFPLENBQUMsV0FBVyxtQ0FBSSx1Q0FBMkIsQ0FBQztRQUN0RSxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDbkMsSUFBSSxDQUFDLGtC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QUFlLENBQUMsQ0FBQztRQUVwQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ1QsSUFBSSxFQUFFLGVBQWU7WUFDckIsRUFBRSxFQUFFLGtCQUFrQjtZQUN0QixHQUFHLEVBQUU7Z0JBQ0gsaUNBQWlDO2dCQUNqQyxhQUFhO2dCQUNiLHdDQUF3QztnQkFDeEMsMEJBQTBCLFVBQVUsRUFBRTtnQkFDdEMsNkJBQTZCLG9CQUFvQiwwQkFBMEI7Z0JBQzNFLElBQUk7YUFDTCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDYixDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUM1QixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7O0FBek5ILHNDQTBOQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhc2sgfSBmcm9tICcuLic7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnQnO1xuaW1wb3J0IHsgR2l0SHViLCBHaXRodWJXb3JrZmxvdywgR2l0SWRlbnRpdHkgfSBmcm9tICcuLi9naXRodWInO1xuaW1wb3J0IHsgREVGQVVMVF9HSVRIVUJfQUNUSU9OU19VU0VSLCBzZXRHaXRJZGVudGl0eVN0ZXAgfSBmcm9tICcuLi9naXRodWIvY29uc3RhbnRzJztcbmltcG9ydCB7IEpvYiwgSm9iUGVybWlzc2lvbiwgSm9iU3RlcCB9IGZyb20gJy4uL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWwnO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uL3Byb2plY3QnO1xuXG5jb25zdCBCUkFOQ0hfUkVGID0gJyR7eyBnaXRodWIuZXZlbnQucHVsbF9yZXF1ZXN0LmhlYWQucmVmIH19JztcbmNvbnN0IFJFUE9fUkVGID0gJyR7eyBnaXRodWIuZXZlbnQucHVsbF9yZXF1ZXN0LmhlYWQucmVwby5mdWxsX25hbWUgfX0nO1xuY29uc3QgUFJJTUFSWV9KT0JfSUQgPSAnYnVpbGQnO1xuY29uc3QgU0VMRl9NVVRBVElPTl9TVEVQID0gJ3NlbGZfbXV0YXRpb24nO1xuY29uc3QgU0VMRl9NVVRBVElPTl9DT01NSVQgPSAnc2VsZl9tdXRhdGlvbl9jb21taXQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkV29ya2Zsb3dPcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgYnVpbGRUYXNrOiBUYXNrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgYXJ0aWZhY3RzRGlyZWN0b3J5OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjb250YWluZXJJbWFnZT86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IG11dGFibGVCdWlsZD86IGJvb2xlYW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHByZUJ1aWxkU3RlcHM/OiBKb2JTdGVwW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBwb3N0QnVpbGRTdGVwcz86IEpvYlN0ZXBbXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGdpdElkZW50aXR5PzogR2l0SWRlbnRpdHk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGVudj86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBhbnRpdGFtcGVyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIEJ1aWxkV29ya2Zsb3cgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IHBvc3RCdWlsZFN0ZXBzOiBKb2JTdGVwW107XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJlQnVpbGRTdGVwczogSm9iU3RlcFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IGFudGl0YW1wZXJTdGVwczogSm9iU3RlcFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IG11dGFibGVCdWlsZHM6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgZ2l0SWRlbnRpdHk6IEdpdElkZW50aXR5O1xuICBwcml2YXRlIHJlYWRvbmx5IGJ1aWxkVGFzazogVGFzaztcbiAgcHJpdmF0ZSByZWFkb25seSBnaXRodWI6IEdpdEh1YjtcbiAgcHJpdmF0ZSByZWFkb25seSB3b3JrZmxvdzogR2l0aHViV29ya2Zsb3c7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJpbWFyeUpvYklkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXJ0aWZhY3RzRGlyZWN0b3J5Pzogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2J1aWxkSm9iSWRzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSB1cGxvYWRBcnRpdGFjdFN0ZXBzPzogSm9iU3RlcFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IEJ1aWxkV29ya2Zsb3dPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICBjb25zdCBnaXRodWIgPSBHaXRIdWIub2YocHJvamVjdCk7XG4gICAgaWYgKCFnaXRodWIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQnVpbGRXb3JrZmxvdyBpcyBjdXJyZW50bHkgb25seSBzdXBwb3J0ZWQgZm9yIEdpdEh1YiBwcm9qZWN0cycpO1xuICAgIH1cblxuICAgIHRoaXMuZ2l0aHViID0gZ2l0aHViO1xuXG4gICAgdGhpcy5wcmVCdWlsZFN0ZXBzID0gb3B0aW9ucy5wcmVCdWlsZFN0ZXBzID8/IFtdO1xuICAgIHRoaXMucG9zdEJ1aWxkU3RlcHMgPSBvcHRpb25zLnBvc3RCdWlsZFN0ZXBzID8/IFtdO1xuICAgIHRoaXMubXV0YWJsZUJ1aWxkcyA9IG9wdGlvbnMubXV0YWJsZUJ1aWxkID8/IHRydWU7XG4gICAgdGhpcy5naXRJZGVudGl0eSA9IG9wdGlvbnMuZ2l0SWRlbnRpdHkgPz8gREVGQVVMVF9HSVRIVUJfQUNUSU9OU19VU0VSO1xuICAgIHRoaXMuYnVpbGRUYXNrID0gb3B0aW9ucy5idWlsZFRhc2s7XG4gICAgdGhpcy5hcnRpZmFjdHNEaXJlY3RvcnkgPSBvcHRpb25zLmFydGlmYWN0c0RpcmVjdG9yeTtcblxuICAgIGNvbnN0IGFudGl0YW1wZXIgPSBvcHRpb25zLmFudGl0YW1wZXIgPz8gdHJ1ZTtcblxuICAgIC8vIGRpc2FibGUgYW50aS10YW1wZXIgaWYgYnVpbGQgd29ya2Zsb3cgaXMgbXV0YWJsZVxuICAgIHRoaXMuYW50aXRhbXBlclN0ZXBzID0gKCF0aGlzLm11dGFibGVCdWlsZHMgPz8gYW50aXRhbXBlcikgPyBbe1xuICAgICAgLy8gYW50aS10YW1wZXIgY2hlY2sgKGZhaWxzIGlmIHRoZXJlIHdlcmUgY2hhbmdlcyB0byBjb21taXR0ZWQgZmlsZXMpXG4gICAgICAvLyB0aGlzIHdpbGwgaWRlbnRpZnkgYW55IG5vbi1jb21taXR0ZWQgZmlsZXMgZ2VuZXJhdGVkIGR1cmluZyBidWlsZCAoZS5nLiB0ZXN0IHNuYXBzaG90cylcbiAgICAgIG5hbWU6ICdBbnRpLXRhbXBlciBjaGVjaycsXG4gICAgICBydW46ICdnaXQgZGlmZiAtLWlnbm9yZS1zcGFjZS1hdC1lb2wgLS1leGl0LWNvZGUnLFxuICAgIH1dIDogW107XG5cbiAgICB0aGlzLndvcmtmbG93ID0gbmV3IEdpdGh1YldvcmtmbG93KGdpdGh1YiwgJ2J1aWxkJyk7XG5cbiAgICB0aGlzLndvcmtmbG93Lm9uKHtcbiAgICAgIHB1bGxSZXF1ZXN0OiB7fSxcbiAgICAgIHdvcmtmbG93RGlzcGF0Y2g6IHt9LCAvLyBhbGxvdyBtYW51YWwgdHJpZ2dlcmluZ1xuICAgIH0pO1xuXG4gICAgdGhpcy53b3JrZmxvdy5hZGRKb2IoUFJJTUFSWV9KT0JfSUQsIHtcbiAgICAgIHJ1bnNPbjogWyd1YnVudHUtbGF0ZXN0J10sXG4gICAgICBjb250YWluZXI6IG9wdGlvbnMuY29udGFpbmVySW1hZ2UgPyB7IGltYWdlOiBvcHRpb25zLmNvbnRhaW5lckltYWdlIH0gOiB1bmRlZmluZWQsXG4gICAgICBlbnY6IHtcbiAgICAgICAgQ0k6ICd0cnVlJyxcbiAgICAgICAgLi4ub3B0aW9ucy5lbnYsXG4gICAgICB9LFxuICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICB9LFxuICAgICAgb3V0cHV0czoge1xuICAgICAgICBbU0VMRl9NVVRBVElPTl9DT01NSVRdOiB7XG4gICAgICAgICAgc3RlcElkOiBTRUxGX01VVEFUSU9OX1NURVAsXG4gICAgICAgICAgb3V0cHV0TmFtZTogU0VMRl9NVVRBVElPTl9DT01NSVQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc3RlcHM6ICgoKSA9PiB0aGlzLnJlbmRlclN0ZXBzKCkpIGFzIGFueSxcbiAgICB9KTtcblxuICAgIHRoaXMucHJpbWFyeUpvYklkID0gUFJJTUFSWV9KT0JfSUQ7XG5cbiAgICB0aGlzLl9idWlsZEpvYklkcyA9IFtQUklNQVJZX0pPQl9JRF07XG5cbiAgICB0aGlzLndvcmtmbG93LmFkZEpvYigndXBkYXRlLXN0YXR1cycsIHtcbiAgICAgIHJ1bnNPbjogWyd1YnVudHUtbGF0ZXN0J10sXG4gICAgICBwZXJtaXNzaW9uczoge1xuICAgICAgICBjaGVja3M6IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICAgIGFjdGlvbnM6IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICB9LFxuICAgICAgbmVlZHM6ICgoKSA9PiB0aGlzLl9idWlsZEpvYklkcykgYXMgYW55LCAvLyB3YWl0IGZvciBhbGwgYnVpbGQgam9icyB0byBmaW5pc2hcbiAgICAgIGlmOiBgXFwke3sgbmVlZHMuJHt0aGlzLnByaW1hcnlKb2JJZH0ub3V0cHV0cy4ke1NFTEZfTVVUQVRJT05fQ09NTUlUfSB9fWAsXG4gICAgICBzdGVwczogW1xuICAgICAgLy8gaWYgd2UgcHVzaGVkIGNoYW5nZXMsIHdlIG5lZWQgdG8gbWFudWFsbHkgdXBkYXRlIHRoZSBzdGF0dXMgY2hlY2sgc29cbiAgICAgIC8vIHRoYXQgdGhlIFBSIHdpbGwgYmUgZ3JlZW4gKHdlIHdvbid0IGdldCBoZXJlIGZvciBmb3JrcyB3aXRoIHVwZGF0ZXNcbiAgICAgIC8vIGJlY2F1c2UgdGhlIHB1c2ggd291bGQgaGF2ZSBmYWlsZWQpLlxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ1VwZGF0ZSBzdGF0dXMgY2hlY2sgKGlmIGNoYW5nZWQpJyxcbiAgICAgICAgICBydW46IFtcbiAgICAgICAgICAgICdnaCBhcGknLFxuICAgICAgICAgICAgJy1YIFBPU1QnLFxuICAgICAgICAgICAgYC9yZXBvcy8ke1JFUE9fUkVGfS9jaGVjay1ydW5zYCxcbiAgICAgICAgICAgIGAtRiBuYW1lPVwiJHtQUklNQVJZX0pPQl9JRH1cImAsXG4gICAgICAgICAgICBgLUYgaGVhZF9zaGE9XCJcXCR7eyBuZWVkcy4ke3RoaXMucHJpbWFyeUpvYklkfS5vdXRwdXRzLiR7U0VMRl9NVVRBVElPTl9DT01NSVR9IH19XCJgLFxuICAgICAgICAgICAgJy1GIHN0YXR1cz1cImNvbXBsZXRlZFwiJyxcbiAgICAgICAgICAgICctRiBjb25jbHVzaW9uPVwic3VjY2Vzc1wiJyxcbiAgICAgICAgICBdLmpvaW4oJyAnKSxcbiAgICAgICAgICBlbnY6IHtcbiAgICAgICAgICAgIEdJVEhVQl9UT0tFTjogJyR7eyBzZWNyZXRzLkdJVEhVQl9UT0tFTiB9fScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBpZiB3ZSBwdXNoZWQgY2hhbmdlcywgd2UgbmVlZCB0byBtYXJrIHRoZSBjdXJyZW50IGNvbW1pdCBhcyBmYWlsZWQsIHNvXG4gICAgICAgIC8vIHRoYXQgR2l0SHViIGF1dG8tbWVyZ2UgZG9lcyBub3QgcmlzayBtZXJnaW5nIHRoaXMgY29tbWl0IGJlZm9yZSB0aGVcbiAgICAgICAgLy8gZXZlbnQgZm9yIHRoZSBuZXcgY29tbWl0IGhhcyByZWdpc3RlcmVkLlxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0NhbmNlbCB3b3JrZmxvdyAoaWYgY2hhbmdlZCknLFxuICAgICAgICAgIHJ1bjogW1xuICAgICAgICAgICAgJ2doIGFwaScsXG4gICAgICAgICAgICAnLVggUE9TVCcsXG4gICAgICAgICAgICBgL3JlcG9zLyR7UkVQT19SRUZ9L2FjdGlvbnMvcnVucy9cXCR7eyBnaXRodWIucnVuX2lkIH19L2NhbmNlbGAsXG4gICAgICAgICAgXS5qb2luKCcgJyksXG4gICAgICAgICAgZW52OiB7XG4gICAgICAgICAgICBHSVRIVUJfVE9LRU46ICcke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX0nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIGdldCBidWlsZEpvYklkcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl9idWlsZEpvYklkc107XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgYWRkUG9zdEJ1aWxkU3RlcHMoLi4uc3RlcHM6IEpvYlN0ZXBbXSk6IHZvaWQge1xuICAgIHRoaXMucG9zdEJ1aWxkU3RlcHMucHVzaCguLi5zdGVwcyk7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIGFkZFBvc3RCdWlsZEpvYihpZDogc3RyaW5nLCBqb2I6IEpvYikge1xuICAgIGNvbnN0IHN0ZXBzID0gW107XG5cbiAgICBpZiAodGhpcy5hcnRpZmFjdHNEaXJlY3RvcnkpIHtcbiAgICAgIGNvbnN0IGFydGZpYWN0TmFtZSA9ICdidWlsZC1hcnRpZmFjdCc7XG5cbiAgICAgIC8vIGFkZCBhIHN0ZXAgYXQgdGhlIGVuZCBvZiB0aGUgYnVpbGQgd29ya2Zsb3cgd2hpY2ggd2lsbCB1cGxvYWQgdGhlXG4gICAgICAvLyBhcnRpZmFjdCBzbyB3ZSBjYW4gZG93bmxvYWQgaXQgaW4gZWFjaCBwb3N0LWJ1aWxkIGpvYiAoZG8gaXQgb25jZSkuXG4gICAgICBpZiAoIXRoaXMudXBsb2FkQXJ0aXRhY3RTdGVwcykge1xuICAgICAgICB0aGlzLnVwbG9hZEFydGl0YWN0U3RlcHMgPSBbe1xuICAgICAgICAgIG5hbWU6ICdVcGxvYWQgYXJ0aWZhY3QnLFxuICAgICAgICAgIHVzZXM6ICdhY3Rpb25zL3VwbG9hZC1hcnRpZmFjdEB2Mi4xLjEnLFxuICAgICAgICAgIC8vIFNldHRpbmcgdG8gYWx3YXlzIHdpbGwgZW5zdXJlIHRoYXQgdGhpcyBzdGVwIHdpbGwgcnVuIGV2ZW4gaWZcbiAgICAgICAgICAvLyB0aGUgcHJldmlvdXMgb25lcyBoYXZlIGZhaWxlZCAoZS5nLiBjb3ZlcmFnZSByZXBvcnQsIGludGVybmFsIGxvZ3MsIGV0YylcbiAgICAgICAgICBpZjogJ2Fsd2F5cygpJyxcbiAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICBuYW1lOiBhcnRmaWFjdE5hbWUsXG4gICAgICAgICAgICBwYXRoOiB0aGlzLmFydGlmYWN0c0RpcmVjdG9yeSxcbiAgICAgICAgICB9LFxuICAgICAgICB9XTtcbiAgICAgIH1cblxuICAgICAgc3RlcHMucHVzaCh7XG4gICAgICAgIG5hbWU6ICdEb3dubG9hZCBidWlsZCBhcnRpZmFjdHMnLFxuICAgICAgICB1c2VzOiAnYWN0aW9ucy9kb3dubG9hZC1hcnRpZmFjdEB2MicsXG4gICAgICAgIHdpdGg6IHtcbiAgICAgICAgICBuYW1lOiBhcnRmaWFjdE5hbWUsXG4gICAgICAgICAgcGF0aDogdGhpcy5hcnRpZmFjdHNEaXJlY3RvcnksXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBzdGVwcy5wdXNoKC4uLmpvYi5zdGVwcyk7XG5cbiAgICB0aGlzLndvcmtmbG93LmFkZEpvYihpZCwge1xuICAgICAgbmVlZHM6IFt0aGlzLnByaW1hcnlKb2JJZF0sXG4gICAgICAuLi5qb2IsXG4gICAgICBzdGVwczogc3RlcHMsXG4gICAgfSk7XG5cbiAgICAvLyBhZGQgdG8gdGhlIGxpc3Qgb2YgYnVpbGQgam9iIElEc1xuICAgIHRoaXMuX2J1aWxkSm9iSWRzLnB1c2goaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCAobGF6aWx5KSBkdXJpbmcgc3ludGggdG8gcmVuZGVyIHRoZSBidWlsZCBqb2Igc3RlcHMuXG4gICAqL1xuICBwcml2YXRlIHJlbmRlclN0ZXBzKCk6IEpvYlN0ZXBbXSB7XG4gICAgY29uc3Qgc3RlcHMgPSBuZXcgQXJyYXk8Sm9iU3RlcD4oKTtcblxuICAgIHN0ZXBzLnB1c2goe1xuICAgICAgbmFtZTogJ0NoZWNrb3V0JyxcbiAgICAgIHVzZXM6ICdhY3Rpb25zL2NoZWNrb3V0QHYyJyxcbiAgICAgIHdpdGg6IHRoaXMubXV0YWJsZUJ1aWxkcyA/IHtcbiAgICAgICAgcmVmOiBCUkFOQ0hfUkVGLFxuICAgICAgICByZXBvc2l0b3J5OiBSRVBPX1JFRixcbiAgICAgIH0gOiB1bmRlZmluZWQsXG4gICAgfSk7XG5cbiAgICBzdGVwcy5wdXNoKHNldEdpdElkZW50aXR5U3RlcCh0aGlzLmdpdElkZW50aXR5KSk7XG5cbiAgICBzdGVwcy5wdXNoKC4uLnRoaXMuYW50aXRhbXBlclN0ZXBzKTtcbiAgICBzdGVwcy5wdXNoKC4uLnRoaXMucHJlQnVpbGRTdGVwcyk7XG4gICAgc3RlcHMucHVzaCh7XG4gICAgICBuYW1lOiB0aGlzLmJ1aWxkVGFzay5uYW1lLFxuICAgICAgcnVuOiB0aGlzLmdpdGh1Yi5wcm9qZWN0LnJ1blRhc2tDb21tYW5kKHRoaXMuYnVpbGRUYXNrKSxcbiAgICB9KTtcbiAgICBzdGVwcy5wdXNoKC4uLnRoaXMucG9zdEJ1aWxkU3RlcHMpO1xuICAgIHN0ZXBzLnB1c2goLi4udGhpcy5hbnRpdGFtcGVyU3RlcHMpO1xuXG4gICAgc3RlcHMucHVzaCh7XG4gICAgICBuYW1lOiAnU2VsZiBtdXRhdGlvbicsXG4gICAgICBpZDogU0VMRl9NVVRBVElPTl9TVEVQLFxuICAgICAgcnVuOiBbXG4gICAgICAgICdpZiAhIGdpdCBkaWZmIC0tZXhpdC1jb2RlOyB0aGVuJyxcbiAgICAgICAgJyAgZ2l0IGFkZCAuJyxcbiAgICAgICAgJyAgZ2l0IGNvbW1pdCAtbSBcImNob3JlOiBzZWxmIG11dGF0aW9uXCInLFxuICAgICAgICBgICBnaXQgcHVzaCBvcmlnaW4gSEVBRDoke0JSQU5DSF9SRUZ9YCxcbiAgICAgICAgYCAgZWNobyBcIjo6c2V0LW91dHB1dCBuYW1lPSR7U0VMRl9NVVRBVElPTl9DT01NSVR9OjokKGdpdCByZXYtcGFyc2UgSEVBRClcImAsXG4gICAgICAgICdmaScsXG4gICAgICBdLmpvaW4oJ1xcbicpLFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMudXBsb2FkQXJ0aXRhY3RTdGVwcykge1xuICAgICAgc3RlcHMucHVzaCguLi50aGlzLnVwbG9hZEFydGl0YWN0U3RlcHMpO1xuICAgIH1cblxuICAgIHJldHVybiBzdGVwcztcbiAgfVxufSJdfQ==
@@ -0,0 +1 @@
1
+ export * from './build-workflow';
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./build-workflow"), exports);
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVpbGQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsbURBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9idWlsZC13b3JrZmxvdyc7XG4iXX0=
@@ -26,5 +26,5 @@ class ConstructLibrary extends jsii_project_1.JsiiProject {
26
26
  }
27
27
  exports.ConstructLibrary = ConstructLibrary;
28
28
  _a = JSII_RTTI_SYMBOL_1;
29
- ConstructLibrary[_a] = { fqn: "projen.cdk.ConstructLibrary", version: "0.45.3" };
29
+ ConstructLibrary[_a] = { fqn: "projen.cdk.ConstructLibrary", version: "0.46.2" };
30
30
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0LWxpYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jZGsvY29uc3RydWN0LWxpYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlEQUFpRTs7Ozs7O0FBZ0JqRSxNQUFzQixnQkFBaUIsU0FBUSwwQkFBVzs7OztJQUN4RCxZQUFZLE9BQWdDO1FBQzFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyx5QkFBeUI7UUFDbEQsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRTtnQkFDaEMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTztnQkFDaEMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUTthQUNuQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7O0FBWEgsNENBWUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKc2lpUHJvamVjdCwgSnNpaVByb2plY3RPcHRpb25zIH0gZnJvbSAnLi9qc2lpLXByb2plY3QnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnN0cnVjdExpYnJhcnlPcHRpb25zIGV4dGVuZHMgSnNpaVByb2plY3RPcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNhdGFsb2c/OiBDYXRhbG9nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhdGFsb2cge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB0d2l0dGVyPzogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBhbm5vdW5jZT86IGJvb2xlYW47XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb25zdHJ1Y3RMaWJyYXJ5IGV4dGVuZHMgSnNpaVByb2plY3Qge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucykge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5hZGRLZXl3b3JkcygnY2RrJyk7IC8vIHB1Ymxpc2ggdG8gdGhlIGNhdGFsb2dcbiAgICBpZiAob3B0aW9ucy5jYXRhbG9nKSB7XG4gICAgICB0aGlzLnBhY2thZ2UuYWRkRmllbGQoJ2F3c2Nka2lvJywge1xuICAgICAgICB0d2l0dGVyOiBvcHRpb25zLmNhdGFsb2cudHdpdHRlcixcbiAgICAgICAgYW5ub3VuY2U6IG9wdGlvbnMuY2F0YWxvZy5hbm5vdW5jZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,14 @@
1
+ import { Tools } from '../github/workflows-model';
2
+ export declare type JsiiPacmakTarget = 'js' | 'go' | 'java' | 'python' | 'dotnet';
3
+ /**
4
+ * GitHub workflow job steps for setting up the tools required for various JSII targets.
5
+ */
6
+ export declare const JSII_TOOLCHAIN: Record<JsiiPacmakTarget, Tools>;
7
+ /**
8
+ * Determines the jsii/superchain image to use based on the minimum node
9
+ * version.
10
+ *
11
+ * @param minNodeVersion The minimum node version of the project. If not
12
+ * specified, v14.17.4 is used.
13
+ */
14
+ export declare function determineSuperchainImage(minNodeVersion?: string): string;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.determineSuperchainImage = exports.JSII_TOOLCHAIN = void 0;
4
+ const semver = require("semver");
5
+ /**
6
+ * GitHub workflow job steps for setting up the tools required for various JSII targets.
7
+ */
8
+ exports.JSII_TOOLCHAIN = {
9
+ js: {},
10
+ java: { java: { version: '11.x' } },
11
+ python: { python: { version: '3.x' } },
12
+ go: { go: { version: '^1.16.0' } },
13
+ dotnet: { dotnet: { version: '3.x' } },
14
+ };
15
+ const SUPERCHAIN_IMAGE = 'jsii/superchain:1-buster-slim';
16
+ const SUPERCHAIN_NODE_VERSIONS = [12, 14, 16]; // supported jsii/superchain image tags: `1-buster-slim-nodeNN`
17
+ /**
18
+ * Determines the jsii/superchain image to use based on the minimum node
19
+ * version.
20
+ *
21
+ * @param minNodeVersion The minimum node version of the project. If not
22
+ * specified, v14.17.4 is used.
23
+ */
24
+ function determineSuperchainImage(minNodeVersion) {
25
+ // the default image (`jsii/superchain:1-buster-slim`) will include the
26
+ // minimum supported node version of JSII (as of this writing it is 12.x).
27
+ if (!minNodeVersion) {
28
+ return SUPERCHAIN_IMAGE;
29
+ }
30
+ const major = semver.major(minNodeVersion);
31
+ if (!SUPERCHAIN_NODE_VERSIONS.includes(major)) {
32
+ throw new Error(`No jsii/superchain image available for node ${major}.x. Supported node versions: ${SUPERCHAIN_NODE_VERSIONS.map(m => `${m}.x`).join(',')}`);
33
+ }
34
+ return `${SUPERCHAIN_IMAGE}-node${major}`;
35
+ }
36
+ exports.determineSuperchainImage = determineSuperchainImage;
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Nkay9jb25zdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQWlDO0FBS2pDOztHQUVHO0FBQ1UsUUFBQSxjQUFjLEdBQW9DO0lBQzdELEVBQUUsRUFBRSxFQUFFO0lBQ04sSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO0lBQ25DLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRTtJQUN0QyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUU7SUFDbEMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO0NBQ3ZDLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHLCtCQUErQixDQUFDO0FBQ3pELE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsK0RBQStEO0FBRTlHOzs7Ozs7R0FNRztBQUNILFNBQWdCLHdCQUF3QixDQUFDLGNBQXVCO0lBQzlELHVFQUF1RTtJQUN2RSwwRUFBMEU7SUFDMUUsSUFBSSxDQUFDLGNBQWMsRUFBRTtRQUNuQixPQUFPLGdCQUFnQixDQUFDO0tBQ3pCO0lBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUUzQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQzdDLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLEtBQUssZ0NBQWdDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQzlKO0lBRUQsT0FBTyxHQUFHLGdCQUFnQixRQUFRLEtBQUssRUFBRSxDQUFDO0FBQzVDLENBQUM7QUFkRCw0REFjQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHsgVG9vbHMgfSBmcm9tICcuLi9naXRodWIvd29ya2Zsb3dzLW1vZGVsJztcblxuZXhwb3J0IHR5cGUgSnNpaVBhY21ha1RhcmdldCA9ICdqcycgfCAnZ28nIHwgJ2phdmEnIHwgJ3B5dGhvbicgfCAnZG90bmV0JztcblxuLyoqXG4gKiBHaXRIdWIgd29ya2Zsb3cgam9iIHN0ZXBzIGZvciBzZXR0aW5nIHVwIHRoZSB0b29scyByZXF1aXJlZCBmb3IgdmFyaW91cyBKU0lJIHRhcmdldHMuXG4gKi9cbmV4cG9ydCBjb25zdCBKU0lJX1RPT0xDSEFJTjogUmVjb3JkPEpzaWlQYWNtYWtUYXJnZXQsIFRvb2xzPiA9IHtcbiAganM6IHt9LFxuICBqYXZhOiB7IGphdmE6IHsgdmVyc2lvbjogJzExLngnIH0gfSxcbiAgcHl0aG9uOiB7IHB5dGhvbjogeyB2ZXJzaW9uOiAnMy54JyB9IH0sXG4gIGdvOiB7IGdvOiB7IHZlcnNpb246ICdeMS4xNi4wJyB9IH0sXG4gIGRvdG5ldDogeyBkb3RuZXQ6IHsgdmVyc2lvbjogJzMueCcgfSB9LFxufTtcblxuY29uc3QgU1VQRVJDSEFJTl9JTUFHRSA9ICdqc2lpL3N1cGVyY2hhaW46MS1idXN0ZXItc2xpbSc7XG5jb25zdCBTVVBFUkNIQUlOX05PREVfVkVSU0lPTlMgPSBbMTIsIDE0LCAxNl07IC8vIHN1cHBvcnRlZCBqc2lpL3N1cGVyY2hhaW4gaW1hZ2UgdGFnczogYDEtYnVzdGVyLXNsaW0tbm9kZU5OYFxuXG4vKipcbiAqIERldGVybWluZXMgdGhlIGpzaWkvc3VwZXJjaGFpbiBpbWFnZSB0byB1c2UgYmFzZWQgb24gdGhlIG1pbmltdW0gbm9kZVxuICogdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0gbWluTm9kZVZlcnNpb24gVGhlIG1pbmltdW0gbm9kZSB2ZXJzaW9uIG9mIHRoZSBwcm9qZWN0LiBJZiBub3RcbiAqIHNwZWNpZmllZCwgdjE0LjE3LjQgaXMgdXNlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRldGVybWluZVN1cGVyY2hhaW5JbWFnZShtaW5Ob2RlVmVyc2lvbj86IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIHRoZSBkZWZhdWx0IGltYWdlIChganNpaS9zdXBlcmNoYWluOjEtYnVzdGVyLXNsaW1gKSB3aWxsIGluY2x1ZGUgdGhlXG4gIC8vIG1pbmltdW0gc3VwcG9ydGVkIG5vZGUgdmVyc2lvbiBvZiBKU0lJIChhcyBvZiB0aGlzIHdyaXRpbmcgaXQgaXMgMTIueCkuXG4gIGlmICghbWluTm9kZVZlcnNpb24pIHtcbiAgICByZXR1cm4gU1VQRVJDSEFJTl9JTUFHRTtcbiAgfVxuXG4gIGNvbnN0IG1ham9yID0gc2VtdmVyLm1ham9yKG1pbk5vZGVWZXJzaW9uKTtcblxuICBpZiAoIVNVUEVSQ0hBSU5fTk9ERV9WRVJTSU9OUy5pbmNsdWRlcyhtYWpvcikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGpzaWkvc3VwZXJjaGFpbiBpbWFnZSBhdmFpbGFibGUgZm9yIG5vZGUgJHttYWpvcn0ueC4gU3VwcG9ydGVkIG5vZGUgdmVyc2lvbnM6ICR7U1VQRVJDSEFJTl9OT0RFX1ZFUlNJT05TLm1hcChtID0+IGAke219LnhgKS5qb2luKCcsJyl9YCk7XG4gIH1cblxuICByZXR1cm4gYCR7U1VQRVJDSEFJTl9JTUFHRX0tbm9kZSR7bWFqb3J9YDtcbn0iXX0=
@@ -25,5 +25,5 @@ class JsiiDocgen {
25
25
  }
26
26
  exports.JsiiDocgen = JsiiDocgen;
27
27
  _a = JSII_RTTI_SYMBOL_1;
28
- JsiiDocgen[_a] = { fqn: "projen.cdk.JsiiDocgen", version: "0.45.3" };
28
+ JsiiDocgen[_a] = { fqn: "projen.cdk.JsiiDocgen", version: "0.46.2" };
29
29
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1kb2NnZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2RrL2pzaWktZG9jZ2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFHQSxNQUFhLFVBQVU7Ozs7SUFDckIsWUFBWSxPQUFvQjtRQUM5QixPQUFPLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWxDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3ZDLFdBQVcsRUFBRSxxQ0FBcUM7WUFDbEQsSUFBSSxFQUFFLGFBQWE7U0FDcEIsQ0FBQyxDQUFDO1FBRUgsZ0VBQWdFO1FBQ2hFLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7O0FBWkgsZ0NBYUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKc2lpUHJvamVjdCB9IGZyb20gJy4vanNpaS1wcm9qZWN0JztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIEpzaWlEb2NnZW4ge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBKc2lpUHJvamVjdCkge1xuICAgIHByb2plY3QuYWRkRGV2RGVwcygnanNpaS1kb2NnZW4nKTtcblxuICAgIGNvbnN0IGRvY2dlbiA9IHByb2plY3QuYWRkVGFzaygnZG9jZ2VuJywge1xuICAgICAgZGVzY3JpcHRpb246ICdHZW5lcmF0ZSBBUEkubWQgZnJvbSAuanNpaSBtYW5pZmVzdCcsXG4gICAgICBleGVjOiAnanNpaS1kb2NnZW4nLFxuICAgIH0pO1xuXG4gICAgLy8gc3Bhd24gZG9jZ2VuIGFmdGVyIGNvbXBpbGF0aW9uIChyZXF1aXJlcyB0aGUgLmpzaWkgbWFuaWZlc3QpLlxuICAgIHByb2plY3QucG9zdENvbXBpbGVUYXNrLnNwYXduKGRvY2dlbik7XG4gICAgcHJvamVjdC5naXRpZ25vcmUuaW5jbHVkZSgnL0FQSS5tZCcpO1xuICB9XG59Il19
@@ -184,8 +184,21 @@ export declare class JsiiProject extends TypeScriptProject {
184
184
  * @experimental
185
185
  */
186
186
  readonly eslint?: Eslint;
187
+ private readonly packageAllTask;
187
188
  /**
188
189
  * @experimental
189
190
  */
190
191
  constructor(options: JsiiProjectOptions);
192
+ /**
193
+ * Returns the jsii/superchain image that is compatible with the minimum node
194
+ * version of this project.
195
+ */
196
+ private get superchainImage();
197
+ /**
198
+ * Adds a target language to the build workflow and creates a package task.
199
+ * @param language
200
+ * @returns
201
+ */
202
+ private addPackagingTarget;
203
+ private pacmakForLanguage;
191
204
  }