{"version":3,"file":"cli.cjs","sources":["../../src/codegen/argv.ts","../../src/codegen/types.ts","../../src/codegen/resolve.ts","../../src/codegen/parser.ts","../../src/codegen/languages/csharp.ts","../../src/codegen/languages/cpp.ts","../../src/codegen/languages/haxe.ts","../../src/codegen/languages/ts.ts","../../src/codegen/languages/js.ts","../../src/codegen/languages/java.ts","../../src/codegen/languages/lua.ts","../../src/codegen/languages/c.ts","../../src/codegen/languages/gdscript.ts","../../src/codegen/languages/dart.ts","../../src/codegen/languages/swift.ts","../../src/codegen/api.ts","../../src/codegen/cli.ts"],"sourcesContent":["/**\n * @author Ethan Davis\n * https://github.com/ethanent/gar\n */\nexport default (sargs: string[]): any => {\n\tlet props: any = {}\n\tlet lones: any = []\n\n\tconst convertIfApplicable = (value: any) => (isNaN(value) ? (value.toString().toLowerCase() === 'true' ? true : (value.toString().toLowerCase() === 'false' ? false : value)) : Number(value))\n\tconst removeStartHyphens = (value: string) => value.replace(/^\\-+/g, '')\n\n\tfor (let i = 0; i < sargs.length; i++) {\n\t\tconst equalsIndex = sargs[i].indexOf('=')\n\t\tconst isNextRefProp = sargs[i].charAt(0) === '-' && sargs.length - 1 >= i + 1 && sargs[i + 1].indexOf('=') === -1 && sargs[i + 1].charAt(0) !== '-'\n\t\tconst argName = equalsIndex === -1 ? removeStartHyphens(sargs[i]) : removeStartHyphens(sargs[i].slice(0, equalsIndex))\n\n\t\tif (equalsIndex !== -1) {\n\t\t\tprops[argName] = convertIfApplicable(sargs[i].slice(equalsIndex + 1))\n\t\t}\n\t\telse if (isNextRefProp) {\n\t\t\tprops[argName] = convertIfApplicable(sargs[i + 1])\n\t\t\ti++\n\t\t} else if (sargs[i].charAt(0) === '-') {\n\t\t\tif (sargs[i].charAt(1) === '-') {\n\t\t\t\tprops[argName] = true\n\t\t\t}\n\t\t\telse {\n\t\t\t\tfor (let b = 0; b < argName.length; b++) {\n\t\t\t\t\tprops[argName.charAt(b)] = true\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tlones.push(convertIfApplicable(argName))\n\t\t}\n\t}\n\n\treturn Object.assign(props, {\n\t\t'_': lones\n\t})\n}\n","import * as fs from \"fs\";\nimport * as path from \"path\";\nimport { fileURLToPath } from \"url\";\n\nif (typeof(__dirname) === \"undefined\") {\n    global.__dirname = path.dirname(fileURLToPath(import.meta.url));\n}\n\n/** Root of the @colyseus/schema package — `src/codegen/` in dev, `build/codegen/` once bundled. */\nexport const PACKAGE_ROOT = path.resolve(__dirname, \"..\", \"..\");\n\nconst VERSION = JSON.parse(fs.readFileSync(path.resolve(PACKAGE_ROOT, \"package.json\")).toString()).version;\nconst COMMENT_HEADER = `\nTHIS FILE HAS BEEN GENERATED AUTOMATICALLY\nDO NOT CHANGE IT MANUALLY UNLESS YOU KNOW WHAT YOU'RE DOING\n\nGENERATED USING @colyseus/schema ${VERSION}\n`;\n\nexport function getCommentHeader(singleLineComment: string = \"//\") {\n    return `${COMMENT_HEADER.split(\"\\n\").map(line => `${singleLineComment} ${line}`).join(\"\\n\")}`;\n}\n\nexport class Context {\n    classes: Class[] = [];\n    interfaces: Interface[] = [];\n    enums: Enum[] = [];\n\n    getStructures() {\n        // `isSchemaClass` already walks the full ancestor chain, so a class is\n        // emitted iff it (or any ancestor) descends from Schema — no need to\n        // re-walk parents here.\n        return {\n            classes: this.classes.filter(klass => this.isSchemaClass(klass)),\n            interfaces: this.interfaces,\n            enums: this.enums,\n        };\n    }\n\n    addStructure(structure: IStructure) {\n        if (structure.context === this) { return; } // skip if already added.\n        structure.context = this;\n\n        if (structure instanceof Class) {\n            this.classes.push(structure);\n        } else if (structure instanceof Interface) {\n            this.interfaces.push(structure);\n        } else if (structure instanceof Enum) {\n            this.enums.push(structure);\n        }\n    }\n\n    private isSchemaClass(klass: Class) {\n        // True if `klass` or any ancestor extends Schema (directly or via the\n        // `schema.Schema` / `Schema.Schema` aliases).\n        //\n        // TODO: ideally we should check for the actual @colyseus/schema module\n        // reference rather than arbitrary strings.\n        for (const current of [klass, ...eachAncestor(klass, this.classes)]) {\n            const isSchema = (\n                current.extends === \"Schema\" ||\n                current.extends === \"schema.Schema\" ||\n                current.extends === \"Schema.Schema\"\n            );\n            if (isSchema) {\n                // Normalize a `schema.Schema`-style base on the queried class itself.\n                if (current === klass) { klass.extends = \"Schema\"; }\n                return true;\n            }\n        }\n        return false;\n    }\n}\n\nexport interface IStructure {\n    context: Context;\n    name: string;\n    properties: Property[];\n    addProperty(property: Property): void;\n}\n\nexport class Interface implements IStructure {\n    context: Context;\n    name: string;\n    properties: Property[] = [];\n\n    addProperty(property: Property): void {\n        this.properties.push(property);\n    }\n}\n\nexport class Class implements IStructure {\n    context: Context;\n    name: string;\n    properties: Property[] = [];\n    extends: string;\n\n    addProperty(property: Property) {\n        property.index = this.properties.length;\n        this.properties.push(property);\n    }\n\n    postProcessing() {\n        // Offset each property's `index` by the field count of every ancestor,\n        // so indexes stay correct across inheritance.\n        for (const parent of eachAncestor(this, this.context.classes)) {\n            this.properties.forEach(prop => {\n                prop.index += parent.properties.length;\n            });\n        }\n    }\n}\n\nexport class Enum implements IStructure {\n    context: Context;\n    name: string;\n    properties: Property[] = [];\n\n    addProperty(property: Property) {\n        this.properties.push(property);\n    }\n}\n\n/**\n * Statically-extracted `t.quantized()` options. `wrap` is already normalized\n * from the source's `mode` string; emitters derive `range`/`span` via\n * {@link resolveQuantized} so every language ships identical precomputed values.\n */\nexport interface QuantizedProperty {\n    min: number;\n    max: number;\n    bits: 8 | 16 | 32;\n    wrap: boolean;\n}\n\n/**\n * Mirror of the runtime's `resolveQuantize()` scale math (wrap spreads 2^bits\n * steps across [min,max); clamp maps the endpoints onto 0 and 2^bits-1, one\n * fewer on a range symmetric about zero so zero lands on a step).\n */\nexport function resolveQuantized(q: QuantizedProperty) {\n    return {\n        range: q.max - q.min,\n        span: q.wrap ? 2 ** q.bits : q.min === -q.max ? 2 ** q.bits - 2 : 2 ** q.bits - 1,\n    };\n}\n\nexport class Property {\n    index: number;\n    name: string;\n    type: string;\n    childType: string;\n    quantized?: QuantizedProperty;\n    deprecated?: boolean;\n    /**\n     * Construction default (`.default(v)`, or a decorator field's initializer),\n     * only when it is a statically-known literal. Emitters may fall back to the\n     * language's zero value when it is absent or doesn't fit the field's type.\n     */\n    defaultValue?: string | number | boolean;\n}\n\nexport interface File {\n    name: string\n    content: string;\n}\n\n/**\n * Structured file representation for code generation.\n * Separates imports, local references, and body content to enable\n * clean bundling without string parsing.\n */\nexport interface GeneratedFile {\n    name: string;\n    /** External imports (e.g., \"@colyseus/schema\", \"Colyseus.Schema\") */\n    imports: string[];\n    /** References to other generated classes (used for imports in non-bundle mode) */\n    localRefs: string[];\n    /** The class/interface/enum definition body (without imports or namespace wrapper) */\n    body: string;\n}\n\n/**\n * Walk `klass`'s `extends` chain, parent-first, yielding each ancestor class\n * (not `klass` itself). The single safe ancestor traversal every inheritance\n * query is built on: it stops at the Schema root, an unresolved base, or a\n * cycle — so a malformed class graph can never spin forever. This is why the\n * `seen` cycle-guard lives here and nowhere else.\n */\nfunction* eachAncestor(klass: Class, allClasses: Class[]): Generator<Class> {\n    const seen = new Set<Class>([klass]);\n    let current = klass;\n    while (current.extends && current.extends !== \"Schema\") {\n        const parent = allClasses.find(c => c.name === current.extends);\n        if (!parent || seen.has(parent)) { return; }\n        seen.add(parent);\n        yield parent;\n        current = parent;\n    }\n}\n\nexport function getInheritanceTree(klass: Class, allClasses: Class[], includeSelf: boolean = true) {\n    return [\n        ...(includeSelf ? [klass] : []),\n        ...eachAncestor(klass, allClasses),\n    ];\n}\n","import * as ts from \"typescript\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\n\nimport { PACKAGE_ROOT } from \"./types.js\";\n\nexport interface ResolveOptions {\n    /** Explicit `--tsconfig`. When set, nearest-config discovery is skipped. */\n    tsconfig?: string;\n}\n\ninterface ResolvedConfig {\n    configFilePath: string;\n    options: ts.CompilerOptions;\n    cache?: ts.ModuleResolutionCache;\n}\n\ninterface MatchedPattern {\n    substitutions: string[];\n    /** What `*` captured, so substitutions can splice it back in. */\n    matchedStar: string;\n}\n\nconst CONFIG_NAMES = [\"tsconfig.json\", \"jsconfig.json\"];\n\n/** `No inputs were found in config file` — expected, since readDirectory is stubbed. */\nconst NO_INPUTS_FOUND = 18003;\n\nlet configByDir: Map<string, ResolvedConfig | null>;\nlet override: ResolvedConfig | null | undefined;\nlet resolveOptions: ResolveOptions;\nlet warned: Set<string>;\n\nreset();\n\nfunction reset() {\n    configByDir = new Map();\n    override = undefined;\n    resolveOptions = {};\n    warned = new Set();\n}\n\n/**\n * Drop every cached tsconfig lookup. Called once per top-level `parseFiles()`\n * run so a long-lived process can generate for two different projects.\n */\nexport function resetResolver(options: ResolveOptions = {}) {\n    reset();\n    resolveOptions = options;\n\n    if (options.tsconfig && !fs.existsSync(options.tsconfig)) {\n        throw new Error(`--tsconfig: file not found: ${options.tsconfig}`);\n    }\n}\n\nfunction warnOnce(key: string, message: string) {\n    if (warned.has(key)) { return; }\n    warned.add(key);\n    console.warn(message);\n}\n\n/**\n * `readDirectory` is stubbed on purpose: only `compilerOptions` is wanted here,\n * and letting TypeScript glob the config's `include` set would stat the user's\n * whole project on every config discovered.\n */\nconst parseConfigHost: ts.ParseConfigHost = {\n    useCaseSensitiveFileNames: ts.sys?.useCaseSensitiveFileNames ?? true,\n    readDirectory: () => [],\n    fileExists: (fileName) => fs.existsSync(fileName),\n    readFile: (fileName) => {\n        try {\n            return fs.readFileSync(fileName, \"utf8\");\n        } catch (e) {\n            if (!(e as any)?.code) { throw e; }\n            return undefined;\n        }\n    },\n};\n\nfunction loadConfig(configFilePath: string): ResolvedConfig | null {\n    const { config, error } = ts.readConfigFile(configFilePath, parseConfigHost.readFile);\n    if (error) {\n        warnOnce(configFilePath,\n            `schema-codegen: could not read \"${configFilePath}\" ` +\n            `(${ts.flattenDiagnosticMessageText(error.messageText, \" \")}) — ` +\n            `its import path aliases will be ignored.`);\n        return null;\n    }\n\n    // parseJsonConfigFileContent (not convertCompilerOptionsFromJson) is what\n    // applies `extends` chains, `${configDir}` templates, and `pathsBasePath` —\n    // the directory of the config that DECLARED `paths`, which in a monorepo is\n    // not the directory of the config being loaded.\n    const parsed = ts.parseJsonConfigFileContent(\n        config,\n        parseConfigHost,\n        path.dirname(configFilePath),\n        undefined,\n        configFilePath,\n    );\n\n    const errors = parsed.errors.filter((d) =>\n        d.code !== NO_INPUTS_FOUND && d.category === ts.DiagnosticCategory.Error);\n\n    if (errors.length > 0) {\n        warnOnce(configFilePath,\n            `schema-codegen: \"${configFilePath}\" has errors — ` +\n            errors.map((d) => ts.flattenDiagnosticMessageText(d.messageText, \" \")).join(\"; \"));\n    }\n\n    const options = parsed.options;\n    if (!options.paths && !options.baseUrl) { return null; }\n\n    const getCanonicalFileName = parseConfigHost.useCaseSensitiveFileNames\n        ? (f: string) => f\n        : (f: string) => f.toLowerCase();\n\n    return {\n        configFilePath,\n        options,\n        cache: ts.createModuleResolutionCache(\n            path.dirname(configFilePath), getCanonicalFileName, options),\n    };\n}\n\nfunction getOverrideConfig(): ResolvedConfig | null {\n    if (override === undefined) {\n        override = loadConfig(path.resolve(resolveOptions.tsconfig));\n        if (override === null) {\n            warnOnce(`no-aliases:${resolveOptions.tsconfig}`,\n                `schema-codegen: \"${resolveOptions.tsconfig}\" declares no \"paths\" or ` +\n                `\"baseUrl\" — there are no import aliases to resolve.`);\n        }\n    }\n    return override;\n}\n\n/**\n * Nearest `tsconfig.json`/`jsconfig.json` above `containingFile`. Both names are\n * checked at every level: a distant tsconfig.json must not win over an adjacent\n * jsconfig.json. Stops at the first config found even when it declares no\n * aliases — matching `tsc`, a parent project's `paths` do not leak into a child\n * that does not `extends` it.\n */\nfunction getConfigFor(containingFile: string): ResolvedConfig | null {\n    if (resolveOptions.tsconfig) { return getOverrideConfig(); }\n\n    const dir = path.dirname(containingFile);\n    if (configByDir.has(dir)) { return configByDir.get(dir); }\n\n    let config: ResolvedConfig | null = null;\n    const visited: string[] = [];\n\n    for (let current = dir, parent: string; ; current = parent) {\n        visited.push(current);\n\n        const found = CONFIG_NAMES\n            .map((name) => path.join(current, name))\n            .find((candidate) => fs.existsSync(candidate));\n\n        if (found) {\n            config = loadConfig(found);\n            break;\n        }\n\n        parent = path.dirname(current);\n        if (parent === current) { break; }\n    }\n\n    // memoize the whole walk, negatives included\n    visited.forEach((visitedDir) => configByDir.set(visitedDir, config));\n\n    return config;\n}\n\n/** Exact patterns win outright; among wildcards the longest prefix wins. */\nfunction findBestPathPattern(specifier: string, paths: ts.MapLike<string[]>): MatchedPattern | undefined {\n    let best: MatchedPattern | undefined;\n    let bestPrefixLength = -1;\n\n    for (const pattern in paths) {\n        const star = pattern.indexOf(\"*\");\n\n        if (star === -1) {\n            if (pattern === specifier) {\n                return { substitutions: paths[pattern], matchedStar: \"\" };\n            }\n            continue;\n        }\n\n        const prefix = pattern.slice(0, star);\n        const suffix = pattern.slice(star + 1);\n\n        if (\n            specifier.length >= prefix.length + suffix.length &&\n            specifier.startsWith(prefix) &&\n            specifier.endsWith(suffix) &&\n            prefix.length > bestPrefixLength\n        ) {\n            bestPrefixLength = prefix.length;\n            best = {\n                substitutions: paths[pattern],\n                matchedStar: specifier.slice(prefix.length, specifier.length - suffix.length),\n            };\n        }\n    }\n\n    return best;\n}\n\nfunction resolveViaPathsSubstitution(matched: MatchedPattern, options: ts.CompilerOptions): string | undefined {\n    // mirrors ts.getPathsBasePath(): `paths` may be declared without a baseUrl,\n    // in which case it anchors on the config that declared it\n    const base = options.baseUrl ?? (options as any).pathsBasePath ?? process.cwd();\n\n    for (const substitution of matched.substitutions) {\n        const resolved = resolveSourceFile(\n            path.resolve(base, substitution.replace(\"*\", matched.matchedStar)));\n        if (resolved) { return resolved; }\n    }\n\n    return undefined;\n}\n\nconst isDeclaration = (fileName: string) => /\\.d\\.[cm]?ts$/.test(fileName);\nconst isInNodeModules = (fileName: string) => fileName.replace(/\\\\/g, \"/\").includes(\"/node_modules/\");\n\n/**\n * Resolve a non-relative import (`@schemas/Player`, `shared/Player`) to a\n * first-party source file through the tsconfig governing `containingFile`.\n * Returns undefined for npm packages, declaration files, and specifiers no\n * alias covers.\n */\nexport function resolveNonRelativeImport(specifier: string, containingFile: string): string | undefined {\n    const config = getConfigFor(containingFile);\n    if (!config) { return undefined; }\n\n    const { options } = config;\n    const matched = options.paths && findBestPathPattern(specifier, options.paths);\n\n    // no alias hit and no baseUrl: TypeScript could only find this under\n    // node_modules, which costs ~130 failed lookups to prove\n    if (!matched && !options.baseUrl) { return undefined; }\n\n    const resolved = ts.resolveModuleName(\n        specifier, containingFile, options, ts.sys, config.cache).resolvedModule;\n\n    if (resolved) {\n        // a deliberate package/typings hit — not ours to parse, and the\n        // substitution fallback must not second-guess it\n        return (\n            resolved.isExternalLibraryImport ||\n            isDeclaration(resolved.resolvedFileName) ||\n            isInNodeModules(resolved.resolvedFileName)\n        ) ? undefined\n          : path.resolve(resolved.resolvedFileName);\n    }\n\n    // `.mjs` targets are unresolvable by ts.resolveModuleName in every\n    // moduleResolution mode, but schema-codegen parses them\n    const viaSubstitution = matched && resolveViaPathsSubstitution(matched, options);\n    if (viaSubstitution) { return viaSubstitution; }\n\n    if (matched) {\n        warnOnce(`unresolved:${specifier}`,\n            `schema-codegen: '${specifier}' matches a \"paths\" alias in ` +\n            `${config.configFilePath}, but no source file was found for it — ` +\n            `schemas it exports will be missing from the generated output.`);\n    }\n\n    return undefined;\n}\n\n/** The extension alternatives parseFiles() probes, in order. Pure — no fs. */\nexport function sourceFileCandidates(fileName: string): string[] {\n    if (\n        !fileName.endsWith(\".ts\") &&\n        !fileName.endsWith(\".js\") &&\n        !fileName.endsWith(\".mjs\")\n    ) {\n        return [`${fileName}.ts`, `${fileName}/index.ts`];\n\n    } else if (fileName.endsWith(\".js\")) {\n        // ESM imports often spell a .ts source with a .js extension\n        return [fileName, fileName.replace(/\\.js$/, \".ts\")];\n\n    } else {\n        return [fileName];\n    }\n}\n\n/** Same probing as parseFiles(), answering \"which candidate exists?\". */\nexport function resolveSourceFile(fileName: string): string | undefined {\n    const candidates = sourceFileCandidates(fileName);\n\n    for (let i = 0; i < candidates.length; i++) {\n        const candidate = path.resolve(candidates[i]);\n        try {\n            // statSync, not existsSync: a directory must fall through to the\n            // next candidate, the way readFileSync's EISDIR does\n            if (fs.statSync(candidate).isFile()) { return candidate; }\n        } catch (e) {\n            if (!(e as any)?.code) { throw e; }\n        }\n    }\n\n    return undefined;\n}\n\n/**\n * The serializer's own source declares wire-internal schemas (`Reflection`,\n * `ReflectionField`, …) that must never reach generated client code.\n */\nexport function isOwnPackageSource(fileName: string): boolean {\n    const relative = path.relative(PACKAGE_ROOT, fileName);\n    return (\n        !relative.startsWith(\"..\") &&\n        !path.isAbsolute(relative) &&\n        (relative.startsWith(`src${path.sep}`) || relative.startsWith(`build${path.sep}`))\n    );\n}\n","import * as ts from \"typescript\";\nimport * as path from \"path\";\nimport { readFileSync } from \"fs\";\nimport { IStructure, Class, Interface, Property, Context, Enum, QuantizedProperty } from \"./types.js\";\nimport { ResolveOptions, isOwnPackageSource, resetResolver, resolveNonRelativeImport, resolveSourceFile, sourceFileCandidates } from \"./resolve.js\";\n\nlet currentStructure: IStructure;\nlet currentProperty: Property;\n\nlet globalContext: Context;\n\nlet defineTypesWarned = false;\n\nconst BUILDER_COLLECTION_KINDS = new Set([\"array\", \"map\", \"set\", \"collection\"]);\n\n/**\n * For a t.*().chain().calls() expression, walk down to the base `t.X(...)`\n * call and return its method name, first argument, the names of the\n * chained modifiers (`.view()`, `.deprecated()`, …) and the argument of the\n * effective `.default(...)`. Returns null if the node does not look like a\n * builder chain.\n */\nfunction extractBuilderBase(node: ts.CallExpression): { methodName: string, firstArg?: ts.Expression, modifiers: Set<string>, defaultArg?: ts.Expression } | null {\n    const modifiers = new Set<string>();\n    let defaultArg: ts.Expression | undefined;\n    let current: ts.CallExpression = node;\n    while (true) {\n        const expr = current.expression;\n        if (!ts.isPropertyAccessExpression(expr)) {\n            return null;\n        }\n        if (ts.isCallExpression(expr.expression)) {\n            // walking outermost-first: the first `.default()` seen is the last applied\n            if (expr.name.text === \"default\" && !modifiers.has(\"default\")) {\n                defaultArg = current.arguments[0];\n            }\n            modifiers.add(expr.name.text);\n            current = expr.expression;\n            continue;\n        }\n        return {\n            methodName: expr.name.text,\n            firstArg: current.arguments[0],\n            modifiers,\n            defaultArg,\n        };\n    }\n}\n\n/**\n * Collection kind of a message field's type annotation, and the type it holds:\n * - \"array\" for `T[]`, `readonly T[]`, `Array<T>` or `ReadonlyArray<T>`\n * - \"map\" for `Record<K, V>`, `Map<K, V>`, `ReadonlyMap<K, V>` or `{ [key: K]: V }`\n *\n * Returns undefined for any other type.\n */\nfunction getCollectionType(node: ts.TypeNode): { type: \"array\" | \"map\", child: ts.TypeNode } | undefined {\n    if (ts.isTypeOperatorNode(node) && node.operator === ts.SyntaxKind.ReadonlyKeyword) {\n        node = node.type;\n    }\n    if (ts.isArrayTypeNode(node)) {\n        return { type: \"array\", child: node.elementType };\n    }\n    if (ts.isTypeReferenceNode(node)) {\n        const name = node.typeName.getText();\n        const args = node.typeArguments;\n        if (args?.length === 1 && (name === \"Array\" || name === \"ReadonlyArray\")) {\n            return { type: \"array\", child: args[0] };\n        }\n        if (args?.length === 2 && (name === \"Record\" || name === \"Map\" || name === \"ReadonlyMap\")) {\n            return { type: \"map\", child: args[1] };\n        }\n    }\n    if (ts.isTypeLiteralNode(node) && node.members.length === 1 && ts.isIndexSignatureDeclaration(node.members[0])) {\n        return { type: \"map\", child: node.members[0].type };\n    }\n    return undefined;\n}\n\n/**\n * Statically evaluate a default value: a string/boolean literal or a constant\n * numeric expression, `const`s included (local or imported). Returns\n * undefined for anything else (a factory function, an object).\n */\nfunction evalDefaultLiteral(node: ts.Expression | undefined): string | number | boolean | undefined {\n    if (!node) { return undefined; }\n    if (ts.isStringLiteral(node) || ts.isNoSubstitutionTemplateLiteral(node)) { return node.text; }\n    if (node.kind === ts.SyntaxKind.TrueKeyword) { return true; }\n    if (node.kind === ts.SyntaxKind.FalseKeyword) { return false; }\n    return evalNumericExpression(node, resolveConstIdentifier);\n}\n\n/**\n * Statically evaluate a numeric option expression. Codegen has no runtime, so\n * only constant arithmetic is supported: literals, unary +/-, `Math.PI`-style\n * constants and add/sub/mul/div combinations of those (e.g. `Math.PI * 2`).\n * A bare identifier is evaluated through `resolveIdentifier` when given.\n * Returns undefined for anything it cannot resolve (an unresolved reference, a call).\n */\nfunction evalNumericExpression(node: ts.Expression, resolveIdentifier?: (id: ts.Identifier) => number | undefined): number | undefined {\n    if (ts.isNumericLiteral(node)) {\n        return Number(node.text);\n    }\n    if (ts.isIdentifier(node)) {\n        return resolveIdentifier?.(node);\n    }\n    if (ts.isParenthesizedExpression(node)) {\n        return evalNumericExpression(node.expression, resolveIdentifier);\n    }\n    if (ts.isPrefixUnaryExpression(node)) {\n        const operand = evalNumericExpression(node.operand as ts.Expression, resolveIdentifier);\n        if (operand === undefined) { return undefined; }\n        if (node.operator === ts.SyntaxKind.MinusToken) { return -operand; }\n        if (node.operator === ts.SyntaxKind.PlusToken) { return operand; }\n        return undefined;\n    }\n    if (ts.isPropertyAccessExpression(node) && node.expression.getText() === \"Math\") {\n        const constant = (Math as any)[node.name.text];\n        return (typeof constant === \"number\") ? constant : undefined;\n    }\n    if (ts.isBinaryExpression(node)) {\n        const left = evalNumericExpression(node.left, resolveIdentifier);\n        const right = evalNumericExpression(node.right, resolveIdentifier);\n        if (left === undefined || right === undefined) { return undefined; }\n        switch (node.operatorToken.kind) {\n            case ts.SyntaxKind.PlusToken: return left + right;\n            case ts.SyntaxKind.MinusToken: return left - right;\n            case ts.SyntaxKind.AsteriskToken: return left * right;\n            case ts.SyntaxKind.SlashToken: return left / right;\n            default: return undefined;\n        }\n    }\n    return undefined;\n}\n\n/** Resolve an import/export specifier to a first-party source file. */\nfunction resolveModuleFile(moduleName: string, currentFile: string): string | undefined {\n    return (moduleName.startsWith(\".\"))\n        ? resolveSourceFile(path.resolve(path.dirname(currentFile), moduleName))\n        // may be a tsconfig `paths`/`baseUrl` alias onto first-party source;\n        // npm packages are filtered out by the resolver\n        : resolveNonRelativeImport(moduleName, currentFile);\n}\n\n/**\n * The initializer of the top-level `const` named `name` in `sourceFile` — or of\n * the one it imports (aliased or not) or re-exports under that name. Only\n * `const` resolves: a `let` may be reassigned before `schema()` runs.\n */\nfunction findConstInitializer(name: string, sourceFile: ts.SourceFile, visited = new Set<string>()): ts.Expression | undefined {\n    const key = `${sourceFile.fileName}#${name}`;\n    if (visited.has(key)) { return undefined; } // `export *` cycle\n    visited.add(key);\n\n    const follow = (specifier: ts.Expression, importedName: string) => {\n        const file = resolveModuleFile((specifier as ts.StringLiteral).text, sourceFile.fileName);\n        return file && findConstInitializer(\n            importedName,\n            ts.createSourceFile(file, readFileSync(file).toString(), ts.ScriptTarget.Latest, true),\n            visited,\n        );\n    };\n\n    for (const statement of sourceFile.statements) {\n        if (ts.isVariableStatement(statement)) {\n            if (!(statement.declarationList.flags & ts.NodeFlags.Const)) { continue; }\n            const decl = statement.declarationList.declarations.find((d) => ts.isIdentifier(d.name) && d.name.text === name);\n            if (decl) { return decl.initializer; }\n\n        } else if (ts.isImportDeclaration(statement)) {\n            const bindings = statement.importClause?.namedBindings;\n            const spec = (bindings && ts.isNamedImports(bindings))\n                ? bindings.elements.find((el) => el.name.text === name)\n                : undefined;\n            if (spec) { return follow(statement.moduleSpecifier, (spec.propertyName ?? spec.name).text); }\n\n        } else if (ts.isExportDeclaration(statement) && statement.moduleSpecifier) {\n            // barrels: `export * from \"./x\"`, `export { A as B } from \"./x\"`\n            const clause = statement.exportClause;\n            const spec = (clause && ts.isNamedExports(clause))\n                ? clause.elements.find((el) => el.name.text === name)\n                : undefined;\n            if (!clause || spec) {\n                const found = follow(statement.moduleSpecifier, spec ? (spec.propertyName ?? spec.name).text : name);\n                if (found) { return found; }\n            }\n        }\n    }\n    return undefined;\n}\n\n/**\n * Evaluate a `const` reference through its initializer, across imports. `chain`\n * holds the consts mid-evaluation, so a cyclic definition fails instead of\n * recursing forever.\n */\nfunction resolveConstIdentifier(id: ts.Identifier, chain = new Set<string>()): number | undefined {\n    const initializer = findConstInitializer(id.text, id.getSourceFile());\n    if (!initializer) { return undefined; }\n\n    // file + offset: an imported module is re-parsed per lookup, so nodes differ\n    const key = `${initializer.getSourceFile().fileName}:${initializer.pos}`;\n    if (chain.has(key)) { return undefined; }\n\n    chain.add(key);\n    const value = evalNumericExpression(initializer, (inner) => resolveConstIdentifier(inner, chain));\n    chain.delete(key);\n    return value;\n}\n\n/**\n * Extract `{ min, max, bits?, mode? }` from a `t.quantized({...})` /\n * `@type({ quantized: {...} })` object literal, or the `{ bits? }` of a\n * `t.angle()`. Throws on anything codegen cannot statically resolve — silently\n * dropping an option would generate a client that decodes every value of that\n * field wrong.\n */\nfunction parseQuantizedOptions(node: ts.Expression | undefined, propertyName: string, builder: \"quantized\" | \"angle\" = \"quantized\"): QuantizedProperty {\n    const fail = (reason: string): never => {\n        throw new Error(\n            `schema-codegen: cannot statically resolve t.${builder}() options of field '${propertyName}' — ${reason}. ` +\n            `Use literal numbers, constant Math expressions (e.g. \\`Math.PI * 2\\`) or \\`const\\`s holding them.`\n        );\n    };\n\n    const angle = builder === \"angle\";\n    // `t.angle()` may omit its options entirely\n    const properties: readonly ts.ObjectLiteralElementLike[] | undefined = (!node && angle)\n        ? []\n        : (node && ts.isObjectLiteralExpression(node)) ? node.properties : undefined;\n    if (!properties) {\n        return fail(`expected an inline \\`{ ${angle ? \"bits\" : \"min, max, ...\"} }\\` object literal`);\n    }\n\n    // mirrors builder.ts: t.angle({ bits }) ≡ t.quantized({ min: 0, max: Math.PI * 2, mode: \"wrap\", bits })\n    const result: Partial<QuantizedProperty> & { mode?: string } = angle ? { min: 0, max: Math.PI * 2, mode: \"wrap\" } : {};\n    for (const prop of properties) {\n        if (!ts.isPropertyAssignment(prop) || !prop.name) { continue; }\n        const key = (prop.name as ts.Identifier).text;\n        if (angle && key !== \"bits\") { continue; } // the runtime reads nothing else\n\n        if (key === \"mode\") {\n            if (!ts.isStringLiteral(prop.initializer)) { return fail(\"`mode` must be a string literal\"); }\n            result.mode = prop.initializer.text;\n        } else if (key === \"min\" || key === \"max\" || key === \"bits\") {\n            const value = evalNumericExpression(prop.initializer, resolveConstIdentifier);\n            if (value === undefined) { return fail(`\\`${key}\\` is not a constant expression`); }\n            result[key] = value as any;\n        }\n    }\n\n    if (typeof result.min !== \"number\" || typeof result.max !== \"number\") {\n        return fail(\"`min` and `max` are required\");\n    }\n\n    const bits = result.bits ?? 16;\n    if (bits !== 8 && bits !== 16 && bits !== 32) {\n        return fail(\"`bits` must be 8, 16 or 32\");\n    }\n\n    return { min: result.min, max: result.max, bits, wrap: result.mode === \"wrap\" };\n}\n\n/**\n * Fill `property` from a field's type expression. Returns false for a\n * `.noSync()` field: the runtime gives it no field index, so emitting it would\n * shift every later index on the client.\n */\nfunction defineProperty(property: Property, initializer: any): boolean {\n    // Builder-style: t.number(), t.array(Item), t.map(Item).view(), etc.\n    if (ts.isCallExpression(initializer)) {\n        const base = extractBuilderBase(initializer);\n        if (base) {\n            if (base.modifiers.has(\"noSync\")) {\n                return false;\n            }\n            property.defaultValue = evalDefaultLiteral(base.defaultArg);\n\n            // same as `@deprecated()`: `.deprecated(false)` still marks the field\n            if (base.modifiers.has(\"deprecated\")) {\n                property.deprecated = true;\n            }\n            if (BUILDER_COLLECTION_KINDS.has(base.methodName)) {\n                property.type = base.methodName;\n                if (base.firstArg) {\n                    // see through `(x)`, `x as any`, `x satisfies T`\n                    let childArg: ts.Expression = base.firstArg;\n                    while (ts.isParenthesizedExpression(childArg) || ts.isAsExpression(childArg) || ts.isSatisfiesExpression(childArg)) {\n                        childArg = childArg.expression;\n                    }\n                    if (ts.isCallExpression(childArg)) {\n                        // mirrors the runtime guard in builder.ts resolveChild()\n                        const inner = extractBuilderBase(childArg);\n                        const hint = (inner && !BUILDER_COLLECTION_KINDS.has(inner.methodName) && inner.methodName !== \"ref\" && inner.methodName !== \"quantized\" && inner.methodName !== \"angle\")\n                            ? `use the type name instead: t.${base.methodName}(\"${inner.methodName}\")`\n                            : `collections accept a Schema class or a primitive type name (\"string\", \"number\", …)`;\n                        throw new Error(`schema-codegen: field '${property.name}': a t.* builder is not a valid element type — ${hint}.`);\n                    }\n                    property.childType = (childArg as any).text ?? childArg.getText();\n                }\n            } else if (base.methodName === \"ref\") {\n                property.type = \"ref\";\n                if (base.firstArg) {\n                    property.childType = (base.firstArg as any).text ?? base.firstArg.getText();\n                }\n            } else if (base.methodName === \"quantized\" || base.methodName === \"angle\") {\n                property.type = \"quantized\";\n                property.quantized = parseQuantizedOptions(base.firstArg, property.name, base.methodName);\n            } else {\n                property.type = base.methodName;\n            }\n            return true;\n        }\n    }\n\n    if (ts.isIdentifier(initializer)) {\n        property.type = \"ref\";\n        property.childType = initializer.text;\n\n    } else if (initializer.kind == ts.SyntaxKind.ObjectLiteralExpression) {\n        if (initializer.properties[0].name.text === \"quantized\") {\n            // decorator-style: @type({ quantized: { min, max, ... } })\n            property.type = \"quantized\";\n            property.quantized = parseQuantizedOptions(initializer.properties[0].initializer, property.name);\n        } else {\n            property.type = initializer.properties[0].name.text;\n            property.childType = initializer.properties[0].initializer.text;\n        }\n\n    } else if (initializer.kind == ts.SyntaxKind.ArrayLiteralExpression) {\n        property.type = \"array\";\n        property.childType = initializer.elements[0].text;\n\n    } else {\n        property.type = initializer.text;\n    }\n    return true;\n}\n\nfunction followModuleSpecifier(\n    specifier: ts.Expression | undefined,\n    currentFile: string,\n    decoratorName: string,\n) {\n    const moduleName: string | undefined = (specifier as ts.StringLiteral)?.text;\n    if (!moduleName) { return; } // `export { x }` — no module to follow\n\n    const resolved = resolveModuleFile(moduleName, currentFile);\n    if (resolved && !isOwnPackageSource(resolved)) {\n        parseFiles([resolved], decoratorName, globalContext);\n    }\n}\n\nfunction inspectNode(node: ts.Node, context: Context, decoratorName: string) {\n    switch (node.kind) {\n        case ts.SyntaxKind.ImportDeclaration:\n        case ts.SyntaxKind.ExportDeclaration:\n            // ExportDeclaration too: path aliases usually point at a barrel\n            // (`@schemas` -> `schemas/index.ts` -> `export * from \"./Player\"`).\n            followModuleSpecifier(\n                (node as ts.ImportDeclaration | ts.ExportDeclaration).moduleSpecifier,\n                node.getSourceFile().fileName,\n                decoratorName,\n            );\n            break;\n\n        case ts.SyntaxKind.ClassDeclaration:\n            currentStructure = new Class();\n\n            const heritageClauses = (node as ts.ClassLikeDeclarationBase).heritageClauses;\n            if (heritageClauses && heritageClauses.length > 0) {\n                (currentStructure as Class).extends = heritageClauses[0].types[0].expression.getText();\n            }\n\n            context.addStructure(currentStructure);\n            break;\n\n        case ts.SyntaxKind.InterfaceDeclaration:\n            //\n            // Only generate Interfaces if it has \"Message\" on its name.\n            // Example: MyMessage\n            //\n            const interfaceName = (node as ts.TypeParameterDeclaration).name.escapedText.toString();\n            if (interfaceName.indexOf(\"Message\") !== -1) {\n                currentStructure = new Interface();\n                currentStructure.name = interfaceName;\n\n                context.addStructure(currentStructure);\n            }\n            break;\n\n        case ts.SyntaxKind.EnumDeclaration:\n            const enumName = (\n                node as ts.EnumDeclaration\n            ).name.escapedText.toString();\n            currentStructure = new Enum();\n            currentStructure.name = enumName;\n            context.addStructure(currentStructure);\n            break;\n\n        case ts.SyntaxKind.ExtendsKeyword:\n            // console.log(node.getText());\n            break;\n\n        case ts.SyntaxKind.PropertySignature:\n            if (currentStructure instanceof Interface) {\n                const parent = node.parent;\n\n                // Only process direct children of InterfaceDeclaration, skip TypeLiterals\n                if (!ts.isInterfaceDeclaration(parent)) {\n                    break;\n                }\n\n                // Skip if property if for a another interface than the one we're interested in.\n                if (currentStructure.name !== parent.name.escapedText.toString()) {\n                    break;\n                }\n\n                // define a property of an interface\n                const signature = node as ts.PropertySignature;\n                const collection = getCollectionType(signature.type);\n\n                const property = new Property();\n                property.name = (signature.name as ts.Identifier).escapedText.toString();\n                property.type = collection?.type ?? signature.type.getText();\n                property.childType = collection?.child.getText();\n                currentStructure.addProperty(property);\n            }\n            break;\n\n        case ts.SyntaxKind.Identifier:\n            if (\n                node.getText() === \"deprecated\" &&\n                node.parent.kind !== ts.SyntaxKind.ImportSpecifier\n            ) {\n                currentProperty = new Property();\n                currentProperty.deprecated = true;\n                break;\n            }\n\n            if (node.getText() === decoratorName) {\n                const prop: any = node.parent?.parent?.parent;\n                const propDecorator = getDecorators(prop);\n                const hasExpression = prop?.expression?.arguments;\n                const hasDecorator = (propDecorator?.length > 0);\n\n                /**\n                 * neither a `@type()` decorator or `type()` call. skip.\n                 */\n                if (!hasDecorator && !hasExpression) {\n                    break;\n                }\n\n                // using as decorator\n                if (propDecorator) {\n                    /**\n                     * Calling `@type()` as decorator\n                     */\n                    const typeDecorator: any = propDecorator.find((decorator => {\n                        return (decorator.expression as any).expression.escapedText === decoratorName;\n                    })).expression;\n\n                    const property = currentProperty || new Property();\n                    property.name = prop.name.escapedText;\n\n                    const typeArgument = typeDecorator.arguments[0];\n                    if (defineProperty(property, typeArgument)) {\n                        // `@type(\"string\") name = \"x\"` — the decorator form of `.default()`\n                        if (property.defaultValue === undefined) {\n                            property.defaultValue = evalDefaultLiteral(prop.initializer);\n                        }\n                        currentStructure.addProperty(property);\n                    }\n\n                } else if (\n                    prop.expression.arguments?.[1] &&\n                    prop.expression.expression.arguments?.[0]\n                ) {\n                    /**\n                     * Calling `type()` as a regular method\n                     */\n                    const property = currentProperty || new Property();\n                    property.name = prop.expression.arguments[1].text;\n\n                    const typeArgument = prop.expression.expression.arguments[0];\n                    if (defineProperty(property, typeArgument)) {\n                        currentStructure.addProperty(property);\n                    }\n                }\n\n            } else if (\n                node.getText() === \"setFields\" &&\n                (\n                    node.parent.kind === ts.SyntaxKind.CallExpression ||\n                    node.parent.kind === ts.SyntaxKind.PropertyAccessExpression\n                )\n            ) {\n                /**\n                 * Metadata.setFields(klassName, { ... })\n                 */\n                const callExpression = (node.parent.kind === ts.SyntaxKind.PropertyAccessExpression)\n                    ? node.parent.parent as ts.CallExpression\n                    : node.parent as ts.CallExpression;\n\n                /**\n                 * Skip if @codegen-ignore comment is found before the call expression\n                 * TODO: currently, if @codegen-ignore is on the file, it will skip all the setFields calls.\n                 */\n                const sourceFile = node.getSourceFile();\n                const fullText = sourceFile.getFullText();\n                const nodeStart = callExpression.getFullStart();\n                const textBeforeNode = fullText.substring(0, nodeStart);\n                if (textBeforeNode.includes('@codegen-ignore')) {\n                    break;\n                }\n\n                if (callExpression.kind !== ts.SyntaxKind.CallExpression) {\n                    break;\n                }\n\n                const classNameNode = callExpression.arguments[0];\n                const className = ts.isClassExpression(classNameNode)\n                    ? classNameNode.name?.escapedText.toString()\n                    : classNameNode.getText();\n\n                // skip if no className is provided\n                if (!className) { break; }\n\n                if (currentStructure?.name !== className) {\n                    currentStructure = new Class();\n                }\n                context.addStructure(currentStructure);\n                (currentStructure as Class).extends = \"Schema\"; // force extends to Schema\n                currentStructure.name = className;\n\n                const types = callExpression.arguments[1] as any;\n                for (let i = 0; i < types.properties.length; i++) {\n                    const prop = types.properties[i];\n\n                    const property = currentProperty || new Property();\n                    property.name = prop.name.escapedText;\n\n                    if (defineProperty(property, prop.initializer)) {\n                        currentStructure.addProperty(property);\n                    }\n                }\n\n            } else if (\n                node.getText() === \"defineTypes\" &&\n                (\n                    node.parent.kind === ts.SyntaxKind.CallExpression ||\n                    node.parent.kind === ts.SyntaxKind.PropertyAccessExpression\n                )\n            ) {\n                /**\n                 * JavaScript source file (`.js`)\n                 * Using `defineTypes()` (deprecated)\n                 */\n                const callExpression = (node.parent.kind === ts.SyntaxKind.PropertyAccessExpression)\n                    ? node.parent.parent as ts.CallExpression\n                    : node.parent as ts.CallExpression;\n\n                if (callExpression.kind !== ts.SyntaxKind.CallExpression) {\n                    break;\n                }\n\n                if (!defineTypesWarned) {\n                    defineTypesWarned = true;\n                    console.warn(\"schema-codegen: defineTypes() is deprecated and will be removed in a future release. Use schema() with t.* field builders instead → https://docs.colyseus.io/state/schema\");\n                }\n\n                const className = callExpression.arguments[0].getText()\n                currentStructure.name = className;\n\n                const types = callExpression.arguments[1] as any;\n                for (let i = 0; i < types.properties.length; i++) {\n                    const prop = types.properties[i];\n\n                    const property = currentProperty || new Property();\n                    property.name = prop.name.escapedText;\n\n                    if (defineProperty(property, prop.initializer)) {\n                        currentStructure.addProperty(property);\n                    }\n                }\n\n            }\n\n            if (node.parent.kind === ts.SyntaxKind.ClassDeclaration) {\n                currentStructure.name = node.getText();\n            }\n\n            currentProperty = undefined;\n\n            break;\n\n        case ts.SyntaxKind.CallExpression:\n            /**\n             * Defining schema via:\n             * - schema({ ... })\n             * - schema({ ... }, 'Name')\n             * - schema.schema({ ... }, 'Name')\n             * - ParentClass.extend({ ... }, 'Name')\n             */\n            {\n                const callExpression = node as ts.CallExpression;\n                const callee = callExpression.expression?.getText?.();\n                if (!callee) break;\n\n                const isSchemaCall = callee === \"schema\" || callee === \"schema.schema\";\n                const isExtendCall = callee.endsWith(\".extend\");\n                if (!isSchemaCall && !isExtendCall) break;\n\n                // Signature: (fields, name?)\n                const fieldsArg = callExpression.arguments[0];\n                const nameArg = callExpression.arguments[1];\n                if (!fieldsArg || fieldsArg.kind !== ts.SyntaxKind.ObjectLiteralExpression) {\n                    break;\n                }\n\n                let className: string | undefined;\n                if (nameArg) {\n                    if (nameArg.kind === ts.SyntaxKind.StringLiteral) {\n                        className = (nameArg as ts.StringLiteral).text;\n                    } else {\n                        className = nameArg.getText();\n                    }\n                }\n\n                if (!className) {\n                    // No explicit name arg — infer it from the variable the\n                    // result is assigned to (`const Foo = schema({...})`).\n                    let p: ts.Node = callExpression.parent;\n                    while (p !== undefined && (\n                        p.kind === ts.SyntaxKind.PropertyAccessExpression ||\n                        p.kind === ts.SyntaxKind.CallExpression\n                    )) {\n                        p = p.parent;\n                    }\n                    if (p?.kind === ts.SyntaxKind.VariableDeclaration) {\n                        className = (p as ts.VariableDeclaration).name?.getText();\n                    }\n                }\n\n                if (!className) break;\n\n                // Resolve the base class BEFORE registering a structure. A\n                // chained `schema({...}).extend({...})` has a call expression\n                // (not an identifier) as its `.extend` base, which can't be\n                // statically named — bail here rather than leave a half-formed,\n                // nameless Class in the context (which corrupts inheritance walks).\n                let extendsClass = \"Schema\";\n                if (isExtendCall) {\n                    extendsClass = (node as any).expression?.expression?.escapedText;\n                    if (!extendsClass) {\n                        console.warn(`schema-codegen: cannot resolve the base class of a chained .extend() for '${className}' — fields from that .extend({...}) are omitted.`);\n                        break;\n                    }\n                }\n\n                if (currentStructure?.name !== className) {\n                    currentStructure = new Class();\n                    context.addStructure(currentStructure);\n                }\n\n                (currentStructure as Class).extends = extendsClass;\n                currentStructure.name = className;\n\n                const types = fieldsArg as any;\n                for (let i = 0; i < types.properties.length; i++) {\n                    const prop = types.properties[i];\n\n                    // Skip methods declared inside the fields object — the\n                    // runtime gives no field index to any function value.\n                    if (prop.kind === ts.SyntaxKind.MethodDeclaration) continue;\n                    if (!prop.initializer) continue;\n                    if (ts.isArrowFunction(prop.initializer) || ts.isFunctionExpression(prop.initializer)) continue;\n\n                    // never inherit `currentProperty`: it's the decorator path's\n                    // carry-over from a visited `deprecated` identifier, and a\n                    // trailing `.deprecated()` chain can leave it set\n                    const property = new Property();\n                    property.name = prop.name.escapedText;\n\n                    if (defineProperty(property, prop.initializer)) {\n                        currentStructure.addProperty(property);\n                    }\n                }\n            }\n\n            break;\n\n        case ts.SyntaxKind.EnumMember:\n            if (currentStructure instanceof Enum) {\n                const initializer = (node as any).initializer?.text;\n                const name = node.getFirstToken().getText();\n                const property = currentProperty || new Property();\n                property.name = name;\n                if (initializer !== undefined) {\n                    property.type = initializer;\n                }\n                currentStructure.addProperty(property);\n                currentProperty = undefined;\n            }\n            break;\n    }\n\n    ts.forEachChild(node, (n: ts.Node) => inspectNode(n, context, decoratorName));\n}\n\nlet parsedFiles: { [filename: string]: boolean };\n\n/**\n * `options` is only honored for a top-level call (one passing a fresh\n * `Context`) — the recursive import walk reuses the run's resolver state.\n */\nexport function parseFiles(\n    fileNames: string[],\n    decoratorName: string = \"type\",\n    context: Context = new Context(),\n    options?: ResolveOptions,\n) {\n    if (typeof ts.createSourceFile !== \"function\") {\n        // typescript@7+ (native) no longer ships the JS compiler API\n        throw new Error(\n            `schema-codegen requires the TypeScript compiler API, which the installed \"typescript@${(ts as any).version}\" package does not provide.\\n` +\n            `TypeScript 7+ no longer ships the JS compiler API — install typescript 5.x or 6.x (e.g. \\`npm install --save-dev typescript@6\\`) to use schema-codegen.`\n        );\n    }\n\n    /**\n     * Re-set globalContext for each test case\n     */\n    if (globalContext !== context) {\n        parsedFiles = {};\n        globalContext = context;\n        // a structure left over from a previous run would make the\n        // `currentStructure?.name !== className` guard skip re-registering it\n        currentStructure = undefined;\n        currentProperty = undefined;\n        resetResolver(options);\n    }\n\n    fileNames.forEach((fileName) => {\n        let sourceFile: ts.Node;\n        let sourceFileName: string;\n\n        const fileNameAlternatives = sourceFileCandidates(fileName);\n\n        for (let i = 0; i < fileNameAlternatives.length; i++) {\n            try {\n                sourceFileName = path.resolve(fileNameAlternatives[i]);\n\n                if (parsedFiles[sourceFileName]) {\n                    break;\n                }\n\n                sourceFile = ts.createSourceFile(\n                    sourceFileName,\n                    readFileSync(sourceFileName).toString(),\n                    ts.ScriptTarget.Latest,\n                    true\n                );\n\n                parsedFiles[sourceFileName] = true;\n\n                break;\n            } catch (e) {\n                // only swallow fs errors (ENOENT/EISDIR) while probing alternatives\n                if (!e?.code) { throw e; }\n            }\n        }\n\n        if (sourceFile) {\n            inspectNode(sourceFile, context, decoratorName);\n        }\n    });\n\n    return context.getStructures();\n}\n\n/**\n * TypeScript 4.8+ has introduced a change on how to access decorators.\n * - https://github.com/microsoft/TypeScript/pull/49089\n * - https://devblogs.microsoft.com/typescript/announcing-typescript-4-8/#decorators-are-placed-on-modifiers-on-typescripts-syntax-trees\n */\nexport function getDecorators(node: ts.Node | null | undefined,): undefined | ts.Decorator[] {\n    if (node == undefined) { return undefined; }\n\n    // TypeScript 4.7 and below\n    // @ts-ignore\n    if (node.decorators) { return node.decorators; }\n\n    // TypeScript 4.8 and above\n    // @ts-ignore\n    if (ts.canHaveDecorators && ts.canHaveDecorators(node)) {\n        // @ts-ignore\n        const decorators = ts.getDecorators(node);\n        return decorators ? Array.from(decorators) : undefined;\n    }\n\n    // @ts-ignore\n    return node.modifiers?.filter(ts.isDecorator);\n}\n","import {\n    Class,\n    Property,\n    File,\n    getCommentHeader,\n    Interface,\n    Enum,\n} from \"../types.js\";\nimport { GenerateOptions } from \"../api.js\";\nimport { Context } from \"../types.js\";\n\nexport const name = \"Unity/C#\";\n\nconst typeMaps: { [key: string]: string } = {\n    \"string\": \"string\",\n    // JS numbers are float64, and the \"number\" codec may send them at full width\n    \"number\": \"double\",\n    \"boolean\": \"bool\",\n    \"int8\": \"sbyte\",\n    \"uint8\": \"byte\",\n    \"int16\": \"short\",\n    \"uint16\": \"ushort\",\n    \"int32\": \"int\",\n    \"uint32\": \"uint\",\n    \"int64\": \"long\",\n    \"uint64\": \"ulong\",\n    // float32 only narrows the wire — in memory it's a double, as in JS\n    \"float32\": \"double\",\n    \"float64\": \"double\",\n}\n\n// SDK types are named through `global::` so that neither the user's namespace\n// (`Game.Schema`, `Foo.Colyseus`) nor a generated class can shadow them.\nconst SDK = \"global::Colyseus.Schema\";\n\n/**\n * C# reserved keywords — a field with one of these names is emitted\n * `@`-escaped (reflection still reports the bare name the decoder matches on).\n */\nconst KEYWORDS = new Set([\n    \"abstract\", \"as\", \"base\", \"bool\", \"break\", \"byte\", \"case\", \"catch\", \"char\",\n    \"checked\", \"class\", \"const\", \"continue\", \"decimal\", \"default\", \"delegate\",\n    \"do\", \"double\", \"else\", \"enum\", \"event\", \"explicit\", \"extern\", \"false\",\n    \"finally\", \"fixed\", \"float\", \"for\", \"foreach\", \"goto\", \"if\", \"implicit\",\n    \"in\", \"int\", \"interface\", \"internal\", \"is\", \"lock\", \"long\", \"namespace\",\n    \"new\", \"null\", \"object\", \"operator\", \"out\", \"override\", \"params\", \"private\",\n    \"protected\", \"public\", \"readonly\", \"ref\", \"return\", \"sbyte\", \"sealed\",\n    \"short\", \"sizeof\", \"stackalloc\", \"static\", \"string\", \"struct\", \"switch\",\n    \"this\", \"throw\", \"true\", \"try\", \"typeof\", \"uint\", \"ulong\", \"unchecked\",\n    \"unsafe\", \"ushort\", \"using\", \"virtual\", \"void\", \"volatile\", \"while\",\n]);\n\nconst identifier = (name: string) => KEYWORDS.has(name) ? `@${name}` : name;\n\n/**\n * C# Code Generator\n */\nconst capitalize = (s: string) => {\n    if (typeof s !== 'string') return ''\n    return s.charAt(0).toUpperCase() + s.slice(1);\n}\n\n/**\n * Generate individual files for each class/interface/enum\n */\nexport function generate(context: Context, options: GenerateOptions): File[] {\n    // enrich typeMaps with enums\n    context.enums.forEach((structure) => {\n        typeMaps[structure.name] = structure.name;\n    });\n    return [\n        ...context.classes.map(structure => ({\n            name: `${structure.name}.cs`,\n            content: generateClass(structure, options.namespace)\n        })),\n        ...context.interfaces.map(structure => ({\n            name: `${structure.name}.cs`,\n            content: generateInterface(structure, options.namespace),\n        })),\n        ...context.enums.filter(structure => structure.name !== 'OPERATION').map((structure) => ({\n            name: `${structure.name}.cs`,\n            content: generateEnum(structure, options.namespace),\n        })),\n    ];\n}\n\n/**\n * Generate a single bundled file containing all classes, interfaces, and enums\n */\nexport function renderBundle(context: Context, options: GenerateOptions): File {\n    const fileName = options.namespace ? `${options.namespace}.cs` : \"Schema.cs\";\n    const indent = options.namespace ? \"\\t\" : \"\";\n\n    // enrich typeMaps with enums\n    context.enums.forEach((structure) => {\n        typeMaps[structure.name] = structure.name;\n    });\n\n    // Collect all bodies\n    const classBodies = context.classes.map(klass => generateClassBody(klass, indent));\n    const interfaceBodies = context.interfaces.map(iface => generateInterfaceBody(iface, indent));\n    const enumBodies = context.enums\n        .filter(structure => structure.name !== 'OPERATION')\n        .map(e => generateEnumBody(e, indent));\n\n    const allBodies = [...classBodies, ...interfaceBodies, ...enumBodies].join(\"\\n\\n\");\n\n    const content = `${getCommentHeader()}\n${options.namespace ? `\\nnamespace ${options.namespace} {\\n` : \"\"}\n${allBodies}\n${options.namespace ? \"}\" : \"\"}`;\n\n    return { name: fileName, content };\n}\n\n/**\n * Generate just the class body (without namespace) for bundling\n */\nfunction generateClassBody(klass: Class, indent: string = \"\"): string {\n    const base = (klass.extends === \"Schema\") ? `${SDK}.Schema` : klass.extends;\n    return `${indent}public partial class ${klass.name} : ${base} {\n#if UNITY_5_3_OR_NEWER\n${indent}\\t[global::UnityEngine.Scripting.Preserve]\n#endif\n${indent}\\tpublic ${klass.name}() { }\n${klass.properties.map((prop) => \"\\n\" + generateProperty(prop, indent)).join(\"\\n\")}\n${indent}}`;\n}\n\n/**\n * Generate a complete class file with namespace (for individual file mode)\n */\nfunction generateClass(klass: Class, namespace: string) {\n    const indent = (namespace) ? \"\\t\" : \"\";\n    return `${getCommentHeader()}\n${namespace ? `\\nnamespace ${namespace} {` : \"\"}\n${generateClassBody(klass, indent)}\n${namespace ? \"}\" : \"\"}\n`;\n}\n\n/**\n * Check if all enum members resolve to non-negative integers,\n * allowing emission as a native C# `enum` (which only supports integral types).\n */\nfunction canUseNativeEnum(_enum: Enum): boolean {\n    return _enum.properties.every((prop) => {\n        if (!prop.type) return true;\n        const n = Number(prop.type);\n        return Number.isInteger(n) && n >= 0;\n    });\n}\n\n/**\n * Generate just the enum body (without imports/namespace) for bundling\n */\nfunction generateEnumBody(_enum: Enum, indent: string = \"\"): string {\n    if (canUseNativeEnum(_enum)) {\n        const members = _enum.properties\n            .map((prop, i) => {\n                const value = prop.type ? Number(prop.type) : i;\n                return `${indent}\\t${identifier(prop.name)} = ${value},`;\n            })\n            .join(\"\\n\");\n        return `${indent}public enum ${_enum.name} : int {\n${members}\n${indent}}`;\n    }\n\n    return `${indent}public struct ${_enum.name} {\n\n${_enum.properties\n    .map((prop) => {\n        let dataType: string = \"int\";\n        let value: any;\n\n        if(prop.type) {\n            if(isNaN(Number(prop.type))) {\n                value = `\"${prop.type}\"`;\n                dataType = \"string\";\n            } else {\n                value = Number(prop.type);\n                dataType = Number.isInteger(value)? 'int': 'float';\n            }\n        } else {\n            value = _enum.properties.indexOf(prop);\n        }\n        return `${indent}\\tpublic const ${dataType} ${identifier(prop.name)} = ${value};`;\n    })\n        .join(\"\\n\")}\n${indent}}`;\n}\n\n/**\n * Generate a complete enum file with imports/namespace (for individual file mode)\n */\nfunction generateEnum(_enum: Enum, namespace: string) {\n    const indent = namespace ? \"\\t\" : \"\";\n    return `${getCommentHeader()}\n${namespace ? `\\nnamespace ${namespace} {` : \"\"}\n${generateEnumBody(_enum, indent)}\n${namespace ? \"}\" : \"\"}`\n}\n\nfunction generateProperty(prop: Property, indent: string = \"\") {\n    let typeArgs = `\"${prop.type}\"`;\n    let langType: string;\n    let initializer: string;\n\n    if (prop.quantized) {\n        const q = prop.quantized;\n        typeArgs += `, QuantizeMin = ${q.min}, QuantizeMax = ${q.max}, QuantizeBits = ${q.bits}, QuantizeWrap = ${q.wrap}`;\n        langType = \"double\";\n        initializer = defaultLiteral(prop.defaultValue, langType) ?? \"default(double)\";\n\n    } else if (prop.childType) {\n        const isUpcaseFirst = prop.childType.match(/^[A-Z]/);\n\n        langType = getType(prop);\n        typeArgs += `, typeof(${langType})`;\n\n        if (!isUpcaseFirst) {\n            typeArgs += `, \"${prop.childType}\"`;\n        }\n\n        // collections start empty, as on a JS schema() instance; a child\n        // schema stays null until the server sends it\n        initializer = (prop.type === \"ref\") ? \"null\" : `new ${langType}()`;\n\n    } else {\n        langType = getType(prop);\n        initializer = defaultLiteral(prop.defaultValue, langType) ?? `default(${langType})`;\n    }\n\n    const obsolete = (prop.deprecated)\n        ? `\\t${indent}[global::System.Obsolete(\"field '${prop.name}' is deprecated.\", true)]\\n`\n        : \"\";\n\n    return `${obsolete}\\t${indent}[${SDK}.Type(${prop.index}, ${typeArgs})]\n\\t${indent}public ${langType} ${identifier(prop.name)} = ${initializer};`;\n}\n\nconst INTEGER_RANGES: { [langType: string]: [number, number] } = {\n    \"sbyte\": [-128, 127],\n    \"byte\": [0, 255],\n    \"short\": [-32768, 32767],\n    \"ushort\": [0, 65535],\n    \"int\": [-2147483648, 2147483647],\n    \"uint\": [0, 4294967295],\n    \"long\": [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n    \"ulong\": [0, Number.MAX_SAFE_INTEGER],\n};\n\n// JSON escapes are valid C#, but C# also ends a line at NEL, LS and PS\nconst CSHARP_LINE_BREAKS = new RegExp(`[${String.fromCharCode(0x85, 0x2028, 0x2029)}]`, \"g\");\n\n/**\n * A field's statically-known default as a C# literal of `langType`, or\n * undefined when it has none that compiles to the same value.\n */\nfunction defaultLiteral(value: Property[\"defaultValue\"], langType: string): string | undefined {\n    if (typeof value === \"boolean\") {\n        return (langType === \"bool\") ? String(value) : undefined;\n    }\n\n    if (typeof value === \"string\") {\n        return (langType === \"string\")\n            ? JSON.stringify(value).replace(CSHARP_LINE_BREAKS, (c) => `\\\\u${c.charCodeAt(0).toString(16).padStart(4, \"0\")}`)\n            : undefined;\n    }\n\n    if (typeof value !== \"number\" || !Number.isFinite(value)) {\n        return undefined;\n    }\n\n    if (langType === \"double\") {\n        return String(value);\n    }\n\n    const range = INTEGER_RANGES[langType];\n    return (range && Number.isInteger(value) && value >= range[0] && value <= range[1])\n        ? String(value)\n        : undefined;\n}\n\n/**\n * Generate just the interface body (without imports/namespace) for bundling\n */\nfunction generateInterfaceBody(struct: Interface, indent: string = \"\"): string {\n    return `${indent}public class ${struct.name} {\n${struct.properties.map(prop => `\\t${indent}public ${getInterfaceType(prop)} ${identifier(prop.name)};`).join(\"\\n\")}\n${indent}}`;\n}\n\n/**\n * Generate a complete interface file with namespace (for individual file mode)\n */\nfunction generateInterface(struct: Interface, namespace: string) {\n    const indent = (namespace) ? \"\\t\" : \"\";\n    return `${getCommentHeader()}\n${namespace ? `\\nnamespace ${namespace} {` : \"\"}\n${generateInterfaceBody(struct, indent)}\n${namespace ? \"}\" : \"\"}\n`;\n}\n\nfunction getChildType(prop: Property) {\n    return typeMaps[prop.childType];\n}\n\nfunction getType(prop: Property) {\n    if (prop.childType) {\n        const isUpcaseFirst = prop.childType.match(/^[A-Z]/);\n        let type: string;\n\n        if(prop.type === \"ref\") {\n            type = (isUpcaseFirst)\n                ? prop.childType\n                : getChildType(prop);\n        } else {\n            const containerClass = `${SDK}.${capitalize(prop.type)}Schema`;\n            type = (isUpcaseFirst)\n                ? `${containerClass}<${prop.childType}>`\n                : `${containerClass}<${getChildType(prop)}>`;\n        }\n        return type;\n\n    } else {\n        return typeMaps[prop.type];\n    }\n}\n\n// messages arrive as msgpack, so collections are plain C# ones rather than ArraySchema/MapSchema\nfunction getInterfaceType(prop: Property) {\n    const child = typeMaps[prop.childType] ?? prop.childType;\n    switch (prop.type) {\n        case \"array\": return `${child}[]`;\n        case \"map\": return `global::System.Collections.Generic.Dictionary<string, ${child}>`;\n        default: return typeMaps[prop.type] ?? prop.type;\n    }\n}\n","import { Class, Property, File, getCommentHeader, getInheritanceTree, Context } from \"../types.js\";\nimport { GenerateOptions } from \"../api.js\";\n\nexport const name = \"C++\";\n\nconst typeMaps: { [key: string]: string } = {\n    \"string\": \"string\",\n    \"number\": \"varint_t\",\n    \"boolean\": \"bool\",\n    \"int8\": \"int8_t\",\n    \"uint8\": \"uint8_t\",\n    \"int16\": \"int16_t\",\n    \"uint16\": \"uint16_t\",\n    \"int32\": \"int32_t\",\n    \"uint32\": \"uint32_t\",\n    \"int64\": \"int64_t\",\n    \"uint64\": \"uint64_t\",\n    \"float32\": \"float32_t\",\n    \"float64\": \"float64_t\",\n}\n\nconst typeInitializer: { [key: string]: string } = {\n    \"string\": '\"\"',\n    \"number\": \"0\",\n    \"boolean\": \"false\",\n    \"int8\": \"0\",\n    \"uint8\": \"0\",\n    \"int16\": \"0\",\n    \"uint16\": \"0\",\n    \"int32\": \"0\",\n    \"uint32\": \"0\",\n    \"int64\": \"0\",\n    \"uint64\": \"0\",\n    \"float32\": \"0\",\n    \"float64\": \"0\",\n}\n\nconst COMMON_INCLUDES = `#include \"schema.h\"\n#include <typeinfo>\n#include <typeindex>\n\nusing namespace colyseus::schema;`;\n\n/**\n * C++ Code Generator\n */\n\nconst capitalize = (s: string) => {\n    if (typeof s !== 'string') return ''\n    return s.charAt(0).toUpperCase() + s.slice(1);\n}\nconst distinct = (value: string, index: number, self: string[]) =>\n    self.indexOf(value) === index;\n\n/**\n * Generate individual files for each class\n */\nexport function generate (context: Context, options: GenerateOptions): File[] {\n    return context.classes.map(klass => ({\n        name: klass.name + \".hpp\",\n        content: generateClass(klass, options.namespace, context.classes)\n    }));\n}\n\n/**\n * Generate a single bundled header file containing all classes\n */\nexport function renderBundle(context: Context, options: GenerateOptions): File {\n    const fileName = options.namespace ? `${options.namespace}.hpp` : \"schema.hpp\";\n    const guardName = `__SCHEMA_CODEGEN_${(options.namespace || \"SCHEMA\").toUpperCase()}_H__`;\n\n    const classBodies = context.classes.map(klass => generateClassBody(klass, context.classes, options.namespace));\n\n    const content = `${getCommentHeader()}\n#ifndef ${guardName}\n#define ${guardName} 1\n\n${COMMON_INCLUDES}\n\n${options.namespace ? `namespace ${options.namespace} {\\n` : \"\"}\n${classBodies.join(\"\\n\\n\")}\n${options.namespace ? \"}\" : \"\"}\n\n#endif\n`;\n\n    return { name: fileName, content };\n}\n\n/**\n * Generate just the class body (without includes/guards) for bundling\n */\nfunction generateClassBody(klass: Class, allClasses: Class[], namespace: string): string {\n    const propertiesPerType: {[type: string]: Property[]} = {};\n    const allRefs: Property[] = [];\n    klass.properties.forEach(property => {\n        let type = property.type;\n\n        if (!propertiesPerType[type]) {\n            propertiesPerType[type] = [];\n        }\n\n        propertiesPerType[type].push(property);\n\n        // keep all refs list\n        if ((type === \"ref\" || type === \"array\" || type === \"map\")) {\n            allRefs.push(property);\n        }\n    });\n\n    const allProperties = getAllProperties(klass, allClasses);\n    const createInstanceMethod = (allRefs.length === 0) ? \"\" :\n    `\\tinline Schema* createInstance(std::type_index type) {\n\\t\\t${generateFieldIfElseChain(allRefs,\n    (property) => `type == typeid(${property.childType})`,\n    (property) => `return new ${property.childType}();`,\n    (property) => typeMaps[property.childType] === undefined)}\n\\t\\treturn ${klass.extends}::createInstance(type);\n\\t}`;\n\n    return `class ${klass.name} : public ${klass.extends} {\npublic:\n${klass.properties.map(prop => generateProperty(prop)).join(\"\\n\")}\n\n\\t${klass.name}() {\n\\t\\tthis->_indexes = ${generateAllIndexes(allProperties)};\n\\t\\tthis->_types = ${generateAllTypes(allProperties)};\n\\t\\tthis->_childPrimitiveTypes = ${generateAllChildPrimitiveTypes(allProperties)};\n\\t\\tthis->_childSchemaTypes = ${generateAllChildSchemaTypes(allProperties)};\n\\t}\n\n\\tvirtual ~${klass.name}() {\n\\t\\t${generateDestructors(allProperties).join(\"\\n\\t\\t\")}\n\\t}\n\nprotected:\n${Object.keys(propertiesPerType).map(type =>\n    generateGettersAndSetters(klass, type, propertiesPerType[type])).\n    join(\"\\n\")}\n\n${createInstanceMethod}\n};`;\n}\n\n/**\n * Generate a complete class file with includes/guards (for individual file mode)\n */\nfunction generateClass(klass: Class, namespace: string, allClasses: Class[]) {\n    const allRefs: Property[] = [];\n    klass.properties.forEach(property => {\n        let type = property.type;\n        // keep all refs list\n        if ((type === \"ref\" || type === \"array\" || type === \"map\")) {\n            allRefs.push(property);\n        }\n    });\n\n    const localIncludes = allRefs.\n        filter(ref => ref.childType && typeMaps[ref.childType] === undefined).\n        map(ref => ref.childType).\n        concat(getInheritanceTree(klass, allClasses, false).map(klass => klass.name)).\n        filter(distinct).\n        map(childType => `#include \"${childType}.hpp\"`).\n        join(\"\\n\");\n\n    return `${getCommentHeader()}\n#ifndef __SCHEMA_CODEGEN_${klass.name.toUpperCase()}_H__\n#define __SCHEMA_CODEGEN_${klass.name.toUpperCase()}_H__ 1\n\n${COMMON_INCLUDES}\n${localIncludes}\n\n${namespace ? `namespace ${namespace} {` : \"\"}\n${generateClassBody(klass, allClasses, namespace)}\n${namespace ? \"}\" : \"\"}\n\n#endif\n`;\n}\n\nfunction generateProperty(prop: Property) {\n    let property = \"\";\n    let langType: string;\n    let initializer = \"\";\n    let isPropPointer = \"\";\n\n    if (prop.childType) {\n        const isUpcaseFirst = prop.childType.match(/^[A-Z]/);\n\n        if(prop.type === \"ref\") {\n            langType = `${prop.childType}`;\n            initializer = `new ${prop.childType}()`;\n\n        } else if(prop.type === \"array\") {\n            langType = (isUpcaseFirst)\n                ? `ArraySchema<${prop.childType}*>`\n                : `ArraySchema<${typeMaps[prop.childType]}>`;\n            initializer = `new ${langType}()`;\n\n        } else if(prop.type === \"map\") {\n            langType = (isUpcaseFirst)\n                ? `MapSchema<${prop.childType}*>`\n                : `MapSchema<${typeMaps[prop.childType]}>`;\n            initializer = `new ${langType}()`;\n        }\n        isPropPointer = \"*\";\n\n    } else {\n        langType = typeMaps[prop.type];\n        initializer = typeInitializer[prop.type];\n    }\n\n    property += ` ${langType} ${isPropPointer}${prop.name}`;\n\n    return `\\t${property} = ${initializer};`\n}\n\nfunction generateGettersAndSetters(klass: Class, type: string, properties: Property[]) {\n    let langType = typeMaps[type];\n    let typeCast = \"\";\n\n    const getMethodName = `get${capitalize(type)}`;\n    const setMethodName = `set${capitalize(type)}`;\n\n    if (type === \"ref\") {\n        langType = \"Schema*\";\n\n    } else if (type === \"array\") {\n        langType = `ArraySchema<char*> *`;\n        typeCast = `(ArraySchema<char*> *)`;\n\n    } else if (type === \"map\") {\n        langType = `MapSchema<char*> *`;\n        typeCast = `(MapSchema<char*> *)`;\n    }\n\n    return `\\tinline ${langType} ${getMethodName}(const string &field)\n\\t{\n\\t\\t${generateFieldIfElseChain(properties,\n    (property) => `field == \"${property.name}\"`,\n    (property) => `return ${typeCast}this->${property.name};`)}\n\\t\\treturn ${klass.extends}::${getMethodName}(field);\n\\t}\n\n\\tinline void ${setMethodName}(const string &field, ${langType} value)\n\\t{\n\\t\\t${generateFieldIfElseChain(properties,\n    (property) => `field == \"${property.name}\"`,\n    (property) => {\n        const isSchemaType = (typeMaps[property.childType] === undefined)\n\n        if (type === \"ref\") {\n            langType = `${property.childType}*`;\n            typeCast = (isSchemaType)\n                ? `(${property.childType}*)`\n                : `/* bug? */`;\n\n        } else if (type === \"array\") {\n            typeCast = (isSchemaType)\n                ? `(ArraySchema<${property.childType}*> *)`\n                : `(ArraySchema<${typeMaps[property.childType]}> *)`;\n\n        } else if (type === \"map\") {\n            typeCast = (isSchemaType)\n                ? `(MapSchema<${property.childType}*> *)`\n                : `(MapSchema<${typeMaps[property.childType]}> *)`;\n        }\n\n        return `this->${property.name} = ${typeCast}value;\\n\\t\\t\\treturn;`\n    })}\n\\t\\treturn ${klass.extends}::${setMethodName}(field, value);\n\\t}`;\n}\n\nfunction generateFieldIfElseChain(\n    properties: Property[],\n    ifCallback: (property: Property) => string,\n    callback: (property: Property) => string,\n    filter: (property: Property) => boolean = (_) => true,\n) {\n    let chain = \"\";\n\n    const uniqueChecks: string[] = [];\n    properties.filter(filter).forEach((property, i) => {\n        const check = ifCallback(property);\n        if (uniqueChecks.indexOf(check) === -1) {\n            uniqueChecks.push(check);\n\n        } else {\n            return;\n        }\n\n        if (i === 0) { chain += \"if \" } else { chain += \" else if \" }\n        chain += `(${check})\n\\t\\t{\n\\t\\t\\t${callback(property)}\\n\n\\t\\t}`\n    });\n\n    return chain;\n}\n\nfunction generateAllIndexes(properties: Property[]) {\n    return `{${properties.map((property, i) => `{${i}, \"${property.name}\"}`).join(\", \")}}`\n\n}\n\nfunction generateAllTypes(properties: Property[]) {\n    return `{${properties.map((property, i) => `{${i}, \"${property.type}\"}`).join(\", \")}}`\n}\n\nfunction generateAllChildSchemaTypes(properties: Property[]) {\n    return `{${properties.map((property, i) => {\n        if (property.childType && typeMaps[property.childType] === undefined) {\n            return `{${i}, typeid(${property.childType})}`\n        } else {\n            return null;\n        }\n    }).filter(r => r !== null).join(\", \")}}`\n}\n\nfunction generateAllChildPrimitiveTypes(properties: Property[]) {\n    return `{${properties.map((property, i) => {\n        if (typeMaps[property.childType] !== undefined) {\n            return `{${i}, \"${property.childType}\"}`\n        } else {\n            return null;\n        }\n    }).filter(r => r !== null).join(\", \")}}`\n}\n\nfunction generateDestructors(properties: Property[]) {\n    return properties.map((property, i) => {\n        if (property.childType) {\n            return `delete this->${property.name};`;\n        } else {\n            return null;\n        }\n    }).filter(r => r !== null);\n}\n\nfunction getAllProperties (klass: Class, allClasses: Class[]) {\n    let properties: Property[] = [];\n\n    getInheritanceTree(klass, allClasses).reverse().forEach((klass) => {\n        properties = properties.concat(klass.properties);\n    });\n\n    return properties;\n}","import { Class, Property, File, getCommentHeader, Context } from \"../types.js\";\nimport { GenerateOptions } from \"../api.js\";\n\nexport const name = \"Haxe\";\n\n/**\n * Field types follow what the Haxe SDK's decoder hands back: `number` arrives\n * as an Int or a Float, so it is a `Float`; integers up to 32 bits are `Int`\n * (signed arithmetic, like the number the server holds — a `uint32` above\n * 2^31 reads negative); 64-bit integers decode as `haxe.Int64`.\n */\nconst typeMaps: { [key: string]: string } = {\n    \"string\": \"String\",\n    \"number\": \"Float\",\n    \"boolean\": \"Bool\",\n    \"int8\": \"Int\",\n    \"uint8\": \"Int\",\n    \"int16\": \"Int\",\n    \"uint16\": \"Int\",\n    \"int32\": \"Int\",\n    \"uint32\": \"Int\",\n    \"int64\": \"haxe.Int64\",\n    \"uint64\": \"haxe.Int64\",\n    \"float32\": \"Float\",\n    \"float64\": \"Float\",\n}\n\n/** The value a field without a `.default()` starts at. */\nconst zeroOf = (langType: string) => (langType === \"String\") ? '\"\"' : (langType === \"Bool\") ? \"false\" : \"0\";\n\n/**\n * Haxe reserved words. A field named after one is emitted with a trailing\n * underscore — the SDK matches fields by index on the wire, never by name.\n */\nconst KEYWORDS = new Set([\n    \"abstract\", \"break\", \"case\", \"cast\", \"catch\", \"class\", \"continue\", \"default\",\n    \"do\", \"dynamic\", \"else\", \"enum\", \"extends\", \"extern\", \"false\", \"final\", \"for\",\n    \"function\", \"if\", \"implements\", \"import\", \"in\", \"inline\", \"interface\", \"macro\",\n    \"new\", \"null\", \"operator\", \"overload\", \"override\", \"package\", \"private\",\n    \"public\", \"return\", \"static\", \"switch\", \"this\", \"throw\", \"true\", \"try\",\n    \"typedef\", \"untyped\", \"using\", \"var\", \"while\",\n]);\n\nconst identifier = (name: string) => KEYWORDS.has(name) ? `${name}_` : name;\n\nconst COMMON_IMPORTS = `import io.colyseus.serializer.schema.Schema;\nimport io.colyseus.serializer.schema.types.*;`;\n\n/**\n * Generate individual files for each class\n */\nexport function generate (context: Context, options: GenerateOptions): File[] {\n    return context.classes.map(klass => ({\n        name: klass.name + \".hx\",\n        content: generateClass(klass, options.namespace, context.classes)\n    }));\n}\n\n/**\n * Generate a single bundled file containing all classes\n */\nexport function renderBundle(context: Context, options: GenerateOptions): File {\n    const fileName = options.namespace ? `${options.namespace}.hx` : \"Schema.hx\";\n\n    const classBodies = context.classes.map(klass => generateClassBody(klass));\n\n    const content = `${getCommentHeader()}\n\n${options.namespace ? `package ${options.namespace};` : \"\"}\n${COMMON_IMPORTS}\n\n${classBodies.join(\"\\n\\n\")}\n`;\n\n    return { name: fileName, content };\n}\n\n/**\n * Generate just the class body (without package/imports) for bundling\n */\nfunction generateClassBody(klass: Class): string {\n    return `class ${klass.name} extends ${klass.extends} {\n${klass.properties.map(prop => generateProperty(prop)).join(\"\\n\")}\n}`;\n}\n\n/**\n * Generate a complete class file with package/imports (for individual file mode)\n */\nfunction generateClass(klass: Class, namespace: string, allClasses: Class[]) {\n    return `${getCommentHeader()}\n\n${namespace ? `package ${namespace};` : \"\"}\n${COMMON_IMPORTS}\n\n${generateClassBody(klass)}\n`;\n}\n\nfunction generateProperty(prop: Property) {\n    let langType: string;\n    let initializer = \"\";\n    let typeArgs = `\"${prop.type}\"`;\n\n    if (prop.quantized) {\n        const q = prop.quantized;\n        typeArgs += `, {min: ${q.min}, max: ${q.max}, bits: ${q.bits}, mode: ${q.wrap ? 1 : 0}}`;\n        langType = \"Float\";\n\n    } else if (prop.childType) {\n        const isUpcaseFirst = prop.childType.match(/^[A-Z]/);\n\n        if (isUpcaseFirst) {\n            typeArgs += `, ${prop.childType}`;\n\n        } else {\n            typeArgs += `, \"${prop.childType}\"`;\n        }\n\n        if(prop.type === \"ref\") {\n            langType = `${prop.childType}`;\n            initializer = `new ${prop.childType}()`;\n\n        } else if(prop.type === \"array\") {\n            langType = (isUpcaseFirst)\n                ? `ArraySchema<${prop.childType}>`\n                : `ArraySchema<${typeMaps[prop.childType]}>`;\n            initializer = `new ${langType}()`;\n\n        } else if(prop.type === \"map\") {\n            langType = (isUpcaseFirst)\n                ? `MapSchema<${prop.childType}>`\n                : `MapSchema<${typeMaps[prop.childType]}>`;\n            initializer = `new ${langType}()`;\n        }\n\n    } else {\n        langType = typeMaps[prop.type];\n    }\n\n    // collections and refs are constructed above; scalars start at their default\n    if (!initializer) {\n        initializer = defaultLiteral(prop.defaultValue, langType) ?? zeroOf(langType);\n    }\n\n    const name = identifier(prop.name);\n    const wireName = (name !== prop.name) ? `\\t// \"${prop.name}\" on the wire (a Haxe keyword)\\n` : \"\";\n\n    return `${wireName}\\t@:type(${typeArgs})\\n\\tpublic var ${name}: ${langType} = ${initializer};\\n`\n}\n\n/**\n * A field's statically-known default as a Haxe literal of `langType`, or\n * undefined when there is none (or it doesn't fit the type).\n */\nfunction defaultLiteral(value: Property[\"defaultValue\"], langType: string): string | undefined {\n    if (value === undefined) { return undefined; }\n\n    if (typeof value === \"boolean\") {\n        return (langType === \"Bool\") ? String(value) : undefined;\n    }\n\n    if (typeof value === \"string\") {\n        return (langType === \"String\") ? haxeString(value) : undefined;\n    }\n\n    if (langType === \"Float\") {\n        if (Number.isNaN(value)) { return \"Math.NaN\"; }\n        if (!Number.isFinite(value)) { return (value > 0) ? \"Math.POSITIVE_INFINITY\" : \"Math.NEGATIVE_INFINITY\"; }\n        return String(value);\n    }\n\n    if (!Number.isInteger(value)) { return undefined; }\n\n    if (langType === \"Int\") { return String(value); }\n\n    if (langType === \"haxe.Int64\") {\n        return (Math.abs(value) <= 0x7fffffff) ? String(value) : `haxe.Int64.fromFloat(${value})`;\n    }\n\n    return undefined;\n}\n\n/**\n * A double-quoted Haxe string literal (double quotes never interpolate `$`):\n * JSON's escapes, except `\\b` and `\\f`, which Haxe lacks. Escapes are matched\n * in pairs so an escaped backslash followed by `b` stays as it is.\n */\nconst haxeString = (value: string) =>\n    JSON.stringify(value).replace(/\\\\(.)/g, (escape, ch) => (ch === \"b\") ? \"\\\\x08\" : (ch === \"f\") ? \"\\\\x0c\" : escape);\n","import { Class, Property, File, getCommentHeader, getInheritanceTree, Context, Interface } from \"../types.js\";\nimport { GenerateOptions } from \"../api.js\";\n\nexport const name = \"TypeScript\";\n\nconst typeMaps: { [key: string]: string } = {\n    \"string\": \"string\",\n    \"number\": \"number\",\n    \"boolean\": \"boolean\",\n    \"int8\": \"number\",\n    \"uint8\": \"number\",\n    \"int16\": \"number\",\n    \"uint16\": \"number\",\n    \"int32\": \"number\",\n    \"uint32\": \"number\",\n    \"int64\": \"number\",\n    \"uint64\": \"number\",\n    \"float32\": \"number\",\n    \"float64\": \"number\",\n}\n\nconst COMMON_IMPORTS = `import { Schema, type, ArraySchema, MapSchema, SetSchema, DataChange } from '@colyseus/schema';`;\n\nconst distinct = (value: string, index: number, self: string[]) =>\n    self.indexOf(value) === index;\n\n/**\n * Generate individual files for each class/interface\n */\nexport function generate (context: Context, options: GenerateOptions): File[] {\n    return [\n        ...context.classes.map(structure => ({\n            name: structure.name + \".ts\",\n            content: generateClass(structure, options.namespace, context.classes)\n        })),\n        ...context.interfaces.map(structure => ({\n            name: structure.name + \".ts\",\n            content: generateInterface(structure, options.namespace, context.classes),\n        }))\n    ];\n}\n\n/**\n * Generate a single bundled file containing all classes and interfaces\n */\nexport function renderBundle(context: Context, options: GenerateOptions): File {\n    const fileName = options.namespace ? `${options.namespace}.ts` : \"schema.ts\";\n\n    // Collect all class bodies\n    const classBodies = context.classes.map(klass => generateClassBody(klass));\n\n    // Collect all interface bodies\n    const interfaceBodies = context.interfaces.map(iface => generateInterfaceBody(iface));\n\n    const content = `${getCommentHeader()}\n\n${COMMON_IMPORTS}\n\n${classBodies.join(\"\\n\\n\")}\n${interfaceBodies.length > 0 ? \"\\n\" + interfaceBodies.join(\"\\n\\n\") : \"\"}`;\n\n    return { name: fileName, content };\n}\n\n/**\n * Generate just the class body (without imports) for bundling\n */\nfunction generateClassBody(klass: Class): string {\n    return `export class ${klass.name} extends ${klass.extends} {\n${klass.properties.map(prop => `    ${generateProperty(prop)}`).join(\"\\n\")}\n}`;\n}\n\n/**\n * Generate just the interface body (without imports) for bundling\n */\nfunction generateInterfaceBody(iface: Interface): string {\n    return `export interface ${iface.name} {\n${iface.properties.map(prop => `    ${prop.name}: ${getInterfaceType(prop)};`).join(\"\\n\")}\n}`;\n}\n\n// Array<T> rather than T[], which would need parentheses around a union element.\n// Maps are Record<string, V>: msgpack keys arrive as strings, and a Map arrives as a plain object.\nfunction getInterfaceType(prop: Property) {\n    switch (prop.type) {\n        case \"array\": return `Array<${prop.childType}>`;\n        case \"map\": return `Record<string, ${prop.childType}>`;\n        default: return prop.type;\n    }\n}\n\n/**\n * Generate a complete class file with imports (for individual file mode)\n */\nfunction generateClass(klass: Class, namespace: string, allClasses: Class[]) {\n    const allRefs: Property[] = [];\n    klass.properties.forEach(property => {\n        let type = property.type;\n\n        // keep all refs list\n        if ((type === \"ref\" || type === \"array\" || type === \"map\" || type === \"set\")) {\n            allRefs.push(property);\n        }\n    });\n\n    const localImports = allRefs.\n        filter(ref => ref.childType && typeMaps[ref.childType] === undefined).\n        map(ref => ref.childType).\n        concat(getInheritanceTree(klass, allClasses, false).map(klass => klass.name)).\n        filter(distinct).\n        map(childType => `import { ${childType} } from './${childType}'`).\n        join(\"\\n\");\n\n    return `${getCommentHeader()}\n\n${COMMON_IMPORTS}\n${localImports}\n\n${generateClassBody(klass)}\n`;\n}\n\nfunction generateProperty(prop: Property) {\n    let langType: string;\n    let initializer = \"\";\n    let typeArgs: string;\n\n    if (prop.childType) {\n        const isUpcaseFirst = prop.childType.match(/^[A-Z]/);\n\n        if (isUpcaseFirst) {\n            typeArgs += `, ${prop.childType}`;\n\n        } else {\n            typeArgs += `, \"${prop.childType}\"`;\n        }\n\n        if(prop.type === \"ref\") {\n            langType = `${prop.childType}`;\n            initializer = `new ${prop.childType}()`;\n            typeArgs = `${prop.childType}`;\n\n        } else if(prop.type === \"array\") {\n            langType = (isUpcaseFirst)\n                ? `ArraySchema<${prop.childType}>`\n                : `ArraySchema<${typeMaps[prop.childType]}>`;\n            initializer = `new ${langType}()`;\n            typeArgs = (isUpcaseFirst)\n                ? `[ ${prop.childType} ]`\n                : `[ \"${prop.childType}\" ]`;\n\n        } else if(prop.type === \"map\") {\n            langType = (isUpcaseFirst)\n                ? `MapSchema<${prop.childType}>`\n                : `MapSchema<${typeMaps[prop.childType]}>`;\n            initializer = `new ${langType}()`;\n            typeArgs = (isUpcaseFirst)\n                ? `{ map: ${prop.childType} }`\n                : `{ map: \"${prop.childType}\" }`;\n        } else if (prop.type === \"set\") {\n            langType = (isUpcaseFirst)\n                ? `SetSchema<${prop.childType}>`\n                : `SetSchema<${typeMaps[prop.childType]}>`;\n            initializer = `new ${langType}()`;\n            typeArgs = (isUpcaseFirst)\n                ? `{ set: ${prop.childType} }`\n                : `{ set: \"${prop.childType}\" }`;\n        }\n\n    } else if (prop.quantized) {\n        const q = prop.quantized;\n        langType = \"number\";\n        typeArgs = `{ quantized: { min: ${q.min}, max: ${q.max}, bits: ${q.bits}${q.wrap ? `, mode: \"wrap\"` : \"\"} } }`;\n\n    } else {\n        langType = typeMaps[prop.type];\n        typeArgs = `\"${prop.type}\"`;\n    }\n\n    // TS1263: \"Declarations with initializers cannot also have definite assignment assertions\"\n    const definiteAssertion = initializer ? \"\" : \"!\";\n\n    return `@type(${typeArgs}) public ${prop.name}${definiteAssertion}: ${langType}${(initializer) ? ` = ${initializer}` : \"\"};`\n}\n\n\n/**\n * Generate a complete interface file with header (for individual file mode)\n */\nfunction generateInterface(structure: Interface, namespace: string, allClasses: Class[]) {\n    return `${getCommentHeader()}\n\n${generateInterfaceBody(structure)}\n`;\n}\n","import { Class, Property, File, getCommentHeader, getInheritanceTree, Context } from \"../types.js\";\nimport { GenerateOptions } from \"../api.js\";\n\nexport const name = \"JavaScript\";\n\nconst typeMaps: { [key: string]: string } = {\n    \"string\": \"string\",\n    \"number\": \"number\",\n    \"boolean\": \"boolean\",\n    \"int8\": \"number\",\n    \"uint8\": \"number\",\n    \"int16\": \"number\",\n    \"uint16\": \"number\",\n    \"int32\": \"number\",\n    \"uint32\": \"number\",\n    \"int64\": \"number\",\n    \"uint64\": \"number\",\n    \"float32\": \"number\",\n    \"float64\": \"number\",\n}\n\nconst COMMON_IMPORTS = `const schema = require(\"@colyseus/schema\");\nconst Schema = schema.Schema;\nconst type = schema.type;`;\n\nconst distinct = (value: string, index: number, self: string[]) =>\n    self.indexOf(value) === index;\n\n/**\n * Generate individual files for each class\n */\nexport function generate (context: Context, options: GenerateOptions): File[] {\n    return context.classes.map(klass => ({\n        name: klass.name + \".js\",\n        content: generateClass(klass, options.namespace, context.classes)\n    }));\n}\n\n/**\n * Generate a single bundled file containing all classes\n */\nexport function renderBundle(context: Context, options: GenerateOptions): File {\n    const fileName = options.namespace ? `${options.namespace}.js` : \"schema.js\";\n\n    const classBodies = context.classes.map(klass => generateClassBody(klass));\n    const classExports = context.classes.map(klass => `    ${klass.name},`).join(\"\\n\");\n\n    const content = `${getCommentHeader()}\n\n${COMMON_IMPORTS}\n\n${classBodies.join(\"\\n\\n\")}\n\nmodule.exports = {\n${classExports}\n};\n`;\n\n    return { name: fileName, content };\n}\n\n/**\n * Generate just the class body (without imports) for bundling\n */\nfunction generateClassBody(klass: Class): string {\n    return `class ${klass.name} extends ${klass.extends} {\n    constructor () {\n        super();\n${klass.properties.\n    filter(prop => prop.childType !== undefined).\n    map(prop => \"        \" + generatePropertyInitializer(prop)).join(\"\\n\")}\n    }\n}\n${klass.properties.map(prop => generatePropertyDeclaration(klass.name, prop)).join(\"\\n\")}`;\n}\n\n/**\n * Generate a complete class file with imports (for individual file mode)\n */\nfunction generateClass(klass: Class, namespace: string, allClasses: Class[]) {\n    const allRefs: Property[] = [];\n    klass.properties.forEach(property => {\n        let type = property.type;\n\n        // keep all refs list\n        if ((type === \"ref\" || type === \"array\" || type === \"map\")) {\n            allRefs.push(property);\n        }\n    });\n\n    const localImports = allRefs.\n        filter(ref => ref.childType && typeMaps[ref.childType] === undefined).\n        map(ref => ref.childType).\n        concat(getInheritanceTree(klass, allClasses, false).map(klass => klass.name)).\n        filter(distinct).\n        map(childType => `const ${childType} = require(\"./${childType}\");`).\n        join(\"\\n\");\n\n    return `${getCommentHeader()}\n\n${COMMON_IMPORTS}\n${localImports}\n\n${generateClassBody(klass)}\n\nexport default ${klass.name};\n`;\n}\n\nfunction generatePropertyDeclaration(className: string, prop: Property) {\n    let typeArgs: string;\n\n    if (prop.childType) {\n        const isUpcaseFirst = prop.childType.match(/^[A-Z]/);\n\n        if (isUpcaseFirst) {\n            typeArgs += `, ${prop.childType}`;\n\n        } else {\n            typeArgs += `, \"${prop.childType}\"`;\n        }\n\n        if(prop.type === \"ref\") {\n            typeArgs = `${prop.childType}`;\n\n        } else if(prop.type === \"array\") {\n            typeArgs = (isUpcaseFirst)\n                ? `[ ${prop.childType} ]`\n                : `[ \"${prop.childType}\" ]`;\n\n        } else if(prop.type === \"map\") {\n            typeArgs = (isUpcaseFirst)\n                ? `{ map: ${prop.childType} }`\n                : `{ map: \"${prop.childType}\" }`;\n        }\n\n    } else {\n        typeArgs = `\"${prop.type}\"`;\n    }\n\n    return `type(${typeArgs})(${className}.prototype, \"${prop.name}\");`;\n}\n\nfunction generatePropertyInitializer(prop: Property) {\n    let initializer = \"\";\n\n    if(prop.type === \"ref\") {\n        initializer = `new ${prop.childType}()`;\n\n    } else if(prop.type === \"array\") {\n        initializer = `new schema.ArraySchema()`;\n\n    } else if(prop.type === \"map\") {\n        initializer = `new schema.MapSchema()`;\n    }\n\n    return `this.${prop.name} = ${initializer}`;\n}\n","import { Class, Property, File, getCommentHeader, Context } from \"../types.js\";\nimport { GenerateOptions } from \"../api.js\";\n\nexport const name = \"Java\";\n\nconst typeMaps: { [key: string]: string } = {\n    \"string\": \"String\",\n    \"number\": \"float\",\n    \"boolean\": \"boolean\",\n    \"int8\": \"byte\",\n    \"uint8\": \"short\",\n    \"int16\": \"short\",\n    \"uint16\": \"int\",\n    \"int32\": \"int\",\n    \"uint32\": \"long\",\n    \"int64\": \"long\",\n    \"uint64\": \"long\",\n    \"float32\": \"float\",\n    \"float64\": \"double\",\n}\n\nconst typeInitializer: { [key: string]: string } = {\n    \"string\": '\"\"',\n    \"number\": \"0\",\n    \"boolean\": \"false\",\n    \"int8\": \"0\",\n    \"uint8\": \"0\",\n    \"int16\": \"0\",\n    \"uint16\": \"0\",\n    \"int32\": \"0\",\n    \"uint32\": \"0\",\n    \"int64\": \"0\",\n    \"uint64\": \"0\",\n    \"float32\": \"0\",\n    \"float64\": \"0\",\n}\n\nconst COMMON_IMPORTS = `import io.colyseus.serializer.schema.Schema;\nimport io.colyseus.serializer.schema.annotations.SchemaClass;\nimport io.colyseus.serializer.schema.annotations.SchemaField;`;\n\n/**\n * Java Code Generator\n */\n\n/**\n * Generate individual files for each class\n */\nexport function generate (context: Context, options: GenerateOptions): File[] {\n    return context.classes.map(klass => ({\n        name: klass.name + \".java\",\n        content: generateClass(klass, options.namespace)\n    }));\n}\n\n/**\n * Generate a single bundled file containing all classes\n * Note: Java typically requires one public class per file, so bundled mode\n * generates all classes in a single file with package-private visibility\n */\nexport function renderBundle(context: Context, options: GenerateOptions): File {\n    const fileName = options.namespace ? `Schema.java` : \"Schema.java\";\n\n    const classBodies = context.classes.map(klass => generateClassBody(klass));\n\n    const content = `${getCommentHeader()}\n${options.namespace ? `\\npackage ${options.namespace};` : \"\"}\n\n${COMMON_IMPORTS}\n\n${classBodies.join(\"\\n\\n\")}\n`;\n\n    return { name: fileName, content };\n}\n\n/**\n * Generate just the class body (without package/imports) for bundling\n */\nfunction generateClassBody(klass: Class): string {\n    return `@SchemaClass\nclass ${klass.name} extends ${klass.extends} {\n${klass.properties.map(prop => generateProperty(prop, \"\")).join(\"\\n\\n\")}\n}`;\n}\n\n/**\n * Generate a complete class file with package/imports (for individual file mode)\n */\nfunction generateClass(klass: Class, namespace: string) {\n    const indent = (namespace) ? \"\\t\" : \"\";\n    return `${getCommentHeader()}\n${namespace ? `\\npackage ${namespace};` : \"\"}\n\n${COMMON_IMPORTS}\n\n@SchemaClass\n${indent}public class ${klass.name} extends ${klass.extends} {\n${klass.properties.map(prop => generateProperty(prop, indent)).join(\"\\n\\n\")}\n${indent}}\n${namespace ? \"}\" : \"\"}\n`;\n}\n\nfunction generateProperty(prop: Property, indent: string = \"\") {\n    let typeArgs = `${prop.index}/${prop.type}`;\n    let property = \"public\";\n    let langType: string;\n    let ctorArgs: string = \"\";\n    let initializer = \"\";\n\n    if (prop.childType) {\n        const isUpcaseFirst = prop.childType.match(/^[A-Z]/);\n\n        if (prop.type !== \"ref\" && isUpcaseFirst) {\n            ctorArgs = `${prop.childType}.class`;\n        }\n\n        if(prop.type === \"ref\") {\n            langType = (isUpcaseFirst)\n                ? prop.childType\n                : typeMaps[prop.childType];\n\n            initializer = `new ${langType}${(prop.type !== \"ref\" && isUpcaseFirst) ? \"<>\" : \"\"}(${ctorArgs})`;\n\n        } else if(prop.type === \"array\") {\n            langType = (isUpcaseFirst)\n                ? `ArraySchema<${prop.childType}>`\n                : `ArraySchema`;\n\n            initializer = `new ArraySchema${(isUpcaseFirst) ? \"<>\" : \"\"}(${ctorArgs})`;\n\n        } else if(prop.type === \"map\") {\n            langType = (isUpcaseFirst)\n                ? `MapSchema<${prop.childType}>`\n                : `MapSchema`;\n\n            initializer = `new MapSchema${(isUpcaseFirst) ? \"<>\" : \"\"}(${ctorArgs})`;\n        }\n\n        if (prop.type !== \"ref\") {\n            typeArgs += (isUpcaseFirst)\n                ? `/ref`\n                : `/${prop.childType}`;\n        }\n\n    } else {\n        langType = typeMaps[prop.type];\n        initializer = typeInitializer[prop.type];\n    }\n\n    property += ` ${langType} ${prop.name}`;\n\n    return `\\t@SchemaField(\"${typeArgs}\")\\t${indent}\n\\t${indent}${property} = ${initializer};`\n}\n","import { Class, Property, File, getCommentHeader, getInheritanceTree, Context } from \"../types.js\";\nimport { GenerateOptions } from \"../api.js\";\n\nexport const name = \"LUA\";\n\n/**\n    TODO:\n    - Support inheritance\n    - Support importing Schema dependencies\n*/\n\nconst typeMaps: { [key: string]: string } = {\n    \"string\": \"string\",\n    \"number\": \"number\",\n    \"boolean\": \"boolean\",\n    \"int8\": \"number\",\n    \"uint8\": \"number\",\n    \"int16\": \"number\",\n    \"uint16\": \"number\",\n    \"int32\": \"number\",\n    \"uint32\": \"number\",\n    \"int64\": \"number\",\n    \"uint64\": \"number\",\n    \"float32\": \"number\",\n    \"float64\": \"number\",\n}\n\nconst COMMON_IMPORTS = `local schema = require 'colyseus.serializer.schema.schema'`;\nconst QUANTIZE_IMPORT = `local quantize = require 'colyseus.serializer.schema.quantize'`;\n\nconst distinct = (value: string, index: number, self: string[]) =>\n    self.indexOf(value) === index;\n\nconst hasQuantized = (classes: Class[]) =>\n    classes.some(klass => klass.properties.some(prop => prop.quantized));\n\n/**\n * Generate individual files for each class\n */\nexport function generate (context: Context, options: GenerateOptions): File[] {\n    return context.classes.map(klass => ({\n        name: klass.name + \".lua\",\n        content: generateClass(klass, options.namespace, context.classes)\n    }));\n}\n\n/**\n * Generate a single bundled file containing all classes\n */\nexport function renderBundle(context: Context, options: GenerateOptions): File {\n    const fileName = options.namespace ? `${options.namespace}.lua` : \"schema.lua\";\n\n    const classBodies = context.classes.map(klass => generateClassBody(klass));\n    const classNames = context.classes.map(klass => `    ${klass.name} = ${klass.name},`).join(\"\\n\");\n\n    const content = `${getCommentHeader().replace(/\\/\\//mg, \"--\")}\n\n${COMMON_IMPORTS}${hasQuantized(context.classes) ? `\\n${QUANTIZE_IMPORT}` : \"\"}\n\n${classBodies.join(\"\\n\\n\")}\n\nreturn {\n${classNames}\n}\n`;\n\n    return { name: fileName, content };\n}\n\n/**\n * Generate just the class body (without requires) for bundling\n */\nfunction generateClassBody(klass: Class): string {\n    // Inheritance support\n    const inherits = (klass.extends !== \"Schema\")\n        ? `, ${klass.extends}`\n        : \"\";\n\n    return `---@class ${klass.name}: ${klass.extends}\n${klass.properties.map(prop => `---@field ${prop.name} ${getLUATypeAnnotation(prop)}`).join(\"\\n\")}\nlocal ${klass.name} = schema.define({\n${klass.properties.map(prop => generatePropertyDeclaration(prop)).join(\",\\n\")},\n    [\"_fields_by_index\"] = { ${klass.properties.map(prop => `\"${prop.name}\"`).join(\", \")} },\n}${inherits})`;\n}\n\n/**\n * Generate a complete class file with requires (for individual file mode)\n */\nfunction generateClass(klass: Class, namespace: string, allClasses: Class[]) {\n    const allRefs: Property[] = [];\n    klass.properties.forEach(property => {\n        let type = property.type;\n\n        // keep all refs list\n        if ((type === \"ref\" || type === \"array\" || type === \"map\")) {\n            allRefs.push(property);\n        }\n    });\n\n    const localRequires = allRefs.\n        filter(ref => ref.childType && typeMaps[ref.childType] === undefined).\n        map(ref => ref.childType).\n        concat(getInheritanceTree(klass, allClasses, false).map(klass => klass.name)).\n        filter(distinct).\n        map(childType => `local ${childType} = require '${(namespace ? `${namespace}.` : '')}${childType}'`).\n        join(\"\\n\");\n\n    return `${getCommentHeader().replace(/\\/\\//mg, \"--\")}\n\n${COMMON_IMPORTS}${hasQuantized([klass]) ? `\\n${QUANTIZE_IMPORT}` : \"\"}\n${localRequires}\n\n${generateClassBody(klass)}\n\nreturn ${klass.name}\n`;\n}\n\nfunction generatePropertyDeclaration(prop: Property) {\n    let typeArgs: string;\n\n    if (prop.quantized) {\n        // resolve at class-definition time — the decoder expects `.wire`/`.span`\n        const q = prop.quantized;\n        typeArgs = `{ quantized = quantize.resolve({ min = ${q.min}, max = ${q.max}, bits = ${q.bits}, mode = ${q.wrap ? 1 : 0} }) }`;\n\n    } else if (prop.childType) {\n        const isUpcaseFirst = prop.childType.match(/^[A-Z]/);\n\n        if (isUpcaseFirst) {\n            typeArgs += `${prop.childType}`;\n\n        } else {\n            typeArgs += `\"${prop.childType}\"`;\n        }\n\n        if(prop.type === \"ref\") {\n            typeArgs = (isUpcaseFirst)\n                ? `${prop.childType}`\n                : `\"${prop.childType}\"`;\n\n        } else {\n            typeArgs = (isUpcaseFirst)\n                ? `{ ${prop.type} = ${prop.childType} }`\n                : `{ ${prop.type} = \"${prop.childType}\" }`;\n        }\n\n    } else {\n        typeArgs = `\"${prop.type}\"`;\n    }\n\n    return `    [\"${prop.name}\"] = ${typeArgs}`;\n}\n\nfunction getLUATypeAnnotation(prop: Property) {\n    if (prop.type === \"quantized\") {\n        return \"number\";\n\n    } else if (prop.type === \"ref\") {\n        return prop.childType;\n\n    } else if (prop.type === \"array\") {\n        return \"ArraySchema\";\n\n    } else if (prop.type === \"map\") {\n        return \"MapSchema\";\n\n    } else {\n        return typeMaps[prop.type];\n    }\n}","import { Class, Property, File, getCommentHeader, getInheritanceTree, Context, resolveQuantized } from \"../types.js\";\nimport { GenerateOptions } from \"../api.js\";\n\nexport const name = \"C\";\n\n/**\n * Type mappings for C\n */\nconst typeMaps: { [key: string]: string } = {\n    \"string\": \"char*\",\n    \"number\": \"double\",\n    \"boolean\": \"bool\",\n    \"int8\": \"int8_t\",\n    \"uint8\": \"uint8_t\",\n    \"int16\": \"int16_t\",\n    \"uint16\": \"uint16_t\",\n    \"int32\": \"int32_t\",\n    \"uint32\": \"uint32_t\",\n    \"int64\": \"int64_t\",\n    \"uint64\": \"uint64_t\",\n    \"float32\": \"float\",\n    \"float64\": \"double\",\n    \"quantized\": \"double\",\n};\n\n/**\n * Colyseus field type enum mappings\n */\nconst fieldTypeMaps: { [key: string]: string } = {\n    \"string\": \"COLYSEUS_FIELD_STRING\",\n    \"number\": \"COLYSEUS_FIELD_NUMBER\",\n    \"boolean\": \"COLYSEUS_FIELD_BOOLEAN\",\n    \"int8\": \"COLYSEUS_FIELD_INT8\",\n    \"uint8\": \"COLYSEUS_FIELD_UINT8\",\n    \"int16\": \"COLYSEUS_FIELD_INT16\",\n    \"uint16\": \"COLYSEUS_FIELD_UINT16\",\n    \"int32\": \"COLYSEUS_FIELD_INT32\",\n    \"uint32\": \"COLYSEUS_FIELD_UINT32\",\n    \"int64\": \"COLYSEUS_FIELD_INT64\",\n    \"uint64\": \"COLYSEUS_FIELD_UINT64\",\n    \"float32\": \"COLYSEUS_FIELD_FLOAT32\",\n    \"float64\": \"COLYSEUS_FIELD_FLOAT64\",\n    \"ref\": \"COLYSEUS_FIELD_REF\",\n    \"array\": \"COLYSEUS_FIELD_ARRAY\",\n    \"map\": \"COLYSEUS_FIELD_MAP\",\n    \"quantized\": \"COLYSEUS_FIELD_QUANTIZED\",\n};\n\nconst COMMON_INCLUDES = `#include \"colyseus/schema/types.h\"\n#include \"colyseus/schema/collections.h\"\n#include <stdlib.h>\n#include <stddef.h>\n#include <stdbool.h>`;\n\n/**\n * Native C Code Generator\n */\n\nconst toSnakeCase = (s: string) => {\n    return s.replace(/([A-Z])/g, (match, p1, offset) =>\n        (offset > 0 ? '_' : '') + p1.toLowerCase()\n    );\n};\n\nconst distinct = (value: string, index: number, self: string[]) =>\n    self.indexOf(value) === index;\n\n/**\n * Generate individual files for each class\n */\nexport function generate(context: Context, options: GenerateOptions): File[] {\n    return context.classes.map(klass => ({\n        name: toSnakeCase(klass.name) + \".h\",\n        content: generateClass(klass, options.namespace, context.classes)\n    }));\n}\n\n/**\n * Generate a single bundled header file containing all classes\n */\nexport function renderBundle(context: Context, options: GenerateOptions): File {\n    const fileName = options.namespace ? `${toSnakeCase(options.namespace)}.h` : \"schema.h\";\n    const guardName = `__SCHEMA_CODEGEN_${(options.namespace || \"SCHEMA\").toUpperCase()}_H__`;\n\n    const classBodies = context.classes.map(klass =>\n        generateClassBody(klass, context.classes)\n    ).join(\"\\n\\n\");\n\n    const content = `${getCommentHeader()}\n#ifndef ${guardName}\n#define ${guardName} 1\n\n${COMMON_INCLUDES}\n\n${classBodies}\n\n#endif\n`;\n\n    return { name: fileName, content };\n}\n\n/**\n * Generate just the class body (without guards/includes) for bundling\n */\nfunction generateClassBody(klass: Class, allClasses: Class[]): string {\n    const snakeName = toSnakeCase(klass.name);\n    const typeName = `${snakeName}_t`;\n    const allProperties = getAllProperties(klass, allClasses);\n\n    return `${generateTypedef(klass, typeName, allClasses)}\n\n${generateFieldsArray(klass, typeName, snakeName, allProperties)}\n\n${generateCreateFunction(snakeName, typeName)}\n\n${generateDestroyFunction(klass, snakeName, typeName, allProperties)}\n\n${generateVtable(klass, snakeName, typeName, allProperties)}`;\n}\n\n/**\n * Generate a complete class file with guards/includes (for individual file mode)\n */\nfunction generateClass(klass: Class, namespace: string, allClasses: Class[]) {\n    const snakeName = toSnakeCase(klass.name);\n    const typeName = `${snakeName}_t`;\n    const guardName = `__SCHEMA_CODEGEN_${klass.name.toUpperCase()}_H__`;\n\n    const allRefs: Property[] = [];\n\n    klass.properties.forEach(property => {\n        if (property.type === \"ref\" || property.type === \"array\" || property.type === \"map\") {\n            allRefs.push(property);\n        }\n    });\n\n    // Generate includes for referenced schema types\n    const refIncludes = allRefs\n        .filter(ref => ref.childType && typeMaps[ref.childType] === undefined)\n        .map(ref => ref.childType)\n        .concat(getInheritanceTree(klass, allClasses, false).map(k => k.name))\n        .filter(distinct)\n        .map(childType => `#include \"${toSnakeCase(childType)}.h\"`)\n        .join(\"\\n\");\n\n    return `${getCommentHeader()}\n#ifndef ${guardName}\n#define ${guardName} 1\n\n${COMMON_INCLUDES}\n${refIncludes ? `\\n${refIncludes}\\n` : \"\"}\n${generateClassBody(klass, allClasses)}\n\n#endif\n`;\n}\n\nfunction generateTypedef(klass: Class, typeName: string, allClasses: Class[]) {\n    const allProperties = getAllProperties(klass, allClasses);\n\n    const fields = allProperties.map(prop => {\n        const cType = getCType(prop);\n        return `    ${cType} ${prop.name};`;\n    }).join(\"\\n\");\n\n    return `typedef struct {\n    colyseus_schema_t __base;\n${fields}\n} ${typeName};`;\n}\n\nfunction getCType(prop: Property): string {\n    if (prop.type === \"ref\") {\n        return `${toSnakeCase(prop.childType)}_t*`;\n    } else if (prop.type === \"array\") {\n        if (typeMaps[prop.childType]) {\n            return `colyseus_array_schema_t*`;\n        } else {\n            return `colyseus_array_schema_t*`;\n        }\n    } else if (prop.type === \"map\") {\n        if (typeMaps[prop.childType]) {\n            return `colyseus_map_schema_t*`;\n        } else {\n            return `colyseus_map_schema_t*`;\n        }\n    } else {\n        return typeMaps[prop.type] || `${toSnakeCase(prop.type)}_t*`;\n    }\n}\n\nfunction getFieldType(prop: Property): string {\n    return fieldTypeMaps[prop.type] || \"COLYSEUS_FIELD_REF\";\n}\n\nfunction getFieldTypeString(prop: Property): string {\n    // Always return the type itself (ref, array, map, string, number, etc.)\n    return prop.type;\n}\n\nfunction generateFieldsArray(klass: Class, typeName: string, snakeName: string, allProperties: Property[]) {\n    if (allProperties.length === 0) {\n        return `static const colyseus_field_t ${snakeName}_fields[] = {};`;\n    }\n\n    // one pre-resolved static descriptor per quantized field\n    const descriptors = allProperties\n        .filter(prop => prop.quantized)\n        .map(prop => {\n            const q = prop.quantized;\n            const { range, span } = resolveQuantized(q);\n            return `static const colyseus_quantized_descriptor_t ${snakeName}_${prop.name}_quantized = {${q.min}, ${q.max}, ${range}, ${span}, ${q.bits}, ${q.wrap}};`;\n        });\n\n    const fields = allProperties.map((prop, i) => {\n        const fieldType = getFieldType(prop);\n        const typeString = getFieldTypeString(prop);\n\n        let vtableRef = \"NULL\";\n        let childPrimitiveRef = \"NULL\";\n        let quantizedRef = \"NULL\";\n\n        if (prop.type === \"ref\" && prop.childType && !typeMaps[prop.childType]) {\n            const childSnake = toSnakeCase(prop.childType);\n            vtableRef = `&${childSnake}_vtable`;\n        } else if ((prop.type === \"array\" || prop.type === \"map\") && prop.childType && !typeMaps[prop.childType]) {\n            const childSnake = toSnakeCase(prop.childType);\n            vtableRef = `&${childSnake}_vtable`;\n        } else if ((prop.type === \"array\" || prop.type === \"map\") && prop.childType) {\n            // collection of primitives — the decoder strcmp()s this to pick the reader\n            childPrimitiveRef = `\"${prop.childType}\"`;\n        } else if (prop.quantized) {\n            quantizedRef = `&${snakeName}_${prop.name}_quantized`;\n        }\n\n        return `    {${prop.index}, \"${prop.name}\", ${fieldType}, \"${typeString}\", offsetof(${typeName}, ${prop.name}), ${vtableRef}, ${childPrimitiveRef}, ${quantizedRef}}`;\n    }).join(\",\\n\");\n\n    return `${descriptors.length ? descriptors.join(\"\\n\") + \"\\n\\n\" : \"\"}static const colyseus_field_t ${snakeName}_fields[] = {\n${fields}\n};`;\n}\n\nfunction generateCreateFunction(snakeName: string, typeName: string) {\n    return `static ${typeName}* ${snakeName}_create(void) {\n    ${typeName}* instance = calloc(1, sizeof(${typeName}));\n    return instance;\n}`;\n}\n\nfunction generateDestroyFunction(klass: Class, snakeName: string, typeName: string, allProperties: Property[]) {\n    const freeStatements: string[] = [];\n\n    allProperties.forEach(prop => {\n        if (prop.type === \"string\") {\n            freeStatements.push(`    if (instance->${prop.name}) free(instance->${prop.name});`);\n        } else if (prop.type === \"ref\") {\n            if (typeMaps[prop.childType]) {\n                freeStatements.push(`    if (instance->${prop.name}) free(instance->${prop.name});`);\n            } else {\n                const childSnake = toSnakeCase(prop.childType);\n                freeStatements.push(`    if (instance->${prop.name}) ${childSnake}_destroy((colyseus_schema_t*)instance->${prop.name});`);\n            }\n        } else if (prop.type === \"array\" || prop.type === \"map\") {\n            // arrays and maps are scheduled for destruction at the decoder level\n            // freeStatements.push(`    if (instance->${prop.name}) colyseus_${prop.type}_destroy(instance->${prop.name});`);\n        }\n    });\n\n    const freeCode = freeStatements.length > 0 ? freeStatements.join(\"\\n\") + \"\\n\" : \"\";\n\n    return `static void ${snakeName}_destroy(colyseus_schema_t* schema) {\n    ${typeName}* instance = (${typeName}*)schema;\n${freeCode}    free(instance);\n}`;\n}\n\nfunction generateVtable(klass: Class, snakeName: string, typeName: string, allProperties: Property[]) {\n    const fieldCount = allProperties.length;\n\n    return `static const colyseus_schema_vtable_t ${snakeName}_vtable = {\n    \"${klass.name}\",\n    sizeof(${typeName}),\n    (colyseus_schema_t* (*)(void))${snakeName}_create,\n    ${snakeName}_destroy,\n    ${snakeName}_fields,\n    ${fieldCount}\n};`;\n}\n\nfunction getAllProperties(klass: Class, allClasses: Class[]) {\n    let properties: Property[] = [];\n\n    getInheritanceTree(klass, allClasses).reverse().forEach((k) => {\n        properties = properties.concat(k.properties);\n    });\n\n    return properties;\n}\n","import {\n    Class,\n    Property,\n    File,\n    getCommentHeader,\n    getInheritanceTree,\n    Context,\n    Enum,\n} from \"../types.js\";\nimport { GenerateOptions } from \"../api.js\";\n\nexport const name = \"GDScript\";\n\n/**\n * Type mappings from schema types to GDScript Colyseus.Schema type constants\n */\nconst typeMaps: { [key: string]: string } = {\n    \"string\": \"Colyseus.Schema.STRING\",\n    \"number\": \"Colyseus.Schema.NUMBER\",\n    \"boolean\": \"Colyseus.Schema.BOOLEAN\",\n    \"int8\": \"Colyseus.Schema.INT8\",\n    \"uint8\": \"Colyseus.Schema.UINT8\",\n    \"int16\": \"Colyseus.Schema.INT16\",\n    \"uint16\": \"Colyseus.Schema.UINT16\",\n    \"int32\": \"Colyseus.Schema.INT32\",\n    \"uint32\": \"Colyseus.Schema.UINT32\",\n    \"int64\": \"Colyseus.Schema.INT64\",\n    \"uint64\": \"Colyseus.Schema.UINT64\",\n    \"float32\": \"Colyseus.Schema.FLOAT32\",\n    \"float64\": \"Colyseus.Schema.FLOAT64\",\n};\n\nconst containerMaps: { [key: string]: string } = {\n    \"array\": \"Colyseus.Schema.ARRAY\",\n    \"map\": \"Colyseus.Schema.MAP\",\n    \"ref\": \"Colyseus.Schema.REF\",\n};\n\nconst distinct = (value: string, index: number, self: string[]) =>\n    self.indexOf(value) === index;\n\n/**\n * GDScript Code Generator\n */\n\n/**\n * Generate individual files for each class\n */\nexport function generate(context: Context, options: GenerateOptions): File[] {\n    // Enrich typeMaps with enums\n    context.enums.forEach((structure) => {\n        typeMaps[structure.name] = structure.name;\n    });\n\n    return [\n        ...context.classes.map(klass => ({\n            name: `${klass.name}.gd`,\n            content: generateClass(klass, options.namespace, context.classes)\n        })),\n        ...context.enums.filter(structure => structure.name !== 'OPERATION').map((structure) => ({\n            name: `${structure.name}.gd`,\n            content: generateEnum(structure, options.namespace),\n        })),\n    ];\n}\n\n/**\n * Generate a single bundled file containing all classes and enums\n */\nexport function renderBundle(context: Context, options: GenerateOptions): File {\n    const fileName = options.namespace ? `${options.namespace}.gd` : \"schema.gd\";\n\n    // Enrich typeMaps with enums\n    context.enums.forEach((structure) => {\n        typeMaps[structure.name] = structure.name;\n    });\n\n    const enumBodies = context.enums\n        .filter(structure => structure.name !== 'OPERATION')\n        .map(e => generateEnumBody(e));\n\n    const classBodies = context.classes.map(klass => generateClassBody(klass));\n\n    const content = `${getCommentHeader(\"#\")}\n\n${enumBodies.length > 0 ? enumBodies.join(\"\\n\\n\") + \"\\n\\n\" : \"\"}${classBodies.join(\"\\n\\n\")}\n`;\n\n    return { name: fileName, content };\n}\n\n/**\n * Generate just the class body (without preload) for bundling\n */\nfunction generateClassBody(klass: Class): string {\n    // Determine parent class\n    const parentClass = (klass.extends !== \"Schema\")\n        ? klass.extends\n        : \"Colyseus.Schema\";\n\n    const properties = klass.properties;\n\n    const fieldsContent = properties.length > 0\n        ? properties.map(prop => generateFieldDefinition(prop)).join(\",\\n\") + \",\"\n        : \"\";\n\n    // Generate _to_string() method\n    const toStringMethod = generateToStringMethod(klass.name, properties);\n\n    return `class ${klass.name} extends ${parentClass}:\n\tstatic func definition():\n\t\treturn [\n${fieldsContent}\n\t\t]\n\n${toStringMethod}`;\n}\n\n/**\n * Generate _to_string() method for the class\n */\nfunction generateToStringMethod(className: string, properties: Property[]): string {\n    const fieldNames = properties.map(prop => prop.name);\n    const allFields = [\"__ref_id\", ...fieldNames];\n\n    const formatParts = allFields.map(name => `${name}: %s`).join(\", \");\n    const formatString = `${className}(${formatParts})`;\n\n    const selfReferences = allFields.map(name => `self.${name}`).join(\", \");\n\n    return `\\tfunc _to_string() -> String:\n\t\treturn \"${formatString}\" % [${selfReferences}]`;\n}\n\n/**\n * Generate a complete class file with preload (for individual file mode)\n */\nfunction generateClass(klass: Class, namespace: string, allClasses: Class[]) {\n    const allRefs: Property[] = [];\n    klass.properties.forEach(property => {\n        let type = property.type;\n\n        // Keep all refs list\n        if ((type === \"ref\" || type === \"array\" || type === \"map\")) {\n            allRefs.push(property);\n        }\n    });\n\n    // Get required preloads for referenced types\n    const preloads = allRefs\n        .filter(ref => ref.childType && typeMaps[ref.childType] === undefined)\n        .map(ref => ref.childType)\n        .concat(getInheritanceTree(klass, allClasses, false).map(klass => klass.name))\n        .filter(distinct)\n        .map(childType => `const ${childType} = preload(\"${childType}.gd\")`)\n        .join(\"\\n\");\n\n    return `${getCommentHeader(\"#\")}\n\n${preloads ? preloads + \"\\n\\n\" : \"\"}${generateClassBody(klass)}\n`;\n}\n\n/**\n * Generate a field definition for the definition() array\n */\nfunction generateFieldDefinition(prop: Property): string {\n    let args: string[];\n\n    if (prop.childType) {\n        const isUpcaseFirst = prop.childType.match(/^[A-Z]/);\n\n        // Array or Map container\n        const containerType = containerMaps[prop.type];\n        const childTypeRef = isUpcaseFirst ? prop.childType : typeMaps[prop.childType] || `\"${prop.childType}\"`;\n        args = [`\"${prop.name}\"`, containerType, childTypeRef];\n    } else {\n        // Primitive type\n        const typeRef = typeMaps[prop.type] || `\"${prop.type}\"`;\n        args = [`\"${prop.name}\"`, typeRef];\n    }\n\n    return `\\t\\t\\tColyseus.Schema.Field.new(${args.join(\", \")})`;\n}\n\n/**\n * Generate just the enum body for bundling\n */\nfunction generateEnumBody(_enum: Enum): string {\n    const enumValues = _enum.properties.map((prop, index) => {\n        let value: any;\n\n        if (prop.type) {\n            if (isNaN(Number(prop.type))) {\n                value = `\"${prop.type}\"`;\n            } else {\n                value = Number(prop.type);\n            }\n        } else {\n            value = index;\n        }\n\n        return `\\t\"${prop.name}\": ${value},`;\n    }).join(\"\\n\");\n\n    return `const ${_enum.name} = {\n${enumValues}\n}`;\n}\n\n/**\n * Generate a complete enum file (for individual file mode)\n */\nfunction generateEnum(_enum: Enum, _namespace: string) {\n    return `${getCommentHeader(\"#\")}\n\n${generateEnumBody(_enum)}\n`;\n}\n","import {\n    Class,\n    Property,\n    File,\n    getCommentHeader,\n    Interface,\n    Enum,\n    Context,\n} from \"../types.js\";\nimport { GenerateOptions } from \"../api.js\";\n\nexport const name = \"Dart/Flutter\";\n\n/**\n * Dart types for interface (plain message) properties. Schema scalar getters\n * don't use this table: the `colyseus` package reads every numeric field as\n * `double` through `SchemaView`, so all numeric schema types collapse there.\n */\nconst typeMaps: { [key: string]: string } = {\n    \"string\": \"String\",\n    \"number\": \"double\",\n    \"boolean\": \"bool\",\n    \"int8\": \"double\",\n    \"uint8\": \"double\",\n    \"int16\": \"double\",\n    \"uint16\": \"double\",\n    \"int32\": \"double\",\n    \"uint32\": \"double\",\n    \"int64\": \"double\",\n    \"uint64\": \"double\",\n    \"float32\": \"double\",\n    \"float64\": \"double\",\n}\n\nconst enumNames = new Set<string>();\n\nconst COMMON_IMPORTS = `import 'package:colyseus/colyseus.dart';`;\n\n// Field names come from the server schema and may not be lowerCamelCase.\nconst LINT_HEADER = `// ignore_for_file: non_constant_identifier_names, constant_identifier_names`;\n\nconst distinct = (value: string, index: number, self: string[]) =>\n    self.indexOf(value) === index;\n\nconst isSchemaType = (childType: string) =>\n    childType !== undefined && /^[A-Z]/.test(childType) && !enumNames.has(childType);\n\n/**\n * Dart Code Generator\n *\n * Emits typed façades over the `colyseus` Flutter package's runtime: one\n * `SchemaRef` subclass per schema, with typed getters over the shared native\n * handle. Collection getters return `MapSchema<T>` / `ArraySchema<T>`, which\n * also carry the field they came from — that is what\n * `callbacks.onAdd(state.players, ...)` registers against.\n */\n\n/**\n * Generate individual files for each class/interface/enum\n */\nexport function generate(context: Context, options: GenerateOptions): File[] {\n    context.enums.forEach((structure) => enumNames.add(structure.name));\n\n    return [\n        ...context.classes.map(klass => ({\n            name: `${klass.name}.dart`,\n            content: generateClass(klass, context.classes)\n        })),\n        ...context.interfaces.map(structure => ({\n            name: `${structure.name}.dart`,\n            content: generateInterface(structure),\n        })),\n        ...context.enums.filter(structure => structure.name !== 'OPERATION').map((structure) => ({\n            name: `${structure.name}.dart`,\n            content: generateEnum(structure),\n        })),\n    ];\n}\n\n/**\n * Generate a single bundled file containing all classes, interfaces, and enums\n */\nexport function renderBundle(context: Context, options: GenerateOptions): File {\n    const fileName = options.namespace ? `${options.namespace}.dart` : \"schema.dart\";\n\n    context.enums.forEach((structure) => enumNames.add(structure.name));\n\n    const bodies = [\n        ...context.classes.map(klass => generateClassBody(klass, context.classes)),\n        ...context.interfaces.map(iface => generateInterfaceBody(iface)),\n        ...context.enums\n            .filter(structure => structure.name !== 'OPERATION')\n            .map(e => generateEnumBody(e)),\n    ].join(\"\\n\\n\");\n\n    const content = `${getCommentHeader()}\n${LINT_HEADER}\n\n${COMMON_IMPORTS}\n\n${bodies}\n`;\n\n    return { name: fileName, content };\n}\n\n/**\n * Generate just the class body (without imports) for bundling\n */\nfunction generateClassBody(klass: Class, allClasses: Class[]): string {\n    // `SchemaRef` is a `base` class, so subclasses carry a modifier: `base`\n    // when the class is itself extended (extendable from any file), `final`\n    // otherwise.\n    const isExtended = allClasses.some(other => other.extends === klass.name);\n    const modifier = isExtended ? \"base\" : \"final\";\n    const parent = (klass.extends === \"Schema\") ? \"SchemaRef\" : klass.extends;\n\n    const getters = klass.properties\n        .map(prop => generateGetter(prop))\n        .filter(Boolean)\n        .join(\"\\n\");\n\n    return `${modifier} class ${klass.name} extends ${parent} {\n  ${klass.name}(super.handle);\n\n${getters}\n}`;\n}\n\n/**\n * Generate a complete class file with imports (for individual file mode)\n */\nfunction generateClass(klass: Class, allClasses: Class[]) {\n    const localRefs = klass.properties\n        .filter(prop => isSchemaType(prop.childType))\n        .map(prop => prop.childType)\n        .concat(klass.extends !== \"Schema\" ? [klass.extends] : [])\n        .filter(distinct)\n        .filter(ref => ref !== klass.name)\n        .map(ref => `import '${ref}.dart';`)\n        .join(\"\\n\");\n\n    return `${getCommentHeader()}\n${LINT_HEADER}\n\n${COMMON_IMPORTS}\n${localRefs ? localRefs + \"\\n\" : \"\"}\n${generateClassBody(klass, allClasses)}\n`;\n}\n\n/**\n * The Dart type a scalar schema field reads as, or undefined when the field\n * can only be read dynamically (enum-typed and unknown types).\n */\nfunction scalarDartType(type: string): string | undefined {\n    if (type === \"string\") { return \"String\"; }\n    if (type === \"boolean\") { return \"bool\"; }\n    if (typeMaps[type] === \"double\" || type === \"quantized\" || type === \"number\") { return \"double\"; }\n    return undefined;\n}\n\nfunction generateGetter(prop: Property): string {\n    const deprecation = (prop.deprecated)\n        ? `  @Deprecated(\"field '${prop.name}' is deprecated.\")\\n`\n        : '';\n\n    let body: string;\n\n    if (prop.childType && isSchemaType(prop.childType)) {\n        if (prop.type === \"ref\") {\n            body = `  ${prop.childType}? get ${prop.name} => refOf('${prop.name}', ${prop.childType}.new);`;\n        } else if (prop.type === \"map\") {\n            body = `  MapSchema<${prop.childType}> get ${prop.name} => mapOf('${prop.name}', ${prop.childType}.new);`;\n        } else {\n            body = `  ArraySchema<${prop.childType}> get ${prop.name} => arrayOf('${prop.name}', ${prop.childType}.new);`;\n        }\n    } else if (prop.childType) {\n        const child = typeMaps[prop.childType] ?? \"dynamic\";\n        if (prop.type === \"map\") {\n            body = `  MapSchema<${child}> get ${prop.name} => primitiveMapOf('${prop.name}');`;\n        } else if (prop.type === \"array\") {\n            body = `  ArraySchema<${child}> get ${prop.name} => primitiveArrayOf('${prop.name}');`;\n        } else {\n            // A \"ref\" with a primitive child has no typed shape to offer.\n            body = `  dynamic get ${prop.name} => this['${prop.name}'];`;\n        }\n    } else {\n        const dartType = scalarDartType(prop.type);\n        if (dartType === \"String\") {\n            body = `  String get ${prop.name} => view.getString('${prop.name}') ?? '';`;\n        } else if (dartType === \"bool\") {\n            body = `  bool get ${prop.name} => view.getBool('${prop.name}');`;\n        } else if (dartType === \"double\") {\n            body = `  double get ${prop.name} => view['${prop.name}'];`;\n        } else {\n            // Enum-typed or unknown: read through the untyped accessor.\n            body = `  dynamic get ${prop.name} => this['${prop.name}'];`;\n        }\n    }\n\n    return deprecation + body;\n}\n\n/**\n * Generate just the interface body for bundling\n */\nfunction generateInterfaceBody(struct: Interface): string {\n    const fields = struct.properties\n        .map(prop => `  ${getInterfaceType(prop)}? ${prop.name};`)\n        .join(\"\\n\");\n\n    return `class ${struct.name} {\n${fields}\n}`;\n}\n\n/**\n * Generate a complete interface file (for individual file mode)\n */\nfunction generateInterface(struct: Interface) {\n    const localRefs = struct.properties\n        .filter(prop => isSchemaType(prop.childType ?? (typeMaps[prop.type] ? undefined : prop.type)))\n        .map(prop => prop.childType ?? prop.type)\n        .filter(distinct)\n        .map(ref => `import '${ref}.dart';`)\n        .join(\"\\n\");\n\n    return `${getCommentHeader()}\n${LINT_HEADER}\n${localRefs ? \"\\n\" + localRefs + \"\\n\" : \"\"}\n${generateInterfaceBody(struct)}\n`;\n}\n\nfunction getInterfaceType(prop: Property): string {\n    const child = typeMaps[prop.childType] ?? prop.childType ?? \"dynamic\";\n    switch (prop.type) {\n        case \"array\": return `List<${child}>`;\n        case \"map\": return `Map<String, ${child}>`;\n        default: return typeMaps[prop.type] ?? prop.type ?? \"dynamic\";\n    }\n}\n\n/**\n * Generate just the enum body for bundling: a namespace of consts, since\n * Colyseus enums may carry string or float values Dart enums can't.\n */\nfunction generateEnumBody(_enum: Enum): string {\n    const members = _enum.properties\n        .map((prop, i) => {\n            let value: string;\n            if (prop.type) {\n                value = isNaN(Number(prop.type)) ? `\"${prop.type}\"` : `${Number(prop.type)}`;\n            } else {\n                value = `${i}`;\n            }\n            return `  static const ${prop.name} = ${value};`;\n        })\n        .join(\"\\n\");\n\n    return `abstract final class ${_enum.name} {\n${members}\n}`;\n}\n\n/**\n * Generate a complete enum file (for individual file mode)\n */\nfunction generateEnum(_enum: Enum) {\n    return `${getCommentHeader()}\n${LINT_HEADER}\n\n${generateEnumBody(_enum)}\n`;\n}\n","import {\n    Class,\n    Property,\n    File,\n    getCommentHeader,\n    Interface,\n    Enum,\n    Context,\n} from \"../types.js\";\nimport { GenerateOptions } from \"../api.js\";\n\nexport const name = \"Swift\";\n\n/**\n * Swift types for interface (plain message) properties. Schema getters do not\n * use this table: the `Colyseus` package reads every numeric field as `Double`\n * through `SchemaView`, so all numeric schema types collapse there.\n */\nconst typeMaps: { [key: string]: string } = {\n    \"string\": \"String\",\n    \"number\": \"Double\",\n    \"boolean\": \"Bool\",\n    \"int8\": \"Int\",\n    \"uint8\": \"Int\",\n    \"int16\": \"Int\",\n    \"uint16\": \"Int\",\n    \"int32\": \"Int\",\n    \"uint32\": \"Int\",\n    \"int64\": \"Int\",\n    \"uint64\": \"Int\",\n    \"float32\": \"Double\",\n    \"float64\": \"Double\",\n}\n\nconst enumNames = new Set<string>();\n\nconst COMMON_IMPORTS = `import Colyseus`;\n\nconst distinct = (value: string, index: number, self: string[]) =>\n    self.indexOf(value) === index;\n\nconst isSchemaType = (childType: string) =>\n    childType !== undefined && /^[A-Z]/.test(childType) && !enumNames.has(childType);\n\n/**\n * Swift Code Generator\n *\n * Emits typed façades over the `Colyseus` package's runtime: one `SchemaRef`\n * subclass per schema, whose properties read through the shared handle on the\n * instance the core decoded. Nothing is copied and nothing is stored, so a\n * generated class stays correct as patches arrive.\n *\n * Collection properties return `MapSchema<T>` / `ArraySchema<T>`, which carry\n * the field they came from — that is what `callbacks.onAdd(state.players, …)`\n * registers against.\n */\n\n/**\n * Generate individual files for each class/interface/enum\n */\nexport function generate(context: Context, options: GenerateOptions): File[] {\n    context.enums.forEach((structure) => enumNames.add(structure.name));\n\n    return [\n        ...context.classes.map(klass => ({\n            name: `${klass.name}.swift`,\n            content: generateFile(generateClassBody(klass, context.classes, !!options.namespace), options)\n        })),\n        ...context.interfaces.map(structure => ({\n            name: `${structure.name}.swift`,\n            content: generateFile(generateInterfaceBody(structure), options),\n        })),\n        ...context.enums.filter(structure => structure.name !== 'OPERATION').map((structure) => ({\n            name: `${structure.name}.swift`,\n            content: generateFile(generateEnumBody(structure), options),\n        })),\n    ];\n}\n\n/**\n * Generate a single bundled file containing all classes, interfaces, and enums\n */\nexport function renderBundle(context: Context, options: GenerateOptions): File {\n    const fileName = options.namespace ? `${options.namespace}.swift` : \"Schema.swift\";\n\n    context.enums.forEach((structure) => enumNames.add(structure.name));\n\n    const bodies = [\n        ...context.classes.map(klass => generateClassBody(klass, context.classes, !!options.namespace)),\n        ...context.interfaces.map(iface => generateInterfaceBody(iface)),\n        ...context.enums\n            .filter(structure => structure.name !== 'OPERATION')\n            .map(e => generateEnumBody(e)),\n    ].join(\"\\n\\n\");\n\n    return { name: fileName, content: generateFile(bodies, options) };\n}\n\n/**\n * Swift has no namespaces, so one stands in as a caseless enum. Declarations\n * go inside it through an extension, which works the same whether they are\n * bundled into one file or split across many.\n */\nfunction generateFile(body: string, options: GenerateOptions): string {\n    const header = `${getCommentHeader()}\n\n${COMMON_IMPORTS}\n`;\n\n    if (!options.namespace) {\n        return `${header}\n${body}\n`;\n    }\n\n    return `${header}\npublic enum ${options.namespace} {}\n\nextension ${options.namespace} {\n${indent(body)}\n}\n`;\n}\n\nfunction indent(text: string): string {\n    return text\n        .split(\"\\n\")\n        .map(line => (line.length > 0 ? `    ${line}` : line))\n        .join(\"\\n\");\n}\n\nfunction generateClassBody(klass: Class, allClasses: Class[], namespaced: boolean): string {\n    // A class nobody extends is final. One that is extended stays open so a\n    // consumer in another module can subclass it — except inside a namespace,\n    // where `open` conflicts with the extension's own access level and the\n    // subclass is generated alongside it anyway.\n    const isExtended = allClasses.some(other => other.extends === klass.name);\n    const modifier = isExtended ? (namespaced ? \"public\" : \"open\") : \"public final\";\n    const parent = (klass.extends === \"Schema\") ? \"SchemaRef\" : klass.extends;\n\n    const properties = klass.properties\n        .map(prop => generateProperty(prop))\n        .filter(Boolean)\n        .join(\"\\n\");\n\n    // Swift does not carry an `@unchecked Sendable` conformance across module\n    // boundaries, so every subclass has to restate it. What it asserts is the\n    // SDK's own contract: decoded state is read where it is pumped.\n    return `${modifier} class ${klass.name}: ${parent}, @unchecked Sendable {\n${properties}\n}`;\n}\n\n/**\n * The Swift type a scalar schema field reads as, or undefined when the field\n * can only be read dynamically (enum-typed and unknown types).\n */\nfunction scalarSwiftType(type: string): string | undefined {\n    if (type === \"string\") { return \"String\"; }\n    if (type === \"boolean\") { return \"Bool\"; }\n    if (typeMaps[type] === \"Double\" || typeMaps[type] === \"Int\" || type === \"quantized\" || type === \"number\") {\n        return \"Double\";\n    }\n    return undefined;\n}\n\nfunction generateProperty(prop: Property): string {\n    const deprecation = (prop.deprecated)\n        ? `    @available(*, deprecated, message: \"field '${prop.name}' is deprecated.\")\\n`\n        : '';\n\n    const escaped = escapeName(prop.name);\n    let body: string;\n\n    if (prop.childType && isSchemaType(prop.childType)) {\n        if (prop.type === \"ref\") {\n            body = `    public var ${escaped}: ${prop.childType}? { refOf(\"${prop.name}\") }`;\n        } else if (prop.type === \"map\") {\n            body = `    public var ${escaped}: MapSchema<${prop.childType}> { mapOf(\"${prop.name}\") }`;\n        } else {\n            body = `    public var ${escaped}: ArraySchema<${prop.childType}> { arrayOf(\"${prop.name}\") }`;\n        }\n    } else if (prop.childType) {\n        // A collection of primitives. Everything numeric reads as Double, the\n        // same collapse the scalar getters make.\n        const child = typeMaps[prop.childType] === \"String\" ? \"String\" : \"Double\";\n        if (prop.type === \"map\") {\n            body = `    public var ${escaped}: MapSchema<${child}> { mapOf(\"${prop.name}\") }`;\n        } else if (prop.type === \"array\") {\n            body = `    public var ${escaped}: ArraySchema<${child}> { arrayOf(\"${prop.name}\") }`;\n        } else {\n            // A \"ref\" with a primitive child has no typed shape to offer.\n            body = `    public var ${escaped}: Double { view[\"${prop.name}\"] }`;\n        }\n    } else {\n        const swiftType = scalarSwiftType(prop.type);\n        if (swiftType === \"String\") {\n            body = `    public var ${escaped}: String { view.string(\"${prop.name}\") ?? \"\" }`;\n        } else if (swiftType === \"Bool\") {\n            body = `    public var ${escaped}: Bool { view.bool(\"${prop.name}\") }`;\n        } else if (swiftType === \"Double\") {\n            body = `    public var ${escaped}: Double { view[\"${prop.name}\"] }`;\n        } else {\n            // Enum-typed or unknown: read as the number the wire carries.\n            body = `    public var ${escaped}: Double { view[\"${prop.name}\"] }`;\n        }\n    }\n\n    return deprecation + body;\n}\n\n/**\n * Message payloads are plain structs rather than façades: they arrive as\n * msgpack, not as decoded schema state.\n */\nfunction generateInterfaceBody(struct: Interface): string {\n    const fields = struct.properties\n        .map(prop => `    public var ${escapeName(prop.name)}: ${getInterfaceType(prop)}?`)\n        .join(\"\\n\");\n\n    return `public struct ${struct.name}: Codable {\n${fields}\n\n    public init() {}\n}`;\n}\n\nfunction getInterfaceType(prop: Property): string {\n    const child = typeMaps[prop.childType] ?? prop.childType ?? \"Double\";\n    switch (prop.type) {\n        case \"array\": return `[${child}]`;\n        case \"map\": return `[String: ${child}]`;\n        default: return typeMaps[prop.type] ?? prop.type ?? \"Double\";\n    }\n}\n\n/**\n * A namespace of constants rather than a Swift enum: Colyseus enums may carry\n * string or floating-point values, and a Swift enum's raw type has to be one\n * or the other.\n */\nfunction generateEnumBody(_enum: Enum): string {\n    const members = _enum.properties\n        .map((prop, i) => {\n            let value: string;\n            if (prop.type) {\n                value = isNaN(Number(prop.type)) ? `\"${prop.type}\"` : `${Number(prop.type)}`;\n            } else {\n                value = `${i}`;\n            }\n            return `    public static let ${escapeName(prop.name)} = ${value}`;\n        })\n        .join(\"\\n\");\n\n    return `public enum ${_enum.name} {\n${members}\n}`;\n}\n\n/** Field names come from the server schema and may collide with a keyword. */\nconst SWIFT_KEYWORDS = new Set([\n    \"associatedtype\", \"class\", \"deinit\", \"enum\", \"extension\", \"fileprivate\", \"func\", \"import\",\n    \"init\", \"inout\", \"internal\", \"let\", \"open\", \"operator\", \"private\", \"precedencegroup\",\n    \"protocol\", \"public\", \"rethrows\", \"static\", \"struct\", \"subscript\", \"typealias\", \"var\",\n    \"break\", \"case\", \"catch\", \"continue\", \"default\", \"defer\", \"do\", \"else\", \"fallthrough\",\n    \"for\", \"guard\", \"if\", \"in\", \"repeat\", \"return\", \"throw\", \"switch\", \"where\", \"while\",\n    \"Any\", \"as\", \"await\", \"false\", \"is\", \"nil\", \"self\", \"Self\", \"super\", \"throws\", \"true\", \"try\",\n]);\n\nfunction escapeName(name: string): string {\n    return SWIFT_KEYWORDS.has(name) ? `\\`${name}\\`` : name;\n}\n","import * as fs from \"fs\";\nimport * as path from \"path\";\n\nimport { File } from \"./types.js\";\nimport { parseFiles } from \"./parser.js\";\n\n// Statically import all language generators (for bundling)\nimport * as csharp from \"./languages/csharp.js\";\nimport * as cpp from \"./languages/cpp.js\";\nimport * as haxe from \"./languages/haxe.js\";\nimport * as ts from \"./languages/ts.js\";\nimport * as js from \"./languages/js.js\";\nimport * as java from \"./languages/java.js\";\nimport * as lua from \"./languages/lua.js\";\nimport * as c from \"./languages/c.js\";\nimport * as gdscript from \"./languages/gdscript.js\";\nimport * as dart from \"./languages/dart.js\";\nimport * as swift from \"./languages/swift.js\";\n\nexport const generators: Record<string, any> = { csharp, cpp, haxe, ts, js, java, lua, c, gdscript, dart, swift, };\n\nexport interface GenerateOptions {\n    files: string[],\n    output: string;\n    decorator?: string;\n    namespace?: string;\n    bundle?: boolean;\n    /** Overrides the nearest-tsconfig lookup used to resolve import path aliases. */\n    tsconfig?: string;\n}\n\nexport function generate(targetId: string, options: GenerateOptions) {\n    const generator = generators[targetId];\n\n    if (!generator) {\n        throw new Error(\"You must provide a valid generator as argument, such as: --csharp, --haxe or --cpp\");\n    }\n\n    if (!fs.existsSync(options.output)) {\n        console.log(\"Creating\", options.output, \"directory\");\n        fs.mkdirSync(options.output);\n    }\n\n    /**\n     * Default `@type()` decorator name\n     */\n    if (!options.decorator) { options.decorator = \"type\"; }\n\n    // resolve wildcard files\n    options.files = options.files.reduce((acc, cur) => {\n        if (cur.endsWith(\"*\")) {\n            acc.push(...recursiveFiles(cur.slice(0, -1)).filter(filename => /\\.(js|ts|mjs)$/.test(filename)));\n        } else {\n            acc.push(cur)\n        }\n        return acc;\n    }, [])\n\n    const structures = parseFiles(options.files, options.decorator, undefined, { tsconfig: options.tsconfig });\n\n    // Post-process classes before generating\n    structures.classes.forEach(klass => klass.postProcessing());\n\n    if (options.bundle && generator.renderBundle) {\n        // Bundle mode: generate all classes/interfaces/enums into a single file\n        const bundled = generator.renderBundle(structures, options);\n        const outputPath = path.resolve(options.output, bundled.name);\n        fs.writeFileSync(outputPath, bundled.content);\n        console.log(\"generated (bundled):\", bundled.name);\n    } else {\n        // Standard mode: write individual files\n        const generatedFiles = generator.generate(structures, options);\n        generatedFiles.forEach((file: File) => {\n            const outputPath = path.resolve(options.output, file.name);\n            fs.writeFileSync(outputPath, file.content);\n            console.log(\"generated:\", file.name);\n        });\n    }\n}\n\nfunction recursiveFiles(dir: string): string[] {\n    const files = fs.readdirSync(dir, { withFileTypes: true });\n    let collect: string[] = [];\n    files.forEach(file => {\n        const filename = path.resolve(dir, file.name);\n        file.isDirectory() ? collect.push(...recursiveFiles(filename)) : collect.push(filename);\n    })\n    return collect;\n}\n","import argv from \"./argv.js\";\nimport { generate, generators } from \"./api.js\";\n\nfunction displayHelp(exitCode: number = 0) {\n    console.log(`\\nschema-codegen [path/to/Schema.ts]\n\nUsage (C#/Unity)\n    schema-codegen src/Schema.ts --output client-side/ --csharp --namespace MyGame.Schema\n\nValid options:\n    --output: the output directory for generated client-side schema files\n    --bundle: bundle all generated files into a single file\n\nGenerators:\n${Object.\n    keys(generators).\n    map((targetId) => (\n`    --${targetId}: generate for ${generators[targetId].name}`\n    )).\n    join(\"\\n\")}\n\nOptional:\n    --namespace: generate namespace on output code\n    --decorator: custom name for @type decorator to scan for\n    --tsconfig: tsconfig.json to resolve import path aliases with\n                (default: nearest tsconfig.json/jsconfig.json above each source file)`);\n    process.exit(exitCode);\n}\n\nconst args = argv(process.argv.slice(2));\nif (args.help) {\n    displayHelp();\n}\n\nlet targetId: string;\nfor (let target in generators) {\n    if (args[target]) {\n        targetId = target;\n    }\n}\n\nif (!args.output) {\n    console.error(\"You must provide a valid --output directory.\");\n    displayHelp(1);\n}\n\ntry {\n    args.files = args._;\n    generate(targetId, {\n        files: args._,\n        decorator: args.decorator,\n        output: args.output,\n        namespace: args.namespace,\n        bundle: args.bundle,\n        tsconfig: args.tsconfig,\n    });\n\n} catch (e) {\n    console.error(e.message);\n    console.error(e.stack);\n    displayHelp(1);\n}\n"],"names":["path","fileURLToPath","fs","ts","readFileSync","name","typeMaps","KEYWORDS","identifier","capitalize","generate","generateClass","generateInterface","generateEnum","renderBundle","generateClassBody","generateInterfaceBody","generateEnumBody","generateProperty","defaultLiteral","getInterfaceType","typeInitializer","COMMON_INCLUDES","distinct","getAllProperties","COMMON_IMPORTS","generatePropertyDeclaration","enumNames","isSchemaType"],"mappings":"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"}