wapi-client 0.17.18 → 0.18.0-beta.1

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 (159) hide show
  1. package/dist/api/base-client.browser.cjs +41 -0
  2. package/dist/api/base-client.browser.js +41 -0
  3. package/dist/api/base-client.cjs +41 -0
  4. package/dist/api/base-client.js +41 -0
  5. package/dist/client.browser.cjs +15 -0
  6. package/dist/client.browser.js +15 -0
  7. package/dist/client.cjs +15 -0
  8. package/dist/client.js +15 -0
  9. package/dist/db/consts.browser.cjs +26 -2
  10. package/dist/db/consts.browser.js +26 -2
  11. package/dist/db/consts.cjs +29 -3
  12. package/dist/db/consts.js +26 -2
  13. package/dist/fns/create-deposit/create-deposit.schema.zod.browser.cjs +1 -1
  14. package/dist/fns/create-deposit/create-deposit.schema.zod.browser.js +1 -1
  15. package/dist/fns/create-deposit/create-deposit.schema.zod.cjs +1 -1
  16. package/dist/fns/create-deposit/create-deposit.schema.zod.js +1 -1
  17. package/dist/fns/create-index/create-index.browser.cjs +51 -0
  18. package/dist/fns/create-index/create-index.browser.js +32 -0
  19. package/dist/fns/create-index/create-index.cjs +55 -0
  20. package/dist/fns/create-index/create-index.enums.browser.cjs +18 -0
  21. package/dist/fns/create-index/create-index.enums.browser.js +0 -0
  22. package/dist/fns/create-index/create-index.enums.cjs +18 -0
  23. package/dist/fns/create-index/create-index.enums.js +0 -0
  24. package/dist/fns/create-index/create-index.js +32 -0
  25. package/dist/fns/create-index/create-index.schema.zod.browser.cjs +41 -0
  26. package/dist/fns/create-index/create-index.schema.zod.browser.js +24 -0
  27. package/dist/fns/create-index/create-index.schema.zod.cjs +49 -0
  28. package/dist/fns/create-index/create-index.schema.zod.js +24 -0
  29. package/dist/fns/create-transfer/create-transfer.schema.zod.browser.cjs +1 -1
  30. package/dist/fns/create-transfer/create-transfer.schema.zod.browser.js +1 -1
  31. package/dist/fns/create-transfer/create-transfer.schema.zod.cjs +1 -1
  32. package/dist/fns/create-transfer/create-transfer.schema.zod.js +1 -1
  33. package/dist/fns/create-withdrawal/create-withdrawal.schema.zod.browser.cjs +1 -1
  34. package/dist/fns/create-withdrawal/create-withdrawal.schema.zod.browser.js +1 -1
  35. package/dist/fns/create-withdrawal/create-withdrawal.schema.zod.cjs +1 -1
  36. package/dist/fns/create-withdrawal/create-withdrawal.schema.zod.js +1 -1
  37. package/dist/fns/drop-index/drop-index.browser.cjs +51 -0
  38. package/dist/fns/drop-index/drop-index.browser.js +32 -0
  39. package/dist/fns/drop-index/drop-index.cjs +55 -0
  40. package/dist/fns/drop-index/drop-index.enums.browser.cjs +18 -0
  41. package/dist/fns/drop-index/drop-index.enums.browser.js +0 -0
  42. package/dist/fns/drop-index/drop-index.enums.cjs +18 -0
  43. package/dist/fns/drop-index/drop-index.enums.js +0 -0
  44. package/dist/fns/drop-index/drop-index.js +32 -0
  45. package/dist/fns/drop-index/drop-index.schema.zod.browser.cjs +41 -0
  46. package/dist/fns/drop-index/drop-index.schema.zod.browser.js +24 -0
  47. package/dist/fns/drop-index/drop-index.schema.zod.cjs +49 -0
  48. package/dist/fns/drop-index/drop-index.schema.zod.js +24 -0
  49. package/dist/fns/find-balances/find-balances.browser.cjs +9 -1
  50. package/dist/fns/find-balances/find-balances.browser.js +9 -1
  51. package/dist/fns/find-balances/find-balances.cjs +9 -1
  52. package/dist/fns/find-balances/find-balances.js +9 -1
  53. package/dist/fns/find-indexes/find-indexes.browser.cjs +51 -0
  54. package/dist/fns/find-indexes/find-indexes.browser.js +32 -0
  55. package/dist/fns/find-indexes/find-indexes.cjs +55 -0
  56. package/dist/fns/find-indexes/find-indexes.enums.browser.cjs +18 -0
  57. package/dist/fns/find-indexes/find-indexes.enums.browser.js +0 -0
  58. package/dist/fns/find-indexes/find-indexes.enums.cjs +18 -0
  59. package/dist/fns/find-indexes/find-indexes.enums.js +0 -0
  60. package/dist/fns/find-indexes/find-indexes.js +32 -0
  61. package/dist/fns/find-indexes/find-indexes.schema.zod.browser.cjs +41 -0
  62. package/dist/fns/find-indexes/find-indexes.schema.zod.browser.js +24 -0
  63. package/dist/fns/find-indexes/find-indexes.schema.zod.cjs +49 -0
  64. package/dist/fns/find-indexes/find-indexes.schema.zod.js +24 -0
  65. package/dist/fns/find-transfers/find-transfers.browser.cjs +4 -1
  66. package/dist/fns/find-transfers/find-transfers.browser.js +4 -1
  67. package/dist/fns/find-transfers/find-transfers.cjs +4 -1
  68. package/dist/fns/find-transfers/find-transfers.js +4 -1
  69. package/dist/fns/fn-types.browser.cjs +3 -0
  70. package/dist/fns/fn-types.browser.js +3 -0
  71. package/dist/fns/fn-types.cjs +6 -0
  72. package/dist/fns/fn-types.js +3 -0
  73. package/dist/fns/get-balance/get-balance.schema.zod.browser.cjs +1 -1
  74. package/dist/fns/get-balance/get-balance.schema.zod.browser.js +1 -1
  75. package/dist/fns/get-balance/get-balance.schema.zod.cjs +1 -1
  76. package/dist/fns/get-balance/get-balance.schema.zod.js +1 -1
  77. package/dist/lib/env.browser.cjs +1 -1
  78. package/dist/lib/env.browser.js +1 -1
  79. package/dist/lib/env.cjs +1 -1
  80. package/dist/lib/env.js +1 -1
  81. package/dist/lib/query-builder/aggregate-query-builder.browser.cjs +0 -193
  82. package/dist/lib/query-builder/aggregate-query-builder.browser.js +1 -196
  83. package/dist/lib/query-builder/aggregate-query-builder.cjs +0 -193
  84. package/dist/lib/query-builder/aggregate-query-builder.js +1 -196
  85. package/dist/lib/query-builder/find-query-builder.browser.cjs +0 -193
  86. package/dist/lib/query-builder/find-query-builder.browser.js +1 -196
  87. package/dist/lib/query-builder/find-query-builder.cjs +0 -193
  88. package/dist/lib/query-builder/find-query-builder.js +1 -196
  89. package/dist/lib/query-builder/query-builder.browser.cjs +75 -80
  90. package/dist/lib/query-builder/query-builder.browser.js +75 -80
  91. package/dist/lib/query-builder/query-builder.cjs +75 -80
  92. package/dist/lib/query-builder/query-builder.js +75 -80
  93. package/dist/lib/query-builder/reverse-query-builder.browser.cjs +0 -193
  94. package/dist/lib/query-builder/reverse-query-builder.browser.js +0 -193
  95. package/dist/lib/query-builder/reverse-query-builder.cjs +0 -193
  96. package/dist/lib/query-builder/reverse-query-builder.js +0 -193
  97. package/dist/lib/query-builder/update-query-builder.browser.cjs +0 -193
  98. package/dist/lib/query-builder/update-query-builder.browser.js +0 -193
  99. package/dist/lib/query-builder/update-query-builder.cjs +0 -193
  100. package/dist/lib/query-builder/update-query-builder.js +0 -193
  101. package/dist/lib/validator.browser.cjs +18 -0
  102. package/dist/lib/validator.browser.js +36 -0
  103. package/dist/lib/validator.cjs +18 -0
  104. package/dist/lib/validator.js +36 -0
  105. package/dist/txs/consts.browser.cjs +3 -0
  106. package/dist/txs/consts.browser.js +3 -0
  107. package/dist/txs/consts.cjs +3 -0
  108. package/dist/txs/consts.js +3 -0
  109. package/dist/txs/create-access-token/create-access-token.schema.zod.browser.cjs +3 -0
  110. package/dist/txs/create-access-token/create-access-token.schema.zod.browser.js +3 -0
  111. package/dist/txs/create-access-token/create-access-token.schema.zod.cjs +3 -0
  112. package/dist/txs/create-access-token/create-access-token.schema.zod.js +3 -0
  113. package/dist/txs/create-index/create-index.enums.browser.cjs +18 -0
  114. package/dist/txs/create-index/create-index.enums.browser.js +0 -0
  115. package/dist/txs/create-index/create-index.enums.cjs +18 -0
  116. package/dist/txs/create-index/create-index.enums.js +0 -0
  117. package/dist/txs/create-index/create-index.schema.zod.browser.cjs +53 -0
  118. package/dist/txs/create-index/create-index.schema.zod.browser.js +32 -0
  119. package/dist/txs/create-index/create-index.schema.zod.cjs +61 -0
  120. package/dist/txs/create-index/create-index.schema.zod.js +32 -0
  121. package/dist/txs/drop-index/drop-index.enums.browser.cjs +18 -0
  122. package/dist/txs/drop-index/drop-index.enums.browser.js +0 -0
  123. package/dist/txs/drop-index/drop-index.enums.cjs +18 -0
  124. package/dist/txs/drop-index/drop-index.enums.js +0 -0
  125. package/dist/txs/drop-index/drop-index.schema.zod.browser.cjs +46 -0
  126. package/dist/txs/drop-index/drop-index.schema.zod.browser.js +28 -0
  127. package/dist/txs/drop-index/drop-index.schema.zod.cjs +53 -0
  128. package/dist/txs/drop-index/drop-index.schema.zod.js +28 -0
  129. package/dist/txs/find-balance-many/find-balance-many.schema.zod.browser.cjs +16 -1
  130. package/dist/txs/find-balance-many/find-balance-many.schema.zod.browser.js +22 -2
  131. package/dist/txs/find-balance-many/find-balance-many.schema.zod.cjs +16 -1
  132. package/dist/txs/find-balance-many/find-balance-many.schema.zod.js +22 -2
  133. package/dist/txs/find-index-many/find-index-many.enums.browser.cjs +18 -0
  134. package/dist/txs/find-index-many/find-index-many.enums.browser.js +0 -0
  135. package/dist/txs/find-index-many/find-index-many.enums.cjs +18 -0
  136. package/dist/txs/find-index-many/find-index-many.enums.js +0 -0
  137. package/dist/txs/find-index-many/find-index-many.schema.zod.browser.cjs +66 -0
  138. package/dist/txs/find-index-many/find-index-many.schema.zod.browser.js +48 -0
  139. package/dist/txs/find-index-many/find-index-many.schema.zod.cjs +74 -0
  140. package/dist/txs/find-index-many/find-index-many.schema.zod.js +48 -0
  141. package/dist/txs/find-transfer-many/find-transfer-many.schema.zod.browser.cjs +76 -3
  142. package/dist/txs/find-transfer-many/find-transfer-many.schema.zod.browser.js +90 -4
  143. package/dist/txs/find-transfer-many/find-transfer-many.schema.zod.cjs +76 -3
  144. package/dist/txs/find-transfer-many/find-transfer-many.schema.zod.js +90 -4
  145. package/dist/txs/get-transfer-group/get-transfer-group.schema.zod.browser.cjs +1 -1
  146. package/dist/txs/get-transfer-group/get-transfer-group.schema.zod.browser.js +1 -1
  147. package/dist/txs/get-transfer-group/get-transfer-group.schema.zod.cjs +1 -1
  148. package/dist/txs/get-transfer-group/get-transfer-group.schema.zod.js +1 -1
  149. package/dist/txs/tx-types.browser.cjs +3 -0
  150. package/dist/txs/tx-types.browser.js +3 -0
  151. package/dist/txs/tx-types.cjs +6 -0
  152. package/dist/txs/tx-types.js +3 -0
  153. package/dist/types/wapi-client.d.ts +17444 -1960
  154. package/dist/wapi-client.iife.js +7 -7
  155. package/package.json +1 -1
  156. package/dist/txs/index.browser.cjs +0 -193
  157. package/dist/txs/index.browser.js +0 -172
  158. package/dist/txs/index.cjs +0 -198
  159. package/dist/txs/index.js +0 -172
@@ -22,9 +22,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
22
22
  // src/lib/query-builder/find-query-builder.ts
23
23
  import { mergeFnOptionsOrderBy } from "../utils.js";
24
24
  import { hardValidate } from "../validation.js";
25
- import {
26
- QueryBuilder
27
- } from "./query-builder.js";
25
+ import { QueryBuilder } from "./query-builder.js";
28
26
  function queryBuilderOrderByToTxOrderBy(input) {
29
27
  return input.map((item) => {
30
28
  if (typeof item === "string") {
@@ -222,199 +220,6 @@ var FindQueryBuilder = class _FindQueryBuilder extends QueryBuilder {
222
220
  order_by: internalArr.join(" ")
223
221
  });
224
222
  }
225
- where(field, operator, value) {
226
- return this.addWhere({
227
- fn: "where",
228
- field,
229
- operator,
230
- value
231
- });
232
- }
233
- orWhere(field, operator, value) {
234
- return this.addWhere({
235
- fn: "orWhere",
236
- field,
237
- operator,
238
- value
239
- });
240
- }
241
- /**
242
- * ```javascript
243
- * Add an IN filter
244
- *
245
- * .whereIn('token', ['EUR', 'USD'])
246
- * ```
247
- */
248
- whereIn(field, value) {
249
- return this.addIn({
250
- fn: "whereIn",
251
- field,
252
- value
253
- });
254
- }
255
- /**
256
- * ```javascript
257
- * Add an OR IN filter
258
- *
259
- * .orWhereIn('token', ['EUR', 'USD'])
260
- * ```
261
- */
262
- orWhereIn(field, value) {
263
- return this.addIn({
264
- fn: "orWhereIn",
265
- field,
266
- value
267
- });
268
- }
269
- /**
270
- * ```javascript
271
- * Add an IS NULL filter
272
- *
273
- * .whereNull('status_finalized_at')
274
- * ```
275
- */
276
- whereNull(field) {
277
- return this.addNull({
278
- fn: "whereNull",
279
- field
280
- });
281
- }
282
- /**
283
- * ```javascript
284
- * Add an OR IS NULL filter
285
- *
286
- * .orWhereNull('status_finalized_at')
287
- * ```
288
- */
289
- orWhereNull(field) {
290
- return this.addNull({
291
- fn: "orWhereNull",
292
- field
293
- });
294
- }
295
- /**
296
- * ```javascript
297
- * Add an NOT NULL filter
298
- *
299
- * .whereNotNull('status_finalized_at')
300
- * ```
301
- */
302
- whereNotNull(field) {
303
- return this.addNull({
304
- fn: "whereNotNull",
305
- field
306
- });
307
- }
308
- /**
309
- * ```javascript
310
- * Add an OR NOT NULL filter
311
- *
312
- * .orWhereNotNull('status_finalized_at')
313
- * ```
314
- */
315
- orWhereNotNull(field) {
316
- return this.addNull({
317
- fn: "orWhereNotNull",
318
- field
319
- });
320
- }
321
- whereMetadata(field, operator, value) {
322
- return this.addMetadata({
323
- fn: "whereMetadata",
324
- field,
325
- operator,
326
- value
327
- });
328
- }
329
- orWhereMetadata(field, operator, value) {
330
- return this.addMetadata({
331
- fn: "orWhereMetadata",
332
- field,
333
- operator,
334
- value
335
- });
336
- }
337
- /**
338
- * ```javascript
339
- * Add an IN filter for metadata field
340
- *
341
- * .whereMetadataIn('myCustomField', [9, 10])
342
- * ```
343
- */
344
- whereMetadataIn(field, value) {
345
- return this.addMetadataIn({
346
- fn: "whereMetadataIn",
347
- field,
348
- value
349
- });
350
- }
351
- /**
352
- * ```javascript
353
- * Add an OR IN filter for metadata field
354
- *
355
- * .orWhereMetadataIn('myCustomField', [9, 10])
356
- * ```
357
- */
358
- orWhereMetadataIn(field, value) {
359
- return this.addMetadataIn({
360
- fn: "orWhereMetadataIn",
361
- field,
362
- value
363
- });
364
- }
365
- /**
366
- * ```javascript
367
- * Add an IS NULL filter for metadata field
368
- *
369
- * .whereMetadataNull('myCustomField')
370
- * ```
371
- */
372
- whereMetadataNull(field) {
373
- return this.addMetadataNull({
374
- fn: "whereMetadataNull",
375
- field
376
- });
377
- }
378
- /**
379
- * ```javascript
380
- * Add an OR IS NULL filter for metadata field
381
- *
382
- * .orWhereMetadataNull('myCustomField')
383
- * ```
384
- */
385
- orWhereMetadataNull(field) {
386
- return this.addMetadataNull({
387
- fn: "orWhereMetadataNull",
388
- field
389
- });
390
- }
391
- /**
392
- * ```javascript
393
- * Add an NOT NULL filter for metadata field
394
- *
395
- * .whereMetadataNotNull('myCustomField')
396
- * ```
397
- */
398
- whereMetadataNotNull(field) {
399
- return this.addMetadataNull({
400
- fn: "whereMetadataNotNull",
401
- field
402
- });
403
- }
404
- /**
405
- * ```javascript
406
- * Add an OR NOT NULL filter for metadata field
407
- *
408
- * .orWhereMetadataNotNull('myCustomField')
409
- * ```
410
- */
411
- orWhereMetadataNotNull(field) {
412
- return this.addMetadataNull({
413
- fn: "orWhereMetadataNotNull",
414
- field
415
- });
416
- }
417
- // FILTERING FUNCTIONS
418
223
  };
419
224
  export {
420
225
  FindQueryBuilder
@@ -26,6 +26,10 @@ __export(query_builder_exports, {
26
26
  });
27
27
  module.exports = __toCommonJS(query_builder_exports);
28
28
  var import_index = require("./index.browser.cjs");
29
+ var import_consts = require("../../db/consts.browser.cjs");
30
+ function isForeignValue(value) {
31
+ return "foreign" in value && Object.keys(value).length === 1;
32
+ }
29
33
  function getWhereObject({
30
34
  function: fn,
31
35
  field,
@@ -33,35 +37,28 @@ function getWhereObject({
33
37
  value
34
38
  }) {
35
39
  if (Array.isArray(value)) {
36
- return {
37
- function: fn,
38
- inner: value
39
- };
40
- }
41
- if (typeof value === "object" && operator && field && "foreign" in value && Object.keys(value).length === 1) {
42
- return {
43
- function: fn,
44
- operator,
45
- field,
46
- value: value.foreign
47
- };
40
+ return { function: fn, inner: value };
48
41
  }
49
42
  if (typeof value === "object") {
50
- return {
51
- function: fn,
52
- value
53
- };
43
+ if (operator && field && isForeignValue(value)) {
44
+ return { function: fn, operator, field, value: value.foreign };
45
+ }
46
+ return { function: fn, value };
54
47
  }
55
- operator != null ? operator : operator = "=";
56
48
  if (!field) {
57
49
  throw new TypeError("FIELD_IS_REQUIRED");
58
50
  }
59
- return {
60
- function: fn,
61
- field,
62
- operator,
63
- value
64
- };
51
+ return { function: fn, field, operator: operator != null ? operator : "=", value };
52
+ }
53
+ function normalizeOperatorValue(operator, value) {
54
+ if (value === void 0) {
55
+ value = operator;
56
+ operator = "=";
57
+ }
58
+ if (value === void 0) {
59
+ throw new TypeError("Invalid comparison value: undefined not allowed");
60
+ }
61
+ return { operator: operator != null ? operator : "=", value };
65
62
  }
66
63
  var QueryBuilder = class _QueryBuilder {
67
64
  constructor($schemaBasic, $schema, $queries = []) {
@@ -98,32 +95,42 @@ var QueryBuilder = class _QueryBuilder {
98
95
  this.$schemaBasic,
99
96
  this.$schema
100
97
  );
101
- const res = field(inner);
102
- if (res === false) {
98
+ if (field(inner) === false) {
103
99
  return this;
104
100
  }
105
- if (!inner || !(inner instanceof _QueryBuilder)) {
106
- throw new TypeError("Inner Builder must return QueryBuilderInner");
107
- }
108
- return this.add(
109
- getWhereObject({
110
- function: fn,
111
- value: inner.toQuery()
112
- })
113
- );
101
+ return this.add(getWhereObject({ function: fn, value: inner.toQuery() }));
114
102
  }
115
103
  if (typeof field === "object") {
116
104
  const validObject = (0, import_index.validateQueryBuilderSchema)(this.$schemaBasic, field);
117
- return this.add(
118
- getWhereObject({
119
- function: fn,
120
- value: validObject
121
- })
122
- );
105
+ return this.add(getWhereObject({ function: fn, value: validObject }));
123
106
  }
124
107
  if (typeof field !== "string") {
125
108
  throw new TypeError("Field is required");
126
109
  }
110
+ if ((0, import_consts.isMetadataDotFilterField)(field)) {
111
+ return this.add(this.buildMetadataFilter(fn, field, operator, value));
112
+ }
113
+ return this.add(this.buildFieldFilter(fn, field, operator, value));
114
+ }
115
+ /**
116
+ * Build a comparison against a `metadata.x` dot-path field. The two-argument
117
+ * form (`.where('metadata.x', value)`) carries the value in the operator slot.
118
+ */
119
+ buildMetadataFilter(fn, field, operator, value) {
120
+ const normalized = normalizeOperatorValue(operator, value);
121
+ return {
122
+ function: fn,
123
+ field,
124
+ operator: normalized.operator,
125
+ value: normalized.value
126
+ };
127
+ }
128
+ /**
129
+ * Build a comparison against a schema field. The two-argument form
130
+ * (`.where('token', 'EUR')`) carries the value in the operator slot with an
131
+ * implied equals; the three-argument form supplies a real operator.
132
+ */
133
+ buildFieldFilter(fn, field, operator, value) {
127
134
  const fieldShape = this.$schemaBasic.shape[field] || this.$schema.shape[field];
128
135
  if (!fieldShape) {
129
136
  throw new TypeError("Invalid field:" + field);
@@ -131,41 +138,30 @@ var QueryBuilder = class _QueryBuilder {
131
138
  if (operator === void 0) {
132
139
  throw new TypeError("Operator is required");
133
140
  }
134
- if (typeof operator !== "string" || !(operator in import_index.DbFilterOperatorAllEnum) || value === void 0) {
135
- operator = (0, import_index.validateQueryBuilderSchema)(fieldShape, operator);
136
- if (operator === void 0) {
141
+ const operatorSlotHoldsValue = typeof operator !== "string" || !(operator in import_index.DbFilterOperatorAllEnum) || value === void 0;
142
+ if (operatorSlotHoldsValue) {
143
+ const validated = (0, import_index.validateQueryBuilderSchema)(fieldShape, operator);
144
+ if (validated === void 0) {
137
145
  throw new TypeError("unexpectedly value needed");
138
146
  }
139
- if (typeof operator === "object") {
140
- return this.add(
141
- getWhereObject({
142
- function: fn,
143
- value: {
144
- [field]: operator
145
- }
146
- })
147
- );
148
- }
149
- return this.add(
150
- getWhereObject({
147
+ if (typeof validated === "object") {
148
+ return getWhereObject({
151
149
  function: fn,
152
- field,
153
- value: operator
154
- })
155
- );
150
+ value: { [field]: validated }
151
+ });
152
+ }
153
+ return getWhereObject({ function: fn, field, value: validated });
156
154
  }
157
- value = (0, import_index.validateQueryBuilderSchema)(fieldShape, value);
158
- if (value === void 0) {
155
+ const validatedValue = (0, import_index.validateQueryBuilderSchema)(fieldShape, value);
156
+ if (validatedValue === void 0) {
159
157
  throw new Error("undefined value");
160
158
  }
161
- return this.add(
162
- getWhereObject({
163
- function: fn,
164
- field,
165
- operator,
166
- value
167
- })
168
- );
159
+ return getWhereObject({
160
+ function: fn,
161
+ field,
162
+ operator,
163
+ value: validatedValue
164
+ });
169
165
  }
170
166
  addIn({
171
167
  fn,
@@ -175,7 +171,7 @@ var QueryBuilder = class _QueryBuilder {
175
171
  if (!field) {
176
172
  throw new TypeError("Field is required");
177
173
  }
178
- if (!(field in this.$schema.shape)) {
174
+ if (!(field in this.$schema.shape) && !(0, import_consts.isMetadataDotFilterField)(field)) {
179
175
  throw new TypeError("Invalid field");
180
176
  }
181
177
  if (!value) {
@@ -212,12 +208,14 @@ var QueryBuilder = class _QueryBuilder {
212
208
  if (!field) {
213
209
  throw new TypeError("Field is required");
214
210
  }
215
- if (!(field in this.$schema.shape)) {
211
+ if (!(field in this.$schema.shape) && !(0, import_consts.isMetadataDotFilterField)(field)) {
216
212
  throw new TypeError("Invalid field");
217
213
  }
218
- this.$schema.parse({
219
- [field]: null
220
- });
214
+ if (!(0, import_consts.isMetadataDotFilterField)(field)) {
215
+ this.$schema.parse({
216
+ [field]: null
217
+ });
218
+ }
221
219
  return this.add({
222
220
  function: fn,
223
221
  field
@@ -232,15 +230,12 @@ var QueryBuilder = class _QueryBuilder {
232
230
  if (typeof field !== "string") {
233
231
  throw new TypeError("expected field to be string");
234
232
  }
235
- if (!value) {
236
- value = operator;
237
- operator = "=";
238
- }
233
+ const normalized = normalizeOperatorValue(operator, value);
239
234
  return this.add({
240
235
  function: fn,
241
236
  field,
242
- operator,
243
- value
237
+ operator: normalized.operator,
238
+ value: normalized.value
244
239
  });
245
240
  }
246
241
  addMetadataIn({
@@ -7,6 +7,10 @@ import {
7
7
  DbFilterOperatorAllEnum,
8
8
  validateQueryBuilderSchema
9
9
  } from "./index.browser.js";
10
+ import { isMetadataDotFilterField } from "../../db/consts.browser.js";
11
+ function isForeignValue(value) {
12
+ return "foreign" in value && Object.keys(value).length === 1;
13
+ }
10
14
  function getWhereObject({
11
15
  function: fn,
12
16
  field,
@@ -14,35 +18,28 @@ function getWhereObject({
14
18
  value
15
19
  }) {
16
20
  if (Array.isArray(value)) {
17
- return {
18
- function: fn,
19
- inner: value
20
- };
21
- }
22
- if (typeof value === "object" && operator && field && "foreign" in value && Object.keys(value).length === 1) {
23
- return {
24
- function: fn,
25
- operator,
26
- field,
27
- value: value.foreign
28
- };
21
+ return { function: fn, inner: value };
29
22
  }
30
23
  if (typeof value === "object") {
31
- return {
32
- function: fn,
33
- value
34
- };
24
+ if (operator && field && isForeignValue(value)) {
25
+ return { function: fn, operator, field, value: value.foreign };
26
+ }
27
+ return { function: fn, value };
35
28
  }
36
- operator != null ? operator : operator = "=";
37
29
  if (!field) {
38
30
  throw new TypeError("FIELD_IS_REQUIRED");
39
31
  }
40
- return {
41
- function: fn,
42
- field,
43
- operator,
44
- value
45
- };
32
+ return { function: fn, field, operator: operator != null ? operator : "=", value };
33
+ }
34
+ function normalizeOperatorValue(operator, value) {
35
+ if (value === void 0) {
36
+ value = operator;
37
+ operator = "=";
38
+ }
39
+ if (value === void 0) {
40
+ throw new TypeError("Invalid comparison value: undefined not allowed");
41
+ }
42
+ return { operator: operator != null ? operator : "=", value };
46
43
  }
47
44
  var QueryBuilder = class _QueryBuilder {
48
45
  constructor($schemaBasic, $schema, $queries = []) {
@@ -79,32 +76,42 @@ var QueryBuilder = class _QueryBuilder {
79
76
  this.$schemaBasic,
80
77
  this.$schema
81
78
  );
82
- const res = field(inner);
83
- if (res === false) {
79
+ if (field(inner) === false) {
84
80
  return this;
85
81
  }
86
- if (!inner || !(inner instanceof _QueryBuilder)) {
87
- throw new TypeError("Inner Builder must return QueryBuilderInner");
88
- }
89
- return this.add(
90
- getWhereObject({
91
- function: fn,
92
- value: inner.toQuery()
93
- })
94
- );
82
+ return this.add(getWhereObject({ function: fn, value: inner.toQuery() }));
95
83
  }
96
84
  if (typeof field === "object") {
97
85
  const validObject = validateQueryBuilderSchema(this.$schemaBasic, field);
98
- return this.add(
99
- getWhereObject({
100
- function: fn,
101
- value: validObject
102
- })
103
- );
86
+ return this.add(getWhereObject({ function: fn, value: validObject }));
104
87
  }
105
88
  if (typeof field !== "string") {
106
89
  throw new TypeError("Field is required");
107
90
  }
91
+ if (isMetadataDotFilterField(field)) {
92
+ return this.add(this.buildMetadataFilter(fn, field, operator, value));
93
+ }
94
+ return this.add(this.buildFieldFilter(fn, field, operator, value));
95
+ }
96
+ /**
97
+ * Build a comparison against a `metadata.x` dot-path field. The two-argument
98
+ * form (`.where('metadata.x', value)`) carries the value in the operator slot.
99
+ */
100
+ buildMetadataFilter(fn, field, operator, value) {
101
+ const normalized = normalizeOperatorValue(operator, value);
102
+ return {
103
+ function: fn,
104
+ field,
105
+ operator: normalized.operator,
106
+ value: normalized.value
107
+ };
108
+ }
109
+ /**
110
+ * Build a comparison against a schema field. The two-argument form
111
+ * (`.where('token', 'EUR')`) carries the value in the operator slot with an
112
+ * implied equals; the three-argument form supplies a real operator.
113
+ */
114
+ buildFieldFilter(fn, field, operator, value) {
108
115
  const fieldShape = this.$schemaBasic.shape[field] || this.$schema.shape[field];
109
116
  if (!fieldShape) {
110
117
  throw new TypeError("Invalid field:" + field);
@@ -112,41 +119,30 @@ var QueryBuilder = class _QueryBuilder {
112
119
  if (operator === void 0) {
113
120
  throw new TypeError("Operator is required");
114
121
  }
115
- if (typeof operator !== "string" || !(operator in DbFilterOperatorAllEnum) || value === void 0) {
116
- operator = validateQueryBuilderSchema(fieldShape, operator);
117
- if (operator === void 0) {
122
+ const operatorSlotHoldsValue = typeof operator !== "string" || !(operator in DbFilterOperatorAllEnum) || value === void 0;
123
+ if (operatorSlotHoldsValue) {
124
+ const validated = validateQueryBuilderSchema(fieldShape, operator);
125
+ if (validated === void 0) {
118
126
  throw new TypeError("unexpectedly value needed");
119
127
  }
120
- if (typeof operator === "object") {
121
- return this.add(
122
- getWhereObject({
123
- function: fn,
124
- value: {
125
- [field]: operator
126
- }
127
- })
128
- );
129
- }
130
- return this.add(
131
- getWhereObject({
128
+ if (typeof validated === "object") {
129
+ return getWhereObject({
132
130
  function: fn,
133
- field,
134
- value: operator
135
- })
136
- );
131
+ value: { [field]: validated }
132
+ });
133
+ }
134
+ return getWhereObject({ function: fn, field, value: validated });
137
135
  }
138
- value = validateQueryBuilderSchema(fieldShape, value);
139
- if (value === void 0) {
136
+ const validatedValue = validateQueryBuilderSchema(fieldShape, value);
137
+ if (validatedValue === void 0) {
140
138
  throw new Error("undefined value");
141
139
  }
142
- return this.add(
143
- getWhereObject({
144
- function: fn,
145
- field,
146
- operator,
147
- value
148
- })
149
- );
140
+ return getWhereObject({
141
+ function: fn,
142
+ field,
143
+ operator,
144
+ value: validatedValue
145
+ });
150
146
  }
151
147
  addIn({
152
148
  fn,
@@ -156,7 +152,7 @@ var QueryBuilder = class _QueryBuilder {
156
152
  if (!field) {
157
153
  throw new TypeError("Field is required");
158
154
  }
159
- if (!(field in this.$schema.shape)) {
155
+ if (!(field in this.$schema.shape) && !isMetadataDotFilterField(field)) {
160
156
  throw new TypeError("Invalid field");
161
157
  }
162
158
  if (!value) {
@@ -193,12 +189,14 @@ var QueryBuilder = class _QueryBuilder {
193
189
  if (!field) {
194
190
  throw new TypeError("Field is required");
195
191
  }
196
- if (!(field in this.$schema.shape)) {
192
+ if (!(field in this.$schema.shape) && !isMetadataDotFilterField(field)) {
197
193
  throw new TypeError("Invalid field");
198
194
  }
199
- this.$schema.parse({
200
- [field]: null
201
- });
195
+ if (!isMetadataDotFilterField(field)) {
196
+ this.$schema.parse({
197
+ [field]: null
198
+ });
199
+ }
202
200
  return this.add({
203
201
  function: fn,
204
202
  field
@@ -213,15 +211,12 @@ var QueryBuilder = class _QueryBuilder {
213
211
  if (typeof field !== "string") {
214
212
  throw new TypeError("expected field to be string");
215
213
  }
216
- if (!value) {
217
- value = operator;
218
- operator = "=";
219
- }
214
+ const normalized = normalizeOperatorValue(operator, value);
220
215
  return this.add({
221
216
  function: fn,
222
217
  field,
223
- operator,
224
- value
218
+ operator: normalized.operator,
219
+ value: normalized.value
225
220
  });
226
221
  }
227
222
  addMetadataIn({