@arinoto/cdk-arch 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import { Construct } from 'constructs';
2
2
  import { Function } from './function';
3
3
  export interface ApiRoutes {
4
- [path: string]: Function;
4
+ [name: string]: RouteEntry;
5
5
  }
6
6
  export interface RouteEntry {
7
7
  name: string;
@@ -13,13 +13,10 @@ export interface RouteEntry {
13
13
  */
14
14
  export declare class ApiContainer extends Construct {
15
15
  readonly routes: ApiRoutes;
16
- private namedRoutes;
17
16
  constructor(scope: Construct, id: string, routes?: ApiRoutes);
18
17
  addRoute(name: string, path: string, handler: Function): void;
19
- getRoute(path: string): Function | undefined;
20
- getRouteByName(name: string): RouteEntry | undefined;
18
+ getRoute(name: string): RouteEntry;
21
19
  listRoutes(): string[];
22
- listNamedRoutes(): RouteEntry[];
23
20
  /**
24
21
  * Returns a list of TBDFunctions that have not been overloaded.
25
22
  * Use this to validate that all required implementations are provided.
@@ -1 +1 @@
1
- {"version":3,"file":"api-container.d.ts","sourceRoot":"","sources":["../src/api-container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAe,MAAM,YAAY,CAAC;AAEnD,MAAM,WAAW,SAAS;IACxB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,QAAQ,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,SAAS;IACzC,SAAgB,MAAM,EAAE,SAAS,CAAC;IAClC,OAAO,CAAC,WAAW,CAAsC;gBAE7C,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAE,SAAc;IAKhE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI;IAK7D,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAI5C,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIpD,UAAU,IAAI,MAAM,EAAE;IAItB,eAAe,IAAI,UAAU,EAAE;IAI/B;;;OAGG;IACH,iBAAiB,IAAI,QAAQ,EAAE;CAIhC"}
1
+ {"version":3,"file":"api-container.d.ts","sourceRoot":"","sources":["../src/api-container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAe,MAAM,YAAY,CAAC;AAEnD,MAAM,WAAW,SAAS;IACxB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,QAAQ,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,SAAS;IACzC,SAAgB,MAAM,EAAE,SAAS,CAAC;gBAEtB,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAE,SAAc;IAKhE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI;IAI7D,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAQlC,UAAU,IAAK,MAAM,EAAE;IAIvB;;;OAGG;IACH,iBAAiB,IAAI,QAAQ,EAAE;CAKhC"}
@@ -9,33 +9,30 @@ const function_1 = require("./function");
9
9
  class ApiContainer extends constructs_1.Construct {
10
10
  constructor(scope, id, routes = {}) {
11
11
  super(scope, id);
12
- this.namedRoutes = new Map();
13
12
  this.routes = routes;
14
13
  }
15
14
  addRoute(name, path, handler) {
16
- this.routes[path] = handler;
17
- this.namedRoutes.set(name, { name, path, handler });
15
+ this.routes[name] = { name, path, handler };
18
16
  }
19
- getRoute(path) {
20
- return this.routes[path];
21
- }
22
- getRouteByName(name) {
23
- return this.namedRoutes.get(name);
17
+ getRoute(name) {
18
+ const entry = this.routes[name];
19
+ if (!entry) {
20
+ throw new Error(`Route '${name}' not found in container '${this.node.id}'`);
21
+ }
22
+ return entry;
24
23
  }
25
24
  listRoutes() {
26
25
  return Object.keys(this.routes);
27
26
  }
28
- listNamedRoutes() {
29
- return Array.from(this.namedRoutes.values());
30
- }
31
27
  /**
32
28
  * Returns a list of TBDFunctions that have not been overloaded.
33
29
  * Use this to validate that all required implementations are provided.
34
30
  */
35
31
  validateOverloads() {
36
32
  return Object.values(this.routes)
33
+ .map(entry => entry.handler)
37
34
  .filter(fn => fn instanceof function_1.TBDFunction && !fn.hasOverload());
38
35
  }
39
36
  }
40
37
  exports.ApiContainer = ApiContainer;
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNvbnRhaW5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGktY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF1QztBQUN2Qyx5Q0FBbUQ7QUFZbkQ7O0dBRUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxzQkFBUztJQUl6QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFNBQW9CLEVBQUU7UUFDOUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUhYLGdCQUFXLEdBQTRCLElBQUksR0FBRyxFQUFFLENBQUM7UUFJdkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFZLEVBQUUsSUFBWSxFQUFFLE9BQWlCO1FBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVk7UUFDbkIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBWTtRQUN6QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7T0FHRztJQUNILGlCQUFpQjtRQUNmLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQzlCLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsWUFBWSxzQkFBVyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztDQUNGO0FBdENELG9DQXNDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRnVuY3Rpb24sIFRCREZ1bmN0aW9uIH0gZnJvbSAnLi9mdW5jdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBpUm91dGVzIHtcbiAgW3BhdGg6IHN0cmluZ106IEZ1bmN0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlRW50cnkge1xuICBuYW1lOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgaGFuZGxlcjogRnVuY3Rpb247XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBBUEkgY29udGFpbmVyIHRoYXQgcm91dGVzIHJlcXVlc3RzIHRvIGZ1bmN0aW9uc1xuICovXG5leHBvcnQgY2xhc3MgQXBpQ29udGFpbmVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IHJvdXRlczogQXBpUm91dGVzO1xuICBwcml2YXRlIG5hbWVkUm91dGVzOiBNYXA8c3RyaW5nLCBSb3V0ZUVudHJ5PiA9IG5ldyBNYXAoKTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCByb3V0ZXM6IEFwaVJvdXRlcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLnJvdXRlcyA9IHJvdXRlcztcbiAgfVxuXG4gIGFkZFJvdXRlKG5hbWU6IHN0cmluZywgcGF0aDogc3RyaW5nLCBoYW5kbGVyOiBGdW5jdGlvbik6IHZvaWQge1xuICAgIHRoaXMucm91dGVzW3BhdGhdID0gaGFuZGxlcjtcbiAgICB0aGlzLm5hbWVkUm91dGVzLnNldChuYW1lLCB7IG5hbWUsIHBhdGgsIGhhbmRsZXIgfSk7XG4gIH1cblxuICBnZXRSb3V0ZShwYXRoOiBzdHJpbmcpOiBGdW5jdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVzW3BhdGhdO1xuICB9XG5cbiAgZ2V0Um91dGVCeU5hbWUobmFtZTogc3RyaW5nKTogUm91dGVFbnRyeSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubmFtZWRSb3V0ZXMuZ2V0KG5hbWUpO1xuICB9XG5cbiAgbGlzdFJvdXRlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMucm91dGVzKTtcbiAgfVxuXG4gIGxpc3ROYW1lZFJvdXRlcygpOiBSb3V0ZUVudHJ5W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMubmFtZWRSb3V0ZXMudmFsdWVzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIFRCREZ1bmN0aW9ucyB0aGF0IGhhdmUgbm90IGJlZW4gb3ZlcmxvYWRlZC5cbiAgICogVXNlIHRoaXMgdG8gdmFsaWRhdGUgdGhhdCBhbGwgcmVxdWlyZWQgaW1wbGVtZW50YXRpb25zIGFyZSBwcm92aWRlZC5cbiAgICovXG4gIHZhbGlkYXRlT3ZlcmxvYWRzKCk6IEZ1bmN0aW9uW10ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMucm91dGVzKVxuICAgICAgLmZpbHRlcihmbiA9PiBmbiBpbnN0YW5jZW9mIFRCREZ1bmN0aW9uICYmICFmbi5oYXNPdmVybG9hZCgpKTtcbiAgfVxufVxuIl19
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNvbnRhaW5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGktY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF1QztBQUN2Qyx5Q0FBbUQ7QUFZbkQ7O0dBRUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxzQkFBUztJQUd6QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFNBQW9CLEVBQUU7UUFDOUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVksRUFBRSxJQUFZLEVBQUUsT0FBaUI7UUFDcEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFZO1FBQ25CLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLElBQUksNkJBQTZCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM5RSxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILGlCQUFpQjtRQUNmLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQzlCLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7YUFDM0IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxZQUFZLHNCQUFXLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBQ0Y7QUFqQ0Qsb0NBaUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBGdW5jdGlvbiwgVEJERnVuY3Rpb24gfSBmcm9tICcuL2Z1bmN0aW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBBcGlSb3V0ZXMge1xuICBbbmFtZTogc3RyaW5nXTogUm91dGVFbnRyeTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSb3V0ZUVudHJ5IHtcbiAgbmFtZTogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG4gIGhhbmRsZXI6IEZ1bmN0aW9uO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gQVBJIGNvbnRhaW5lciB0aGF0IHJvdXRlcyByZXF1ZXN0cyB0byBmdW5jdGlvbnNcbiAqL1xuZXhwb3J0IGNsYXNzIEFwaUNvbnRhaW5lciBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSByb3V0ZXM6IEFwaVJvdXRlcztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCByb3V0ZXM6IEFwaVJvdXRlcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLnJvdXRlcyA9IHJvdXRlcztcbiAgfVxuXG4gIGFkZFJvdXRlKG5hbWU6IHN0cmluZywgcGF0aDogc3RyaW5nLCBoYW5kbGVyOiBGdW5jdGlvbik6IHZvaWQge1xuICAgIHRoaXMucm91dGVzW25hbWVdID0geyBuYW1lLCBwYXRoLCBoYW5kbGVyIH07XG4gIH1cblxuICBnZXRSb3V0ZShuYW1lOiBzdHJpbmcpOiBSb3V0ZUVudHJ5IHtcbiAgICBjb25zdCBlbnRyeSA9IHRoaXMucm91dGVzW25hbWVdO1xuICAgIGlmICghZW50cnkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUm91dGUgJyR7bmFtZX0nIG5vdCBmb3VuZCBpbiBjb250YWluZXIgJyR7dGhpcy5ub2RlLmlkfSdgKTtcbiAgICB9XG4gICAgcmV0dXJuIGVudHJ5O1xuICB9XG5cbiAgbGlzdFJvdXRlcygpIDogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnJvdXRlcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgVEJERnVuY3Rpb25zIHRoYXQgaGF2ZSBub3QgYmVlbiBvdmVybG9hZGVkLlxuICAgKiBVc2UgdGhpcyB0byB2YWxpZGF0ZSB0aGF0IGFsbCByZXF1aXJlZCBpbXBsZW1lbnRhdGlvbnMgYXJlIHByb3ZpZGVkLlxuICAgKi9cbiAgdmFsaWRhdGVPdmVybG9hZHMoKTogRnVuY3Rpb25bXSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5yb3V0ZXMpXG4gICAgICAubWFwKGVudHJ5ID0+IGVudHJ5LmhhbmRsZXIpXG4gICAgICAuZmlsdGVyKGZuID0+IGZuIGluc3RhbmNlb2YgVEJERnVuY3Rpb24gJiYgIWZuLmhhc092ZXJsb2FkKCkpO1xuICB9XG59XG4iXX0=
package/dist/binding.js CHANGED
@@ -19,7 +19,7 @@ class ArchitectureBinding {
19
19
  bind(component, options) {
20
20
  this.bindings.set(component, { host: options.host, port: options.port });
21
21
  Object.entries(options.overloads ?? {}).forEach(([name, handler]) => {
22
- const route = component.getRouteByName(name);
22
+ const route = component.getRoute(name);
23
23
  if (!route) {
24
24
  throw new Error(`Route '${name}' not found in component '${component.node.id}'`);
25
25
  }
@@ -58,4 +58,4 @@ exports.ArchitectureBinding = ArchitectureBinding;
58
58
  * Global binding registry
59
59
  */
60
60
  exports.architectureBinding = new ArchitectureBinding();
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9iaW5kaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHlDQUF1RDtBQXFCdkQ7OztHQUdHO0FBQ0gsTUFBYSxtQkFBbUI7SUFBaEM7UUFDVSxhQUFRLEdBQW9DLElBQUksR0FBRyxFQUFFLENBQUM7UUFDdEQsb0JBQWUsR0FBbUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQWlEdEQsQ0FBQztJQS9DQzs7OztPQUlHO0lBQ0gsSUFBSSxDQUFDLFNBQXVCLEVBQUUsT0FBb0I7UUFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXpFLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQ2xFLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsVUFBVSxJQUFJLDZCQUE2QixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDbkYsQ0FBQztZQUNELElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLFlBQVksbUJBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMsVUFBVSxJQUFJLDZCQUE2QixDQUFDLENBQUM7WUFDL0QsQ0FBQztZQUNELEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVcsQ0FBQyxTQUF1QixFQUFFLFNBQWlCLEVBQUUsU0FBMkM7UUFDakcsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsT0FBTyxDQUFDLENBQUM7UUFDOUMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsT0FBTyxDQUFDLENBQUM7UUFDOUMsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLFNBQW9CO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELFFBQVEsQ0FBQyxTQUFvQjtRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsT0FBTyxDQUFDLFNBQW9CO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGO0FBbkRELGtEQW1EQztBQUVEOztHQUVHO0FBQ1UsUUFBQSxtQkFBbUIsR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEFwaUNvbnRhaW5lciB9IGZyb20gJy4vYXBpLWNvbnRhaW5lcic7XG5pbXBvcnQgeyBGdW5jdGlvbiwgRnVuY3Rpb25IYW5kbGVyIH0gZnJvbSAnLi9mdW5jdGlvbic7XG5cbi8qKlxuICogU2VydmljZSBkaXNjb3ZlcnkgY29uZmlndXJhdGlvbiBmb3IgcnVudGltZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VFbmRwb2ludCB7XG4gIGhvc3Q6IHN0cmluZztcbiAgcG9ydDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEJpbmRpbmcgb3B0aW9ucyBmb3IgYW4gQXBpQ29udGFpbmVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluZE9wdGlvbnMgZXh0ZW5kcyBTZXJ2aWNlRW5kcG9pbnQge1xuICAvKipcbiAgICogT3ZlcnJpZGUgZnVuY3Rpb24gaW1wbGVtZW50YXRpb25zLlxuICAgKiBLZXlzIGFyZSBmdW5jdGlvbiBwcm9wZXJ0eSBuYW1lcyBvbiB0aGUgY29udGFpbmVyLlxuICAgKi9cbiAgb3ZlcmxvYWRzPzogUmVjb3JkPHN0cmluZywgRnVuY3Rpb25IYW5kbGVyPjtcbn1cblxuLyoqXG4gKiBCaW5kaW5nIGJldHdlZW4gYXJjaGl0ZWN0dXJhbCBjb21wb25lbnRzIGFuZCB0aGVpciBydW50aW1lIGVuZHBvaW50cy5cbiAqIFN1cHBvcnRzIGZ1bmN0aW9uIG92ZXJsb2FkaW5nIGZvciByZXBsYWNpbmcgaW1wbGVtZW50YXRpb25zIGF0IHJ1bnRpbWUuXG4gKi9cbmV4cG9ydCBjbGFzcyBBcmNoaXRlY3R1cmVCaW5kaW5nIHtcbiAgcHJpdmF0ZSBiaW5kaW5nczogTWFwPENvbnN0cnVjdCwgU2VydmljZUVuZHBvaW50PiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBsb2NhbENvbXBvbmVudHM6IFNldDxDb25zdHJ1Y3Q+ID0gbmV3IFNldCgpO1xuXG4gIC8qKlxuICAgKiBCaW5kIGFuIGFyY2hpdGVjdHVyYWwgY29tcG9uZW50IHRvIGEgc2VydmljZSBlbmRwb2ludC5cbiAgICogT3B0aW9uYWxseSBvdmVycmlkZSBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMgd2l0aCB0aGUgb3ZlcmxvYWRzIG9wdGlvbi5cbiAgICogT3ZlcmxvYWQga2V5cyBtdXN0IGJlIHJvdXRlIG5hbWVzIHJlZ2lzdGVyZWQgdmlhIGFkZFJvdXRlLlxuICAgKi9cbiAgYmluZChjb21wb25lbnQ6IEFwaUNvbnRhaW5lciwgb3B0aW9uczogQmluZE9wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLmJpbmRpbmdzLnNldChjb21wb25lbnQsIHsgaG9zdDogb3B0aW9ucy5ob3N0LCBwb3J0OiBvcHRpb25zLnBvcnQgfSk7XG5cbiAgICBPYmplY3QuZW50cmllcyhvcHRpb25zLm92ZXJsb2FkcyA/PyB7fSkuZm9yRWFjaCgoW25hbWUsIGhhbmRsZXJdKSA9PiB7XG4gICAgICBjb25zdCByb3V0ZSA9IGNvbXBvbmVudC5nZXRSb3V0ZUJ5TmFtZShuYW1lKTtcbiAgICAgIGlmICghcm91dGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSb3V0ZSAnJHtuYW1lfScgbm90IGZvdW5kIGluIGNvbXBvbmVudCAnJHtjb21wb25lbnQubm9kZS5pZH0nYCk7XG4gICAgICB9XG4gICAgICBpZiAoIShyb3V0ZS5oYW5kbGVyIGluc3RhbmNlb2YgRnVuY3Rpb24pKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUm91dGUgJyR7bmFtZX0nIGhhbmRsZXIgaXMgbm90IGEgRnVuY3Rpb25gKTtcbiAgICAgIH1cbiAgICAgIHJvdXRlLmhhbmRsZXIub3ZlcmxvYWQoaGFuZGxlcik7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQmluZCBhIGNvbXBvbmVudCBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICogTG9va3MgZm9yIHtQUkVGSVh9X0hPU1QgYW5kIHtQUkVGSVh9X1BPUlQgZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICAgKi9cbiAgYmluZEZyb21FbnYoY29tcG9uZW50OiBBcGlDb250YWluZXIsIGVudlByZWZpeDogc3RyaW5nLCBvdmVybG9hZHM/OiBSZWNvcmQ8c3RyaW5nLCBGdW5jdGlvbkhhbmRsZXI+KTogdm9pZCB7XG4gICAgY29uc3QgaG9zdCA9IHByb2Nlc3MuZW52W2Ake2VudlByZWZpeH1fSE9TVGBdO1xuICAgIGNvbnN0IHBvcnQgPSBwcm9jZXNzLmVudltgJHtlbnZQcmVmaXh9X1BPUlRgXTtcbiAgICBpZiAoaG9zdCAmJiBwb3J0KSB7XG4gICAgICB0aGlzLmJpbmQoY29tcG9uZW50LCB7IGhvc3QsIHBvcnQ6IHBhcnNlSW50KHBvcnQpLCBvdmVybG9hZHMgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RW5kcG9pbnQoY29tcG9uZW50OiBDb25zdHJ1Y3QpOiBTZXJ2aWNlRW5kcG9pbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmJpbmRpbmdzLmdldChjb21wb25lbnQpO1xuICB9XG5cbiAgZ2V0QWxsQmluZGluZ3MoKTogTWFwPENvbnN0cnVjdCwgU2VydmljZUVuZHBvaW50PiB7XG4gICAgcmV0dXJuIHRoaXMuYmluZGluZ3M7XG4gIH1cblxuICBzZXRMb2NhbChjb21wb25lbnQ6IENvbnN0cnVjdCk6IHZvaWQge1xuICAgIHRoaXMubG9jYWxDb21wb25lbnRzLmFkZChjb21wb25lbnQpO1xuICB9XG5cbiAgaXNMb2NhbChjb21wb25lbnQ6IENvbnN0cnVjdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxvY2FsQ29tcG9uZW50cy5oYXMoY29tcG9uZW50KTtcbiAgfVxufVxuXG4vKipcbiAqIEdsb2JhbCBiaW5kaW5nIHJlZ2lzdHJ5XG4gKi9cbmV4cG9ydCBjb25zdCBhcmNoaXRlY3R1cmVCaW5kaW5nID0gbmV3IEFyY2hpdGVjdHVyZUJpbmRpbmcoKTtcbiJdfQ==
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9iaW5kaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHlDQUF1RDtBQXFCdkQ7OztHQUdHO0FBQ0gsTUFBYSxtQkFBbUI7SUFBaEM7UUFDVSxhQUFRLEdBQW9DLElBQUksR0FBRyxFQUFFLENBQUM7UUFDdEQsb0JBQWUsR0FBbUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQWlEdEQsQ0FBQztJQS9DQzs7OztPQUlHO0lBQ0gsSUFBSSxDQUFDLFNBQXVCLEVBQUUsT0FBb0I7UUFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXpFLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQ2xFLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsVUFBVSxJQUFJLDZCQUE2QixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDbkYsQ0FBQztZQUNELElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLFlBQVksbUJBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMsVUFBVSxJQUFJLDZCQUE2QixDQUFDLENBQUM7WUFDL0QsQ0FBQztZQUNELEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVcsQ0FBQyxTQUF1QixFQUFFLFNBQWlCLEVBQUUsU0FBMkM7UUFDakcsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsT0FBTyxDQUFDLENBQUM7UUFDOUMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsT0FBTyxDQUFDLENBQUM7UUFDOUMsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLFNBQW9CO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELFFBQVEsQ0FBQyxTQUFvQjtRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsT0FBTyxDQUFDLFNBQW9CO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGO0FBbkRELGtEQW1EQztBQUVEOztHQUVHO0FBQ1UsUUFBQSxtQkFBbUIsR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEFwaUNvbnRhaW5lciB9IGZyb20gJy4vYXBpLWNvbnRhaW5lcic7XG5pbXBvcnQgeyBGdW5jdGlvbiwgRnVuY3Rpb25IYW5kbGVyIH0gZnJvbSAnLi9mdW5jdGlvbic7XG5cbi8qKlxuICogU2VydmljZSBkaXNjb3ZlcnkgY29uZmlndXJhdGlvbiBmb3IgcnVudGltZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VFbmRwb2ludCB7XG4gIGhvc3Q6IHN0cmluZztcbiAgcG9ydDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEJpbmRpbmcgb3B0aW9ucyBmb3IgYW4gQXBpQ29udGFpbmVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluZE9wdGlvbnMgZXh0ZW5kcyBTZXJ2aWNlRW5kcG9pbnQge1xuICAvKipcbiAgICogT3ZlcnJpZGUgZnVuY3Rpb24gaW1wbGVtZW50YXRpb25zLlxuICAgKiBLZXlzIGFyZSBmdW5jdGlvbiBwcm9wZXJ0eSBuYW1lcyBvbiB0aGUgY29udGFpbmVyLlxuICAgKi9cbiAgb3ZlcmxvYWRzPzogUmVjb3JkPHN0cmluZywgRnVuY3Rpb25IYW5kbGVyPjtcbn1cblxuLyoqXG4gKiBCaW5kaW5nIGJldHdlZW4gYXJjaGl0ZWN0dXJhbCBjb21wb25lbnRzIGFuZCB0aGVpciBydW50aW1lIGVuZHBvaW50cy5cbiAqIFN1cHBvcnRzIGZ1bmN0aW9uIG92ZXJsb2FkaW5nIGZvciByZXBsYWNpbmcgaW1wbGVtZW50YXRpb25zIGF0IHJ1bnRpbWUuXG4gKi9cbmV4cG9ydCBjbGFzcyBBcmNoaXRlY3R1cmVCaW5kaW5nIHtcbiAgcHJpdmF0ZSBiaW5kaW5nczogTWFwPENvbnN0cnVjdCwgU2VydmljZUVuZHBvaW50PiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBsb2NhbENvbXBvbmVudHM6IFNldDxDb25zdHJ1Y3Q+ID0gbmV3IFNldCgpO1xuXG4gIC8qKlxuICAgKiBCaW5kIGFuIGFyY2hpdGVjdHVyYWwgY29tcG9uZW50IHRvIGEgc2VydmljZSBlbmRwb2ludC5cbiAgICogT3B0aW9uYWxseSBvdmVycmlkZSBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMgd2l0aCB0aGUgb3ZlcmxvYWRzIG9wdGlvbi5cbiAgICogT3ZlcmxvYWQga2V5cyBtdXN0IGJlIHJvdXRlIG5hbWVzIHJlZ2lzdGVyZWQgdmlhIGFkZFJvdXRlLlxuICAgKi9cbiAgYmluZChjb21wb25lbnQ6IEFwaUNvbnRhaW5lciwgb3B0aW9uczogQmluZE9wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLmJpbmRpbmdzLnNldChjb21wb25lbnQsIHsgaG9zdDogb3B0aW9ucy5ob3N0LCBwb3J0OiBvcHRpb25zLnBvcnQgfSk7XG5cbiAgICBPYmplY3QuZW50cmllcyhvcHRpb25zLm92ZXJsb2FkcyA/PyB7fSkuZm9yRWFjaCgoW25hbWUsIGhhbmRsZXJdKSA9PiB7XG4gICAgICBjb25zdCByb3V0ZSA9IGNvbXBvbmVudC5nZXRSb3V0ZShuYW1lKTtcbiAgICAgIGlmICghcm91dGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSb3V0ZSAnJHtuYW1lfScgbm90IGZvdW5kIGluIGNvbXBvbmVudCAnJHtjb21wb25lbnQubm9kZS5pZH0nYCk7XG4gICAgICB9XG4gICAgICBpZiAoIShyb3V0ZS5oYW5kbGVyIGluc3RhbmNlb2YgRnVuY3Rpb24pKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUm91dGUgJyR7bmFtZX0nIGhhbmRsZXIgaXMgbm90IGEgRnVuY3Rpb25gKTtcbiAgICAgIH1cbiAgICAgIHJvdXRlLmhhbmRsZXIub3ZlcmxvYWQoaGFuZGxlcik7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQmluZCBhIGNvbXBvbmVudCBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICogTG9va3MgZm9yIHtQUkVGSVh9X0hPU1QgYW5kIHtQUkVGSVh9X1BPUlQgZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICAgKi9cbiAgYmluZEZyb21FbnYoY29tcG9uZW50OiBBcGlDb250YWluZXIsIGVudlByZWZpeDogc3RyaW5nLCBvdmVybG9hZHM/OiBSZWNvcmQ8c3RyaW5nLCBGdW5jdGlvbkhhbmRsZXI+KTogdm9pZCB7XG4gICAgY29uc3QgaG9zdCA9IHByb2Nlc3MuZW52W2Ake2VudlByZWZpeH1fSE9TVGBdO1xuICAgIGNvbnN0IHBvcnQgPSBwcm9jZXNzLmVudltgJHtlbnZQcmVmaXh9X1BPUlRgXTtcbiAgICBpZiAoaG9zdCAmJiBwb3J0KSB7XG4gICAgICB0aGlzLmJpbmQoY29tcG9uZW50LCB7IGhvc3QsIHBvcnQ6IHBhcnNlSW50KHBvcnQpLCBvdmVybG9hZHMgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RW5kcG9pbnQoY29tcG9uZW50OiBDb25zdHJ1Y3QpOiBTZXJ2aWNlRW5kcG9pbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmJpbmRpbmdzLmdldChjb21wb25lbnQpO1xuICB9XG5cbiAgZ2V0QWxsQmluZGluZ3MoKTogTWFwPENvbnN0cnVjdCwgU2VydmljZUVuZHBvaW50PiB7XG4gICAgcmV0dXJuIHRoaXMuYmluZGluZ3M7XG4gIH1cblxuICBzZXRMb2NhbChjb21wb25lbnQ6IENvbnN0cnVjdCk6IHZvaWQge1xuICAgIHRoaXMubG9jYWxDb21wb25lbnRzLmFkZChjb21wb25lbnQpO1xuICB9XG5cbiAgaXNMb2NhbChjb21wb25lbnQ6IENvbnN0cnVjdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxvY2FsQ29tcG9uZW50cy5oYXMoY29tcG9uZW50KTtcbiAgfVxufVxuXG4vKipcbiAqIEdsb2JhbCBiaW5kaW5nIHJlZ2lzdHJ5XG4gKi9cbmV4cG9ydCBjb25zdCBhcmNoaXRlY3R1cmVCaW5kaW5nID0gbmV3IEFyY2hpdGVjdHVyZUJpbmRpbmcoKTtcbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arinoto/cdk-arch",
3
- "version": "0.1.3",
3
+ "version": "0.2.0",
4
4
  "description": "CDK Architecture primitives for event-driven solution architectures",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -30,4 +30,4 @@
30
30
  "dependencies": {
31
31
  "constructs": "^10.4.5"
32
32
  }
33
- }
33
+ }
@@ -2,7 +2,7 @@ import { Construct } from 'constructs';
2
2
  import { Function, TBDFunction } from './function';
3
3
 
4
4
  export interface ApiRoutes {
5
- [path: string]: Function;
5
+ [name: string]: RouteEntry;
6
6
  }
7
7
 
8
8
  export interface RouteEntry {
@@ -16,7 +16,6 @@ export interface RouteEntry {
16
16
  */
17
17
  export class ApiContainer extends Construct {
18
18
  public readonly routes: ApiRoutes;
19
- private namedRoutes: Map<string, RouteEntry> = new Map();
20
19
 
21
20
  constructor(scope: Construct, id: string, routes: ApiRoutes = {}) {
22
21
  super(scope, id);
@@ -24,32 +23,28 @@ export class ApiContainer extends Construct {
24
23
  }
25
24
 
26
25
  addRoute(name: string, path: string, handler: Function): void {
27
- this.routes[path] = handler;
28
- this.namedRoutes.set(name, { name, path, handler });
26
+ this.routes[name] = { name, path, handler };
29
27
  }
30
28
 
31
- getRoute(path: string): Function | undefined {
32
- return this.routes[path];
29
+ getRoute(name: string): RouteEntry {
30
+ const entry = this.routes[name];
31
+ if (!entry) {
32
+ throw new Error(`Route '${name}' not found in container '${this.node.id}'`);
33
+ }
34
+ return entry;
33
35
  }
34
36
 
35
- getRouteByName(name: string): RouteEntry | undefined {
36
- return this.namedRoutes.get(name);
37
- }
38
-
39
- listRoutes(): string[] {
37
+ listRoutes() : string[] {
40
38
  return Object.keys(this.routes);
41
39
  }
42
40
 
43
- listNamedRoutes(): RouteEntry[] {
44
- return Array.from(this.namedRoutes.values());
45
- }
46
-
47
41
  /**
48
42
  * Returns a list of TBDFunctions that have not been overloaded.
49
43
  * Use this to validate that all required implementations are provided.
50
44
  */
51
45
  validateOverloads(): Function[] {
52
46
  return Object.values(this.routes)
47
+ .map(entry => entry.handler)
53
48
  .filter(fn => fn instanceof TBDFunction && !fn.hasOverload());
54
49
  }
55
50
  }
package/src/binding.ts CHANGED
@@ -38,7 +38,7 @@ export class ArchitectureBinding {
38
38
  this.bindings.set(component, { host: options.host, port: options.port });
39
39
 
40
40
  Object.entries(options.overloads ?? {}).forEach(([name, handler]) => {
41
- const route = component.getRouteByName(name);
41
+ const route = component.getRoute(name);
42
42
  if (!route) {
43
43
  throw new Error(`Route '${name}' not found in component '${component.node.id}'`);
44
44
  }