@antelopejs/interface-data-api 0.5.0 → 0.6.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.
Files changed (139) hide show
  1. package/README.md +26 -22
  2. package/dist/antelope.test.js +1 -5
  3. package/dist/antelope.test.js.map +1 -1
  4. package/dist/components.d.ts +57 -37
  5. package/dist/components.js +36 -68
  6. package/dist/components.js.map +1 -1
  7. package/dist/index.d.ts +44 -60
  8. package/dist/index.js +22 -10
  9. package/dist/index.js.map +1 -1
  10. package/dist/internal/computed.js +12 -4
  11. package/dist/internal/computed.js.map +1 -1
  12. package/dist/internal/controller-types.d.ts +19 -4
  13. package/dist/internal/default-filter.js +11 -1
  14. package/dist/internal/default-filter.js.map +1 -1
  15. package/dist/internal/deferred-joined-stream.js +40 -27
  16. package/dist/internal/deferred-joined-stream.js.map +1 -1
  17. package/dist/internal/extractors.d.ts +25 -0
  18. package/dist/internal/extractors.js +31 -0
  19. package/dist/internal/extractors.js.map +1 -0
  20. package/dist/internal/field-types.d.ts +22 -6
  21. package/dist/internal/filters.d.ts +3 -1
  22. package/dist/internal/filters.js +9 -2
  23. package/dist/internal/filters.js.map +1 -1
  24. package/dist/internal/foreign.js +1 -1
  25. package/dist/internal/foreign.js.map +1 -1
  26. package/dist/internal/guards.d.ts +20 -1
  27. package/dist/internal/guards.js +42 -0
  28. package/dist/internal/guards.js.map +1 -1
  29. package/dist/internal/joined.js +1 -1
  30. package/dist/internal/joined.js.map +1 -1
  31. package/dist/internal/list.d.ts +2 -2
  32. package/dist/internal/list.js +10 -6
  33. package/dist/internal/list.js.map +1 -1
  34. package/dist/internal/meta-records.d.ts +2 -0
  35. package/dist/internal/meta-records.js +10 -5
  36. package/dist/internal/meta-records.js.map +1 -1
  37. package/dist/internal/properties.d.ts +2 -2
  38. package/dist/internal/properties.js +6 -4
  39. package/dist/internal/properties.js.map +1 -1
  40. package/dist/internal/prototypes.d.ts +14 -0
  41. package/dist/internal/prototypes.js +38 -0
  42. package/dist/internal/prototypes.js.map +1 -0
  43. package/dist/internal/read-properties.d.ts +3 -0
  44. package/dist/internal/read-properties.js +29 -0
  45. package/dist/internal/read-properties.js.map +1 -0
  46. package/dist/internal/tables.d.ts +12 -2
  47. package/dist/internal/tables.js +11 -0
  48. package/dist/internal/tables.js.map +1 -1
  49. package/dist/internal/validation.d.ts +4 -3
  50. package/dist/internal/validation.js +18 -6
  51. package/dist/internal/validation.js.map +1 -1
  52. package/dist/metadata.d.ts +13 -13
  53. package/dist/metadata.js +29 -31
  54. package/dist/metadata.js.map +1 -1
  55. package/dist/tests/components/access_control.test.js +11 -3
  56. package/dist/tests/components/access_control.test.js.map +1 -1
  57. package/dist/tests/components/computed.test.js +14 -3
  58. package/dist/tests/components/computed.test.js.map +1 -1
  59. package/dist/tests/components/cross_instance.test.js +2 -2
  60. package/dist/tests/components/cross_instance.test.js.map +1 -1
  61. package/dist/tests/components/deferred_joined.test.js +1 -1
  62. package/dist/tests/components/deferred_joined.test.js.map +1 -1
  63. package/dist/tests/components/extract_generic.test.d.ts +1 -0
  64. package/dist/tests/components/extract_generic.test.js +64 -0
  65. package/dist/tests/components/extract_generic.test.js.map +1 -0
  66. package/dist/tests/components/filter_comparisons.test.d.ts +1 -0
  67. package/dist/tests/components/filter_comparisons.test.js +34 -0
  68. package/dist/tests/components/filter_comparisons.test.js.map +1 -0
  69. package/dist/tests/components/filter_list_route.test.d.ts +1 -0
  70. package/dist/tests/components/filter_list_route.test.js +182 -0
  71. package/dist/tests/components/filter_list_route.test.js.map +1 -0
  72. package/dist/tests/components/filter_options.test.js +3 -3
  73. package/dist/tests/components/filter_options.test.js.map +1 -1
  74. package/dist/tests/components/foreign_computed.test.js +15 -4
  75. package/dist/tests/components/foreign_computed.test.js.map +1 -1
  76. package/dist/tests/components/foreign_joined.test.js +16 -4
  77. package/dist/tests/components/foreign_joined.test.js.map +1 -1
  78. package/dist/tests/components/joined.test.js +26 -8
  79. package/dist/tests/components/joined.test.js.map +1 -1
  80. package/dist/tests/components/listable.test.js +31 -12
  81. package/dist/tests/components/listable.test.js.map +1 -1
  82. package/dist/tests/components/localized_sort.test.js +5 -1
  83. package/dist/tests/components/localized_sort.test.js.map +1 -1
  84. package/dist/tests/components/mandatory.test.js +1 -1
  85. package/dist/tests/components/mandatory.test.js.map +1 -1
  86. package/dist/tests/components/modifier_key.test.js +12 -4
  87. package/dist/tests/components/modifier_key.test.js.map +1 -1
  88. package/dist/tests/components/parse_body.test.js +17 -16
  89. package/dist/tests/components/parse_body.test.js.map +1 -1
  90. package/dist/tests/components/parsed_value.test.js +2 -2
  91. package/dist/tests/components/parsed_value.test.js.map +1 -1
  92. package/dist/tests/components/partial_edit.test.js +8 -3
  93. package/dist/tests/components/partial_edit.test.js.map +1 -1
  94. package/dist/tests/components/per_action_access.test.js +11 -3
  95. package/dist/tests/components/per_action_access.test.js.map +1 -1
  96. package/dist/tests/components/prototype_named_filter.test.d.ts +1 -0
  97. package/dist/tests/components/prototype_named_filter.test.js +87 -0
  98. package/dist/tests/components/prototype_named_filter.test.js.map +1 -0
  99. package/dist/tests/components/validator.test.js +1 -1
  100. package/dist/tests/components/validator.test.js.map +1 -1
  101. package/dist/tests/components/written_row.test.d.ts +1 -0
  102. package/dist/tests/components/written_row.test.js +99 -0
  103. package/dist/tests/components/written_row.test.js.map +1 -0
  104. package/dist/tests/helpers/other-instance.js +8 -4
  105. package/dist/tests/helpers/other-instance.js.map +1 -1
  106. package/dist/tests/index/field_decorator_target.test.d.ts +1 -0
  107. package/dist/tests/index/field_decorator_target.test.js +20 -0
  108. package/dist/tests/index/field_decorator_target.test.js.map +1 -0
  109. package/dist/tests/index/inheritance.test.js +6 -2
  110. package/dist/tests/index/inheritance.test.js.map +1 -1
  111. package/dist/tests/index/metadata_names.test.d.ts +1 -0
  112. package/dist/tests/index/metadata_names.test.js +91 -0
  113. package/dist/tests/index/metadata_names.test.js.map +1 -0
  114. package/dist/tests/index/routes.test.js +14 -5
  115. package/dist/tests/index/routes.test.js.map +1 -1
  116. package/dist/tests/integration.test.js +24 -11
  117. package/dist/tests/integration.test.js.map +1 -1
  118. package/dist/tests/internal/controller-fields.test.d.ts +1 -0
  119. package/dist/tests/internal/controller-fields.test.js +25 -0
  120. package/dist/tests/internal/controller-fields.test.js.map +1 -0
  121. package/dist/tests/internal/http.d.ts +21 -9
  122. package/dist/tests/internal/http.js +24 -3
  123. package/dist/tests/internal/http.js.map +1 -1
  124. package/dist/tests/internal/shop-schema.d.ts +28 -20
  125. package/dist/tests/utils.d.ts +5 -7
  126. package/dist/tests/utils.js.map +1 -1
  127. package/docs/1.introduction.md +38 -35
  128. package/docs/10.joined.md +51 -40
  129. package/docs/11.computed.md +91 -47
  130. package/docs/2.data-controllers.md +50 -42
  131. package/docs/3.routes.md +150 -133
  132. package/docs/4.access-rights.md +48 -44
  133. package/docs/5.validators.md +54 -45
  134. package/docs/6.listable.md +53 -49
  135. package/docs/7.foreign-keys.md +55 -48
  136. package/docs/8.filters.md +64 -57
  137. package/docs/9.modifiers.md +29 -25
  138. package/package.json +24 -14
  139. package/skills/data-api-interface/SKILL.md +9 -3
package/README.md CHANGED
@@ -1,24 +1,26 @@
1
- # @antelopejs/interface-data-api
1
+ # `@antelopejs/interface-data-api`
2
2
 
3
3
  <div align="center">
4
- <a href="https://www.npmjs.com/package/@antelopejs/interface-data-api"><img alt="npm" src="https://img.shields.io/npm/v/@antelopejs/interface-data-api?style=for-the-badge&labelColor=000000&color=000000"></a>
5
- <a href="./LICENSE"><img alt="License" src="https://img.shields.io/npm/l/@antelopejs/interface-data-api?style=for-the-badge&labelColor=000000&color=000000"></a>
6
- <a href="https://discord.gg/sjK28QHrA7"><img alt="Discord" src="https://img.shields.io/badge/Discord-18181B?logo=discord&style=for-the-badge&color=000000"></a>
7
- <a href="https://interfaces.antelopejs.com/docs/data-api"><img alt="Docs" src="https://img.shields.io/badge/Docs-18181B?style=for-the-badge&color=000000"></a>
4
+ <a href="https://www.npmjs.com/package/@antelopejs/interface-data-api"><img data-illustration alt="npm" src="https://img.shields.io/npm/v/@antelopejs/interface-data-api?style=for-the-badge&labelColor=000000&color=000000"></a>
5
+ <a href="./LICENSE"><img data-illustration alt="License" src="https://img.shields.io/npm/l/@antelopejs/interface-data-api?style=for-the-badge&labelColor=000000&color=000000"></a>
6
+ <a href="https://discord.gg/g4pFt6eXqu"><img data-illustration alt="Discord" src="https://img.shields.io/badge/Discord-18181B?logo=discord&style=for-the-badge&color=000000"></a>
7
+ <a href="https://interfaces.antelopejs.com/docs/data-api"><img data-illustration alt="Docs" src="https://img.shields.io/badge/Docs-18181B?style=for-the-badge&color=000000"></a>
8
8
  </div>
9
9
 
10
- CRUD REST endpoints generated from a database table: declare a data controller and its fields, and get `get`, `list`, `new`, `edit` and `delete` routes with access rules, validation and pagination.
10
+ The AntelopeJS interface that generates CRUD REST endpoints from a database table. Declare a data controller and its fields, and it serves the `get`, `list`, `new`, `edit` and `delete` routes with access rules, validation and pagination.
11
+
12
+ Part of [AntelopeJS](https://github.com/AntelopeJS/antelopejs). Used by [AntelopeJS DMS](https://github.com/AntelopeJS/dms), the open-source back office for your PostgreSQL, MongoDB or RethinkDB database.
11
13
 
12
14
  ## What it offers
13
15
 
14
16
  - `DataController` and `@RegisterDataController()` turn a table class into a controller with the default routes you pick from `DefaultRoutes`.
15
- - `@Access`, `@Mandatory` and `@Validator` decide which fields each route reads and writes, and check them.
17
+ - `@Access` decides which fields each route reads and writes. `@Mandatory` and `@Validator` check the written values.
16
18
  - `@Listable`, `@Sortable` and `@Filter` shape the paginated `list` route.
17
19
  - `@Foreign`, `@Joined` and `@Computed` resolve references, flatten remote fields and add values computed in the database.
18
20
 
19
21
  ## Implementations
20
22
 
21
- The package runs in your module and has no implementing module of its own. The project needs modules that implement the interfaces it builds on:
23
+ The package runs in your module and has no implementing module of its own. The project needs modules that implement the interfaces it builds on.
22
24
 
23
25
  | Interface | Module |
24
26
  | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
@@ -27,13 +29,13 @@ The package runs in your module and has no implementing module of its own. The p
27
29
 
28
30
  ## Install
29
31
 
30
- Add the package and the interfaces your controllers import to your module:
32
+ Add the package and its peer interfaces to your module.
31
33
 
32
34
  ```bash
33
- pnpm add @antelopejs/interface-data-api @antelopejs/interface-api @antelopejs/interface-database-decorators
35
+ pnpm add @antelopejs/interface-data-api @antelopejs/interface-api @antelopejs/interface-api-util @antelopejs/interface-core @antelopejs/interface-database @antelopejs/interface-database-decorators
34
36
  ```
35
37
 
36
- Then add the implementations to the project:
38
+ Then add the implementations to the project.
37
39
 
38
40
  ```bash
39
41
  ajs project modules add @antelopejs/api @antelopejs/mongodb
@@ -101,7 +103,7 @@ export async function construct() {
101
103
  }
102
104
  ```
103
105
 
104
- The controller serves `GET /tasks/get?id=`, `GET /tasks/list`, `POST /tasks/new`, `PUT /tasks/edit?id=` and `DELETE /tasks/delete?id=`. Fields without `@Access` stay out of every response.
106
+ The controller serves `GET /tasks/get?id=`, `GET /tasks/list`, `POST /tasks/new`, `PUT /tasks/edit?id=` and `DELETE /tasks/delete?id=`. A field without `@Access` stays out of every response and every write, unless `@Joined` or `@Computed` makes it read-only.
105
107
 
106
108
  ## Documentation
107
109
 
@@ -119,21 +121,23 @@ The controller serves `GET /tasks/get?id=`, `GET /tasks/list`, `POST /tasks/new`
119
121
 
120
122
  ## Compatibility
121
123
 
122
- Use with `@antelopejs/core` 1.x and the following peer dependencies:
124
+ The package declares these `@antelopejs/*` peer dependencies.
125
+
126
+ <!-- antelopejs-docs-compat:start -->
123
127
 
124
- <!-- docs-compat: ./package.json#peerDependencies -->
128
+ | Package | Supported | Tested with |
129
+ | ------------------------------------------- | ----------------- | ----------- |
130
+ | `@antelopejs/interface-api` | `>=0.3.0 <1.0.0` | `0.2.0` |
131
+ | `@antelopejs/interface-api-util` | `>=0.1.3 <1.0.0` | `0.3.0` |
132
+ | `@antelopejs/interface-core` | `>=0.2.4 <1.0.0` | `0.4.0` |
133
+ | `@antelopejs/interface-database` | `>=0.1.10 <1.0.0` | `0.3.0` |
134
+ | `@antelopejs/interface-database-decorators` | `>=0.1.10 <1.0.0` | `0.2.0` |
125
135
 
126
- | Package | Range |
127
- | ------------------------------------------- | ----------------- |
128
- | `@antelopejs/interface-api` | `>=0.0.15 <1.0.0` |
129
- | `@antelopejs/interface-api-util` | `>=0.1.3 <1.0.0` |
130
- | `@antelopejs/interface-core` | `>=0.2.4 <1.0.0` |
131
- | `@antelopejs/interface-database` | `>=0.1.10 <1.0.0` |
132
- | `@antelopejs/interface-database-decorators` | `>=0.1.10 <1.0.0` |
136
+ <!-- antelopejs-docs-compat:end -->
133
137
 
134
138
  ## Contributing
135
139
 
136
- Read [CONTRIBUTING.md](./CONTRIBUTING.md) before you open a pull request. The local checks are:
140
+ Read [CONTRIBUTING.md](./CONTRIBUTING.md) before you open a pull request. Run the local checks with these commands.
137
141
 
138
142
  ```bash
139
143
  pnpm install
@@ -22,11 +22,7 @@ exports.default = (0, config_1.defineConfig)({
22
22
  },
23
23
  },
24
24
  api: {
25
- source: {
26
- type: "package",
27
- package: "@antelopejs/api",
28
- version: "1.3.0",
29
- },
25
+ source: { type: "local", path: "node_modules/@antelopejs/api" },
30
26
  config: {
31
27
  publicBaseUrl: "http://127.0.0.1:5010",
32
28
  servers: [{ protocol: "http", host: "127.0.0.1", port: 5010 }],
@@ -1 +1 @@
1
- {"version":3,"file":"antelope.test.js","sourceRoot":"","sources":["../src/antelope.test.ts"],"names":[],"mappings":";;AAAA,2EAA+D;AAC/D,8DAAiE;AAEjE,IAAI,MAAyB,CAAC;AAE9B,kBAAe,IAAA,qBAAY,EAAC;IAC1B,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EAAE,iBAAiB;IAC9B,OAAO,EAAE;QACP,KAAK,EAAE;YACL,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE;YACpC,eAAe,EAAE;gBACf,2BAA2B,EAAE,KAAK;gBAClC,gCAAgC,EAAE,SAAS;aAC5C;SACF;QACD,OAAO,EAAE;YACP,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,qBAAqB;gBAC9B,OAAO,EAAE,OAAO;aACjB;SACF;QACD,GAAG,EAAE;YACH,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,iBAAiB;gBAC1B,OAAO,EAAE,OAAO;aACjB;YACD,MAAM,EAAE;gBACN,aAAa,EAAE,uBAAuB;gBACtC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;aAC/D;SACF;KACF;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,YAAY;QACpB,KAAK,CAAC,KAAK;YACT,MAAM,GAAG,MAAM,8CAAiB,CAAC,MAAM,EAAE,CAAC;YAC1C,OAAO;gBACL,OAAO,EAAE;oBACP,OAAO,EAAE;wBACP,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE;qBAC9D;iBACF;aACF,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,OAAO;YACX,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;KACF;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"antelope.test.js","sourceRoot":"","sources":["../src/antelope.test.ts"],"names":[],"mappings":";;AAAA,2EAA+D;AAC/D,8DAAiE;AAEjE,IAAI,MAAyB,CAAC;AAE9B,kBAAe,IAAA,qBAAY,EAAC;IAC1B,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EAAE,iBAAiB;IAC9B,OAAO,EAAE;QACP,KAAK,EAAE;YACL,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE;YACpC,eAAe,EAAE;gBACf,2BAA2B,EAAE,KAAK;gBAClC,gCAAgC,EAAE,SAAS;aAC5C;SACF;QACD,OAAO,EAAE;YACP,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,qBAAqB;gBAC9B,OAAO,EAAE,OAAO;aACjB;SACF;QACD,GAAG,EAAE;YACH,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,8BAA8B,EAAE;YAC/D,MAAM,EAAE;gBACN,aAAa,EAAE,uBAAuB;gBACtC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;aAC/D;SACF;KACF;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,YAAY;QACpB,KAAK,CAAC,KAAK;YACT,MAAM,GAAG,MAAM,8CAAiB,CAAC,MAAM,EAAE,CAAC;YAC1C,OAAO;gBACL,OAAO,EAAE;oBACP,OAAO,EAAE;wBACP,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE;qBAC9D;iBACF;aACF,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,OAAO;YACX,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;KACF;CACF,CAAC,CAAC"}
@@ -1,10 +1,20 @@
1
- import type { DataModel } from "@antelopejs/interface-database-decorators/model";
2
1
  import { type RequestContext } from "@antelopejs/interface-api";
3
2
  import type { Datum, SchemaInstance, Stream, Table, ValueProxy } from "@antelopejs/interface-database";
4
3
  import "@antelopejs/interface-database";
5
- import { type DataAPIMeta, type FieldFilter, type FieldValues } from "./metadata";
4
+ import { type DataAPIMeta, type DataControllerCallbackWithOptions, type DataControllerInstance, type FieldFilter, type FieldValues, type RowFields } from "./metadata";
5
+ import * as extractors from "./internal/extractors";
6
+ import * as tables from "./internal/tables";
6
7
  export declare namespace Parameters {
7
- export function GetOptionOverrides<T extends Record<string, any>>(reqCtx: RequestContext): T;
8
+ /**
9
+ * A request context as a data route holds it: {@link RegisterDataController}
10
+ * sets the route's entry on it. `Options` is what the route's parameter
11
+ * reads, which `WithOptions` wrote.
12
+ */
13
+ interface DataRequestContext<Options = any> extends RequestContext {
14
+ dataAPIEntry?: DataControllerCallbackWithOptions<Options>;
15
+ }
16
+ /** The options the route's `WithOptions` set, none when it set none. */
17
+ function GetOptionOverrides<Options>(reqCtx: DataRequestContext<Options>): Partial<Options>;
8
18
  /**
9
19
  * Extracts request filters and mandatory route filters, with route field
10
20
  * keys winning. A field the request filters once (`?filter_status=open`)
@@ -12,19 +22,27 @@ export declare namespace Parameters {
12
22
  * (`?filter_age=ge:18&filter_age=lt:65`) gets them all, which a row must
13
23
  * all pass. Returns fresh tuples.
14
24
  */
15
- export function ExtractFilters(reqCtx: RequestContext, meta: DataAPIMeta): Record<string, FieldFilter>;
16
- const converters: {
17
- number: (val: string) => number;
18
- int: (val: string) => number;
19
- bool: (val: string) => boolean;
20
- string: (val: string) => string;
25
+ function ExtractFilters(reqCtx: DataRequestContext<ListParameters>, meta: DataAPIMeta): Record<string, FieldFilter>;
26
+ type ParameterExtractor<Value> = extractors.ParameterExtractor<Value>;
27
+ type ParameterExtractors<T> = extractors.ParameterExtractors<T>;
28
+ const FromSearch: {
29
+ number: extractors.ParameterExtractor<number>;
30
+ int: extractors.ParameterExtractor<number>;
31
+ bool: extractors.ParameterExtractor<boolean>;
32
+ string: extractors.ParameterExtractor<string>;
33
+ numbers: extractors.ParameterExtractor<number[]>;
34
+ ints: extractors.ParameterExtractor<number[]>;
35
+ bools: extractors.ParameterExtractor<boolean[]>;
36
+ strings: extractors.ParameterExtractor<string[]>;
21
37
  };
22
- type ConvertersKey = keyof typeof converters;
23
- type GenericParams<T extends Record<string, any>> = {
24
- [K in keyof T]: ConvertersKey | `multi:${ConvertersKey}` | ((reqCtx: RequestContext, meta: DataAPIMeta) => any);
25
- };
26
- export function ExtractGeneric<T extends Record<string, any>>(reqCtx: RequestContext, meta: DataAPIMeta, dynamic: GenericParams<Partial<T>>): Partial<T>;
27
- export interface ListParameters {
38
+ /**
39
+ * Builds a route's parameters: the options its `WithOptions` set, then each
40
+ * extracted field those options leave out. An extractor of `undefined` is
41
+ * skipped like an absent key. {@link ExtractFilters} also runs for a route
42
+ * that sets `filters`, since it combines them with the request's.
43
+ */
44
+ function ExtractGeneric<T extends Record<string, any>>(reqCtx: DataRequestContext<T>, meta: DataAPIMeta, dynamic: ParameterExtractors<T>): Partial<T>;
45
+ interface ListParameters {
28
46
  /**
29
47
  * The filters of the request, by field; a row passes every filter of
30
48
  * every field. Mandatory route filters when supplied through
@@ -40,40 +58,42 @@ export declare namespace Parameters {
40
58
  noPluck?: boolean;
41
59
  pluckMode?: string;
42
60
  }
43
- export const List: () => import("@antelopejs/interface-core/decorators").PropertyDecorator & import("@antelopejs/interface-core/decorators").ParameterDecorator;
44
- export interface GetParameters {
61
+ const List: () => import("@antelopejs/interface-core/decorators").PropertyDecorator & import("@antelopejs/interface-core/decorators").ParameterDecorator;
62
+ interface GetParameters {
45
63
  id: string;
46
64
  index?: string;
47
65
  noForeign?: string;
48
66
  }
49
- export const Get: () => import("@antelopejs/interface-core/decorators").PropertyDecorator & import("@antelopejs/interface-core/decorators").ParameterDecorator;
50
- export interface NewParameters {
67
+ const Get: () => import("@antelopejs/interface-core/decorators").PropertyDecorator & import("@antelopejs/interface-core/decorators").ParameterDecorator;
68
+ interface NewParameters {
51
69
  noMandatory?: string;
52
70
  }
53
- export const New: () => import("@antelopejs/interface-core/decorators").PropertyDecorator & import("@antelopejs/interface-core/decorators").ParameterDecorator;
54
- export interface EditParameters {
71
+ const New: () => import("@antelopejs/interface-core/decorators").PropertyDecorator & import("@antelopejs/interface-core/decorators").ParameterDecorator;
72
+ interface EditParameters {
55
73
  id: string;
56
74
  index?: string;
57
75
  noMandatory?: string;
58
76
  }
59
- export const Edit: () => import("@antelopejs/interface-core/decorators").PropertyDecorator & import("@antelopejs/interface-core/decorators").ParameterDecorator;
60
- export interface DeleteParameters {
77
+ const Edit: () => import("@antelopejs/interface-core/decorators").PropertyDecorator & import("@antelopejs/interface-core/decorators").ParameterDecorator;
78
+ interface DeleteParameters {
61
79
  id: string[];
62
80
  }
63
- export const Delete: () => import("@antelopejs/interface-core/decorators").PropertyDecorator & import("@antelopejs/interface-core/decorators").ParameterDecorator;
64
- export {};
81
+ const Delete: () => import("@antelopejs/interface-core/decorators").PropertyDecorator & import("@antelopejs/interface-core/decorators").ParameterDecorator;
65
82
  }
66
83
  export declare namespace Query {
67
- function GetModel(obj: any, meta: DataAPIMeta): InstanceType<DataModel> & {
68
- constructor: DataModel;
69
- };
84
+ /**
85
+ * The database model a controller holds under its `@ModelReference` field,
86
+ * typed by the table rows it reads.
87
+ */
88
+ type ModelInstance = tables.ModelInstance;
89
+ function GetModel(obj: DataControllerInstance, meta: DataAPIMeta): ModelInstance;
70
90
  function Foreign(db: SchemaInstance<any>, meta: DataAPIMeta, query: Stream<any>, pluck?: Set<string>): Stream<any>;
71
91
  function Foreign(db: SchemaInstance<any>, meta: DataAPIMeta, query: Datum<any>, pluck?: Set<string>): Datum<any>;
72
92
  function Joined(db: SchemaInstance<any>, meta: DataAPIMeta, query: Stream<any>, only?: Set<string>): Stream<any>;
73
93
  function Joined(db: SchemaInstance<any>, meta: DataAPIMeta, query: Datum<any>, only?: Set<string>): Datum<any>;
74
94
  function Computed(db: SchemaInstance<any>, meta: DataAPIMeta, query: Stream<any>, only?: Set<string>): Stream<any>;
75
95
  function Computed(db: SchemaInstance<any>, meta: DataAPIMeta, query: Datum<any>, only?: Set<string>): Datum<any>;
76
- function ReadProperties(obj: any, meta: DataAPIMeta, dbData: any, action?: string, onlyList?: boolean): Promise<FieldValues>;
96
+ function ReadProperties(obj: DataControllerInstance, meta: DataAPIMeta, dbData: RowFields, action?: string, onlyList?: boolean): Promise<RowFields>;
77
97
  /**
78
98
  * Writes the writable fields of `bodyData` into a database row.
79
99
  *
@@ -84,8 +104,8 @@ export declare namespace Query {
84
104
  * row and only their setters run: an absent field keeps its stored value,
85
105
  * `null` clears it.
86
106
  */
87
- function WriteProperties(obj: any, meta: DataAPIMeta, bodyData: FieldValues, action?: string, existingDBData?: Record<string, any>): Promise<Record<string, any>>;
88
- function Get(table: Table<any>, id: string | ValueProxy<string>, index?: string): Datum<any>;
107
+ function WriteProperties(obj: DataControllerInstance, meta: DataAPIMeta, bodyData: FieldValues, action?: string, existingDBData?: RowFields): Promise<RowFields>;
108
+ function Get<T extends object>(table: Table<T>, id: string | ValueProxy<string>, index?: string): import("@antelopejs/interface-database").SingleSelection<T> | Datum<T | null>;
89
109
  interface ListOptions {
90
110
  /**
91
111
  * Return the joined field names {@link List} did not materialize as the
@@ -112,7 +132,7 @@ export declare namespace Query {
112
132
  * since no lookup can be built without one — the raw stream is returned
113
133
  * and the third element names the joined fields left for the caller.
114
134
  */
115
- function List<T extends Record<string, any>>(obj: any, meta: DataAPIMeta, request: Table<T>, reqCtx: RequestContext, ...[sorting, filters, db, options]: ListTail): [sorted: Stream<T>, total: Datum<number>, deferredJoined: Set<string>];
135
+ function List<T extends Record<string, any>>(obj: DataControllerInstance, meta: DataAPIMeta, request: Table<T>, reqCtx: RequestContext, ...[sorting, filters, db, options]: ListTail): [sorted: Stream<T>, total: Datum<number>, deferredJoined: Set<string>];
116
136
  /** How {@link ListPage} reads one page of a {@link List} stream. */
117
137
  interface ListPageOptions {
118
138
  offset: number;
@@ -168,7 +188,7 @@ export declare namespace Validation {
168
188
  * other action, it is missing when absent from the body. The body of the
169
189
  * 400 is a {@link FieldsErrorBody} with {@link MISSING_MANDATORY_FIELDS}.
170
190
  */
171
- function MandatoryFields(meta: DataAPIMeta, obj: any, type: string): void;
191
+ function MandatoryFields(meta: DataAPIMeta, obj: RequestBody, type: string): void;
172
192
  /**
173
193
  * Runs the validator of each field present in `obj` and rejects with 400
174
194
  * when one fails, with a {@link FieldsErrorBody} of
@@ -193,8 +213,8 @@ export declare namespace Validation {
193
213
  * untouched keeps its stored locked value: read while locked it would be
194
214
  * `undefined`, and locking it again would store that over it.
195
215
  */
196
- function Lock(obj: any, meta: DataAPIMeta, data: any): void;
197
- function Unlock(obj: any, meta: DataAPIMeta, dbData: any): void;
198
- function UnlockRequest<T extends {}, K extends keyof T>(obj: any, meta: DataAPIMeta, row: ValueProxy<T>, field: K): ValueProxy<T[K]>;
199
- function ClearInternal(meta: DataAPIMeta, obj: FieldValues | FieldValues[]): void;
216
+ function Lock(obj: DataControllerInstance, meta: DataAPIMeta, data: RowFields): void;
217
+ function Unlock(obj: DataControllerInstance, meta: DataAPIMeta, dbData: RowFields): void;
218
+ function UnlockRequest<T extends {}, K extends keyof T>(obj: DataControllerInstance, meta: DataAPIMeta, row: ValueProxy<T>, field: K): ValueProxy<T[K]>;
219
+ function ClearInternal(meta: DataAPIMeta, obj: RowFields | RowFields[]): void;
200
220
  }
@@ -44,14 +44,18 @@ const metadata_1 = require("./metadata");
44
44
  const computed = __importStar(require("./internal/computed"));
45
45
  const filters_1 = require("./internal/filters");
46
46
  const foreign = __importStar(require("./internal/foreign"));
47
+ const extractors = __importStar(require("./internal/extractors"));
47
48
  const guards_1 = require("./internal/guards");
48
49
  const joined = __importStar(require("./internal/joined"));
49
50
  const list = __importStar(require("./internal/list"));
50
51
  const properties = __importStar(require("./internal/properties"));
52
+ const prototypes_1 = require("./internal/prototypes");
53
+ const read_properties_1 = require("./internal/read-properties");
51
54
  const tables = __importStar(require("./internal/tables"));
52
55
  const validation = __importStar(require("./internal/validation"));
53
56
  var Parameters;
54
57
  (function (Parameters) {
58
+ /** The options the route's `WithOptions` set, none when it set none. */
55
59
  function GetOptionOverrides(reqCtx) {
56
60
  return reqCtx.dataAPIEntry?.options ?? {};
57
61
  }
@@ -80,59 +84,43 @@ var Parameters;
80
84
  return result;
81
85
  }
82
86
  Parameters.ExtractFilters = ExtractFilters;
83
- const converters = {
84
- number: (val) => parseFloat(val),
85
- int: (val) => parseInt(val, 10),
86
- bool: (val) => val !== "0",
87
- string: (val) => val,
88
- };
89
- function isConverterKey(name) {
90
- return Object.hasOwn(converters, name);
91
- }
92
- function converterOf(name) {
93
- if (!isConverterKey(name)) {
94
- throw new TypeError(`Unknown parameter converter "${name}"`);
95
- }
96
- return converters[name];
97
- }
98
- function extractFromSearchParams(reqCtx, key, extractor) {
99
- if (extractor.startsWith("multi:")) {
100
- const name = extractor.substring(6);
101
- return reqCtx.url.searchParams
102
- .getAll(key)
103
- .map((searchVal) => converterOf(name)(searchVal));
104
- }
105
- const searchVal = reqCtx.url.searchParams.get(key);
106
- return searchVal === null ? undefined : converterOf(extractor)(searchVal);
87
+ Parameters.FromSearch = extractors.FromSearch;
88
+ function combinesWithOptions(extractor) {
89
+ return extractor === ExtractFilters;
107
90
  }
91
+ /**
92
+ * Builds a route's parameters: the options its `WithOptions` set, then each
93
+ * extracted field those options leave out. An extractor of `undefined` is
94
+ * skipped like an absent key. {@link ExtractFilters} also runs for a route
95
+ * that sets `filters`, since it combines them with the request's.
96
+ */
108
97
  function ExtractGeneric(reqCtx, meta, dynamic) {
109
- const overrides = GetOptionOverrides(reqCtx);
110
- const result = { ...overrides };
111
- for (const key of Object.keys(dynamic)) {
98
+ const result = { ...GetOptionOverrides(reqCtx) };
99
+ for (const key in dynamic) {
112
100
  const extractor = dynamic[key];
113
- if (key in result && extractor !== ExtractFilters)
101
+ if (!extractor || (key in result && !combinesWithOptions(extractor))) {
114
102
  continue;
115
- if ((0, guards_1.isString)(extractor)) {
116
- const value = extractFromSearchParams(reqCtx, key, extractor);
117
- if (value !== undefined)
118
- result[key] = value;
119
- }
120
- else {
121
- // SAFETY: key comes from Object.keys(dynamic), typed GenericParams<Partial<T>> (a mapped type over keyof T), so for a type-checked argument it is a keyof T; false only for a stray key on a non-literal argument, which is harmless as the key is only written on result.
122
- result[key] = extractor(reqCtx, meta);
123
103
  }
104
+ const value = extractor(reqCtx, meta, key);
105
+ if (value !== undefined)
106
+ result[key] = value;
124
107
  }
125
108
  return result;
126
109
  }
127
110
  Parameters.ExtractGeneric = ExtractGeneric;
111
+ /**
112
+ * The sort direction a request sends. Any other text sorts ascending, as an
113
+ * absent direction does.
114
+ */
115
+ const sortDirectionOf = extractors.fromSearch((text) => text === "asc" || text === "desc" ? text : undefined);
128
116
  Parameters.List = (0, decorators_1.MakeParameterAndPropertyDecorator)((target, key, param) => (0, interface_api_1.SetParameterProvider)(target, key, param, function (context) {
129
117
  const meta = (0, metadata_1.GetDataControllerMeta)(this);
130
118
  const params = ExtractGeneric(context, meta, {
131
119
  filters: ExtractFilters,
132
- offset: "int",
133
- limit: "int",
134
- sortKey: "string",
135
- sortDirection: "string",
120
+ offset: Parameters.FromSearch.int,
121
+ limit: Parameters.FromSearch.int,
122
+ sortKey: Parameters.FromSearch.string,
123
+ sortDirection: sortDirectionOf,
136
124
  });
137
125
  (0, interface_api_util_1.assert)(!params.sortKey || meta.fields[params.sortKey]?.sortable, 400, "Field is not sortable.");
138
126
  params.limit = params.limit
@@ -142,7 +130,7 @@ var Parameters;
142
130
  }));
143
131
  Parameters.Get = (0, decorators_1.MakeParameterAndPropertyDecorator)((target, key, param) => (0, interface_api_1.SetParameterProvider)(target, key, param, function (context) {
144
132
  const params = ExtractGeneric(context, (0, metadata_1.GetDataControllerMeta)(this), {
145
- id: "string",
133
+ id: Parameters.FromSearch.string,
146
134
  });
147
135
  (0, interface_api_util_1.assert)(params.id && (0, guards_1.isString)(params.id), 400, "Missing id.");
148
136
  return params;
@@ -153,14 +141,14 @@ var Parameters;
153
141
  }));
154
142
  Parameters.Edit = (0, decorators_1.MakeParameterAndPropertyDecorator)((target, key, param) => (0, interface_api_1.SetParameterProvider)(target, key, param, function (context) {
155
143
  const params = ExtractGeneric(context, (0, metadata_1.GetDataControllerMeta)(this), {
156
- id: "string",
144
+ id: Parameters.FromSearch.string,
157
145
  });
158
146
  (0, interface_api_util_1.assert)(params.id && (0, guards_1.isString)(params.id), 400, "Missing id.");
159
147
  return params;
160
148
  }));
161
149
  Parameters.Delete = (0, decorators_1.MakeParameterAndPropertyDecorator)((target, key, param) => (0, interface_api_1.SetParameterProvider)(target, key, param, function (context) {
162
150
  const params = ExtractGeneric(context, (0, metadata_1.GetDataControllerMeta)(this), {
163
- id: "multi:string",
151
+ id: Parameters.FromSearch.strings,
164
152
  });
165
153
  (0, interface_api_util_1.assert)(params.id && Array.isArray(params.id) && params.id.length > 0, 400, "Missing id.");
166
154
  return params;
@@ -170,7 +158,9 @@ var Query;
170
158
  (function (Query) {
171
159
  function GetModel(obj, meta) {
172
160
  (0, interface_api_util_1.assert)(meta.modelKey, 500, "Missing model key.");
173
- return obj[meta.modelKey];
161
+ const model = (0, prototypes_1.fieldsOf)(obj)[meta.modelKey];
162
+ (0, interface_api_util_1.assert)(tables.isModelInstance(model), 500, "The controller holds no model.");
163
+ return model;
174
164
  }
175
165
  Query.GetModel = GetModel;
176
166
  function Foreign(db, meta, query, pluck) {
@@ -186,26 +176,7 @@ var Query;
186
176
  }
187
177
  Query.Computed = Computed;
188
178
  async function ReadProperties(obj, meta, dbData, action, onlyList) {
189
- const readable = meta.readable[action ?? "_default"] ?? meta.readable._default;
190
- const instance = { ...obj };
191
- const res = {};
192
- for (const [key, field] of readable.props) {
193
- if (onlyList && !field.listable) {
194
- continue;
195
- }
196
- instance[key] = dbData[field.dbName || key];
197
- res[key] = dbData[field.dbName || key];
198
- }
199
- instance.table = dbData;
200
- Object.setPrototypeOf(instance, meta.target.prototype);
201
- for (const [key, field] of readable.getters) {
202
- if (onlyList && !field.listable) {
203
- continue;
204
- }
205
- const val = field.desc?.get?.apply(instance);
206
- res[key] = await ((0, guards_1.isFunction)(val) ? val() : val);
207
- }
208
- return res;
179
+ return (0, read_properties_1.ReadProperties)(obj, meta, dbData, action, onlyList);
209
180
  }
210
181
  Query.ReadProperties = ReadProperties;
211
182
  /**
@@ -347,10 +318,7 @@ var Validation;
347
318
  */
348
319
  function Lock(obj, meta, data) {
349
320
  const written = Object.keys((0, common_1.getMetadata)(data, common_2.ModifiersDynamicMetadata).floating);
350
- for (const [modifier, field] of meta.modifierKeys.entries()) {
351
- const key = obj[field];
352
- (0, common_2.lock)(data, modifier, written, key);
353
- }
321
+ validation.Lock(obj, meta, data, written);
354
322
  }
355
323
  Validation.Lock = Lock;
356
324
  function Unlock(obj, meta, dbData) {
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sourceRoot":"","sources":["../src/components.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../src/components.ts"],"names":[],"mappings":"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"}