@venizia/ignis-kernel 0.2.0-14 → 0.2.0-16

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.
Files changed (73) hide show
  1. package/dist/cjs/base/applications/artifact-index.d.ts +25 -0
  2. package/dist/cjs/base/applications/artifact-index.d.ts.map +1 -0
  3. package/dist/cjs/base/applications/artifact-index.js +91 -0
  4. package/dist/cjs/base/applications/artifact-index.js.map +1 -0
  5. package/dist/cjs/base/applications/boot-sequence.d.ts +1 -0
  6. package/dist/cjs/base/applications/boot-sequence.d.ts.map +1 -1
  7. package/dist/cjs/base/applications/boot-sequence.js +2 -0
  8. package/dist/cjs/base/applications/boot-sequence.js.map +1 -1
  9. package/dist/cjs/base/applications/common/types/application.d.ts +8 -0
  10. package/dist/cjs/base/applications/common/types/application.d.ts.map +1 -1
  11. package/dist/cjs/base/applications/rest.d.ts +7 -5
  12. package/dist/cjs/base/applications/rest.d.ts.map +1 -1
  13. package/dist/cjs/base/applications/rest.js +76 -60
  14. package/dist/cjs/base/applications/rest.js.map +1 -1
  15. package/dist/cjs/base/controllers/common/constants.d.ts +8 -0
  16. package/dist/cjs/base/controllers/common/constants.d.ts.map +1 -1
  17. package/dist/cjs/base/controllers/common/constants.js +11 -1
  18. package/dist/cjs/base/controllers/common/constants.js.map +1 -1
  19. package/dist/cjs/base/controllers/factory/controller.d.ts +17 -11
  20. package/dist/cjs/base/controllers/factory/controller.d.ts.map +1 -1
  21. package/dist/cjs/base/controllers/factory/crud/abstract.d.ts +2 -25
  22. package/dist/cjs/base/controllers/factory/crud/abstract.d.ts.map +1 -1
  23. package/dist/cjs/base/controllers/factory/crud/abstract.js +1 -21
  24. package/dist/cjs/base/controllers/factory/crud/abstract.js.map +1 -1
  25. package/dist/cjs/base/controllers/factory/crud/persistable.d.ts.map +1 -1
  26. package/dist/cjs/base/controllers/factory/crud/persistable.js +11 -10
  27. package/dist/cjs/base/controllers/factory/crud/persistable.js.map +1 -1
  28. package/dist/cjs/base/controllers/factory/crud/readable.d.ts.map +1 -1
  29. package/dist/cjs/base/controllers/factory/crud/readable.js +8 -8
  30. package/dist/cjs/base/controllers/factory/crud/readable.js.map +1 -1
  31. package/dist/cjs/base/controllers/rest/base.d.ts +34 -2
  32. package/dist/cjs/base/controllers/rest/base.d.ts.map +1 -1
  33. package/dist/cjs/base/controllers/rest/base.js +35 -0
  34. package/dist/cjs/base/controllers/rest/base.js.map +1 -1
  35. package/dist/cjs/base/metadata/injectable.d.ts.map +1 -1
  36. package/dist/cjs/base/metadata/injectable.js.map +1 -1
  37. package/dist/esm/base/applications/artifact-index.d.ts +25 -0
  38. package/dist/esm/base/applications/artifact-index.d.ts.map +1 -0
  39. package/dist/esm/base/applications/artifact-index.js +87 -0
  40. package/dist/esm/base/applications/artifact-index.js.map +1 -0
  41. package/dist/esm/base/applications/boot-sequence.d.ts +1 -0
  42. package/dist/esm/base/applications/boot-sequence.d.ts.map +1 -1
  43. package/dist/esm/base/applications/boot-sequence.js +2 -0
  44. package/dist/esm/base/applications/boot-sequence.js.map +1 -1
  45. package/dist/esm/base/applications/common/types/application.d.ts +8 -0
  46. package/dist/esm/base/applications/common/types/application.d.ts.map +1 -1
  47. package/dist/esm/base/applications/rest.d.ts +7 -5
  48. package/dist/esm/base/applications/rest.d.ts.map +1 -1
  49. package/dist/esm/base/applications/rest.js +76 -60
  50. package/dist/esm/base/applications/rest.js.map +1 -1
  51. package/dist/esm/base/controllers/common/constants.d.ts +8 -0
  52. package/dist/esm/base/controllers/common/constants.d.ts.map +1 -1
  53. package/dist/esm/base/controllers/common/constants.js +9 -0
  54. package/dist/esm/base/controllers/common/constants.js.map +1 -1
  55. package/dist/esm/base/controllers/factory/controller.d.ts +17 -11
  56. package/dist/esm/base/controllers/factory/controller.d.ts.map +1 -1
  57. package/dist/esm/base/controllers/factory/crud/abstract.d.ts +2 -25
  58. package/dist/esm/base/controllers/factory/crud/abstract.d.ts.map +1 -1
  59. package/dist/esm/base/controllers/factory/crud/abstract.js +1 -21
  60. package/dist/esm/base/controllers/factory/crud/abstract.js.map +1 -1
  61. package/dist/esm/base/controllers/factory/crud/persistable.d.ts.map +1 -1
  62. package/dist/esm/base/controllers/factory/crud/persistable.js +11 -10
  63. package/dist/esm/base/controllers/factory/crud/persistable.js.map +1 -1
  64. package/dist/esm/base/controllers/factory/crud/readable.d.ts.map +1 -1
  65. package/dist/esm/base/controllers/factory/crud/readable.js +8 -8
  66. package/dist/esm/base/controllers/factory/crud/readable.js.map +1 -1
  67. package/dist/esm/base/controllers/rest/base.d.ts +34 -2
  68. package/dist/esm/base/controllers/rest/base.d.ts.map +1 -1
  69. package/dist/esm/base/controllers/rest/base.js +36 -1
  70. package/dist/esm/base/controllers/rest/base.js.map +1 -1
  71. package/dist/esm/base/metadata/injectable.d.ts.map +1 -1
  72. package/dist/esm/base/metadata/injectable.js.map +1 -1
  73. package/package.json +4 -4
@@ -40,6 +40,15 @@ export declare class ControllerFactory extends BaseHelper {
40
40
  context: import("../common").TRouteContext<RouteEnv>;
41
41
  }): Promise<import("../common").TJsonResponse<unknown, 200>>;
42
42
  repository: AbstractRepository<TDataObject, TPersistObject, import("../../repositories").IExtraOptions>;
43
+ bulkWhereError(opts: {
44
+ context: import("../common").TRouteContext<RouteEnv>;
45
+ where?: object;
46
+ }): import("../common").TJsonResponse<unknown, 400> | undefined;
47
+ measure<R>(opts: {
48
+ scope: string;
49
+ args: unknown;
50
+ task: () => Promise<R>;
51
+ }): Promise<any>;
43
52
  normalizeCountData<ResponseSchema extends unknown, RequestContext extends import("../common").TRouteContext<RouteEnv> = import("../common").TRouteContext<RouteEnv>, ResponseData extends {
44
53
  count: number;
45
54
  data?: import("@venizia/ignis-helpers/common").TNullable<ResponseSchema>;
@@ -48,28 +57,25 @@ export declare class ControllerFactory extends BaseHelper {
48
57
  data?: import("@venizia/ignis-helpers/common").TNullable<ResponseSchema>;
49
58
  }>(opts: {
50
59
  context: RequestContext;
51
- responseData: ResponseData;
60
+ payload: ResponseData;
52
61
  }): ResponseData | import("@venizia/ignis-helpers/common").TNullable<ResponseSchema>;
53
62
  respond<R>(opts: {
54
63
  context: import("../common").TRouteContext<RouteEnv>;
55
- format: "object" | "array";
56
- responseData: {
64
+ format: import("../common").TResponseFormat;
65
+ payload: {
57
66
  count: number;
58
67
  data?: import("@venizia/ignis-helpers/common").TNullable<R>;
59
68
  };
69
+ range?: import("../../repositories").TDataRange;
60
70
  }): import("@venizia/ignis-helpers/common").TNullable<R> | {
61
71
  count: number;
62
72
  data?: import("@venizia/ignis-helpers/common").TNullable<R>;
63
73
  };
64
- bulkWhereError(opts: {
74
+ setListHeaders(opts: {
65
75
  context: import("../common").TRouteContext<RouteEnv>;
66
- where?: object;
67
- }): import("../common").TJsonResponse<unknown, 400> | undefined;
68
- measure<R>(opts: {
69
- scope: string;
70
- args: unknown;
71
- task: () => Promise<R>;
72
- }): Promise<any>;
76
+ range: import("../../repositories").TDataRange;
77
+ count: number;
78
+ }): void;
73
79
  toHonoHandler<ResponseType = unknown>(opts: {
74
80
  handler: import("../common").TRouteHandler<ResponseType, RouteEnv>;
75
81
  }): import("hono").Handler<RouteEnv, string, import("hono").Input, (Response | Promise<Response>) | (import("@hono/zod-openapi").RouteConfigToTypedResponse<import("@hono/zod-openapi").RouteConfig> | Promise<import("@hono/zod-openapi").RouteConfigToTypedResponse<import("@hono/zod-openapi").RouteConfig>>)>;
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../../src/base/controllers/factory/controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAY,MAAM,6BAA6B,CAAC;AAEnE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,WAAW,CAAC;AAInB,6EAA6E;AAC7E,qBAAa,iBAAkB,SAAQ,UAAU;;IAK/C,MAAM,CAAC,oBAAoB,CACzB,OAAO,SAAS,cAAc,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,EACnF,MAAM,SAAS,mBAAmB,GAAG,mBAAmB,EACxD,QAAQ,SAAS,GAAG,GAAG,GAAG,EAC1B,WAAW,SAAS,MAAM,GAAG,EAAE,EAC/B,QAAQ,SAAS,MAAM,GAAG,GAAG,EAC7B,mBAAmB,SAAS,MAAM,GAAG,EAAE,EACvC,WAAW,SAAS,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,EACvD,cAAc,SAAS,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,EAC7D,OAAO,EAAE,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC;yBAuCtB,kBAAkB,CAAC,WAAW,EAAE,cAAc,CAAC;YAUvE,iGAAiG;uBAC7E,cAAc,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAAxC,CAAH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkFF"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../../src/base/controllers/factory/controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAY,MAAM,6BAA6B,CAAC;AAEnE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,WAAW,CAAC;AAInB,6EAA6E;AAC7E,qBAAa,iBAAkB,SAAQ,UAAU;;IAK/C,MAAM,CAAC,oBAAoB,CACzB,OAAO,SAAS,cAAc,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,EACnF,MAAM,SAAS,mBAAmB,GAAG,mBAAmB,EACxD,QAAQ,SAAS,GAAG,GAAG,GAAG,EAC1B,WAAW,SAAS,MAAM,GAAG,EAAE,EAC/B,QAAQ,SAAS,MAAM,GAAG,GAAG,EAC7B,mBAAmB,SAAS,MAAM,GAAG,EAAE,EACvC,WAAW,SAAS,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,EACvD,cAAc,SAAS,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,EAC7D,OAAO,EAAE,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC;yBAuCtB,kBAAkB,CAAC,WAAW,EAAE,cAAc,CAAC;YAUvE,iGAAiG;uBAC7E,cAAc,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAAxC,CAAH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkFF"}
@@ -1,11 +1,11 @@
1
1
  import type { AbstractEntity } from '../../../models/base';
2
2
  import type { AbstractRepository } from '../../../repositories';
3
3
  import type { TAnyObjectSchema } from '../../../../utilities/schema.utility';
4
- import type { AnyType, TNullable } from '@venizia/ignis-helpers/common';
4
+ import type { AnyType } from '@venizia/ignis-helpers/common';
5
5
  import type { Env, Schema } from 'hono';
6
6
  import type { TEntityDataObject, TEntityPersistObject, TRouteContext } from '../../common';
7
7
  import { BaseRestController } from '../../rest/base';
8
- /** Base tier of a generated CRUD controller - repository handle plus shared response helpers; read and write verbs are layered on by ReadableCrudController / PersistableCrudController. */
8
+ /** Base tier of a generated CRUD controller - the repository handle; the response helpers (`respond`, `setListHeaders`) live on BaseRestController so hand-written controllers share them. Read and write verbs are layered on by ReadableCrudController / PersistableCrudController. */
9
9
  export declare abstract class AbstractCrudController<TEntity extends AbstractEntity<TAnyObjectSchema> = AbstractEntity<TAnyObjectSchema>, RouteEnv extends Env = Env, RouteSchema extends Schema = {}, BasePath extends string = '/', ConfigurableOptions extends object = {}, TDataObject extends object = TEntityDataObject<TEntity>, TPersistObject extends object = TEntityPersistObject<TEntity>> extends BaseRestController<RouteEnv, RouteSchema, BasePath, ConfigurableOptions> {
10
10
  repository: AbstractRepository<TDataObject, TPersistObject>;
11
11
  constructor(opts: {
@@ -15,29 +15,6 @@ export declare abstract class AbstractCrudController<TEntity extends AbstractEnt
15
15
  repository: AbstractRepository<TDataObject, TPersistObject>;
16
16
  definitions: AnyType;
17
17
  });
18
- /** Returns the full `{ count, data }` envelope or just `data`, per the x-request-count header. */
19
- normalizeCountData<ResponseSchema extends AnyType, RequestContext extends TRouteContext<RouteEnv> = TRouteContext<RouteEnv>, ResponseData extends {
20
- count: number;
21
- data?: TNullable<ResponseSchema>;
22
- } = {
23
- count: number;
24
- data?: TNullable<ResponseSchema>;
25
- }>(opts: {
26
- context: RequestContext;
27
- responseData: ResponseData;
28
- }): TNullable<ResponseSchema> | ResponseData;
29
- /** Sets the response-format header, then normalizes count/data per the request-count header. */
30
- respond<R>(opts: {
31
- context: TRouteContext<RouteEnv>;
32
- format: 'object' | 'array';
33
- responseData: {
34
- count: number;
35
- data?: TNullable<R>;
36
- };
37
- }): TNullable<R> | {
38
- count: number;
39
- data?: TNullable<R>;
40
- };
41
18
  /** 400 when a bulk operation is missing its `where` filter; undefined when it is present. */
42
19
  bulkWhereError(opts: {
43
20
  context: TRouteContext<RouteEnv>;
@@ -1 +1 @@
1
- {"version":3,"file":"abstract.d.ts","sourceRoot":"","sources":["../../../../../../src/base/controllers/factory/crud/abstract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAGxE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,4LAA4L;AAC5L,8BAAsB,sBAAsB,CAC1C,OAAO,SAAS,cAAc,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,EACnF,QAAQ,SAAS,GAAG,GAAG,GAAG,EAC1B,WAAW,SAAS,MAAM,GAAG,EAAE,EAC/B,QAAQ,SAAS,MAAM,GAAG,GAAG,EAC7B,mBAAmB,SAAS,MAAM,GAAG,EAAE,EACvC,WAAW,SAAS,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,EACvD,cAAc,SAAS,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAC7D,SAAQ,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,CAAC;IAChF,UAAU,EAAE,kBAAkB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;gBAEhD,IAAI,EAAE;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,UAAU,EAAE,kBAAkB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAC5D,WAAW,EAAE,OAAO,CAAC;KACtB;IAMD,kGAAkG;IAClG,kBAAkB,CAChB,cAAc,SAAS,OAAO,EAC9B,cAAc,SAAS,aAAa,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,EACxE,YAAY,SAAS;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;KAClC,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,CAAA;KAAE,EACvD,IAAI,EAAE;QAAE,OAAO,EAAE,cAAc,CAAC;QAAC,YAAY,EAAE,YAAY,CAAA;KAAE;IAc/D,gGAAgG;IAChG,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE;QACf,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC;QAC3B,YAAY,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;SAAE,CAAC;KACtD;eApBc,MAAM;;;IA4BrB,6FAA6F;IAC7F,cAAc,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;CAU1E"}
1
+ {"version":3,"file":"abstract.d.ts","sourceRoot":"","sources":["../../../../../../src/base/controllers/factory/crud/abstract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAE7D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,yRAAyR;AACzR,8BAAsB,sBAAsB,CAC1C,OAAO,SAAS,cAAc,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,EACnF,QAAQ,SAAS,GAAG,GAAG,GAAG,EAC1B,WAAW,SAAS,MAAM,GAAG,EAAE,EAC/B,QAAQ,SAAS,MAAM,GAAG,GAAG,EAC7B,mBAAmB,SAAS,MAAM,GAAG,EAAE,EACvC,WAAW,SAAS,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,EACvD,cAAc,SAAS,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAC7D,SAAQ,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,CAAC;IAChF,UAAU,EAAE,kBAAkB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;gBAEhD,IAAI,EAAE;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,UAAU,EAAE,kBAAkB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAC5D,WAAW,EAAE,OAAO,CAAC;KACtB;IAMD,6FAA6F;IAC7F,cAAc,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;CAU1E"}
@@ -2,34 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AbstractCrudController = void 0;
4
4
  const common_1 = require("@venizia/ignis-helpers/common");
5
- const core_1 = require("@venizia/ignis-helpers/core");
6
5
  const base_1 = require("../../rest/base");
7
- /** Base tier of a generated CRUD controller - repository handle plus shared response helpers; read and write verbs are layered on by ReadableCrudController / PersistableCrudController. */
6
+ /** Base tier of a generated CRUD controller - the repository handle; the response helpers (`respond`, `setListHeaders`) live on BaseRestController so hand-written controllers share them. Read and write verbs are layered on by ReadableCrudController / PersistableCrudController. */
8
7
  class AbstractCrudController extends base_1.BaseRestController {
9
8
  constructor(opts) {
10
9
  super({ scope: opts.scope, path: opts.path, isStrict: opts.isStrict });
11
10
  this.repository = opts.repository;
12
11
  this.definitions = opts.definitions;
13
12
  }
14
- /** Returns the full `{ count, data }` envelope or just `data`, per the x-request-count header. */
15
- normalizeCountData(opts) {
16
- const { context, responseData } = opts;
17
- const requestCountData = context.req.header(common_1.HTTP.Headers.REQUEST_COUNT_DATA) ?? 'true';
18
- const useCountData = (0, core_1.toBoolean)(requestCountData);
19
- context.header(common_1.HTTP.Headers.RESPONSE_COUNT_DATA, responseData.count.toString());
20
- if (useCountData) {
21
- return responseData;
22
- }
23
- return responseData.data;
24
- }
25
- /** Sets the response-format header, then normalizes count/data per the request-count header. */
26
- respond(opts) {
27
- opts.context.header(common_1.HTTP.Headers.RESPONSE_FORMAT, opts.format);
28
- return this.normalizeCountData({
29
- context: opts.context,
30
- responseData: opts.responseData,
31
- });
32
- }
33
13
  /** 400 when a bulk operation is missing its `where` filter; undefined when it is present. */
34
14
  bulkWhereError(opts) {
35
15
  const { context, where } = opts;
@@ -1 +1 @@
1
- {"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../../../../../src/base/controllers/factory/crud/abstract.ts"],"names":[],"mappings":";;;AAIA,0DAAqD;AACrD,sDAAwD;AAGxD,0CAAqD;AAErD,4LAA4L;AAC5L,MAAsB,sBAQpB,SAAQ,yBAAwE;IAGhF,YAAY,IAMX;QACC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IACtC,CAAC;IAED,kGAAkG;IAClG,kBAAkB,CAOhB,IAA6D;QAC7D,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QACvC,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,aAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,MAAM,CAAC;QACvF,MAAM,YAAY,GAAG,IAAA,gBAAS,EAAC,gBAAgB,CAAC,CAAC;QAEjD,OAAO,CAAC,MAAM,CAAC,aAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEhF,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,OAAO,YAAY,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,gGAAgG;IAChG,OAAO,CAAI,IAIV;QACC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,aAAI,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,kBAAkB,CAAI;YAChC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC,CAAC;IACL,CAAC;IAED,6FAA6F;IAC7F,cAAc,CAAC,IAA0D;QACvE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,OAAO,OAAO,CAAC,IAAI,CACjB,EAAE,OAAO,EAAE,8CAA8C,EAAE,EAC3D,aAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CACjC,CAAC;QACJ,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AArED,wDAqEC"}
1
+ {"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../../../../../src/base/controllers/factory/crud/abstract.ts"],"names":[],"mappings":";;;AAIA,0DAAqD;AAGrD,0CAAqD;AAErD,yRAAyR;AACzR,MAAsB,sBAQpB,SAAQ,yBAAwE;IAGhF,YAAY,IAMX;QACC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IACtC,CAAC;IAED,6FAA6F;IAC7F,cAAc,CAAC,IAA0D;QACvE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,OAAO,OAAO,CAAC,IAAI,CACjB,EAAE,OAAO,EAAE,8CAA8C,EAAE,EAC3D,aAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CACjC,CAAC;QACJ,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAlCD,wDAkCC"}
@@ -1 +1 @@
1
- {"version":3,"file":"persistable.d.ts","sourceRoot":"","sources":["../../../../../../src/base/controllers/factory/crud/persistable.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD,mGAAmG;AACnG,8BAAsB,yBAAyB,CAC7C,OAAO,SAAS,cAAc,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,EACnF,QAAQ,SAAS,GAAG,GAAG,GAAG,EAC1B,WAAW,SAAS,MAAM,GAAG,EAAE,EAC/B,QAAQ,SAAS,MAAM,GAAG,GAAG,EAC7B,mBAAmB,SAAS,MAAM,GAAG,EAAE,EACvC,WAAW,SAAS,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,EACvD,cAAc,SAAS,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAC7D,SAAQ,sBAAsB,CAC9B,OAAO,EACP,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,mBAAmB,EACnB,WAAW,EACX,cAAc,CACf;IACC,aAAa;IACP,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;IAkBvD,iBAAiB;IACX,UAAU,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;IAmB3D,cAAc;IACR,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;IAyBzD,kBAAkB;IACZ,UAAU,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;IAkB3D,eAAe;IACT,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;CAsB1D"}
1
+ {"version":3,"file":"persistable.d.ts","sourceRoot":"","sources":["../../../../../../src/base/controllers/factory/crud/persistable.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGpD,mGAAmG;AACnG,8BAAsB,yBAAyB,CAC7C,OAAO,SAAS,cAAc,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,EACnF,QAAQ,SAAS,GAAG,GAAG,GAAG,EAC1B,WAAW,SAAS,MAAM,GAAG,EAAE,EAC/B,QAAQ,SAAS,MAAM,GAAG,GAAG,EAC7B,mBAAmB,SAAS,MAAM,GAAG,EAAE,EACvC,WAAW,SAAS,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,EACvD,cAAc,SAAS,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAC7D,SAAQ,sBAAsB,CAC9B,OAAO,EACP,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,mBAAmB,EACnB,WAAW,EACX,cAAc,CACf;IACC,aAAa;IACP,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;IAkBvD,iBAAiB;IACX,UAAU,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;IAmB3D,cAAc;IACR,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;IAyBzD,kBAAkB;IACZ,UAAU,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;IAkB3D,eAAe;IACT,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;CAsB1D"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PersistableCrudController = void 0;
4
4
  const common_1 = require("@venizia/ignis-helpers/common");
5
5
  const readable_1 = require("./readable");
6
+ const common_2 = require("../../common");
6
7
  /** Write tier: create / updateById / updateBy / deleteById / deleteBy. Inherits the read verbs. */
7
8
  class PersistableCrudController extends readable_1.ReadableCrudController {
8
9
  /** POST / */
@@ -14,8 +15,8 @@ class PersistableCrudController extends readable_1.ReadableCrudController {
14
15
  args: data,
15
16
  task: async () => this.respond({
16
17
  context,
17
- format: 'object',
18
- responseData: await this.repository.create({ data }),
18
+ format: common_2.ResponseFormats.OBJECT,
19
+ payload: await this.repository.create({ data }),
19
20
  }),
20
21
  });
21
22
  return context.json(rs, common_1.HTTP.ResultCodes.RS_2.Created);
@@ -30,8 +31,8 @@ class PersistableCrudController extends readable_1.ReadableCrudController {
30
31
  args: { id, data },
31
32
  task: async () => this.respond({
32
33
  context,
33
- format: 'object',
34
- responseData: await this.repository.updateById({ id, data }),
34
+ format: common_2.ResponseFormats.OBJECT,
35
+ payload: await this.repository.updateById({ id, data }),
35
36
  }),
36
37
  });
37
38
  return context.json(rs, common_1.HTTP.ResultCodes.RS_2.Ok);
@@ -50,8 +51,8 @@ class PersistableCrudController extends readable_1.ReadableCrudController {
50
51
  args: { where, data },
51
52
  task: async () => this.respond({
52
53
  context,
53
- format: 'array',
54
- responseData: await this.repository.updateBy({ where, data }),
54
+ format: common_2.ResponseFormats.ARRAY,
55
+ payload: await this.repository.updateBy({ where, data }),
55
56
  }),
56
57
  });
57
58
  return context.json(rs, common_1.HTTP.ResultCodes.RS_2.Ok);
@@ -65,8 +66,8 @@ class PersistableCrudController extends readable_1.ReadableCrudController {
65
66
  args: { id },
66
67
  task: async () => this.respond({
67
68
  context,
68
- format: 'object',
69
- responseData: await this.repository.deleteById({ id }),
69
+ format: common_2.ResponseFormats.OBJECT,
70
+ payload: await this.repository.deleteById({ id }),
70
71
  }),
71
72
  });
72
73
  return context.json(rs, common_1.HTTP.ResultCodes.RS_2.Ok);
@@ -84,8 +85,8 @@ class PersistableCrudController extends readable_1.ReadableCrudController {
84
85
  args: { where },
85
86
  task: async () => this.respond({
86
87
  context,
87
- format: 'array',
88
- responseData: await this.repository.deleteBy({ where }),
88
+ format: common_2.ResponseFormats.ARRAY,
89
+ payload: await this.repository.deleteBy({ where }),
89
90
  }),
90
91
  });
91
92
  return context.json(rs, common_1.HTTP.ResultCodes.RS_2.Ok);
@@ -1 +1 @@
1
- {"version":3,"file":"persistable.js","sourceRoot":"","sources":["../../../../../../src/base/controllers/factory/crud/persistable.ts"],"names":[],"mappings":";;;AAIA,0DAAqD;AAGrD,yCAAoD;AAEpD,mGAAmG;AACnG,MAAsB,yBAQpB,SAAQ,iCAQT;IACC,aAAa;IACb,KAAK,CAAC,MAAM,CAAC,IAA0C;QACrD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAiB,MAAM,CAAC,CAAC;QAEvD,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YAC5B,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,KAAK,IAAI,EAAE,CACf,IAAI,CAAC,OAAO,CAAc;gBACxB,OAAO;gBACP,MAAM,EAAE,QAAQ;gBAChB,YAAY,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;aACrD,CAAC;SACL,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,aAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,iBAAiB;IACjB,KAAK,CAAC,UAAU,CAAC,IAA0C;QACzD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAiB,OAAO,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAA0B,MAAM,CAAC,CAAC;QAEhE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YAC5B,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE;YAClB,IAAI,EAAE,KAAK,IAAI,EAAE,CACf,IAAI,CAAC,OAAO,CAAc;gBACxB,OAAO;gBACP,MAAM,EAAE,QAAQ;gBAChB,YAAY,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;aAC7D,CAAC;SACL,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,aAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,cAAc;IACd,KAAK,CAAC,QAAQ,CAAC,IAA0C;QACvD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAiC,OAAO,CAAC,CAAC;QAE7E,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACtD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAA0B,MAAM,CAAC,CAAC;QAEhE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YAC5B,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;YACrB,IAAI,EAAE,KAAK,IAAI,EAAE,CACf,IAAI,CAAC,OAAO,CAAqB;gBAC/B,OAAO;gBACP,MAAM,EAAE,OAAO;gBACf,YAAY,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;aAC9D,CAAC;SACL,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,aAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,UAAU,CAAC,IAA0C;QACzD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAiB,OAAO,CAAC,CAAC;QAE1D,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YAC5B,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,EAAE,EAAE,EAAE;YACZ,IAAI,EAAE,KAAK,IAAI,EAAE,CACf,IAAI,CAAC,OAAO,CAAc;gBACxB,OAAO;gBACP,MAAM,EAAE,QAAQ;gBAChB,YAAY,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;aACvD,CAAC;SACL,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,aAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,eAAe;IACf,KAAK,CAAC,QAAQ,CAAC,IAA0C;QACvD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAiC,OAAO,CAAC,CAAC;QAE7E,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACtD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YAC5B,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,EAAE,KAAK,EAAE;YACf,IAAI,EAAE,KAAK,IAAI,EAAE,CACf,IAAI,CAAC,OAAO,CAAqB;gBAC/B,OAAO;gBACP,MAAM,EAAE,OAAO;gBACf,YAAY,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;aACxD,CAAC;SACL,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,aAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;CACF;AA5HD,8DA4HC"}
1
+ {"version":3,"file":"persistable.js","sourceRoot":"","sources":["../../../../../../src/base/controllers/factory/crud/persistable.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"readable.d.ts","sourceRoot":"","sources":["../../../../../../src/base/controllers/factory/crud/readable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAU,MAAM,eAAe,CAAC;AAE5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD,oGAAoG;AACpG,8BAAsB,sBAAsB,CAC1C,OAAO,SAAS,cAAc,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,EACnF,QAAQ,SAAS,GAAG,GAAG,GAAG,EAC1B,WAAW,SAAS,MAAM,GAAG,EAAE,EAC/B,QAAQ,SAAS,MAAM,GAAG,GAAG,EAC7B,mBAAmB,SAAS,MAAM,GAAG,EAAE,EACvC,WAAW,SAAS,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,EACvD,cAAc,SAAS,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAC7D,SAAQ,sBAAsB,CAC9B,OAAO,EACP,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,mBAAmB,EACnB,WAAW,EACX,cAAc,CACf;IACC,iBAAiB;IACX,KAAK,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;IAatD,0DAA0D;IACpD,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;IA8BrD,eAAe;IACT,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;IAqBzD,oBAAoB;IACd,OAAO,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;CAmBzD"}
1
+ {"version":3,"file":"readable.d.ts","sourceRoot":"","sources":["../../../../../../src/base/controllers/factory/crud/readable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAU,MAAM,eAAe,CAAC;AAE5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGpD,oGAAoG;AACpG,8BAAsB,sBAAsB,CAC1C,OAAO,SAAS,cAAc,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,EACnF,QAAQ,SAAS,GAAG,GAAG,GAAG,EAC1B,WAAW,SAAS,MAAM,GAAG,EAAE,EAC/B,QAAQ,SAAS,MAAM,GAAG,GAAG,EAC7B,mBAAmB,SAAS,MAAM,GAAG,EAAE,EACvC,WAAW,SAAS,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,EACvD,cAAc,SAAS,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAC7D,SAAQ,sBAAsB,CAC9B,OAAO,EACP,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,mBAAmB,EACnB,WAAW,EACX,cAAc,CACf;IACC,iBAAiB;IACX,KAAK,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;IAatD,0DAA0D;IACpD,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;IAyBrD,eAAe;IACT,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;IAqBzD,oBAAoB;IACd,OAAO,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;CAmBzD"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ReadableCrudController = void 0;
4
4
  const common_1 = require("@venizia/ignis-helpers/common");
5
5
  const abstract_1 = require("./abstract");
6
+ const common_2 = require("../../common");
6
7
  /** Read tier: count / find / findById / findOne. Read-only controllers can extend this directly. */
7
8
  class ReadableCrudController extends abstract_1.AbstractCrudController {
8
9
  /** GET /count */
@@ -28,12 +29,11 @@ class ReadableCrudController extends abstract_1.AbstractCrudController {
28
29
  filter,
29
30
  options: { shouldQueryRange: true },
30
31
  });
31
- const { start, end, total } = range;
32
- context.header(common_1.HTTP.Headers.CONTENT_RANGE, data.length > 0 ? `records ${start}-${end}/${total}` : `records */${total}`);
33
32
  return this.respond({
34
33
  context,
35
- format: 'array',
36
- responseData: { count: data.length, data },
34
+ format: common_2.ResponseFormats.ARRAY,
35
+ payload: { count: data.length, data },
36
+ range,
37
37
  });
38
38
  },
39
39
  });
@@ -51,8 +51,8 @@ class ReadableCrudController extends abstract_1.AbstractCrudController {
51
51
  const record = await this.repository.findById({ id, filter });
52
52
  return this.respond({
53
53
  context,
54
- format: 'object',
55
- responseData: { count: record ? 1 : 0, data: record },
54
+ format: common_2.ResponseFormats.OBJECT,
55
+ payload: { count: record ? 1 : 0, data: record },
56
56
  });
57
57
  },
58
58
  });
@@ -69,8 +69,8 @@ class ReadableCrudController extends abstract_1.AbstractCrudController {
69
69
  const record = await this.repository.findOne({ filter });
70
70
  return this.respond({
71
71
  context,
72
- format: 'object',
73
- responseData: { count: record ? 1 : 0, data: record },
72
+ format: common_2.ResponseFormats.OBJECT,
73
+ payload: { count: record ? 1 : 0, data: record },
74
74
  });
75
75
  },
76
76
  });
@@ -1 +1 @@
1
- {"version":3,"file":"readable.js","sourceRoot":"","sources":["../../../../../../src/base/controllers/factory/crud/readable.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"readable.js","sourceRoot":"","sources":["../../../../../../src/base/controllers/factory/crud/readable.ts"],"names":[],"mappings":";;;AAGA,0DAAqD;AAGrD,yCAAoD;AACpD,yCAA+C;AAE/C,oGAAoG;AACpG,MAAsB,sBAQpB,SAAQ,iCAQT;IACC,iBAAiB;IACjB,KAAK,CAAC,KAAK,CAAC,IAA0C;QACpD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAiC,OAAO,CAAC,CAAC;QAE7E,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YAC5B,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,EAAE,KAAK,EAAE;YACf,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;SAC7C,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,aAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,0DAA0D;IAC1D,KAAK,CAAC,IAAI,CAAC,IAA0C;QACnD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAoC,OAAO,CAAC,CAAC;QAEtF,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YAC5B,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;oBACjD,MAAM;oBACN,OAAO,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE;iBACpC,CAAC,CAAC;gBAEH,OAAO,IAAI,CAAC,OAAO,CAAqB;oBACtC,OAAO;oBACP,MAAM,EAAE,wBAAe,CAAC,KAAK;oBAC7B,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE;oBACrC,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,aAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,eAAe;IACf,KAAK,CAAC,QAAQ,CAAC,IAA0C;QACvD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAiB,OAAO,CAAC,CAAC;QAC1D,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAmD,OAAO,CAAC,CAAC;QAEhG,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YAC5B,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC9D,OAAO,IAAI,CAAC,OAAO,CAAc;oBAC/B,OAAO;oBACP,MAAM,EAAE,wBAAe,CAAC,MAAM;oBAC9B,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;iBACjD,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,aAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,oBAAoB;IACpB,KAAK,CAAC,OAAO,CAAC,IAA0C;QACtD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAoC,OAAO,CAAC,CAAC;QAEtF,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YAC5B,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;gBACzD,OAAO,IAAI,CAAC,OAAO,CAAc;oBAC/B,OAAO;oBACP,MAAM,EAAE,wBAAe,CAAC,MAAM;oBAC9B,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;iBACjD,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,aAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;CACF;AAnGD,wDAmGC"}
@@ -1,7 +1,9 @@
1
1
  import type { Hook, OpenAPIHono } from '@hono/zod-openapi';
2
- import type { ValueOrPromise } from '@venizia/ignis-helpers/common';
2
+ import type { TDataRange } from '../../repositories/common/types';
3
+ import type { AnyType, TNullable, ValueOrPromise } from '@venizia/ignis-helpers/common';
3
4
  import type { Env, Schema } from 'hono';
4
- import type { IAuthRouteConfig, IBindRouteOptions, IDefineRouteOptions, TRouteHandler } from '../common/types';
5
+ import type { TResponseFormat } from '../common/constants';
6
+ import type { IAuthRouteConfig, IBindRouteOptions, IDefineRouteOptions, TRouteContext, TRouteHandler } from '../common/types';
5
7
  import { AbstractRestController } from './abstract';
6
8
  /** Recommended base class for REST controllers with concrete bindRoute and defineRoute implementations. */
7
9
  export declare abstract class BaseRestController<RouteEnv extends Env = Env, RouteSchema extends Schema = {}, BasePath extends string = '/', ConfigurableOptions extends object = {}, Definitions extends Record<string, IAuthRouteConfig> = Record<string, IAuthRouteConfig>> extends AbstractRestController<RouteEnv, RouteSchema, BasePath, ConfigurableOptions, Definitions> {
@@ -11,6 +13,36 @@ export declare abstract class BaseRestController<RouteEnv extends Env = Env, Rou
11
13
  args: unknown;
12
14
  task: () => Promise<R>;
13
15
  }): Promise<any>;
16
+ /** Returns the full `{ count, data }` envelope, or just `data` when the client sent `x-request-count: false`; `X-Response-Count` is set either way. */
17
+ normalizeCountData<ResponseSchema extends AnyType, RequestContext extends TRouteContext<RouteEnv> = TRouteContext<RouteEnv>, ResponseData extends {
18
+ count: number;
19
+ data?: TNullable<ResponseSchema>;
20
+ } = {
21
+ count: number;
22
+ data?: TNullable<ResponseSchema>;
23
+ }>(opts: {
24
+ context: RequestContext;
25
+ payload: ResponseData;
26
+ }): TNullable<ResponseSchema> | ResponseData;
27
+ /** The one response call. Sets `X-Response-Format`, and with `range` (a list) also `Content-Range` - `payload.count` is the rows of THIS response, never the total - then normalizes count/data per the request-count header. */
28
+ respond<R>(opts: {
29
+ context: TRouteContext<RouteEnv>;
30
+ format: TResponseFormat;
31
+ payload: {
32
+ count: number;
33
+ data?: TNullable<R>;
34
+ };
35
+ range?: TDataRange;
36
+ }): TNullable<R> | {
37
+ count: number;
38
+ data?: TNullable<R>;
39
+ };
40
+ /** The list headers without the body, for a list whose body is not a `{ count, data }` envelope: `Content-Range`, `X-Response-Count` = rows in THIS response, `X-Response-Format: array`. */
41
+ setListHeaders(opts: {
42
+ context: TRouteContext<RouteEnv>;
43
+ range: TDataRange;
44
+ count: number;
45
+ }): void;
14
46
  /** TRouteHandler's TRouteContext is a lightweight custom shape (different `json`/`req.valid` signatures) built on Hono's real Context, not a subtype of the RouteHandler `.openapi()` expects - genuinely different handler types bridged here. */
15
47
  toHonoHandler<ResponseType = unknown>(opts: {
16
48
  handler: TRouteHandler<ResponseType, RouteEnv>;
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../src/base/controllers/rest/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD,2GAA2G;AAC3G,8BAAsB,kBAAkB,CACtC,QAAQ,SAAS,GAAG,GAAG,GAAG,EAC1B,WAAW,SAAS,MAAM,GAAG,EAAE,EAC/B,QAAQ,SAAS,MAAM,GAAG,GAAG,EAC7B,mBAAmB,SAAS,MAAM,GAAG,EAAE,EACvC,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CACvF,SAAQ,sBAAsB,CAC9B,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,mBAAmB,EACnB,WAAW,CACZ;IACC,0FAA0F;IAC1F,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAA;KAAE;IAWzE,mPAAmP;IACnP,aAAa,CAAC,YAAY,GAAG,OAAO,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;KAAE,GACrE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAGxE,uFAAuF;IACvF,SAAS,CAAC,WAAW,SAAS,gBAAgB,EAAE,IAAI,EAAE;QACpD,OAAO,EAAE,WAAW,CAAC;KACtB,GAAG,iBAAiB,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC;IAcnE,uEAAuE;IACvE,WAAW,CAAC,WAAW,SAAS,gBAAgB,EAAE,YAAY,GAAG,OAAO,EAAE,IAAI,EAAE;QAC9E,OAAO,EAAE,WAAW,CAAC;QACrB,OAAO,EAAE,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;KACzD,GAAG,mBAAmB,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC;IAarE,sEAAsE;IACtE,cAAc,CAAC,WAAW,SAAS,gBAAgB,EAAE,YAAY,GAAG,OAAO,EAAE,IAAI,EAAE;QACjF,OAAO,EAAE,WAAW,CAAC;QACrB,OAAO,EAAE,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;KACzD,GAAG,mBAAmB,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC;CAYtE"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../src/base/controllers/rest/base.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BaseRestController = void 0;
4
+ const common_1 = require("@venizia/ignis-helpers/common");
4
5
  const core_1 = require("@venizia/ignis-helpers/core");
6
+ const constants_1 = require("../common/constants");
5
7
  const abstract_1 = require("./abstract");
8
+ /** `Content-Range` of a page: inclusive `end`, and `records * /<total>` (no space) when the page is empty. */
9
+ const toContentRange = (opts) => {
10
+ const { range, count } = opts;
11
+ const { start, end, total } = range;
12
+ return count > 0 ? `records ${start}-${end}/${total}` : `records */${total}`;
13
+ };
6
14
  /** Recommended base class for REST controllers with concrete bindRoute and defineRoute implementations. */
7
15
  class BaseRestController extends abstract_1.AbstractRestController {
8
16
  /** Runs a handler task under performance measurement (fixed logger/level/description). */
@@ -16,6 +24,33 @@ class BaseRestController extends abstract_1.AbstractRestController {
16
24
  task: opts.task,
17
25
  });
18
26
  }
27
+ /** Returns the full `{ count, data }` envelope, or just `data` when the client sent `x-request-count: false`; `X-Response-Count` is set either way. */
28
+ normalizeCountData(opts) {
29
+ const { context, payload } = opts;
30
+ const requestCountData = context.req.header(common_1.HTTP.Headers.REQUEST_COUNT_DATA) ?? 'true';
31
+ const useCountData = (0, core_1.toBoolean)(requestCountData);
32
+ context.header(common_1.HTTP.Headers.RESPONSE_COUNT_DATA, payload.count.toString());
33
+ if (useCountData) {
34
+ return payload;
35
+ }
36
+ return payload.data;
37
+ }
38
+ /** The one response call. Sets `X-Response-Format`, and with `range` (a list) also `Content-Range` - `payload.count` is the rows of THIS response, never the total - then normalizes count/data per the request-count header. */
39
+ respond(opts) {
40
+ const { context, format, payload, range } = opts;
41
+ if (range) {
42
+ context.header(common_1.HTTP.Headers.CONTENT_RANGE, toContentRange({ range, count: payload.count }));
43
+ }
44
+ context.header(common_1.HTTP.Headers.RESPONSE_FORMAT, format);
45
+ return this.normalizeCountData({ context, payload });
46
+ }
47
+ /** The list headers without the body, for a list whose body is not a `{ count, data }` envelope: `Content-Range`, `X-Response-Count` = rows in THIS response, `X-Response-Format: array`. */
48
+ setListHeaders(opts) {
49
+ const { context, range, count } = opts;
50
+ context.header(common_1.HTTP.Headers.CONTENT_RANGE, toContentRange({ range, count }));
51
+ context.header(common_1.HTTP.Headers.RESPONSE_COUNT_DATA, count.toString());
52
+ context.header(common_1.HTTP.Headers.RESPONSE_FORMAT, constants_1.ResponseFormats.ARRAY);
53
+ }
19
54
  /** TRouteHandler's TRouteContext is a lightweight custom shape (different `json`/`req.valid` signatures) built on Hono's real Context, not a subtype of the RouteHandler `.openapi()` expects - genuinely different handler types bridged here. */
20
55
  toHonoHandler(opts) {
21
56
  return opts.handler;
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../src/base/controllers/rest/base.ts"],"names":[],"mappings":";;;AAEA,sDAA4E;AAQ5E,yCAAoD;AAEpD,2GAA2G;AAC3G,MAAsB,kBAMpB,SAAQ,iCAMT;IACC,0FAA0F;IAC1F,OAAO,CAAI,IAA8D;QACvE,OAAO,IAAA,oCAA6B,EAAC;YACnC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,WAAW,IAAI,CAAC,KAAK,EAAE;YACpC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED,mPAAmP;IACnP,aAAa,CAAyB,IAAwD;QAC5F,OAAO,IAAI,CAAC,OAA0D,CAAC;IACzE,CAAC;IAED,uFAAuF;IACvF,SAAS,CAAuC,IAE/C;QACC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAc,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAElF,OAAO;YACL,OAAO,EAAE,YAAY;YACrB,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;gBAClB,OAAO;oBACL,OAAO,EAAE,YAAY;oBACrB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;iBAC1E,CAAC;YACJ,CAAC;SACF,CAAC;IACJ,CAAC;IAED,uEAAuE;IACvE,WAAW,CAA+D,IAIzE;QACC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAc,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAElF,OAAO;YACL,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CACxB,YAAY,EACZ,IAAI,CAAC,aAAa,CAAe,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAC3D,IAAI,CAAC,IAAI,CACV;SACF,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,cAAc,CAA+D,IAI5E;QACC,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAc,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAErF,OAAO;YACL,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CACxB,YAAY,EACZ,IAAI,CAAC,aAAa,CAAe,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAC3D,IAAI,CAAC,IAAI,CACV;SACF,CAAC;IACJ,CAAC;CACF;AAlFD,gDAkFC"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../src/base/controllers/rest/base.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"injectable.d.ts","sourceRoot":"","sources":["../../../../src/base/metadata/injectable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,4BAA4B,EAC5B,aAAa,EACd,MAAM,qBAAqB,CAAC;AAI7B,oJAAoJ;AACpJ,eAAO,MAAM,UAAU,GAAI,eAAe,GAAG,OAAO,EAClD,MAAM,iBAAiB,CAAC,eAAe,CAAC,KACvC,cAUF,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,eAAe,GAAG,OAAO,EAC/C,OAAO,4BAA4B,CAAC,eAAe,CAAC,KACnD,cAEF,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,eAAe,GAAG,OAAO,EACjD,OAAO,4BAA4B,CAAC,eAAe,CAAC,KACnD,cAEF,CAAC;AAEF,yMAAyM;AACzM,eAAO,MAAM,OAAO,GAAI,MAAM;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAA;CAAE,KAAG,eAWtE,CAAC;AAEF,gIAAgI;AAChI,eAAO,MAAM,uBAAuB,GAAI,eAAe,GAAG,OAAO,EAAE,MAAM;IACvE,QAAQ,EAAE,4BAA4B,CAAC,eAAe,CAAC,CAAC;CACzD,KAAG,4BAA4B,CAAC,eAAe,CAqB/C,CAAC"}
1
+ {"version":3,"file":"injectable.d.ts","sourceRoot":"","sources":["../../../../src/base/metadata/injectable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,4BAA4B,EAC5B,aAAa,EACd,MAAM,qBAAqB,CAAC;AAI7B,oJAAoJ;AACpJ,eAAO,MAAM,UAAU,GAAI,eAAe,GAAG,OAAO,EAClD,MAAM,iBAAiB,CAAC,eAAe,CAAC,KACvC,cAUF,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,eAAe,GAAG,OAAO,EAC/C,OAAO,4BAA4B,CAAC,eAAe,CAAC,KACnD,cAEF,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,eAAe,GAAG,OAAO,EACjD,OAAO,4BAA4B,CAAC,eAAe,CAAC,KACnD,cAEF,CAAC;AAEF,yMAAyM;AACzM,eAAO,MAAM,OAAO,GAAI,MAAM;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAA;CAAE,KAAG,eAWtE,CAAC;AAEF,gIAAgI;AAChI,eAAO,MAAM,uBAAuB,GAAI,eAAe,GAAG,OAAO,EAAE,MAAM;IACvE,QAAQ,EAAE,4BAA4B,CAAC,eAAe,CAAC,CAAC;CACzD,KAAG,4BAA4B,CAAC,eAAe,CAyB/C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"injectable.js","sourceRoot":"","sources":["../../../../src/base/metadata/injectable.ts"],"names":[],"mappings":";;;AAKA,mDAAsE;AACtE,sDAAuD;AAEvD,oJAAoJ;AAC7I,MAAM,UAAU,GAAG,CACxB,IAAwC,EACxB,EAAE;IAClB,OAAO,MAAM,CAAC,EAAE;QACd,IAAI,CAAC,yBAAa,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,IAAA,eAAQ,EAAC;gBACb,OAAO,EAAE,gBAAgB,MAAM,CAAC,IAAI,6BAA6B,IAAI,CAAC,IAAI,wBAAwB,CAAC,GAAG,yBAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aAC7I,CAAC,CAAC;QACL,CAAC;QAED,4BAAgB,CAAC,WAAW,EAAE,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACjF,CAAC,CAAC;AACJ,CAAC,CAAC;AAZW,QAAA,UAAU,cAYrB;AAEK,MAAM,OAAO,GAAG,CACrB,IAAoD,EACpC,EAAE;IAClB,OAAO,IAAA,kBAAU,EAAkB,EAAE,IAAI,EAAE,yBAAa,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;AAC/E,CAAC,CAAC;AAJW,QAAA,OAAO,WAIlB;AAEK,MAAM,SAAS,GAAG,CACvB,IAAoD,EACpC,EAAE;IAClB,OAAO,IAAA,kBAAU,EAAkB,EAAE,IAAI,EAAE,yBAAa,CAAC,SAAS,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;AACjF,CAAC,CAAC;AAJW,QAAA,SAAS,aAIpB;AAEF,yMAAyM;AAClM,MAAM,OAAO,GAAG,CAAC,IAA4C,EAAmB,EAAE;IACvF,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;QAC7B,4BAAgB,CAAC,WAAW,EAAE,CAAC,kBAAkB,CAAC;YAChD,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,QAAQ,EAAE;gBACR,UAAU,EAAE,WAAW;gBACvB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7C;SACF,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,OAAO,WAWlB;AAEF,gIAAgI;AACzH,MAAM,uBAAuB,GAAG,CAA4B,IAElE,EAAiD,EAAE;IAClD,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;IACrE,MAAM,YAAY,GAAkD,EAAE,CAAC;IAEvE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC;IACjC,CAAC;IACD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,YAAY,CAAC,aAAa,GAAG,aAAa,CAAC;IAC7C,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;IAC7B,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAvBW,QAAA,uBAAuB,2BAuBlC"}
1
+ {"version":3,"file":"injectable.js","sourceRoot":"","sources":["../../../../src/base/metadata/injectable.ts"],"names":[],"mappings":";;;AAKA,mDAAsE;AACtE,sDAAuD;AAEvD,oJAAoJ;AAC7I,MAAM,UAAU,GAAG,CACxB,IAAwC,EACxB,EAAE;IAClB,OAAO,MAAM,CAAC,EAAE;QACd,IAAI,CAAC,yBAAa,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,IAAA,eAAQ,EAAC;gBACb,OAAO,EAAE,gBAAgB,MAAM,CAAC,IAAI,6BAA6B,IAAI,CAAC,IAAI,wBAAwB,CAAC,GAAG,yBAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aAC7I,CAAC,CAAC;QACL,CAAC;QAED,4BAAgB,CAAC,WAAW,EAAE,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACjF,CAAC,CAAC;AACJ,CAAC,CAAC;AAZW,QAAA,UAAU,cAYrB;AAEK,MAAM,OAAO,GAAG,CACrB,IAAoD,EACpC,EAAE;IAClB,OAAO,IAAA,kBAAU,EAAkB,EAAE,IAAI,EAAE,yBAAa,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;AAC/E,CAAC,CAAC;AAJW,QAAA,OAAO,WAIlB;AAEK,MAAM,SAAS,GAAG,CACvB,IAAoD,EACpC,EAAE;IAClB,OAAO,IAAA,kBAAU,EAAkB,EAAE,IAAI,EAAE,yBAAa,CAAC,SAAS,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;AACjF,CAAC,CAAC;AAJW,QAAA,SAAS,aAIpB;AAEF,yMAAyM;AAClM,MAAM,OAAO,GAAG,CAAC,IAA4C,EAAmB,EAAE;IACvF,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;QAC7B,4BAAgB,CAAC,WAAW,EAAE,CAAC,kBAAkB,CAAC;YAChD,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,QAAQ,EAAE;gBACR,UAAU,EAAE,WAAW;gBACvB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7C;SACF,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,OAAO,WAWlB;AAEF,gIAAgI;AACzH,MAAM,uBAAuB,GAAG,CAA4B,IAElE,EAAiD,EAAE;IAClD,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;IACrE,MAAM,YAAY,GAAkD,EAAE,CAAC;IAEvE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC;IACjC,CAAC;IAED,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,YAAY,CAAC,aAAa,GAAG,aAAa,CAAC;IAC7C,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AA3BW,QAAA,uBAAuB,2BA2BlC"}
@@ -0,0 +1,25 @@
1
+ import { BaseHelper } from '@venizia/ignis-helpers/core';
2
+ import type { IArtifactIndex, TArtifactIndexInput } from './common/index.js';
3
+ /** Turns a `configs.artifacts` input into the classes to register: flattens nested indexes, drops the classes whose `when` says no, orders the rest. It never touches the container - `registerArtifacts` does the binding. */
4
+ export declare class ArtifactIndexHelper extends BaseHelper {
5
+ static readonly SINGLETON_REALM_KEY = "artifact-index-helper";
6
+ private constructor();
7
+ static getInstance(): ArtifactIndexHelper;
8
+ /** Every kind of the input, each already filtered by `when` and sorted by `order`, keyed the way `IArtifactIndex` is. */
9
+ resolve(opts: {
10
+ input: TArtifactIndexInput;
11
+ application: unknown;
12
+ }): Promise<Required<IArtifactIndex>>;
13
+ /** One index, or arrays nested to any depth, as a flat list in input order. */
14
+ flatten(opts: {
15
+ input: TArtifactIndexInput;
16
+ }): IArtifactIndex[];
17
+ /** The classes of one kind across every index, minus those whose `when` says no, sorted by `order` (stable). The `when` conditions run concurrently: each reads config and environment, never another artifact. */
18
+ select<Field extends keyof IArtifactIndex>(opts: {
19
+ indexes: IArtifactIndex[];
20
+ field: Field;
21
+ application: unknown;
22
+ }): Promise<NonNullable<IArtifactIndex[Field]>[number][]>;
23
+ private isSelected;
24
+ }
25
+ //# sourceMappingURL=artifact-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-index.d.ts","sourceRoot":"","sources":["../../../../src/base/applications/artifact-index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGpE,+NAA+N;AAC/N,qBAAa,mBAAoB,SAAQ,UAAU;IACjD,MAAM,CAAC,QAAQ,CAAC,mBAAmB,2BAA2B;IAE9D,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,mBAAmB;IAOzC,yHAAyH;IACnH,OAAO,CAAC,IAAI,EAAE;QAClB,KAAK,EAAE,mBAAmB,CAAC;QAC3B,WAAW,EAAE,OAAO,CAAC;KACtB,GAAG,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAiCrC,+EAA+E;IAC/E,OAAO,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,mBAAmB,CAAA;KAAE,GAAG,cAAc,EAAE;IAS/D,mNAAmN;IAC7M,MAAM,CAAC,KAAK,SAAS,MAAM,cAAc,EAAE,IAAI,EAAE;QACrD,OAAO,EAAE,cAAc,EAAE,CAAC;QAC1B,KAAK,EAAE,KAAK,CAAC;QACb,WAAW,EAAE,OAAO,CAAC;KACtB,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YA0B3C,UAAU;CAYzB"}
@@ -0,0 +1,87 @@
1
+ import { MetadataRegistry } from '../../helpers/inversion/index.js';
2
+ import { SingletonRealm } from '../../helpers/singleton-realm.js';
3
+ import { BaseHelper } from '@venizia/ignis-helpers/core';
4
+ import { ArtifactIndexFields } from './common/index.js';
5
+ /** Turns a `configs.artifacts` input into the classes to register: flattens nested indexes, drops the classes whose `when` says no, orders the rest. It never touches the container - `registerArtifacts` does the binding. */
6
+ export class ArtifactIndexHelper extends BaseHelper {
7
+ static { this.SINGLETON_REALM_KEY = 'artifact-index-helper'; }
8
+ constructor() {
9
+ super({ scope: ArtifactIndexHelper.name });
10
+ }
11
+ static getInstance() {
12
+ return SingletonRealm.resolve({
13
+ key: ArtifactIndexHelper.SINGLETON_REALM_KEY,
14
+ create: () => new ArtifactIndexHelper(),
15
+ });
16
+ }
17
+ /** Every kind of the input, each already filtered by `when` and sorted by `order`, keyed the way `IArtifactIndex` is. */
18
+ async resolve(opts) {
19
+ const { input, application } = opts;
20
+ const indexes = this.flatten({ input });
21
+ const dataSources = await this.select({
22
+ indexes,
23
+ field: ArtifactIndexFields.DATA_SOURCES,
24
+ application,
25
+ });
26
+ const components = await this.select({
27
+ indexes,
28
+ field: ArtifactIndexFields.COMPONENTS,
29
+ application,
30
+ });
31
+ const repositories = await this.select({
32
+ indexes,
33
+ field: ArtifactIndexFields.REPOSITORIES,
34
+ application,
35
+ });
36
+ const services = await this.select({
37
+ indexes,
38
+ field: ArtifactIndexFields.SERVICES,
39
+ application,
40
+ });
41
+ const controllers = await this.select({
42
+ indexes,
43
+ field: ArtifactIndexFields.CONTROLLERS,
44
+ application,
45
+ });
46
+ return { dataSources, components, repositories, services, controllers };
47
+ }
48
+ /** One index, or arrays nested to any depth, as a flat list in input order. */
49
+ flatten(opts) {
50
+ const { input } = opts;
51
+ if (Array.isArray(input)) {
52
+ return input.flatMap(entry => this.flatten({ input: entry }));
53
+ }
54
+ return [input];
55
+ }
56
+ /** The classes of one kind across every index, minus those whose `when` says no, sorted by `order` (stable). The `when` conditions run concurrently: each reads config and environment, never another artifact. */
57
+ async select(opts) {
58
+ const { indexes, field, application } = opts;
59
+ const registry = MetadataRegistry.getInstance();
60
+ const listed = indexes.flatMap(index => [...(index[field] ?? [])]);
61
+ const decisions = await Promise.all(listed.map(ctor => this.isSelected({ ctor, application })));
62
+ const kept = listed.filter((ctor, position) => {
63
+ if (decisions[position]) {
64
+ return true;
65
+ }
66
+ this.logger.debug('Skipped by condition | kind: %s | class: %s', field, ctor.name);
67
+ return false;
68
+ });
69
+ return kept
70
+ .map((ctor, position) => ({
71
+ ctor,
72
+ position,
73
+ order: registry.getArtifactMetadata({ target: ctor })?.order ?? 0,
74
+ }))
75
+ .sort((a, b) => a.order - b.order || a.position - b.position)
76
+ .map(entry => entry.ctor);
77
+ }
78
+ async isSelected(opts) {
79
+ const { ctor, application } = opts;
80
+ const when = MetadataRegistry.getInstance().getArtifactMetadata({ target: ctor })?.when;
81
+ if (!when) {
82
+ return true;
83
+ }
84
+ return when({ application });
85
+ }
86
+ }
87
+ //# sourceMappingURL=artifact-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-index.js","sourceRoot":"","sources":["../../../../src/base/applications/artifact-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,+NAA+N;AAC/N,MAAM,OAAO,mBAAoB,SAAQ,UAAU;aACjC,wBAAmB,GAAG,uBAAuB,CAAC;IAE9D;QACE,KAAK,CAAC,EAAE,KAAK,EAAE,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,OAAO,cAAc,CAAC,OAAO,CAAC;YAC5B,GAAG,EAAE,mBAAmB,CAAC,mBAAmB;YAC5C,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,mBAAmB,EAAE;SACxC,CAAC,CAAC;IACL,CAAC;IAED,yHAAyH;IACzH,KAAK,CAAC,OAAO,CAAC,IAGb;QACC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAExC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;YACpC,OAAO;YACP,KAAK,EAAE,mBAAmB,CAAC,YAAY;YACvC,WAAW;SACZ,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;YACnC,OAAO;YACP,KAAK,EAAE,mBAAmB,CAAC,UAAU;YACrC,WAAW;SACZ,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;YACrC,OAAO;YACP,KAAK,EAAE,mBAAmB,CAAC,YAAY;YACvC,WAAW;SACZ,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;YACjC,OAAO;YACP,KAAK,EAAE,mBAAmB,CAAC,QAAQ;YACnC,WAAW;SACZ,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;YACpC,OAAO;YACP,KAAK,EAAE,mBAAmB,CAAC,WAAW;YACtC,WAAW;SACZ,CAAC,CAAC;QAEH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IAC1E,CAAC;IAED,+EAA+E;IAC/E,OAAO,CAAC,IAAoC;QAC1C,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACvB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED,mNAAmN;IACnN,KAAK,CAAC,MAAM,CAAqC,IAIhD;QACC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;QAC7C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAEhD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QAEhG,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;YAC5C,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACnF,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI;aACR,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;YACxB,IAAI;YACJ,QAAQ;YACR,KAAK,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;SAClE,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;aAC5D,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,IAGxB;QACC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;QACnC,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC;QACxF,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAC/B,CAAC"}
@@ -10,6 +10,7 @@ export declare class BootSteps {
10
10
  static readonly REGISTER_CONTRIBUTED_DATA_SOURCES = "registerContributedDataSources";
11
11
  static readonly REGISTER_CONTROLLERS = "registerControllers";
12
12
  static readonly POST_CONFIGURE = "postConfigure";
13
+ static readonly VERIFY_BINDINGS = "verifyBindings";
13
14
  static readonly SCHEME_SET: Set<string>;
14
15
  static isValid(value: string): boolean;
15
16
  }