projen 0.61.6 → 0.61.9

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 (125) hide show
  1. package/.jsii +3 -3
  2. package/lib/awscdk/auto-discover.js +5 -5
  3. package/lib/awscdk/awscdk-app-java.js +1 -1
  4. package/lib/awscdk/awscdk-app-py.js +1 -1
  5. package/lib/awscdk/awscdk-app-ts.js +1 -1
  6. package/lib/awscdk/awscdk-construct.js +2 -2
  7. package/lib/awscdk/awscdk-deps-java.js +1 -1
  8. package/lib/awscdk/awscdk-deps-js.js +1 -1
  9. package/lib/awscdk/awscdk-deps.js +1 -1
  10. package/lib/awscdk/cdk-config.js +1 -1
  11. package/lib/awscdk/cdk-tasks.js +1 -1
  12. package/lib/awscdk/integration-test.js +1 -1
  13. package/lib/awscdk/lambda-extension.js +1 -1
  14. package/lib/awscdk/lambda-function.js +2 -2
  15. package/lib/build/build-workflow.js +1 -1
  16. package/lib/cdk/auto-discover-base.js +2 -2
  17. package/lib/cdk/construct-lib.js +1 -1
  18. package/lib/cdk/integration-test-base.js +1 -1
  19. package/lib/cdk/jsii-docgen.js +1 -1
  20. package/lib/cdk/jsii-project.js +1 -1
  21. package/lib/cdk8s/auto-discover.js +2 -2
  22. package/lib/cdk8s/cdk8s-app-py.js +1 -1
  23. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  24. package/lib/cdk8s/cdk8s-construct.js +1 -1
  25. package/lib/cdk8s/cdk8s-deps-py.js +1 -1
  26. package/lib/cdk8s/cdk8s-deps.js +1 -1
  27. package/lib/cdk8s/integration-test.js +1 -1
  28. package/lib/cdktf/cdktf-construct.js +1 -1
  29. package/lib/circleci/circleci.js +1 -1
  30. package/lib/component.js +1 -1
  31. package/lib/dependencies.js +1 -1
  32. package/lib/dev-env.js +1 -1
  33. package/lib/docker-compose.js +2 -2
  34. package/lib/file.js +1 -1
  35. package/lib/gitattributes.js +1 -1
  36. package/lib/github/auto-approve.js +1 -1
  37. package/lib/github/auto-merge.js +1 -1
  38. package/lib/github/dependabot.js +1 -1
  39. package/lib/github/github-credentials.js +1 -1
  40. package/lib/github/github-project.js +1 -1
  41. package/lib/github/github.js +1 -1
  42. package/lib/github/mergify.js +1 -1
  43. package/lib/github/pr-template.js +1 -1
  44. package/lib/github/pull-request-lint.js +1 -1
  45. package/lib/github/stale.js +1 -1
  46. package/lib/github/task-workflow.js +1 -1
  47. package/lib/github/workflows.js +1 -1
  48. package/lib/gitlab/configuration.js +1 -1
  49. package/lib/gitlab/gitlab-configuration.js +1 -1
  50. package/lib/gitlab/nested-configuration.js +1 -1
  51. package/lib/gitpod.js +1 -1
  52. package/lib/ignore-file.js +1 -1
  53. package/lib/ini.js +1 -1
  54. package/lib/java/java-project.js +1 -1
  55. package/lib/java/junit.js +1 -1
  56. package/lib/java/maven-compile.js +1 -1
  57. package/lib/java/maven-packaging.js +1 -1
  58. package/lib/java/maven-sample.js +1 -1
  59. package/lib/java/pom.js +1 -1
  60. package/lib/java/projenrc.js +1 -1
  61. package/lib/javascript/bundler.js +1 -1
  62. package/lib/javascript/eslint.js +1 -1
  63. package/lib/javascript/jest.js +1 -1
  64. package/lib/javascript/node-package.js +1 -1
  65. package/lib/javascript/node-project.js +3 -3
  66. package/lib/javascript/npm-config.js +1 -1
  67. package/lib/javascript/prettier.js +1 -1
  68. package/lib/javascript/projenrc.js +1 -1
  69. package/lib/javascript/typescript-config.js +1 -1
  70. package/lib/javascript/upgrade-dependencies.js +2 -2
  71. package/lib/json.js +1 -1
  72. package/lib/license.js +1 -1
  73. package/lib/logger.js +1 -1
  74. package/lib/makefile.js +1 -1
  75. package/lib/object-file.js +1 -1
  76. package/lib/project-build.js +1 -1
  77. package/lib/project.js +1 -1
  78. package/lib/projects.js +1 -1
  79. package/lib/projenrc-json.js +1 -1
  80. package/lib/python/pip.js +1 -1
  81. package/lib/python/poetry.js +2 -2
  82. package/lib/python/projenrc.js +1 -1
  83. package/lib/python/pytest-sample.js +1 -1
  84. package/lib/python/pytest.js +1 -1
  85. package/lib/python/python-project.js +1 -1
  86. package/lib/python/python-sample.js +1 -1
  87. package/lib/python/requirements-file.js +1 -1
  88. package/lib/python/setuppy.js +1 -1
  89. package/lib/python/setuptools.js +1 -1
  90. package/lib/python/venv.js +1 -1
  91. package/lib/readme.js +1 -1
  92. package/lib/release/publisher.js +1 -1
  93. package/lib/release/release-trigger.js +1 -1
  94. package/lib/release/release.js +1 -1
  95. package/lib/renovatebot.js +1 -1
  96. package/lib/sample-file.js +2 -2
  97. package/lib/semver.js +1 -1
  98. package/lib/source-code.js +1 -1
  99. package/lib/task-runtime.js +1 -1
  100. package/lib/task.js +1 -1
  101. package/lib/tasks.js +1 -1
  102. package/lib/testing.js +1 -1
  103. package/lib/textfile.js +1 -1
  104. package/lib/toml.js +1 -1
  105. package/lib/typescript/projenrc.js +1 -1
  106. package/lib/typescript/typescript-typedoc.js +1 -1
  107. package/lib/typescript/typescript.js +3 -3
  108. package/lib/util/semver.js +2 -2
  109. package/lib/version.js +1 -1
  110. package/lib/vscode/devcontainer.js +1 -1
  111. package/lib/vscode/launch-config.js +1 -1
  112. package/lib/vscode/vscode.js +1 -1
  113. package/lib/web/next.js +3 -3
  114. package/lib/web/postcss.js +1 -1
  115. package/lib/web/react.js +4 -4
  116. package/lib/web/tailwind.js +1 -1
  117. package/lib/xmlfile.js +1 -1
  118. package/lib/yaml.js +1 -1
  119. package/node_modules/xmlbuilder2/node_modules/@types/node/README.md +1 -1
  120. package/node_modules/xmlbuilder2/node_modules/@types/node/fs/promises.d.ts +4 -3
  121. package/node_modules/xmlbuilder2/node_modules/@types/node/index.d.ts +1 -1
  122. package/node_modules/xmlbuilder2/node_modules/@types/node/package.json +2 -2
  123. package/node_modules/xmlbuilder2/node_modules/@types/node/perf_hooks.d.ts +29 -0
  124. package/node_modules/xmlbuilder2/node_modules/@types/node/util.d.ts +187 -0
  125. package/package.json +6 -6
package/lib/web/react.js CHANGED
@@ -38,7 +38,7 @@ class ReactProject extends javascript_1.NodeProject {
38
38
  }
39
39
  exports.ReactProject = ReactProject;
40
40
  _a = JSII_RTTI_SYMBOL_1;
41
- ReactProject[_a] = { fqn: "projen.web.ReactProject", version: "0.61.6" };
41
+ ReactProject[_a] = { fqn: "projen.web.ReactProject", version: "0.61.9" };
42
42
  /**
43
43
  * React project with TypeScript.
44
44
  *
@@ -104,7 +104,7 @@ class ReactTypeScriptProject extends typescript_1.TypeScriptAppProject {
104
104
  }
105
105
  exports.ReactTypeScriptProject = ReactTypeScriptProject;
106
106
  _b = JSII_RTTI_SYMBOL_1;
107
- ReactTypeScriptProject[_b] = { fqn: "projen.web.ReactTypeScriptProject", version: "0.61.6" };
107
+ ReactTypeScriptProject[_b] = { fqn: "projen.web.ReactTypeScriptProject", version: "0.61.9" };
108
108
  class ReactComponent extends component_1.Component {
109
109
  constructor(project, options) {
110
110
  super(project);
@@ -164,7 +164,7 @@ class ReactComponent extends component_1.Component {
164
164
  }
165
165
  exports.ReactComponent = ReactComponent;
166
166
  _c = JSII_RTTI_SYMBOL_1;
167
- ReactComponent[_c] = { fqn: "projen.web.ReactComponent", version: "0.61.6" };
167
+ ReactComponent[_c] = { fqn: "projen.web.ReactComponent", version: "0.61.9" };
168
168
  class ReactSampleCode extends component_1.Component {
169
169
  constructor(project, options) {
170
170
  super(project);
@@ -354,5 +354,5 @@ class ReactTypeDef extends file_1.FileBase {
354
354
  }
355
355
  exports.ReactTypeDef = ReactTypeDef;
356
356
  _d = JSII_RTTI_SYMBOL_1;
357
- ReactTypeDef[_d] = { fqn: "projen.web.ReactTypeDef", version: "0.61.6" };
357
+ ReactTypeDef[_d] = { fqn: "projen.web.ReactTypeDef", version: "0.61.9" };
358
358
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2ViL3JlYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLDRDQUF5QztBQUN6QyxrQ0FBK0Q7QUFDL0QsOENBS3VCO0FBQ3ZCLGdEQUEyQztBQUMzQyxnREFBNEM7QUFDNUMsOENBQStFO0FBQy9FLGtDQUFvQztBQTBEcEM7Ozs7R0FJRztBQUNILE1BQWEsWUFBYSxTQUFRLHdCQUFXO0lBTzNDLFlBQVksT0FBNEI7UUFDdEMsS0FBSyxDQUFDO1lBQ0osSUFBSSxFQUFFLEtBQUs7WUFDWCxHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDO1FBRXRDLElBQUksY0FBYyxDQUFDLElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRXhFLDZGQUE2RjtRQUM3RixJQUFJLE9BQU8sQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFO1lBQzlCLElBQUksZUFBZSxDQUFDLElBQUksRUFBRTtnQkFDeEIsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2FBQ3BCLENBQUMsQ0FBQztZQUNILElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO2dCQUM1QixTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQzthQUN0RSxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7O0FBM0JILG9DQTRCQzs7O0FBRUQ7Ozs7R0FJRztBQUNILE1BQWEsc0JBQXVCLFNBQVEsaUNBQW9CO0lBTTlELFlBQVksT0FBc0M7UUFDaEQsTUFBTSxj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QUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3BFLENBQUMsYUFBYSxHQUFHLGVBQWUsQ0FBQyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQzNEO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBT0Q7O0dBRUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxlQUFRO0lBQ3hDLFlBQ0UsT0FBK0IsRUFDL0IsUUFBZ0IsRUFDaEIsVUFBK0IsRUFBRTtRQUVqQyxLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRVMsaUJBQWlCLENBQUMsQ0FBWTtRQUN0QyxPQUFPLENBQUMseUNBQXlDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEUsQ0FBQzs7QUFYSCxvQ0FZQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IEZpbGVCYXNlLCBGaWxlQmFzZU9wdGlvbnMsIElSZXNvbHZlciB9IGZyb20gXCIuLi9maWxlXCI7XG5pbXBvcnQge1xuICBOb2RlUHJvamVjdCxcbiAgTm9kZVByb2plY3RPcHRpb25zLFxuICBUeXBlU2NyaXB0SnN4TW9kZSxcbiAgVHlwZVNjcmlwdE1vZHVsZVJlc29sdXRpb24sXG59IGZyb20gXCIuLi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBTYW1wbGVEaXIgfSBmcm9tIFwiLi4vc2FtcGxlLWZpbGVcIjtcbmltcG9ydCB7IFNvdXJjZUNvZGUgfSBmcm9tIFwiLi4vc291cmNlLWNvZGVcIjtcbmltcG9ydCB7IFR5cGVTY3JpcHRBcHBQcm9qZWN0LCBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMgfSBmcm9tIFwiLi4vdHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSBcIi4uL3V0aWxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSZWFjdFJld2lyZU9wdGlvbnMge1xuICAvKipcbiAgICogUmV3aXJlIHdlYnBhY2sgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogVXNlIHRoaXMgcHJvcGVydHkgdG8gb3ZlcnJpZGUgd2VicGFjayBjb25maWd1cmF0aW9uIHByb3BlcnRpZXMgcHJvdmlkZWRcbiAgICogYnkgY3JlYXRlLXJlYWN0LWFwcCwgd2l0aG91dCBuZWVkaW5nIHRvIGVqZWN0LlxuICAgKlxuICAgKiBUaGlzIHByb3BlcnR5IHdpbGwgY3JlYXRlIGEgYGNvbmZpZy1vdmVycmlkZXMuanNgIGZpbGUgaW4geW91ciByb290IGRpcmVjdG9yeSxcbiAgICogd2hpY2ggd2lsbCBjb250YWluIHRoZSBkZXNpcmVkIHJld2lyaW5nIGNvZGUuXG4gICAqXG4gICAqIFRvICoqb3ZlcnJpZGUqKiB0aGUgY29uZmlndXJhdGlvbiwgeW91IGNhbiBwcm92aWRlIHNpbXBsZSBrZXkgdmFsdWUgcGFpcnMuXG4gICAqIEtleXMgdGFrZSB0aGUgZm9ybSBvZiBqcyBjb2RlIGRpcmVjdGl2ZXMgdGhhdCB0cmF2ZXJzZSB0byB0aGUgZGVzaXJlZCBwcm9wZXJ0eS5cbiAgICogVmFsdWVzIHNob3VsZCBiZSBKU09OIHNlcmlhbGl6YWJsZSBvYmplY3RzLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb25maWc6XG4gICAqXG4gICAqIGBgYGpzb25cbiAgICogcmV3aXJlOiB7IFwibW9kdWxlLnVua25vd25Db250ZXh0Q3JpdGljYWxcIjogZmFsc2UgfVxuICAgKiBgYGBcbiAgICpcbiAgICogV2lsbCB0cmFuc2xhdGUgdG8gdGhlIGZvbGxvd2luZyBgY29uZmlnLW92ZXJyaWRlcy5qc2AgZmlsZTpcbiAgICpcbiAgICogYGBganNcbiAgICogbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBvdmVycmlkZShjb25maWcsIGVudikge1xuICAgKiAgIGNvbmZpZy5tb2R1bGUudW5rbm93bkNvbnRleHRDcml0aWNhbCA9IGZhbHNlO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHJld2lyZWQgY29uZmlnLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd2VicGFjay5qcy5vcmcvY29uZmlndXJhdGlvbi9cbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vdGltYXJuZXkvcmVhY3QtYXBwLXJld2lyZWRcbiAgICovXG4gIHJlYWRvbmx5IHJld2lyZT86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhY3RUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnNcbiAgZXh0ZW5kcyBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMsXG4gICAgUmVhY3RSZXdpcmVPcHRpb25zIHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhY3RQcm9qZWN0T3B0aW9uc1xuICBleHRlbmRzIE5vZGVQcm9qZWN0T3B0aW9ucyxcbiAgICBSZWFjdFJld2lyZU9wdGlvbnMge1xuICAvKipcbiAgICogU291cmNlIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJzcmNcIlxuICAgKi9cbiAgcmVhZG9ubHkgc3JjZGlyPzogc3RyaW5nO1xuICAvKipcbiAgICogR2VuZXJhdGUgb25lLXRpbWUgc2FtcGxlIGluIGBzcmMvYCBhbmQgYHB1YmxpYy9gIGlmIHRoZXJlIGFyZSBubyBmaWxlcyB0aGVyZS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc2FtcGxlQ29kZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVhY3QgcHJvamVjdCB3aXRob3V0IFR5cGVTY3JpcHQuXG4gKlxuICogQHBqaWQgcmVhY3RcbiAqL1xuZXhwb3J0IGNsYXNzIFJlYWN0UHJvamVjdCBleHRlbmRzIE5vZGVQcm9qZWN0IHtcbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggc291cmNlIGZpbGVzIHJlc2lkZS5cbiAgICogQGRlZmF1bHQgXCJzcmNcIlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNyY2Rpcjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFJlYWN0UHJvamVjdE9wdGlvbnMpIHtcbiAgICBzdXBlcih7XG4gICAgICBqZXN0OiBmYWxzZSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICB0aGlzLnNyY2RpciA9IG9wdGlvbnMuc3JjZGlyID8/IFwic3JjXCI7XG5cbiAgICBuZXcgUmVhY3RDb21wb25lbnQodGhpcywgeyB0eXBlc2NyaXB0OiBmYWxzZSwgcmV3aXJlOiBvcHRpb25zLnJld2lyZSB9KTtcblxuICAgIC8vIGdlbmVyYXRlIHNhbXBsZSBjb2RlIGluIGBzcmNgIGFuZCBgcHVibGljYCBpZiB0aGVzZSBkaXJlY3RvcmllcyBhcmUgZW1wdHkgb3Igbm9uLWV4aXN0ZW50LlxuICAgIGlmIChvcHRpb25zLnNhbXBsZUNvZGUgPz8gdHJ1ZSkge1xuICAgICAgbmV3IFJlYWN0U2FtcGxlQ29kZSh0aGlzLCB7XG4gICAgICAgIGZpbGVFeHQ6IFwianN4XCIsXG4gICAgICAgIHNyY2RpcjogdGhpcy5zcmNkaXIsXG4gICAgICB9KTtcbiAgICAgIG5ldyBTYW1wbGVEaXIodGhpcywgXCJwdWJsaWNcIiwge1xuICAgICAgICBzb3VyY2VEaXI6IHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgXCIuLlwiLCBcImFzc2V0c1wiLCBcIndlYlwiLCBcInJlYWN0XCIpLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVhY3QgcHJvamVjdCB3aXRoIFR5cGVTY3JpcHQuXG4gKlxuICogQHBqaWQgcmVhY3QtdHNcbiAqL1xuZXhwb3J0IGNsYXNzIFJlYWN0VHlwZVNjcmlwdFByb2plY3QgZXh0ZW5kcyBUeXBlU2NyaXB0QXBwUHJvamVjdCB7XG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIHNvdXJjZSBmaWxlcyByZXNpZGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogUmVhY3RUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMpIHtcbiAgICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICAgIHNyY2RpcjogXCJzcmNcIixcbiAgICAgIGVzbGludDogdHJ1ZSxcbiAgICAgIGplc3Q6IGZhbHNlLFxuICAgICAgdHNjb25maWc6IHtcbiAgICAgICAgaW5jbHVkZTogW1wic3JjXCJdLFxuICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICB0YXJnZXQ6IFwiZXM1XCIsXG4gICAgICAgICAgbGliOiBbXCJkb21cIiwgXCJkb20uaXRlcmFibGVcIiwgXCJlc25leHRcIl0sXG4gICAgICAgICAgYWxsb3dKczogdHJ1ZSxcbiAgICAgICAgICBza2lwTGliQ2hlY2s6IHRydWUsXG4gICAgICAgICAgZXNNb2R1bGVJbnRlcm9wOiB0cnVlLFxuICAgICAgICAgIGFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHM6IHRydWUsXG4gICAgICAgICAgc3RyaWN0OiB0cnVlLFxuICAgICAgICAgIGZvcmNlQ29uc2lzdGVudENhc2luZ0luRmlsZU5hbWVzOiB0cnVlLFxuICAgICAgICAgIG5vRmFsbHRocm91Z2hDYXNlc0luU3dpdGNoOiB0cnVlLFxuICAgICAgICAgIG1vZHVsZTogXCJjb21tb25qc1wiLFxuICAgICAgICAgIG1vZHVsZVJlc29sdXRpb246IFR5cGVTY3JpcHRNb2R1bGVSZXNvbHV0aW9uLk5PREUsXG4gICAgICAgICAgcmVzb2x2ZUpzb25Nb2R1bGU6IHRydWUsXG4gICAgICAgICAgaXNvbGF0ZWRNb2R1bGVzOiB0cnVlLFxuICAgICAgICAgIG5vRW1pdDogdHJ1ZSxcbiAgICAgICAgICBqc3g6IFR5cGVTY3JpcHRKc3hNb2RlLlJFQUNUX0pTWCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0eXBlc2NyaXB0VmVyc2lvbjogb3B0aW9ucy50eXBlc2NyaXB0VmVyc2lvbiA/PyBcIl40LjAuM1wiLFxuICAgIH07XG5cbiAgICAvLyBuZXZlciBnZW5lcmF0ZSBkZWZhdWx0IFR5cGVTY3JpcHQgc2FtcGxlIGNvZGUsIHNpbmNlIHRoaXMgY2xhc3MgcHJvdmlkZXMgaXRzIG93blxuICAgIHN1cGVyKFxuICAgICAgZGVlcE1lcmdlKFtcbiAgICAgICAgZGVmYXVsdE9wdGlvbnMsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIHsgc2FtcGxlQ29kZTogZmFsc2UgfSxcbiAgICAgIF0pIGFzIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9uc1xuICAgICk7XG5cbiAgICB0aGlzLnNyY2RpciA9IG9wdGlvbnMuc3JjZGlyID8/IFwic3JjXCI7XG5cbiAgICB0aGlzLmVzbGludD8uYWRkUnVsZXMoe1xuICAgICAgXCJpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcIjogW1xuICAgICAgICBcImVycm9yXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBkZXZEZXBlbmRlbmNpZXM6IFtcIioqL3NyYy8qKi8qLnRlc3QudHN4XCIsIFwiKiovc3JjL3NldHVwVGVzdHMudHNcIl0sXG4gICAgICAgICAgb3B0aW9uYWxEZXBlbmRlbmNpZXM6IGZhbHNlLFxuICAgICAgICAgIHBlZXJEZXBlbmRlbmNpZXM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgbmV3IFJlYWN0Q29tcG9uZW50KHRoaXMsIHsgdHlwZXNjcmlwdDogdHJ1ZSwgcmV3aXJlOiBvcHRpb25zLnJld2lyZSB9KTtcblxuICAgIC8vIGdlbmVyYXRlIHNhbXBsZSBjb2RlIGluIGBzcmNgIGFuZCBgcHVibGljYCBpZiB0aGVzZSBkaXJlY3RvcmllcyBhcmUgZW1wdHkgb3Igbm9uLWV4aXN0ZW50LlxuICAgIGlmIChvcHRpb25zLnNhbXBsZUNvZGUgPz8gdHJ1ZSkge1xuICAgICAgbmV3IFJlYWN0U2FtcGxlQ29kZSh0aGlzLCB7XG4gICAgICAgIGZpbGVFeHQ6IFwidHN4XCIsXG4gICAgICAgIHNyY2RpcjogdGhpcy5zcmNkaXIsXG4gICAgICB9KTtcbiAgICAgIG5ldyBTYW1wbGVEaXIodGhpcywgXCJwdWJsaWNcIiwge1xuICAgICAgICBzb3VyY2VEaXI6IHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgXCIuLlwiLCBcImFzc2V0c1wiLCBcIndlYlwiLCBcInJlYWN0XCIpLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhY3RDb21wb25lbnRPcHRpb25zIGV4dGVuZHMgUmVhY3RSZXdpcmVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYXBwbHkgb3B0aW9ucyBzcGVjaWZpYyBmb3IgVHlwZVNjcmlwdCBSZWFjdCBwcm9qZWN0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHR5cGVzY3JpcHQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgUmVhY3RDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IHR5cGVzY3JpcHQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogTm9kZVByb2plY3QsIG9wdGlvbnM6IFJlYWN0Q29tcG9uZW50T3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgdGhpcy50eXBlc2NyaXB0ID0gb3B0aW9ucy50eXBlc2NyaXB0ID8/IGZhbHNlO1xuXG4gICAgLy8gTm8gY29tcGlsZSBmb3IgcmVhY3QgYXBwXG4gICAgcHJvamVjdC5jb21waWxlVGFzay5yZXNldCgpO1xuXG4gICAgcHJvamVjdC5hZGREZXBzKFwicmVhY3RcIiwgXCJyZWFjdC1kb21cIiwgXCJyZWFjdC1zY3JpcHRzQF41XCIsIFwid2ViLXZpdGFsc1wiKTtcbiAgICBwcm9qZWN0LmFkZERldkRlcHMoXG4gICAgICBcIkB0ZXN0aW5nLWxpYnJhcnkvamVzdC1kb21cIixcbiAgICAgIFwiQHRlc3RpbmctbGlicmFyeS9yZWFjdFwiLFxuICAgICAgXCJAdGVzdGluZy1saWJyYXJ5L3VzZXItZXZlbnRcIlxuICAgICk7XG4gICAgaWYgKHRoaXMudHlwZXNjcmlwdCkge1xuICAgICAgcHJvamVjdC5hZGREZXZEZXBzKFwiQHR5cGVzL2plc3RcIiwgXCJAdHlwZXMvcmVhY3RcIiwgXCJAdHlwZXMvcmVhY3QtZG9tXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHJld2lyZSA9IG9wdGlvbnMucmV3aXJlID8/IGZhbHNlO1xuXG4gICAgaWYgKHJld2lyZSkge1xuICAgICAgY29uc3Qgb3ZlcnJpZGVzUGF0aCA9IFwiLnByb2plbi9yZWFjdC1jb25maWctb3ZlcnJpZGVzLmpzXCI7XG4gICAgICBwcm9qZWN0LmFkZERldkRlcHMoXCJyZWFjdC1hcHAtcmV3aXJlZFwiKTtcbiAgICAgIHByb2plY3QuYWRkRmllbGRzKHsgXCJjb25maWctb3ZlcnJpZGVzLXBhdGhcIjogb3ZlcnJpZGVzUGF0aCB9KTtcblxuICAgICAgY29uc3QgY29uZmlnT3ZlcnJpZGVzID0gbmV3IFNvdXJjZUNvZGUodGhpcy5wcm9qZWN0LCBvdmVycmlkZXNQYXRoKTtcbiAgICAgIGlmICghY29uZmlnT3ZlcnJpZGVzLm1hcmtlcikge1xuICAgICAgICBjb25maWdPdmVycmlkZXMubGluZShgLy8gJHtjb25maWdPdmVycmlkZXMubWFya2VyfWApO1xuICAgICAgfVxuICAgICAgY29uZmlnT3ZlcnJpZGVzLmxpbmUoXCIvKipcIik7XG4gICAgICBjb25maWdPdmVycmlkZXMubGluZShcbiAgICAgICAgXCIgKiBPdmVycmlkZSBDUkEgY29uZmlndXJhdGlvbiB3aXRob3V0IG5lZWRpbmcgdG8gZWplY3QuXCJcbiAgICAgICk7XG4gICAgICBjb25maWdPdmVycmlkZXMubGluZShcIiAqXCIpO1xuICAgICAgY29uZmlnT3ZlcnJpZGVzLmxpbmUoXG4gICAgICAgIFwiICogQHNlZSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9yZWFjdC1hcHAtcmV3aXJlZFwiXG4gICAgICApO1xuICAgICAgY29uZmlnT3ZlcnJpZGVzLmxpbmUoXCIgKi9cIik7XG4gICAgICBjb25maWdPdmVycmlkZXMub3BlbihcIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gb3ZlcnJpZGUoY29uZmlnLCBlbnYpIHtcIik7XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhyZXdpcmUpKSB7XG4gICAgICAgIGNvbmZpZ092ZXJyaWRlcy5saW5lKGBjb25maWcuJHtrZXl9ID0gJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9O2ApO1xuICAgICAgfVxuICAgICAgY29uZmlnT3ZlcnJpZGVzLmxpbmUoXCJyZXR1cm4gY29uZmlnO1wiKTtcbiAgICAgIGNvbmZpZ092ZXJyaWRlcy5jbG9zZShcIn07XCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlYWN0U2NyaXB0cyA9IHJld2lyZSA/IFwicmVhY3QtYXBwLXJld2lyZWRcIiA6IFwicmVhY3Qtc2NyaXB0c1wiO1xuXG4gICAgLy8gQ3JlYXRlIFJlYWN0IEFwcCBDTEkgY29tbWFuZHMsIHNlZTogaHR0cHM6Ly9jcmVhdGUtcmVhY3QtYXBwLmRldi9kb2NzL2F2YWlsYWJsZS1zY3JpcHRzL1xuICAgIHByb2plY3QuYWRkVGFzayhcImRldlwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJTdGFydHMgdGhlIHJlYWN0IGFwcGxpY2F0aW9uXCIsXG4gICAgICBleGVjOiBgJHtyZWFjdFNjcmlwdHN9IHN0YXJ0YCxcbiAgICB9KTtcblxuICAgIHByb2plY3QuY29tcGlsZVRhc2suZXhlYyhgJHtyZWFjdFNjcmlwdHN9IGJ1aWxkYCk7XG5cbiAgICBwcm9qZWN0LnRlc3RUYXNrLmV4ZWMoYCR7cmVhY3RTY3JpcHRzfSB0ZXN0IC0td2F0Y2hBbGw9ZmFsc2VgKTtcblxuICAgIGNvbnN0IHRlc3RXYXRjaCA9IHByb2plY3QudGFza3MudHJ5RmluZChcInRlc3Q6d2F0Y2hcIik7XG4gICAgdGVzdFdhdGNoPy5yZXNldChgJHtyZWFjdFNjcmlwdHN9IHRlc3RgKTtcblxuICAgIHByb2plY3QubnBtaWdub3JlPy5leGNsdWRlKFwiIyBCdWlsZFwiLCBcIi9idWlsZC9cIik7XG4gICAgcHJvamVjdC5naXRpZ25vcmUuZXhjbHVkZShcIiMgQnVpbGRcIiwgXCIvYnVpbGQvXCIpO1xuXG4gICAgcHJvamVjdC5wYWNrYWdlLmFkZEZpZWxkKFwiZXNsaW50Q29uZmlnXCIsIHtcbiAgICAgIGV4dGVuZHM6IFtcInJlYWN0LWFwcFwiLCBcInJlYWN0LWFwcC9qZXN0XCJdLFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5wYWNrYWdlLmFkZEZpZWxkKFwiYnJvd3NlcnNsaXN0XCIsIHtcbiAgICAgIHByb2R1Y3Rpb246IFtcIj4wLjIlXCIsIFwibm90IGRlYWRcIiwgXCJub3Qgb3BfbWluaSBhbGxcIl0sXG4gICAgICBkZXZlbG9wbWVudDogW1xuICAgICAgICBcImxhc3QgMSBjaHJvbWUgdmVyc2lvblwiLFxuICAgICAgICBcImxhc3QgMSBmaXJlZm94IHZlcnNpb25cIixcbiAgICAgICAgXCJsYXN0IDEgc2FmYXJpIHZlcnNpb25cIixcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFJlYWN0U2FtcGxlQ29kZU9wdGlvbnMge1xuICAvKipcbiAgICogRmlsZSBleHRlbnNpb24gZm9yIHNhbXBsZSBqYXZhc2NyaXB0IGNvZGUgdG8gYmUgc2F2ZWQgYXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwianN4XCJcbiAgICovXG4gIHJlYWRvbmx5IGZpbGVFeHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggUmVhY3QganN4IGZpbGVzIGFyZSBkZWNsYXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNyY2Rpcjogc3RyaW5nO1xufVxuXG5jbGFzcyBSZWFjdFNhbXBsZUNvZGUgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbGVFeHQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBzcmNkaXI6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBOb2RlUHJvamVjdCwgb3B0aW9uczogUmVhY3RTYW1wbGVDb2RlT3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgdGhpcy5maWxlRXh0ID0gb3B0aW9ucy5maWxlRXh0ID8/IFwianN4XCI7XG4gICAgdGhpcy5zcmNkaXIgPSBvcHRpb25zLnNyY2RpcjtcblxuICAgIGNvbnN0IGxvZ29TdmcgPSBbXG4gICAgICAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA4NDEuOSA1OTUuM1wiPicsXG4gICAgICAnICAgIDxnIGZpbGw9XCIjNjFEQUZCXCI+JyxcbiAgICAgICcgICAgICAgIDxwYXRoIGQ9XCJNNjY2LjMgMjk2LjVjMC0zMi41LTQwLjctNjMuMy0xMDMuMS04Mi40IDE0LjQtNjMuNiA4LTExNC4yLTIwLjItMTMwLjQtNi41LTMuOC0xNC4xLTUuNi0yMi40LTUuNnYyMi4zYzQuNiAwIDguMy45IDExLjQgMi42IDEzLjYgNy44IDE5LjUgMzcuNSAxNC45IDc1LjctMS4xIDkuNC0yLjkgMTkuMy01LjEgMjkuNC0xOS42LTQuOC00MS04LjUtNjMuNS0xMC45LTEzLjUtMTguNS0yNy41LTM1LjMtNDEuNi01MCAzMi42LTMwLjMgNjMuMi00Ni45IDg0LTQ2LjlWNzhjLTI3LjUgMC02My41IDE5LjYtOTkuOSA1My42LTM2LjQtMzMuOC03Mi40LTUzLjItOTkuOS01My4ydjIyLjNjMjAuNyAwIDUxLjQgMTYuNSA4NCA0Ni42LTE0IDE0LjctMjggMzEuNC00MS4zIDQ5LjktMjIuNiAyLjQtNDQgNi4xLTYzLjYgMTEtMi4zLTEwLTQtMTkuNy01LjItMjktNC43LTM4LjIgMS4xLTY3LjkgMTQuNi03NS44IDMtMS44IDYuOS0yLjYgMTEuNS0yLjZWNzguNWMtOC40IDAtMTYgMS44LTIyLjYgNS42LTI4LjEgMTYuMi0zNC40IDY2LjctMTkuOSAxMzAuMS02Mi4yIDE5LjItMTAyLjcgNDkuOS0xMDIuNyA4Mi4zIDAgMzIuNSA0MC43IDYzLjMgMTAzLjEgODIuNC0xNC40IDYzLjYtOCAxMTQuMiAyMC4yIDEzMC40IDYuNSAzLjggMTQuMSA1LjYgMjIuNSA1LjYgMjcuNSAwIDYzLjUtMTkuNiA5OS45LTUzLjYgMzYuNCAzMy44IDcyLjQgNTMuMiA5OS45IDUzLjIgOC40IDAgMTYtMS44IDIyLjYtNS42IDI4LjEtMTYuMiAzNC40LTY2LjcgMTkuOS0xMzAuMSA2Mi0xOS4xIDEwMi41LTQ5LjkgMTAyLjUtODIuM3ptLTEzMC4yLTY2LjdjLTMuNyAxMi45LTguMyAyNi4yLTEzLjUgMzkuNS00LjEtOC04LjQtMTYtMTMuMS0yNC00LjYtOC05LjUtMTUuOC0xNC40LTIzLjQgMTQuMiAyLjEgMjcuOSA0LjcgNDEgNy45em0tNDUuOCAxMDYuNWMtNy44IDEzLjUtMTUuOCAyNi4zLTI0LjEgMzguMi0xNC45IDEuMy0zMCAyLTQ1LjIgMi0xNS4xIDAtMzAuMi0uNy00NS0xLjktOC4zLTExLjktMTYuNC0yNC42LTI0LjItMzgtNy42LTEzLjEtMTQuNS0yNi40LTIwLjgtMzkuOCA2LjItMTMuNCAxMy4yLTI2LjggMjAuNy0zOS45IDcuOC0xMy41IDE1LjgtMjYuMyAyNC4xLTM4LjIgMTQuOS0xLjMgMzAtMiA0NS4yLTIgMTUuMSAwIDMwLjIuNyA0NSAxLjkgOC4zIDExLjkgMTYuNCAyNC42IDI0LjIgMzggNy42IDEzLjEgMTQuNSAyNi40IDIwLjggMzkuOC02LjMgMTMuNC0xMy4yIDI2LjgtMjAuNyAzOS45em0zMi4zLTEzYzUuNCAxMy40IDEwIDI2LjggMTMuOCAzOS44LTEzLjEgMy4yLTI2LjkgNS45LTQxLjIgOCA0LjktNy43IDkuOC0xNS42IDE0LjQtMjMuNyA0LjYtOCA4LjktMTYuMSAxMy0yNC4xek00MjEuMiA0MzBjLTkuMy05LjYtMTguNi0yMC4zLTI3LjgtMzIgOSAuNCAxOC4yLjcgMjcuNS43IDkuNCAwIDE4LjctLjIgMjcuOC0uNy05IDExLjctMTguMyAyMi40LTI3LjUgMzJ6bS03NC40LTU4LjljLTE0LjItMi4xLTI3LjktNC43LTQxLTcuOSAzLjctMTIuOSA4LjMtMjYuMiAxMy41LTM5LjUgNC4xIDggOC40IDE2IDEzLjEgMjQgNC43IDggOS41IDE1LjggMTQuNCAyMy40ek00MjAuNyAxNjNjOS4zIDkuNiAxOC42IDIwLjMgMjcuOCAzMi05LS40LTE4LjItLjctMjcuNS0uNy05LjQgMC0xOC43LjItMjcuOC43IDktMTEuNyAxOC4zLTIyLjQgMjcuNS0zMnptLTc0IDU4LjljLTQuOSA3LjctOS44IDE1LjYtMTQuNCAyMy43LTQuNiA4LTguOSAxNi0xMyAyNC01LjQtMTMuNC0xMC0yNi44LTEzLjgtMzkuOCAxMy4xLTMuMSAyNi45LTUuOCA0MS4yLTcuOXptLTkwLjUgMTI1LjJjLTM1LjQtMTUuMS01OC4zLTM0LjktNTguMy01MC42IDAtMTUuNyAyMi45LTM1LjYgNTguMy01MC42IDguNi0zLjcgMTgtNyAyNy43LTEwLjEgNS43IDE5LjYgMTMuMiA0MCAyMi41IDYwLjktOS4yIDIwLjgtMTYuNiA0MS4xLTIyLjIgNjAuNi05LjktMy4xLTE5LjMtNi41LTI4LTEwLjJ6TTMxMCA0OTBjLTEzLjYtNy44LTE5LjUtMzcuNS0xNC45LTc1LjcgMS4xLTkuNCAyLjktMTkuMyA1LjEtMjkuNCAxOS42IDQuOCA0MSA4LjUgNjMuNSAxMC45IDEzLjUgMTguNSAyNy41IDM1LjMgNDEuNiA1MC0zMi42IDMwLjMtNjMuMiA0Ni45LTg0IDQ2LjktNC41LS4xLTguMy0xLTExLjMtMi43em0yMzcuMi03Ni4yYzQuNyAzOC4yLTEuMSA2Ny45LTE0LjYgNzUuOC0zIDEuOC02LjkgMi42LTExLjUgMi42LTIwLjcgMC01MS40LTE2LjUtODQtNDYuNiAxNC0xNC43IDI4LTMxLjQgNDEuMy00OS45IDIyLjYtMi40IDQ0LTYuMSA2My42LTExIDIuMyAxMC4xIDQuMSAxOS44IDUuMiAyOS4xem0zOC41LTY2LjdjLTguNiAzLjctMTggNy0yNy43IDEwLjEtNS43LTE5LjYtMTMuMi00MC0yMi41LTYwLjkgOS4yLTIwLjggMTYuNi00MS4xIDIyLjItNjAuNiA5LjkgMy4xIDE5LjMgNi41IDI4LjEgMTAuMiAzNS40IDE1LjEgNTguMyAzNC45IDU4LjMgNTAuNi0uMSAxNS43LTIzIDM1LjYtNTguNCA1MC42ek0zMjAuOCA3OC40elwiLz4nLFxuICAgICAgJyAgICAgICAgPGNpcmNsZSBjeD1cIjQyMC45XCIgY3k9XCIyOTYuNVwiIHI9XCI0NS43XCIvPicsXG4gICAgICAnICAgICAgICA8cGF0aCBkPVwiTTUyMC41IDc4LjF6XCIvPicsXG4gICAgICBcIiAgICA8L2c+XCIsXG4gICAgICBcIjwvc3ZnPlwiLFxuICAgICAgXCJcIixcbiAgICBdO1xuXG4gICAgY29uc3QgYXBwSnN4ID0gW1xuICAgICAgXCJpbXBvcnQgbG9nbyBmcm9tICcuL2xvZ28uc3ZnJztcIixcbiAgICAgIFwiaW1wb3J0ICcuL0FwcC5jc3MnXCIsXG4gICAgICBcIlwiLFxuICAgICAgXCJmdW5jdGlvbiBBcHAoKSB7XCIsXG4gICAgICBcIiAgcmV0dXJuIChcIixcbiAgICAgICcgICA8ZGl2IGNsYXNzTmFtZT1cIkFwcFwiPicsXG4gICAgICAnICAgICAgPGhlYWRlciBjbGFzc05hbWU9XCJBcHAtaGVhZGVyXCI+JyxcbiAgICAgICcgICAgICAgIDxpbWcgc3JjPXtsb2dvfSBjbGFzc05hbWU9XCJBcHAtbG9nb1wiIGFsdD1cImxvZ29cIiAvPicsXG4gICAgICBcIiAgICAgICAgPHA+XCIsXG4gICAgICBgICAgICAgICAgIEVkaXQgPGNvZGU+c3JjL0FwcC4ke3RoaXMuZmlsZUV4dH08L2NvZGU+IGFuZCBzYXZlIHRvIHJlbG9hZC5gLFxuICAgICAgXCIgICAgICAgIDwvcD5cIixcbiAgICAgICcgICAgICAgIDxhIGNsYXNzTmFtZT1cIkFwcC1saW5rXCInLFxuICAgICAgJyAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9yZWFjdGpzLm9yZ1wiJyxcbiAgICAgICcgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCInLFxuICAgICAgJyAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCInLFxuICAgICAgXCIgICAgICAgID5cIixcbiAgICAgIFwiICAgICAgICAgIExlYXJuIFJlYWN0XCIsXG4gICAgICBcIiAgICAgICAgPC9hPlwiLFxuICAgICAgXCIgICAgICA8L2hlYWRlcj5cIixcbiAgICAgIFwiICAgIDwvZGl2PlwiLFxuICAgICAgXCIgICk7XCIsXG4gICAgICBcIn1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcImV4cG9ydCBkZWZhdWx0IEFwcDtcIixcbiAgICAgIFwiXCIsXG4gICAgXTtcblxuICAgIGNvbnN0IGFwcENzcyA9IFtcbiAgICAgIFwiLkFwcCB7XCIsXG4gICAgICBcIiAgdGV4dC1hbGlnbjogY2VudGVyO1wiLFxuICAgICAgXCJ9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIuQXBwLWxvZ28ge1wiLFxuICAgICAgXCIgIGhlaWdodDogNDB2bWluO1wiLFxuICAgICAgXCIgIHBvaW50ZXItZXZlbnRzOiBub25lO1wiLFxuICAgICAgXCJ9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCJAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IG5vLXByZWZlcmVuY2UpIHtcIixcbiAgICAgIFwiICAuQXBwLWxvZ28ge1wiLFxuICAgICAgXCIgICAgYW5pbWF0aW9uOiBBcHAtbG9nby1zcGluIGluZmluaXRlIDIwcyBsaW5lYXI7XCIsXG4gICAgICBcIiAgfVwiLFxuICAgICAgXCJ9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIuQXBwLWhlYWRlciB7XCIsXG4gICAgICBcIiAgYmFja2dyb3VuZC1jb2xvcjogIzI4MmMzNDtcIixcbiAgICAgIFwiICBtaW4taGVpZ2h0OiAxMDB2aDtcIixcbiAgICAgIFwiICBkaXNwbGF5OiBmbGV4O1wiLFxuICAgICAgXCIgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XCIsXG4gICAgICBcIiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcIixcbiAgICAgIFwiICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcIixcbiAgICAgIFwiICBmb250LXNpemU6IGNhbGMoMTBweCArIDJ2bWluKTtcIixcbiAgICAgIFwiICBjb2xvcjogd2hpdGU7XCIsXG4gICAgICBcIn1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIi5BcHAtbGluayB7XCIsXG4gICAgICBcIiAgY29sb3I6ICM2MWRhZmI7XCIsXG4gICAgICBcIn1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIkBrZXlmcmFtZXMgQXBwLWxvZ28tc3BpbiB7XCIsXG4gICAgICBcIiAgZnJvbSB7XCIsXG4gICAgICBcIiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcIixcbiAgICAgIFwiICB9XCIsXG4gICAgICBcIiAgdG8ge1wiLFxuICAgICAgXCIgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcIixcbiAgICAgIFwiICB9XCIsXG4gICAgICBcIn1cIixcbiAgICAgIFwiXCIsXG4gICAgXTtcblxuICAgIGNvbnN0IGFwcFRlc3RKc3ggPSBbXG4gICAgICBcImltcG9ydCB7IHJlbmRlciwgc2NyZWVuIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XCIsXG4gICAgICBcImltcG9ydCBBcHAgZnJvbSAnLi9BcHAnO1wiLFxuICAgICAgXCJcIixcbiAgICAgIFwidGVzdCgncmVuZGVycyBsZWFybiByZWFjdCBsaW5rJywgKCkgPT4ge1wiLFxuICAgICAgXCIgIHJlbmRlcig8QXBwIC8+KTtcIixcbiAgICAgIFwiICBjb25zdCBsaW5rRWxlbWVudCA9IHNjcmVlbi5nZXRCeVRleHQoL2xlYXJuIHJlYWN0L2kpO1wiLFxuICAgICAgXCIgIGV4cGVjdChsaW5rRWxlbWVudCkudG9CZUluVGhlRG9jdW1lbnQoKTtcIixcbiAgICAgIFwifSk7XCIsXG4gICAgICBcIlwiLFxuICAgIF07XG5cbiAgICBjb25zdCBpbmRleEpzeCA9IFtcbiAgICAgIFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcIixcbiAgICAgIFwiaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XCIsXG4gICAgICBcImltcG9ydCAnLi9pbmRleC5jc3MnO1wiLFxuICAgICAgXCJpbXBvcnQgQXBwIGZyb20gJy4vQXBwJztcIixcbiAgICAgIFwiaW1wb3J0IHJlcG9ydFdlYlZpdGFscyBmcm9tICcuL3JlcG9ydFdlYlZpdGFscyc7XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCJSZWFjdERPTS5yZW5kZXIoXCIsXG4gICAgICBcIiAgPFJlYWN0LlN0cmljdE1vZGU+XCIsXG4gICAgICBcIiAgICA8QXBwIC8+XCIsXG4gICAgICBcIiAgPC9SZWFjdC5TdHJpY3RNb2RlPixcIixcbiAgICAgIFwiICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpXCIsXG4gICAgICBcIik7XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIvLyBJZiB5b3Ugd2FudCB0byBzdGFydCBtZWFzdXJpbmcgcGVyZm9ybWFuY2UgaW4geW91ciBhcHAsIHBhc3MgYSBmdW5jdGlvblwiLFxuICAgICAgXCIvLyB0byBsb2cgcmVzdWx0cyAoZm9yIGV4YW1wbGU6IHJlcG9ydFdlYlZpdGFscyhjb25zb2xlLmxvZykpXCIsXG4gICAgICBcIi8vIG9yIHNlbmQgdG8gYW4gYW5hbHl0aWNzIGVuZHBvaW50LiBMZWFybiBtb3JlOiBodHRwczovL2JpdC5seS9DUkEtdml0YWxzXCIsXG4gICAgICBcInJlcG9ydFdlYlZpdGFscygpO1wiLFxuICAgICAgXCJcIixcbiAgICBdO1xuXG4gICAgY29uc3QgaW5kZXhDc3MgPSBbXG4gICAgICBcImJvZHkge1wiLFxuICAgICAgXCIgIG1hcmdpbjogMDtcIixcbiAgICAgIFwiICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCAnUm9ib3RvJywgJ094eWdlbicsXCIsXG4gICAgICBcIiAgICAnVWJ1bnR1JywgJ0NhbnRhcmVsbCcsICdGaXJhIFNhbnMnLCAnRHJvaWQgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsXCIsXG4gICAgICBcIiAgICBzYW5zLXNlcmlmO1wiLFxuICAgICAgXCIgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1wiLFxuICAgICAgXCIgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XCIsXG4gICAgICBcIn1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcImNvZGUge1wiLFxuICAgICAgXCIgIGZvbnQtZmFtaWx5OiBzb3VyY2UtY29kZS1wcm8sIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAnQ291cmllciBOZXcnLFwiLFxuICAgICAgXCIgICAgbW9ub3NwYWNlO1wiLFxuICAgICAgXCJ9XCIsXG4gICAgICBcIlwiLFxuICAgIF07XG5cbiAgICBjb25zdCByZXBvcnRXZWJWaXRhbHNKcyA9IFtcbiAgICAgIFwiaW1wb3J0IHsgUmVwb3J0SGFuZGxlciB9IGZyb20gJ3dlYi12aXRhbHMnO1wiLFxuICAgICAgXCJcIixcbiAgICAgIFwiY29uc3QgcmVwb3J0V2ViVml0YWxzID0gKG9uUGVyZkVudHJ5PzogUmVwb3J0SGFuZGxlcikgPT4ge1wiLFxuICAgICAgXCIgIGlmIChvblBlcmZFbnRyeSAmJiBvblBlcmZFbnRyeSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XCIsXG4gICAgICBcIiAgICBpbXBvcnQoJ3dlYi12aXRhbHMnKS50aGVuKFwiLFxuICAgICAgXCIgICAgICAoeyBnZXRDTFMsIGdldEZJRCwgZ2V0RkNQLCBnZXRMQ1AsIGdldFRURkIgfSkgPT4ge1wiLFxuICAgICAgXCIgICAgICAgIGdldENMUyhvblBlcmZFbnRyeSk7XCIsXG4gICAgICBcIiAgICAgICAgZ2V0RklEKG9uUGVyZkVudHJ5KTtcIixcbiAgICAgIFwiICAgICAgICBnZXRGQ1Aob25QZXJmRW50cnkpO1wiLFxuICAgICAgXCIgICAgICAgIGdldExDUChvblBlcmZFbnRyeSk7XCIsXG4gICAgICBcIiAgICAgICAgZ2V0VFRGQihvblBlcmZFbnRyeSk7XCIsXG4gICAgICBcIiAgICAgIH0sXCIsXG4gICAgICBcIiAgICAgICgpID0+IHt9XCIsXG4gICAgICBcIiAgICApO1wiLFxuICAgICAgXCIgIH1cIixcbiAgICAgIFwifTtcIixcbiAgICAgIFwiXCIsXG4gICAgICBcImV4cG9ydCBkZWZhdWx0IHJlcG9ydFdlYlZpdGFscztcIixcbiAgICBdO1xuXG4gICAgY29uc3Qgc2V0dXBUZXN0c0pzID0gW1xuICAgICAgXCIvLyBqZXN0LWRvbSBhZGRzIGN1c3RvbSBqZXN0IG1hdGNoZXJzIGZvciBhc3NlcnRpbmcgb24gRE9NIG5vZGVzLlwiLFxuICAgICAgXCIvLyBhbGxvd3MgeW91IHRvIGRvIHRoaW5ncyBsaWtlOlwiLFxuICAgICAgXCIvLyBleHBlY3QoZWxlbWVudCkudG9IYXZlVGV4dENvbnRlbnQoL3JlYWN0L2kpXCIsXG4gICAgICBcIi8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS90ZXN0aW5nLWxpYnJhcnkvamVzdC1kb21cIixcbiAgICAgIFwiaW1wb3J0ICdAdGVzdGluZy1saWJyYXJ5L2plc3QtZG9tJztcIixcbiAgICAgIFwiXCIsXG4gICAgXTtcblxuICAgIGNvbnN0IHJlYWN0VHlwZURlZiA9IFsnLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJyZWFjdC1zY3JpcHRzXCIgLz4nXTtcblxuICAgIC8vIGpzL3RzIG5vdCBqc3gvdHN4XG4gICAgY29uc3QgZmlsZUV4dFdpdGhvdXRYID0gdGhpcy5maWxlRXh0LnJlcGxhY2UoXCJ4XCIsIFwiXCIpO1xuXG4gICAgbmV3IFNhbXBsZURpcihwcm9qZWN0LCB0aGlzLnNyY2Rpciwge1xuICAgICAgZmlsZXM6IHtcbiAgICAgICAgXCJyZWFjdC1hcHAtZW52LmQudHNcIjogcmVhY3RUeXBlRGVmLmpvaW4oXCJcXG5cIiksXG4gICAgICAgIFwibG9nby5zdmdcIjogbG9nb1N2Zy5qb2luKFwiXFxuXCIpLFxuICAgICAgICBbXCJBcHAuXCIgKyB0aGlzLmZpbGVFeHRdOiBhcHBKc3guam9pbihcIlxcblwiKSxcbiAgICAgICAgW1wiQXBwLnRlc3QuXCIgKyB0aGlzLmZpbGVFeHRdOiBhcHBUZXN0SnN4LmpvaW4oXCJcXG5cIiksXG4gICAgICAgIFwiQXBwLmNzc1wiOiBhcHBDc3Muam9pbihcIlxcblwiKSxcbiAgICAgICAgW1wiaW5kZXguXCIgKyB0aGlzLmZpbGVFeHRdOiBpbmRleEpzeC5qb2luKFwiXFxuXCIpLFxuICAgICAgICBcImluZGV4LmNzc1wiOiBpbmRleENzcy5qb2luKFwiXFxuXCIpLFxuICAgICAgICBbXCJyZXBvcnRXZWJWaXRhbHMuXCIgKyBmaWxlRXh0V2l0aG91dFhdOiByZXBvcnRXZWJWaXRhbHNKcy5qb2luKFwiXFxuXCIpLFxuICAgICAgICBbXCJzZXR1cFRlc3RzLlwiICsgZmlsZUV4dFdpdGhvdXRYXTogc2V0dXBUZXN0c0pzLmpvaW4oXCJcXG5cIiksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgTm8gbG9uZ2VyIHVzZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVhY3RUeXBlRGVmT3B0aW9ucyBleHRlbmRzIEZpbGVCYXNlT3B0aW9ucyB7fVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIE5vIGxvbmdlciB1c2VkLlxuICovXG5leHBvcnQgY2xhc3MgUmVhY3RUeXBlRGVmIGV4dGVuZHMgRmlsZUJhc2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm9qZWN0OiBSZWFjdFR5cGVTY3JpcHRQcm9qZWN0LFxuICAgIGZpbGVQYXRoOiBzdHJpbmcsXG4gICAgb3B0aW9uczogUmVhY3RUeXBlRGVmT3B0aW9ucyA9IHt9XG4gICkge1xuICAgIHN1cGVyKHByb2plY3QsIGZpbGVQYXRoLCBvcHRpb25zKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzeW50aGVzaXplQ29udGVudChfOiBJUmVzb2x2ZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBbJy8vLyA8cmVmZXJlbmNlIHR5cGVzPVwicmVhY3Qtc2NyaXB0c1wiIC8+J10uam9pbihcIlxcblwiKTtcbiAgfVxufVxuIl19
@@ -33,5 +33,5 @@ class TailwindConfig {
33
33
  }
34
34
  exports.TailwindConfig = TailwindConfig;
35
35
  _a = JSII_RTTI_SYMBOL_1;
36
- TailwindConfig[_a] = { fqn: "projen.web.TailwindConfig", version: "0.61.6" };
36
+ TailwindConfig[_a] = { fqn: "projen.web.TailwindConfig", version: "0.61.9" };
37
37
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpbHdpbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2ViL3RhaWx3aW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0Esa0NBQW1DO0FBU25DOzs7Ozs7O0dBT0c7QUFDSCxNQUFhLGNBQWM7SUFJekIsWUFBWSxPQUFvQixFQUFFLE9BQStCO1FBQy9ELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxFQUFFLFFBQVEsSUFBSSxzQkFBc0IsQ0FBQztRQUU1RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksZUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQy9DLEdBQUcsRUFBRTtnQkFDSCxLQUFLLEVBQUUsRUFBRTtnQkFDVCxRQUFRLEVBQUUsS0FBSztnQkFDZixLQUFLLEVBQUU7b0JBQ0wsTUFBTSxFQUFFLEVBQUU7aUJBQ1g7Z0JBQ0QsUUFBUSxFQUFFO29CQUNSLE1BQU0sRUFBRSxFQUFFO2lCQUNYO2dCQUNELE9BQU8sRUFBRSxFQUFFO2FBQ1o7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7O0FBdEJILHdDQXVCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vZGVQcm9qZWN0IH0gZnJvbSBcIi4uL2phdmFzY3JpcHRcIjtcbmltcG9ydCB7IEpzb25GaWxlIH0gZnJvbSBcIi4uL2pzb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBUYWlsd2luZENvbmZpZ09wdGlvbnMge1xuICAvKipcbiAgICogQGRlZmF1bHQgXCJ0YWlsd2luZC5jb25maWcuanNvblwiXG4gICAqL1xuICByZWFkb25seSBmaWxlTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWNsYXJlcyBhIFRhaWx3aW5kIENTUyBjb25maWd1cmF0aW9uIGZpbGUuXG4gKlxuICogVGhlcmUgYXJlIG11bHRpcGxlIHdheXMgdG8gYWRkIFRhaWx3aW5kIENTUyBpbiB5b3VyIG5vZGUgcHJvamVjdCAtIHNlZTpcbiAqIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaW5zdGFsbGF0aW9uXG4gKlxuICogQHNlZSBQb3N0Q3NzXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWlsd2luZENvbmZpZyB7XG4gIHB1YmxpYyByZWFkb25seSBmaWxlTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZTogSnNvbkZpbGU7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogTm9kZVByb2plY3QsIG9wdGlvbnM/OiBUYWlsd2luZENvbmZpZ09wdGlvbnMpIHtcbiAgICB0aGlzLmZpbGVOYW1lID0gb3B0aW9ucz8uZmlsZU5hbWUgPz8gXCJ0YWlsd2luZC5jb25maWcuanNvblwiO1xuXG4gICAgdGhpcy5maWxlID0gbmV3IEpzb25GaWxlKHByb2plY3QsIHRoaXMuZmlsZU5hbWUsIHtcbiAgICAgIG9iajoge1xuICAgICAgICBwdXJnZTogW10sXG4gICAgICAgIGRhcmtNb2RlOiBmYWxzZSxcbiAgICAgICAgdGhlbWU6IHtcbiAgICAgICAgICBleHRlbmQ6IHt9LFxuICAgICAgICB9LFxuICAgICAgICB2YXJpYW50czoge1xuICAgICAgICAgIGV4dGVuZDoge30sXG4gICAgICAgIH0sXG4gICAgICAgIHBsdWdpbnM6IFtdLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHByb2plY3QubnBtaWdub3JlPy5leGNsdWRlKGAvJHt0aGlzLmZpbGVOYW1lfWApO1xuICB9XG59XG4iXX0=
package/lib/xmlfile.js CHANGED
@@ -32,5 +32,5 @@ class XmlFile extends object_file_1.ObjectFile {
32
32
  }
33
33
  exports.XmlFile = XmlFile;
34
34
  _a = JSII_RTTI_SYMBOL_1;
35
- XmlFile[_a] = { fqn: "projen.XmlFile", version: "0.61.6" };
35
+ XmlFile[_a] = { fqn: "projen.XmlFile", version: "0.61.9" };
36
36
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1sZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy94bWxmaWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQWtEO0FBRWxELCtDQUE4RDtBQVE5RDs7Ozs7R0FLRztBQUNILE1BQWEsT0FBUSxTQUFRLHdCQUFVO0lBQ3JDLFlBQ0UsT0FBZ0IsRUFDaEIsUUFBZ0IsRUFDaEIsVUFBMEIsRUFBRTtRQUU1QixLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRVMsaUJBQWlCLENBQUMsUUFBbUI7UUFDN0MsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUixPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELE1BQU0sU0FBUyxHQUFHLG9CQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQzFELFdBQVcsRUFBRSxJQUFJO1lBQ2pCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUN0QixDQUFDLENBQUM7UUFFSCxPQUFPO1lBQ0wsU0FBUztZQUNULEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNwRCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNmLENBQUM7O0FBeEJILDBCQXlCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZSBhcyBjcmVhdGV4bWwgfSBmcm9tIFwieG1sYnVpbGRlcjJcIjtcbmltcG9ydCB7IElSZXNvbHZlciB9IGZyb20gXCIuL2ZpbGVcIjtcbmltcG9ydCB7IE9iamVjdEZpbGUsIE9iamVjdEZpbGVPcHRpb25zIH0gZnJvbSBcIi4vb2JqZWN0LWZpbGVcIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi9wcm9qZWN0XCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYFhtbEZpbGVgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFhtbEZpbGVPcHRpb25zIGV4dGVuZHMgT2JqZWN0RmlsZU9wdGlvbnMge31cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIFhNTCBmaWxlLlxuICpcbiAqIE9iamVjdHMgcGFzc2VkIGluIHdpbGwgYmUgc3ludGhlc2l6ZWQgdXNpbmcgdGhlIG5wbSBcInhtbFwiIGxpYnJhcnkuXG4gKiBAc2VlIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3htbFxuICovXG5leHBvcnQgY2xhc3MgWG1sRmlsZSBleHRlbmRzIE9iamVjdEZpbGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm9qZWN0OiBQcm9qZWN0LFxuICAgIGZpbGVQYXRoOiBzdHJpbmcsXG4gICAgb3B0aW9uczogWG1sRmlsZU9wdGlvbnMgPSB7fVxuICApIHtcbiAgICBzdXBlcihwcm9qZWN0LCBmaWxlUGF0aCwgb3B0aW9ucyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUNvbnRlbnQocmVzb2x2ZXI6IElSZXNvbHZlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgb2JqID0gc3VwZXIuc3ludGhlc2l6ZUNvbnRlbnQocmVzb2x2ZXIpO1xuICAgIGlmICghb2JqKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHhtbFN0cmluZyA9IGNyZWF0ZXhtbCh7IGVuY29kaW5nOiBcIlVURi04XCIgfSwgb2JqKS5lbmQoe1xuICAgICAgcHJldHR5UHJpbnQ6IHRydWUsXG4gICAgICBpbmRlbnQ6IFwiIFwiLnJlcGVhdCg0KSxcbiAgICB9KTtcblxuICAgIHJldHVybiBbXG4gICAgICB4bWxTdHJpbmcsXG4gICAgICAuLi4odGhpcy5tYXJrZXIgPyBbYDwhLS0gJHt0aGlzLm1hcmtlcn0gLS0+YF0gOiBbXSksXG4gICAgXS5qb2luKFwiXFxuXCIpO1xuICB9XG59XG4iXX0=
package/lib/yaml.js CHANGED
@@ -30,5 +30,5 @@ class YamlFile extends object_file_1.ObjectFile {
30
30
  }
31
31
  exports.YamlFile = YamlFile;
32
32
  _a = JSII_RTTI_SYMBOL_1;
33
- YamlFile[_a] = { fqn: "projen.YamlFile", version: "0.61.6" };
33
+ YamlFile[_a] = { fqn: "projen.YamlFile", version: "0.61.9" };
34
34
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy95YW1sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBRTdCLCtDQUE4RDtBQWU5RDs7R0FFRztBQUNILE1BQWEsUUFBUyxTQUFRLHdCQUFVO0lBTXRDLFlBQVksT0FBZ0IsRUFBRSxRQUFnQixFQUFFLE9BQXdCO1FBQ3RFLEtBQUssQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVTLGlCQUFpQixDQUFDLFFBQW1CO1FBQzdDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxPQUFPO1lBQ0wsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzVDLEVBQUU7WUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQy9CLE1BQU0sRUFBRSxDQUFDO2dCQUNULFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUzthQUMxQixDQUFDO1NBQ0gsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZixDQUFDOztBQXpCSCw0QkEwQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBZQU1MIGZyb20gXCJ5YW1sXCI7XG5pbXBvcnQgeyBJUmVzb2x2ZXIgfSBmcm9tIFwiLi9maWxlXCI7XG5pbXBvcnQgeyBPYmplY3RGaWxlLCBPYmplY3RGaWxlT3B0aW9ucyB9IGZyb20gXCIuL29iamVjdC1maWxlXCI7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSBcIi4vcHJvamVjdFwiO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBKc29uRmlsZWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgWWFtbEZpbGVPcHRpb25zIGV4dGVuZHMgT2JqZWN0RmlsZU9wdGlvbnMge1xuICAvKipcbiAgICogTWF4aW11bSBsaW5lIHdpZHRoIChzZXQgdG8gMCB0byBkaXNhYmxlIGZvbGRpbmcpLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIDBcbiAgICovXG4gIHJlYWRvbmx5IGxpbmVXaWR0aD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgWUFNTCBmaWxlLlxuICovXG5leHBvcnQgY2xhc3MgWWFtbEZpbGUgZXh0ZW5kcyBPYmplY3RGaWxlIHtcbiAgLyoqXG4gICAqIE1heGltdW0gbGluZSB3aWR0aCAoc2V0IHRvIDAgdG8gZGlzYWJsZSBmb2xkaW5nKS5cbiAgICovXG4gIHB1YmxpYyBsaW5lV2lkdGg6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBmaWxlUGF0aDogc3RyaW5nLCBvcHRpb25zOiBZYW1sRmlsZU9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0LCBmaWxlUGF0aCwgb3B0aW9ucyk7XG4gICAgdGhpcy5saW5lV2lkdGggPSBvcHRpb25zLmxpbmVXaWR0aCA/PyAwO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVDb250ZW50KHJlc29sdmVyOiBJUmVzb2x2ZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGpzb24gPSBzdXBlci5zeW50aGVzaXplQ29udGVudChyZXNvbHZlcik7XG4gICAgaWYgKCFqc29uKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiBbXG4gICAgICAuLi4odGhpcy5tYXJrZXIgPyBbYCMgJHt0aGlzLm1hcmtlcn1gXSA6IFtdKSxcbiAgICAgIFwiXCIsXG4gICAgICBZQU1MLnN0cmluZ2lmeShKU09OLnBhcnNlKGpzb24pLCB7XG4gICAgICAgIGluZGVudDogMixcbiAgICAgICAgbGluZVdpZHRoOiB0aGlzLmxpbmVXaWR0aCxcbiAgICAgIH0pLFxuICAgIF0uam9pbihcIlxcblwiKTtcbiAgfVxufVxuIl19
@@ -8,7 +8,7 @@ This package contains type definitions for Node.js (https://nodejs.org/).
8
8
  Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node.
9
9
 
10
10
  ### Additional Details
11
- * Last updated: Mon, 08 Aug 2022 17:02:19 GMT
11
+ * Last updated: Fri, 12 Aug 2022 05:32:13 GMT
12
12
  * Dependencies: none
13
13
  * Global values: `AbortController`, `AbortSignal`, `__dirname`, `__filename`, `console`, `exports`, `gc`, `global`, `module`, `process`, `require`, `structuredClone`
14
14
 
@@ -33,6 +33,7 @@ declare module 'fs/promises' {
33
33
  WatchEventType,
34
34
  CopyOptions,
35
35
  ReadStream,
36
+ TimeLike,
36
37
  WriteStream,
37
38
  } from 'node:fs';
38
39
  interface FileChangeInfo<T extends string | Buffer> {
@@ -329,7 +330,7 @@ declare module 'fs/promises' {
329
330
  * Change the file system timestamps of the object referenced by the `FileHandle` then resolves the promise with no arguments upon success.
330
331
  * @since v10.0.0
331
332
  */
332
- utimes(atime: string | number | Date, mtime: string | number | Date): Promise<void>;
333
+ utimes(atime: TimeLike, mtime: TimeLike): Promise<void>;
333
334
  /**
334
335
  * Asynchronously writes data to a file, replacing the file if it already exists.`data` can be a string, a buffer, an
335
336
  * [AsyncIterable](https://tc39.github.io/ecma262/#sec-asynciterable-interface) or
@@ -762,7 +763,7 @@ declare module 'fs/promises' {
762
763
  * @since v14.5.0, v12.19.0
763
764
  * @return Fulfills with `undefined` upon success.
764
765
  */
765
- function lutimes(path: PathLike, atime: string | number | Date, mtime: string | number | Date): Promise<void>;
766
+ function lutimes(path: PathLike, atime: TimeLike, mtime: TimeLike): Promise<void>;
766
767
  /**
767
768
  * Changes the ownership of a file.
768
769
  * @since v10.0.0
@@ -780,7 +781,7 @@ declare module 'fs/promises' {
780
781
  * @since v10.0.0
781
782
  * @return Fulfills with `undefined` upon success.
782
783
  */
783
- function utimes(path: PathLike, atime: string | number | Date, mtime: string | number | Date): Promise<void>;
784
+ function utimes(path: PathLike, atime: TimeLike, mtime: TimeLike): Promise<void>;
784
785
  /**
785
786
  * Determines the actual location of `path` using the same semantics as the`fs.realpath.native()` function.
786
787
  *
@@ -1,4 +1,4 @@
1
- // Type definitions for non-npm package Node.js 18.6
1
+ // Type definitions for non-npm package Node.js 18.7
2
2
  // Project: https://nodejs.org/
3
3
  // Definitions by: Microsoft TypeScript <https://github.com/Microsoft>
4
4
  // DefinitelyTyped <https://github.com/DefinitelyTyped>
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@types/node",
3
- "version": "18.6.5",
3
+ "version": "18.7.2",
4
4
  "description": "TypeScript definitions for Node.js",
5
5
  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node",
6
6
  "license": "MIT",
@@ -220,6 +220,6 @@
220
220
  },
221
221
  "scripts": {},
222
222
  "dependencies": {},
223
- "typesPublisherContentHash": "4d8149f864b93846526dbd58e91ce534c655f81b4e3a0c22cd7d03534790d99d",
223
+ "typesPublisherContentHash": "0f1f505e28678caf9863e39c50c96eb5df73c486c02db76259ccf5e867edb1b1",
224
224
  "typeScriptVersion": "4.0"
225
225
  }
@@ -191,6 +191,35 @@ declare module 'perf_hooks' {
191
191
  * @param name
192
192
  */
193
193
  clearMarks(name?: string): void;
194
+ /**
195
+ * If name is not provided, removes all PerformanceMeasure objects from the Performance Timeline.
196
+ * If name is provided, removes only the named measure.
197
+ * @param name
198
+ * @since v16.7.0
199
+ */
200
+ clearMeasures(name?: string): void;
201
+ /**
202
+ * Returns a list of `PerformanceEntry` objects in chronological order with respect to `performanceEntry.startTime`.
203
+ * If you are only interested in performance entries of certain types or that have certain names, see
204
+ * `performance.getEntriesByType()` and `performance.getEntriesByName()`.
205
+ * @since v16.7.0
206
+ */
207
+ getEntries(): PerformanceEntry[];
208
+ /**
209
+ * Returns a list of `PerformanceEntry` objects in chronological order with respect to `performanceEntry.startTime`
210
+ * whose `performanceEntry.name` is equal to `name`, and optionally, whose `performanceEntry.entryType` is equal to `type`.
211
+ * @param name
212
+ * @param type
213
+ * @since v16.7.0
214
+ */
215
+ getEntriesByName(name: string, type?: EntryType): PerformanceEntry[];
216
+ /**
217
+ * Returns a list of `PerformanceEntry` objects in chronological order with respect to `performanceEntry.startTime`
218
+ * whose `performanceEntry.entryType` is equal to `type`.
219
+ * @param type
220
+ * @since v16.7.0
221
+ */
222
+ getEntriesByType(type: EntryType): PerformanceEntry[];
194
223
  /**
195
224
  * Creates a new PerformanceMark entry in the Performance Timeline.
196
225
  * A PerformanceMark is a subclass of PerformanceEntry whose performanceEntry.entryType is always 'mark',
@@ -1105,6 +1105,193 @@ declare module 'util' {
1105
1105
  */
1106
1106
  encodeInto(src: string, dest: Uint8Array): EncodeIntoResult;
1107
1107
  }
1108
+
1109
+ /**
1110
+ * Provides a high-level API for command-line argument parsing. Takes a
1111
+ * specification for the expected arguments and returns a structured object
1112
+ * with the parsed values and positionals.
1113
+ *
1114
+ * `config` provides arguments for parsing and configures the parser. It
1115
+ * supports the following properties:
1116
+ *
1117
+ * - `args` The array of argument strings. **Default:** `process.argv` with
1118
+ * `execPath` and `filename` removed.
1119
+ * - `options` Arguments known to the parser. Keys of `options` are the long
1120
+ * names of options and values are objects accepting the following properties:
1121
+ *
1122
+ * - `type` Type of argument, which must be either `boolean` (for options
1123
+ * which do not take values) or `string` (for options which do).
1124
+ * - `multiple` Whether this option can be provided multiple
1125
+ * times. If `true`, all values will be collected in an array. If
1126
+ * `false`, values for the option are last-wins. **Default:** `false`.
1127
+ * - `short` A single character alias for the option.
1128
+ *
1129
+ * - `strict`: Whether an error should be thrown when unknown arguments
1130
+ * are encountered, or when arguments are passed that do not match the
1131
+ * `type` configured in `options`. **Default:** `true`.
1132
+ * - `allowPositionals`: Whether this command accepts positional arguments.
1133
+ * **Default:** `false` if `strict` is `true`, otherwise `true`.
1134
+ * - `tokens`: Whether tokens {boolean} Return the parsed tokens. This is useful
1135
+ * for extending the built-in behavior, from adding additional checks through
1136
+ * to reprocessing the tokens in different ways.
1137
+ * **Default:** `false`.
1138
+ *
1139
+ * @returns The parsed command line arguments:
1140
+ *
1141
+ * - `values` A mapping of parsed option names with their string
1142
+ * or boolean values.
1143
+ * - `positionals` Positional arguments.
1144
+ * - `tokens` Detailed parse information (only if `tokens` was specified).
1145
+ *
1146
+ */
1147
+ export function parseArgs<T extends ParseArgsConfig>(config: T): ParsedResults<T>;
1148
+
1149
+ interface ParseArgsOptionConfig {
1150
+ type: 'string' | 'boolean';
1151
+ short?: string;
1152
+ multiple?: boolean;
1153
+ }
1154
+
1155
+ interface ParseArgsOptionsConfig {
1156
+ [longOption: string]: ParseArgsOptionConfig;
1157
+ }
1158
+
1159
+ export interface ParseArgsConfig {
1160
+ strict?: boolean;
1161
+ allowPositionals?: boolean;
1162
+ tokens?: boolean;
1163
+ options?: ParseArgsOptionsConfig;
1164
+ args?: string[];
1165
+ }
1166
+
1167
+ /*
1168
+ IfDefaultsTrue and IfDefaultsFalse are helpers to handle default values for missing boolean properties.
1169
+ TypeScript does not have exact types for objects: https://github.com/microsoft/TypeScript/issues/12936
1170
+ This means it is impossible to distinguish between "field X is definitely not present" and "field X may or may not be present".
1171
+ But we expect users to generally provide their config inline or `as const`, which means TS will always know whether a given field is present.
1172
+ So this helper treats "not definitely present" (i.e., not `extends boolean`) as being "definitely not present", i.e. it should have its default value.
1173
+ This is technically incorrect but is a much nicer UX for the common case.
1174
+ The IfDefaultsTrue version is for things which default to true; the IfDefaultsFalse version is for things which default to false.
1175
+ */
1176
+ type IfDefaultsTrue<T, IfTrue, IfFalse> = T extends true
1177
+ ? IfTrue
1178
+ : T extends false
1179
+ ? IfFalse
1180
+ : IfTrue;
1181
+
1182
+ // we put the `extends false` condition first here because `undefined` compares like `any` when `strictNullChecks: false`
1183
+ type IfDefaultsFalse<T, IfTrue, IfFalse> = T extends false
1184
+ ? IfFalse
1185
+ : T extends true
1186
+ ? IfTrue
1187
+ : IfFalse;
1188
+
1189
+ type ExtractOptionValue<T extends ParseArgsConfig, O extends ParseArgsOptionConfig> = IfDefaultsTrue<
1190
+ T['strict'],
1191
+ O['type'] extends 'string' ? string : O['type'] extends 'boolean' ? boolean : string | boolean,
1192
+ string | boolean
1193
+ >;
1194
+
1195
+ type ParsedValues<T extends ParseArgsConfig> =
1196
+ & IfDefaultsTrue<T['strict'], unknown, { [longOption: string]: undefined | string | boolean }>
1197
+ & (T['options'] extends ParseArgsOptionsConfig
1198
+ ? {
1199
+ -readonly [LongOption in keyof T['options']]: IfDefaultsFalse<
1200
+ T['options'][LongOption]['multiple'],
1201
+ undefined | Array<ExtractOptionValue<T, T['options'][LongOption]>>,
1202
+ undefined | ExtractOptionValue<T, T['options'][LongOption]>
1203
+ >;
1204
+ }
1205
+ : {});
1206
+
1207
+ type ParsedPositionals<T extends ParseArgsConfig> = IfDefaultsTrue<
1208
+ T['strict'],
1209
+ IfDefaultsFalse<T['allowPositionals'], string[], []>,
1210
+ IfDefaultsTrue<T['allowPositionals'], string[], []>
1211
+ >;
1212
+
1213
+ type PreciseTokenForOptions<
1214
+ K extends string,
1215
+ O extends ParseArgsOptionConfig,
1216
+ > = O['type'] extends 'string'
1217
+ ? {
1218
+ kind: 'option';
1219
+ index: number;
1220
+ name: K;
1221
+ rawName: string;
1222
+ value: string;
1223
+ inlineValue: boolean;
1224
+ }
1225
+ : O['type'] extends 'boolean'
1226
+ ? {
1227
+ kind: 'option';
1228
+ index: number;
1229
+ name: K;
1230
+ rawName: string;
1231
+ value: undefined;
1232
+ inlineValue: undefined;
1233
+ }
1234
+ : OptionToken & { name: K };
1235
+
1236
+ type TokenForOptions<
1237
+ T extends ParseArgsConfig,
1238
+ K extends keyof T['options'] = keyof T['options'],
1239
+ > = K extends unknown
1240
+ ? T['options'] extends ParseArgsOptionsConfig
1241
+ ? PreciseTokenForOptions<K & string, T['options'][K]>
1242
+ : OptionToken
1243
+ : never;
1244
+
1245
+ type ParsedOptionToken<T extends ParseArgsConfig> = IfDefaultsTrue<T['strict'], TokenForOptions<T>, OptionToken>;
1246
+
1247
+ type ParsedPositionalToken<T extends ParseArgsConfig> = IfDefaultsTrue<
1248
+ T['strict'],
1249
+ IfDefaultsFalse<T['allowPositionals'], { kind: 'positional'; index: number; value: string }, never>,
1250
+ IfDefaultsTrue<T['allowPositionals'], { kind: 'positional'; index: number; value: string }, never>
1251
+ >;
1252
+
1253
+ type ParsedTokens<T extends ParseArgsConfig> = Array<
1254
+ ParsedOptionToken<T> | ParsedPositionalToken<T> | { kind: 'option-terminator'; index: number }
1255
+ >;
1256
+
1257
+ type PreciseParsedResults<T extends ParseArgsConfig> = IfDefaultsFalse<
1258
+ T['tokens'],
1259
+ {
1260
+ values: ParsedValues<T>;
1261
+ positionals: ParsedPositionals<T>;
1262
+ tokens: ParsedTokens<T>;
1263
+ },
1264
+ {
1265
+ values: ParsedValues<T>;
1266
+ positionals: ParsedPositionals<T>;
1267
+ }
1268
+ >;
1269
+
1270
+ type OptionToken =
1271
+ | { kind: 'option'; index: number; name: string; rawName: string; value: string; inlineValue: boolean }
1272
+ | {
1273
+ kind: 'option';
1274
+ index: number;
1275
+ name: string;
1276
+ rawName: string;
1277
+ value: undefined;
1278
+ inlineValue: undefined;
1279
+ };
1280
+
1281
+ type Token =
1282
+ | OptionToken
1283
+ | { kind: 'positional'; index: number; value: string }
1284
+ | { kind: 'option-terminator'; index: number };
1285
+
1286
+ // If ParseArgsConfig extends T, then the user passed config constructed elsewhere.
1287
+ // So we can't rely on the `"not definitely present" implies "definitely not present"` assumption mentioned above.
1288
+ type ParsedResults<T extends ParseArgsConfig> = ParseArgsConfig extends T
1289
+ ? {
1290
+ values: { [longOption: string]: undefined | string | boolean | Array<string | boolean> };
1291
+ positionals: string[];
1292
+ tokens?: Token[];
1293
+ }
1294
+ : PreciseParsedResults<T>;
1108
1295
  }
1109
1296
  declare module 'util/types' {
1110
1297
  export * from 'util/types';
package/package.json CHANGED
@@ -54,12 +54,12 @@
54
54
  "@types/ini": "^1.3.31",
55
55
  "@types/jest": "^27",
56
56
  "@types/node": "^14",
57
- "@types/semver": "^7.3.10",
57
+ "@types/semver": "^7.3.12",
58
58
  "@types/yargs": "^15.0.14",
59
59
  "@typescript-eslint/eslint-plugin": "^5",
60
60
  "@typescript-eslint/parser": "^5",
61
61
  "all-contributors-cli": "^6.20.0",
62
- "esbuild": "^0.14.54",
62
+ "esbuild": "^0.15.2",
63
63
  "eslint": "^8",
64
64
  "eslint-config-prettier": "^8.5.0",
65
65
  "eslint-import-resolver-node": "^0.3.6",
@@ -68,10 +68,10 @@
68
68
  "eslint-plugin-prettier": "^4.2.1",
69
69
  "jest": "^27",
70
70
  "jest-junit": "^13",
71
- "jsii": "^1.63.2",
72
- "jsii-diff": "^1.63.2",
71
+ "jsii": "^1.64.0",
72
+ "jsii-diff": "^1.64.0",
73
73
  "jsii-docgen": "^1.8.110",
74
- "jsii-pacmak": "^1.63.2",
74
+ "jsii-pacmak": "^1.64.0",
75
75
  "json-schema": "^0.4.0",
76
76
  "json5": "^2.2.1",
77
77
  "markmac": "^0.1.146",
@@ -124,7 +124,7 @@
124
124
  },
125
125
  "main": "lib/index.js",
126
126
  "license": "Apache-2.0",
127
- "version": "0.61.6",
127
+ "version": "0.61.9",
128
128
  "jest": {
129
129
  "maxWorkers": "50%",
130
130
  "testMatch": [