From 1804c2d1bf89c1f0ef309d27dfda98dfe9102ef1 Mon Sep 17 00:00:00 2001 From: Code Date: Fri, 7 Feb 2025 00:03:04 +0100 Subject: [PATCH] cad:options schema --- packages/cad/dist/zod_schema.d.ts | 21 +++++++++ packages/cad/dist/zod_schema.js | 57 +++++++++++++++++++++++ packages/cad/package.json | 3 +- packages/cad/src/zod_schema.ts | 75 +++++++++++++++++++++++++++++++ 4 files changed, 155 insertions(+), 1 deletion(-) create mode 100644 packages/cad/dist/zod_schema.d.ts create mode 100644 packages/cad/dist/zod_schema.js create mode 100644 packages/cad/src/zod_schema.ts diff --git a/packages/cad/dist/zod_schema.d.ts b/packages/cad/dist/zod_schema.d.ts new file mode 100644 index 00000000..09a3da21 --- /dev/null +++ b/packages/cad/dist/zod_schema.d.ts @@ -0,0 +1,21 @@ +import { z } from 'zod'; +export declare const ZPathInfoSchema: z.ZodUnknown; +export declare const ZOptionsCacheSchema: z.ZodObject<{ + cache: z.ZodOptional; + clear: z.ZodOptional; +}, "strip", z.ZodTypeAny, { + cache?: boolean; + clear?: boolean; +}, { + cache?: boolean; + clear?: boolean; +}>; +export declare const ZNodeCallbackSchema: any; +export declare const ZOptionsBaseSchema: any; +export declare const ZSolidworkOptionsSchema: any; +export type ZOptionsCache = z.infer; +export type ZOptionsBase = z.infer; +export type ZNodeCallback = z.infer; +export type ZSolidworkOptions = z.infer; +export declare const types: () => void; +export declare const schemas: () => void; diff --git a/packages/cad/dist/zod_schema.js b/packages/cad/dist/zod_schema.js new file mode 100644 index 00000000..e05a9cba --- /dev/null +++ b/packages/cad/dist/zod_schema.js @@ -0,0 +1,57 @@ +import { z } from 'zod'; +import { generate_interfaces } from '@polymech/commons/schemas'; +export const ZPathInfoSchema = z.unknown(); +export const ZOptionsCacheSchema = z.object({ + cache: z.boolean().optional(), + clear: z.boolean().optional(), +}); +export const ZNodeCallbackSchema = z.lazy(() => z.object({ + src: z.string(), + target: z.string(), + options: ZOptionsBaseSchema, +})); +export const ZOptionsBaseSchema = z.lazy(() => ZOptionsCacheSchema.extend({ + src: z.string(), + srcInfo: ZPathInfoSchema.optional(), + dstInfo: ZPathInfoSchema.optional(), + dst: z.string().optional(), + alt: z.boolean().optional(), + debug: z.boolean().optional(), + verbose: z.boolean().optional(), + dry: z.boolean().optional(), + report: z.string().optional(), + variables: z.record(z.string()), + script: z.string().optional(), + args: z.string().optional(), + onNode: z.function().args(ZNodeCallbackSchema).returns(z.promise(z.void())), +})); +export const ZSolidworkOptionsSchema = ZOptionsBaseSchema.extend({ + 'bom-template': z.string().optional(), + 'bom-detail': z.number().optional(), + 'bom-type': z.number().optional(), + 'bom-images': z.boolean().optional(), + 'bom-config': z.string().optional(), + close: z.boolean().optional(), + configuration: z.string().optional(), + height: z.number().optional(), + hidden: z.string().optional(), + light: z.boolean().optional(), + logLevel: z.string().optional(), + pack: z.boolean().optional(), + quality: z.number().optional(), + rebuild: z.boolean().optional(), + renderer: z.string().optional(), + save: z.boolean().optional(), + sw: z.string().optional(), + swv: z.number().optional(), + view: z.string().optional(), + width: z.number().optional(), + write: z.boolean().optional(), +}); +export const types = () => { + generate_interfaces([ZSolidworkOptionsSchema], 'src/zod_types.ts'); + schemas(); +}; +export const schemas = () => { +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9kX3NjaGVtYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy96b2Rfc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDeEIsT0FBTyxFQUFFLG1CQUFtQixFQUFxQixNQUFNLDJCQUEyQixDQUFBO0FBRWxGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7QUFFM0MsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMxQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM3QixLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUM5QixDQUFDLENBQUM7QUFHSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUM3QyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ1AsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDZixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNsQixPQUFPLEVBQUUsa0JBQWtCO0NBQzVCLENBQUMsQ0FDSCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FDNUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDO0lBQ3pCLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2YsT0FBTyxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUU7SUFDbkMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUU7SUFDbkMsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDMUIsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDM0IsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDL0IsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDM0IsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsU0FBUyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQy9CLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzdCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNCLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Q0FDNUUsQ0FBQyxDQUNILENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7SUFDL0QsY0FBYyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDckMsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDbkMsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDakMsWUFBWSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDcEMsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDbkMsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsYUFBYSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDcEMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDL0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDNUIsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDOUIsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDL0IsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDL0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDNUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDekIsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDMUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDM0IsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDNUIsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDOUIsQ0FBQyxDQUFDO0FBUUgsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLEdBQUcsRUFBRTtJQUN0QixtQkFBbUIsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtJQUNsRSxPQUFPLEVBQUUsQ0FBQTtBQUNYLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUU7QUFFNUIsQ0FBQyxDQUFBIn0= \ No newline at end of file diff --git a/packages/cad/package.json b/packages/cad/package.json index 15bf5974..7f92a899 100644 --- a/packages/cad/package.json +++ b/packages/cad/package.json @@ -51,7 +51,8 @@ "tslint": "^5.10.0", "tslog": "^3.3.3", "which": "^2.0.2", - "yargs": "^17.7.2" + "yargs": "^17.7.2", + "zod": "^3.24.1" }, "devDependencies": { "@types/js-yaml": "^4.0.9", diff --git a/packages/cad/src/zod_schema.ts b/packages/cad/src/zod_schema.ts new file mode 100644 index 00000000..623f89a5 --- /dev/null +++ b/packages/cad/src/zod_schema.ts @@ -0,0 +1,75 @@ +import { z } from 'zod'; +import { generate_interfaces, write, ZodMetaMap } from '@polymech/commons/schemas' + +export const ZPathInfoSchema = z.unknown(); + +export const ZOptionsCacheSchema = z.object({ + cache: z.boolean().optional(), + clear: z.boolean().optional(), +}); + + +export const ZNodeCallbackSchema = z.lazy(() => + z.object({ + src: z.string(), + target: z.string(), + options: ZOptionsBaseSchema, + }) +); + +export const ZOptionsBaseSchema = z.lazy(() => + ZOptionsCacheSchema.extend({ + src: z.string(), + srcInfo: ZPathInfoSchema.optional(), + dstInfo: ZPathInfoSchema.optional(), + dst: z.string().optional(), + alt: z.boolean().optional(), + debug: z.boolean().optional(), + verbose: z.boolean().optional(), + dry: z.boolean().optional(), + report: z.string().optional(), + variables: z.record(z.string()), + script: z.string().optional(), + args: z.string().optional(), + onNode: z.function().args(ZNodeCallbackSchema).returns(z.promise(z.void())), + }) +); + +export const ZSolidworkOptionsSchema = ZOptionsBaseSchema.extend({ + 'bom-template': z.string().optional(), + 'bom-detail': z.number().optional(), + 'bom-type': z.number().optional(), + 'bom-images': z.boolean().optional(), + 'bom-config': z.string().optional(), + close: z.boolean().optional(), + configuration: z.string().optional(), + height: z.number().optional(), + hidden: z.string().optional(), + light: z.boolean().optional(), + logLevel: z.string().optional(), + pack: z.boolean().optional(), + quality: z.number().optional(), + rebuild: z.boolean().optional(), + renderer: z.string().optional(), + save: z.boolean().optional(), + sw: z.string().optional(), + swv: z.number().optional(), + view: z.string().optional(), + width: z.number().optional(), + write: z.boolean().optional(), +}); + +export type ZOptionsCache = z.infer; +export type ZOptionsBase = z.infer; +export type ZNodeCallback = z.infer; +export type ZSolidworkOptions = z.infer; + + +export const types = () => { + generate_interfaces([ZSolidworkOptionsSchema], 'src/zod_types.ts') + schemas() + } + + export const schemas = () => { + + } \ No newline at end of file