construct-hub 0.4.521 → 0.4.522

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.
@@ -42,8 +42,17 @@ const client_lambda_shared_1 = require("../../backend/deny-list/client.lambda-sh
42
42
  const aws_lambda_shared_1 = require("../../backend/shared/aws.lambda-shared");
43
43
  const env_lambda_shared_1 = require("../../backend/shared/env.lambda-shared");
44
44
  const integrity_lambda_shared_1 = require("../../backend/shared/integrity.lambda-shared");
45
+ const time_lambda_shared_1 = require("../../backend/shared/time.lambda-shared");
45
46
  class HttpNotFoundError extends Error {
46
47
  }
48
+ /**
49
+ * Retry configuration for tarball downloads that return HTTP 404.
50
+ */
51
+ const NOT_FOUND_RETRY = {
52
+ baseDelayMs: 1_000,
53
+ maxDelayMs: 8_000,
54
+ deadlineMs: 60_000,
55
+ };
47
56
  /**
48
57
  * This function is invoked by the `npm-js-follower.lambda` with a `PackageVersion` object, or by
49
58
  * an SQS trigger feeding from this function's Dead-Letter Queue (for re-trying purposes).
@@ -68,19 +77,20 @@ async function handler(event, context) {
68
77
  console.log(`Package was deny-listed: ${denyRule.reason}`);
69
78
  return;
70
79
  }
71
- let tarball = Buffer.from('');
80
+ let tarball;
72
81
  try {
73
- // Download the tarball
74
- console.log(`Downloading tarball from URL: ${event.tarballUrl}`);
75
- tarball = await httpGet(event.tarballUrl);
82
+ tarball = await downloadTarball(event);
76
83
  }
77
84
  catch (e) {
78
85
  if (e instanceof HttpNotFoundError) {
79
- // We received a message to download a file that should exist but doesn't.
80
- // If we throw an error, the message will be sent to the DLQ, to be processed
81
- // again in a re-drive. But given that this file will probably never be
82
- // available, the re-drives will also fail, and we'll never be able to get rid
83
- // of the message in the DLQ. Instead, we ignore this version by returning silently.
86
+ // The tarball is still not available, even after retrying for a while
87
+ // (see `downloadTarball`). It is probably permanently missing (e.g: the
88
+ // version was unpublished). If we throw an error, the message will be
89
+ // sent to the DLQ, to be processed again in a re-drive. But given that
90
+ // this file will probably never be available, the re-drives will also
91
+ // fail, and we'll never be able to get rid of the message in the DLQ.
92
+ // Instead, we ignore this version by returning silently.
93
+ console.log(`Tarball not found for ${event.name}@${event.version} (modified ${event.modified}), ignoring this version: ${event.tarballUrl}`);
84
94
  return;
85
95
  }
86
96
  else {
@@ -141,6 +151,33 @@ async function handler(event, context) {
141
151
  QueueUrl: queueUrl,
142
152
  }));
143
153
  }
154
+ /**
155
+ * Downloads the tarball for a package version, retrying HTTP 404 responses
156
+ * for a while: npm metadata may propagate faster than tarballs, so a freshly
157
+ * published version can transiently 404 even though it will be available
158
+ * shortly.
159
+ */
160
+ async function downloadTarball(event) {
161
+ const startTime = (0, time_lambda_shared_1.now)();
162
+ let attempt = 0;
163
+ while (true) {
164
+ try {
165
+ console.log(`Downloading tarball from URL: ${event.tarballUrl}`);
166
+ return await httpGet(event.tarballUrl);
167
+ }
168
+ catch (e) {
169
+ if (!(e instanceof HttpNotFoundError) ||
170
+ (0, time_lambda_shared_1.now)() - startTime >= NOT_FOUND_RETRY.deadlineMs) {
171
+ throw e;
172
+ }
173
+ const delay = Math.max(NOT_FOUND_RETRY.baseDelayMs, Math.floor(Math.random() *
174
+ Math.min(NOT_FOUND_RETRY.baseDelayMs * Math.pow(2, attempt), NOT_FOUND_RETRY.maxDelayMs)));
175
+ console.log(`Tarball not found (HTTP 404), retrying in ${delay} ms: ${event.tarballUrl}`);
176
+ await (0, time_lambda_shared_1.sleep)(delay);
177
+ attempt++;
178
+ }
179
+ }
180
+ }
144
181
  /**
145
182
  * Makes an HTTP GET request, and returns the resulting payload.
146
183
  *
@@ -165,4 +202,4 @@ function httpGet(url) {
165
202
  });
166
203
  });
167
204
  }
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZ2UtYW5kLW5vdGlmeS5sYW1iZGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFja2FnZS1zb3VyY2VzL25wbWpzL3N0YWdlLWFuZC1ub3RpZnkubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0JBLDBCQThHQztBQXBJRCw2Q0FBK0I7QUFDL0IsNkJBQTBCO0FBQzFCLGtEQUFzRDtBQUN0RCxvREFBeUQ7QUFHekQsdUZBQThFO0FBQzlFLDhFQUErRTtBQUMvRSw4RUFBb0U7QUFDcEUsMEZBQXlFO0FBRXpFLE1BQU0saUJBQWtCLFNBQVEsS0FBSztDQUFHO0FBRXhDOzs7Ozs7OztHQVFHO0FBQ0ksS0FBSyxVQUFVLE9BQU8sQ0FDM0IsS0FBZ0MsRUFDaEMsT0FBZ0I7SUFFaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFeEQsSUFBSSxTQUFTLElBQUksS0FBSyxFQUFFLENBQUM7UUFDdkIsK0RBQStEO1FBQy9ELEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFtQixDQUFDO1FBQzVELE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELE1BQU0sYUFBYSxHQUFHLElBQUEsOEJBQVUsRUFBQyxhQUFhLENBQUMsQ0FBQztJQUNoRCxNQUFNLFFBQVEsR0FBRyxJQUFBLDhCQUFVLEVBQUMsV0FBVyxDQUFDLENBQUM7SUFFekMsTUFBTSxRQUFRLEdBQUcsTUFBTSxxQ0FBYyxDQUFDLFNBQVMsRUFB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QUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQixRQUFRLENBQUMsRUFBRSxDQUNULE1BQU0sRUFDTixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUM5RCxDQUFDO1lBQ0YsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDdkMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBodHRwcyBmcm9tICdodHRwcyc7XG5pbXBvcnQgeyBVUkwgfSBmcm9tICd1cmwnO1xuaW1wb3J0IHsgUHV0T2JqZWN0Q29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zMyc7XG5pbXBvcnQgeyBTZW5kTWVzc2FnZUNvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc3FzJztcbmltcG9ydCB0eXBlIHsgQ29udGV4dCwgU1FTRXZlbnQgfSBmcm9tICdhd3MtbGFtYmRhJztcbmltcG9ydCB7IFMzS2V5UHJlZml4IH0gZnJvbSAnLi9jb25zdGFudHMubGFtYmRhLXNoYXJlZCc7XG5pbXBvcnQgeyBEZW55TGlzdENsaWVudCB9IGZyb20gJy4uLy4uL2JhY2tlbmQvZGVueS1saXN0L2NsaWVudC5sYW1iZGEtc2hhcmVkJztcbmltcG9ydCB7IFMzX0NMSUVOVCwgU1FTX0NMSUVOVCB9IGZyb20gJy4uLy4uL2JhY2tlbmQvc2hhcmVkL2F3cy5sYW1iZGEtc2hhcmVkJztcbmltcG9ydCB7IHJlcXVpcmVFbnYgfSBmcm9tICcuLi8uLi9iYWNrZW5kL3NoYXJlZC9lbnYubGFtYmRhLXNoYXJlZCc7XG5pbXBvcnQgeyBpbnRlZ3JpdHkgfSBmcm9tICcuLi8uLi9iYWNrZW5kL3NoYXJlZC9pbnRlZ3JpdHkubGFtYmRhLXNoYXJlZCc7XG5cbmNsYXNzIEh0dHBOb3RGb3VuZEVycm9yIGV4dGVuZHMgRXJyb3Ige31cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGludm9rZWQgYnkgdGhlIGBucG0tanMtZm9sbG93ZXIubGFtYmRhYCAgd2l0aCBhIGBQYWNrYWdlVmVyc2lvbmAgb2JqZWN0LCBvciBieVxuICogYW4gU1FTIHRyaWdnZXIgZmVlZGluZyBmcm9tIHRoaXMgZnVuY3Rpb24ncyBEZWFkLUxldHRlciBRdWV1ZSAoZm9yIHJlLXRyeWluZyBwdXJwb3NlcykuXG4gKlxuICogVGhlIHBheWxvYWQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgYSBkaXNjb3ZlcmVkIG5ldyBwYWNrYWdlIHZlcnNpb24uIFRoaXMgaGFuZGxlciB3aWxsXG4gKiBjaGVjayB0aGUgcGFja2FnZSBpcyBub3QgZGVueS1saXN0ZWQsIGRvd25sb2FkIHRoZSB0YXJiYWxsIGZyb20gdGhlIHBheWxvYWQncyBgdGFyYmFsbFVybGAsIHN0b3JlXG4gKiBpdCBpbiB0aGUgc3RhZ2luZyBidWNrZXQsIHRoZW4gc2VuZCBhIG1lc3NhZ2UgdG8gdGhlIENvbnN0cnVjdEh1YiBpbmdlc3Rpb24gU1FTIHF1ZXVlIGluIG9yZGVyIHRvXG4gKiB0cmlnZ2VyIGluZ2VzdGlvbiBvZiB0aGlzIHBhY2thZ2UuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKFxuICBldmVudDogUGFja2FnZVZlcnNpb24gfCBTUVNFdmVudCxcbiAgY29udGV4dDogQ29udGV4dFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnNvbGUubG9nKGBFdmVudDogJHtKU09OLnN0cmluZ2lmeShldmVudCwgbnVsbCwgMil9YCk7XG5cbiAgaWYgKCdSZWNvcmRzJyBpbiBldmVudCkge1xuICAgIC8vIEFUVEVOVElPTjogQXNzdW1lcyB0aGVyZSBpcyBvbmx5IGV4YWN0bHkgMSBldmVudCBpbiB0aGVyZS4uLlxuICAgIGV2ZW50ID0gSlNPTi5wYXJzZShldmVudC5SZWNvcmRzWzBdLmJvZHkpIGFzIFBhY2thZ2VWZXJzaW9uO1xuICAgIGNvbnNvbGUubG9nKGBFdmVudCAoZXh0cmFjdGVkKTogJHtKU09OLnN0cmluZ2lmeShldmVudCwgbnVsbCwgMil9YCk7XG4gIH1cblxuICBjb25zdCBzdGFnaW5nQnVja2V0ID0gcmVxdWlyZUVudignQlVDS0VUX05BTUUnKTtcbiAgY29uc3QgcXVldWVVcmwgPSByZXF1aXJlRW52KCdRVUVVRV9VUkwnKTtcblxuICBjb25zdCBkZW55TGlzdCA9IGF3YWl0IERlbnlMaXN0Q2xpZW50Lm5ld0NsaWVudCgpO1xuICBjb25zdCBkZW55UnVsZSA9IGRlbnlMaXN0Lmxvb2t1cChldmVudC5uYW1lLCBldmVudC52ZXJzaW9uKTtcbiAgaWYgKGRlbnlSdWxlICE9IG51bGwpIHtcbiAgICBjb25zb2xlLmxvZyhgUGFja2FnZSB3YXMgZGVueS1saXN0ZWQ6ICR7ZGVueVJ1bGUucmVhc29ufWApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCB0YXJiYWxsOiBCdWZmZXIgPSBCdWZmZXIuZnJvbSgnJyk7XG4gIHRyeSB7XG4gICAgLy8gRG93bmxvYWQgdGhlIHRhcmJhbGxcbiAgICBjb25zb2xlLmxvZyhgRG93bmxvYWRpbmcgdGFyYmFsbCBmcm9tIFVSTDogJHtldmVudC50YXJiYWxsVXJsfWApO1xuICAgIHRhcmJhbGwgPSBhd2FpdCBodHRwR2V0KGV2ZW50LnRhcmJhbGxVcmwpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGUgaW5zdGFuY2VvZiBIdHRwTm90Rm91bmRFcnJvcikge1xuICAgICAgLy8gV2UgcmVjZWl2ZWQgYSBtZXNzYWdlIHRvIGRvd25sb2FkIGEgZmlsZSB0aGF0IHNob3VsZCBleGlzdCBidXQgZG9lc24ndC5cbiAgICAgIC8vIElmIHdlIHRocm93IGFuIGVycm9yLCB0aGUgbWVzc2FnZSB3aWxsIGJlIHNlbnQgdG8gdGhlIERMUSwgdG8gYmUgcHJvY2Vzc2VkXG4gICAgICAvLyBhZ2FpbiBpbiBhIHJlLWRyaXZlLiBCdXQgZ2l2ZW4gdGhhdCB0aGlzIGZpbGUgd2lsbCBwcm9iYWJseSBuZXZlciBiZVxuICAgICAgLy8gYXZhaWxhYmxlLCB0aGUgcmUtZHJpdmVzIHdpbGwgYWxzbyBmYWlsLCBhbmQgd2UnbGwgbmV2ZXIgYmUgYWJsZSB0byBnZXQgcmlkXG4gICAgICAvLyBvZiB0aGUgbWVzc2FnZSBpbiB0aGUgRExRLiBJbnN0ZWFkLCB3ZSBpZ25vcmUgdGhpcyB2ZXJzaW9uIGJ5IHJldHVybmluZyBzaWxlbnRseS5cbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICAvLyBTdG9yZSB0aGUgdGFyYmFsbCBpbnRvIHRoZSBzdGFnaW5nIGJ1Y2tldFxuICAvLyAtIGluZm9zLmRpc3QudGFyYmFsbCA9PiBodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy88QHNjb3BlPi88bmFtZT4vLS88bmFtZT4tPHZlcnNpb24+LnRnelxuICAvLyAtIHN0YWdpbmdLZXkgICAgICAgICA9PiAgICAgICAgICAgICAgICAgICAgIHN0YWdlZC88QHNjb3BlPi88bmFtZT4vLS88bmFtZT4tPHZlcnNpb24+LnRnelxuICBjb25zdCBzdGFnaW5nS2V5ID0gYCR7UzNLZXlQcmVmaXguU1RBR0VEX0tFWV9QUkVGSVh9JHtcbiAgICBuZXcgVVJMKGV2ZW50LnRhcmJhbGxVcmwpLnBhdGhuYW1lXG4gIH1gLnJlcGxhY2UoL1xcL3syLH0vZywgJy8nKTtcbiAgY29uc29sZS5sb2coYFN0b3JpbmcgdGFyYmFsbCBpbiBzdGFnaW5nIGJ1Y2tldCB3aXRoIGtleSAke3N0YWdpbmdLZXl9YCk7XG4gIGF3YWl0IFMzX0NMSUVOVC5zZW5kKFxuICAgIG5ldyBQdXRPYmplY3RDb21tYW5kKHtcbiAgICAgIEJ1Y2tldDogc3RhZ2luZ0J1Y2tldCxcbiAgICAgIEtleTogc3RhZ2luZ0tleSxcbiAgICAgIEJvZHk6IHRhcmJhbGwsXG4gICAgICBDb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsXG4gICAgICBNZXRhZGF0YToge1xuICAgICAgICAnTGFtYmRhLUxvZy1Hcm91cCc6IGNvbnRleHQubG9nR3JvdXBOYW1lLFxuICAgICAgICAnTGFtYmRhLUxvZy1TdHJlYW0nOiBjb250ZXh0LmxvZ1N0cmVhbU5hbWUsXG4gICAgICAgICdMYW1iZGEtUnVuLUlkJzogY29udGV4dC5hd3NSZXF1ZXN0SWQsXG4gICAgICAgICdNb2RpZmllZC1BdCc6IGV2ZW50Lm1vZGlmaWVkLFxuICAgICAgICAnT3JpZ2luLUludGVncml0eSc6IGV2ZW50LmludGVncml0eSxcbiAgICAgICAgJ09yaWdpbi1VUkknOiBldmVudC50YXJiYWxsVXJsLFxuICAgICAgICAvLyBTZXEgbWlnaHQgbm90IGJlIHByZXNlbnQuLi4gc28gc2tpcCBpdCBpZiBhYnNlbnQuLi5cbiAgICAgICAgLi4uKGV2ZW50LnNlcSA/IHsgU2VxdWVuY2U6IGV2ZW50LnNlcSB9IDoge30pLFxuICAgICAgfSxcbiAgICB9KVxuICApO1xuXG4gIC8vIFByZXBhcmUgaW5nZXN0aW9uIHJlcXVlc3RcbiAgY29uc3QgbWVzc2FnZSA9IGludGVncml0eShcbiAgICB7XG4gICAgICB0YXJiYWxsVXJpOiBgczM6Ly8ke3N0YWdpbmdCdWNrZXR9LyR7c3RhZ2luZ0tleX1gLFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgZGlzdDogZXZlbnQudGFyYmFsbFVybCxcbiAgICAgICAgaW50ZWdyaXR5OiBldmVudC5pbnRlZ3JpdHksXG4gICAgICAgIG1vZGlmaWVkOiBldmVudC5tb2RpZmllZCxcbiAgICAgICAgLy8gU2VxIG1pZ2h0IG5vdCBiZSBwcmVzZW50Li4uIHNvIHNraXAgaXQgaWYgYWJzZW50Li4uXG4gICAgICAgIC4uLihldmVudC5zZXEgPyB7IHNlcTogZXZlbnQuc2VxIH0gOiB7fSksXG4gICAgICB9LFxuICAgICAgdGltZTogZXZlbnQubW9kaWZpZWQsXG4gICAgfSxcbiAgICB0YXJiYWxsXG4gICk7XG5cbiAgLy8gU2VuZCBtZXNzYWdlIHRvIFNRU1xuICBjb25zb2xlLmxvZyhcbiAgICBgU2VuZGluZyBtZXNzYWdlIHRvIENvbnN0cnVjdEh1YiBpbmdlc3Rpb24gcXVldWU6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICBtZXNzYWdlLFxuICAgICAgbnVsbCxcbiAgICAgIDJcbiAgICApfWBcbiAgKTtcbiAgYXdhaXQgU1FTX0NMSUVOVC5zZW5kKFxuICAgIG5ldyBTZW5kTWVzc2FnZUNvbW1hbmQoe1xuICAgICAgTWVzc2FnZUJvZHk6IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpLFxuICAgICAgTWVzc2FnZUF0dHJpYnV0ZXM6IHtcbiAgICAgICAgJ0xhbWJkYS1Mb2ctR3JvdXAnOiB7XG4gICAgICAgICAgRGF0YVR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgIFN0cmluZ1ZhbHVlOiBjb250ZXh0LmxvZ0dyb3VwTmFtZSxcbiAgICAgICAgfSxcbiAgICAgICAgJ0xhbWJkYS1Mb2ctU3RyZWFtJzoge1xuICAgICAgICAgIERhdGFUeXBlOiAnU3RyaW5nJyxcbiAgICAgICAgICBTdHJpbmdWYWx1ZTogY29udGV4dC5sb2dTdHJlYW1OYW1lLFxuICAgICAgICB9LFxuICAgICAgICAnTGFtYmRhLVJ1bi1JZCc6IHtcbiAgICAgICAgICBEYXRhVHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgU3RyaW5nVmFsdWU6IGNvbnRleHQuYXdzUmVxdWVzdElkLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIFF1ZXVlVXJsOiBxdWV1ZVVybCxcbiAgICB9KVxuICApO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VWZXJzaW9uIHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1vZGlmaWVkOiBzdHJpbmc7XG5cbiAgcmVhZG9ubHkgdGFyYmFsbFVybDogc3RyaW5nO1xuICByZWFkb25seSBpbnRlZ3JpdHk6IHN0cmluZztcblxuICByZWFkb25seSBzZXE/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTWFrZXMgYW4gSFRUUCBHRVQgcmVxdWVzdCwgYW5kIHJldHVybnMgdGhlIHJlc3VsdGluZyBwYXlsb2FkLlxuICpcbiAqIEBwYXJhbSB1cmwgdGhlIFVSTCB0byBnZXQuXG4gKlxuICogQHJldHVybnMgYSBCdWZmZXIgY29udGFpbmluZyB0aGUgcmVjZWl2ZWQgZGF0YS5cbiAqL1xuZnVuY3Rpb24gaHR0cEdldCh1cmw6IHN0cmluZykge1xuICByZXR1cm4gbmV3IFByb21pc2U8QnVmZmVyPigob2ssIGtvKSA9PiB7XG4gICAgaHR0cHMuZ2V0KHVybCwgKHJlc3BvbnNlKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhyZXNwb25zZS5zdGF0dXNDb2RlKTtcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXNDb2RlID09PSA0MDQpIHtcbiAgICAgICAga28obmV3IEh0dHBOb3RGb3VuZEVycm9yKCkpO1xuICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5zdGF0dXNDb2RlICE9PSAyMDApIHtcbiAgICAgICAga28oXG4gICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFVuc3VjY2Vzc2Z1bCBHRVQ6ICR7cmVzcG9uc2Uuc3RhdHVzQ29kZX0gLSAke3Jlc3BvbnNlLnN0YXR1c01lc3NhZ2V9YFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGJvZHkgPSBCdWZmZXIuYWxsb2MoMCk7XG4gICAgICByZXNwb25zZS5vbihcbiAgICAgICAgJ2RhdGEnLFxuICAgICAgICAoY2h1bmspID0+IChib2R5ID0gQnVmZmVyLmNvbmNhdChbYm9keSwgQnVmZmVyLmZyb20oY2h1bmspXSkpXG4gICAgICApO1xuICAgICAgcmVzcG9uc2Uub25jZSgnY2xvc2UnLCAoKSA9PiBvayhib2R5KSk7XG4gICAgICByZXNwb25zZS5vbmNlKCdlcnJvcicsIGtvKTtcbiAgICB9KTtcbiAgfSk7XG59XG4iXX0=
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZ2UtYW5kLW5vdGlmeS5sYW1iZGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFja2FnZS1zb3VyY2VzL25wbWpzL3N0YWdlLWFuZC1ub3RpZnkubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0NBLDBCQWlIQztBQWpKRCw2Q0FBK0I7QUFDL0IsNkJBQTBCO0FBQzFCLGtEQUFzRDtBQUN0RCxvREFBeUQ7QUFHekQsdUZBQThFO0FBQzlFLDhFQUErRTtBQUMvRSw4RUFBb0U7QUFDcEUsMEZBQXlFO0FBQ3pFLGdGQUFxRTtBQUVyRSxNQUFNLGlCQUFrQixTQUFRLEtBQUs7Q0FBRztBQUV4Qzs7R0FFRztBQUNILE1BQU0sZUFBZSxHQUFHO0lBQ3RCLFdBQVcsRUFBRSxLQUFLO0lBQ2xCLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLFVBQVUsRUFBRSxNQUFNO0NBQ25CLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNJLEtBQUssVUFBVSxPQUFPLENBQzNCLEtBQWdDLEVBQ2hDLE9BQWdCO0lBRWhCLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXhELElBQUksU0FBUyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3ZCLCtEQUErRDtRQUMvRCxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBbUIsQ0FBQztRQUM1RCxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFBLDhCQUFVLEVBQUMsYUFBYSxDQUFDLENBQUM7SUFDaEQsTUFBTSxRQUFRLEdBQUcsSUFBQSw4QkFBVSxFQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXpDLE1BQU0sUUFBUSxHQUFHLE1BQU0scUNBQWMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNsRCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVELElBQUksUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzNELE9BQU87SUFDVCxDQUFDO0lBRUQsSUFBSSxPQUFlLENBQUM7SUFDcEIsSUFBSSxDQUFDO1FBQ0gsT0FBTyxHQUFHLE1BQU0sZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsSUFBSSxDQUFDLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUNuQyxzRUFBc0U7WUFDdEUsd0VBQXdFO1lBQ3hFLHNFQUFzRTtZQUN0RSx1RUFBdUU7WUFDdkUsc0VBQXNFO1lBQ3RFLHNFQUFzRTtZQUN0RSx5REFBeUQ7WUFDekQsT0FBTyxDQUFDLEdBQUcsQ0FDVCx5QkFBeUIsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsT0FBTyxjQUFjLEtBQUssQ0FBQyxRQUFRLDZCQUE2QixLQUFLLENBQUMsVUFBVSxFQUFFLENBQ2hJLENBQUM7WUFDRixPQUFPO1FBQ1QsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLENBQUMsQ0FBQztRQUNWLENBQUM7SUFDSCxDQUFDO0lBRUQsNENBQTRDO0lBQzVDLDRGQUE0RjtJQUM1Riw0RkFBNEY7SUFDNUYsTUFBTSxVQUFVLEdBQUcsR0FBRyw2Q0FBNkIsR0FDakQsSUFBSSxTQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQzVCLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsOENBQThDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDeEUsTUFBTSw2QkFBUyxDQUFDLElBQUksQ0FDbEIsSUFBSSw0QkFBZ0IsQ0FBQztRQUNuQixNQUFNLEVBQUUsYUFBYTtRQUNyQixHQUFHLEVBQUUsVUFBVTtRQUNmLElBQUksRUFBRSxPQUFPO1FBQ2IsV0FBVyxFQUFFLDBCQUEwQjtRQUN2QyxRQUFRLEVBQUU7WUFDUixrQkFBa0IsRUFBRSxPQUFPLENBQUMsWUFBWTtZQUN4QyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsYUFBYTtZQUMxQyxlQUFlLEVBQUUsT0FBTyxDQUFDLFlBQVk7WUFDckMsYUFBYSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQzdCLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQ25DLFlBQVksRUFBRSxLQUFLLENBQUMsVUFBVTtZQUM5QixzREFBc0Q7WUFDdEQsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQzlDO0tBQ0YsQ0FBQyxDQUNILENBQUM7SUFFRiw0QkFBNEI7SUFDNUIsTUFBTSxPQUFPLEdBQUcsSUFBQSxtQ0FBUyxFQUN2QjtRQUNFLFVBQVUsRUFBRSxRQUFRLGFBQWEsSUFBSSxVQUFVLEVBQUU7UUFDakQsUUFBUSxFQUFFO1lBQ1IsSUFBSSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQ3RCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsc0RBQXNEO1lBQ3RELEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUN6QztRQUNELElBQUksRUFBRSxLQUFLLENBQUMsUUFBUTtLQUNyQixFQUNELE9BQU8sQ0FDUixDQUFDO0lBRUYsc0JBQXNCO0lBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQ1Qsb0RBQW9ELElBQUksQ0FBQyxTQUFTLENBQ2hFLE9BQU8sRUFDUCxJQUFJLEVBQ0osQ0FBQyxDQUNGLEVBQUUsQ0FDSixDQUFDO0lBQ0YsTUFBTSw4QkFBVSxDQUFDLElBQUksQ0FDbkIsSUFBSSwrQkFBa0IsQ0FBQztRQUNyQixXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7UUFDcEMsaUJBQWlCLEVBQUU7WUFDakIsa0JBQWtCLEVBQUU7Z0JBQ2xCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixXQUFXLEVBQUUsT0FBTyxDQUFDLFlBQVk7YUFDbEM7WUFDRCxtQkFBbUIsRUFBRTtnQkFDbkIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFdBQVcsRUFBRSxPQUFPLENBQUMsYUFBYTthQUNuQztZQUNELGVBQWUsRUFBRTtnQkFDZixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxZQUFZO2FBQ2xDO1NBQ0Y7UUFDRCxRQUFRLEVBQUUsUUFBUTtLQUNuQixDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUM7QUFhRDs7Ozs7R0FLRztBQUNILEtBQUssVUFBVSxlQUFlLENBQUMsS0FBcUI7SUFDbEQsTUFBTSxTQUFTLEdBQUcsSUFBQSx3QkFBRyxHQUFFLENBQUM7SUFDeEIsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUM7WUFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUNqRSxPQUFPLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLElBQ0UsQ0FBQyxDQUFDLENBQUMsWUFBWSxpQkFBaUIsQ0FBQztnQkFDakMsSUFBQSx3QkFBRyxHQUFFLEdBQUcsU0FBUyxJQUFJLGVBQWUsQ0FBQyxVQUFVLEVBQy9DLENBQUM7Z0JBQ0QsTUFBTSxDQUFDLENBQUM7WUFDVixDQUFDO1lBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDcEIsZUFBZSxDQUFDLFdBQVcsRUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FDUixJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNYLElBQUksQ0FBQyxHQUFHLENBQ04sZUFBZSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFDbEQsZUFBZSxDQUFDLFVBQVUsQ0FDM0IsQ0FDSixDQUNGLENBQUM7WUFDRixPQUFPLENBQUMsR0FBRyxDQUNULDZDQUE2QyxLQUFLLFFBQVEsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUM3RSxDQUFDO1lBQ0YsTUFBTSxJQUFBLDBCQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLE9BQU8sQ0FBQyxHQUFXO0lBQzFCLE9BQU8sSUFBSSxPQUFPLENBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7UUFDcEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNqQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2hDLEVBQUUsQ0FBQyxJQUFJLGlCQUFpQixFQUFFLENBQUMsQ0FBQztZQUM5QixDQUFDO2lCQUFNLElBQUksUUFBUSxDQUFDLFVBQVUsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDdkMsRUFBRSxDQUNBLElBQUksS0FBSyxDQUNQLHFCQUFxQixRQUFRLENBQUMsVUFBVSxNQUFNLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FDdkUsQ0FDRixDQUFDO1lBQ0osQ0FBQztZQUVELElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsUUFBUSxDQUFDLEVBQUUsQ0FDVCxNQUFNLEVBQ04sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDOUQsQ0FBQztZQUNGLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgaHR0cHMgZnJvbSAnaHR0cHMnO1xuaW1wb3J0IHsgVVJMIH0gZnJvbSAndXJsJztcbmltcG9ydCB7IFB1dE9iamVjdENvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtczMnO1xuaW1wb3J0IHsgU2VuZE1lc3NhZ2VDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNxcyc7XG5pbXBvcnQgdHlwZSB7IENvbnRleHQsIFNRU0V2ZW50IH0gZnJvbSAnYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBTM0tleVByZWZpeCB9IGZyb20gJy4vY29uc3RhbnRzLmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0IHsgRGVueUxpc3RDbGllbnQgfSBmcm9tICcuLi8uLi9iYWNrZW5kL2RlbnktbGlzdC9jbGllbnQubGFtYmRhLXNoYXJlZCc7XG5pbXBvcnQgeyBTM19DTElFTlQsIFNRU19DTElFTlQgfSBmcm9tICcuLi8uLi9iYWNrZW5kL3NoYXJlZC9hd3MubGFtYmRhLXNoYXJlZCc7XG5pbXBvcnQgeyByZXF1aXJlRW52IH0gZnJvbSAnLi4vLi4vYmFja2VuZC9zaGFyZWQvZW52LmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0IHsgaW50ZWdyaXR5IH0gZnJvbSAnLi4vLi4vYmFja2VuZC9zaGFyZWQvaW50ZWdyaXR5LmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0IHsgbm93LCBzbGVlcCB9IGZyb20gJy4uLy4uL2JhY2tlbmQvc2hhcmVkL3RpbWUubGFtYmRhLXNoYXJlZCc7XG5cbmNsYXNzIEh0dHBOb3RGb3VuZEVycm9yIGV4dGVuZHMgRXJyb3Ige31cblxuLyoqXG4gKiBSZXRyeSBjb25maWd1cmF0aW9uIGZvciB0YXJiYWxsIGRvd25sb2FkcyB0aGF0IHJldHVybiBIVFRQIDQwNC5cbiAqL1xuY29uc3QgTk9UX0ZPVU5EX1JFVFJZID0ge1xuICBiYXNlRGVsYXlNczogMV8wMDAsXG4gIG1heERlbGF5TXM6IDhfMDAwLFxuICBkZWFkbGluZU1zOiA2MF8wMDAsXG59O1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZCBieSB0aGUgYG5wbS1qcy1mb2xsb3dlci5sYW1iZGFgICB3aXRoIGEgYFBhY2thZ2VWZXJzaW9uYCBvYmplY3QsIG9yIGJ5XG4gKiBhbiBTUVMgdHJpZ2dlciBmZWVkaW5nIGZyb20gdGhpcyBmdW5jdGlvbidzIERlYWQtTGV0dGVyIFF1ZXVlIChmb3IgcmUtdHJ5aW5nIHB1cnBvc2VzKS5cbiAqXG4gKiBUaGUgcGF5bG9hZCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBhIGRpc2NvdmVyZWQgbmV3IHBhY2thZ2UgdmVyc2lvbi4gVGhpcyBoYW5kbGVyIHdpbGxcbiAqIGNoZWNrIHRoZSBwYWNrYWdlIGlzIG5vdCBkZW55LWxpc3RlZCwgZG93bmxvYWQgdGhlIHRhcmJhbGwgZnJvbSB0aGUgcGF5bG9hZCdzIGB0YXJiYWxsVXJsYCwgc3RvcmVcbiAqIGl0IGluIHRoZSBzdGFnaW5nIGJ1Y2tldCwgdGhlbiBzZW5kIGEgbWVzc2FnZSB0byB0aGUgQ29uc3RydWN0SHViIGluZ2VzdGlvbiBTUVMgcXVldWUgaW4gb3JkZXIgdG9cbiAqIHRyaWdnZXIgaW5nZXN0aW9uIG9mIHRoaXMgcGFja2FnZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIoXG4gIGV2ZW50OiBQYWNrYWdlVmVyc2lvbiB8IFNRU0V2ZW50LFxuICBjb250ZXh0OiBDb250ZXh0XG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc29sZS5sb2coYEV2ZW50OiAke0pTT04uc3RyaW5naWZ5KGV2ZW50LCBudWxsLCAyKX1gKTtcblxuICBpZiAoJ1JlY29yZHMnIGluIGV2ZW50KSB7XG4gICAgLy8gQVRURU5USU9OOiBBc3N1bWVzIHRoZXJlIGlzIG9ubHkgZXhhY3RseSAxIGV2ZW50IGluIHRoZXJlLi4uXG4gICAgZXZlbnQgPSBKU09OLnBhcnNlKGV2ZW50LlJlY29yZHNbMF0uYm9keSkgYXMgUGFja2FnZVZlcnNpb247XG4gICAgY29uc29sZS5sb2coYEV2ZW50IChleHRyYWN0ZWQpOiAke0pTT04uc3RyaW5naWZ5KGV2ZW50LCBudWxsLCAyKX1gKTtcbiAgfVxuXG4gIGNvbnN0IHN0YWdpbmdCdWNrZXQgPSByZXF1aXJlRW52KCdCVUNLRVRfTkFNRScpO1xuICBjb25zdCBxdWV1ZVVybCA9IHJlcXVpcmVFbnYoJ1FVRVVFX1VSTCcpO1xuXG4gIGNvbnN0IGRlbnlMaXN0ID0gYXdhaXQgRGVueUxpc3RDbGllbnQubmV3Q2xpZW50KCk7XG4gIGNvbnN0IGRlbnlSdWxlID0gZGVueUxpc3QubG9va3VwKGV2ZW50Lm5hbWUsIGV2ZW50LnZlcnNpb24pO1xuICBpZiAoZGVueVJ1bGUgIT0gbnVsbCkge1xuICAgIGNvbnNvbGUubG9nKGBQYWNrYWdlIHdhcyBkZW55LWxpc3RlZDogJHtkZW55UnVsZS5yZWFzb259YCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGV0IHRhcmJhbGw6IEJ1ZmZlcjtcbiAgdHJ5IHtcbiAgICB0YXJiYWxsID0gYXdhaXQgZG93bmxvYWRUYXJiYWxsKGV2ZW50KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChlIGluc3RhbmNlb2YgSHR0cE5vdEZvdW5kRXJyb3IpIHtcbiAgICAgIC8vIFRoZSB0YXJiYWxsIGlzIHN0aWxsIG5vdCBhdmFpbGFibGUsIGV2ZW4gYWZ0ZXIgcmV0cnlpbmcgZm9yIGEgd2hpbGVcbiAgICAgIC8vIChzZWUgYGRvd25sb2FkVGFyYmFsbGApLiBJdCBpcyBwcm9iYWJseSBwZXJtYW5lbnRseSBtaXNzaW5nIChlLmc6IHRoZVxuICAgICAgLy8gdmVyc2lvbiB3YXMgdW5wdWJsaXNoZWQpLiBJZiB3ZSB0aHJvdyBhbiBlcnJvciwgdGhlIG1lc3NhZ2Ugd2lsbCBiZVxuICAgICAgLy8gc2VudCB0byB0aGUgRExRLCB0byBiZSBwcm9jZXNzZWQgYWdhaW4gaW4gYSByZS1kcml2ZS4gQnV0IGdpdmVuIHRoYXRcbiAgICAgIC8vIHRoaXMgZmlsZSB3aWxsIHByb2JhYmx5IG5ldmVyIGJlIGF2YWlsYWJsZSwgdGhlIHJlLWRyaXZlcyB3aWxsIGFsc29cbiAgICAgIC8vIGZhaWwsIGFuZCB3ZSdsbCBuZXZlciBiZSBhYmxlIHRvIGdldCByaWQgb2YgdGhlIG1lc3NhZ2UgaW4gdGhlIERMUS5cbiAgICAgIC8vIEluc3RlYWQsIHdlIGlnbm9yZSB0aGlzIHZlcnNpb24gYnkgcmV0dXJuaW5nIHNpbGVudGx5LlxuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBUYXJiYWxsIG5vdCBmb3VuZCBmb3IgJHtldmVudC5uYW1lfUAke2V2ZW50LnZlcnNpb259IChtb2RpZmllZCAke2V2ZW50Lm1vZGlmaWVkfSksIGlnbm9yaW5nIHRoaXMgdmVyc2lvbjogJHtldmVudC50YXJiYWxsVXJsfWBcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgLy8gU3RvcmUgdGhlIHRhcmJhbGwgaW50byB0aGUgc3RhZ2luZyBidWNrZXRcbiAgLy8gLSBpbmZvcy5kaXN0LnRhcmJhbGwgPT4gaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvPEBzY29wZT4vPG5hbWU+Ly0vPG5hbWU+LTx2ZXJzaW9uPi50Z3pcbiAgLy8gLSBzdGFnaW5nS2V5ICAgICAgICAgPT4gICAgICAgICAgICAgICAgICAgICBzdGFnZWQvPEBzY29wZT4vPG5hbWU+Ly0vPG5hbWU+LTx2ZXJzaW9uPi50Z3pcbiAgY29uc3Qgc3RhZ2luZ0tleSA9IGAke1MzS2V5UHJlZml4LlNUQUdFRF9LRVlfUFJFRklYfSR7XG4gICAgbmV3IFVSTChldmVudC50YXJiYWxsVXJsKS5wYXRobmFtZVxuICB9YC5yZXBsYWNlKC9cXC97Mix9L2csICcvJyk7XG4gIGNvbnNvbGUubG9nKGBTdG9yaW5nIHRhcmJhbGwgaW4gc3RhZ2luZyBidWNrZXQgd2l0aCBrZXkgJHtzdGFnaW5nS2V5fWApO1xuICBhd2FpdCBTM19DTElFTlQuc2VuZChcbiAgICBuZXcgUHV0T2JqZWN0Q29tbWFuZCh7XG4gICAgICBCdWNrZXQ6IHN0YWdpbmdCdWNrZXQsXG4gICAgICBLZXk6IHN0YWdpbmdLZXksXG4gICAgICBCb2R5OiB0YXJiYWxsLFxuICAgICAgQ29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLFxuICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgJ0xhbWJkYS1Mb2ctR3JvdXAnOiBjb250ZXh0LmxvZ0dyb3VwTmFtZSxcbiAgICAgICAgJ0xhbWJkYS1Mb2ctU3RyZWFtJzogY29udGV4dC5sb2dTdHJlYW1OYW1lLFxuICAgICAgICAnTGFtYmRhLVJ1bi1JZCc6IGNvbnRleHQuYXdzUmVxdWVzdElkLFxuICAgICAgICAnTW9kaWZpZWQtQXQnOiBldmVudC5tb2RpZmllZCxcbiAgICAgICAgJ09yaWdpbi1JbnRlZ3JpdHknOiBldmVudC5pbnRlZ3JpdHksXG4gICAgICAgICdPcmlnaW4tVVJJJzogZXZlbnQudGFyYmFsbFVybCxcbiAgICAgICAgLy8gU2VxIG1pZ2h0IG5vdCBiZSBwcmVzZW50Li4uIHNvIHNraXAgaXQgaWYgYWJzZW50Li4uXG4gICAgICAgIC4uLihldmVudC5zZXEgPyB7IFNlcXVlbmNlOiBldmVudC5zZXEgfSA6IHt9KSxcbiAgICAgIH0sXG4gICAgfSlcbiAgKTtcblxuICAvLyBQcmVwYXJlIGluZ2VzdGlvbiByZXF1ZXN0XG4gIGNvbnN0IG1lc3NhZ2UgPSBpbnRlZ3JpdHkoXG4gICAge1xuICAgICAgdGFyYmFsbFVyaTogYHMzOi8vJHtzdGFnaW5nQnVja2V0fS8ke3N0YWdpbmdLZXl9YCxcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIGRpc3Q6IGV2ZW50LnRhcmJhbGxVcmwsXG4gICAgICAgIGludGVncml0eTogZXZlbnQuaW50ZWdyaXR5LFxuICAgICAgICBtb2RpZmllZDogZXZlbnQubW9kaWZpZWQsXG4gICAgICAgIC8vIFNlcSBtaWdodCBub3QgYmUgcHJlc2VudC4uLiBzbyBza2lwIGl0IGlmIGFic2VudC4uLlxuICAgICAgICAuLi4oZXZlbnQuc2VxID8geyBzZXE6IGV2ZW50LnNlcSB9IDoge30pLFxuICAgICAgfSxcbiAgICAgIHRpbWU6IGV2ZW50Lm1vZGlmaWVkLFxuICAgIH0sXG4gICAgdGFyYmFsbFxuICApO1xuXG4gIC8vIFNlbmQgbWVzc2FnZSB0byBTUVNcbiAgY29uc29sZS5sb2coXG4gICAgYFNlbmRpbmcgbWVzc2FnZSB0byBDb25zdHJ1Y3RIdWIgaW5nZXN0aW9uIHF1ZXVlOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgbWVzc2FnZSxcbiAgICAgIG51bGwsXG4gICAgICAyXG4gICAgKX1gXG4gICk7XG4gIGF3YWl0IFNRU19DTElFTlQuc2VuZChcbiAgICBuZXcgU2VuZE1lc3NhZ2VDb21tYW5kKHtcbiAgICAgIE1lc3NhZ2VCb2R5OiBKU09OLnN0cmluZ2lmeShtZXNzYWdlKSxcbiAgICAgIE1lc3NhZ2VBdHRyaWJ1dGVzOiB7XG4gICAgICAgICdMYW1iZGEtTG9nLUdyb3VwJzoge1xuICAgICAgICAgIERhdGFUeXBlOiAnU3RyaW5nJyxcbiAgICAgICAgICBTdHJpbmdWYWx1ZTogY29udGV4dC5sb2dHcm91cE5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgICdMYW1iZGEtTG9nLVN0cmVhbSc6IHtcbiAgICAgICAgICBEYXRhVHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgU3RyaW5nVmFsdWU6IGNvbnRleHQubG9nU3RyZWFtTmFtZSxcbiAgICAgICAgfSxcbiAgICAgICAgJ0xhbWJkYS1SdW4tSWQnOiB7XG4gICAgICAgICAgRGF0YVR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgIFN0cmluZ1ZhbHVlOiBjb250ZXh0LmF3c1JlcXVlc3RJZCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBRdWV1ZVVybDogcXVldWVVcmwsXG4gICAgfSlcbiAgKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlVmVyc2lvbiB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuICByZWFkb25seSBtb2RpZmllZDogc3RyaW5nO1xuXG4gIHJlYWRvbmx5IHRhcmJhbGxVcmw6IHN0cmluZztcbiAgcmVhZG9ubHkgaW50ZWdyaXR5OiBzdHJpbmc7XG5cbiAgcmVhZG9ubHkgc2VxPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIERvd25sb2FkcyB0aGUgdGFyYmFsbCBmb3IgYSBwYWNrYWdlIHZlcnNpb24sIHJldHJ5aW5nIEhUVFAgNDA0IHJlc3BvbnNlc1xuICogZm9yIGEgd2hpbGU6IG5wbSBtZXRhZGF0YSBtYXkgcHJvcGFnYXRlIGZhc3RlciB0aGFuIHRhcmJhbGxzLCBzbyBhIGZyZXNobHlcbiAqIHB1Ymxpc2hlZCB2ZXJzaW9uIGNhbiB0cmFuc2llbnRseSA0MDQgZXZlbiB0aG91Z2ggaXQgd2lsbCBiZSBhdmFpbGFibGVcbiAqIHNob3J0bHkuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGRvd25sb2FkVGFyYmFsbChldmVudDogUGFja2FnZVZlcnNpb24pOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICBjb25zdCBzdGFydFRpbWUgPSBub3coKTtcbiAgbGV0IGF0dGVtcHQgPSAwO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zb2xlLmxvZyhgRG93bmxvYWRpbmcgdGFyYmFsbCBmcm9tIFVSTDogJHtldmVudC50YXJiYWxsVXJsfWApO1xuICAgICAgcmV0dXJuIGF3YWl0IGh0dHBHZXQoZXZlbnQudGFyYmFsbFVybCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKFxuICAgICAgICAhKGUgaW5zdGFuY2VvZiBIdHRwTm90Rm91bmRFcnJvcikgfHxcbiAgICAgICAgbm93KCkgLSBzdGFydFRpbWUgPj0gTk9UX0ZPVU5EX1JFVFJZLmRlYWRsaW5lTXNcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgICAgY29uc3QgZGVsYXkgPSBNYXRoLm1heChcbiAgICAgICAgTk9UX0ZPVU5EX1JFVFJZLmJhc2VEZWxheU1zLFxuICAgICAgICBNYXRoLmZsb29yKFxuICAgICAgICAgIE1hdGgucmFuZG9tKCkgKlxuICAgICAgICAgICAgTWF0aC5taW4oXG4gICAgICAgICAgICAgIE5PVF9GT1VORF9SRVRSWS5iYXNlRGVsYXlNcyAqIE1hdGgucG93KDIsIGF0dGVtcHQpLFxuICAgICAgICAgICAgICBOT1RfRk9VTkRfUkVUUlkubWF4RGVsYXlNc1xuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBUYXJiYWxsIG5vdCBmb3VuZCAoSFRUUCA0MDQpLCByZXRyeWluZyBpbiAke2RlbGF5fSBtczogJHtldmVudC50YXJiYWxsVXJsfWBcbiAgICAgICk7XG4gICAgICBhd2FpdCBzbGVlcChkZWxheSk7XG4gICAgICBhdHRlbXB0Kys7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogTWFrZXMgYW4gSFRUUCBHRVQgcmVxdWVzdCwgYW5kIHJldHVybnMgdGhlIHJlc3VsdGluZyBwYXlsb2FkLlxuICpcbiAqIEBwYXJhbSB1cmwgdGhlIFVSTCB0byBnZXQuXG4gKlxuICogQHJldHVybnMgYSBCdWZmZXIgY29udGFpbmluZyB0aGUgcmVjZWl2ZWQgZGF0YS5cbiAqL1xuZnVuY3Rpb24gaHR0cEdldCh1cmw6IHN0cmluZykge1xuICByZXR1cm4gbmV3IFByb21pc2U8QnVmZmVyPigob2ssIGtvKSA9PiB7XG4gICAgaHR0cHMuZ2V0KHVybCwgKHJlc3BvbnNlKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhyZXNwb25zZS5zdGF0dXNDb2RlKTtcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXNDb2RlID09PSA0MDQpIHtcbiAgICAgICAga28obmV3IEh0dHBOb3RGb3VuZEVycm9yKCkpO1xuICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5zdGF0dXNDb2RlICE9PSAyMDApIHtcbiAgICAgICAga28oXG4gICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFVuc3VjY2Vzc2Z1bCBHRVQ6ICR7cmVzcG9uc2Uuc3RhdHVzQ29kZX0gLSAke3Jlc3BvbnNlLnN0YXR1c01lc3NhZ2V9YFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGJvZHkgPSBCdWZmZXIuYWxsb2MoMCk7XG4gICAgICByZXNwb25zZS5vbihcbiAgICAgICAgJ2RhdGEnLFxuICAgICAgICAoY2h1bmspID0+IChib2R5ID0gQnVmZmVyLmNvbmNhdChbYm9keSwgQnVmZmVyLmZyb20oY2h1bmspXSkpXG4gICAgICApO1xuICAgICAgcmVzcG9uc2Uub25jZSgnY2xvc2UnLCAoKSA9PiBvayhib2R5KSk7XG4gICAgICByZXNwb25zZS5vbmNlKCdlcnJvcicsIGtvKTtcbiAgICB9KTtcbiAgfSk7XG59XG4iXX0=
@@ -45,7 +45,7 @@ const NO_CHANGES_ALARM_DURATION = aws_cdk_lib_1.Duration.hours(24);
45
45
  */
46
46
  class NpmJs {
47
47
  props;
48
- static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.sources.NpmJs", version: "0.4.521" };
48
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.sources.NpmJs", version: "0.4.522" };
49
49
  constructor(props = {}) {
50
50
  this.props = props;
51
51
  }
@@ -11,7 +11,7 @@ var TagConditionSource;
11
11
  * Condition for applying a custom tag to a package.
12
12
  */
13
13
  class TagCondition {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.TagCondition", version: "0.4.521" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.TagCondition", version: "0.4.522" };
15
15
  /**
16
16
  * Create an && condition which applies only when all condition arguments are
17
17
  * true.
@@ -107,7 +107,7 @@ class TagConditionPredicate extends TagCondition {
107
107
  */
108
108
  class TagConditionField {
109
109
  field;
110
- static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.TagConditionField", version: "0.4.521" };
110
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.TagConditionField", version: "0.4.522" };
111
111
  constructor(field) {
112
112
  this.field = field;
113
113
  }
@@ -140,7 +140,7 @@ exports.TagConditionField = TagConditionField;
140
140
  * Target the README of the package to dictate whether a tag is relevant.
141
141
  */
142
142
  class TagConditionReadme {
143
- static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.TagConditionReadme", version: "0.4.521" };
143
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.TagConditionReadme", version: "0.4.522" };
144
144
  constructor() { }
145
145
  /**
146
146
  * Create a `readme.includes(value)` condition which applies if the README
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PackageTagGroup = exports.FilterType = void 0;
4
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
5
  class FilterType {
6
- static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.FilterType", version: "0.4.521" };
6
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.FilterType", version: "0.4.522" };
7
7
  static checkbox() {
8
8
  return new FilterTypeCheckbox();
9
9
  }
@@ -27,7 +27,7 @@ class FilterTypeCheckbox extends FilterType {
27
27
  */
28
28
  class PackageTagGroup {
29
29
  id;
30
- static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.PackageTagGroup", version: "0.4.521" };
30
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.PackageTagGroup", version: "0.4.522" };
31
31
  label;
32
32
  tooltip;
33
33
  filterType;
@@ -9,7 +9,7 @@ const fs_1 = require("fs");
9
9
  */
10
10
  class PreloadFile {
11
11
  data;
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.PreloadFile", version: "0.4.521" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.PreloadFile", version: "0.4.522" };
13
13
  /**
14
14
  * Creates a PreloadFile instance from a filepath to load
15
15
  */
package/lib/s3/storage.js CHANGED
@@ -42,7 +42,7 @@ const constructs_1 = require("constructs");
42
42
  * Create s3 storage resources.
43
43
  */
44
44
  class S3StorageFactory extends constructs_1.Construct {
45
- static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.S3StorageFactory", version: "0.4.521" };
45
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.S3StorageFactory", version: "0.4.522" };
46
46
  /**
47
47
  * Retrieve or create the storage factory for the current scope.
48
48
  *
@@ -9,7 +9,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
9
9
  */
10
10
  class SpdxLicense {
11
11
  id;
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.SpdxLicense", version: "0.4.521" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.SpdxLicense", version: "0.4.522" };
13
13
  static _ALL = new Map();
14
14
  //#region Individual SPDX Licenses
15
15
  /**
package/package.json CHANGED
@@ -232,7 +232,7 @@
232
232
  "built": true
233
233
  }
234
234
  },
235
- "version": "0.4.521",
235
+ "version": "0.4.522",
236
236
  "packageManager": "yarn@4.13.0",
237
237
  "jest": {
238
238
  "coverageProvider": "v8",