agent-relay 6.0.2 → 6.0.4
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.
- package/README.md +10 -3
- package/dist/index.cjs +2024 -962
- package/dist/src/cli/commands/cloud.d.ts.map +1 -1
- package/dist/src/cli/commands/cloud.js +17 -144
- package/dist/src/cli/commands/cloud.js.map +1 -1
- package/dist/src/cli/commands/setup.d.ts +2 -39
- package/dist/src/cli/commands/setup.d.ts.map +1 -1
- package/dist/src/cli/commands/setup.js +4 -333
- package/dist/src/cli/commands/setup.js.map +1 -1
- package/dist/src/cli/lib/auth-ssh.d.ts +2 -33
- package/dist/src/cli/lib/auth-ssh.d.ts.map +1 -1
- package/dist/src/cli/lib/auth-ssh.js +3 -39
- package/dist/src/cli/lib/auth-ssh.js.map +1 -1
- package/dist/src/cli/lib/ssh-interactive.d.ts +4 -66
- package/dist/src/cli/lib/ssh-interactive.d.ts.map +1 -1
- package/dist/src/cli/lib/ssh-interactive.js +4 -436
- package/dist/src/cli/lib/ssh-interactive.js.map +1 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/README.md +1 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/locales/package.json +2 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/mini/package.json +2 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/package.json +1 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v3/tests/all-errors.test.ts +3 -3
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v3/tests/object.test.ts +5 -5
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v3/tests/partials.test.ts +3 -3
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/errors.ts +2 -2
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/external.ts +1 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/from-json-schema.ts +39 -23
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/parse.ts +6 -6
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/schemas.ts +389 -148
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/catch.test.ts +4 -2
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/codec.test.ts +142 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/continuability.test.ts +1 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/datetime.test.ts +1 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/default.test.ts +44 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +197 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +31 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +214 -2
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +161 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/function.test.ts +6 -6
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/global-config.test.ts +39 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/index.test.ts +2 -2
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +46 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/locales_ka.test.ts +29 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/locales_ro.test.ts +24 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/number.test.ts +55 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/object.test.ts +83 -6
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/optional.test.ts +114 -4
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/partial.test.ts +28 -2
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/prefault.test.ts +1 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/record.test.ts +85 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +49 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/refine.test.ts +63 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/string.test.ts +50 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +4 -4
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +128 -14
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/transform.test.ts +17 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/tuple.test.ts +315 -2
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/classic/tests/union.test.ts +54 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/core/api.ts +25 -2
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/core/checks.ts +1 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/core/core.ts +17 -2
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/core/errors.ts +31 -24
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/core/json-schema-processors.ts +15 -17
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/core/parse.ts +7 -7
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/core/regexes.ts +8 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/core/schemas.ts +218 -66
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/core/tests/locales/el.test.ts +215 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +72 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/core/tests/locales/hr.test.ts +163 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/core/tests/locales/uz.test.ts +22 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/core/tests/record-constructor.test.ts +58 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/core/to-json-schema.ts +9 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/core/util.ts +52 -35
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/core/versions.ts +2 -2
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/locales/el.ts +121 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/locales/en.ts +4 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/locales/fr.ts +24 -8
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/locales/hr.ts +131 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/locales/index.ts +3 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/locales/it.ts +1 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/locales/ka.ts +8 -8
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/locales/ro.ts +129 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/locales/uz.ts +1 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/mini/external.ts +1 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/mini/schemas.ts +55 -24
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/mini/tests/codec.test.ts +19 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/mini/tests/index.test.ts +27 -2
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/mini/tests/object.test.ts +9 -9
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +51 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/src/v4/mini/tests/string.test.ts +5 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v3/package.json +2 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/classic/errors.js +2 -2
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/classic/external.d.cts +1 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/classic/external.d.ts +1 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/classic/from-json-schema.cjs +31 -16
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/classic/from-json-schema.js +31 -16
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/classic/package.json +2 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/classic/schemas.cjs +346 -117
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/classic/schemas.d.cts +34 -12
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/classic/schemas.d.ts +34 -12
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/classic/schemas.js +345 -117
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/api.cjs +7 -2
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/api.d.cts +20 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/api.d.ts +20 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/api.js +7 -2
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/checks.d.cts +1 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/checks.d.ts +1 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/core.cjs +3 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/core.js +4 -2
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/errors.cjs +26 -23
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/errors.d.cts +1 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/errors.d.ts +1 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/errors.js +26 -23
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/json-schema-processors.cjs +14 -19
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/json-schema-processors.js +14 -19
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/package.json +2 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/parse.cjs +7 -7
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/parse.js +7 -7
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/regexes.cjs +9 -3
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/regexes.d.cts +6 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/regexes.d.ts +6 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/regexes.js +7 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/schemas.cjs +196 -59
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/schemas.d.cts +21 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/schemas.d.ts +21 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/schemas.js +196 -59
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/to-json-schema.cjs +10 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/to-json-schema.js +10 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/util.cjs +54 -30
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/util.d.cts +1 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/util.d.ts +1 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/util.js +55 -32
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/versions.cjs +2 -2
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/versions.d.cts +1 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/versions.d.ts +1 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/core/versions.js +2 -2
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/el.cjs +136 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/el.d.cts +5 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/el.d.ts +4 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/el.js +109 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/en.cjs +4 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/en.js +4 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/fr.cjs +24 -7
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/fr.js +24 -7
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/hr.cjs +149 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/hr.d.cts +5 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/hr.d.ts +4 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/hr.js +122 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/index.cjs +8 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/index.d.cts +3 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/index.d.ts +3 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/index.js +3 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/it.cjs +1 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/it.js +1 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/ka.cjs +8 -8
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/ka.js +8 -8
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/package.json +2 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/ro.cjs +146 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/ro.d.cts +5 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/ro.d.ts +4 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/ro.js +119 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/uz.cjs +1 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/locales/uz.js +1 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/mini/external.d.cts +1 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/mini/external.d.ts +1 -0
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/mini/package.json +2 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/mini/schemas.cjs +41 -4
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/mini/schemas.d.cts +27 -9
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/mini/schemas.d.ts +27 -9
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/mini/schemas.js +40 -4
- package/node_modules/@relaycast/sdk/node_modules/zod/v4/package.json +2 -1
- package/node_modules/@relaycast/sdk/node_modules/zod/v4-mini/package.json +2 -1
- package/package.json +10 -10
|
@@ -212,9 +212,9 @@ test("inferred merged object type with optional properties", async () => {
|
|
|
212
212
|
.object({ a: z.string(), b: z.string().optional() })
|
|
213
213
|
.merge(z.object({ a: z.string().optional(), b: z.string() }));
|
|
214
214
|
type Merged = z.infer<typeof Merged>;
|
|
215
|
-
util.assertEqual<Merged, { a?: string; b: string }>(true);
|
|
215
|
+
util.assertEqual<Merged, { a?: string | undefined; b: string }>(true);
|
|
216
216
|
// todo
|
|
217
|
-
// util.assertEqual<Merged, { a?: string; b: string }>(true);
|
|
217
|
+
// util.assertEqual<Merged, { a?: string | undefined; b: string }>(true);
|
|
218
218
|
});
|
|
219
219
|
|
|
220
220
|
test("inferred unioned object type with optional properties", async () => {
|
|
@@ -223,7 +223,7 @@ test("inferred unioned object type with optional properties", async () => {
|
|
|
223
223
|
z.object({ a: z.string().optional(), b: z.string() }),
|
|
224
224
|
]);
|
|
225
225
|
type Unioned = z.infer<typeof Unioned>;
|
|
226
|
-
util.assertEqual<Unioned, { a: string; b?: string } | { a?: string; b: string }>(true);
|
|
226
|
+
util.assertEqual<Unioned, { a: string; b?: string | undefined } | { a?: string | undefined; b: string }>(true);
|
|
227
227
|
});
|
|
228
228
|
|
|
229
229
|
test("inferred enum type", async () => {
|
|
@@ -245,13 +245,13 @@ test("inferred enum type", async () => {
|
|
|
245
245
|
test("inferred partial object type with optional properties", async () => {
|
|
246
246
|
const Partial = z.object({ a: z.string(), b: z.string().optional() }).partial();
|
|
247
247
|
type Partial = z.infer<typeof Partial>;
|
|
248
|
-
util.assertEqual<Partial, { a?: string; b?: string }>(true);
|
|
248
|
+
util.assertEqual<Partial, { a?: string | undefined; b?: string | undefined }>(true);
|
|
249
249
|
});
|
|
250
250
|
|
|
251
251
|
test("inferred picked object type with optional properties", async () => {
|
|
252
252
|
const Picked = z.object({ a: z.string(), b: z.string().optional() }).pick({ b: true });
|
|
253
253
|
type Picked = z.infer<typeof Picked>;
|
|
254
|
-
util.assertEqual<Picked, { b?: string }>(true);
|
|
254
|
+
util.assertEqual<Picked, { b?: string | undefined }>(true);
|
|
255
255
|
});
|
|
256
256
|
|
|
257
257
|
test("inferred type for unknown/any keys", () => {
|
|
@@ -21,7 +21,7 @@ test("shallow inference", () => {
|
|
|
21
21
|
name?: string | undefined;
|
|
22
22
|
age?: number | undefined;
|
|
23
23
|
outer?: { inner: string } | undefined;
|
|
24
|
-
array?: { asdf: string }[];
|
|
24
|
+
array?: { asdf: string }[] | undefined;
|
|
25
25
|
};
|
|
26
26
|
util.assertEqual<shallow, correct>(true);
|
|
27
27
|
});
|
|
@@ -41,7 +41,7 @@ test("deep partial inference", () => {
|
|
|
41
41
|
asdf.parse("asdf");
|
|
42
42
|
type deep = z.infer<typeof deep>;
|
|
43
43
|
type correct = {
|
|
44
|
-
array?: { asdf?: string }[];
|
|
44
|
+
array?: { asdf?: string | undefined }[] | undefined;
|
|
45
45
|
name?: string | undefined;
|
|
46
46
|
age?: number | undefined;
|
|
47
47
|
outer?: { inner?: string | undefined } | undefined;
|
|
@@ -118,7 +118,7 @@ test("deep partial inference", () => {
|
|
|
118
118
|
asdf?: string | undefined;
|
|
119
119
|
}[]
|
|
120
120
|
| undefined;
|
|
121
|
-
tuple?: [{ value?: string }] | undefined;
|
|
121
|
+
tuple?: [{ value?: string | undefined }] | undefined;
|
|
122
122
|
};
|
|
123
123
|
util.assertEqual<expected, partialed>(true);
|
|
124
124
|
});
|
|
@@ -61,8 +61,8 @@ const initializer = (inst: ZodError, issues: core.$ZodIssue[]) => {
|
|
|
61
61
|
// },
|
|
62
62
|
// });
|
|
63
63
|
};
|
|
64
|
-
export const ZodError: core.$constructor<ZodError> = core.$constructor("ZodError", initializer);
|
|
65
|
-
export const ZodRealError: core.$constructor<ZodError> = core.$constructor("ZodError", initializer, {
|
|
64
|
+
export const ZodError: core.$constructor<ZodError> = /*@__PURE__*/ core.$constructor("ZodError", initializer);
|
|
65
|
+
export const ZodRealError: core.$constructor<ZodError> = /*@__PURE__*/ core.$constructor("ZodError", initializer, {
|
|
66
66
|
Parent: Error,
|
|
67
67
|
});
|
|
68
68
|
|
|
@@ -29,7 +29,7 @@ interface ConversionContext {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
// Keys that are recognized and handled by the conversion logic
|
|
32
|
-
const RECOGNIZED_KEYS = new Set([
|
|
32
|
+
const RECOGNIZED_KEYS = /*@__PURE__*/ new Set([
|
|
33
33
|
// Schema identification
|
|
34
34
|
"$schema",
|
|
35
35
|
"$ref",
|
|
@@ -478,10 +478,10 @@ function convertBaseSchema(schema: JSONSchema.JSONSchema, ctx: ConversionContext
|
|
|
478
478
|
}
|
|
479
479
|
// Apply minItems/maxItems constraints to tuples
|
|
480
480
|
if (typeof schema.minItems === "number") {
|
|
481
|
-
zodSchema =
|
|
481
|
+
zodSchema = zodSchema.check(z.minLength(schema.minItems));
|
|
482
482
|
}
|
|
483
483
|
if (typeof schema.maxItems === "number") {
|
|
484
|
-
zodSchema =
|
|
484
|
+
zodSchema = zodSchema.check(z.maxLength(schema.maxItems));
|
|
485
485
|
}
|
|
486
486
|
} else if (Array.isArray(items)) {
|
|
487
487
|
// Tuple with items array (draft-7)
|
|
@@ -497,10 +497,10 @@ function convertBaseSchema(schema: JSONSchema.JSONSchema, ctx: ConversionContext
|
|
|
497
497
|
}
|
|
498
498
|
// Apply minItems/maxItems constraints to tuples
|
|
499
499
|
if (typeof schema.minItems === "number") {
|
|
500
|
-
zodSchema =
|
|
500
|
+
zodSchema = zodSchema.check(z.minLength(schema.minItems));
|
|
501
501
|
}
|
|
502
502
|
if (typeof schema.maxItems === "number") {
|
|
503
|
-
zodSchema =
|
|
503
|
+
zodSchema = zodSchema.check(z.maxLength(schema.maxItems));
|
|
504
504
|
}
|
|
505
505
|
} else if (items !== undefined) {
|
|
506
506
|
// Regular array
|
|
@@ -509,10 +509,10 @@ function convertBaseSchema(schema: JSONSchema.JSONSchema, ctx: ConversionContext
|
|
|
509
509
|
|
|
510
510
|
// Apply constraints
|
|
511
511
|
if (typeof schema.minItems === "number") {
|
|
512
|
-
arraySchema =
|
|
512
|
+
arraySchema = arraySchema.min(schema.minItems);
|
|
513
513
|
}
|
|
514
514
|
if (typeof schema.maxItems === "number") {
|
|
515
|
-
arraySchema =
|
|
515
|
+
arraySchema = arraySchema.max(schema.maxItems);
|
|
516
516
|
}
|
|
517
517
|
|
|
518
518
|
zodSchema = arraySchema;
|
|
@@ -527,14 +527,6 @@ function convertBaseSchema(schema: JSONSchema.JSONSchema, ctx: ConversionContext
|
|
|
527
527
|
throw new Error(`Unsupported type: ${type}`);
|
|
528
528
|
}
|
|
529
529
|
|
|
530
|
-
// Apply metadata
|
|
531
|
-
if (schema.description) {
|
|
532
|
-
zodSchema = zodSchema.describe(schema.description);
|
|
533
|
-
}
|
|
534
|
-
if (schema.default !== undefined) {
|
|
535
|
-
zodSchema = (zodSchema as any).default(schema.default);
|
|
536
|
-
}
|
|
537
|
-
|
|
538
530
|
return zodSchema;
|
|
539
531
|
}
|
|
540
532
|
|
|
@@ -586,10 +578,18 @@ function convertSchema(schema: JSONSchema.JSONSchema | boolean, ctx: ConversionC
|
|
|
586
578
|
baseSchema = z.readonly(baseSchema);
|
|
587
579
|
}
|
|
588
580
|
|
|
589
|
-
//
|
|
581
|
+
// Apply `default` so it wraps the fully-composed schema. This ensures
|
|
582
|
+
// `parse(undefined) -> default` works regardless of which branch of
|
|
583
|
+
// `convertBaseSchema` produced the inner schema (enum/const/not/typed/etc.).
|
|
584
|
+
if (schema.default !== undefined) {
|
|
585
|
+
baseSchema = baseSchema.default(schema.default);
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
// Collect non-description annotation metadata into the user-supplied
|
|
589
|
+
// registry. Description is handled separately below via `.describe()` to
|
|
590
|
+
// preserve the contract that `schema.description` reads from globalRegistry.
|
|
590
591
|
const extraMeta: Record<string, unknown> = {};
|
|
591
592
|
|
|
592
|
-
// Core schema keywords that should be captured as metadata
|
|
593
593
|
const coreMetadataKeys = ["$id", "id", "$comment", "$anchor", "$vocabulary", "$dynamicRef", "$dynamicAnchor"];
|
|
594
594
|
for (const key of coreMetadataKeys) {
|
|
595
595
|
if (key in schema) {
|
|
@@ -597,7 +597,6 @@ function convertSchema(schema: JSONSchema.JSONSchema | boolean, ctx: ConversionC
|
|
|
597
597
|
}
|
|
598
598
|
}
|
|
599
599
|
|
|
600
|
-
// Content keywords - store as metadata
|
|
601
600
|
const contentMetadataKeys = ["contentEncoding", "contentMediaType", "contentSchema"];
|
|
602
601
|
for (const key of contentMetadataKeys) {
|
|
603
602
|
if (key in schema) {
|
|
@@ -605,7 +604,6 @@ function convertSchema(schema: JSONSchema.JSONSchema | boolean, ctx: ConversionC
|
|
|
605
604
|
}
|
|
606
605
|
}
|
|
607
606
|
|
|
608
|
-
// Unrecognized keys (custom metadata)
|
|
609
607
|
for (const key of Object.keys(schema)) {
|
|
610
608
|
if (!RECOGNIZED_KEYS.has(key)) {
|
|
611
609
|
extraMeta[key] = schema[key];
|
|
@@ -616,6 +614,13 @@ function convertSchema(schema: JSONSchema.JSONSchema | boolean, ctx: ConversionC
|
|
|
616
614
|
ctx.registry.add(baseSchema, extraMeta);
|
|
617
615
|
}
|
|
618
616
|
|
|
617
|
+
// Apply description last. `.describe()` clones the schema and sets
|
|
618
|
+
// `_zod.parent` on the clone, so registry lookups on the returned reference
|
|
619
|
+
// still resolve `extraMeta` via parent inheritance.
|
|
620
|
+
if (schema.description) {
|
|
621
|
+
baseSchema = baseSchema.describe(schema.description);
|
|
622
|
+
}
|
|
623
|
+
|
|
619
624
|
return baseSchema;
|
|
620
625
|
}
|
|
621
626
|
|
|
@@ -627,17 +632,28 @@ export function fromJSONSchema(schema: JSONSchema.JSONSchema | boolean, params?:
|
|
|
627
632
|
return schema ? z.any() : z.never();
|
|
628
633
|
}
|
|
629
634
|
|
|
630
|
-
|
|
631
|
-
|
|
635
|
+
// Normalize input via a JSON round-trip. This guarantees the converter
|
|
636
|
+
// walks a plain, finite, JSON-valid object graph: cyclic inputs fail here,
|
|
637
|
+
// getter/Proxy-based properties are materialized into static values, and
|
|
638
|
+
// class instances collapse to plain objects.
|
|
639
|
+
let normalized: JSONSchema.JSONSchema;
|
|
640
|
+
try {
|
|
641
|
+
normalized = JSON.parse(JSON.stringify(schema));
|
|
642
|
+
} catch {
|
|
643
|
+
throw new Error("fromJSONSchema input is not valid JSON (possibly cyclic); use $defs/$ref for recursive schemas");
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
const version = detectVersion(normalized, params?.defaultTarget);
|
|
647
|
+
const defs = (normalized.$defs || normalized.definitions || {}) as Record<string, JSONSchema.JSONSchema>;
|
|
632
648
|
|
|
633
649
|
const ctx: ConversionContext = {
|
|
634
650
|
version,
|
|
635
651
|
defs,
|
|
636
652
|
refs: new Map(),
|
|
637
653
|
processing: new Set(),
|
|
638
|
-
rootSchema:
|
|
654
|
+
rootSchema: normalized,
|
|
639
655
|
registry: params?.registry ?? globalRegistry,
|
|
640
656
|
};
|
|
641
657
|
|
|
642
|
-
return convertSchema(
|
|
658
|
+
return convertSchema(normalized, ctx);
|
|
643
659
|
}
|
|
@@ -10,14 +10,14 @@ export const parse: <T extends core.$ZodType>(
|
|
|
10
10
|
value: unknown,
|
|
11
11
|
_ctx?: core.ParseContext<core.$ZodIssue>,
|
|
12
12
|
_params?: { callee?: core.util.AnyFunc; Err?: core.$ZodErrorClass }
|
|
13
|
-
) => core.output<T> = /* @__PURE__ */ core._parse(ZodRealError)
|
|
13
|
+
) => core.output<T> = /* @__PURE__ */ core._parse(ZodRealError);
|
|
14
14
|
|
|
15
15
|
export const parseAsync: <T extends core.$ZodType>(
|
|
16
16
|
schema: T,
|
|
17
17
|
value: unknown,
|
|
18
18
|
_ctx?: core.ParseContext<core.$ZodIssue>,
|
|
19
19
|
_params?: { callee?: core.util.AnyFunc; Err?: core.$ZodErrorClass }
|
|
20
|
-
) => Promise<core.output<T>> = /* @__PURE__ */ core._parseAsync(ZodRealError)
|
|
20
|
+
) => Promise<core.output<T>> = /* @__PURE__ */ core._parseAsync(ZodRealError);
|
|
21
21
|
|
|
22
22
|
export const safeParse: <T extends core.$ZodType>(
|
|
23
23
|
schema: T,
|
|
@@ -37,25 +37,25 @@ export const encode: <T extends core.$ZodType>(
|
|
|
37
37
|
schema: T,
|
|
38
38
|
value: core.output<T>,
|
|
39
39
|
_ctx?: core.ParseContext<core.$ZodIssue>
|
|
40
|
-
) => core.input<T> = /* @__PURE__ */ core._encode(ZodRealError)
|
|
40
|
+
) => core.input<T> = /* @__PURE__ */ core._encode(ZodRealError);
|
|
41
41
|
|
|
42
42
|
export const decode: <T extends core.$ZodType>(
|
|
43
43
|
schema: T,
|
|
44
44
|
value: core.input<T>,
|
|
45
45
|
_ctx?: core.ParseContext<core.$ZodIssue>
|
|
46
|
-
) => core.output<T> = /* @__PURE__ */ core._decode(ZodRealError)
|
|
46
|
+
) => core.output<T> = /* @__PURE__ */ core._decode(ZodRealError);
|
|
47
47
|
|
|
48
48
|
export const encodeAsync: <T extends core.$ZodType>(
|
|
49
49
|
schema: T,
|
|
50
50
|
value: core.output<T>,
|
|
51
51
|
_ctx?: core.ParseContext<core.$ZodIssue>
|
|
52
|
-
) => Promise<core.input<T>> = /* @__PURE__ */ core._encodeAsync(ZodRealError)
|
|
52
|
+
) => Promise<core.input<T>> = /* @__PURE__ */ core._encodeAsync(ZodRealError);
|
|
53
53
|
|
|
54
54
|
export const decodeAsync: <T extends core.$ZodType>(
|
|
55
55
|
schema: T,
|
|
56
56
|
value: core.input<T>,
|
|
57
57
|
_ctx?: core.ParseContext<core.$ZodIssue>
|
|
58
|
-
) => Promise<core.output<T>> = /* @__PURE__ */ core._decodeAsync(ZodRealError)
|
|
58
|
+
) => Promise<core.output<T>> = /* @__PURE__ */ core._decodeAsync(ZodRealError);
|
|
59
59
|
|
|
60
60
|
export const safeEncode: <T extends core.$ZodType>(
|
|
61
61
|
schema: T,
|