cdk8s-cli 2.116.0 → 2.118.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.
package/.projenrc.ts CHANGED
@@ -60,7 +60,6 @@ const project = new Cdk8sTeamTypeScriptProject({
60
60
  ],
61
61
  backport: true,
62
62
  backportBranches: ['1.x'],
63
-
64
63
  });
65
64
 
66
65
  project.tsconfig?.addInclude('src/schemas/*.json');
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const config_1 = require("../../config");
4
4
  const dispatch_1 = require("../../import/dispatch");
5
5
  const k8s_1 = require("../../import/k8s");
6
+ const util_1 = require("../../util");
6
7
  const config = (0, config_1.readConfigSync)();
7
8
  const DEFAULT_OUTDIR = 'imports';
8
9
  const LANGUAGES = ['typescript', 'python', 'java', 'go'];
@@ -12,7 +13,7 @@ class Command {
12
13
  this.describe = 'Imports API objects to your app by generating constructs.';
13
14
  this.aliases = ['gen', 'import', 'generate'];
14
15
  this.builder = (args) => args
15
- .positional('SPEC', { default: config.imports, desc: 'import spec with the syntax [NAME:=]SPEC where NAME is an optional module name and supported SPEC are: k8s, crd.yaml, https://domain/crd.yaml, github:account/repo[@VERSION]).', array: true })
16
+ .positional('SPEC', { default: config === null || config === void 0 ? void 0 : config.imports, desc: 'import spec with the syntax [NAME:=]SPEC where NAME is an optional module name and supported SPEC are: k8s, crd.yaml, https://domain/crd.yaml, github:account/repo[@VERSION]).', array: true })
16
17
  .example('cdk8s import k8s', `Imports Kubernetes API objects to imports/k8s.ts. Defaults to ${k8s_1.DEFAULT_API_VERSION}`)
17
18
  .example('cdk8s import k8s --no-class-prefix', 'Imports Kubernetes API objects without the "Kube" prefix')
18
19
  .example('cdk8s import k8s@1.13.0', 'Imports a specific version of the Kubernetes API')
@@ -23,12 +24,12 @@ class Command {
23
24
  .option('output', { default: DEFAULT_OUTDIR, type: 'string', desc: 'Output directory', alias: 'o' })
24
25
  .option('exclude', { type: 'array', desc: 'Do not import types that match these regular expressions. They will be represented as the "any" type (only for "k8s")' })
25
26
  .option('class-prefix', { type: 'string', desc: 'A prefix to add to all generated class names. By default, this is "Kube" for "k8s" imports and disabled for CRD imports. Use --no-class-prefix to disable. Must be PascalCase' })
26
- .option('language', { default: config.language, demand: true, type: 'string', desc: 'Output programming language', alias: 'l', choices: LANGUAGES });
27
+ .option('language', { default: config === null || config === void 0 ? void 0 : config.language, demand: true, type: 'string', desc: 'Output programming language', alias: 'l', choices: LANGUAGES });
27
28
  }
28
29
  async handler(argv) {
29
30
  const classNamePrefix = argv.classPrefix === false ? '' : argv.classPrefix;
30
31
  const imports = Array.isArray(argv.spec) ? argv.spec : [argv.spec];
31
- const specs = imports.filter(spec => spec != null).map(parseImports);
32
+ const specs = imports.filter(spec => spec != null).map(util_1.parseImports);
32
33
  await (0, dispatch_1.importDispatch)(specs, argv, {
33
34
  outdir: argv.output,
34
35
  targetLanguage: argv.language,
@@ -37,25 +38,5 @@ class Command {
37
38
  });
38
39
  }
39
40
  }
40
- function parseImports(spec) {
41
- const splitImport = spec.split(dispatch_1.PREFIX_DELIM);
42
- // k8s@x.y.z
43
- // crd.yaml
44
- // url.com/crd.yaml
45
- if (splitImport.length === 1) {
46
- return {
47
- source: spec,
48
- };
49
- }
50
- // crd=crd.yaml
51
- // crd=url.com/crd.yaml
52
- if (splitImport.length === 2) {
53
- return {
54
- moduleNamePrefix: splitImport[0],
55
- source: splitImport[1],
56
- };
57
- }
58
- throw new Error('Unable to parse import specification. Syntax is [NAME:=]SPEC');
59
- }
60
41
  module.exports = new Command();
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL2ltcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLHlDQUEwRDtBQUMxRCxvREFBcUU7QUFDckUsMENBQXVEO0FBRXZELE1BQU0sTUFBTSxHQUFHLElBQUEsdUJBQWMsR0FBRSxDQUFDO0FBRWhDLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQztBQUNqQyxNQUFNLFNBQVMsR0FBRyxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRXpELE1BQU0sT0FBTztJQUFiO1FBQ2tCLFlBQU8sR0FBRyxlQUFlLENBQUM7UUFDMUIsYUFBUSxHQUFHLDJEQUEyRCxDQUFDO1FBQ3ZFLFlBQU8sR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFeEMsWUFBTyxHQUFHLENBQUMsSUFBZ0IsRUFBRSxFQUFFLENBQUMsSUFBSTthQUNqRCxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLGdMQUFnTCxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUNwUCxPQUFPLENBQUMsa0JBQWtCLEVBQUUsaUVBQWlFLHlCQUFtQixFQUFFLENBQUM7YUFDbkgsT0FBTyxDQUFDLG9DQUFvQyxFQUFFLDBEQUEwRCxDQUFDO2FBQ3pHLE9BQU8sQ0FBQyx5QkFBeUIsRUFBRSxrREFBa0QsQ0FBQzthQUN0RixPQUFPLENBQUMsMENBQTBDLEVBQUUsMkVBQTJFLENBQUM7YUFDaEksT0FBTyxDQUFDLDhDQUE4QyxFQUFFLHFHQUFxRyxDQUFDO2FBQzlKLE9BQU8sQ0FBQyxrREFBa0QsRUFBRSx5REFBeUQsQ0FBQzthQUV0SCxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLHlGQUF5RixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQzthQUNoTCxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7YUFDbkcsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLHVIQUF1SCxFQUFFLENBQUM7YUFDbkssTUFBTSxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLCtLQUErSyxFQUFFLENBQUM7YUFDak8sTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsNkJBQTZCLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQWN6SixDQUFDO0lBWlEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFTO1FBQzVCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDM0UsTUFBTSxPQUFPLEdBQWEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdFLE1BQU0sS0FBSyxHQUFpQixPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVuRixNQUFNLElBQUEseUJBQWMsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ2hDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixjQUFjLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDN0IsZUFBZTtZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFRCxTQUFTLFlBQVksQ0FBQyxJQUFZO0lBQ2hDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsdUJBQVksQ0FBQyxDQUFDO0lBRTdDLFlBQVk7SUFDWixXQUFXO0lBQ1gsbUJBQW1CO0lBQ25CLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDNUIsT0FBTztZQUNMLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FBQztLQUNIO0lBRUQsZUFBZTtJQUNmLHVCQUF1QjtJQUN2QixJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQzVCLE9BQU87WUFDTCxnQkFBZ0IsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCLENBQUM7S0FDSDtJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsOERBQThELENBQUMsQ0FBQztBQUNsRixDQUFDO0FBRUQsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgeWFyZ3MgZnJvbSAneWFyZ3MnO1xuaW1wb3J0IHsgcmVhZENvbmZpZ1N5bmMsIEltcG9ydFNwZWMgfSBmcm9tICcuLi8uLi9jb25maWcnO1xuaW1wb3J0IHsgUFJFRklYX0RFTElNLCBpbXBvcnREaXNwYXRjaCB9IGZyb20gJy4uLy4uL2ltcG9ydC9kaXNwYXRjaCc7XG5pbXBvcnQgeyBERUZBVUxUX0FQSV9WRVJTSU9OIH0gZnJvbSAnLi4vLi4vaW1wb3J0L2s4cyc7XG5cbmNvbnN0IGNvbmZpZyA9IHJlYWRDb25maWdTeW5jKCk7XG5cbmNvbnN0IERFRkFVTFRfT1VURElSID0gJ2ltcG9ydHMnO1xuY29uc3QgTEFOR1VBR0VTID0gWyd0eXBlc2NyaXB0JywgJ3B5dGhvbicsICdqYXZhJywgJ2dvJ107XG5cbmNsYXNzIENvbW1hbmQgaW1wbGVtZW50cyB5YXJncy5Db21tYW5kTW9kdWxlIHtcbiAgcHVibGljIHJlYWRvbmx5IGNvbW1hbmQgPSAnaW1wb3J0IFtTUEVDXSc7XG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmliZSA9ICdJbXBvcnRzIEFQSSBvYmplY3RzIHRvIHlvdXIgYXBwIGJ5IGdlbmVyYXRpbmcgY29uc3RydWN0cy4nO1xuICBwdWJsaWMgcmVhZG9ubHkgYWxpYXNlcyA9IFsnZ2VuJywgJ2ltcG9ydCcsICdnZW5lcmF0ZSddO1xuXG4gIHB1YmxpYyByZWFkb25seSBidWlsZGVyID0gKGFyZ3M6IHlhcmdzLkFyZ3YpID0+IGFyZ3NcbiAgICAucG9zaXRpb25hbCgnU1BFQycsIHsgZGVmYXVsdDogY29uZmlnLmltcG9ydHMsIGRlc2M6ICdpbXBvcnQgc3BlYyB3aXRoIHRoZSBzeW50YXggW05BTUU6PV1TUEVDIHdoZXJlIE5BTUUgaXMgYW4gb3B0aW9uYWwgbW9kdWxlIG5hbWUgYW5kIHN1cHBvcnRlZCBTUEVDIGFyZTogazhzLCBjcmQueWFtbCwgaHR0cHM6Ly9kb21haW4vY3JkLnlhbWwsIGdpdGh1YjphY2NvdW50L3JlcG9bQFZFUlNJT05dKS4nLCBhcnJheTogdHJ1ZSB9KVxuICAgIC5leGFtcGxlKCdjZGs4cyBpbXBvcnQgazhzJywgYEltcG9ydHMgS3ViZXJuZXRlcyBBUEkgb2JqZWN0cyB0byBpbXBvcnRzL2s4cy50cy4gRGVmYXVsdHMgdG8gJHtERUZBVUxUX0FQSV9WRVJTSU9OfWApXG4gICAgLmV4YW1wbGUoJ2NkazhzIGltcG9ydCBrOHMgLS1uby1jbGFzcy1wcmVmaXgnLCAnSW1wb3J0cyBLdWJlcm5ldGVzIEFQSSBvYmplY3RzIHdpdGhvdXQgdGhlIFwiS3ViZVwiIHByZWZpeCcpXG4gICAgLmV4YW1wbGUoJ2NkazhzIGltcG9ydCBrOHNAMS4xMy4wJywgJ0ltcG9ydHMgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBLdWJlcm5ldGVzIEFQSScpXG4gICAgLmV4YW1wbGUoJ2NkazhzIGltcG9ydCBqZW5raW5zLmlvX2plbmtpbnNfY3JkLnlhbWwnLCAnSW1wb3J0cyBjb25zdHJ1Y3RzIGZvciB0aGUgSmVua2lucyBjdXN0b20gcmVzb3VyY2UgZGVmaW5pdGlvbiBmcm9tIGEgZmlsZScpXG4gICAgLmV4YW1wbGUoJ2NkazhzIGltcG9ydCBtYXR0ZXJtb3N0Oj1tYXR0ZXJtb3N0X2NyZC55YW1sJywgJ0ltcG9ydHMgY29uc3RydWN0cyBmb3IgdGhlIG1hdHRlcm1vc3QgY2x1c3RlciBjdXN0b20gcmVzb3VyY2UgZGVmaW5pdGlvbiB1c2luZyBhIGN1c3RvbSBtb2R1bGUgbmFtZScpXG4gICAgLmV4YW1wbGUoJ2NkazhzIGltcG9ydCBnaXRodWI6Y3Jvc3NwbGFuZS9jcm9zc3BsYW5lQDAuMTQuMCcsICdJbXBvcnRzIGNvbnN0cnVjdHMgZm9yIGEgR2l0SHViIHJlcG8gdXNpbmcgZG9jLmNyZHMuZGV2JylcblxuICAgIC5vcHRpb24oJ3NhdmUnLCB7IHR5cGU6ICdib29sZWFuJywgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0OiB0cnVlLCBkZXNjOiBcIkRvbnQgc2F2ZSB0aGUgaW1wb3J0IFVSTCBpbiB0aGUgJ2ltcG9ydHMnIHNlY3Rpb24gb2YgdGhlIGNkazhzLnlhbWwgY29uZmlndXJhdGlvbiBmaWxlLlwiLCBhbGlhczogJ3MnIH0pXG4gICAgLm9wdGlvbignb3V0cHV0JywgeyBkZWZhdWx0OiBERUZBVUxUX09VVERJUiwgdHlwZTogJ3N0cmluZycsIGRlc2M6ICdPdXRwdXQgZGlyZWN0b3J5JywgYWxpYXM6ICdvJyB9KVxuICAgIC5vcHRpb24oJ2V4Y2x1ZGUnLCB7IHR5cGU6ICdhcnJheScsIGRlc2M6ICdEbyBub3QgaW1wb3J0IHR5cGVzIHRoYXQgbWF0Y2ggdGhlc2UgcmVndWxhciBleHByZXNzaW9ucy4gVGhleSB3aWxsIGJlIHJlcHJlc2VudGVkIGFzIHRoZSBcImFueVwiIHR5cGUgKG9ubHkgZm9yIFwiazhzXCIpJyB9KVxuICAgIC5vcHRpb24oJ2NsYXNzLXByZWZpeCcsIHsgdHlwZTogJ3N0cmluZycsIGRlc2M6ICdBIHByZWZpeCB0byBhZGQgdG8gYWxsIGdlbmVyYXRlZCBjbGFzcyBuYW1lcy4gQnkgZGVmYXVsdCwgdGhpcyBpcyBcIkt1YmVcIiBmb3IgXCJrOHNcIiBpbXBvcnRzIGFuZCBkaXNhYmxlZCBmb3IgQ1JEIGltcG9ydHMuIFVzZSAtLW5vLWNsYXNzLXByZWZpeCB0byBkaXNhYmxlLiBNdXN0IGJlIFBhc2NhbENhc2UnIH0pXG4gICAgLm9wdGlvbignbGFuZ3VhZ2UnLCB7IGRlZmF1bHQ6IGNvbmZpZy5sYW5ndWFnZSwgZGVtYW5kOiB0cnVlLCB0eXBlOiAnc3RyaW5nJywgZGVzYzogJ091dHB1dCBwcm9ncmFtbWluZyBsYW5ndWFnZScsIGFsaWFzOiAnbCcsIGNob2ljZXM6IExBTkdVQUdFUyB9KTtcblxuICBwdWJsaWMgYXN5bmMgaGFuZGxlcihhcmd2OiBhbnkpIHtcbiAgICBjb25zdCBjbGFzc05hbWVQcmVmaXggPSBhcmd2LmNsYXNzUHJlZml4ID09PSBmYWxzZSA/ICcnIDogYXJndi5jbGFzc1ByZWZpeDtcbiAgICBjb25zdCBpbXBvcnRzOiBzdHJpbmdbXSA9IEFycmF5LmlzQXJyYXkoYXJndi5zcGVjKSA/IGFyZ3Yuc3BlYyA6IFthcmd2LnNwZWNdO1xuICAgIGNvbnN0IHNwZWNzOiBJbXBvcnRTcGVjW10gPSBpbXBvcnRzLmZpbHRlcihzcGVjID0+IHNwZWMgIT0gbnVsbCkubWFwKHBhcnNlSW1wb3J0cyk7XG5cbiAgICBhd2FpdCBpbXBvcnREaXNwYXRjaChzcGVjcywgYXJndiwge1xuICAgICAgb3V0ZGlyOiBhcmd2Lm91dHB1dCxcbiAgICAgIHRhcmdldExhbmd1YWdlOiBhcmd2Lmxhbmd1YWdlLFxuICAgICAgY2xhc3NOYW1lUHJlZml4LFxuICAgICAgc2F2ZTogYXJndi5zYXZlLFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlSW1wb3J0cyhzcGVjOiBzdHJpbmcpOiBJbXBvcnRTcGVjIHtcbiAgY29uc3Qgc3BsaXRJbXBvcnQgPSBzcGVjLnNwbGl0KFBSRUZJWF9ERUxJTSk7XG5cbiAgLy8gazhzQHgueS56XG4gIC8vIGNyZC55YW1sXG4gIC8vIHVybC5jb20vY3JkLnlhbWxcbiAgaWYgKHNwbGl0SW1wb3J0Lmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiB7XG4gICAgICBzb3VyY2U6IHNwZWMsXG4gICAgfTtcbiAgfVxuXG4gIC8vIGNyZD1jcmQueWFtbFxuICAvLyBjcmQ9dXJsLmNvbS9jcmQueWFtbFxuICBpZiAoc3BsaXRJbXBvcnQubGVuZ3RoID09PSAyKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZHVsZU5hbWVQcmVmaXg6IHNwbGl0SW1wb3J0WzBdLFxuICAgICAgc291cmNlOiBzcGxpdEltcG9ydFsxXSxcbiAgICB9O1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gcGFyc2UgaW1wb3J0IHNwZWNpZmljYXRpb24uIFN5bnRheCBpcyBbTkFNRTo9XVNQRUMnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ29tbWFuZCgpO1xuIl19
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL2ltcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLHlDQUEwRDtBQUMxRCxvREFBdUQ7QUFDdkQsMENBQXVEO0FBQ3ZELHFDQUEwQztBQUUxQyxNQUFNLE1BQU0sR0FBRyxJQUFBLHVCQUFjLEdBQUUsQ0FBQztBQUVoQyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUM7QUFDakMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUV6RCxNQUFNLE9BQU87SUFBYjtRQUNrQixZQUFPLEdBQUcsZUFBZSxDQUFDO1FBQzFCLGFBQVEsR0FBRywyREFBMkQsQ0FBQztRQUN2RSxZQUFPLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXhDLFlBQU8sR0FBRyxDQUFDLElBQWdCLEVBQUUsRUFBRSxDQUFDLElBQUk7YUFDakQsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxnTEFBZ0wsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDclAsT0FBTyxDQUFDLGtCQUFrQixFQUFFLGlFQUFpRSx5QkFBbUIsRUFBRSxDQUFDO2FBQ25ILE9BQU8sQ0FBQyxvQ0FBb0MsRUFBRSwwREFBMEQsQ0FBQzthQUN6RyxPQUFPLENBQUMseUJBQXlCLEVBQUUsa0RBQWtELENBQUM7YUFDdEYsT0FBTyxDQUFDLDBDQUEwQyxFQUFFLDJFQUEyRSxDQUFDO2FBQ2hJLE9BQU8sQ0FBQyw4Q0FBOEMsRUFBRSxxR0FBcUcsQ0FBQzthQUM5SixPQUFPLENBQUMsa0RBQWtELEVBQUUseURBQXlELENBQUM7YUFFdEgsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSx5RkFBeUYsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7YUFDaEwsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQ25HLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSx1SEFBdUgsRUFBRSxDQUFDO2FBQ25LLE1BQU0sQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSwrS0FBK0ssRUFBRSxDQUFDO2FBQ2pPLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLDZCQUE2QixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFjMUosQ0FBQztJQVpRLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBUztRQUM1QixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzNFLE1BQU0sT0FBTyxHQUFhLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3RSxNQUFNLEtBQUssR0FBaUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsbUJBQVksQ0FBQyxDQUFDO1FBRW5GLE1BQU0sSUFBQSx5QkFBYyxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDaEMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLGNBQWMsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUM3QixlQUFlO1lBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcbmltcG9ydCB7IHJlYWRDb25maWdTeW5jLCBJbXBvcnRTcGVjIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcbmltcG9ydCB7IGltcG9ydERpc3BhdGNoIH0gZnJvbSAnLi4vLi4vaW1wb3J0L2Rpc3BhdGNoJztcbmltcG9ydCB7IERFRkFVTFRfQVBJX1ZFUlNJT04gfSBmcm9tICcuLi8uLi9pbXBvcnQvazhzJztcbmltcG9ydCB7IHBhcnNlSW1wb3J0cyB9IGZyb20gJy4uLy4uL3V0aWwnO1xuXG5jb25zdCBjb25maWcgPSByZWFkQ29uZmlnU3luYygpO1xuXG5jb25zdCBERUZBVUxUX09VVERJUiA9ICdpbXBvcnRzJztcbmNvbnN0IExBTkdVQUdFUyA9IFsndHlwZXNjcmlwdCcsICdweXRob24nLCAnamF2YScsICdnbyddO1xuXG5jbGFzcyBDb21tYW5kIGltcGxlbWVudHMgeWFyZ3MuQ29tbWFuZE1vZHVsZSB7XG4gIHB1YmxpYyByZWFkb25seSBjb21tYW5kID0gJ2ltcG9ydCBbU1BFQ10nO1xuICBwdWJsaWMgcmVhZG9ubHkgZGVzY3JpYmUgPSAnSW1wb3J0cyBBUEkgb2JqZWN0cyB0byB5b3VyIGFwcCBieSBnZW5lcmF0aW5nIGNvbnN0cnVjdHMuJztcbiAgcHVibGljIHJlYWRvbmx5IGFsaWFzZXMgPSBbJ2dlbicsICdpbXBvcnQnLCAnZ2VuZXJhdGUnXTtcblxuICBwdWJsaWMgcmVhZG9ubHkgYnVpbGRlciA9IChhcmdzOiB5YXJncy5Bcmd2KSA9PiBhcmdzXG4gICAgLnBvc2l0aW9uYWwoJ1NQRUMnLCB7IGRlZmF1bHQ6IGNvbmZpZz8uaW1wb3J0cywgZGVzYzogJ2ltcG9ydCBzcGVjIHdpdGggdGhlIHN5bnRheCBbTkFNRTo9XVNQRUMgd2hlcmUgTkFNRSBpcyBhbiBvcHRpb25hbCBtb2R1bGUgbmFtZSBhbmQgc3VwcG9ydGVkIFNQRUMgYXJlOiBrOHMsIGNyZC55YW1sLCBodHRwczovL2RvbWFpbi9jcmQueWFtbCwgZ2l0aHViOmFjY291bnQvcmVwb1tAVkVSU0lPTl0pLicsIGFycmF5OiB0cnVlIH0pXG4gICAgLmV4YW1wbGUoJ2NkazhzIGltcG9ydCBrOHMnLCBgSW1wb3J0cyBLdWJlcm5ldGVzIEFQSSBvYmplY3RzIHRvIGltcG9ydHMvazhzLnRzLiBEZWZhdWx0cyB0byAke0RFRkFVTFRfQVBJX1ZFUlNJT059YClcbiAgICAuZXhhbXBsZSgnY2RrOHMgaW1wb3J0IGs4cyAtLW5vLWNsYXNzLXByZWZpeCcsICdJbXBvcnRzIEt1YmVybmV0ZXMgQVBJIG9iamVjdHMgd2l0aG91dCB0aGUgXCJLdWJlXCIgcHJlZml4JylcbiAgICAuZXhhbXBsZSgnY2RrOHMgaW1wb3J0IGs4c0AxLjEzLjAnLCAnSW1wb3J0cyBhIHNwZWNpZmljIHZlcnNpb24gb2YgdGhlIEt1YmVybmV0ZXMgQVBJJylcbiAgICAuZXhhbXBsZSgnY2RrOHMgaW1wb3J0IGplbmtpbnMuaW9famVua2luc19jcmQueWFtbCcsICdJbXBvcnRzIGNvbnN0cnVjdHMgZm9yIHRoZSBKZW5raW5zIGN1c3RvbSByZXNvdXJjZSBkZWZpbml0aW9uIGZyb20gYSBmaWxlJylcbiAgICAuZXhhbXBsZSgnY2RrOHMgaW1wb3J0IG1hdHRlcm1vc3Q6PW1hdHRlcm1vc3RfY3JkLnlhbWwnLCAnSW1wb3J0cyBjb25zdHJ1Y3RzIGZvciB0aGUgbWF0dGVybW9zdCBjbHVzdGVyIGN1c3RvbSByZXNvdXJjZSBkZWZpbml0aW9uIHVzaW5nIGEgY3VzdG9tIG1vZHVsZSBuYW1lJylcbiAgICAuZXhhbXBsZSgnY2RrOHMgaW1wb3J0IGdpdGh1Yjpjcm9zc3BsYW5lL2Nyb3NzcGxhbmVAMC4xNC4wJywgJ0ltcG9ydHMgY29uc3RydWN0cyBmb3IgYSBHaXRIdWIgcmVwbyB1c2luZyBkb2MuY3Jkcy5kZXYnKVxuXG4gICAgLm9wdGlvbignc2F2ZScsIHsgdHlwZTogJ2Jvb2xlYW4nLCByZXF1aXJlZDogZmFsc2UsIGRlZmF1bHQ6IHRydWUsIGRlc2M6IFwiRG9udCBzYXZlIHRoZSBpbXBvcnQgVVJMIGluIHRoZSAnaW1wb3J0cycgc2VjdGlvbiBvZiB0aGUgY2RrOHMueWFtbCBjb25maWd1cmF0aW9uIGZpbGUuXCIsIGFsaWFzOiAncycgfSlcbiAgICAub3B0aW9uKCdvdXRwdXQnLCB7IGRlZmF1bHQ6IERFRkFVTFRfT1VURElSLCB0eXBlOiAnc3RyaW5nJywgZGVzYzogJ091dHB1dCBkaXJlY3RvcnknLCBhbGlhczogJ28nIH0pXG4gICAgLm9wdGlvbignZXhjbHVkZScsIHsgdHlwZTogJ2FycmF5JywgZGVzYzogJ0RvIG5vdCBpbXBvcnQgdHlwZXMgdGhhdCBtYXRjaCB0aGVzZSByZWd1bGFyIGV4cHJlc3Npb25zLiBUaGV5IHdpbGwgYmUgcmVwcmVzZW50ZWQgYXMgdGhlIFwiYW55XCIgdHlwZSAob25seSBmb3IgXCJrOHNcIiknIH0pXG4gICAgLm9wdGlvbignY2xhc3MtcHJlZml4JywgeyB0eXBlOiAnc3RyaW5nJywgZGVzYzogJ0EgcHJlZml4IHRvIGFkZCB0byBhbGwgZ2VuZXJhdGVkIGNsYXNzIG5hbWVzLiBCeSBkZWZhdWx0LCB0aGlzIGlzIFwiS3ViZVwiIGZvciBcIms4c1wiIGltcG9ydHMgYW5kIGRpc2FibGVkIGZvciBDUkQgaW1wb3J0cy4gVXNlIC0tbm8tY2xhc3MtcHJlZml4IHRvIGRpc2FibGUuIE11c3QgYmUgUGFzY2FsQ2FzZScgfSlcbiAgICAub3B0aW9uKCdsYW5ndWFnZScsIHsgZGVmYXVsdDogY29uZmlnPy5sYW5ndWFnZSwgZGVtYW5kOiB0cnVlLCB0eXBlOiAnc3RyaW5nJywgZGVzYzogJ091dHB1dCBwcm9ncmFtbWluZyBsYW5ndWFnZScsIGFsaWFzOiAnbCcsIGNob2ljZXM6IExBTkdVQUdFUyB9KTtcblxuICBwdWJsaWMgYXN5bmMgaGFuZGxlcihhcmd2OiBhbnkpIHtcbiAgICBjb25zdCBjbGFzc05hbWVQcmVmaXggPSBhcmd2LmNsYXNzUHJlZml4ID09PSBmYWxzZSA/ICcnIDogYXJndi5jbGFzc1ByZWZpeDtcbiAgICBjb25zdCBpbXBvcnRzOiBzdHJpbmdbXSA9IEFycmF5LmlzQXJyYXkoYXJndi5zcGVjKSA/IGFyZ3Yuc3BlYyA6IFthcmd2LnNwZWNdO1xuICAgIGNvbnN0IHNwZWNzOiBJbXBvcnRTcGVjW10gPSBpbXBvcnRzLmZpbHRlcihzcGVjID0+IHNwZWMgIT0gbnVsbCkubWFwKHBhcnNlSW1wb3J0cyk7XG5cbiAgICBhd2FpdCBpbXBvcnREaXNwYXRjaChzcGVjcywgYXJndiwge1xuICAgICAgb3V0ZGlyOiBhcmd2Lm91dHB1dCxcbiAgICAgIHRhcmdldExhbmd1YWdlOiBhcmd2Lmxhbmd1YWdlLFxuICAgICAgY2xhc3NOYW1lUHJlZml4LFxuICAgICAgc2F2ZTogYXJndi5zYXZlLFxuICAgIH0pO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IENvbW1hbmQoKTtcbiJdfQ==
@@ -22,12 +22,24 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
25
28
  Object.defineProperty(exports, "__esModule", { value: true });
26
- const fs = __importStar(require("fs"));
29
+ const os = __importStar(require("os"));
30
+ const path_1 = __importDefault(require("path"));
31
+ const fs = __importStar(require("fs-extra"));
32
+ const semver = __importStar(require("semver"));
33
+ const sscaff_1 = require("sscaff");
27
34
  const yaml = __importStar(require("yaml"));
28
35
  const config_1 = require("../../config");
36
+ const dispatch_1 = require("../../import/dispatch");
29
37
  const _manager_1 = require("../../plugins/_manager");
30
38
  const util_1 = require("../../util");
39
+ const CHART_YAML_FILE = 'Chart.yaml';
40
+ const README = 'README.md';
41
+ const DEFAULT_OUTPUT_DIR = 'dist';
42
+ const DEFAULT_PLUGINS_DIR = path_1.default.join(os.homedir(), '.cdk8s', 'plugins');
31
43
  const config = (0, config_1.readConfigSync)();
32
44
  class Command {
33
45
  constructor() {
@@ -35,27 +47,57 @@ class Command {
35
47
  this.describe = 'Synthesizes Kubernetes manifests for all charts in your app.';
36
48
  this.aliases = ['synthesize'];
37
49
  this.builder = (args) => args
38
- .option('app', { default: config.app, required: true, desc: 'Command to use in order to execute cdk8s app', alias: 'a' })
39
- .option('output', { default: config.output, required: false, desc: 'Output directory', alias: 'o' })
50
+ .option('app', { required: true, default: config === null || config === void 0 ? void 0 : config.app, desc: 'Command to use in order to execute cdk8s app', alias: 'a' })
51
+ .option('output', { required: false, desc: 'Output directory', alias: 'o' })
40
52
  .option('stdout', { type: 'boolean', required: false, desc: 'Write synthesized manifests to STDOUT instead of the output directory', alias: 'p' })
41
- .option('plugins-dir', { default: config.pluginsDirectory, required: false, desc: 'Directory to store cdk8s plugins.' })
42
- .option('validate', { type: 'boolean', default: true, required: false, desc: 'Apply validation plugins on the resulting manifests (use --no-validate to disable)' })
43
- .option('validation-reports-output-file', { required: false, desc: 'File to write a JSON representation of the validation reports to' });
53
+ .option('plugins-dir', { required: false, desc: 'Directory to store cdk8s plugins.' })
54
+ .option('validate', { type: 'boolean', required: false, desc: 'Apply validation plugins on the resulting manifests (use --no-validate to disable)' })
55
+ .option('validation-reports-output-file', { required: false, desc: 'File to write a JSON representation of the validation reports to' })
56
+ .option('format', { required: false, desc: 'Synthesis format for Kubernetes manifests. The default synthesis format is plain kubernetes manifests.', type: 'string' })
57
+ .option('chart-api-version', { required: false, desc: 'Chart API version of helm chart. The default value would be \'v2\' api version when synthesis format is helm. There is no default set when synthesis format is plain.', type: 'string' })
58
+ .option('chart-version', { required: false, desc: 'Chart version of helm chart. This is required if synthesis format is helm.' });
44
59
  }
45
- ;
46
60
  async handler(argv) {
61
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
47
62
  const command = argv.app;
48
- const outdir = argv.output;
49
63
  const stdout = argv.stdout;
50
- const validate = argv.validate;
51
- const pluginsDir = argv.pluginsDir;
64
+ const outdir = (_b = (_a = argv.output) !== null && _a !== void 0 ? _a : config === null || config === void 0 ? void 0 : config.output) !== null && _b !== void 0 ? _b : (!stdout ? DEFAULT_OUTPUT_DIR : undefined);
65
+ const validate = (_c = argv.validate) !== null && _c !== void 0 ? _c : true;
52
66
  const reportFile = argv.validationReportsOutputFile;
53
- if (outdir && outdir !== config.output && stdout) {
67
+ const pluginsDir = (_e = (_d = argv.pluginsDir) !== null && _d !== void 0 ? _d : config === null || config === void 0 ? void 0 : config.pluginsDirectory) !== null && _e !== void 0 ? _e : DEFAULT_PLUGINS_DIR;
68
+ const format = (_h = (_f = argv.format) !== null && _f !== void 0 ? _f : (_g = config === null || config === void 0 ? void 0 : config.synthConfig) === null || _g === void 0 ? void 0 : _g.format) !== null && _h !== void 0 ? _h : config_1.SynthesisFormat.PLAIN;
69
+ const chartVersion = (_j = argv.chartVersion) !== null && _j !== void 0 ? _j : (_k = config === null || config === void 0 ? void 0 : config.synthConfig) === null || _k === void 0 ? void 0 : _k.chartVersion;
70
+ const chartApiVersion = (_o = (_l = argv.chartApiVersion) !== null && _l !== void 0 ? _l : (_m = config === null || config === void 0 ? void 0 : config.synthConfig) === null || _m === void 0 ? void 0 : _m.chartApiVersion) !== null && _o !== void 0 ? _o : getDefaultChartApiVersion(format);
71
+ if (outdir && outdir !== (config === null || config === void 0 ? void 0 : config.output) && stdout) {
54
72
  throw new Error('\'--output\' and \'--stdout\' are mutually exclusive. Please only use one.');
55
73
  }
56
74
  if (outdir) {
57
75
  fs.rmSync(outdir, { recursive: true, force: true });
58
76
  }
77
+ if (format != config_1.SynthesisFormat.PLAIN && format != config_1.SynthesisFormat.HELM) {
78
+ throw new Error(`You need to specify synthesis format either as ${config_1.SynthesisFormat.PLAIN} or ${config_1.SynthesisFormat.HELM} but received: ${format}`);
79
+ }
80
+ if (chartApiVersion && (chartApiVersion != config_1.HelmChartApiVersion.V1 && chartApiVersion != config_1.HelmChartApiVersion.V2)) {
81
+ throw new Error(`You need to specify helm chart api version either as ${config_1.HelmChartApiVersion.V1} or ${config_1.HelmChartApiVersion.V2} but received: ${chartApiVersion}`);
82
+ }
83
+ if (format === config_1.SynthesisFormat.HELM && !chartVersion) {
84
+ throw new Error('You need to specify \'--chart-version\' when \'--format\' is set as \'helm\'.');
85
+ }
86
+ if (chartVersion && !semver.valid(chartVersion)) {
87
+ throw new Error(`The value specified for '--chart-version': ${chartVersion} does not follow SemVer-2(https://semver.org/).`);
88
+ }
89
+ if (stdout && format === config_1.SynthesisFormat.HELM) {
90
+ throw new Error('Helm format synthesis does not support \'stdout\'. Please use \'outdir\' instead.');
91
+ }
92
+ if (format === config_1.SynthesisFormat.PLAIN && chartApiVersion) {
93
+ throw new Error('You need to specify \'--format\' as \'helm\' when \'--chart-api-version\' is set.');
94
+ }
95
+ if (format === config_1.SynthesisFormat.PLAIN && chartVersion) {
96
+ throw new Error('You need to specify \'--format\' as \'helm\' when \'--chart-version\' is set.');
97
+ }
98
+ if (chartApiVersion === config_1.HelmChartApiVersion.V1 && (0, util_1.crdsArePresent)(config === null || config === void 0 ? void 0 : config.imports)) {
99
+ throw new Error(`Your application uses CRDs, which are not supported when '--chart-api-version' is set to ${config_1.HelmChartApiVersion.V1}. Please either set '--chart-api-version' to ${config_1.HelmChartApiVersion.V2}, or remove the CRDs from your cdk8s.yaml configuration file`);
100
+ }
59
101
  const validations = validate ? await fetchValidations() : undefined;
60
102
  const recordConstructMetadata = !(validations == undefined || validations.length == 0);
61
103
  if (stdout) {
@@ -71,7 +113,15 @@ class Command {
71
113
  });
72
114
  }
73
115
  else {
74
- const manifests = await (0, util_1.synthApp)(command, outdir, stdout, recordConstructMetadata);
116
+ let manifests;
117
+ if (format === config_1.SynthesisFormat.HELM) {
118
+ await createHelmScaffolding(chartApiVersion, chartVersion, outdir);
119
+ const templateDir = path_1.default.join(outdir, 'templates');
120
+ manifests = await (0, util_1.synthApp)(command, templateDir, stdout, recordConstructMetadata);
121
+ }
122
+ else {
123
+ manifests = await (0, util_1.synthApp)(command, outdir, stdout, recordConstructMetadata);
124
+ }
75
125
  if (validations) {
76
126
  const pluginManager = new _manager_1.PluginManager(pluginsDir);
77
127
  await (0, util_1.validateApp)(manifests, stdout, validations, pluginManager, reportFile);
@@ -80,13 +130,59 @@ class Command {
80
130
  }
81
131
  }
82
132
  async function fetchValidations() {
83
- if (typeof (config.validations) === 'string') {
133
+ if (typeof (config === null || config === void 0 ? void 0 : config.validations) === 'string') {
84
134
  const content = await (0, util_1.download)(config.validations);
85
135
  return yaml.parse(content);
86
136
  }
87
137
  else {
88
- return config.validations;
138
+ return config === null || config === void 0 ? void 0 : config.validations;
139
+ }
140
+ }
141
+ async function createHelmScaffolding(apiVersion, chartVersion, outdir) {
142
+ const tempHelmStructure = createFolderStructure();
143
+ const substituteValues = {
144
+ apiVersion: apiVersion,
145
+ version: chartVersion,
146
+ app: path_1.default.basename(path_1.default.resolve()),
147
+ };
148
+ try {
149
+ await (0, sscaff_1.sscaff)(tempHelmStructure, outdir, substituteValues);
150
+ }
151
+ finally {
152
+ fs.rmSync(tempHelmStructure, { recursive: true });
153
+ }
154
+ if (apiVersion === config_1.HelmChartApiVersion.V2 && (0, util_1.crdsArePresent)(config === null || config === void 0 ? void 0 : config.imports)) {
155
+ await addCrdsToHelmChart(outdir);
89
156
  }
157
+ function createFolderStructure() {
158
+ const root = fs.mkdtempSync(path_1.default.join(os.tmpdir(), 'helm-scaffolding-'));
159
+ fs.mkdirSync(path_1.default.join(root, 'templates'));
160
+ const chartYamlFile = {
161
+ apiVersion: '{{ apiVersion }}',
162
+ name: '{{ app }}',
163
+ version: '{{ version }}',
164
+ description: 'Generated chart for {{ app }}',
165
+ type: 'application',
166
+ };
167
+ fs.outputFileSync(path_1.default.join(root, CHART_YAML_FILE), yaml.stringify(chartYamlFile));
168
+ const readmeFile = 'This Helm chart is generated using cdk8s. Any manual changes to the chart would be discarded once cdk8s app is synthesized again with `--format helm`.';
169
+ fs.outputFileSync(path_1.default.join(root, README), readmeFile);
170
+ return root;
171
+ }
172
+ }
173
+ async function addCrdsToHelmChart(chartDir) {
174
+ var _a;
175
+ const crds = ((_a = config === null || config === void 0 ? void 0 : config.imports) !== null && _a !== void 0 ? _a : []).filter((imprt) => !(0, util_1.isK8sImport)(imprt));
176
+ for (const crd of crds) {
177
+ const importSpec = (0, util_1.parseImports)(crd);
178
+ const importedCrdDef = await (0, dispatch_1.matchImporter)(importSpec, process.argv);
179
+ const manifest = importedCrdDef.rawManifest;
180
+ const filename = (0, util_1.deriveFileName)(importSpec.source);
181
+ fs.outputFileSync(path_1.default.join(chartDir, 'crds', `${filename}.yaml`), manifest);
182
+ }
183
+ }
184
+ function getDefaultChartApiVersion(synthFormat) {
185
+ return (synthFormat === config_1.SynthesisFormat.HELM) ? config_1.HelmChartApiVersion.V2 : undefined;
90
186
  }
91
187
  module.exports = new Command();
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ludGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NtZHMvc3ludGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFFN0IseUNBQWdFO0FBQ2hFLHFEQUF1RDtBQUN2RCxxQ0FBc0U7QUFFdEUsTUFBTSxNQUFNLEdBQUcsSUFBQSx1QkFBYyxHQUFFLENBQUM7QUFFaEMsTUFBTSxPQUFPO0lBQWI7UUFDa0IsWUFBTyxHQUFHLE9BQU8sQ0FBQztRQUNsQixhQUFRLEdBQUcsOERBQThELENBQUM7UUFDMUUsWUFBTyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFekIsWUFBTyxHQUFHLENBQUMsSUFBZ0IsRUFBRSxFQUFFLENBQUMsSUFBSTthQUNqRCxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsOENBQThDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQ3hILE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7YUFDbkcsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsdUVBQXVFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQ2pKLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLG1DQUFtQyxFQUFFLENBQUM7YUFDdkgsTUFBTSxD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QUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUF1QixDQUFDO0tBQ2xEO1NBQU07UUFDTCxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUM7S0FDM0I7QUFDSCxDQUFDO0FBR0QsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgeWFtbCBmcm9tICd5YW1sJztcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcbmltcG9ydCB7IHJlYWRDb25maWdTeW5jLCBWYWxpZGF0aW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcbmltcG9ydCB7IFBsdWdpbk1hbmFnZXIgfSBmcm9tICcuLi8uLi9wbHVnaW5zL19tYW5hZ2VyJztcbmltcG9ydCB7IHN5bnRoQXBwLCBta2R0ZW1wLCBkb3dubG9hZCwgdmFsaWRhdGVBcHAgfSBmcm9tICcuLi8uLi91dGlsJztcblxuY29uc3QgY29uZmlnID0gcmVhZENvbmZpZ1N5bmMoKTtcblxuY2xhc3MgQ29tbWFuZCBpbXBsZW1lbnRzIHlhcmdzLkNvbW1hbmRNb2R1bGUge1xuICBwdWJsaWMgcmVhZG9ubHkgY29tbWFuZCA9ICdzeW50aCc7XG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmliZSA9ICdTeW50aGVzaXplcyBLdWJlcm5ldGVzIG1hbmlmZXN0cyBmb3IgYWxsIGNoYXJ0cyBpbiB5b3VyIGFwcC4nO1xuICBwdWJsaWMgcmVhZG9ubHkgYWxpYXNlcyA9IFsnc3ludGhlc2l6ZSddO1xuXG4gIHB1YmxpYyByZWFkb25seSBidWlsZGVyID0gKGFyZ3M6IHlhcmdzLkFyZ3YpID0+IGFyZ3NcbiAgICAub3B0aW9uKCdhcHAnLCB7IGRlZmF1bHQ6IGNvbmZpZy5hcHAsIHJlcXVpcmVkOiB0cnVlLCBkZXNjOiAnQ29tbWFuZCB0byB1c2UgaW4gb3JkZXIgdG8gZXhlY3V0ZSBjZGs4cyBhcHAnLCBhbGlhczogJ2EnIH0pXG4gICAgLm9wdGlvbignb3V0cHV0JywgeyBkZWZhdWx0OiBjb25maWcub3V0cHV0LCByZXF1aXJlZDogZmFsc2UsIGRlc2M6ICdPdXRwdXQgZGlyZWN0b3J5JywgYWxpYXM6ICdvJyB9KVxuICAgIC5vcHRpb24oJ3N0ZG91dCcsIHsgdHlwZTogJ2Jvb2xlYW4nLCByZXF1aXJlZDogZmFsc2UsIGRlc2M6ICdXcml0ZSBzeW50aGVzaXplZCBtYW5pZmVzdHMgdG8gU1RET1VUIGluc3RlYWQgb2YgdGhlIG91dHB1dCBkaXJlY3RvcnknLCBhbGlhczogJ3AnIH0pXG4gICAgLm9wdGlvbigncGx1Z2lucy1kaXInLCB7IGRlZmF1bHQ6IGNvbmZpZy5wbHVnaW5zRGlyZWN0b3J5LCByZXF1aXJlZDogZmFsc2UsIGRlc2M6ICdEaXJlY3RvcnkgdG8gc3RvcmUgY2RrOHMgcGx1Z2lucy4nIH0pXG4gICAgLm9wdGlvbigndmFsaWRhdGUnLCB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjOiAnQXBwbHkgdmFsaWRhdGlvbiBwbHVnaW5zIG9uIHRoZSByZXN1bHRpbmcgbWFuaWZlc3RzICh1c2UgLS1uby12YWxpZGF0ZSB0byBkaXNhYmxlKScgfSlcbiAgICAub3B0aW9uKCd2YWxpZGF0aW9uLXJlcG9ydHMtb3V0cHV0LWZpbGUnLCB7IHJlcXVpcmVkOiBmYWxzZSwgZGVzYzogJ0ZpbGUgdG8gd3JpdGUgYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2YWxpZGF0aW9uIHJlcG9ydHMgdG8nIH0pO1xuICA7XG5cbiAgcHVibGljIGFzeW5jIGhhbmRsZXIoYXJndjogYW55KSB7XG5cbiAgICBjb25zdCBjb21tYW5kID0gYXJndi5hcHA7XG4gICAgY29uc3Qgb3V0ZGlyID0gYXJndi5vdXRwdXQ7XG4gICAgY29uc3Qgc3Rkb3V0ID0gYXJndi5zdGRvdXQ7XG4gICAgY29uc3QgdmFsaWRhdGUgPSBhcmd2LnZhbGlkYXRlO1xuICAgIGNvbnN0IHBsdWdpbnNEaXIgPSBhcmd2LnBsdWdpbnNEaXI7XG4gICAgY29uc3QgcmVwb3J0RmlsZSA9IGFyZ3YudmFsaWRhdGlvblJlcG9ydHNPdXRwdXRGaWxlO1xuXG4gICAgaWYgKG91dGRpciAmJiBvdXRkaXIgIT09IGNvbmZpZy5vdXRwdXQgJiYgc3Rkb3V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1xcJy0tb3V0cHV0XFwnIGFuZCBcXCctLXN0ZG91dFxcJyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiBQbGVhc2Ugb25seSB1c2Ugb25lLicpO1xuICAgIH1cblxuICAgIGlmIChvdXRkaXIpIHtcbiAgICAgIGZzLnJtU3luYyhvdXRkaXIsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGF0aW9ucyA9IHZhbGlkYXRlID8gYXdhaXQgZmV0Y2hWYWxpZGF0aW9ucygpIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHJlY29yZENvbnN0cnVjdE1ldGFkYXRhID0gISh2YWxpZGF0aW9ucyA9PSB1bmRlZmluZWQgfHwgdmFsaWRhdGlvbnMubGVuZ3RoID09IDApO1xuXG4gICAgaWYgKHN0ZG91dCkge1xuICAgICAgYXdhaXQgbWtkdGVtcChhc3luYyB0ZW1wRGlyID0+IHtcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgc3ludGhBcHAoY29tbWFuZCwgdGVtcERpciwgc3Rkb3V0LCByZWNvcmRDb25zdHJ1Y3RNZXRhZGF0YSk7XG4gICAgICAgIGZvciAoY29uc3QgZiBvZiBhcHAubWFuaWZlc3RzKSB7XG4gICAgICAgICAgZnMuY3JlYXRlUmVhZFN0cmVhbShmKS5waXBlKHByb2Nlc3Muc3Rkb3V0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsaWRhdGlvbnMpIHtcbiAgICAgICAgICBjb25zdCBwbHVnaW5NYW5hZ2VyID0gbmV3IFBsdWdpbk1hbmFnZXIocGx1Z2luc0Rpcik7XG4gICAgICAgICAgYXdhaXQgdmFsaWRhdGVBcHAoYXBwLCBzdGRvdXQsIHZhbGlkYXRpb25zLCBwbHVnaW5NYW5hZ2VyLCByZXBvcnRGaWxlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0cyA9IGF3YWl0IHN5bnRoQXBwKGNvbW1hbmQsIG91dGRpciwgc3Rkb3V0LCByZWNvcmRDb25zdHJ1Y3RNZXRhZGF0YSk7XG4gICAgICBpZiAodmFsaWRhdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcGx1Z2luTWFuYWdlciA9IG5ldyBQbHVnaW5NYW5hZ2VyKHBsdWdpbnNEaXIpO1xuICAgICAgICBhd2FpdCB2YWxpZGF0ZUFwcChtYW5pZmVzdHMsIHN0ZG91dCwgdmFsaWRhdGlvbnMsIHBsdWdpbk1hbmFnZXIsIHJlcG9ydEZpbGUpO1xuICAgICAgfVxuICAgIH1cblxuXG4gIH1cblxufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFZhbGlkYXRpb25zKCk6IFByb21pc2U8VmFsaWRhdGlvbkNvbmZpZ1tdIHwgdW5kZWZpbmVkPiB7XG4gIGlmICh0eXBlb2YoY29uZmlnLnZhbGlkYXRpb25zKSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgZG93bmxvYWQoY29uZmlnLnZhbGlkYXRpb25zKTtcbiAgICByZXR1cm4geWFtbC5wYXJzZShjb250ZW50KSBhcyBWYWxpZGF0aW9uQ29uZmlnW107XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNvbmZpZy52YWxpZGF0aW9ucztcbiAgfVxufVxuXG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IENvbW1hbmQoKTtcbiJdfQ==
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ludGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NtZHMvc3ludGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6QixnREFBd0I7QUFDeEIsNkNBQStCO0FBQy9CLCtDQUFpQztBQUNqQyxtQ0FBZ0M7QUFDaEMsMkNBQTZCO0FBRTdCLHlDQUFzRztBQUV0RyxvREFBc0Q7QUFDdEQscURBQXVEO0FBQ3ZELHFDQUFpSjtBQUVqSixNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUM7QUFDckMsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDO0FBQzNCLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDO0FBQ2xDLE1BQU0sbUJBQW1CLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRXpFLE1BQU0sTUFBTSxHQUFHLElBQUEsdUJBQWMsR0FBRSxDQUFDO0FBRWhDLE1BQU0sT0FBTztJQUFiO1FBQ2tCLFlBQU8sR0FBRyxPQUFPLENBQUM7UUFDbEIsYUFBUSxHQUFHLDhEQUE4RCxDQUFDO1FBQzFFLFlBQU8sR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXpCLFlBQU8sR0FBRyxDQUFDLElBQWdCLEVBQUUsRUFBRSxDQUFDLElBQUk7YUFDakQsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLDhDQUE4QyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQzthQUN6SCxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFB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QUFPLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgeyBzc2NhZmYgfSBmcm9tICdzc2NhZmYnO1xuaW1wb3J0ICogYXMgeWFtbCBmcm9tICd5YW1sJztcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcbmltcG9ydCB7IEhlbG1DaGFydEFwaVZlcnNpb24sIFN5bnRoZXNpc0Zvcm1hdCwgVmFsaWRhdGlvbkNvbmZpZywgcmVhZENvbmZpZ1N5bmMgfSBmcm9tICcuLi8uLi9jb25maWcnO1xuaW1wb3J0IHsgSW1wb3J0Q3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vaW1wb3J0L2NyZCc7XG5pbXBvcnQgeyBtYXRjaEltcG9ydGVyIH0gZnJvbSAnLi4vLi4vaW1wb3J0L2Rpc3BhdGNoJztcbmltcG9ydCB7IFBsdWdpbk1hbmFnZXIgfSBmcm9tICcuLi8uLi9wbHVnaW5zL19tYW5hZ2VyJztcbmltcG9ydCB7IFN5bnRoZXNpemVkQXBwLCBjcmRzQXJlUHJlc2VudCwgZGVyaXZlRmlsZU5hbWUsIGRvd25sb2FkLCBpc0s4c0ltcG9ydCwgbWtkdGVtcCwgcGFyc2VJbXBvcnRzLCBzeW50aEFwcCwgdmFsaWRhdGVBcHAgfSBmcm9tICcuLi8uLi91dGlsJztcblxuY29uc3QgQ0hBUlRfWUFNTF9GSUxFID0gJ0NoYXJ0LnlhbWwnO1xuY29uc3QgUkVBRE1FID0gJ1JFQURNRS5tZCc7XG5jb25zdCBERUZBVUxUX09VVFBVVF9ESVIgPSAnZGlzdCc7XG5jb25zdCBERUZBVUxUX1BMVUdJTlNfRElSID0gcGF0aC5qb2luKG9zLmhvbWVkaXIoKSwgJy5jZGs4cycsICdwbHVnaW5zJyk7XG5cbmNvbnN0IGNvbmZpZyA9IHJlYWRDb25maWdTeW5jKCk7XG5cbmNsYXNzIENvbW1hbmQgaW1wbGVtZW50cyB5YXJncy5Db21tYW5kTW9kdWxlIHtcbiAgcHVibGljIHJlYWRvbmx5IGNvbW1hbmQgPSAnc3ludGgnO1xuICBwdWJsaWMgcmVhZG9ubHkgZGVzY3JpYmUgPSAnU3ludGhlc2l6ZXMgS3ViZXJuZXRlcyBtYW5pZmVzdHMgZm9yIGFsbCBjaGFydHMgaW4geW91ciBhcHAuJztcbiAgcHVibGljIHJlYWRvbmx5IGFsaWFzZXMgPSBbJ3N5bnRoZXNpemUnXTtcblxuICBwdWJsaWMgcmVhZG9ubHkgYnVpbGRlciA9IChhcmdzOiB5YXJncy5Bcmd2KSA9PiBhcmdzXG4gICAgLm9wdGlvbignYXBwJywgeyByZXF1aXJlZDogdHJ1ZSwgZGVmYXVsdDogY29uZmlnPy5hcHAsIGRlc2M6ICdDb21tYW5kIHRvIHVzZSBpbiBvcmRlciB0byBleGVjdXRlIGNkazhzIGFwcCcsIGFsaWFzOiAnYScgfSlcbiAgICAub3B0aW9uKCdvdXRwdXQnLCB7IHJlcXVpcmVkOiBmYWxzZSwgZGVzYzogJ091dHB1dCBkaXJlY3RvcnknLCBhbGlhczogJ28nIH0pXG4gICAgLm9wdGlvbignc3Rkb3V0JywgeyB0eXBlOiAnYm9vbGVhbicsIHJlcXVpcmVkOiBmYWxzZSwgZGVzYzogJ1dyaXRlIHN5bnRoZXNpemVkIG1hbmlmZXN0cyB0byBTVERPVVQgaW5zdGVhZCBvZiB0aGUgb3V0cHV0IGRpcmVjdG9yeScsIGFsaWFzOiAncCcgfSlcbiAgICAub3B0aW9uKCdwbHVnaW5zLWRpcicsIHsgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjOiAnRGlyZWN0b3J5IHRvIHN0b3JlIGNkazhzIHBsdWdpbnMuJyB9KVxuICAgIC5vcHRpb24oJ3ZhbGlkYXRlJywgeyB0eXBlOiAnYm9vbGVhbicsIHJlcXVpcmVkOiBmYWxzZSwgZGVzYzogJ0FwcGx5IHZhbGlkYXRpb24gcGx1Z2lucyBvbiB0aGUgcmVzdWx0aW5nIG1hbmlmZXN0cyAodXNlIC0tbm8tdmFsaWRhdGUgdG8gZGlzYWJsZSknIH0pXG4gICAgLm9wdGlvbigndmFsaWRhdGlvbi1yZXBvcnRzLW91dHB1dC1maWxlJywgeyByZXF1aXJlZDogZmFsc2UsIGRlc2M6ICdGaWxlIHRvIHdyaXRlIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFsaWRhdGlvbiByZXBvcnRzIHRvJyB9KVxuICAgIC5vcHRpb24oJ2Zvcm1hdCcsIHsgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjOiAnU3ludGhlc2lzIGZvcm1hdCBmb3IgS3ViZXJuZXRlcyBtYW5pZmVzdHMuIFRoZSBkZWZhdWx0IHN5bnRoZXNpcyBmb3JtYXQgaXMgcGxhaW4ga3ViZXJuZXRlcyBtYW5pZmVzdHMuJywgdHlwZTogJ3N0cmluZycgfSlcbiAgICAub3B0aW9uKCdjaGFydC1hcGktdmVyc2lvbicsIHsgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjOiAnQ2hhcnQgQVBJIHZlcnNpb24gb2YgaGVsbSBjaGFydC4gVGhlIGRlZmF1bHQgdmFsdWUgd291bGQgYmUgXFwndjJcXCcgYXBpIHZlcnNpb24gd2hlbiBzeW50aGVzaXMgZm9ybWF0IGlzIGhlbG0uIFRoZXJlIGlzIG5vIGRlZmF1bHQgc2V0IHdoZW4gc3ludGhlc2lzIGZvcm1hdCBpcyBwbGFpbi4nLCB0eXBlOiAnc3RyaW5nJyB9KVxuICAgIC5vcHRpb24oJ2NoYXJ0LXZlcnNpb24nLCB7IHJlcXVpcmVkOiBmYWxzZSwgZGVzYzogJ0NoYXJ0IHZlcnNpb24gb2YgaGVsbSBjaGFydC4gVGhpcyBpcyByZXF1aXJlZCBpZiBzeW50aGVzaXMgZm9ybWF0IGlzIGhlbG0uJyB9KTtcblxuICBwdWJsaWMgYXN5bmMgaGFuZGxlcihhcmd2OiBhbnkpIHtcblxuICAgIGNvbnN0IGNvbW1hbmQgPSBhcmd2LmFwcDtcbiAgICBjb25zdCBzdGRvdXQgPSBhcmd2LnN0ZG91dDtcbiAgICBjb25zdCBvdXRkaXIgPSBhcmd2Lm91dHB1dCA/PyBjb25maWc/Lm91dHB1dCA/PyAoIXN0ZG91dCA/IERFRkFVTFRfT1VUUFVUX0RJUiA6IHVuZGVmaW5lZCk7XG4gICAgY29uc3QgdmFsaWRhdGUgPSBhcmd2LnZhbGlkYXRlID8/IHRydWU7XG4gICAgY29uc3QgcmVwb3J0RmlsZSA9IGFyZ3YudmFsaWRhdGlvblJlcG9ydHNPdXRwdXRGaWxlO1xuICAgIGNvbnN0IHBsdWdpbnNEaXIgPSBhcmd2LnBsdWdpbnNEaXIgPz8gY29uZmlnPy5wbHVnaW5zRGlyZWN0b3J5ID8/IERFRkFVTFRfUExVR0lOU19ESVI7XG4gICAgY29uc3QgZm9ybWF0ID0gYXJndi5mb3JtYXQgPz8gY29uZmlnPy5zeW50aENvbmZpZz8uZm9ybWF0ID8/IFN5bnRoZXNpc0Zvcm1hdC5QTEFJTjtcbiAgICBjb25zdCBjaGFydFZlcnNpb24gPSBhcmd2LmNoYXJ0VmVyc2lvbiA/PyBjb25maWc/LnN5bnRoQ29uZmlnPy5jaGFydFZlcnNpb247XG4gICAgY29uc3QgY2hhcnRBcGlWZXJzaW9uID0gYXJndi5jaGFydEFwaVZlcnNpb24gPz8gY29uZmlnPy5zeW50aENvbmZpZz8uY2hhcnRBcGlWZXJzaW9uID8/IGdldERlZmF1bHRDaGFydEFwaVZlcnNpb24oZm9ybWF0KTtcblxuICAgIGlmIChvdXRkaXIgJiYgb3V0ZGlyICE9PSBjb25maWc/Lm91dHB1dCAmJiBzdGRvdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignXFwnLS1vdXRwdXRcXCcgYW5kIFxcJy0tc3Rkb3V0XFwnIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIFBsZWFzZSBvbmx5IHVzZSBvbmUuJyk7XG4gICAgfVxuXG4gICAgaWYgKG91dGRpcikge1xuICAgICAgZnMucm1TeW5jKG91dGRpciwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIGlmIChmb3JtYXQgIT0gU3ludGhlc2lzRm9ybWF0LlBMQUlOICYmIGZvcm1hdCAhPSBTeW50aGVzaXNGb3JtYXQuSEVMTSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UgbmVlZCB0byBzcGVjaWZ5IHN5bnRoZXNpcyBmb3JtYXQgZWl0aGVyIGFzICR7U3ludGhlc2lzRm9ybWF0LlBMQUlOfSBvciAke1N5bnRoZXNpc0Zvcm1hdC5IRUxNfSBidXQgcmVjZWl2ZWQ6ICR7Zm9ybWF0fWApO1xuICAgIH1cblxuICAgIGlmIChjaGFydEFwaVZlcnNpb24gJiYgKGNoYXJ0QXBpVmVyc2lvbiAhPSBIZWxtQ2hhcnRBcGlWZXJzaW9uLlYxICYmIGNoYXJ0QXBpVmVyc2lvbiAhPSBIZWxtQ2hhcnRBcGlWZXJzaW9uLlYyKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UgbmVlZCB0byBzcGVjaWZ5IGhlbG0gY2hhcnQgYXBpIHZlcnNpb24gZWl0aGVyIGFzICR7SGVsbUNoYXJ0QXBpVmVyc2lvbi5WMX0gb3IgJHtIZWxtQ2hhcnRBcGlWZXJzaW9uLlYyfSBidXQgcmVjZWl2ZWQ6ICR7Y2hhcnRBcGlWZXJzaW9ufWApO1xuICAgIH1cblxuICAgIGlmIChmb3JtYXQgPT09IFN5bnRoZXNpc0Zvcm1hdC5IRUxNICYmICFjaGFydFZlcnNpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG5lZWQgdG8gc3BlY2lmeSBcXCctLWNoYXJ0LXZlcnNpb25cXCcgd2hlbiBcXCctLWZvcm1hdFxcJyBpcyBzZXQgYXMgXFwnaGVsbVxcJy4nKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhcnRWZXJzaW9uICYmICFzZW12ZXIudmFsaWQoY2hhcnRWZXJzaW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgdmFsdWUgc3BlY2lmaWVkIGZvciAnLS1jaGFydC12ZXJzaW9uJzogJHtjaGFydFZlcnNpb259IGRvZXMgbm90IGZvbGxvdyBTZW1WZXItMihodHRwczovL3NlbXZlci5vcmcvKS5gKTtcbiAgICB9XG5cbiAgICBpZiAoc3Rkb3V0ICYmIGZvcm1hdCA9PT0gU3ludGhlc2lzRm9ybWF0LkhFTE0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSGVsbSBmb3JtYXQgc3ludGhlc2lzIGRvZXMgbm90IHN1cHBvcnQgXFwnc3Rkb3V0XFwnLiBQbGVhc2UgdXNlIFxcJ291dGRpclxcJyBpbnN0ZWFkLicpO1xuICAgIH1cblxuICAgIGlmIChmb3JtYXQgPT09IFN5bnRoZXNpc0Zvcm1hdC5QTEFJTiAmJiBjaGFydEFwaVZlcnNpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG5lZWQgdG8gc3BlY2lmeSBcXCctLWZvcm1hdFxcJyBhcyBcXCdoZWxtXFwnIHdoZW4gXFwnLS1jaGFydC1hcGktdmVyc2lvblxcJyBpcyBzZXQuJyk7XG4gICAgfVxuXG4gICAgaWYgKGZvcm1hdCA9PT0gU3ludGhlc2lzRm9ybWF0LlBMQUlOICYmIGNoYXJ0VmVyc2lvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbmVlZCB0byBzcGVjaWZ5IFxcJy0tZm9ybWF0XFwnIGFzIFxcJ2hlbG1cXCcgd2hlbiBcXCctLWNoYXJ0LXZlcnNpb25cXCcgaXMgc2V0LicpO1xuICAgIH1cblxuICAgIGlmIChjaGFydEFwaVZlcnNpb24gPT09IEhlbG1DaGFydEFwaVZlcnNpb24uVjEgJiYgY3Jkc0FyZVByZXNlbnQoY29uZmlnPy5pbXBvcnRzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3VyIGFwcGxpY2F0aW9uIHVzZXMgQ1JEcywgd2hpY2ggYXJlIG5vdCBzdXBwb3J0ZWQgd2hlbiAnLS1jaGFydC1hcGktdmVyc2lvbicgaXMgc2V0IHRvICR7SGVsbUNoYXJ0QXBpVmVyc2lvbi5WMX0uIFBsZWFzZSBlaXRoZXIgc2V0ICctLWNoYXJ0LWFwaS12ZXJzaW9uJyB0byAke0hlbG1DaGFydEFwaVZlcnNpb24uVjJ9LCBvciByZW1vdmUgdGhlIENSRHMgZnJvbSB5b3VyIGNkazhzLnlhbWwgY29uZmlndXJhdGlvbiBmaWxlYCk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdGlvbnMgPSB2YWxpZGF0ZSA/IGF3YWl0IGZldGNoVmFsaWRhdGlvbnMoKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCByZWNvcmRDb25zdHJ1Y3RNZXRhZGF0YSA9ICEodmFsaWRhdGlvbnMgPT0gdW5kZWZpbmVkIHx8IHZhbGlkYXRpb25zLmxlbmd0aCA9PSAwKTtcblxuICAgIGlmIChzdGRvdXQpIHtcbiAgICAgIGF3YWl0IG1rZHRlbXAoYXN5bmMgdGVtcERpciA9PiB7XG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IHN5bnRoQXBwKGNvbW1hbmQsIHRlbXBEaXIsIHN0ZG91dCwgcmVjb3JkQ29uc3RydWN0TWV0YWRhdGEpO1xuICAgICAgICBmb3IgKGNvbnN0IGYgb2YgYXBwLm1hbmlmZXN0cykge1xuICAgICAgICAgIGZzLmNyZWF0ZVJlYWRTdHJlYW0oZikucGlwZShwcm9jZXNzLnN0ZG91dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbGlkYXRpb25zKSB7XG4gICAgICAgICAgY29uc3QgcGx1Z2luTWFuYWdlciA9IG5ldyBQbHVnaW5NYW5hZ2VyKHBsdWdpbnNEaXIpO1xuICAgICAgICAgIGF3YWl0IHZhbGlkYXRlQXBwKGFwcCwgc3Rkb3V0LCB2YWxpZGF0aW9ucywgcGx1Z2luTWFuYWdlciwgcmVwb3J0RmlsZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbWFuaWZlc3RzOiBTeW50aGVzaXplZEFwcDtcblxuICAgICAgaWYgKGZvcm1hdCA9PT0gU3ludGhlc2lzRm9ybWF0LkhFTE0pIHtcbiAgICAgICAgYXdhaXQgY3JlYXRlSGVsbVNjYWZmb2xkaW5nKGNoYXJ0QXBpVmVyc2lvbiwgY2hhcnRWZXJzaW9uLCBvdXRkaXIpO1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZURpciA9IHBhdGguam9pbihvdXRkaXIsICd0ZW1wbGF0ZXMnKTtcblxuICAgICAgICBtYW5pZmVzdHMgPSBhd2FpdCBzeW50aEFwcChjb21tYW5kLCB0ZW1wbGF0ZURpciwgc3Rkb3V0LCByZWNvcmRDb25zdHJ1Y3RNZXRhZGF0YSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYW5pZmVzdHMgPSBhd2FpdCBzeW50aEFwcChjb21tYW5kLCBvdXRkaXIsIHN0ZG91dCwgcmVjb3JkQ29uc3RydWN0TWV0YWRhdGEpO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsaWRhdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcGx1Z2luTWFuYWdlciA9IG5ldyBQbHVnaW5NYW5hZ2VyKHBsdWdpbnNEaXIpO1xuICAgICAgICBhd2FpdCB2YWxpZGF0ZUFwcChtYW5pZmVzdHMsIHN0ZG91dCwgdmFsaWRhdGlvbnMsIHBsdWdpbk1hbmFnZXIsIHJlcG9ydEZpbGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVmFsaWRhdGlvbnMoKTogUHJvbWlzZTxWYWxpZGF0aW9uQ29uZmlnW10gfCB1bmRlZmluZWQ+IHtcbiAgaWYgKHR5cGVvZihjb25maWc/LnZhbGlkYXRpb25zKSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgZG93bmxvYWQoY29uZmlnLnZhbGlkYXRpb25zKTtcbiAgICByZXR1cm4geWFtbC5wYXJzZShjb250ZW50KSBhcyBWYWxpZGF0aW9uQ29uZmlnW107XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNvbmZpZz8udmFsaWRhdGlvbnM7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlSGVsbVNjYWZmb2xkaW5nKGFwaVZlcnNpb246IHN0cmluZywgY2hhcnRWZXJzaW9uOiBzdHJpbmcsIG91dGRpcjogc3RyaW5nKSB7XG4gIGNvbnN0IHRlbXBIZWxtU3RydWN0dXJlID0gY3JlYXRlRm9sZGVyU3RydWN0dXJlKCk7XG5cbiAgY29uc3Qgc3Vic3RpdHV0ZVZhbHVlcyA9IHtcbiAgICBhcGlWZXJzaW9uOiBhcGlWZXJzaW9uLFxuICAgIHZlcnNpb246IGNoYXJ0VmVyc2lvbixcbiAgICBhcHA6IHBhdGguYmFzZW5hbWUocGF0aC5yZXNvbHZlKCkpLFxuICB9O1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgc3NjYWZmKHRlbXBIZWxtU3RydWN0dXJlLCBvdXRkaXIsIHN1YnN0aXR1dGVWYWx1ZXMpO1xuICB9IGZpbmFsbHkge1xuICAgIGZzLnJtU3luYyh0ZW1wSGVsbVN0cnVjdHVyZSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIH1cblxuXG4gIGlmIChhcGlWZXJzaW9uID09PSBIZWxtQ2hhcnRBcGlWZXJzaW9uLlYyICYmIGNyZHNBcmVQcmVzZW50KGNvbmZpZz8uaW1wb3J0cykpIHtcbiAgICBhd2FpdCBhZGRDcmRzVG9IZWxtQ2hhcnQob3V0ZGlyKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUZvbGRlclN0cnVjdHVyZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJvb3QgPSBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4ob3MudG1wZGlyKCksICdoZWxtLXNjYWZmb2xkaW5nLScpKTtcblxuICAgIGZzLm1rZGlyU3luYyhwYXRoLmpvaW4ocm9vdCwgJ3RlbXBsYXRlcycpKTtcblxuICAgIGNvbnN0IGNoYXJ0WWFtbEZpbGUgPSB7XG4gICAgICBhcGlWZXJzaW9uOiAne3sgYXBpVmVyc2lvbiB9fScsXG4gICAgICBuYW1lOiAne3sgYXBwIH19JyxcbiAgICAgIHZlcnNpb246ICd7eyB2ZXJzaW9uIH19JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnR2VuZXJhdGVkIGNoYXJ0IGZvciB7eyBhcHAgfX0nLFxuICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICB9O1xuXG4gICAgZnMub3V0cHV0RmlsZVN5bmMocGF0aC5qb2luKHJvb3QsIENIQVJUX1lBTUxfRklMRSksIHlhbWwuc3RyaW5naWZ5KGNoYXJ0WWFtbEZpbGUpKTtcblxuICAgIGNvbnN0IHJlYWRtZUZpbGUgPSAnVGhpcyBIZWxtIGNoYXJ0IGlzIGdlbmVyYXRlZCB1c2luZyBjZGs4cy4gQW55IG1hbnVhbCBjaGFuZ2VzIHRvIHRoZSBjaGFydCB3b3VsZCBiZSBkaXNjYXJkZWQgb25jZSBjZGs4cyBhcHAgaXMgc3ludGhlc2l6ZWQgYWdhaW4gd2l0aCBgLS1mb3JtYXQgaGVsbWAuJztcblxuICAgIGZzLm91dHB1dEZpbGVTeW5jKHBhdGguam9pbihyb290LCBSRUFETUUpLCByZWFkbWVGaWxlKTtcblxuICAgIHJldHVybiByb290O1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGFkZENyZHNUb0hlbG1DaGFydChjaGFydERpcjogc3RyaW5nKSB7XG4gIGNvbnN0IGNyZHMgPSAoY29uZmlnPy5pbXBvcnRzID8/IFtdKS5maWx0ZXIoKGltcHJ0KSA9PiAhaXNLOHNJbXBvcnQoaW1wcnQpKTtcblxuICBmb3IgKGNvbnN0IGNyZCBvZiBjcmRzKSB7XG4gICAgY29uc3QgaW1wb3J0U3BlYyA9IHBhcnNlSW1wb3J0cyhjcmQpO1xuICAgIGNvbnN0IGltcG9ydGVkQ3JkRGVmID0gYXdhaXQgbWF0Y2hJbXBvcnRlcihpbXBvcnRTcGVjLCBwcm9jZXNzLmFyZ3YpIGFzIEltcG9ydEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbjtcbiAgICBjb25zdCBtYW5pZmVzdCA9IGltcG9ydGVkQ3JkRGVmLnJhd01hbmlmZXN0O1xuXG4gICAgY29uc3QgZmlsZW5hbWUgPSBkZXJpdmVGaWxlTmFtZShpbXBvcnRTcGVjLnNvdXJjZSk7XG5cbiAgICBmcy5vdXRwdXRGaWxlU3luYyhwYXRoLmpvaW4oY2hhcnREaXIsICdjcmRzJywgYCR7ZmlsZW5hbWV9LnlhbWxgKSwgbWFuaWZlc3QpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldERlZmF1bHRDaGFydEFwaVZlcnNpb24oc3ludGhGb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiAoc3ludGhGb3JtYXQgPT09IFN5bnRoZXNpc0Zvcm1hdC5IRUxNKSA/IEhlbG1DaGFydEFwaVZlcnNpb24uVjI6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ29tbWFuZCgpOyJdfQ==
package/lib/config.d.ts CHANGED
@@ -14,6 +14,19 @@ export interface ValidationConfig {
14
14
  [key: string]: any;
15
15
  };
16
16
  }
17
+ export declare enum SynthesisFormat {
18
+ PLAIN = "plain",
19
+ HELM = "helm"
20
+ }
21
+ export declare enum HelmChartApiVersion {
22
+ V1 = "v1",
23
+ V2 = "v2"
24
+ }
25
+ export interface SynthConfig {
26
+ readonly format?: SynthesisFormat;
27
+ readonly chartApiVersion?: HelmChartApiVersion;
28
+ readonly chartVersion?: string;
29
+ }
17
30
  export interface Config {
18
31
  readonly app?: string;
19
32
  readonly language?: Language;
@@ -21,6 +34,7 @@ export interface Config {
21
34
  readonly imports?: string[];
22
35
  readonly pluginsDirectory?: string;
23
36
  readonly validations?: string | ValidationConfig[];
37
+ readonly synthConfig?: SynthConfig;
24
38
  }
25
- export declare function readConfigSync(): Config;
39
+ export declare function readConfigSync(): Config | undefined;
26
40
  export declare function addImportToConfig(source: string): Promise<void>;
package/lib/config.js CHANGED
@@ -23,25 +23,28 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.addImportToConfig = exports.readConfigSync = void 0;
27
- const os = __importStar(require("os"));
28
- const path = __importStar(require("path"));
26
+ exports.addImportToConfig = exports.readConfigSync = exports.HelmChartApiVersion = exports.SynthesisFormat = void 0;
29
27
  const fs = __importStar(require("fs-extra"));
30
28
  const yaml = __importStar(require("yaml"));
31
29
  const CONFIG_FILE = 'cdk8s.yaml';
32
- const DEFAULTS = {
33
- output: 'dist',
34
- pluginsDirectory: path.join(os.homedir(), '.cdk8s', 'plugins'),
35
- };
30
+ var SynthesisFormat;
31
+ (function (SynthesisFormat) {
32
+ SynthesisFormat["PLAIN"] = "plain";
33
+ SynthesisFormat["HELM"] = "helm";
34
+ })(SynthesisFormat = exports.SynthesisFormat || (exports.SynthesisFormat = {}));
35
+ var HelmChartApiVersion;
36
+ (function (HelmChartApiVersion) {
37
+ HelmChartApiVersion["V1"] = "v1";
38
+ HelmChartApiVersion["V2"] = "v2";
39
+ })(HelmChartApiVersion = exports.HelmChartApiVersion || (exports.HelmChartApiVersion = {}));
36
40
  function readConfigSync() {
37
- let config = DEFAULTS;
38
41
  if (fs.existsSync(CONFIG_FILE)) {
39
- config = {
40
- ...config,
42
+ const config = {
41
43
  ...yaml.parse(fs.readFileSync(CONFIG_FILE, 'utf-8')),
42
44
  };
45
+ return config;
43
46
  }
44
- return config;
47
+ return undefined;
45
48
  }
46
49
  exports.readConfigSync = readConfigSync;
47
50
  async function addImportToConfig(source) {
@@ -59,4 +62,4 @@ async function addImportToConfig(source) {
59
62
  }
60
63
  }
61
64
  exports.addImportToConfig = addImportToConfig;
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0IsNkNBQStCO0FBQy9CLDJDQUE2QjtBQUc3QixNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUM7QUF5QmpDLE1BQU0sUUFBUSxHQUFXO0lBQ3ZCLE1BQU0sRUFBRSxNQUFNO0lBQ2QsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQztDQUMvRCxDQUFDO0FBRUYsU0FBZ0IsY0FBYztJQUM1QixJQUFJLE1BQU0sR0FBVyxRQUFRLENBQUM7SUFDOUIsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQzlCLE1BQU0sR0FBRztZQUNQLEdBQUcsTUFBTTtZQUNULEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNyRCxDQUFDO0tBQ0g7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBVEQsd0NBU0M7QUFFTSxLQUFLLFVBQVUsaUJBQWlCLENBQUMsTUFBYzs7SUFDcEQsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRWxFLE1BQU0sVUFBVSxHQUFHLE1BQUEsU0FBUyxDQUFDLE9BQU8sbUNBQUksRUFBRSxDQUFDO0lBQzNDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ2hDLE1BQU0sV0FBVyxHQUFHLE1BQUEsU0FBUyxDQUFDLE9BQU8sbUNBQUksRUFBRSxDQUFDO1FBQzVDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekIsSUFBSSxNQUFNLEdBQUc7WUFDWCxHQUFHLFNBQVM7WUFDWixPQUFPLEVBQUUsV0FBVztTQUNyQixDQUFDO1FBQ0YsTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7S0FDMUQ7QUFDSCxDQUFDO0FBYkQsOENBYUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0ICogYXMgeWFtbCBmcm9tICd5YW1sJztcbmltcG9ydCB7IExhbmd1YWdlIH0gZnJvbSAnLi9pbXBvcnQvYmFzZSc7XG5cbmNvbnN0IENPTkZJR19GSUxFID0gJ2NkazhzLnlhbWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEltcG9ydFNwZWMge1xuICByZWFkb25seSBtb2R1bGVOYW1lUHJlZml4Pzogc3RyaW5nO1xuICByZWFkb25seSBzb3VyY2U6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uQ29uZmlnIHtcblxuICByZWFkb25seSBwYWNrYWdlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbiAgcmVhZG9ubHkgY2xhc3M6IHN0cmluZztcbiAgcmVhZG9ubHkgaW5zdGFsbEVudj86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIHJlYWRvbmx5IHByb3BlcnRpZXM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZyB7XG4gIHJlYWRvbmx5IGFwcD86IHN0cmluZztcbiAgcmVhZG9ubHkgbGFuZ3VhZ2U/OiBMYW5ndWFnZTtcbiAgcmVhZG9ubHkgb3V0cHV0Pzogc3RyaW5nO1xuICByZWFkb25seSBpbXBvcnRzPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IHBsdWdpbnNEaXJlY3Rvcnk/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZhbGlkYXRpb25zPzogc3RyaW5nIHwgVmFsaWRhdGlvbkNvbmZpZ1tdO1xufVxuXG5jb25zdCBERUZBVUxUUzogQ29uZmlnID0ge1xuICBvdXRwdXQ6ICdkaXN0JyxcbiAgcGx1Z2luc0RpcmVjdG9yeTogcGF0aC5qb2luKG9zLmhvbWVkaXIoKSwgJy5jZGs4cycsICdwbHVnaW5zJyksXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcmVhZENvbmZpZ1N5bmMoKTogQ29uZmlnIHtcbiAgbGV0IGNvbmZpZzogQ29uZmlnID0gREVGQVVMVFM7XG4gIGlmIChmcy5leGlzdHNTeW5jKENPTkZJR19GSUxFKSkge1xuICAgIGNvbmZpZyA9IHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIC4uLnlhbWwucGFyc2UoZnMucmVhZEZpbGVTeW5jKENPTkZJR19GSUxFLCAndXRmLTgnKSksXG4gICAgfTtcbiAgfVxuICByZXR1cm4gY29uZmlnO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWRkSW1wb3J0VG9Db25maWcoc291cmNlOiBzdHJpbmcpIHtcbiAgbGV0IGN1ckNvbmZpZyA9IHlhbWwucGFyc2UoZnMucmVhZEZpbGVTeW5jKENPTkZJR19GSUxFLCAndXRmLTgnKSk7XG5cbiAgY29uc3QgY3VySW1wb3J0cyA9IGN1ckNvbmZpZy5pbXBvcnRzID8/IFtdO1xuICBpZiAoIWN1ckltcG9ydHMuaW5jbHVkZXMoc291cmNlKSkge1xuICAgIGNvbnN0IGltcG9ydHNMaXN0ID0gY3VyQ29uZmlnLmltcG9ydHMgPz8gW107XG4gICAgaW1wb3J0c0xpc3QucHVzaChzb3VyY2UpO1xuICAgIGxldCBjb25maWcgPSB7XG4gICAgICAuLi5jdXJDb25maWcsXG4gICAgICBpbXBvcnRzOiBpbXBvcnRzTGlzdCxcbiAgICB9O1xuICAgIGF3YWl0IGZzLm91dHB1dEZpbGUoQ09ORklHX0ZJTEUsIHlhbWwuc3RyaW5naWZ5KGNvbmZpZykpO1xuICB9XG59Il19
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUMvQiwyQ0FBNkI7QUFHN0IsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDO0FBZWpDLElBQVksZUFHWDtBQUhELFdBQVksZUFBZTtJQUN6QixrQ0FBZSxDQUFBO0lBQ2YsZ0NBQWEsQ0FBQTtBQUNmLENBQUMsRUFIVyxlQUFlLEdBQWYsdUJBQWUsS0FBZix1QkFBZSxRQUcxQjtBQUVELElBQVksbUJBR1g7QUFIRCxXQUFZLG1CQUFtQjtJQUM3QixnQ0FBUyxDQUFBO0lBQ1QsZ0NBQVMsQ0FBQTtBQUNYLENBQUMsRUFIVyxtQkFBbUIsR0FBbkIsMkJBQW1CLEtBQW5CLDJCQUFtQixRQUc5QjtBQWtCRCxTQUFnQixjQUFjO0lBQzVCLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRTtRQUM5QixNQUFNLE1BQU0sR0FBRztZQUNiLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNyRCxDQUFDO1FBRUYsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFWRCx3Q0FVQztBQUVNLEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxNQUFjOztJQUNwRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFbEUsTUFBTSxVQUFVLEdBQUcsTUFBQSxTQUFTLENBQUMsT0FBTyxtQ0FBSSxFQUFFLENBQUM7SUFDM0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDaEMsTUFBTSxXQUFXLEdBQUcsTUFBQSxTQUFTLENBQUMsT0FBTyxtQ0FBSSxFQUFFLENBQUM7UUFDNUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QixJQUFJLE1BQU0sR0FBRztZQUNYLEdBQUcsU0FBUztZQUNaLE9BQU8sRUFBRSxXQUFXO1NBQ3JCLENBQUM7UUFDRixNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztLQUMxRDtBQUNILENBQUM7QUFiRCw4Q0FhQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAneWFtbCc7XG5pbXBvcnQgeyBMYW5ndWFnZSB9IGZyb20gJy4vaW1wb3J0L2Jhc2UnO1xuXG5jb25zdCBDT05GSUdfRklMRSA9ICdjZGs4cy55YW1sJztcblxuZXhwb3J0IGludGVyZmFjZSBJbXBvcnRTcGVjIHtcbiAgcmVhZG9ubHkgbW9kdWxlTmFtZVByZWZpeD86IHN0cmluZztcbiAgcmVhZG9ubHkgc291cmNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvbkNvbmZpZyB7XG4gIHJlYWRvbmx5IHBhY2thZ2U6IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuICByZWFkb25seSBjbGFzczogc3RyaW5nO1xuICByZWFkb25seSBpbnN0YWxsRW52PzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgcmVhZG9ubHkgcHJvcGVydGllcz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbmV4cG9ydCBlbnVtIFN5bnRoZXNpc0Zvcm1hdCB7XG4gIFBMQUlOID0gJ3BsYWluJyxcbiAgSEVMTSA9ICdoZWxtJyxcbn1cblxuZXhwb3J0IGVudW0gSGVsbUNoYXJ0QXBpVmVyc2lvbiB7XG4gIFYxID0gJ3YxJyxcbiAgVjIgPSAndjInLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN5bnRoQ29uZmlnIHtcbiAgcmVhZG9ubHkgZm9ybWF0PzogU3ludGhlc2lzRm9ybWF0O1xuICByZWFkb25seSBjaGFydEFwaVZlcnNpb24/OiBIZWxtQ2hhcnRBcGlWZXJzaW9uO1xuICByZWFkb25seSBjaGFydFZlcnNpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnIHtcbiAgcmVhZG9ubHkgYXBwPzogc3RyaW5nO1xuICByZWFkb25seSBsYW5ndWFnZT86IExhbmd1YWdlO1xuICByZWFkb25seSBvdXRwdXQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGltcG9ydHM/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgcGx1Z2luc0RpcmVjdG9yeT86IHN0cmluZztcbiAgcmVhZG9ubHkgdmFsaWRhdGlvbnM/OiBzdHJpbmcgfCBWYWxpZGF0aW9uQ29uZmlnW107XG4gIHJlYWRvbmx5IHN5bnRoQ29uZmlnPzogU3ludGhDb25maWc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkQ29uZmlnU3luYygpOiBDb25maWcgfCB1bmRlZmluZWQge1xuICBpZiAoZnMuZXhpc3RzU3luYyhDT05GSUdfRklMRSkpIHtcbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICAuLi55YW1sLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhDT05GSUdfRklMRSwgJ3V0Zi04JykpLFxuICAgIH07XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFkZEltcG9ydFRvQ29uZmlnKHNvdXJjZTogc3RyaW5nKSB7XG4gIGxldCBjdXJDb25maWcgPSB5YW1sLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhDT05GSUdfRklMRSwgJ3V0Zi04JykpO1xuXG4gIGNvbnN0IGN1ckltcG9ydHMgPSBjdXJDb25maWcuaW1wb3J0cyA/PyBbXTtcbiAgaWYgKCFjdXJJbXBvcnRzLmluY2x1ZGVzKHNvdXJjZSkpIHtcbiAgICBjb25zdCBpbXBvcnRzTGlzdCA9IGN1ckNvbmZpZy5pbXBvcnRzID8/IFtdO1xuICAgIGltcG9ydHNMaXN0LnB1c2goc291cmNlKTtcbiAgICBsZXQgY29uZmlnID0ge1xuICAgICAgLi4uY3VyQ29uZmlnLFxuICAgICAgaW1wb3J0czogaW1wb3J0c0xpc3QsXG4gICAgfTtcbiAgICBhd2FpdCBmcy5vdXRwdXRGaWxlKENPTkZJR19GSUxFLCB5YW1sLnN0cmluZ2lmeShjb25maWcpKTtcbiAgfVxufSJdfQ==
@@ -40,6 +40,7 @@ export declare class CustomResourceDefinition {
40
40
  }
41
41
  export declare class ImportCustomResourceDefinition extends ImportBase {
42
42
  static fromSpec(importSpec: ImportSpec): Promise<ImportCustomResourceDefinition>;
43
+ readonly rawManifest: string;
43
44
  private readonly groups;
44
45
  private constructor();
45
46
  get moduleNames(): string[];
package/lib/import/crd.js CHANGED
@@ -106,11 +106,13 @@ class ImportCustomResourceDefinition extends base_1.ImportBase {
106
106
  static async fromSpec(importSpec) {
107
107
  const { source } = importSpec;
108
108
  const manifest = await (0, util_1.download)(source);
109
- return new ImportCustomResourceDefinition(safeParseCrds(manifest));
109
+ return new ImportCustomResourceDefinition(manifest);
110
110
  }
111
- constructor(manifest) {
111
+ constructor(rawManifest) {
112
112
  super();
113
113
  this.groups = {};
114
+ this.rawManifest = rawManifest;
115
+ const manifest = safeParseCrds(rawManifest);
114
116
  const crds = {};
115
117
  const groups = {};
116
118
  for (const spec of manifest) {
@@ -191,4 +193,4 @@ function safeParseCrds(manifest) {
191
193
  return crds;
192
194
  }
193
195
  exports.safeParseCrds = safeParseCrds;
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ltcG9ydC9jcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLDhDQUFzQjtBQUN0Qix5Q0FBb0Q7QUFDcEQseUNBQTBDO0FBQzFDLGlDQUFxRDtBQUNyRCx1Q0FBMEQ7QUFFMUQsd0NBQXlDO0FBQ3pDLGtDQUFrRDtBQUVsRCxNQUFNLFFBQVEsR0FBRywwQkFBMEIsQ0FBQztBQTBCNUMsc0RBQXNEO0FBQ3RELE1BQU0sc0JBQXNCLEdBQUc7SUFDN0IsOEJBQThCO0lBQzlCLHlCQUF5QjtDQUMxQixDQUFDO0FBSUYsTUFBYSx3QkFBd0I7SUFPbkMsWUFBWSxRQUFrQzs7UUFKN0IsYUFBUSxHQUFzQyxFQUFFLENBQUM7UUFLaEUsTUFBTSxVQUFVLEdBQUcsTUFBQSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsVUFBVSxtQ0FBSSxXQUFXLENBQUM7UUFDdkQsTUFBTSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxvQkFBb0IsVUFBVSw4QkFBOEIsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEssTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLG1CQUFtQixRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBRW5FLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztTQUM5RDtRQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUss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QUFHLEVBQUUsQ0FBQztJQUN0QixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNsQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtRQUN0QixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDbkIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNqQztRQUFBLENBQUM7S0FDSDtJQUNELElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUN4RztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQXpDRCxzQ0F5Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IEFqdiBmcm9tICdhanYnO1xuaW1wb3J0IHsgQ29kZU1ha2VyLCB0b1Bhc2NhbENhc2UgfSBmcm9tICdjb2RlbWFrZXInO1xuaW1wb3J0IHsgVHlwZUdlbmVyYXRvciB9IGZyb20gJ2pzb24yanNpaSc7XG5pbXBvcnQgeyBHZW5lcmF0ZU9wdGlvbnMsIEltcG9ydEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgZW1pdEhlYWRlciwgZ2VuZXJhdGVDb25zdHJ1Y3QgfSBmcm9tICcuL2NvZGVnZW4nO1xuaW1wb3J0IHsgSW1wb3J0U3BlYyB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBTYWZlUmV2aXZlciB9IGZyb20gJy4uL3Jldml2ZXInO1xuaW1wb3J0IHsgZG93bmxvYWQsIHNhZmVQYXJzZVlhbWwgfSBmcm9tICcuLi91dGlsJztcblxuY29uc3QgQ1JEX0tJTkQgPSAnQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBNYW5pZmVzdE9iamVjdERlZmluaXRpb24ge1xuICBhcGlWZXJzaW9uPzogc3RyaW5nO1xuICBraW5kPzogc3RyaW5nO1xuICBpdGVtcz86IE1hbmlmZXN0T2JqZWN0RGVmaW5pdGlvbltdOyAvLyBpZiBga2luZGAgaXMgXCJMaXN0XCJcbiAgbWV0YWRhdGE/OiB7XG4gICAgbmFtZT86IHN0cmluZztcbiAgfTtcbiAgc3BlYz86IHtcbiAgICBncm91cDogc3RyaW5nO1xuICAgIG5hbWVzOiB7XG4gICAgICBraW5kOiBzdHJpbmc7XG4gICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgfTtcbiAgICB2ZXJzaW9ucz86IEFycmF5PHtcbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIHNjaGVtYT86IHsgb3BlbkFQSVYzU2NoZW1hPzogYW55IH07XG4gICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgfT47XG4gICAgdmVyc2lvbj86IHN0cmluZztcbiAgICB2YWxpZGF0aW9uPzogeyBvcGVuQVBJVjNTY2hlbWE/OiBhbnkgfTtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH07XG59XG5cbi8vIGFsbCB0aGVzZSBBUElzIGFyZSBjb21wYXRpYmxlIGZyb20gb3VyIHBlcnNwZWN0aXZlLlxuY29uc3QgU1VQUE9SVEVEX0FQSV9WRVJTSU9OUyA9IFtcbiAgJ2FwaWV4dGVuc2lvbnMuazhzLmlvL3YxYmV0YTEnLFxuICAnYXBpZXh0ZW5zaW9ucy5rOHMuaW8vdjEnLFxuXTtcblxudHlwZSBDdXN0b21SZXNvdXJjZURlZmluaXRpb25WZXJzaW9uID0geyBuYW1lOiBzdHJpbmc7IHNjaGVtYT86IGFueSB9O1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uIHtcblxuICBwcml2YXRlIHJlYWRvbmx5IGtpbmQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSB2ZXJzaW9uczogQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uVmVyc2lvbltdID0gW107XG5cbiAgcHVibGljIHJlYWRvbmx5IGdyb3VwOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobWFuaWZlc3Q6IE1hbmlmZXN0T2JqZWN0RGVmaW5pdGlvbikge1xuICAgIGNvbnN0IGFwaVZlcnNpb24gPSBtYW5pZmVzdD8uYXBpVmVyc2lvbiA/PyAndW5kZWZpbmVkJztcbiAgICBhc3NlcnQoU1VQUE9SVEVEX0FQSV9WRVJTSU9OUy5pbmNsdWRlcyhhcGlWZXJzaW9uKSwgYFwiYXBpVmVyc2lvblwiIGlzIFwiJHthcGlWZXJzaW9ufVwiIGJ1dCBpdCBzaG91bGQgYmUgb25lIG9mOiAke1NVUFBPUlRFRF9BUElfVkVSU0lPTlMubWFwKHggPT4gYFwiJHt4fVwiYCkuam9pbignLCAnKX1gKTtcbiAgICBhc3NlcnQobWFuaWZlc3Qua2luZCA9PT0gQ1JEX0tJTkQsIGBcImtpbmRcIiBtdXN0IGJlIFwiJHtDUkRfS0lORH1cImApO1xuXG4gICAgY29uc3Qgc3BlYyA9IG1hbmlmZXN0LnNwZWM7XG4gICAgaWYgKCFzcGVjKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21hbmlmZXN0IGRvZXMgbm90IGhhdmUgYSBcInNwZWNcIiBhdHRyaWJ1dGUnKTtcbiAgICB9XG5cbiAgICB0aGlzLmdyb3VwID0gc3BlYy5ncm91cDtcbiAgICB0aGlzLmtpbmQgPSBzcGVjLm5hbWVzLmtpbmQ7XG5cbiAgICBpZiAoc3BlYy52ZXJzaW9uKSB7XG4gICAgICB0aGlzLmFkZFZlcnNpb25zKFt7IG5hbWU6IHNwZWMudmVyc2lvbiwgc2NoZW1hOiBzcGVjLnZhbGlkYXRpb24/Lm9wZW5BUElWM1NjaGVtYSB9XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkVmVyc2lvbnMoKHNwZWMudmVyc2lvbnMgPz8gW10pLm1hcCh2ID0+ICh7IG5hbWU6IHYubmFtZSwgc2NoZW1hOiB2LnNjaGVtYT8ub3BlbkFQSVYzU2NoZW1hID8/IHNwZWMudmFsaWRhdGlvbj8ub3BlbkFQSVYzU2NoZW1hIH0pKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmVyc2lvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuYWJsZSB0byBkZXRlcm1pbmUgQ1JEIHZlcnNpb25zJyk7XG4gICAgfVxuXG4gIH1cblxuICBwdWJsaWMgbWVyZ2UoY3JkOiBDdXN0b21SZXNvdXJjZURlZmluaXRpb24pIHtcbiAgICB0aGlzLmFkZFZlcnNpb25zKGNyZC52ZXJzaW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGFkZFZlcnNpb25zKHZlcnNpb25zOiBDdXN0b21SZXNvdXJjZURlZmluaXRpb25WZXJzaW9uW10pIHtcbiAgICBmb3IgKGNvbnN0IHYgb2YgdmVyc2lvbnMpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nVmVyc2lvbnMgPSB0aGlzLnZlcnNpb25zLm1hcCh2ZXIgPT4gdmVyLm5hbWUpO1xuICAgICAgaWYgKGV4aXN0aW5nVmVyc2lvbnMuaW5jbHVkZXModi5uYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZvdW5kIG11bHRpcGxlIG9jY3VycmVuY2VzIG9mIHZlcnNpb24gJHt2Lm5hbWV9IGZvciAke3RoaXMua2V5fWApO1xuICAgICAgfVxuICAgICAgdGhpcy52ZXJzaW9ucy5wdXNoKHsgbmFtZTogdi5uYW1lLCBzY2hlbWE6IHYuc2NoZW1hIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQga2V5KCkge1xuICAgIHJldHVybiBgJHt0aGlzLmdyb3VwfS8ke3RoaXMua2luZC50b0xvY2FsZUxvd2VyQ2FzZSgpfWA7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2VuZXJhdGVUeXBlU2NyaXB0KGNvZGU6IENvZGVNYWtlciwgb3B0aW9uczogR2VuZXJhdGVPcHRpb25zKSB7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudmVyc2lvbnMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMudmVyc2lvbnNbaV07XG5cbiAgICAgIC8vIHRvIHByZXNldmUgYmFja3dhcmRzIGNvbXBhdGlibGl0eSwgb25seSBhcHBlbmQgYSBzdWZmaXggZm9yXG4gICAgICAvLyB0aGUgc2Vjb25kIHZlcnNpb24gb253YXJkcy5cbiAgICAgIGNvbnN0IHN1ZmZpeCA9IGkgPT09IDAgPyAnJyA6IHRvUGFzY2FsQ2FzZSh2ZXJzaW9uLm5hbWUpO1xuXG4gICAgICBjb25zdCB0eXBlcyA9IG5ldyBUeXBlR2VuZXJhdG9yKHt9KTtcblxuICAgICAgZ2VuZXJhdGVDb25zdHJ1Y3QodHlwZXMsIHtcbiAgICAgICAgZ3JvdXA6IHRoaXMuZ3JvdXAsXG4gICAgICAgIHZlcnNpb246IHZlcnNpb24ubmFtZSxcbiAgICAgICAga2luZDogdGhpcy5raW5kLFxuICAgICAgICBmcW46IGAke3RoaXMua2luZH0ke3N1ZmZpeH1gLFxuICAgICAgICBzY2hlbWE6IHZlcnNpb24uc2NoZW1hLFxuICAgICAgICBjdXN0b206IHRydWUsXG4gICAgICAgIHByZWZpeDogb3B0aW9ucy5jbGFzc05hbWVQcmVmaXgsXG4gICAgICAgIHN1ZmZpeCxcbiAgICAgIH0pO1xuXG4gICAgICBjb2RlLmxpbmUodHlwZXMucmVuZGVyKCkpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW1wb3J0Q3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uIGV4dGVuZHMgSW1wb3J0QmFzZSB7XG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgZnJvbVNwZWMoaW1wb3J0U3BlYzogSW1wb3J0U3BlYyk6IFByb21pc2U8SW1wb3J0Q3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uPiB7XG4gICAgY29uc3QgeyBzb3VyY2UgfSA9IGltcG9ydFNwZWM7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBhd2FpdCBkb3dubG9hZChzb3VyY2UpO1xuICAgIHJldHVybiBuZXcgSW1wb3J0Q3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uKHNhZmVQYXJzZUNyZHMobWFuaWZlc3QpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgZ3JvdXBzOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21SZXNvdXJjZURlZmluaXRpb25bXT4gPSB7IH07XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihtYW5pZmVzdDogTWFuaWZlc3RPYmplY3REZWZpbml0aW9uW10pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgY29uc3QgY3JkczogUmVjb3JkPHN0cmluZywgQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uPiA9IHsgfTtcbiAgICBjb25zdCBncm91cHM6IFJlY29yZDxzdHJpbmcsIEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbltdPiA9IHsgfTtcblxuICAgIGZvciAoY29uc3Qgc3BlYyBvZiBtYW5pZmVzdCkge1xuICAgICAgY29uc3QgY3JkID0gbmV3IEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbihzcGVjKTtcbiAgICAgIGNvbnN0IGtleSA9IGNyZC5rZXk7XG5cbiAgICAgIGlmIChrZXkgaW4gY3Jkcykge1xuICAgICAgICAvLyBtaWdodCBjb250YWluIGRpZmZlcmVudCB2ZXJzaW9ucyAtIGxldHMgdHJ5IHRvIG1lcmdlIHRoZW0gaW5cbiAgICAgICAgY3Jkc1trZXldLm1lcmdlKGNyZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjcmRzW2tleV0gPSBjcmQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy9zb3J0IHRvIGVuc3VyZSBjb25zaXN0ZW50IG9yZGVyaW5nIGZvciBzbmFwc2hvdCBjb21wYXJlXG4gICAgY29uc3Qgc29ydGVkQ3JkcyA9IE9iamVjdC52YWx1ZXMoY3Jkcykuc29ydCgoYTogQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uLCBiOiBDdXN0b21SZXNvdXJjZURlZmluaXRpb24pID0+IGEua2V5LmxvY2FsZUNvbXBhcmUoYi5rZXkpKTtcblxuICAgIGZvciAoY29uc3QgY3JkIG9mIHNvcnRlZENyZHMpIHtcbiAgICAgIGNvbnN0IGcgPSBjcmQuZ3JvdXA7XG4gICAgICBpZiAoICEoZyBpbiBncm91cHMpICkge1xuICAgICAgICBncm91cHNbZ10gPSBuZXcgQXJyYXk8Q3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uPigpO1xuICAgICAgfVxuICAgICAgZ3JvdXBzW2ddLnB1c2goY3JkKTtcbiAgICB9XG5cbiAgICB0aGlzLmdyb3VwcyA9IGdyb3VwcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbW9kdWxlTmFtZXMoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZ3JvdXBzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZW5lcmF0ZVR5cGVTY3JpcHQoY29kZTogQ29kZU1ha2VyLCBtb2R1bGVOYW1lOiBzdHJpbmcsIG9wdGlvbnM6IEdlbmVyYXRlT3B0aW9ucykge1xuICAgIGNvbnN0IGNyZHMgPSB0aGlzLmdyb3Vwc1ttb2R1bGVOYW1lXTtcblxuXG4gICAgZW1pdEhlYWRlcihjb2RlLCB0cnVlKTtcblxuICAgIGZvciAoY29uc3QgY3JkIG9mIGNyZHMpIHtcbiAgICAgIGNvbnNvbGUubG9nKGAgICR7Y3JkLmtleX1gKTtcbiAgICAgIGF3YWl0IGNyZC5nZW5lcmF0ZVR5cGVTY3JpcHQoY29kZSwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydChjb25kaXRpb246IGJvb2xlYW4sIG1lc3NhZ2U6IHN0cmluZykge1xuICBpZiAoIWNvbmRpdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBDdXN0b21SZXNvdXJjZURlZmluaXRpb24gbWFuaWZlc3Q6ICR7bWVzc2FnZX1gKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBzYWZlUGFyc2VDcmRzKG1hbmlmZXN0OiBzdHJpbmcpOiBNYW5pZmVzdE9iamVjdERlZmluaXRpb25bXSB7XG4gIGNvbnN0IHNjaGVtYVBhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnc2NoZW1hcycsICdjcmQuc2NoZW1hLmpzb24nKTtcbiAgY29uc3Qgc2NoZW1hID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoc2NoZW1hUGF0aCwgeyBlbmNvZGluZzogJ3V0ZjgnIH0pKTtcbiAgY29uc3QgcmV2aXZlciA9IG5ldyBTYWZlUmV2aXZlcih7XG4gICAgc2FuaXRpemVyczogW1NhZmVSZXZpdmVyLkRFU0NSSVBUSU9OX1NBTklUSVpFUiwgU2FmZVJldml2ZXIuTEVHQUxfQ0hBUl9TQU5JVElaRVJdLFxuICB9KTtcblxuICAvLyBmaXJzdCBwYXJzZSBhbmQgc3RyaXBcbiAgY29uc3Qgb2JqZWN0cyA9IHNhZmVQYXJzZVlhbWwobWFuaWZlc3QsIHJldml2ZXIpO1xuXG4gIC8vIHNpbmNlIHRoZSBtYW5pZmVzdCBjYW4gY29udGFpbiBub24gY3JkcyBhcyB3ZWxsLCB3ZSBmaXJzdFxuICAvLyBjb2xsZWN0IGFsbCBjcmRzIGFuZCBvbmx5IGFwcGx5IGEgc2NoZW1hIHZhbGlkYXRpb24gb24gdGhlbS5cblxuICBjb25zdCBjcmRzOiBhbnlbXSA9IFtdO1xuXG4gIGZ1bmN0aW9uIGNvbGxlY3RDUkRzKG9ianM6IGFueVtdKSB7XG4gICAgZm9yIChjb25zdCBvYmogb2Ygb2Jqcy5maWx0ZXIobyA9PiBvKSkge1xuICAgICAgaWYgKG9iai5raW5kID09PSBDUkRfS0lORCkge1xuICAgICAgICBjcmRzLnB1c2gob2JqKTtcbiAgICAgIH1cbiAgICAgIGlmIChvYmoua2luZCA9PT0gJ0xpc3QnKSB7XG4gICAgICAgIGNvbGxlY3RDUkRzKG9iai5pdGVtcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29sbGVjdENSRHMob2JqZWN0cyk7XG5cbiAgY29uc3QgYWp2ID0gbmV3IEFqdigpO1xuICBjb25zdCB2YWxpZGF0ZSA9IGFqdi5jb21waWxlKHNjaGVtYSk7XG4gIGNvbnN0IGVycm9ycyA9IFtdO1xuICBmb3IgKGNvbnN0IGNyZCBvZiBjcmRzKSB7XG4gICAgdmFsaWRhdGUoY3JkKTtcbiAgICBpZiAodmFsaWRhdGUuZXJyb3JzKSB7XG4gICAgICBlcnJvcnMucHVzaCguLi52YWxpZGF0ZS5lcnJvcnMpO1xuICAgIH07XG4gIH1cbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTY2hlbWEgdmFsaWRhdGlvbiBlcnJvcnMgZGV0ZWN0ZWRcXG4gJHtlcnJvcnMubWFwKGUgPT4gYCogJHtlLm1lc3NhZ2V9YCkuam9pbignXFxuJyl9YCk7XG4gIH1cbiAgcmV0dXJuIGNyZHM7XG59XG4iXX0=
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ltcG9ydC9jcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLDhDQUFzQjtBQUN0Qix5Q0FBb0Q7QUFDcEQseUNBQTBDO0FBQzFDLGlDQUFxRDtBQUNyRCx1Q0FBMEQ7QUFFMUQsd0NBQXlDO0FBQ3pDLGtDQUFrRDtBQUVsRCxNQUFNLFFBQVEsR0FBRywwQkFBMEIsQ0FBQztBQTBCNUMsc0RBQXNEO0FBQ3RELE1BQU0sc0JBQXNCLEdBQUc7SUFDN0IsOEJBQThCO0lBQzlCLHlCQUF5QjtDQUMxQixDQUFDO0FBSUYsTUFBYSx3QkFBd0I7SUFPbkMsWUFBWSxRQUFrQzs7UUFKN0IsYUFBUSxHQUFzQyxFQUFFLENBQUM7UUFLaEUsTUFBTSxVQUFVLEdBQUcsTUFBQSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsVUFBVSxtQ0FBSSxXQUFXLENBQUM7UUFDdkQsTUFBTSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxvQkFBb0IsVUFBVSw4QkFBOEIsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEssTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLG1CQUFtQixRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBRW5FLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztTQUM5RDtRQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUss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SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXJCLE1BQU0sR0FBRyxHQUFHLElBQUksYUFBRyxFQUFFLENBQUM7SUFDdEIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDbEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7UUFDdEIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDakM7UUFBQSxDQUFDO0tBQ0g7SUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDeEc7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUF6Q0Qsc0NBeUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBBanYgZnJvbSAnYWp2JztcbmltcG9ydCB7IENvZGVNYWtlciwgdG9QYXNjYWxDYXNlIH0gZnJvbSAnY29kZW1ha2VyJztcbmltcG9ydCB7IFR5cGVHZW5lcmF0b3IgfSBmcm9tICdqc29uMmpzaWknO1xuaW1wb3J0IHsgR2VuZXJhdGVPcHRpb25zLCBJbXBvcnRCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IGVtaXRIZWFkZXIsIGdlbmVyYXRlQ29uc3RydWN0IH0gZnJvbSAnLi9jb2RlZ2VuJztcbmltcG9ydCB7IEltcG9ydFNwZWMgfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHsgU2FmZVJldml2ZXIgfSBmcm9tICcuLi9yZXZpdmVyJztcbmltcG9ydCB7IGRvd25sb2FkLCBzYWZlUGFyc2VZYW1sIH0gZnJvbSAnLi4vdXRpbCc7XG5cbmNvbnN0IENSRF9LSU5EID0gJ0N1c3RvbVJlc291cmNlRGVmaW5pdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFuaWZlc3RPYmplY3REZWZpbml0aW9uIHtcbiAgYXBpVmVyc2lvbj86IHN0cmluZztcbiAga2luZD86IHN0cmluZztcbiAgaXRlbXM/OiBNYW5pZmVzdE9iamVjdERlZmluaXRpb25bXTsgLy8gaWYgYGtpbmRgIGlzIFwiTGlzdFwiXG4gIG1ldGFkYXRhPzoge1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gIH07XG4gIHNwZWM/OiB7XG4gICAgZ3JvdXA6IHN0cmluZztcbiAgICBuYW1lczoge1xuICAgICAga2luZDogc3RyaW5nO1xuICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgIH07XG4gICAgdmVyc2lvbnM/OiBBcnJheTx7XG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBzY2hlbWE/OiB7IG9wZW5BUElWM1NjaGVtYT86IGFueSB9O1xuICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgIH0+O1xuICAgIHZlcnNpb24/OiBzdHJpbmc7XG4gICAgdmFsaWRhdGlvbj86IHsgb3BlbkFQSVYzU2NoZW1hPzogYW55IH07XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICB9O1xufVxuXG4vLyBhbGwgdGhlc2UgQVBJcyBhcmUgY29tcGF0aWJsZSBmcm9tIG91ciBwZXJzcGVjdGl2ZS5cbmNvbnN0IFNVUFBPUlRFRF9BUElfVkVSU0lPTlMgPSBbXG4gICdhcGlleHRlbnNpb25zLms4cy5pby92MWJldGExJyxcbiAgJ2FwaWV4dGVuc2lvbnMuazhzLmlvL3YxJyxcbl07XG5cbnR5cGUgQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uVmVyc2lvbiA9IHsgbmFtZTogc3RyaW5nOyBzY2hlbWE/OiBhbnkgfTtcblxuZXhwb3J0IGNsYXNzIEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbiB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBraW5kOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgdmVyc2lvbnM6IEN1c3RvbVJlc291cmNlRGVmaW5pdGlvblZlcnNpb25bXSA9IFtdO1xuXG4gIHB1YmxpYyByZWFkb25seSBncm91cDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG1hbmlmZXN0OiBNYW5pZmVzdE9iamVjdERlZmluaXRpb24pIHtcbiAgICBjb25zdCBhcGlWZXJzaW9uID0gbWFuaWZlc3Q/LmFwaVZlcnNpb24gPz8gJ3VuZGVmaW5lZCc7XG4gICAgYXNzZXJ0KFNVUFBPUlRFRF9BUElfVkVSU0lPTlMuaW5jbHVkZXMoYXBpVmVyc2lvbiksIGBcImFwaVZlcnNpb25cIiBpcyBcIiR7YXBpVmVyc2lvbn1cIiBidXQgaXQgc2hvdWxkIGJlIG9uZSBvZjogJHtTVVBQT1JURURfQVBJX1ZFUlNJT05TLm1hcCh4ID0+IGBcIiR7eH1cImApLmpvaW4oJywgJyl9YCk7XG4gICAgYXNzZXJ0KG1hbmlmZXN0LmtpbmQgPT09IENSRF9LSU5ELCBgXCJraW5kXCIgbXVzdCBiZSBcIiR7Q1JEX0tJTkR9XCJgKTtcblxuICAgIGNvbnN0IHNwZWMgPSBtYW5pZmVzdC5zcGVjO1xuICAgIGlmICghc3BlYykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtYW5pZmVzdCBkb2VzIG5vdCBoYXZlIGEgXCJzcGVjXCIgYXR0cmlidXRlJyk7XG4gICAgfVxuXG4gICAgdGhpcy5ncm91cCA9IHNwZWMuZ3JvdXA7XG4gICAgdGhpcy5raW5kID0gc3BlYy5uYW1lcy5raW5kO1xuXG4gICAgaWYgKHNwZWMudmVyc2lvbikge1xuICAgICAgdGhpcy5hZGRWZXJzaW9ucyhbeyBuYW1lOiBzcGVjLnZlcnNpb24sIHNjaGVtYTogc3BlYy52YWxpZGF0aW9uPy5vcGVuQVBJVjNTY2hlbWEgfV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZFZlcnNpb25zKChzcGVjLnZlcnNpb25zID8/IFtdKS5tYXAodiA9PiAoeyBuYW1lOiB2Lm5hbWUsIHNjaGVtYTogdi5zY2hlbWE/Lm9wZW5BUElWM1NjaGVtYSA/PyBzcGVjLnZhbGlkYXRpb24/Lm9wZW5BUElWM1NjaGVtYSB9KSkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnZlcnNpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmFibGUgdG8gZGV0ZXJtaW5lIENSRCB2ZXJzaW9ucycpO1xuICAgIH1cblxuICB9XG5cbiAgcHVibGljIG1lcmdlKGNyZDogQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uKSB7XG4gICAgdGhpcy5hZGRWZXJzaW9ucyhjcmQudmVyc2lvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRWZXJzaW9ucyh2ZXJzaW9uczogQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uVmVyc2lvbltdKSB7XG4gICAgZm9yIChjb25zdCB2IG9mIHZlcnNpb25zKSB7XG4gICAgICBjb25zdCBleGlzdGluZ1ZlcnNpb25zID0gdGhpcy52ZXJzaW9ucy5tYXAodmVyID0+IHZlci5uYW1lKTtcbiAgICAgIGlmIChleGlzdGluZ1ZlcnNpb25zLmluY2x1ZGVzKHYubmFtZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGb3VuZCBtdWx0aXBsZSBvY2N1cnJlbmNlcyBvZiB2ZXJzaW9uICR7di5uYW1lfSBmb3IgJHt0aGlzLmtleX1gKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudmVyc2lvbnMucHVzaCh7IG5hbWU6IHYubmFtZSwgc2NoZW1hOiB2LnNjaGVtYSB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGtleSgpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5ncm91cH0vJHt0aGlzLmtpbmQudG9Mb2NhbGVMb3dlckNhc2UoKX1gO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdlbmVyYXRlVHlwZVNjcmlwdChjb2RlOiBDb2RlTWFrZXIsIG9wdGlvbnM6IEdlbmVyYXRlT3B0aW9ucykge1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnZlcnNpb25zLmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLnZlcnNpb25zW2ldO1xuXG4gICAgICAvLyB0byBwcmVzZXZlIGJhY2t3YXJkcyBjb21wYXRpYmxpdHksIG9ubHkgYXBwZW5kIGEgc3VmZml4IGZvclxuICAgICAgLy8gdGhlIHNlY29uZCB2ZXJzaW9uIG9ud2FyZHMuXG4gICAgICBjb25zdCBzdWZmaXggPSBpID09PSAwID8gJycgOiB0b1Bhc2NhbENhc2UodmVyc2lvbi5uYW1lKTtcblxuICAgICAgY29uc3QgdHlwZXMgPSBuZXcgVHlwZUdlbmVyYXRvcih7fSk7XG5cbiAgICAgIGdlbmVyYXRlQ29uc3RydWN0KHR5cGVzLCB7XG4gICAgICAgIGdyb3VwOiB0aGlzLmdyb3VwLFxuICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uLm5hbWUsXG4gICAgICAgIGtpbmQ6IHRoaXMua2luZCxcbiAgICAgICAgZnFuOiBgJHt0aGlzLmtpbmR9JHtzdWZmaXh9YCxcbiAgICAgICAgc2NoZW1hOiB2ZXJzaW9uLnNjaGVtYSxcbiAgICAgICAgY3VzdG9tOiB0cnVlLFxuICAgICAgICBwcmVmaXg6IG9wdGlvbnMuY2xhc3NOYW1lUHJlZml4LFxuICAgICAgICBzdWZmaXgsXG4gICAgICB9KTtcblxuICAgICAgY29kZS5saW5lKHR5cGVzLnJlbmRlcigpKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEltcG9ydEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbiBleHRlbmRzIEltcG9ydEJhc2Uge1xuICBwdWJsaWMgc3RhdGljIGFzeW5jIGZyb21TcGVjKGltcG9ydFNwZWM6IEltcG9ydFNwZWMpOiBQcm9taXNlPEltcG9ydEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbj4ge1xuICAgIGNvbnN0IHsgc291cmNlIH0gPSBpbXBvcnRTcGVjO1xuICAgIGNvbnN0IG1hbmlmZXN0ID0gYXdhaXQgZG93bmxvYWQoc291cmNlKTtcbiAgICByZXR1cm4gbmV3IEltcG9ydEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbihtYW5pZmVzdCk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgcmF3TWFuaWZlc3Q6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBncm91cHM6IFJlY29yZDxzdHJpbmcsIEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbltdPiA9IHsgfTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHJhd01hbmlmZXN0OiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5yYXdNYW5pZmVzdCA9IHJhd01hbmlmZXN0O1xuICAgIGNvbnN0IG1hbmlmZXN0ID0gc2FmZVBhcnNlQ3JkcyhyYXdNYW5pZmVzdCk7XG5cbiAgICBjb25zdCBjcmRzOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21SZXNvdXJjZURlZmluaXRpb24+ID0geyB9O1xuICAgIGNvbnN0IGdyb3VwczogUmVjb3JkPHN0cmluZywgQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uW10+ID0geyB9O1xuXG4gICAgZm9yIChjb25zdCBzcGVjIG9mIG1hbmlmZXN0KSB7XG4gICAgICBjb25zdCBjcmQgPSBuZXcgQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uKHNwZWMpO1xuICAgICAgY29uc3Qga2V5ID0gY3JkLmtleTtcblxuICAgICAgaWYgKGtleSBpbiBjcmRzKSB7XG4gICAgICAgIC8vIG1pZ2h0IGNvbnRhaW4gZGlmZmVyZW50IHZlcnNpb25zIC0gbGV0cyB0cnkgdG8gbWVyZ2UgdGhlbSBpblxuICAgICAgICBjcmRzW2tleV0ubWVyZ2UoY3JkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNyZHNba2V5XSA9IGNyZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvL3NvcnQgdG8gZW5zdXJlIGNvbnNpc3RlbnQgb3JkZXJpbmcgZm9yIHNuYXBzaG90IGNvbXBhcmVcbiAgICBjb25zdCBzb3J0ZWRDcmRzID0gT2JqZWN0LnZhbHVlcyhjcmRzKS5zb3J0KChhOiBDdXN0b21SZXNvdXJjZURlZmluaXRpb24sIGI6IEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbikgPT4gYS5rZXkubG9jYWxlQ29tcGFyZShiLmtleSkpO1xuXG4gICAgZm9yIChjb25zdCBjcmQgb2Ygc29ydGVkQ3Jkcykge1xuICAgICAgY29uc3QgZyA9IGNyZC5ncm91cDtcbiAgICAgIGlmICggIShnIGluIGdyb3VwcykgKSB7XG4gICAgICAgIGdyb3Vwc1tnXSA9IG5ldyBBcnJheTxDdXN0b21SZXNvdXJjZURlZmluaXRpb24+KCk7XG4gICAgICB9XG4gICAgICBncm91cHNbZ10ucHVzaChjcmQpO1xuICAgIH1cblxuICAgIHRoaXMuZ3JvdXBzID0gZ3JvdXBzO1xuICB9XG5cbiAgcHVibGljIGdldCBtb2R1bGVOYW1lcygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5ncm91cHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdlbmVyYXRlVHlwZVNjcmlwdChjb2RlOiBDb2RlTWFrZXIsIG1vZHVsZU5hbWU6IHN0cmluZywgb3B0aW9uczogR2VuZXJhdGVPcHRpb25zKSB7XG4gICAgY29uc3QgY3JkcyA9IHRoaXMuZ3JvdXBzW21vZHVsZU5hbWVdO1xuXG5cbiAgICBlbWl0SGVhZGVyKGNvZGUsIHRydWUpO1xuXG4gICAgZm9yIChjb25zdCBjcmQgb2YgY3Jkcykge1xuICAgICAgY29uc29sZS5sb2coYCAgJHtjcmQua2V5fWApO1xuICAgICAgYXdhaXQgY3JkLmdlbmVyYXRlVHlwZVNjcmlwdChjb2RlLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbjogYm9vbGVhbiwgbWVzc2FnZTogc3RyaW5nKSB7XG4gIGlmICghY29uZGl0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbiBtYW5pZmVzdDogJHttZXNzYWdlfWApO1xuICB9XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIHNhZmVQYXJzZUNyZHMobWFuaWZlc3Q6IHN0cmluZyk6IE1hbmlmZXN0T2JqZWN0RGVmaW5pdGlvbltdIHtcbiAgY29uc3Qgc2NoZW1hUGF0aCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICdzY2hlbWFzJywgJ2NyZC5zY2hlbWEuanNvbicpO1xuICBjb25zdCBzY2hlbWEgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhzY2hlbWFQYXRoLCB7IGVuY29kaW5nOiAndXRmOCcgfSkpO1xuICBjb25zdCByZXZpdmVyID0gbmV3IFNhZmVSZXZpdmVyKHtcbiAgICBzYW5pdGl6ZXJzOiBbU2FmZVJldml2ZXIuREVTQ1JJUFRJT05fU0FOSVRJWkVSLCBTYWZlUmV2aXZlci5MRUdBTF9DSEFSX1NBTklUSVpFUl0sXG4gIH0pO1xuXG4gIC8vIGZpcnN0IHBhcnNlIGFuZCBzdHJpcFxuICBjb25zdCBvYmplY3RzID0gc2FmZVBhcnNlWWFtbChtYW5pZmVzdCwgcmV2aXZlcik7XG5cbiAgLy8gc2luY2UgdGhlIG1hbmlmZXN0IGNhbiBjb250YWluIG5vbiBjcmRzIGFzIHdlbGwsIHdlIGZpcnN0XG4gIC8vIGNvbGxlY3QgYWxsIGNyZHMgYW5kIG9ubHkgYXBwbHkgYSBzY2hlbWEgdmFsaWRhdGlvbiBvbiB0aGVtLlxuXG4gIGNvbnN0IGNyZHM6IGFueVtdID0gW107XG5cbiAgZnVuY3Rpb24gY29sbGVjdENSRHMob2JqczogYW55W10pIHtcbiAgICBmb3IgKGNvbnN0IG9iaiBvZiBvYmpzLmZpbHRlcihvID0+IG8pKSB7XG4gICAgICBpZiAob2JqLmtpbmQgPT09IENSRF9LSU5EKSB7XG4gICAgICAgIGNyZHMucHVzaChvYmopO1xuICAgICAgfVxuICAgICAgaWYgKG9iai5raW5kID09PSAnTGlzdCcpIHtcbiAgICAgICAgY29sbGVjdENSRHMob2JqLml0ZW1zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb2xsZWN0Q1JEcyhvYmplY3RzKTtcblxuICBjb25zdCBhanYgPSBuZXcgQWp2KCk7XG4gIGNvbnN0IHZhbGlkYXRlID0gYWp2LmNvbXBpbGUoc2NoZW1hKTtcbiAgY29uc3QgZXJyb3JzID0gW107XG4gIGZvciAoY29uc3QgY3JkIG9mIGNyZHMpIHtcbiAgICB2YWxpZGF0ZShjcmQpO1xuICAgIGlmICh2YWxpZGF0ZS5lcnJvcnMpIHtcbiAgICAgIGVycm9ycy5wdXNoKC4uLnZhbGlkYXRlLmVycm9ycyk7XG4gICAgfTtcbiAgfVxuICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNjaGVtYSB2YWxpZGF0aW9uIGVycm9ycyBkZXRlY3RlZFxcbiAke2Vycm9ycy5tYXAoZSA9PiBgKiAke2UubWVzc2FnZX1gKS5qb2luKCdcXG4nKX1gKTtcbiAgfVxuICByZXR1cm4gY3Jkcztcbn1cbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { ImportOptions } from './base';
1
+ import { ImportBase, ImportOptions } from './base';
2
2
  import { ImportSpec } from '../config';
3
- export declare const PREFIX_DELIM = ":=";
4
3
  export declare function importDispatch(imports: ImportSpec[], argv: any, options: ImportOptions): Promise<void>;
4
+ export declare function matchImporter(importSpec: ImportSpec, argv: any): Promise<ImportBase>;
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.importDispatch = exports.PREFIX_DELIM = void 0;
3
+ exports.matchImporter = exports.importDispatch = void 0;
4
4
  const crd_1 = require("./crd");
5
5
  const crds_dev_1 = require("./crds-dev");
6
6
  const k8s_1 = require("./k8s");
7
7
  const config_1 = require("../config");
8
- exports.PREFIX_DELIM = ':=';
8
+ const util_1 = require("../util");
9
9
  async function importDispatch(imports, argv, options) {
10
10
  var _a;
11
11
  for (const importSpec of imports) {
@@ -19,7 +19,7 @@ async function importDispatch(imports, argv, options) {
19
19
  ...options,
20
20
  });
21
21
  if ((_a = options.save) !== null && _a !== void 0 ? _a : true) {
22
- const spec = importSpec.moduleNamePrefix ? `${importSpec.moduleNamePrefix}${exports.PREFIX_DELIM}${importSpec.source}` : importSpec.source;
22
+ const spec = importSpec.moduleNamePrefix ? `${importSpec.moduleNamePrefix}${util_1.PREFIX_DELIM}${importSpec.source}` : importSpec.source;
23
23
  await (0, config_1.addImportToConfig)(spec);
24
24
  }
25
25
  }
@@ -39,4 +39,5 @@ async function matchImporter(importSpec, argv) {
39
39
  // default to a normal CRD
40
40
  return crd_1.ImportCustomResourceDefinition.fromSpec(importSpec);
41
41
  }
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW1wb3J0L2Rpc3BhdGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLCtCQUF1RDtBQUN2RCx5Q0FBNkM7QUFDN0MsK0JBQTRDO0FBQzVDLHNDQUEwRDtBQUU3QyxRQUFBLFlBQVksR0FBRyxJQUFJLENBQUM7QUFFMUIsS0FBSyxVQUFVLGNBQWMsQ0FBQyxPQUFxQixFQUFFLElBQVMsRUFBRSxPQUFzQjs7SUFDM0YsS0FBSyxNQUFNLFVBQVUsSUFBSSxPQUFPLEVBQUU7UUFDaEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxhQUFhLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXZELElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1NBQ3hFO1FBRUQsT0FBTyxDQUFDLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1FBRXJFLE1BQU0sUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUNwQixnQkFBZ0IsRUFBRSxVQUFVLENBQUMsZ0JBQWdCO1lBQzdDLEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztRQUVILElBQUksTUFBQSxPQUFPLENBQUMsSUFBSSxtQ0FBSSxJQUFJLEVBQUU7WUFDeEIsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxnQkFBZ0IsR0FBRyxvQkFBWSxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUNuSSxNQUFNLElBQUEsMEJBQWlCLEVBQUMsSUFBSSxDQUFDLENBQUM7U0FDL0I7S0FDRjtBQUNILENBQUM7QUFwQkQsd0NBb0JDO0FBRUQsS0FBSyxVQUFVLGFBQWEsQ0FBQyxVQUFzQixFQUFFLElBQVM7SUFFNUQscUNBQXFDO0lBQ3JDLE1BQU0sR0FBRyxHQUFHLE1BQU0seUJBQW1CLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5RCxJQUFJLEdBQUcsRUFBRTtRQUNQLE9BQU8sSUFBSSx5QkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNyQztJQUVELHFDQUFxQztJQUNyQyxNQUFNLFVBQVUsR0FBRyxJQUFBLDBCQUFlLEVBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RELElBQUksVUFBVSxFQUFFO1FBQ2QsT0FBTyxvQ0FBOEIsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7S0FDdkg7SUFFRCwwQkFBMEI7SUFDMUIsT0FBTyxvQ0FBOEIsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEltcG9ydEJhc2UsIEltcG9ydE9wdGlvbnMgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgSW1wb3J0Q3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uIH0gZnJvbSAnLi9jcmQnO1xuaW1wb3J0IHsgbWF0Y2hDcmRzRGV2VXJsIH0gZnJvbSAnLi9jcmRzLWRldic7XG5pbXBvcnQgeyBJbXBvcnRLdWJlcm5ldGVzQXBpIH0gZnJvbSAnLi9rOHMnO1xuaW1wb3J0IHsgSW1wb3J0U3BlYywgYWRkSW1wb3J0VG9Db25maWcgfSBmcm9tICcuLi9jb25maWcnO1xuXG5leHBvcnQgY29uc3QgUFJFRklYX0RFTElNID0gJzo9JztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGltcG9ydERpc3BhdGNoKGltcG9ydHM6IEltcG9ydFNwZWNbXSwgYXJndjogYW55LCBvcHRpb25zOiBJbXBvcnRPcHRpb25zKSB7XG4gIGZvciAoY29uc3QgaW1wb3J0U3BlYyBvZiBpbXBvcnRzKSB7XG4gICAgY29uc3QgaW1wb3J0ZXIgPSBhd2FpdCBtYXRjaEltcG9ydGVyKGltcG9ydFNwZWMsIGFyZ3YpO1xuXG4gICAgaWYgKCFpbXBvcnRlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmFibGUgdG8gZGV0ZXJtaW5lIGltcG9ydCB0eXBlIGZvciBcIiR7aW1wb3J0U3BlY31cImApO1xuICAgIH1cblxuICAgIGNvbnNvbGUuZXJyb3IoJ0ltcG9ydGluZyByZXNvdXJjZXMsIHRoaXMgbWF5IHRha2UgYSBmZXcgbW9tZW50cy4uLicpO1xuXG4gICAgYXdhaXQgaW1wb3J0ZXIuaW1wb3J0KHtcbiAgICAgIG1vZHVsZU5hbWVQcmVmaXg6IGltcG9ydFNwZWMubW9kdWxlTmFtZVByZWZpeCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICBpZiAob3B0aW9ucy5zYXZlID8/IHRydWUpIHtcbiAgICAgIGNvbnN0IHNwZWMgPSBpbXBvcnRTcGVjLm1vZHVsZU5hbWVQcmVmaXggPyBgJHtpbXBvcnRTcGVjLm1vZHVsZU5hbWVQcmVmaXh9JHtQUkVGSVhfREVMSU19JHtpbXBvcnRTcGVjLnNvdXJjZX1gIDogaW1wb3J0U3BlYy5zb3VyY2U7XG4gICAgICBhd2FpdCBhZGRJbXBvcnRUb0NvbmZpZyhzcGVjKTtcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gbWF0Y2hJbXBvcnRlcihpbXBvcnRTcGVjOiBJbXBvcnRTcGVjLCBhcmd2OiBhbnkpOiBQcm9taXNlPEltcG9ydEJhc2U+IHtcblxuICAvLyBmaXJzdCBjaGVjayBpZiBpdHMgYSBgazhzQGAgaW1wb3J0XG4gIGNvbnN0IGs4cyA9IGF3YWl0IEltcG9ydEt1YmVybmV0ZXNBcGkubWF0Y2goaW1wb3J0U3BlYywgYXJndik7XG4gIGlmIChrOHMpIHtcbiAgICByZXR1cm4gbmV3IEltcG9ydEt1YmVybmV0ZXNBcGkoazhzKTtcbiAgfVxuXG4gIC8vIG5vdyBjaGVjayBpZiBpdHMgYSBjcmRzLmRldiBpbXBvcnRcbiAgY29uc3QgY3Jkc0RldlVybCA9IG1hdGNoQ3Jkc0RldlVybChpbXBvcnRTcGVjLnNvdXJjZSk7XG4gIGlmIChjcmRzRGV2VXJsKSB7XG4gICAgcmV0dXJuIEltcG9ydEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbi5mcm9tU3BlYyh7IHNvdXJjZTogY3Jkc0RldlVybCwgbW9kdWxlTmFtZVByZWZpeDogaW1wb3J0U3BlYy5tb2R1bGVOYW1lUHJlZml4IH0pO1xuICB9XG5cbiAgLy8gZGVmYXVsdCB0byBhIG5vcm1hbCBDUkRcbiAgcmV0dXJuIEltcG9ydEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbi5mcm9tU3BlYyhpbXBvcnRTcGVjKTtcbn1cbiJdfQ==
42
+ exports.matchImporter = matchImporter;
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW1wb3J0L2Rpc3BhdGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLCtCQUF1RDtBQUN2RCx5Q0FBNkM7QUFDN0MsK0JBQTRDO0FBQzVDLHNDQUEwRDtBQUMxRCxrQ0FBdUM7QUFFaEMsS0FBSyxVQUFVLGNBQWMsQ0FBQyxPQUFxQixFQUFFLElBQVMsRUFBRSxPQUFzQjs7SUFDM0YsS0FBSyxNQUFNLFVBQVUsSUFBSSxPQUFPLEVBQUU7UUFDaEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxhQUFhLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXZELElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1NBQ3hFO1FBRUQsT0FBTyxDQUFDLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1FBRXJFLE1BQU0sUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUNwQixnQkFBZ0IsRUFBRSxVQUFVLENBQUMsZ0JBQWdCO1lBQzdDLEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztRQUVILElBQUksTUFBQSxPQUFPLENBQUMsSUFBSSxtQ0FBSSxJQUFJLEVBQUU7WUFDeEIsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxnQkFBZ0IsR0FBRyxtQkFBWSxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUNuSSxNQUFNLElBQUEsMEJBQWlCLEVBQUMsSUFBSSxDQUFDLENBQUM7U0FDL0I7S0FDRjtBQUNILENBQUM7QUFwQkQsd0NBb0JDO0FBRU0sS0FBSyxVQUFVLGFBQWEsQ0FBQyxVQUFzQixFQUFFLElBQVM7SUFFbkUscUNBQXFDO0lBQ3JDLE1BQU0sR0FBRyxHQUFHLE1BQU0seUJBQW1CLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5RCxJQUFJLEdBQUcsRUFBRTtRQUNQLE9BQU8sSUFBSSx5QkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNyQztJQUVELHFDQUFxQztJQUNyQyxNQUFNLFVBQVUsR0FBRyxJQUFBLDBCQUFlLEVBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RELElBQUksVUFBVSxFQUFFO1FBQ2QsT0FBTyxvQ0FBOEIsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7S0FDdkg7SUFFRCwwQkFBMEI7SUFDMUIsT0FBTyxvQ0FBOEIsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQWhCRCxzQ0FnQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbXBvcnRCYXNlLCBJbXBvcnRPcHRpb25zIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IEltcG9ydEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbiB9IGZyb20gJy4vY3JkJztcbmltcG9ydCB7IG1hdGNoQ3Jkc0RldlVybCB9IGZyb20gJy4vY3Jkcy1kZXYnO1xuaW1wb3J0IHsgSW1wb3J0S3ViZXJuZXRlc0FwaSB9IGZyb20gJy4vazhzJztcbmltcG9ydCB7IEltcG9ydFNwZWMsIGFkZEltcG9ydFRvQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7IFBSRUZJWF9ERUxJTSB9IGZyb20gJy4uL3V0aWwnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW1wb3J0RGlzcGF0Y2goaW1wb3J0czogSW1wb3J0U3BlY1tdLCBhcmd2OiBhbnksIG9wdGlvbnM6IEltcG9ydE9wdGlvbnMpIHtcbiAgZm9yIChjb25zdCBpbXBvcnRTcGVjIG9mIGltcG9ydHMpIHtcbiAgICBjb25zdCBpbXBvcnRlciA9IGF3YWl0IG1hdGNoSW1wb3J0ZXIoaW1wb3J0U3BlYywgYXJndik7XG5cbiAgICBpZiAoIWltcG9ydGVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuYWJsZSB0byBkZXRlcm1pbmUgaW1wb3J0IHR5cGUgZm9yIFwiJHtpbXBvcnRTcGVjfVwiYCk7XG4gICAgfVxuXG4gICAgY29uc29sZS5lcnJvcignSW1wb3J0aW5nIHJlc291cmNlcywgdGhpcyBtYXkgdGFrZSBhIGZldyBtb21lbnRzLi4uJyk7XG5cbiAgICBhd2FpdCBpbXBvcnRlci5pbXBvcnQoe1xuICAgICAgbW9kdWxlTmFtZVByZWZpeDogaW1wb3J0U3BlYy5tb2R1bGVOYW1lUHJlZml4LFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcblxuICAgIGlmIChvcHRpb25zLnNhdmUgPz8gdHJ1ZSkge1xuICAgICAgY29uc3Qgc3BlYyA9IGltcG9ydFNwZWMubW9kdWxlTmFtZVByZWZpeCA/IGAke2ltcG9ydFNwZWMubW9kdWxlTmFtZVByZWZpeH0ke1BSRUZJWF9ERUxJTX0ke2ltcG9ydFNwZWMuc291cmNlfWAgOiBpbXBvcnRTcGVjLnNvdXJjZTtcbiAgICAgIGF3YWl0IGFkZEltcG9ydFRvQ29uZmlnKHNwZWMpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWF0Y2hJbXBvcnRlcihpbXBvcnRTcGVjOiBJbXBvcnRTcGVjLCBhcmd2OiBhbnkpOiBQcm9taXNlPEltcG9ydEJhc2U+IHtcblxuICAvLyBmaXJzdCBjaGVjayBpZiBpdHMgYSBgazhzQGAgaW1wb3J0XG4gIGNvbnN0IGs4cyA9IGF3YWl0IEltcG9ydEt1YmVybmV0ZXNBcGkubWF0Y2goaW1wb3J0U3BlYywgYXJndik7XG4gIGlmIChrOHMpIHtcbiAgICByZXR1cm4gbmV3IEltcG9ydEt1YmVybmV0ZXNBcGkoazhzKTtcbiAgfVxuXG4gIC8vIG5vdyBjaGVjayBpZiBpdHMgYSBjcmRzLmRldiBpbXBvcnRcbiAgY29uc3QgY3Jkc0RldlVybCA9IG1hdGNoQ3Jkc0RldlVybChpbXBvcnRTcGVjLnNvdXJjZSk7XG4gIGlmIChjcmRzRGV2VXJsKSB7XG4gICAgcmV0dXJuIEltcG9ydEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbi5mcm9tU3BlYyh7IHNvdXJjZTogY3Jkc0RldlVybCwgbW9kdWxlTmFtZVByZWZpeDogaW1wb3J0U3BlYy5tb2R1bGVOYW1lUHJlZml4IH0pO1xuICB9XG5cbiAgLy8gZGVmYXVsdCB0byBhIG5vcm1hbCBDUkRcbiAgcmV0dXJuIEltcG9ydEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbi5mcm9tU3BlYyhpbXBvcnRTcGVjKTtcbn0iXX0=
package/lib/util.d.ts CHANGED
@@ -1,8 +1,11 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  import { SpawnOptions } from 'child_process';
3
- import { ValidationConfig } from './config';
4
+ import { BinaryToTextEncoding } from 'crypto';
5
+ import { ImportSpec, ValidationConfig } from './config';
4
6
  import { PluginManager } from './plugins/_manager';
5
7
  import { SafeReviver } from './reviver';
8
+ export declare const PREFIX_DELIM = ":=";
6
9
  export declare function shell(program: string, args?: string[], options?: SpawnOptions): Promise<string>;
7
10
  export declare function mkdtemp(closure: (dir: string) => Promise<void>): Promise<void>;
8
11
  export declare function synthApp(command: string, outdir: string, stdout: boolean, metadata: boolean): Promise<SynthesizedApp>;
@@ -25,3 +28,8 @@ export interface SynthesizedApp {
25
28
  */
26
29
  readonly constructMetadata?: string;
27
30
  }
31
+ export declare function parseImports(spec: string): ImportSpec;
32
+ export declare function hashAndEncode(input: string, algorithm?: string, encoding?: BinaryToTextEncoding): string;
33
+ export declare function deriveFileName(url: string): string;
34
+ export declare function isK8sImport(value: string): boolean;
35
+ export declare function crdsArePresent(imprts: string[] | undefined): boolean;
package/lib/util.js CHANGED
@@ -23,8 +23,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.findConstructMetadata = exports.findManifests = exports.download = exports.safeParseYaml = exports.safeParseJson = exports.validateApp = exports.synthApp = exports.mkdtemp = exports.shell = void 0;
26
+ exports.crdsArePresent = exports.isK8sImport = exports.deriveFileName = exports.hashAndEncode = exports.parseImports = exports.findConstructMetadata = exports.findManifests = exports.download = exports.safeParseYaml = exports.safeParseJson = exports.validateApp = exports.synthApp = exports.mkdtemp = exports.shell = exports.PREFIX_DELIM = void 0;
27
27
  const child_process_1 = require("child_process");
28
+ const crypto_1 = require("crypto");
28
29
  const fs_1 = require("fs");
29
30
  const http = __importStar(require("http"));
30
31
  const https = __importStar(require("https"));
@@ -33,7 +34,9 @@ const path = __importStar(require("path"));
33
34
  const url_1 = require("url");
34
35
  const fs = __importStar(require("fs-extra"));
35
36
  const yaml = __importStar(require("yaml"));
37
+ const crds_dev_1 = require("./import/crds-dev");
36
38
  const validation_1 = require("./plugins/validation");
39
+ exports.PREFIX_DELIM = ':=';
37
40
  async function shell(program, args = [], options = {}) {
38
41
  var _a, _b;
39
42
  const command = `"${program} ${args.join(' ')}" at ${path.resolve((_b = (_a = options.cwd) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : '.')}`;
@@ -231,4 +234,64 @@ function findConstructMetadata(directory) {
231
234
  return fs.existsSync(p) ? p : undefined;
232
235
  }
233
236
  exports.findConstructMetadata = findConstructMetadata;
234
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQW9EO0FBQ3BELDJCQUE4QjtBQUM5QiwyQ0FBNkI7QUFDN0IsNkNBQStCO0FBQy9CLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0IsNkJBQTRCO0FBQzVCLDZDQUErQjtBQUMvQiwyQ0FBNkI7QUFHN0IscURBQXlHO0FBR2xHLEtBQUssVUFBVSxLQUFLLENBQUMsT0FBZSxFQUFFLE9BQWlCLEVBQUUsRUFBRSxVQUF3QixFQUFHOztJQUMzRixNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBQSxNQUFBLE9BQU8sQ0FBQyxHQUFHLDBDQUFFLFFBQVEsRUFBRSxtQ0FBSSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ3BHLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7O1FBQzVCLE1BQU0sS0FBSyxHQUFHLElBQUEscUJBQUssRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDMUYsTUFBTSxJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUNqQyxNQUFBLEtBQUssQ0FBQyxNQUFNLDBDQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFcEQsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsV0FBVyxPQUFPLFlBQVksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0UsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDeEIsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFO2dCQUNkLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDbEQ7aUJBQU07Z0JBQ0wsT0FBTyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsV0FBVyxPQUFPLGtDQUFrQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDbEY7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQWhCRCxzQkFnQkM7QUFFTSxLQUFLLFVBQVUsT0FBTyxDQUFDLE9BQXVDO0lBQ25FLE1BQU0sT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ25FLElBQUk7UUFDRixNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUN4QjtZQUFTO1FBQ1IsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQzFCO0FBQ0gsQ0FBQztBQVBELDBCQU9DO0FBRU0sS0FBSyxVQUFVLFFBQVEsQ0FBQyxPQUFlLEVBQUUsTUFBYyxFQUFFLE1BQWUsRUFBRSxRQUFpQjs7SUFDaEcsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQztLQUN6QztJQUNELE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUU7UUFDdkIsS0FBSyxFQUFFLElBQUk7UUFDWCxHQUFHLEVBQUU7WUFDSCxHQUFHLE9BQU8sQ0FBQyxHQUFHO1lBQ2QsWUFBWSxFQUFFLE1BQU07WUFDcEIsZ0RBQWdEO1lBQ2hELDhCQUE4QjtZQUM5QiwrQkFBK0IsRUFBRSxNQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0JBQStCLG1DQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztTQUM5RztLQUNGLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDaEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxvREFBb0QsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUM3RSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2pCO0lBRUQsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLE1BQU0sU0FBUyxHQUFHLE1BQU0sYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLElBQUksU0FBUyxhQUFULFNBQVMsdUJBQVQsU0FBUyxDQUFFLE1BQU0sRUFBRTtRQUNyQixJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLEVBQUU7Z0JBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2FBQ2hDO1NBQ0Y7UUFDRCxLQUFLLEdBQUcsSUFBSSxDQUFDO0tBQ2Q7SUFFRCxJQUFJLENBQUMsS0FBSyxFQUFFO1FBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0tBQzNDO0lBRUQsTUFBTSxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUV4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO0FBQ3JELENBQUM7QUF0Q0QsNEJBc0NDO0FBRU0sS0FBSyxVQUFVLFdBQVcsQ0FDL0IsR0FBbUIsRUFDbkIsTUFBZSxFQUNmLFdBQStCLEVBQy9CLGFBQTRCLEVBQzVCLFdBQW9CO0lBRXBCLE1BQU0sVUFBVSxHQUF3RCxFQUFFLENBQUM7SUFFM0UsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUU7UUFDcEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyw2QkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDMUYsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0tBQ3RDO0lBRUQsTUFBTSxPQUFPLEdBQXVCLEVBQUUsQ0FBQztJQUN2QyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFFbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBRXRDLEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFO1FBQ2xDLE1BQU0sU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ3hDLE9BQU8sR0FBRyxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUNwQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ3RCO0lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBRXBDLHNEQUFzRDtJQUN0RCxvREFBb0Q7SUFDcEQsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7UUFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDakI7SUFFRCxJQUFJLFdBQVcsRUFBRTtRQUVmLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLDREQUE0RCxXQUFXLEVBQUUsQ0FBQyxDQUFDO1NBQzVGO1FBQ0Qsc0NBQXNDO1FBQ3RDLEVBQUUsQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDM0MsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDdEMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNkO0lBRUQsd0RBQXdEO0lBQ3hELElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7UUFDbEUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNqQjtJQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsK0JBQStCLENBQUMsQ0FBQztBQUUvQyxDQUFDO0FBdkRELGtDQXVEQztBQUVELFNBQWdCLGFBQWEsQ0FBQyxJQUFZLEVBQUUsT0FBb0I7SUFDOUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZCLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUpELHNDQUlDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLElBQVksRUFBRSxPQUFvQjtJQUU5RCw0Q0FBNEM7SUFDNUMsZ0RBQWdEO0lBQ2hELDJCQUEyQjtJQUMzQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QixPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakI7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFiRCxzQ0FhQztBQUVNLEtBQUssVUFBVSxRQUFRLENBQUMsR0FBVztJQUV4QyxJQUFJLE1BQWtDLENBQUM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBQSxXQUFLLEVBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBRWxDLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxLQUFLLE9BQU8sRUFBRTtRQUMvQixPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ2xDO0lBRUQsUUFBUSxLQUFLLEVBQUU7UUFDYixLQUFLLFFBQVE7WUFDWCxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ2YsTUFBTTtRQUVSLEtBQUssT0FBTztZQUNWLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDZCxNQUFNO1FBRVI7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQ3BEO0lBRUQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtRQUM1QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNoQyxRQUFRLEdBQUcsQ0FBQyxVQUFVLEVBQUU7Z0JBQ3RCLEtBQUssR0FBRyxDQUFDLENBQUM7b0JBQ1IsTUFBTSxJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztvQkFDakMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQzFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2pFLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUN0QixNQUFNO2lCQUNQO2dCQUVELEtBQUssR0FBRyxDQUFDO2dCQUNULEtBQUssR0FBRyxDQUFDLENBQUM7b0JBQ1IsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTt3QkFDeEIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7cUJBQ3BDO29CQUNELE1BQU07aUJBQ1A7Z0JBRUQsT0FBTyxDQUFDLENBQUM7b0JBQ1AsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLGFBQWEsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQy9DO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNaLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQWxERCw0QkFrREM7QUFFTSxLQUFLLFVBQVUsYUFBYSxDQUFDLFNBQWlCO0lBQ25ELHVCQUF1QjtJQUN2QixJQUFJO1FBQ0YsTUFBTSxhQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQ2xDO0lBQUMsTUFBTTtRQUNOLE9BQU8sRUFBRSxDQUFDO0tBQ1g7SUFFRCxxQkFBcUI7SUFDckIsTUFBTSxPQUFPLEdBQUcsTUFBTSxhQUFRLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRTNFLHlDQUF5QztJQUN6QyxNQUFNLEtBQUssR0FBRyxPQUFPO1NBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNwRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFOUMsNENBQTRDO0lBQzVDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUUvRCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRTtRQUM1QixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxhQUFhLENBQUMsR0FBRyxTQUFTLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztLQUNuRTtJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQXhCRCxzQ0F3QkM7QUFFRCxTQUFnQixxQkFBcUIsQ0FBQyxTQUFpQjtJQUNyRCxtREFBbUQ7SUFDbkQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUseUJBQXlCLENBQUMsQ0FBQztJQUMxRCxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQzFDLENBQUM7QUFKRCxzREFJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNwYXduLCBTcGF3bk9wdGlvbnMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IHByb21pc2VzIH0gZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCAqIGFzIGh0dHBzIGZyb20gJ2h0dHBzJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gJ3VybCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgKiBhcyB5YW1sIGZyb20gJ3lhbWwnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbkNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IFBsdWdpbk1hbmFnZXIgfSBmcm9tICcuL3BsdWdpbnMvX21hbmFnZXInO1xuaW1wb3J0IHsgVmFsaWRhdGlvblBsdWdpbiwgVmFsaWRhdGlvbkNvbnRleHQsIFZhbGlkYXRpb25SZXBvcnQsIFZhbGlkYXRpb24gfSBmcm9tICcuL3BsdWdpbnMvdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBTYWZlUmV2aXZlciB9IGZyb20gJy4vcmV2aXZlcic7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaGVsbChwcm9ncmFtOiBzdHJpbmcsIGFyZ3M6IHN0cmluZ1tdID0gW10sIG9wdGlvbnM6IFNwYXduT3B0aW9ucyA9IHsgfSk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGNvbW1hbmQgPSBgXCIke3Byb2dyYW19ICR7YXJncy5qb2luKCcgJyl9XCIgYXQgJHtwYXRoLnJlc29sdmUob3B0aW9ucy5jd2Q/LnRvU3RyaW5nKCkgPz8gJy4nKX1gO1xuICByZXR1cm4gbmV3IFByb21pc2UoKG9rLCBrbykgPT4ge1xuICAgIGNvbnN0IGNoaWxkID0gc3Bhd24ocHJvZ3JhbSwgYXJncywgeyBzdGRpbzogWydpbmhlcml0JywgJ3BpcGUnLCAnaW5oZXJpdCddLCAuLi5vcHRpb25zIH0pO1xuICAgIGNvbnN0IGRhdGEgPSBuZXcgQXJyYXk8QnVmZmVyPigpO1xuICAgIGNoaWxkLnN0ZG91dD8ub24oJ2RhdGEnLCBjaHVuayA9PiBkYXRhLnB1c2goY2h1bmspKTtcblxuICAgIGNoaWxkLm9uY2UoJ2Vycm9yJywgZXJyID0+IGtvKG5ldyBFcnJvcihgY29tbWFuZCAke2NvbW1hbmR9IGZhaWxlZDogJHtlcnJ9YCkpKTtcbiAgICBjaGlsZC5vbmNlKCdleGl0JywgY29kZSA9PiB7XG4gICAgICBpZiAoY29kZSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gb2soQnVmZmVyLmNvbmNhdChkYXRhKS50b1N0cmluZygndXRmLTgnKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ga28obmV3IEVycm9yKGBjb21tYW5kICR7Y29tbWFuZH0gcmV0dXJuZWQgYSBub24temVybyBleGl0IGNvZGUgJHtjb2RlfWApKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBta2R0ZW1wKGNsb3N1cmU6IChkaXI6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPikge1xuICBjb25zdCB3b3JrZGlyID0gYXdhaXQgZnMubWtkdGVtcChwYXRoLmpvaW4ob3MudG1wZGlyKCksICdjZGs4cy0nKSk7XG4gIHRyeSB7XG4gICAgYXdhaXQgY2xvc3VyZSh3b3JrZGlyKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBmcy5yZW1vdmUod29ya2Rpcik7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN5bnRoQXBwKGNvbW1hbmQ6IHN0cmluZywgb3V0ZGlyOiBzdHJpbmcsIHN0ZG91dDogYm9vbGVhbiwgbWV0YWRhdGE6IGJvb2xlYW4pOiBQcm9taXNlPFN5bnRoZXNpemVkQXBwPiB7XG4gIGlmICghc3Rkb3V0KSB7XG4gICAgY29uc29sZS5sb2coJ1N5bnRoZXNpemluZyBhcHBsaWNhdGlvbicpO1xuICB9XG4gIGF3YWl0IHNoZWxsKGNvbW1hbmQsIFtdLCB7XG4gICAgc2hlbGw6IHRydWUsXG4gICAgZW52OiB7XG4gICAgICAuLi5wcm9jZXNzLmVudixcbiAgICAgIENESzhTX09VVERJUjogb3V0ZGlyLFxuICAgICAgLy8gcmVjb3JkIG1ldGFkYXRhIHNvIHRoYXQgdGhlIHZhbGlkYXRpb24gcmVwb3J0XG4gICAgICAvLyBoYXMgY29udHJ1Y3QgYXdhcmUgY29udGV4dC5cbiAgICAgIENESzhTX1JFQ09SRF9DT05TVFJVQ1RfTUVUQURBVEE6IHByb2Nlc3MuZW52LkNESzhTX1JFQ09SRF9DT05TVFJVQ1RfTUVUQURBVEEgPz8gKG1ldGFkYXRhID8gJ3RydWUnIDogJ2ZhbHNlJyksXG4gICAgfSxcbiAgfSk7XG5cbiAgaWYgKCFhd2FpdCBmcy5wYXRoRXhpc3RzKG91dGRpcikpIHtcbiAgICBjb25zb2xlLmVycm9yKGBFUlJPUjogc3ludGhlc2lzIGZhaWxlZCwgYXBwIGV4cGVjdGVkIHRvIGNyZWF0ZSBcIiR7b3V0ZGlyfVwiYCk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG5cbiAgbGV0IGZvdW5kID0gZmFsc2U7XG4gIGNvbnN0IHlhbWxGaWxlcyA9IGF3YWl0IGZpbmRNYW5pZmVzdHMob3V0ZGlyKTtcbiAgaWYgKHlhbWxGaWxlcz8ubGVuZ3RoKSB7XG4gICAgaWYgKCFzdGRvdXQpIHtcbiAgICAgIGZvciAoY29uc3QgeWFtbEZpbGUgb2YgeWFtbEZpbGVzKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGAgIC0gJHt5YW1sRmlsZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKCFmb3VuZCkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ05vIG1hbmlmZXN0cyBzeW50aGVzaXplZCcpO1xuICB9XG5cbiAgY29uc3QgY29uc3RydWN0TWV0YWRhdGEgPSBmaW5kQ29uc3RydWN0TWV0YWRhdGEob3V0ZGlyKTtcblxuICByZXR1cm4geyBtYW5pZmVzdHM6IHlhbWxGaWxlcywgY29uc3RydWN0TWV0YWRhdGEgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlQXBwKFxuICBhcHA6IFN5bnRoZXNpemVkQXBwLFxuICBzdGRvdXQ6IGJvb2xlYW4sXG4gIHZhbGlkYXRpb25zOiBWYWxpZGF0aW9uQ29uZmlnW10sXG4gIHBsdWdpbk1hbmFnZXI6IFBsdWdpbk1hbmFnZXIsXG4gIHJlcG9ydHNGaWxlPzogc3RyaW5nKSB7XG5cbiAgY29uc3QgdmFsaWRhdG9yczogeyBwbHVnaW46IFZhbGlkYXRpb247IGNvbnRleHQ6IFZhbGlkYXRpb25Db250ZXh0fVtdID0gW107XG5cbiAgZm9yIChjb25zdCB2YWxpZGF0aW9uIG9mIHZhbGlkYXRpb25zKSB7XG4gICAgY29uc3QgeyBwbHVnaW4sIGNvbnRleHQgfSA9IFZhbGlkYXRpb25QbHVnaW4ubG9hZCh2YWxpZGF0aW9uLCBhcHAsIHN0ZG91dCwgcGx1Z2luTWFuYWdlcik7XG4gICAgdmFsaWRhdG9ycy5wdXNoKHsgcGx1Z2luLCBjb250ZXh0IH0pO1xuICB9XG5cbiAgY29uc3QgcmVwb3J0czogVmFsaWRhdGlvblJlcG9ydFtdID0gW107XG4gIGxldCBzdWNjZXNzID0gdHJ1ZTtcblxuICBjb25zb2xlLmxvZygnUGVyZm9ybWluZyB2YWxpZGF0aW9ucycpO1xuXG4gIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICBhd2FpdCB2YWxpZGF0b3IucGx1Z2luLnZhbGlkYXRlKHZhbGlkYXRvci5jb250ZXh0KTtcbiAgICBjb25zdCByZXBvcnQgPSB2YWxpZGF0b3IuY29udGV4dC5yZXBvcnQ7XG4gICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgcmVwb3J0LnN1Y2Nlc3M7XG4gICAgcmVwb3J0cy5wdXNoKHJlcG9ydCk7XG4gIH1cblxuICBjb25zb2xlLmxvZygnVmFsaWRhdGlvbnMgZmluaXNoZWQnKTtcblxuICAvLyBub3cgd2UgY2FuIHByaW50IHRoZW0uIHdlIGRvbid0IGluY3JlbWVudGFsbHkgcHJpbnRcbiAgLy8gc28gdG8gbm90IGNsdXR0ZXIgdGhlIHRlcm1pbmFsIGluIGNhc2Ugb2YgZXJyb3JzLlxuICBmb3IgKGNvbnN0IHJlcG9ydCBvZiByZXBvcnRzKSB7XG4gICAgY29uc29sZS5sb2coJycpO1xuICAgIGNvbnNvbGUubG9nKHJlcG9ydC50b1N0cmluZygpKTtcbiAgICBjb25zb2xlLmxvZygnJyk7XG4gIH1cblxuICBpZiAocmVwb3J0c0ZpbGUpIHtcblxuICAgIGlmIChmcy5leGlzdHNTeW5jKHJlcG9ydHNGaWxlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gd3JpdGUgdmFsaWRhdGlvbiByZXBvcnRzIGZpbGUuIEFscmVhZHkgZXhpc3RzOiAke3JlcG9ydHNGaWxlfWApO1xuICAgIH1cbiAgICAvLyB3cml0ZSB0aGUgcmVwb3J0cyBpbiBKU09OIHRvIGEgZmlsZVxuICAgIGZzLndyaXRlRmlsZVN5bmMocmVwb3J0c0ZpbGUsIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHJlcG9ydHM6IHJlcG9ydHMubWFwKHIgPT4gci50b0pzb24oKSksXG4gICAgfSwgbnVsbCwgMikpO1xuICB9XG5cbiAgLy8gZXhpdCB3aXRoIGZhaWx1cmUgaWYgYW55IHJlcG9ydCByZXN1bHRlZCBpbiBhIGZhaWx1cmVcbiAgaWYgKCFzdWNjZXNzKSB7XG4gICAgY29uc29sZS5lcnJvcignVmFsaWRhdGlvbiBmYWlsZWQuIFNlZSBhYm92ZSByZXBvcnRzIGZvciBkZXRhaWxzJyk7XG4gICAgcHJvY2Vzcy5leGl0KDIpO1xuICB9XG5cbiAgY29uc29sZS5sb2coJ1ZhbGlkYXRpb25zIGVuZGVkIHN1Y2Nlc2Z1bGx5Jyk7XG5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhZmVQYXJzZUpzb24odGV4dDogc3RyaW5nLCByZXZpdmVyOiBTYWZlUmV2aXZlcik6IGFueSB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnBhcnNlKHRleHQpO1xuICByZXZpdmVyLnNhbml0aXplKGpzb24pO1xuICByZXR1cm4ganNvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhZmVQYXJzZVlhbWwodGV4dDogc3RyaW5nLCByZXZpdmVyOiBTYWZlUmV2aXZlcik6IGFueVtdIHtcblxuICAvLyBwYXJzZUFsbERvY3VtZW50cyBkb2VzbnQgYWNjZXB0IGEgcmV2aXZlclxuICAvLyBzbyB3ZSBmaXJzdCBwYXJzZSBub3JtYWxseSBhbmQgdGhhbiB0cmFuc2Zvcm1cbiAgLy8gdG8gSlMgdXNpbmcgdGhlIHJldml2ZXIuXG4gIGNvbnN0IHBhcnNlZCA9IHlhbWwucGFyc2VBbGxEb2N1bWVudHModGV4dCk7XG4gIGNvbnN0IGRvY3MgPSBbXTtcbiAgZm9yIChjb25zdCBkb2Mgb2YgcGFyc2VkKSB7XG4gICAgY29uc3QganNvbiA9IGRvYy50b0pTKCk7XG4gICAgcmV2aXZlci5zYW5pdGl6ZShqc29uKTtcbiAgICBkb2NzLnB1c2goanNvbik7XG4gIH1cbiAgcmV0dXJuIGRvY3M7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkb3dubG9hZCh1cmw6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG5cbiAgbGV0IGNsaWVudDogdHlwZW9mIGh0dHAgfCB0eXBlb2YgaHR0cHM7XG4gIGNvbnN0IHByb3RvID0gcGFyc2UodXJsKS5wcm90b2NvbDtcblxuICBpZiAoIXByb3RvIHx8IHByb3RvID09PSAnZmlsZTonKSB7XG4gICAgcmV0dXJuIGZzLnJlYWRGaWxlKHVybCwgJ3V0Zi04Jyk7XG4gIH1cblxuICBzd2l0Y2ggKHByb3RvKSB7XG4gICAgY2FzZSAnaHR0cHM6JzpcbiAgICAgIGNsaWVudCA9IGh0dHBzO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdodHRwOic6XG4gICAgICBjbGllbnQgPSBodHRwO1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnRlZCBwcm90b2NvbCAke3Byb3RvfWApO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChvaywga28pID0+IHtcbiAgICBjb25zdCByZXEgPSBjbGllbnQuZ2V0KHVybCwgcmVzID0+IHtcbiAgICAgIHN3aXRjaCAocmVzLnN0YXR1c0NvZGUpIHtcbiAgICAgICAgY2FzZSAyMDA6IHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gbmV3IEFycmF5PEJ1ZmZlcj4oKTtcbiAgICAgICAgICByZXMub24oJ2RhdGEnLCBjaHVuayA9PiBkYXRhLnB1c2goY2h1bmspKTtcbiAgICAgICAgICByZXMub25jZSgnZW5kJywgKCkgPT4gb2soQnVmZmVyLmNvbmNhdChkYXRhKS50b1N0cmluZygndXRmLTgnKSkpO1xuICAgICAgICAgIHJlcy5vbmNlKCdlcnJvcicsIGtvKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgMzAxOlxuICAgICAgICBjYXNlIDMwMjoge1xuICAgICAgICAgIGlmIChyZXMuaGVhZGVycy5sb2NhdGlvbikge1xuICAgICAgICAgICAgb2soZG93bmxvYWQocmVzLmhlYWRlcnMubG9jYXRpb24pKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAga28obmV3IEVycm9yKGAke3Jlcy5zdGF0dXNNZXNzYWdlfTogJHt1cmx9YCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXEub25jZSgnZXJyb3InLCBrbyk7XG4gICAgcmVxLmVuZCgpO1xuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmRNYW5pZmVzdHMoZGlyZWN0b3J5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gIC8vIEVuc3VyZSBwYXRoIGlzIHZhbGlkXG4gIHRyeSB7XG4gICAgYXdhaXQgcHJvbWlzZXMuYWNjZXNzKGRpcmVjdG9yeSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIFJlYWQgUGF0aCBjb250ZW50c1xuICBjb25zdCBlbnRyaWVzID0gYXdhaXQgcHJvbWlzZXMucmVhZGRpcihkaXJlY3RvcnksIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KTtcblxuICAvLyBHZXQgZmlsZXMgd2l0aGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeVxuICBjb25zdCBmaWxlcyA9IGVudHJpZXNcbiAgICAuZmlsdGVyKGZpbGUgPT4gKCFmaWxlLmlzRGlyZWN0b3J5KCkgJiYgZmlsZS5uYW1lLmVuZHNXaXRoKCcueWFtbCcpKSlcbiAgICAubWFwKGZpbGUgPT4gKGRpcmVjdG9yeSArICcvJyArIGZpbGUubmFtZSkpO1xuXG4gIC8vIEdldCBzdWItZm9sZGVycyB3aXRoaW4gdGhlIGN1cnJlbnQgZm9sZGVyXG4gIGNvbnN0IGZvbGRlcnMgPSBlbnRyaWVzLmZpbHRlcihmb2xkZXIgPT4gZm9sZGVyLmlzRGlyZWN0b3J5KCkpO1xuXG4gIGZvciAoY29uc3QgZm9sZGVyIG9mIGZvbGRlcnMpIHtcbiAgICBmaWxlcy5wdXNoKC4uLmF3YWl0IGZpbmRNYW5pZmVzdHMoYCR7ZGlyZWN0b3J5fS8ke2ZvbGRlci5uYW1lfWApKTtcbiAgfVxuXG4gIHJldHVybiBmaWxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRDb25zdHJ1Y3RNZXRhZGF0YShkaXJlY3Rvcnk6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIC8vIHRoaXMgZmlsZSBpcyBvcHRpb25hbGx5IGNyZWF0ZWQgZHVyaW5nIHN5bnRoZXNpc1xuICBjb25zdCBwID0gcGF0aC5qb2luKGRpcmVjdG9yeSwgJ2NvbnN0cnVjdC1tZXRhZGF0YS5qc29uJyk7XG4gIHJldHVybiBmcy5leGlzdHNTeW5jKHApID8gcCA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2Ygc3ludGhlc2l6aW5nIGFuIGFwcGxpY2F0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN5bnRoZXNpemVkQXBwIHtcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgbWFuaWZlc3RzIHByb2R1Y2VkIGJ5IHRoZSBhcHAuXG4gICAqL1xuICByZWFkb25seSBtYW5pZmVzdHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uc3RydWN0IG1ldGFkYXRhIGZpbGUgKGlmIGV4aXN0cykuXG4gICAqL1xuICByZWFkb25seSBjb25zdHJ1Y3RNZXRhZGF0YT86IHN0cmluZztcbn0iXX0=
237
+ function parseImports(spec) {
238
+ const splitImport = spec.split(exports.PREFIX_DELIM);
239
+ // k8s@x.y.z
240
+ // crd.yaml
241
+ // url.com/crd.yaml
242
+ if (splitImport.length === 1) {
243
+ return {
244
+ source: spec,
245
+ };
246
+ }
247
+ // crd:=crd.yaml
248
+ // crd:=url.com/crd.yaml
249
+ if (splitImport.length === 2) {
250
+ return {
251
+ moduleNamePrefix: splitImport[0],
252
+ source: splitImport[1],
253
+ };
254
+ }
255
+ throw new Error('Unable to parse import specification. Syntax is [NAME:=]SPEC');
256
+ }
257
+ exports.parseImports = parseImports;
258
+ function hashAndEncode(input, algorithm = 'sha256', encoding = 'hex') {
259
+ const hash = (0, crypto_1.createHash)(algorithm);
260
+ hash.update(input);
261
+ return hash.digest(encoding);
262
+ }
263
+ exports.hashAndEncode = hashAndEncode;
264
+ function deriveFileName(url) {
265
+ const devUrl = (0, crds_dev_1.matchCrdsDevUrl)(url);
266
+ let filename = undefined;
267
+ if (devUrl) {
268
+ const lastIndexOfSlash = devUrl.lastIndexOf('/');
269
+ const lastIndexOfAt = devUrl.lastIndexOf('@');
270
+ filename = (lastIndexOfSlash > 0 && lastIndexOfAt > 0) ? devUrl.slice(lastIndexOfSlash + 1, lastIndexOfAt) : undefined;
271
+ }
272
+ else {
273
+ const lastIndexOfSlash = url.lastIndexOf('/');
274
+ const lastIndexOfYaml = url.lastIndexOf('.yaml') > 0 ? url.lastIndexOf('.yaml') : url.lastIndexOf('.yml');
275
+ filename = (lastIndexOfSlash > 0 && lastIndexOfYaml > 0) ? url.slice(lastIndexOfSlash + 1, lastIndexOfYaml) : undefined;
276
+ }
277
+ if (!filename) {
278
+ // If the url if for a local file, then just encode the filename and not the entire path
279
+ // Since path can depend on platform
280
+ let file = (0, fs_1.existsSync)(url) ? path.basename(url) : url;
281
+ filename = hashAndEncode(file);
282
+ }
283
+ return filename;
284
+ }
285
+ exports.deriveFileName = deriveFileName;
286
+ function isK8sImport(value) {
287
+ if (value !== 'k8s' && !value.startsWith('k8s@')) {
288
+ return false;
289
+ }
290
+ return true;
291
+ }
292
+ exports.isK8sImport = isK8sImport;
293
+ function crdsArePresent(imprts) {
294
+ return (imprts !== null && imprts !== void 0 ? imprts : []).some(imprt => !isK8sImport(imprt));
295
+ }
296
+ exports.crdsArePresent = crdsArePresent;
297
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQW9EO0FBQ3BELG1DQUEwRDtBQUMxRCwyQkFBMEM7QUFDMUMsMkNBQTZCO0FBQzdCLDZDQUErQjtBQUMvQix1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLDZCQUE0QjtBQUM1Qiw2Q0FBK0I7QUFDL0IsMkNBQTZCO0FBRTdCLGdEQUFvRDtBQUVwRCxxREFBeUc7QUFHNUYsUUFBQSxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBRTFCLEtBQUssVUFBVSxLQUFLLENBQUMsT0FBZSxFQUFFLE9BQWlCLEVBQUUsRUFBRSxVQUF3QixFQUFHOztJQUMzRixNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBQSxNQUFBLE9BQU8sQ0FBQyxHQUFHLDBDQUFFLFFBQVEsRUFBRSxtQ0FBSSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ3BHLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7O1FBQzVCLE1BQU0sS0FBSyxHQUFHLElBQUEscUJBQUssRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDMUYsTUFBTSxJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUNqQyxNQUFBLEtBQUssQ0FBQyxNQUFNLDBDQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFcEQsS0FBSyxDQUFDLElBQUks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QUMsQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFGRCx3Q0FFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNwYXduLCBTcGF3bk9wdGlvbnMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IEJpbmFyeVRvVGV4dEVuY29kaW5nLCBjcmVhdGVIYXNoIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IGV4aXN0c1N5bmMsIHByb21pc2VzIH0gZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCAqIGFzIGh0dHBzIGZyb20gJ2h0dHBzJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gJ3VybCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgKiBhcyB5YW1sIGZyb20gJ3lhbWwnO1xuaW1wb3J0IHsgSW1wb3J0U3BlYywgVmFsaWRhdGlvbkNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IG1hdGNoQ3Jkc0RldlVybCB9IGZyb20gJy4vaW1wb3J0L2NyZHMtZGV2JztcbmltcG9ydCB7IFBsdWdpbk1hbmFnZXIgfSBmcm9tICcuL3BsdWdpbnMvX21hbmFnZXInO1xuaW1wb3J0IHsgVmFsaWRhdGlvblBsdWdpbiwgVmFsaWRhdGlvbkNvbnRleHQsIFZhbGlkYXRpb25SZXBvcnQsIFZhbGlkYXRpb24gfSBmcm9tICcuL3BsdWdpbnMvdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBTYWZlUmV2aXZlciB9IGZyb20gJy4vcmV2aXZlcic7XG5cbmV4cG9ydCBjb25zdCBQUkVGSVhfREVMSU0gPSAnOj0nO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2hlbGwocHJvZ3JhbTogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSA9IFtdLCBvcHRpb25zOiBTcGF3bk9wdGlvbnMgPSB7IH0pOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBjb21tYW5kID0gYFwiJHtwcm9ncmFtfSAke2FyZ3Muam9pbignICcpfVwiIGF0ICR7cGF0aC5yZXNvbHZlKG9wdGlvbnMuY3dkPy50b1N0cmluZygpID8/ICcuJyl9YDtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChvaywga28pID0+IHtcbiAgICBjb25zdCBjaGlsZCA9IHNwYXduKHByb2dyYW0sIGFyZ3MsIHsgc3RkaW86IFsnaW5oZXJpdCcsICdwaXBlJywgJ2luaGVyaXQnXSwgLi4ub3B0aW9ucyB9KTtcbiAgICBjb25zdCBkYXRhID0gbmV3IEFycmF5PEJ1ZmZlcj4oKTtcbiAgICBjaGlsZC5zdGRvdXQ/Lm9uKCdkYXRhJywgY2h1bmsgPT4gZGF0YS5wdXNoKGNodW5rKSk7XG5cbiAgICBjaGlsZC5vbmNlKCdlcnJvcicsIGVyciA9PiBrbyhuZXcgRXJyb3IoYGNvbW1hbmQgJHtjb21tYW5kfSBmYWlsZWQ6ICR7ZXJyfWApKSk7XG4gICAgY2hpbGQub25jZSgnZXhpdCcsIGNvZGUgPT4ge1xuICAgICAgaWYgKGNvZGUgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG9rKEJ1ZmZlci5jb25jYXQoZGF0YSkudG9TdHJpbmcoJ3V0Zi04JykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGtvKG5ldyBFcnJvcihgY29tbWFuZCAke2NvbW1hbmR9IHJldHVybmVkIGEgbm9uLXplcm8gZXhpdCBjb2RlICR7Y29kZX1gKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWtkdGVtcChjbG9zdXJlOiAoZGlyOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD4pIHtcbiAgY29uc3Qgd29ya2RpciA9IGF3YWl0IGZzLm1rZHRlbXAocGF0aC5qb2luKG9zLnRtcGRpcigpLCAnY2RrOHMtJykpO1xuICB0cnkge1xuICAgIGF3YWl0IGNsb3N1cmUod29ya2Rpcik7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgZnMucmVtb3ZlKHdvcmtkaXIpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzeW50aEFwcChjb21tYW5kOiBzdHJpbmcsIG91dGRpcjogc3RyaW5nLCBzdGRvdXQ6IGJvb2xlYW4sIG1ldGFkYXRhOiBib29sZWFuKTogUHJvbWlzZTxTeW50aGVzaXplZEFwcD4ge1xuICBpZiAoIXN0ZG91dCkge1xuICAgIGNvbnNvbGUubG9nKCdTeW50aGVzaXppbmcgYXBwbGljYXRpb24nKTtcbiAgfVxuICBhd2FpdCBzaGVsbChjb21tYW5kLCBbXSwge1xuICAgIHNoZWxsOiB0cnVlLFxuICAgIGVudjoge1xuICAgICAgLi4ucHJvY2Vzcy5lbnYsXG4gICAgICBDREs4U19PVVRESVI6IG91dGRpcixcbiAgICAgIC8vIHJlY29yZCBtZXRhZGF0YSBzbyB0aGF0IHRoZSB2YWxpZGF0aW9uIHJlcG9ydFxuICAgICAgLy8gaGFzIGNvbnRydWN0IGF3YXJlIGNvbnRleHQuXG4gICAgICBDREs4U19SRUNPUkRfQ09OU1RSVUNUX01FVEFEQVRBOiBwcm9jZXNzLmVudi5DREs4U19SRUNPUkRfQ09OU1RSVUNUX01FVEFEQVRBID8/IChtZXRhZGF0YSA/ICd0cnVlJyA6ICdmYWxzZScpLFxuICAgIH0sXG4gIH0pO1xuXG4gIGlmICghYXdhaXQgZnMucGF0aEV4aXN0cyhvdXRkaXIpKSB7XG4gICAgY29uc29sZS5lcnJvcihgRVJST1I6IHN5bnRoZXNpcyBmYWlsZWQsIGFwcCBleHBlY3RlZCB0byBjcmVhdGUgXCIke291dGRpcn1cImApO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuXG4gIGxldCBmb3VuZCA9IGZhbHNlO1xuICBjb25zdCB5YW1sRmlsZXMgPSBhd2FpdCBmaW5kTWFuaWZlc3RzKG91dGRpcik7XG4gIGlmICh5YW1sRmlsZXM/Lmxlbmd0aCkge1xuICAgIGlmICghc3Rkb3V0KSB7XG4gICAgICBmb3IgKGNvbnN0IHlhbWxGaWxlIG9mIHlhbWxGaWxlcykge1xuICAgICAgICBjb25zb2xlLmxvZyhgICAtICR7eWFtbEZpbGV9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmICghZm91bmQpIHtcbiAgICBjb25zb2xlLmVycm9yKCdObyBtYW5pZmVzdHMgc3ludGhlc2l6ZWQnKTtcbiAgfVxuXG4gIGNvbnN0IGNvbnN0cnVjdE1ldGFkYXRhID0gZmluZENvbnN0cnVjdE1ldGFkYXRhKG91dGRpcik7XG5cbiAgcmV0dXJuIHsgbWFuaWZlc3RzOiB5YW1sRmlsZXMsIGNvbnN0cnVjdE1ldGFkYXRhIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2YWxpZGF0ZUFwcChcbiAgYXBwOiBTeW50aGVzaXplZEFwcCxcbiAgc3Rkb3V0OiBib29sZWFuLFxuICB2YWxpZGF0aW9uczogVmFsaWRhdGlvbkNvbmZpZ1tdLFxuICBwbHVnaW5NYW5hZ2VyOiBQbHVnaW5NYW5hZ2VyLFxuICByZXBvcnRzRmlsZT86IHN0cmluZykge1xuXG4gIGNvbnN0IHZhbGlkYXRvcnM6IHsgcGx1Z2luOiBWYWxpZGF0aW9uOyBjb250ZXh0OiBWYWxpZGF0aW9uQ29udGV4dH1bXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgdmFsaWRhdGlvbiBvZiB2YWxpZGF0aW9ucykge1xuICAgIGNvbnN0IHsgcGx1Z2luLCBjb250ZXh0IH0gPSBWYWxpZGF0aW9uUGx1Z2luLmxvYWQodmFsaWRhdGlvbiwgYXBwLCBzdGRvdXQsIHBsdWdpbk1hbmFnZXIpO1xuICAgIHZhbGlkYXRvcnMucHVzaCh7IHBsdWdpbiwgY29udGV4dCB9KTtcbiAgfVxuXG4gIGNvbnN0IHJlcG9ydHM6IFZhbGlkYXRpb25SZXBvcnRbXSA9IFtdO1xuICBsZXQgc3VjY2VzcyA9IHRydWU7XG5cbiAgY29uc29sZS5sb2coJ1BlcmZvcm1pbmcgdmFsaWRhdGlvbnMnKTtcblxuICBmb3IgKGNvbnN0IHZhbGlkYXRvciBvZiB2YWxpZGF0b3JzKSB7XG4gICAgYXdhaXQgdmFsaWRhdG9yLnBsdWdpbi52YWxpZGF0ZSh2YWxpZGF0b3IuY29udGV4dCk7XG4gICAgY29uc3QgcmVwb3J0ID0gdmFsaWRhdG9yLmNvbnRleHQucmVwb3J0O1xuICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIHJlcG9ydC5zdWNjZXNzO1xuICAgIHJlcG9ydHMucHVzaChyZXBvcnQpO1xuICB9XG5cbiAgY29uc29sZS5sb2coJ1ZhbGlkYXRpb25zIGZpbmlzaGVkJyk7XG5cbiAgLy8gbm93IHdlIGNhbiBwcmludCB0aGVtLiB3ZSBkb24ndCBpbmNyZW1lbnRhbGx5IHByaW50XG4gIC8vIHNvIHRvIG5vdCBjbHV0dGVyIHRoZSB0ZXJtaW5hbCBpbiBjYXNlIG9mIGVycm9ycy5cbiAgZm9yIChjb25zdCByZXBvcnQgb2YgcmVwb3J0cykge1xuICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICBjb25zb2xlLmxvZyhyZXBvcnQudG9TdHJpbmcoKSk7XG4gICAgY29uc29sZS5sb2coJycpO1xuICB9XG5cbiAgaWYgKHJlcG9ydHNGaWxlKSB7XG5cbiAgICBpZiAoZnMuZXhpc3RzU3luYyhyZXBvcnRzRmlsZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHdyaXRlIHZhbGlkYXRpb24gcmVwb3J0cyBmaWxlLiBBbHJlYWR5IGV4aXN0czogJHtyZXBvcnRzRmlsZX1gKTtcbiAgICB9XG4gICAgLy8gd3JpdGUgdGhlIHJlcG9ydHMgaW4gSlNPTiB0byBhIGZpbGVcbiAgICBmcy53cml0ZUZpbGVTeW5jKHJlcG9ydHNGaWxlLCBKU09OLnN0cmluZ2lmeSh7XG4gICAgICByZXBvcnRzOiByZXBvcnRzLm1hcChyID0+IHIudG9Kc29uKCkpLFxuICAgIH0sIG51bGwsIDIpKTtcbiAgfVxuXG4gIC8vIGV4aXQgd2l0aCBmYWlsdXJlIGlmIGFueSByZXBvcnQgcmVzdWx0ZWQgaW4gYSBmYWlsdXJlXG4gIGlmICghc3VjY2Vzcykge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1ZhbGlkYXRpb24gZmFpbGVkLiBTZWUgYWJvdmUgcmVwb3J0cyBmb3IgZGV0YWlscycpO1xuICAgIHByb2Nlc3MuZXhpdCgyKTtcbiAgfVxuXG4gIGNvbnNvbGUubG9nKCdWYWxpZGF0aW9ucyBlbmRlZCBzdWNjZXNmdWxseScpO1xuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYWZlUGFyc2VKc29uKHRleHQ6IHN0cmluZywgcmV2aXZlcjogU2FmZVJldml2ZXIpOiBhbnkge1xuICBjb25zdCBqc29uID0gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgcmV2aXZlci5zYW5pdGl6ZShqc29uKTtcbiAgcmV0dXJuIGpzb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYWZlUGFyc2VZYW1sKHRleHQ6IHN0cmluZywgcmV2aXZlcjogU2FmZVJldml2ZXIpOiBhbnlbXSB7XG5cbiAgLy8gcGFyc2VBbGxEb2N1bWVudHMgZG9lc250IGFjY2VwdCBhIHJldml2ZXJcbiAgLy8gc28gd2UgZmlyc3QgcGFyc2Ugbm9ybWFsbHkgYW5kIHRoYW4gdHJhbnNmb3JtXG4gIC8vIHRvIEpTIHVzaW5nIHRoZSByZXZpdmVyLlxuICBjb25zdCBwYXJzZWQgPSB5YW1sLnBhcnNlQWxsRG9jdW1lbnRzKHRleHQpO1xuICBjb25zdCBkb2NzID0gW107XG4gIGZvciAoY29uc3QgZG9jIG9mIHBhcnNlZCkge1xuICAgIGNvbnN0IGpzb24gPSBkb2MudG9KUygpO1xuICAgIHJldml2ZXIuc2FuaXRpemUoanNvbik7XG4gICAgZG9jcy5wdXNoKGpzb24pO1xuICB9XG4gIHJldHVybiBkb2NzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG93bmxvYWQodXJsOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuXG4gIGxldCBjbGllbnQ6IHR5cGVvZiBodHRwIHwgdHlwZW9mIGh0dHBzO1xuICBjb25zdCBwcm90byA9IHBhcnNlKHVybCkucHJvdG9jb2w7XG5cbiAgaWYgKCFwcm90byB8fCBwcm90byA9PT0gJ2ZpbGU6Jykge1xuICAgIHJldHVybiBmcy5yZWFkRmlsZSh1cmwsICd1dGYtOCcpO1xuICB9XG5cbiAgc3dpdGNoIChwcm90bykge1xuICAgIGNhc2UgJ2h0dHBzOic6XG4gICAgICBjbGllbnQgPSBodHRwcztcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnaHR0cDonOlxuICAgICAgY2xpZW50ID0gaHR0cDtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgcHJvdG9jb2wgJHtwcm90b31gKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgob2ssIGtvKSA9PiB7XG4gICAgY29uc3QgcmVxID0gY2xpZW50LmdldCh1cmwsIHJlcyA9PiB7XG4gICAgICBzd2l0Y2ggKHJlcy5zdGF0dXNDb2RlKSB7XG4gICAgICAgIGNhc2UgMjAwOiB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IG5ldyBBcnJheTxCdWZmZXI+KCk7XG4gICAgICAgICAgcmVzLm9uKCdkYXRhJywgY2h1bmsgPT4gZGF0YS5wdXNoKGNodW5rKSk7XG4gICAgICAgICAgcmVzLm9uY2UoJ2VuZCcsICgpID0+IG9rKEJ1ZmZlci5jb25jYXQoZGF0YSkudG9TdHJpbmcoJ3V0Zi04JykpKTtcbiAgICAgICAgICByZXMub25jZSgnZXJyb3InLCBrbyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjYXNlIDMwMTpcbiAgICAgICAgY2FzZSAzMDI6IHtcbiAgICAgICAgICBpZiAocmVzLmhlYWRlcnMubG9jYXRpb24pIHtcbiAgICAgICAgICAgIG9rKGRvd25sb2FkKHJlcy5oZWFkZXJzLmxvY2F0aW9uKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGtvKG5ldyBFcnJvcihgJHtyZXMuc3RhdHVzTWVzc2FnZX06ICR7dXJsfWApKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVxLm9uY2UoJ2Vycm9yJywga28pO1xuICAgIHJlcS5lbmQoKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaW5kTWFuaWZlc3RzKGRpcmVjdG9yeTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAvLyBFbnN1cmUgcGF0aCBpcyB2YWxpZFxuICB0cnkge1xuICAgIGF3YWl0IHByb21pc2VzLmFjY2VzcyhkaXJlY3RvcnkpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvLyBSZWFkIFBhdGggY29udGVudHNcbiAgY29uc3QgZW50cmllcyA9IGF3YWl0IHByb21pc2VzLnJlYWRkaXIoZGlyZWN0b3J5LCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSk7XG5cbiAgLy8gR2V0IGZpbGVzIHdpdGhpbiB0aGUgY3VycmVudCBkaXJlY3RvcnlcbiAgY29uc3QgZmlsZXMgPSBlbnRyaWVzXG4gICAgLmZpbHRlcihmaWxlID0+ICghZmlsZS5pc0RpcmVjdG9yeSgpICYmIGZpbGUubmFtZS5lbmRzV2l0aCgnLnlhbWwnKSkpXG4gICAgLm1hcChmaWxlID0+IChkaXJlY3RvcnkgKyAnLycgKyBmaWxlLm5hbWUpKTtcblxuICAvLyBHZXQgc3ViLWZvbGRlcnMgd2l0aGluIHRoZSBjdXJyZW50IGZvbGRlclxuICBjb25zdCBmb2xkZXJzID0gZW50cmllcy5maWx0ZXIoZm9sZGVyID0+IGZvbGRlci5pc0RpcmVjdG9yeSgpKTtcblxuICBmb3IgKGNvbnN0IGZvbGRlciBvZiBmb2xkZXJzKSB7XG4gICAgZmlsZXMucHVzaCguLi5hd2FpdCBmaW5kTWFuaWZlc3RzKGAke2RpcmVjdG9yeX0vJHtmb2xkZXIubmFtZX1gKSk7XG4gIH1cblxuICByZXR1cm4gZmlsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kQ29uc3RydWN0TWV0YWRhdGEoZGlyZWN0b3J5OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAvLyB0aGlzIGZpbGUgaXMgb3B0aW9uYWxseSBjcmVhdGVkIGR1cmluZyBzeW50aGVzaXNcbiAgY29uc3QgcCA9IHBhdGguam9pbihkaXJlY3RvcnksICdjb25zdHJ1Y3QtbWV0YWRhdGEuanNvbicpO1xuICByZXR1cm4gZnMuZXhpc3RzU3luYyhwKSA/IHAgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmVzdWx0IG9mIHN5bnRoZXNpemluZyBhbiBhcHBsaWNhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTeW50aGVzaXplZEFwcCB7XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIG1hbmlmZXN0cyBwcm9kdWNlZCBieSB0aGUgYXBwLlxuICAgKi9cbiAgcmVhZG9ubHkgbWFuaWZlc3RzOiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGNvbnN0cnVjdCBtZXRhZGF0YSBmaWxlIChpZiBleGlzdHMpLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uc3RydWN0TWV0YWRhdGE/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUltcG9ydHMoc3BlYzogc3RyaW5nKTogSW1wb3J0U3BlYyB7XG4gIGNvbnN0IHNwbGl0SW1wb3J0ID0gc3BlYy5zcGxpdChQUkVGSVhfREVMSU0pO1xuXG4gIC8vIGs4c0B4LnkuelxuICAvLyBjcmQueWFtbFxuICAvLyB1cmwuY29tL2NyZC55YW1sXG4gIGlmIChzcGxpdEltcG9ydC5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc291cmNlOiBzcGVjLFxuICAgIH07XG4gIH1cblxuICAvLyBjcmQ6PWNyZC55YW1sXG4gIC8vIGNyZDo9dXJsLmNvbS9jcmQueWFtbFxuICBpZiAoc3BsaXRJbXBvcnQubGVuZ3RoID09PSAyKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZHVsZU5hbWVQcmVmaXg6IHNwbGl0SW1wb3J0WzBdLFxuICAgICAgc291cmNlOiBzcGxpdEltcG9ydFsxXSxcbiAgICB9O1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gcGFyc2UgaW1wb3J0IHNwZWNpZmljYXRpb24uIFN5bnRheCBpcyBbTkFNRTo9XVNQRUMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc2hBbmRFbmNvZGUoaW5wdXQ6IHN0cmluZywgYWxnb3JpdGhtOiBzdHJpbmcgPSAnc2hhMjU2JywgZW5jb2Rpbmc6IEJpbmFyeVRvVGV4dEVuY29kaW5nID0gJ2hleCcpOiBzdHJpbmcge1xuICBjb25zdCBoYXNoID0gY3JlYXRlSGFzaChhbGdvcml0aG0pO1xuICBoYXNoLnVwZGF0ZShpbnB1dCk7XG4gIHJldHVybiBoYXNoLmRpZ2VzdChlbmNvZGluZyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVGaWxlTmFtZSh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGRldlVybCA9IG1hdGNoQ3Jkc0RldlVybCh1cmwpO1xuICBsZXQgZmlsZW5hbWUgPSB1bmRlZmluZWQ7XG5cbiAgaWYgKGRldlVybCkge1xuICAgIGNvbnN0IGxhc3RJbmRleE9mU2xhc2ggPSBkZXZVcmwubGFzdEluZGV4T2YoJy8nKTtcbiAgICBjb25zdCBsYXN0SW5kZXhPZkF0ID0gZGV2VXJsLmxhc3RJbmRleE9mKCdAJyk7XG4gICAgZmlsZW5hbWUgPSAobGFzdEluZGV4T2ZTbGFzaCA+IDAgJiYgbGFzdEluZGV4T2ZBdCA+IDApID8gZGV2VXJsLnNsaWNlKGxhc3RJbmRleE9mU2xhc2grMSwgbGFzdEluZGV4T2ZBdCk6IHVuZGVmaW5lZDtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBsYXN0SW5kZXhPZlNsYXNoID0gdXJsLmxhc3RJbmRleE9mKCcvJyk7XG4gICAgY29uc3QgbGFzdEluZGV4T2ZZYW1sID0gdXJsLmxhc3RJbmRleE9mKCcueWFtbCcpID4gMCA/IHVybC5sYXN0SW5kZXhPZignLnlhbWwnKSA6IHVybC5sYXN0SW5kZXhPZignLnltbCcpO1xuXG4gICAgZmlsZW5hbWUgPSAobGFzdEluZGV4T2ZTbGFzaCA+IDAgJiYgbGFzdEluZGV4T2ZZYW1sID4gMCkgPyB1cmwuc2xpY2UobGFzdEluZGV4T2ZTbGFzaCsxLCBsYXN0SW5kZXhPZllhbWwpOiB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAoIWZpbGVuYW1lKSB7XG4gICAgLy8gSWYgdGhlIHVybCBpZiBmb3IgYSBsb2NhbCBmaWxlLCB0aGVuIGp1c3QgZW5jb2RlIHRoZSBmaWxlbmFtZSBhbmQgbm90IHRoZSBlbnRpcmUgcGF0aFxuICAgIC8vIFNpbmNlIHBhdGggY2FuIGRlcGVuZCBvbiBwbGF0Zm9ybVxuICAgIGxldCBmaWxlID0gZXhpc3RzU3luYyh1cmwpID8gcGF0aC5iYXNlbmFtZSh1cmwpIDogdXJsO1xuXG4gICAgZmlsZW5hbWUgPSBoYXNoQW5kRW5jb2RlKGZpbGUpO1xuICB9XG5cbiAgcmV0dXJuIGZpbGVuYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNLOHNJbXBvcnQodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAodmFsdWUgIT09ICdrOHMnICYmICF2YWx1ZS5zdGFydHNXaXRoKCdrOHNAJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZHNBcmVQcmVzZW50KGltcHJ0czogc3RyaW5nW10gfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgcmV0dXJuIChpbXBydHMgPz8gW10pLnNvbWUoaW1wcnQgPT4gIWlzSzhzSW1wb3J0KGltcHJ0KSk7XG59Il19
package/package.json CHANGED
@@ -75,7 +75,7 @@
75
75
  "dependencies": {
76
76
  "@types/node": "^16",
77
77
  "ajv": "^8.12.0",
78
- "cdk8s": "^2.65.1",
78
+ "cdk8s": "^2.66.0",
79
79
  "cdk8s-plus-25": "^2.22.24",
80
80
  "codemaker": "^1.89.0",
81
81
  "colors": "1.4.0",
@@ -103,7 +103,7 @@
103
103
  "node": ">= 16.20.0"
104
104
  },
105
105
  "license": "Apache-2.0",
106
- "version": "2.116.0",
106
+ "version": "2.118.0",
107
107
  "jest": {
108
108
  "testMatch": [
109
109
  "<rootDir>/src/**/__tests__/**/*.ts?(x)",