projen 0.33.2 → 0.33.6

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 (111) hide show
  1. package/.jsii +74 -27
  2. package/API.md +36 -0
  3. package/lib/awscdk/auto-discover.js +1 -1
  4. package/lib/awscdk/cdk-config.js +1 -1
  5. package/lib/awscdk/cdk-tasks.js +1 -1
  6. package/lib/awscdk/java-app.js +1 -1
  7. package/lib/awscdk/lambda-function.js +2 -2
  8. package/lib/awscdk-app-ts.js +1 -1
  9. package/lib/awscdk-construct.js +2 -2
  10. package/lib/cdk8s-app-ts.js +1 -1
  11. package/lib/cdk8s-construct.js +1 -1
  12. package/lib/cdktf-construct.js +1 -1
  13. package/lib/component.js +1 -1
  14. package/lib/construct-lib.js +1 -1
  15. package/lib/deps/dependencies.js +1 -1
  16. package/lib/dev-env.js +1 -1
  17. package/lib/docker-compose.js +2 -2
  18. package/lib/eslint.js +1 -1
  19. package/lib/file.js +1 -1
  20. package/lib/git/gitattributes.js +1 -1
  21. package/lib/github/auto-approve.js +1 -1
  22. package/lib/github/auto-merge.js +1 -1
  23. package/lib/github/dependabot.js +1 -1
  24. package/lib/github/github.js +1 -1
  25. package/lib/github/mergify.js +1 -1
  26. package/lib/github/pr-template.js +1 -1
  27. package/lib/github/stale.js +1 -1
  28. package/lib/github/task-workflow.js +1 -1
  29. package/lib/github/workflows.js +1 -1
  30. package/lib/gitpod.js +1 -1
  31. package/lib/ignore-file.js +1 -1
  32. package/lib/ini.js +1 -1
  33. package/lib/java/java-project.js +1 -1
  34. package/lib/java/junit.js +1 -1
  35. package/lib/java/maven-compile.js +1 -1
  36. package/lib/java/maven-packaging.js +1 -1
  37. package/lib/java/maven-sample.js +1 -1
  38. package/lib/java/pom.js +1 -1
  39. package/lib/java/projenrc.js +1 -1
  40. package/lib/javascript/bundler.js +1 -1
  41. package/lib/javascript/npm-config.js +1 -1
  42. package/lib/javascript/projenrc.js +1 -1
  43. package/lib/jest.js +1 -1
  44. package/lib/jsii-project.js +1 -1
  45. package/lib/json/projenrc.js +1 -1
  46. package/lib/json.js +1 -1
  47. package/lib/license.js +1 -1
  48. package/lib/logger.js +1 -1
  49. package/lib/makefile.js +1 -1
  50. package/lib/node-package.js +1 -1
  51. package/lib/node-project.js +1 -1
  52. package/lib/object-file.js +1 -1
  53. package/lib/project-build.js +1 -1
  54. package/lib/project.js +2 -2
  55. package/lib/projects.js +1 -1
  56. package/lib/python/pip.js +1 -1
  57. package/lib/python/poetry.js +2 -2
  58. package/lib/python/projenrc.js +1 -1
  59. package/lib/python/pytest.js +1 -1
  60. package/lib/python/python-project.js +1 -1
  61. package/lib/python/python-sample.js +1 -1
  62. package/lib/python/requirements-file.js +1 -1
  63. package/lib/python/setuppy.js +1 -1
  64. package/lib/python/setuptools.js +1 -1
  65. package/lib/python/venv.js +1 -1
  66. package/lib/readme.js +1 -1
  67. package/lib/release/bump-version.d.ts +6 -0
  68. package/lib/release/bump-version.js +26 -20
  69. package/lib/release/bump-version.task.js +4 -1
  70. package/lib/release/publisher.js +1 -1
  71. package/lib/release/release-trigger.js +1 -1
  72. package/lib/release/release.d.ts +9 -0
  73. package/lib/release/release.js +3 -2
  74. package/lib/sample-file.js +2 -2
  75. package/lib/semver.js +1 -1
  76. package/lib/source-code.js +1 -1
  77. package/lib/tasks/runtime.js +1 -1
  78. package/lib/tasks/task.js +1 -1
  79. package/lib/tasks/tasks.js +1 -1
  80. package/lib/textfile.js +1 -1
  81. package/lib/toml.js +1 -1
  82. package/lib/typescript/projenrc.js +1 -1
  83. package/lib/typescript-config.js +1 -1
  84. package/lib/typescript.js +3 -3
  85. package/lib/upgrade-dependencies.js +2 -2
  86. package/lib/version.d.ts +6 -0
  87. package/lib/version.js +4 -2
  88. package/lib/vscode/devcontainer.js +1 -1
  89. package/lib/vscode/launch-config.js +1 -1
  90. package/lib/vscode/vscode.js +1 -1
  91. package/lib/web/next.js +3 -3
  92. package/lib/web/postcss.js +1 -1
  93. package/lib/web/react.js +4 -4
  94. package/lib/web/tailwind.js +1 -1
  95. package/lib/xmlfile.js +1 -1
  96. package/lib/yaml.js +1 -1
  97. package/node_modules/conventional-changelog-config-spec/CHANGELOG.md +15 -0
  98. package/node_modules/conventional-changelog-config-spec/README.md +7 -0
  99. package/node_modules/conventional-changelog-config-spec/index.js +1 -0
  100. package/node_modules/conventional-changelog-config-spec/package.json +32 -0
  101. package/node_modules/conventional-changelog-config-spec/renovate.json +5 -0
  102. package/node_modules/conventional-changelog-config-spec/tests/shared.js +38 -0
  103. package/node_modules/conventional-changelog-config-spec/tests/v1.test.js +7 -0
  104. package/node_modules/conventional-changelog-config-spec/tests/v2.test.js +26 -0
  105. package/node_modules/conventional-changelog-config-spec/versions/1.0.0/README.md +143 -0
  106. package/node_modules/conventional-changelog-config-spec/versions/1.0.0/schema.json +81 -0
  107. package/node_modules/conventional-changelog-config-spec/versions/2.0.0/README.md +155 -0
  108. package/node_modules/conventional-changelog-config-spec/versions/2.0.0/schema.json +89 -0
  109. package/node_modules/conventional-changelog-config-spec/versions/2.1.0/README.md +166 -0
  110. package/node_modules/conventional-changelog-config-spec/versions/2.1.0/schema.json +97 -0
  111. package/package.json +7 -4
package/lib/web/react.js CHANGED
@@ -42,7 +42,7 @@ class ReactProject extends node_project_1.NodeProject {
42
42
  }
43
43
  exports.ReactProject = ReactProject;
44
44
  _a = JSII_RTTI_SYMBOL_1;
45
- ReactProject[_a] = { fqn: "projen.web.ReactProject", version: "0.33.2" };
45
+ ReactProject[_a] = { fqn: "projen.web.ReactProject", version: "0.33.6" };
46
46
  /**
47
47
  * (experimental) React project with TypeScript.
48
48
  *
@@ -102,7 +102,7 @@ class ReactTypeScriptProject extends typescript_1.TypeScriptAppProject {
102
102
  }
103
103
  exports.ReactTypeScriptProject = ReactTypeScriptProject;
104
104
  _b = JSII_RTTI_SYMBOL_1;
105
- ReactTypeScriptProject[_b] = { fqn: "projen.web.ReactTypeScriptProject", version: "0.33.2" };
105
+ ReactTypeScriptProject[_b] = { fqn: "projen.web.ReactTypeScriptProject", version: "0.33.6" };
106
106
  /**
107
107
  * @experimental
108
108
  */
@@ -179,7 +179,7 @@ class ReactComponent extends component_1.Component {
179
179
  }
180
180
  exports.ReactComponent = ReactComponent;
181
181
  _c = JSII_RTTI_SYMBOL_1;
182
- ReactComponent[_c] = { fqn: "projen.web.ReactComponent", version: "0.33.2" };
182
+ ReactComponent[_c] = { fqn: "projen.web.ReactComponent", version: "0.33.6" };
183
183
  class ReactSampleCode extends component_1.Component {
184
184
  constructor(project, options) {
185
185
  var _e;
@@ -376,5 +376,5 @@ class ReactTypeDef extends file_1.FileBase {
376
376
  }
377
377
  exports.ReactTypeDef = ReactTypeDef;
378
378
  _d = JSII_RTTI_SYMBOL_1;
379
- ReactTypeDef[_d] = { fqn: "projen.web.ReactTypeDef", version: "0.33.2" };
379
+ ReactTypeDef[_d] = { fqn: "projen.web.ReactTypeDef", version: "0.33.6" };
380
380
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2ViL3JlYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLDRDQUF5QztBQUN6QyxrQ0FBK0Q7QUFDL0Qsa0RBQWtFO0FBQ2xFLGdEQUEyQztBQUMzQyxnREFBNEM7QUFDNUMsOENBQStFO0FBQy9FLDREQUFxRjtBQUNyRixrQ0FBb0M7Ozs7Ozs7QUFpQnBDLE1BQWEsWUFBYSxTQUFRLDBCQUFXOzs7O0lBSTNDLFlBQVksT0FBNEI7O1FBQ3RDLEtBQUssQ0FBQztZQUNKLElBQUksRUFBRSxLQUFLO1lBQ1gsR0FBRyxPQUFPO1NBQ1gsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sU0FBRyxPQUFPLENBQUMsTUFBTSxtQ0FBSSxLQUFLLENBQUM7UUFFdEMsSUFBSSxjQUFjLENBQUMsSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFeEUsNkZBQTZGO1FBQzdGLFVBQUksT0FBTyxDQUFDLFVBQVUsbUNBQUksSUFBSSxFQUFFO1lBQzlCLElBQUksZUFBZSxDQUFDLElBQUksRUFBRTtnQkFDeEIsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2FBQ3BCLENBQUMsQ0FBQztZQUNILElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDMUc7SUFDSCxDQUFDOztBQXRCSCxvQ0F1QkM7Ozs7Ozs7OztBQUdELE1BQWEsc0JBQXVCLFNBQVEsaUNBQW9COzs7O0lBTzlELFlBQVksT0FBc0M7O1FBQ2hE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QztDQUNGOzs7O0FBSUQsTUFBYSxZQUFhLFNBQVEsZUFBUTs7OztJQUN4QyxZQUFZLE9BQStCLEVBQUUsUUFBZ0IsRUFBRSxVQUErQixFQUFFO1FBQzlGLEtBQUssQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Ozs7OztJQUVTLGlCQUFpQixDQUFDLENBQVk7UUFDdEMsT0FBTztZQUNMLHlDQUF5QztTQUMxQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNmLENBQUM7O0FBVEgsb0NBVUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50JztcbmltcG9ydCB7IEZpbGVCYXNlLCBGaWxlQmFzZU9wdGlvbnMsIElSZXNvbHZlciB9IGZyb20gJy4uL2ZpbGUnO1xuaW1wb3J0IHsgTm9kZVByb2plY3QsIE5vZGVQcm9qZWN0T3B0aW9ucyB9IGZyb20gJy4uL25vZGUtcHJvamVjdCc7XG5pbXBvcnQgeyBTYW1wbGVEaXIgfSBmcm9tICcuLi9zYW1wbGUtZmlsZSc7XG5pbXBvcnQgeyBTb3VyY2VDb2RlIH0gZnJvbSAnLi4vc291cmNlLWNvZGUnO1xuaW1wb3J0IHsgVHlwZVNjcmlwdEFwcFByb2plY3QsIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgVHlwZVNjcmlwdEpzeE1vZGUsIFR5cGVTY3JpcHRNb2R1bGVSZXNvbHV0aW9uIH0gZnJvbSAnLi4vdHlwZXNjcmlwdC1jb25maWcnO1xuaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSAnLi4vdXRpbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhY3RSZXdpcmVPcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSByZXdpcmU/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlYWN0VHlwZVNjcmlwdFByb2plY3RPcHRpb25zIGV4dGVuZHMgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zLCBSZWFjdFJld2lyZU9wdGlvbnMge31cblxuZXhwb3J0IGludGVyZmFjZSBSZWFjdFByb2plY3RPcHRpb25zIGV4dGVuZHMgTm9kZVByb2plY3RPcHRpb25zLCBSZWFjdFJld2lyZU9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc3JjZGlyPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc2FtcGxlQ29kZT86IGJvb2xlYW47XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgUmVhY3RQcm9qZWN0IGV4dGVuZHMgTm9kZVByb2plY3Qge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IHNyY2Rpcjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFJlYWN0UHJvamVjdE9wdGlvbnMpIHtcbiAgICBzdXBlcih7XG4gICAgICBqZXN0OiBmYWxzZSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICB0aGlzLnNyY2RpciA9IG9wdGlvbnMuc3JjZGlyID8/ICdzcmMnO1xuXG4gICAgbmV3IFJlYWN0Q29tcG9uZW50KHRoaXMsIHsgdHlwZXNjcmlwdDogZmFsc2UsIHJld2lyZTogb3B0aW9ucy5yZXdpcmUgfSk7XG5cbiAgICAvLyBnZW5lcmF0ZSBzYW1wbGUgY29kZSBpbiBgc3JjYCBhbmQgYHB1YmxpY2AgaWYgdGhlc2UgZGlyZWN0b3JpZXMgYXJlIGVtcHR5IG9yIG5vbi1leGlzdGVudC5cbiAgICBpZiAob3B0aW9ucy5zYW1wbGVDb2RlID8/IHRydWUpIHtcbiAgICAgIG5ldyBSZWFjdFNhbXBsZUNvZGUodGhpcywge1xuICAgICAgICBmaWxlRXh0OiAnanN4JyxcbiAgICAgICAgc3JjZGlyOiB0aGlzLnNyY2RpcixcbiAgICAgIH0pO1xuICAgICAgbmV3IFNhbXBsZURpcih0aGlzLCAncHVibGljJywgeyBzb3VyY2VEaXI6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICdhc3NldHMnLCAnd2ViJywgJ3JlYWN0JykgfSk7XG4gICAgfVxuICB9XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgUmVhY3RUeXBlU2NyaXB0UHJvamVjdCBleHRlbmRzIFR5cGVTY3JpcHRBcHBQcm9qZWN0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgcmVhY3RUeXBlRGVmOiBSZWFjdFR5cGVEZWY7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogUmVhY3RUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMpIHtcbiAgICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICAgIHNyY2RpcjogJ3NyYycsXG4gICAgICBlc2xpbnQ6IGZhbHNlLFxuICAgICAgamVzdDogZmFsc2UsXG4gICAgICB0c2NvbmZpZzoge1xuICAgICAgICBpbmNsdWRlOiBbJ3NyYyddLFxuICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICB0YXJnZXQ6ICdlczUnLFxuICAgICAgICAgIGxpYjogW1xuICAgICAgICAgICAgJ2RvbScsXG4gICAgICAgICAgICAnZG9tLml0ZXJhYmxlJyxcbiAgICAgICAgICAgICdlc25leHQnLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgYWxsb3dKczogdHJ1ZSxcbiAgICAgICAgICBza2lwTGliQ2hlY2s6IHRydWUsXG4gICAgICAgICAgZXNNb2R1bGVJbnRlcm9wOiB0cnVlLFxuICAgICAgICAgIGFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHM6IHRydWUsXG4gICAgICAgICAgc3RyaWN0OiB0cnVlLFxuICAgICAgICAgIGZvcmNlQ29uc2lzdGVudENhc2luZ0luRmlsZU5hbWVzOiB0cnVlLFxuICAgICAgICAgIG5vRmFsbHRocm91Z2hDYXNlc0luU3dpdGNoOiB0cnVlLFxuICAgICAgICAgIG1vZHVsZTogJ2VzbmV4dCcsXG4gICAgICAgICAgbW9kdWxlUmVzb2x1dGlvbjogVHlwZVNjcmlwdE1vZHVsZVJlc29sdXRpb24uTk9ERSxcbiAgICAgICAgICByZXNvbHZlSnNvbk1vZHVsZTogdHJ1ZSxcbiAgICAgICAgICBpc29sYXRlZE1vZHVsZXM6IHRydWUsXG4gICAgICAgICAgbm9FbWl0OiB0cnVlLFxuICAgICAgICAgIGpzeDogVHlwZVNjcmlwdEpzeE1vZGUuUkVBQ1RfSlNYLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHR5cGVzY3JpcHRWZXJzaW9uOiBvcHRpb25zLnR5cGVzY3JpcHRWZXJzaW9uID8/ICdeNC4wLjMnLFxuICAgIH07XG5cbiAgICAvLyBuZXZlciBnZW5lcmF0ZSBkZWZhdWx0IFR5cGVTY3JpcHQgc2FtcGxlIGNvZGUsIHNpbmNlIHRoaXMgY2xhc3MgcHJvdmlkZXMgaXRzIG93blxuICAgIHN1cGVyKGRlZXBNZXJnZShbZGVmYXVsdE9wdGlvbnMsIG9wdGlvbnMsIHsgc2FtcGxlQ29kZTogZmFsc2UgfV0pIGFzIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyk7XG5cbiAgICB0aGlzLnNyY2RpciA9IG9wdGlvbnMuc3JjZGlyID8/ICdzcmMnO1xuXG4gICAgbmV3IFJlYWN0Q29tcG9uZW50KHRoaXMsIHsgdHlwZXNjcmlwdDogdHJ1ZSwgcmV3aXJlOiBvcHRpb25zLnJld2lyZSB9KTtcblxuICAgIHRoaXMucmVhY3RUeXBlRGVmID0gbmV3IFJlYWN0VHlwZURlZih0aGlzLCAncmVhY3QtYXBwLWVudi5kLnRzJyk7XG5cbiAgICAvLyBnZW5lcmF0ZSBzYW1wbGUgY29kZSBpbiBgc3JjYCBhbmQgYHB1YmxpY2AgaWYgdGhlc2UgZGlyZWN0b3JpZXMgYXJlIGVtcHR5IG9yIG5vbi1leGlzdGVudC5cbiAgICBpZiAob3B0aW9ucy5zYW1wbGVDb2RlID8/IHRydWUpIHtcbiAgICAgIG5ldyBSZWFjdFNhbXBsZUNvZGUodGhpcywge1xuICAgICAgICBmaWxlRXh0OiAndHN4JyxcbiAgICAgICAgc3JjZGlyOiB0aGlzLnNyY2RpcixcbiAgICAgIH0pO1xuICAgICAgbmV3IFNhbXBsZURpcih0aGlzLCAncHVibGljJywgeyBzb3VyY2VEaXI6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICdhc3NldHMnLCAnd2ViJywgJ3JlYWN0JykgfSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhY3RDb21wb25lbnRPcHRpb25zIGV4dGVuZHMgUmVhY3RSZXdpcmVPcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdHlwZXNjcmlwdD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBSZWFjdENvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdHlwZXNjcmlwdDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBOb2RlUHJvamVjdCwgb3B0aW9uczogUmVhY3RDb21wb25lbnRPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICB0aGlzLnR5cGVzY3JpcHQgPSBvcHRpb25zLnR5cGVzY3JpcHQgPz8gZmFsc2U7XG5cbiAgICAvLyBObyBjb21waWxlIGZvciByZWFjdCBhcHBcbiAgICBwcm9qZWN0LmNvbXBpbGVUYXNrLnJlc2V0KCk7XG5cbiAgICBwcm9qZWN0LmFkZERlcHMoJ3JlYWN0JywgJ3JlYWN0LWRvbScsICdyZWFjdC1zY3JpcHRzQF40LjAuMCcsICd3ZWItdml0YWxzJyk7XG4gICAgcHJvamVjdC5hZGREZXZEZXBzKCdAdGVzdGluZy1saWJyYXJ5L2plc3QtZG9tJywgJ0B0ZXN0aW5nLWxpYnJhcnkvcmVhY3QnLCAnQHRlc3RpbmctbGlicmFyeS91c2VyLWV2ZW50Jyk7XG4gICAgaWYgKHRoaXMudHlwZXNjcmlwdCkge1xuICAgICAgcHJvamVjdC5hZGREZXZEZXBzKCdAdHlwZXMvamVzdCcsICdAdHlwZXMvcmVhY3QnLCAnQHR5cGVzL3JlYWN0LWRvbScpO1xuICAgIH1cblxuICAgIGNvbnN0IHJld2lyZSA9IG9wdGlvbnMucmV3aXJlID8/IGZhbHNlO1xuXG4gICAgaWYgKHJld2lyZSkge1xuXG4gICAgICBjb25zdCBvdmVycmlkZXNQYXRoID0gJy5wcm9qZW4vcmVhY3QtY29uZmlnLW92ZXJyaWRlcy5qcyc7XG4gICAgICBwcm9qZWN0LmFkZERldkRlcHMoJ3JlYWN0LWFwcC1yZXdpcmVkJyk7XG4gICAgICBwcm9qZWN0LmFkZEZpZWxkcyh7ICdjb25maWctb3ZlcnJpZGVzLXBhdGgnOiBvdmVycmlkZXNQYXRoIH0pO1xuXG4gICAgICBjb25zdCBjb25maWdPdmVycmlkZXMgPSBuZXcgU291cmNlQ29kZSh0aGlzLnByb2plY3QsIG92ZXJyaWRlc1BhdGgpO1xuICAgICAgY29uZmlnT3ZlcnJpZGVzLmxpbmUoYC8vICR7RmlsZUJhc2UuUFJPSkVOX01BUktFUn1gKTtcbiAgICAgIGNvbmZpZ092ZXJyaWRlcy5saW5lKCcvKionKTtcbiAgICAgIGNvbmZpZ092ZXJyaWRlcy5saW5lKCcgKiBPdmVycmlkZSBDUkEgY29uZmlndXJhdGlvbiB3aXRob3V0IG5lZWRpbmcgdG8gZWplY3QuJyk7XG4gICAgICBjb25maWdPdmVycmlkZXMubGluZSgnIConKTtcbiAgICAgIGNvbmZpZ092ZXJyaWRlcy5saW5lKCcgKiBAc2VlIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3JlYWN0LWFwcC1yZXdpcmVkJyk7XG4gICAgICBjb25maWdPdmVycmlkZXMubGluZSgnICovJyk7XG4gICAgICBjb25maWdPdmVycmlkZXMub3BlbignbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBvdmVycmlkZShjb25maWcsIGVudikgeycpO1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocmV3aXJlKSkge1xuICAgICAgICBjb25maWdPdmVycmlkZXMubGluZShgY29uZmlnLiR7a2V5fSA9ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfTtgKTtcbiAgICAgIH1cbiAgICAgIGNvbmZpZ092ZXJyaWRlcy5saW5lKCdyZXR1cm4gY29uZmlnOycpO1xuICAgICAgY29uZmlnT3ZlcnJpZGVzLmNsb3NlKCd9OycpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlYWN0U2NyaXB0cyA9IHJld2lyZSA/ICdyZWFjdC1hcHAtcmV3aXJlZCcgOiAncmVhY3Qtc2NyaXB0cyc7XG5cbiAgICAvLyBDcmVhdGUgUmVhY3QgQXBwIENMSSBjb21tYW5kcywgc2VlOiBodHRwczovL2NyZWF0ZS1yZWFjdC1hcHAuZGV2L2RvY3MvYXZhaWxhYmxlLXNjcmlwdHMvXG4gICAgcHJvamVjdC5hZGRUYXNrKCdkZXYnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1N0YXJ0cyB0aGUgcmVhY3QgYXBwbGljYXRpb24nLFxuICAgICAgZXhlYzogYCR7cmVhY3RTY3JpcHRzfSBzdGFydGAsXG4gICAgfSk7XG5cbiAgICBwcm9qZWN0LmNvbXBpbGVUYXNrLmV4ZWMoYCR7cmVhY3RTY3JpcHRzfSBidWlsZGApO1xuXG4gICAgcHJvamVjdC5hZGRUYXNrKCdlamVjdCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnRWplY3RzIHlvdXIgUmVhY3QgYXBwbGljYXRpb24gZnJvbSByZWFjdC1zY3JpcHRzJyxcbiAgICAgIC8vIGVqZWN0IGlzIG5vdCBuZWNlc3NhcnkgdG8gcmV3aXJlXG4gICAgICBleGVjOiAncmVhY3Qtc2NyaXB0cyBlamVjdCcsXG4gICAgfSk7XG5cbiAgICBwcm9qZWN0LnRlc3RUYXNrLmV4ZWMoYCR7cmVhY3RTY3JpcHRzfSB0ZXN0IC0td2F0Y2hBbGw9ZmFsc2VgKTtcblxuICAgIGNvbnN0IHRlc3RXYXRjaCA9IHByb2plY3QudGFza3MudHJ5RmluZCgndGVzdDp3YXRjaCcpO1xuICAgIHRlc3RXYXRjaD8ucmVzZXQoYCR7cmVhY3RTY3JpcHRzfSB0ZXN0YCk7XG5cbiAgICBwcm9qZWN0Lm5wbWlnbm9yZT8uZXhjbHVkZSgnIyBCdWlsZCcsICcvYnVpbGQvJyk7XG4gICAgcHJvamVjdC5naXRpZ25vcmUuZXhjbHVkZSgnIyBCdWlsZCcsICcvYnVpbGQvJyk7XG5cbiAgICBwcm9qZWN0LnBhY2thZ2UuYWRkRmllbGQoJ2VzbGludENvbmZpZycsIHtcbiAgICAgIGV4dGVuZHM6IFtcbiAgICAgICAgJ3JlYWN0LWFwcCcsXG4gICAgICAgICdyZWFjdC1hcHAvamVzdCcsXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5wYWNrYWdlLmFkZEZpZWxkKCdicm93c2Vyc2xpc3QnLCB7XG4gICAgICBwcm9kdWN0aW9uOiBbXG4gICAgICAgICc+MC4yJScsXG4gICAgICAgICdub3QgZGVhZCcsXG4gICAgICAgICdub3Qgb3BfbWluaSBhbGwnLFxuICAgICAgXSxcbiAgICAgIGRldmVsb3BtZW50OiBbXG4gICAgICAgICdsYXN0IDEgY2hyb21lIHZlcnNpb24nLFxuICAgICAgICAnbGFzdCAxIGZpcmVmb3ggdmVyc2lvbicsXG4gICAgICAgICdsYXN0IDEgc2FmYXJpIHZlcnNpb24nLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgUmVhY3RTYW1wbGVDb2RlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBGaWxlIGV4dGVuc2lvbiBmb3Igc2FtcGxlIGphdmFzY3JpcHQgY29kZSB0byBiZSBzYXZlZCBhcy5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJqc3hcIlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZUV4dD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSBpbiB3aGljaCBSZWFjdCBqc3ggZmlsZXMgYXJlIGRlY2xhcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG59XG5cbmNsYXNzIFJlYWN0U2FtcGxlQ29kZSBleHRlbmRzIENvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZmlsZUV4dDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHNyY2Rpcjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IE5vZGVQcm9qZWN0LCBvcHRpb25zOiBSZWFjdFNhbXBsZUNvZGVPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICB0aGlzLmZpbGVFeHQgPSBvcHRpb25zLmZpbGVFeHQgPz8gJ2pzeCc7XG4gICAgdGhpcy5zcmNkaXIgPSBvcHRpb25zLnNyY2RpcjtcblxuICAgIGNvbnN0IGxvZ29TdmcgPSBbXG4gICAgICAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA4NDEuOSA1OTUuM1wiPicsXG4gICAgICAnICAgIDxnIGZpbGw9XCIjNjFEQUZCXCI+JyxcbiAgICAgICcgICAgICAgIDxwYXRoIGQ9XCJNNjY2LjMgMjk2LjVjMC0zMi41LTQwLjctNjMuMy0xMDMuMS04Mi40IDE0LjQtNjMuNiA4LTExNC4yLTIwLjItMTMwLjQtNi41LTMuOC0xNC4xLTUuNi0yMi40LTUuNnYyMi4zYzQuNiAwIDguMy45IDExLjQgMi42IDEzLjYgNy44IDE5LjUgMzcuNSAxNC45IDc1LjctMS4xIDkuNC0yLjkgMTkuMy01LjEgMjkuNC0xOS42LTQuOC00MS04LjUtNjMuNS0xMC45LTEzLjUtMTguNS0yNy41LTM1LjMtNDEuNi01MCAzMi42LTMwLjMgNjMuMi00Ni45IDg0LTQ2LjlWNzhjLTI3LjUgMC02My41IDE5LjYtOTkuOSA1My42LTM2LjQtMzMuOC03Mi40LTUzLjItOTkuOS01My4ydjIyLjNjMjAuNyAwIDUxLjQgMTYuNSA4NCA0Ni42LTE0IDE0LjctMjggMzEuNC00MS4zIDQ5LjktMjIuNiAyLjQtNDQgNi4xLTYzLjYgMTEtMi4zLTEwLTQtMTkuNy01LjItMjktNC43LTM4LjIgMS4xLTY3LjkgMTQuNi03NS44IDMtMS44IDYuOS0yLjYgMTEuNS0yLjZWNzguNWMtOC40IDAtMTYgMS44LTIyLjYgNS42LTI4LjEgMTYuMi0zNC40IDY2LjctMTkuOSAxMzAuMS02Mi4yIDE5LjItMTAyLjcgNDkuOS0xMDIuNyA4Mi4zIDAgMzIuNSA0MC43IDYzLjMgMTAzLjEgODIuNC0xNC40IDYzLjYtOCAxMTQuMiAyMC4yIDEzMC40IDYuNSAzLjggMTQuMSA1LjYgMjIuNSA1LjYgMjcuNSAwIDYzLjUtMTkuNiA5OS45LTUzLjYgMzYuNCAzMy44IDcyLjQgNTMuMiA5OS45IDUzLjIgOC40IDAgMTYtMS44IDIyLjYtNS42IDI4LjEtMTYuMiAzNC40LTY2LjcgMTkuOS0xMzAuMSA2Mi0xOS4xIDEwMi41LTQ5LjkgMTAyLjUtODIuM3ptLTEzMC4yLTY2LjdjLTMuNyAxMi45LTguMyAyNi4yLTEzLjUgMzkuNS00LjEtOC04LjQtMTYtMTMuMS0yNC00LjYtOC05LjUtMTUuOC0xNC40LTIzLjQgMTQuMiAyLjEgMjcuOSA0LjcgNDEgNy45em0tNDUuOCAxMDYuNWMtNy44IDEzLjUtMTUuOCAyNi4zLTI0LjEgMzguMi0xNC45IDEuMy0zMCAyLTQ1LjIgMi0xNS4xIDAtMzAuMi0uNy00NS0xLjktOC4zLTExLjktMTYuNC0yNC42LTI0LjItMzgtNy42LTEzLjEtMTQuNS0yNi40LTIwLjgtMzkuOCA2LjItMTMuNCAxMy4yLTI2LjggMjAuNy0zOS45IDcuOC0xMy41IDE1LjgtMjYuMyAyNC4xLTM4LjIgMTQuOS0xLjMgMzAtMiA0NS4yLTIgMTUuMSAwIDMwLjIuNyA0NSAxLjkgOC4zIDExLjkgMTYuNCAyNC42IDI0LjIgMzggNy42IDEzLjEgMTQuNSAyNi40IDIwLjggMzkuOC02LjMgMTMuNC0xMy4yIDI2LjgtMjAuNyAzOS45em0zMi4zLTEzYzUuNCAxMy40IDEwIDI2LjggMTMuOCAzOS44LTEzLjEgMy4yLTI2LjkgNS45LTQxLjIgOCA0LjktNy43IDkuOC0xNS42IDE0LjQtMjMuNyA0LjYtOCA4LjktMTYuMSAxMy0yNC4xek00MjEuMiA0MzBjLTkuMy05LjYtMTguNi0yMC4zLTI3LjgtMzIgOSAuNCAxOC4yLjcgMjcuNS43IDkuNCAwIDE4LjctLjIgMjcuOC0uNy05IDExLjctMTguMyAyMi40LTI3LjUgMzJ6bS03NC40LTU4LjljLTE0LjItMi4xLTI3LjktNC43LTQxLTcuOSAzLjctMTIuOSA4LjMtMjYuMiAxMy41LTM5LjUgNC4xIDggOC40IDE2IDEzLjEgMjQgNC43IDggOS41IDE1LjggMTQuNCAyMy40ek00MjAuNyAxNjNjOS4zIDkuNiAxOC42IDIwLjMgMjcuOCAzMi05LS40LTE4LjItLjctMjcuNS0uNy05LjQgMC0xOC43LjItMjcuOC43IDktMTEuNyAxOC4zLTIyLjQgMjcuNS0zMnptLTc0IDU4LjljLTQuOSA3LjctOS44IDE1LjYtMTQuNCAyMy43LTQuNiA4LTguOSAxNi0xMyAyNC01LjQtMTMuNC0xMC0yNi44LTEzLjgtMzkuOCAxMy4xLTMuMSAyNi45LTUuOCA0MS4yLTcuOXptLTkwLjUgMTI1LjJjLTM1LjQtMTUuMS01OC4zLTM0LjktNTguMy01MC42IDAtMTUuNyAyMi45LTM1LjYgNTguMy01MC42IDguNi0zLjcgMTgtNyAyNy43LTEwLjEgNS43IDE5LjYgMTMuMiA0MCAyMi41IDYwLjktOS4yIDIwLjgtMTYuNiA0MS4xLTIyLjIgNjAuNi05LjktMy4xLTE5LjMtNi41LTI4LTEwLjJ6TTMxMCA0OTBjLTEzLjYtNy44LTE5LjUtMzcuNS0xNC45LTc1LjcgMS4xLTkuNCAyLjktMTkuMyA1LjEtMjkuNCAxOS42IDQuOCA0MSA4LjUgNjMuNSAxMC45IDEzLjUgMTguNSAyNy41IDM1LjMgNDEuNiA1MC0zMi42IDMwLjMtNjMuMiA0Ni45LTg0IDQ2LjktNC41LS4xLTguMy0xLTExLjMtMi43em0yMzcuMi03Ni4yYzQuNyAzOC4yLTEuMSA2Ny45LTE0LjYgNzUuOC0zIDEuOC02LjkgMi42LTExLjUgMi42LTIwLjcgMC01MS40LTE2LjUtODQtNDYuNiAxNC0xNC43IDI4LTMxLjQgNDEuMy00OS45IDIyLjYtMi40IDQ0LTYuMSA2My42LTExIDIuMyAxMC4xIDQuMSAxOS44IDUuMiAyOS4xem0zOC41LTY2LjdjLTguNiAzLjctMTggNy0yNy43IDEwLjEtNS43LTE5LjYtMTMuMi00MC0yMi41LTYwLjkgOS4yLTIwLjggMTYuNi00MS4xIDIyLjItNjAuNiA5LjkgMy4xIDE5LjMgNi41IDI4LjEgMTAuMiAzNS40IDE1LjEgNTguMyAzNC45IDU4LjMgNTAuNi0uMSAxNS43LTIzIDM1LjYtNTguNCA1MC42ek0zMjAuOCA3OC40elwiLz4nLFxuICAgICAgJyAgICAgICAgPGNpcmNsZSBjeD1cIjQyMC45XCIgY3k9XCIyOTYuNVwiIHI9XCI0NS43XCIvPicsXG4gICAgICAnICAgICAgICA8cGF0aCBkPVwiTTUyMC41IDc4LjF6XCIvPicsXG4gICAgICAnICAgIDwvZz4nLFxuICAgICAgJzwvc3ZnPicsXG4gICAgICAnJyxcbiAgICBdO1xuXG4gICAgY29uc3QgYXBwSnN4ID0gW1xuICAgICAgXCJpbXBvcnQgbG9nbyBmcm9tICcuL2xvZ28uc3ZnJztcIixcbiAgICAgIFwiaW1wb3J0ICcuL0FwcC5jc3MnXCIsXG4gICAgICAnJyxcbiAgICAgICdmdW5jdGlvbiBBcHAoKSB7JyxcbiAgICAgICcgIHJldHVybiAoJyxcbiAgICAgICcgICA8ZGl2IGNsYXNzTmFtZT1cIkFwcFwiPicsXG4gICAgICAnICAgICAgPGhlYWRlciBjbGFzc05hbWU9XCJBcHAtaGVhZGVyXCI+JyxcbiAgICAgICcgICAgICAgIDxpbWcgc3JjPXtsb2dvfSBjbGFzc05hbWU9XCJBcHAtbG9nb1wiIGFsdD1cImxvZ29cIiAvPicsXG4gICAgICAnICAgICAgICA8cD4nLFxuICAgICAgYCAgICAgICAgICBFZGl0IDxjb2RlPnNyYy9BcHAuJHt0aGlzLmZpbGVFeHR9PC9jb2RlPiBhbmQgc2F2ZSB0byByZWxvYWQuYCxcbiAgICAgICcgICAgICAgIDwvcD4nLFxuICAgICAgJyAgICAgICAgPGEgY2xhc3NOYW1lPVwiQXBwLWxpbmtcIicsXG4gICAgICAnICAgICAgICAgIGhyZWY9XCJodHRwczovL3JlYWN0anMub3JnXCInLFxuICAgICAgJyAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIicsXG4gICAgICAnICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIicsXG4gICAgICAnICAgICAgICA+JyxcbiAgICAgICcgICAgICAgICAgTGVhcm4gUmVhY3QnLFxuICAgICAgJyAgICAgICAgPC9hPicsXG4gICAgICAnICAgICAgPC9oZWFkZXI+JyxcbiAgICAgICcgICAgPC9kaXY+JyxcbiAgICAgICcgICk7JyxcbiAgICAgICd9JyxcbiAgICAgICcnLFxuICAgICAgJ2V4cG9ydCBkZWZhdWx0IEFwcDsnLFxuICAgICAgJycsXG4gICAgXTtcblxuICAgIGNvbnN0IGFwcENzcyA9IFtcbiAgICAgICcuQXBwIHsnLFxuICAgICAgJyAgdGV4dC1hbGlnbjogY2VudGVyOycsXG4gICAgICAnfScsXG4gICAgICAnJyxcbiAgICAgICcuQXBwLWxvZ28geycsXG4gICAgICAnICBoZWlnaHQ6IDQwdm1pbjsnLFxuICAgICAgJyAgcG9pbnRlci1ldmVudHM6IG5vbmU7JyxcbiAgICAgICd9JyxcbiAgICAgICcnLFxuICAgICAgJ0BtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogbm8tcHJlZmVyZW5jZSkgeycsXG4gICAgICAnICAuQXBwLWxvZ28geycsXG4gICAgICAnICAgIGFuaW1hdGlvbjogQXBwLWxvZ28tc3BpbiBpbmZpbml0ZSAyMHMgbGluZWFyOycsXG4gICAgICAnICB9JyxcbiAgICAgICd9JyxcbiAgICAgICcnLFxuICAgICAgJy5BcHAtaGVhZGVyIHsnLFxuICAgICAgJyAgYmFja2dyb3VuZC1jb2xvcjogIzI4MmMzNDsnLFxuICAgICAgJyAgbWluLWhlaWdodDogMTAwdmg7JyxcbiAgICAgICcgIGRpc3BsYXk6IGZsZXg7JyxcbiAgICAgICcgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47JyxcbiAgICAgICcgIGFsaWduLWl0ZW1zOiBjZW50ZXI7JyxcbiAgICAgICcgIGp1c3RpZnktY29udGVudDogY2VudGVyOycsXG4gICAgICAnICBmb250LXNpemU6IGNhbGMoMTBweCArIDJ2bWluKTsnLFxuICAgICAgJyAgY29sb3I6IHdoaXRlOycsXG4gICAgICAnfScsXG4gICAgICAnJyxcbiAgICAgICcuQXBwLWxpbmsgeycsXG4gICAgICAnICBjb2xvcjogIzYxZGFmYjsnLFxuICAgICAgJ30nLFxuICAgICAgJycsXG4gICAgICAnQGtleWZyYW1lcyBBcHAtbG9nby1zcGluIHsnLFxuICAgICAgJyAgZnJvbSB7JyxcbiAgICAgICcgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7JyxcbiAgICAgICcgIH0nLFxuICAgICAgJyAgdG8geycsXG4gICAgICAnICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7JyxcbiAgICAgICcgIH0nLFxuICAgICAgJ30nLFxuICAgICAgJycsXG4gICAgXTtcblxuICAgIGNvbnN0IGFwcFRlc3RKc3ggPSBbXG4gICAgICBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XCIsXG4gICAgICBcImltcG9ydCB7IHJlbmRlciwgc2NyZWVuIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XCIsXG4gICAgICBcImltcG9ydCBBcHAgZnJvbSAnLi9BcHAnO1wiLFxuICAgICAgJycsXG4gICAgICBcInRlc3QoJ3JlbmRlcnMgbGVhcm4gcmVhY3QgbGluaycsICgpID0+IHtcIixcbiAgICAgICcgIHJlbmRlcig8QXBwIC8+KTsnLFxuICAgICAgJyAgY29uc3QgbGlua0VsZW1lbnQgPSBzY3JlZW4uZ2V0QnlUZXh0KC9sZWFybiByZWFjdC9pKTsnLFxuICAgICAgJyAgZXhwZWN0KGxpbmtFbGVtZW50KS50b0JlSW5UaGVEb2N1bWVudCgpOycsXG4gICAgICAnfSk7JyxcbiAgICAgICcnLFxuICAgIF07XG5cbiAgICBjb25zdCBpbmRleEpzeCA9IFtcbiAgICAgIFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcIixcbiAgICAgIFwiaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XCIsXG4gICAgICBcImltcG9ydCAnLi9pbmRleC5jc3MnO1wiLFxuICAgICAgXCJpbXBvcnQgQXBwIGZyb20gJy4vQXBwJztcIixcbiAgICAgIFwiaW1wb3J0IHJlcG9ydFdlYlZpdGFscyBmcm9tICcuL3JlcG9ydFdlYlZpdGFscyc7XCIsXG4gICAgICAnJyxcbiAgICAgICdSZWFjdERPTS5yZW5kZXIoJyxcbiAgICAgICcgIDxSZWFjdC5TdHJpY3RNb2RlPicsXG4gICAgICAnICAgIDxBcHAgLz4nLFxuICAgICAgJyAgPC9SZWFjdC5TdHJpY3RNb2RlPiwnLFxuICAgICAgXCIgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290JylcIixcbiAgICAgICcpOycsXG4gICAgICAnJyxcbiAgICAgICcvLyBJZiB5b3Ugd2FudCB0byBzdGFydCBtZWFzdXJpbmcgcGVyZm9ybWFuY2UgaW4geW91ciBhcHAsIHBhc3MgYSBmdW5jdGlvbicsXG4gICAgICAnLy8gdG8gbG9nIHJlc3VsdHMgKGZvciBleGFtcGxlOiByZXBvcnRXZWJWaXRhbHMoY29uc29sZS5sb2cpKScsXG4gICAgICAnLy8gb3Igc2VuZCB0byBhbiBhbmFseXRpY3MgZW5kcG9pbnQuIExlYXJuIG1vcmU6IGh0dHBzOi8vYml0Lmx5L0NSQS12aXRhbHMnLFxuICAgICAgJ3JlcG9ydFdlYlZpdGFscygpOycsXG4gICAgICAnJyxcbiAgICBdO1xuXG4gICAgY29uc3QgaW5kZXhDc3MgPSBbXG4gICAgICAnYm9keSB7JyxcbiAgICAgICcgIG1hcmdpbjogMDsnLFxuICAgICAgXCIgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsICdSb2JvdG8nLCAnT3h5Z2VuJyxcIixcbiAgICAgIFwiICAgICdVYnVudHUnLCAnQ2FudGFyZWxsJywgJ0ZpcmEgU2FucycsICdEcm9pZCBTYW5zJywgJ0hlbHZldGljYSBOZXVlJyxcIixcbiAgICAgICcgICAgc2Fucy1zZXJpZjsnLFxuICAgICAgJyAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7JyxcbiAgICAgICcgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7JyxcbiAgICAgICd9JyxcbiAgICAgICcnLFxuICAgICAgJ2NvZGUgeycsXG4gICAgICBcIiAgZm9udC1mYW1pbHk6IHNvdXJjZS1jb2RlLXBybywgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsICdDb3VyaWVyIE5ldycsXCIsXG4gICAgICAnICAgIG1vbm9zcGFjZTsnLFxuICAgICAgJ30nLFxuICAgICAgJycsXG4gICAgXTtcblxuICAgIGNvbnN0IHJlcG9ydFdlYlZpdGFsc0pzID0gW1xuICAgICAgXCJpbXBvcnQgeyBSZXBvcnRIYW5kbGVyIH0gZnJvbSAnd2ViLXZpdGFscyc7XCIsXG4gICAgICAnJyxcbiAgICAgICdjb25zdCByZXBvcnRXZWJWaXRhbHMgPSAob25QZXJmRW50cnk/OiBSZXBvcnRIYW5kbGVyKSA9PiB7JyxcbiAgICAgICcgIGlmIChvblBlcmZFbnRyeSAmJiBvblBlcmZFbnRyeSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7JyxcbiAgICAgIFwiICAgIGltcG9ydCgnd2ViLXZpdGFscycpLnRoZW4oKHsgZ2V0Q0xTLCBnZXRGSUQsIGdldEZDUCwgZ2V0TENQLCBnZXRUVEZCIH0pID0+IHtcIixcbiAgICAgICcgICAgICBnZXRDTFMob25QZXJmRW50cnkpOycsXG4gICAgICAnICAgICAgZ2V0RklEKG9uUGVyZkVudHJ5KTsnLFxuICAgICAgJyAgICAgIGdldEZDUChvblBlcmZFbnRyeSk7JyxcbiAgICAgICcgICAgICBnZXRMQ1Aob25QZXJmRW50cnkpOycsXG4gICAgICAnICAgICAgZ2V0VFRGQihvblBlcmZFbnRyeSk7JyxcbiAgICAgICcgICAgfSk7JyxcbiAgICAgICcgIH0nLFxuICAgICAgJ30nLFxuICAgICAgJycsXG4gICAgICAnZXhwb3J0IGRlZmF1bHQgcmVwb3J0V2ViVml0YWxzOycsXG4gICAgXTtcblxuICAgIGNvbnN0IHNldHVwVGVzdHNKcyA9IFtcbiAgICAgICcvLyBqZXN0LWRvbSBhZGRzIGN1c3RvbSBqZXN0IG1hdGNoZXJzIGZvciBhc3NlcnRpbmcgb24gRE9NIG5vZGVzLicsXG4gICAgICAnLy8gYWxsb3dzIHlvdSB0byBkbyB0aGluZ3MgbGlrZTonLFxuICAgICAgJy8vIGV4cGVjdChlbGVtZW50KS50b0hhdmVUZXh0Q29udGVudCgvcmVhY3QvaSknLFxuICAgICAgJy8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS90ZXN0aW5nLWxpYnJhcnkvamVzdC1kb20nLFxuICAgICAgXCJpbXBvcnQgJ0B0ZXN0aW5nLWxpYnJhcnkvamVzdC1kb20nO1wiLFxuICAgICAgJycsXG4gICAgXTtcblxuICAgIC8vIGpzL3RzIG5vdCBqc3gvdHN4XG4gICAgY29uc3QgZmlsZUV4dFdpdGhvdXRYID0gdGhpcy5maWxlRXh0LnJlcGxhY2UoJ3gnLCAnJyk7XG5cbiAgICBuZXcgU2FtcGxlRGlyKHByb2plY3QsIHRoaXMuc3JjZGlyLCB7XG4gICAgICBmaWxlczoge1xuICAgICAgICAnbG9nby5zdmcnOiBsb2dvU3ZnLmpvaW4oJ1xcbicpLFxuICAgICAgICBbJ0FwcC4nICsgdGhpcy5maWxlRXh0XTogYXBwSnN4LmpvaW4oJ1xcbicpLFxuICAgICAgICBbJ0FwcC50ZXN0LicgKyB0aGlzLmZpbGVFeHRdOiBhcHBUZXN0SnN4LmpvaW4oJ1xcbicpLFxuICAgICAgICAnQXBwLmNzcyc6IGFwcENzcy5qb2luKCdcXG4nKSxcbiAgICAgICAgWydpbmRleC4nICsgdGhpcy5maWxlRXh0XTogaW5kZXhKc3guam9pbignXFxuJyksXG4gICAgICAgICdpbmRleC5jc3MnOiBpbmRleENzcy5qb2luKCdcXG4nKSxcbiAgICAgICAgWydyZXBvcnRXZWJWaXRhbHMuJyArIGZpbGVFeHRXaXRob3V0WF06IHJlcG9ydFdlYlZpdGFsc0pzLmpvaW4oJ1xcbicpLFxuICAgICAgICBbJ3NldHVwVGVzdHMuJyArIGZpbGVFeHRXaXRob3V0WF06IHNldHVwVGVzdHNKcy5qb2luKCdcXG4nKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFjdFR5cGVEZWZPcHRpb25zIGV4dGVuZHMgRmlsZUJhc2VPcHRpb25zIHsgfVxuXG5leHBvcnQgY2xhc3MgUmVhY3RUeXBlRGVmIGV4dGVuZHMgRmlsZUJhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBSZWFjdFR5cGVTY3JpcHRQcm9qZWN0LCBmaWxlUGF0aDogc3RyaW5nLCBvcHRpb25zOiBSZWFjdFR5cGVEZWZPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihwcm9qZWN0LCBmaWxlUGF0aCwgb3B0aW9ucyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUNvbnRlbnQoXzogSVJlc29sdmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gW1xuICAgICAgJy8vLyA8cmVmZXJlbmNlIHR5cGVzPVwicmVhY3Qtc2NyaXB0c1wiIC8+JyxcbiAgICBdLmpvaW4oJ1xcbicpO1xuICB9XG59Il19
@@ -38,5 +38,5 @@ class TailwindConfig {
38
38
  }
39
39
  exports.TailwindConfig = TailwindConfig;
40
40
  _a = JSII_RTTI_SYMBOL_1;
41
- TailwindConfig[_a] = { fqn: "projen.web.TailwindConfig", version: "0.33.2" };
41
+ TailwindConfig[_a] = { fqn: "projen.web.TailwindConfig", version: "0.33.6" };
42
42
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpbHdpbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2ViL3RhaWx3aW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0NBQW1DOzs7Ozs7Ozs7O0FBU25DLE1BQWEsY0FBYzs7OztJQUl6QixZQUFZLE9BQW9CLEVBQUUsT0FBK0I7O1FBQy9ELElBQUksQ0FBQyxRQUFRLFNBQUcsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFFBQVEsbUNBQUksc0JBQXNCLENBQUM7UUFFNUQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLGVBQVEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMvQyxHQUFHLEVBQUU7Z0JBQ0gsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsS0FBSyxFQUFFO29CQUNMLE1BQU0sRUFBRSxFQUFFO2lCQUNYO2dCQUNELFFBQVEsRUFBRTtvQkFDUixNQUFNLEVBQUUsRUFBRTtpQkFDWDtnQkFDRCxPQUFPLEVBQUUsRUFBRTthQUNaO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsTUFBQSxPQUFPLENBQUMsU0FBUywwQ0FBRSxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUU7SUFDbEQsQ0FBQzs7QUF0Qkgsd0NBdUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSnNvbkZpbGUgfSBmcm9tICcuLi9qc29uJztcbmltcG9ydCB7IE5vZGVQcm9qZWN0IH0gZnJvbSAnLi4vbm9kZS1wcm9qZWN0JztcblxuZXhwb3J0IGludGVyZmFjZSBUYWlsd2luZENvbmZpZ09wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGZpbGVOYW1lPzogc3RyaW5nO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgVGFpbHdpbmRDb25maWcge1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZU5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGZpbGU6IEpzb25GaWxlO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IE5vZGVQcm9qZWN0LCBvcHRpb25zPzogVGFpbHdpbmRDb25maWdPcHRpb25zKSB7XG4gICAgdGhpcy5maWxlTmFtZSA9IG9wdGlvbnM/LmZpbGVOYW1lID8/ICd0YWlsd2luZC5jb25maWcuanNvbic7XG5cbiAgICB0aGlzLmZpbGUgPSBuZXcgSnNvbkZpbGUocHJvamVjdCwgdGhpcy5maWxlTmFtZSwge1xuICAgICAgb2JqOiB7XG4gICAgICAgIHB1cmdlOiBbXSxcbiAgICAgICAgZGFya01vZGU6IGZhbHNlLFxuICAgICAgICB0aGVtZToge1xuICAgICAgICAgIGV4dGVuZDoge30sXG4gICAgICAgIH0sXG4gICAgICAgIHZhcmlhbnRzOiB7XG4gICAgICAgICAgZXh0ZW5kOiB7fSxcbiAgICAgICAgfSxcbiAgICAgICAgcGx1Z2luczogW10sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5ucG1pZ25vcmU/LmV4Y2x1ZGUoYC8ke3RoaXMuZmlsZU5hbWV9YCk7XG4gIH1cbn1cbiJdfQ==
package/lib/xmlfile.js CHANGED
@@ -42,5 +42,5 @@ class XmlFile extends object_file_1.ObjectFile {
42
42
  }
43
43
  exports.XmlFile = XmlFile;
44
44
  _a = JSII_RTTI_SYMBOL_1;
45
- XmlFile[_a] = { fqn: "projen.XmlFile", version: "0.33.2" };
45
+ XmlFile[_a] = { fqn: "projen.XmlFile", version: "0.33.6" };
46
46
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1sZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy94bWxmaWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQWtEO0FBRWxELCtDQUE4RDs7Ozs7Ozs7O0FBTzlELE1BQWEsT0FBUSxTQUFRLHdCQUFVOzs7O0lBQ3JDLFlBQVksT0FBZ0IsRUFBRSxRQUFnQixFQUFFLFVBQTBCLEVBQUU7UUFDMUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7Ozs7O0lBRVMsaUJBQWlCLENBQUMsUUFBbUI7UUFDN0MsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUixPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELE1BQU0sU0FBUyxHQUFHLG9CQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQzFELFdBQVcsRUFBRSxJQUFJO1lBQ2pCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUN0QixDQUFDLENBQUM7UUFFSCxPQUFPO1lBQ0wsU0FBUztZQUNULEdBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsT0FBTyxDQUFDLGFBQWEsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUMvRCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNmLENBQUM7O0FBcEJILDBCQXFCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZSBhcyBjcmVhdGV4bWwgfSBmcm9tICd4bWxidWlsZGVyMic7XG5pbXBvcnQgeyBJUmVzb2x2ZXIgfSBmcm9tICcuL2ZpbGUnO1xuaW1wb3J0IHsgT2JqZWN0RmlsZSwgT2JqZWN0RmlsZU9wdGlvbnMgfSBmcm9tICcuL29iamVjdC1maWxlJztcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuL3Byb2plY3QnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgWG1sRmlsZU9wdGlvbnMgZXh0ZW5kcyBPYmplY3RGaWxlT3B0aW9ucyB7fVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIFhtbEZpbGUgZXh0ZW5kcyBPYmplY3RGaWxlIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgZmlsZVBhdGg6IHN0cmluZywgb3B0aW9uczogWG1sRmlsZU9wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKHByb2plY3QsIGZpbGVQYXRoLCBvcHRpb25zKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzeW50aGVzaXplQ29udGVudChyZXNvbHZlcjogSVJlc29sdmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBvYmogPSBzdXBlci5zeW50aGVzaXplQ29udGVudChyZXNvbHZlcik7XG4gICAgaWYgKCFvYmopIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgeG1sU3RyaW5nID0gY3JlYXRleG1sKHsgZW5jb2Rpbmc6ICdVVEYtOCcgfSwgb2JqKS5lbmQoe1xuICAgICAgcHJldHR5UHJpbnQ6IHRydWUsXG4gICAgICBpbmRlbnQ6ICcgJy5yZXBlYXQoNCksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gW1xuICAgICAgeG1sU3RyaW5nLFxuICAgICAgLi4uICh0aGlzLm1hcmtlciA/IFtgPCEtLSAke1htbEZpbGUuUFJPSkVOX01BUktFUn0gLS0+YF0gOiBbXSksXG4gICAgXS5qb2luKCdcXG4nKTtcbiAgfVxufSJdfQ==
package/lib/yaml.js CHANGED
@@ -36,5 +36,5 @@ class YamlFile extends object_file_1.ObjectFile {
36
36
  }
37
37
  exports.YamlFile = YamlFile;
38
38
  _a = JSII_RTTI_SYMBOL_1;
39
- YamlFile[_a] = { fqn: "projen.YamlFile", version: "0.33.2" };
39
+ YamlFile[_a] = { fqn: "projen.YamlFile", version: "0.33.6" };
40
40
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy95YW1sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBRTdCLCtDQUE4RDs7Ozs7O0FBTzlELE1BQWEsUUFBUyxTQUFRLHdCQUFVOzs7O0lBQ3RDLFlBQVksT0FBZ0IsRUFBRSxRQUFnQixFQUFFLE9BQXdCO1FBQ3RFLEtBQUssQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Ozs7OztJQUVTLGlCQUFpQixDQUFDLFFBQW1CO1FBQzdDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxPQUFPO1lBQ0wsR0FBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3hELEVBQUU7WUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDaEQsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZixDQUFDOztBQWhCSCw0QkFpQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBZQU1MIGZyb20gJ3lhbWwnO1xuaW1wb3J0IHsgSVJlc29sdmVyIH0gZnJvbSAnLi9maWxlJztcbmltcG9ydCB7IE9iamVjdEZpbGUsIE9iamVjdEZpbGVPcHRpb25zIH0gZnJvbSAnLi9vYmplY3QtZmlsZSc7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi9wcm9qZWN0JztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBZYW1sRmlsZU9wdGlvbnMgZXh0ZW5kcyBPYmplY3RGaWxlT3B0aW9ucyB7fVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgWWFtbEZpbGUgZXh0ZW5kcyBPYmplY3RGaWxlIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgZmlsZVBhdGg6IHN0cmluZywgb3B0aW9uczogWWFtbEZpbGVPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCwgZmlsZVBhdGgsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVDb250ZW50KHJlc29sdmVyOiBJUmVzb2x2ZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGpzb24gPSBzdXBlci5zeW50aGVzaXplQ29udGVudChyZXNvbHZlcik7XG4gICAgaWYgKCFqc29uKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiBbXG4gICAgICAuLi4gKHRoaXMubWFya2VyID8gW2AjICR7WWFtbEZpbGUuUFJPSkVOX01BUktFUn1gXSA6IFtdKSxcbiAgICAgICcnLFxuICAgICAgWUFNTC5zdHJpbmdpZnkoSlNPTi5wYXJzZShqc29uKSwgeyBpbmRlbnQ6IDIgfSksXG4gICAgXS5qb2luKCdcXG4nKTtcbiAgfVxufSJdfQ==
@@ -0,0 +1,15 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
+
5
+ ## [2.1.0](https://github.com/conventional-changelog/conventional-changelog-config-spec/compare/v2.0.0...v2.1.0) (2019-08-20)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **typo:** configuration property is `header`, not `title`. ([#18](https://github.com/conventional-changelog/conventional-changelog-config-spec/issues/18)) ([e99926c](https://github.com/conventional-changelog/conventional-changelog-config-spec/commit/e99926c))
11
+
12
+
13
+ ### Features
14
+
15
+ * add issuePrefixes to config ([#25](https://github.com/conventional-changelog/conventional-changelog-config-spec/issues/25)) ([d4c44b3](https://github.com/conventional-changelog/conventional-changelog-config-spec/commit/d4c44b3))
@@ -0,0 +1,7 @@
1
+ # Conventional Changelog Configuration Spec
2
+
3
+ ## Versions
4
+
5
+ - [v1.0.0](versions/1.0.0/README.md)
6
+ - [v2.0.0](versions/2.0.0/README.md)
7
+ - [v2.1.0](versions/2.1.0/README.md) - *Current*
@@ -0,0 +1 @@
1
+ module.exports = require('./versions/2.1.0/schema.json')
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "conventional-changelog-config-spec",
3
+ "version": "2.1.0",
4
+ "description": "a spec describing the config options supported by conventional-config for upstream tooling",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "pretest": "standard",
8
+ "test": "npx mocha tests/*.test.js",
9
+ "release": "standard-version"
10
+ },
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/conventional-changelog/conventional-changelog-config-spec.git"
14
+ },
15
+ "keywords": [
16
+ "conventional-changelog",
17
+ "conventional",
18
+ "changelog",
19
+ "spec"
20
+ ],
21
+ "license": "MIT",
22
+ "bugs": {
23
+ "url": "https://github.com/conventional-changelog/conventional-changelog-config-spec/issues"
24
+ },
25
+ "homepage": "https://github.com/conventional-changelog/conventional-changelog-config-spec#readme",
26
+ "devDependencies": {
27
+ "ajv": "6.10.2",
28
+ "mocha": "^6.2.0",
29
+ "standard": "14.0.0",
30
+ "standard-version": "^7.0.0"
31
+ }
32
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "extends": [
3
+ "config:base"
4
+ ]
5
+ }
@@ -0,0 +1,38 @@
1
+ /* global describe, it */
2
+ const assert = require('assert')
3
+ const Ajv = require('ajv')
4
+
5
+ module.exports = function (schema) {
6
+ describe('(shared) JSON Schema', function () {
7
+ it('should be a valid schema', function () {
8
+ const ajv = new Ajv()
9
+ assert.doesNotThrow(ajv.compile(schema))
10
+ })
11
+
12
+ it('should validate a simple `type` configuration', function () {
13
+ const ajv = new Ajv()
14
+ const validate = ajv.compile(schema)
15
+ const mock = {
16
+ types: [
17
+ { type: 'feat', section: 'Features' },
18
+ { type: 'fix', section: 'Bug Fixes' },
19
+ { type: 'imp', hidden: true }
20
+ ]
21
+ }
22
+ assert(validate(mock))
23
+ })
24
+
25
+ it('should NOT validate on an invalid `type` configuration', function () {
26
+ const ajv = new Ajv()
27
+ const validate = ajv.compile(schema)
28
+ const mock = {
29
+ types: [
30
+ { type: 'feat', section: 'Features' },
31
+ { type: 'fix', this_will_be_invalid: 'Bug Fixes' },
32
+ { type: 'docs', hidden: true }
33
+ ]
34
+ }
35
+ assert(validate(mock) === false)
36
+ })
37
+ })
38
+ }
@@ -0,0 +1,7 @@
1
+ /* global describe */
2
+ const schema = require('../versions/1.0.0/schema.json')
3
+ const shared = require('./shared')
4
+
5
+ describe('v1.0.0', function () {
6
+ shared(schema)
7
+ })
@@ -0,0 +1,26 @@
1
+ /* global describe, it */
2
+ const assert = require('assert')
3
+ const Ajv = require('ajv')
4
+ const schema = require('../versions/2.0.0/schema.json')
5
+ const shared = require('./shared')
6
+
7
+ describe('v2.0.0', function () {
8
+ shared(schema)
9
+
10
+ it('change: hides less useful/common `types` by default', function () {
11
+ schema.properties.types.default.map(function (type) {
12
+ if (!['fix', 'feat'].includes(type.type)) {
13
+ assert(type.hidden === true, `${type.type} is expected to bet hidden`)
14
+ }
15
+ })
16
+ })
17
+
18
+ it('addition: should validate a simple `header` configuration', function () {
19
+ const ajv = new Ajv()
20
+ const validate = ajv.compile(schema)
21
+ const mock = {
22
+ header: '#`changelog`\n\n'
23
+ }
24
+ assert(validate(mock))
25
+ })
26
+ })
@@ -0,0 +1,143 @@
1
+ # Conventional Changelog Configuration Spec (v1.0.0)
2
+
3
+ ## Structure
4
+
5
+ - [types](#types)
6
+ - [type](#type)
7
+ - [preMajor](#premajor-boolean)
8
+ - [commitUrlFormat](#commiturlformat-string)
9
+ - [compareUrlFormat](#compareurlformat-string)
10
+ - [issueUrlFormat](#issueurlformat-string)
11
+ - [userUrlFormat](#userurlformat-string)
12
+ - [releaseCommitMessageFormat](#releasecommitmessageformat-string)
13
+
14
+ ## Substitutions
15
+ - [host](#host)
16
+ - [owner](#owner)
17
+ - [repository](#repository)
18
+ - [hash](#hash)
19
+ - [previousTag](#previoustype)
20
+ - [currentTag](#currenttag)
21
+
22
+ ---
23
+
24
+ ### types
25
+
26
+ An array of [`type`](#type) objects representing the explicitly supported commit message types, and whether they should show up in generated CHANGELOGs.
27
+
28
+ ```json
29
+ "types": [
30
+ { "type": "feat", "section": "Features"},
31
+ { "type": "fix", "section": "Bug Fixes"},
32
+ { "type": "test", "section": "Tests"},
33
+ { "type": "build", "section": "Build System"},
34
+ { "type": "ci", "hidden": true}
35
+ ]
36
+ ```
37
+
38
+ #### type
39
+
40
+ | name | type | required | default | description |
41
+ | ------------------------- | --------- | --------- | ------- | ----------------------------------------------------------------------------------------------------------------- |
42
+ | **type** | `string` | ✔️ | `N/A` | A string used to match `<type>`s used in the [Conventional Commits](https://www.conventionalcommits.org) convention. |
43
+ | **section** | `string` | ✖️ | `N/A` | The section where the matched commit `type` will display in the CHANGELOG. |
44
+ | **hidden** | `boolean` | ✖️ | `N/A` | Set to `true` to hide matched commit `type`s in the CHANGELOG. |
45
+
46
+ ### preMajor (`boolean`)
47
+
48
+ Boolean indicating whether or not the action being run (generating CHANGELOG,
49
+ recommendedBump, etc.) is being performed for a pre-major release (`<1.0.0`).
50
+
51
+ This config setting will generally be set by tooling and not a user.
52
+
53
+ ### commitUrlFormat (`string`)
54
+
55
+ A URL representing a specific commit at a hash.
56
+
57
+ ```
58
+ {{host}}/{{owner}}/{{repository}}/commit/{{hash}}
59
+ ```
60
+
61
+ See [Substitutions](#substitutions-1) for more details on substitutions.
62
+
63
+ ### compareUrlFormat (`string`)
64
+
65
+ A URL representing the comparison between two git shas.
66
+
67
+ ```
68
+ {{host}}/{{owner}}/{{repository}}/compare/{{previousTag}}...{{currentTag}}
69
+ ```
70
+
71
+ See [Substitutions](#substitutions-1) for more details on substitutions.
72
+
73
+ ### issueUrlFormat (`string`)
74
+
75
+ A URL representing the issueformat (allowing a different URL format to be swapped in for Gitlab, Bitbucket, etc):
76
+
77
+ ```
78
+ {{host}}/{{owner}}/{{repository}}/issues/{{id}}
79
+ ```
80
+
81
+ See [Substitutions](#substitutions-1) for more details on substitutions.
82
+
83
+ ### userUrlFormat (`string`)
84
+
85
+ A URL representing the a user's profile URL on GitHub, Gitlab, etc. This URL
86
+ is used for substituting `@bcoe` with `https://github.com/bcoe` in commit
87
+ messages.
88
+
89
+ ```
90
+ {{host}}/{{user}}
91
+ ```
92
+
93
+ See [Substitutions](#substitutions-1) for more details on substitutions.
94
+
95
+ ### releaseCommitMessageFormat (`string`)
96
+
97
+ A string to be used to format the auto-generated release commit message.
98
+
99
+ ```
100
+ chore(release): {{currentTag}}
101
+ ```
102
+
103
+ See [Substitutions](#substitutions-1) for more details on substitutions.
104
+
105
+ ## Substitutions
106
+
107
+ All substitutions use [Handlebar](https://handlebarsjs.com/) syntax and templating and will be interpolated as a `string`.
108
+
109
+ ### {{host}}
110
+ Default: Normalized host found in `package.json`.
111
+
112
+ Available to: `commitUrlFormat`, `compareUrlFormat`, `issueUrlFormat`
113
+
114
+ ### {{owner}}
115
+ Default: Extracted from normalized `package.json` `repository.url` field.
116
+
117
+ Available to: `commitUrlFormat`, `compareUrlFormat`, `issueUrlFormat`
118
+
119
+ ### {{repository}}
120
+ Default: Extracted from normalized `package.json` `repository.url` field.
121
+
122
+ Available to: `commitUrlFormat`, `compareUrlFormat`, `issueUrlFormat`
123
+
124
+ ### {{hash}}
125
+ Default: The commit hash of the tagged release.
126
+
127
+ Available to: `commitUrlFormat`
128
+
129
+ ### {{previousTag}}
130
+ Default: Previous [semver](https://semver.org/) tag or the first commit hash if no previous tag is available.
131
+
132
+ Available to: `compareUrlFormat`
133
+
134
+ ### {{currentTag}}
135
+ Default: Current [semver](https://semver.org/) tag or or `'v' + version` if no current tag is available.
136
+
137
+ Available to: `compareUrlFormat`
138
+
139
+ ### {{user}}
140
+ Default: username to the right-hand-side of the `@` symbol in `@user` shorthand.
141
+
142
+ Available to: `userUrlFormat`
143
+
@@ -0,0 +1,81 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Conventional Changelog Configuration",
4
+ "description": "Describes the configuration options supported by conventional-config for upstream tooling.",
5
+ "type": "object",
6
+ "properties": {
7
+ "types": {
8
+ "description": "An array of `type` objects representing the explicitly supported commit message types, and whether they should show up in generated `CHANGELOG`s.",
9
+ "type": "array",
10
+ "items": {
11
+ "$ref": "#/definitions/type"
12
+ },
13
+ "default": [
14
+ {"type": "feat", "section": "Features"},
15
+ {"type": "fix", "section": "Bug Fixes"},
16
+ {"type": "test", "section": "Tests"},
17
+ {"type": "build", "section": "Build System"},
18
+ {"type": "ci", "hidden": true}
19
+ ]
20
+ },
21
+ "preMajor": {
22
+ "type": "boolean",
23
+ "description": "Boolean indicating whether or not the action being run (generating CHANGELOG, recommendedBump, etc.) is being performed for a pre-major release (<1.0.0).\n This config setting will generally be set by tooling and not a user.",
24
+ "default": false
25
+ },
26
+ "commitUrlFormat": {
27
+ "type": "string",
28
+ "description": "A URL representing a specific commit at a hash.",
29
+ "default": "{{host}}/{{owner}}/{{repository}}/commit/{{hash}}"
30
+ },
31
+ "compareUrlFormat": {
32
+ "type": "string",
33
+ "description": "A URL representing the comparison between two git SHAs.",
34
+ "default": "{{host}}/{{owner}}/{{repository}}/compare/{{previousTag}}...{{currentTag}}"
35
+ },
36
+ "issueUrlFormat": {
37
+ "type": "string",
38
+ "description": "A URL representing the issue format (allowing a different URL format to be swapped in for Gitlab, Bitbucket, etc).",
39
+ "default": "{{host}}/{{owner}}/{{repository}}/issues/{{id}}"
40
+ },
41
+ "userUrlFormat": {
42
+ "type": "string",
43
+ "description": "A URL representing the a user's profile URL on GitHub, Gitlab, etc. This URL is used for substituting @bcoe with https://github.com/bcoe in commit messages.",
44
+ "default": "{{host}}/{{user}}"
45
+ },
46
+ "releaseCommitMessageFormat": {
47
+ "type": "string",
48
+ "description": "A string to be used to format the auto-generated release commit message.",
49
+ "default": "chore(release): {{currentTag}}"
50
+ }
51
+ },
52
+ "definitions": {
53
+ "type": {
54
+ "description": "An object that describes a commit type's settings in the CHANGELOG",
55
+ "type": "object",
56
+ "properties": {
57
+ "type": {
58
+ "description": "A string used to match <type>s used in the Conventional Commits convention.",
59
+ "type": "string"
60
+ },
61
+ "section": {
62
+ "description": "The section where the matched commit type will display in the CHANGELOG.",
63
+ "type": "string"
64
+ },
65
+ "hidden": {
66
+ "description": "Set to `true` to hide matched commit types in the CHANGELOG.",
67
+ "type": "boolean"
68
+ }
69
+ },
70
+ "required": ["type"],
71
+ "oneOf": [
72
+ {
73
+ "required": ["section"]
74
+ },
75
+ {
76
+ "required": ["hidden"]
77
+ }
78
+ ]
79
+ }
80
+ }
81
+ }