@metaobjectsdev/runtime-ts 1.0.13 → 1.1.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 (83) hide show
  1. package/dist/decimal-wire.d.ts +54 -0
  2. package/dist/decimal-wire.d.ts.map +1 -0
  3. package/dist/decimal-wire.js +158 -0
  4. package/dist/decimal-wire.js.map +1 -0
  5. package/dist/drizzle-fastify/filter-allowlist.d.ts +4 -2
  6. package/dist/drizzle-fastify/filter-allowlist.d.ts.map +1 -1
  7. package/dist/drizzle-fastify/filter-allowlist.js +2 -1
  8. package/dist/drizzle-fastify/filter-allowlist.js.map +1 -1
  9. package/dist/drizzle-fastify/filter-parser.d.ts.map +1 -1
  10. package/dist/drizzle-fastify/filter-parser.js +23 -9
  11. package/dist/drizzle-fastify/filter-parser.js.map +1 -1
  12. package/dist/drizzle-fastify/filter-value-format.d.ts.map +1 -1
  13. package/dist/drizzle-fastify/filter-value-format.js +4 -1
  14. package/dist/drizzle-fastify/filter-value-format.js.map +1 -1
  15. package/dist/drizzle-fastify/index.d.ts +8 -0
  16. package/dist/drizzle-fastify/index.d.ts.map +1 -1
  17. package/dist/drizzle-fastify/index.js +4 -2
  18. package/dist/drizzle-fastify/index.js.map +1 -1
  19. package/dist/drizzle-fastify/mount-m2m.d.ts +2 -0
  20. package/dist/drizzle-fastify/mount-m2m.d.ts.map +1 -1
  21. package/dist/drizzle-fastify/mount-m2m.js +2 -1
  22. package/dist/drizzle-fastify/mount-m2m.js.map +1 -1
  23. package/dist/drizzle-fastify/mount-read-only.d.ts +25 -1
  24. package/dist/drizzle-fastify/mount-read-only.d.ts.map +1 -1
  25. package/dist/drizzle-fastify/mount-read-only.js +43 -28
  26. package/dist/drizzle-fastify/mount-read-only.js.map +1 -1
  27. package/dist/extract-object.js +5 -7
  28. package/dist/extract-object.js.map +1 -1
  29. package/dist/hono/index.d.ts +8 -0
  30. package/dist/hono/index.d.ts.map +1 -1
  31. package/dist/hono/index.js +4 -2
  32. package/dist/hono/index.js.map +1 -1
  33. package/dist/hono/mount-read-only.d.ts +25 -1
  34. package/dist/hono/mount-read-only.d.ts.map +1 -1
  35. package/dist/hono/mount-read-only.js +51 -36
  36. package/dist/hono/mount-read-only.js.map +1 -1
  37. package/dist/index.d.ts +2 -1
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +1 -0
  40. package/dist/index.js.map +1 -1
  41. package/dist/n2m-resolver.d.ts.map +1 -1
  42. package/dist/n2m-resolver.js +4 -3
  43. package/dist/n2m-resolver.js.map +1 -1
  44. package/dist/net-format.d.ts +8 -0
  45. package/dist/net-format.d.ts.map +1 -0
  46. package/dist/net-format.js +34 -0
  47. package/dist/net-format.js.map +1 -0
  48. package/dist/object-manager.d.ts +20 -7
  49. package/dist/object-manager.d.ts.map +1 -1
  50. package/dist/object-manager.js +68 -13
  51. package/dist/object-manager.js.map +1 -1
  52. package/dist/query-builder.d.ts.map +1 -1
  53. package/dist/query-builder.js +11 -2
  54. package/dist/query-builder.js.map +1 -1
  55. package/dist/relation-resolver.d.ts.map +1 -1
  56. package/dist/relation-resolver.js +11 -11
  57. package/dist/relation-resolver.js.map +1 -1
  58. package/dist/type-coercer.d.ts +1 -1
  59. package/dist/type-coercer.d.ts.map +1 -1
  60. package/dist/type-coercer.js +114 -5
  61. package/dist/type-coercer.js.map +1 -1
  62. package/dist/validator-runner.d.ts.map +1 -1
  63. package/dist/validator-runner.js +192 -35
  64. package/dist/validator-runner.js.map +1 -1
  65. package/package.json +3 -3
  66. package/src/decimal-wire.ts +154 -0
  67. package/src/drizzle-fastify/filter-allowlist.ts +5 -1
  68. package/src/drizzle-fastify/filter-parser.ts +22 -9
  69. package/src/drizzle-fastify/filter-value-format.ts +4 -0
  70. package/src/drizzle-fastify/index.ts +11 -2
  71. package/src/drizzle-fastify/mount-m2m.ts +4 -1
  72. package/src/drizzle-fastify/mount-read-only.ts +68 -31
  73. package/src/extract-object.ts +5 -7
  74. package/src/hono/index.ts +11 -2
  75. package/src/hono/mount-read-only.ts +76 -37
  76. package/src/index.ts +2 -1
  77. package/src/n2m-resolver.ts +4 -2
  78. package/src/net-format.ts +37 -0
  79. package/src/object-manager.ts +80 -18
  80. package/src/query-builder.ts +14 -1
  81. package/src/relation-resolver.ts +15 -14
  82. package/src/type-coercer.ts +116 -5
  83. package/src/validator-runner.ts +195 -32
@@ -0,0 +1,54 @@
1
+ /** W2: the JSON-number grammar, exponent allowed. No whitespace, no leading `+`, no bare point. */
2
+ export declare const DECIMAL_INPUT_RE: RegExp;
3
+ /** W1: the canonical spelling a decimal takes on the wire. */
4
+ export declare const DECIMAL_CANONICAL_RE: RegExp;
5
+ /**
6
+ * W1 + W2: parse `text` (the JSON-number grammar) and answer its canonical string, or `undefined`
7
+ * when it is not a number in that grammar or is too large to expand. Exact: it works on the digits
8
+ * and the exponent, never on a double.
9
+ */
10
+ export declare function canonicalDecimal(text: string): string | undefined;
11
+ /**
12
+ * W4: the canonical string of an IEEE double at 15 significant digits (SQLite's own text
13
+ * precision). `undefined` for NaN and the infinities.
14
+ */
15
+ export declare function decimalFromDouble15(value: number): string | undefined;
16
+ /**
17
+ * W2 for a value read off a parsed JSON request body: a string in the JSON-number grammar, or a
18
+ * JSON number (exact to 15 significant digits, W4). `undefined` for anything else.
19
+ */
20
+ export declare function parseDecimalInput(value: unknown): string | undefined;
21
+ /**
22
+ * W2 for a JSON number on input. `JSON.parse` has already rounded the client's digits to a double,
23
+ * so only a number that IS its own 15-digit form (or a safe integer, taken as `String(n)`) can be
24
+ * read exactly: anything else would be silently rounded, so it is refused (`undefined`) and the
25
+ * client is told to send a string. The test is `Number(n.toPrecision(15)) === n`: a number whose
26
+ * shortest round-trip form carries more than 15 significant digits fails it.
27
+ */
28
+ export declare function decimalFromJsonNumber(value: number): string | undefined;
29
+ /** W2 for a query-string filter operand: the same grammar as a body string, compared exactly. */
30
+ export declare function parseDecimalOperand(text: string): string | undefined;
31
+ /**
32
+ * W3: whether the canonical decimal `canonical` fits a column declared `@precision` / `@scale`
33
+ * (at most `precision - scale` integer digits and `scale` fraction digits). A column rounds an
34
+ * excess fraction silently and refuses an excess integer part, so neither may reach it.
35
+ */
36
+ export declare function decimalFits(canonical: string, precision: number | undefined, scale: number | undefined): boolean;
37
+ /**
38
+ * W1/W4 on a value a driver hands back for a decimal column: a string (Postgres `numeric`, MySQL
39
+ * `DECIMAL`, a SQLite text value) is canonicalized, a number (a SQLite or D1 REAL or INTEGER) is
40
+ * rendered at 15 significant digits and canonicalized, a bigint is its digits, and an array (a
41
+ * `field.decimal` declared `isArray`) is rewritten element by element. Null passes through. A
42
+ * value in none of those shapes is left for the caller to see.
43
+ */
44
+ export declare function decimalToWire(value: unknown): unknown;
45
+ /**
46
+ * Rewrite the values under `columns` to their canonical string. Returns `undefined` when there is
47
+ * nothing to do. Which keys are decimals comes from the caller (the generated route passes the
48
+ * names of the entity's `field.decimal` fields), never from the shape of a value: an integer
49
+ * column is not a decimal because it is a number.
50
+ */
51
+ export declare function decimalWire(columns: readonly string[] | undefined): ((row: unknown) => unknown) | undefined;
52
+ /** A wire mapper with the decimal rewrite of `columns` applied after `base` (which may be a timestamp mapper). */
53
+ export declare function withDecimals(base: (row: unknown) => unknown, columns: readonly string[] | undefined): (row: unknown) => unknown;
54
+ //# sourceMappingURL=decimal-wire.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decimal-wire.d.ts","sourceRoot":"","sources":["../src/decimal-wire.ts"],"names":[],"mappings":"AAqBA,mGAAmG;AACnG,eAAO,MAAM,gBAAgB,QAA+D,CAAC;AAE7F,8DAA8D;AAC9D,eAAO,MAAM,oBAAoB,QAAwC,CAAC;AAK1E;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAqBjE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGrE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIpE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIvE;AAED,iGAAiG;AACjG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAShH;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMrD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GACrC,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,SAAS,CAUzC;AAED,kHAAkH;AAClH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,EAC/B,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GACrC,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAG3B"}
@@ -0,0 +1,158 @@
1
+ // The wire form of a field.decimal — ADR-0019 Amendment 1 (W1-W4). The ONE decimal boundary of
2
+ // the TypeScript runtime: every decimal column of an entity, a projection or a report, on every
3
+ // dialect, crosses to a client through here, and every decimal a client sends comes in through
4
+ // here (filter operands) or through the same grammar (the generated Zod write schemas, which
5
+ // carry a local copy of `canonicalDecimal` because generated model code imports nothing from
6
+ // MetaObjects; test/decimal-wire.test.ts holds both to fixtures/decimal-wire/vectors.json).
7
+ //
8
+ // W1 A decimal is a JSON string in canonical form, `^-?(0|[1-9][0-9]*)(\.[0-9]*[1-9])?$`:
9
+ // plain notation, no exponent, no trailing fractional zeros, zero as "0". The server never
10
+ // formats a scale; a client that wants `12.50` formats with the field's `@scale`.
11
+ // W2 Input is a string in the JSON-number grammar (an exponent is allowed on input only) or a
12
+ // JSON number. Anything else is refused: `parseDecimalInput` answers `undefined`.
13
+ // W3 A value the declared column cannot hold is an error, never a silent rounding
14
+ // (`decimalFits`, applied by the generated write schemas).
15
+ // W4 SQLite and D1 have no decimal type: a decimal on them is a double, exact to 15 significant
16
+ // digits. The read path renders the double with 15 significant digits, then canonicalizes
17
+ // it, so `0.1 + 0.2` reads `"0.3"` (`decimalFromDouble15`).
18
+ //
19
+ // A string is never turned into a number on the way (no `Number()` on a decimal anywhere): an
20
+ // operand or a body value stays text, and is bound to SQL as text.
21
+ /** W2: the JSON-number grammar, exponent allowed. No whitespace, no leading `+`, no bare point. */
22
+ export const DECIMAL_INPUT_RE = /^(-?)(0|[1-9][0-9]*)(?:\.([0-9]+))?(?:[eE]([+-]?[0-9]+))?$/;
23
+ /** W1: the canonical spelling a decimal takes on the wire. */
24
+ export const DECIMAL_CANONICAL_RE = /^-?(0|[1-9][0-9]*)(\.[0-9]*[1-9])?$/;
25
+ /** An expanded value longer than this many digits is out of range (W3): `1e999999999` must not allocate. */
26
+ const MAX_EXPANDED_DIGITS = 1000;
27
+ /**
28
+ * W1 + W2: parse `text` (the JSON-number grammar) and answer its canonical string, or `undefined`
29
+ * when it is not a number in that grammar or is too large to expand. Exact: it works on the digits
30
+ * and the exponent, never on a double.
31
+ */
32
+ export function canonicalDecimal(text) {
33
+ const m = DECIMAL_INPUT_RE.exec(text);
34
+ if (m === null)
35
+ return undefined;
36
+ const negative = m[1] === "-";
37
+ const intPart = m[2] ?? "";
38
+ const fracPart = m[3] ?? "";
39
+ const exponent = m[4] === undefined ? 0 : Number(m[4]);
40
+ if (!Number.isSafeInteger(exponent) || Math.abs(exponent) > MAX_EXPANDED_DIGITS)
41
+ return undefined;
42
+ let digits = intPart + fracPart;
43
+ let point = intPart.length + exponent; // the decimal point sits after `point` digits
44
+ const lead = digits.length - digits.replace(/^0+/, "").length;
45
+ digits = digits.slice(lead);
46
+ point -= lead;
47
+ digits = digits.replace(/0+$/, "");
48
+ if (digits.length === 0)
49
+ return "0";
50
+ let plain;
51
+ if (point <= 0)
52
+ plain = `0.${"0".repeat(-point)}${digits}`;
53
+ else if (point >= digits.length)
54
+ plain = digits + "0".repeat(point - digits.length);
55
+ else
56
+ plain = `${digits.slice(0, point)}.${digits.slice(point)}`;
57
+ if (plain.length > MAX_EXPANDED_DIGITS)
58
+ return undefined;
59
+ return negative ? `-${plain}` : plain;
60
+ }
61
+ /**
62
+ * W4: the canonical string of an IEEE double at 15 significant digits (SQLite's own text
63
+ * precision). `undefined` for NaN and the infinities.
64
+ */
65
+ export function decimalFromDouble15(value) {
66
+ if (!Number.isFinite(value))
67
+ return undefined;
68
+ return canonicalDecimal(value.toPrecision(15));
69
+ }
70
+ /**
71
+ * W2 for a value read off a parsed JSON request body: a string in the JSON-number grammar, or a
72
+ * JSON number (exact to 15 significant digits, W4). `undefined` for anything else.
73
+ */
74
+ export function parseDecimalInput(value) {
75
+ if (typeof value === "string")
76
+ return canonicalDecimal(value);
77
+ if (typeof value === "number")
78
+ return decimalFromJsonNumber(value);
79
+ return undefined;
80
+ }
81
+ /**
82
+ * W2 for a JSON number on input. `JSON.parse` has already rounded the client's digits to a double,
83
+ * so only a number that IS its own 15-digit form (or a safe integer, taken as `String(n)`) can be
84
+ * read exactly: anything else would be silently rounded, so it is refused (`undefined`) and the
85
+ * client is told to send a string. The test is `Number(n.toPrecision(15)) === n`: a number whose
86
+ * shortest round-trip form carries more than 15 significant digits fails it.
87
+ */
88
+ export function decimalFromJsonNumber(value) {
89
+ if (!Number.isFinite(value))
90
+ return undefined;
91
+ if (!Number.isSafeInteger(value) && Number(value.toPrecision(15)) !== value)
92
+ return undefined;
93
+ return canonicalDecimal(String(value));
94
+ }
95
+ /** W2 for a query-string filter operand: the same grammar as a body string, compared exactly. */
96
+ export function parseDecimalOperand(text) {
97
+ return canonicalDecimal(text);
98
+ }
99
+ /**
100
+ * W3: whether the canonical decimal `canonical` fits a column declared `@precision` / `@scale`
101
+ * (at most `precision - scale` integer digits and `scale` fraction digits). A column rounds an
102
+ * excess fraction silently and refuses an excess integer part, so neither may reach it.
103
+ */
104
+ export function decimalFits(canonical, precision, scale) {
105
+ if (precision === undefined)
106
+ return true;
107
+ const s = scale ?? 0;
108
+ const unsigned = canonical.startsWith("-") ? canonical.slice(1) : canonical;
109
+ const dot = unsigned.indexOf(".");
110
+ const intDigits = dot === -1 ? unsigned : unsigned.slice(0, dot);
111
+ const fracDigits = dot === -1 ? 0 : unsigned.length - dot - 1;
112
+ const intLen = intDigits === "0" ? 0 : intDigits.length;
113
+ return fracDigits <= s && intLen <= precision - s;
114
+ }
115
+ /**
116
+ * W1/W4 on a value a driver hands back for a decimal column: a string (Postgres `numeric`, MySQL
117
+ * `DECIMAL`, a SQLite text value) is canonicalized, a number (a SQLite or D1 REAL or INTEGER) is
118
+ * rendered at 15 significant digits and canonicalized, a bigint is its digits, and an array (a
119
+ * `field.decimal` declared `isArray`) is rewritten element by element. Null passes through. A
120
+ * value in none of those shapes is left for the caller to see.
121
+ */
122
+ export function decimalToWire(value) {
123
+ if (Array.isArray(value))
124
+ return value.map(decimalToWire);
125
+ if (typeof value === "string")
126
+ return canonicalDecimal(value) ?? value;
127
+ if (typeof value === "number")
128
+ return decimalFromDouble15(value) ?? value;
129
+ if (typeof value === "bigint")
130
+ return value.toString();
131
+ return value;
132
+ }
133
+ /**
134
+ * Rewrite the values under `columns` to their canonical string. Returns `undefined` when there is
135
+ * nothing to do. Which keys are decimals comes from the caller (the generated route passes the
136
+ * names of the entity's `field.decimal` fields), never from the shape of a value: an integer
137
+ * column is not a decimal because it is a number.
138
+ */
139
+ export function decimalWire(columns) {
140
+ if (columns === undefined || columns.length === 0)
141
+ return undefined;
142
+ return (row) => {
143
+ if (row === null || typeof row !== "object")
144
+ return row;
145
+ const out = { ...row };
146
+ for (const c of columns) {
147
+ if (c in out)
148
+ out[c] = decimalToWire(out[c]);
149
+ }
150
+ return out;
151
+ };
152
+ }
153
+ /** A wire mapper with the decimal rewrite of `columns` applied after `base` (which may be a timestamp mapper). */
154
+ export function withDecimals(base, columns) {
155
+ const decimals = decimalWire(columns);
156
+ return decimals === undefined ? base : (row) => decimals(base(row));
157
+ }
158
+ //# sourceMappingURL=decimal-wire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decimal-wire.js","sourceRoot":"","sources":["../src/decimal-wire.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ export type FilterSubType = "string" | "number" | "boolean" | "datetime";
12
12
  * (docs/features/api-contract.md, "Type encodings") the value must match — so the
13
13
  * values ARE the metamodel subtype names, not a second vocabulary.
14
14
  */
15
- export declare const FILTER_VALUE_FORMATS: readonly ["date", "time", "timestamp", "uuid"];
15
+ export declare const FILTER_VALUE_FORMATS: readonly ["date", "decimal", "time", "timestamp", "uuid"];
16
16
  export type FilterValueFormat = (typeof FILTER_VALUE_FORMATS)[number];
17
17
  export interface FilterFieldRule {
18
18
  readonly ops: readonly FilterOp[];
@@ -32,7 +32,9 @@ export interface FilterFieldRule {
32
32
  readonly dateValues?: boolean;
33
33
  /**
34
34
  * The field's exact wire format, set by codegen for `field.date` / `field.time` /
35
- * `field.timestamp` / `field.uuid`. The filter parser rejects a value that does not
35
+ * `field.timestamp` / `field.uuid` / `field.decimal`. A `decimal` operand is parsed with the
36
+ * JSON-number grammar and bound as an exact string, never through a double (ADR-0019
37
+ * Amendment 1, W2). The filter parser rejects a value that does not
36
38
  * match it with `invalid_filter_value` instead of binding it — on SQLite a malformed
37
39
  * date compared as text and silently matched nothing; on Postgres it was a driver
38
40
  * error. Absent (an allowlist generated before this existed), a `datetime` value is
@@ -1 +1 @@
1
- {"version":3,"file":"filter-allowlist.d.ts","sourceRoot":"","sources":["../../src/drizzle-fastify/filter-allowlist.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACL,UAAU,EACV,cAAc,EACd,aAAa,EAKb,KAAK,QAAQ,EACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,QAAQ,EAAE,CAAC;AAEpE,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAEzE;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,gDAKvB,CAAC;AACX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,SAAS,QAAQ,EAAE,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IACpC;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;AAExE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACxC;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;AAEpE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,CAKR"}
1
+ {"version":3,"file":"filter-allowlist.d.ts","sourceRoot":"","sources":["../../src/drizzle-fastify/filter-allowlist.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACL,UAAU,EACV,cAAc,EACd,aAAa,EAMb,KAAK,QAAQ,EACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,QAAQ,EAAE,CAAC;AAEpE,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAEzE;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,2DAMvB,CAAC;AACX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,SAAS,QAAQ,EAAE,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;;;OASG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IACpC;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;AAExE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACxC;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;AAEpE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,CAKR"}
@@ -5,7 +5,7 @@
5
5
  */
6
6
  // FILTER_OPS, FilterOp, OPS_BY_SUBTYPE, and opsForSubType are canonical in
7
7
  // @metaobjectsdev/metadata — import from there and re-export for backwards compat.
8
- import { FILTER_OPS, OPS_BY_SUBTYPE, opsForSubType, FIELD_SUBTYPE_DATE, FIELD_SUBTYPE_TIME, FIELD_SUBTYPE_TIMESTAMP, FIELD_SUBTYPE_UUID, } from "@metaobjectsdev/metadata";
8
+ import { FILTER_OPS, OPS_BY_SUBTYPE, opsForSubType, FIELD_SUBTYPE_DATE, FIELD_SUBTYPE_DECIMAL, FIELD_SUBTYPE_TIME, FIELD_SUBTYPE_TIMESTAMP, FIELD_SUBTYPE_UUID, } from "@metaobjectsdev/metadata";
9
9
  export { FILTER_OPS, OPS_BY_SUBTYPE, opsForSubType };
10
10
  /**
11
11
  * The wire formats a filter value can be checked against, beyond the coarse
@@ -15,6 +15,7 @@ export { FILTER_OPS, OPS_BY_SUBTYPE, opsForSubType };
15
15
  */
16
16
  export const FILTER_VALUE_FORMATS = [
17
17
  FIELD_SUBTYPE_DATE,
18
+ FIELD_SUBTYPE_DECIMAL,
18
19
  FIELD_SUBTYPE_TIME,
19
20
  FIELD_SUBTYPE_TIMESTAMP,
20
21
  FIELD_SUBTYPE_UUID,
@@ -1 +1 @@
1
- {"version":3,"file":"filter-allowlist.js","sourceRoot":"","sources":["../../src/drizzle-fastify/filter-allowlist.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,2EAA2E;AAC3E,mFAAmF;AACnF,OAAO,EACL,UAAU,EACV,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,GAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAiB,CAAC;AAIpE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,kBAAkB;IAClB,kBAAkB;IAClB,uBAAuB;IACvB,kBAAkB;CACV,CAAC;AA4DX;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,aAAa,CAC3B,SAAwB,EACxB,KAAa,EACb,QAA4B;IAE5B,qFAAqF;IACrF,qFAAqF;IACrF,8EAA8E;IAC9E,OAAO,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,YAAY,IAAI,KAAK,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"filter-allowlist.js","sourceRoot":"","sources":["../../src/drizzle-fastify/filter-allowlist.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,2EAA2E;AAC3E,mFAAmF;AACnF,OAAO,EACL,UAAU,EACV,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,GAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAiB,CAAC;AAIpE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,kBAAkB;IAClB,qBAAqB;IACrB,kBAAkB;IAClB,uBAAuB;IACvB,kBAAkB;CACV,CAAC;AA8DX;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,aAAa,CAC3B,SAAwB,EACxB,KAAa,EACb,QAA4B;IAE5B,qFAAqF;IACrF,qFAAqF;IACrF,8EAA8E;IAC9E,OAAO,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,YAAY,IAAI,KAAK,CAAC;AAC7D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"filter-parser.d.ts","sourceRoot":"","sources":["../../src/drizzle-fastify/filter-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,GAAG,EAAE,KAAK,UAAU,EAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAA6B,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAMvG,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAQ5H,KAAK,QAAQ,GAAG,GAAG,CAAC;AAEpB,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,eAAe,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,OAAO,EAAE,UAAU,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,GAAG,CAAC;CACnB;AA8DD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,iBAAiB,CAkD1E;AA4GD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAWzD"}
1
+ {"version":3,"file":"filter-parser.d.ts","sourceRoot":"","sources":["../../src/drizzle-fastify/filter-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,GAAG,EAAE,KAAK,UAAU,EAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAA6B,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAMvG,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAS5H,KAAK,QAAQ,GAAG,GAAG,CAAC;AAEpB,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,eAAe,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,OAAO,EAAE,UAAU,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,GAAG,CAAC;CACnB;AA8DD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,iBAAiB,CAkD1E;AA4GD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAWzD"}
@@ -5,7 +5,8 @@ import { FilterParseError, parsePageBound, SORT_EXPECTED } from "./list-params.j
5
5
  // drizzle-free list-params module, which the ObjectManager Fastify mount also uses.
6
6
  export { FilterParseError, parsePageBound, PAGINATION_EXPECTED, RAW_VIEW_MAX_LIMIT, SORT_EXPECTED } from "./list-params.js";
7
7
  import { ANY_TEMPORAL_EXPECTED, FORMAT_EXPECTED, PLUS_OFFSET_HINT, looksLikeUnencodedPlusOffset, matchesAnyTemporal, matchesFormat, utcIsoIfZoned, utcIsoInstant, } from "./filter-value-format.js";
8
- import { FIELD_SUBTYPE_TIMESTAMP } from "@metaobjectsdev/metadata";
8
+ import { FIELD_SUBTYPE_DECIMAL, FIELD_SUBTYPE_TIMESTAMP } from "@metaobjectsdev/metadata";
9
+ import { canonicalDecimal } from "../decimal-wire.js";
9
10
  const DEFAULT_MAX_NESTING = 5;
10
11
  const DEFAULT_MAX_IN_LIST = 100;
11
12
  /** Top-level list-query parameters this parser (or the mount around it) reads. A
@@ -149,14 +150,14 @@ function compileOp(col, rule, field, op, value, dialect, maxInList) {
149
150
  throw new FilterParseError("filter.unsupported_op", `Op "${op}" not supported for field "${field}".`, { field, op, allowed: rule.ops });
150
151
  }
151
152
  switch (op) {
152
- case "eq": return eq(col, coerce(value, rule, col, field, op));
153
- case "ne": return ne(col, coerce(value, rule, col, field, op));
154
- case "gt": return gt(col, coerce(value, rule, col, field, op));
155
- case "gte": return gte(col, coerce(value, rule, col, field, op));
156
- case "lt": return lt(col, coerce(value, rule, col, field, op));
157
- case "lte": return lte(col, coerce(value, rule, col, field, op));
153
+ case "eq": return eq(col, coerce(value, rule, col, field, op, dialect));
154
+ case "ne": return ne(col, coerce(value, rule, col, field, op, dialect));
155
+ case "gt": return gt(col, coerce(value, rule, col, field, op, dialect));
156
+ case "gte": return gte(col, coerce(value, rule, col, field, op, dialect));
157
+ case "lt": return lt(col, coerce(value, rule, col, field, op, dialect));
158
+ case "lte": return lte(col, coerce(value, rule, col, field, op, dialect));
158
159
  case "in": {
159
- const list = String(value).split(",").map((v) => coerce(v.trim(), rule, col, field, op));
160
+ const list = String(value).split(",").map((v) => coerce(v.trim(), rule, col, field, op, dialect));
160
161
  if (list.length > maxInList) {
161
162
  throw new FilterParseError("filter.in_too_large", `In-list size ${list.length} exceeds limit ${maxInList}.`, { field, limit: maxInList });
162
163
  }
@@ -253,11 +254,24 @@ function assertWellFormed(s, rule, col, field, op) {
253
254
  }
254
255
  }
255
256
  /** Check a comparison value against the field's rule, then coerce it for binding. */
256
- function coerce(value, rule, col, field, op) {
257
+ function coerce(value, rule, col, field, op, dialect) {
257
258
  if (value === null || value === undefined)
258
259
  return null;
259
260
  const s = typeof value === "string" ? value : String(value);
260
261
  assertWellFormed(s, rule, col, field, op);
262
+ // A decimal operand is exact text, never a number (ADR-0019 Amendment 1, W2): parsed with
263
+ // the JSON-number grammar and bound as its canonical string. MySQL compares a DECIMAL column
264
+ // with a string operand as DOUBLES, so there the operand is cast to a wide DECIMAL first.
265
+ // SQLite and D1 hold a decimal as a double (W4) and order every number before any text, so a
266
+ // text operand against a computed column (a view's sum or average has no NUMERIC affinity)
267
+ // would compare false in the wrong direction: the operand is bound as the number it is, exact
268
+ // to the 15 digits W4 promises.
269
+ if (rule.format === FIELD_SUBTYPE_DECIMAL) {
270
+ const canonical = canonicalDecimal(s);
271
+ if (dialect === "mysql")
272
+ return sql `CAST(${canonical} AS DECIMAL(65,30))`;
273
+ return dialect === "sqlite" ? Number(canonical) : canonical;
274
+ }
261
275
  // A timestamp bound is compared in the same UTC spelling the generated schemas store:
262
276
  // on SQLite/D1 the column is TEXT and compares as text. An instant field (`instant`, i.e.
263
277
  // not @localTime) reads a zoneless or date-only bound as UTC, as its write schema does —
@@ -1 +1 @@
1
- {"version":3,"file":"filter-parser.js","sourceRoot":"","sources":["../../src/drizzle-fastify/filter-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter-parser.js","sourceRoot":"","sources":["../../src/drizzle-fastify/filter-parser.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"filter-value-format.d.ts","sourceRoot":"","sources":["../../src/drizzle-fastify/filter-value-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AA8B/D,gFAAgF;AAChF,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAKvE,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,qBAAqB,uCAAuC,CAAC;AAE1E,wBAAgB,aAAa,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAE3E;AAqCD,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AASD,+FAA+F;AAC/F,eAAO,MAAM,gBAAgB,yGAC2E,CAAC;AAEzG,wBAAgB,4BAA4B,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED,8FAA8F;AAC9F,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAErD"}
1
+ {"version":3,"file":"filter-value-format.d.ts","sourceRoot":"","sources":["../../src/drizzle-fastify/filter-value-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAgC/D,gFAAgF;AAChF,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAMvE,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,qBAAqB,uCAAuC,CAAC;AAE1E,wBAAgB,aAAa,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAE3E;AAqCD,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AASD,+FAA+F;AAC/F,eAAO,MAAM,gBAAgB,yGAC2E,CAAC;AAEzG,wBAAgB,4BAA4B,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED,8FAA8F;AAC9F,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAErD"}
@@ -10,7 +10,8 @@
10
10
  * (a day bound) or carry any UTC offset, and fractional seconds may have any precision.
11
11
  * What is refused is a value that is not that kind of thing at all.
12
12
  */
13
- import { FIELD_SUBTYPE_DATE, FIELD_SUBTYPE_TIME, FIELD_SUBTYPE_TIMESTAMP, FIELD_SUBTYPE_UUID, } from "@metaobjectsdev/metadata";
13
+ import { FIELD_SUBTYPE_DATE, FIELD_SUBTYPE_DECIMAL, FIELD_SUBTYPE_TIME, FIELD_SUBTYPE_TIMESTAMP, FIELD_SUBTYPE_UUID, } from "@metaobjectsdev/metadata";
14
+ import { canonicalDecimal } from "../decimal-wire.js";
14
15
  const DATE_RE = /^(\d{4})-(\d{2})-(\d{2})$/;
15
16
  const TIME_RE = /^(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d{1,9})?)?$/;
16
17
  // Date, then optionally a `T`/space time, then optionally `Z` or a ±HH[:]MM offset.
@@ -34,6 +35,7 @@ const CHECKS = {
34
35
  [FIELD_SUBTYPE_TIME]: (s) => TIME_RE.test(s),
35
36
  [FIELD_SUBTYPE_TIMESTAMP]: isTimestamp,
36
37
  [FIELD_SUBTYPE_UUID]: (s) => UUID_RE.test(s),
38
+ [FIELD_SUBTYPE_DECIMAL]: (s) => canonicalDecimal(s) !== undefined,
37
39
  };
38
40
  /** The `expected` member of the `invalid_filter_value` envelope, per format. */
39
41
  export const FORMAT_EXPECTED = {
@@ -41,6 +43,7 @@ export const FORMAT_EXPECTED = {
41
43
  [FIELD_SUBTYPE_TIME]: "time (HH:MM[:SS[.fff]])",
42
44
  [FIELD_SUBTYPE_TIMESTAMP]: "timestamp (YYYY-MM-DD[THH:MM[:SS[.fff]]][Z|±HH:MM])",
43
45
  [FIELD_SUBTYPE_UUID]: "uuid (8-4-4-4-12 hex)",
46
+ [FIELD_SUBTYPE_DECIMAL]: "decimal number (digits, optional fraction, optional exponent)",
44
47
  };
45
48
  /** `expected` for a temporal rule that does not say WHICH temporal format it is. */
46
49
  export const ANY_TEMPORAL_EXPECTED = "date, time or timestamp (ISO 8601)";
@@ -1 +1 @@
1
- {"version":3,"file":"filter-value-format.js","sourceRoot":"","sources":["../../src/drizzle-fastify/filter-value-format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter-value-format.js","sourceRoot":"","sources":["../../src/drizzle-fastify/filter-value-format.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export type { FilterAllowlist, SortAllowlist } from "./filter-allowlist.js";
5
5
  import { type SqlDialect } from "../sql-dialect.js";
6
6
  export { isTruthyFlag, contractErrorCode, parseId, coerceIdForColumn } from "./util.js";
7
7
  export { timestampWire, canonicalTimestamp } from "../timestamp-wire.js";
8
+ export { decimalWire, withDecimals, canonicalDecimal, parseDecimalInput, parseDecimalOperand } from "../decimal-wire.js";
8
9
  type AnyDrizzle = any;
9
10
  type AnyTable = any;
10
11
  export type CrudVerb = "list" | "get" | "create" | "update" | "delete";
@@ -45,6 +46,13 @@ export interface CrudRoutesOptions {
45
46
  updateMethod?: "patch" | "put";
46
47
  filterAllowlist?: FilterAllowlist;
47
48
  sortAllowlist?: SortAllowlist;
49
+ /**
50
+ * The names of the entity's `field.decimal` fields. A decimal is a canonical string on the
51
+ * wire on every dialect (ADR-0019 Amendment 1): Postgres and MySQL return the column's scale
52
+ * (`"100.5000"`) and SQLite hands back a number, so each row the routes send is rewritten
53
+ * under these keys. The generated route passes them; absent, rows are sent as read.
54
+ */
55
+ decimalColumns?: readonly string[];
48
56
  /** Dialect — required if filterAllowlist or sortAllowlist is set (for dialect-specific `like` lowering: SQLite lowers to GLOB to stay case-sensitive; ADR-0049). */
49
57
  dialect?: SqlDialect;
50
58
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drizzle-fastify/index.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAGtC,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC5E,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAI5E,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGvE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAQzE,KAAK,UAAU,GAAG,GAAG,CAAC;AAEtB,KAAK,QAAQ,GAAG,GAAG,CAAC;AAEpB,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEvE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,eAAe,CAAC;IACzB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,EAAE,EAAE,UAAU,CAAC;IACf,4EAA4E;IAC5E,KAAK,EAAE,QAAQ,CAAC;IAChB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,yEAAyE;IACzE,YAAY,EAAE,UAAU,CAAC;IACzB,yEAAyE;IACzE,YAAY,EAAE,UAAU,CAAC;IACzB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC7B;;;;OAIG;IACH,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAC/B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,aAAa,CAAC,EAAI,aAAa,CAAC;IAChC,oKAAoK;IACpK,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD;AAwDD,wBAAgB,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAO7D;AAED,KAAK,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AASrD,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CA2EtD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAiBrD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAmCxD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAkFxD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CA6BxD;AAED,OAAO,EAAE,uBAAuB,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drizzle-fastify/index.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAGtC,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC5E,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAK5E,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGvE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAQzH,KAAK,UAAU,GAAG,GAAG,CAAC;AAEtB,KAAK,QAAQ,GAAG,GAAG,CAAC;AAEpB,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEvE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,eAAe,CAAC;IACzB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,EAAE,EAAE,UAAU,CAAC;IACf,4EAA4E;IAC5E,KAAK,EAAE,QAAQ,CAAC;IAChB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,yEAAyE;IACzE,YAAY,EAAE,UAAU,CAAC;IACzB,yEAAyE;IACzE,YAAY,EAAE,UAAU,CAAC;IACzB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC7B;;;;OAIG;IACH,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAC/B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,aAAa,CAAC,EAAI,aAAa,CAAC;IAChC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,oKAAoK;IACpK,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD;AAwDD,wBAAgB,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAO7D;AAED,KAAK,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AASrD,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CA2EtD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAiBrD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAmCxD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAkFxD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CA6BxD;AAED,OAAO,EAAE,uBAAuB,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
@@ -24,11 +24,13 @@ import qs from "qs";
24
24
  import { parseFilterParams, parsePageBound, FilterParseError } from "./filter-parser.js";
25
25
  import { isTruthyFlag, contractErrorCode, coerceIdForColumn, firstRow, extractRowCount } from "./util.js";
26
26
  import { timestampWire } from "../timestamp-wire.js";
27
+ import { withDecimals } from "../decimal-wire.js";
27
28
  import { supportsReturning } from "../sql-dialect.js";
28
29
  import { withContractErrorHandler } from "./route-error-handler.js";
29
30
  import { validationErrorBody } from "../route-errors.js";
30
31
  export { isTruthyFlag, contractErrorCode, parseId, coerceIdForColumn } from "./util.js";
31
32
  export { timestampWire, canonicalTimestamp } from "../timestamp-wire.js";
33
+ export { decimalWire, withDecimals, canonicalDecimal, parseDecimalInput, parseDecimalOperand } from "../decimal-wire.js";
32
34
  const ALL_VERBS = ["list", "get", "create", "update", "delete"];
33
35
  /** The TPH discriminator predicate for this route set, or undefined when the
34
36
  * routes are not subtype-scoped. */
@@ -49,7 +51,7 @@ function readSource(opts) {
49
51
  * non-timestamp of the same name.
50
52
  */
51
53
  function readWire(opts) {
52
- return timestampWire(readSource(opts));
54
+ return withDecimals(timestampWire(readSource(opts)), opts.decimalColumns);
53
55
  }
54
56
  /**
55
57
  * Wire mapper for a WRITE ECHO: `reReadThroughView` answers with the replica
@@ -57,7 +59,7 @@ function readWire(opts) {
57
59
  * against the union of both sources.
58
60
  */
59
61
  function echoWire(opts) {
60
- return timestampWire(opts.table, opts.readView);
62
+ return withDecimals(timestampWire(opts.table, opts.readView), opts.decimalColumns);
61
63
  }
62
64
  /** #214 — after a write to the base table, re-read the row THROUGH the replica
63
65
  * view by PK so the response carries derived (origin.passthrough) columns. When