trpc-openapi
Version:
87 lines • 4.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.instanceofZodTypeCoercible = exports.zodSupportsCoerce = exports.instanceofZodTypeLikeString = exports.unwrapZodType = exports.instanceofZodTypeLikeVoid = exports.instanceofZodTypeObject = exports.instanceofZodTypeOptional = exports.instanceofZodTypeKind = exports.instanceofZodType = void 0;
const zod_1 = require("zod");
const instanceofZodType = (type) => {
var _a;
return !!((_a = type === null || type === void 0 ? void 0 : type._def) === null || _a === void 0 ? void 0 : _a.typeName);
};
exports.instanceofZodType = instanceofZodType;
const instanceofZodTypeKind = (type, zodTypeKind) => {
var _a;
return ((_a = type === null || type === void 0 ? void 0 : type._def) === null || _a === void 0 ? void 0 : _a.typeName) === zodTypeKind;
};
exports.instanceofZodTypeKind = instanceofZodTypeKind;
const instanceofZodTypeOptional = (type) => {
return (0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodOptional);
};
exports.instanceofZodTypeOptional = instanceofZodTypeOptional;
const instanceofZodTypeObject = (type) => {
return (0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodObject);
};
exports.instanceofZodTypeObject = instanceofZodTypeObject;
const instanceofZodTypeLikeVoid = (type) => {
return ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodVoid) ||
(0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodUndefined) ||
(0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodNever));
};
exports.instanceofZodTypeLikeVoid = instanceofZodTypeLikeVoid;
const unwrapZodType = (type, unwrapPreprocess) => {
if ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodOptional)) {
return (0, exports.unwrapZodType)(type.unwrap(), unwrapPreprocess);
}
if ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodDefault)) {
return (0, exports.unwrapZodType)(type.removeDefault(), unwrapPreprocess);
}
if ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodLazy)) {
return (0, exports.unwrapZodType)(type._def.getter(), unwrapPreprocess);
}
if ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodEffects)) {
if (type._def.effect.type === 'refinement') {
return (0, exports.unwrapZodType)(type._def.schema, unwrapPreprocess);
}
if (type._def.effect.type === 'transform') {
return (0, exports.unwrapZodType)(type._def.schema, unwrapPreprocess);
}
if (unwrapPreprocess && type._def.effect.type === 'preprocess') {
return (0, exports.unwrapZodType)(type._def.schema, unwrapPreprocess);
}
}
return type;
};
exports.unwrapZodType = unwrapZodType;
const instanceofZodTypeLikeString = (_type) => {
const type = (0, exports.unwrapZodType)(_type, false);
if ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodEffects)) {
if (type._def.effect.type === 'preprocess') {
return true;
}
}
if ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodUnion)) {
return !type._def.options.some((option) => !(0, exports.instanceofZodTypeLikeString)(option));
}
if ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodIntersection)) {
return ((0, exports.instanceofZodTypeLikeString)(type._def.left) && (0, exports.instanceofZodTypeLikeString)(type._def.right));
}
if ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodLiteral)) {
return typeof type._def.value === 'string';
}
if ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodEnum)) {
return true;
}
if ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodNativeEnum)) {
return !Object.values(type._def.values).some((value) => typeof value === 'number');
}
return (0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodString);
};
exports.instanceofZodTypeLikeString = instanceofZodTypeLikeString;
exports.zodSupportsCoerce = 'coerce' in zod_1.z;
const instanceofZodTypeCoercible = (_type) => {
const type = (0, exports.unwrapZodType)(_type, false);
return ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodNumber) ||
(0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodBoolean) ||
(0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodBigInt) ||
(0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodDate));
};
exports.instanceofZodTypeCoercible = instanceofZodTypeCoercible;
//# sourceMappingURL=zod.js.map