construct-hub 0.3.274 → 0.3.275

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.
package/.jsii CHANGED
@@ -14540,6 +14540,6 @@
14540
14540
  "symbolId": "src/package-sources/npmjs:NpmJsProps"
14541
14541
  }
14542
14542
  },
14543
- "version": "0.3.274",
14544
- "fingerprint": "p4BU3gsVpiWVR3BT5QPh/zvw0RUKHUa1K1ANOjEOI8s="
14543
+ "version": "0.3.275",
14544
+ "fingerprint": "61ipjh2Rs2qxaJlMHcIQ6A5ZXmqKyIPsjTRunohsDCI="
14545
14545
  }
package/changelog.md CHANGED
@@ -1,2 +1,7 @@
1
1
 
2
- ### [0.3.274](https://github.com/cdklabs/construct-hub/compare/v0.3.273...v0.3.274) (2022-03-14)
2
+ ### [0.3.275](https://github.com/cdklabs/construct-hub/compare/v0.3.274...v0.3.275) (2022-03-15)
3
+
4
+
5
+ ### Features
6
+
7
+ * tag packages with multiple construct frameworks ([#794](https://github.com/cdklabs/construct-hub/issues/794)) ([78ea2dd](https://github.com/cdklabs/construct-hub/commit/78ea2dd76aef0556fea83b07c85d50039d199301)), closes [#717](https://github.com/cdklabs/construct-hub/issues/717)
@@ -23,4 +23,4 @@ export interface ConstructFramework {
23
23
  *
24
24
  * @returns a construct framework if one could be identified.
25
25
  */
26
- export declare function detectConstructFramework(assembly: Assembly): ConstructFramework | undefined;
26
+ export declare function detectConstructFrameworks(assembly: Assembly): ConstructFramework[];
@@ -1,7 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.detectConstructFramework = void 0;
3
+ exports.detectConstructFrameworks = void 0;
4
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
5
+ const assert = require("assert");
4
6
  const semver_1 = require("semver");
7
+ /**
8
+ * Predicates that determine whether a package is indicative of the CDK
9
+ * framework someone is using.
10
+ */
11
+ const FRAMEWORK_MATCHERS = {
12
+ ["aws-cdk" /* AWS_CDK */]: (name) => name.startsWith('@aws-cdk/') || name === 'aws-cdk-lib' || name === 'monocdk',
13
+ ["cdk8s" /* CDK8S */]: (name) => name === 'cdk8s' || /^cdk8s-plus(?:-(?:17|20|21|22))?$/.test(name),
14
+ // cdktf providers dependencies ("@cdktf/provider-xxx") are major versioned
15
+ // differently than the core library, so do not take them into account
16
+ ["cdktf" /* CDKTF */]: (name) => name === 'cdktf',
17
+ };
5
18
  /**
6
19
  * Determines the Construct framework used by the provided assembly.
7
20
  *
@@ -10,69 +23,75 @@ const semver_1 = require("semver");
10
23
  *
11
24
  * @returns a construct framework if one could be identified.
12
25
  */
13
- function detectConstructFramework(assembly) {
14
- var _a, _b;
15
- let name;
16
- let nameAmbiguous = false;
17
- let majorVersion;
18
- let majorVersionAmbiguous = false;
19
- // exception: we assume all @cdktf/ libraries are cdktf, even if they
20
- // also take other CDK types as dependencies
21
- if (assembly.name.startsWith('@cdktf/')) {
22
- name = "cdktf" /* CDKTF */;
23
- if ('cdktf' in ((_a = assembly.dependencyClosure) !== null && _a !== void 0 ? _a : {})) {
24
- detectConstructFrameworkPackage('cdktf');
25
- }
26
- return { name, majorVersion };
27
- }
26
+ function detectConstructFrameworks(assembly) {
27
+ var _a;
28
+ // "not-sure" means we haven't seen a major version for the framework yet,
29
+ // e.g. in the case of a transitive dependency where the info isn't provided
30
+ // "ambiguous" means we have seen multiple major versions so it's impossible
31
+ // to resolve a single number
32
+ const detectedFrameworks = {};
28
33
  detectConstructFrameworkPackage(assembly.name, assembly.version);
29
- for (const depName of Object.keys((_b = assembly.dependencyClosure) !== null && _b !== void 0 ? _b : {})) {
34
+ for (const depName of Object.keys((_a = assembly.dependencyClosure) !== null && _a !== void 0 ? _a : {})) {
30
35
  detectConstructFrameworkPackage(depName);
31
- if (nameAmbiguous) {
32
- return undefined;
33
- }
34
36
  }
35
- return name && { name, majorVersion: majorVersionAmbiguous ? undefined : majorVersion };
36
- function detectConstructFrameworkPackage(packageName, versionRange) {
37
- var _a, _b;
38
- if (versionRange === void 0) { versionRange = (_a = assembly.dependencies) === null || _a === void 0 ? void 0 : _a[packageName]; }
39
- if (packageName.startsWith('@aws-cdk/') || packageName === 'aws-cdk-lib' || packageName === 'monocdk') {
40
- if (name && name !== "aws-cdk" /* AWS_CDK */) {
41
- // Identified multiple candidates, so returning ambiguous...
42
- nameAmbiguous = true;
43
- return;
44
- }
45
- name = "aws-cdk" /* AWS_CDK */;
46
- }
47
- else if (packageName === 'cdktf') {
48
- if (name && name !== "cdktf" /* CDKTF */) {
49
- // Identified multiple candidates, so returning ambiguous...
50
- nameAmbiguous = true;
51
- return;
52
- }
53
- name = "cdktf" /* CDKTF */;
37
+ const frameworks = new Array();
38
+ for (const [frameworkName, majorVersion] of Object.entries(detectedFrameworks)) {
39
+ const name = frameworkName;
40
+ if (majorVersion === undefined) {
41
+ continue;
54
42
  }
55
- else if (packageName === 'cdk8s' || /^cdk8s-plus(?:-(?:17|20|21|22))?$/.test(packageName)) {
56
- if (name && name !== "cdk8s" /* CDK8S */) {
57
- // Identified multiple candidates, so returning ambiguous...
58
- nameAmbiguous = true;
59
- return;
60
- }
61
- name = "cdk8s" /* CDK8S */;
43
+ else if (majorVersion === 'ambiguous' || majorVersion === 'no-data') {
44
+ frameworks.push({ name });
62
45
  }
63
- else {
64
- return;
46
+ else if (typeof majorVersion === 'number') {
47
+ frameworks.push({ name, majorVersion });
65
48
  }
66
- if (versionRange) {
67
- const major = (_b = semver_1.minVersion(versionRange)) === null || _b === void 0 ? void 0 : _b.major;
68
- if (majorVersion != null && majorVersion !== major) {
69
- // Identified multiple candidates, so this is ambiguous...
70
- majorVersionAmbiguous = true;
49
+ }
50
+ return frameworks;
51
+ /**
52
+ * Analyses the package name and version range, and updates
53
+ * `detectedFrameworks` from the parent scope appropriately
54
+ */
55
+ function detectConstructFrameworkPackage(packageName, versionRange) {
56
+ var _a, _b, _c;
57
+ if (versionRange === void 0) { versionRange = (_a = assembly.dependencies) === null || _a === void 0 ? void 0 : _a[packageName]; }
58
+ for (const frameworkName of ["aws-cdk" /* AWS_CDK */, "cdk8s" /* CDK8S */, "cdktf" /* CDKTF */]) {
59
+ const matchesFramework = FRAMEWORK_MATCHERS[frameworkName];
60
+ if (matchesFramework(packageName)) {
61
+ const frameworkVersion = detectedFrameworks[frameworkName];
62
+ if (frameworkVersion === 'ambiguous') {
63
+ // We have already seen multiple major versions and have determined
64
+ // the major version is ambiguous, so this package won't give
65
+ // us any new information.
66
+ return;
67
+ }
68
+ const packageMajor = (_c = (versionRange ? (_b = semver_1.minVersion(versionRange)) === null || _b === void 0 ? void 0 : _b.major : undefined)) !== null && _c !== void 0 ? _c : 'no-data';
69
+ if (frameworkVersion === undefined) {
70
+ // It's the first time seeing this major version, so we record
71
+ // whatever new information we found ("no-data" or number).
72
+ detectedFrameworks[frameworkName] = packageMajor;
73
+ return;
74
+ }
75
+ else if (frameworkVersion === 'no-data') {
76
+ // We've seen this framework before but haven't seen a major version,
77
+ // so record whatever new information we found ("no-data" or number).
78
+ detectedFrameworks[frameworkName] = packageMajor;
79
+ return;
80
+ }
81
+ else {
82
+ // At this point, frameworkVersion can only be a MV number
83
+ assert(typeof frameworkVersion === 'number');
84
+ // We've seen evidence of a particular major version for this
85
+ // framework, so only update if this package conflicts with what
86
+ // we're expecting.
87
+ if (packageMajor !== 'no-data' && frameworkVersion !== packageMajor) {
88
+ detectedFrameworks[frameworkName] = 'ambiguous';
89
+ }
90
+ return;
91
+ }
71
92
  }
72
- majorVersion = major;
73
93
  }
74
- return;
75
94
  }
76
95
  }
77
- exports.detectConstructFramework = detectConstructFramework;
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWV3b3JrLWRldGVjdGlvbi5sYW1iZGEtc2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tlbmQvaW5nZXN0aW9uL2ZyYW1ld29yay1kZXRlY3Rpb24ubGFtYmRhLXNoYXJlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxtQ0FBb0M7QUFxQnBDOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQix3QkFBd0IsQ0FBQyxRQUFrQjs7SUFDekQsSUFBSSxJQUE0QyxDQUFDO0lBQ2pELElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztJQUMxQixJQUFJLFlBQWdDLENBQUM7SUFDckMsSUFBSSxxQkFBcUIsR0FBRyxLQUFLLENBQUM7SUFFbEMscUVBQXFFO0lBQ3JFLDRDQUE0QztJQUM1QyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1FBQ3ZDLElBQUksc0JBQStCLENBQUM7UUFDcEMsSUFBSSxPQUFPLElBQUksT0FBQyxRQUFRLENBQUMsaUJBQWlCLG1DQUFJLEVBQUUsQ0FBQyxFQUFFO1lBQ2pELCtCQUErQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzFDO1FBQ0QsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQztLQUMvQjtJQUVELCtCQUErQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pFLEtBQUssTUFBTSxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksT0FBQyxRQUFRLENBQUMsaUJBQWlCLG1DQUFJLEVBQUUsQ0FBQyxFQUFFO1FBQ25FLCtCQUErQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLElBQUksYUFBYSxFQUFFO1lBQ2pCLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0tBQ0Y7SUFFRCxPQUFPLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFeEYsU0FBUywrQkFBK0IsQ0FBQyxXQUFtQixFQUFFLFlBQW1EOztxQ0FBbkQsRUFBQSxxQkFBZSxRQUFRLENBQUMsWUFBWSwwQ0FBRyxXQUFXLENBQUM7UUFDL0csSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLFdBQVcsS0FBSyxhQUFhLElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRTtZQUNyRyxJQUFJLElBQUksSUFBSSxJQUFJLDRCQUFtQyxFQUFFO2dCQUNuRCw0REFBNEQ7Z0JBQzVELGFBQWEsR0FBRyxJQUFJLENBQUM7Z0JBQ3JCLE9BQU87YUFDUjtZQUNELElBQUksMEJBQWlDLENBQUM7U0FDdkM7YUFBTSxJQUFJLFdBQVcsS0FBSyxPQUFPLEVBQUU7WUFDbEMsSUFBSSxJQUFJLElBQUksSUFBSSx3QkFBaUMsRUFBRTtnQkFDakQsNERBQTREO2dCQUM1RCxhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixPQUFPO2FBQ1I7WUFDRCxJQUFJLHNCQUErQixDQUFDO1NBQ3JDO2FBQU0sSUFBSSxXQUFXLEtBQUssT0FBTyxJQUFJLG1DQUFtQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUMzRixJQUFJLElBQUksSUFBSSxJQUFJLHdCQUFpQyxFQUFFO2dCQUNqRCw0REFBNEQ7Z0JBQzVELGFBQWEsR0FBRyxJQUFJLENBQUM7Z0JBQ3JCLE9BQU87YUFDUjtZQUNELElBQUksc0JBQStCLENBQUM7U0FDckM7YUFBTTtZQUNMLE9BQU87U0FDUjtRQUNELElBQUksWUFBWSxFQUFFO1lBQ2hCLE1BQU0sS0FBSyxTQUFHLG1CQUFVLENBQUMsWUFBWSxDQUFDLDBDQUFFLEtBQUssQ0FBQztZQUM5QyxJQUFJLFlBQVksSUFBSSxJQUFJLElBQUksWUFBWSxLQUFLLEtBQUssRUFBRTtnQkFDbEQsMERBQTBEO2dCQUMxRCxxQkFBcUIsR0FBRyxJQUFJLENBQUM7YUFDOUI7WUFDRCxZQUFZLEdBQUcsS0FBSyxDQUFDO1NBQ3RCO1FBQ0QsT0FBTztJQUNULENBQUM7QUFDSCxDQUFDO0FBN0RELDREQTZEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzc2VtYmx5IH0gZnJvbSAnQGpzaWkvc3BlYyc7XG5pbXBvcnQgeyBtaW5WZXJzaW9uIH0gZnJvbSAnc2VtdmVyJztcblxuZXhwb3J0IGNvbnN0IGVudW0gQ29uc3RydWN0RnJhbWV3b3JrTmFtZSB7XG4gIEFXU19DREsgPSAnYXdzLWNkaycsXG4gIENESzhTID0gJ2NkazhzJyxcbiAgQ0RLVEYgPSAnY2RrdGYnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnN0cnVjdEZyYW1ld29yayB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY29uc3RydWN0IGZyYW1ld29yay5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IENvbnN0cnVjdEZyYW1ld29ya05hbWU7XG5cbiAgLyoqXG4gICAqIFRoZSBtYWpvciB2ZXJzaW9uIG9mIHRoZSBjb25zdHJ1Y3QgZnJhbWV3b3JrIHRoYXQgaXMgdXNlZCwgaWYgaXQgY291bGQgYmVcbiAgICogaWRlbnRpZmllZC5cbiAgICovXG4gIHJlYWRvbmx5IG1ham9yVmVyc2lvbj86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHRoZSBDb25zdHJ1Y3QgZnJhbWV3b3JrIHVzZWQgYnkgdGhlIHByb3ZpZGVkIGFzc2VtYmx5LlxuICpcbiAqIEBwYXJhbSBhc3NlbWJseSB0aGUgYXNzZW1ibHkgZm9yIHdoaWNoIGEgY29uc3RydWN0IGZyYW1ld29yayBzaG91bGQgYmVcbiAqICAgICAgICAgICAgICAgICBpZGVudGlmaWVkLlxuICpcbiAqIEByZXR1cm5zIGEgY29uc3RydWN0IGZyYW1ld29yayBpZiBvbmUgY291bGQgYmUgaWRlbnRpZmllZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRldGVjdENvbnN0cnVjdEZyYW1ld29yayhhc3NlbWJseTogQXNzZW1ibHkpOiBDb25zdHJ1Y3RGcmFtZXdvcmsgfCB1bmRlZmluZWQge1xuICBsZXQgbmFtZTogQ29uc3RydWN0RnJhbWV3b3JrWyduYW1lJ10gfCB1bmRlZmluZWQ7XG4gIGxldCBuYW1lQW1iaWd1b3VzID0gZmFsc2U7XG4gIGxldCBtYWpvclZlcnNpb246IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgbGV0IG1ham9yVmVyc2lvbkFtYmlndW91cyA9IGZhbHNlO1xuXG4gIC8vIGV4Y2VwdGlvbjogd2UgYXNzdW1lIGFsbCBAY2RrdGYvIGxpYnJhcmllcyBhcmUgY2RrdGYsIGV2ZW4gaWYgdGhleVxuICAvLyBhbHNvIHRha2Ugb3RoZXIgQ0RLIHR5cGVzIGFzIGRlcGVuZGVuY2llc1xuICBpZiAoYXNzZW1ibHkubmFtZS5zdGFydHNXaXRoKCdAY2RrdGYvJykpIHtcbiAgICBuYW1lID0gQ29uc3RydWN0RnJhbWV3b3JrTmFtZS5DREtURjtcbiAgICBpZiAoJ2Nka3RmJyBpbiAoYXNzZW1ibHkuZGVwZW5kZW5jeUNsb3N1cmUgPz8ge30pKSB7XG4gICAgICBkZXRlY3RDb25zdHJ1Y3RGcmFtZXdvcmtQYWNrYWdlKCdjZGt0ZicpO1xuICAgIH1cbiAgICByZXR1cm4geyBuYW1lLCBtYWpvclZlcnNpb24gfTtcbiAgfVxuXG4gIGRldGVjdENvbnN0cnVjdEZyYW1ld29ya1BhY2thZ2UoYXNzZW1ibHkubmFtZSwgYXNzZW1ibHkudmVyc2lvbik7XG4gIGZvciAoY29uc3QgZGVwTmFtZSBvZiBPYmplY3Qua2V5cyhhc3NlbWJseS5kZXBlbmRlbmN5Q2xvc3VyZSA/PyB7fSkpIHtcbiAgICBkZXRlY3RDb25zdHJ1Y3RGcmFtZXdvcmtQYWNrYWdlKGRlcE5hbWUpO1xuICAgIGlmIChuYW1lQW1iaWd1b3VzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuYW1lICYmIHsgbmFtZSwgbWFqb3JWZXJzaW9uOiBtYWpvclZlcnNpb25BbWJpZ3VvdXMgPyB1bmRlZmluZWQgOiBtYWpvclZlcnNpb24gfTtcblxuICBmdW5jdGlvbiBkZXRlY3RDb25zdHJ1Y3RGcmFtZXdvcmtQYWNrYWdlKHBhY2thZ2VOYW1lOiBzdHJpbmcsIHZlcnNpb25SYW5nZSA9IGFzc2VtYmx5LmRlcGVuZGVuY2llcz8uW3BhY2thZ2VOYW1lXSk6IHZvaWQge1xuICAgIGlmIChwYWNrYWdlTmFtZS5zdGFydHNXaXRoKCdAYXdzLWNkay8nKSB8fCBwYWNrYWdlTmFtZSA9PT0gJ2F3cy1jZGstbGliJyB8fCBwYWNrYWdlTmFtZSA9PT0gJ21vbm9jZGsnKSB7XG4gICAgICBpZiAobmFtZSAmJiBuYW1lICE9PSBDb25zdHJ1Y3RGcmFtZXdvcmtOYW1lLkFXU19DREspIHtcbiAgICAgICAgLy8gSWRlbnRpZmllZCBtdWx0aXBsZSBjYW5kaWRhdGVzLCBzbyByZXR1cm5pbmcgYW1iaWd1b3VzLi4uXG4gICAgICAgIG5hbWVBbWJpZ3VvdXMgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBuYW1lID0gQ29uc3RydWN0RnJhbWV3b3JrTmFtZS5BV1NfQ0RLO1xuICAgIH0gZWxzZSBpZiAocGFja2FnZU5hbWUgPT09ICdjZGt0ZicpIHtcbiAgICAgIGlmIChuYW1lICYmIG5hbWUgIT09IENvbnN0cnVjdEZyYW1ld29ya05hbWUuQ0RLVEYpIHtcbiAgICAgICAgLy8gSWRlbnRpZmllZCBtdWx0aXBsZSBjYW5kaWRhdGVzLCBzbyByZXR1cm5pbmcgYW1iaWd1b3VzLi4uXG4gICAgICAgIG5hbWVBbWJpZ3VvdXMgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBuYW1lID0gQ29uc3RydWN0RnJhbWV3b3JrTmFtZS5DREtURjtcbiAgICB9IGVsc2UgaWYgKHBhY2thZ2VOYW1lID09PSAnY2RrOHMnIHx8IC9eY2RrOHMtcGx1cyg/Oi0oPzoxN3wyMHwyMXwyMikpPyQvLnRlc3QocGFja2FnZU5hbWUpKSB7XG4gICAgICBpZiAobmFtZSAmJiBuYW1lICE9PSBDb25zdHJ1Y3RGcmFtZXdvcmtOYW1lLkNESzhTKSB7XG4gICAgICAgIC8vIElkZW50aWZpZWQgbXVsdGlwbGUgY2FuZGlkYXRlcywgc28gcmV0dXJuaW5nIGFtYmlndW91cy4uLlxuICAgICAgICBuYW1lQW1iaWd1b3VzID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbmFtZSA9IENvbnN0cnVjdEZyYW1ld29ya05hbWUuQ0RLOFM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHZlcnNpb25SYW5nZSkge1xuICAgICAgY29uc3QgbWFqb3IgPSBtaW5WZXJzaW9uKHZlcnNpb25SYW5nZSk/Lm1ham9yO1xuICAgICAgaWYgKG1ham9yVmVyc2lvbiAhPSBudWxsICYmIG1ham9yVmVyc2lvbiAhPT0gbWFqb3IpIHtcbiAgICAgICAgLy8gSWRlbnRpZmllZCBtdWx0aXBsZSBjYW5kaWRhdGVzLCBzbyB0aGlzIGlzIGFtYmlndW91cy4uLlxuICAgICAgICBtYWpvclZlcnNpb25BbWJpZ3VvdXMgPSB0cnVlO1xuICAgICAgfVxuICAgICAgbWFqb3JWZXJzaW9uID0gbWFqb3I7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxufVxuIl19
96
+ exports.detectConstructFrameworks = detectConstructFrameworks;
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWV3b3JrLWRldGVjdGlvbi5sYW1iZGEtc2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tlbmQvaW5nZXN0aW9uL2ZyYW1ld29yay1kZXRlY3Rpb24ubGFtYmRhLXNoYXJlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpRUFBaUU7QUFDakUsaUNBQWtDO0FBR2xDLG1DQUFvQztBQXNCcEM7OztHQUdHO0FBQ0gsTUFBTSxrQkFBa0IsR0FBOEQ7SUFDcEYseUJBQWdDLEVBQUUsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxLQUFLLGFBQWEsSUFBSSxJQUFJLEtBQUssU0FBUztJQUNoSSxxQkFBOEIsRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxtQ0FBbUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3BILDJFQUEyRTtJQUMzRSxzRUFBc0U7SUFDdEUscUJBQThCLEVBQUUsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxPQUFPO0NBQ25FLENBQUM7QUFFRjs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IseUJBQXlCLENBQUMsUUFBa0I7O0lBQzFELDBFQUEwRTtJQUMxRSw0RUFBNEU7SUFDNUUsNEVBQTRFO0lBQzVFLDZCQUE2QjtJQUM3QixNQUFNLGtCQUFrQixHQUF5RSxFQUFFLENBQUM7SUFFcEcsK0JBQStCLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakUsS0FBSyxNQUFNLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxPQUFDLFFBQVEsQ0FBQyxpQkFBaUIsbUNBQUksRUFBRSxDQUFDLEVBQUU7UUFDbkUsK0JBQStCLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDMUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLEtBQUssRUFBc0IsQ0FBQztJQUNuRCxLQUFLLE1BQU0sQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1FBQzlFLE1BQU0sSUFBSSxHQUFHLGFBQXVDLENBQUM7UUFDckQsSUFBSSxZQUFZLEtBQUssU0FBUyxFQUFFO1lBQzlCLFNBQVM7U0FDVjthQUFNLElBQUksWUFBWSxLQUFLLFdBQVcsSUFBSSxZQUFZLEtBQUssU0FBUyxFQUFFO1lBQ3JFLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQzNCO2FBQU0sSUFBSSxPQUFPLFlBQVksS0FBSyxRQUFRLEVBQUU7WUFDM0MsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1NBQ3pDO0tBQ0Y7SUFFRCxPQUFPLFVBQVUsQ0FBQztJQUVsQjs7O09BR0c7SUFDSCxTQUFTLCtCQUErQixDQUFDLFdBQW1CLEVBQUUsWUFBbUQ7O3FDQUFuRCxFQUFBLHFCQUFlLFFBQVEsQ0FBQyxZQUFZLDBDQUFHLFdBQVcsQ0FBQztRQUMvRyxLQUFLLE1BQU0sYUFBYSxJQUFJLG1FQUE0RixFQUFFO1lBQ3hILE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDM0QsSUFBSSxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDakMsTUFBTSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxnQkFBZ0IsS0FBSyxXQUFXLEVBQUU7b0JBQ3BDLG1FQUFtRTtvQkFDbkUsNkRBQTZEO29CQUM3RCwwQkFBMEI7b0JBQzFCLE9BQU87aUJBQ1I7Z0JBRUQsTUFBTSxZQUFZLFNBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFDLG1CQUFVLENBQUMsWUFBWSxDQUFDLDBDQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLG1DQUFJLFNBQVMsQ0FBQztnQkFFL0YsSUFBSSxnQkFBZ0IsS0FBSyxTQUFTLEVBQUU7b0JBQ2xDLDhEQUE4RDtvQkFDOUQsMkRBQTJEO29CQUMzRCxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxZQUFZLENBQUM7b0JBQ2pELE9BQU87aUJBQ1I7cUJBQU0sSUFBSSxnQkFBZ0IsS0FBSyxTQUFTLEVBQUU7b0JBQ3pDLHFFQUFxRTtvQkFDckUscUVBQXFFO29CQUNyRSxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxZQUFZLENBQUM7b0JBQ2pELE9BQU87aUJBQ1I7cUJBQU07b0JBQ0wsMERBQTBEO29CQUMxRCxNQUFNLENBQUMsT0FBTyxnQkFBZ0IsS0FBSyxRQUFRLENBQUMsQ0FBQztvQkFFN0MsNkRBQTZEO29CQUM3RCxnRUFBZ0U7b0JBQ2hFLG1CQUFtQjtvQkFDbkIsSUFBSSxZQUFZLEtBQUssU0FBUyxJQUFJLGdCQUFnQixLQUFLLFlBQVksRUFBRTt3QkFDbkUsa0JBQWtCLENBQUMsYUFBYSxDQUFDLEdBQUcsV0FBVyxDQUFDO3FCQUNqRDtvQkFDRCxPQUFPO2lCQUNSO2FBQ0Y7U0FDRjtJQUNILENBQUM7QUFDSCxDQUFDO0FBckVELDhEQXFFQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5pbXBvcnQgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7XG5cbmltcG9ydCB7IEFzc2VtYmx5IH0gZnJvbSAnQGpzaWkvc3BlYyc7XG5pbXBvcnQgeyBtaW5WZXJzaW9uIH0gZnJvbSAnc2VtdmVyJztcblxuXG5leHBvcnQgY29uc3QgZW51bSBDb25zdHJ1Y3RGcmFtZXdvcmtOYW1lIHtcbiAgQVdTX0NESyA9ICdhd3MtY2RrJyxcbiAgQ0RLOFMgPSAnY2RrOHMnLFxuICBDREtURiA9ICdjZGt0ZicsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RydWN0RnJhbWV3b3JrIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBjb25zdHJ1Y3QgZnJhbWV3b3JrLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogQ29uc3RydWN0RnJhbWV3b3JrTmFtZTtcblxuICAvKipcbiAgICogVGhlIG1ham9yIHZlcnNpb24gb2YgdGhlIGNvbnN0cnVjdCBmcmFtZXdvcmsgdGhhdCBpcyB1c2VkLCBpZiBpdCBjb3VsZCBiZVxuICAgKiBpZGVudGlmaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbWFqb3JWZXJzaW9uPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFByZWRpY2F0ZXMgdGhhdCBkZXRlcm1pbmUgd2hldGhlciBhIHBhY2thZ2UgaXMgaW5kaWNhdGl2ZSBvZiB0aGUgQ0RLXG4gKiBmcmFtZXdvcmsgc29tZW9uZSBpcyB1c2luZy5cbiAqL1xuY29uc3QgRlJBTUVXT1JLX01BVENIRVJTOiBSZWNvcmQ8Q29uc3RydWN0RnJhbWV3b3JrTmFtZSwgKG5hbWU6IHN0cmluZykgPT4gYm9vbGVhbj4gPSB7XG4gIFtDb25zdHJ1Y3RGcmFtZXdvcmtOYW1lLkFXU19DREtdOiAobmFtZTogc3RyaW5nKSA9PiBuYW1lLnN0YXJ0c1dpdGgoJ0Bhd3MtY2RrLycpIHx8IG5hbWUgPT09ICdhd3MtY2RrLWxpYicgfHwgbmFtZSA9PT0gJ21vbm9jZGsnLFxuICBbQ29uc3RydWN0RnJhbWV3b3JrTmFtZS5DREs4U106IChuYW1lOiBzdHJpbmcpID0+IG5hbWUgPT09ICdjZGs4cycgfHwgL15jZGs4cy1wbHVzKD86LSg/OjE3fDIwfDIxfDIyKSk/JC8udGVzdChuYW1lKSxcbiAgLy8gY2RrdGYgcHJvdmlkZXJzIGRlcGVuZGVuY2llcyAoXCJAY2RrdGYvcHJvdmlkZXIteHh4XCIpIGFyZSBtYWpvciB2ZXJzaW9uZWRcbiAgLy8gZGlmZmVyZW50bHkgdGhhbiB0aGUgY29yZSBsaWJyYXJ5LCBzbyBkbyBub3QgdGFrZSB0aGVtIGludG8gYWNjb3VudFxuICBbQ29uc3RydWN0RnJhbWV3b3JrTmFtZS5DREtURl06IChuYW1lOiBzdHJpbmcpID0+IG5hbWUgPT09ICdjZGt0ZicsXG59O1xuXG4vKipcbiAqIERldGVybWluZXMgdGhlIENvbnN0cnVjdCBmcmFtZXdvcmsgdXNlZCBieSB0aGUgcHJvdmlkZWQgYXNzZW1ibHkuXG4gKlxuICogQHBhcmFtIGFzc2VtYmx5IHRoZSBhc3NlbWJseSBmb3Igd2hpY2ggYSBjb25zdHJ1Y3QgZnJhbWV3b3JrIHNob3VsZCBiZVxuICogICAgICAgICAgICAgICAgIGlkZW50aWZpZWQuXG4gKlxuICogQHJldHVybnMgYSBjb25zdHJ1Y3QgZnJhbWV3b3JrIGlmIG9uZSBjb3VsZCBiZSBpZGVudGlmaWVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0Q29uc3RydWN0RnJhbWV3b3Jrcyhhc3NlbWJseTogQXNzZW1ibHkpOiBDb25zdHJ1Y3RGcmFtZXdvcmtbXSB7XG4gIC8vIFwibm90LXN1cmVcIiBtZWFucyB3ZSBoYXZlbid0IHNlZW4gYSBtYWpvciB2ZXJzaW9uIGZvciB0aGUgZnJhbWV3b3JrIHlldCxcbiAgLy8gZS5nLiBpbiB0aGUgY2FzZSBvZiBhIHRyYW5zaXRpdmUgZGVwZW5kZW5jeSB3aGVyZSB0aGUgaW5mbyBpc24ndCBwcm92aWRlZFxuICAvLyBcImFtYmlndW91c1wiIG1lYW5zIHdlIGhhdmUgc2VlbiBtdWx0aXBsZSBtYWpvciB2ZXJzaW9ucyBzbyBpdCdzIGltcG9zc2libGVcbiAgLy8gdG8gcmVzb2x2ZSBhIHNpbmdsZSBudW1iZXJcbiAgY29uc3QgZGV0ZWN0ZWRGcmFtZXdvcmtzOiB7IFtQIGluIENvbnN0cnVjdEZyYW1ld29ya05hbWVdPzogbnVtYmVyIHwgJ25vLWRhdGEnIHwgJ2FtYmlndW91cycgfSA9IHt9O1xuXG4gIGRldGVjdENvbnN0cnVjdEZyYW1ld29ya1BhY2thZ2UoYXNzZW1ibHkubmFtZSwgYXNzZW1ibHkudmVyc2lvbik7XG4gIGZvciAoY29uc3QgZGVwTmFtZSBvZiBPYmplY3Qua2V5cyhhc3NlbWJseS5kZXBlbmRlbmN5Q2xvc3VyZSA/PyB7fSkpIHtcbiAgICBkZXRlY3RDb25zdHJ1Y3RGcmFtZXdvcmtQYWNrYWdlKGRlcE5hbWUpO1xuICB9XG5cbiAgY29uc3QgZnJhbWV3b3JrcyA9IG5ldyBBcnJheTxDb25zdHJ1Y3RGcmFtZXdvcms+KCk7XG4gIGZvciAoY29uc3QgW2ZyYW1ld29ya05hbWUsIG1ham9yVmVyc2lvbl0gb2YgT2JqZWN0LmVudHJpZXMoZGV0ZWN0ZWRGcmFtZXdvcmtzKSkge1xuICAgIGNvbnN0IG5hbWUgPSBmcmFtZXdvcmtOYW1lIGFzIENvbnN0cnVjdEZyYW1ld29ya05hbWU7XG4gICAgaWYgKG1ham9yVmVyc2lvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9IGVsc2UgaWYgKG1ham9yVmVyc2lvbiA9PT0gJ2FtYmlndW91cycgfHwgbWFqb3JWZXJzaW9uID09PSAnbm8tZGF0YScpIHtcbiAgICAgIGZyYW1ld29ya3MucHVzaCh7IG5hbWUgfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbWFqb3JWZXJzaW9uID09PSAnbnVtYmVyJykge1xuICAgICAgZnJhbWV3b3Jrcy5wdXNoKHsgbmFtZSwgbWFqb3JWZXJzaW9uIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmcmFtZXdvcmtzO1xuXG4gIC8qKlxuICAgKiBBbmFseXNlcyB0aGUgcGFja2FnZSBuYW1lIGFuZCB2ZXJzaW9uIHJhbmdlLCBhbmQgdXBkYXRlc1xuICAgKiBgZGV0ZWN0ZWRGcmFtZXdvcmtzYCBmcm9tIHRoZSBwYXJlbnQgc2NvcGUgYXBwcm9wcmlhdGVseVxuICAgKi9cbiAgZnVuY3Rpb24gZGV0ZWN0Q29uc3RydWN0RnJhbWV3b3JrUGFja2FnZShwYWNrYWdlTmFtZTogc3RyaW5nLCB2ZXJzaW9uUmFuZ2UgPSBhc3NlbWJseS5kZXBlbmRlbmNpZXM/LltwYWNrYWdlTmFtZV0pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGZyYW1ld29ya05hbWUgb2YgW0NvbnN0cnVjdEZyYW1ld29ya05hbWUuQVdTX0NESywgQ29uc3RydWN0RnJhbWV3b3JrTmFtZS5DREs4UywgQ29uc3RydWN0RnJhbWV3b3JrTmFtZS5DREtURl0pIHtcbiAgICAgIGNvbnN0IG1hdGNoZXNGcmFtZXdvcmsgPSBGUkFNRVdPUktfTUFUQ0hFUlNbZnJhbWV3b3JrTmFtZV07XG4gICAgICBpZiAobWF0Y2hlc0ZyYW1ld29yayhwYWNrYWdlTmFtZSkpIHtcbiAgICAgICAgY29uc3QgZnJhbWV3b3JrVmVyc2lvbiA9IGRldGVjdGVkRnJhbWV3b3Jrc1tmcmFtZXdvcmtOYW1lXTtcbiAgICAgICAgaWYgKGZyYW1ld29ya1ZlcnNpb24gPT09ICdhbWJpZ3VvdXMnKSB7XG4gICAgICAgICAgLy8gV2UgaGF2ZSBhbHJlYWR5IHNlZW4gbXVsdGlwbGUgbWFqb3IgdmVyc2lvbnMgYW5kIGhhdmUgZGV0ZXJtaW5lZFxuICAgICAgICAgIC8vIHRoZSBtYWpvciB2ZXJzaW9uIGlzIGFtYmlndW91cywgc28gdGhpcyBwYWNrYWdlIHdvbid0IGdpdmVcbiAgICAgICAgICAvLyB1cyBhbnkgbmV3IGluZm9ybWF0aW9uLlxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhY2thZ2VNYWpvciA9ICh2ZXJzaW9uUmFuZ2UgPyBtaW5WZXJzaW9uKHZlcnNpb25SYW5nZSk/Lm1ham9yIDogdW5kZWZpbmVkKSA/PyAnbm8tZGF0YSc7XG5cbiAgICAgICAgaWYgKGZyYW1ld29ya1ZlcnNpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIEl0J3MgdGhlIGZpcnN0IHRpbWUgc2VlaW5nIHRoaXMgbWFqb3IgdmVyc2lvbiwgc28gd2UgcmVjb3JkXG4gICAgICAgICAgLy8gd2hhdGV2ZXIgbmV3IGluZm9ybWF0aW9uIHdlIGZvdW5kIChcIm5vLWRhdGFcIiBvciBudW1iZXIpLlxuICAgICAgICAgIGRldGVjdGVkRnJhbWV3b3Jrc1tmcmFtZXdvcmtOYW1lXSA9IHBhY2thZ2VNYWpvcjtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoZnJhbWV3b3JrVmVyc2lvbiA9PT0gJ25vLWRhdGEnKSB7XG4gICAgICAgICAgLy8gV2UndmUgc2VlbiB0aGlzIGZyYW1ld29yayBiZWZvcmUgYnV0IGhhdmVuJ3Qgc2VlbiBhIG1ham9yIHZlcnNpb24sXG4gICAgICAgICAgLy8gc28gcmVjb3JkIHdoYXRldmVyIG5ldyBpbmZvcm1hdGlvbiB3ZSBmb3VuZCAoXCJuby1kYXRhXCIgb3IgbnVtYmVyKS5cbiAgICAgICAgICBkZXRlY3RlZEZyYW1ld29ya3NbZnJhbWV3b3JrTmFtZV0gPSBwYWNrYWdlTWFqb3I7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIGZyYW1ld29ya1ZlcnNpb24gY2FuIG9ubHkgYmUgYSBNViBudW1iZXJcbiAgICAgICAgICBhc3NlcnQodHlwZW9mIGZyYW1ld29ya1ZlcnNpb24gPT09ICdudW1iZXInKTtcblxuICAgICAgICAgIC8vIFdlJ3ZlIHNlZW4gZXZpZGVuY2Ugb2YgYSBwYXJ0aWN1bGFyIG1ham9yIHZlcnNpb24gZm9yIHRoaXNcbiAgICAgICAgICAvLyBmcmFtZXdvcmssIHNvIG9ubHkgdXBkYXRlIGlmIHRoaXMgcGFja2FnZSBjb25mbGljdHMgd2l0aCB3aGF0XG4gICAgICAgICAgLy8gd2UncmUgZXhwZWN0aW5nLlxuICAgICAgICAgIGlmIChwYWNrYWdlTWFqb3IgIT09ICduby1kYXRhJyAmJiBmcmFtZXdvcmtWZXJzaW9uICE9PSBwYWNrYWdlTWFqb3IpIHtcbiAgICAgICAgICAgIGRldGVjdGVkRnJhbWV3b3Jrc1tmcmFtZXdvcmtOYW1lXSA9ICdhbWJpZ3VvdXMnO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==