@colyseus/schema 4.0.0 → 4.0.2
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/cjs/{index.js → index.cjs} +1 -1
- package/build/cjs/index.cjs.map +1 -0
- package/build/esm/index.mjs.map +1 -1
- package/lib/Metadata.js +54 -58
- package/lib/Metadata.js.map +1 -1
- package/lib/Reflection.js +29 -32
- package/lib/Reflection.js.map +1 -1
- package/lib/Schema.js +41 -45
- package/lib/Schema.js.map +1 -1
- package/lib/annotations.d.ts +1 -1
- package/lib/annotations.js +58 -69
- package/lib/annotations.js.map +1 -1
- package/lib/bench_encode.js +24 -59
- package/lib/bench_encode.js.map +1 -1
- package/lib/benchmark.d.ts +1 -0
- package/lib/benchmark.js +218 -0
- package/lib/benchmark.js.map +1 -0
- package/lib/codegen/api.js +10 -41
- package/lib/codegen/api.js.map +1 -1
- package/lib/codegen/argv.js +1 -3
- package/lib/codegen/argv.js.map +1 -1
- package/lib/codegen/cli.js +4 -9
- package/lib/codegen/cli.js.map +1 -1
- package/lib/codegen/languages/cpp.js +5 -8
- package/lib/codegen/languages/cpp.js.map +1 -1
- package/lib/codegen/languages/csharp.js +5 -8
- package/lib/codegen/languages/csharp.js.map +1 -1
- package/lib/codegen/languages/haxe.js +3 -6
- package/lib/codegen/languages/haxe.js.map +1 -1
- package/lib/codegen/languages/java.js +3 -6
- package/lib/codegen/languages/java.js.map +1 -1
- package/lib/codegen/languages/js.js +4 -7
- package/lib/codegen/languages/js.js.map +1 -1
- package/lib/codegen/languages/lua.js +4 -7
- package/lib/codegen/languages/lua.js.map +1 -1
- package/lib/codegen/languages/ts.js +5 -8
- package/lib/codegen/languages/ts.js.map +1 -1
- package/lib/codegen/parser.js +22 -59
- package/lib/codegen/parser.js.map +1 -1
- package/lib/codegen/types.js +12 -51
- package/lib/codegen/types.js.map +1 -1
- package/lib/decoder/DecodeOperation.js +44 -51
- package/lib/decoder/DecodeOperation.js.map +1 -1
- package/lib/decoder/Decoder.js +24 -28
- package/lib/decoder/Decoder.js.map +1 -1
- package/lib/decoder/ReferenceTracker.js +10 -14
- package/lib/decoder/ReferenceTracker.js.map +1 -1
- package/lib/decoder/strategy/Callbacks.js +39 -43
- package/lib/decoder/strategy/Callbacks.js.map +1 -1
- package/lib/decoder/strategy/RawChanges.js +1 -4
- package/lib/decoder/strategy/RawChanges.js.map +1 -1
- package/lib/decoder/strategy/getDecoderStateCallbacks.js +24 -27
- package/lib/decoder/strategy/getDecoderStateCallbacks.js.map +1 -1
- package/lib/encoder/ChangeTree.js +36 -44
- package/lib/encoder/ChangeTree.js.map +1 -1
- package/lib/encoder/EncodeOperation.js +25 -32
- package/lib/encoder/EncodeOperation.js.map +1 -1
- package/lib/encoder/Encoder.d.ts +5 -5
- package/lib/encoder/Encoder.js +25 -29
- package/lib/encoder/Encoder.js.map +1 -1
- package/lib/encoder/Root.js +17 -21
- package/lib/encoder/Root.js.map +1 -1
- package/lib/encoder/StateView.js +40 -45
- package/lib/encoder/StateView.js.map +1 -1
- package/lib/encoding/assert.js +3 -9
- package/lib/encoding/assert.js.map +1 -1
- package/lib/encoding/decode.js +2 -6
- package/lib/encoding/decode.js.map +1 -1
- package/lib/encoding/encode.js +1 -4
- package/lib/encoding/encode.js.map +1 -1
- package/lib/encoding/spec.js +4 -7
- package/lib/encoding/spec.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +33 -75
- package/lib/index.js.map +1 -1
- package/lib/src/Metadata.d.ts +49 -0
- package/lib/src/Metadata.js +256 -0
- package/lib/src/Metadata.js.map +1 -0
- package/lib/src/Reflection.d.ts +71 -0
- package/lib/src/Reflection.js +179 -0
- package/lib/src/Reflection.js.map +1 -0
- package/lib/src/Schema.d.ts +86 -0
- package/lib/src/Schema.js +352 -0
- package/lib/src/Schema.js.map +1 -0
- package/lib/src/annotations.d.ts +109 -0
- package/lib/src/annotations.js +473 -0
- package/lib/src/annotations.js.map +1 -0
- package/lib/src/bench_encode.d.ts +1 -0
- package/lib/src/bench_encode.js +91 -0
- package/lib/src/bench_encode.js.map +1 -0
- package/lib/src/codegen/api.d.ts +7 -0
- package/lib/src/codegen/api.js +56 -0
- package/lib/src/codegen/api.js.map +1 -0
- package/lib/src/codegen/argv.d.ts +6 -0
- package/lib/src/codegen/argv.js +39 -0
- package/lib/src/codegen/argv.js.map +1 -0
- package/lib/src/codegen/cli.d.ts +1 -0
- package/lib/src/codegen/cli.js +58 -0
- package/lib/src/codegen/cli.js.map +1 -0
- package/lib/src/codegen/languages/cpp.d.ts +3 -0
- package/lib/src/codegen/languages/cpp.js +258 -0
- package/lib/src/codegen/languages/cpp.js.map +1 -0
- package/lib/src/codegen/languages/csharp.d.ts +4 -0
- package/lib/src/codegen/languages/csharp.js +154 -0
- package/lib/src/codegen/languages/csharp.js.map +1 -0
- package/lib/src/codegen/languages/haxe.d.ts +3 -0
- package/lib/src/codegen/languages/haxe.js +100 -0
- package/lib/src/codegen/languages/haxe.js.map +1 -0
- package/lib/src/codegen/languages/java.d.ts +6 -0
- package/lib/src/codegen/languages/java.js +100 -0
- package/lib/src/codegen/languages/java.js.map +1 -0
- package/lib/src/codegen/languages/js.d.ts +3 -0
- package/lib/src/codegen/languages/js.js +101 -0
- package/lib/src/codegen/languages/js.js.map +1 -0
- package/lib/src/codegen/languages/lua.d.ts +3 -0
- package/lib/src/codegen/languages/lua.js +103 -0
- package/lib/src/codegen/languages/lua.js.map +1 -0
- package/lib/src/codegen/languages/ts.d.ts +3 -0
- package/lib/src/codegen/languages/ts.js +116 -0
- package/lib/src/codegen/languages/ts.js.map +1 -0
- package/lib/src/codegen/parser.d.ts +13 -0
- package/lib/src/codegen/parser.js +327 -0
- package/lib/src/codegen/parser.js.map +1 -0
- package/lib/src/codegen/types.d.ts +52 -0
- package/lib/src/codegen/types.js +142 -0
- package/lib/src/codegen/types.js.map +1 -0
- package/lib/src/decoder/DecodeOperation.d.ts +23 -0
- package/lib/src/decoder/DecodeOperation.js +248 -0
- package/lib/src/decoder/DecodeOperation.js.map +1 -0
- package/lib/src/decoder/Decoder.d.ts +21 -0
- package/lib/src/decoder/Decoder.js +114 -0
- package/lib/src/decoder/Decoder.js.map +1 -0
- package/lib/src/decoder/ReferenceTracker.d.ts +25 -0
- package/lib/src/decoder/ReferenceTracker.js +135 -0
- package/lib/src/decoder/ReferenceTracker.js.map +1 -0
- package/lib/src/decoder/strategy/Callbacks.d.ts +154 -0
- package/lib/src/decoder/strategy/Callbacks.js +336 -0
- package/lib/src/decoder/strategy/Callbacks.js.map +1 -0
- package/lib/src/decoder/strategy/RawChanges.d.ts +3 -0
- package/lib/src/decoder/strategy/RawChanges.js +4 -0
- package/lib/src/decoder/strategy/RawChanges.js.map +1 -0
- package/lib/src/decoder/strategy/getDecoderStateCallbacks.d.ts +76 -0
- package/lib/src/decoder/strategy/getDecoderStateCallbacks.js +274 -0
- package/lib/src/decoder/strategy/getDecoderStateCallbacks.js.map +1 -0
- package/lib/src/encoder/ChangeTree.d.ts +135 -0
- package/lib/src/encoder/ChangeTree.js +534 -0
- package/lib/src/encoder/ChangeTree.js.map +1 -0
- package/lib/src/encoder/EncodeOperation.d.ts +22 -0
- package/lib/src/encoder/EncodeOperation.js +132 -0
- package/lib/src/encoder/EncodeOperation.js.map +1 -0
- package/lib/src/encoder/Encoder.d.ts +22 -0
- package/lib/src/encoder/Encoder.js +204 -0
- package/lib/src/encoder/Encoder.js.map +1 -0
- package/lib/src/encoder/Root.d.ts +28 -0
- package/lib/src/encoder/Root.js +229 -0
- package/lib/src/encoder/Root.js.map +1 -0
- package/lib/src/encoder/StateView.d.ts +34 -0
- package/lib/src/encoder/StateView.js +279 -0
- package/lib/src/encoder/StateView.js.map +1 -0
- package/lib/src/encoding/assert.d.ts +10 -0
- package/lib/src/encoding/assert.js +49 -0
- package/lib/src/encoding/assert.js.map +1 -0
- package/lib/src/encoding/decode.d.ts +67 -0
- package/lib/src/encoding/decode.js +217 -0
- package/lib/src/encoding/decode.js.map +1 -0
- package/lib/src/encoding/encode.d.ts +40 -0
- package/lib/src/encoding/encode.js +279 -0
- package/lib/src/encoding/encode.js.map +1 -0
- package/lib/src/encoding/spec.d.ts +24 -0
- package/lib/src/encoding/spec.js +26 -0
- package/lib/src/encoding/spec.js.map +1 -0
- package/lib/src/index.d.ts +32 -0
- package/lib/src/index.js +39 -0
- package/lib/src/index.js.map +1 -0
- package/lib/src/symbol.shim.d.ts +6 -0
- package/lib/src/symbol.shim.js +3 -0
- package/lib/src/symbol.shim.js.map +1 -0
- package/lib/src/types/HelperTypes.d.ts +77 -0
- package/lib/src/types/HelperTypes.js +2 -0
- package/lib/src/types/HelperTypes.js.map +1 -0
- package/lib/src/types/TypeContext.d.ts +31 -0
- package/lib/src/types/TypeContext.js +143 -0
- package/lib/src/types/TypeContext.js.map +1 -0
- package/lib/src/types/custom/ArraySchema.d.ts +270 -0
- package/lib/src/types/custom/ArraySchema.js +733 -0
- package/lib/src/types/custom/ArraySchema.js.map +1 -0
- package/lib/src/types/custom/CollectionSchema.d.ts +51 -0
- package/lib/src/types/custom/CollectionSchema.js +170 -0
- package/lib/src/types/custom/CollectionSchema.js.map +1 -0
- package/lib/src/types/custom/MapSchema.d.ts +51 -0
- package/lib/src/types/custom/MapSchema.js +222 -0
- package/lib/src/types/custom/MapSchema.js.map +1 -0
- package/lib/src/types/custom/SetSchema.d.ts +48 -0
- package/lib/src/types/custom/SetSchema.js +178 -0
- package/lib/src/types/custom/SetSchema.js.map +1 -0
- package/lib/src/types/registry.d.ts +16 -0
- package/lib/src/types/registry.js +30 -0
- package/lib/src/types/registry.js.map +1 -0
- package/lib/src/types/symbols.d.ts +33 -0
- package/lib/src/types/symbols.js +34 -0
- package/lib/src/types/symbols.js.map +1 -0
- package/lib/src/types/utils.d.ts +1 -0
- package/lib/src/types/utils.js +13 -0
- package/lib/src/types/utils.js.map +1 -0
- package/lib/src/utils.d.ts +13 -0
- package/lib/src/utils.js +49 -0
- package/lib/src/utils.js.map +1 -0
- package/lib/src/v3_bench.d.ts +1 -0
- package/lib/src/v3_bench.js +128 -0
- package/lib/src/v3_bench.js.map +1 -0
- package/lib/symbol.shim.js +1 -2
- package/lib/symbol.shim.js.map +1 -1
- package/lib/types/HelperTypes.js +1 -2
- package/lib/types/TypeContext.js +8 -12
- package/lib/types/TypeContext.js.map +1 -1
- package/lib/types/custom/ArraySchema.js +63 -67
- package/lib/types/custom/ArraySchema.js.map +1 -1
- package/lib/types/custom/CollectionSchema.js +27 -31
- package/lib/types/custom/CollectionSchema.js.map +1 -1
- package/lib/types/custom/MapSchema.js +37 -41
- package/lib/types/custom/MapSchema.js.map +1 -1
- package/lib/types/custom/SetSchema.js +28 -32
- package/lib/types/custom/SetSchema.js.map +1 -1
- package/lib/types/registry.js +13 -20
- package/lib/types/registry.js.map +1 -1
- package/lib/types/symbols.js +16 -19
- package/lib/types/symbols.js.map +1 -1
- package/lib/types/utils.js +1 -4
- package/lib/types/utils.js.map +1 -1
- package/lib/utils.js +9 -14
- package/lib/utils.js.map +1 -1
- package/lib/v3_bench.js +17 -19
- package/lib/v3_bench.js.map +1 -1
- package/package.json +9 -7
- package/src/codegen/api.ts +7 -0
- package/src/codegen/parser.ts +2 -2
- package/src/codegen/types.ts +5 -0
- package/src/encoder/Encoder.ts +24 -7
- package/src/index.ts +2 -2
- package/build/cjs/index.js.map +0 -1
- package/src/bench_encode.ts +0 -64
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csharp.js","sourceRoot":"","sources":["../../../src/codegen/languages/csharp.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Class,\n Property,\n File,\n getCommentHeader,\n Interface,\n Enum,\n} from \"../types\";\nimport { GenerateOptions } from \"../api\";\nimport { Context } from \"../types\";\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\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\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\nfunction generateClass(klass: Class, namespace: string) {\n const indent = (namespace) ? \"\\t\" : \"\";\n return `${getCommentHeader()}\n\nusing Colyseus.Schema;\n#if UNITY_5_3_OR_NEWER\nusing UnityEngine.Scripting;\n#endif\n${namespace ? `\\nnamespace ${namespace} {` : \"\"}\n${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${namespace ? \"}\" : \"\"}\n`;\n}\n\nfunction generateEnum(_enum: Enum, namespace: string) {\n const indent = namespace ? \"\\t\" : \"\";\n return `${getCommentHeader()}\n${namespace ? `\\nnamespace ${namespace} {` : \"\"}\n${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${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.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\nfunction generateInterface(struct: Interface, namespace: string) {\n const indent = (namespace) ? \"\\t\" : \"\";\n return `${getCommentHeader()}\n\nusing Colyseus.Schema;\n${namespace ? `\\nnamespace ${namespace} {` : \"\"}\n${indent}public class ${struct.name} {\n${struct.properties.map(prop => `\\t${indent}public ${getType(prop)} ${prop.name};`).join(\"\\n\")}\n${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"]}
|
|
1
|
+
{"version":3,"file":"csharp.js","sourceRoot":"","sources":["../../../src/codegen/languages/csharp.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Class,\n Property,\n File,\n getCommentHeader,\n Interface,\n Enum,\n} from \"../types\";\nimport { GenerateOptions } from \"../api\";\nimport { Context } from \"../types\";\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\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\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\nfunction generateClass(klass: Class, namespace: string) {\n const indent = (namespace) ? \"\\t\" : \"\";\n return `${getCommentHeader()}\n\nusing Colyseus.Schema;\n#if UNITY_5_3_OR_NEWER\nusing UnityEngine.Scripting;\n#endif\n${namespace ? `\\nnamespace ${namespace} {` : \"\"}\n${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${namespace ? \"}\" : \"\"}\n`;\n}\n\nfunction generateEnum(_enum: Enum, namespace: string) {\n const indent = namespace ? \"\\t\" : \"\";\n return `${getCommentHeader()}\n${namespace ? `\\nnamespace ${namespace} {` : \"\"}\n${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${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.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\nfunction generateInterface(struct: Interface, namespace: string) {\n const indent = (namespace) ? \"\\t\" : \"\";\n return `${getCommentHeader()}\n\nusing Colyseus.Schema;\n${namespace ? `\\nnamespace ${namespace} {` : \"\"}\n${indent}public class ${struct.name} {\n${struct.properties.map(prop => `\\t${indent}public ${getType(prop)} ${prop.name};`).join(\"\\n\")}\n${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"]}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generate = generate;
|
|
4
|
-
const types_1 = require("../types");
|
|
1
|
+
import { getCommentHeader } from "../types";
|
|
5
2
|
const typeMaps = {
|
|
6
3
|
"string": "String",
|
|
7
4
|
"number": "Dynamic",
|
|
@@ -32,7 +29,7 @@ const typeInitializer = {
|
|
|
32
29
|
"float32": "0",
|
|
33
30
|
"float64": "0",
|
|
34
31
|
};
|
|
35
|
-
function generate(context, options) {
|
|
32
|
+
export function generate(context, options) {
|
|
36
33
|
return context.classes.map(klass => ({
|
|
37
34
|
name: klass.name + ".hx",
|
|
38
35
|
content: generateClass(klass, options.namespace, context.classes)
|
|
@@ -51,7 +48,7 @@ function getInheritanceTree(klass, allClasses, includeSelf = true) {
|
|
|
51
48
|
return inheritanceTree;
|
|
52
49
|
}
|
|
53
50
|
function generateClass(klass, namespace, allClasses) {
|
|
54
|
-
return `${
|
|
51
|
+
return `${getCommentHeader()}
|
|
55
52
|
|
|
56
53
|
${namespace ? `package ${namespace};` : ""}
|
|
57
54
|
import io.colyseus.serializer.schema.Schema;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"haxe.js","sourceRoot":"","sources":["../../../src/codegen/languages/haxe.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"haxe.js","sourceRoot":"","sources":["../../../src/codegen/languages/haxe.ts"],"names":[],"mappings":"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","sourcesContent":["import { Class, Property, File, getCommentHeader, Context } from \"../types\";\nimport { GenerateOptions } from \"../api\";\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\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\nfunction getInheritanceTree(klass: Class, allClasses: Class[], includeSelf: boolean = true) {\n let currentClass = klass;\n let inheritanceTree: Class[] = [];\n\n if (includeSelf) {\n inheritanceTree.push(currentClass);\n }\n\n while (currentClass.extends !== \"Schema\") {\n currentClass = allClasses.find(klass => klass.name == currentClass.extends);\n inheritanceTree.push(currentClass);\n }\n\n return inheritanceTree;\n}\n\nfunction generateClass(klass: Class, namespace: string, allClasses: Class[]) {\n return `${getCommentHeader()}\n\n${namespace ? `package ${namespace};` : \"\"}\nimport io.colyseus.serializer.schema.Schema;\nimport io.colyseus.serializer.schema.types.*;\n\nclass ${klass.name} extends ${klass.extends} {\n${klass.properties.map(prop => generateProperty(prop)).join(\"\\n\")}\n}\n`;\n}\n\nfunction generateProperty(prop: Property) {\n let langType: string;\n let initializer = \"\";\n let typeArgs = `\"${prop.type}\"`;\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\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"]}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generate = generate;
|
|
4
|
-
const types_1 = require("../types");
|
|
1
|
+
import { getCommentHeader } from "../types";
|
|
5
2
|
const typeMaps = {
|
|
6
3
|
"string": "String",
|
|
7
4
|
"number": "float",
|
|
@@ -35,7 +32,7 @@ const typeInitializer = {
|
|
|
35
32
|
/**
|
|
36
33
|
* C# Code Generator
|
|
37
34
|
*/
|
|
38
|
-
function generate(context, options) {
|
|
35
|
+
export function generate(context, options) {
|
|
39
36
|
return context.classes.map(klass => ({
|
|
40
37
|
name: klass.name + ".java",
|
|
41
38
|
content: generateClass(klass, options.namespace)
|
|
@@ -43,7 +40,7 @@ function generate(context, options) {
|
|
|
43
40
|
}
|
|
44
41
|
function generateClass(klass, namespace) {
|
|
45
42
|
const indent = (namespace) ? "\t" : "";
|
|
46
|
-
return `${
|
|
43
|
+
return `${getCommentHeader()}
|
|
47
44
|
${namespace ? `\npackage ${namespace};` : ""}
|
|
48
45
|
|
|
49
46
|
import io.colyseus.serializer.schema.Schema;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"java.js","sourceRoot":"","sources":["../../../src/codegen/languages/java.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"java.js","sourceRoot":"","sources":["../../../src/codegen/languages/java.ts"],"names":[],"mappings":"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","sourcesContent":["import { Class, Property, File, getCommentHeader, Context } from \"../types\";\nimport { GenerateOptions } from \"../api\";\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\n/**\n * C# Code Generator\n */\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\nfunction generateClass(klass: Class, namespace: string) {\n const indent = (namespace) ? \"\\t\" : \"\";\n return `${getCommentHeader()}\n${namespace ? `\\npackage ${namespace};` : \"\"}\n\nimport io.colyseus.serializer.schema.Schema;\nimport io.colyseus.serializer.schema.annotations.SchemaClass;\nimport io.colyseus.serializer.schema.annotations.SchemaField;\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"]}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generate = generate;
|
|
4
|
-
const types_1 = require("../types");
|
|
1
|
+
import { getCommentHeader, getInheritanceTree } from "../types";
|
|
5
2
|
const typeMaps = {
|
|
6
3
|
"string": "string",
|
|
7
4
|
"number": "number",
|
|
@@ -18,7 +15,7 @@ const typeMaps = {
|
|
|
18
15
|
"float64": "number",
|
|
19
16
|
};
|
|
20
17
|
const distinct = (value, index, self) => self.indexOf(value) === index;
|
|
21
|
-
function generate(context, options) {
|
|
18
|
+
export function generate(context, options) {
|
|
22
19
|
return context.classes.map(klass => ({
|
|
23
20
|
name: klass.name + ".js",
|
|
24
21
|
content: generateClass(klass, options.namespace, context.classes)
|
|
@@ -33,7 +30,7 @@ function generateClass(klass, namespace, allClasses) {
|
|
|
33
30
|
allRefs.push(property);
|
|
34
31
|
}
|
|
35
32
|
});
|
|
36
|
-
return `${
|
|
33
|
+
return `${getCommentHeader()}
|
|
37
34
|
|
|
38
35
|
const schema = require("@colyseus/schema");
|
|
39
36
|
const Schema = schema.Schema;
|
|
@@ -41,7 +38,7 @@ const type = schema.type;
|
|
|
41
38
|
${allRefs.
|
|
42
39
|
filter(ref => ref.childType && typeMaps[ref.childType] === undefined).
|
|
43
40
|
map(ref => ref.childType).
|
|
44
|
-
concat(
|
|
41
|
+
concat(getInheritanceTree(klass, allClasses, false).map(klass => klass.name)).
|
|
45
42
|
filter(distinct).
|
|
46
43
|
map(childType => `const ${childType} = require("./${childType}");`).
|
|
47
44
|
join("\n")}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"js.js","sourceRoot":"","sources":["../../../src/codegen/languages/js.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"js.js","sourceRoot":"","sources":["../../../src/codegen/languages/js.ts"],"names":[],"mappings":"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","sourcesContent":["import { Class, Property, File, getCommentHeader, getInheritanceTree, Context } from \"../types\";\nimport { GenerateOptions } from \"../api\";\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 distinct = (value: string, index: number, self: string[]) =>\n self.indexOf(value) === index;\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\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 return `${getCommentHeader()}\n\nconst schema = require(\"@colyseus/schema\");\nconst Schema = schema.Schema;\nconst type = schema.type;\n${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\nclass ${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\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"]}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generate = generate;
|
|
4
|
-
const types_1 = require("../types");
|
|
1
|
+
import { getCommentHeader, getInheritanceTree } from "../types";
|
|
5
2
|
/**
|
|
6
3
|
TODO:
|
|
7
4
|
- Support inheritance
|
|
@@ -23,7 +20,7 @@ const typeMaps = {
|
|
|
23
20
|
"float64": "number",
|
|
24
21
|
};
|
|
25
22
|
const distinct = (value, index, self) => self.indexOf(value) === index;
|
|
26
|
-
function generate(context, options) {
|
|
23
|
+
export function generate(context, options) {
|
|
27
24
|
return context.classes.map(klass => ({
|
|
28
25
|
name: klass.name + ".lua",
|
|
29
26
|
content: generateClass(klass, options.namespace, context.classes)
|
|
@@ -42,13 +39,13 @@ function generateClass(klass, namespace, allClasses) {
|
|
|
42
39
|
const inherits = (klass.extends !== "Schema")
|
|
43
40
|
? `, ${klass.extends}`
|
|
44
41
|
: "";
|
|
45
|
-
return `${
|
|
42
|
+
return `${getCommentHeader().replace(/\/\//mg, "--")}
|
|
46
43
|
|
|
47
44
|
local schema = require 'colyseus.serializer.schema.schema'
|
|
48
45
|
${allRefs.
|
|
49
46
|
filter(ref => ref.childType && typeMaps[ref.childType] === undefined).
|
|
50
47
|
map(ref => ref.childType).
|
|
51
|
-
concat(
|
|
48
|
+
concat(getInheritanceTree(klass, allClasses, false).map(klass => klass.name)).
|
|
52
49
|
filter(distinct).
|
|
53
50
|
map(childType => `local ${childType} = require '${(namespace ? `${namespace}.` : '')}${childType}'`).
|
|
54
51
|
join("\n")}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lua.js","sourceRoot":"","sources":["../../../src/codegen/languages/lua.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lua.js","sourceRoot":"","sources":["../../../src/codegen/languages/lua.ts"],"names":[],"mappings":"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","sourcesContent":["import { Class, Property, File, getCommentHeader, getInheritanceTree, Context } from \"../types\";\nimport { GenerateOptions } from \"../api\";\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 distinct = (value: string, index: number, self: string[]) =>\n self.indexOf(value) === index;\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\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 // Inheritance support\n const inherits = (klass.extends !== \"Schema\")\n ? `, ${klass.extends}`\n : \"\";\n\n return `${getCommentHeader().replace(/\\/\\//mg, \"--\")}\n\nlocal schema = require 'colyseus.serializer.schema.schema'\n${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---@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\nreturn ${klass.name}\n`;\n}\n\nfunction generatePropertyDeclaration(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 = (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 === \"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}"]}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generate = generate;
|
|
4
|
-
const types_1 = require("../types");
|
|
1
|
+
import { getCommentHeader, getInheritanceTree } from "../types";
|
|
5
2
|
const typeMaps = {
|
|
6
3
|
"string": "string",
|
|
7
4
|
"number": "number",
|
|
@@ -18,7 +15,7 @@ const typeMaps = {
|
|
|
18
15
|
"float64": "number",
|
|
19
16
|
};
|
|
20
17
|
const distinct = (value, index, self) => self.indexOf(value) === index;
|
|
21
|
-
function generate(context, options) {
|
|
18
|
+
export function generate(context, options) {
|
|
22
19
|
return [
|
|
23
20
|
...context.classes.map(structure => ({
|
|
24
21
|
name: structure.name + ".ts",
|
|
@@ -39,13 +36,13 @@ function generateClass(klass, namespace, allClasses) {
|
|
|
39
36
|
allRefs.push(property);
|
|
40
37
|
}
|
|
41
38
|
});
|
|
42
|
-
return `${
|
|
39
|
+
return `${getCommentHeader()}
|
|
43
40
|
|
|
44
41
|
import { Schema, type, ArraySchema, MapSchema, SetSchema, DataChange } from '@colyseus/schema';
|
|
45
42
|
${allRefs.
|
|
46
43
|
filter(ref => ref.childType && typeMaps[ref.childType] === undefined).
|
|
47
44
|
map(ref => ref.childType).
|
|
48
|
-
concat(
|
|
45
|
+
concat(getInheritanceTree(klass, allClasses, false).map(klass => klass.name)).
|
|
49
46
|
filter(distinct).
|
|
50
47
|
map(childType => `import { ${childType} } from './${childType}'`).
|
|
51
48
|
join("\n")}
|
|
@@ -109,7 +106,7 @@ function generateProperty(prop) {
|
|
|
109
106
|
return `@type(${typeArgs}) public ${prop.name}${definiteAssertion}: ${langType}${(initializer) ? ` = ${initializer}` : ""};`;
|
|
110
107
|
}
|
|
111
108
|
function generateInterface(structure, namespace, allClasses) {
|
|
112
|
-
return `${
|
|
109
|
+
return `${getCommentHeader()}
|
|
113
110
|
|
|
114
111
|
export interface ${structure.name} {
|
|
115
112
|
${structure.properties.map(prop => ` ${prop.name}: ${prop.type};`).join("\n")}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ts.js","sourceRoot":"","sources":["../../../src/codegen/languages/ts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ts.js","sourceRoot":"","sources":["../../../src/codegen/languages/ts.ts"],"names":[],"mappings":"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","sourcesContent":["import { Class, Property, File, getCommentHeader, getInheritanceTree, Context, Interface } from \"../types\";\nimport { GenerateOptions } from \"../api\";\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 distinct = (value: string, index: number, self: string[]) =>\n self.indexOf(value) === index;\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\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 return `${getCommentHeader()}\n\nimport { Schema, type, ArraySchema, MapSchema, SetSchema, DataChange } from '@colyseus/schema';\n${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\nexport class ${klass.name} extends ${klass.extends} {\n${klass.properties.map(prop => ` ${generateProperty(prop)}`).join(\"\\n\")}\n}\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 {\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\nfunction generateInterface(structure: Interface, namespace: string, allClasses: Class[]) {\n return `${getCommentHeader()}\n\nexport interface ${structure.name} {\n${structure.properties.map(prop => ` ${prop.name}: ${prop.type};`).join(\"\\n\")}\n}\n`;\n}\n"]}
|
package/lib/codegen/parser.js
CHANGED
|
@@ -1,44 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.parseFiles = parseFiles;
|
|
37
|
-
exports.getDecorators = getDecorators;
|
|
38
|
-
const ts = __importStar(require("typescript"));
|
|
39
|
-
const path = __importStar(require("path"));
|
|
40
|
-
const fs_1 = require("fs");
|
|
41
|
-
const types_1 = require("./types");
|
|
1
|
+
import * as ts from "typescript";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
import { readFileSync } from "fs";
|
|
4
|
+
import { Class, Interface, Property, Context, Enum } from "./types";
|
|
42
5
|
let currentStructure;
|
|
43
6
|
let currentProperty;
|
|
44
7
|
let globalContext;
|
|
@@ -70,7 +33,7 @@ function inspectNode(node, context, decoratorName) {
|
|
|
70
33
|
}
|
|
71
34
|
break;
|
|
72
35
|
case ts.SyntaxKind.ClassDeclaration:
|
|
73
|
-
currentStructure = new
|
|
36
|
+
currentStructure = new Class();
|
|
74
37
|
const heritageClauses = node.heritageClauses;
|
|
75
38
|
if (heritageClauses && heritageClauses.length > 0) {
|
|
76
39
|
currentStructure.extends = heritageClauses[0].types[0].expression.getText();
|
|
@@ -84,14 +47,14 @@ function inspectNode(node, context, decoratorName) {
|
|
|
84
47
|
//
|
|
85
48
|
const interfaceName = node.name.escapedText.toString();
|
|
86
49
|
if (interfaceName.indexOf("Message") !== -1) {
|
|
87
|
-
currentStructure = new
|
|
50
|
+
currentStructure = new Interface();
|
|
88
51
|
currentStructure.name = interfaceName;
|
|
89
52
|
context.addStructure(currentStructure);
|
|
90
53
|
}
|
|
91
54
|
break;
|
|
92
55
|
case ts.SyntaxKind.EnumDeclaration:
|
|
93
56
|
const enumName = node.name.escapedText.toString();
|
|
94
|
-
currentStructure = new
|
|
57
|
+
currentStructure = new Enum();
|
|
95
58
|
currentStructure.name = enumName;
|
|
96
59
|
context.addStructure(currentStructure);
|
|
97
60
|
break;
|
|
@@ -99,14 +62,14 @@ function inspectNode(node, context, decoratorName) {
|
|
|
99
62
|
// console.log(node.getText());
|
|
100
63
|
break;
|
|
101
64
|
case ts.SyntaxKind.PropertySignature:
|
|
102
|
-
if (currentStructure instanceof
|
|
65
|
+
if (currentStructure instanceof Interface) {
|
|
103
66
|
const interfaceDeclaration = node.parent;
|
|
104
67
|
if (currentStructure.name !== interfaceDeclaration.name.escapedText.toString()) {
|
|
105
68
|
// skip if property if for a another interface than the one we're interested in.
|
|
106
69
|
break;
|
|
107
70
|
}
|
|
108
71
|
// define a property of an interface
|
|
109
|
-
const property = new
|
|
72
|
+
const property = new Property();
|
|
110
73
|
property.name = node.name.escapedText.toString();
|
|
111
74
|
property.type = node.type.getText();
|
|
112
75
|
currentStructure.addProperty(property);
|
|
@@ -115,7 +78,7 @@ function inspectNode(node, context, decoratorName) {
|
|
|
115
78
|
case ts.SyntaxKind.Identifier:
|
|
116
79
|
if (node.getText() === "deprecated" &&
|
|
117
80
|
node.parent.kind !== ts.SyntaxKind.ImportSpecifier) {
|
|
118
|
-
currentProperty = new
|
|
81
|
+
currentProperty = new Property();
|
|
119
82
|
currentProperty.deprecated = true;
|
|
120
83
|
break;
|
|
121
84
|
}
|
|
@@ -138,7 +101,7 @@ function inspectNode(node, context, decoratorName) {
|
|
|
138
101
|
const typeDecorator = propDecorator.find((decorator => {
|
|
139
102
|
return decorator.expression.expression.escapedText === decoratorName;
|
|
140
103
|
})).expression;
|
|
141
|
-
const property = currentProperty || new
|
|
104
|
+
const property = currentProperty || new Property();
|
|
142
105
|
property.name = prop.name.escapedText;
|
|
143
106
|
currentStructure.addProperty(property);
|
|
144
107
|
const typeArgument = typeDecorator.arguments[0];
|
|
@@ -149,7 +112,7 @@ function inspectNode(node, context, decoratorName) {
|
|
|
149
112
|
/**
|
|
150
113
|
* Calling `type()` as a regular method
|
|
151
114
|
*/
|
|
152
|
-
const property = currentProperty || new
|
|
115
|
+
const property = currentProperty || new Property();
|
|
153
116
|
property.name = prop.expression.arguments[1].text;
|
|
154
117
|
currentStructure.addProperty(property);
|
|
155
118
|
const typeArgument = prop.expression.expression.arguments[0];
|
|
@@ -188,7 +151,7 @@ function inspectNode(node, context, decoratorName) {
|
|
|
188
151
|
break;
|
|
189
152
|
}
|
|
190
153
|
if (currentStructure?.name !== className) {
|
|
191
|
-
currentStructure = new
|
|
154
|
+
currentStructure = new Class();
|
|
192
155
|
}
|
|
193
156
|
context.addStructure(currentStructure);
|
|
194
157
|
currentStructure.extends = "Schema"; // force extends to Schema
|
|
@@ -196,7 +159,7 @@ function inspectNode(node, context, decoratorName) {
|
|
|
196
159
|
const types = callExpression.arguments[1];
|
|
197
160
|
for (let i = 0; i < types.properties.length; i++) {
|
|
198
161
|
const prop = types.properties[i];
|
|
199
|
-
const property = currentProperty || new
|
|
162
|
+
const property = currentProperty || new Property();
|
|
200
163
|
property.name = prop.name.escapedText;
|
|
201
164
|
currentStructure.addProperty(property);
|
|
202
165
|
defineProperty(property, prop.initializer);
|
|
@@ -220,7 +183,7 @@ function inspectNode(node, context, decoratorName) {
|
|
|
220
183
|
const types = callExpression.arguments[1];
|
|
221
184
|
for (let i = 0; i < types.properties.length; i++) {
|
|
222
185
|
const prop = types.properties[i];
|
|
223
|
-
const property = currentProperty || new
|
|
186
|
+
const property = currentProperty || new Property();
|
|
224
187
|
property.name = prop.name.escapedText;
|
|
225
188
|
currentStructure.addProperty(property);
|
|
226
189
|
defineProperty(property, prop.initializer);
|
|
@@ -252,7 +215,7 @@ function inspectNode(node, context, decoratorName) {
|
|
|
252
215
|
break;
|
|
253
216
|
}
|
|
254
217
|
if (currentStructure?.name !== className) {
|
|
255
|
-
currentStructure = new
|
|
218
|
+
currentStructure = new Class();
|
|
256
219
|
context.addStructure(currentStructure);
|
|
257
220
|
}
|
|
258
221
|
if (node.expression?.getText().indexOf(".extends") !== -1) {
|
|
@@ -272,7 +235,7 @@ function inspectNode(node, context, decoratorName) {
|
|
|
272
235
|
const types = callExpression.arguments[0];
|
|
273
236
|
for (let i = 0; i < types.properties.length; i++) {
|
|
274
237
|
const prop = types.properties[i];
|
|
275
|
-
const property = currentProperty || new
|
|
238
|
+
const property = currentProperty || new Property();
|
|
276
239
|
property.name = prop.name.escapedText;
|
|
277
240
|
currentStructure.addProperty(property);
|
|
278
241
|
defineProperty(property, prop.initializer);
|
|
@@ -280,10 +243,10 @@ function inspectNode(node, context, decoratorName) {
|
|
|
280
243
|
}
|
|
281
244
|
break;
|
|
282
245
|
case ts.SyntaxKind.EnumMember:
|
|
283
|
-
if (currentStructure instanceof
|
|
246
|
+
if (currentStructure instanceof Enum) {
|
|
284
247
|
const initializer = node.initializer?.text;
|
|
285
248
|
const name = node.getFirstToken().getText();
|
|
286
|
-
const property = currentProperty || new
|
|
249
|
+
const property = currentProperty || new Property();
|
|
287
250
|
property.name = name;
|
|
288
251
|
if (initializer !== undefined) {
|
|
289
252
|
property.type = initializer;
|
|
@@ -296,7 +259,7 @@ function inspectNode(node, context, decoratorName) {
|
|
|
296
259
|
ts.forEachChild(node, (n) => inspectNode(n, context, decoratorName));
|
|
297
260
|
}
|
|
298
261
|
let parsedFiles;
|
|
299
|
-
function parseFiles(fileNames, decoratorName = "type", context = new
|
|
262
|
+
export function parseFiles(fileNames, decoratorName = "type", context = new Context()) {
|
|
300
263
|
/**
|
|
301
264
|
* Re-set globalContext for each test case
|
|
302
265
|
*/
|
|
@@ -323,7 +286,7 @@ function parseFiles(fileNames, decoratorName = "type", context = new types_1.Con
|
|
|
323
286
|
if (parsedFiles[sourceFileName]) {
|
|
324
287
|
break;
|
|
325
288
|
}
|
|
326
|
-
sourceFile = ts.createSourceFile(sourceFileName,
|
|
289
|
+
sourceFile = ts.createSourceFile(sourceFileName, readFileSync(sourceFileName).toString(), ts.ScriptTarget.Latest, true);
|
|
327
290
|
parsedFiles[sourceFileName] = true;
|
|
328
291
|
break;
|
|
329
292
|
}
|
|
@@ -342,7 +305,7 @@ function parseFiles(fileNames, decoratorName = "type", context = new types_1.Con
|
|
|
342
305
|
* - https://github.com/microsoft/TypeScript/pull/49089
|
|
343
306
|
* - https://devblogs.microsoft.com/typescript/announcing-typescript-4-8/#decorators-are-placed-on-modifiers-on-typescripts-syntax-trees
|
|
344
307
|
*/
|
|
345
|
-
function getDecorators(node) {
|
|
308
|
+
export function getDecorators(node) {
|
|
346
309
|
if (node == undefined) {
|
|
347
310
|
return undefined;
|
|
348
311
|
}
|