typeferry 0.7.1 → 0.7.2
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.
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
1
2
|
import { z } from 'zod';
|
|
2
3
|
import { isObjectIdSchema } from './bson-schema.js';
|
|
3
4
|
const BSON_NUMERIC_TYPES = ['int', 'long', 'double', 'decimal'];
|
|
@@ -70,8 +71,9 @@ function convertSchema(value, path) {
|
|
|
70
71
|
if (Object.keys(value).length === 0) {
|
|
71
72
|
throwUnsupported(path, 'Zod emitted an unconstrained JSON Schema node.');
|
|
72
73
|
}
|
|
74
|
+
const normalizedValue = normalizeHomogeneousVariadicTuple(value, path);
|
|
73
75
|
const result = {};
|
|
74
|
-
for (const [key, child] of Object.entries(
|
|
76
|
+
for (const [key, child] of Object.entries(normalizedValue)) {
|
|
75
77
|
if (key === '$schema' || key === '~standard')
|
|
76
78
|
continue;
|
|
77
79
|
if (key === 'type') {
|
|
@@ -120,7 +122,7 @@ function convertSchema(value, path) {
|
|
|
120
122
|
continue;
|
|
121
123
|
}
|
|
122
124
|
if (key === 'format') {
|
|
123
|
-
if (typeof
|
|
125
|
+
if (typeof normalizedValue.pattern !== 'string') {
|
|
124
126
|
throwUnsupported([...path, key], `Zod string format "${String(child)}" has no MongoDB-compatible pattern.`);
|
|
125
127
|
}
|
|
126
128
|
continue;
|
|
@@ -135,6 +137,35 @@ function convertSchema(value, path) {
|
|
|
135
137
|
}
|
|
136
138
|
return result;
|
|
137
139
|
}
|
|
140
|
+
/**
|
|
141
|
+
* Collapses the losslessly representable subset of draft-04 tuple schemas.
|
|
142
|
+
*
|
|
143
|
+
* MongoDB cannot enforce positional tuples. A Zod variadic tuple is equivalent
|
|
144
|
+
* to a homogeneous array only when every required prefix item is structurally
|
|
145
|
+
* identical to its rest item; the prefix length then becomes `minItems`.
|
|
146
|
+
*/
|
|
147
|
+
function normalizeHomogeneousVariadicTuple(value, path) {
|
|
148
|
+
if (!Array.isArray(value.items))
|
|
149
|
+
return value;
|
|
150
|
+
if (!isJsonObject(value.additionalItems)) {
|
|
151
|
+
throwUnsupported(path, 'Tuple schemas are not supported.');
|
|
152
|
+
}
|
|
153
|
+
const rest = convertSchema(value.additionalItems, [
|
|
154
|
+
...path,
|
|
155
|
+
'additionalItems',
|
|
156
|
+
]);
|
|
157
|
+
const prefix = value.items.map((item, index) => convertSchema(item, [...path, 'items', String(index)]));
|
|
158
|
+
if (!prefix.every((item) => isDeepStrictEqual(item, rest))) {
|
|
159
|
+
throwUnsupported(path, 'Tuple schemas are not supported.');
|
|
160
|
+
}
|
|
161
|
+
const normalized = {
|
|
162
|
+
...value,
|
|
163
|
+
items: value.additionalItems,
|
|
164
|
+
minItems: prefix.length,
|
|
165
|
+
};
|
|
166
|
+
delete normalized.additionalItems;
|
|
167
|
+
return normalized;
|
|
168
|
+
}
|
|
138
169
|
function convertJsonTypes(value) {
|
|
139
170
|
if (Array.isArray(value)) {
|
|
140
171
|
return value.flatMap(convertJsonType);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/mongodb/validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAIhD,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAA;AAExE;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,sBAAsB;IACtB,OAAO;IACP,OAAO;IACP,UAAU;IACV,aAAa;IACb,MAAM;IACN,kBAAkB;IAClB,kBAAkB;IAClB,OAAO;IACP,SAAS;IACT,UAAU;IACV,WAAW;IACX,SAAS;IACT,UAAU;IACV,WAAW;IACX,YAAY;IACZ,KAAK;IACL,OAAO;IACP,SAAS;IACT,YAAY;IACZ,UAAU;IACV,MAAM;IACN,aAAa;CACd,CAAC,CAAA;AAEF,mFAAmF;AACnF,MAAM,UAAU,iBAAiB,CAC/B,MAA4B;IAE5B,MAAM,UAAU,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE;QACxC,MAAM,EAAE,UAAU;QAClB,EAAE,EAAE,QAAQ;QACZ,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,QAAQ;QAChB,eAAe,EAAE,KAAK;QACtB,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;YACvD,IAAI,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChC,eAAe,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAA;gBACpD,OAAM;YACR,CAAC;YAED,IAAI,SAAS,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;gBACnC,eAAe,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;gBAChD,OAAM;YACR,CAAC;YAED,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;gBAC5D,MAAM,IAAI,KAAK,CACb,mEAAmE,QAAQ,GAAG,CAC/E,CAAA;YACH,CAAC;QACH,CAAC;KACF,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;IAC/C,OAAO,SAAS,CAAC,OAAO,CAAA;IACxB,sBAAsB,CAAC,SAAS,CAAC,CAAA;IACjC,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,cAAc,CAC5B,MAA4B;IAE5B,OAAO,EAAE,WAAW,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAA;AACnD,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,IAAuB;IAC5D,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,gBAAgB,CAAC,IAAI,EAAE,4CAA4C,CAAC,CAAA;IACtE,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,gBAAgB,CAAC,IAAI,EAAE,gDAAgD,CAAC,CAAA;IAC1E,CAAC;IAED,MAAM,MAAM,GAAe,EAAE,CAAA;IAC7B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/mongodb/validator.ts"],"names":[],"mappings":"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"}
|