projen 0.102.0 → 0.103.1

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 (190) hide show
  1. package/.jsii +1173 -1104
  2. package/README.md +23 -0
  3. package/lib/ai-instructions.js +2 -2
  4. package/lib/awscdk/auto-discover.js +6 -6
  5. package/lib/awscdk/awscdk-app-java.js +1 -1
  6. package/lib/awscdk/awscdk-app-py.js +1 -1
  7. package/lib/awscdk/awscdk-app-ts.js +1 -1
  8. package/lib/awscdk/awscdk-construct.js +1 -1
  9. package/lib/awscdk/awscdk-deps-java.js +1 -1
  10. package/lib/awscdk/awscdk-deps-js.js +1 -1
  11. package/lib/awscdk/awscdk-deps-py.js +1 -1
  12. package/lib/awscdk/awscdk-deps.js +1 -1
  13. package/lib/awscdk/cdk-config.d.ts +4 -0
  14. package/lib/awscdk/cdk-config.js +4 -4
  15. package/lib/awscdk/cdk-tasks.js +1 -1
  16. package/lib/awscdk/integration-test.d.ts +1 -0
  17. package/lib/awscdk/integration-test.js +38 -10
  18. package/lib/awscdk/lambda-extension.js +1 -1
  19. package/lib/awscdk/lambda-function.js +2 -2
  20. package/lib/build/build-workflow.js +4 -3
  21. package/lib/cdk/auto-discover-base.js +2 -2
  22. package/lib/cdk/construct-lib.js +1 -1
  23. package/lib/cdk/integration-test-base.js +17 -3
  24. package/lib/cdk/jsii-build.js +10 -4
  25. package/lib/cdk/jsii-docgen.js +1 -1
  26. package/lib/cdk/jsii-project.d.ts +2 -4
  27. package/lib/cdk/jsii-project.js +10 -11
  28. package/lib/cdk8s/auto-discover.js +2 -2
  29. package/lib/cdk8s/cdk8s-app-py.js +1 -1
  30. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  31. package/lib/cdk8s/cdk8s-construct.js +1 -1
  32. package/lib/cdk8s/cdk8s-deps-py.js +1 -1
  33. package/lib/cdk8s/cdk8s-deps.js +1 -1
  34. package/lib/cdk8s/integration-test.js +3 -3
  35. package/lib/cdktf/cdktf-construct.js +1 -1
  36. package/lib/cdktn/cdktn-app-ts.js +1 -1
  37. package/lib/cdktn/cdktn-config.js +1 -1
  38. package/lib/cdktn/cdktn-construct.js +1 -1
  39. package/lib/cdktn/cdktn-deps.js +1 -1
  40. package/lib/cdktn/cdktn-tasks.js +1 -1
  41. package/lib/circleci/circleci.js +1 -1
  42. package/lib/cleanup.js +6 -33
  43. package/lib/cli/task-runtime.js +30 -8
  44. package/lib/clobber.js +11 -6
  45. package/lib/component.js +2 -2
  46. package/lib/dependencies.js +1 -1
  47. package/lib/dev-env.js +1 -1
  48. package/lib/docker-compose/docker-compose-service.js +1 -1
  49. package/lib/docker-compose/docker-compose.js +1 -1
  50. package/lib/file.js +1 -1
  51. package/lib/gitattributes.js +1 -1
  52. package/lib/github/actions-provider.js +1 -1
  53. package/lib/github/auto-approve.d.ts +2 -15
  54. package/lib/github/auto-approve.js +3 -4
  55. package/lib/github/auto-merge.js +1 -1
  56. package/lib/github/auto-queue.d.ts +2 -6
  57. package/lib/github/auto-queue.js +3 -3
  58. package/lib/github/dependabot.js +1 -1
  59. package/lib/github/dependency-review.d.ts +2 -12
  60. package/lib/github/dependency-review.js +3 -4
  61. package/lib/github/github-credentials.js +1 -1
  62. package/lib/github/github-project.js +1 -1
  63. package/lib/github/github.d.ts +26 -0
  64. package/lib/github/github.js +17 -2
  65. package/lib/github/merge-queue.js +1 -1
  66. package/lib/github/mergify.js +1 -1
  67. package/lib/github/pr-template.js +1 -1
  68. package/lib/github/private/util.d.ts +0 -2
  69. package/lib/github/private/util.js +1 -13
  70. package/lib/github/pull-request-backport.d.ts +2 -1
  71. package/lib/github/pull-request-backport.js +3 -3
  72. package/lib/github/pull-request-lint.d.ts +2 -15
  73. package/lib/github/pull-request-lint.js +4 -5
  74. package/lib/github/stale.d.ts +2 -15
  75. package/lib/github/stale.js +3 -4
  76. package/lib/github/task-workflow-job.js +4 -4
  77. package/lib/github/task-workflow.js +1 -1
  78. package/lib/github/workflow-actions.js +4 -3
  79. package/lib/github/workflow-jobs.js +1 -1
  80. package/lib/github/workflow-steps.js +1 -1
  81. package/lib/github/workflows.js +1 -1
  82. package/lib/gitlab/configuration.js +1 -1
  83. package/lib/gitlab/gitlab-configuration.js +1 -1
  84. package/lib/gitlab/nested-configuration.js +1 -1
  85. package/lib/gitpod.d.ts +6 -0
  86. package/lib/gitpod.js +2 -2
  87. package/lib/ignore-file.js +1 -1
  88. package/lib/ini.js +1 -1
  89. package/lib/java/java-project.js +1 -1
  90. package/lib/java/junit.js +1 -1
  91. package/lib/java/maven-compile.js +1 -1
  92. package/lib/java/maven-packaging.js +8 -3
  93. package/lib/java/maven-sample.js +1 -1
  94. package/lib/java/pom.js +2 -2
  95. package/lib/java/projenrc.js +13 -4
  96. package/lib/javascript/biome/biome.js +9 -4
  97. package/lib/javascript/bundler.d.ts +8 -0
  98. package/lib/javascript/bundler.js +13 -13
  99. package/lib/javascript/eslint.d.ts +7 -0
  100. package/lib/javascript/eslint.js +14 -11
  101. package/lib/javascript/jest.d.ts +8 -0
  102. package/lib/javascript/jest.js +17 -11
  103. package/lib/javascript/license-checker.js +1 -1
  104. package/lib/javascript/node-package.d.ts +1 -1
  105. package/lib/javascript/node-package.js +32 -15
  106. package/lib/javascript/node-project.js +38 -25
  107. package/lib/javascript/npm-config.js +1 -1
  108. package/lib/javascript/pnpm-workspace-config.js +2 -2
  109. package/lib/javascript/pnpm-workspace.js +1 -1
  110. package/lib/javascript/prettier.js +1 -1
  111. package/lib/javascript/projenrc.js +1 -1
  112. package/lib/javascript/typescript-config.js +2 -2
  113. package/lib/javascript/upgrade-dependencies.js +9 -6
  114. package/lib/javascript/yarnrc.js +1 -1
  115. package/lib/json-patch.js +1 -1
  116. package/lib/json.js +1 -1
  117. package/lib/license.js +1 -1
  118. package/lib/logger.js +1 -1
  119. package/lib/makefile.d.ts +2 -0
  120. package/lib/makefile.js +2 -2
  121. package/lib/object-file.js +1 -1
  122. package/lib/project-build.js +1 -1
  123. package/lib/project-tree.js +1 -1
  124. package/lib/project.d.ts +4 -0
  125. package/lib/project.js +2 -2
  126. package/lib/projects.js +1 -1
  127. package/lib/projenrc-json.js +1 -1
  128. package/lib/projenrc.js +1 -1
  129. package/lib/python/pip.js +1 -1
  130. package/lib/python/poetry.js +7 -4
  131. package/lib/python/projenrc.js +1 -1
  132. package/lib/python/pyproject-toml-file.js +1 -1
  133. package/lib/python/pytest-sample.js +1 -1
  134. package/lib/python/pytest.d.ts +5 -2
  135. package/lib/python/pytest.js +9 -8
  136. package/lib/python/python-project.js +1 -1
  137. package/lib/python/python-sample.js +1 -1
  138. package/lib/python/requirements-file.js +1 -1
  139. package/lib/python/setuppy.js +1 -1
  140. package/lib/python/setuptools.js +10 -4
  141. package/lib/python/uv-config.js +1 -1
  142. package/lib/python/uv.js +3 -3
  143. package/lib/python/venv.js +1 -1
  144. package/lib/readme.js +1 -1
  145. package/lib/release/publisher.d.ts +5 -0
  146. package/lib/release/publisher.js +90 -37
  147. package/lib/release/release-trigger.d.ts +10 -0
  148. package/lib/release/release-trigger.js +7 -2
  149. package/lib/release/release.d.ts +17 -2
  150. package/lib/release/release.js +16 -10
  151. package/lib/renovatebot.js +1 -1
  152. package/lib/run-task.cjs +13 -4
  153. package/lib/runner-options.d.ts +34 -0
  154. package/lib/runner-options.js +1 -1
  155. package/lib/sample-file.js +2 -2
  156. package/lib/script-runner.js +1 -1
  157. package/lib/source-code.js +1 -1
  158. package/lib/task-model.d.ts +3 -3
  159. package/lib/task-model.js +1 -1
  160. package/lib/task-shell.d.ts +3 -0
  161. package/lib/task-shell.js +5 -2
  162. package/lib/task.d.ts +4 -0
  163. package/lib/task.js +2 -2
  164. package/lib/tasks.js +1 -1
  165. package/lib/testing.js +1 -1
  166. package/lib/textfile.js +1 -1
  167. package/lib/toml.js +1 -1
  168. package/lib/typescript/projenrc-ts.js +1 -1
  169. package/lib/typescript/projenrc.js +1 -1
  170. package/lib/typescript/typescript-runner.js +1 -1
  171. package/lib/typescript/typescript-typedoc.js +1 -1
  172. package/lib/typescript/typescript.js +5 -5
  173. package/lib/util/dax.d.ts +12 -1
  174. package/lib/util/dax.js +17 -4
  175. package/lib/util/path.d.ts +39 -0
  176. package/lib/util/path.js +90 -1
  177. package/lib/version.js +2 -2
  178. package/lib/vscode/devcontainer.js +1 -1
  179. package/lib/vscode/extensions.js +1 -1
  180. package/lib/vscode/launch-config.js +1 -1
  181. package/lib/vscode/settings.js +1 -1
  182. package/lib/vscode/vscode.js +1 -1
  183. package/lib/web/next.js +3 -3
  184. package/lib/web/postcss.js +1 -1
  185. package/lib/web/react.js +3 -3
  186. package/lib/web/tailwind.js +1 -1
  187. package/lib/xmlfile.js +1 -1
  188. package/lib/yaml.js +1 -1
  189. package/package.json +1 -1
  190. package/BREAKING_CHANGES.md +0 -855
@@ -220,7 +220,7 @@ function toJson_StaticMetadata(obj) {
220
220
  */
221
221
  class ExcludeNewerOverride {
222
222
  value;
223
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.uvConfig.ExcludeNewerOverride", version: "0.102.0" };
223
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.uvConfig.ExcludeNewerOverride", version: "0.103.1" };
224
224
  static fromBoolean(value) {
225
225
  return new ExcludeNewerOverride(value);
226
226
  }
package/lib/python/uv.js CHANGED
@@ -11,7 +11,7 @@ const exec_1 = require("../util/exec");
11
11
  * Manage project dependencies, virtual environments, and packaging through uv.
12
12
  */
13
13
  class Uv extends component_1.Component {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Uv", version: "0.102.0" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Uv", version: "0.103.1" };
15
15
  /**
16
16
  * The `pyproject.toml` file
17
17
  */
@@ -27,7 +27,7 @@ class Uv extends component_1.Component {
27
27
  this.venvPython = options.pythonExec ?? requiresPython;
28
28
  this.installTask = this.project.addTask("install", {
29
29
  description: "Install dependencies and update lockfile",
30
- exec: "uv sync && uv lock",
30
+ steps: [{ execArgs: ["uv", "sync"] }, { execArgs: ["uv", "lock"] }],
31
31
  });
32
32
  this.installCiTask = this.project.addTask("install:ci", {
33
33
  description: "Install dependencies with frozen lockfile",
@@ -140,4 +140,4 @@ class Uv extends component_1.Component {
140
140
  }
141
141
  }
142
142
  exports.Uv = Uv;
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHl0aG9uL3V2LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSwrREFBMEQ7QUFJMUQsNENBQXlDO0FBR3pDLDJDQUFxRDtBQUVyRCxrREFBaUQ7QUFFakQsdUNBQWtDO0FBd0JsQzs7R0FFRztBQUNILE1BQWEsRUFDWCxTQUFRLHFCQUFTOztJQUdqQjs7T0FFRztJQUNhLElBQUksQ0FBb0I7SUFDeEIsV0FBVyxDQUFPO0lBQ2xCLGFBQWEsQ0FBTztJQUNwQixXQUFXLENBQU87SUFDbEIsZUFBZSxDQUFPO0lBRXJCLFVBQVUsQ0FBUztJQUVwQyxZQUFZLEtBQWlCLEVBQUUsT0FBa0I7UUFDL0MsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWIsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxjQUFjLElBQUksYUFBYSxDQUFDO1FBQ3hFLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSSxjQUFjLENBQUM7UUFFdkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDakQsV0FBVyxFQUFFLDBDQUEwQztZQUN2RCxJQUFJLEVBQUUsb0JBQW9CO1NBQzNCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQ3RELFdBQVcsRUFBRSwyQ0FBMkM7WUFDeEQsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztTQUN6QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUseUJBQXlCLENBQUMsQ0FBQztRQUVyRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUVuRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRTtZQUMxRCxXQUFXLEVBQUUsbURBQW1EO1lBQ2hFLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQztTQUNuRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUNqRCxXQUFXLEVBQUUsOEJBQThCO1lBQzNDLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7U0FDNUIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLHVDQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDOUMsT0FBTyxFQUFFO2dCQUNQLElBQUksRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7Z0JBQ2hELGNBQWM7Z0JBQ2QsR0FBRyxPQUFPLENBQUMsT0FBTztnQkFDbEIsWUFBWSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ25CLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUM7b0JBQ3pDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFO2lCQUM1QixDQUFRO2FBQ1Y7WUFDRCxnQkFBZ0IsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFRO1lBQzdELFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztZQUNoQyxJQUFJLEVBQUU7Z0JBQ0osRUFBRSxFQUFFLElBQUEsa0NBQXNCLEVBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQzthQUN2QztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCx3Q0FBd0M7SUFDaEMsZ0JBQWdCLENBQUMsR0FBZTtRQUN0QyxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ3RCLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFFNUIsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDaEMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsdURBQXVEO1FBQ3ZELElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVCLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNwQyxPQUFPLEdBQUcsSUFBSSxLQUFLLFlBQVksS0FBSyxTQUFTLE1BQU0sQ0FBQztRQUN0RCxDQUFDO1FBRUQsK0RBQStEO1FBQy9ELElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVCLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFdEMsOENBQThDO1lBQzlDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsRSxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BDLE9BQU8sR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEtBQUssSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLFNBQVMsSUFBSSxDQUFDO1FBQ3hFLENBQUM7UUFFRCxzQ0FBc0M7UUFDdEMsT0FBTyxHQUFHLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU8sZUFBZSxDQUFDLGVBQWlDO1FBQ3ZELE9BQU8sQ0FDTCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHO2FBQ2xCLE1BQU0sQ0FDTCxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRLENBQ3JFO1lBQ0QsbURBQW1EO2FBQ2xELE1BQU0sQ0FDTCxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FDbkIsS0FBSyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxDQUN2RDthQUNBLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzVDLENBQUM7SUFDSixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLDZCQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDbkMsNkJBQWMsQ0FBQyxNQUFNO1lBQ3JCLDZCQUFjLENBQUMsSUFBSTtTQUNwQixDQUFDLENBQUM7UUFFSCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUMxQixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRU0sYUFBYSxDQUFDLElBQVk7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSw2QkFBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxJQUFZO1FBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsNkJBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLE1BQU0sTUFBTSxHQUFHLFNBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUMxQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1NBQ3pCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDdEIsdUtBQXVLLENBQ3hLLENBQUM7WUFDRixPQUFPO1FBQ1QsQ0FBQztRQUVELCtDQUErQztRQUMvQywyREFBMkQ7UUFDM0QsU0FBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQUU7WUFDaEUsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTTtTQUN6QixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3RCLG1FQUFtRSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQ3RGLENBQUM7SUFDSixDQUFDO0lBRU0sbUJBQW1CO1FBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3ZELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDOztBQW5LSCxnQkFvS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IElDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHR5cGUgeyBCdWlsZFN5c3RlbSwgUHlwcm9qZWN0VG9tbFByb2plY3QgfSBmcm9tIFwiLi9weXByb2plY3QtdG9tbFwiO1xuaW1wb3J0IHsgUHlwcm9qZWN0VG9tbEZpbGUgfSBmcm9tIFwiLi9weXByb2plY3QtdG9tbC1maWxlXCI7XG5pbXBvcnQgdHlwZSB7IElQeXRob25EZXBzIH0gZnJvbSBcIi4vcHl0aG9uLWRlcHNcIjtcbmltcG9ydCB0eXBlIHsgSVB5dGhvbkVudiB9IGZyb20gXCIuL3B5dGhvbi1lbnZcIjtcbmltcG9ydCB0eXBlIHsgSVB5dGhvblBhY2thZ2luZyB9IGZyb20gXCIuL3B5dGhvbi1wYWNrYWdpbmdcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgUHl0aG9uRXhlY3V0YWJsZU9wdGlvbnMgfSBmcm9tIFwiLi9weXRob24tcHJvamVjdFwiO1xuaW1wb3J0IHR5cGUgeyBVdkNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi91di1jb25maWdcIjtcbmltcG9ydCB7IHRvSnNvbl9VdkNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi91di1jb25maWdcIjtcbmltcG9ydCB0eXBlIHsgRGVwZW5kZW5jeSB9IGZyb20gXCIuLi9kZXBlbmRlbmNpZXNcIjtcbmltcG9ydCB7IERlcGVuZGVuY3lUeXBlIH0gZnJvbSBcIi4uL2RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHR5cGUgeyBUYXNrIH0gZnJvbSBcIi4uL3Rhc2tcIjtcbmltcG9ydCB7IHV2IH0gZnJvbSBcIi4uL3V0aWwvZXhlY1wiO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIFVWIHByb2plY3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVdk9wdGlvbnMgZXh0ZW5kcyBQeXRob25FeGVjdXRhYmxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgcHJvamVjdCdzIGJhc2ljIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0PzogUHlwcm9qZWN0VG9tbFByb2plY3Q7XG5cbiAgLyoqXG4gICAqIERlY2xhcmVzIGFueSBQeXRob24gbGV2ZWwgZGVwZW5kZW5jaWVzIHRoYXQgbXVzdCBiZSBpbnN0YWxsZWQgaW4gb3JkZXIgdG8gcnVuIHRoZSBwcm9qZWN04oCZcyBidWlsZCBzeXN0ZW0gc3VjY2Vzc2Z1bGx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGJ1aWxkIHN5c3RlbVxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRTeXN0ZW0/OiBCdWlsZFN5c3RlbTtcblxuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gYW5kIG1ldGFkYXRhIGZvciB1di5cbiAgICovXG4gIHJlYWRvbmx5IHV2PzogVXZDb25maWd1cmF0aW9uO1xufVxuXG4vKipcbiAqIE1hbmFnZSBwcm9qZWN0IGRlcGVuZGVuY2llcywgdmlydHVhbCBlbnZpcm9ubWVudHMsIGFuZCBwYWNrYWdpbmcgdGhyb3VnaCB1di5cbiAqL1xuZXhwb3J0IGNsYXNzIFV2XG4gIGV4dGVuZHMgQ29tcG9uZW50XG4gIGltcGxlbWVudHMgSVB5dGhvbkRlcHMsIElQeXRob25FbnYsIElQeXRob25QYWNrYWdpbmdcbntcbiAgLyoqXG4gICAqIFRoZSBgcHlwcm9qZWN0LnRvbWxgIGZpbGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBmaWxlOiBQeXByb2plY3RUb21sRmlsZTtcbiAgcHVibGljIHJlYWRvbmx5IGluc3RhbGxUYXNrOiBUYXNrO1xuICBwdWJsaWMgcmVhZG9ubHkgaW5zdGFsbENpVGFzazogVGFzaztcbiAgcHVibGljIHJlYWRvbmx5IHB1Ymxpc2hUYXNrOiBUYXNrO1xuICBwdWJsaWMgcmVhZG9ubHkgcHVibGlzaFRlc3RUYXNrOiBUYXNrO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdmVudlB5dGhvbjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBJQ29uc3RydWN0LCBvcHRpb25zOiBVdk9wdGlvbnMpIHtcbiAgICBzdXBlcihzY29wZSk7XG5cbiAgICBjb25zdCByZXF1aXJlc1B5dGhvbiA9IG9wdGlvbnMucHJvamVjdD8ucmVxdWlyZXNQeXRob24gPz8gXCI+PTMuMTIsPDQuMFwiO1xuICAgIHRoaXMudmVudlB5dGhvbiA9IG9wdGlvbnMucHl0aG9uRXhlYyA/PyByZXF1aXJlc1B5dGhvbjtcblxuICAgIHRoaXMuaW5zdGFsbFRhc2sgPSB0aGlzLnByb2plY3QuYWRkVGFzayhcImluc3RhbGxcIiwge1xuICAgICAgZGVzY3JpcHRpb246IFwiSW5zdGFsbCBkZXBlbmRlbmNpZXMgYW5kIHVwZGF0ZSBsb2NrZmlsZVwiLFxuICAgICAgZXhlYzogXCJ1diBzeW5jICYmIHV2IGxvY2tcIixcbiAgICB9KTtcblxuICAgIHRoaXMuaW5zdGFsbENpVGFzayA9IHRoaXMucHJvamVjdC5hZGRUYXNrKFwiaW5zdGFsbDpjaVwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJJbnN0YWxsIGRlcGVuZGVuY2llcyB3aXRoIGZyb3plbiBsb2NrZmlsZVwiLFxuICAgICAgZXhlY0FyZ3M6IFtcInV2XCIsIFwic3luY1wiXSxcbiAgICB9KTtcblxuICAgIHRoaXMucHJvamVjdC50YXNrcy5hZGRFbnZpcm9ubWVudChcIlZJUlRVQUxfRU5WXCIsIFwiLnZlbnZcIik7XG4gICAgdGhpcy5wcm9qZWN0LnRhc2tzLmFkZEVudmlyb25tZW50KFwiUEFUSFwiLCBcIiQoZWNobyAudmVudi9iaW46JFBBVEgpXCIpO1xuXG4gICAgdGhpcy5wcm9qZWN0LnBhY2thZ2VUYXNrLmV4ZWNBcmdzKFtcInV2XCIsIFwiYnVpbGRcIl0pO1xuXG4gICAgdGhpcy5wdWJsaXNoVGVzdFRhc2sgPSB0aGlzLnByb2plY3QuYWRkVGFzayhcInB1Ymxpc2g6dGVzdFwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJVcGxvYWRzIHRoZSBwYWNrYWdlIGFnYWluc3QgYSB0ZXN0IFB5UEkgZW5kcG9pbnQuXCIsXG4gICAgICBleGVjQXJnczogW1widXZcIiwgXCJwdWJsaXNoXCIsIFwiLS1pbmRleFwiLCBcInRlc3RweXBpXCJdLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wdWJsaXNoVGFzayA9IHRoaXMucHJvamVjdC5hZGRUYXNrKFwicHVibGlzaFwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJVcGxvYWRzIHRoZSBwYWNrYWdlIHRvIFB5UEkuXCIsXG4gICAgICBleGVjQXJnczogW1widXZcIiwgXCJwdWJsaXNoXCJdLFxuICAgIH0pO1xuXG4gICAgdGhpcy5maWxlID0gbmV3IFB5cHJvamVjdFRvbWxGaWxlKHRoaXMucHJvamVjdCwge1xuICAgICAgcHJvamVjdDoge1xuICAgICAgICBuYW1lOiBvcHRpb25zLnByb2plY3Q/Lm5hbWUgPz8gdGhpcy5wcm9qZWN0Lm5hbWUsXG4gICAgICAgIHJlcXVpcmVzUHl0aG9uLFxuICAgICAgICAuLi5vcHRpb25zLnByb2plY3QsXG4gICAgICAgIGRlcGVuZGVuY2llczogKCgpID0+IFtcbiAgICAgICAgICAuLi4ob3B0aW9ucz8ucHJvamVjdD8uZGVwZW5kZW5jaWVzID8/IFtdKSxcbiAgICAgICAgICAuLi50aGlzLnN5bnRoRGVwZW5kZW5jaWVzKCksXG4gICAgICAgIF0pIGFzIGFueSxcbiAgICAgIH0sXG4gICAgICBkZXBlbmRlbmN5R3JvdXBzOiAoKCkgPT4gdGhpcy5zeW50aERlcGVuZGVuY3lHcm91cHMoKSkgYXMgYW55LFxuICAgICAgYnVpbGRTeXN0ZW06IG9wdGlvbnMuYnVpbGRTeXN0ZW0sXG4gICAgICB0b29sOiB7XG4gICAgICAgIHV2OiB0b0pzb25fVXZDb25maWd1cmF0aW9uKG9wdGlvbnMudXYpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBGb3JtYXRzIGRlcGVuZGVuY2llcyBpbiBVViBzdHlsZS4gKi9cbiAgcHJpdmF0ZSBmb3JtYXREZXBlbmRlbmN5KGRlcDogRGVwZW5kZW5jeSk6IHN0cmluZyB7XG4gICAgY29uc3QgbmFtZSA9IGRlcC5uYW1lO1xuICAgIGNvbnN0IHZlcnNpb24gPSBkZXAudmVyc2lvbjtcblxuICAgIGlmICghdmVyc2lvbiB8fCB2ZXJzaW9uID09PSBcIipcIikge1xuICAgICAgcmV0dXJuIG5hbWU7XG4gICAgfVxuXG4gICAgLy8gVHJhbnNsYXRlIGNhcmV0ICheKSB0byBQeXRob24gY29tcGF0aWJsZSBjb25zdHJhaW50c1xuICAgIGlmICh2ZXJzaW9uLnN0YXJ0c1dpdGgoXCJeXCIpKSB7XG4gICAgICBjb25zdCBjbGVhblZlcnNpb24gPSB2ZXJzaW9uLnNsaWNlKDEpO1xuICAgICAgY29uc3QgW21ham9yXSA9IGNsZWFuVmVyc2lvbi5zcGxpdChcIi5cIik7XG4gICAgICBjb25zdCBuZXh0TWFqb3IgPSBOdW1iZXIobWFqb3IpICsgMTtcbiAgICAgIHJldHVybiBgJHtuYW1lfT49JHtjbGVhblZlcnNpb259LDwke25leHRNYWpvcn0uMC4wYDtcbiAgICB9XG5cbiAgICAvLyBUcmFuc2xhdGUgdGlsZGUgKH4pIHRvIGNvbXBhdGlibGUgcmVsZWFzZSBjbGF1c2UgcGVyIFBFUCA0NDBcbiAgICBpZiAodmVyc2lvbi5zdGFydHNXaXRoKFwiflwiKSkge1xuICAgICAgY29uc3QgY2xlYW5WZXJzaW9uID0gdmVyc2lvbi5zbGljZSgxKTtcblxuICAgICAgLy8gT25seSBrZWVwIG1ham9yLm1pbm9yIGZvciB0aWxkZSBpZiBwb3NzaWJsZVxuICAgICAgY29uc3QgW21ham9yLCBtaW5vciA9IFwiMFwiLCBwYXRjaCA9IFwiMFwiXSA9IGNsZWFuVmVyc2lvbi5zcGxpdChcIi5cIik7XG4gICAgICBjb25zdCBuZXh0TWlub3IgPSBOdW1iZXIobWlub3IpICsgMTtcbiAgICAgIHJldHVybiBgJHtuYW1lfT49JHttYWpvcn0uJHttaW5vcn0uJHtwYXRjaH0sPCR7bWFqb3J9LiR7bmV4dE1pbm9yfS4wYDtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UgdHJlYXQgYXMgYW4gZXhhY3QgdmVyc2lvblxuICAgIHJldHVybiBgJHtuYW1lfT09JHt2ZXJzaW9ufWA7XG4gIH1cblxuICBwcml2YXRlIGdldERlcGVuZGVuY2llcyhkZXBlbmRlbmN5VHlwZXM6IERlcGVuZGVuY3lUeXBlW10pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMucHJvamVjdC5kZXBzLmFsbFxuICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgIChwa2cpID0+IGRlcGVuZGVuY3lUeXBlcy5pbmNsdWRlcyhwa2cudHlwZSkgJiYgcGtnLm5hbWUgIT09IFwicHl0aG9uXCIsXG4gICAgICAgIClcbiAgICAgICAgLy8gcmVtb3ZlIGR1cGxpY2F0ZSB2ZXJzaW9ucyBvZiB0aGUgc2FtZSBkZXBlbmRlbmN5XG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgKGRlcCwgaW5kZXgsIHNlbGYpID0+XG4gICAgICAgICAgICBpbmRleCA9PT0gc2VsZi5maW5kSW5kZXgoKGQpID0+IGQubmFtZSA9PT0gZGVwLm5hbWUpLFxuICAgICAgICApXG4gICAgICAgIC5tYXAoKHBrZykgPT4gdGhpcy5mb3JtYXREZXBlbmRlbmN5KHBrZykpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc3ludGhEZXBlbmRlbmNpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmdldERlcGVuZGVuY2llcyhbRGVwZW5kZW5jeVR5cGUuUlVOVElNRV0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW50aERlcGVuZGVuY3lHcm91cHMoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBkZXZEZXBzID0gdGhpcy5nZXREZXBlbmRlbmNpZXMoW1xuICAgICAgRGVwZW5kZW5jeVR5cGUuREVWRU5WLFxuICAgICAgRGVwZW5kZW5jeVR5cGUuVEVTVCxcbiAgICBdKTtcblxuICAgIGlmIChkZXZEZXBzKSB7XG4gICAgICByZXR1cm4geyBkZXY6IGRldkRlcHMgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkRGVwZW5kZW5jeShzcGVjOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnByb2plY3QuZGVwcy5hZGREZXBlbmRlbmN5KHNwZWMsIERlcGVuZGVuY3lUeXBlLlJVTlRJTUUpO1xuICB9XG5cbiAgcHVibGljIGFkZERldkRlcGVuZGVuY3koc3BlYzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5wcm9qZWN0LmRlcHMuYWRkRGVwZW5kZW5jeShzcGVjLCBEZXBlbmRlbmN5VHlwZS5ERVZFTlYpO1xuICB9XG5cbiAgcHVibGljIHNldHVwRW52aXJvbm1lbnQoKTogdm9pZCB7XG4gICAgY29uc3QgcmVzdWx0ID0gdXYudHJ5Q2FwdHVyZShbXCItLXZlcnNpb25cIl0sIHtcbiAgICAgIGN3ZDogdGhpcy5wcm9qZWN0Lm91dGRpcixcbiAgICB9KTtcbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgdGhpcy5wcm9qZWN0LmxvZ2dlci5pbmZvKFxuICAgICAgICBcIlVuYWJsZSB0byBzZXR1cCBhbiBlbnZpcm9ubWVudCBzaW5jZSB1diBpcyBub3QgaW5zdGFsbGVkLiBQbGVhc2UgaW5zdGFsbCB1diAoaHR0cHM6Ly9naXRodWIuY29tL2FzdHJhbC1zaC91dikgb3IgdXNlIGEgZGlmZmVyZW50IGNvbXBvbmVudCBmb3IgbWFuYWdpbmcgZW52aXJvbm1lbnRzLlwiLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdmVudiB3aXRoIHRoZSBzcGVjaWZpYyBQeXRob24gdmVyc2lvblxuICAgIC8vIHRoaXMgd2lsbCBpbnN0YWxsIHRoZSByZXF1ZXN0ZWQgcHl0aG9uIHZlcnNpb24gaWYgbmVlZGVkXG4gICAgdXYucnVuKFtcInZlbnZcIiwgXCItLXB5dGhvblwiLCB0aGlzLnZlbnZQeXRob24sIFwiLS1jbGVhclwiLCBcIi52ZW52XCJdLCB7XG4gICAgICBjd2Q6IHRoaXMucHJvamVjdC5vdXRkaXIsXG4gICAgfSk7XG4gICAgdGhpcy5wcm9qZWN0LmxvZ2dlci5pbmZvKFxuICAgICAgYEVudmlyb25tZW50IHN1Y2Nlc3NmdWxseSBjcmVhdGVkIGluIC52ZW52IGRpcmVjdG9yeSB3aXRoIFB5dGhvbiAke3RoaXMudmVudlB5dGhvbn0uYCxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGluc3RhbGxEZXBlbmRlbmNpZXMoKTogdm9pZCB7XG4gICAgdGhpcy5wcm9qZWN0LmxvZ2dlci5pbmZvKFwiSW5zdGFsbGluZyBkZXBlbmRlbmNpZXMuLi5cIik7XG4gICAgaWYgKHRoaXMuZmlsZS5jaGFuZ2VkKSB7XG4gICAgICB0aGlzLnByb2plY3QudGFza3MucnVuVGFzayh0aGlzLmluc3RhbGxUYXNrLm5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByb2plY3QudGFza3MucnVuVGFzayh0aGlzLmluc3RhbGxDaVRhc2submFtZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHl0aG9uL3V2LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSwrREFBMEQ7QUFJMUQsNENBQXlDO0FBR3pDLDJDQUFxRDtBQUVyRCxrREFBaUQ7QUFFakQsdUNBQWtDO0FBd0JsQzs7R0FFRztBQUNILE1BQWEsRUFDWCxTQUFRLHFCQUFTOztJQUdqQjs7T0FFRztJQUNhLElBQUksQ0FBb0I7SUFDeEIsV0FBVyxDQUFPO0lBQ2xCLGFBQWEsQ0FBTztJQUNwQixXQUFXLENBQU87SUFDbEIsZUFBZSxDQUFPO0lBRXJCLFVBQVUsQ0FBUztJQUVwQyxZQUFZLEtBQWlCLEVBQUUsT0FBa0I7UUFDL0MsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWIsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxjQUFjLElBQUksYUFBYSxDQUFDO1FBQ3hFLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSSxjQUFjLENBQUM7UUFFdkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDakQsV0FBVyxFQUFFLDBDQUEwQztZQUN2RCxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7U0FDcEUsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDdEQsV0FBVyxFQUFFLDJDQUEyQztZQUN4RCxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1NBQ3pCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFD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SSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNILENBQUM7O0FBbktILGdCQW9LQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSUNvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgdHlwZSB7IEJ1aWxkU3lzdGVtLCBQeXByb2plY3RUb21sUHJvamVjdCB9IGZyb20gXCIuL3B5cHJvamVjdC10b21sXCI7XG5pbXBvcnQgeyBQeXByb2plY3RUb21sRmlsZSB9IGZyb20gXCIuL3B5cHJvamVjdC10b21sLWZpbGVcIjtcbmltcG9ydCB0eXBlIHsgSVB5dGhvbkRlcHMgfSBmcm9tIFwiLi9weXRob24tZGVwc1wiO1xuaW1wb3J0IHR5cGUgeyBJUHl0aG9uRW52IH0gZnJvbSBcIi4vcHl0aG9uLWVudlwiO1xuaW1wb3J0IHR5cGUgeyBJUHl0aG9uUGFja2FnaW5nIH0gZnJvbSBcIi4vcHl0aG9uLXBhY2thZ2luZ1wiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBQeXRob25FeGVjdXRhYmxlT3B0aW9ucyB9IGZyb20gXCIuL3B5dGhvbi1wcm9qZWN0XCI7XG5pbXBvcnQgdHlwZSB7IFV2Q29uZmlndXJhdGlvbiB9IGZyb20gXCIuL3V2LWNvbmZpZ1wiO1xuaW1wb3J0IHsgdG9Kc29uX1V2Q29uZmlndXJhdGlvbiB9IGZyb20gXCIuL3V2LWNvbmZpZ1wiO1xuaW1wb3J0IHR5cGUgeyBEZXBlbmRlbmN5IH0gZnJvbSBcIi4uL2RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgRGVwZW5kZW5jeVR5cGUgfSBmcm9tIFwiLi4vZGVwZW5kZW5jaWVzXCI7XG5pbXBvcnQgdHlwZSB7IFRhc2sgfSBmcm9tIFwiLi4vdGFza1wiO1xuaW1wb3J0IHsgdXYgfSBmcm9tIFwiLi4vdXRpbC9leGVjXCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgVVYgcHJvamVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFV2T3B0aW9ucyBleHRlbmRzIFB5dGhvbkV4ZWN1dGFibGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBwcm9qZWN0J3MgYmFzaWMgbWV0YWRhdGEgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHByb2plY3Q/OiBQeXByb2plY3RUb21sUHJvamVjdDtcblxuICAvKipcbiAgICogRGVjbGFyZXMgYW55IFB5dGhvbiBsZXZlbCBkZXBlbmRlbmNpZXMgdGhhdCBtdXN0IGJlIGluc3RhbGxlZCBpbiBvcmRlciB0byBydW4gdGhlIHByb2plY3TigJlzIGJ1aWxkIHN5c3RlbSBzdWNjZXNzZnVsbHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gYnVpbGQgc3lzdGVtXG4gICAqL1xuICByZWFkb25seSBidWlsZFN5c3RlbT86IEJ1aWxkU3lzdGVtO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBhbmQgbWV0YWRhdGEgZm9yIHV2LlxuICAgKi9cbiAgcmVhZG9ubHkgdXY/OiBVdkNvbmZpZ3VyYXRpb247XG59XG5cbi8qKlxuICogTWFuYWdlIHByb2plY3QgZGVwZW5kZW5jaWVzLCB2aXJ0dWFsIGVudmlyb25tZW50cywgYW5kIHBhY2thZ2luZyB0aHJvdWdoIHV2LlxuICovXG5leHBvcnQgY2xhc3MgVXZcbiAgZXh0ZW5kcyBDb21wb25lbnRcbiAgaW1wbGVtZW50cyBJUHl0aG9uRGVwcywgSVB5dGhvbkVudiwgSVB5dGhvblBhY2thZ2luZ1xue1xuICAvKipcbiAgICogVGhlIGBweXByb2plY3QudG9tbGAgZmlsZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZpbGU6IFB5cHJvamVjdFRvbWxGaWxlO1xuICBwdWJsaWMgcmVhZG9ubHkgaW5zdGFsbFRhc2s6IFRhc2s7XG4gIHB1YmxpYyByZWFkb25seSBpbnN0YWxsQ2lUYXNrOiBUYXNrO1xuICBwdWJsaWMgcmVhZG9ubHkgcHVibGlzaFRhc2s6IFRhc2s7XG4gIHB1YmxpYyByZWFkb25seSBwdWJsaXNoVGVzdFRhc2s6IFRhc2s7XG5cbiAgcHJpdmF0ZSByZWFkb25seSB2ZW52UHl0aG9uOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IElDb25zdHJ1Y3QsIG9wdGlvbnM6IFV2T3B0aW9ucykge1xuICAgIHN1cGVyKHNjb3BlKTtcblxuICAgIGNvbnN0IHJlcXVpcmVzUHl0aG9uID0gb3B0aW9ucy5wcm9qZWN0Py5yZXF1aXJlc1B5dGhvbiA/PyBcIj49My4xMiw8NC4wXCI7XG4gICAgdGhpcy52ZW52UHl0aG9uID0gb3B0aW9ucy5weXRob25FeGVjID8/IHJlcXVpcmVzUHl0aG9uO1xuXG4gICAgdGhpcy5pbnN0YWxsVGFzayA9IHRoaXMucHJvamVjdC5hZGRUYXNrKFwiaW5zdGFsbFwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJJbnN0YWxsIGRlcGVuZGVuY2llcyBhbmQgdXBkYXRlIGxvY2tmaWxlXCIsXG4gICAgICBzdGVwczogW3sgZXhlY0FyZ3M6IFtcInV2XCIsIFwic3luY1wiXSB9LCB7IGV4ZWNBcmdzOiBbXCJ1dlwiLCBcImxvY2tcIl0gfV0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmluc3RhbGxDaVRhc2sgPSB0aGlzLnByb2plY3QuYWRkVGFzayhcImluc3RhbGw6Y2lcIiwge1xuICAgICAgZGVzY3JpcHRpb246IFwiSW5zdGFsbCBkZXBlbmRlbmNpZXMgd2l0aCBmcm96ZW4gbG9ja2ZpbGVcIixcbiAgICAgIGV4ZWNBcmdzOiBbXCJ1dlwiLCBcInN5bmNcIl0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2plY3QudGFza3MuYWRkRW52aXJvbm1lbnQoXCJWSVJUVUFMX0VOVlwiLCBcIi52ZW52XCIpO1xuICAgIHRoaXMucHJvamVjdC50YXNrcy5hZGRFbnZpcm9ubWVudChcIlBBVEhcIiwgXCIkKGVjaG8gLnZlbnYvYmluOiRQQVRIKVwiKTtcblxuICAgIHRoaXMucHJvamVjdC5wYWNrYWdlVGFzay5leGVjQXJncyhbXCJ1dlwiLCBcImJ1aWxkXCJdKTtcblxuICAgIHRoaXMucHVibGlzaFRlc3RUYXNrID0gdGhpcy5wcm9qZWN0LmFkZFRhc2soXCJwdWJsaXNoOnRlc3RcIiwge1xuICAgICAgZGVzY3JpcHRpb246IFwiVXBsb2FkcyB0aGUgcGFja2FnZSBhZ2FpbnN0IGEgdGVzdCBQeVBJIGVuZHBvaW50LlwiLFxuICAgICAgZXhlY0FyZ3M6IFtcInV2XCIsIFwicHVibGlzaFwiLCBcIi0taW5kZXhcIiwgXCJ0ZXN0cHlwaVwiXSxcbiAgICB9KTtcblxuICAgIHRoaXMucHVibGlzaFRhc2sgPSB0aGlzLnByb2plY3QuYWRkVGFzayhcInB1Ymxpc2hcIiwge1xuICAgICAgZGVzY3JpcHRpb246IFwiVXBsb2FkcyB0aGUgcGFja2FnZSB0byBQeVBJLlwiLFxuICAgICAgZXhlY0FyZ3M6IFtcInV2XCIsIFwicHVibGlzaFwiXSxcbiAgICB9KTtcblxuICAgIHRoaXMuZmlsZSA9IG5ldyBQeXByb2plY3RUb21sRmlsZSh0aGlzLnByb2plY3QsIHtcbiAgICAgIHByb2plY3Q6IHtcbiAgICAgICAgbmFtZTogb3B0aW9ucy5wcm9qZWN0Py5uYW1lID8/IHRoaXMucHJvamVjdC5uYW1lLFxuICAgICAgICByZXF1aXJlc1B5dGhvbixcbiAgICAgICAgLi4ub3B0aW9ucy5wcm9qZWN0LFxuICAgICAgICBkZXBlbmRlbmNpZXM6ICgoKSA9PiBbXG4gICAgICAgICAgLi4uKG9wdGlvbnM/LnByb2plY3Q/LmRlcGVuZGVuY2llcyA/PyBbXSksXG4gICAgICAgICAgLi4udGhpcy5zeW50aERlcGVuZGVuY2llcygpLFxuICAgICAgICBdKSBhcyBhbnksXG4gICAgICB9LFxuICAgICAgZGVwZW5kZW5jeUdyb3VwczogKCgpID0+IHRoaXMuc3ludGhEZXBlbmRlbmN5R3JvdXBzKCkpIGFzIGFueSxcbiAgICAgIGJ1aWxkU3lzdGVtOiBvcHRpb25zLmJ1aWxkU3lzdGVtLFxuICAgICAgdG9vbDoge1xuICAgICAgICB1djogdG9Kc29uX1V2Q29uZmlndXJhdGlvbihvcHRpb25zLnV2KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKiogRm9ybWF0cyBkZXBlbmRlbmNpZXMgaW4gVVYgc3R5bGUuICovXG4gIHByaXZhdGUgZm9ybWF0RGVwZW5kZW5jeShkZXA6IERlcGVuZGVuY3kpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5hbWUgPSBkZXAubmFtZTtcbiAgICBjb25zdCB2ZXJzaW9uID0gZGVwLnZlcnNpb247XG5cbiAgICBpZiAoIXZlcnNpb24gfHwgdmVyc2lvbiA9PT0gXCIqXCIpIHtcbiAgICAgIHJldHVybiBuYW1lO1xuICAgIH1cblxuICAgIC8vIFRyYW5zbGF0ZSBjYXJldCAoXikgdG8gUHl0aG9uIGNvbXBhdGlibGUgY29uc3RyYWludHNcbiAgICBpZiAodmVyc2lvbi5zdGFydHNXaXRoKFwiXlwiKSkge1xuICAgICAgY29uc3QgY2xlYW5WZXJzaW9uID0gdmVyc2lvbi5zbGljZSgxKTtcbiAgICAgIGNvbnN0IFttYWpvcl0gPSBjbGVhblZlcnNpb24uc3BsaXQoXCIuXCIpO1xuICAgICAgY29uc3QgbmV4dE1ham9yID0gTnVtYmVyKG1ham9yKSArIDE7XG4gICAgICByZXR1cm4gYCR7bmFtZX0+PSR7Y2xlYW5WZXJzaW9ufSw8JHtuZXh0TWFqb3J9LjAuMGA7XG4gICAgfVxuXG4gICAgLy8gVHJhbnNsYXRlIHRpbGRlICh+KSB0byBjb21wYXRpYmxlIHJlbGVhc2UgY2xhdXNlIHBlciBQRVAgNDQwXG4gICAgaWYgKHZlcnNpb24uc3RhcnRzV2l0aChcIn5cIikpIHtcbiAgICAgIGNvbnN0IGNsZWFuVmVyc2lvbiA9IHZlcnNpb24uc2xpY2UoMSk7XG5cbiAgICAgIC8vIE9ubHkga2VlcCBtYWpvci5taW5vciBmb3IgdGlsZGUgaWYgcG9zc2libGVcbiAgICAgIGNvbnN0IFttYWpvciwgbWlub3IgPSBcIjBcIiwgcGF0Y2ggPSBcIjBcIl0gPSBjbGVhblZlcnNpb24uc3BsaXQoXCIuXCIpO1xuICAgICAgY29uc3QgbmV4dE1pbm9yID0gTnVtYmVyKG1pbm9yKSArIDE7XG4gICAgICByZXR1cm4gYCR7bmFtZX0+PSR7bWFqb3J9LiR7bWlub3J9LiR7cGF0Y2h9LDwke21ham9yfS4ke25leHRNaW5vcn0uMGA7XG4gICAgfVxuXG4gICAgLy8gT3RoZXJ3aXNlIHRyZWF0IGFzIGFuIGV4YWN0IHZlcnNpb25cbiAgICByZXR1cm4gYCR7bmFtZX09PSR7dmVyc2lvbn1gO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZXBlbmRlbmNpZXMoZGVwZW5kZW5jeVR5cGVzOiBEZXBlbmRlbmN5VHlwZVtdKTogc3RyaW5nW10ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnByb2plY3QuZGVwcy5hbGxcbiAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAocGtnKSA9PiBkZXBlbmRlbmN5VHlwZXMuaW5jbHVkZXMocGtnLnR5cGUpICYmIHBrZy5uYW1lICE9PSBcInB5dGhvblwiLFxuICAgICAgICApXG4gICAgICAgIC8vIHJlbW92ZSBkdXBsaWNhdGUgdmVyc2lvbnMgb2YgdGhlIHNhbWUgZGVwZW5kZW5jeVxuICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgIChkZXAsIGluZGV4LCBzZWxmKSA9PlxuICAgICAgICAgICAgaW5kZXggPT09IHNlbGYuZmluZEluZGV4KChkKSA9PiBkLm5hbWUgPT09IGRlcC5uYW1lKSxcbiAgICAgICAgKVxuICAgICAgICAubWFwKChwa2cpID0+IHRoaXMuZm9ybWF0RGVwZW5kZW5jeShwa2cpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHN5bnRoRGVwZW5kZW5jaWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5nZXREZXBlbmRlbmNpZXMoW0RlcGVuZGVuY3lUeXBlLlJVTlRJTUVdKTtcbiAgfVxuXG4gIHByaXZhdGUgc3ludGhEZXBlbmRlbmN5R3JvdXBzKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZGV2RGVwcyA9IHRoaXMuZ2V0RGVwZW5kZW5jaWVzKFtcbiAgICAgIERlcGVuZGVuY3lUeXBlLkRFVkVOVixcbiAgICAgIERlcGVuZGVuY3lUeXBlLlRFU1QsXG4gICAgXSk7XG5cbiAgICBpZiAoZGV2RGVwcykge1xuICAgICAgcmV0dXJuIHsgZGV2OiBkZXZEZXBzIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZERlcGVuZGVuY3koc3BlYzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5wcm9qZWN0LmRlcHMuYWRkRGVwZW5kZW5jeShzcGVjLCBEZXBlbmRlbmN5VHlwZS5SVU5USU1FKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGREZXZEZXBlbmRlbmN5KHNwZWM6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucHJvamVjdC5kZXBzLmFkZERlcGVuZGVuY3koc3BlYywgRGVwZW5kZW5jeVR5cGUuREVWRU5WKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXR1cEVudmlyb25tZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IHJlc3VsdCA9IHV2LnRyeUNhcHR1cmUoW1wiLS12ZXJzaW9uXCJdLCB7XG4gICAgICBjd2Q6IHRoaXMucHJvamVjdC5vdXRkaXIsXG4gICAgfSk7XG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgIHRoaXMucHJvamVjdC5sb2dnZXIuaW5mbyhcbiAgICAgICAgXCJVbmFibGUgdG8gc2V0dXAgYW4gZW52aXJvbm1lbnQgc2luY2UgdXYgaXMgbm90IGluc3RhbGxlZC4gUGxlYXNlIGluc3RhbGwgdXYgKGh0dHBzOi8vZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYpIG9yIHVzZSBhIGRpZmZlcmVudCBjb21wb25lbnQgZm9yIG1hbmFnaW5nIGVudmlyb25tZW50cy5cIixcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHZlbnYgd2l0aCB0aGUgc3BlY2lmaWMgUHl0aG9uIHZlcnNpb25cbiAgICAvLyB0aGlzIHdpbGwgaW5zdGFsbCB0aGUgcmVxdWVzdGVkIHB5dGhvbiB2ZXJzaW9uIGlmIG5lZWRlZFxuICAgIHV2LnJ1bihbXCJ2ZW52XCIsIFwiLS1weXRob25cIiwgdGhpcy52ZW52UHl0aG9uLCBcIi0tY2xlYXJcIiwgXCIudmVudlwiXSwge1xuICAgICAgY3dkOiB0aGlzLnByb2plY3Qub3V0ZGlyLFxuICAgIH0pO1xuICAgIHRoaXMucHJvamVjdC5sb2dnZXIuaW5mbyhcbiAgICAgIGBFbnZpcm9ubWVudCBzdWNjZXNzZnVsbHkgY3JlYXRlZCBpbiAudmVudiBkaXJlY3Rvcnkgd2l0aCBQeXRob24gJHt0aGlzLnZlbnZQeXRob259LmAsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBpbnN0YWxsRGVwZW5kZW5jaWVzKCk6IHZvaWQge1xuICAgIHRoaXMucHJvamVjdC5sb2dnZXIuaW5mbyhcIkluc3RhbGxpbmcgZGVwZW5kZW5jaWVzLi4uXCIpO1xuICAgIGlmICh0aGlzLmZpbGUuY2hhbmdlZCkge1xuICAgICAgdGhpcy5wcm9qZWN0LnRhc2tzLnJ1blRhc2sodGhpcy5pbnN0YWxsVGFzay5uYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcm9qZWN0LnRhc2tzLnJ1blRhc2sodGhpcy5pbnN0YWxsQ2lUYXNrLm5hbWUpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -43,7 +43,7 @@ const exec_1 = require("../util/exec");
43
43
  * Manages a virtual environment through the Python venv module.
44
44
  */
45
45
  class Venv extends component_1.Component {
46
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Venv", version: "0.102.0" };
46
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Venv", version: "0.103.1" };
47
47
  /**
48
48
  * Name of directory to store the environment in
49
49
  */
package/lib/readme.js CHANGED
@@ -10,7 +10,7 @@ const sample_file_1 = require("./sample-file");
10
10
  * @param text - The initial contents of the README.md file. Defaults to '# replace this'
11
11
  */
12
12
  class SampleReadme extends sample_file_1.SampleFile {
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.SampleReadme", version: "0.102.0" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.SampleReadme", version: "0.103.1" };
14
14
  constructor(project, props) {
15
15
  super(project, props?.filename ?? "README.md", {
16
16
  contents: props?.contents ?? "# replace this",
@@ -587,6 +587,11 @@ export interface GitPublishOptions extends VersionArtifactOptions {
587
587
  /**
588
588
  * Override git-push command.
589
589
  *
590
+ * Runs as a shell command in the `publish:git` task - where release
591
+ * credentials are in scope - replacing the default
592
+ * `git push --follow-tags origin <branch>`. Shell syntax is interpreted, so
593
+ * keep it a literal command.
594
+ *
590
595
  * Set to an empty string to disable pushing.
591
596
  */
592
597
  readonly gitPushCommand?: string;