@colyseus/schema 5.0.21 → 5.0.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/codegen/cli.cjs +448 -201
- package/build/codegen/cli.cjs.map +1 -1
- package/build/codegen/languages/swift.d.ts +23 -0
- package/build/index.cjs.map +1 -1
- package/build/index.mjs.map +1 -1
- package/build/types/HelperTypes.d.ts +14 -2
- package/build/types/builder.d.ts +5 -1
- package/package.json +1 -1
- package/src/codegen/api.ts +2 -1
- package/src/codegen/languages/swift.ts +270 -0
- package/src/types/HelperTypes.ts +16 -0
- package/src/types/builder.ts +8 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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/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\";\n\nif (typeof(__dirname) === \"undefined\") {\n global.__dirname = path.dirname(new URL(import.meta.url).pathname);\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 if (property.type.indexOf(\"[]\") >= 0) {\n // is array!\n property.childType = property.type.match(/([^\\[]+)/i)[1];\n property.type = \"array\";\n this.properties.push(property);\n\n } else {\n this.properties.push(property);\n }\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).\n */\nexport function resolveQuantized(q: QuantizedProperty) {\n return {\n range: q.max - q.min,\n span: q.wrap ? 2 ** q.bits : 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\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, and the names of the\n * chained modifiers (`.view()`, `.deprecated()`, …). Returns null if the\n * node does not look like a builder chain.\n */\nfunction extractBuilderBase(node: ts.CallExpression): { methodName: string, firstArg?: ts.Expression, modifiers: Set<string> } | null {\n const modifiers = new Set<string>();\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 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 };\n }\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 * Returns\n * undefined for anything it cannot resolve (a `const` reference, a call).\n */\nfunction evalNumericExpression(node: ts.Expression): number | undefined {\n if (ts.isNumericLiteral(node)) {\n return Number(node.text);\n }\n if (ts.isParenthesizedExpression(node)) {\n return evalNumericExpression(node.expression);\n }\n if (ts.isPrefixUnaryExpression(node)) {\n const operand = evalNumericExpression(node.operand as ts.Expression);\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);\n const right = evalNumericExpression(node.right);\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/**\n * Extract `{ min, max, bits?, mode? }` from a `t.quantized({...})` /\n * `@type({ quantized: {...} })` object literal. Throws on anything codegen\n * cannot statically resolve — silently dropping an option would generate a\n * client that decodes every value of that field wrong.\n */\nfunction parseQuantizedOptions(node: ts.Expression | undefined, propertyName: string): QuantizedProperty {\n const fail = (reason: string): never => {\n throw new Error(\n `schema-codegen: cannot statically resolve t.quantized() options of field '${propertyName}' — ${reason}. ` +\n `Use literal numbers or constant Math expressions (e.g. \\`Math.PI * 2\\`).`\n );\n };\n\n if (!node || !ts.isObjectLiteralExpression(node)) {\n return fail(\"expected an inline `{ min, max, ... }` object literal\");\n }\n\n const result: Partial<QuantizedProperty> & { mode?: string } = {};\n for (const prop of node.properties) {\n if (!ts.isPropertyAssignment(prop) || !prop.name) { continue; }\n const key = (prop.name as ts.Identifier).text;\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);\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\nfunction defineProperty(property: Property, initializer: any) {\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 // 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\")\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\") {\n property.type = \"quantized\";\n property.quantized = parseQuantizedOptions(base.firstArg, property.name);\n } else {\n property.type = base.methodName;\n }\n return;\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}\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 = (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 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 property = new Property();\n property.name = (node as any).name.escapedText.toString();\n property.type = (node as any).type.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 currentStructure.addProperty(property);\n\n const typeArgument = typeDecorator.arguments[0];\n defineProperty(property, typeArgument);\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 currentStructure.addProperty(property);\n\n const typeArgument = prop.expression.expression.arguments[0];\n defineProperty(property, typeArgument);\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 currentStructure.addProperty(property);\n defineProperty(property, prop.initializer);\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 currentStructure.addProperty(property);\n\n defineProperty(property, prop.initializer);\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.\n if (prop.kind === ts.SyntaxKind.MethodDeclaration) continue;\n if (!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 currentStructure.addProperty(property);\n defineProperty(property, prop.initializer);\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 \"number\": \"float\",\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\": \"float\",\n \"float64\": \"double\",\n}\n\nconst COMMON_IMPORTS = `using Colyseus.Schema;\n#if UNITY_5_3_OR_NEWER\nusing UnityEngine.Scripting;\n#endif`;\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\n${COMMON_IMPORTS}\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 imports/namespace) for bundling\n */\nfunction generateClassBody(klass: Class, indent: string = \"\"): string {\n return `${indent}public partial class ${klass.name} : ${klass.extends} {\n#if UNITY_5_3_OR_NEWER\n[Preserve]\n#endif\npublic ${klass.name}() { }\n${klass.properties.map((prop) => generateProperty(prop, indent)).join(\"\\n\\n\")}\n${indent}}`;\n}\n\n/**\n * Generate a complete class file with imports/namespace (for individual file mode)\n */\nfunction generateClass(klass: Class, namespace: string) {\n const indent = (namespace) ? \"\\t\" : \"\";\n return `${getCommentHeader()}\n\n${COMMON_IMPORTS}\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${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} ${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 property = \"public\";\n let langType: string;\n let initializer = \"\";\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 = \"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 initializer = `null`;\n\n } else {\n langType = getType(prop);\n initializer = `default(${langType})`;\n }\n\n property += ` ${langType} ${prop.name}`;\n\n let ret = (prop.deprecated) ? `\\t\\t[System.Obsolete(\"field '${prop.name}' is deprecated.\", true)]\\n` : '';\n\n return ret + `\\t${indent}[Type(${prop.index}, ${typeArgs})]\n\\t${indent}${property} = ${initializer};`;\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 ${getType(prop)} ${prop.name};`).join(\"\\n\")}\n${indent}}`;\n}\n\n/**\n * Generate a complete interface file with imports/namespace (for individual file mode)\n */\nfunction generateInterface(struct: Interface, namespace: string) {\n const indent = (namespace) ? \"\\t\" : \"\";\n return `${getCommentHeader()}\n\nusing Colyseus.Schema;\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 = capitalize(prop.type);\n type = (isUpcaseFirst)\n ? `${containerClass}Schema<${prop.childType}>`\n : `${containerClass}Schema<${getChildType(prop)}>`;\n }\n return type;\n\n } else {\n return (prop.type === \"array\")\n ? `${typeMaps[prop.childType] || prop.childType}[]`\n : typeMaps[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\nconst typeMaps: { [key: string]: string } = {\n \"string\": \"String\",\n \"number\": \"Dynamic\",\n \"boolean\": \"Bool\",\n \"int8\": \"Int\",\n \"uint8\": \"UInt\",\n \"int16\": \"Int\",\n \"uint16\": \"UInt\",\n \"int32\": \"Int\",\n \"uint32\": \"UInt\",\n \"int64\": \"Int\",\n \"uint64\": \"UInt\",\n \"float32\": \"Float\",\n \"float64\": \"Float\",\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.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 initializer = \"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 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 initializer = typeInitializer[prop.type];\n }\n\n // TODO: remove initializer. The callbacks at the Haxe decoder side have a\n // \"FIXME\" comment about this on Decoder.hx\n\n return `\\t@:type(${typeArgs})\\n\\tpublic var ${prop.name}: ${langType} = ${initializer};\\n`\n // return `\\t@:type(${typeArgs})\\n\\tpublic var ${prop.name}: ${langType};\\n`\n}\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}: ${prop.type};`).join(\"\\n\")}\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 if (prop.type === \"array\") {\n return `List<${typeMaps[prop.childType] ?? prop.childType ?? \"dynamic\"}>`;\n }\n return typeMaps[prop.type] ?? prop.type ?? \"dynamic\";\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 * 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\";\n\nexport const generators: Record<string, any> = { csharp, cpp, haxe, ts, js, java, lua, c, gdscript, dart, };\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","fs","ts","readFileSync","name","typeMaps","COMMON_IMPORTS","capitalize","generate","generateClass","generateInterface","generateEnum","renderBundle","generateClassBody","generateInterfaceBody","generateEnumBody","generateProperty","typeInitializer","COMMON_INCLUDES","distinct","getAllProperties","generatePropertyDeclaration"],"mappings":"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"}
|
|
1
|
+
{"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\";\n\nif (typeof(__dirname) === \"undefined\") {\n global.__dirname = path.dirname(new URL(import.meta.url).pathname);\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 if (property.type.indexOf(\"[]\") >= 0) {\n // is array!\n property.childType = property.type.match(/([^\\[]+)/i)[1];\n property.type = \"array\";\n this.properties.push(property);\n\n } else {\n this.properties.push(property);\n }\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).\n */\nexport function resolveQuantized(q: QuantizedProperty) {\n return {\n range: q.max - q.min,\n span: q.wrap ? 2 ** q.bits : 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\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, and the names of the\n * chained modifiers (`.view()`, `.deprecated()`, …). Returns null if the\n * node does not look like a builder chain.\n */\nfunction extractBuilderBase(node: ts.CallExpression): { methodName: string, firstArg?: ts.Expression, modifiers: Set<string> } | null {\n const modifiers = new Set<string>();\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 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 };\n }\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 * Returns\n * undefined for anything it cannot resolve (a `const` reference, a call).\n */\nfunction evalNumericExpression(node: ts.Expression): number | undefined {\n if (ts.isNumericLiteral(node)) {\n return Number(node.text);\n }\n if (ts.isParenthesizedExpression(node)) {\n return evalNumericExpression(node.expression);\n }\n if (ts.isPrefixUnaryExpression(node)) {\n const operand = evalNumericExpression(node.operand as ts.Expression);\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);\n const right = evalNumericExpression(node.right);\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/**\n * Extract `{ min, max, bits?, mode? }` from a `t.quantized({...})` /\n * `@type({ quantized: {...} })` object literal. Throws on anything codegen\n * cannot statically resolve — silently dropping an option would generate a\n * client that decodes every value of that field wrong.\n */\nfunction parseQuantizedOptions(node: ts.Expression | undefined, propertyName: string): QuantizedProperty {\n const fail = (reason: string): never => {\n throw new Error(\n `schema-codegen: cannot statically resolve t.quantized() options of field '${propertyName}' — ${reason}. ` +\n `Use literal numbers or constant Math expressions (e.g. \\`Math.PI * 2\\`).`\n );\n };\n\n if (!node || !ts.isObjectLiteralExpression(node)) {\n return fail(\"expected an inline `{ min, max, ... }` object literal\");\n }\n\n const result: Partial<QuantizedProperty> & { mode?: string } = {};\n for (const prop of node.properties) {\n if (!ts.isPropertyAssignment(prop) || !prop.name) { continue; }\n const key = (prop.name as ts.Identifier).text;\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);\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\nfunction defineProperty(property: Property, initializer: any) {\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 // 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\")\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\") {\n property.type = \"quantized\";\n property.quantized = parseQuantizedOptions(base.firstArg, property.name);\n } else {\n property.type = base.methodName;\n }\n return;\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}\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 = (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 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 property = new Property();\n property.name = (node as any).name.escapedText.toString();\n property.type = (node as any).type.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 currentStructure.addProperty(property);\n\n const typeArgument = typeDecorator.arguments[0];\n defineProperty(property, typeArgument);\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 currentStructure.addProperty(property);\n\n const typeArgument = prop.expression.expression.arguments[0];\n defineProperty(property, typeArgument);\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 currentStructure.addProperty(property);\n defineProperty(property, prop.initializer);\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 currentStructure.addProperty(property);\n\n defineProperty(property, prop.initializer);\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.\n if (prop.kind === ts.SyntaxKind.MethodDeclaration) continue;\n if (!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 currentStructure.addProperty(property);\n defineProperty(property, prop.initializer);\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 \"number\": \"float\",\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\": \"float\",\n \"float64\": \"double\",\n}\n\nconst COMMON_IMPORTS = `using Colyseus.Schema;\n#if UNITY_5_3_OR_NEWER\nusing UnityEngine.Scripting;\n#endif`;\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\n${COMMON_IMPORTS}\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 imports/namespace) for bundling\n */\nfunction generateClassBody(klass: Class, indent: string = \"\"): string {\n return `${indent}public partial class ${klass.name} : ${klass.extends} {\n#if UNITY_5_3_OR_NEWER\n[Preserve]\n#endif\npublic ${klass.name}() { }\n${klass.properties.map((prop) => generateProperty(prop, indent)).join(\"\\n\\n\")}\n${indent}}`;\n}\n\n/**\n * Generate a complete class file with imports/namespace (for individual file mode)\n */\nfunction generateClass(klass: Class, namespace: string) {\n const indent = (namespace) ? \"\\t\" : \"\";\n return `${getCommentHeader()}\n\n${COMMON_IMPORTS}\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${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} ${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 property = \"public\";\n let langType: string;\n let initializer = \"\";\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 = \"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 initializer = `null`;\n\n } else {\n langType = getType(prop);\n initializer = `default(${langType})`;\n }\n\n property += ` ${langType} ${prop.name}`;\n\n let ret = (prop.deprecated) ? `\\t\\t[System.Obsolete(\"field '${prop.name}' is deprecated.\", true)]\\n` : '';\n\n return ret + `\\t${indent}[Type(${prop.index}, ${typeArgs})]\n\\t${indent}${property} = ${initializer};`;\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 ${getType(prop)} ${prop.name};`).join(\"\\n\")}\n${indent}}`;\n}\n\n/**\n * Generate a complete interface file with imports/namespace (for individual file mode)\n */\nfunction generateInterface(struct: Interface, namespace: string) {\n const indent = (namespace) ? \"\\t\" : \"\";\n return `${getCommentHeader()}\n\nusing Colyseus.Schema;\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 = capitalize(prop.type);\n type = (isUpcaseFirst)\n ? `${containerClass}Schema<${prop.childType}>`\n : `${containerClass}Schema<${getChildType(prop)}>`;\n }\n return type;\n\n } else {\n return (prop.type === \"array\")\n ? `${typeMaps[prop.childType] || prop.childType}[]`\n : typeMaps[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\nconst typeMaps: { [key: string]: string } = {\n \"string\": \"String\",\n \"number\": \"Dynamic\",\n \"boolean\": \"Bool\",\n \"int8\": \"Int\",\n \"uint8\": \"UInt\",\n \"int16\": \"Int\",\n \"uint16\": \"UInt\",\n \"int32\": \"Int\",\n \"uint32\": \"UInt\",\n \"int64\": \"Int\",\n \"uint64\": \"UInt\",\n \"float32\": \"Float\",\n \"float64\": \"Float\",\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.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 initializer = \"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 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 initializer = typeInitializer[prop.type];\n }\n\n // TODO: remove initializer. The callbacks at the Haxe decoder side have a\n // \"FIXME\" comment about this on Decoder.hx\n\n return `\\t@:type(${typeArgs})\\n\\tpublic var ${prop.name}: ${langType} = ${initializer};\\n`\n // return `\\t@:type(${typeArgs})\\n\\tpublic var ${prop.name}: ${langType};\\n`\n}\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}: ${prop.type};`).join(\"\\n\")}\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 if (prop.type === \"array\") {\n return `List<${typeMaps[prop.childType] ?? prop.childType ?? \"dynamic\"}>`;\n }\n return typeMaps[prop.type] ?? prop.type ?? \"dynamic\";\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 if (prop.type === \"array\") {\n return `[${typeMaps[prop.childType] ?? prop.childType ?? \"Double\"}]`;\n }\n return typeMaps[prop.type] ?? prop.type ?? \"Double\";\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","fs","ts","readFileSync","name","typeMaps","COMMON_IMPORTS","capitalize","generate","generateClass","generateInterface","generateEnum","renderBundle","generateClassBody","generateInterfaceBody","generateEnumBody","generateProperty","typeInitializer","COMMON_INCLUDES","distinct","getAllProperties","generatePropertyDeclaration","enumNames","isSchemaType","getInterfaceType"],"mappings":"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"}
|