@colyseus/schema 3.0.48 → 3.0.49

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.
@@ -3180,20 +3180,29 @@ function defineTypes(target, fields, options) {
3180
3180
  }
3181
3181
  return target;
3182
3182
  }
3183
- function schema(fields, name, inherits = Schema) {
3183
+ function schema(fieldsAndMethods, name, inherits = Schema) {
3184
+ const fields = {};
3185
+ const methods = {};
3184
3186
  const defaultValues = {};
3185
3187
  const viewTagFields = {};
3186
- for (let fieldName in fields) {
3187
- const field = fields[fieldName];
3188
- if (typeof (field) === "object") {
3189
- if (field['default'] !== undefined) {
3190
- defaultValues[fieldName] = field['default'];
3188
+ for (let fieldName in fieldsAndMethods) {
3189
+ const value = fieldsAndMethods[fieldName];
3190
+ if (typeof (value) === "object") {
3191
+ if (value['default'] !== undefined) {
3192
+ defaultValues[fieldName] = value['default'];
3191
3193
  }
3192
- if (field['view'] !== undefined) {
3193
- viewTagFields[fieldName] = (typeof (field['view']) === "boolean")
3194
+ if (value['view'] !== undefined) {
3195
+ viewTagFields[fieldName] = (typeof (value['view']) === "boolean")
3194
3196
  ? DEFAULT_VIEW_TAG
3195
- : field['view'];
3197
+ : value['view'];
3196
3198
  }
3199
+ fields[fieldName] = value;
3200
+ }
3201
+ else if (typeof (value) === "function") {
3202
+ methods[fieldName] = value;
3203
+ }
3204
+ else {
3205
+ fields[fieldName] = value;
3197
3206
  }
3198
3207
  }
3199
3208
  const klass = Metadata.setFields(class extends inherits {
@@ -3205,6 +3214,9 @@ function schema(fields, name, inherits = Schema) {
3205
3214
  for (let fieldName in viewTagFields) {
3206
3215
  view(viewTagFields[fieldName])(klass.prototype, fieldName);
3207
3216
  }
3217
+ for (let methodName in methods) {
3218
+ klass.prototype[methodName] = methods[methodName];
3219
+ }
3208
3220
  if (name) {
3209
3221
  Object.defineProperty(klass, "name", { value: name });
3210
3222
  }