cdk8s-cli 2.0.55 → 2.0.58

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.
@@ -12,6 +12,7 @@ export interface ApiObjectDefinition {
12
12
  */
13
13
  readonly custom: boolean;
14
14
  readonly prefix?: string;
15
+ readonly suffix?: string;
15
16
  }
16
17
  /**
17
18
  * Emits the header for a generated imports file.
@@ -32,9 +32,10 @@ function getTypeName(custom, kind, version) {
32
32
  }
33
33
  exports.getTypeName = getTypeName;
34
34
  function getConstructTypeName(def) {
35
- var _a;
35
+ var _a, _b;
36
36
  const prefix = (_a = def.prefix) !== null && _a !== void 0 ? _a : '';
37
- return json2jsii_1.TypeGenerator.normalizeTypeName(`${prefix}${getTypeName(def.custom, def.kind, def.version)}`);
37
+ const suffix = (_b = def.suffix) !== null && _b !== void 0 ? _b : '';
38
+ return json2jsii_1.TypeGenerator.normalizeTypeName(`${prefix}${getTypeName(def.custom, def.kind, def.version)}${suffix}`);
38
39
  }
39
40
  exports.getConstructTypeName = getConstructTypeName;
40
41
  function getPropsTypeName(def) {
@@ -148,4 +149,4 @@ function generateConstruct(typegen, def) {
148
149
  });
149
150
  }
150
151
  exports.generateConstruct = generateConstruct;
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWdlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbXBvcnQvY29kZWdlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBb0Q7QUFJcEQseUNBQTBDO0FBRTFDLE1BQU0sc0JBQXNCLEdBQUcsVUFBVSxDQUFDO0FBQzFDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQztBQXVCekI7Ozs7O0dBS0c7QUFDSCxTQUFnQixVQUFVLENBQUMsSUFBZSxFQUFFLE1BQWU7SUFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ25DLElBQUksTUFBTSxFQUFFO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO0tBQ3hGO1NBQU07UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLHdEQUF3RCxDQUFDLENBQUM7S0FDckU7SUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLDJDQUEyQyxDQUFDLENBQUM7SUFDdkQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2QsQ0FBQztBQVRELGdDQVNDO0FBRUQsU0FBZ0IsV0FBVyxDQUFDLE1BQWUsRUFBRSxJQUFZLEVBQUUsT0FBZTtJQUN4RSxzRUFBc0U7SUFDdEUsdUZBQXVGO0lBQ3ZGLDJFQUEyRTtJQUMzRSxNQUFNLE9BQU8sR0FBRyxDQUFDLE1BQU0sSUFBSSxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBQSx3QkFBWSxFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFFLE9BQU8sR0FBRyxJQUFJLEdBQUcsT0FBTyxFQUFFLENBQUM7QUFDN0IsQ0FBQztBQU5ELGtDQU1DO0FBRUQsU0FBZ0Isb0JBQW9CLENBQUMsR0FBd0I7O0lBQzNELE1BQU0sTUFBTSxHQUFHLE1BQUEsR0FBRyxDQUFDLE1BQU0sbUNBQUksRUFBRSxDQUFDO0lBRWhDLE9BQU8seUJBQWEsQ0FBQyxpQkFB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QUM7WUFDakIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFsSUQsOENBa0lDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29kZU1ha2VyLCB0b1Bhc2NhbENhc2UgfSBmcm9tICdjb2RlbWFrZXInO1xuLy8gd2UganVzdCBuZWVkIHRoZSB0eXBlcyBmcm9tIGpzb24tc2NoZW1hXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBKU09OU2NoZW1hNCB9IGZyb20gJ2pzb24tc2NoZW1hJztcbmltcG9ydCB7IFR5cGVHZW5lcmF0b3IgfSBmcm9tICdqc29uMmpzaWknO1xuXG5jb25zdCBNQU5JRkVTVF9TVEFUSUNfTUVUSE9EID0gJ21hbmlmZXN0JztcbmNvbnN0IEdWS19TVEFUSUMgPSAnR1ZLJztcblxuZXhwb3J0IGludGVyZmFjZSBBcGlPYmplY3REZWZpbml0aW9uIHtcbiAgcmVhZG9ubHkgZnFuOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGdyb3VwOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbiAgcmVhZG9ubHkga2luZDogc3RyaW5nO1xuICByZWFkb25seSBzY2hlbWE6IEpTT05TY2hlbWE0O1xuXG4gIC8qKlxuICAgKiBJcyB0aGlzIGlzIGEgY3VzdG9tIHJlc291cmNlIChpbXBvcnRlZCBmcm9tIGEgQ1JEKSBvciBhIGNvcmUgQVBJIG9iamVjdD9cbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbTogYm9vbGVhbjtcblxuICAvKlxuICAgKiBJbmRpY2F0ZXMgaWYgYSBwcmVmaXggc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBjb25zdHJ1Y3QgY2xhc3MgbmFtZS4gRm9yXG4gICAqIGV4YW1wbGUsIGZvciBuYXRpdmUgazhzIGFwaSBvYmplY3RzLCB3ZSBhZGQgYEt1YmVgIGJ5IGRlZmF1bHQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiXCJcbiAgICovXG4gIHJlYWRvbmx5IHByZWZpeD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBFbWl0cyB0aGUgaGVhZGVyIGZvciBhIGdlbmVyYXRlZCBpbXBvcnRzIGZpbGUuXG4gKlxuICogQHBhcmFtIGN1c3RvbSAtIHdoZXRoZXIgdGhlIGhlYWRlciBpcyBiZWluZyBlbWl0dGVkIGZvciBhIGN1c3RvbSByZXNvdXJjZVxuICogKGltcG9ydGVkIGZyb20gYSBDUkQpIG9yIGEgY29yZSBBUEkgb2JqZWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbWl0SGVhZGVyKGNvZGU6IENvZGVNYWtlciwgY3VzdG9tOiBib29sZWFuKSB7XG4gIGNvZGUubGluZSgnLy8gZ2VuZXJhdGVkIGJ5IGNkazhzJyk7XG4gIGlmIChjdXN0b20pIHtcbiAgICBjb2RlLmxpbmUoJ2ltcG9ydCB7IEFwaU9iamVjdCwgQXBpT2JqZWN0TWV0YWRhdGEsIEdyb3VwVmVyc2lvbktpbmQgfSBmcm9tIFxcJ2NkazhzXFwnOycpO1xuICB9IGVsc2Uge1xuICAgIGNvZGUubGluZSgnaW1wb3J0IHsgQXBpT2JqZWN0LCBHcm91cFZlcnNpb25LaW5kIH0gZnJvbSBcXCdjZGs4c1xcJzsnKTtcbiAgfVxuICBjb2RlLmxpbmUoJ2ltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXFwnY29uc3RydWN0c1xcJzsnKTtcbiAgY29kZS5saW5lKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBlTmFtZShjdXN0b206IGJvb2xlYW4sIGtpbmQ6IHN0cmluZywgdmVyc2lvbjogc3RyaW5nKSB7XG4gIC8vIGFkZCBhbiBBUEkgdmVyc2lvbiBwb3N0Zml4IG9ubHkgaWYgdGhpcyBpcyBjb3JlIEFQSSAoYGltcG9ydCBrOHNgKS5cbiAgLy8gVE9ETyA9IHdoYXQgYWJvdXQgdGhlIHJlc3Qgb2YgdGhlIG5hbWVzcGFjZT8gdGhlIHNhbWUgcmVzb3VyY2UgY2FuIGV4aXN0IGluIG11bHRpcGxlXG4gIC8vIGFwaSBncm91cHMgKEluZ3Jlc3MgZm9yIGV4YW1wbGUgZXhpc3RzIGluICdleHRlbnNpb25zJyBhbmQgJ25ldHdvcmtpbmcnKVxuICBjb25zdCBwb3N0Zml4ID0gKGN1c3RvbSB8fCB2ZXJzaW9uID09PSAndjEnKSA/ICcnIDogdG9QYXNjYWxDYXNlKHZlcnNpb24pO1xuICByZXR1cm4gYCR7a2luZH0ke3Bvc3RmaXh9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnN0cnVjdFR5cGVOYW1lKGRlZjogQXBpT2JqZWN0RGVmaW5pdGlvbikge1xuICBjb25zdCBwcmVmaXggPSBkZWYucHJlZml4ID8/ICcnO1xuXG4gIHJldHVybiBUeXBlR2VuZXJhdG9yLm5vcm1hbGl6ZVR5cGVOYW1lKGAke3ByZWZpeH0ke2dldFR5cGVOYW1lKGRlZi5jdXN0b20sIGRlZi5raW5kLCBkZWYudmVyc2lvbil9YCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9wc1R5cGVOYW1lKGRlZjogQXBpT2JqZWN0RGVmaW5pdGlvbikge1xuICBjb25zdCBjb25zdHJ1Y3ROYW1lID0gZ2V0Q29uc3RydWN0VHlwZU5hbWUoZGVmKTtcbiAgcmV0dXJuIFR5cGVHZW5lcmF0b3Iubm9ybWFsaXplVHlwZU5hbWUoYCR7Y29uc3RydWN0TmFtZX1Qcm9wc2ApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVDb25zdHJ1Y3QodHlwZWdlbjogVHlwZUdlbmVyYXRvciwgZGVmOiBBcGlPYmplY3REZWZpbml0aW9uKSB7XG4gIGNvbnN0IGNvbnN0cnVjdE5hbWUgPSBnZXRDb25zdHJ1Y3RUeXBlTmFtZShkZWYpO1xuXG4gIGlmIChkZWYuY3VzdG9tKSB7XG4gICAgdHlwZWdlbi5lbWl0Q3VzdG9tVHlwZSgnQXBpT2JqZWN0TWV0YWRhdGEnLCAoKSA9PiB7fSk7XG4gIH1cblxuICB0eXBlZ2VuLmVtaXRDdXN0b21UeXBlKGNvbnN0cnVjdE5hbWUsIGNvZGUgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IGRlZi5zY2hlbWE7XG5cbiAgICAvLyBgcHJvcHNUeXBlTmFtZWAgY291bGQgYWxzbyBiZSBcImFueVwiIGlmIHdlIGNhbid0IHBhcnNlIHRoZSBzY2hlbWEgZm9yIHNvbWUgcmVhc29uXG4gICAgY29uc3QgcHJvcHNUeXBlTmFtZSA9IGVtaXRQcm9wc1N0cnVjdCgpO1xuICAgIGNvbnN0IGdyb3VwUHJlZml4ID0gZGVmLmdyb3VwID8gYCR7ZGVmLmdyb3VwfS9gIDogJyc7XG4gICAgY29uc3QgaGFzUmVxdWlyZWQgPSBzY2hlbWE/LnJlcXVpcmVkICYmIEFycmF5LmlzQXJyYXkoc2NoZW1hLnJlcXVpcmVkKSAmJiBzY2hlbWEucmVxdWlyZWQubGVuZ3RoID4gMDtcbiAgICBjb25zdCBkZWZhdWx0UHJvcHMgPSBoYXNSZXF1aXJlZCA/ICcnIDogJyA9IHt9JztcbiAgICBlbWl0Q29uc3RydWN0KCk7XG5cbiAgICBmdW5jdGlvbiBlbWl0UHJvcHNTdHJ1Y3QoKSB7XG4gICAgICBjb25zdCBwcm9wc1NjaGVtYSA9IGNyZWF0ZVByb3BzU3RydWN0U2NoZW1hKCk7XG4gICAgICBjb25zdCBwcm9wc1N0cnVjdE5hbWUgPSBnZXRQcm9wc1R5cGVOYW1lKGRlZik7XG4gICAgICByZXR1cm4gdHlwZWdlbi5lbWl0VHlwZShwcm9wc1N0cnVjdE5hbWUsIHByb3BzU2NoZW1hLCBkZWYuZnFuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVQcm9wc1N0cnVjdFNjaGVtYSgpIHtcbiAgICAgIGNvbnN0IGNvcHk6IEpTT05TY2hlbWE0ID0geyAuLi5kZWYuc2NoZW1hIHx8IHt9IH07XG4gICAgICBjb25zdCBwcm9wcyA9IGNvcHkucHJvcGVydGllcyA9IGNvcHkucHJvcGVydGllcyB8fCB7fTtcbiAgICAgIGRlbGV0ZSBwcm9wcy5hcGlWZXJzaW9uO1xuICAgICAgZGVsZXRlIHByb3BzLmtpbmQ7XG4gICAgICBkZWxldGUgcHJvcHMuc3RhdHVzO1xuICAgICAgZGVsZXRlIGNvcHlbJ3gta3ViZXJuZXRlcy1ncm91cC12ZXJzaW9uLWtpbmQnXTtcblxuICAgICAgY29weS5yZXF1aXJlZCA9IGNvcHkucmVxdWlyZWQgfHwgW107XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvcHkucmVxdWlyZWQpKSB7XG4gICAgICAgIGNvcHkucmVxdWlyZWQgPSBjb3B5LnJlcXVpcmVkLmZpbHRlcih4ID0+IHggIT09ICdhcGlWZXJzaW9uJyAmJiB4ICE9PSAna2luZCcgJiYgeCAhPT0gJ3N0YXR1cycpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGVmLmN1c3RvbSkge1xuICAgICAgICAvLyBhZGQgXCJtZXRhZGF0YVwiIGZpZWxkIGZvciBhbGwgQ1JEcywgb3ZlcnJpZGluZyBhbnkgZXhpc3RpbmcgdHlwaW5nc1xuICAgICAgICBjb3B5LnByb3BlcnRpZXMubWV0YWRhdGEgPSB7ICRyZWY6ICcjL2RlZmluaXRpb25zL0FwaU9iamVjdE1ldGFkYXRhJyB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29weTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbWl0Q29uc3RydWN0KCkge1xuICAgICAgY29kZS5saW5lKCcvKionKTtcbiAgICAgIGNvZGUubGluZShgICogJHtkZWYuc2NoZW1hPy5kZXNjcmlwdGlvbiA/PyAnJ31gKTtcbiAgICAgIGNvZGUubGluZSgnIConKTtcbiAgICAgIGNvZGUubGluZShgICogQHNjaGVtYSAke2RlZi5mcW59YCk7XG4gICAgICBjb2RlLmxpbmUoJyAqLycpO1xuICAgICAgY29kZS5vcGVuQmxvY2soYGV4cG9ydCBjbGFzcyAke2NvbnN0cnVjdE5hbWV9IGV4dGVuZHMgQXBpT2JqZWN0YCk7XG5cbiAgICAgIGVtaXRHVksoKTtcblxuICAgICAgY29kZS5saW5lKCcnKTtcblxuICAgICAgZW1pdE1hbmlmZXN0RmFjdG9yeSgpO1xuXG4gICAgICBjb2RlLmxpbmUoJycpO1xuXG4gICAgICBlbWl0SW5pdGlhbGl6ZXIoKTtcblxuICAgICAgY29kZS5saW5lKCcnKTtcblxuICAgICAgZW1pdFRvSnNvbigpO1xuXG4gICAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbWl0R1ZLKCkge1xuICAgICAgY29kZS5saW5lKCcvKionKTtcbiAgICAgIGNvZGUubGluZShgICogUmV0dXJucyB0aGUgYXBpVmVyc2lvbiBhbmQga2luZCBmb3IgXCIke2RlZi5mcW59XCJgKTtcbiAgICAgIGNvZGUubGluZSgnICovJyk7XG4gICAgICBjb2RlLm9wZW5CbG9jayhgcHVibGljIHN0YXRpYyByZWFkb25seSAke0dWS19TVEFUSUN9OiBHcm91cFZlcnNpb25LaW5kID1gKTtcbiAgICAgIGNvZGUubGluZShgYXBpVmVyc2lvbjogJyR7Z3JvdXBQcmVmaXh9JHtkZWYudmVyc2lvbn0nLGApO1xuICAgICAgY29kZS5saW5lKGBraW5kOiAnJHtkZWYua2luZH0nLGApO1xuICAgICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZW1pdEluaXRpYWxpemVyKCkge1xuXG4gICAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgICAgY29kZS5saW5lKGAgKiBEZWZpbmVzIGEgXCIke2RlZi5mcW59XCIgQVBJIG9iamVjdGApO1xuICAgICAgY29kZS5saW5lKCcgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIG9iamVjdCcpO1xuICAgICAgY29kZS5saW5lKCcgKiBAcGFyYW0gaWQgYSBzY29wZS1sb2NhbCBuYW1lIGZvciB0aGUgb2JqZWN0Jyk7XG4gICAgICBjb2RlLmxpbmUoJyAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wcycpO1xuICAgICAgY29kZS5saW5lKCcgKi8nKTtcblxuICAgICAgY29kZS5vcGVuQmxvY2soYHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogJHtwcm9wc1R5cGVOYW1lfSR7ZGVmYXVsdFByb3BzfSlgKTtcblxuICAgICAgY29kZS5vcGVuKCdzdXBlcihzY29wZSwgaWQsIHsnKTtcbiAgICAgIGNvZGUubGluZShgLi4uJHtjb25zdHJ1Y3ROYW1lfS4ke0dWS19TVEFUSUN9LGApO1xuICAgICAgY29kZS5saW5lKCcuLi5wcm9wcywnKTtcbiAgICAgIGNvZGUuY2xvc2UoJ30pOycpO1xuXG4gICAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbWl0TWFuaWZlc3RGYWN0b3J5KCkge1xuICAgICAgY29kZS5saW5lKCcvKionKTtcbiAgICAgIGNvZGUubGluZShgICogUmVuZGVycyBhIEt1YmVybmV0ZXMgbWFuaWZlc3QgZm9yIFwiJHtkZWYuZnFufVwiLmApO1xuICAgICAgY29kZS5saW5lKCcgKicpO1xuICAgICAgY29kZS5saW5lKCcgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGlubGluZSByZXNvdXJjZSBtYW5pZmVzdHMgaW5zaWRlIG90aGVyIG9iamVjdHMgKGUuZy4gYXMgdGVtcGxhdGVzKS4nKTtcbiAgICAgIGNvZGUubGluZSgnIConKTtcbiAgICAgIGNvZGUubGluZSgnICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzJyk7XG4gICAgICBjb2RlLmxpbmUoJyAqLycpO1xuXG4gICAgICBjb2RlLm9wZW5CbG9jayhgcHVibGljIHN0YXRpYyAke01BTklGRVNUX1NUQVRJQ19NRVRIT0R9KHByb3BzOiAke3Byb3BzVHlwZU5hbWV9JHtkZWZhdWx0UHJvcHN9KTogYW55YCk7XG4gICAgICBjb2RlLm9wZW4oJ3JldHVybiB7Jyk7XG4gICAgICBjb2RlLmxpbmUoYC4uLiR7Y29uc3RydWN0TmFtZX0uJHtHVktfU1RBVElDfSxgKTtcbiAgICAgIGNvZGUubGluZShgLi4udG9Kc29uXyR7cHJvcHNUeXBlTmFtZX0ocHJvcHMpLGApO1xuICAgICAgY29kZS5jbG9zZSgnfTsnKTtcbiAgICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVtaXRUb0pzb24oKSB7XG4gICAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgICAgY29kZS5saW5lKCcgKiBSZW5kZXJzIHRoZSBvYmplY3QgdG8gS3ViZXJuZXRlcyBKU09OLicpO1xuICAgICAgY29kZS5saW5lKCcgKi8nKTtcbiAgICAgIGNvZGUub3BlbkJsb2NrKCdwdWJsaWMgdG9Kc29uKCk6IGFueScpO1xuICAgICAgY29kZS5saW5lKCdjb25zdCByZXNvbHZlZCA9IHN1cGVyLnRvSnNvbigpOycpO1xuICAgICAgY29kZS5saW5lKCk7XG4gICAgICBjb2RlLm9wZW4oJ3JldHVybiB7Jyk7XG4gICAgICBjb2RlLmxpbmUoYC4uLiR7Y29uc3RydWN0TmFtZX0uJHtHVktfU1RBVElDfSxgKTtcbiAgICAgIGNvZGUubGluZShgLi4udG9Kc29uXyR7cHJvcHNUeXBlTmFtZX0ocmVzb2x2ZWQpLGApO1xuICAgICAgY29kZS5jbG9zZSgnfTsnKTtcbiAgICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWdlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbXBvcnQvY29kZWdlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBb0Q7QUFJcEQseUNBQTBDO0FBRTFDLE1BQU0sc0JBQXNCLEdBQUcsVUFBVSxDQUFDO0FBQzFDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQztBQStCekI7Ozs7O0dBS0c7QUFDSCxTQUFnQixVQUFVLENBQUMsSUFBZSxFQUFFLE1BQWU7SUFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ25DLElBQUksTUFBTSxFQUFFO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO0tBQ3hGO1NBQU07UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLHdEQUF3RCxDQUFDLENBQUM7S0FDckU7SUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLDJDQUEyQyxDQUFDLENBQUM7SUFDdkQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2QsQ0FBQztBQVRELGdDQVNDO0FBRUQsU0FBZ0IsV0FBVyxDQUFDLE1BQWUsRUFBRSxJQUFZLEVBQUUsT0FBZTtJQUN4RSxzRUFBc0U7SUFDdEUsdUZBQXVGO0lBQ3ZGLDJFQUEyRTtJQUMzRSxNQUFNLE9BQU8sR0FBRyxDQUFDLE1BQU0sSUFBSSxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBQSx3QkFBWSxFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFFLE9BQU8sR0FBRyxJQUFJLEdBQUcsT0FBTyxFQUFFLENBQUM7QUFDN0IsQ0FBQztBQU5ELGtDQU1DO0FBRUQsU0FBZ0Isb0JBQW9CLENBQUMsR0FBd0I7O0lBQzNELE1BQU0sTUFBTSxHQUFHLE1BQUEsR0FBRyxDQUFDLE1BQU0sbUNBQUksRUFBRSxDQUFDO0lBQ2hDLE1BQU0sTUFBTSxHQUFHLE1BQUEs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QUFDLGFBQWEsYUFBYSxhQUFhLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBbElELDhDQWtJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvZGVNYWtlciwgdG9QYXNjYWxDYXNlIH0gZnJvbSAnY29kZW1ha2VyJztcbi8vIHdlIGp1c3QgbmVlZCB0aGUgdHlwZXMgZnJvbSBqc29uLXNjaGVtYVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IHsgSlNPTlNjaGVtYTQgfSBmcm9tICdqc29uLXNjaGVtYSc7XG5pbXBvcnQgeyBUeXBlR2VuZXJhdG9yIH0gZnJvbSAnanNvbjJqc2lpJztcblxuY29uc3QgTUFOSUZFU1RfU1RBVElDX01FVEhPRCA9ICdtYW5pZmVzdCc7XG5jb25zdCBHVktfU1RBVElDID0gJ0dWSyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBpT2JqZWN0RGVmaW5pdGlvbiB7XG4gIHJlYWRvbmx5IGZxbjogc3RyaW5nO1xuICByZWFkb25seSBncm91cDogc3RyaW5nO1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGtpbmQ6IHN0cmluZztcbiAgcmVhZG9ubHkgc2NoZW1hOiBKU09OU2NoZW1hNDtcblxuICAvKipcbiAgICogSXMgdGhpcyBpcyBhIGN1c3RvbSByZXNvdXJjZSAoaW1wb3J0ZWQgZnJvbSBhIENSRCkgb3IgYSBjb3JlIEFQSSBvYmplY3Q/XG4gICAqL1xuICByZWFkb25seSBjdXN0b206IGJvb2xlYW47XG5cbiAgLypcbiAgICogSW5kaWNhdGVzIGlmIGEgcHJlZml4IHNob3VsZCBiZSBhZGRlZCB0byB0aGUgY29uc3RydWN0IGNsYXNzIG5hbWUuIEZvclxuICAgKiBleGFtcGxlLCBmb3IgbmF0aXZlIGs4cyBhcGkgb2JqZWN0cywgd2UgYWRkIGBLdWJlYCBieSBkZWZhdWx0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIlwiXG4gICAqL1xuICByZWFkb25seSBwcmVmaXg/OiBzdHJpbmc7XG5cbiAgLypcbiAgICogSW5kaWNhdGVzIGlmIGEgc3VmZml4IHNob3VsZCBiZSBhZGRlZCB0byB0aGUgY29uc3RydWN0IGNsYXNzIG5hbWUuIEZvclxuICAgKiBleGFtcGxlLCBmb3IgbXVsdGktdmVyc2lvbmVkIGNyZHMsIHdlIGFkZCB0aGUgdmVyc2lvbiBhcyB0aGUgc3VmZml4LlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIlwiXG4gICAqL1xuICByZWFkb25seSBzdWZmaXg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW1pdHMgdGhlIGhlYWRlciBmb3IgYSBnZW5lcmF0ZWQgaW1wb3J0cyBmaWxlLlxuICpcbiAqIEBwYXJhbSBjdXN0b20gLSB3aGV0aGVyIHRoZSBoZWFkZXIgaXMgYmVpbmcgZW1pdHRlZCBmb3IgYSBjdXN0b20gcmVzb3VyY2VcbiAqIChpbXBvcnRlZCBmcm9tIGEgQ1JEKSBvciBhIGNvcmUgQVBJIG9iamVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZW1pdEhlYWRlcihjb2RlOiBDb2RlTWFrZXIsIGN1c3RvbTogYm9vbGVhbikge1xuICBjb2RlLmxpbmUoJy8vIGdlbmVyYXRlZCBieSBjZGs4cycpO1xuICBpZiAoY3VzdG9tKSB7XG4gICAgY29kZS5saW5lKCdpbXBvcnQgeyBBcGlPYmplY3QsIEFwaU9iamVjdE1ldGFkYXRhLCBHcm91cFZlcnNpb25LaW5kIH0gZnJvbSBcXCdjZGs4c1xcJzsnKTtcbiAgfSBlbHNlIHtcbiAgICBjb2RlLmxpbmUoJ2ltcG9ydCB7IEFwaU9iamVjdCwgR3JvdXBWZXJzaW9uS2luZCB9IGZyb20gXFwnY2RrOHNcXCc7Jyk7XG4gIH1cbiAgY29kZS5saW5lKCdpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFxcJ2NvbnN0cnVjdHNcXCc7Jyk7XG4gIGNvZGUubGluZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHlwZU5hbWUoY3VzdG9tOiBib29sZWFuLCBraW5kOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZykge1xuICAvLyBhZGQgYW4gQVBJIHZlcnNpb24gcG9zdGZpeCBvbmx5IGlmIHRoaXMgaXMgY29yZSBBUEkgKGBpbXBvcnQgazhzYCkuXG4gIC8vIFRPRE8gPSB3aGF0IGFib3V0IHRoZSByZXN0IG9mIHRoZSBuYW1lc3BhY2U/IHRoZSBzYW1lIHJlc291cmNlIGNhbiBleGlzdCBpbiBtdWx0aXBsZVxuICAvLyBhcGkgZ3JvdXBzIChJbmdyZXNzIGZvciBleGFtcGxlIGV4aXN0cyBpbiAnZXh0ZW5zaW9ucycgYW5kICduZXR3b3JraW5nJylcbiAgY29uc3QgcG9zdGZpeCA9IChjdXN0b20gfHwgdmVyc2lvbiA9PT0gJ3YxJykgPyAnJyA6IHRvUGFzY2FsQ2FzZSh2ZXJzaW9uKTtcbiAgcmV0dXJuIGAke2tpbmR9JHtwb3N0Zml4fWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25zdHJ1Y3RUeXBlTmFtZShkZWY6IEFwaU9iamVjdERlZmluaXRpb24pIHtcbiAgY29uc3QgcHJlZml4ID0gZGVmLnByZWZpeCA/PyAnJztcbiAgY29uc3Qgc3VmZml4ID0gZGVmLnN1ZmZpeCA/PyAnJztcbiAgcmV0dXJuIFR5cGVHZW5lcmF0b3Iubm9ybWFsaXplVHlwZU5hbWUoYCR7cHJlZml4fSR7Z2V0VHlwZU5hbWUoZGVmLmN1c3RvbSwgZGVmLmtpbmQsIGRlZi52ZXJzaW9uKX0ke3N1ZmZpeH1gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3BzVHlwZU5hbWUoZGVmOiBBcGlPYmplY3REZWZpbml0aW9uKSB7XG4gIGNvbnN0IGNvbnN0cnVjdE5hbWUgPSBnZXRDb25zdHJ1Y3RUeXBlTmFtZShkZWYpO1xuICByZXR1cm4gVHlwZUdlbmVyYXRvci5ub3JtYWxpemVUeXBlTmFtZShgJHtjb25zdHJ1Y3ROYW1lfVByb3BzYCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUNvbnN0cnVjdCh0eXBlZ2VuOiBUeXBlR2VuZXJhdG9yLCBkZWY6IEFwaU9iamVjdERlZmluaXRpb24pIHtcbiAgY29uc3QgY29uc3RydWN0TmFtZSA9IGdldENvbnN0cnVjdFR5cGVOYW1lKGRlZik7XG5cbiAgaWYgKGRlZi5jdXN0b20pIHtcbiAgICB0eXBlZ2VuLmVtaXRDdXN0b21UeXBlKCdBcGlPYmplY3RNZXRhZGF0YScsICgpID0+IHt9KTtcbiAgfVxuXG4gIHR5cGVnZW4uZW1pdEN1c3RvbVR5cGUoY29uc3RydWN0TmFtZSwgY29kZSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gZGVmLnNjaGVtYTtcblxuICAgIC8vIGBwcm9wc1R5cGVOYW1lYCBjb3VsZCBhbHNvIGJlIFwiYW55XCIgaWYgd2UgY2FuJ3QgcGFyc2UgdGhlIHNjaGVtYSBmb3Igc29tZSByZWFzb25cbiAgICBjb25zdCBwcm9wc1R5cGVOYW1lID0gZW1pdFByb3BzU3RydWN0KCk7XG4gICAgY29uc3QgZ3JvdXBQcmVmaXggPSBkZWYuZ3JvdXAgPyBgJHtkZWYuZ3JvdXB9L2AgOiAnJztcbiAgICBjb25zdCBoYXNSZXF1aXJlZCA9IHNjaGVtYT8ucmVxdWlyZWQgJiYgQXJyYXkuaXNBcnJheShzY2hlbWEucmVxdWlyZWQpICYmIHNjaGVtYS5yZXF1aXJlZC5sZW5ndGggPiAwO1xuICAgIGNvbnN0IGRlZmF1bHRQcm9wcyA9IGhhc1JlcXVpcmVkID8gJycgOiAnID0ge30nO1xuICAgIGVtaXRDb25zdHJ1Y3QoKTtcblxuICAgIGZ1bmN0aW9uIGVtaXRQcm9wc1N0cnVjdCgpIHtcbiAgICAgIGNvbnN0IHByb3BzU2NoZW1hID0gY3JlYXRlUHJvcHNTdHJ1Y3RTY2hlbWEoKTtcbiAgICAgIGNvbnN0IHByb3BzU3RydWN0TmFtZSA9IGdldFByb3BzVHlwZU5hbWUoZGVmKTtcbiAgICAgIHJldHVybiB0eXBlZ2VuLmVtaXRUeXBlKHByb3BzU3RydWN0TmFtZSwgcHJvcHNTY2hlbWEsIGRlZi5mcW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZVByb3BzU3RydWN0U2NoZW1hKCkge1xuICAgICAgY29uc3QgY29weTogSlNPTlNjaGVtYTQgPSB7IC4uLmRlZi5zY2hlbWEgfHwge30gfTtcbiAgICAgIGNvbnN0IHByb3BzID0gY29weS5wcm9wZXJ0aWVzID0gY29weS5wcm9wZXJ0aWVzIHx8IHt9O1xuICAgICAgZGVsZXRlIHByb3BzLmFwaVZlcnNpb247XG4gICAgICBkZWxldGUgcHJvcHMua2luZDtcbiAgICAgIGRlbGV0ZSBwcm9wcy5zdGF0dXM7XG4gICAgICBkZWxldGUgY29weVsneC1rdWJlcm5ldGVzLWdyb3VwLXZlcnNpb24ta2luZCddO1xuXG4gICAgICBjb3B5LnJlcXVpcmVkID0gY29weS5yZXF1aXJlZCB8fCBbXTtcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29weS5yZXF1aXJlZCkpIHtcbiAgICAgICAgY29weS5yZXF1aXJlZCA9IGNvcHkucmVxdWlyZWQuZmlsdGVyKHggPT4geCAhPT0gJ2FwaVZlcnNpb24nICYmIHggIT09ICdraW5kJyAmJiB4ICE9PSAnc3RhdHVzJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkZWYuY3VzdG9tKSB7XG4gICAgICAgIC8vIGFkZCBcIm1ldGFkYXRhXCIgZmllbGQgZm9yIGFsbCBDUkRzLCBvdmVycmlkaW5nIGFueSBleGlzdGluZyB0eXBpbmdzXG4gICAgICAgIGNvcHkucHJvcGVydGllcy5tZXRhZGF0YSA9IHsgJHJlZjogJyMvZGVmaW5pdGlvbnMvQXBpT2JqZWN0TWV0YWRhdGEnIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVtaXRDb25zdHJ1Y3QoKSB7XG4gICAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgICAgY29kZS5saW5lKGAgKiAke2RlZi5zY2hlbWE/LmRlc2NyaXB0aW9uID8/ICcnfWApO1xuICAgICAgY29kZS5saW5lKCcgKicpO1xuICAgICAgY29kZS5saW5lKGAgKiBAc2NoZW1hICR7ZGVmLmZxbn1gKTtcbiAgICAgIGNvZGUubGluZSgnICovJyk7XG4gICAgICBjb2RlLm9wZW5CbG9jayhgZXhwb3J0IGNsYXNzICR7Y29uc3RydWN0TmFtZX0gZXh0ZW5kcyBBcGlPYmplY3RgKTtcblxuICAgICAgZW1pdEdWSygpO1xuXG4gICAgICBjb2RlLmxpbmUoJycpO1xuXG4gICAgICBlbWl0TWFuaWZlc3RGYWN0b3J5KCk7XG5cbiAgICAgIGNvZGUubGluZSgnJyk7XG5cbiAgICAgIGVtaXRJbml0aWFsaXplcigpO1xuXG4gICAgICBjb2RlLmxpbmUoJycpO1xuXG4gICAgICBlbWl0VG9Kc29uKCk7XG5cbiAgICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVtaXRHVksoKSB7XG4gICAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgICAgY29kZS5saW5lKGAgKiBSZXR1cm5zIHRoZSBhcGlWZXJzaW9uIGFuZCBraW5kIGZvciBcIiR7ZGVmLmZxbn1cImApO1xuICAgICAgY29kZS5saW5lKCcgKi8nKTtcbiAgICAgIGNvZGUub3BlbkJsb2NrKGBwdWJsaWMgc3RhdGljIHJlYWRvbmx5ICR7R1ZLX1NUQVRJQ306IEdyb3VwVmVyc2lvbktpbmQgPWApO1xuICAgICAgY29kZS5saW5lKGBhcGlWZXJzaW9uOiAnJHtncm91cFByZWZpeH0ke2RlZi52ZXJzaW9ufScsYCk7XG4gICAgICBjb2RlLmxpbmUoYGtpbmQ6ICcke2RlZi5raW5kfScsYCk7XG4gICAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbWl0SW5pdGlhbGl6ZXIoKSB7XG5cbiAgICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgICBjb2RlLmxpbmUoYCAqIERlZmluZXMgYSBcIiR7ZGVmLmZxbn1cIiBBUEkgb2JqZWN0YCk7XG4gICAgICBjb2RlLmxpbmUoJyAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgb2JqZWN0Jyk7XG4gICAgICBjb2RlLmxpbmUoJyAqIEBwYXJhbSBpZCBhIHNjb3BlLWxvY2FsIG5hbWUgZm9yIHRoZSBvYmplY3QnKTtcbiAgICAgIGNvZGUubGluZSgnICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzJyk7XG4gICAgICBjb2RlLmxpbmUoJyAqLycpO1xuXG4gICAgICBjb2RlLm9wZW5CbG9jayhgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiAke3Byb3BzVHlwZU5hbWV9JHtkZWZhdWx0UHJvcHN9KWApO1xuXG4gICAgICBjb2RlLm9wZW4oJ3N1cGVyKHNjb3BlLCBpZCwgeycpO1xuICAgICAgY29kZS5saW5lKGAuLi4ke2NvbnN0cnVjdE5hbWV9LiR7R1ZLX1NUQVRJQ30sYCk7XG4gICAgICBjb2RlLmxpbmUoJy4uLnByb3BzLCcpO1xuICAgICAgY29kZS5jbG9zZSgnfSk7Jyk7XG5cbiAgICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVtaXRNYW5pZmVzdEZhY3RvcnkoKSB7XG4gICAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgICAgY29kZS5saW5lKGAgKiBSZW5kZXJzIGEgS3ViZXJuZXRlcyBtYW5pZmVzdCBmb3IgXCIke2RlZi5mcW59XCIuYCk7XG4gICAgICBjb2RlLmxpbmUoJyAqJyk7XG4gICAgICBjb2RlLmxpbmUoJyAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5saW5lIHJlc291cmNlIG1hbmlmZXN0cyBpbnNpZGUgb3RoZXIgb2JqZWN0cyAoZS5nLiBhcyB0ZW1wbGF0ZXMpLicpO1xuICAgICAgY29kZS5saW5lKCcgKicpO1xuICAgICAgY29kZS5saW5lKCcgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHMnKTtcbiAgICAgIGNvZGUubGluZSgnICovJyk7XG5cbiAgICAgIGNvZGUub3BlbkJsb2NrKGBwdWJsaWMgc3RhdGljICR7TUFOSUZFU1RfU1RBVElDX01FVEhPRH0ocHJvcHM6ICR7cHJvcHNUeXBlTmFtZX0ke2RlZmF1bHRQcm9wc30pOiBhbnlgKTtcbiAgICAgIGNvZGUub3BlbigncmV0dXJuIHsnKTtcbiAgICAgIGNvZGUubGluZShgLi4uJHtjb25zdHJ1Y3ROYW1lfS4ke0dWS19TVEFUSUN9LGApO1xuICAgICAgY29kZS5saW5lKGAuLi50b0pzb25fJHtwcm9wc1R5cGVOYW1lfShwcm9wcyksYCk7XG4gICAgICBjb2RlLmNsb3NlKCd9OycpO1xuICAgICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZW1pdFRvSnNvbigpIHtcbiAgICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgICBjb2RlLmxpbmUoJyAqIFJlbmRlcnMgdGhlIG9iamVjdCB0byBLdWJlcm5ldGVzIEpTT04uJyk7XG4gICAgICBjb2RlLmxpbmUoJyAqLycpO1xuICAgICAgY29kZS5vcGVuQmxvY2soJ3B1YmxpYyB0b0pzb24oKTogYW55Jyk7XG4gICAgICBjb2RlLmxpbmUoJ2NvbnN0IHJlc29sdmVkID0gc3VwZXIudG9Kc29uKCk7Jyk7XG4gICAgICBjb2RlLmxpbmUoKTtcbiAgICAgIGNvZGUub3BlbigncmV0dXJuIHsnKTtcbiAgICAgIGNvZGUubGluZShgLi4uJHtjb25zdHJ1Y3ROYW1lfS4ke0dWS19TVEFUSUN9LGApO1xuICAgICAgY29kZS5saW5lKGAuLi50b0pzb25fJHtwcm9wc1R5cGVOYW1lfShyZXNvbHZlZCksYCk7XG4gICAgICBjb2RlLmNsb3NlKCd9OycpO1xuICAgICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==
@@ -1,7 +1,6 @@
1
1
  import { CodeMaker } from 'codemaker';
2
2
  import { ImportSpec } from '../config';
3
3
  import { GenerateOptions, ImportBase } from './base';
4
- import { GroupVersionKind } from './k8s';
5
4
  export interface ManifestObjectDefinition {
6
5
  apiVersion?: string;
7
6
  kind?: string;
@@ -30,14 +29,11 @@ export interface ManifestObjectDefinition {
30
29
  };
31
30
  }
32
31
  export declare class CustomResourceDefinition {
33
- private readonly schema?;
34
- private readonly group;
35
- private readonly version;
36
32
  private readonly kind;
37
- private readonly fqn;
33
+ private readonly versions;
34
+ readonly group: string;
38
35
  constructor(manifest: ManifestObjectDefinition);
39
36
  get key(): string;
40
- get gvk(): GroupVersionKind;
41
37
  generateTypeScript(code: CodeMaker, options: GenerateOptions): Promise<void>;
42
38
  }
43
39
  export declare class ImportCustomResourceDefinition extends ImportBase {
package/lib/import/crd.js CHANGED
@@ -30,6 +30,7 @@ exports.safeParseCrds = exports.ImportCustomResourceDefinition = exports.CustomR
30
30
  const fs = __importStar(require("fs"));
31
31
  const path = __importStar(require("path"));
32
32
  const ajv_1 = __importDefault(require("ajv"));
33
+ const codemaker_1 = require("codemaker");
33
34
  const json2jsii_1 = require("json2jsii");
34
35
  const reviver_1 = require("../reviver");
35
36
  const util_1 = require("../util");
@@ -43,7 +44,7 @@ const SUPPORTED_API_VERSIONS = [
43
44
  ];
44
45
  class CustomResourceDefinition {
45
46
  constructor(manifest) {
46
- var _a, _b, _c, _d, _e, _f, _g;
47
+ var _a, _b, _c;
47
48
  const apiVersion = (_a = manifest === null || manifest === void 0 ? void 0 : manifest.apiVersion) !== null && _a !== void 0 ? _a : 'undefined';
48
49
  assert(SUPPORTED_API_VERSIONS.includes(apiVersion), `"apiVersion" is "${apiVersion}" but it should be one of: ${SUPPORTED_API_VERSIONS.map(x => `"${x}"`).join(', ')}`);
49
50
  assert(manifest.kind === CRD_KIND, `"kind" must be "${CRD_KIND}"`);
@@ -51,41 +52,43 @@ class CustomResourceDefinition {
51
52
  if (!spec) {
52
53
  throw new Error('manifest does not have a "spec" attribute');
53
54
  }
54
- const version = (_b = spec.version) !== null && _b !== void 0 ? _b : ((_c = spec.versions) !== null && _c !== void 0 ? _c : [])[0];
55
- if (!version) {
56
- throw new Error('unable to determine CRD version');
55
+ if (spec.version) {
56
+ this.versions = [{ name: spec.version, schema: (_b = spec.validation) === null || _b === void 0 ? void 0 : _b.openAPIV3Schema }];
57
+ }
58
+ else {
59
+ this.versions = ((_c = spec.versions) !== null && _c !== void 0 ? _c : []).map(v => { var _a, _b, _c; return ({ name: v.name, schema: (_b = (_a = v.schema) === null || _a === void 0 ? void 0 : _a.openAPIV3Schema) !== null && _b !== void 0 ? _b : (_c = spec.validation) === null || _c === void 0 ? void 0 : _c.openAPIV3Schema }); });
60
+ }
61
+ if (this.versions.length === 0) {
62
+ throw new Error('unable to determine CRD versions');
57
63
  }
58
- const schema = typeof version === 'string'
59
- ? (_d = spec.validation) === null || _d === void 0 ? void 0 : _d.openAPIV3Schema
60
- : (_f = (_e = version === null || version === void 0 ? void 0 : version.schema) === null || _e === void 0 ? void 0 : _e.openAPIV3Schema) !== null && _f !== void 0 ? _f : (_g = spec.validation) === null || _g === void 0 ? void 0 : _g.openAPIV3Schema;
61
- this.schema = schema;
62
64
  this.group = spec.group;
63
- this.version = typeof version === 'string' ? version : version.name;
64
65
  this.kind = spec.names.kind;
65
- this.fqn = this.kind;
66
66
  }
67
67
  get key() {
68
68
  return `${this.group}/${this.kind.toLocaleLowerCase()}`;
69
69
  }
70
- get gvk() {
71
- return {
72
- group: this.group,
73
- version: this.version,
74
- kind: this.kind,
75
- };
76
- }
77
70
  async generateTypeScript(code, options) {
78
- const types = new json2jsii_1.TypeGenerator();
79
- (0, codegen_1.generateConstruct)(types, {
80
- group: this.group,
81
- version: this.version,
82
- kind: this.kind,
83
- fqn: this.fqn,
84
- schema: this.schema,
85
- custom: true,
86
- prefix: options.classNamePrefix,
87
- });
88
- code.line(types.render());
71
+ for (let i = 0; i < this.versions.length; i++) {
72
+ const version = this.versions[i];
73
+ if (!version.schema) {
74
+ throw new Error(`Schema for version ${version.name} is missing`);
75
+ }
76
+ // to preseve backwards compatiblity, only append a suffix for
77
+ // the second version onwards.
78
+ const suffix = i === 0 ? '' : (0, codemaker_1.toPascalCase)(version.name);
79
+ const types = new json2jsii_1.TypeGenerator({});
80
+ (0, codegen_1.generateConstruct)(types, {
81
+ group: this.group,
82
+ version: version.name,
83
+ kind: this.kind,
84
+ fqn: `${this.kind}${suffix}`,
85
+ schema: version.schema,
86
+ custom: true,
87
+ prefix: options.classNamePrefix,
88
+ suffix,
89
+ });
90
+ code.line(types.render());
91
+ }
89
92
  }
90
93
  }
91
94
  exports.CustomResourceDefinition = CustomResourceDefinition;
@@ -106,7 +109,7 @@ class ImportCustomResourceDefinition extends base_1.ImportBase {
106
109
  //sort to ensure consistent ordering for snapshot compare
107
110
  const sortedCrds = Object.values(crds).sort((a, b) => a.key.localeCompare(b.key));
108
111
  for (const crd of sortedCrds) {
109
- const g = crd.gvk.group;
112
+ const g = crd.group;
110
113
  if (!(g in groups)) {
111
114
  groups[g] = new Array();
112
115
  }
@@ -175,4 +178,4 @@ function safeParseCrds(manifest) {
175
178
  return crds;
176
179
  }
177
180
  exports.safeParseCrds = safeParseCrds;
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ltcG9ydC9jcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLDhDQUFzQjtBQUV0Qix5Q0FBMEM7QUFFMUMsd0NBQXlDO0FBQ3pDLGtDQUFrRDtBQUNsRCxpQ0FBcUQ7QUFDckQsdUNBQTBEO0FBRzFELE1BQU0sUUFBUSxHQUFHLDBCQUEwQixDQUFDO0FBMEI1QyxzREFBc0Q7QUFDdEQsTUFBTSxzQkFBc0IsR0FBRztJQUM3Qiw4QkFBOEI7SUFDOUIseUJBQXlCO0NBQzFCLENBQUM7QUFFRixNQUFhLHdCQUF3QjtJQU9uQyxZQUFZLFFBQWtDOztRQUM1QyxNQUFNLFVBQVUsR0FBRyxNQUFBLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxVQUFVLG1DQUFJLFdBQVcsQ0FBQztRQUN2RCxNQUFNLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLG9CQUFvQixVQUFVLDhCQUE4QixzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4SyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsbUJBQW1CLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFFbkUsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1NBQzlEO1FBRUQsTUFBTSxPQUFPLEdBQUcsTUFBQSxJQUFJLENBQUMsT0FBTyxtQ0FBSSxDQUFDLE1BQUEsSUFBSSxDQUFDLFFBQVEsbUNBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztTQUNwRDtRQUVELE1BQU0sTUFBTSxHQUFHLE9BQU8sT0FBTyxLQUFLLFFBQVE7WUFDeEMsQ0FBQyxDQUFDLE1BQUEsSUFBSSxDQUFDLFVBQVUsMENBQUUsZUFBZTtZQUNsQyxDQUFDLENBQUMsTUFBQSxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxNQUFNLDBDQUFFLGVBQWUsbUNBQUksTUFBQSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxlQUFlLENBQUM7UUFFekUsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDcEUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQVcsR0FBRztRQUNaLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO0lBQzFELENBQUM7SUFFRCxJQUFXLEdBQUc7UUFDWixPQUFPO1lBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBZSxFQUFFLE9BQXdCO1FBQ3ZFLE1BQU0sS0FBSyxHQUFHLElBQUkseUJBQWEsRUFBRSxDQUFDO1FBRWxDLElBQUEsMkJBQWlCLEVBQUMsS0FBSyxFQUFFO1lBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLE1BQU0sRUFBRSxJQUFJO1lBQ1osTUFBTSxFQUFFLE9BQU8sQ0FBQyxlQUFlO1NBQ2hDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDNUIsQ0FBQztDQUNGO0FBNURELDREQTREQztBQUVELE1BQWEsOEJBQStCLFNBQVEsaUJBQVU7SUFTNUQsWUFBb0IsUUFBb0M7UUFDdEQsS0FBSyxFQUFFLENBQUM7UUFITyxXQUFNLEdBQStDLEVBQUcsQ0FBQztRQUt4RSxNQUFNLElBQUksR0FBNkMsRUFBRyxDQUFDO1FBQzNELE1BQU0sTUFBTSxHQUErQyxFQUFHLENBQUM7UUFFL0QsS0FBSyxNQUFNLElBQUksSUFBSSxRQUFRLEVBQUU7WUFDM0IsTUFBTSxHQUFHLEdBQUcsSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvQyxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBRXBCLElBQUksR0FBRyxJQUFJLElBQUksRUFBRTtnQkFDZixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDO2FBQzFDO1lBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztTQUNqQjtRQUVELHlEQUF5RDtRQUN6RCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQTJCLEVBQUUsQ0FBMkIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFdEksS0FBSyxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUU7WUFDNUIsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFDeEIsSUFBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxFQUFHO2dCQUNwQixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLEVBQTRCLENBQUM7YUFDbkQ7WUFDRCxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3JCO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQXBDTSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFzQjtRQUNqRCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDO1FBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSxlQUFRLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsT0FBTyxJQUFJLDhCQUE4QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFrQ0QsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVTLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFlLEVBQUUsVUFBa0IsRUFBRSxPQUF3QjtRQUM5RixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBR3JDLElBQUEsb0JBQVUsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFdkIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLE1BQU0sR0FBRyxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztTQUM3QztJQUNILENBQUM7Q0FDRjtBQXRERCx3RUFzREM7QUFFRCxTQUFTLE1BQU0sQ0FBQyxTQUFrQixFQUFFLE9BQWU7SUFDakQsSUFBSSxDQUFDLFNBQVMsRUFBRTtRQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLE9BQU8sRUFBRSxDQUFDLENBQUM7S0FDMUU7QUFDSCxDQUFDO0FBR0QsU0FBZ0IsYUFBYSxDQUFDLFFBQWdCO0lBQzVDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUM1RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3RSxNQUFNLE9BQU8sR0FBRyxJQUFJLHFCQUFXLENBQUM7UUFDOUIsVUFBVSxFQUFFLENBQUMscUJBQVcsQ0FBQyxxQkFBcUIsRUFBRSxxQkFBVyxDQUFDLG9CQUFvQixDQUFDO0tBQ2xGLENBQUMsQ0FBQztJQUVILHdCQUF3QjtJQUN4QixNQUFNLE9BQU8sR0FBRyxJQUFBLG9CQUFhLEVBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRWpELDREQUE0RDtJQUM1RCwrREFBK0Q7SUFFL0QsTUFBTSxJQUFJLEdBQVUsRUFBRSxDQUFDO0lBRXZCLFNBQVMsV0FBVyxDQUFDLElBQVc7UUFDOUIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDckMsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNoQjtZQUNELElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7Z0JBQ3ZCLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDeEI7U0FDRjtJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFckIsTUFBTSxHQUFHLEdBQUcsSUFBSSxhQUFHLEVBQUUsQ0FBQztJQUN0QixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNsQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtRQUN0QixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDbkIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNqQztRQUFBLENBQUM7S0FDSDtJQUNELElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUN4RztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQXpDRCxzQ0F5Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IEFqdiBmcm9tICdhanYnO1xuaW1wb3J0IHsgQ29kZU1ha2VyIH0gZnJvbSAnY29kZW1ha2VyJztcbmltcG9ydCB7IFR5cGVHZW5lcmF0b3IgfSBmcm9tICdqc29uMmpzaWknO1xuaW1wb3J0IHsgSW1wb3J0U3BlYyB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBTYWZlUmV2aXZlciB9IGZyb20gJy4uL3Jldml2ZXInO1xuaW1wb3J0IHsgZG93bmxvYWQsIHNhZmVQYXJzZVlhbWwgfSBmcm9tICcuLi91dGlsJztcbmltcG9ydCB7IEdlbmVyYXRlT3B0aW9ucywgSW1wb3J0QmFzZSB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBlbWl0SGVhZGVyLCBnZW5lcmF0ZUNvbnN0cnVjdCB9IGZyb20gJy4vY29kZWdlbic7XG5pbXBvcnQgeyBHcm91cFZlcnNpb25LaW5kIH0gZnJvbSAnLi9rOHMnO1xuXG5jb25zdCBDUkRfS0lORCA9ICdDdXN0b21SZXNvdXJjZURlZmluaXRpb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1hbmlmZXN0T2JqZWN0RGVmaW5pdGlvbiB7XG4gIGFwaVZlcnNpb24/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG4gIGl0ZW1zPzogTWFuaWZlc3RPYmplY3REZWZpbml0aW9uW107IC8vIGlmIGBraW5kYCBpcyBcIkxpc3RcIlxuICBtZXRhZGF0YT86IHtcbiAgICBuYW1lPzogc3RyaW5nO1xuICB9O1xuICBzcGVjPzoge1xuICAgIGdyb3VwOiBzdHJpbmc7XG4gICAgbmFtZXM6IHtcbiAgICAgIGtpbmQ6IHN0cmluZztcbiAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICB9O1xuICAgIHZlcnNpb25zPzogQXJyYXk8e1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgc2NoZW1hPzogeyBvcGVuQVBJVjNTY2hlbWE/OiBhbnkgfTtcbiAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICB9PjtcbiAgICB2ZXJzaW9uPzogc3RyaW5nO1xuICAgIHZhbGlkYXRpb24/OiB7IG9wZW5BUElWM1NjaGVtYT86IGFueSB9O1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfTtcbn1cblxuLy8gYWxsIHRoZXNlIEFQSXMgYXJlIGNvbXBhdGlibGUgZnJvbSBvdXIgcGVyc3BlY3RpdmUuXG5jb25zdCBTVVBQT1JURURfQVBJX1ZFUlNJT05TID0gW1xuICAnYXBpZXh0ZW5zaW9ucy5rOHMuaW8vdjFiZXRhMScsXG4gICdhcGlleHRlbnNpb25zLms4cy5pby92MScsXG5dO1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uIHtcbiAgcHJpdmF0ZSByZWFkb25seSBzY2hlbWE/OiBhbnk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZ3JvdXA6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkga2luZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGZxbjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG1hbmlmZXN0OiBNYW5pZmVzdE9iamVjdERlZmluaXRpb24pIHtcbiAgICBjb25zdCBhcGlWZXJzaW9uID0gbWFuaWZlc3Q/LmFwaVZlcnNpb24gPz8gJ3VuZGVmaW5lZCc7XG4gICAgYXNzZXJ0KFNVUFBPUlRFRF9BUElfVkVSU0lPTlMuaW5jbHVkZXMoYXBpVmVyc2lvbiksIGBcImFwaVZlcnNpb25cIiBpcyBcIiR7YXBpVmVyc2lvbn1cIiBidXQgaXQgc2hvdWxkIGJlIG9uZSBvZjogJHtTVVBQT1JURURfQVBJX1ZFUlNJT05TLm1hcCh4ID0+IGBcIiR7eH1cImApLmpvaW4oJywgJyl9YCk7XG4gICAgYXNzZXJ0KG1hbmlmZXN0LmtpbmQgPT09IENSRF9LSU5ELCBgXCJraW5kXCIgbXVzdCBiZSBcIiR7Q1JEX0tJTkR9XCJgKTtcblxuICAgIGNvbnN0IHNwZWMgPSBtYW5pZmVzdC5zcGVjO1xuICAgIGlmICghc3BlYykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtYW5pZmVzdCBkb2VzIG5vdCBoYXZlIGEgXCJzcGVjXCIgYXR0cmlidXRlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdmVyc2lvbiA9IHNwZWMudmVyc2lvbiA/PyAoc3BlYy52ZXJzaW9ucyA/PyBbXSlbMF07XG4gICAgaWYgKCF2ZXJzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuYWJsZSB0byBkZXRlcm1pbmUgQ1JEIHZlcnNpb24nKTtcbiAgICB9XG5cbiAgICBjb25zdCBzY2hlbWEgPSB0eXBlb2YgdmVyc2lvbiA9PT0gJ3N0cmluZydcbiAgICAgID8gc3BlYy52YWxpZGF0aW9uPy5vcGVuQVBJVjNTY2hlbWFcbiAgICAgIDogdmVyc2lvbj8uc2NoZW1hPy5vcGVuQVBJVjNTY2hlbWEgPz8gc3BlYy52YWxpZGF0aW9uPy5vcGVuQVBJVjNTY2hlbWE7XG5cbiAgICB0aGlzLnNjaGVtYSA9IHNjaGVtYTtcbiAgICB0aGlzLmdyb3VwID0gc3BlYy5ncm91cDtcbiAgICB0aGlzLnZlcnNpb24gPSB0eXBlb2YgdmVyc2lvbiA9PT0gJ3N0cmluZycgPyB2ZXJzaW9uIDogdmVyc2lvbi5uYW1lO1xuICAgIHRoaXMua2luZCA9IHNwZWMubmFtZXMua2luZDtcbiAgICB0aGlzLmZxbiA9IHRoaXMua2luZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQga2V5KCkge1xuICAgIHJldHVybiBgJHt0aGlzLmdyb3VwfS8ke3RoaXMua2luZC50b0xvY2FsZUxvd2VyQ2FzZSgpfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGd2aygpOiBHcm91cFZlcnNpb25LaW5kIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3JvdXA6IHRoaXMuZ3JvdXAsXG4gICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb24sXG4gICAgICBraW5kOiB0aGlzLmtpbmQsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZW5lcmF0ZVR5cGVTY3JpcHQoY29kZTogQ29kZU1ha2VyLCBvcHRpb25zOiBHZW5lcmF0ZU9wdGlvbnMpIHtcbiAgICBjb25zdCB0eXBlcyA9IG5ldyBUeXBlR2VuZXJhdG9yKCk7XG5cbiAgICBnZW5lcmF0ZUNvbnN0cnVjdCh0eXBlcywge1xuICAgICAgZ3JvdXA6IHRoaXMuZ3JvdXAsXG4gICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb24sXG4gICAgICBraW5kOiB0aGlzLmtpbmQsXG4gICAgICBmcW46IHRoaXMuZnFuLFxuICAgICAgc2NoZW1hOiB0aGlzLnNjaGVtYSxcbiAgICAgIGN1c3RvbTogdHJ1ZSxcbiAgICAgIHByZWZpeDogb3B0aW9ucy5jbGFzc05hbWVQcmVmaXgsXG4gICAgfSk7XG5cbiAgICBjb2RlLmxpbmUodHlwZXMucmVuZGVyKCkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbXBvcnRDdXN0b21SZXNvdXJjZURlZmluaXRpb24gZXh0ZW5kcyBJbXBvcnRCYXNlIHtcbiAgcHVibGljIHN0YXRpYyBhc3luYyBmcm9tU3BlYyhpbXBvcnRTcGVjOiBJbXBvcnRTcGVjKTogUHJvbWlzZTxJbXBvcnRDdXN0b21SZXNvdXJjZURlZmluaXRpb24+IHtcbiAgICBjb25zdCB7IHNvdXJjZSB9ID0gaW1wb3J0U3BlYztcbiAgICBjb25zdCBtYW5pZmVzdCA9IGF3YWl0IGRvd25sb2FkKHNvdXJjZSk7XG4gICAgcmV0dXJuIG5ldyBJbXBvcnRDdXN0b21SZXNvdXJjZURlZmluaXRpb24oc2FmZVBhcnNlQ3JkcyhtYW5pZmVzdCkpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBncm91cHM6IFJlY29yZDxzdHJpbmcsIEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbltdPiA9IHsgfTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKG1hbmlmZXN0OiBNYW5pZmVzdE9iamVjdERlZmluaXRpb25bXSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBjb25zdCBjcmRzOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21SZXNvdXJjZURlZmluaXRpb24+ID0geyB9O1xuICAgIGNvbnN0IGdyb3VwczogUmVjb3JkPHN0cmluZywgQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uW10+ID0geyB9O1xuXG4gICAgZm9yIChjb25zdCBzcGVjIG9mIG1hbmlmZXN0KSB7XG4gICAgICBjb25zdCBjcmQgPSBuZXcgQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uKHNwZWMpO1xuICAgICAgY29uc3Qga2V5ID0gY3JkLmtleTtcblxuICAgICAgaWYgKGtleSBpbiBjcmRzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtrZXl9IGFscmVhZHkgZXhpc3RzYCk7XG4gICAgICB9XG4gICAgICBjcmRzW2tleV0gPSBjcmQ7XG4gICAgfVxuXG4gICAgLy9zb3J0IHRvIGVuc3VyZSBjb25zaXN0ZW50IG9yZGVyaW5nIGZvciBzbmFwc2hvdCBjb21wYXJlXG4gICAgY29uc3Qgc29ydGVkQ3JkcyA9IE9iamVjdC52YWx1ZXMoY3Jkcykuc29ydCgoYTogQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uLCBiOiBDdXN0b21SZXNvdXJjZURlZmluaXRpb24pID0+IGEua2V5LmxvY2FsZUNvbXBhcmUoYi5rZXkpKTtcblxuICAgIGZvciAoY29uc3QgY3JkIG9mIHNvcnRlZENyZHMpIHtcbiAgICAgIGNvbnN0IGcgPSBjcmQuZ3ZrLmdyb3VwO1xuICAgICAgaWYgKCAhKGcgaW4gZ3JvdXBzKSApIHtcbiAgICAgICAgZ3JvdXBzW2ddID0gbmV3IEFycmF5PEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbj4oKTtcbiAgICAgIH1cbiAgICAgIGdyb3Vwc1tnXS5wdXNoKGNyZCk7XG4gICAgfVxuXG4gICAgdGhpcy5ncm91cHMgPSBncm91cHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1vZHVsZU5hbWVzKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmdyb3Vwcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2VuZXJhdGVUeXBlU2NyaXB0KGNvZGU6IENvZGVNYWtlciwgbW9kdWxlTmFtZTogc3RyaW5nLCBvcHRpb25zOiBHZW5lcmF0ZU9wdGlvbnMpIHtcbiAgICBjb25zdCBjcmRzID0gdGhpcy5ncm91cHNbbW9kdWxlTmFtZV07XG5cblxuICAgIGVtaXRIZWFkZXIoY29kZSwgdHJ1ZSk7XG5cbiAgICBmb3IgKGNvbnN0IGNyZCBvZiBjcmRzKSB7XG4gICAgICBjb25zb2xlLmxvZyhgICAke2NyZC5rZXl9YCk7XG4gICAgICBhd2FpdCBjcmQuZ2VuZXJhdGVUeXBlU2NyaXB0KGNvZGUsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uOiBib29sZWFuLCBtZXNzYWdlOiBzdHJpbmcpIHtcbiAgaWYgKCFjb25kaXRpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uIG1hbmlmZXN0OiAke21lc3NhZ2V9YCk7XG4gIH1cbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gc2FmZVBhcnNlQ3JkcyhtYW5pZmVzdDogc3RyaW5nKTogTWFuaWZlc3RPYmplY3REZWZpbml0aW9uW10ge1xuICBjb25zdCBzY2hlbWFQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJ3NjaGVtYXMnLCAnY3JkLnNjaGVtYS5qc29uJyk7XG4gIGNvbnN0IHNjaGVtYSA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHNjaGVtYVBhdGgsIHsgZW5jb2Rpbmc6ICd1dGY4JyB9KSk7XG4gIGNvbnN0IHJldml2ZXIgPSBuZXcgU2FmZVJldml2ZXIoe1xuICAgIHNhbml0aXplcnM6IFtTYWZlUmV2aXZlci5ERVNDUklQVElPTl9TQU5JVElaRVIsIFNhZmVSZXZpdmVyLkxFR0FMX0NIQVJfU0FOSVRJWkVSXSxcbiAgfSk7XG5cbiAgLy8gZmlyc3QgcGFyc2UgYW5kIHN0cmlwXG4gIGNvbnN0IG9iamVjdHMgPSBzYWZlUGFyc2VZYW1sKG1hbmlmZXN0LCByZXZpdmVyKTtcblxuICAvLyBzaW5jZSB0aGUgbWFuaWZlc3QgY2FuIGNvbnRhaW4gbm9uIGNyZHMgYXMgd2VsbCwgd2UgZmlyc3RcbiAgLy8gY29sbGVjdCBhbGwgY3JkcyBhbmQgb25seSBhcHBseSBhIHNjaGVtYSB2YWxpZGF0aW9uIG9uIHRoZW0uXG5cbiAgY29uc3QgY3JkczogYW55W10gPSBbXTtcblxuICBmdW5jdGlvbiBjb2xsZWN0Q1JEcyhvYmpzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3Qgb2JqIG9mIG9ianMuZmlsdGVyKG8gPT4gbykpIHtcbiAgICAgIGlmIChvYmoua2luZCA9PT0gQ1JEX0tJTkQpIHtcbiAgICAgICAgY3Jkcy5wdXNoKG9iaik7XG4gICAgICB9XG4gICAgICBpZiAob2JqLmtpbmQgPT09ICdMaXN0Jykge1xuICAgICAgICBjb2xsZWN0Q1JEcyhvYmouaXRlbXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbGxlY3RDUkRzKG9iamVjdHMpO1xuXG4gIGNvbnN0IGFqdiA9IG5ldyBBanYoKTtcbiAgY29uc3QgdmFsaWRhdGUgPSBhanYuY29tcGlsZShzY2hlbWEpO1xuICBjb25zdCBlcnJvcnMgPSBbXTtcbiAgZm9yIChjb25zdCBjcmQgb2YgY3Jkcykge1xuICAgIHZhbGlkYXRlKGNyZCk7XG4gICAgaWYgKHZhbGlkYXRlLmVycm9ycykge1xuICAgICAgZXJyb3JzLnB1c2goLi4udmFsaWRhdGUuZXJyb3JzKTtcbiAgICB9O1xuICB9XG4gIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU2NoZW1hIHZhbGlkYXRpb24gZXJyb3JzIGRldGVjdGVkXFxuICR7ZXJyb3JzLm1hcChlID0+IGAqICR7ZS5tZXNzYWdlfWApLmpvaW4oJ1xcbicpfWApO1xuICB9XG4gIHJldHVybiBjcmRzO1xufVxuIl19
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ltcG9ydC9jcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLDhDQUFzQjtBQUN0Qix5Q0FBb0Q7QUFDcEQseUNBQTBDO0FBRTFDLHdDQUF5QztBQUN6QyxrQ0FBa0Q7QUFDbEQsaUNBQXFEO0FBQ3JELHVDQUEwRDtBQUUxRCxNQUFNLFFBQVEsR0FBRywwQkFBMEIsQ0FBQztBQTBCNUMsc0RBQXNEO0FBQ3RELE1BQU0sc0JBQXNCLEdBQUc7SUFDN0IsOEJBQThCO0lBQzlCLHlCQUF5QjtDQUMxQixDQUFDO0FBRUYsTUFBYSx3QkFBd0I7SUFPbkMsWUFBWSxRQUFrQzs7UUFDNUMsTUFBTSxVQUFVLEdBQUcsTUFBQSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsVUFBVSxtQ0FBSSxXQUFXLENBQUM7UUFDdkQsTUFBTSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxvQkFBb0IsVUFBVSw4QkFBOEIsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEssTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLG1CQUFtQixRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBRW5FLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztTQUM5RDtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxJ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QU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQXpDRCxzQ0F5Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IEFqdiBmcm9tICdhanYnO1xuaW1wb3J0IHsgQ29kZU1ha2VyLCB0b1Bhc2NhbENhc2UgfSBmcm9tICdjb2RlbWFrZXInO1xuaW1wb3J0IHsgVHlwZUdlbmVyYXRvciB9IGZyb20gJ2pzb24yanNpaSc7XG5pbXBvcnQgeyBJbXBvcnRTcGVjIH0gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7IFNhZmVSZXZpdmVyIH0gZnJvbSAnLi4vcmV2aXZlcic7XG5pbXBvcnQgeyBkb3dubG9hZCwgc2FmZVBhcnNlWWFtbCB9IGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0IHsgR2VuZXJhdGVPcHRpb25zLCBJbXBvcnRCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IGVtaXRIZWFkZXIsIGdlbmVyYXRlQ29uc3RydWN0IH0gZnJvbSAnLi9jb2RlZ2VuJztcblxuY29uc3QgQ1JEX0tJTkQgPSAnQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBNYW5pZmVzdE9iamVjdERlZmluaXRpb24ge1xuICBhcGlWZXJzaW9uPzogc3RyaW5nO1xuICBraW5kPzogc3RyaW5nO1xuICBpdGVtcz86IE1hbmlmZXN0T2JqZWN0RGVmaW5pdGlvbltdOyAvLyBpZiBga2luZGAgaXMgXCJMaXN0XCJcbiAgbWV0YWRhdGE/OiB7XG4gICAgbmFtZT86IHN0cmluZztcbiAgfTtcbiAgc3BlYz86IHtcbiAgICBncm91cDogc3RyaW5nO1xuICAgIG5hbWVzOiB7XG4gICAgICBraW5kOiBzdHJpbmc7XG4gICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgfTtcbiAgICB2ZXJzaW9ucz86IEFycmF5PHtcbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIHNjaGVtYT86IHsgb3BlbkFQSVYzU2NoZW1hPzogYW55IH07XG4gICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgfT47XG4gICAgdmVyc2lvbj86IHN0cmluZztcbiAgICB2YWxpZGF0aW9uPzogeyBvcGVuQVBJVjNTY2hlbWE/OiBhbnkgfTtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH07XG59XG5cbi8vIGFsbCB0aGVzZSBBUElzIGFyZSBjb21wYXRpYmxlIGZyb20gb3VyIHBlcnNwZWN0aXZlLlxuY29uc3QgU1VQUE9SVEVEX0FQSV9WRVJTSU9OUyA9IFtcbiAgJ2FwaWV4dGVuc2lvbnMuazhzLmlvL3YxYmV0YTEnLFxuICAnYXBpZXh0ZW5zaW9ucy5rOHMuaW8vdjEnLFxuXTtcblxuZXhwb3J0IGNsYXNzIEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbiB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBraW5kOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgdmVyc2lvbnM6IHsgbmFtZTogc3RyaW5nOyBzY2hlbWE/OiBhbnkgfVtdO1xuXG4gIHB1YmxpYyByZWFkb25seSBncm91cDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG1hbmlmZXN0OiBNYW5pZmVzdE9iamVjdERlZmluaXRpb24pIHtcbiAgICBjb25zdCBhcGlWZXJzaW9uID0gbWFuaWZlc3Q/LmFwaVZlcnNpb24gPz8gJ3VuZGVmaW5lZCc7XG4gICAgYXNzZXJ0KFNVUFBPUlRFRF9BUElfVkVSU0lPTlMuaW5jbHVkZXMoYXBpVmVyc2lvbiksIGBcImFwaVZlcnNpb25cIiBpcyBcIiR7YXBpVmVyc2lvbn1cIiBidXQgaXQgc2hvdWxkIGJlIG9uZSBvZjogJHtTVVBQT1JURURfQVBJX1ZFUlNJT05TLm1hcCh4ID0+IGBcIiR7eH1cImApLmpvaW4oJywgJyl9YCk7XG4gICAgYXNzZXJ0KG1hbmlmZXN0LmtpbmQgPT09IENSRF9LSU5ELCBgXCJraW5kXCIgbXVzdCBiZSBcIiR7Q1JEX0tJTkR9XCJgKTtcblxuICAgIGNvbnN0IHNwZWMgPSBtYW5pZmVzdC5zcGVjO1xuICAgIGlmICghc3BlYykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtYW5pZmVzdCBkb2VzIG5vdCBoYXZlIGEgXCJzcGVjXCIgYXR0cmlidXRlJyk7XG4gICAgfVxuXG4gICAgaWYgKHNwZWMudmVyc2lvbikge1xuICAgICAgdGhpcy52ZXJzaW9ucyA9IFt7IG5hbWU6IHNwZWMudmVyc2lvbiwgc2NoZW1hOiBzcGVjLnZhbGlkYXRpb24/Lm9wZW5BUElWM1NjaGVtYSB9XTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52ZXJzaW9ucyA9IChzcGVjLnZlcnNpb25zID8/IFtdKS5tYXAodiA9PiAoeyBuYW1lOiB2Lm5hbWUsIHNjaGVtYTogdi5zY2hlbWE/Lm9wZW5BUElWM1NjaGVtYSA/PyBzcGVjLnZhbGlkYXRpb24/Lm9wZW5BUElWM1NjaGVtYSB9KSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmVyc2lvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuYWJsZSB0byBkZXRlcm1pbmUgQ1JEIHZlcnNpb25zJyk7XG4gICAgfVxuXG4gICAgdGhpcy5ncm91cCA9IHNwZWMuZ3JvdXA7XG4gICAgdGhpcy5raW5kID0gc3BlYy5uYW1lcy5raW5kO1xuICB9XG5cbiAgcHVibGljIGdldCBrZXkoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuZ3JvdXB9LyR7dGhpcy5raW5kLnRvTG9jYWxlTG93ZXJDYXNlKCl9YDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZW5lcmF0ZVR5cGVTY3JpcHQoY29kZTogQ29kZU1ha2VyLCBvcHRpb25zOiBHZW5lcmF0ZU9wdGlvbnMpIHtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy52ZXJzaW9ucy5sZW5ndGg7IGkrKykge1xuXG4gICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy52ZXJzaW9uc1tpXTtcblxuICAgICAgaWYgKCF2ZXJzaW9uLnNjaGVtYSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNjaGVtYSBmb3IgdmVyc2lvbiAke3ZlcnNpb24ubmFtZX0gaXMgbWlzc2luZ2ApO1xuICAgICAgfVxuXG4gICAgICAvLyB0byBwcmVzZXZlIGJhY2t3YXJkcyBjb21wYXRpYmxpdHksIG9ubHkgYXBwZW5kIGEgc3VmZml4IGZvclxuICAgICAgLy8gdGhlIHNlY29uZCB2ZXJzaW9uIG9ud2FyZHMuXG4gICAgICBjb25zdCBzdWZmaXggPSBpID09PSAwID8gJycgOiB0b1Bhc2NhbENhc2UodmVyc2lvbi5uYW1lKTtcblxuICAgICAgY29uc3QgdHlwZXMgPSBuZXcgVHlwZUdlbmVyYXRvcih7fSk7XG5cbiAgICAgIGdlbmVyYXRlQ29uc3RydWN0KHR5cGVzLCB7XG4gICAgICAgIGdyb3VwOiB0aGlzLmdyb3VwLFxuICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uLm5hbWUsXG4gICAgICAgIGtpbmQ6IHRoaXMua2luZCxcbiAgICAgICAgZnFuOiBgJHt0aGlzLmtpbmR9JHtzdWZmaXh9YCxcbiAgICAgICAgc2NoZW1hOiB2ZXJzaW9uLnNjaGVtYSxcbiAgICAgICAgY3VzdG9tOiB0cnVlLFxuICAgICAgICBwcmVmaXg6IG9wdGlvbnMuY2xhc3NOYW1lUHJlZml4LFxuICAgICAgICBzdWZmaXgsXG4gICAgICB9KTtcblxuICAgICAgY29kZS5saW5lKHR5cGVzLnJlbmRlcigpKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEltcG9ydEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbiBleHRlbmRzIEltcG9ydEJhc2Uge1xuICBwdWJsaWMgc3RhdGljIGFzeW5jIGZyb21TcGVjKGltcG9ydFNwZWM6IEltcG9ydFNwZWMpOiBQcm9taXNlPEltcG9ydEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbj4ge1xuICAgIGNvbnN0IHsgc291cmNlIH0gPSBpbXBvcnRTcGVjO1xuICAgIGNvbnN0IG1hbmlmZXN0ID0gYXdhaXQgZG93bmxvYWQoc291cmNlKTtcbiAgICByZXR1cm4gbmV3IEltcG9ydEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbihzYWZlUGFyc2VDcmRzKG1hbmlmZXN0KSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGdyb3VwczogUmVjb3JkPHN0cmluZywgQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uW10+ID0geyB9O1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IobWFuaWZlc3Q6IE1hbmlmZXN0T2JqZWN0RGVmaW5pdGlvbltdKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGNvbnN0IGNyZHM6IFJlY29yZDxzdHJpbmcsIEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbj4gPSB7IH07XG4gICAgY29uc3QgZ3JvdXBzOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21SZXNvdXJjZURlZmluaXRpb25bXT4gPSB7IH07XG5cbiAgICBmb3IgKGNvbnN0IHNwZWMgb2YgbWFuaWZlc3QpIHtcbiAgICAgIGNvbnN0IGNyZCA9IG5ldyBDdXN0b21SZXNvdXJjZURlZmluaXRpb24oc3BlYyk7XG4gICAgICBjb25zdCBrZXkgPSBjcmQua2V5O1xuXG4gICAgICBpZiAoa2V5IGluIGNyZHMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2tleX0gYWxyZWFkeSBleGlzdHNgKTtcbiAgICAgIH1cbiAgICAgIGNyZHNba2V5XSA9IGNyZDtcbiAgICB9XG5cbiAgICAvL3NvcnQgdG8gZW5zdXJlIGNvbnNpc3RlbnQgb3JkZXJpbmcgZm9yIHNuYXBzaG90IGNvbXBhcmVcbiAgICBjb25zdCBzb3J0ZWRDcmRzID0gT2JqZWN0LnZhbHVlcyhjcmRzKS5zb3J0KChhOiBDdXN0b21SZXNvdXJjZURlZmluaXRpb24sIGI6IEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbikgPT4gYS5rZXkubG9jYWxlQ29tcGFyZShiLmtleSkpO1xuXG4gICAgZm9yIChjb25zdCBjcmQgb2Ygc29ydGVkQ3Jkcykge1xuICAgICAgY29uc3QgZyA9IGNyZC5ncm91cDtcbiAgICAgIGlmICggIShnIGluIGdyb3VwcykgKSB7XG4gICAgICAgIGdyb3Vwc1tnXSA9IG5ldyBBcnJheTxDdXN0b21SZXNvdXJjZURlZmluaXRpb24+KCk7XG4gICAgICB9XG4gICAgICBncm91cHNbZ10ucHVzaChjcmQpO1xuICAgIH1cblxuICAgIHRoaXMuZ3JvdXBzID0gZ3JvdXBzO1xuICB9XG5cbiAgcHVibGljIGdldCBtb2R1bGVOYW1lcygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5ncm91cHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdlbmVyYXRlVHlwZVNjcmlwdChjb2RlOiBDb2RlTWFrZXIsIG1vZHVsZU5hbWU6IHN0cmluZywgb3B0aW9uczogR2VuZXJhdGVPcHRpb25zKSB7XG4gICAgY29uc3QgY3JkcyA9IHRoaXMuZ3JvdXBzW21vZHVsZU5hbWVdO1xuXG5cbiAgICBlbWl0SGVhZGVyKGNvZGUsIHRydWUpO1xuXG4gICAgZm9yIChjb25zdCBjcmQgb2YgY3Jkcykge1xuICAgICAgY29uc29sZS5sb2coYCAgJHtjcmQua2V5fWApO1xuICAgICAgYXdhaXQgY3JkLmdlbmVyYXRlVHlwZVNjcmlwdChjb2RlLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbjogYm9vbGVhbiwgbWVzc2FnZTogc3RyaW5nKSB7XG4gIGlmICghY29uZGl0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbiBtYW5pZmVzdDogJHttZXNzYWdlfWApO1xuICB9XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIHNhZmVQYXJzZUNyZHMobWFuaWZlc3Q6IHN0cmluZyk6IE1hbmlmZXN0T2JqZWN0RGVmaW5pdGlvbltdIHtcbiAgY29uc3Qgc2NoZW1hUGF0aCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICdzY2hlbWFzJywgJ2NyZC5zY2hlbWEuanNvbicpO1xuICBjb25zdCBzY2hlbWEgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhzY2hlbWFQYXRoLCB7IGVuY29kaW5nOiAndXRmOCcgfSkpO1xuICBjb25zdCByZXZpdmVyID0gbmV3IFNhZmVSZXZpdmVyKHtcbiAgICBzYW5pdGl6ZXJzOiBbU2FmZVJldml2ZXIuREVTQ1JJUFRJT05fU0FOSVRJWkVSLCBTYWZlUmV2aXZlci5MRUdBTF9DSEFSX1NBTklUSVpFUl0sXG4gIH0pO1xuXG4gIC8vIGZpcnN0IHBhcnNlIGFuZCBzdHJpcFxuICBjb25zdCBvYmplY3RzID0gc2FmZVBhcnNlWWFtbChtYW5pZmVzdCwgcmV2aXZlcik7XG5cbiAgLy8gc2luY2UgdGhlIG1hbmlmZXN0IGNhbiBjb250YWluIG5vbiBjcmRzIGFzIHdlbGwsIHdlIGZpcnN0XG4gIC8vIGNvbGxlY3QgYWxsIGNyZHMgYW5kIG9ubHkgYXBwbHkgYSBzY2hlbWEgdmFsaWRhdGlvbiBvbiB0aGVtLlxuXG4gIGNvbnN0IGNyZHM6IGFueVtdID0gW107XG5cbiAgZnVuY3Rpb24gY29sbGVjdENSRHMob2JqczogYW55W10pIHtcbiAgICBmb3IgKGNvbnN0IG9iaiBvZiBvYmpzLmZpbHRlcihvID0+IG8pKSB7XG4gICAgICBpZiAob2JqLmtpbmQgPT09IENSRF9LSU5EKSB7XG4gICAgICAgIGNyZHMucHVzaChvYmopO1xuICAgICAgfVxuICAgICAgaWYgKG9iai5raW5kID09PSAnTGlzdCcpIHtcbiAgICAgICAgY29sbGVjdENSRHMob2JqLml0ZW1zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb2xsZWN0Q1JEcyhvYmplY3RzKTtcblxuICBjb25zdCBhanYgPSBuZXcgQWp2KCk7XG4gIGNvbnN0IHZhbGlkYXRlID0gYWp2LmNvbXBpbGUoc2NoZW1hKTtcbiAgY29uc3QgZXJyb3JzID0gW107XG4gIGZvciAoY29uc3QgY3JkIG9mIGNyZHMpIHtcbiAgICB2YWxpZGF0ZShjcmQpO1xuICAgIGlmICh2YWxpZGF0ZS5lcnJvcnMpIHtcbiAgICAgIGVycm9ycy5wdXNoKC4uLnZhbGlkYXRlLmVycm9ycyk7XG4gICAgfTtcbiAgfVxuICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNjaGVtYSB2YWxpZGF0aW9uIGVycm9ycyBkZXRlY3RlZFxcbiAke2Vycm9ycy5tYXAoZSA9PiBgKiAke2UubWVzc2FnZX1gKS5qb2luKCdcXG4nKX1gKTtcbiAgfVxuICByZXR1cm4gY3Jkcztcbn1cbiJdfQ==
package/package.json CHANGED
@@ -41,7 +41,7 @@
41
41
  "organization": false
42
42
  },
43
43
  "devDependencies": {
44
- "@cdk8s/projen-common": "^0.0.35",
44
+ "@cdk8s/projen-common": "^0.0.37",
45
45
  "@types/fs-extra": "^8",
46
46
  "@types/glob": "^7.2.0",
47
47
  "@types/jest": "^26.0.24",
@@ -57,7 +57,7 @@
57
57
  "jest-junit": "^13",
58
58
  "json-schema": "^0.4.0",
59
59
  "npm-check-updates": "^15",
60
- "projen": "^0.58.36",
60
+ "projen": "^0.59.4",
61
61
  "standard-version": "^9",
62
62
  "ts-jest": "^27",
63
63
  "ts-node": "^10.9.1",
@@ -67,15 +67,15 @@
67
67
  "dependencies": {
68
68
  "@types/node": "^12",
69
69
  "ajv": "^8.11.0",
70
- "cdk8s": "^2.3.59",
71
- "cdk8s-plus-22": "^2.0.0-rc.55",
70
+ "cdk8s": "^2.3.61",
71
+ "cdk8s-plus-22": "^2.0.0-rc.57",
72
72
  "codemaker": "^1.62.0",
73
73
  "colors": "1.4.0",
74
- "constructs": "^10.1.50",
74
+ "constructs": "^10.1.52",
75
75
  "fs-extra": "^8",
76
76
  "jsii-pacmak": "^1.62.0",
77
- "jsii-srcmak": "^0.1.621",
78
- "json2jsii": "^0.3.70",
77
+ "jsii-srcmak": "^0.1.623",
78
+ "json2jsii": "^0.3.72",
79
79
  "sscaff": "^1.2.274",
80
80
  "yaml": "2.0.0-11",
81
81
  "yargs": "^15"
@@ -94,7 +94,7 @@
94
94
  },
95
95
  "main": "lib/index.js",
96
96
  "license": "Apache-2.0",
97
- "version": "2.0.55",
97
+ "version": "2.0.58",
98
98
  "jest": {
99
99
  "testMatch": [
100
100
  "<rootDir>/src/**/__tests__/**/*.ts?(x)",