@scloud/lambda-api 1.1.1 → 1.1.2

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/README.md CHANGED
@@ -6,6 +6,7 @@ This is a piece of useful boilerplate to handle the mechanics of routing, header
6
6
 
7
7
  ## Releae notes
8
8
 
9
+ * `1.1.2`: Fix to be able to match multiple path parameters
9
10
  * `1.1.1`: Remove functionality to lowercase the request path because this can alter path parameter values, which can be case sensitive strings
10
11
  * `1.0.5`: Add a test to verify that camel case path parameter values aren't lowercased
11
12
  * `1.0.4`: Optional schema checks using Zod
package/dist/helpers.d.ts CHANGED
@@ -54,7 +54,7 @@ export declare function setHeader(name: string, value: string, headers: {
54
54
  export declare function parseRequest(event: APIGatewayProxyEvent): Request;
55
55
  export declare function matchRoute(routes: Routes, path: string): {
56
56
  methods: Route | undefined;
57
- params: {
57
+ params?: {
58
58
  [name: string]: string;
59
59
  };
60
60
  };
package/dist/helpers.js CHANGED
@@ -206,10 +206,10 @@ function matchRoute(routes, path) {
206
206
  // First check: length match
207
207
  if (pathSegments.length !== candidateSegments.length)
208
208
  continue;
209
+ const params = {};
209
210
  for (let s = 0; s < pathSegments.length; s++) {
210
- const params = {};
211
- const pathSegment = pathSegments[s] ?? '';
212
- const candidateSegment = candidateSegments[s] ?? '';
211
+ const pathSegment = pathSegments[s];
212
+ const candidateSegment = candidateSegments[s];
213
213
  if (candidateSegment.startsWith('{') && candidateSegment.endsWith('}')) {
214
214
  // Path parameter
215
215
  const name = candidateSegment.slice(1, -1);
@@ -224,6 +224,6 @@ function matchRoute(routes, path) {
224
224
  }
225
225
  }
226
226
  }
227
- return { methods: undefined, params: {} };
227
+ return { methods: undefined };
228
228
  }
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUUEsb0NBS0M7QUFNRCwwREFRQztBQU1ELDBDQU1DO0FBT0QsOEJBa0JDO0FBTUQsa0NBVUM7QUFFRCxrQ0FpQ0M7QUFLRCw4QkFZQztBQUtELDhCQVVDO0FBRUQsb0NBV0M7QUFFRCxnQ0F5Q0M7QUExTUQsK0NBQWlDO0FBR2pDOzs7R0FHRztBQUNILFNBQWdCLFlBQVksQ0FBQyxJQUFZO0lBQ3ZDLDhDQUE4QztJQUM5QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUQsY0FBYztJQUNkLE9BQU8sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDbEMsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLHVCQUF1QixDQUFDLEtBQXFEO0lBQzNGLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDdEIsTUFBTSxNQUFNLEdBQWdDLEVBQUUsQ0FBQztJQUMvQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQixJQUFJLEtBQUs7WUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxPQUFnRDtJQUM5RSxNQUFNLE1BQU0sR0FB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aUJBQWlCO2dCQUNqQixNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxXQUFXLENBQUM7WUFDN0IsQ0FBQztpQkFBTSxJQUFJLFdBQVcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO2dCQUN4RSxNQUFNO1lBQ1IsQ0FBQztZQUVELElBQUksQ0FBQyxLQUFLLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLHVCQUF1QjtnQkFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDaEQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQzVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUElHYXRld2F5UHJveHlFdmVudCB9IGZyb20gJ2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgY29va2llIGZyb20gJ2Nvb2tpZSc7XG5pbXBvcnQgeyBSZXF1ZXN0LCBSZXNwb25zZSwgUm91dGUsIFJvdXRlcyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIEVuc3VyZXMgdGhlIHBhdGggYWx3YXlzIGhhcyBhIGxlYWRpbmcgc2xhc2ggYW5kIG5ldmVyIGEgdHJhaWxpbmcgc2xhc2hcbiAqIEBwYXJhbSBwYXRoIEFQSUdhdGV3YXlQcm94eUV2ZW50LnBhdGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YW5kYXJkUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBHZXQgcGF0aCBzZWdtZW50cywgZmlsdGVyaW5nIG91dCBhbnkgYmxhbmtzXG4gIGNvbnN0IHNlZ21lbnRzID0gcGF0aC5zcGxpdCgnLycpLmZpbHRlcigoc2VnbWVudCkgPT4gc2VnbWVudCk7XG4gIC8vIFJldHVybiBwYXRoXG4gIHJldHVybiBgLyR7c2VnbWVudHMuam9pbignLycpfWA7XG59XG5cbi8qKlxuICogRW5zdXJlcyBhIG5vbi1udWxsIG9iamVjdCBjb250YWluaW5nIG9ubHkgcXVlcnktc3RyaW5nIHBhcmFtZXRlcnMgdGhhdCBoYXZlIGEgdmFsdWUuXG4gKiBAcGFyYW0gcXVlcnkgQVBJR2F0ZXdheVByb3h5RXZlbnQucXVlcnlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YW5kYXJkUXVlcnlQYXJhbWV0ZXJzKHF1ZXJ5OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQ7IH0gfCBudWxsKTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nOyB9IHtcbiAgaWYgKCFxdWVyeSkgcmV0dXJuIHt9O1xuICBjb25zdCByZXN1bHQ6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZzsgfSA9IHt9O1xuICBPYmplY3Qua2V5cyhxdWVyeSkuZm9yRWFjaCgocGFyYW1ldGVyKSA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSBxdWVyeVtwYXJhbWV0ZXJdO1xuICAgIGlmICh2YWx1ZSkgcmVzdWx0W3BhcmFtZXRlcl0gPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRW5zdXJlcyBhbGwgaGVhZGVycyBoYXZlIGEgdmFsdWUuXG4gKiBAcGFyYW0gaGVhZGVycyBBUElHYXRld2F5UHJveHlFdmVudC5oZWFkZXJzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGFuZGFyZEhlYWRlcnMoaGVhZGVyczogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkOyB9KTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nOyB9IHtcbiAgY29uc3QgcmVzdWx0OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmc7IH0gPSB7fTtcbiAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGhlYWRlcnMgfHwge30pKSB7XG4gICAgcmVzdWx0W25hbWVdID0gdmFsdWUgPz8gJyc7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIGJvZHkgKGlmIHByZXNlbnQpIGZyb20gYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIG9yIEpTT04gc3RyaW5nLlxuICogSWYgdGhlIGJvZHkgZmFpbHMgdG8gcGFyc2UgYXMgSlNPbiwgdGhlIHJhdyBib2R5IGlzIHJldHVybmVkLlxuICogQHBhcmFtIGJvZHkgQVBJR2F0ZXdheVByb3h5RXZlbnQuYm9keVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VCb2R5KGJvZHk6IHN0cmluZyB8IG51bGwsIGlzQmFzZTY0RW5jb2RlZDogYm9vbGVhbiwgY29udGVudFR5cGU6IHN0cmluZyA9ICdhcHBsaWNhdGlvbi9qc29uJyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgc3RyaW5nIHtcbiAgaWYgKCFib2R5KSByZXR1cm4ge307XG5cbiAgY29uc3QgY29udGVudCA9IGlzQmFzZTY0RW5jb2RlZCA/IEJ1ZmZlci5mcm9tKGJvZHksICdiYXNlNjQnKS50b1N0cmluZygndXRmOCcpIDogYm9keTtcblxuICB0cnkge1xuICAgIGlmICgoY29udGVudFR5cGUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKG5ldyBVUkxTZWFyY2hQYXJhbXMoY29udGVudCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEZWZhdWx0IHRvIHBhcnNpbmcgYXMgSlNPTjpcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKGNvbnRlbnQpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIHBhcnNpbmcgcmVxdWVzdCBib2R5OiAke2V9YCk7XG4gIH1cblxuICAvLyBGYWxsYmFjayB0byByZXR1cm5pbmcgdGhlIHJhdyBib2R5XG4gIHJldHVybiBjb250ZW50O1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgY29va2llLCBpZiBhbnksIHJldHVybmluZyBhdCBtaW5pbXVtIGFuIGVtcHR5IG9iamVjdC5cbiAqIEBwYXJhbSBoZWFkZXJzIEFQSUdhdGV3YXlQcm94eUV2ZW50LmhlYWRlcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ29va2llKGhlYWRlcnM6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZDsgfSk6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZzsgfSB7XG4gIGNvbnN0IGhlYWRlciA9IGdldEhlYWRlcignQ29va2llJywgaGVhZGVycyk7XG4gIGNvbnN0IHZhbHVlcyA9IGhlYWRlciA/IGNvb2tpZS5wYXJzZShoZWFkZXIpIDoge307XG5cbiAgLy8gRW5zdXJlIHdlIGRvbid0IHJldHVybiBhbnkgdW5kZWZpbmVkIHZhbHVlc1xuICBjb25zdCByZXN1bHQ6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZzsgfSA9IHt9O1xuICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFsdWVzKSkge1xuICAgIGlmICh2YWx1ZSkgcmVzdWx0W25hbWVdID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQ29va2llKFxuICByZXNwb25zZTogUmVzcG9uc2UsXG4gIG1heEFnZTogbnVtYmVyIHwgdW5kZWZpbmVkID0gNjAgKiA2MCAqIDI0ICogMzY1LFxuICBleHBpcmVzOiBEYXRlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICBzZWN1cmU6IGJvb2xlYW4gPSB0cnVlLFxuICBodHRwT25seTogYm9vbGVhbiA9IHRydWUsXG4gIHNhbWVTaXRlOiAnc3RyaWN0JyB8ICdsYXgnIHwgJ25vbmUnID0gJ2xheCcsXG4pOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gIGlmICghcmVzcG9uc2UuY29va2llcykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBjb29raWVzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZzsgfSA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhyZXNwb25zZS5jb29raWVzKSkge1xuICAgIGNvb2tpZXNba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgY29uc3QgaGVhZGVyOiBzdHJpbmdbXSA9IFtdO1xuXG4gIE9iamVjdC5rZXlzKGNvb2tpZXMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gY29va2llc1trZXldO1xuICAgIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAgIC8vIElmIGV4cGxpY2l0bHkgdW5zZXQsIGV4cGlyZSB0aGUgY29va2llIHZhbHVlXG4gICAgICBoZWFkZXIucHVzaChjb29raWUuc2VyaWFsaXplKGtleSwgJycsIHtcbiAgICAgICAgZXhwaXJlczogbmV3IERhdGUoKSwgc2VjdXJlLCBodHRwT25seSwgc2FtZVNpdGUsXG4gICAgICB9KSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgLy8gT3RoZXJ3aXNlLCBzZXQgaXQgb25seSBpZiBhIHZhbHVlIHdhcyBnaXZlblxuICAgICAgaGVhZGVyLnB1c2goY29va2llLnNlcmlhbGl6ZShrZXksIHZhbHVlLCB7XG4gICAgICAgIG1heEFnZSwgZXhwaXJlcywgc2VjdXJlLCBodHRwT25seSwgc2FtZVNpdGUsXG4gICAgICB9KSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gaGVhZGVyO1xufVxuXG4vKipcbiAqIENhc2UtaW5zZW5zaXRpdmUgaGVhZGVyIGxvb2t1cFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGVhZGVyKG5hbWU6IHN0cmluZywgaGVhZGVyczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQ7IH0gfCB1bmRlZmluZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIWhlYWRlcnMpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgLy8gRXhhY3QgbWF0Y2hcbiAgaWYgKGhlYWRlcnNbbmFtZV0pIHJldHVybiBoZWFkZXJzW25hbWVdO1xuXG4gIC8vIENhc2UtaW5zZW5zaXRpdmUgbWF0Y2hcbiAgY29uc3QgbG93ZXJjYXNlZDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQ7IH0gPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoaGVhZGVycykpIHtcbiAgICBsb3dlcmNhc2VkW2tleS50b0xvd2VyQ2FzZSgpXSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiBsb3dlcmNhc2VkW25hbWUudG9Mb3dlckNhc2UoKV07XG59XG5cbi8qKlxuICogQ2FzZS1pbnNlbnNpdGl2ZSBoZWFkZXIgc2V0dGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0SGVhZGVyKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgaGVhZGVyczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQ7IH0gfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgaWYgKCFoZWFkZXJzKSByZXR1cm47XG4gIGxldCBzZXQgPSBmYWxzZTtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoaGVhZGVycykpIHtcbiAgICBpZiAobmFtZS50b0xvd2VyQ2FzZSgpID09PSBrZXkudG9Mb3dlckNhc2UoKSkge1xuICAgICAgaGVhZGVyc1trZXldID0gdmFsdWU7XG4gICAgICBzZXQgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBpZiAoIXNldCkgaGVhZGVyc1tuYW1lXSA9IHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSZXF1ZXN0KGV2ZW50OiBBUElHYXRld2F5UHJveHlFdmVudCk6IFJlcXVlc3Qge1xuICByZXR1cm4ge1xuICAgIG1ldGhvZDogZXZlbnQuaHR0cE1ldGhvZCxcbiAgICBwYXRoOiBzdGFuZGFyZFBhdGgoZXZlbnQucGF0aCksXG4gICAgcXVlcnk6IHN0YW5kYXJkUXVlcnlQYXJhbWV0ZXJzKGV2ZW50LnF1ZXJ5U3RyaW5nUGFyYW1ldGVycyksXG4gICAgaGVhZGVyczogc3RhbmRhcmRIZWFkZXJzKGV2ZW50LmhlYWRlcnMpLFxuICAgIGJvZHk6IHBhcnNlQm9keShldmVudC5ib2R5LCBldmVudC5pc0Jhc2U2NEVuY29kZWQsIGdldEhlYWRlcignQ29udGVudC1UeXBlJywgZXZlbnQuaGVhZGVycykpLFxuICAgIGNvb2tpZXM6IHBhcnNlQ29va2llKGV2ZW50LmhlYWRlcnMpLFxuICAgIHBhdGhQYXJhbWV0ZXJzOiB7fSwgLy8gVGhlc2UgbmVlZCB0byBiZSBwYXJzZWQgYXMgcGFydCBvZiByb3V0ZSBtYXRjaGluZ1xuICAgIGNvbnRleHQ6IHsgZXZlbnQgfSwgLy8gWW91IGNhbiBhZGQgYW55IGN1c3RvbSB2YWx1ZXMgeW91IG5lZWQgdG8gdGhlIHJlcXVlc3QgdmlhIHRoaXMgY29udGV4dFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hSb3V0ZShyb3V0ZXM6IFJvdXRlcywgcGF0aDogc3RyaW5nKTogeyBtZXRob2RzOiBSb3V0ZSB8IHVuZGVmaW5lZCwgcGFyYW1zOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmc7IH07IH0ge1xuICAvLyBEaXJlY3QgbWF0Y2hcbiAgaWYgKHJvdXRlc1twYXRoXSkgcmV0dXJuIHsgbWV0aG9kczogcm91dGVzW3BhdGhdLCBwYXJhbXM6IHt9IH07XG5cbiAgLy8gTGlzdCBwYXRocyB0byBjaGVja1xuICBjb25zdCBwYXRocyA9IE9iamVjdC5rZXlzKHJvdXRlcyk7XG5cbiAgLy8gQ2FzZS1pbnNlbnNpdGl2ZSBtYXRjaFxuICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBwYXRocykge1xuICAgIGlmIChjYW5kaWRhdGUudG9Mb3dlckNhc2UoKSA9PT0gcGF0aC50b0xvd2VyQ2FzZSgpKSByZXR1cm4geyBtZXRob2RzOiByb3V0ZXNbY2FuZGlkYXRlXSwgcGFyYW1zOiB7fSB9O1xuICB9XG5cbiAgLy8gUGF0aC1wYXJhbWV0ZXIgbWF0Y2hpbmdcbiAgY29uc3QgcGF0aFNlZ21lbnRzID0gcGF0aC5zcGxpdCgnLycpO1xuXG4gIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIHBhdGhzKSB7XG4gICAgY29uc3QgY2FuZGlkYXRlU2VnbWVudHMgPSBjYW5kaWRhdGUuc3BsaXQoJy8nKTtcblxuICAgIC8vIEZpcnN0IGNoZWNrOiBsZW5ndGggbWF0Y2hcbiAgICBpZiAocGF0aFNlZ21lbnRzLmxlbmd0aCAhPT0gY2FuZGlkYXRlU2VnbWVudHMubGVuZ3RoKSBjb250aW51ZTtcblxuICAgIGZvciAobGV0IHMgPSAwOyBzIDwgcGF0aFNlZ21lbnRzLmxlbmd0aDsgcysrKSB7XG4gICAgICBjb25zdCBwYXJhbXM6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZzsgfSA9IHt9O1xuICAgICAgY29uc3QgcGF0aFNlZ21lbnQgPSBwYXRoU2VnbWVudHNbc10gPz8gJyc7XG4gICAgICBjb25zdCBjYW5kaWRhdGVTZWdtZW50ID0gY2FuZGlkYXRlU2VnbWVudHNbc10gPz8gJyc7XG4gICAgICBpZiAoY2FuZGlkYXRlU2VnbWVudC5zdGFydHNXaXRoKCd7JykgJiYgY2FuZGlkYXRlU2VnbWVudC5lbmRzV2l0aCgnfScpKSB7XG4gICAgICAgIC8vIFBhdGggcGFyYW1ldGVyXG4gICAgICAgIGNvbnN0IG5hbWUgPSBjYW5kaWRhdGVTZWdtZW50LnNsaWNlKDEsIC0xKTtcbiAgICAgICAgcGFyYW1zW25hbWVdID0gcGF0aFNlZ21lbnQ7XG4gICAgICB9IGVsc2UgaWYgKHBhdGhTZWdtZW50LnRvTG93ZXJDYXNlKCkgIT09IGNhbmRpZGF0ZVNlZ21lbnQudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKHMgPT09IHBhdGhTZWdtZW50cy5sZW5ndGggLSAxKSB7XG4gICAgICAgIC8vIE1hdGNoZWQgYWxsIHNlZ21lbnRzXG4gICAgICAgIHJldHVybiB7IG1ldGhvZHM6IHJvdXRlc1tjYW5kaWRhdGVdLCBwYXJhbXMgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBtZXRob2RzOiB1bmRlZmluZWQsIHBhcmFtczoge30gfTtcbn1cbiJdfQ==
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUUEsb0NBS0M7QUFNRCwwREFRQztBQU1ELDBDQU1DO0FBT0QsOEJBa0JDO0FBTUQsa0NBVUM7QUFFRCxrQ0FpQ0M7QUFLRCw4QkFZQztBQUtELDhCQVVDO0FBRUQsb0NBV0M7QUFFRCxnQ0F5Q0M7QUExTUQsK0NBQWlDO0FBR2pDOzs7R0FHRztBQUNILFNBQWdCLFlBQVksQ0FBQyxJQUFZO0lBQ3ZDLDhDQUE4QztJQUM5QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUQsY0FBYztJQUNkLE9BQU8sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDbEMsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLHVCQUF1QixDQUFDLEtBQXFEO0lBQzNGLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDdEIsTUFBTSxNQUFNLEdBQWdDLEVBQUUsQ0FBQztJQUMvQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQixJQUFJLEtBQUs7WUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxPQUFnRDtJQUM5RSxNQUFNLE1BQU0sR0FB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QUFJLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDO1lBQzdCLENBQUM7aUJBQU0sSUFBSSxXQUFXLENBQUMsV0FBVyxFQUFFLEtBQUssZ0JBQWdCLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztnQkFDeEUsTUFBTTtZQUNSLENBQUM7WUFFRCxJQUFJLENBQUMsS0FBSyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNsQyx1QkFBdUI7Z0JBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ2hELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUM7QUFDaEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQSUdhdGV3YXlQcm94eUV2ZW50IH0gZnJvbSAnYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBjb29raWUgZnJvbSAnY29va2llJztcbmltcG9ydCB7IFJlcXVlc3QsIFJlc3BvbnNlLCBSb3V0ZSwgUm91dGVzIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogRW5zdXJlcyB0aGUgcGF0aCBhbHdheXMgaGFzIGEgbGVhZGluZyBzbGFzaCBhbmQgbmV2ZXIgYSB0cmFpbGluZyBzbGFzaFxuICogQHBhcmFtIHBhdGggQVBJR2F0ZXdheVByb3h5RXZlbnQucGF0aFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhbmRhcmRQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIEdldCBwYXRoIHNlZ21lbnRzLCBmaWx0ZXJpbmcgb3V0IGFueSBibGFua3NcbiAgY29uc3Qgc2VnbWVudHMgPSBwYXRoLnNwbGl0KCcvJykuZmlsdGVyKChzZWdtZW50KSA9PiBzZWdtZW50KTtcbiAgLy8gUmV0dXJuIHBhdGhcbiAgcmV0dXJuIGAvJHtzZWdtZW50cy5qb2luKCcvJyl9YDtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIGEgbm9uLW51bGwgb2JqZWN0IGNvbnRhaW5pbmcgb25seSBxdWVyeS1zdHJpbmcgcGFyYW1ldGVycyB0aGF0IGhhdmUgYSB2YWx1ZS5cbiAqIEBwYXJhbSBxdWVyeSBBUElHYXRld2F5UHJveHlFdmVudC5xdWVyeVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhbmRhcmRRdWVyeVBhcmFtZXRlcnMocXVlcnk6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZDsgfSB8IG51bGwpOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmc7IH0ge1xuICBpZiAoIXF1ZXJ5KSByZXR1cm4ge307XG4gIGNvbnN0IHJlc3VsdDogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nOyB9ID0ge307XG4gIE9iamVjdC5rZXlzKHF1ZXJ5KS5mb3JFYWNoKChwYXJhbWV0ZXIpID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IHF1ZXJ5W3BhcmFtZXRlcl07XG4gICAgaWYgKHZhbHVlKSByZXN1bHRbcGFyYW1ldGVyXSA9IHZhbHVlO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIGFsbCBoZWFkZXJzIGhhdmUgYSB2YWx1ZS5cbiAqIEBwYXJhbSBoZWFkZXJzIEFQSUdhdGV3YXlQcm94eUV2ZW50LmhlYWRlcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YW5kYXJkSGVhZGVycyhoZWFkZXJzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQ7IH0pOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmc7IH0ge1xuICBjb25zdCByZXN1bHQ6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZzsgfSA9IHt9O1xuICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoaGVhZGVycyB8fCB7fSkpIHtcbiAgICByZXN1bHRbbmFtZV0gPSB2YWx1ZSA/PyAnJztcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgYm9keSAoaWYgcHJlc2VudCkgZnJvbSBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQgb3IgSlNPTiBzdHJpbmcuXG4gKiBJZiB0aGUgYm9keSBmYWlscyB0byBwYXJzZSBhcyBKU09uLCB0aGUgcmF3IGJvZHkgaXMgcmV0dXJuZWQuXG4gKiBAcGFyYW0gYm9keSBBUElHYXRld2F5UHJveHlFdmVudC5ib2R5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUJvZHkoYm9keTogc3RyaW5nIHwgbnVsbCwgaXNCYXNlNjRFbmNvZGVkOiBib29sZWFuLCBjb250ZW50VHlwZTogc3RyaW5nID0gJ2FwcGxpY2F0aW9uL2pzb24nKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBzdHJpbmcge1xuICBpZiAoIWJvZHkpIHJldHVybiB7fTtcblxuICBjb25zdCBjb250ZW50ID0gaXNCYXNlNjRFbmNvZGVkID8gQnVmZmVyLmZyb20oYm9keSwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCd1dGY4JykgOiBib2R5O1xuXG4gIHRyeSB7XG4gICAgaWYgKChjb250ZW50VHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpIHtcbiAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMobmV3IFVSTFNlYXJjaFBhcmFtcyhjb250ZW50KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIERlZmF1bHQgdG8gcGFyc2luZyBhcyBKU09OOlxuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoY29udGVudCk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcihgRXJyb3IgcGFyc2luZyByZXF1ZXN0IGJvZHk6ICR7ZX1gKTtcbiAgfVxuXG4gIC8vIEZhbGxiYWNrIHRvIHJldHVybmluZyB0aGUgcmF3IGJvZHlcbiAgcmV0dXJuIGNvbnRlbnQ7XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBjb29raWUsIGlmIGFueSwgcmV0dXJuaW5nIGF0IG1pbmltdW0gYW4gZW1wdHkgb2JqZWN0LlxuICogQHBhcmFtIGhlYWRlcnMgQVBJR2F0ZXdheVByb3h5RXZlbnQuaGVhZGVyc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb29raWUoaGVhZGVyczogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkOyB9KTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nOyB9IHtcbiAgY29uc3QgaGVhZGVyID0gZ2V0SGVhZGVyKCdDb29raWUnLCBoZWFkZXJzKTtcbiAgY29uc3QgdmFsdWVzID0gaGVhZGVyID8gY29va2llLnBhcnNlKGhlYWRlcikgOiB7fTtcblxuICAvLyBFbnN1cmUgd2UgZG9uJ3QgcmV0dXJuIGFueSB1bmRlZmluZWQgdmFsdWVzXG4gIGNvbnN0IHJlc3VsdDogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nOyB9ID0ge307XG4gIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YWx1ZXMpKSB7XG4gICAgaWYgKHZhbHVlKSByZXN1bHRbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDb29raWUoXG4gIHJlc3BvbnNlOiBSZXNwb25zZSxcbiAgbWF4QWdlOiBudW1iZXIgfCB1bmRlZmluZWQgPSA2MCAqIDYwICogMjQgKiAzNjUsXG4gIGV4cGlyZXM6IERhdGUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsXG4gIHNlY3VyZTogYm9vbGVhbiA9IHRydWUsXG4gIGh0dHBPbmx5OiBib29sZWFuID0gdHJ1ZSxcbiAgc2FtZVNpdGU6ICdzdHJpY3QnIHwgJ2xheCcgfCAnbm9uZScgPSAnbGF4Jyxcbik6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFyZXNwb25zZS5jb29raWVzKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGNvb2tpZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nOyB9ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJlc3BvbnNlLmNvb2tpZXMpKSB7XG4gICAgY29va2llc1trZXldID0gdmFsdWU7XG4gIH1cblxuICBjb25zdCBoZWFkZXI6IHN0cmluZ1tdID0gW107XG5cbiAgT2JqZWN0LmtleXMoY29va2llcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSBjb29raWVzW2tleV07XG4gICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgLy8gSWYgZXhwbGljaXRseSB1bnNldCwgZXhwaXJlIHRoZSBjb29raWUgdmFsdWVcbiAgICAgIGhlYWRlci5wdXNoKGNvb2tpZS5zZXJpYWxpemUoa2V5LCAnJywge1xuICAgICAgICBleHBpcmVzOiBuZXcgRGF0ZSgpLCBzZWN1cmUsIGh0dHBPbmx5LCBzYW1lU2l0ZSxcbiAgICAgIH0pKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICAvLyBPdGhlcndpc2UsIHNldCBpdCBvbmx5IGlmIGEgdmFsdWUgd2FzIGdpdmVuXG4gICAgICBoZWFkZXIucHVzaChjb29raWUuc2VyaWFsaXplKGtleSwgdmFsdWUsIHtcbiAgICAgICAgbWF4QWdlLCBleHBpcmVzLCBzZWN1cmUsIGh0dHBPbmx5LCBzYW1lU2l0ZSxcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBoZWFkZXI7XG59XG5cbi8qKlxuICogQ2FzZS1pbnNlbnNpdGl2ZSBoZWFkZXIgbG9va3VwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIZWFkZXIobmFtZTogc3RyaW5nLCBoZWFkZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZDsgfSB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghaGVhZGVycykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAvLyBFeGFjdCBtYXRjaFxuICBpZiAoaGVhZGVyc1tuYW1lXSkgcmV0dXJuIGhlYWRlcnNbbmFtZV07XG5cbiAgLy8gQ2FzZS1pbnNlbnNpdGl2ZSBtYXRjaFxuICBjb25zdCBsb3dlcmNhc2VkOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZDsgfSA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhoZWFkZXJzKSkge1xuICAgIGxvd2VyY2FzZWRba2V5LnRvTG93ZXJDYXNlKCldID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGxvd2VyY2FzZWRbbmFtZS50b0xvd2VyQ2FzZSgpXTtcbn1cblxuLyoqXG4gKiBDYXNlLWluc2Vuc2l0aXZlIGhlYWRlciBzZXR0aW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRIZWFkZXIobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBoZWFkZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZDsgfSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICBpZiAoIWhlYWRlcnMpIHJldHVybjtcbiAgbGV0IHNldCA9IGZhbHNlO1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhoZWFkZXJzKSkge1xuICAgIGlmIChuYW1lLnRvTG93ZXJDYXNlKCkgPT09IGtleS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBoZWFkZXJzW2tleV0gPSB2YWx1ZTtcbiAgICAgIHNldCA9IHRydWU7XG4gICAgfVxuICB9XG4gIGlmICghc2V0KSBoZWFkZXJzW25hbWVdID0gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVJlcXVlc3QoZXZlbnQ6IEFQSUdhdGV3YXlQcm94eUV2ZW50KTogUmVxdWVzdCB7XG4gIHJldHVybiB7XG4gICAgbWV0aG9kOiBldmVudC5odHRwTWV0aG9kLFxuICAgIHBhdGg6IHN0YW5kYXJkUGF0aChldmVudC5wYXRoKSxcbiAgICBxdWVyeTogc3RhbmRhcmRRdWVyeVBhcmFtZXRlcnMoZXZlbnQucXVlcnlTdHJpbmdQYXJhbWV0ZXJzKSxcbiAgICBoZWFkZXJzOiBzdGFuZGFyZEhlYWRlcnMoZXZlbnQuaGVhZGVycyksXG4gICAgYm9keTogcGFyc2VCb2R5KGV2ZW50LmJvZHksIGV2ZW50LmlzQmFzZTY0RW5jb2RlZCwgZ2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCBldmVudC5oZWFkZXJzKSksXG4gICAgY29va2llczogcGFyc2VDb29raWUoZXZlbnQuaGVhZGVycyksXG4gICAgcGF0aFBhcmFtZXRlcnM6IHt9LCAvLyBUaGVzZSBuZWVkIHRvIGJlIHBhcnNlZCBhcyBwYXJ0IG9mIHJvdXRlIG1hdGNoaW5nXG4gICAgY29udGV4dDogeyBldmVudCB9LCAvLyBZb3UgY2FuIGFkZCBhbnkgY3VzdG9tIHZhbHVlcyB5b3UgbmVlZCB0byB0aGUgcmVxdWVzdCB2aWEgdGhpcyBjb250ZXh0XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaFJvdXRlKHJvdXRlczogUm91dGVzLCBwYXRoOiBzdHJpbmcpOiB7IG1ldGhvZHM6IFJvdXRlIHwgdW5kZWZpbmVkLCBwYXJhbXM/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmc7IH07IH0ge1xuICAvLyBEaXJlY3QgbWF0Y2hcbiAgaWYgKHJvdXRlc1twYXRoXSkgcmV0dXJuIHsgbWV0aG9kczogcm91dGVzW3BhdGhdLCBwYXJhbXM6IHt9IH07XG5cbiAgLy8gTGlzdCBwYXRocyB0byBjaGVja1xuICBjb25zdCBwYXRocyA9IE9iamVjdC5rZXlzKHJvdXRlcyk7XG5cbiAgLy8gQ2FzZS1pbnNlbnNpdGl2ZSBtYXRjaFxuICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBwYXRocykge1xuICAgIGlmIChjYW5kaWRhdGUudG9Mb3dlckNhc2UoKSA9PT0gcGF0aC50b0xvd2VyQ2FzZSgpKSByZXR1cm4geyBtZXRob2RzOiByb3V0ZXNbY2FuZGlkYXRlXSwgcGFyYW1zOiB7fSB9O1xuICB9XG5cbiAgLy8gUGF0aC1wYXJhbWV0ZXIgbWF0Y2hpbmdcbiAgY29uc3QgcGF0aFNlZ21lbnRzID0gcGF0aC5zcGxpdCgnLycpO1xuXG4gIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIHBhdGhzKSB7XG4gICAgY29uc3QgY2FuZGlkYXRlU2VnbWVudHMgPSBjYW5kaWRhdGUuc3BsaXQoJy8nKTtcblxuICAgIC8vIEZpcnN0IGNoZWNrOiBsZW5ndGggbWF0Y2hcbiAgICBpZiAocGF0aFNlZ21lbnRzLmxlbmd0aCAhPT0gY2FuZGlkYXRlU2VnbWVudHMubGVuZ3RoKSBjb250aW51ZTtcblxuICAgIGNvbnN0IHBhcmFtczogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nOyB9ID0ge307XG4gICAgZm9yIChsZXQgcyA9IDA7IHMgPCBwYXRoU2VnbWVudHMubGVuZ3RoOyBzKyspIHtcbiAgICAgIGNvbnN0IHBhdGhTZWdtZW50ID0gcGF0aFNlZ21lbnRzW3NdO1xuICAgICAgY29uc3QgY2FuZGlkYXRlU2VnbWVudCA9IGNhbmRpZGF0ZVNlZ21lbnRzW3NdO1xuICAgICAgaWYgKGNhbmRpZGF0ZVNlZ21lbnQuc3RhcnRzV2l0aCgneycpICYmIGNhbmRpZGF0ZVNlZ21lbnQuZW5kc1dpdGgoJ30nKSkge1xuICAgICAgICAvLyBQYXRoIHBhcmFtZXRlclxuICAgICAgICBjb25zdCBuYW1lID0gY2FuZGlkYXRlU2VnbWVudC5zbGljZSgxLCAtMSk7XG4gICAgICAgIHBhcmFtc1tuYW1lXSA9IHBhdGhTZWdtZW50O1xuICAgICAgfSBlbHNlIGlmIChwYXRoU2VnbWVudC50b0xvd2VyQ2FzZSgpICE9PSBjYW5kaWRhdGVTZWdtZW50LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChzID09PSBwYXRoU2VnbWVudHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAvLyBNYXRjaGVkIGFsbCBzZWdtZW50c1xuICAgICAgICByZXR1cm4geyBtZXRob2RzOiByb3V0ZXNbY2FuZGlkYXRlXSwgcGFyYW1zIH07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsgbWV0aG9kczogdW5kZWZpbmVkIH07XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scloud/lambda-api",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "description": "Lambda handler for API Gateway proxy requests",
5
5
  "main": "dist/index.js",
6
6
  "files": [