| import { _array, _tuple, _unknown } from "./api.js"; | |
| import { parse, parseAsync } from "./parse.js"; | |
| import * as schemas from "./schemas.js"; | |
| import { $ZodTuple } from "./schemas.js"; | |
| export class $ZodFunction { | |
| constructor(def) { | |
| this._def = def; | |
| this.def = def; | |
| } | |
| implement(func) { | |
| if (typeof func !== "function") { | |
| throw new Error("implement() must be called with a function"); | |
| } | |
| const impl = ((...args) => { | |
| const parsedArgs = this._def.input ? parse(this._def.input, args, undefined, { callee: impl }) : args; | |
| if (!Array.isArray(parsedArgs)) { | |
| throw new Error("Invalid arguments schema: not an array or tuple schema."); | |
| } | |
| const output = func(...parsedArgs); | |
| return this._def.output ? parse(this._def.output, output, undefined, { callee: impl }) : output; | |
| }); | |
| return impl; | |
| } | |
| implementAsync(func) { | |
| if (typeof func !== "function") { | |
| throw new Error("implement() must be called with a function"); | |
| } | |
| const impl = (async (...args) => { | |
| const parsedArgs = this._def.input ? await parseAsync(this._def.input, args, undefined, { callee: impl }) : args; | |
| if (!Array.isArray(parsedArgs)) { | |
| throw new Error("Invalid arguments schema: not an array or tuple schema."); | |
| } | |
| const output = await func(...parsedArgs); | |
| return this._def.output ? parseAsync(this._def.output, output, undefined, { callee: impl }) : output; | |
| }); | |
| return impl; | |
| } | |
| input(...args) { | |
| const F = this.constructor; | |
| if (Array.isArray(args[0])) { | |
| return new F({ | |
| type: "function", | |
| input: new $ZodTuple({ | |
| type: "tuple", | |
| items: args[0], | |
| rest: args[1], | |
| }), | |
| output: this._def.output, | |
| }); | |
| } | |
| return new F({ | |
| type: "function", | |
| input: args[0], | |
| output: this._def.output, | |
| }); | |
| } | |
| output(output) { | |
| const F = this.constructor; | |
| return new F({ | |
| type: "function", | |
| input: this._def.input, | |
| output, | |
| }); | |
| } | |
| } | |
| function _function(params) { | |
| return new $ZodFunction({ | |
| type: "function", | |
| input: Array.isArray(params?.input) | |
| ? _tuple(schemas.$ZodTuple, params?.input) | |
| : (params?.input ?? _array(schemas.$ZodArray, _unknown(schemas.$ZodUnknown))), | |
| output: params?.output ?? _unknown(schemas.$ZodUnknown), | |
| }); | |
| } | |
| export { _function as function }; | |
Xet Storage Details
- Size:
- 2.72 kB
- Xet hash:
- 21263ea2891e57fd5a1da1ee442e1d43efab3079aa1a293d4511069ce859a0df
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.