projen 0.36.8 → 0.37.0

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 (207) hide show
  1. package/.jsii +16703 -16599
  2. package/API.md +7136 -7066
  3. package/README.md +9 -9
  4. package/lib/awscdk/auto-discover.js +1 -1
  5. package/lib/{awscdk-app-ts.d.ts → awscdk/awscdk-app-ts.d.ts} +4 -3
  6. package/lib/awscdk/awscdk-app-ts.js +189 -0
  7. package/lib/{awscdk-construct.d.ts → awscdk/awscdk-construct.d.ts} +2 -2
  8. package/lib/awscdk/awscdk-construct.js +121 -0
  9. package/lib/awscdk/cdk-config.js +1 -1
  10. package/lib/awscdk/cdk-tasks.d.ts +1 -1
  11. package/lib/awscdk/cdk-tasks.js +2 -2
  12. package/lib/awscdk/index.d.ts +5 -3
  13. package/lib/awscdk/index.js +6 -4
  14. package/lib/awscdk/integration-test.d.ts +1 -1
  15. package/lib/awscdk/integration-test.js +2 -2
  16. package/lib/awscdk/java-app.js +1 -1
  17. package/lib/awscdk/lambda-function.d.ts +1 -1
  18. package/lib/awscdk/lambda-function.js +6 -7
  19. package/lib/{tasks/builtin-example.task.d.ts → builtin-example.task.d.ts} +0 -0
  20. package/lib/builtin-example.task.js +4 -0
  21. package/lib/{construct-lib.d.ts → cdk/construct-lib.d.ts} +0 -0
  22. package/lib/cdk/construct-lib.js +30 -0
  23. package/lib/cdk/index.d.ts +3 -0
  24. package/lib/{json → cdk}/index.js +4 -2
  25. package/lib/cdk/jsii-docgen.d.ts +12 -0
  26. package/lib/cdk/jsii-docgen.js +29 -0
  27. package/lib/{jsii-project.d.ts → cdk/jsii-project.d.ts} +4 -3
  28. package/lib/cdk/jsii-project.js +188 -0
  29. package/lib/{cdk8s-app-ts.d.ts → cdk8s/cdk8s-app-ts.d.ts} +1 -1
  30. package/lib/cdk8s/cdk8s-app-ts.js +134 -0
  31. package/lib/{cdk8s-construct.d.ts → cdk8s/cdk8s-construct.d.ts} +1 -1
  32. package/lib/{cdk8s-construct.js → cdk8s/cdk8s-construct.js} +4 -4
  33. package/lib/cdk8s/index.d.ts +2 -0
  34. package/lib/{deps → cdk8s}/index.js +3 -3
  35. package/lib/{cdktf-construct.d.ts → cdktf/cdktf-construct.d.ts} +1 -1
  36. package/lib/{cdktf-construct.js → cdktf/cdktf-construct.js} +4 -4
  37. package/lib/cdktf/index.d.ts +1 -0
  38. package/lib/{git → cdktf}/index.js +2 -2
  39. package/lib/cli/index.js +5 -5
  40. package/lib/cli/synth.d.ts +1 -1
  41. package/lib/cli/synth.js +1 -1
  42. package/lib/cli/tasks.d.ts +1 -1
  43. package/lib/cli/tasks.js +1 -1
  44. package/lib/component.js +1 -1
  45. package/lib/{deps/dependencies.d.ts → dependencies.d.ts} +101 -3
  46. package/lib/dependencies.js +206 -0
  47. package/lib/dev-env.d.ts +1 -1
  48. package/lib/dev-env.js +2 -2
  49. package/lib/docker-compose.js +2 -2
  50. package/lib/file.js +1 -1
  51. package/lib/{git/gitattributes.d.ts → gitattributes.d.ts} +2 -2
  52. package/lib/gitattributes.js +62 -0
  53. package/lib/github/auto-approve.js +1 -1
  54. package/lib/github/auto-merge.js +1 -1
  55. package/lib/github/dependabot.js +1 -1
  56. package/lib/github/github-project.d.ts +193 -0
  57. package/lib/github/github-project.js +70 -0
  58. package/lib/github/github.js +1 -1
  59. package/lib/github/index.d.ts +1 -0
  60. package/lib/github/index.js +2 -1
  61. package/lib/github/mergify.js +1 -1
  62. package/lib/github/pr-template.js +1 -1
  63. package/lib/github/pull-request-lint.js +1 -1
  64. package/lib/github/stale.js +1 -1
  65. package/lib/github/task-workflow.d.ts +1 -1
  66. package/lib/github/task-workflow.js +2 -2
  67. package/lib/github/workflows.js +1 -1
  68. package/lib/gitpod.d.ts +1 -1
  69. package/lib/gitpod.js +2 -2
  70. package/lib/ignore-file.js +1 -1
  71. package/lib/index.d.ts +12 -20
  72. package/lib/index.js +13 -21
  73. package/lib/ini.js +1 -1
  74. package/lib/java/java-project.d.ts +2 -2
  75. package/lib/java/java-project.js +4 -4
  76. package/lib/java/junit.js +1 -1
  77. package/lib/java/maven-compile.js +1 -1
  78. package/lib/java/maven-packaging.js +1 -1
  79. package/lib/java/maven-sample.js +1 -1
  80. package/lib/java/pom.d.ts +1 -1
  81. package/lib/java/pom.js +12 -12
  82. package/lib/java/projenrc.js +4 -4
  83. package/lib/javascript/bundler.d.ts +1 -1
  84. package/lib/javascript/bundler.js +4 -4
  85. package/lib/{eslint.d.ts → javascript/eslint.d.ts} +3 -3
  86. package/lib/javascript/eslint.js +261 -0
  87. package/lib/javascript/index.d.ts +8 -2
  88. package/lib/javascript/index.js +9 -3
  89. package/lib/{jest.d.ts → javascript/jest.d.ts} +1 -1
  90. package/lib/{jest.js → javascript/jest.js} +3 -3
  91. package/lib/{node-package.d.ts → javascript/node-package.d.ts} +2 -2
  92. package/lib/javascript/node-package.js +683 -0
  93. package/lib/{node-project.d.ts → javascript/node-project.d.ts} +9 -8
  94. package/lib/javascript/node-project.js +541 -0
  95. package/lib/javascript/npm-config.d.ts +1 -1
  96. package/lib/javascript/npm-config.js +2 -2
  97. package/lib/javascript/projenrc.js +3 -3
  98. package/lib/{typescript-config.d.ts → javascript/typescript-config.d.ts} +2 -2
  99. package/lib/{typescript-config.js → javascript/typescript-config.js} +3 -3
  100. package/lib/{upgrade-dependencies.d.ts → javascript/upgrade-dependencies.d.ts} +3 -3
  101. package/lib/javascript/upgrade-dependencies.js +328 -0
  102. package/lib/json.js +1 -1
  103. package/lib/license.js +1 -1
  104. package/lib/logger.js +1 -1
  105. package/lib/makefile.js +1 -1
  106. package/lib/object-file.js +1 -1
  107. package/lib/project-build.d.ts +1 -1
  108. package/lib/project-build.js +2 -2
  109. package/lib/project.d.ts +5 -198
  110. package/lib/project.js +14 -78
  111. package/lib/projects.js +1 -1
  112. package/lib/{json/projenrc.d.ts → projenrc-json.d.ts} +2 -2
  113. package/lib/{json/projenrc.js → projenrc-json.js} +4 -4
  114. package/lib/python/pip.d.ts +1 -1
  115. package/lib/python/pip.js +9 -9
  116. package/lib/python/poetry.d.ts +1 -1
  117. package/lib/python/poetry.js +10 -10
  118. package/lib/python/projenrc.js +4 -4
  119. package/lib/python/pytest.js +1 -1
  120. package/lib/python/python-deps.d.ts +2 -2
  121. package/lib/python/python-deps.js +1 -1
  122. package/lib/python/python-packaging.d.ts +1 -1
  123. package/lib/python/python-packaging.js +1 -1
  124. package/lib/python/python-project.d.ts +1 -1
  125. package/lib/python/python-project.js +4 -3
  126. package/lib/python/python-sample.js +1 -1
  127. package/lib/python/requirements-file.js +4 -4
  128. package/lib/python/setuppy.js +1 -1
  129. package/lib/python/setuptools.d.ts +1 -1
  130. package/lib/python/setuptools.js +2 -2
  131. package/lib/python/venv.js +1 -1
  132. package/lib/readme.js +1 -1
  133. package/lib/release/publisher.d.ts +1 -1
  134. package/lib/release/publisher.js +3 -3
  135. package/lib/release/release-trigger.js +1 -1
  136. package/lib/release/release.d.ts +2 -2
  137. package/lib/release/release.js +2 -2
  138. package/lib/{json/run-projenrc.task.d.ts → run-projenrc-json.task.d.ts} +0 -0
  139. package/lib/run-projenrc-json.task.js +31 -0
  140. package/lib/sample-file.js +2 -2
  141. package/lib/semver.js +1 -1
  142. package/lib/source-code.js +1 -1
  143. package/lib/{tasks/model.d.ts → task-model.d.ts} +0 -0
  144. package/lib/task-model.js +3 -0
  145. package/lib/{tasks/runtime.d.ts → task-runtime.d.ts} +1 -1
  146. package/lib/task-runtime.js +272 -0
  147. package/lib/{tasks/task.d.ts → task.d.ts} +1 -1
  148. package/lib/task.js +195 -0
  149. package/lib/{tasks/tasks.d.ts → tasks.d.ts} +2 -2
  150. package/lib/tasks.js +129 -0
  151. package/lib/textfile.js +1 -1
  152. package/lib/toml.js +1 -1
  153. package/lib/typescript/index.d.ts +2 -0
  154. package/lib/typescript/index.js +3 -1
  155. package/lib/typescript/projenrc.js +1 -1
  156. package/lib/typescript/typescript-typedoc.d.ts +12 -0
  157. package/lib/typescript/typescript-typedoc.js +28 -0
  158. package/lib/{typescript.d.ts → typescript/typescript.d.ts} +3 -5
  159. package/lib/typescript/typescript.js +281 -0
  160. package/lib/util/synth.d.ts +2 -2
  161. package/lib/util/synth.js +3 -3
  162. package/lib/version.d.ts +1 -1
  163. package/lib/version.js +2 -2
  164. package/lib/vscode/devcontainer.d.ts +1 -1
  165. package/lib/vscode/devcontainer.js +2 -2
  166. package/lib/vscode/launch-config.js +1 -1
  167. package/lib/vscode/vscode.js +1 -1
  168. package/lib/web/next.d.ts +1 -1
  169. package/lib/web/next.js +8 -9
  170. package/lib/web/postcss.d.ts +1 -1
  171. package/lib/web/postcss.js +2 -2
  172. package/lib/web/react.d.ts +1 -1
  173. package/lib/web/react.js +9 -10
  174. package/lib/web/tailwind.d.ts +1 -1
  175. package/lib/web/tailwind.js +2 -2
  176. package/lib/xmlfile.js +1 -1
  177. package/lib/yaml.js +1 -1
  178. package/package.json +3 -1
  179. package/lib/awscdk-app-ts.js +0 -188
  180. package/lib/awscdk-construct.js +0 -121
  181. package/lib/cdk8s-app-ts.js +0 -134
  182. package/lib/construct-lib.js +0 -30
  183. package/lib/deps/dependencies.js +0 -192
  184. package/lib/deps/index.d.ts +0 -2
  185. package/lib/deps/model.d.ts +0 -99
  186. package/lib/deps/model.js +0 -18
  187. package/lib/eslint.js +0 -261
  188. package/lib/git/gitattributes.js +0 -62
  189. package/lib/git/index.d.ts +0 -1
  190. package/lib/jsii-docgen.d.ts +0 -10
  191. package/lib/jsii-docgen.js +0 -23
  192. package/lib/jsii-project.js +0 -187
  193. package/lib/json/index.d.ts +0 -1
  194. package/lib/json/run-projenrc.task.js +0 -31
  195. package/lib/node-package.js +0 -683
  196. package/lib/node-project.js +0 -540
  197. package/lib/tasks/builtin-example.task.js +0 -4
  198. package/lib/tasks/index.d.ts +0 -4
  199. package/lib/tasks/index.js +0 -17
  200. package/lib/tasks/model.js +0 -3
  201. package/lib/tasks/runtime.js +0 -272
  202. package/lib/tasks/task.js +0 -195
  203. package/lib/tasks/tasks.js +0 -129
  204. package/lib/typescript-typedoc.d.ts +0 -7
  205. package/lib/typescript-typedoc.js +0 -19
  206. package/lib/typescript.js +0 -284
  207. package/lib/upgrade-dependencies.js +0 -328
package/lib/deps/model.js DELETED
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DependencyType = void 0;
4
- /**
5
- * (experimental) Type of dependency.
6
- *
7
- * @experimental
8
- */
9
- var DependencyType;
10
- (function (DependencyType) {
11
- DependencyType["RUNTIME"] = "runtime";
12
- DependencyType["PEER"] = "peer";
13
- DependencyType["BUNDLED"] = "bundled";
14
- DependencyType["BUILD"] = "build";
15
- DependencyType["TEST"] = "test";
16
- DependencyType["DEVENV"] = "devenv";
17
- })(DependencyType = exports.DependencyType || (exports.DependencyType = {}));
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVwcy9tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQXlCQSxJQUFZLGNBa0JYO0FBbEJELFdBQVksY0FBYztJQUV4QixxQ0FBbUIsQ0FBQTtJQUduQiwrQkFBYSxDQUFBO0lBR2IscUNBQW1CLENBQUE7SUFHbkIsaUNBQWUsQ0FBQTtJQUdmLCtCQUFhLENBQUE7SUFHYixtQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBbEJXLGNBQWMsR0FBZCxzQkFBYyxLQUFkLHNCQUFjLFFBa0J6QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRGVwc01hbmlmZXN0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZGVwZW5kZW5jaWVzOiBEZXBlbmRlbmN5W107XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBEZXBlbmRlbmN5Q29vcmRpbmF0ZXMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIERlcGVuZGVuY3kgZXh0ZW5kcyBEZXBlbmRlbmN5Q29vcmRpbmF0ZXMge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB0eXBlOiBEZXBlbmRlbmN5VHlwZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBlbnVtIERlcGVuZGVuY3lUeXBlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIFJVTlRJTUUgPSAncnVudGltZScsXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBQRUVSID0gJ3BlZXInLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIEJVTkRMRUQgPSAnYnVuZGxlZCcsXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIEJVSUxEID0gJ2J1aWxkJyxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBURVNUID0gJ3Rlc3QnLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIERFVkVOViA9ICdkZXZlbnYnLFxufVxuIl19
package/lib/eslint.js DELETED
@@ -1,261 +0,0 @@
1
- "use strict";
2
- var _a;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.Eslint = void 0;
5
- const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
- const common_1 = require("./common");
7
- const component_1 = require("./component");
8
- const json_1 = require("./json");
9
- /**
10
- * (experimental) Represents eslint configuration.
11
- *
12
- * @experimental
13
- */
14
- class Eslint extends component_1.Component {
15
- /**
16
- * @experimental
17
- */
18
- constructor(project, options) {
19
- var _b, _c, _d, _e, _f, _g;
20
- super(project);
21
- project.addDevDeps('eslint@^8', '@typescript-eslint/eslint-plugin@^5', '@typescript-eslint/parser@^5', 'eslint-import-resolver-node', 'eslint-import-resolver-typescript', 'eslint-plugin-import', 'json-schema');
22
- if (options.prettier) {
23
- project.addDevDeps('prettier', 'eslint-plugin-prettier', 'eslint-config-prettier');
24
- }
25
- if (options.aliasMap) {
26
- project.addDevDeps('eslint-import-resolver-alias');
27
- }
28
- const devdirs = (_b = options.devdirs) !== null && _b !== void 0 ? _b : [];
29
- const dirs = [...options.dirs, ...devdirs];
30
- const fileExtensions = (_c = options.fileExtensions) !== null && _c !== void 0 ? _c : ['.ts'];
31
- this._allowDevDeps = new Set((devdirs !== null && devdirs !== void 0 ? devdirs : []).map(dir => `**/${dir}/**`));
32
- const lintProjenRc = (_d = options.lintProjenRc) !== null && _d !== void 0 ? _d : true;
33
- const eslint = project.addTask('eslint', {
34
- description: 'Runs eslint against the codebase',
35
- exec: [
36
- 'eslint',
37
- `--ext ${fileExtensions.join(',')}`,
38
- '--fix',
39
- '--no-error-on-unmatched-pattern',
40
- ...dirs,
41
- ...lintProjenRc ? [common_1.PROJEN_RC] : [],
42
- ].join(' '),
43
- });
44
- project.testTask.spawn(eslint);
45
- // exclude some files
46
- (_e = project.npmignore) === null || _e === void 0 ? void 0 : _e.exclude('/.eslintrc.json');
47
- const formattingRules = options.prettier ? {
48
- 'prettier/prettier': ['error'],
49
- } : {
50
- // see https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/indent.md
51
- 'indent': ['off'],
52
- '@typescript-eslint/indent': ['error', 2],
53
- // Style
54
- 'quotes': ['error', 'single', { avoidEscape: true }],
55
- 'comma-dangle': ['error', 'always-multiline'],
56
- 'comma-spacing': ['error', { before: false, after: true }],
57
- 'no-multi-spaces': ['error', { ignoreEOLComments: false }],
58
- 'array-bracket-spacing': ['error', 'never'],
59
- 'array-bracket-newline': ['error', 'consistent'],
60
- 'object-curly-spacing': ['error', 'always'],
61
- 'object-curly-newline': ['error', { multiline: true, consistent: true }],
62
- 'object-property-newline': ['error', { allowAllPropertiesOnSameLine: true }],
63
- 'keyword-spacing': ['error'],
64
- 'brace-style': ['error', '1tbs', { allowSingleLine: true }],
65
- 'space-before-blocks': ['error'],
66
- 'curly': ['error', 'multi-line', 'consistent'],
67
- '@typescript-eslint/member-delimiter-style': ['error'],
68
- // Require semicolons
69
- 'semi': ['error', 'always'],
70
- // Max line lengths
71
- 'max-len': ['error', {
72
- code: 150,
73
- ignoreUrls: true,
74
- ignoreStrings: true,
75
- ignoreTemplateLiterals: true,
76
- ignoreComments: true,
77
- ignoreRegExpLiterals: true,
78
- }],
79
- // Don't unnecessarily quote properties
80
- 'quote-props': ['error', 'consistent-as-needed'],
81
- };
82
- this.rules = {
83
- ...formattingRules,
84
- // Require use of the `import { foo } from 'bar';` form instead of `import foo = require('bar');`
85
- '@typescript-eslint/no-require-imports': ['error'],
86
- // Require all imported dependencies are actually declared in package.json
87
- 'import/no-extraneous-dependencies': [
88
- 'error',
89
- {
90
- // Only allow importing devDependencies from "devdirs".
91
- devDependencies: () => this.renderDevDepsAllowList(),
92
- optionalDependencies: false,
93
- peerDependencies: true,
94
- },
95
- ],
96
- // Require all imported libraries actually resolve (!!required for import/no-extraneous-dependencies to work!!)
97
- 'import/no-unresolved': ['error'],
98
- // Require an ordering on all imports
99
- 'import/order': ['warn', {
100
- groups: ['builtin', 'external'],
101
- alphabetize: { order: 'asc', caseInsensitive: true },
102
- }],
103
- // Cannot import from the same module twice
104
- 'no-duplicate-imports': ['error'],
105
- // Cannot shadow names
106
- 'no-shadow': ['off'],
107
- '@typescript-eslint/no-shadow': ['error'],
108
- // Required spacing in property declarations (copied from TSLint, defaults are good)
109
- 'key-spacing': ['error'],
110
- // No multiple empty lines
111
- 'no-multiple-empty-lines': ['error'],
112
- // One of the easiest mistakes to make
113
- '@typescript-eslint/no-floating-promises': ['error'],
114
- // Make sure that inside try/catch blocks, promises are 'return await'ed
115
- // (must disable the base rule as it can report incorrect errors)
116
- 'no-return-await': ['off'],
117
- '@typescript-eslint/return-await': ['error'],
118
- // Useless diff results
119
- 'no-trailing-spaces': ['error'],
120
- // Must use foo.bar instead of foo['bar'] if possible
121
- 'dot-notation': ['error'],
122
- // Are you sure | is not a typo for || ?
123
- 'no-bitwise': ['error'],
124
- // Member ordering
125
- '@typescript-eslint/member-ordering': ['error', {
126
- default: [
127
- 'public-static-field',
128
- 'public-static-method',
129
- 'protected-static-field',
130
- 'protected-static-method',
131
- 'private-static-field',
132
- 'private-static-method',
133
- 'field',
134
- // Constructors
135
- 'constructor',
136
- // Methods
137
- 'method',
138
- ],
139
- }],
140
- };
141
- // Overrides for .projenrc.js
142
- this.overrides = [
143
- {
144
- files: [common_1.PROJEN_RC],
145
- rules: {
146
- '@typescript-eslint/no-require-imports': 'off',
147
- 'import/no-extraneous-dependencies': 'off',
148
- },
149
- },
150
- ];
151
- this.ignorePatterns = (_f = options.ignorePatterns) !== null && _f !== void 0 ? _f : [
152
- '*.js',
153
- `!${common_1.PROJEN_RC}`,
154
- '*.d.ts',
155
- 'node_modules/',
156
- '*.generated.ts',
157
- 'coverage',
158
- ];
159
- const tsconfig = (_g = options.tsconfigPath) !== null && _g !== void 0 ? _g : './tsconfig.json';
160
- const plugins = [
161
- '@typescript-eslint',
162
- 'import',
163
- ...(options.prettier ? ['prettier'] : []),
164
- ];
165
- const extendsConf = [
166
- 'plugin:import/typescript',
167
- ...(options.prettier ? [
168
- 'prettier',
169
- 'plugin:prettier/recommended',
170
- ] : []),
171
- ];
172
- this.config = {
173
- env: {
174
- jest: true,
175
- node: true,
176
- },
177
- root: true,
178
- plugins,
179
- parser: '@typescript-eslint/parser',
180
- parserOptions: {
181
- ecmaVersion: 2018,
182
- sourceType: 'module',
183
- project: tsconfig,
184
- },
185
- extends: extendsConf,
186
- settings: {
187
- 'import/parsers': {
188
- '@typescript-eslint/parser': ['.ts', '.tsx'],
189
- },
190
- 'import/resolver': {
191
- ...(options.aliasMap && {
192
- alias: {
193
- map: Object.entries(options.aliasMap).map(([k, v]) => [k, v]),
194
- extensions: options.aliasExtensions,
195
- },
196
- }),
197
- node: {},
198
- typescript: {
199
- project: tsconfig,
200
- ...(options.tsAlwaysTryTypes !== false && { alwaysTryTypes: true }),
201
- },
202
- },
203
- },
204
- ignorePatterns: this.ignorePatterns,
205
- rules: this.rules,
206
- overrides: this.overrides,
207
- };
208
- new json_1.JsonFile(project, '.eslintrc.json', { obj: this.config, marker: false });
209
- }
210
- /**
211
- * (experimental) Returns the singletone Eslint component of a project or undefined if there is none.
212
- *
213
- * @experimental
214
- */
215
- static of(project) {
216
- const isEslint = (c) => c instanceof Eslint;
217
- return project.components.find(isEslint);
218
- }
219
- /**
220
- * (experimental) Add an eslint rule.
221
- *
222
- * @experimental
223
- */
224
- addRules(rules) {
225
- for (const [k, v] of Object.entries(rules)) {
226
- this.rules[k] = v;
227
- }
228
- }
229
- /**
230
- * (experimental) Add an eslint override.
231
- *
232
- * @experimental
233
- */
234
- addOverride(override) {
235
- this.overrides.push(override);
236
- }
237
- /**
238
- * (experimental) Do not lint these files.
239
- *
240
- * @experimental
241
- */
242
- addIgnorePattern(pattern) {
243
- this.ignorePatterns.push(pattern);
244
- }
245
- /**
246
- * (experimental) Add a glob file pattern which allows importing dev dependencies.
247
- *
248
- * @param pattern glob pattern.
249
- * @experimental
250
- */
251
- allowDevDeps(pattern) {
252
- this._allowDevDeps.add(pattern);
253
- }
254
- renderDevDepsAllowList() {
255
- return Array.from(this._allowDevDeps);
256
- }
257
- }
258
- exports.Eslint = Eslint;
259
- _a = JSII_RTTI_SYMBOL_1;
260
- Eslint[_a] = { fqn: "projen.Eslint", version: "0.36.8" };
261
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNsaW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2VzbGludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLHFDQUFxQztBQUNyQywyQ0FBd0M7QUFDeEMsaUNBQWtDOzs7Ozs7QUE4Q2xDLE1BQWEsTUFBTyxTQUFRLHFCQUFTOzs7O0lBc0JuQyxZQUFZLE9BQW9CLEVBQUUsT0FBc0I7O1FBQ3RELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLE9BQU8sQ0FBQyxVQUFVLENBQ2hCLFdBQVcsRUFDWCxxQ0FBcUMsRUFDckMsOEJBQThCLEVBQzlCLDZCQUE2QixFQUM3QixtQ0FBbUMsRUFDbkMsc0JBQXNCLEVBQ3RCLGFBQWEsQ0FDZCxDQUFDO1FBRUYsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3BCLE9BQU8sQ0FBQyxVQUFVLENBQ2hCLFVBQVUsRUFDVix3QkFBd0IsRUFDeEIsd0JBQXdCLENBQ3pCLENBQUM7U0FDSDtRQUVELElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUNwQixPQUFPLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLENBQUM7U0FDcEQ7UUFFRCxNQUFNLE9BQU8sU0FBRyxPQUFPLENBQUMsT0FBTyxtQ0FBSSxFQUFFLENBQUM7UUFFdEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUMzQyxNQUFNLGNBQWMsU0FBRyxPQUFPLENBQUMsY0FBYyxtQ0FBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLGFBQVAsT0FBTyxjQUFQLE9BQU8sR0FBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUV6RSxNQUFNLFlBQVksU0FBRyxPQUFP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Qzs7Ozs7O0lBcFFNLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBZ0I7UUFDL0IsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFZLEVBQWUsRUFBRSxDQUFDLENBQUMsWUFBWSxNQUFNLENBQUM7UUFDcEUsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxDQUFDOzs7Ozs7SUFvUU0sUUFBUSxDQUFDLEtBQThCO1FBQzVDLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ25CO0lBQ0gsQ0FBQzs7Ozs7O0lBR00sV0FBVyxDQUFDLFFBQXdCO1FBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Ozs7OztJQUdNLGdCQUFnQixDQUFDLE9BQWU7UUFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7Ozs7OztJQUdNLFlBQVksQ0FBQyxPQUFlO1FBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN4QyxDQUFDOztBQWpTSCx3QkFrU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLic7XG5pbXBvcnQgeyBQUk9KRU5fUkMgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBKc29uRmlsZSB9IGZyb20gJy4vanNvbic7XG5pbXBvcnQgeyBOb2RlUHJvamVjdCB9IGZyb20gJy4vbm9kZS1wcm9qZWN0JztcblxuXG5leHBvcnQgaW50ZXJmYWNlIEVzbGludE9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdHNjb25maWdQYXRoPzogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBkaXJzOiBzdHJpbmdbXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZGV2ZGlycz86IHN0cmluZ1tdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBmaWxlRXh0ZW5zaW9ucz86IHN0cmluZ1tdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBpZ25vcmVQYXR0ZXJucz86IHN0cmluZ1tdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbGludFByb2plblJjPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHByZXR0aWVyPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgYWxpYXNNYXA/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBhbGlhc0V4dGVuc2lvbnM/OiBzdHJpbmdbXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdHNBbHdheXNUcnlUeXBlcz86IGJvb2xlYW47XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIEVzbGludE92ZXJyaWRlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZmlsZXM6IHN0cmluZ1tdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcnVsZXM6IHsgW3J1bGU6IHN0cmluZ106IGFueSB9O1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgRXNsaW50IGV4dGVuZHMgQ29tcG9uZW50IHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIG9mKHByb2plY3Q6IFByb2plY3QpOiBFc2xpbnQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGlzRXNsaW50ID0gKGM6IENvbXBvbmVudCk6IGMgaXMgRXNsaW50ID0+IGMgaW5zdGFuY2VvZiBFc2xpbnQ7XG4gICAgcmV0dXJuIHByb2plY3QuY29tcG9uZW50cy5maW5kKGlzRXNsaW50KTtcbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IHJ1bGVzOiB7IFtydWxlOiBzdHJpbmddOiBhbnlbXSB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBvdmVycmlkZXM6IEVzbGludE92ZXJyaWRlW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGNvbmZpZzogYW55O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgaWdub3JlUGF0dGVybnM6IHN0cmluZ1tdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FsbG93RGV2RGVwczogU2V0PHN0cmluZz47XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogTm9kZVByb2plY3QsIG9wdGlvbnM6IEVzbGludE9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHByb2plY3QuYWRkRGV2RGVwcyhcbiAgICAgICdlc2xpbnRAXjgnLFxuICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9lc2xpbnQtcGx1Z2luQF41JyxcbiAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvcGFyc2VyQF41JyxcbiAgICAgICdlc2xpbnQtaW1wb3J0LXJlc29sdmVyLW5vZGUnLFxuICAgICAgJ2VzbGludC1pbXBvcnQtcmVzb2x2ZXItdHlwZXNjcmlwdCcsXG4gICAgICAnZXNsaW50LXBsdWdpbi1pbXBvcnQnLFxuICAgICAgJ2pzb24tc2NoZW1hJyxcbiAgICApO1xuXG4gICAgaWYgKG9wdGlvbnMucHJldHRpZXIpIHtcbiAgICAgIHByb2plY3QuYWRkRGV2RGVwcyhcbiAgICAgICAgJ3ByZXR0aWVyJyxcbiAgICAgICAgJ2VzbGludC1wbHVnaW4tcHJldHRpZXInLFxuICAgICAgICAnZXNsaW50LWNvbmZpZy1wcmV0dGllcicsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmFsaWFzTWFwKSB7XG4gICAgICBwcm9qZWN0LmFkZERldkRlcHMoJ2VzbGludC1pbXBvcnQtcmVzb2x2ZXItYWxpYXMnKTtcbiAgICB9XG5cbiAgICBjb25zdCBkZXZkaXJzID0gb3B0aW9ucy5kZXZkaXJzID8/IFtdO1xuXG4gICAgY29uc3QgZGlycyA9IFsuLi5vcHRpb25zLmRpcnMsIC4uLmRldmRpcnNdO1xuICAgIGNvbnN0IGZpbGVFeHRlbnNpb25zID0gb3B0aW9ucy5maWxlRXh0ZW5zaW9ucyA/PyBbJy50cyddO1xuXG4gICAgdGhpcy5fYWxsb3dEZXZEZXBzID0gbmV3IFNldCgoZGV2ZGlycyA/PyBbXSkubWFwKGRpciA9PiBgKiovJHtkaXJ9LyoqYCkpO1xuXG4gICAgY29uc3QgbGludFByb2plblJjID0gb3B0aW9ucy5saW50UHJvamVuUmMgPz8gdHJ1ZTtcblxuICAgIGNvbnN0IGVzbGludCA9IHByb2plY3QuYWRkVGFzaygnZXNsaW50Jywge1xuICAgICAgZGVzY3JpcHRpb246ICdSdW5zIGVzbGludCBhZ2FpbnN0IHRoZSBjb2RlYmFzZScsXG4gICAgICBleGVjOiBbXG4gICAgICAgICdlc2xpbnQnLFxuICAgICAgICBgLS1leHQgJHtmaWxlRXh0ZW5zaW9ucy5qb2luKCcsJyl9YCxcbiAgICAgICAgJy0tZml4JyxcbiAgICAgICAgJy0tbm8tZXJyb3Itb24tdW5tYXRjaGVkLXBhdHRlcm4nLFxuICAgICAgICAuLi5kaXJzLFxuICAgICAgICAuLi5saW50UHJvamVuUmMgPyBbUFJPSkVOX1JDXSA6IFtdLFxuICAgICAgXS5qb2luKCcgJyksXG4gICAgfSk7XG5cbiAgICBwcm9qZWN0LnRlc3RUYXNrLnNwYXduKGVzbGludCk7XG5cbiAgICAvLyBleGNsdWRlIHNvbWUgZmlsZXNcbiAgICBwcm9qZWN0Lm5wbWlnbm9yZT8uZXhjbHVkZSgnLy5lc2xpbnRyYy5qc29uJyk7XG5cbiAgICBjb25zdCBmb3JtYXR0aW5nUnVsZXM6IHsgW3J1bGU6IHN0cmluZ106IGFueSB9ID0gb3B0aW9ucy5wcmV0dGllciA/IHtcbiAgICAgICdwcmV0dGllci9wcmV0dGllcic6IFsnZXJyb3InXSxcbiAgICB9IDoge1xuICAgICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90eXBlc2NyaXB0LWVzbGludC90eXBlc2NyaXB0LWVzbGludC9ibG9iL21hc3Rlci9wYWNrYWdlcy9lc2xpbnQtcGx1Z2luL2RvY3MvcnVsZXMvaW5kZW50Lm1kXG4gICAgICAnaW5kZW50JzogWydvZmYnXSxcbiAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50JzogWydlcnJvcicsIDJdLFxuXG4gICAgICAvLyBTdHlsZVxuICAgICAgJ3F1b3Rlcyc6IFsnZXJyb3InLCAnc2luZ2xlJywgeyBhdm9pZEVzY2FwZTogdHJ1ZSB9XSxcbiAgICAgICdjb21tYS1kYW5nbGUnOiBbJ2Vycm9yJywgJ2Fsd2F5cy1tdWx0aWxpbmUnXSwgLy8gZW5zdXJlcyBjbGVhbiBkaWZmcywgc2VlIGh0dHBzOi8vbWVkaXVtLmNvbS9AbmlrZ3JhZi93aHkteW91LXNob3VsZC1lbmZvcmNlLWRhbmdsaW5nLWNvbW1hcy1mb3ItbXVsdGlsaW5lLXN0YXRlbWVudHMtZDAzNGM5OGUzNmY4XG4gICAgICAnY29tbWEtc3BhY2luZyc6IFsnZXJyb3InLCB7IGJlZm9yZTogZmFsc2UsIGFmdGVyOiB0cnVlIH1dLCAvLyBzcGFjZSBhZnRlciwgbm8gc3BhY2UgYmVmb3JlXG4gICAgICAnbm8tbXVsdGktc3BhY2VzJzogWydlcnJvcicsIHsgaWdub3JlRU9MQ29tbWVudHM6IGZhbHNlIH1dLCAvLyBubyBtdWx0aSBzcGFjZXNcbiAgICAgICdhcnJheS1icmFja2V0LXNwYWNpbmcnOiBbJ2Vycm9yJywgJ25ldmVyJ10sIC8vIFsxLCAyLCAzXVxuICAgICAgJ2FycmF5LWJyYWNrZXQtbmV3bGluZSc6IFsnZXJyb3InLCAnY29uc2lzdGVudCddLCAvLyBlbmZvcmNlIGNvbnNpc3RlbnQgbGluZSBicmVha3MgYmV0d2VlbiBicmFja2V0c1xuICAgICAgJ29iamVjdC1jdXJseS1zcGFjaW5nJzogWydlcnJvcicsICdhbHdheXMnXSwgLy8geyBrZXk6ICd2YWx1ZScgfVxuICAgICAgJ29iamVjdC1jdXJseS1uZXdsaW5lJzogWydlcnJvcicsIHsgbXVsdGlsaW5lOiB0cnVlLCBjb25zaXN0ZW50OiB0cnVlIH1dLCAvLyBlbmZvcmNlIGNvbnNpc3RlbnQgbGluZSBicmVha3MgYmV0d2VlbiBicmFjZXNcbiAgICAgICdvYmplY3QtcHJvcGVydHktbmV3bGluZSc6IFsnZXJyb3InLCB7IGFsbG93QWxsUHJvcGVydGllc09uU2FtZUxpbmU6IHRydWUgfV0sIC8vIGVuZm9yY2UgXCJzYW1lIGxpbmVcIiBvciBcIm11bHRpcGxlIGxpbmVcIiBvbiBvYmplY3QgcHJvcGVydGllc1xuICAgICAgJ2tleXdvcmQtc3BhY2luZyc6IFsnZXJyb3InXSwgLy8gcmVxdWlyZSBhIHNwYWNlIGJlZm9yZSAmIGFmdGVyIGtleXdvcmRzXG4gICAgICAnYnJhY2Utc3R5bGUnOiBbJ2Vycm9yJywgJzF0YnMnLCB7IGFsbG93U2luZ2xlTGluZTogdHJ1ZSB9XSwgLy8gZW5mb3JjZSBvbmUgdHJ1ZSBicmFjZSBzdHlsZVxuICAgICAgJ3NwYWNlLWJlZm9yZS1ibG9ja3MnOiBbJ2Vycm9yJ10sIC8vIHJlcXVpcmUgc3BhY2UgYmVmb3JlIGJsb2Nrc1xuICAgICAgJ2N1cmx5JzogWydlcnJvcicsICdtdWx0aS1saW5lJywgJ2NvbnNpc3RlbnQnXSwgLy8gcmVxdWlyZSBjdXJseSBicmFjZXMgZm9yIG11bHRpbGluZSBjb250cm9sIHN0YXRlbWVudHNcbiAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLWRlbGltaXRlci1zdHlsZSc6IFsnZXJyb3InXSxcblxuICAgICAgLy8gUmVxdWlyZSBzZW1pY29sb25zXG4gICAgICAnc2VtaSc6IFsnZXJyb3InLCAnYWx3YXlzJ10sXG5cbiAgICAgIC8vIE1heCBsaW5lIGxlbmd0aHNcbiAgICAgICdtYXgtbGVuJzogWydlcnJvcicsIHtcbiAgICAgICAgY29kZTogMTUwLFxuICAgICAgICBpZ25vcmVVcmxzOiB0cnVlLCAvLyBNb3N0IGNvbW1vbiByZWFzb24gdG8gZGlzYWJsZSBpdFxuICAgICAgICBpZ25vcmVTdHJpbmdzOiB0cnVlLCAvLyBUaGVzZSBhcmUgbm90IGZhbnRhc3RpYyBidXQgbmVjZXNzYXJ5IGZvciBlcnJvciBtZXNzYWdlc1xuICAgICAgICBpZ25vcmVUZW1wbGF0ZUxpdGVyYWxzOiB0cnVlLFxuICAgICAgICBpZ25vcmVDb21tZW50czogdHJ1ZSxcbiAgICAgICAgaWdub3JlUmVnRXhwTGl0ZXJhbHM6IHRydWUsXG4gICAgICB9XSxcblxuICAgICAgLy8gRG9uJ3QgdW5uZWNlc3NhcmlseSBxdW90ZSBwcm9wZXJ0aWVzXG4gICAgICAncXVvdGUtcHJvcHMnOiBbJ2Vycm9yJywgJ2NvbnNpc3RlbnQtYXMtbmVlZGVkJ10sXG4gICAgfTtcblxuICAgIHRoaXMucnVsZXMgPSB7XG4gICAgICAuLi5mb3JtYXR0aW5nUnVsZXMsXG4gICAgICAvLyBSZXF1aXJlIHVzZSBvZiB0aGUgYGltcG9ydCB7IGZvbyB9IGZyb20gJ2Jhcic7YCBmb3JtIGluc3RlYWQgb2YgYGltcG9ydCBmb28gPSByZXF1aXJlKCdiYXInKTtgXG4gICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0cyc6IFsnZXJyb3InXSxcblxuICAgICAgLy8gUmVxdWlyZSBhbGwgaW1wb3J0ZWQgZGVwZW5kZW5jaWVzIGFyZSBhY3R1YWxseSBkZWNsYXJlZCBpbiBwYWNrYWdlLmpzb25cbiAgICAgICdpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMnOiBbXG4gICAgICAgICdlcnJvcicsXG4gICAgICAgIHtcbiAgICAgICAgICAvLyBPbmx5IGFsbG93IGltcG9ydGluZyBkZXZEZXBlbmRlbmNpZXMgZnJvbSBcImRldmRpcnNcIi5cbiAgICAgICAgICBkZXZEZXBlbmRlbmNpZXM6ICgpID0+IHRoaXMucmVuZGVyRGV2RGVwc0FsbG93TGlzdCgpLFxuICAgICAgICAgIG9wdGlvbmFsRGVwZW5kZW5jaWVzOiBmYWxzZSwgLy8gRGlzYWxsb3cgaW1wb3J0aW5nIG9wdGlvbmFsIGRlcGVuZGVuY2llcyAodGhvc2Ugc2hvdWxkbid0IGJlIGluIHVzZSBpbiB0aGUgcHJvamVjdClcbiAgICAgICAgICBwZWVyRGVwZW5kZW5jaWVzOiB0cnVlLCAvLyBBbGxvdyBpbXBvcnRpbmcgcGVlciBkZXBlbmRlbmNpZXMgKHRoYXQgYXJlbid0IGFsc28gZGlyZWN0IGRlcGVuZGVuY2llcylcbiAgICAgICAgfSxcbiAgICAgIF0sXG5cbiAgICAgIC8vIFJlcXVpcmUgYWxsIGltcG9ydGVkIGxpYnJhcmllcyBhY3R1YWxseSByZXNvbHZlICghIXJlcXVpcmVkIGZvciBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgdG8gd29yayEhKVxuICAgICAgJ2ltcG9ydC9uby11bnJlc29sdmVkJzogWydlcnJvciddLFxuXG4gICAgICAvLyBSZXF1aXJlIGFuIG9yZGVyaW5nIG9uIGFsbCBpbXBvcnRzXG4gICAgICAnaW1wb3J0L29yZGVyJzogWyd3YXJuJywge1xuICAgICAgICBncm91cHM6IFsnYnVpbHRpbicsICdleHRlcm5hbCddLFxuICAgICAgICBhbHBoYWJldGl6ZTogeyBvcmRlcjogJ2FzYycsIGNhc2VJbnNlbnNpdGl2ZTogdHJ1ZSB9LFxuICAgICAgfV0sXG5cbiAgICAgIC8vIENhbm5vdCBpbXBvcnQgZnJvbSB0aGUgc2FtZSBtb2R1bGUgdHdpY2VcbiAgICAgICduby1kdXBsaWNhdGUtaW1wb3J0cyc6IFsnZXJyb3InXSxcblxuICAgICAgLy8gQ2Fubm90IHNoYWRvdyBuYW1lc1xuICAgICAgJ25vLXNoYWRvdyc6IFsnb2ZmJ10sXG4gICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L25vLXNoYWRvdyc6IFsnZXJyb3InXSxcblxuICAgICAgLy8gUmVxdWlyZWQgc3BhY2luZyBpbiBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgKGNvcGllZCBmcm9tIFRTTGludCwgZGVmYXVsdHMgYXJlIGdvb2QpXG4gICAgICAna2V5LXNwYWNpbmcnOiBbJ2Vycm9yJ10sXG5cbiAgICAgIC8vIE5vIG11bHRpcGxlIGVtcHR5IGxpbmVzXG4gICAgICAnbm8tbXVsdGlwbGUtZW1wdHktbGluZXMnOiBbJ2Vycm9yJ10sXG5cbiAgICAgIC8vIE9uZSBvZiB0aGUgZWFzaWVzdCBtaXN0YWtlcyB0byBtYWtlXG4gICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L25vLWZsb2F0aW5nLXByb21pc2VzJzogWydlcnJvciddLFxuXG4gICAgICAvLyBNYWtlIHN1cmUgdGhhdCBpbnNpZGUgdHJ5L2NhdGNoIGJsb2NrcywgcHJvbWlzZXMgYXJlICdyZXR1cm4gYXdhaXQnZWRcbiAgICAgIC8vIChtdXN0IGRpc2FibGUgdGhlIGJhc2UgcnVsZSBhcyBpdCBjYW4gcmVwb3J0IGluY29ycmVjdCBlcnJvcnMpXG4gICAgICAnbm8tcmV0dXJuLWF3YWl0JzogWydvZmYnXSxcbiAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvcmV0dXJuLWF3YWl0JzogWydlcnJvciddLFxuXG4gICAgICAvLyBVc2VsZXNzIGRpZmYgcmVzdWx0c1xuICAgICAgJ25vLXRyYWlsaW5nLXNwYWNlcyc6IFsnZXJyb3InXSxcblxuICAgICAgLy8gTXVzdCB1c2UgZm9vLmJhciBpbnN0ZWFkIG9mIGZvb1snYmFyJ10gaWYgcG9zc2libGVcbiAgICAgICdkb3Qtbm90YXRpb24nOiBbJ2Vycm9yJ10sXG5cbiAgICAgIC8vIEFyZSB5b3Ugc3VyZSB8IGlzIG5vdCBhIHR5cG8gZm9yIHx8ID9cbiAgICAgICduby1iaXR3aXNlJzogWydlcnJvciddLFxuXG4gICAgICAvLyBNZW1iZXIgb3JkZXJpbmdcbiAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nJzogWydlcnJvcicsIHtcbiAgICAgICAgZGVmYXVsdDogW1xuICAgICAgICAgICdwdWJsaWMtc3RhdGljLWZpZWxkJyxcbiAgICAgICAgICAncHVibGljLXN0YXRpYy1tZXRob2QnLFxuICAgICAgICAgICdwcm90ZWN0ZWQtc3RhdGljLWZpZWxkJyxcbiAgICAgICAgICAncHJvdGVjdGVkLXN0YXRpYy1tZXRob2QnLFxuICAgICAgICAgICdwcml2YXRlLXN0YXRpYy1maWVsZCcsXG4gICAgICAgICAgJ3ByaXZhdGUtc3RhdGljLW1ldGhvZCcsXG5cbiAgICAgICAgICAnZmllbGQnLFxuXG4gICAgICAgICAgLy8gQ29uc3RydWN0b3JzXG4gICAgICAgICAgJ2NvbnN0cnVjdG9yJywgLy8gPSBbXCJwdWJsaWMtY29uc3RydWN0b3JcIiwgXCJwcm90ZWN0ZWQtY29uc3RydWN0b3JcIiwgXCJwcml2YXRlLWNvbnN0cnVjdG9yXCJdXG5cbiAgICAgICAgICAvLyBNZXRob2RzXG4gICAgICAgICAgJ21ldGhvZCcsXG4gICAgICAgIF0sXG4gICAgICB9XSxcbiAgICB9O1xuXG4gICAgLy8gT3ZlcnJpZGVzIGZvciAucHJvamVucmMuanNcbiAgICB0aGlzLm92ZXJyaWRlcyA9IFtcbiAgICAgIHtcbiAgICAgICAgZmlsZXM6IFtQUk9KRU5fUkNdLFxuICAgICAgICBydWxlczoge1xuICAgICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzJzogJ29mZicsXG4gICAgICAgICAgJ2ltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyc6ICdvZmYnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgdGhpcy5pZ25vcmVQYXR0ZXJucyA9IG9wdGlvbnMuaWdub3JlUGF0dGVybnMgPz8gW1xuICAgICAgJyouanMnLFxuICAgICAgYCEke1BST0pFTl9SQ31gLFxuICAgICAgJyouZC50cycsXG4gICAgICAnbm9kZV9tb2R1bGVzLycsXG4gICAgICAnKi5nZW5lcmF0ZWQudHMnLFxuICAgICAgJ2NvdmVyYWdlJyxcbiAgICBdO1xuXG4gICAgY29uc3QgdHNjb25maWcgPSBvcHRpb25zLnRzY29uZmlnUGF0aCA/PyAnLi90c2NvbmZpZy5qc29uJztcblxuICAgIGNvbnN0IHBsdWdpbnMgPSBbXG4gICAgICAnQHR5cGVzY3JpcHQtZXNsaW50JyxcbiAgICAgICdpbXBvcnQnLFxuICAgICAgLi4uKG9wdGlvbnMucHJldHRpZXIgPyBbJ3ByZXR0aWVyJ10gOiBbXSksXG4gICAgXTtcblxuICAgIGNvbnN0IGV4dGVuZHNDb25mID0gW1xuICAgICAgJ3BsdWdpbjppbXBvcnQvdHlwZXNjcmlwdCcsXG4gICAgICAuLi4ob3B0aW9ucy5wcmV0dGllciA/IFtcbiAgICAgICAgJ3ByZXR0aWVyJyxcbiAgICAgICAgJ3BsdWdpbjpwcmV0dGllci9yZWNvbW1lbmRlZCcsXG4gICAgICBdIDogW10pLFxuICAgIF07XG5cbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIGVudjoge1xuICAgICAgICBqZXN0OiB0cnVlLFxuICAgICAgICBub2RlOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIHJvb3Q6IHRydWUsXG4gICAgICBwbHVnaW5zLFxuICAgICAgcGFyc2VyOiAnQHR5cGVzY3JpcHQtZXNsaW50L3BhcnNlcicsXG4gICAgICBwYXJzZXJPcHRpb25zOiB7XG4gICAgICAgIGVjbWFWZXJzaW9uOiAyMDE4LFxuICAgICAgICBzb3VyY2VUeXBlOiAnbW9kdWxlJyxcbiAgICAgICAgcHJvamVjdDogdHNjb25maWcsXG4gICAgICB9LFxuICAgICAgZXh0ZW5kczogZXh0ZW5kc0NvbmYsXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAnaW1wb3J0L3BhcnNlcnMnOiB7XG4gICAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9wYXJzZXInOiBbJy50cycsICcudHN4J10sXG4gICAgICAgIH0sXG4gICAgICAgICdpbXBvcnQvcmVzb2x2ZXInOiB7XG4gICAgICAgICAgLi4uKCBvcHRpb25zLmFsaWFzTWFwICYmIHtcbiAgICAgICAgICAgIGFsaWFzOiB7XG4gICAgICAgICAgICAgIG1hcDogT2JqZWN0LmVudHJpZXMob3B0aW9ucy5hbGlhc01hcCkubWFwKChbaywgdl0pID0+IFtrLCB2XSksXG4gICAgICAgICAgICAgIGV4dGVuc2lvbnM6IG9wdGlvbnMuYWxpYXNFeHRlbnNpb25zLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBub2RlOiB7fSxcbiAgICAgICAgICB0eXBlc2NyaXB0OiB7XG4gICAgICAgICAgICBwcm9qZWN0OiB0c2NvbmZpZyxcbiAgICAgICAgICAgIC4uLiggb3B0aW9ucy50c0Fsd2F5c1RyeVR5cGVzICE9PSBmYWxzZSAmJiB7IGFsd2F5c1RyeVR5cGVzOiB0cnVlIH0gKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGlnbm9yZVBhdHRlcm5zOiB0aGlzLmlnbm9yZVBhdHRlcm5zLFxuICAgICAgcnVsZXM6IHRoaXMucnVsZXMsXG4gICAgICBvdmVycmlkZXM6IHRoaXMub3ZlcnJpZGVzLFxuICAgIH07XG5cbiAgICBuZXcgSnNvbkZpbGUocHJvamVjdCwgJy5lc2xpbnRyYy5qc29uJywgeyBvYmo6IHRoaXMuY29uZmlnLCBtYXJrZXI6IGZhbHNlIH0pO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgYWRkUnVsZXMocnVsZXM6IHsgW3J1bGU6IHN0cmluZ106IGFueSB9KSB7XG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMocnVsZXMpKSB7XG4gICAgICB0aGlzLnJ1bGVzW2tdID0gdjtcbiAgICB9XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgYWRkT3ZlcnJpZGUob3ZlcnJpZGU6IEVzbGludE92ZXJyaWRlKSB7XG4gICAgdGhpcy5vdmVycmlkZXMucHVzaChvdmVycmlkZSk7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIGFkZElnbm9yZVBhdHRlcm4ocGF0dGVybjogc3RyaW5nKSB7XG4gICAgdGhpcy5pZ25vcmVQYXR0ZXJucy5wdXNoKHBhdHRlcm4pO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIGFsbG93RGV2RGVwcyhwYXR0ZXJuOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9hbGxvd0RldkRlcHMuYWRkKHBhdHRlcm4pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJEZXZEZXBzQWxsb3dMaXN0KCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuX2FsbG93RGV2RGVwcyk7XG4gIH1cbn1cbiJdfQ==
@@ -1,62 +0,0 @@
1
- "use strict";
2
- var _a;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.GitAttributesFile = void 0;
5
- const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
- const file_1 = require("../file");
7
- /**
8
- * (experimental) Assign attributes to file names in a git repository.
9
- *
10
- * @see https://git-scm.com/docs/gitattributes
11
- * @experimental
12
- */
13
- class GitAttributesFile extends file_1.FileBase {
14
- /**
15
- * @experimental
16
- */
17
- constructor(project) {
18
- super(project, '.gitattributes', {
19
- editGitignore: false,
20
- });
21
- this.attributes = new Map();
22
- }
23
- /**
24
- * (experimental) Maps a set of attributes to a set of files.
25
- *
26
- * @param glob Glob pattern to match files in the repo.
27
- * @param attributes Attributes to assign to these files.
28
- * @experimental
29
- */
30
- addAttributes(glob, ...attributes) {
31
- if (!this.attributes.has(glob)) {
32
- this.attributes.set(glob, new Set());
33
- }
34
- const set = this.attributes.get(glob);
35
- for (const attribute of attributes) {
36
- set.add(attribute);
37
- }
38
- }
39
- /**
40
- * (experimental) Implemented by derived classes and returns the contents of the file to emit.
41
- *
42
- * @experimental
43
- */
44
- synthesizeContent(_) {
45
- // We can assume the file map is never empty.
46
- const entries = Array.from(this.attributes.entries())
47
- .sort(([l], [r]) => l.localeCompare(r));
48
- if (entries.length === 0) {
49
- return undefined;
50
- }
51
- const maxLen = Math.max(...entries.map(([glob]) => glob.length));
52
- return [
53
- `# ${file_1.FileBase.PROJEN_MARKER}`,
54
- '',
55
- ...entries.map(([name, attributes]) => `${name.padEnd(maxLen, ' ')}\t${Array.from(attributes).join(' ')}`),
56
- ].join('\n');
57
- }
58
- }
59
- exports.GitAttributesFile = GitAttributesFile;
60
- _a = JSII_RTTI_SYMBOL_1;
61
- GitAttributesFile[_a] = { fqn: "projen.git.GitAttributesFile", version: "0.36.8" };
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0YXR0cmlidXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9naXQvZ2l0YXR0cmlidXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGtDQUE4Qzs7Ozs7OztBQUk5QyxNQUFhLGlCQUFrQixTQUFRLGVBQVE7Ozs7SUFHN0MsWUFBbUIsT0FBZ0I7UUFDakMsS0FBSyxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRTtZQUMvQixhQUFhLEVBQUUsS0FBSztTQUNyQixDQUFDLENBQUM7UUFMWSxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUM7SUFNN0QsQ0FBQzs7Ozs7Ozs7SUFHTSxhQUFhLENBQUMsSUFBWSxFQUFFLEdBQUcsVUFBb0I7UUFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7U0FDdEM7UUFDRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUUsQ0FBQztRQUN2QyxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRTtZQUNsQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQzs7Ozs7O0lBRVMsaUJBQWlCLENBQUMsQ0FBWTtRQUN0Qyw2Q0FBNkM7UUFDN0MsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2xELElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTFDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDeEIsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLE9BQU87WUFDTCxLQUFLLGVBQVEsQ0FBQyxhQUFhLEVBQUU7WUFDN0IsRUFBRTtZQUNGLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7U0FDM0csQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZixDQUFDOztBQW5DSCw4Q0FvQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUmVzb2x2ZXIsIEZpbGVCYXNlIH0gZnJvbSAnLi4vZmlsZSc7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vcHJvamVjdCc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgR2l0QXR0cmlidXRlc0ZpbGUgZXh0ZW5kcyBGaWxlQmFzZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXR0cmlidXRlcyA9IG5ldyBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4oKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCkge1xuICAgIHN1cGVyKHByb2plY3QsICcuZ2l0YXR0cmlidXRlcycsIHtcbiAgICAgIGVkaXRHaXRpZ25vcmU6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgYWRkQXR0cmlidXRlcyhnbG9iOiBzdHJpbmcsIC4uLmF0dHJpYnV0ZXM6IHN0cmluZ1tdKSB7XG4gICAgaWYgKCF0aGlzLmF0dHJpYnV0ZXMuaGFzKGdsb2IpKSB7XG4gICAgICB0aGlzLmF0dHJpYnV0ZXMuc2V0KGdsb2IsIG5ldyBTZXQoKSk7XG4gICAgfVxuICAgIGNvbnN0IHNldCA9IHRoaXMuYXR0cmlidXRlcy5nZXQoZ2xvYikhO1xuICAgIGZvciAoY29uc3QgYXR0cmlidXRlIG9mIGF0dHJpYnV0ZXMpIHtcbiAgICAgIHNldC5hZGQoYXR0cmlidXRlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUNvbnRlbnQoXzogSVJlc29sdmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBXZSBjYW4gYXNzdW1lIHRoZSBmaWxlIG1hcCBpcyBuZXZlciBlbXB0eS5cbiAgICBjb25zdCBlbnRyaWVzID0gQXJyYXkuZnJvbSh0aGlzLmF0dHJpYnV0ZXMuZW50cmllcygpKVxuICAgICAgLnNvcnQoKFtsXSwgW3JdKSA9PiBsLmxvY2FsZUNvbXBhcmUocikpO1xuXG4gICAgaWYgKGVudHJpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IG1heExlbiA9IE1hdGgubWF4KC4uLmVudHJpZXMubWFwKChbZ2xvYl0pID0+IGdsb2IubGVuZ3RoKSk7XG4gICAgcmV0dXJuIFtcbiAgICAgIGAjICR7RmlsZUJhc2UuUFJPSkVOX01BUktFUn1gLFxuICAgICAgJycsXG4gICAgICAuLi5lbnRyaWVzLm1hcCgoW25hbWUsIGF0dHJpYnV0ZXNdKSA9PiBgJHtuYW1lLnBhZEVuZChtYXhMZW4sICcgJyl9XFx0JHtBcnJheS5mcm9tKGF0dHJpYnV0ZXMpLmpvaW4oJyAnKX1gKSxcbiAgICBdLmpvaW4oJ1xcbicpO1xuICB9XG59XG4iXX0=
@@ -1 +0,0 @@
1
- export * from './gitattributes';
@@ -1,10 +0,0 @@
1
- import { JsiiProject } from './jsii-project';
2
- /**
3
- * Creates an API.md file based on the jsii manifest:
4
- * - Adds a `docgen` script to package.json
5
- * - Runs `jsii-docgen` after compilation
6
- * - Enforces that API.md is checked in
7
- */
8
- export declare class JsiiDocgen {
9
- constructor(project: JsiiProject);
10
- }
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.JsiiDocgen = void 0;
4
- /**
5
- * Creates an API.md file based on the jsii manifest:
6
- * - Adds a `docgen` script to package.json
7
- * - Runs `jsii-docgen` after compilation
8
- * - Enforces that API.md is checked in
9
- */
10
- class JsiiDocgen {
11
- constructor(project) {
12
- project.addDevDeps('jsii-docgen');
13
- const docgen = project.addTask('docgen', {
14
- description: 'Generate API.md from .jsii manifest',
15
- exec: 'jsii-docgen',
16
- });
17
- // spawn docgen after compilation (requires the .jsii manifest).
18
- project.postCompileTask.spawn(docgen);
19
- project.gitignore.include('/API.md');
20
- }
21
- }
22
- exports.JsiiDocgen = JsiiDocgen;
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1kb2NnZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvanNpaS1kb2NnZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUE7Ozs7O0dBS0c7QUFDSCxNQUFhLFVBQVU7SUFDckIsWUFBWSxPQUFvQjtRQUM5QixPQUFPLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWxDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3ZDLFdBQVcsRUFBRSxxQ0FBcUM7WUFDbEQsSUFBSSxFQUFFLGFBQWE7U0FDcEIsQ0FBQyxDQUFDO1FBRUgsZ0VBQWdFO1FBQ2hFLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQWJELGdDQWFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSnNpaVByb2plY3QgfSBmcm9tICcuL2pzaWktcHJvamVjdCc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBBUEkubWQgZmlsZSBiYXNlZCBvbiB0aGUganNpaSBtYW5pZmVzdDpcbiAqIC0gQWRkcyBhIGBkb2NnZW5gIHNjcmlwdCB0byBwYWNrYWdlLmpzb25cbiAqIC0gUnVucyBganNpaS1kb2NnZW5gIGFmdGVyIGNvbXBpbGF0aW9uXG4gKiAtIEVuZm9yY2VzIHRoYXQgQVBJLm1kIGlzIGNoZWNrZWQgaW5cbiAqL1xuZXhwb3J0IGNsYXNzIEpzaWlEb2NnZW4ge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBKc2lpUHJvamVjdCkge1xuICAgIHByb2plY3QuYWRkRGV2RGVwcygnanNpaS1kb2NnZW4nKTtcblxuICAgIGNvbnN0IGRvY2dlbiA9IHByb2plY3QuYWRkVGFzaygnZG9jZ2VuJywge1xuICAgICAgZGVzY3JpcHRpb246ICdHZW5lcmF0ZSBBUEkubWQgZnJvbSAuanNpaSBtYW5pZmVzdCcsXG4gICAgICBleGVjOiAnanNpaS1kb2NnZW4nLFxuICAgIH0pO1xuXG4gICAgLy8gc3Bhd24gZG9jZ2VuIGFmdGVyIGNvbXBpbGF0aW9uIChyZXF1aXJlcyB0aGUgLmpzaWkgbWFuaWZlc3QpLlxuICAgIHByb2plY3QucG9zdENvbXBpbGVUYXNrLnNwYXduKGRvY2dlbik7XG4gICAgcHJvamVjdC5naXRpZ25vcmUuaW5jbHVkZSgnL0FQSS5tZCcpO1xuICB9XG59Il19