@codedrifters/configulator 0.0.0 → 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +761 -1
  3. package/lib/aws/aws-deployment-config.d.ts +45 -108
  4. package/lib/aws/aws-deployment-config.js +69 -100
  5. package/lib/aws/aws-deployment-target.d.ts +210 -0
  6. package/lib/aws/aws-deployment-target.js +202 -0
  7. package/lib/aws/index.d.ts +1 -1
  8. package/lib/aws/index.js +2 -2
  9. package/lib/index.d.ts +9 -0
  10. package/lib/index.js +26 -0
  11. package/lib/jsii/index.d.ts +1 -0
  12. package/lib/jsii/index.js +18 -0
  13. package/lib/jsii/jsii-faker.d.ts +47 -0
  14. package/lib/jsii/jsii-faker.js +103 -0
  15. package/lib/pnpm/pnpm-workspace.d.ts +240 -1
  16. package/lib/pnpm/pnpm-workspace.js +155 -15
  17. package/lib/projects/index.d.ts +2 -0
  18. package/lib/projects/index.js +19 -0
  19. package/lib/projects/monorepo-project.d.ts +50 -0
  20. package/lib/projects/monorepo-project.js +203 -0
  21. package/lib/projects/typescript-project.d.ts +4 -0
  22. package/lib/projects/typescript-project.js +150 -0
  23. package/lib/turbo/turbo-repo.d.ts +116 -9
  24. package/lib/turbo/turbo-repo.js +107 -20
  25. package/lib/versions.d.ts +19 -7
  26. package/lib/versions.js +20 -8
  27. package/lib/vscode/vscode.js +2 -1
  28. package/lib/workflows/aws-deploy-workflow.d.ts +84 -0
  29. package/lib/workflows/aws-deploy-workflow.js +312 -0
  30. package/lib/workflows/index.d.ts +1 -2
  31. package/lib/workflows/index.js +2 -3
  32. package/package.json +21 -20
  33. package/lib/workflows/build-workflow.d.ts +0 -13
  34. package/lib/workflows/build-workflow.js +0 -64
  35. package/lib/workflows/deploy-workflow.d.ts +0 -17
  36. package/lib/workflows/deploy-workflow.js +0 -113
  37. package/lib/workflows/steps/deploy.d.ts +0 -4
  38. package/lib/workflows/steps/deploy.js +0 -62
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.JsiiFaker = void 0;
37
+ const spec = __importStar(require("@jsii/spec"));
38
+ const projen_1 = require("projen");
39
+ /**
40
+ * The FQNs for the base classes and options used by Jsii.
41
+ *
42
+ * These are the defaults used by Projen's TypeScriptProject.
43
+ */
44
+ const ProjenBaseFqn = {
45
+ TYPESCRIPT_PROJECT: "projen.typescript.TypeScriptProject",
46
+ TYPESCRIPT_PROJECT_OPTIONS: "projen.typescript.TypeScriptProjectOptions",
47
+ };
48
+ class JsiiFaker extends projen_1.Component {
49
+ // find project singleton
50
+ static of(project) {
51
+ const isDefined = (c) => c instanceof JsiiFaker;
52
+ return project.components.find(isDefined);
53
+ }
54
+ constructor(project) {
55
+ super(project);
56
+ this.project = project;
57
+ this._types = {};
58
+ this.toJSON = () => {
59
+ return {
60
+ types: this._types,
61
+ };
62
+ };
63
+ /**
64
+ * In JSII, the assembly name is essentially the package name. It's used as a
65
+ * scope when targeting types and metadata in other "jsii assemblies" that
66
+ * might be in sub-packages used by the project.
67
+ *
68
+ * For this case, we'll just use the package name from Projen.
69
+ */
70
+ this._assemblyName = this.project.package.packageName;
71
+ new projen_1.JsonFile(project, ".jsii", {
72
+ obj: () => {
73
+ return {
74
+ name: this._assemblyName,
75
+ types: this._types,
76
+ };
77
+ },
78
+ });
79
+ }
80
+ addClassType(options) {
81
+ const fqn = [this._assemblyName, options.name].join(".");
82
+ const type = {
83
+ assembly: this._assemblyName,
84
+ base: options.baseFqn ?? ProjenBaseFqn.TYPESCRIPT_PROJECT,
85
+ fqn,
86
+ kind: spec.TypeKind.Class,
87
+ name: options.name,
88
+ initializer: {
89
+ parameters: [
90
+ {
91
+ name: "options",
92
+ type: {
93
+ fqn: options.optionsFqn ?? ProjenBaseFqn.TYPESCRIPT_PROJECT_OPTIONS,
94
+ },
95
+ },
96
+ ],
97
+ },
98
+ };
99
+ this._types[fqn] = type;
100
+ }
101
+ }
102
+ exports.JsiiFaker = JsiiFaker;
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1mYWtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qc2lpL2pzaWktZmFrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQW1DO0FBQ25DLG1DQUE2QztBQUk3Qzs7OztHQUlHO0FBQ0gsTUFBTSxhQUFhLEdBQUc7SUFDcEIsa0JBQWtCLEVBQUUscUNBQXFDO0lBQ3pELDBCQUEwQixFQUFFLDRDQUE0QztDQUNoRSxDQUFDO0FBeUJYLE1BQWEsU0FBVSxTQUFRLGtCQUFTO0lBQ3RDLHlCQUF5QjtJQUNsQixNQUFNLENBQUMsRUFBRSxDQUFDLE9BQTBCO1FBQ3pDLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBWSxFQUFrQixFQUFFLENBQUMsQ0FBQyxZQUFZLFNBQVMsQ0FBQztRQUMzRSxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFLRCxZQUE0QixPQUEwQjtRQUNwRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFEVyxZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQUY5QyxXQUFNLEdBQWtDLEVBQUUsQ0FBQztRQXdCNUMsV0FBTSxHQUFHLEdBQUcsRUFBRTtZQUNuQixPQUFPO2dCQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTTthQUNuQixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBdkJBOzs7Ozs7V0FNRztRQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBRXRELElBQUksaUJBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFO1lBQzdCLEdBQUcsRUFBRSxHQUFHLEVBQUU7Z0JBQ1IsT0FBTztvQkFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWE7b0JBQ3hCLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTTtpQkFDbkIsQ0FBQztZQUNKLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBUU0sWUFBWSxDQUFDLE9BQXlCO1FBQzNDLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sSUFBSSxHQUFtQjtZQUMzQixRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDNUIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxPQUFPLElBQUksYUFBYSxDQUFDLGtCQUFrQjtZQUN6RCxHQUFHO1lBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSztZQUN6QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7WUFDbEIsV0FBVyxFQUFFO2dCQUNYLFVBQVUsRUFBRTtvQkFDVjt3QkFDRSxJQUFJLEVBQUUsU0FBUzt3QkFDZixJQUFJLEVBQUU7NEJBQ0osR0FBRyxFQUNELE9BQU8sQ0FBQyxVQUFVLElBQUksYUFBYSxDQUFDLDBCQUEwQjt5QkFDakU7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0NBQ0Y7QUE3REQsOEJBNkRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgc3BlYyBmcm9tIFwiQGpzaWkvc3BlY1wiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBKc29uRmlsZSB9IGZyb20gXCJwcm9qZW5cIjtcbmltcG9ydCB7IFR5cGVTY3JpcHRQcm9qZWN0IH0gZnJvbSBcInByb2plbi9saWIvdHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgVmFsdWVPZiB9IGZyb20gXCJ0eXBlLWZlc3RcIjtcblxuLyoqXG4gKiBUaGUgRlFOcyBmb3IgdGhlIGJhc2UgY2xhc3NlcyBhbmQgb3B0aW9ucyB1c2VkIGJ5IEpzaWkuXG4gKlxuICogVGhlc2UgYXJlIHRoZSBkZWZhdWx0cyB1c2VkIGJ5IFByb2plbidzIFR5cGVTY3JpcHRQcm9qZWN0LlxuICovXG5jb25zdCBQcm9qZW5CYXNlRnFuID0ge1xuICBUWVBFU0NSSVBUX1BST0pFQ1Q6IFwicHJvamVuLnR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3RcIixcbiAgVFlQRVNDUklQVF9QUk9KRUNUX09QVElPTlM6IFwicHJvamVuLnR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3RPcHRpb25zXCIsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgaW50ZXJmYWNlIENsYXNzVHlwZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNsYXNzLlxuICAgKlxuICAgKiBAZXhhbXBsZSBcIk15UHJvamVjdFwiXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBGUU4gZm9yIHRoZSBiYXNlIGNsYXNzIHRoaXMgY2xhc3MgaXMgZXh0ZW5kaW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCBQcm9qZW5CYXNlRnFuLlRZUEVTQ1JJUFRfUFJPSkVDVFxuICAgKi9cbiAgYmFzZUZxbj86IFZhbHVlT2Y8dHlwZW9mIFByb2plbkJhc2VGcW4+IHwgc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgRlFOIGZvciB0aGUgb3B0aW9ucyBmb3IgdGhpcyBjbGFzcy5cbiAgICpcbiAgICogQGRlZmF1bHQgUHJvamVuQmFzZUZxbi5UWVBFU0NSSVBUX1BST0pFQ1RfT1BUSU9OU1xuICAgKi9cbiAgb3B0aW9uc0Zxbj86IFZhbHVlT2Y8dHlwZW9mIFByb2plbkJhc2VGcW4+IHwgc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgSnNpaUZha2VyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLy8gZmluZCBwcm9qZWN0IHNpbmdsZXRvblxuICBwdWJsaWMgc3RhdGljIG9mKHByb2plY3Q6IFR5cGVTY3JpcHRQcm9qZWN0KTogSnNpaUZha2VyIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBpc0RlZmluZWQgPSAoYzogQ29tcG9uZW50KTogYyBpcyBKc2lpRmFrZXIgPT4gYyBpbnN0YW5jZW9mIEpzaWlGYWtlcjtcbiAgICByZXR1cm4gcHJvamVjdC5jb21wb25lbnRzLmZpbmQoaXNEZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Fzc2VtYmx5TmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF90eXBlczogeyBbbmFtZTogc3RyaW5nXTogc3BlYy5UeXBlIH0gPSB7fTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogVHlwZVNjcmlwdFByb2plY3QpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIC8qKlxuICAgICAqIEluIEpTSUksIHRoZSBhc3NlbWJseSBuYW1lIGlzIGVzc2VudGlhbGx5IHRoZSBwYWNrYWdlIG5hbWUuIEl0J3MgdXNlZCBhcyBhXG4gICAgICogc2NvcGUgd2hlbiB0YXJnZXRpbmcgdHlwZXMgYW5kIG1ldGFkYXRhIGluIG90aGVyIFwianNpaSBhc3NlbWJsaWVzXCIgdGhhdFxuICAgICAqIG1pZ2h0IGJlIGluIHN1Yi1wYWNrYWdlcyB1c2VkIGJ5IHRoZSBwcm9qZWN0LlxuICAgICAqXG4gICAgICogRm9yIHRoaXMgY2FzZSwgd2UnbGwganVzdCB1c2UgdGhlIHBhY2thZ2UgbmFtZSBmcm9tIFByb2plbi5cbiAgICAgKi9cbiAgICB0aGlzLl9hc3NlbWJseU5hbWUgPSB0aGlzLnByb2plY3QucGFja2FnZS5wYWNrYWdlTmFtZTtcblxuICAgIG5ldyBKc29uRmlsZShwcm9qZWN0LCBcIi5qc2lpXCIsIHtcbiAgICAgIG9iajogKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IHRoaXMuX2Fzc2VtYmx5TmFtZSxcbiAgICAgICAgICB0eXBlczogdGhpcy5fdHlwZXMsXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHRvSlNPTiA9ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZXM6IHRoaXMuX3R5cGVzLFxuICAgIH07XG4gIH07XG5cbiAgcHVibGljIGFkZENsYXNzVHlwZShvcHRpb25zOiBDbGFzc1R5cGVPcHRpb25zKSB7XG4gICAgY29uc3QgZnFuID0gW3RoaXMuX2Fzc2VtYmx5TmFtZSwgb3B0aW9ucy5uYW1lXS5qb2luKFwiLlwiKTtcbiAgICBjb25zdCB0eXBlOiBzcGVjLkNsYXNzVHlwZSA9IHtcbiAgICAgIGFzc2VtYmx5OiB0aGlzLl9hc3NlbWJseU5hbWUsXG4gICAgICBiYXNlOiBvcHRpb25zLmJhc2VGcW4gPz8gUHJvamVuQmFzZUZxbi5UWVBFU0NSSVBUX1BST0pFQ1QsXG4gICAgICBmcW4sXG4gICAgICBraW5kOiBzcGVjLlR5cGVLaW5kLkNsYXNzLFxuICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgaW5pdGlhbGl6ZXI6IHtcbiAgICAgICAgcGFyYW1ldGVyczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwib3B0aW9uc1wiLFxuICAgICAgICAgICAgdHlwZToge1xuICAgICAgICAgICAgICBmcW46XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5vcHRpb25zRnFuID8/IFByb2plbkJhc2VGcW4uVFlQRVNDUklQVF9QUk9KRUNUX09QVElPTlMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICB0aGlzLl90eXBlc1tmcW5dID0gdHlwZTtcbiAgfVxufVxuIl19
@@ -1,5 +1,244 @@
1
1
  import { Component, Project } from "projen";
2
+ import { ValueOf } from "type-fest";
3
+ /**
4
+ * Predefined minimum release age values in minutes.
5
+ */
6
+ export declare const MIMIMUM_RELEASE_AGE: {
7
+ ZERO_DAYS: number;
8
+ ONE_HOUR: number;
9
+ SIX_HOURS: number;
10
+ TWELVE_HOURS: number;
11
+ ONE_DAY: number;
12
+ TWO_DAYS: number;
13
+ THREE_DAYS: number;
14
+ FOUR_DAYS: number;
15
+ FIVE_DAYS: number;
16
+ SIX_DAYS: number;
17
+ ONE_WEEK: number;
18
+ };
19
+ export interface PnpmWorkspaceOptions {
20
+ /**
21
+ * Filename for the pnpm workspace file. This should probably never change.
22
+ *
23
+ * @default "pnpm-workspace.yaml"
24
+ */
25
+ readonly fileName?: string;
26
+ /**
27
+ * To reduce the risk of installing compromised packages, you can delay the
28
+ * installation of newly published versions. In most cases, malicious releases
29
+ * are discovered and removed from the registry within an hour.
30
+ *
31
+ * minimumReleaseAge defines the minimum number of minutes that must pass
32
+ * after a version is published before pnpm will install it. This applies to
33
+ * all dependencies, including transitive ones.
34
+ *
35
+ * Note: this should match depsUpgradeOptions.cooldown in the project config.
36
+ *
37
+ * See: https://pnpm.io/settings#minimumreleaseage
38
+ *
39
+ * @default MIMIMUM_RELEASE_AGE.ONE_DAY
40
+ */
41
+ readonly minimumReleaseAge?: ValueOf<typeof MIMIMUM_RELEASE_AGE>;
42
+ /**
43
+ * If you set minimumReleaseAge but need certain dependencies to always
44
+ * install the newest version immediately, you can list them under
45
+ * minimumReleaseAgeExclude. The exclusion works by package name and applies
46
+ * to all versions of that package.
47
+ *
48
+ * @default - no exclusions (empty array)
49
+ *
50
+ * See: https://pnpm.io/settings#minimumreleaseageexclude
51
+ */
52
+ readonly minimumReleaseAgeExclude?: Array<string>;
53
+ /**
54
+ * A list of package names that are allowed to execute "preinstall",
55
+ * "install", and/or "postinstall" scripts during installation. Only the
56
+ * packages listed in this array will be able to run those lifecycle scripts.
57
+ * If onlyBuiltDependenciesFile and neverBuiltDependencies are omitted, this
58
+ * configuration option will default to blocking all install scripts.
59
+ *
60
+ * You may restrict allowances to specific versions (and lists of versions
61
+ * using a disjunction with ||). When versions are specified, only those
62
+ * versions of the package may run lifecycle scripts:
63
+ *
64
+ * See: https://pnpm.io/settings#onlybuiltdependencies
65
+ *
66
+ * @default none (empty array)
67
+ */
68
+ readonly onlyBuiltDependencies?: Array<string>;
69
+ /**
70
+ * A list of package names that are NOT allowed to execute "preinstall",
71
+ * "install", and/or "postinstall" scripts during installation and will not
72
+ * warn or ask to be executed.
73
+ *
74
+ * This is useful when you want to hide the warning because you know the
75
+ * lifecycle scripts are not needed.
76
+ *
77
+ * https://pnpm.io/settings#ignoredbuiltdependencies
78
+ *
79
+ * @default none (empty array)
80
+ */
81
+ readonly ignoredBuiltDependencies?: Array<string>;
82
+ /**
83
+ * Additional subproject paths to include in the workspace packages array.
84
+ * These will be combined with any subprojects discovered via projen's
85
+ * project.subprojects property. Paths should be relative to the project root.
86
+ *
87
+ * @default none (empty array)
88
+ */
89
+ readonly subprojects?: Array<string>;
90
+ /**
91
+ * Catalog of reusable dependency version ranges.
92
+ *
93
+ * The catalog allows you to define dependency versions as reusable constants
94
+ * that can be referenced in package.json files using the catalog: protocol.
95
+ *
96
+ * Example:
97
+ * ```yaml
98
+ * catalog:
99
+ * react: ^18.0.0
100
+ * typescript: ^5.0.0
101
+ * ```
102
+ *
103
+ * Then in package.json:
104
+ * ```json
105
+ * {
106
+ * "dependencies": {
107
+ * "react": "catalog:react"
108
+ * }
109
+ * }
110
+ * ```
111
+ *
112
+ * @default undefined (not included in output)
113
+ *
114
+ * See: https://pnpm.io/pnpm-workspace_yaml#catalog
115
+ */
116
+ readonly defaultCatalog?: {
117
+ [key: string]: string;
118
+ };
119
+ /**
120
+ * Named catalogs of reusable dependency version ranges.
121
+ *
122
+ * Multiple named catalogs with arbitrarily chosen names can be configured under the namedCatalogs key.
123
+ *
124
+ * Example:
125
+ * ```yaml
126
+ * namedCatalogs:
127
+ * frontend:
128
+ * react: ^18.0.0
129
+ * typescript: ^5.0.0
130
+ * backend:
131
+ * express: ^4.18.0
132
+ * ```
133
+ *
134
+ * Then in package.json:
135
+ * ```json
136
+ * {
137
+ * "dependencies": {
138
+ * "react": "catalog:frontend/react"
139
+ * }
140
+ * }
141
+ * ```
142
+ *
143
+ * @default undefined (not included in output)
144
+ *
145
+ * See: https://pnpm.io/catalogs
146
+ */
147
+ readonly namedCatalogs?: {
148
+ [catalogName: string]: {
149
+ [dependencyName: string]: string;
150
+ };
151
+ };
152
+ }
2
153
  export declare class PnpmWorkspace extends Component {
154
+ /**
155
+ * Get the pnpm workspace component of a project. If it does not exist,
156
+ * return undefined.
157
+ *
158
+ * @param project
159
+ * @returns
160
+ */
3
161
  static of(project: Project): PnpmWorkspace | undefined;
4
- constructor(project: Project);
162
+ /**
163
+ * Filename for the pnpm workspace file.
164
+ */
165
+ readonly fileName: string;
166
+ /**
167
+ * To reduce the risk of installing compromised packages, you can delay the
168
+ * installation of newly published versions. In most cases, malicious releases
169
+ * are discovered and removed from the registry within an hour.
170
+ *
171
+ * minimumReleaseAge defines the minimum number of minutes that must pass
172
+ * after a version is published before pnpm will install it. This applies to
173
+ * all dependencies, including transitive ones.
174
+ *
175
+ * Note: this should match depsUpgradeOptions.cooldown in the project config.
176
+ *
177
+ * See: https://pnpm.io/settings#minimumreleaseage
178
+ */
179
+ minimumReleaseAge: ValueOf<typeof MIMIMUM_RELEASE_AGE>;
180
+ /**
181
+ * If you set minimumReleaseAge but need certain dependencies to always
182
+ * install the newest version immediately, you can list them under
183
+ * minimumReleaseAgeExclude. The exclusion works by package name and applies
184
+ * to all versions of that package.
185
+ *
186
+ * See: https://pnpm.io/settings#minimumreleaseageexclude
187
+ */
188
+ minimumReleaseAgeExclude: Array<string>;
189
+ /**
190
+ * A list of package names that are allowed to execute "preinstall",
191
+ * "install", and/or "postinstall" scripts during installation. Only the
192
+ * packages listed in this array will be able to run those lifecycle scripts.
193
+ * If onlyBuiltDependenciesFile and neverBuiltDependencies are omitted, this
194
+ * configuration option will default to blocking all install scripts.
195
+ *
196
+ * You may restrict allowances to specific versions (and lists of versions
197
+ * using a disjunction with ||). When versions are specified, only those
198
+ * versions of the package may run lifecycle scripts:
199
+ *
200
+ * See: https://pnpm.io/settings#onlybuiltdependencies
201
+ */
202
+ onlyBuiltDependencies: Array<string>;
203
+ /**
204
+ * A list of package names that are NOT allowed to execute "preinstall",
205
+ * "install", and/or "postinstall" scripts during installation and will not
206
+ * warn or ask to be executed.
207
+ *
208
+ * This is useful when you want to hide the warning because you know the
209
+ * lifecycle scripts are not needed.
210
+ *
211
+ * https://pnpm.io/settings#ignoredbuiltdependencies
212
+ */
213
+ ignoredBuiltDependencies: Array<string>;
214
+ /**
215
+ * Additional subproject paths to include in the workspace packages array.
216
+ * These will be combined with any subprojects discovered via projen's
217
+ * project.subprojects property.
218
+ */
219
+ subprojects: Array<string>;
220
+ /**
221
+ * Default catalog of reusable dependency version ranges.
222
+ *
223
+ * The default catalog is used to define dependency versions as reusable constants
224
+ * that can be referenced in package.json files using the catalog: protocol.
225
+ *
226
+ * See:https://pnpm.io/catalogs
227
+ */
228
+ defaultCatalog?: {
229
+ [key: string]: string;
230
+ };
231
+ /**
232
+ * Named catalogs of reusable dependency version ranges.
233
+ *
234
+ * Multiple named catalogs with arbitrarily chosen names can be configured under the namedCatalogs key.
235
+ *
236
+ * See: https://pnpm.io/catalogs
237
+ */
238
+ namedCatalogs?: {
239
+ [catalogName: string]: {
240
+ [dependencyName: string]: string;
241
+ };
242
+ };
243
+ constructor(project: Project, options?: PnpmWorkspaceOptions);
5
244
  }
@@ -1,36 +1,176 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PnpmWorkspace = void 0;
3
+ exports.PnpmWorkspace = exports.MIMIMUM_RELEASE_AGE = void 0;
4
4
  const path_1 = require("path");
5
5
  const projen_1 = require("projen");
6
+ /**
7
+ * Predefined minimum release age values in minutes.
8
+ */
9
+ exports.MIMIMUM_RELEASE_AGE = {
10
+ ZERO_DAYS: 0,
11
+ ONE_HOUR: 60,
12
+ SIX_HOURS: 360,
13
+ TWELVE_HOURS: 720,
14
+ ONE_DAY: 1440,
15
+ TWO_DAYS: 2880,
16
+ THREE_DAYS: 4320,
17
+ FOUR_DAYS: 5760,
18
+ FIVE_DAYS: 7200,
19
+ SIX_DAYS: 8640,
20
+ ONE_WEEK: 10080,
21
+ };
6
22
  class PnpmWorkspace extends projen_1.Component {
23
+ /**
24
+ * Get the pnpm workspace component of a project. If it does not exist,
25
+ * return undefined.
26
+ *
27
+ * @param project
28
+ * @returns
29
+ */
7
30
  static of(project) {
8
31
  const isDefined = (c) => c instanceof PnpmWorkspace;
9
32
  return project.root.components.find(isDefined);
10
33
  }
11
- constructor(project) {
34
+ constructor(project, options = {}) {
12
35
  super(project);
13
- const fileName = "pnpm-workspace.yaml";
36
+ /***************************************************************************
37
+ *
38
+ * CLEAR package,json
39
+ *
40
+ * It appears that if ANY pnpm settings exist in the package.json file, all
41
+ * of the setting in the pnpm-workspace.yaml file are ignored. so we need to
42
+ * clear out anything that was placed into the package.json file.
43
+ *
44
+ **************************************************************************/
45
+ project.tryFindObjectFile("package.json")?.addDeletionOverride("pnpm");
46
+ /***************************************************************************
47
+ *
48
+ * Setup pnpm-workspace.yaml file.
49
+ *
50
+ * Now that the package.json file is cleared of any pnpm settings, we can
51
+ * safely write settings to the pnpm-workspace.yaml file.
52
+ *
53
+ **************************************************************************
54
+
55
+ /**
56
+ * Set filename to default if not provided.
57
+ */
58
+ this.fileName = options.fileName ?? "pnpm-workspace.yaml";
59
+ /**
60
+ * Set minimum release age to default if not provided
61
+ */
62
+ this.minimumReleaseAge = options.minimumReleaseAge
63
+ ? options.minimumReleaseAge
64
+ : exports.MIMIMUM_RELEASE_AGE.ONE_DAY;
65
+ /**
66
+ * Set minimum release age exclude to empty array if not provided
67
+ */
68
+ this.minimumReleaseAgeExclude = options.minimumReleaseAgeExclude
69
+ ? ["@codedrifters/*", ...options.minimumReleaseAgeExclude]
70
+ : ["@codedrifters/*"];
71
+ /**
72
+ * Set only built dependencies to empty array if not provided
73
+ */
74
+ this.onlyBuiltDependencies = options.onlyBuiltDependencies
75
+ ? options.onlyBuiltDependencies
76
+ : [];
77
+ /**
78
+ * Set ignored built dependencies to empty array if not provided
79
+ */
80
+ this.ignoredBuiltDependencies = options.ignoredBuiltDependencies
81
+ ? options.ignoredBuiltDependencies
82
+ : [];
83
+ /**
84
+ * Store additional subproject paths if provided
85
+ */
86
+ this.subprojects = options.subprojects ?? [];
87
+ /**
88
+ * Store catalog if provided
89
+ */
90
+ this.defaultCatalog = options.defaultCatalog;
91
+ /**
92
+ * Store named catalogs if provided
93
+ */
94
+ this.namedCatalogs = options.namedCatalogs;
14
95
  /**
15
96
  * In case that this file is in a package, don't package it.
16
97
  */
17
- project.addPackageIgnore(fileName);
98
+ project.addPackageIgnore(this.fileName);
18
99
  /**
19
100
  * Write pnpm workspace file
20
101
  */
21
- new projen_1.YamlFile(this.project, fileName, {
22
- obj: {
23
- packages: () => {
24
- const packages = new Array();
25
- for (const subproject of project.subprojects) {
26
- // grab the relative out directory
27
- packages.push((0, path_1.relative)(this.project.outdir, subproject.outdir));
28
- }
29
- return packages;
30
- },
102
+ new projen_1.YamlFile(this.project, this.fileName, {
103
+ obj: () => {
104
+ const pnpmConfig = {};
105
+ const packages = new Array();
106
+ /**
107
+ * Add projen subprojects to the packages array.
108
+ */
109
+ for (const subproject of project.subprojects) {
110
+ // grab the relative out directory
111
+ packages.push((0, path_1.relative)(this.project.outdir, subproject.outdir));
112
+ }
113
+ /**
114
+ * Add additional subproject paths provided via options.
115
+ * Use a Set to deduplicate paths to avoid including the same
116
+ * subproject multiple times.
117
+ */
118
+ const packageSet = new Set(packages);
119
+ for (const subprojectPath of this.subprojects) {
120
+ packageSet.add(subprojectPath);
121
+ }
122
+ /**
123
+ * Convert back to array if we added any additional paths
124
+ */
125
+ if (this.subprojects.length > 0) {
126
+ packages.length = 0;
127
+ packages.push(...packageSet);
128
+ }
129
+ /**
130
+ * Set minimum release age.
131
+ */
132
+ pnpmConfig.minimumReleaseAge = this.minimumReleaseAge;
133
+ /**
134
+ * Set minimum release age exclude if any are provided.
135
+ */
136
+ if (this.minimumReleaseAgeExclude.length > 0) {
137
+ pnpmConfig.minimumReleaseAgeExclude = this.minimumReleaseAgeExclude;
138
+ }
139
+ /**
140
+ * Set only built dependencies if any are provided.
141
+ */
142
+ if (this.onlyBuiltDependencies.length > 0) {
143
+ pnpmConfig.onlyBuiltDependencies = this.onlyBuiltDependencies;
144
+ }
145
+ /**
146
+ * Set ignored built dependencies if any are provided.
147
+ */
148
+ if (this.ignoredBuiltDependencies.length > 0) {
149
+ pnpmConfig.ignoreBuiltDependencies = this.ignoredBuiltDependencies;
150
+ }
151
+ /**
152
+ * Set default catalog if provided.
153
+ */
154
+ if (this.defaultCatalog &&
155
+ Object.keys(this.defaultCatalog).length > 0) {
156
+ pnpmConfig.catalog = this.defaultCatalog;
157
+ }
158
+ /**
159
+ * Set named catalogs if provided.
160
+ */
161
+ if (this.namedCatalogs && Object.keys(this.namedCatalogs).length > 0) {
162
+ pnpmConfig.namedCatalogs = this.namedCatalogs;
163
+ }
164
+ /**
165
+ * Return the final pnpm config object.
166
+ */
167
+ return {
168
+ ...(packages.length > 0 ? { packages } : {}),
169
+ ...(pnpmConfig ? { ...pnpmConfig } : {}),
170
+ };
31
171
  },
32
172
  });
33
173
  }
34
174
  }
35
175
  exports.PnpmWorkspace = PnpmWorkspace;
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG5wbS13b3Jrc3BhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcG5wbS9wbnBtLXdvcmtzcGFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBZ0M7QUFDaEMsbUNBQXNEO0FBRXRELE1BQWEsYUFBYyxTQUFRLGtCQUFTO0lBQ25DLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBZ0I7UUFDL0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFZLEVBQXNCLEVBQUUsQ0FDckQsQ0FBQyxZQUFZLGFBQWEsQ0FBQztRQUM3QixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsWUFBWSxPQUFnQjtRQUMxQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixNQUFNLFFBQVEsR0FBVyxxQkFBcUIsQ0FBQztRQUUvQzs7V0FFRztRQUNILE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVuQzs7V0FFRztRQUNILElBQUksaUJBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRTtZQUNuQyxHQUFHLEVBQUU7Z0JBQ0gsUUFBUSxFQUFFLEdBQUcsRUFBRTtvQkFDYixNQUFNLFFBQVEsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO29CQUNyQyxLQUFLLE1BQU0sVUFBVSxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQzt3QkFDN0Msa0NBQWtDO3dCQUNsQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUEsZUFBUSxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUNsRSxDQUFDO29CQUNELE9BQU8sUUFBUSxDQUFDO2dCQUNsQixDQUFDO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFqQ0Qsc0NBaUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVsYXRpdmUgfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBQcm9qZWN0LCBZYW1sRmlsZSB9IGZyb20gXCJwcm9qZW5cIjtcblxuZXhwb3J0IGNsYXNzIFBucG1Xb3Jrc3BhY2UgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwdWJsaWMgc3RhdGljIG9mKHByb2plY3Q6IFByb2plY3QpOiBQbnBtV29ya3NwYWNlIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBpc0RlZmluZWQgPSAoYzogQ29tcG9uZW50KTogYyBpcyBQbnBtV29ya3NwYWNlID0+XG4gICAgICBjIGluc3RhbmNlb2YgUG5wbVdvcmtzcGFjZTtcbiAgICByZXR1cm4gcHJvamVjdC5yb290LmNvbXBvbmVudHMuZmluZChpc0RlZmluZWQpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgY29uc3QgZmlsZU5hbWU6IHN0cmluZyA9IFwicG5wbS13b3Jrc3BhY2UueWFtbFwiO1xuXG4gICAgLyoqXG4gICAgICogSW4gY2FzZSB0aGF0IHRoaXMgZmlsZSBpcyBpbiBhIHBhY2thZ2UsIGRvbid0IHBhY2thZ2UgaXQuXG4gICAgICovXG4gICAgcHJvamVjdC5hZGRQYWNrYWdlSWdub3JlKGZpbGVOYW1lKTtcblxuICAgIC8qKlxuICAgICAqIFdyaXRlIHBucG0gd29ya3NwYWNlIGZpbGVcbiAgICAgKi9cbiAgICBuZXcgWWFtbEZpbGUodGhpcy5wcm9qZWN0LCBmaWxlTmFtZSwge1xuICAgICAgb2JqOiB7XG4gICAgICAgIHBhY2thZ2VzOiAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFja2FnZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgICAgICAgIGZvciAoY29uc3Qgc3VicHJvamVjdCBvZiBwcm9qZWN0LnN1YnByb2plY3RzKSB7XG4gICAgICAgICAgICAvLyBncmFiIHRoZSByZWxhdGl2ZSBvdXQgZGlyZWN0b3J5XG4gICAgICAgICAgICBwYWNrYWdlcy5wdXNoKHJlbGF0aXZlKHRoaXMucHJvamVjdC5vdXRkaXIsIHN1YnByb2plY3Qub3V0ZGlyKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBwYWNrYWdlcztcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG5wbS13b3Jrc3BhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcG5wbS9wbnBtLXdvcmtzcGFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBZ0M7QUFDaEMsbUNBQXNEO0FBR3REOztHQUVHO0FBQ1UsUUFBQSxtQkFBbUIsR0FBRztJQUNqQyxTQUFTLEVBQUUsQ0FBQztJQUNaLFFBQVEsRUFBRSxFQUFFO0lBQ1osU0FBUyxFQUFFLEdBQUc7SUFDZCxZQUFZLEVBQUUsR0FBRztJQUNqQixPQUFPLEVBQUUsSUFBSTtJQUNiLFFBQVEsRUFBRSxJQUFJO0lBQ2QsVUFBVSxFQUFFLElBQUk7SUFDaEIsU0FBUyxFQUFFLElBQUk7SUFDZixTQUFTLEVBQUUsSUFBSTtJQUNmLFFBQVEsRUFBRSxJQUFJO0lBQ2QsUUFBUSxFQUFFLEtBQUs7Q0FDaEIsQ0FBQztBQTRJRixNQUFhLGFBQWMsU0FBUSxrQkFBUztJQUMxQzs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQWdCO1FBQy9CLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBWSxFQUFzQixFQUFFLENBQ3JELENBQUMsWUFBWSxhQUFhLENBQUM7UUFDN0IsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQXVGRCxZQUFZLE9BQWdCLEVBQUUsVUFBZ0MsRUFBRTtRQUM5RCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZjs7Ozs7Ozs7b0ZBUTRFO1FBRTVFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV2RTs7Ozs7Ozs7Ozs7V0FXRztRQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxxQkFBcUIsQ0FBQztRQUUxRDs7V0FFRztRQUNILElBQUksQ0FBQyxp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LENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUM3QyxVQUFVLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDO2dCQUNyRSxDQUFDO2dCQUVEOzttQkFFRztnQkFDSCxJQUNFLElBQUksQ0FBQyxjQUFjO29CQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUMzQyxDQUFDO29CQUNELFVBQVUsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztnQkFDM0MsQ0FBQztnQkFFRDs7bUJBRUc7Z0JBQ0gsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDckUsVUFBVSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO2dCQUNoRCxDQUFDO2dCQUVEOzttQkFFRztnQkFDSCxPQUFPO29CQUNMLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUM1QyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztpQkFDekMsQ0FBQztZQUNKLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUF2UUQsc0NBdVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVsYXRpdmUgfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBQcm9qZWN0LCBZYW1sRmlsZSB9IGZyb20gXCJwcm9qZW5cIjtcbmltcG9ydCB7IFZhbHVlT2YgfSBmcm9tIFwidHlwZS1mZXN0XCI7XG5cbi8qKlxuICogUHJlZGVmaW5lZCBtaW5pbXVtIHJlbGVhc2UgYWdlIHZhbHVlcyBpbiBtaW51dGVzLlxuICovXG5leHBvcnQgY29uc3QgTUlNSU1VTV9SRUxFQVNFX0FHRSA9IHtcbiAgWkVST19EQVlTOiAwLFxuICBPTkVfSE9VUjogNjAsXG4gIFNJWF9IT1VSUzogMzYwLFxuICBUV0VMVkVfSE9VUlM6IDcyMCxcbiAgT05FX0RBWTogMTQ0MCxcbiAgVFdPX0RBWVM6IDI4ODAsXG4gIFRIUkVFX0RBWVM6IDQzMjAsXG4gIEZPVVJfREFZUzogNTc2MCxcbiAgRklWRV9EQVlTOiA3MjAwLFxuICBTSVhfREFZUzogODY0MCxcbiAgT05FX1dFRUs6IDEwMDgwLFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBQbnBtV29ya3NwYWNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBGaWxlbmFtZSBmb3IgdGhlIHBucG0gd29ya3NwYWNlIGZpbGUuIFRoaXMgc2hvdWxkIHByb2JhYmx5IG5ldmVyIGNoYW5nZS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJwbnBtLXdvcmtzcGFjZS55YW1sXCJcbiAgICovXG4gIHJlYWRvbmx5IGZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUbyByZWR1Y2UgdGhlIHJpc2sgb2YgaW5zdGFsbGluZyBjb21wcm9taXNlZCBwYWNrYWdlcywgeW91IGNhbiBkZWxheSB0aGVcbiAgICogaW5zdGFsbGF0aW9uIG9mIG5ld2x5IHB1Ymxpc2hlZCB2ZXJzaW9ucy4gSW4gbW9zdCBjYXNlcywgbWFsaWNpb3VzIHJlbGVhc2VzXG4gICAqIGFyZSBkaXNjb3ZlcmVkIGFuZCByZW1vdmVkIGZyb20gdGhlIHJlZ2lzdHJ5IHdpdGhpbiBhbiBob3VyLlxuICAgKlxuICAgKiBtaW5pbXVtUmVsZWFzZUFnZSBkZWZpbmVzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBtaW51dGVzIHRoYXQgbXVzdCBwYXNzXG4gICAqIGFmdGVyIGEgdmVyc2lvbiBpcyBwdWJsaXNoZWQgYmVmb3JlIHBucG0gd2lsbCBpbnN0YWxsIGl0LiBUaGlzIGFwcGxpZXMgdG9cbiAgICogYWxsIGRlcGVuZGVuY2llcywgaW5jbHVkaW5nIHRyYW5zaXRpdmUgb25lcy5cbiAgICpcbiAgICogTm90ZTogdGhpcyBzaG91bGQgbWF0Y2ggZGVwc1VwZ3JhZGVPcHRpb25zLmNvb2xkb3duIGluIHRoZSBwcm9qZWN0IGNvbmZpZy5cbiAgICpcbiAgICogU2VlOiBodHRwczovL3BucG0uaW8vc2V0dGluZ3MjbWluaW11bXJlbGVhc2VhZ2VcbiAgICpcbiAgICogQGRlZmF1bHQgTUlNSU1VTV9SRUxFQVNFX0FHRS5PTkVfREFZXG4gICAqL1xuICByZWFkb25seSBtaW5pbXVtUmVsZWFzZUFnZT86IFZhbHVlT2Y8dHlwZW9mIE1JTUlNVU1fUkVMRUFTRV9BR0U+O1xuXG4gIC8qKlxuICAgKiBJZiB5b3Ugc2V0IG1pbmltdW1SZWxlYXNlQWdlIGJ1dCBuZWVkIGNlcnRhaW4gZGVwZW5kZW5jaWVzIHRvIGFsd2F5c1xuICAgKiBpbnN0YWxsIHRoZSBuZXdlc3QgdmVyc2lvbiBpbW1lZGlhdGVseSwgeW91IGNhbiBsaXN0IHRoZW0gdW5kZXJcbiAgICogbWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlLiBUaGUgZXhjbHVzaW9uIHdvcmtzIGJ5IHBhY2thZ2UgbmFtZSBhbmQgYXBwbGllc1xuICAgKiB0byBhbGwgdmVyc2lvbnMgb2YgdGhhdCBwYWNrYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGV4Y2x1c2lvbnMgKGVtcHR5IGFycmF5KVxuICAgKlxuICAgKiBTZWU6IGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncyNtaW5pbXVtcmVsZWFzZWFnZWV4Y2x1ZGVcbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZT86IEFycmF5PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBwYWNrYWdlIG5hbWVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gZXhlY3V0ZSBcInByZWluc3RhbGxcIixcbiAgICogXCJpbnN0YWxsXCIsIGFuZC9vciBcInBvc3RpbnN0YWxsXCIgc2NyaXB0cyBkdXJpbmcgaW5zdGFsbGF0aW9uLiBPbmx5IHRoZVxuICAgKiBwYWNrYWdlcyBsaXN0ZWQgaW4gdGhpcyBhcnJheSB3aWxsIGJlIGFibGUgdG8gcnVuIHRob3NlIGxpZmVjeWNsZSBzY3JpcHRzLlxuICAgKiBJZiBvbmx5QnVpbHREZXBlbmRlbmNpZXNGaWxlIGFuZCBuZXZlckJ1aWx0RGVwZW5kZW5jaWVzIGFyZSBvbWl0dGVkLCB0aGlzXG4gICAqIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdpbGwgZGVmYXVsdCB0byBibG9ja2luZyBhbGwgaW5zdGFsbCBzY3JpcHRzLlxuICAgKlxuICAgKiBZb3UgbWF5IHJlc3RyaWN0IGFsbG93YW5jZXMgdG8gc3BlY2lmaWMgdmVyc2lvbnMgKGFuZCBsaXN0cyBvZiB2ZXJzaW9uc1xuICAgKiB1c2luZyBhIGRpc2p1bmN0aW9uIHdpdGggfHwpLiBXaGVuIHZlcnNpb25zIGFyZSBzcGVjaWZpZWQsIG9ubHkgdGhvc2VcbiAgICogdmVyc2lvbnMgb2YgdGhlIHBhY2thZ2UgbWF5IHJ1biBsaWZlY3ljbGUgc2NyaXB0czpcbiAgICpcbiAgICogU2VlOiBodHRwczovL3BucG0uaW8vc2V0dGluZ3Mjb25seWJ1aWx0ZGVwZW5kZW5jaWVzXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vbmUgKGVtcHR5IGFycmF5KVxuICAgKi9cbiAgcmVhZG9ubHkgb25seUJ1aWx0RGVwZW5kZW5jaWVzPzogQXJyYXk8c3RyaW5nPjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHBhY2thZ2UgbmFtZXMgdGhhdCBhcmUgTk9UIGFsbG93ZWQgdG8gZXhlY3V0ZSBcInByZWluc3RhbGxcIixcbiAgICogXCJpbnN0YWxsXCIsIGFuZC9vciBcInBvc3RpbnN0YWxsXCIgc2NyaXB0cyBkdXJpbmcgaW5zdGFsbGF0aW9uIGFuZCB3aWxsIG5vdFxuICAgKiB3YXJuIG9yIGFzayB0byBiZSBleGVjdXRlZC5cbiAgICpcbiAgICogVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3Ugd2FudCB0byBoaWRlIHRoZSB3YXJuaW5nIGJlY2F1c2UgeW91IGtub3cgdGhlXG4gICAqIGxpZmVjeWNsZSBzY3JpcHRzIGFyZSBub3QgbmVlZGVkLlxuICAgKlxuICAgKiBodHRwczovL3BucG0uaW8vc2V0dGluZ3MjaWdub3JlZGJ1aWx0ZGVwZW5kZW5jaWVzXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vbmUgKGVtcHR5IGFycmF5KVxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlZEJ1aWx0RGVwZW5kZW5jaWVzPzogQXJyYXk8c3RyaW5nPjtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBzdWJwcm9qZWN0IHBhdGhzIHRvIGluY2x1ZGUgaW4gdGhlIHdvcmtzcGFjZSBwYWNrYWdlcyBhcnJheS5cbiAgICogVGhlc2Ugd2lsbCBiZSBjb21iaW5lZCB3aXRoIGFueSBzdWJwcm9qZWN0cyBkaXNjb3ZlcmVkIHZpYSBwcm9qZW4nc1xuICAgKiBwcm9qZWN0LnN1YnByb2plY3RzIHByb3BlcnR5LiBQYXRocyBzaG91bGQgYmUgcmVsYXRpdmUgdG8gdGhlIHByb2plY3Qgcm9vdC5cbiAgICpcbiAgICogQGRlZmF1bHQgbm9uZSAoZW1wdHkgYXJyYXkpXG4gICAqL1xuICByZWFkb25seSBzdWJwcm9qZWN0cz86IEFycmF5PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIENhdGFsb2cgb2YgcmV1c2FibGUgZGVwZW5kZW5jeSB2ZXJzaW9uIHJhbmdlcy5cbiAgICpcbiAgICogVGhlIGNhdGFsb2cgYWxsb3dzIHlvdSB0byBkZWZpbmUgZGVwZW5kZW5jeSB2ZXJzaW9ucyBhcyByZXVzYWJsZSBjb25zdGFudHNcbiAgICogdGhhdCBjYW4gYmUgcmVmZXJlbmNlZCBpbiBwYWNrYWdlLmpzb24gZmlsZXMgdXNpbmcgdGhlIGNhdGFsb2c6IHByb3RvY29sLlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBgYGB5YW1sXG4gICAqIGNhdGFsb2c6XG4gICAqICAgcmVhY3Q6IF4xOC4wLjBcbiAgICogICB0eXBlc2NyaXB0OiBeNS4wLjBcbiAgICogYGBgXG4gICAqXG4gICAqIFRoZW4gaW4gcGFja2FnZS5qc29uOlxuICAgKiBgYGBqc29uXG4gICAqIHtcbiAgICogICBcImRlcGVuZGVuY2llc1wiOiB7XG4gICAqICAgICBcInJlYWN0XCI6IFwiY2F0YWxvZzpyZWFjdFwiXG4gICAqICAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWQgKG5vdCBpbmNsdWRlZCBpbiBvdXRwdXQpXG4gICAqXG4gICAqIFNlZTogaHR0cHM6Ly9wbnBtLmlvL3BucG0td29ya3NwYWNlX3lhbWwjY2F0YWxvZ1xuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdENhdGFsb2c/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBOYW1lZCBjYXRhbG9ncyBvZiByZXVzYWJsZSBkZXBlbmRlbmN5IHZlcnNpb24gcmFuZ2VzLlxuICAgKlxuICAgKiBNdWx0aXBsZSBuYW1lZCBjYXRhbG9ncyB3aXRoIGFyYml0cmFyaWx5IGNob3NlbiBuYW1lcyBjYW4gYmUgY29uZmlndXJlZCB1bmRlciB0aGUgbmFtZWRDYXRhbG9ncyBrZXkuXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIGBgYHlhbWxcbiAgICogbmFtZWRDYXRhbG9nczpcbiAgICogICBmcm9udGVuZDpcbiAgICogICAgIHJlYWN0OiBeMTguMC4wXG4gICAqICAgICB0eXBlc2NyaXB0OiBeNS4wLjBcbiAgICogICBiYWNrZW5kOlxuICAgKiAgICAgZXhwcmVzczogXjQuMTguMFxuICAgKiBgYGBcbiAgICpcbiAgICogVGhlbiBpbiBwYWNrYWdlLmpzb246XG4gICAqIGBgYGpzb25cbiAgICoge1xuICAgKiAgIFwiZGVwZW5kZW5jaWVzXCI6IHtcbiAgICogICAgIFwicmVhY3RcIjogXCJjYXRhbG9nOmZyb250ZW5kL3JlYWN0XCJcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZCAobm90IGluY2x1ZGVkIGluIG91dHB1dClcbiAgICpcbiAgICogU2VlOiBodHRwczovL3BucG0uaW8vY2F0YWxvZ3NcbiAgICovXG4gIHJlYWRvbmx5IG5hbWVkQ2F0YWxvZ3M/OiB7XG4gICAgW2NhdGFsb2dOYW1lOiBzdHJpbmddOiB7IFtkZXBlbmRlbmN5TmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBQbnBtV29ya3NwYWNlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIEdldCB0aGUgcG5wbSB3b3Jrc3BhY2UgY29tcG9uZW50IG9mIGEgcHJvamVjdC4gSWYgaXQgZG9lcyBub3QgZXhpc3QsXG4gICAqIHJldHVybiB1bmRlZmluZWQuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9qZWN0XG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHByb2plY3Q6IFByb2plY3QpOiBQbnBtV29ya3NwYWNlIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBpc0RlZmluZWQgPSAoYzogQ29tcG9uZW50KTogYyBpcyBQbnBtV29ya3NwYWNlID0+XG4gICAgICBjIGluc3RhbmNlb2YgUG5wbVdvcmtzcGFjZTtcbiAgICByZXR1cm4gcHJvamVjdC5yb290LmNvbXBvbmVudHMuZmluZChpc0RlZmluZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbGVuYW1lIGZvciB0aGUgcG5wbSB3b3Jrc3BhY2UgZmlsZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBmaWxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUbyByZWR1Y2UgdGhlIHJpc2sgb2YgaW5zdGFsbGluZyBjb21wcm9taXNlZCBwYWNrYWdlcywgeW91IGNhbiBkZWxheSB0aGVcbiAgICogaW5zdGFsbGF0aW9uIG9mIG5ld2x5IHB1Ymxpc2hlZCB2ZXJzaW9ucy4gSW4gbW9zdCBjYXNlcywgbWFsaWNpb3VzIHJlbGVhc2VzXG4gICAqIGFyZSBkaXNjb3ZlcmVkIGFuZCByZW1vdmVkIGZyb20gdGhlIHJlZ2lzdHJ5IHdpdGhpbiBhbiBob3VyLlxuICAgKlxuICAgKiBtaW5pbXVtUmVsZWFzZUFnZSBkZWZpbmVzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBtaW51dGVzIHRoYXQgbXVzdCBwYXNzXG4gICAqIGFmdGVyIGEgdmVyc2lvbiBpcyBwdWJsaXNoZWQgYmVmb3JlIHBucG0gd2lsbCBpbnN0YWxsIGl0LiBUaGlzIGFwcGxpZXMgdG9cbiAgICogYWxsIGRlcGVuZGVuY2llcywgaW5jbHVkaW5nIHRyYW5zaXRpdmUgb25lcy5cbiAgICpcbiAgICogTm90ZTogdGhpcyBzaG91bGQgbWF0Y2ggZGVwc1VwZ3JhZGVPcHRpb25zLmNvb2xkb3duIGluIHRoZSBwcm9qZWN0IGNvbmZpZy5cbiAgICpcbiAgICogU2VlOiBodHRwczovL3BucG0uaW8vc2V0dGluZ3MjbWluaW11bXJlbGVhc2VhZ2VcbiAgICovXG4gIHB1YmxpYyBtaW5pbXVtUmVsZWFzZUFnZTogVmFsdWVPZjx0eXBlb2YgTUlNSU1VTV9SRUxFQVNFX0FHRT47XG5cbiAgLyoqXG4gICAqIElmIHlvdSBzZXQgbWluaW11bVJlbGVhc2VBZ2UgYnV0IG5lZWQgY2VydGFpbiBkZXBlbmRlbmNpZXMgdG8gYWx3YXlzXG4gICAqIGluc3RhbGwgdGhlIG5ld2VzdCB2ZXJzaW9uIGltbWVkaWF0ZWx5LCB5b3UgY2FuIGxpc3QgdGhlbSB1bmRlclxuICAgKiBtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGUuIFRoZSBleGNsdXNpb24gd29ya3MgYnkgcGFja2FnZSBuYW1lIGFuZCBhcHBsaWVzXG4gICAqIHRvIGFsbCB2ZXJzaW9ucyBvZiB0aGF0IHBhY2thZ2UuXG4gICAqXG4gICAqIFNlZTogaHR0cHM6Ly9wbnBtLmlvL3NldHRpbmdzI21pbmltdW1yZWxlYXNlYWdlZXhjbHVkZVxuICAgKi9cbiAgcHVibGljIG1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZTogQXJyYXk8c3RyaW5nPjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHBhY2thZ2UgbmFtZXMgdGhhdCBhcmUgYWxsb3dlZCB0byBleGVjdXRlIFwicHJlaW5zdGFsbFwiLFxuICAgKiBcImluc3RhbGxcIiwgYW5kL29yIFwicG9zdGluc3RhbGxcIiBzY3JpcHRzIGR1cmluZyBpbnN0YWxsYXRpb24uIE9ubHkgdGhlXG4gICAqIHBhY2thZ2VzIGxpc3RlZCBpbiB0aGlzIGFycmF5IHdpbGwgYmUgYWJsZSB0byBydW4gdGhvc2UgbGlmZWN5Y2xlIHNjcmlwdHMuXG4gICAqIElmIG9ubHlCdWlsdERlcGVuZGVuY2llc0ZpbGUgYW5kIG5ldmVyQnVpbHREZXBlbmRlbmNpZXMgYXJlIG9taXR0ZWQsIHRoaXNcbiAgICogY29uZmlndXJhdGlvbiBvcHRpb24gd2lsbCBkZWZhdWx0IHRvIGJsb2NraW5nIGFsbCBpbnN0YWxsIHNjcmlwdHMuXG4gICAqXG4gICAqIFlvdSBtYXkgcmVzdHJpY3QgYWxsb3dhbmNlcyB0byBzcGVjaWZpYyB2ZXJzaW9ucyAoYW5kIGxpc3RzIG9mIHZlcnNpb25zXG4gICAqIHVzaW5nIGEgZGlzanVuY3Rpb24gd2l0aCB8fCkuIFdoZW4gdmVyc2lvbnMgYXJlIHNwZWNpZmllZCwgb25seSB0aG9zZVxuICAgKiB2ZXJzaW9ucyBvZiB0aGUgcGFja2FnZSBtYXkgcnVuIGxpZmVjeWNsZSBzY3JpcHRzOlxuICAgKlxuICAgKiBTZWU6IGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncyNvbmx5YnVpbHRkZXBlbmRlbmNpZXNcbiAgICovXG4gIHB1YmxpYyBvbmx5QnVpbHREZXBlbmRlbmNpZXM6IEFycmF5PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBwYWNrYWdlIG5hbWVzIHRoYXQgYXJlIE5PVCBhbGxvd2VkIHRvIGV4ZWN1dGUgXCJwcmVpbnN0YWxsXCIsXG4gICAqIFwiaW5zdGFsbFwiLCBhbmQvb3IgXCJwb3N0aW5zdGFsbFwiIHNjcmlwdHMgZHVyaW5nIGluc3RhbGxhdGlvbiBhbmQgd2lsbCBub3RcbiAgICogd2FybiBvciBhc2sgdG8gYmUgZXhlY3V0ZWQuXG4gICAqXG4gICAqIFRoaXMgaXMgdXNlZnVsIHdoZW4geW91IHdhbnQgdG8gaGlkZSB0aGUgd2FybmluZyBiZWNhdXNlIHlvdSBrbm93IHRoZVxuICAgKiBsaWZlY3ljbGUgc2NyaXB0cyBhcmUgbm90IG5lZWRlZC5cbiAgICpcbiAgICogaHR0cHM6Ly9wbnBtLmlvL3NldHRpbmdzI2lnbm9yZWRidWlsdGRlcGVuZGVuY2llc1xuICAgKi9cbiAgcHVibGljIGlnbm9yZWRCdWlsdERlcGVuZGVuY2llczogQXJyYXk8c3RyaW5nPjtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBzdWJwcm9qZWN0IHBhdGhzIHRvIGluY2x1ZGUgaW4gdGhlIHdvcmtzcGFjZSBwYWNrYWdlcyBhcnJheS5cbiAgICogVGhlc2Ugd2lsbCBiZSBjb21iaW5lZCB3aXRoIGFueSBzdWJwcm9qZWN0cyBkaXNjb3ZlcmVkIHZpYSBwcm9qZW4nc1xuICAgKiBwcm9qZWN0LnN1YnByb2plY3RzIHByb3BlcnR5LlxuICAgKi9cbiAgcHVibGljIHN1YnByb2plY3RzOiBBcnJheTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGNhdGFsb2cgb2YgcmV1c2FibGUgZGVwZW5kZW5jeSB2ZXJzaW9uIHJhbmdlcy5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgY2F0YWxvZyBpcyB1c2VkIHRvIGRlZmluZSBkZXBlbmRlbmN5IHZlcnNpb25zIGFzIHJldXNhYmxlIGNvbnN0YW50c1xuICAgKiB0aGF0IGNhbiBiZSByZWZlcmVuY2VkIGluIHBhY2thZ2UuanNvbiBmaWxlcyB1c2luZyB0aGUgY2F0YWxvZzogcHJvdG9jb2wuXG4gICAqXG4gICAqIFNlZTpodHRwczovL3BucG0uaW8vY2F0YWxvZ3NcbiAgICovXG4gIHB1YmxpYyBkZWZhdWx0Q2F0YWxvZz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIE5hbWVkIGNhdGFsb2dzIG9mIHJldXNhYmxlIGRlcGVuZGVuY3kgdmVyc2lvbiByYW5nZXMuXG4gICAqXG4gICAqIE11bHRpcGxlIG5hbWVkIGNhdGFsb2dzIHdpdGggYXJiaXRyYXJpbHkgY2hvc2VuIG5hbWVzIGNhbiBiZSBjb25maWd1cmVkIHVuZGVyIHRoZSBuYW1lZENhdGFsb2dzIGtleS5cbiAgICpcbiAgICogU2VlOiBodHRwczovL3BucG0uaW8vY2F0YWxvZ3NcbiAgICovXG4gIHB1YmxpYyBuYW1lZENhdGFsb2dzPzoge1xuICAgIFtjYXRhbG9nTmFtZTogc3RyaW5nXTogeyBbZGVwZW5kZW5jeU5hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IFBucG1Xb3Jrc3BhY2VPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIENMRUFSIHBhY2thZ2UsanNvblxuICAgICAqXG4gICAgICogSXQgYXBwZWFycyB0aGF0IGlmIEFOWSBwbnBtIHNldHRpbmdzIGV4aXN0IGluIHRoZSBwYWNrYWdlLmpzb24gZmlsZSwgYWxsXG4gICAgICogb2YgdGhlIHNldHRpbmcgaW4gdGhlIHBucG0td29ya3NwYWNlLnlhbWwgZmlsZSBhcmUgaWdub3JlZC4gc28gd2UgbmVlZCB0b1xuICAgICAqIGNsZWFyIG91dCBhbnl0aGluZyB0aGF0IHdhcyBwbGFjZWQgaW50byB0aGUgcGFja2FnZS5qc29uIGZpbGUuXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBwcm9qZWN0LnRyeUZpbmRPYmplY3RGaWxlKFwicGFja2FnZS5qc29uXCIpPy5hZGREZWxldGlvbk92ZXJyaWRlKFwicG5wbVwiKTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKiBcbiAgICAgKiBTZXR1cCBwbnBtLXdvcmtzcGFjZS55YW1sIGZpbGUuXG4gICAgICogXG4gICAgICogTm93IHRoYXQgdGhlIHBhY2thZ2UuanNvbiBmaWxlIGlzIGNsZWFyZWQgb2YgYW55IHBucG0gc2V0dGluZ3MsIHdlIGNhblxuICAgICAqIHNhZmVseSB3cml0ZSBzZXR0aW5ncyB0byB0aGUgcG5wbS13b3Jrc3BhY2UueWFtbCBmaWxlLlxuICAgICAqIFxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICAgLyoqXG4gICAgICogU2V0IGZpbGVuYW1lIHRvIGRlZmF1bHQgaWYgbm90IHByb3ZpZGVkLlxuICAgICAqL1xuICAgIHRoaXMuZmlsZU5hbWUgPSBvcHRpb25zLmZpbGVOYW1lID8/IFwicG5wbS13b3Jrc3BhY2UueWFtbFwiO1xuXG4gICAgLyoqXG4gICAgICogU2V0IG1pbmltdW0gcmVsZWFzZSBhZ2UgdG8gZGVmYXVsdCBpZiBub3QgcHJvdmlkZWRcbiAgICAgKi9cbiAgICB0aGlzLm1pbmltdW1SZWxlYXNlQWdlID0gb3B0aW9ucy5taW5pbXVtUmVsZWFzZUFnZVxuICAgICAgPyBvcHRpb25zLm1pbmltdW1SZWxlYXNlQWdlXG4gICAgICA6IE1JTUlNVU1fUkVMRUFTRV9BR0UuT05FX0RBWTtcblxuICAgIC8qKlxuICAgICAqIFNldCBtaW5pbXVtIHJlbGVhc2UgYWdlIGV4Y2x1ZGUgdG8gZW1wdHkgYXJyYXkgaWYgbm90IHByb3ZpZGVkXG4gICAgICovXG4gICAgdGhpcy5taW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGUgPSBvcHRpb25zLm1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZVxuICAgICAgPyBbXCJAY29kZWRyaWZ0ZXJzLypcIiwgLi4ub3B0aW9ucy5taW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGVdXG4gICAgICA6IFtcIkBjb2RlZHJpZnRlcnMvKlwiXTtcblxuICAgIC8qKlxuICAgICAqIFNldCBvbmx5IGJ1aWx0IGRlcGVuZGVuY2llcyB0byBlbXB0eSBhcnJheSBpZiBub3QgcHJvdmlkZWRcbiAgICAgKi9cbiAgICB0aGlzLm9ubHlCdWlsdERlcGVuZGVuY2llcyA9IG9wdGlvbnMub25seUJ1aWx0RGVwZW5kZW5jaWVzXG4gICAgICA/IG9wdGlvbnMub25seUJ1aWx0RGVwZW5kZW5jaWVzXG4gICAgICA6IFtdO1xuXG4gICAgLyoqXG4gICAgICogU2V0IGlnbm9yZWQgYnVpbHQgZGVwZW5kZW5jaWVzIHRvIGVtcHR5IGFycmF5IGlmIG5vdCBwcm92aWRlZFxuICAgICAqL1xuICAgIHRoaXMuaWdub3JlZEJ1aWx0RGVwZW5kZW5jaWVzID0gb3B0aW9ucy5pZ25vcmVkQnVpbHREZXBlbmRlbmNpZXNcbiAgICAgID8gb3B0aW9ucy5pZ25vcmVkQnVpbHREZXBlbmRlbmNpZXNcbiAgICAgIDogW107XG5cbiAgICAvKipcbiAgICAgKiBTdG9yZSBhZGRpdGlvbmFsIHN1YnByb2plY3QgcGF0aHMgaWYgcHJvdmlkZWRcbiAgICAgKi9cbiAgICB0aGlzLnN1YnByb2plY3RzID0gb3B0aW9ucy5zdWJwcm9qZWN0cyA/PyBbXTtcblxuICAgIC8qKlxuICAgICAqIFN0b3JlIGNhdGFsb2cgaWYgcHJvdmlkZWRcbiAgICAgKi9cbiAgICB0aGlzLmRlZmF1bHRDYXRhbG9nID0gb3B0aW9ucy5kZWZhdWx0Q2F0YWxvZztcblxuICAgIC8qKlxuICAgICAqIFN0b3JlIG5hbWVkIGNhdGFsb2dzIGlmIHByb3ZpZGVkXG4gICAgICovXG4gICAgdGhpcy5uYW1lZENhdGFsb2dzID0gb3B0aW9ucy5uYW1lZENhdGFsb2dzO1xuXG4gICAgLyoqXG4gICAgICogSW4gY2FzZSB0aGF0IHRoaXMgZmlsZSBpcyBpbiBhIHBhY2thZ2UsIGRvbid0IHBhY2thZ2UgaXQuXG4gICAgICovXG4gICAgcHJvamVjdC5hZGRQYWNrYWdlSWdub3JlKHRoaXMuZmlsZU5hbWUpO1xuXG4gICAgLyoqXG4gICAgICogV3JpdGUgcG5wbSB3b3Jrc3BhY2UgZmlsZVxuICAgICAqL1xuICAgIG5ldyBZYW1sRmlsZSh0aGlzLnByb2plY3QsIHRoaXMuZmlsZU5hbWUsIHtcbiAgICAgIG9iajogKCkgPT4ge1xuICAgICAgICBjb25zdCBwbnBtQ29uZmlnOiBhbnkgPSB7fTtcbiAgICAgICAgY29uc3QgcGFja2FnZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBZGQgcHJvamVuIHN1YnByb2plY3RzIHRvIHRoZSBwYWNrYWdlcyBhcnJheS5cbiAgICAgICAgICovXG4gICAgICAgIGZvciAoY29uc3Qgc3VicHJvamVjdCBvZiBwcm9qZWN0LnN1YnByb2plY3RzKSB7XG4gICAgICAgICAgLy8gZ3JhYiB0aGUgcmVsYXRpdmUgb3V0IGRpcmVjdG9yeVxuICAgICAgICAgIHBhY2thZ2VzLnB1c2gocmVsYXRpdmUodGhpcy5wcm9qZWN0Lm91dGRpciwgc3VicHJvamVjdC5vdXRkaXIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBZGQgYWRkaXRpb25hbCBzdWJwcm9qZWN0IHBhdGhzIHByb3ZpZGVkIHZpYSBvcHRpb25zLlxuICAgICAgICAgKiBVc2UgYSBTZXQgdG8gZGVkdXBsaWNhdGUgcGF0aHMgdG8gYXZvaWQgaW5jbHVkaW5nIHRoZSBzYW1lXG4gICAgICAgICAqIHN1YnByb2plY3QgbXVsdGlwbGUgdGltZXMuXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBwYWNrYWdlU2V0ID0gbmV3IFNldChwYWNrYWdlcyk7XG4gICAgICAgIGZvciAoY29uc3Qgc3VicHJvamVjdFBhdGggb2YgdGhpcy5zdWJwcm9qZWN0cykge1xuICAgICAgICAgIHBhY2thZ2VTZXQuYWRkKHN1YnByb2plY3RQYXRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb252ZXJ0IGJhY2sgdG8gYXJyYXkgaWYgd2UgYWRkZWQgYW55IGFkZGl0aW9uYWwgcGF0aHNcbiAgICAgICAgICovXG4gICAgICAgIGlmICh0aGlzLnN1YnByb2plY3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBwYWNrYWdlcy5sZW5ndGggPSAwO1xuICAgICAgICAgIHBhY2thZ2VzLnB1c2goLi4ucGFja2FnZVNldCk7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogU2V0IG1pbmltdW0gcmVsZWFzZSBhZ2UuXG4gICAgICAgICAqL1xuICAgICAgICBwbnBtQ29uZmlnLm1pbmltdW1SZWxlYXNlQWdlID0gdGhpcy5taW5pbXVtUmVsZWFzZUFnZTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogU2V0IG1pbmltdW0gcmVsZWFzZSBhZ2UgZXhjbHVkZSBpZiBhbnkgYXJlIHByb3ZpZGVkLlxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKHRoaXMubWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBwbnBtQ29uZmlnLm1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZSA9IHRoaXMubWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNldCBvbmx5IGJ1aWx0IGRlcGVuZGVuY2llcyBpZiBhbnkgYXJlIHByb3ZpZGVkLlxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKHRoaXMub25seUJ1aWx0RGVwZW5kZW5jaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBwbnBtQ29uZmlnLm9ubHlCdWlsdERlcGVuZGVuY2llcyA9IHRoaXMub25seUJ1aWx0RGVwZW5kZW5jaWVzO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNldCBpZ25vcmVkIGJ1aWx0IGRlcGVuZGVuY2llcyBpZiBhbnkgYXJlIHByb3ZpZGVkLlxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKHRoaXMuaWdub3JlZEJ1aWx0RGVwZW5kZW5jaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBwbnBtQ29uZmlnLmlnbm9yZUJ1aWx0RGVwZW5kZW5jaWVzID0gdGhpcy5pZ25vcmVkQnVpbHREZXBlbmRlbmNpZXM7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogU2V0IGRlZmF1bHQgY2F0YWxvZyBpZiBwcm92aWRlZC5cbiAgICAgICAgICovXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmRlZmF1bHRDYXRhbG9nICYmXG4gICAgICAgICAgT2JqZWN0LmtleXModGhpcy5kZWZhdWx0Q2F0YWxvZykubGVuZ3RoID4gMFxuICAgICAgICApIHtcbiAgICAgICAgICBwbnBtQ29uZmlnLmNhdGFsb2cgPSB0aGlzLmRlZmF1bHRDYXRhbG9nO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNldCBuYW1lZCBjYXRhbG9ncyBpZiBwcm92aWRlZC5cbiAgICAgICAgICovXG4gICAgICAgIGlmICh0aGlzLm5hbWVkQ2F0YWxvZ3MgJiYgT2JqZWN0LmtleXModGhpcy5uYW1lZENhdGFsb2dzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcG5wbUNvbmZpZy5uYW1lZENhdGFsb2dzID0gdGhpcy5uYW1lZENhdGFsb2dzO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJldHVybiB0aGUgZmluYWwgcG5wbSBjb25maWcgb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi4ocGFja2FnZXMubGVuZ3RoID4gMCA/IHsgcGFja2FnZXMgfSA6IHt9KSxcbiAgICAgICAgICAuLi4ocG5wbUNvbmZpZyA/IHsgLi4ucG5wbUNvbmZpZyB9IDoge30pLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export * from "./monorepo-project";
2
+ export * from "./typescript-project";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./monorepo-project"), exports);
18
+ __exportStar(require("./typescript-project"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvamVjdHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFEQUFtQztBQUNuQyx1REFBcUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9tb25vcmVwby1wcm9qZWN0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlc2NyaXB0LXByb2plY3RcIjtcbiJdfQ==