UNPKG

@bscotch/yy

Version:

Stringify, parse, read, and write GameMaker yy and yyp files.

52 lines 2.08 kB
import { z } from 'zod'; import { yyParentSchema } from './YyBase.js'; import { nameField } from './utility.js'; export const yyExtensionStringTypeSchema = z .literal(1) .describe('Numeric index representing a string type.'); export const yyExtensionNumberTypeSchema = z .literal(2) .describe('Numeric index representing a double (real) type.'); export const yyExtensionValueTypeSchema = z.union([ yyExtensionStringTypeSchema, yyExtensionNumberTypeSchema, ]); const yyExtensionConstantSchema = z.object({ resourceType: z.literal('GMExtensionConstant').default('GMExtensionConstant'), resourceVersion: z.string().default('1.0'), name: z.string(), hidden: z.boolean().default(false), value: z .string() .describe('The raw text value of the macro. Must be parsed as code to get the actual value.'), }); const yyExtensionFunctionSchema = z.object({ resourceType: z.literal('GMExtensionFunction').default('GMExtensionFunction'), resourceVersion: z.string().default('1.0'), name: z.string(), externalName: z.string(), documentation: z.string().default(''), argCount: z.number().default(0), args: z.array(yyExtensionValueTypeSchema).default([]), help: z .string() .describe('The function signature as a string, manually provided.'), hidden: z.boolean().default(false), kind: z.number().default(4), returnType: yyExtensionValueTypeSchema, }); const yyExtensionFileSchema = z.looseObject({ resourceType: z.literal('GMExtensionFile'), resourceVersion: z.string().default('1.0'), constants: z.array(yyExtensionConstantSchema).default([]), functions: z.array(yyExtensionFunctionSchema).default([]), }); export const yyExtensionSchema = z.looseObject({ [nameField]: z.string().optional(), resourceType: z.literal('GMExtension').default('GMExtension'), resourceVersion: z.string().default('1.2'), name: z.string(), files: z.array(yyExtensionFileSchema).default([]), parent: yyParentSchema, }); //# sourceMappingURL=YyExtension.js.map