@colyseus/schema 1.0.33 → 1.0.36

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.
Files changed (76) hide show
  1. package/README.md +0 -4
  2. package/build/cjs/index.js +36 -35
  3. package/build/cjs/index.js.map +1 -1
  4. package/build/esm/index.mjs +114 -85
  5. package/build/esm/index.mjs.map +1 -1
  6. package/build/umd/index.js +38 -37
  7. package/lib/Reflection.js +11 -11
  8. package/lib/Reflection.js.map +1 -1
  9. package/lib/Schema.js +14 -13
  10. package/lib/Schema.js.map +1 -1
  11. package/lib/annotations.js +17 -13
  12. package/lib/annotations.js.map +1 -1
  13. package/lib/changes/ChangeTree.js +2 -2
  14. package/lib/changes/ChangeTree.js.map +1 -1
  15. package/lib/codegen/api.js +1 -1
  16. package/lib/codegen/api.js.map +1 -1
  17. package/lib/codegen/argv.d.ts +1 -1
  18. package/lib/codegen/cli.js +5 -5
  19. package/lib/codegen/cli.js.map +1 -1
  20. package/lib/codegen/languages/cpp.js +38 -38
  21. package/lib/codegen/languages/cpp.js.map +1 -1
  22. package/lib/codegen/languages/csharp.js +25 -21
  23. package/lib/codegen/languages/csharp.js.map +1 -1
  24. package/lib/codegen/languages/haxe.js +13 -13
  25. package/lib/codegen/languages/haxe.js.map +1 -1
  26. package/lib/codegen/languages/java.js +11 -11
  27. package/lib/codegen/languages/java.js.map +1 -1
  28. package/lib/codegen/languages/js.js +16 -16
  29. package/lib/codegen/languages/js.js.map +1 -1
  30. package/lib/codegen/languages/lua.js +12 -12
  31. package/lib/codegen/languages/lua.js.map +1 -1
  32. package/lib/codegen/languages/ts.js +37 -33
  33. package/lib/codegen/languages/ts.js.map +1 -1
  34. package/lib/codegen/parser.js +3 -3
  35. package/lib/codegen/parser.js.map +1 -1
  36. package/lib/codegen/types.js +2 -2
  37. package/lib/codegen/types.js.map +1 -1
  38. package/lib/events/EventEmitter.js +10 -6
  39. package/lib/events/EventEmitter.js.map +1 -1
  40. package/lib/index.js +4 -4
  41. package/lib/index.js.map +1 -1
  42. package/lib/types/ArraySchema.js +14 -10
  43. package/lib/types/ArraySchema.js.map +1 -1
  44. package/lib/types/MapSchema.d.ts +19 -19
  45. package/lib/types/MapSchema.js +2 -2
  46. package/lib/types/MapSchema.js.map +1 -1
  47. package/package.json +2 -1
  48. package/src/Reflection.ts +159 -0
  49. package/src/Schema.ts +1084 -0
  50. package/src/annotations.ts +357 -0
  51. package/src/changes/ChangeTree.ts +373 -0
  52. package/src/codegen/api.ts +46 -0
  53. package/src/codegen/argv.ts +40 -0
  54. package/src/codegen/cli.ts +65 -0
  55. package/src/codegen/languages/cpp.ts +297 -0
  56. package/src/codegen/languages/csharp.ts +119 -0
  57. package/src/codegen/languages/haxe.ts +110 -0
  58. package/src/codegen/languages/java.ts +115 -0
  59. package/src/codegen/languages/js.ts +115 -0
  60. package/src/codegen/languages/lua.ts +125 -0
  61. package/src/codegen/languages/ts.ts +129 -0
  62. package/src/codegen/parser.ts +251 -0
  63. package/src/codegen/types.ts +164 -0
  64. package/src/encoding/decode.ts +278 -0
  65. package/src/encoding/encode.ts +283 -0
  66. package/src/events/EventEmitter.ts +32 -0
  67. package/src/filters/index.ts +23 -0
  68. package/src/index.ts +59 -0
  69. package/src/spec.ts +49 -0
  70. package/src/types/ArraySchema.ts +608 -0
  71. package/src/types/CollectionSchema.ts +188 -0
  72. package/src/types/HelperTypes.ts +34 -0
  73. package/src/types/MapSchema.ts +255 -0
  74. package/src/types/SetSchema.ts +197 -0
  75. package/src/types/index.ts +19 -0
  76. package/src/utils.ts +28 -0
@@ -53,41 +53,41 @@ function getInheritanceTree(klass, allClasses, includeSelf) {
53
53
  return inheritanceTree;
54
54
  }
55
55
  function generateClass(klass, namespace, allClasses) {
56
- return types_1.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(function (prop) { return generateProperty(prop); }).join("\n") + "\n}\n";
56
+ return "".concat((0, types_1.getCommentHeader)(), "\n\n").concat(namespace ? "package ".concat(namespace, ";") : "", "\nimport io.colyseus.serializer.schema.Schema;\nimport io.colyseus.serializer.schema.types.*;\n\nclass ").concat(klass.name, " extends ").concat(klass.extends, " {\n").concat(klass.properties.map(function (prop) { return generateProperty(prop); }).join("\n"), "\n}\n");
57
57
  }
58
58
  function generateProperty(prop) {
59
59
  var langType;
60
60
  var initializer = "";
61
- var typeArgs = "\"" + prop.type + "\"";
61
+ var typeArgs = "\"".concat(prop.type, "\"");
62
62
  if (prop.childType) {
63
63
  var isUpcaseFirst = prop.childType.match(/^[A-Z]/);
64
64
  if (isUpcaseFirst) {
65
- typeArgs += ", " + prop.childType;
65
+ typeArgs += ", ".concat(prop.childType);
66
66
  }
67
67
  else {
68
- typeArgs += ", \"" + prop.childType + "\"";
68
+ typeArgs += ", \"".concat(prop.childType, "\"");
69
69
  }
70
70
  if (prop.type === "ref") {
71
- langType = "" + prop.childType;
72
- initializer = "new " + prop.childType + "()";
71
+ langType = "".concat(prop.childType);
72
+ initializer = "new ".concat(prop.childType, "()");
73
73
  }
74
74
  else if (prop.type === "array") {
75
75
  langType = (isUpcaseFirst)
76
- ? "ArraySchema<" + prop.childType + ">"
77
- : "ArraySchema<" + typeMaps[prop.childType] + ">";
78
- initializer = "new " + langType + "()";
76
+ ? "ArraySchema<".concat(prop.childType, ">")
77
+ : "ArraySchema<".concat(typeMaps[prop.childType], ">");
78
+ initializer = "new ".concat(langType, "()");
79
79
  }
80
80
  else if (prop.type === "map") {
81
81
  langType = (isUpcaseFirst)
82
- ? "MapSchema<" + prop.childType + ">"
83
- : "MapSchema<" + typeMaps[prop.childType] + ">";
84
- initializer = "new " + langType + "()";
82
+ ? "MapSchema<".concat(prop.childType, ">")
83
+ : "MapSchema<".concat(typeMaps[prop.childType], ">");
84
+ initializer = "new ".concat(langType, "()");
85
85
  }
86
86
  }
87
87
  else {
88
88
  langType = typeMaps[prop.type];
89
89
  initializer = typeInitializer[prop.type];
90
90
  }
91
- return "\t@:type(" + typeArgs + ")\n\tpublic var " + prop.name + ": " + langType + " = " + initializer + ";\n";
91
+ return "\t@:type(".concat(typeArgs, ")\n\tpublic var ").concat(prop.name, ": ").concat(langType, " = ").concat(initializer, ";\n");
92
92
  }
93
93
  //# sourceMappingURL=haxe.js.map
@@ -1 +1 @@
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 = {\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 = {\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 return `\\t@:type(${typeArgs})\\n\\tpublic var ${prop.name}: ${langType} = ${initializer};\\n`\n}\n"]}
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 = {\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 = {\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 return `\\t@:type(${typeArgs})\\n\\tpublic var ${prop.name}: ${langType} = ${initializer};\\n`\n}\n"]}
@@ -44,11 +44,11 @@ function generate(context, options) {
44
44
  exports.generate = generate;
45
45
  function generateClass(klass, namespace) {
46
46
  var indent = (namespace) ? "\t" : "";
47
- return types_1.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(function (prop) { return generateProperty(prop, indent); }).join("\n\n") + "\n" + indent + "}\n" + (namespace ? "}" : "") + "\n";
47
+ return "".concat((0, types_1.getCommentHeader)(), "\n").concat(namespace ? "\npackage ".concat(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").concat(indent, "public class ").concat(klass.name, " extends ").concat(klass.extends, " {\n").concat(klass.properties.map(function (prop) { return generateProperty(prop, indent); }).join("\n\n"), "\n").concat(indent, "}\n").concat(namespace ? "}" : "", "\n");
48
48
  }
49
49
  function generateProperty(prop, indent) {
50
50
  if (indent === void 0) { indent = ""; }
51
- var typeArgs = prop.index + "/" + prop.type;
51
+ var typeArgs = "".concat(prop.index, "/").concat(prop.type);
52
52
  var property = "public";
53
53
  var langType;
54
54
  var ctorArgs = "";
@@ -56,37 +56,37 @@ function generateProperty(prop, indent) {
56
56
  if (prop.childType) {
57
57
  var isUpcaseFirst = prop.childType.match(/^[A-Z]/);
58
58
  if (prop.type !== "ref" && isUpcaseFirst) {
59
- ctorArgs = prop.childType + ".class";
59
+ ctorArgs = "".concat(prop.childType, ".class");
60
60
  }
61
61
  if (prop.type === "ref") {
62
62
  langType = (isUpcaseFirst)
63
63
  ? prop.childType
64
64
  : typeMaps[prop.childType];
65
- initializer = "new " + langType + ((prop.type !== "ref" && isUpcaseFirst) ? "<>" : "") + "(" + ctorArgs + ")";
65
+ initializer = "new ".concat(langType).concat((prop.type !== "ref" && isUpcaseFirst) ? "<>" : "", "(").concat(ctorArgs, ")");
66
66
  }
67
67
  else if (prop.type === "array") {
68
68
  langType = (isUpcaseFirst)
69
- ? "ArraySchema<" + prop.childType + ">"
69
+ ? "ArraySchema<".concat(prop.childType, ">")
70
70
  : "ArraySchema";
71
- initializer = "new ArraySchema" + ((isUpcaseFirst) ? "<>" : "") + "(" + ctorArgs + ")";
71
+ initializer = "new ArraySchema".concat((isUpcaseFirst) ? "<>" : "", "(").concat(ctorArgs, ")");
72
72
  }
73
73
  else if (prop.type === "map") {
74
74
  langType = (isUpcaseFirst)
75
- ? "MapSchema<" + prop.childType + ">"
75
+ ? "MapSchema<".concat(prop.childType, ">")
76
76
  : "MapSchema";
77
- initializer = "new MapSchema" + ((isUpcaseFirst) ? "<>" : "") + "(" + ctorArgs + ")";
77
+ initializer = "new MapSchema".concat((isUpcaseFirst) ? "<>" : "", "(").concat(ctorArgs, ")");
78
78
  }
79
79
  if (prop.type !== "ref") {
80
80
  typeArgs += (isUpcaseFirst)
81
81
  ? "/ref"
82
- : "/" + prop.childType;
82
+ : "/".concat(prop.childType);
83
83
  }
84
84
  }
85
85
  else {
86
86
  langType = typeMaps[prop.type];
87
87
  initializer = typeInitializer[prop.type];
88
88
  }
89
- property += " " + langType + " " + prop.name;
90
- return "\t@SchemaField(\"" + typeArgs + "\")\t" + indent + "\n\t" + indent + property + " = " + initializer + ";";
89
+ property += " ".concat(langType, " ").concat(prop.name);
90
+ return "\t@SchemaField(\"".concat(typeArgs, "\")\t").concat(indent, "\n\t").concat(indent).concat(property, " = ").concat(initializer, ";");
91
91
  }
92
92
  //# sourceMappingURL=java.js.map
@@ -1 +1 @@
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 = {\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 = {\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
+ {"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 = {\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 = {\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"]}
@@ -34,49 +34,49 @@ function generateClass(klass, namespace, allClasses) {
34
34
  allRefs.push(property);
35
35
  }
36
36
  });
37
- return types_1.getCommentHeader() + "\n\nconst schema = require(\"@colyseus/schema\");\nconst Schema = schema.Schema;\nconst type = schema.type;\n" + allRefs.
37
+ return "".concat((0, types_1.getCommentHeader)(), "\n\nconst schema = require(\"@colyseus/schema\");\nconst Schema = schema.Schema;\nconst type = schema.type;\n").concat(allRefs.
38
38
  filter(function (ref) { return ref.childType && typeMaps[ref.childType] === undefined; }).
39
39
  map(function (ref) { return ref.childType; }).
40
- concat(types_1.getInheritanceTree(klass, allClasses, false).map(function (klass) { return klass.name; })).
40
+ concat((0, types_1.getInheritanceTree)(klass, allClasses, false).map(function (klass) { return klass.name; })).
41
41
  filter(distinct).
42
- map(function (childType) { return "const " + childType + " = require(\"./" + childType + "\");"; }).
43
- join("\n") + "\n\nclass " + klass.name + " extends " + klass.extends + " {\n constructor () {\n super();\n" + klass.properties.
42
+ map(function (childType) { return "const ".concat(childType, " = require(\"./").concat(childType, "\");"); }).
43
+ join("\n"), "\n\nclass ").concat(klass.name, " extends ").concat(klass.extends, " {\n constructor () {\n super();\n").concat(klass.properties.
44
44
  filter(function (prop) { return prop.childType !== undefined; }).
45
- map(function (prop) { return " " + generatePropertyInitializer(prop); }).join("\n") + "\n }\n}\n" + klass.properties.map(function (prop) { return generatePropertyDeclaration(klass.name, prop); }).join("\n") + "\n\nexport default " + klass.name + ";\n";
45
+ map(function (prop) { return " " + generatePropertyInitializer(prop); }).join("\n"), "\n }\n}\n").concat(klass.properties.map(function (prop) { return generatePropertyDeclaration(klass.name, prop); }).join("\n"), "\n\nexport default ").concat(klass.name, ";\n");
46
46
  }
47
47
  function generatePropertyDeclaration(className, prop) {
48
48
  var typeArgs;
49
49
  if (prop.childType) {
50
50
  var isUpcaseFirst = prop.childType.match(/^[A-Z]/);
51
51
  if (isUpcaseFirst) {
52
- typeArgs += ", " + prop.childType;
52
+ typeArgs += ", ".concat(prop.childType);
53
53
  }
54
54
  else {
55
- typeArgs += ", \"" + prop.childType + "\"";
55
+ typeArgs += ", \"".concat(prop.childType, "\"");
56
56
  }
57
57
  if (prop.type === "ref") {
58
- typeArgs = "" + prop.childType;
58
+ typeArgs = "".concat(prop.childType);
59
59
  }
60
60
  else if (prop.type === "array") {
61
61
  typeArgs = (isUpcaseFirst)
62
- ? "[ " + prop.childType + " ]"
63
- : "[ \"" + prop.childType + "\" ]";
62
+ ? "[ ".concat(prop.childType, " ]")
63
+ : "[ \"".concat(prop.childType, "\" ]");
64
64
  }
65
65
  else if (prop.type === "map") {
66
66
  typeArgs = (isUpcaseFirst)
67
- ? "{ map: " + prop.childType + " }"
68
- : "{ map: \"" + prop.childType + "\" }";
67
+ ? "{ map: ".concat(prop.childType, " }")
68
+ : "{ map: \"".concat(prop.childType, "\" }");
69
69
  }
70
70
  }
71
71
  else {
72
- typeArgs = "\"" + prop.type + "\"";
72
+ typeArgs = "\"".concat(prop.type, "\"");
73
73
  }
74
- return "type(" + typeArgs + ")(" + className + ".prototype, \"" + prop.name + "\");";
74
+ return "type(".concat(typeArgs, ")(").concat(className, ".prototype, \"").concat(prop.name, "\");");
75
75
  }
76
76
  function generatePropertyInitializer(prop) {
77
77
  var initializer = "";
78
78
  if (prop.type === "ref") {
79
- initializer = "new " + prop.childType + "()";
79
+ initializer = "new ".concat(prop.childType, "()");
80
80
  }
81
81
  else if (prop.type === "array") {
82
82
  initializer = "new schema.ArraySchema()";
@@ -84,6 +84,6 @@ function generatePropertyInitializer(prop) {
84
84
  else if (prop.type === "map") {
85
85
  initializer = "new schema.MapSchema()";
86
86
  }
87
- return "this." + prop.name + " = " + initializer;
87
+ return "this.".concat(prop.name, " = ").concat(initializer);
88
88
  }
89
89
  //# sourceMappingURL=js.js.map
@@ -1 +1 @@
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 = {\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, index, self) => 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
+ {"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 = {\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, index, self) => 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"]}
@@ -40,13 +40,13 @@ function generateClass(klass, namespace, allClasses) {
40
40
  }
41
41
  });
42
42
  // TOOD: inheritance
43
- return types_1.getCommentHeader().replace(/\/\//mg, "--") + "\n\nlocal schema = require 'colyseus.serialization.schema.schema'\n" + allRefs.
43
+ return "".concat((0, types_1.getCommentHeader)().replace(/\/\//mg, "--"), "\n\nlocal schema = require 'colyseus.serialization.schema.schema'\n").concat(allRefs.
44
44
  filter(function (ref) { return ref.childType && typeMaps[ref.childType] === undefined; }).
45
45
  map(function (ref) { return ref.childType; }).
46
- concat(types_1.getInheritanceTree(klass, allClasses, false).map(function (klass) { return klass.name; })).
46
+ concat((0, types_1.getInheritanceTree)(klass, allClasses, false).map(function (klass) { return klass.name; })).
47
47
  filter(distinct).
48
- map(function (childType) { return "local " + childType + " = require '" + (namespace ? namespace + "." : '') + childType + "'"; }).
49
- join("\n") + "\n\nlocal " + klass.name + " = schema.define({\n" + klass.properties.map(function (prop) { return generatePropertyDeclaration(prop); }).join(",\n") + ",\n [\"_fields_by_index\"] = { " + klass.properties.map(function (prop) { return "\"" + prop.name + "\""; }).join(", ") + " },\n})\n\nreturn " + klass.name + "\n";
48
+ map(function (childType) { return "local ".concat(childType, " = require '").concat((namespace ? "".concat(namespace, ".") : '')).concat(childType, "'"); }).
49
+ join("\n"), "\n\nlocal ").concat(klass.name, " = schema.define({\n").concat(klass.properties.map(function (prop) { return generatePropertyDeclaration(prop); }).join(",\n"), ",\n [\"_fields_by_index\"] = { ").concat(klass.properties.map(function (prop) { return "\"".concat(prop.name, "\""); }).join(", "), " },\n})\n\nreturn ").concat(klass.name, "\n");
50
50
  // ["on_change"] = function(changes)
51
51
  // -- on change logic here
52
52
  // end,
@@ -62,26 +62,26 @@ function generatePropertyDeclaration(prop) {
62
62
  if (prop.childType) {
63
63
  var isUpcaseFirst = prop.childType.match(/^[A-Z]/);
64
64
  if (isUpcaseFirst) {
65
- typeArgs += "" + prop.childType;
65
+ typeArgs += "".concat(prop.childType);
66
66
  }
67
67
  else {
68
- typeArgs += "\"" + prop.childType + "\"";
68
+ typeArgs += "\"".concat(prop.childType, "\"");
69
69
  }
70
70
  if (prop.type === "ref") {
71
71
  typeArgs = (isUpcaseFirst)
72
- ? "" + prop.childType
73
- : "\"" + prop.childType + "\"";
72
+ ? "".concat(prop.childType)
73
+ : "\"".concat(prop.childType, "\"");
74
74
  }
75
75
  else {
76
76
  typeArgs = (isUpcaseFirst)
77
- ? "{ " + prop.type + " = " + prop.childType + " }"
78
- : "{ " + prop.type + " = \"" + prop.childType + "\" }";
77
+ ? "{ ".concat(prop.type, " = ").concat(prop.childType, " }")
78
+ : "{ ".concat(prop.type, " = \"").concat(prop.childType, "\" }");
79
79
  }
80
80
  }
81
81
  else {
82
- typeArgs = "\"" + prop.type + "\"";
82
+ typeArgs = "\"".concat(prop.type, "\"");
83
83
  }
84
- return " [\"" + prop.name + "\"] = " + typeArgs;
84
+ return " [\"".concat(prop.name, "\"] = ").concat(typeArgs);
85
85
  }
86
86
  // function generatePropertyInitializer(prop: Property) {
87
87
  // let initializer = "";
@@ -1 +1 @@
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 = {\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, index, self) => 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// TOOD: inheritance\n\n return `${getCommentHeader().replace(/\\/\\//mg, \"--\")}\n\nlocal schema = require 'colyseus.serialization.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\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})\n\nreturn ${klass.name}\n`;\n\n // [\"on_change\"] = function(changes)\n // -- on change logic here\n // end,\n\n // [\"on_add\"] = function()\n // -- on add logic here\n // end,\n\n // [\"on_remove\"] = function()\n // -- on remove logic here\n // end,\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\n// function 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
+ {"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 = {\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, index, self) => 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// TOOD: inheritance\n\n return `${getCommentHeader().replace(/\\/\\//mg, \"--\")}\n\nlocal schema = require 'colyseus.serialization.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\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})\n\nreturn ${klass.name}\n`;\n\n // [\"on_change\"] = function(changes)\n // -- on change logic here\n // end,\n\n // [\"on_add\"] = function()\n // -- on add logic here\n // end,\n\n // [\"on_remove\"] = function()\n // -- on remove logic here\n // end,\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\n// function 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"]}
@@ -15,10 +15,14 @@ var __read = (this && this.__read) || function (o, n) {
15
15
  }
16
16
  return ar;
17
17
  };
18
- var __spreadArray = (this && this.__spreadArray) || function (to, from) {
19
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
20
- to[j] = from[i];
21
- return to;
18
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
19
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
20
+ if (ar || !(i in from)) {
21
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
+ ar[i] = from[i];
23
+ }
24
+ }
25
+ return to.concat(ar || Array.prototype.slice.call(from));
22
26
  };
23
27
  Object.defineProperty(exports, "__esModule", { value: true });
24
28
  exports.generate = void 0;
@@ -43,10 +47,10 @@ function generate(context, options) {
43
47
  return __spreadArray(__spreadArray([], __read(context.classes.map(function (structure) { return ({
44
48
  name: structure.name + ".ts",
45
49
  content: generateClass(structure, options.namespace, context.classes)
46
- }); }))), __read(context.interfaces.map(function (structure) { return ({
50
+ }); })), false), __read(context.interfaces.map(function (structure) { return ({
47
51
  name: structure.name + ".ts",
48
52
  content: generateInterface(structure, options.namespace, context.classes),
49
- }); })));
53
+ }); })), false);
50
54
  }
51
55
  exports.generate = generate;
52
56
  function generateClass(klass, namespace, allClasses) {
@@ -58,13 +62,13 @@ function generateClass(klass, namespace, allClasses) {
58
62
  allRefs.push(property);
59
63
  }
60
64
  });
61
- return types_1.getCommentHeader() + "\n\nimport { Schema, type, ArraySchema, MapSchema, SetSchema, DataChange } from '@colyseus/schema';\n" + allRefs.
65
+ return "".concat((0, types_1.getCommentHeader)(), "\n\nimport { Schema, type, ArraySchema, MapSchema, SetSchema, DataChange } from '@colyseus/schema';\n").concat(allRefs.
62
66
  filter(function (ref) { return ref.childType && typeMaps[ref.childType] === undefined; }).
63
67
  map(function (ref) { return ref.childType; }).
64
- concat(types_1.getInheritanceTree(klass, allClasses, false).map(function (klass) { return klass.name; })).
68
+ concat((0, types_1.getInheritanceTree)(klass, allClasses, false).map(function (klass) { return klass.name; })).
65
69
  filter(distinct).
66
- map(function (childType) { return "import { " + childType + " } from './" + childType + "'"; }).
67
- join("\n") + "\n\nexport class " + klass.name + " extends " + klass.extends + " {\n" + klass.properties.map(function (prop) { return " " + generateProperty(prop); }).join("\n") + "\n}\n";
70
+ map(function (childType) { return "import { ".concat(childType, " } from './").concat(childType, "'"); }).
71
+ join("\n"), "\n\nexport class ").concat(klass.name, " extends ").concat(klass.extends, " {\n").concat(klass.properties.map(function (prop) { return " ".concat(generateProperty(prop)); }).join("\n"), "\n}\n");
68
72
  }
69
73
  function generateProperty(prop) {
70
74
  var langType;
@@ -73,53 +77,53 @@ function generateProperty(prop) {
73
77
  if (prop.childType) {
74
78
  var isUpcaseFirst = prop.childType.match(/^[A-Z]/);
75
79
  if (isUpcaseFirst) {
76
- typeArgs += ", " + prop.childType;
80
+ typeArgs += ", ".concat(prop.childType);
77
81
  }
78
82
  else {
79
- typeArgs += ", \"" + prop.childType + "\"";
83
+ typeArgs += ", \"".concat(prop.childType, "\"");
80
84
  }
81
85
  if (prop.type === "ref") {
82
- langType = "" + prop.childType;
83
- initializer = "new " + prop.childType + "()";
84
- typeArgs = "" + prop.childType;
86
+ langType = "".concat(prop.childType);
87
+ initializer = "new ".concat(prop.childType, "()");
88
+ typeArgs = "".concat(prop.childType);
85
89
  }
86
90
  else if (prop.type === "array") {
87
91
  langType = (isUpcaseFirst)
88
- ? "ArraySchema<" + prop.childType + ">"
89
- : "ArraySchema<" + typeMaps[prop.childType] + ">";
90
- initializer = "new " + langType + "()";
92
+ ? "ArraySchema<".concat(prop.childType, ">")
93
+ : "ArraySchema<".concat(typeMaps[prop.childType], ">");
94
+ initializer = "new ".concat(langType, "()");
91
95
  typeArgs = (isUpcaseFirst)
92
- ? "[ " + prop.childType + " ]"
93
- : "[ \"" + prop.childType + "\" ]";
96
+ ? "[ ".concat(prop.childType, " ]")
97
+ : "[ \"".concat(prop.childType, "\" ]");
94
98
  }
95
99
  else if (prop.type === "map") {
96
100
  langType = (isUpcaseFirst)
97
- ? "MapSchema<" + prop.childType + ">"
98
- : "MapSchema<" + typeMaps[prop.childType] + ">";
99
- initializer = "new " + langType + "()";
101
+ ? "MapSchema<".concat(prop.childType, ">")
102
+ : "MapSchema<".concat(typeMaps[prop.childType], ">");
103
+ initializer = "new ".concat(langType, "()");
100
104
  typeArgs = (isUpcaseFirst)
101
- ? "{ map: " + prop.childType + " }"
102
- : "{ map: \"" + prop.childType + "\" }";
105
+ ? "{ map: ".concat(prop.childType, " }")
106
+ : "{ map: \"".concat(prop.childType, "\" }");
103
107
  }
104
108
  else if (prop.type === "set") {
105
109
  langType = (isUpcaseFirst)
106
- ? "SetSchema<" + prop.childType + ">"
107
- : "SetSchema<" + typeMaps[prop.childType] + ">";
108
- initializer = "new " + langType + "()";
110
+ ? "SetSchema<".concat(prop.childType, ">")
111
+ : "SetSchema<".concat(typeMaps[prop.childType], ">");
112
+ initializer = "new ".concat(langType, "()");
109
113
  typeArgs = (isUpcaseFirst)
110
- ? "{ set: " + prop.childType + " }"
111
- : "{ set: \"" + prop.childType + "\" }";
114
+ ? "{ set: ".concat(prop.childType, " }")
115
+ : "{ set: \"".concat(prop.childType, "\" }");
112
116
  }
113
117
  }
114
118
  else {
115
119
  langType = typeMaps[prop.type];
116
- typeArgs = "\"" + prop.type + "\"";
120
+ typeArgs = "\"".concat(prop.type, "\"");
117
121
  }
118
122
  // TS1263: "Declarations with initializers cannot also have definite assignment assertions"
119
123
  var definiteAssertion = initializer ? "" : "!";
120
- return "@type(" + typeArgs + ") public " + prop.name + definiteAssertion + ": " + langType + ((initializer) ? " = " + initializer : "") + ";";
124
+ return "@type(".concat(typeArgs, ") public ").concat(prop.name).concat(definiteAssertion, ": ").concat(langType).concat((initializer) ? " = ".concat(initializer) : "", ";");
121
125
  }
122
126
  function generateInterface(structure, namespace, allClasses) {
123
- return types_1.getCommentHeader() + "\n\nexport interface " + structure.name + " {\n" + structure.properties.map(function (prop) { return " " + prop.name + ": " + prop.type + ";"; }).join("\n") + "\n}\n";
127
+ return "".concat((0, types_1.getCommentHeader)(), "\n\nexport interface ").concat(structure.name, " {\n").concat(structure.properties.map(function (prop) { return " ".concat(prop.name, ": ").concat(prop.type, ";"); }).join("\n"), "\n}\n");
124
128
  }
125
129
  //# sourceMappingURL=ts.js.map
@@ -1 +1 @@
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 = {\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, index, self) => 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"]}
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 = {\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, index, self) => 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"]}