@arinoto/cdk-arch 0.6.0 → 0.6.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"http-handler.d.ts","sourceRoot":"","sources":["../src/http-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEzE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,MAAM,OAAO,GAAG,MAAM;IAAE,KAAK,EAAE,OAAO,KAAK,CAAA;CAAE,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,WAAW,GACtB,OAAO,SAAS,SAAS,EACzB,CAAC,SAAS,MAAM,OAAO,GAAG,MAAM,EAEhC,UAAU,eAAe,EACzB,WAAW,YAAY,CAAC,OAAO,CAAC,EAChC,WAAW,CAAC,EACZ,UAAS,OAAyB,KACjC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CA+B1B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,SAAS,SAAS,EACzB,CAAC,SAAS,MAAM,OAAO,GAAG,MAAM,EAEhC,UAAU,eAAe,EACzB,WAAW,YAAY,CAAC,OAAO,CAAC,EAChC,YAAY,SAAS,CAAC,EAAE,EACxB,UAAS,OAAyB,KACjC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAQhC,CAAC"}
1
+ {"version":3,"file":"http-handler.d.ts","sourceRoot":"","sources":["../src/http-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEzE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,MAAM,OAAO,GAAG,MAAM;IAAE,KAAK,EAAE,OAAO,KAAK,CAAA;CAAE,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,WAAW,GACtB,OAAO,SAAS,SAAS,EACzB,CAAC,SAAS,MAAM,OAAO,GAAG,MAAM,EAEhC,UAAU,eAAe,EACzB,WAAW,YAAY,CAAC,OAAO,CAAC,EAChC,WAAW,CAAC,EACZ,UAAS,OAAyB,KACjC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAuC1B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,SAAS,SAAS,EACzB,CAAC,SAAS,MAAM,OAAO,GAAG,MAAM,EAEhC,UAAU,eAAe,EACzB,WAAW,YAAY,CAAC,OAAO,CAAC,EAChC,YAAY,SAAS,CAAC,EAAE,EACxB,UAAS,OAAyB,KACjC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAQhC,CAAC"}
@@ -10,18 +10,26 @@ const httpHandler = (endpoint, container, routeName, fetcher = () => ({ fetch })
10
10
  const [method, path] = route.path.split(' ');
11
11
  const pathParams = path.match(/\{(\w+)\}/g) || [];
12
12
  const handler = async (...args) => {
13
- const url = pathParams.reduce((u, param, i) => args[i] !== undefined ? u.replace(param, encodeURIComponent(String(args[i]))) : u, `${endpoint.baseUrl}${path}`);
13
+ const baseUrl = pathParams.reduce((u, param, i) => args[i] !== undefined ? u.replace(param, encodeURIComponent(String(args[i]))) : u, `${endpoint.baseUrl}${path}`);
14
+ const extraArgs = args.slice(pathParams.length);
15
+ const isGet = (method ?? 'GET') === 'GET';
16
+ let url = baseUrl;
17
+ if (isGet && extraArgs.length > 0 && extraArgs[0] != null && typeof extraArgs[0] === 'object') {
18
+ const qs = new URLSearchParams(extraArgs[0]).toString();
19
+ if (qs) {
20
+ url = `${baseUrl}?${qs}`;
21
+ }
22
+ }
14
23
  const options = {
15
24
  method: method || 'GET',
16
25
  headers: { 'Content-Type': 'application/json' },
17
- ...((method === 'POST' || method === 'PUT') && args.length > pathParams.length
18
- ? { body: JSON.stringify(args.slice(pathParams.length)) }
26
+ ...(!isGet && extraArgs.length > 0
27
+ ? { body: extraArgs.length === 1 ? JSON.stringify(extraArgs[0]) : JSON.stringify(extraArgs) }
19
28
  : {})
20
29
  };
21
- console.log('HTTP handler. Will fetch', { url, options });
22
30
  const response = await fetcher().fetch(url, options);
23
31
  if (!response.ok) {
24
- throw new Error(`Remote call to ${url} with ${JSON.stringify(options)} failed: ${JSON.stringify(response)}`);
32
+ throw new Error(`Remote call to ${url} with ${JSON.stringify(options)} failed: ${response.status} ${response.statusText}`);
25
33
  }
26
34
  return response.json();
27
35
  };
@@ -55,4 +63,4 @@ const createHttpBindings = (endpoint, container, routeNames, fetcher = () => ({
55
63
  }, {});
56
64
  };
57
65
  exports.createHttpBindings = createHttpBindings;
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2h0dHAtaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFNQTs7O0dBR0c7QUFDSSxNQUFNLFdBQVcsR0FBRyxDQUl6QixRQUF5QixFQUN6QixTQUFnQyxFQUNoQyxTQUFZLEVBQ1osVUFBbUIsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBQyxDQUFDLEVBQ1AsRUFBRTtJQUM3QixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTVDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbEQsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFFLEdBQUcsSUFBVyxFQUFFLEVBQUU7UUFDdkMsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FDM0IsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNsRyxHQUFHLFFBQVEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQzdCLENBQUM7UUFFRixNQUFNLE9BQU8sR0FBZ0I7WUFDM0IsTUFBTSxFQUFFLE1BQU0sSUFBSSxLQUFLO1lBQ3ZCLE9BQU8sRUFBRSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRTtZQUMvQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxJQUFJLE1BQU0sS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNO2dCQUM1RSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFO2dCQUN6RCxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ1IsQ0FBQztRQUVGLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLEVBQUUsRUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQztRQUN4RCxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFckQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixHQUFHLFNBQVMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvRyxDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxPQUFvQyxDQUFDO0FBQzlDLENBQUMsQ0FBQztBQXZDVyxRQUFBLFdBQVcsZUF1Q3RCO0FBRUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSSxNQUFNLGtCQUFrQixHQUFHLENBSWhDLFFBQXlCLEVBQ3pCLFNBQWdDLEVBQ2hDLFVBQXdCLEVBQ3hCLFVBQW1CLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBQyxLQUFLLEVBQUMsQ0FBQyxFQUNELEVBQUU7SUFDbkMsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUN0QixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUNaLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFBLG1CQUFXLEVBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDNUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLEVBQ0QsRUFBcUMsQ0FDdEMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQWhCVyxRQUFBLGtCQUFrQixzQkFnQjdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBpQ29udGFpbmVyLCBBcGlSb3V0ZXMsIFJvdXRlSGFuZGxlcnMgfSBmcm9tICcuL2FwaS1jb250YWluZXInO1xuaW1wb3J0IHsgRnVuY3Rpb25IYW5kbGVyIH0gZnJvbSAnLi9mdW5jdGlvbic7XG5pbXBvcnQgeyBTZXJ2aWNlRW5kcG9pbnQgfSBmcm9tICcuL2JpbmRpbmcnO1xuXG5leHBvcnQgdHlwZSBGZXRjaGVyID0gKCkgPT4geyBmZXRjaDogdHlwZW9mIGZldGNoIH07XG5cbi8qKlxuICogQ3JlYXRlIGFuIEhUVFAgaGFuZGxlciBmb3IgYSByb3V0ZSBieSBuYW1lLlxuICogTG9va3MgdXAgdGhlIHJvdXRlIHBhdGggZnJvbSB0aGUgY29udGFpbmVyJ3MgcmVnaXN0cnkuXG4gKi9cbmV4cG9ydCBjb25zdCBodHRwSGFuZGxlciA9IDxcbiAgVFJvdXRlcyBleHRlbmRzIEFwaVJvdXRlcyxcbiAgSyBleHRlbmRzIGtleW9mIFRSb3V0ZXMgJiBzdHJpbmdcbj4oXG4gIGVuZHBvaW50OiBTZXJ2aWNlRW5kcG9pbnQsXG4gIGNvbnRhaW5lcjogQXBpQ29udGFpbmVyPFRSb3V0ZXM+LFxuICByb3V0ZU5hbWU6IEssXG4gIGZldGNoZXI6IEZldGNoZXIgPSAoKSA9PiAoe2ZldGNofSlcbik6IFJvdXRlSGFuZGxlcnM8VFJvdXRlcz5bS10gPT4ge1xuICBjb25zdCByb3V0ZSA9IGNvbnRhaW5lci5nZXRSb3V0ZShyb3V0ZU5hbWUpO1xuXG4gIGNvbnN0IFttZXRob2QsIHBhdGhdID0gcm91dGUucGF0aC5zcGxpdCgnICcpO1xuICBjb25zdCBwYXRoUGFyYW1zID0gcGF0aC5tYXRjaCgvXFx7KFxcdyspXFx9L2cpIHx8IFtdO1xuXG4gIGNvbnN0IGhhbmRsZXIgPSBhc3luYyAoLi4uYXJnczogYW55W10pID0+IHtcbiAgICBjb25zdCB1cmwgPSBwYXRoUGFyYW1zLnJlZHVjZShcbiAgICAgICh1LCBwYXJhbSwgaSkgPT4gYXJnc1tpXSAhPT0gdW5kZWZpbmVkID8gdS5yZXBsYWNlKHBhcmFtLCBlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGFyZ3NbaV0pKSkgOiB1LFxuICAgICAgYCR7ZW5kcG9pbnQuYmFzZVVybH0ke3BhdGh9YFxuICAgICk7XG5cbiAgICBjb25zdCBvcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgIG1ldGhvZDogbWV0aG9kIHx8ICdHRVQnLFxuICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgICAuLi4oKG1ldGhvZCA9PT0gJ1BPU1QnIHx8IG1ldGhvZCA9PT0gJ1BVVCcpICYmIGFyZ3MubGVuZ3RoID4gcGF0aFBhcmFtcy5sZW5ndGhcbiAgICAgICAgPyB7IGJvZHk6IEpTT04uc3RyaW5naWZ5KGFyZ3Muc2xpY2UocGF0aFBhcmFtcy5sZW5ndGgpKSB9XG4gICAgICAgIDoge30pXG4gICAgfTtcblxuICAgIGNvbnNvbGUubG9nKCdIVFRQIGhhbmRsZXIuIFdpbGwgZmV0Y2gnLCB7dXJsLCBvcHRpb25zfSk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaGVyKCkuZmV0Y2godXJsLCBvcHRpb25zKTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUmVtb3RlIGNhbGwgdG8gJHt1cmx9IHdpdGggJHtKU09OLnN0cmluZ2lmeShvcHRpb25zKX0gZmFpbGVkOiAke0pTT04uc3RyaW5naWZ5KHJlc3BvbnNlKX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpO1xuICB9O1xuXG4gIHJldHVybiBoYW5kbGVyIGFzIFJvdXRlSGFuZGxlcnM8VFJvdXRlcz5bS107XG59O1xuXG4vKipcbiAqIENyZWF0ZSBIVFRQIGJpbmRpbmdzIGZvciBtdWx0aXBsZSByb3V0ZXMgYXMgYSBjYWxsYWJsZSBjbGllbnQuXG4gKiBSZXR1cm5zIGEgc3Ryb25nbHktdHlwZWQgb2JqZWN0IHdoZXJlIGVhY2ggcm91dGUgbmFtZSBtYXBzIHRvIGFuIGFzeW5jIGZ1bmN0aW9uXG4gKiB3aXRoIHRoZSBzYW1lIHNpZ25hdHVyZSBhcyB0aGUgb3JpZ2luYWwgaGFuZGxlci5cbiAqXG4gKiBAdHlwZVBhcmFtIFRSb3V0ZXMgLSBUaGUgcm91dGVzIHR5cGUgZnJvbSB0aGUgQXBpQ29udGFpbmVyXG4gKiBAdHlwZVBhcmFtIEsgLSBUaGUgc3Vic2V0IG9mIHJvdXRlIG5hbWVzIHRvIGluY2x1ZGUgaW4gdGhlIGNsaWVudFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBhcGkgPSBuZXcgQXBpQ29udGFpbmVyKGFyY2gsICdhcGknLCB7XG4gKiAgIGhlbGxvOiB7IHBhdGg6ICdHRVQgL3YxL2FwaS9oZWxsby97bmFtZX0nLCBoYW5kbGVyOiBoZWxsb0Z1bmN0aW9uIH0sXG4gKiAgIGhlbGxvczogeyBwYXRoOiAnR0VUIC92MS9hcGkvaGVsbG9zJywgaGFuZGxlcjogaGVsbG9zRnVuY3Rpb24gfVxuICogfSk7XG4gKlxuICogY29uc3QgY2xpZW50ID0gY3JlYXRlSHR0cEJpbmRpbmdzKGVuZHBvaW50LCBhcGksIFsnaGVsbG8nLCAnaGVsbG9zJ10pO1xuICogYXdhaXQgY2xpZW50LmhlbGxvKCdKb2huJyk7ICAvLyAobmFtZTogc3RyaW5nKSA9PiBQcm9taXNlPHN0cmluZz5cbiAqIGF3YWl0IGNsaWVudC5oZWxsb3MoKTsgICAgICAgLy8gKCkgPT4gUHJvbWlzZTxHcmVldGluZ1tdPlxuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVIdHRwQmluZGluZ3MgPSA8XG4gIFRSb3V0ZXMgZXh0ZW5kcyBBcGlSb3V0ZXMsXG4gIEsgZXh0ZW5kcyBrZXlvZiBUUm91dGVzICYgc3RyaW5nXG4+KFxuICBlbmRwb2ludDogU2VydmljZUVuZHBvaW50LFxuICBjb250YWluZXI6IEFwaUNvbnRhaW5lcjxUUm91dGVzPixcbiAgcm91dGVOYW1lczogcmVhZG9ubHkgS1tdLFxuICBmZXRjaGVyOiBGZXRjaGVyID0gKCkgPT4gKHtmZXRjaH0pXG4pOiBQaWNrPFJvdXRlSGFuZGxlcnM8VFJvdXRlcz4sIEs+ID0+IHtcbiAgcmV0dXJuIHJvdXRlTmFtZXMucmVkdWNlKFxuICAgIChhY2MsIG5hbWUpID0+IHtcbiAgICAgIGFjY1tuYW1lXSA9IGh0dHBIYW5kbGVyKGVuZHBvaW50LCBjb250YWluZXIsIG5hbWUsIGZldGNoZXIpO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LFxuICAgIHt9IGFzIFBpY2s8Um91dGVIYW5kbGVyczxUUm91dGVzPiwgSz5cbiAgKTtcbn07XG4iXX0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2h0dHAtaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFNQTs7O0dBR0c7QUFDSSxNQUFNLFdBQVcsR0FBRyxDQUl6QixRQUF5QixFQUN6QixTQUFnQyxFQUNoQyxTQUFZLEVBQ1osVUFBbUIsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBQyxDQUFDLEVBQ1AsRUFBRTtJQUM3QixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTVDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbEQsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFFLEdBQUcsSUFBVyxFQUFFLEVBQUU7UUFDdkMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FDL0IsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNsRyxHQUFHLFFBQVEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQzdCLENBQUM7UUFFRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRCxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUM7UUFFMUMsSUFBSSxHQUFHLEdBQUcsT0FBTyxDQUFDO1FBQ2xCLElBQUksS0FBSyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUYsTUFBTSxFQUFFLEdBQUcsSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBMkIsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xGLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQUMsR0FBRyxHQUFHLEdBQUcsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQUMsQ0FBQztRQUN2QyxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQWdCO1lBQzNCLE1BQU0sRUFBRSxNQUFNLElBQUksS0FBSztZQUN2QixPQUFPLEVBQUUsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUU7WUFDL0MsR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFDaEMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUM3RixDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ1IsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLE1BQU0sT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVyRCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLEdBQUcsU0FBUyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZLFFBQVEsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDN0gsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUMsQ0FBQztJQUVGLE9BQU8sT0FBb0MsQ0FBQztBQUM5QyxDQUFDLENBQUM7QUEvQ1csUUFBQSxXQUFXLGVBK0N0QjtBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0ksTUFBTSxrQkFBa0IsR0FBRyxDQUloQyxRQUF5QixFQUN6QixTQUFnQyxFQUNoQyxVQUF3QixFQUN4QixVQUFtQixHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUMsS0FBSyxFQUFDLENBQUMsRUFDRCxFQUFFO0lBQ25DLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FDdEIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDWixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBQSxtQkFBVyxFQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQyxFQUNELEVBQXFDLENBQ3RDLENBQUM7QUFDSixDQUFDLENBQUM7QUFoQlcsUUFBQSxrQkFBa0Isc0JBZ0I3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwaUNvbnRhaW5lciwgQXBpUm91dGVzLCBSb3V0ZUhhbmRsZXJzIH0gZnJvbSAnLi9hcGktY29udGFpbmVyJztcbmltcG9ydCB7IEZ1bmN0aW9uSGFuZGxlciB9IGZyb20gJy4vZnVuY3Rpb24nO1xuaW1wb3J0IHsgU2VydmljZUVuZHBvaW50IH0gZnJvbSAnLi9iaW5kaW5nJztcblxuZXhwb3J0IHR5cGUgRmV0Y2hlciA9ICgpID0+IHsgZmV0Y2g6IHR5cGVvZiBmZXRjaCB9O1xuXG4vKipcbiAqIENyZWF0ZSBhbiBIVFRQIGhhbmRsZXIgZm9yIGEgcm91dGUgYnkgbmFtZS5cbiAqIExvb2tzIHVwIHRoZSByb3V0ZSBwYXRoIGZyb20gdGhlIGNvbnRhaW5lcidzIHJlZ2lzdHJ5LlxuICovXG5leHBvcnQgY29uc3QgaHR0cEhhbmRsZXIgPSA8XG4gIFRSb3V0ZXMgZXh0ZW5kcyBBcGlSb3V0ZXMsXG4gIEsgZXh0ZW5kcyBrZXlvZiBUUm91dGVzICYgc3RyaW5nXG4+KFxuICBlbmRwb2ludDogU2VydmljZUVuZHBvaW50LFxuICBjb250YWluZXI6IEFwaUNvbnRhaW5lcjxUUm91dGVzPixcbiAgcm91dGVOYW1lOiBLLFxuICBmZXRjaGVyOiBGZXRjaGVyID0gKCkgPT4gKHtmZXRjaH0pXG4pOiBSb3V0ZUhhbmRsZXJzPFRSb3V0ZXM+W0tdID0+IHtcbiAgY29uc3Qgcm91dGUgPSBjb250YWluZXIuZ2V0Um91dGUocm91dGVOYW1lKTtcblxuICBjb25zdCBbbWV0aG9kLCBwYXRoXSA9IHJvdXRlLnBhdGguc3BsaXQoJyAnKTtcbiAgY29uc3QgcGF0aFBhcmFtcyA9IHBhdGgubWF0Y2goL1xceyhcXHcrKVxcfS9nKSB8fCBbXTtcblxuICBjb25zdCBoYW5kbGVyID0gYXN5bmMgKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgY29uc3QgYmFzZVVybCA9IHBhdGhQYXJhbXMucmVkdWNlKFxuICAgICAgKHUsIHBhcmFtLCBpKSA9PiBhcmdzW2ldICE9PSB1bmRlZmluZWQgPyB1LnJlcGxhY2UocGFyYW0sIGVuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoYXJnc1tpXSkpKSA6IHUsXG4gICAgICBgJHtlbmRwb2ludC5iYXNlVXJsfSR7cGF0aH1gXG4gICAgKTtcblxuICAgIGNvbnN0IGV4dHJhQXJncyA9IGFyZ3Muc2xpY2UocGF0aFBhcmFtcy5sZW5ndGgpO1xuICAgIGNvbnN0IGlzR2V0ID0gKG1ldGhvZCA/PyAnR0VUJykgPT09ICdHRVQnO1xuXG4gICAgbGV0IHVybCA9IGJhc2VVcmw7XG4gICAgaWYgKGlzR2V0ICYmIGV4dHJhQXJncy5sZW5ndGggPiAwICYmIGV4dHJhQXJnc1swXSAhPSBudWxsICYmIHR5cGVvZiBleHRyYUFyZ3NbMF0gPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBxcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoZXh0cmFBcmdzWzBdIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4pLnRvU3RyaW5nKCk7XG4gICAgICBpZiAocXMpIHsgdXJsID0gYCR7YmFzZVVybH0/JHtxc31gOyB9XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9uczogUmVxdWVzdEluaXQgPSB7XG4gICAgICBtZXRob2Q6IG1ldGhvZCB8fCAnR0VUJyxcbiAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LFxuICAgICAgLi4uKCFpc0dldCAmJiBleHRyYUFyZ3MubGVuZ3RoID4gMFxuICAgICAgICA/IHsgYm9keTogZXh0cmFBcmdzLmxlbmd0aCA9PT0gMSA/IEpTT04uc3RyaW5naWZ5KGV4dHJhQXJnc1swXSkgOiBKU09OLnN0cmluZ2lmeShleHRyYUFyZ3MpIH1cbiAgICAgICAgOiB7fSlcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaGVyKCkuZmV0Y2godXJsLCBvcHRpb25zKTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUmVtb3RlIGNhbGwgdG8gJHt1cmx9IHdpdGggJHtKU09OLnN0cmluZ2lmeShvcHRpb25zKX0gZmFpbGVkOiAke3Jlc3BvbnNlLnN0YXR1c30gJHtyZXNwb25zZS5zdGF0dXNUZXh0fWApO1xuICAgIH1cblxuICAgIHJldHVybiByZXNwb25zZS5qc29uKCk7XG4gIH07XG5cbiAgcmV0dXJuIGhhbmRsZXIgYXMgUm91dGVIYW5kbGVyczxUUm91dGVzPltLXTtcbn07XG5cbi8qKlxuICogQ3JlYXRlIEhUVFAgYmluZGluZ3MgZm9yIG11bHRpcGxlIHJvdXRlcyBhcyBhIGNhbGxhYmxlIGNsaWVudC5cbiAqIFJldHVybnMgYSBzdHJvbmdseS10eXBlZCBvYmplY3Qgd2hlcmUgZWFjaCByb3V0ZSBuYW1lIG1hcHMgdG8gYW4gYXN5bmMgZnVuY3Rpb25cbiAqIHdpdGggdGhlIHNhbWUgc2lnbmF0dXJlIGFzIHRoZSBvcmlnaW5hbCBoYW5kbGVyLlxuICpcbiAqIEB0eXBlUGFyYW0gVFJvdXRlcyAtIFRoZSByb3V0ZXMgdHlwZSBmcm9tIHRoZSBBcGlDb250YWluZXJcbiAqIEB0eXBlUGFyYW0gSyAtIFRoZSBzdWJzZXQgb2Ygcm91dGUgbmFtZXMgdG8gaW5jbHVkZSBpbiB0aGUgY2xpZW50XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGFwaSA9IG5ldyBBcGlDb250YWluZXIoYXJjaCwgJ2FwaScsIHtcbiAqICAgaGVsbG86IHsgcGF0aDogJ0dFVCAvdjEvYXBpL2hlbGxvL3tuYW1lfScsIGhhbmRsZXI6IGhlbGxvRnVuY3Rpb24gfSxcbiAqICAgaGVsbG9zOiB7IHBhdGg6ICdHRVQgL3YxL2FwaS9oZWxsb3MnLCBoYW5kbGVyOiBoZWxsb3NGdW5jdGlvbiB9XG4gKiB9KTtcbiAqXG4gKiBjb25zdCBjbGllbnQgPSBjcmVhdGVIdHRwQmluZGluZ3MoZW5kcG9pbnQsIGFwaSwgWydoZWxsbycsICdoZWxsb3MnXSk7XG4gKiBhd2FpdCBjbGllbnQuaGVsbG8oJ0pvaG4nKTsgIC8vIChuYW1lOiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nPlxuICogYXdhaXQgY2xpZW50LmhlbGxvcygpOyAgICAgICAvLyAoKSA9PiBQcm9taXNlPEdyZWV0aW5nW10+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUh0dHBCaW5kaW5ncyA9IDxcbiAgVFJvdXRlcyBleHRlbmRzIEFwaVJvdXRlcyxcbiAgSyBleHRlbmRzIGtleW9mIFRSb3V0ZXMgJiBzdHJpbmdcbj4oXG4gIGVuZHBvaW50OiBTZXJ2aWNlRW5kcG9pbnQsXG4gIGNvbnRhaW5lcjogQXBpQ29udGFpbmVyPFRSb3V0ZXM+LFxuICByb3V0ZU5hbWVzOiByZWFkb25seSBLW10sXG4gIGZldGNoZXI6IEZldGNoZXIgPSAoKSA9PiAoe2ZldGNofSlcbik6IFBpY2s8Um91dGVIYW5kbGVyczxUUm91dGVzPiwgSz4gPT4ge1xuICByZXR1cm4gcm91dGVOYW1lcy5yZWR1Y2UoXG4gICAgKGFjYywgbmFtZSkgPT4ge1xuICAgICAgYWNjW25hbWVdID0gaHR0cEhhbmRsZXIoZW5kcG9pbnQsIGNvbnRhaW5lciwgbmFtZSwgZmV0Y2hlcik7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sXG4gICAge30gYXMgUGljazxSb3V0ZUhhbmRsZXJzPFRSb3V0ZXM+LCBLPlxuICApO1xufTtcbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arinoto/cdk-arch",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "description": "CDK Architecture primitives for event-driven solution architectures",
5
5
  "repository": {
6
6
  "type": "git",
@@ -23,24 +23,32 @@ export const httpHandler = <
23
23
  const pathParams = path.match(/\{(\w+)\}/g) || [];
24
24
 
25
25
  const handler = async (...args: any[]) => {
26
- const url = pathParams.reduce(
26
+ const baseUrl = pathParams.reduce(
27
27
  (u, param, i) => args[i] !== undefined ? u.replace(param, encodeURIComponent(String(args[i]))) : u,
28
28
  `${endpoint.baseUrl}${path}`
29
29
  );
30
30
 
31
+ const extraArgs = args.slice(pathParams.length);
32
+ const isGet = (method ?? 'GET') === 'GET';
33
+
34
+ let url = baseUrl;
35
+ if (isGet && extraArgs.length > 0 && extraArgs[0] != null && typeof extraArgs[0] === 'object') {
36
+ const qs = new URLSearchParams(extraArgs[0] as Record<string, string>).toString();
37
+ if (qs) { url = `${baseUrl}?${qs}`; }
38
+ }
39
+
31
40
  const options: RequestInit = {
32
41
  method: method || 'GET',
33
42
  headers: { 'Content-Type': 'application/json' },
34
- ...((method === 'POST' || method === 'PUT') && args.length > pathParams.length
35
- ? { body: JSON.stringify(args.slice(pathParams.length)) }
43
+ ...(!isGet && extraArgs.length > 0
44
+ ? { body: extraArgs.length === 1 ? JSON.stringify(extraArgs[0]) : JSON.stringify(extraArgs) }
36
45
  : {})
37
46
  };
38
47
 
39
- console.log('HTTP handler. Will fetch', {url, options});
40
48
  const response = await fetcher().fetch(url, options);
41
49
 
42
50
  if (!response.ok) {
43
- throw new Error(`Remote call to ${url} with ${JSON.stringify(options)} failed: ${JSON.stringify(response)}`);
51
+ throw new Error(`Remote call to ${url} with ${JSON.stringify(options)} failed: ${response.status} ${response.statusText}`);
44
52
  }
45
53
 
46
54
  return response.json();