@antelopejs/interface-data-api 0.4.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 (165) 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 +67 -39
  5. package/dist/components.js +106 -685
  6. package/dist/components.js.map +1 -1
  7. package/dist/index.d.ts +57 -68
  8. package/dist/index.js +114 -100
  9. package/dist/index.js.map +1 -1
  10. package/dist/internal/computed.d.ts +6 -0
  11. package/dist/internal/computed.js +51 -0
  12. package/dist/internal/computed.js.map +1 -0
  13. package/dist/internal/controller-types.d.ts +34 -0
  14. package/dist/internal/controller-types.js +4 -0
  15. package/dist/internal/controller-types.js.map +1 -0
  16. package/dist/internal/default-filter.d.ts +4 -0
  17. package/dist/internal/default-filter.js +29 -0
  18. package/dist/internal/default-filter.js.map +1 -0
  19. package/dist/internal/deferred-joined-stream.d.ts +11 -0
  20. package/dist/internal/deferred-joined-stream.js +125 -0
  21. package/dist/internal/deferred-joined-stream.js.map +1 -0
  22. package/dist/internal/extractors.d.ts +25 -0
  23. package/dist/internal/extractors.js +31 -0
  24. package/dist/internal/extractors.js.map +1 -0
  25. package/dist/internal/field-types.d.ts +199 -0
  26. package/dist/internal/field-types.js +4 -0
  27. package/dist/internal/field-types.js.map +1 -0
  28. package/dist/internal/filters.d.ts +6 -0
  29. package/dist/internal/filters.js +22 -0
  30. package/dist/internal/filters.js.map +1 -0
  31. package/dist/internal/foreign.d.ts +6 -0
  32. package/dist/internal/foreign.js +116 -0
  33. package/dist/internal/foreign.js.map +1 -0
  34. package/dist/internal/guards.d.ts +39 -0
  35. package/dist/internal/guards.js +116 -0
  36. package/dist/internal/guards.js.map +1 -0
  37. package/dist/internal/joined.d.ts +28 -0
  38. package/dist/internal/joined.js +127 -0
  39. package/dist/internal/joined.js.map +1 -0
  40. package/dist/internal/list.d.ts +16 -0
  41. package/dist/internal/list.js +182 -0
  42. package/dist/internal/list.js.map +1 -0
  43. package/dist/internal/meta-records.d.ts +19 -0
  44. package/dist/internal/meta-records.js +78 -0
  45. package/dist/internal/meta-records.js.map +1 -0
  46. package/dist/internal/properties.d.ts +4 -0
  47. package/dist/internal/properties.js +45 -0
  48. package/dist/internal/properties.js.map +1 -0
  49. package/dist/internal/prototypes.d.ts +14 -0
  50. package/dist/internal/prototypes.js +38 -0
  51. package/dist/internal/prototypes.js.map +1 -0
  52. package/dist/internal/read-properties.d.ts +3 -0
  53. package/dist/internal/read-properties.js +29 -0
  54. package/dist/internal/read-properties.js.map +1 -0
  55. package/dist/internal/table-reference.d.ts +11 -0
  56. package/dist/internal/table-reference.js +46 -0
  57. package/dist/internal/table-reference.js.map +1 -0
  58. package/dist/internal/tables.d.ts +28 -0
  59. package/dist/internal/tables.js +48 -0
  60. package/dist/internal/tables.js.map +1 -0
  61. package/dist/internal/validation.d.ts +12 -0
  62. package/dist/internal/validation.js +100 -0
  63. package/dist/internal/validation.js.map +1 -0
  64. package/dist/metadata.d.ts +27 -228
  65. package/dist/metadata.js +84 -213
  66. package/dist/metadata.js.map +1 -1
  67. package/dist/tests/components/access_control.test.js +28 -20
  68. package/dist/tests/components/access_control.test.js.map +1 -1
  69. package/dist/tests/components/computed.test.js +36 -27
  70. package/dist/tests/components/computed.test.js.map +1 -1
  71. package/dist/tests/components/cross_instance.test.js +8 -6
  72. package/dist/tests/components/cross_instance.test.js.map +1 -1
  73. package/dist/tests/components/deferred_joined.test.js +57 -54
  74. package/dist/tests/components/deferred_joined.test.js.map +1 -1
  75. package/dist/tests/components/extract_generic.test.d.ts +1 -0
  76. package/dist/tests/components/extract_generic.test.js +64 -0
  77. package/dist/tests/components/extract_generic.test.js.map +1 -0
  78. package/dist/tests/components/filter_comparisons.test.d.ts +1 -0
  79. package/dist/tests/components/filter_comparisons.test.js +34 -0
  80. package/dist/tests/components/filter_comparisons.test.js.map +1 -0
  81. package/dist/tests/components/filter_list_route.test.d.ts +1 -0
  82. package/dist/tests/components/filter_list_route.test.js +182 -0
  83. package/dist/tests/components/filter_list_route.test.js.map +1 -0
  84. package/dist/tests/components/filter_options.test.js +11 -10
  85. package/dist/tests/components/filter_options.test.js.map +1 -1
  86. package/dist/tests/components/foreign_computed.test.js +23 -14
  87. package/dist/tests/components/foreign_computed.test.js.map +1 -1
  88. package/dist/tests/components/foreign_joined.test.js +31 -27
  89. package/dist/tests/components/foreign_joined.test.js.map +1 -1
  90. package/dist/tests/components/joined.test.js +59 -45
  91. package/dist/tests/components/joined.test.js.map +1 -1
  92. package/dist/tests/components/listable.test.js +78 -58
  93. package/dist/tests/components/listable.test.js.map +1 -1
  94. package/dist/tests/components/localized_sort.test.js +14 -11
  95. package/dist/tests/components/localized_sort.test.js.map +1 -1
  96. package/dist/tests/components/mandatory.test.js +25 -25
  97. package/dist/tests/components/mandatory.test.js.map +1 -1
  98. package/dist/tests/components/modifier_key.test.js +27 -18
  99. package/dist/tests/components/modifier_key.test.js.map +1 -1
  100. package/dist/tests/components/parse_body.test.d.ts +1 -0
  101. package/dist/tests/components/parse_body.test.js +76 -0
  102. package/dist/tests/components/parse_body.test.js.map +1 -0
  103. package/dist/tests/components/parsed_value.test.js +23 -21
  104. package/dist/tests/components/parsed_value.test.js.map +1 -1
  105. package/dist/tests/components/partial_edit.test.js +38 -32
  106. package/dist/tests/components/partial_edit.test.js.map +1 -1
  107. package/dist/tests/components/per_action_access.test.js +20 -12
  108. package/dist/tests/components/per_action_access.test.js.map +1 -1
  109. package/dist/tests/components/prototype_named_filter.test.d.ts +1 -0
  110. package/dist/tests/components/prototype_named_filter.test.js +87 -0
  111. package/dist/tests/components/prototype_named_filter.test.js.map +1 -0
  112. package/dist/tests/components/validator.test.js +45 -37
  113. package/dist/tests/components/validator.test.js.map +1 -1
  114. package/dist/tests/components/written_row.test.d.ts +1 -0
  115. package/dist/tests/components/written_row.test.js +99 -0
  116. package/dist/tests/components/written_row.test.js.map +1 -0
  117. package/dist/tests/helpers/other-instance.d.ts +11 -1
  118. package/dist/tests/helpers/other-instance.js +35 -9
  119. package/dist/tests/helpers/other-instance.js.map +1 -1
  120. package/dist/tests/index/field_decorator_target.test.d.ts +1 -0
  121. package/dist/tests/index/field_decorator_target.test.js +20 -0
  122. package/dist/tests/index/field_decorator_target.test.js.map +1 -0
  123. package/dist/tests/index/get_guard.test.js +6 -6
  124. package/dist/tests/index/get_guard.test.js.map +1 -1
  125. package/dist/tests/index/inheritance.test.js +14 -9
  126. package/dist/tests/index/inheritance.test.js.map +1 -1
  127. package/dist/tests/index/metadata_names.test.d.ts +1 -0
  128. package/dist/tests/index/metadata_names.test.js +91 -0
  129. package/dist/tests/index/metadata_names.test.js.map +1 -0
  130. package/dist/tests/index/routes.test.js +49 -44
  131. package/dist/tests/index/routes.test.js.map +1 -1
  132. package/dist/tests/integration.test.d.ts +1 -1
  133. package/dist/tests/integration.test.js +66 -729
  134. package/dist/tests/integration.test.js.map +1 -1
  135. package/dist/tests/internal/controller-fields.test.d.ts +1 -0
  136. package/dist/tests/internal/controller-fields.test.js +25 -0
  137. package/dist/tests/internal/controller-fields.test.js.map +1 -0
  138. package/dist/tests/internal/http.d.ts +35 -0
  139. package/dist/tests/internal/http.js +56 -0
  140. package/dist/tests/internal/http.js.map +1 -0
  141. package/dist/tests/internal/shop-api.d.ts +1 -0
  142. package/dist/tests/internal/shop-api.js +331 -0
  143. package/dist/tests/internal/shop-api.js.map +1 -0
  144. package/dist/tests/internal/shop-schema.d.ts +162 -0
  145. package/dist/tests/internal/shop-schema.js +387 -0
  146. package/dist/tests/internal/shop-schema.js.map +1 -0
  147. package/dist/tests/utils.d.ts +8 -10
  148. package/dist/tests/utils.js +1 -3
  149. package/dist/tests/utils.js.map +1 -1
  150. package/dist/tests/utils.test.js +10 -11
  151. package/dist/tests/utils.test.js.map +1 -1
  152. package/docs/1.introduction.md +38 -35
  153. package/docs/10.joined.md +51 -40
  154. package/docs/11.computed.md +91 -47
  155. package/docs/2.data-controllers.md +50 -42
  156. package/docs/3.routes.md +156 -134
  157. package/docs/4.access-rights.md +48 -44
  158. package/docs/5.validators.md +65 -47
  159. package/docs/6.listable.md +53 -49
  160. package/docs/7.foreign-keys.md +55 -48
  161. package/docs/8.filters.md +65 -54
  162. package/docs/9.modifiers.md +29 -25
  163. package/package.json +34 -13
  164. package/skills/data-api-interface/SKILL.md +13 -3
  165. package/skills/data-api-interface/cases.json +99 -0
@@ -15,11 +15,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  const node_path_1 = __importDefault(require("node:path"));
16
16
  const chai_1 = require("chai");
17
17
  const interface_api_1 = require("@antelopejs/interface-api");
18
- const components_1 = require("@antelopejs/interface-data-api/components");
18
+ const components_1 = require("../../components");
19
19
  const interface_database_1 = require("@antelopejs/interface-database");
20
- const interface_data_api_1 = require("@antelopejs/interface-data-api");
20
+ const index_1 = require("../../index");
21
21
  const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
22
- const metadata_1 = require("@antelopejs/interface-data-api/metadata");
22
+ const metadata_1 = require("../../metadata");
23
+ const http_1 = require("../internal/http");
23
24
  const utils_1 = require("../utils");
24
25
  const currentTestName = node_path_1.default
25
26
  .basename(__filename)
@@ -57,8 +58,8 @@ Book = __decorate([
57
58
  ], Book);
58
59
  class BookModel extends (0, interface_database_decorators_1.BasicDataModel)(Book, bookTableName) {
59
60
  }
60
- let _DeferredJoinedTestAPI = class _DeferredJoinedTestAPI extends (0, interface_data_api_1.DataController)(Book, {
61
- list: interface_data_api_1.DefaultRoutes.List,
61
+ let _DeferredJoinedTestAPI = class _DeferredJoinedTestAPI extends (0, index_1.DataController)(Book, {
62
+ list: index_1.DefaultRoutes.List,
62
63
  }, (0, interface_api_1.Controller)(`/${currentTestName}`)) {
63
64
  };
64
65
  __decorate([
@@ -102,7 +103,7 @@ __decorate([
102
103
  __metadata("design:type", String)
103
104
  ], _DeferredJoinedTestAPI.prototype, "email", void 0);
104
105
  _DeferredJoinedTestAPI = __decorate([
105
- (0, interface_data_api_1.RegisterDataController)()
106
+ (0, index_1.RegisterDataController)()
106
107
  ], _DeferredJoinedTestAPI);
107
108
  const authorsDataset = [
108
109
  { name: "Alice Carter", email: "alice@example.com" },
@@ -110,22 +111,22 @@ const authorsDataset = [
110
111
  { name: "Carol Wilde", email: "carol@example.com" },
111
112
  ];
112
113
  const orphanAuthorId = "orphan-author-id";
113
- const reqCtx = {};
114
+ const reqCtx = (0, http_1.createRequestContext)();
114
115
  describe("Query.List deferred joined self-resolution", () => {
115
- it("resolves joined fields on a paged two-element destructure", async () => await resolvesJoinedFieldsOnPagedTwoElementDestructure());
116
- it("keeps page lookups after the slice and off the count pipeline", async () => await keepsLookupsAfterSliceAndOffCountPipeline());
117
- it("materializes joined fields for a caller-added filter", async () => await materializesJoinedFieldsForCallerFilter());
118
- it("resolves joined fields on a directly awaited stream", async () => await resolvesJoinedFieldsOnDirectAwait());
119
- it("resolves joined fields on an nth datum", async () => await resolvesJoinedFieldsOnNthDatum());
120
- it("orders by a joined field when the caller sorts the stream", async () => await ordersByJoinedFieldOnCallerSort());
121
- it("materializes the whole joined group when sorting through List", async () => await materializesJoinedGroupOnListSort());
122
- it("exposes the deferred set and raw stream only on demand", async () => await exposesDeferredSetOnDemand());
123
- it("keeps the change feed on the raw pipeline", async () => await keepsChangeFeedOnRawPipeline());
124
- it("scopes field aggregates to the joined fields they read", async () => await scopesFieldAggregatesToJoinedFields());
125
- it("still pages the lookups after a cast", async () => await stillPagesLookupsAfterCast());
126
- it("materializes joined fields when embedded in another query", async () => await materializesJoinedFieldsWhenEmbedded());
127
- it("resolves joined fields on async iteration", async () => await resolvesJoinedFieldsOnAsyncIteration());
128
- it("returns the unresolved names when no database is provided", async () => await returnsUnresolvedNamesWithoutDatabase());
116
+ it("resolves joined fields on a paged two-element destructure", async () => await expectResolvesJoinedFieldsOnPagedTwoElementDestructure());
117
+ it("keeps page lookups after the slice and off the count pipeline", async () => await expectKeepsLookupsAfterSliceAndOffCountPipeline());
118
+ it("materializes joined fields for a caller-added filter", async () => await expectMaterializesJoinedFieldsForCallerFilter());
119
+ it("resolves joined fields on a directly awaited stream", async () => await expectResolvesJoinedFieldsOnDirectAwait());
120
+ it("resolves joined fields on an nth datum", async () => await expectResolvesJoinedFieldsOnNthDatum());
121
+ it("orders by a joined field when the caller sorts the stream", async () => await expectOrdersByJoinedFieldOnCallerSort());
122
+ it("materializes the whole joined group when sorting through List", async () => await expectMaterializesJoinedGroupOnListSort());
123
+ it("exposes the deferred set and raw stream only on demand", async () => await expectExposesDeferredSetOnDemand());
124
+ it("keeps the change feed on the raw pipeline", async () => await expectKeepsChangeFeedOnRawPipeline());
125
+ it("scopes field aggregates to the joined fields they read", async () => await expectScopesFieldAggregatesToJoinedFields());
126
+ it("still pages the lookups after a cast", async () => await expectStillPagesLookupsAfterCast());
127
+ it("materializes joined fields when embedded in another query", async () => await expectMaterializesJoinedFieldsWhenEmbedded());
128
+ it("resolves joined fields on async iteration", async () => await expectResolvesJoinedFieldsOnAsyncIteration());
129
+ it("returns the unresolved names when no database is provided", async () => await expectReturnsUnresolvedNamesWithoutDatabase());
129
130
  });
130
131
  async function _seedTables() {
131
132
  await (0, interface_database_decorators_1.RegisterSchema)(schemaName);
@@ -147,22 +148,23 @@ async function _seedTables() {
147
148
  { authorId: orphanAuthorId, title: "Lost Chapter" },
148
149
  ];
149
150
  await bookModel.insert(booksDataset);
150
- const thisObj = Object.create(_DeferredJoinedTestAPI.prototype);
151
+ const thisObj = new _DeferredJoinedTestAPI();
151
152
  return { thisObj, model: bookModel };
152
153
  }
153
154
  function listAsConsumer(harness) {
154
- const meta = (0, interface_data_api_1.GetDataControllerMeta)(harness.thisObj);
155
- return components_1.Query.List(harness.thisObj, meta, harness.model.table, reqCtx, undefined, undefined, harness.model.database);
155
+ const meta = (0, index_1.GetDataControllerMeta)(harness.thisObj);
156
+ const [query, total, deferredJoined] = components_1.Query.List(harness.thisObj, meta, harness.model.table, reqCtx, undefined, undefined, harness.model.database);
157
+ return [query.cast(), total, deferredJoined];
156
158
  }
157
159
  function stageNames(staged) {
158
160
  return staged.build().map((entry) => entry.stage);
159
161
  }
160
- async function resolvesJoinedFieldsOnPagedTwoElementDestructure() {
162
+ async function expectResolvesJoinedFieldsOnPagedTwoElementDestructure() {
161
163
  const harness = await _seedTables();
162
164
  const [query, queryTotal] = listAsConsumer(harness);
163
- const page = (await query
165
+ const page = await query
164
166
  .slice(0, 10)
165
- .pluck("_internal", "title", "name", "email"));
167
+ .pluck("_internal", "title", "name", "email");
166
168
  (0, chai_1.expect)(await queryTotal).to.equal(5);
167
169
  (0, chai_1.expect)(page).to.have.lengthOf(5);
168
170
  const alphaRising = page.find((book) => book.title === "Alpha Rising");
@@ -172,7 +174,7 @@ async function resolvesJoinedFieldsOnPagedTwoElementDestructure() {
172
174
  (0, chai_1.expect)(lostChapter?.name).to.equal(null);
173
175
  (0, chai_1.expect)(lostChapter?.email).to.equal(null);
174
176
  }
175
- async function keepsLookupsAfterSliceAndOffCountPipeline() {
177
+ async function expectKeepsLookupsAfterSliceAndOffCountPipeline() {
176
178
  const harness = await _seedTables();
177
179
  const [query, queryTotal] = listAsConsumer(harness);
178
180
  const countStages = stageNames(queryTotal);
@@ -184,11 +186,11 @@ async function keepsLookupsAfterSliceAndOffCountPipeline() {
184
186
  const pageStages = stageNames(query.slice(0, 2));
185
187
  (0, chai_1.expect)(pageStages.indexOf("lookup")).to.be.greaterThan(pageStages.indexOf("slice"));
186
188
  }
187
- async function materializesJoinedFieldsForCallerFilter() {
189
+ async function expectMaterializesJoinedFieldsForCallerFilter() {
188
190
  const harness = await _seedTables();
189
191
  let [query] = listAsConsumer(harness);
190
192
  query = query.filter((row) => row.key("name").eq("Alice Carter"));
191
- const matches = (await query);
193
+ const matches = await query;
192
194
  (0, chai_1.expect)(matches).to.have.lengthOf(2);
193
195
  for (const match of matches) {
194
196
  (0, chai_1.expect)(match.name).to.equal("Alice Carter");
@@ -196,59 +198,60 @@ async function materializesJoinedFieldsForCallerFilter() {
196
198
  }
197
199
  (0, chai_1.expect)(await query.count()).to.equal(2);
198
200
  }
199
- async function resolvesJoinedFieldsOnDirectAwait() {
201
+ async function expectResolvesJoinedFieldsOnDirectAwait() {
200
202
  const harness = await _seedTables();
201
203
  const [query] = listAsConsumer(harness);
202
- const rows = (await query);
204
+ const rows = await query;
203
205
  (0, chai_1.expect)(rows).to.have.lengthOf(5);
204
206
  const betaStories = rows.find((book) => book.title === "Beta Stories");
205
207
  (0, chai_1.expect)(betaStories?.name).to.equal("Bob Stone");
206
208
  (0, chai_1.expect)(betaStories?.email).to.equal("bob@example.com");
207
209
  }
208
- async function resolvesJoinedFieldsOnNthDatum() {
210
+ async function expectResolvesJoinedFieldsOnNthDatum() {
209
211
  const harness = await _seedTables();
210
212
  const [query] = listAsConsumer(harness);
211
- const first = (await query.nth(0));
213
+ const first = await query.nth(0);
214
+ chai_1.assert.isNotNull(first);
212
215
  (0, chai_1.expect)(first.title).to.be.a("string");
213
216
  (0, chai_1.expect)(first).to.have.property("name");
214
217
  (0, chai_1.expect)(first).to.have.property("email");
215
218
  const internalKeys = Object.keys(first).filter((key) => key.startsWith("__joined_orig_"));
216
219
  (0, chai_1.expect)(internalKeys).to.deep.equal([]);
217
220
  (0, chai_1.expect)(first.authorId).to.be.a("string");
218
- const second = (await query.nth(1));
221
+ const second = await query.nth(1);
222
+ chai_1.assert.isNotNull(second);
219
223
  (0, chai_1.expect)(second.title).to.not.equal(first.title);
220
224
  }
221
- async function ordersByJoinedFieldOnCallerSort() {
225
+ async function expectOrdersByJoinedFieldOnCallerSort() {
222
226
  const harness = await _seedTables();
223
227
  const [query] = listAsConsumer(harness);
224
- const rows = (await query.orderBy("name", "desc"));
228
+ const rows = await query.orderBy("name", "desc");
225
229
  (0, chai_1.expect)(rows).to.have.lengthOf(5);
226
230
  const names = rows.map((book) => book.name).filter((name) => name !== null);
227
231
  (0, chai_1.expect)(names).to.deep.equal([...names].sort().reverse());
228
232
  (0, chai_1.expect)(names[0]).to.equal("Carol Wilde");
229
233
  }
230
- async function materializesJoinedGroupOnListSort() {
234
+ async function expectMaterializesJoinedGroupOnListSort() {
231
235
  const harness = await _seedTables();
232
- const meta = (0, interface_data_api_1.GetDataControllerMeta)(harness.thisObj);
236
+ const meta = (0, index_1.GetDataControllerMeta)(harness.thisObj);
233
237
  const [query, , deferredJoined] = components_1.Query.List(harness.thisObj, meta, harness.model.table, reqCtx, ["name", "asc"], undefined, harness.model.database);
234
238
  (0, chai_1.expect)(deferredJoined.size).to.equal(0);
235
- const rows = (await query.slice(0, 5));
239
+ const rows = await query.cast().slice(0, 5);
236
240
  const gammaTales = rows.find((book) => book.title === "Gamma Tales");
237
241
  (0, chai_1.expect)(gammaTales?.name).to.equal("Carol Wilde");
238
242
  (0, chai_1.expect)(gammaTales?.email).to.equal("carol@example.com");
239
243
  }
240
- async function keepsChangeFeedOnRawPipeline() {
244
+ async function expectKeepsChangeFeedOnRawPipeline() {
241
245
  const harness = await _seedTables();
242
246
  const [query] = listAsConsumer(harness);
243
247
  const feedStages = stageNames(query.changes());
244
248
  (0, chai_1.expect)(feedStages).to.include("changes");
245
249
  (0, chai_1.expect)(feedStages).to.not.include("lookup");
246
250
  }
247
- async function scopesFieldAggregatesToJoinedFields() {
251
+ async function expectScopesFieldAggregatesToJoinedFields() {
248
252
  const harness = await _seedTables();
249
253
  const [query] = listAsConsumer(harness);
250
- const listedQuery = query;
251
- const joinedFieldStages = stageNames(listedQuery.count("name"));
254
+ const joinedFieldStages = stageNames(query.count("name"));
252
255
  (0, chai_1.expect)(joinedFieldStages).to.include("count");
253
256
  (0, chai_1.expect)(joinedFieldStages).to.include("lookup");
254
257
  const plainFieldStages = stageNames(query.count("title"));
@@ -258,25 +261,25 @@ async function scopesFieldAggregatesToJoinedFields() {
258
261
  (0, chai_1.expect)(distinctRowStages).to.include("distinct");
259
262
  (0, chai_1.expect)(distinctRowStages).to.include("lookup");
260
263
  }
261
- async function stillPagesLookupsAfterCast() {
264
+ async function expectStillPagesLookupsAfterCast() {
262
265
  const harness = await _seedTables();
263
266
  const [query] = listAsConsumer(harness);
264
267
  const pageStages = stageNames(query.cast().slice(0, 2));
265
268
  (0, chai_1.expect)(pageStages.indexOf("lookup")).to.be.greaterThan(pageStages.indexOf("slice"));
266
- const page = (await query.cast().slice(0, 10));
269
+ const page = await query.cast().slice(0, 10);
267
270
  const alphaRising = page.find((book) => book.title === "Alpha Rising");
268
271
  (0, chai_1.expect)(alphaRising?.name).to.equal("Alice Carter");
269
272
  }
270
- async function materializesJoinedFieldsWhenEmbedded() {
273
+ async function expectMaterializesJoinedFieldsWhenEmbedded() {
271
274
  const harness = await _seedTables();
272
275
  const [query] = listAsConsumer(harness);
273
- const unioned = (await harness.model.table.union(query));
276
+ const unioned = await harness.model.table.union(query);
274
277
  (0, chai_1.expect)(unioned).to.have.lengthOf(10);
275
278
  const withJoined = unioned.filter((row) => "name" in row);
276
279
  (0, chai_1.expect)(withJoined).to.have.lengthOf(5);
277
280
  (0, chai_1.expect)(withJoined.filter((row) => row.name === "Alice Carter")).to.have.lengthOf(2);
278
281
  }
279
- async function resolvesJoinedFieldsOnAsyncIteration() {
282
+ async function expectResolvesJoinedFieldsOnAsyncIteration() {
280
283
  const harness = await _seedTables();
281
284
  const [query] = listAsConsumer(harness);
282
285
  const names = new Set();
@@ -289,23 +292,23 @@ async function resolvesJoinedFieldsOnAsyncIteration() {
289
292
  (0, chai_1.expect)(names.has("Alice Carter")).to.equal(true);
290
293
  (0, chai_1.expect)(names.has("Bob Stone")).to.equal(true);
291
294
  }
292
- async function returnsUnresolvedNamesWithoutDatabase() {
295
+ async function expectReturnsUnresolvedNamesWithoutDatabase() {
293
296
  const harness = await _seedTables();
294
- const meta = (0, interface_data_api_1.GetDataControllerMeta)(harness.thisObj);
297
+ const meta = (0, index_1.GetDataControllerMeta)(harness.thisObj);
295
298
  const [query, , deferredJoined] = components_1.Query.List(harness.thisObj, meta, harness.model.table, reqCtx);
296
299
  (0, chai_1.expect)(Array.from(deferredJoined).sort()).to.deep.equal(["email", "name"]);
297
300
  const pageStages = stageNames(query.slice(0, 5));
298
301
  (0, chai_1.expect)(pageStages).to.not.include("lookup");
299
302
  }
300
- async function exposesDeferredSetOnDemand() {
303
+ async function expectExposesDeferredSetOnDemand() {
301
304
  const harness = await _seedTables();
302
- const meta = (0, interface_data_api_1.GetDataControllerMeta)(harness.thisObj);
305
+ const meta = (0, index_1.GetDataControllerMeta)(harness.thisObj);
303
306
  const [, , resolvedByLayer] = listAsConsumer(harness);
304
307
  (0, chai_1.expect)(resolvedByLayer.size).to.equal(0);
305
308
  const [rawQuery, rawTotal, deferredJoined] = components_1.Query.List(harness.thisObj, meta, harness.model.table, reqCtx, undefined, undefined, harness.model.database, { exposeDeferredJoined: true });
306
309
  (0, chai_1.expect)(Array.from(deferredJoined).sort()).to.deep.equal(["email", "name"]);
307
310
  (0, chai_1.expect)(await rawTotal).to.equal(5);
308
- const rawRows = (await rawQuery.slice(0, 5));
311
+ const rawRows = await rawQuery.slice(0, 5);
309
312
  (0, chai_1.expect)(rawRows).to.have.lengthOf(5);
310
313
  for (const row of rawRows) {
311
314
  (0, chai_1.expect)(row).to.not.have.property("name");
@@ -1 +1 @@
1
- {"version":3,"file":"deferred_joined.test.js","sourceRoot":"","sources":["../../../src/tests/components/deferred_joined.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,0DAA6B;AAC7B,+BAA8B;AAC9B,6DAAuD;AAEvD,0EAAkE;AAClE,uEAIwC;AACxC,uEAKwC;AACxC,6FAOmD;AACnD,sEAQiD;AAEjD,oCAA6C;AAE7C,MAAM,eAAe,GAAG,mBAAI;KACzB,QAAQ,CAAC,UAAU,CAAC;KACpB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;AACnC,MAAM,eAAe,GAAG,WAAW,eAAe,EAAE,CAAC;AACrD,MAAM,aAAa,GAAG,SAAS,eAAe,EAAE,CAAC;AACjD,MAAM,UAAU,GAAG,SAAS,CAAC;AAG7B,IAAM,MAAM,GAAZ,MAAM,MAAO,SAAQ,qCAAK;CAQzB,CAAA;AAJS;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;oCACK;AAGb;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;qCACM;AAPlB,MAAM;IADX,IAAA,6CAAa,EAAC,eAAe,EAAE,UAAU,CAAC;GACrC,MAAM,CAQX;AACD,MAAM,WAAY,SAAQ,IAAA,8CAAc,EAAC,MAAM,EAAE,eAAe,CAAC;CAAG;AAGpE,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,qCAAK;CAQvB,CAAA;AAJS;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;sCACS;AAGjB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mCACM;AAPlB,IAAI;IADT,IAAA,6CAAa,EAAC,aAAa,EAAE,UAAU,CAAC;GACnC,IAAI,CAQT;AACD,MAAM,SAAU,SAAQ,IAAA,8CAAc,EAAC,IAAI,EAAE,aAAa,CAAC;CAAG;AAG9D,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,IAAA,mCAAc,EACjD,IAAI,EACJ;IACE,IAAI,EAAE,kCAAa,CAAC,IAAI;CACzB,EACD,IAAA,0BAAU,EAAC,IAAI,eAAe,EAAE,CAAC,CAClC;CAkCA,CAAA;AA/BS;IAFP,IAAA,yBAAc,GAAE;IAChB,IAAA,qCAAK,EAAC,SAAS,CAAC;8BACE,SAAS;yDAAC;AAIrB;IAFP,IAAA,mBAAQ,GAAE;IACV,IAAA,iBAAM,EAAC,qBAAU,CAAC,QAAQ,CAAC;;mDACR;AAIZ;IAFP,IAAA,mBAAQ,GAAE;IACV,IAAA,iBAAM,EAAC,qBAAU,CAAC,SAAS,CAAC;;wDACJ;AAIjB;IAFP,IAAA,mBAAQ,GAAE;IACV,IAAA,iBAAM,EAAC,qBAAU,CAAC,SAAS,CAAC;;qDACP;AAUd;IARP,IAAA,mBAAQ,EAAC,CAAC,UAAU,CAAC,CAAC;IACtB,IAAA,iBAAM,EAAC;QACN,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,MAAM;KACpB,CAAC;IACD,IAAA,mBAAQ,EAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,IAAA,iBAAM,GAAE;;oDACY;AAQb;IANP,IAAA,mBAAQ,EAAC,CAAC,UAAU,CAAC,CAAC;IACtB,IAAA,iBAAM,EAAC;QACN,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,OAAO;KACrB,CAAC;;qDACoB;AAvClB,sBAAsB;IAD3B,IAAA,2CAAsB,GAAE;GACnB,sBAAsB,CAwC3B;AAuBD,MAAM,cAAc,GAAsB;IACxC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,mBAAmB,EAAE;IACpD,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE;IAC/C,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,mBAAmB,EAAE;CACpD,CAAC;AAEF,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAC1C,MAAM,MAAM,GAAG,EAAoB,CAAC;AAEpC,QAAQ,CAAC,4CAA4C,EAAE,GAAG,EAAE;IAC1D,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE,CACzE,MAAM,gDAAgD,EAAE,CAAC,CAAC;IAC5D,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE,CAC7E,MAAM,yCAAyC,EAAE,CAAC,CAAC;IACrD,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE,CACpE,MAAM,uCAAuC,EAAE,CAAC,CAAC;IACnD,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE,CACnE,MAAM,iCAAiC,EAAE,CAAC,CAAC;IAC7C,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE,CACtD,MAAM,8BAA8B,EAAE,CAAC,CAAC;IAC1C,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE,CACzE,MAAM,+BAA+B,EAAE,CAAC,CAAC;IAC3C,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE,CAC7E,MAAM,iCAAiC,EAAE,CAAC,CAAC;IAC7C,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE,CACtE,MAAM,0BAA0B,EAAE,CAAC,CAAC;IACtC,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE,CACzD,MAAM,4BAA4B,EAAE,CAAC,CAAC;IACxC,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE,CACtE,MAAM,mCAAmC,EAAE,CAAC,CAAC;IAC/C,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE,CACpD,MAAM,0BAA0B,EAAE,CAAC,CAAC;IACtC,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE,CACzE,MAAM,oCAAoC,EAAE,CAAC,CAAC;IAChD,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE,CACzD,MAAM,oCAAoC,EAAE,CAAC,CAAC;IAChD,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE,CACzE,MAAM,qCAAqC,EAAE,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,WAAW;IACxB,MAAM,IAAA,8CAAc,EAAC,UAAU,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,2BAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC;QACtD,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1D,CAAC;IAED,MAAM,cAAc,GAAG,IAAA,yBAAiB,EAAC,UAAU,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,cAAc,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC;IAEhD,MAAM,eAAe,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAEjD,MAAM,YAAY,GAAoB;QACpC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE;QACjD,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE;QACjD,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE;QAChD,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE;QAClD,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;KACpD,CAAC;IACF,MAAM,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAErC,MAAM,OAAO,GAA2B,MAAM,CAAC,MAAM,CACnD,sBAAsB,CAAC,SAAS,CACjC,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,cAAc,CAAC,OAAoB;IAC1C,MAAM,IAAI,GAAG,IAAA,0CAAqB,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,OAAO,kBAAK,CAAC,IAAI,CACf,OAAO,CAAC,OAAO,EACf,IAAI,EACJ,OAAO,CAAC,KAAK,CAAC,KAAK,EACnB,MAAM,EACN,SAAS,EACT,SAAS,EACT,OAAO,CAAC,KAAK,CAAC,QAAQ,CACvB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,MAAsB;IACxC,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACpD,CAAC;AAED,KAAK,UAAU,gDAAgD;IAC7D,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAEpD,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK;SACtB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SACZ,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAiB,CAAC;IACjE,IAAA,aAAM,EAAC,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrC,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEjC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC;IACvE,IAAA,aAAM,EAAC,WAAW,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACnD,IAAA,aAAM,EAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAEzD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC;IACvE,IAAA,aAAM,EAAC,WAAW,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzC,IAAA,aAAM,EAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,KAAK,UAAU,yCAAyC;IACtD,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAEpD,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE7C,MAAM,iBAAiB,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IACpD,IAAA,aAAM,EAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAA,aAAM,EAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEnD,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACjD,IAAA,aAAM,EAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CACpD,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,uCAAuC;IACpD,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,IAAI,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAEtC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAC1B,GAAyC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAC1D,CAAC;IAElB,MAAM,OAAO,GAAG,CAAC,MAAM,KAAK,CAAiB,CAAC;IAC9C,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAA,aAAM,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC5C,IAAA,aAAM,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACpD,CAAC;IACD,IAAA,aAAM,EAAC,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,iCAAiC;IAC9C,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAExC,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,CAAiB,CAAC;IAC3C,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC;IACvE,IAAA,aAAM,EAAC,WAAW,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAChD,IAAA,aAAM,EAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACzD,CAAC;AAED,KAAK,UAAU,8BAA8B;IAC3C,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAExC,MAAM,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAe,CAAC;IACjD,IAAA,aAAM,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvC,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAExC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACrD,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,CACjC,CAAC;IACF,IAAA,aAAM,EAAC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvC,IAAA,aAAM,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEzC,MAAM,MAAM,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAe,CAAC;IAClD,IAAA,aAAM,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,+BAA+B;IAC5C,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAExC,MAAM,IAAI,GAAG,CAAC,MAAO,KAAuC,CAAC,OAAO,CAClE,MAAM,EACN,MAAM,CACP,CAAiB,CAAC;IACnB,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC5E,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACzD,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,iCAAiC;IAC9C,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,IAAA,0CAAqB,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,CAAC,KAAK,EAAE,AAAD,EAAG,cAAc,CAAC,GAAG,kBAAK,CAAC,IAAI,CAC1C,OAAO,CAAC,OAAO,EACf,IAAI,EACJ,OAAO,CAAC,KAAK,CAAC,KAAK,EACnB,MAAM,EACN,CAAC,MAAM,EAAE,KAAK,CAAC,EACf,SAAS,EACT,OAAO,CAAC,KAAK,CAAC,QAAQ,CACvB,CAAC;IAEF,IAAA,aAAM,EAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAiB,CAAC;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,aAAa,CAAC,CAAC;IACrE,IAAA,aAAM,EAAC,UAAU,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACjD,IAAA,aAAM,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,4BAA4B;IACzC,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAExC,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/C,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,KAAK,UAAU,mCAAmC;IAChD,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAExC,MAAM,WAAW,GAAG,KAAsC,CAAC;IAC3D,MAAM,iBAAiB,GAAG,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,IAAA,aAAM,EAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAA,aAAM,EAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE/C,MAAM,gBAAgB,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAElD,MAAM,iBAAiB,GAAG,UAAU,CACjC,KAAsB,CAAC,QAAQ,EAA+B,CAChE,CAAC;IACF,IAAA,aAAM,EAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACjD,IAAA,aAAM,EAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,0BAA0B;IACvC,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAExC,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpE,IAAA,aAAM,EAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CACpD,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAC5B,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,EAAc,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAiB,CAAC;IAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC;IACvE,IAAA,aAAM,EAAC,WAAW,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AACrD,CAAC;AAED,KAAK,UAAU,oCAAoC;IACjD,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAExC,MAAM,OAAO,GAAG,CAAC,MAAO,OAAO,CAAC,KAAK,CAAC,KAAiC,CAAC,KAAK,CAC3E,KAAK,CACN,CAAiB,CAAC;IACnB,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;IAC1D,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvC,IAAA,aAAM,EACJ,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC,CACxD,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,oCAAoC;IACjD,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAExC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAiB,CAAC;IACvC,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,KAAsC,EAAE,CAAC;QAC/D,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACxD,MAAM;QACR,CAAC;IACH,CAAC;IACD,IAAA,aAAM,EAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjD,IAAA,aAAM,EAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAED,KAAK,UAAU,qCAAqC;IAClD,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,IAAA,0CAAqB,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpD,MAAM,CAAC,KAAK,EAAE,AAAD,EAAG,cAAc,CAAC,GAAG,kBAAK,CAAC,IAAI,CAC1C,OAAO,CAAC,OAAO,EACf,IAAI,EACJ,OAAO,CAAC,KAAK,CAAC,KAAK,EACnB,MAAM,CACP,CAAC;IAEF,IAAA,aAAM,EAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACjD,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,KAAK,UAAU,0BAA0B;IACvC,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,IAAA,0CAAqB,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpD,MAAM,CAAC,EAAE,AAAD,EAAG,eAAe,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACtD,IAAA,aAAM,EAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEzC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC,GAAG,kBAAK,CAAC,IAAI,CACrD,OAAO,CAAC,OAAO,EACf,IAAI,EACJ,OAAO,CAAC,KAAK,CAAC,KAAK,EACnB,MAAM,EACN,SAAS,EACT,SAAS,EACT,OAAO,CAAC,KAAK,CAAC,QAAQ,EACtB,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAC/B,CAAC;IAEF,IAAA,aAAM,EAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3E,IAAA,aAAM,EAAC,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAiB,CAAC;IAC7D,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAA,aAAM,EAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzC,IAAA,aAAM,EAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"deferred_joined.test.js","sourceRoot":"","sources":["../../../src/tests/components/deferred_joined.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chai_1 = require("chai");
4
+ const interface_api_1 = require("@antelopejs/interface-api");
5
+ const components_1 = require("../../components");
6
+ const metadata_1 = require("../../metadata");
7
+ const http_1 = require("../internal/http");
8
+ const meta = new metadata_1.DataAPIMeta(Object);
9
+ function requestOf(query) {
10
+ return (0, http_1.createRequestContext)(`http://localhost/?${query}`);
11
+ }
12
+ describe("Parameters.ExtractGeneric", () => {
13
+ it("skips an extractor of undefined like an absent key", () => {
14
+ const params = components_1.Parameters.ExtractGeneric(requestOf("a=1"), meta, { a: undefined });
15
+ (0, chai_1.expect)(params).to.deep.equal({});
16
+ });
17
+ it("converts each field with its extractor, leaving out what the request omits", () => {
18
+ const params = components_1.Parameters.ExtractGeneric(requestOf("count=3.9&ratio=0.5&active=0&name=x&tags=a&tags=b"), meta, {
19
+ count: components_1.Parameters.FromSearch.int,
20
+ ratio: components_1.Parameters.FromSearch.number,
21
+ active: components_1.Parameters.FromSearch.bool,
22
+ name: components_1.Parameters.FromSearch.string,
23
+ tags: components_1.Parameters.FromSearch.strings,
24
+ absent: components_1.Parameters.FromSearch.int,
25
+ });
26
+ (0, chai_1.expect)(params).to.deep.equal({
27
+ count: 3,
28
+ ratio: 0.5,
29
+ active: false,
30
+ name: "x",
31
+ tags: ["a", "b"],
32
+ });
33
+ });
34
+ it("answers an empty list for a multi-value field the request omits", () => {
35
+ const params = components_1.Parameters.ExtractGeneric(requestOf(""), meta, { ids: components_1.Parameters.FromSearch.ints });
36
+ (0, chai_1.expect)(params).to.deep.equal({ ids: [] });
37
+ });
38
+ it("keeps a field the route's options set over the request's value", () => {
39
+ const ctx = Object.assign(requestOf("limit=5"), {
40
+ dataAPIEntry: {
41
+ options: { limit: 9 },
42
+ callback: { args: [], method: "get", func: () => undefined },
43
+ },
44
+ });
45
+ const params = components_1.Parameters.ExtractGeneric(ctx, meta, {
46
+ limit: components_1.Parameters.FromSearch.int,
47
+ });
48
+ (0, chai_1.expect)(params.limit).to.equal(9);
49
+ });
50
+ });
51
+ describe("Query.GetModel", () => {
52
+ it("answers 500 for a controller whose model field holds no model", () => {
53
+ const keyed = new metadata_1.DataAPIMeta(Object).setModelKey("model");
54
+ let status;
55
+ try {
56
+ components_1.Query.GetModel({}, keyed);
57
+ }
58
+ catch (error) {
59
+ status = error instanceof interface_api_1.HTTPResult ? error.getStatus() : undefined;
60
+ }
61
+ (0, chai_1.expect)(status).to.equal(500);
62
+ });
63
+ });
64
+ //# sourceMappingURL=extract_generic.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract_generic.test.js","sourceRoot":"","sources":["../../../src/tests/components/extract_generic.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,6DAAuD;AACvD,iDAAqD;AACrD,6CAA6C;AAE7C,2CAAwD;AAExD,MAAM,IAAI,GAAG,IAAI,sBAAW,CAAC,MAAM,CAAC,CAAC;AAErC,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,IAAA,2BAAoB,EAAC,qBAAqB,KAAK,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,MAAM,GAAG,uBAAU,CAAC,cAAc,CACtC,SAAS,CAAC,KAAK,CAAC,EAChB,IAAI,EACJ,EAAE,CAAC,EAAE,SAAS,EAAE,CACjB,CAAC;QACF,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,MAAM,MAAM,GAAG,uBAAU,CAAC,cAAc,CAOrC,SAAS,CAAC,mDAAmD,CAAC,EAAE,IAAI,EAAE;YACvE,KAAK,EAAE,uBAAU,CAAC,UAAU,CAAC,GAAG;YAChC,KAAK,EAAE,uBAAU,CAAC,UAAU,CAAC,MAAM;YACnC,MAAM,EAAE,uBAAU,CAAC,UAAU,CAAC,IAAI;YAClC,IAAI,EAAE,uBAAU,CAAC,UAAU,CAAC,MAAM;YAClC,IAAI,EAAE,uBAAU,CAAC,UAAU,CAAC,OAAO;YACnC,MAAM,EAAE,uBAAU,CAAC,UAAU,CAAC,GAAG;SAClC,CAAC,CAAC;QACH,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;SACjB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,MAAM,GAAG,uBAAU,CAAC,cAAc,CACtC,SAAS,CAAC,EAAE,CAAC,EACb,IAAI,EACJ,EAAE,GAAG,EAAE,uBAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CACpC,CAAC;QACF,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;YAC9C,YAAY,EAAE;gBACZ,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;gBACrB,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE;aAC7D;SACF,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,uBAAU,CAAC,cAAc,CAAqB,GAAG,EAAE,IAAI,EAAE;YACtE,KAAK,EAAE,uBAAU,CAAC,UAAU,CAAC,GAAG;SACjC,CAAC,CAAC;QACH,IAAA,aAAM,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,KAAK,GAAG,IAAI,sBAAW,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,MAA0B,CAAC;QAC/B,IAAI,CAAC;YACH,kBAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,KAAK,YAAY,0BAAU,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,CAAC;QACD,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chai_1 = require("chai");
4
+ const components_1 = require("../../components");
5
+ const metadata_1 = require("../../metadata");
6
+ const http_1 = require("../internal/http");
7
+ const meta = new metadata_1.DataAPIMeta(Object).setFilter("title", () => true);
8
+ function context(query) {
9
+ return Object.assign((0, http_1.createRequestContext)(`http://localhost/?${query}`), {
10
+ dataAPIEntry: { options: undefined },
11
+ });
12
+ }
13
+ describe("Parameters.ExtractFilters - comparisons", () => {
14
+ for (const comparison of ["eq", "ne", "gt", "ge", "lt", "le"]) {
15
+ it(`reads the ${comparison} comparison`, () => {
16
+ (0, chai_1.expect)(components_1.Parameters.ExtractFilters(context(`filter_title=${comparison}:a:b`), meta)).to.eql({ title: ["a:b", comparison] });
17
+ });
18
+ }
19
+ it("reads a value without comparison as eq", () => {
20
+ (0, chai_1.expect)(components_1.Parameters.ExtractFilters(context("filter_title=abc"), meta)).to.eql({ title: ["abc", "eq"] });
21
+ });
22
+ it("keeps a colon of the value after an explicit eq", () => {
23
+ (0, chai_1.expect)(components_1.Parameters.ExtractFilters(context("filter_title=eq:http://example.com"), meta)).to.eql({ title: ["http://example.com", "eq"] });
24
+ });
25
+ it("hands a comparison the default filter lacks to a custom filter", () => {
26
+ for (const comparison of ["is", "like", "include", "http"]) {
27
+ (0, chai_1.expect)(components_1.Parameters.ExtractFilters(context(`filter_title=${comparison}:abc`), meta), comparison).to.eql({ title: ["abc", comparison] });
28
+ }
29
+ });
30
+ it("hands an unnamed value that contains a colon to a custom filter", () => {
31
+ (0, chai_1.expect)(components_1.Parameters.ExtractFilters(context("filter_title=http://example.com"), meta)).to.eql({ title: ["//example.com", "http"] });
32
+ });
33
+ });
34
+ //# sourceMappingURL=filter_comparisons.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter_comparisons.test.js","sourceRoot":"","sources":["../../../src/tests/components/filter_comparisons.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAE9B,iDAA8C;AAC9C,6CAA6C;AAE7C,2CAAwD;AAExD,MAAM,IAAI,GAAG,IAAI,sBAAW,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AAEpE,SAAS,OAAO,CAAC,KAAa;IAC5B,OAAO,MAAM,CAAC,MAAM,CAAC,IAAA,2BAAoB,EAAC,qBAAqB,KAAK,EAAE,CAAC,EAAE;QACvE,YAAY,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;KACrC,CAAC,CAAC;AACL,CAAC;AAED,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACvD,KAAK,MAAM,UAAU,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC9D,EAAE,CAAC,aAAa,UAAU,aAAa,EAAE,GAAG,EAAE;YAC5C,IAAA,aAAM,EACJ,uBAAU,CAAC,cAAc,CACvB,OAAO,CAAC,gBAAgB,UAAU,MAAM,CAAC,EACzC,IAAI,CACL,CACF,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,IAAA,aAAM,EAAC,uBAAU,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CACzE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,IAAA,aAAM,EACJ,uBAAU,CAAC,cAAc,CACvB,OAAO,CAAC,oCAAoC,CAAC,EAC7C,IAAI,CACL,CACF,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,oBAAoB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,KAAK,MAAM,UAAU,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;YAC3D,IAAA,aAAM,EACJ,uBAAU,CAAC,cAAc,CACvB,OAAO,CAAC,gBAAgB,UAAU,MAAM,CAAC,EACzC,IAAI,CACL,EACD,UAAU,CACX,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,IAAA,aAAM,EACJ,uBAAU,CAAC,cAAc,CACvB,OAAO,CAAC,iCAAiC,CAAC,EAC1C,IAAI,CACL,CACF,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const node_path_1 = __importDefault(require("node:path"));
16
+ const chai_1 = require("chai");
17
+ const zod_1 = require("zod");
18
+ const interface_api_1 = require("@antelopejs/interface-api");
19
+ const interface_database_1 = require("@antelopejs/interface-database");
20
+ const index_1 = require("../../index");
21
+ const metadata_1 = require("../../metadata");
22
+ const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
23
+ const http_1 = require("../internal/http");
24
+ const utils_1 = require("../utils");
25
+ const currentTestName = node_path_1.default
26
+ .basename(__filename)
27
+ .replace(/\.test\.(ts|js)$/, "");
28
+ const pageTableName = `pages-${currentTestName}`;
29
+ const schemaName = "default";
30
+ let Page = class Page extends interface_database_decorators_1.Table {
31
+ };
32
+ __decorate([
33
+ (0, interface_database_decorators_1.Field)("string"),
34
+ __metadata("design:type", String)
35
+ ], Page.prototype, "title", void 0);
36
+ __decorate([
37
+ (0, interface_database_decorators_1.Field)("string"),
38
+ __metadata("design:type", String)
39
+ ], Page.prototype, "url", void 0);
40
+ Page = __decorate([
41
+ (0, interface_database_decorators_1.RegisterTable)(pageTableName, schemaName)
42
+ ], Page);
43
+ class PageModel extends (0, interface_database_decorators_1.BasicDataModel)(Page, pageTableName) {
44
+ }
45
+ const listSchema = (0, http_1.listResponseSchema)(zod_1.z.looseObject({ title: zod_1.z.string(), url: zod_1.z.string() }));
46
+ async function seedPages() {
47
+ await (0, interface_database_decorators_1.RegisterSchema)(schemaName);
48
+ const schema = interface_database_1.Schema.get(schemaName);
49
+ if (schema) {
50
+ await schema.instance().table(pageTableName).delete();
51
+ }
52
+ await new PageModel((0, utils_1.getSchemaInstance)(schemaName)).insert([
53
+ { title: "alpha", url: "http://example.com" },
54
+ { title: "beta", url: "http://example.org" },
55
+ ]);
56
+ }
57
+ async function createController(testName) {
58
+ let _FilterListAPI = class _FilterListAPI extends (0, index_1.DataController)(Page, { list: index_1.DefaultRoutes.List }, (0, interface_api_1.Controller)(`/${testName}`)) {
59
+ };
60
+ __decorate([
61
+ (0, metadata_1.ModelReference)(),
62
+ (0, interface_database_decorators_1.Model)(PageModel),
63
+ __metadata("design:type", PageModel)
64
+ ], _FilterListAPI.prototype, "pageModel", void 0);
65
+ __decorate([
66
+ (0, metadata_1.Listable)(),
67
+ (0, metadata_1.Access)(metadata_1.AccessMode.ReadOnly),
68
+ (0, metadata_1.Filter)(undefined, false),
69
+ __metadata("design:type", String)
70
+ ], _FilterListAPI.prototype, "title", void 0);
71
+ __decorate([
72
+ (0, metadata_1.Listable)(),
73
+ (0, metadata_1.Access)(metadata_1.AccessMode.ReadOnly),
74
+ (0, metadata_1.Filter)(undefined, false),
75
+ __metadata("design:type", String)
76
+ ], _FilterListAPI.prototype, "url", void 0);
77
+ _FilterListAPI = __decorate([
78
+ (0, index_1.RegisterDataController)()
79
+ ], _FilterListAPI);
80
+ await seedPages();
81
+ }
82
+ async function createCustomFilterController(testName) {
83
+ let _CustomFilterListAPI = class _CustomFilterListAPI extends (0, index_1.DataController)(Page, { list: index_1.DefaultRoutes.List }, (0, interface_api_1.Controller)(`/${testName}`)) {
84
+ };
85
+ __decorate([
86
+ (0, metadata_1.ModelReference)(),
87
+ (0, interface_database_decorators_1.Model)(PageModel),
88
+ __metadata("design:type", PageModel)
89
+ ], _CustomFilterListAPI.prototype, "pageModel", void 0);
90
+ __decorate([
91
+ (0, metadata_1.Listable)(),
92
+ (0, metadata_1.Access)(metadata_1.AccessMode.ReadOnly),
93
+ (0, metadata_1.Filter)((_context, proxy, _key, value, mode) => `${mode}` === "is" ? proxy.eq(value) : proxy.ne(value), false),
94
+ __metadata("design:type", String)
95
+ ], _CustomFilterListAPI.prototype, "title", void 0);
96
+ __decorate([
97
+ (0, metadata_1.Listable)(),
98
+ (0, metadata_1.Access)(metadata_1.AccessMode.ReadOnly),
99
+ (0, metadata_1.Filter)((_context, proxy, _key, value, mode) => `${mode}` === "http" ? proxy.eq(`http:${value}`) : proxy.eq(value), false),
100
+ __metadata("design:type", String)
101
+ ], _CustomFilterListAPI.prototype, "url", void 0);
102
+ _CustomFilterListAPI = __decorate([
103
+ (0, index_1.RegisterDataController)()
104
+ ], _CustomFilterListAPI);
105
+ await seedPages();
106
+ }
107
+ describe("List route - filter comparisons", () => {
108
+ it("answers 400 for an unknown comparison", async () => {
109
+ await createController("unknown-comparison");
110
+ const response = await (0, utils_1.listRequest)("unknown-comparison", {
111
+ filter_title: "like:alp",
112
+ });
113
+ (0, chai_1.expect)(response.status, await response.clone().text()).to.equal(400);
114
+ });
115
+ it("answers 400 for a comparison named like an Object.prototype member", async () => {
116
+ await createController("prototype-comparison");
117
+ for (const comparison of [
118
+ "constructor",
119
+ "toString",
120
+ "hasOwnProperty",
121
+ "valueOf",
122
+ "__proto__",
123
+ ]) {
124
+ const response = await (0, utils_1.listRequest)("prototype-comparison", {
125
+ filter_title: `${comparison}:alpha`,
126
+ });
127
+ (0, chai_1.expect)(response.status, comparison).to.equal(400);
128
+ }
129
+ });
130
+ it("answers 400 when one of several filters of a field is unknown", async () => {
131
+ await createController("several-comparisons");
132
+ const response = await (0, utils_1.request)("several-comparisons", "list", "GET", undefined, [
133
+ ["filter_title", "ne:alpha"],
134
+ ["filter_title", "like:b"],
135
+ ]);
136
+ (0, chai_1.expect)(response.status, await response.clone().text()).to.equal(400);
137
+ });
138
+ it("answers 400 for an unnamed value that contains a colon", async () => {
139
+ await createController("colon-value");
140
+ const response = await (0, utils_1.listRequest)("colon-value", {
141
+ filter_url: "http://example.com",
142
+ });
143
+ (0, chai_1.expect)(response.status, await response.clone().text()).to.equal(400);
144
+ });
145
+ it("filters a value that contains a colon after an explicit eq", async () => {
146
+ await createController("explicit-eq");
147
+ const response = await (0, utils_1.listRequest)("explicit-eq", {
148
+ filter_url: "eq:http://example.com",
149
+ });
150
+ (0, chai_1.expect)(response.status, await response.clone().text()).to.equal(200);
151
+ const data = await (0, http_1.readJson)(listSchema, response);
152
+ (0, chai_1.expect)(data.results.map(({ title }) => title)).to.eql(["alpha"]);
153
+ });
154
+ it("filters with a known comparison", async () => {
155
+ await createController("known-comparison");
156
+ const response = await (0, utils_1.listRequest)("known-comparison", {
157
+ filter_title: "ne:alpha",
158
+ });
159
+ (0, chai_1.expect)(response.status, await response.clone().text()).to.equal(200);
160
+ const data = await (0, http_1.readJson)(listSchema, response);
161
+ (0, chai_1.expect)(data.results.map(({ title }) => title)).to.eql(["beta"]);
162
+ });
163
+ it("hands the comparison of a custom filter to its callback", async () => {
164
+ await createCustomFilterController("custom-comparison");
165
+ const response = await (0, utils_1.listRequest)("custom-comparison", {
166
+ filter_title: "is:alpha",
167
+ });
168
+ (0, chai_1.expect)(response.status, await response.clone().text()).to.equal(200);
169
+ const data = await (0, http_1.readJson)(listSchema, response);
170
+ (0, chai_1.expect)(data.results.map(({ title }) => title)).to.eql(["alpha"]);
171
+ });
172
+ it("hands an unnamed value that contains a colon to a custom filter", async () => {
173
+ await createCustomFilterController("custom-colon-value");
174
+ const response = await (0, utils_1.listRequest)("custom-colon-value", {
175
+ filter_url: "http://example.com",
176
+ });
177
+ (0, chai_1.expect)(response.status, await response.clone().text()).to.equal(200);
178
+ const data = await (0, http_1.readJson)(listSchema, response);
179
+ (0, chai_1.expect)(data.results.map(({ title }) => title)).to.eql(["alpha"]);
180
+ });
181
+ });
182
+ //# sourceMappingURL=filter_list_route.test.js.map