@arinoto/cdk-arch 0.7.1 → 0.7.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/dist/api-container.d.ts +6 -0
- package/dist/api-container.d.ts.map +1 -1
- package/dist/api-container.js +13 -1
- package/package.json +1 -1
- package/src/api-container.ts +13 -0
package/dist/api-container.d.ts
CHANGED
|
@@ -43,6 +43,12 @@ export declare class ApiContainer<TRoutes extends ApiRoutes = ApiRoutes> extends
|
|
|
43
43
|
addRoute<TArgs extends any[], TReturn>(name: string, path: string, handler: Function<TArgs, TReturn>): void;
|
|
44
44
|
getRoute<K extends keyof TRoutes & string>(name: K): TRoutes[K];
|
|
45
45
|
listRoutes(): (keyof TRoutes & string)[];
|
|
46
|
+
/**
|
|
47
|
+
* Mount all routes from another container under a path prefix.
|
|
48
|
+
* Enables serving a sub-container's API at a nested path, e.g. mounting
|
|
49
|
+
* a graph container under '/graph' so consolidators can bind via HTTP.
|
|
50
|
+
*/
|
|
51
|
+
mount(prefix: string, container: ApiContainer): void;
|
|
46
52
|
/**
|
|
47
53
|
* Returns a list of TBDFunctions that have not been overloaded.
|
|
48
54
|
* 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;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,KAAK,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,OAAO,GAAG,GAAG;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;CAC5B,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,MAAM,IAAI,EAAE,MAAM,MAAM,CAAC,GACnE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,GAClC,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,SAAS,IAAI;KACpD,CAAC,IAAI,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;CACvD,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAY,CAAC,OAAO,SAAS,SAAS,GAAG,SAAS,CAAE,SAAQ,SAAS;IAChF,SAAgB,MAAM,EAAE,OAAO,CAAC;gBAEpB,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAE,OAAuB;IAKzE,QAAQ,CAAC,KAAK,SAAS,GAAG,EAAE,EAAE,OAAO,EACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,GAChC,IAAI;IAIP,QAAQ,CAAC,CAAC,SAAS,MAAM,OAAO,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAQ/D,UAAU,IAAI,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE;IAIxC;;;OAGG;IACH,iBAAiB,IAAI,QAAQ,EAAE;CAKhC"}
|
|
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;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,KAAK,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,OAAO,GAAG,GAAG;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;CAC5B,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,MAAM,IAAI,EAAE,MAAM,MAAM,CAAC,GACnE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,GAClC,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,SAAS,IAAI;KACpD,CAAC,IAAI,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;CACvD,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAY,CAAC,OAAO,SAAS,SAAS,GAAG,SAAS,CAAE,SAAQ,SAAS;IAChF,SAAgB,MAAM,EAAE,OAAO,CAAC;gBAEpB,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAE,OAAuB;IAKzE,QAAQ,CAAC,KAAK,SAAS,GAAG,EAAE,EAAE,OAAO,EACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,GAChC,IAAI;IAIP,QAAQ,CAAC,CAAC,SAAS,MAAM,OAAO,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAQ/D,UAAU,IAAI,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE;IAIxC;;;;OAIG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,GAAG,IAAI;IAQpD;;;OAGG;IACH,iBAAiB,IAAI,QAAQ,EAAE;CAKhC"}
|
package/dist/api-container.js
CHANGED
|
@@ -35,6 +35,18 @@ class ApiContainer extends constructs_1.Construct {
|
|
|
35
35
|
listRoutes() {
|
|
36
36
|
return Object.keys(this.routes);
|
|
37
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Mount all routes from another container under a path prefix.
|
|
40
|
+
* Enables serving a sub-container's API at a nested path, e.g. mounting
|
|
41
|
+
* a graph container under '/graph' so consolidators can bind via HTTP.
|
|
42
|
+
*/
|
|
43
|
+
mount(prefix, container) {
|
|
44
|
+
container.listRoutes().forEach(name => {
|
|
45
|
+
const entry = container.getRoute(name);
|
|
46
|
+
const [method, path] = entry.path.split(' ', 2);
|
|
47
|
+
this.addRoute(`${container.node.id}/${name}`, `${method} ${prefix}${path}`, entry.handler);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
38
50
|
/**
|
|
39
51
|
* Returns a list of TBDFunctions that have not been overloaded.
|
|
40
52
|
* Use this to validate that all required implementations are provided.
|
|
@@ -46,4 +58,4 @@ class ApiContainer extends constructs_1.Construct {
|
|
|
46
58
|
}
|
|
47
59
|
}
|
|
48
60
|
exports.ApiContainer = ApiContainer;
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNvbnRhaW5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGktY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF1QztBQUN2Qyx5Q0FBbUQ7QUErQm5EOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFhLFlBQW9ELFNBQVEsc0JBQVM7SUFHaEYsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxTQUFrQixFQUFhO1FBQ3ZFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELFFBQVEsQ0FDTixJQUFZLEVBQ1osSUFBWSxFQUNaLE9BQWlDO1FBRWhDLElBQUksQ0FBQyxNQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxRQUFRLENBQW1DLElBQU87UUFDaEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLFVBQVUsSUFBSSw2QkFBNkIsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzlFLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQStCLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsTUFBYyxFQUFFLFNBQXVCO1FBQzNDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEMsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxNQUFNLElBQUksTUFBTSxHQUFHLElBQUksRUFBRSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3RixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxpQkFBaUI7UUFDZixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQzthQUM5QixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO2FBQzNCLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsWUFBWSxzQkFBVyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztDQUNGO0FBbERELG9DQWtEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRnVuY3Rpb24sIFRCREZ1bmN0aW9uIH0gZnJvbSAnLi9mdW5jdGlvbic7XG5cbi8qKlxuICogQSByb3V0ZSBlbnRyeSB0aGF0IGNhcHR1cmVzIHRoZSBoYW5kbGVyJ3MgYXJndW1lbnQgYW5kIHJldHVybiB0eXBlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZUVudHJ5PFRBcmdzIGV4dGVuZHMgYW55W10gPSBhbnlbXSwgVFJldHVybiA9IGFueT4ge1xuICBwYXRoOiBzdHJpbmc7XG4gIGhhbmRsZXI6IEZ1bmN0aW9uPFRBcmdzLCBUUmV0dXJuPjtcbn1cblxuLyoqXG4gKiBCYXNlIHR5cGUgZm9yIHJvdXRlIGRlZmluaXRpb25zIC0gbWFwcyByb3V0ZSBuYW1lcyB0byByb3V0ZSBlbnRyaWVzLlxuICovXG5leHBvcnQgdHlwZSBBcGlSb3V0ZXMgPSB7XG4gIFtuYW1lOiBzdHJpbmddOiBSb3V0ZUVudHJ5O1xufVxuXG4vKipcbiAqIEV4dHJhY3QgdGhlIGhhbmRsZXIgc2lnbmF0dXJlIGZyb20gYSBGdW5jdGlvbiB0eXBlLlxuICovXG5leHBvcnQgdHlwZSBIYW5kbGVyT2Y8VD4gPSBUIGV4dGVuZHMgRnVuY3Rpb248aW5mZXIgQXJncywgaW5mZXIgUmV0dXJuPlxuICA/ICguLi5hcmdzOiBBcmdzKSA9PiBQcm9taXNlPFJldHVybj5cbiAgOiBuZXZlcjtcblxuLyoqXG4gKiBFeHRyYWN0IGhhbmRsZXIgc2lnbmF0dXJlcyBmcm9tIGFsbCByb3V0ZXMgaW4gYW4gQXBpUm91dGVzIHR5cGUuXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlSGFuZGxlcnM8VFJvdXRlcyBleHRlbmRzIEFwaVJvdXRlcz4gPSB7XG4gIFtLIGluIGtleW9mIFRSb3V0ZXNdOiBIYW5kbGVyT2Y8VFJvdXRlc1tLXVsnaGFuZGxlciddPjtcbn07XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBBUEkgY29udGFpbmVyIHRoYXQgcm91dGVzIHJlcXVlc3RzIHRvIGZ1bmN0aW9ucy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRSb3V0ZXMgLSBUaGUgdHlwZSBvZiB0aGUgcm91dGVzIG9iamVjdCwgcHJlc2VydmluZyByb3V0ZSBuYW1lcyBhbmQgaGFuZGxlciBzaWduYXR1cmVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBhcGkgPSBuZXcgQXBpQ29udGFpbmVyKGFyY2gsICdhcGknLCB7XG4gKiAgIGhlbGxvOiB7IHBhdGg6ICdHRVQgL3YxL2FwaS9oZWxsby97bmFtZX0nLCBoYW5kbGVyOiBoZWxsb0Z1bmN0aW9uIH0sXG4gKiAgIGhlbGxvczogeyBwYXRoOiAnR0VUIC92MS9hcGkvaGVsbG9zJywgaGFuZGxlcjogaGVsbG9zRnVuY3Rpb24gfVxuICogfSk7XG4gKiAvLyBhcGkgaGFzIHR5cGUgQXBpQ29udGFpbmVyPHsgaGVsbG86IFJvdXRlRW50cnk8W3N0cmluZ10sIHN0cmluZz4sIGhlbGxvczogUm91dGVFbnRyeTxbXSwgR3JlZXRpbmdbXT4gfT5cbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgQXBpQ29udGFpbmVyPFRSb3V0ZXMgZXh0ZW5kcyBBcGlSb3V0ZXMgPSBBcGlSb3V0ZXM+IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IHJvdXRlczogVFJvdXRlcztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCByb3V0ZXM6IFRSb3V0ZXMgPSB7fSBhcyBUUm91dGVzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLnJvdXRlcyA9IHJvdXRlcztcbiAgfVxuXG4gIGFkZFJvdXRlPFRBcmdzIGV4dGVuZHMgYW55W10sIFRSZXR1cm4+KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgaGFuZGxlcjogRnVuY3Rpb248VEFyZ3MsIFRSZXR1cm4+XG4gICk6IHZvaWQge1xuICAgICh0aGlzLnJvdXRlcyBhcyBBcGlSb3V0ZXMpW25hbWVdID0geyBwYXRoLCBoYW5kbGVyIH07XG4gIH1cblxuICBnZXRSb3V0ZTxLIGV4dGVuZHMga2V5b2YgVFJvdXRlcyAmIHN0cmluZz4obmFtZTogSyk6IFRSb3V0ZXNbS10ge1xuICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5yb3V0ZXNbbmFtZV07XG4gICAgaWYgKCFlbnRyeSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBSb3V0ZSAnJHtuYW1lfScgbm90IGZvdW5kIGluIGNvbnRhaW5lciAnJHt0aGlzLm5vZGUuaWR9J2ApO1xuICAgIH1cbiAgICByZXR1cm4gZW50cnk7XG4gIH1cblxuICBsaXN0Um91dGVzKCk6IChrZXlvZiBUUm91dGVzICYgc3RyaW5nKVtdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5yb3V0ZXMpIGFzIChrZXlvZiBUUm91dGVzICYgc3RyaW5nKVtdO1xuICB9XG5cbiAgLyoqXG4gICAqIE1vdW50IGFsbCByb3V0ZXMgZnJvbSBhbm90aGVyIGNvbnRhaW5lciB1bmRlciBhIHBhdGggcHJlZml4LlxuICAgKiBFbmFibGVzIHNlcnZpbmcgYSBzdWItY29udGFpbmVyJ3MgQVBJIGF0IGEgbmVzdGVkIHBhdGgsIGUuZy4gbW91bnRpbmdcbiAgICogYSBncmFwaCBjb250YWluZXIgdW5kZXIgJy9ncmFwaCcgc28gY29uc29saWRhdG9ycyBjYW4gYmluZCB2aWEgSFRUUC5cbiAgICovXG4gIG1vdW50KHByZWZpeDogc3RyaW5nLCBjb250YWluZXI6IEFwaUNvbnRhaW5lcik6IHZvaWQge1xuICAgIGNvbnRhaW5lci5saXN0Um91dGVzKCkuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgIGNvbnN0IGVudHJ5ID0gY29udGFpbmVyLmdldFJvdXRlKG5hbWUpO1xuICAgICAgY29uc3QgW21ldGhvZCwgcGF0aF0gPSBlbnRyeS5wYXRoLnNwbGl0KCcgJywgMik7XG4gICAgICB0aGlzLmFkZFJvdXRlKGAke2NvbnRhaW5lci5ub2RlLmlkfS8ke25hbWV9YCwgYCR7bWV0aG9kfSAke3ByZWZpeH0ke3BhdGh9YCwgZW50cnkuaGFuZGxlcik7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgVEJERnVuY3Rpb25zIHRoYXQgaGF2ZSBub3QgYmVlbiBvdmVybG9hZGVkLlxuICAgKiBVc2UgdGhpcyB0byB2YWxpZGF0ZSB0aGF0IGFsbCByZXF1aXJlZCBpbXBsZW1lbnRhdGlvbnMgYXJlIHByb3ZpZGVkLlxuICAgKi9cbiAgdmFsaWRhdGVPdmVybG9hZHMoKTogRnVuY3Rpb25bXSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5yb3V0ZXMpXG4gICAgICAubWFwKGVudHJ5ID0+IGVudHJ5LmhhbmRsZXIpXG4gICAgICAuZmlsdGVyKGZuID0+IGZuIGluc3RhbmNlb2YgVEJERnVuY3Rpb24gJiYgIWZuLmhhc092ZXJsb2FkKCkpO1xuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
package/src/api-container.ts
CHANGED
|
@@ -72,6 +72,19 @@ export class ApiContainer<TRoutes extends ApiRoutes = ApiRoutes> extends Constru
|
|
|
72
72
|
return Object.keys(this.routes) as (keyof TRoutes & string)[];
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
+
/**
|
|
76
|
+
* Mount all routes from another container under a path prefix.
|
|
77
|
+
* Enables serving a sub-container's API at a nested path, e.g. mounting
|
|
78
|
+
* a graph container under '/graph' so consolidators can bind via HTTP.
|
|
79
|
+
*/
|
|
80
|
+
mount(prefix: string, container: ApiContainer): void {
|
|
81
|
+
container.listRoutes().forEach(name => {
|
|
82
|
+
const entry = container.getRoute(name);
|
|
83
|
+
const [method, path] = entry.path.split(' ', 2);
|
|
84
|
+
this.addRoute(`${container.node.id}/${name}`, `${method} ${prefix}${path}`, entry.handler);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
|
|
75
88
|
/**
|
|
76
89
|
* Returns a list of TBDFunctions that have not been overloaded.
|
|
77
90
|
* Use this to validate that all required implementations are provided.
|