@colyseus/schema 3.0.0-alpha.4 → 3.0.0-alpha.40

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 (141) hide show
  1. package/README.md +131 -61
  2. package/bin/schema-debug +94 -0
  3. package/build/cjs/index.js +1521 -809
  4. package/build/cjs/index.js.map +1 -1
  5. package/build/esm/index.mjs +1519 -808
  6. package/build/esm/index.mjs.map +1 -1
  7. package/build/umd/index.js +1528 -816
  8. package/lib/Metadata.d.ts +21 -9
  9. package/lib/Metadata.js +169 -32
  10. package/lib/Metadata.js.map +1 -1
  11. package/lib/Reflection.d.ts +19 -4
  12. package/lib/Reflection.js +66 -32
  13. package/lib/Reflection.js.map +1 -1
  14. package/lib/Schema.d.ts +4 -4
  15. package/lib/Schema.js +44 -50
  16. package/lib/Schema.js.map +1 -1
  17. package/lib/annotations.d.ts +31 -34
  18. package/lib/annotations.js +110 -160
  19. package/lib/annotations.js.map +1 -1
  20. package/lib/bench_encode.d.ts +1 -0
  21. package/lib/bench_encode.js +130 -0
  22. package/lib/bench_encode.js.map +1 -0
  23. package/lib/codegen/api.js +1 -2
  24. package/lib/codegen/api.js.map +1 -1
  25. package/lib/codegen/languages/cpp.js +1 -2
  26. package/lib/codegen/languages/cpp.js.map +1 -1
  27. package/lib/codegen/languages/csharp.js +1 -2
  28. package/lib/codegen/languages/csharp.js.map +1 -1
  29. package/lib/codegen/languages/haxe.js +1 -2
  30. package/lib/codegen/languages/haxe.js.map +1 -1
  31. package/lib/codegen/languages/java.js +1 -2
  32. package/lib/codegen/languages/java.js.map +1 -1
  33. package/lib/codegen/languages/js.js +1 -2
  34. package/lib/codegen/languages/js.js.map +1 -1
  35. package/lib/codegen/languages/lua.js +1 -2
  36. package/lib/codegen/languages/lua.js.map +1 -1
  37. package/lib/codegen/languages/ts.js +1 -2
  38. package/lib/codegen/languages/ts.js.map +1 -1
  39. package/lib/codegen/parser.js +85 -3
  40. package/lib/codegen/parser.js.map +1 -1
  41. package/lib/codegen/types.js +6 -3
  42. package/lib/codegen/types.js.map +1 -1
  43. package/lib/debug.d.ts +1 -0
  44. package/lib/debug.js +51 -0
  45. package/lib/debug.js.map +1 -0
  46. package/lib/decoder/DecodeOperation.d.ts +0 -1
  47. package/lib/decoder/DecodeOperation.js +30 -12
  48. package/lib/decoder/DecodeOperation.js.map +1 -1
  49. package/lib/decoder/Decoder.d.ts +6 -7
  50. package/lib/decoder/Decoder.js +9 -9
  51. package/lib/decoder/Decoder.js.map +1 -1
  52. package/lib/decoder/ReferenceTracker.js +3 -2
  53. package/lib/decoder/ReferenceTracker.js.map +1 -1
  54. package/lib/decoder/strategy/RawChanges.js +1 -2
  55. package/lib/decoder/strategy/RawChanges.js.map +1 -1
  56. package/lib/decoder/strategy/StateCallbacks.d.ts +44 -11
  57. package/lib/decoder/strategy/StateCallbacks.js +75 -65
  58. package/lib/decoder/strategy/StateCallbacks.js.map +1 -1
  59. package/lib/encoder/ChangeTree.d.ts +27 -21
  60. package/lib/encoder/ChangeTree.js +246 -186
  61. package/lib/encoder/ChangeTree.js.map +1 -1
  62. package/lib/encoder/EncodeOperation.d.ts +3 -6
  63. package/lib/encoder/EncodeOperation.js +47 -61
  64. package/lib/encoder/EncodeOperation.js.map +1 -1
  65. package/lib/encoder/Encoder.d.ts +9 -8
  66. package/lib/encoder/Encoder.js +165 -88
  67. package/lib/encoder/Encoder.js.map +1 -1
  68. package/lib/encoder/Root.d.ts +22 -0
  69. package/lib/encoder/Root.js +81 -0
  70. package/lib/encoder/Root.js.map +1 -0
  71. package/lib/encoder/StateView.d.ts +7 -7
  72. package/lib/encoder/StateView.js +70 -74
  73. package/lib/encoder/StateView.js.map +1 -1
  74. package/lib/encoding/assert.d.ts +2 -1
  75. package/lib/encoding/assert.js +5 -5
  76. package/lib/encoding/assert.js.map +1 -1
  77. package/lib/encoding/decode.js +20 -21
  78. package/lib/encoding/decode.js.map +1 -1
  79. package/lib/encoding/encode.d.ts +2 -2
  80. package/lib/encoding/encode.js +52 -48
  81. package/lib/encoding/encode.js.map +1 -1
  82. package/lib/encoding/spec.d.ts +2 -1
  83. package/lib/encoding/spec.js +1 -0
  84. package/lib/encoding/spec.js.map +1 -1
  85. package/lib/index.d.ts +6 -3
  86. package/lib/index.js +19 -13
  87. package/lib/index.js.map +1 -1
  88. package/lib/types/HelperTypes.d.ts +34 -2
  89. package/lib/types/HelperTypes.js.map +1 -1
  90. package/lib/types/TypeContext.d.ts +23 -0
  91. package/lib/types/TypeContext.js +111 -0
  92. package/lib/types/TypeContext.js.map +1 -0
  93. package/lib/types/custom/ArraySchema.d.ts +2 -2
  94. package/lib/types/custom/ArraySchema.js +33 -22
  95. package/lib/types/custom/ArraySchema.js.map +1 -1
  96. package/lib/types/custom/CollectionSchema.js +1 -0
  97. package/lib/types/custom/CollectionSchema.js.map +1 -1
  98. package/lib/types/custom/MapSchema.d.ts +3 -1
  99. package/lib/types/custom/MapSchema.js +12 -4
  100. package/lib/types/custom/MapSchema.js.map +1 -1
  101. package/lib/types/custom/SetSchema.js +1 -0
  102. package/lib/types/custom/SetSchema.js.map +1 -1
  103. package/lib/types/registry.js +3 -4
  104. package/lib/types/registry.js.map +1 -1
  105. package/lib/types/symbols.d.ts +8 -5
  106. package/lib/types/symbols.js +9 -6
  107. package/lib/types/symbols.js.map +1 -1
  108. package/lib/types/utils.js +1 -2
  109. package/lib/types/utils.js.map +1 -1
  110. package/lib/utils.js +9 -7
  111. package/lib/utils.js.map +1 -1
  112. package/package.json +7 -6
  113. package/src/Metadata.ts +190 -42
  114. package/src/Reflection.ts +77 -39
  115. package/src/Schema.ts +59 -64
  116. package/src/annotations.ts +155 -203
  117. package/src/bench_encode.ts +108 -0
  118. package/src/codegen/parser.ts +107 -0
  119. package/src/codegen/types.ts +1 -0
  120. package/src/debug.ts +55 -0
  121. package/src/decoder/DecodeOperation.ts +40 -12
  122. package/src/decoder/Decoder.ts +14 -12
  123. package/src/decoder/ReferenceTracker.ts +3 -2
  124. package/src/decoder/strategy/StateCallbacks.ts +153 -82
  125. package/src/encoder/ChangeTree.ts +286 -202
  126. package/src/encoder/EncodeOperation.ts +77 -77
  127. package/src/encoder/Encoder.ts +201 -96
  128. package/src/encoder/Root.ts +93 -0
  129. package/src/encoder/StateView.ts +76 -88
  130. package/src/encoding/assert.ts +4 -3
  131. package/src/encoding/encode.ts +37 -31
  132. package/src/encoding/spec.ts +1 -0
  133. package/src/index.ts +8 -14
  134. package/src/types/HelperTypes.ts +54 -2
  135. package/src/types/TypeContext.ts +133 -0
  136. package/src/types/custom/ArraySchema.ts +49 -19
  137. package/src/types/custom/CollectionSchema.ts +1 -0
  138. package/src/types/custom/MapSchema.ts +18 -5
  139. package/src/types/custom/SetSchema.ts +1 -0
  140. package/src/types/symbols.ts +10 -7
  141. package/src/utils.ts +7 -3
@@ -22,7 +22,23 @@
22
22
  * SOFTWARE
23
23
  */
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.number = exports.string = exports.boolean = exports.writeFloat64 = exports.writeFloat32 = exports.float64 = exports.float32 = exports.uint64 = exports.int64 = exports.uint32 = exports.int32 = exports.uint16 = exports.int16 = exports.uint8 = exports.int8 = exports.utf8Write = exports.utf8Length = void 0;
25
+ exports.utf8Length = void 0;
26
+ exports.utf8Write = utf8Write;
27
+ exports.int8 = int8;
28
+ exports.uint8 = uint8;
29
+ exports.int16 = int16;
30
+ exports.uint16 = uint16;
31
+ exports.int32 = int32;
32
+ exports.uint32 = uint32;
33
+ exports.int64 = int64;
34
+ exports.uint64 = uint64;
35
+ exports.float32 = float32;
36
+ exports.float64 = float64;
37
+ exports.writeFloat32 = writeFloat32;
38
+ exports.writeFloat64 = writeFloat64;
39
+ exports.boolean = boolean;
40
+ exports.string = string;
41
+ exports.number = number;
26
42
  /**
27
43
  * msgpack implementation highly based on notepack.io
28
44
  * https://github.com/darrachequesne/notepack
@@ -33,27 +49,29 @@ try {
33
49
  textEncoder = new TextEncoder();
34
50
  }
35
51
  catch (e) { }
36
- function utf8Length(str) {
37
- var c = 0, length = 0;
38
- for (var i = 0, l = str.length; i < l; i++) {
39
- c = str.charCodeAt(i);
40
- if (c < 0x80) {
41
- length += 1;
42
- }
43
- else if (c < 0x800) {
44
- length += 2;
45
- }
46
- else if (c < 0xd800 || c >= 0xe000) {
47
- length += 3;
48
- }
49
- else {
50
- i++;
51
- length += 4;
52
+ const hasBufferByteLength = (typeof Buffer !== 'undefined' && Buffer.byteLength);
53
+ exports.utf8Length = (hasBufferByteLength)
54
+ ? Buffer.byteLength // node
55
+ : function (str, _) {
56
+ var c = 0, length = 0;
57
+ for (var i = 0, l = str.length; i < l; i++) {
58
+ c = str.charCodeAt(i);
59
+ if (c < 0x80) {
60
+ length += 1;
61
+ }
62
+ else if (c < 0x800) {
63
+ length += 2;
64
+ }
65
+ else if (c < 0xd800 || c >= 0xe000) {
66
+ length += 3;
67
+ }
68
+ else {
69
+ i++;
70
+ length += 4;
71
+ }
52
72
  }
53
- }
54
- return length;
55
- }
56
- exports.utf8Length = utf8Length;
73
+ return length;
74
+ };
57
75
  function utf8Write(view, str, it) {
58
76
  var c = 0;
59
77
  for (var i = 0, l = str.length; i < l; i++) {
@@ -62,46 +80,44 @@ function utf8Write(view, str, it) {
62
80
  view[it.offset++] = c;
63
81
  }
64
82
  else if (c < 0x800) {
65
- view[it.offset++] = 0xc0 | (c >> 6);
66
- view[it.offset++] = 0x80 | (c & 0x3f);
83
+ view[it.offset] = 0xc0 | (c >> 6);
84
+ view[it.offset + 1] = 0x80 | (c & 0x3f);
85
+ it.offset += 2;
67
86
  }
68
87
  else if (c < 0xd800 || c >= 0xe000) {
69
- view[it.offset++] = 0xe0 | (c >> 12);
70
- view[it.offset++] = 0x80 | (c >> 6 & 0x3f);
71
- view[it.offset++] = 0x80 | (c & 0x3f);
88
+ view[it.offset] = 0xe0 | (c >> 12);
89
+ view[it.offset + 1] = 0x80 | (c >> 6 & 0x3f);
90
+ view[it.offset + 2] = 0x80 | (c & 0x3f);
91
+ it.offset += 3;
72
92
  }
73
93
  else {
74
94
  i++;
75
95
  c = 0x10000 + (((c & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff));
76
- view[it.offset++] = 0xf0 | (c >> 18);
77
- view[it.offset++] = 0x80 | (c >> 12 & 0x3f);
78
- view[it.offset++] = 0x80 | (c >> 6 & 0x3f);
79
- view[it.offset++] = 0x80 | (c & 0x3f);
96
+ view[it.offset] = 0xf0 | (c >> 18);
97
+ view[it.offset + 1] = 0x80 | (c >> 12 & 0x3f);
98
+ view[it.offset + 2] = 0x80 | (c >> 6 & 0x3f);
99
+ view[it.offset + 3] = 0x80 | (c & 0x3f);
100
+ it.offset += 4;
80
101
  }
81
102
  }
82
103
  }
83
- exports.utf8Write = utf8Write;
84
104
  function int8(bytes, value, it) {
85
105
  bytes[it.offset++] = value & 255;
86
106
  }
87
- exports.int8 = int8;
88
107
  ;
89
108
  function uint8(bytes, value, it) {
90
109
  bytes[it.offset++] = value & 255;
91
110
  }
92
- exports.uint8 = uint8;
93
111
  ;
94
112
  function int16(bytes, value, it) {
95
113
  bytes[it.offset++] = value & 255;
96
114
  bytes[it.offset++] = (value >> 8) & 255;
97
115
  }
98
- exports.int16 = int16;
99
116
  ;
100
117
  function uint16(bytes, value, it) {
101
118
  bytes[it.offset++] = value & 255;
102
119
  bytes[it.offset++] = (value >> 8) & 255;
103
120
  }
104
- exports.uint16 = uint16;
105
121
  ;
106
122
  function int32(bytes, value, it) {
107
123
  bytes[it.offset++] = value & 255;
@@ -109,7 +125,6 @@ function int32(bytes, value, it) {
109
125
  bytes[it.offset++] = (value >> 16) & 255;
110
126
  bytes[it.offset++] = (value >> 24) & 255;
111
127
  }
112
- exports.int32 = int32;
113
128
  ;
114
129
  function uint32(bytes, value, it) {
115
130
  const b4 = value >> 24;
@@ -121,7 +136,6 @@ function uint32(bytes, value, it) {
121
136
  bytes[it.offset++] = b3 & 255;
122
137
  bytes[it.offset++] = b4 & 255;
123
138
  }
124
- exports.uint32 = uint32;
125
139
  ;
126
140
  function int64(bytes, value, it) {
127
141
  const high = Math.floor(value / Math.pow(2, 32));
@@ -129,7 +143,6 @@ function int64(bytes, value, it) {
129
143
  uint32(bytes, low, it);
130
144
  uint32(bytes, high, it);
131
145
  }
132
- exports.int64 = int64;
133
146
  ;
134
147
  function uint64(bytes, value, it) {
135
148
  const high = (value / Math.pow(2, 32)) >> 0;
@@ -137,16 +150,13 @@ function uint64(bytes, value, it) {
137
150
  uint32(bytes, low, it);
138
151
  uint32(bytes, high, it);
139
152
  }
140
- exports.uint64 = uint64;
141
153
  ;
142
154
  function float32(bytes, value, it) {
143
155
  writeFloat32(bytes, value, it);
144
156
  }
145
- exports.float32 = float32;
146
157
  function float64(bytes, value, it) {
147
158
  writeFloat64(bytes, value, it);
148
159
  }
149
- exports.float64 = float64;
150
160
  // force little endian to facilitate decoding on multiple implementations
151
161
  const _isLittleEndian = true; // new Uint16Array(new Uint8Array([1, 0]).buffer)[0] === 1;
152
162
  const _int32 = new Int32Array(2);
@@ -156,27 +166,23 @@ function writeFloat32(bytes, value, it) {
156
166
  _float32[0] = value;
157
167
  int32(bytes, _int32[0], it);
158
168
  }
159
- exports.writeFloat32 = writeFloat32;
160
169
  ;
161
170
  function writeFloat64(bytes, value, it) {
162
171
  _float64[0] = value;
163
172
  int32(bytes, _int32[_isLittleEndian ? 0 : 1], it);
164
173
  int32(bytes, _int32[_isLittleEndian ? 1 : 0], it);
165
174
  }
166
- exports.writeFloat64 = writeFloat64;
167
175
  ;
168
176
  function boolean(bytes, value, it) {
169
177
  bytes[it.offset++] = value ? 1 : 0; // uint8
170
178
  }
171
- exports.boolean = boolean;
172
179
  ;
173
180
  function string(bytes, value, it) {
174
181
  // encode `null` strings as empty.
175
182
  if (!value) {
176
183
  value = "";
177
184
  }
178
- // let length = utf8Length(value);
179
- let length = Buffer.byteLength(value, "utf8");
185
+ let length = (0, exports.utf8Length)(value, "utf8");
180
186
  let size = 0;
181
187
  // fixstr
182
188
  if (length < 0x20) {
@@ -207,7 +213,6 @@ function string(bytes, value, it) {
207
213
  utf8Write(bytes, value, it);
208
214
  return size + length;
209
215
  }
210
- exports.string = string;
211
216
  function number(bytes, value, it) {
212
217
  if (isNaN(value)) {
213
218
  return number(bytes, 0, it);
@@ -285,5 +290,4 @@ function number(bytes, value, it) {
285
290
  return 9;
286
291
  }
287
292
  }
288
- exports.number = number;
289
293
  //# sourceMappingURL=encode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"encode.js","sourceRoot":"","sources":["../../src/encoding/encode.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) 2018 Endel Dreyer\n * Copyright (c) 2014 Ion Drive Software Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE\n */\n\nimport type { TextEncoder } from \"util\";\nimport type { Iterator } from \"./decode\";\n\nexport type BufferLike = number[] | ArrayBufferLike;\n\n/**\n * msgpack implementation highly based on notepack.io\n * https://github.com/darrachequesne/notepack\n */\n\nlet textEncoder: TextEncoder;\n// @ts-ignore\ntry { textEncoder = new TextEncoder(); } catch (e) { }\n\nexport function utf8Length(str) {\n var c = 0, length = 0;\n for (var i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n\nexport function utf8Write(view, str, it) {\n var c = 0;\n for (var i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n view[it.offset++] = c;\n }\n else if (c < 0x800) {\n view[it.offset++] = 0xc0 | (c >> 6);\n view[it.offset++] = 0x80 | (c & 0x3f);\n }\n else if (c < 0xd800 || c >= 0xe000) {\n view[it.offset++] = 0xe0 | (c >> 12);\n view[it.offset++] = 0x80 | (c >> 6 & 0x3f);\n view[it.offset++] = 0x80 | (c & 0x3f);\n }\n else {\n i++;\n c = 0x10000 + (((c & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff));\n view[it.offset++] = 0xf0 | (c >> 18);\n view[it.offset++] = 0x80 | (c >> 12 & 0x3f);\n view[it.offset++] = 0x80 | (c >> 6 & 0x3f);\n view[it.offset++] = 0x80 | (c & 0x3f);\n }\n }\n}\n\nexport function int8(bytes: BufferLike, value: number, it: Iterator) {\n bytes[it.offset++] = value & 255;\n};\n\nexport function uint8(bytes: BufferLike, value: number, it: Iterator) {\n bytes[it.offset++] = value & 255;\n};\n\nexport function int16(bytes: BufferLike, value: number, it: Iterator) {\n bytes[it.offset++] = value & 255;\n bytes[it.offset++] = (value >> 8) & 255;\n};\n\nexport function uint16(bytes: BufferLike, value: number, it: Iterator) {\n bytes[it.offset++] = value & 255;\n bytes[it.offset++] = (value >> 8) & 255;\n};\n\nexport function int32(bytes: BufferLike, value: number, it: Iterator) {\n bytes[it.offset++] = value & 255;\n bytes[it.offset++] = (value >> 8) & 255;\n bytes[it.offset++] = (value >> 16) & 255;\n bytes[it.offset++] = (value >> 24) & 255;\n};\n\nexport function uint32(bytes: BufferLike, value: number, it: Iterator) {\n const b4 = value >> 24;\n const b3 = value >> 16;\n const b2 = value >> 8;\n const b1 = value;\n bytes[it.offset++] = b1 & 255;\n bytes[it.offset++] = b2 & 255;\n bytes[it.offset++] = b3 & 255;\n bytes[it.offset++] = b4 & 255;\n};\n\nexport function int64(bytes: BufferLike, value: number, it: Iterator) {\n const high = Math.floor(value / Math.pow(2, 32));\n const low = value >>> 0;\n uint32(bytes, low, it);\n uint32(bytes, high, it);\n};\n\nexport function uint64(bytes: BufferLike, value: number, it: Iterator) {\n const high = (value / Math.pow(2, 32)) >> 0;\n const low = value >>> 0;\n uint32(bytes, low, it);\n uint32(bytes, high, it);\n};\n\nexport function float32(bytes: BufferLike, value: number, it: Iterator) {\n writeFloat32(bytes, value, it);\n}\n\nexport function float64(bytes: BufferLike, value: number, it: Iterator) {\n writeFloat64(bytes, value, it);\n}\n\n// force little endian to facilitate decoding on multiple implementations\nconst _isLittleEndian = true; // new Uint16Array(new Uint8Array([1, 0]).buffer)[0] === 1;\nconst _int32 = new Int32Array(2);\nconst _float32 = new Float32Array(_int32.buffer);\nconst _float64 = new Float64Array(_int32.buffer);\n\nexport function writeFloat32(bytes: BufferLike, value: number, it: Iterator) {\n _float32[0] = value;\n int32(bytes, _int32[0], it);\n};\n\nexport function writeFloat64(bytes: BufferLike, value: number, it: Iterator) {\n _float64[0] = value;\n int32(bytes, _int32[_isLittleEndian ? 0 : 1], it);\n int32(bytes, _int32[_isLittleEndian ? 1 : 0], it);\n};\n\nexport function boolean(bytes: BufferLike, value: number, it: Iterator) {\n bytes[it.offset++] = value ? 1 : 0; // uint8\n};\n\nexport function string(bytes: BufferLike, value: string, it: Iterator) {\n // encode `null` strings as empty.\n if (!value) { value = \"\"; }\n\n // let length = utf8Length(value);\n let length = Buffer.byteLength(value, \"utf8\");\n let size = 0;\n\n // fixstr\n if (length < 0x20) {\n bytes[it.offset++] = length | 0xa0;\n size = 1;\n }\n // str 8\n else if (length < 0x100) {\n bytes[it.offset++] = 0xd9;\n bytes[it.offset++] = length % 255;\n size = 2;\n }\n // str 16\n else if (length < 0x10000) {\n bytes[it.offset++] = 0xda;\n uint16(bytes, length, it);\n size = 3;\n }\n // str 32\n else if (length < 0x100000000) {\n bytes[it.offset++] = 0xdb;\n uint32(bytes, length, it);\n size = 5;\n } else {\n throw new Error('String too long');\n }\n\n utf8Write(bytes, value, it);\n\n return size + length;\n}\n\nexport function number(bytes: BufferLike, value: number, it: Iterator) {\n if (isNaN(value)) {\n return number(bytes, 0, it);\n\n } else if (!isFinite(value)) {\n return number(bytes, (value > 0) ? Number.MAX_SAFE_INTEGER : -Number.MAX_SAFE_INTEGER, it);\n\n } else if (value !== (value|0)) {\n bytes[it.offset++] = 0xcb;\n writeFloat64(bytes, value, it);\n return 9;\n\n // TODO: encode float 32?\n // is it possible to differentiate between float32 / float64 here?\n\n // // float 32\n // bytes.push(0xca);\n // writeFloat32(bytes, value);\n // return 5;\n }\n\n if (value >= 0) {\n // positive fixnum\n if (value < 0x80) {\n bytes[it.offset++] = value & 255; // uint8\n return 1;\n }\n\n // uint 8\n if (value < 0x100) {\n bytes[it.offset++] = 0xcc;\n bytes[it.offset++] = value & 255; // uint8\n return 2;\n }\n\n // uint 16\n if (value < 0x10000) {\n bytes[it.offset++] = 0xcd;\n uint16(bytes, value, it);\n return 3;\n }\n\n // uint 32\n if (value < 0x100000000) {\n bytes[it.offset++] = 0xce;\n uint32(bytes, value, it);\n return 5;\n }\n\n // uint 64\n bytes[it.offset++] = 0xcf;\n uint64(bytes, value, it);\n return 9;\n\n } else {\n\n // negative fixnum\n if (value >= -0x20) {\n bytes[it.offset++] = 0xe0 | (value + 0x20);\n return 1;\n }\n\n // int 8\n if (value >= -0x80) {\n bytes[it.offset++] = 0xd0;\n int8(bytes, value, it);\n return 2;\n }\n\n // int 16\n if (value >= -0x8000) {\n bytes[it.offset++] = 0xd1;\n int16(bytes, value, it);\n return 3;\n }\n\n // int 32\n if (value >= -0x80000000) {\n bytes[it.offset++] = 0xd2;\n int32(bytes, value, it);\n return 5;\n }\n\n // int 64\n bytes[it.offset++] = 0xd3;\n int64(bytes, value, it);\n return 9;\n }\n}\n"]}
1
+ {"version":3,"file":"encode.js","sourceRoot":"","sources":["../../src/encoding/encode.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;AAyCH,8BA4BC;AAED,oBAEC;AAED,sBAEC;AAED,sBAGC;AAED,wBAGC;AAED,sBAKC;AAED,wBASC;AAED,sBAKC;AAED,wBAKC;AAED,0BAEC;AAED,0BAEC;AAQD,oCAGC;AAED,oCAIC;AAED,0BAEC;AAED,wBAoCC;AAED,wBAwFC;AA7QD;;;GAGG;AAEH,IAAI,WAAwB,CAAC;AAC7B,aAAa;AACb,IAAI,CAAC;IAAC,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAAC,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AAEtD,MAAM,mBAAmB,GAAG,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;AAEpE,QAAA,UAAU,GAAqC,CAAC,mBAAmB,CAAC;IAC7E,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO;IAC3B,CAAC,CAAC,UAAU,GAAW,EAAE,CAAO;QAC5B,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;gBACX,MAAM,IAAI,CAAC,CAAC;YAChB,CAAC;iBACI,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;gBACjB,MAAM,IAAI,CAAC,CAAC;YAChB,CAAC;iBACI,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;gBACjC,MAAM,IAAI,CAAC,CAAC;YAChB,CAAC;iBACI,CAAC;gBACF,CAAC,EAAE,CAAC;gBACJ,MAAM,IAAI,CAAC,CAAC;YAChB,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC,CAAA;AAEL,SAAgB,SAAS,CAAC,IAAgB,EAAE,GAAW,EAAE,EAAY;IACnE,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;YACb,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;aACI,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACxC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC;QACjB,CAAC;aACI,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;YACnC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACnC,IAAI,CAAC,EAAE,CAAC,MAAM,GAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,EAAE,CAAC,MAAM,GAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACtC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC;QACjB,CAAC;aACI,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACnC,IAAI,CAAC,EAAE,CAAC,MAAM,GAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,EAAE,CAAC,MAAM,GAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,EAAE,CAAC,MAAM,GAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACtC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAgB,IAAI,CAAC,KAAiB,EAAE,KAAa,EAAE,EAAY;IAC/D,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC;AACrC,CAAC;AAAA,CAAC;AAEF,SAAgB,KAAK,CAAC,KAAiB,EAAE,KAAa,EAAE,EAAY;IAChE,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC;AACrC,CAAC;AAAA,CAAC;AAEF,SAAgB,KAAK,CAAC,KAAiB,EAAE,KAAa,EAAE,EAAY;IAChE,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC;IACjC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;AAC5C,CAAC;AAAA,CAAC;AAEF,SAAgB,MAAM,CAAC,KAAiB,EAAE,KAAa,EAAE,EAAY;IACjE,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC;IACjC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;AAC5C,CAAC;AAAA,CAAC;AAEF,SAAgB,KAAK,CAAC,KAAiB,EAAE,KAAa,EAAE,EAAY;IAClE,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC;IACjC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;IACxC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;IACzC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;AAC3C,CAAC;AAAA,CAAC;AAEF,SAAgB,MAAM,CAAC,KAAiB,EAAE,KAAa,EAAE,EAAY;IACnE,MAAM,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC;IACvB,MAAM,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC;IACvB,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;IACtB,MAAM,EAAE,GAAG,KAAK,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;IAC9B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;IAC9B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;IAC9B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;AAChC,CAAC;AAAA,CAAC;AAEF,SAAgB,KAAK,CAAC,KAAiB,EAAE,KAAa,EAAE,EAAY;IAClE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC;IACxB,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACvB,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC1B,CAAC;AAAA,CAAC;AAEF,SAAgB,MAAM,CAAC,KAAiB,EAAE,KAAa,EAAE,EAAY;IACnE,MAAM,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC;IACxB,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACvB,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC1B,CAAC;AAAA,CAAC;AAEF,SAAgB,OAAO,CAAC,KAAiB,EAAE,KAAa,EAAE,EAAY;IACpE,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC;AAED,SAAgB,OAAO,CAAC,KAAiB,EAAE,KAAa,EAAE,EAAY;IACpE,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC;AAED,yEAAyE;AACzE,MAAM,eAAe,GAAG,IAAI,CAAC,CAAE,2DAA2D;AAC1F,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AACjC,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACjD,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAEjD,SAAgB,YAAY,CAAC,KAAiB,EAAE,KAAa,EAAE,EAAY;IACzE,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACpB,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9B,CAAC;AAAA,CAAC;AAEF,SAAgB,YAAY,CAAC,KAAiB,EAAE,KAAa,EAAE,EAAY;IACzE,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACpB,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClD,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACpD,CAAC;AAAA,CAAC;AAEF,SAAgB,OAAO,CAAC,KAAiB,EAAE,KAAa,EAAE,EAAY;IACpE,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ;AAC9C,CAAC;AAAA,CAAC;AAEF,SAAgB,MAAM,CAAC,KAAiB,EAAE,KAAa,EAAE,EAAY;IACnE,kCAAkC;IAClC,IAAI,CAAC,KAAK,EAAE,CAAC;QAAC,KAAK,GAAG,EAAE,CAAC;IAAC,CAAC;IAE3B,IAAI,MAAM,GAAG,IAAA,kBAAU,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvC,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,SAAS;IACT,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC;QAClB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;QACnC,IAAI,GAAG,CAAC,CAAC;IACX,CAAC;IACD,QAAQ;SACH,IAAI,MAAM,GAAG,KAAK,EAAE,CAAC;QACxB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;QAC1B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC;QAClC,IAAI,GAAG,CAAC,CAAC;IACX,CAAC;IACD,SAAS;SACJ,IAAI,MAAM,GAAG,OAAO,EAAE,CAAC;QAC1B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;QAC1B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC1B,IAAI,GAAG,CAAC,CAAC;IACX,CAAC;IACD,SAAS;SACJ,IAAI,MAAM,GAAG,WAAW,EAAE,CAAC;QAC9B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;QAC1B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC1B,IAAI,GAAG,CAAC,CAAC;IACX,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IAE5B,OAAO,IAAI,GAAG,MAAM,CAAC;AACvB,CAAC;AAED,SAAgB,MAAM,CAAC,KAAiB,EAAE,KAAa,EAAE,EAAY;IACnE,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAE9B,CAAC;SAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IAE7F,CAAC;SAAM,IAAI,KAAK,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;QAC1B,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/B,OAAO,CAAC,CAAC;QAET,yBAAyB;QACzB,kEAAkE;QAElE,cAAc;QACd,oBAAoB;QACpB,8BAA8B;QAC9B,YAAY;IACd,CAAC;IAED,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACf,kBAAkB;QAClB,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC;YACjB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,QAAQ;YAC1C,OAAO,CAAC,CAAC;QACX,CAAC;QAED,SAAS;QACT,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;YAClB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;YAC1B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,QAAQ;YAC1C,OAAO,CAAC,CAAC;QACX,CAAC;QAED,UAAU;QACV,IAAI,KAAK,GAAG,OAAO,EAAE,CAAC;YACpB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;YAC1B,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACzB,OAAO,CAAC,CAAC;QACX,CAAC;QAED,UAAU;QACV,IAAI,KAAK,GAAG,WAAW,EAAE,CAAC;YACxB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;YAC1B,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACzB,OAAO,CAAC,CAAC;QACX,CAAC;QAED,UAAU;QACV,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;QAC1B,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACzB,OAAO,CAAC,CAAC;IAEX,CAAC;SAAM,CAAC;QAEN,kBAAkB;QAClB,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;YAC3C,OAAO,CAAC,CAAC;QACX,CAAC;QAED,QAAQ;QACR,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACvB,OAAO,CAAC,CAAC;QACX,CAAC;QAED,SAAS;QACT,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;YAC1B,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACxB,OAAO,CAAC,CAAC;QACX,CAAC;QAED,SAAS;QACT,IAAI,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;YACzB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;YAC1B,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACxB,OAAO,CAAC,CAAC;QACX,CAAC;QAED,SAAS;QACT,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;QAC1B,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACxB,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC","sourcesContent":["/**\n * Copyright (c) 2018 Endel Dreyer\n * Copyright (c) 2014 Ion Drive Software Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE\n */\n\nimport type { TextEncoder } from \"util\";\nimport type { Iterator } from \"./decode\";\n\nexport type BufferLike = number[] | ArrayBufferLike;\n\n/**\n * msgpack implementation highly based on notepack.io\n * https://github.com/darrachequesne/notepack\n */\n\nlet textEncoder: TextEncoder;\n// @ts-ignore\ntry { textEncoder = new TextEncoder(); } catch (e) { }\n\nconst hasBufferByteLength = (typeof Buffer !== 'undefined' && Buffer.byteLength);\n\nexport const utf8Length: (str: string, _?: any) => number = (hasBufferByteLength)\n ? Buffer.byteLength // node\n : function (str: string, _?: any) {\n var c = 0, length = 0;\n for (var i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n }\n\nexport function utf8Write(view: BufferLike, str: string, it: Iterator) {\n var c = 0;\n for (var i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n view[it.offset++] = c;\n }\n else if (c < 0x800) {\n view[it.offset] = 0xc0 | (c >> 6);\n view[it.offset + 1] = 0x80 | (c & 0x3f);\n it.offset += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n view[it.offset] = 0xe0 | (c >> 12);\n view[it.offset+1] = 0x80 | (c >> 6 & 0x3f);\n view[it.offset+2] = 0x80 | (c & 0x3f);\n it.offset += 3;\n }\n else {\n i++;\n c = 0x10000 + (((c & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff));\n view[it.offset] = 0xf0 | (c >> 18);\n view[it.offset+1] = 0x80 | (c >> 12 & 0x3f);\n view[it.offset+2] = 0x80 | (c >> 6 & 0x3f);\n view[it.offset+3] = 0x80 | (c & 0x3f);\n it.offset += 4;\n }\n }\n}\n\nexport function int8(bytes: BufferLike, value: number, it: Iterator) {\n bytes[it.offset++] = value & 255;\n};\n\nexport function uint8(bytes: BufferLike, value: number, it: Iterator) {\n bytes[it.offset++] = value & 255;\n};\n\nexport function int16(bytes: BufferLike, value: number, it: Iterator) {\n bytes[it.offset++] = value & 255;\n bytes[it.offset++] = (value >> 8) & 255;\n};\n\nexport function uint16(bytes: BufferLike, value: number, it: Iterator) {\n bytes[it.offset++] = value & 255;\n bytes[it.offset++] = (value >> 8) & 255;\n};\n\nexport function int32(bytes: BufferLike, value: number, it: Iterator) {\n bytes[it.offset++] = value & 255;\n bytes[it.offset++] = (value >> 8) & 255;\n bytes[it.offset++] = (value >> 16) & 255;\n bytes[it.offset++] = (value >> 24) & 255;\n};\n\nexport function uint32(bytes: BufferLike, value: number, it: Iterator) {\n const b4 = value >> 24;\n const b3 = value >> 16;\n const b2 = value >> 8;\n const b1 = value;\n bytes[it.offset++] = b1 & 255;\n bytes[it.offset++] = b2 & 255;\n bytes[it.offset++] = b3 & 255;\n bytes[it.offset++] = b4 & 255;\n};\n\nexport function int64(bytes: BufferLike, value: number, it: Iterator) {\n const high = Math.floor(value / Math.pow(2, 32));\n const low = value >>> 0;\n uint32(bytes, low, it);\n uint32(bytes, high, it);\n};\n\nexport function uint64(bytes: BufferLike, value: number, it: Iterator) {\n const high = (value / Math.pow(2, 32)) >> 0;\n const low = value >>> 0;\n uint32(bytes, low, it);\n uint32(bytes, high, it);\n};\n\nexport function float32(bytes: BufferLike, value: number, it: Iterator) {\n writeFloat32(bytes, value, it);\n}\n\nexport function float64(bytes: BufferLike, value: number, it: Iterator) {\n writeFloat64(bytes, value, it);\n}\n\n// force little endian to facilitate decoding on multiple implementations\nconst _isLittleEndian = true; // new Uint16Array(new Uint8Array([1, 0]).buffer)[0] === 1;\nconst _int32 = new Int32Array(2);\nconst _float32 = new Float32Array(_int32.buffer);\nconst _float64 = new Float64Array(_int32.buffer);\n\nexport function writeFloat32(bytes: BufferLike, value: number, it: Iterator) {\n _float32[0] = value;\n int32(bytes, _int32[0], it);\n};\n\nexport function writeFloat64(bytes: BufferLike, value: number, it: Iterator) {\n _float64[0] = value;\n int32(bytes, _int32[_isLittleEndian ? 0 : 1], it);\n int32(bytes, _int32[_isLittleEndian ? 1 : 0], it);\n};\n\nexport function boolean(bytes: BufferLike, value: number, it: Iterator) {\n bytes[it.offset++] = value ? 1 : 0; // uint8\n};\n\nexport function string(bytes: BufferLike, value: string, it: Iterator) {\n // encode `null` strings as empty.\n if (!value) { value = \"\"; }\n\n let length = utf8Length(value, \"utf8\");\n let size = 0;\n\n // fixstr\n if (length < 0x20) {\n bytes[it.offset++] = length | 0xa0;\n size = 1;\n }\n // str 8\n else if (length < 0x100) {\n bytes[it.offset++] = 0xd9;\n bytes[it.offset++] = length % 255;\n size = 2;\n }\n // str 16\n else if (length < 0x10000) {\n bytes[it.offset++] = 0xda;\n uint16(bytes, length, it);\n size = 3;\n }\n // str 32\n else if (length < 0x100000000) {\n bytes[it.offset++] = 0xdb;\n uint32(bytes, length, it);\n size = 5;\n } else {\n throw new Error('String too long');\n }\n\n utf8Write(bytes, value, it);\n\n return size + length;\n}\n\nexport function number(bytes: BufferLike, value: number, it: Iterator) {\n if (isNaN(value)) {\n return number(bytes, 0, it);\n\n } else if (!isFinite(value)) {\n return number(bytes, (value > 0) ? Number.MAX_SAFE_INTEGER : -Number.MAX_SAFE_INTEGER, it);\n\n } else if (value !== (value|0)) {\n bytes[it.offset++] = 0xcb;\n writeFloat64(bytes, value, it);\n return 9;\n\n // TODO: encode float 32?\n // is it possible to differentiate between float32 / float64 here?\n\n // // float 32\n // bytes.push(0xca);\n // writeFloat32(bytes, value);\n // return 5;\n }\n\n if (value >= 0) {\n // positive fixnum\n if (value < 0x80) {\n bytes[it.offset++] = value & 255; // uint8\n return 1;\n }\n\n // uint 8\n if (value < 0x100) {\n bytes[it.offset++] = 0xcc;\n bytes[it.offset++] = value & 255; // uint8\n return 2;\n }\n\n // uint 16\n if (value < 0x10000) {\n bytes[it.offset++] = 0xcd;\n uint16(bytes, value, it);\n return 3;\n }\n\n // uint 32\n if (value < 0x100000000) {\n bytes[it.offset++] = 0xce;\n uint32(bytes, value, it);\n return 5;\n }\n\n // uint 64\n bytes[it.offset++] = 0xcf;\n uint64(bytes, value, it);\n return 9;\n\n } else {\n\n // negative fixnum\n if (value >= -0x20) {\n bytes[it.offset++] = 0xe0 | (value + 0x20);\n return 1;\n }\n\n // int 8\n if (value >= -0x80) {\n bytes[it.offset++] = 0xd0;\n int8(bytes, value, it);\n return 2;\n }\n\n // int 16\n if (value >= -0x8000) {\n bytes[it.offset++] = 0xd1;\n int16(bytes, value, it);\n return 3;\n }\n\n // int 32\n if (value >= -0x80000000) {\n bytes[it.offset++] = 0xd2;\n int32(bytes, value, it);\n return 5;\n }\n\n // int 64\n bytes[it.offset++] = 0xd3;\n int64(bytes, value, it);\n return 9;\n }\n}\n"]}
@@ -21,5 +21,6 @@ export declare enum OPERATION {
21
21
  UNSHIFT = 12,
22
22
  REVERSE = 15,
23
23
  MOVE = 32,
24
- DELETE_BY_REFID = 33
24
+ DELETE_BY_REFID = 33,// This operation is only used at ENCODING time. During DECODING, DELETE_BY_REFID is converted to DELETE
25
+ ADD_BY_REFID = 129
25
26
  }
@@ -26,5 +26,6 @@ var OPERATION;
26
26
  OPERATION[OPERATION["REVERSE"] = 15] = "REVERSE";
27
27
  OPERATION[OPERATION["MOVE"] = 32] = "MOVE";
28
28
  OPERATION[OPERATION["DELETE_BY_REFID"] = 33] = "DELETE_BY_REFID";
29
+ OPERATION[OPERATION["ADD_BY_REFID"] = 129] = "ADD_BY_REFID";
29
30
  })(OPERATION || (exports.OPERATION = OPERATION = {}));
30
31
  //# sourceMappingURL=spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../src/encoding/spec.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG,GAAG,CAAC,CAAC,4DAA4D;AACvF,QAAA,OAAO,GAAG,GAAG,CAAC;AAE3B;;GAEG;AACH,IAAY,SAsBX;AAtBD,WAAY,SAAS;IACjB,yCAAS,CAAA;IACT,+CAAW,CAAA;IACX,8CAAW,CAAA;IACX,gEAAoB,CAAA;IACpB,2DAAkB,CAAA;IAClB,+DAAoB,CAAA;IAEpB;;OAEG;IACH,4CAAU,CAAA;IAEV;;OAEG;IACH,0CAAS,CAAA;IACT,gDAAY,CAAA;IACZ,gDAAY,CAAA;IACZ,0CAAS,CAAA;IACT,gEAAoB,CAAA;AAExB,CAAC,EAtBW,SAAS,yBAAT,SAAS,QAsBpB","sourcesContent":["export const SWITCH_TO_STRUCTURE = 255; // (decoding collides with DELETE_AND_ADD + fieldIndex = 63)\nexport const TYPE_ID = 213;\n\n/**\n * Encoding Schema field operations.\n */\nexport enum OPERATION {\n ADD = 128, // (10000000) add new structure/primitive\n REPLACE = 0, // (00000001) replace structure/primitive\n DELETE = 64, // (01000000) delete field\n DELETE_AND_MOVE = 96, // () add new structure/primitive\n MOVE_AND_ADD = 160, // () add new structure/primitive\n DELETE_AND_ADD = 192, // (11000000) DELETE field, followed by an ADD\n\n /**\n * Collection operations\n */\n CLEAR = 10,\n\n /**\n * ArraySchema operations\n */\n PUSH = 11,\n UNSHIFT = 12,\n REVERSE = 15,\n MOVE = 32,\n DELETE_BY_REFID = 33, // This operation is only used at ENCODING time. During DECODING, DELETE_BY_REFID is converted to DELETE\n\n}\n"]}
1
+ {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../src/encoding/spec.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG,GAAG,CAAC,CAAC,4DAA4D;AACvF,QAAA,OAAO,GAAG,GAAG,CAAC;AAE3B;;GAEG;AACH,IAAY,SAuBX;AAvBD,WAAY,SAAS;IACjB,yCAAS,CAAA;IACT,+CAAW,CAAA;IACX,8CAAW,CAAA;IACX,gEAAoB,CAAA;IACpB,2DAAkB,CAAA;IAClB,+DAAoB,CAAA;IAEpB;;OAEG;IACH,4CAAU,CAAA;IAEV;;OAEG;IACH,0CAAS,CAAA;IACT,gDAAY,CAAA;IACZ,gDAAY,CAAA;IACZ,0CAAS,CAAA;IACT,gEAAoB,CAAA;IACpB,2DAAkB,CAAA;AAEtB,CAAC,EAvBW,SAAS,yBAAT,SAAS,QAuBpB","sourcesContent":["export const SWITCH_TO_STRUCTURE = 255; // (decoding collides with DELETE_AND_ADD + fieldIndex = 63)\nexport const TYPE_ID = 213;\n\n/**\n * Encoding Schema field operations.\n */\nexport enum OPERATION {\n ADD = 128, // (10000000) add new structure/primitive\n REPLACE = 0, // (00000001) replace structure/primitive\n DELETE = 64, // (01000000) delete field\n DELETE_AND_MOVE = 96, // () add new structure/primitive\n MOVE_AND_ADD = 160, // () add new structure/primitive\n DELETE_AND_ADD = 192, // (11000000) DELETE field, followed by an ADD\n\n /**\n * Collection operations\n */\n CLEAR = 10,\n\n /**\n * ArraySchema operations\n */\n PUSH = 11,\n UNSHIFT = 12,\n REVERSE = 15,\n MOVE = 32,\n DELETE_BY_REFID = 33, // This operation is only used at ENCODING time. During DECODING, DELETE_BY_REFID is converted to DELETE\n ADD_BY_REFID = 129,\n\n}\n"]}
package/lib/index.d.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  export { Schema } from "./Schema";
2
2
  export type { DataChange } from "./decoder/DecodeOperation";
3
- import { $track, $encoder, $decoder, $filter, $getByIndex, $deleteByIndex, $changes, $childType } from "./types/symbols";
4
- export { $track, $encoder, $decoder, $filter, $getByIndex, $deleteByIndex, $changes, $childType };
3
+ export type { ToJSON } from "./types/HelperTypes";
5
4
  import { MapSchema } from "./types/custom/MapSchema";
6
5
  export { MapSchema };
7
6
  import { ArraySchema } from "./types/custom/ArraySchema";
@@ -13,14 +12,18 @@ export { SetSchema };
13
12
  import { registerType } from "./types/registry";
14
13
  export { registerType };
15
14
  export { dumpChanges } from "./utils";
15
+ export { $track, $encoder, $decoder, $filter, $getByIndex, $deleteByIndex, $changes, $childType } from "./types/symbols";
16
16
  export type { Iterator } from "./encoding/decode";
17
17
  import * as encode from "./encoding/encode";
18
18
  import * as decode from "./encoding/decode";
19
19
  export { encode, decode };
20
20
  export { Reflection, ReflectionType, ReflectionField, } from "./Reflection";
21
21
  export { Metadata } from "./Metadata";
22
- export { type, deprecated, defineTypes, view, TypeContext, } from "./annotations";
22
+ export { type, deprecated, defineTypes, view, schema, type SchemaWithExtends, } from "./annotations";
23
+ export { TypeContext } from "./types/TypeContext";
23
24
  export type { DefinitionType, PrimitiveType, Definition, } from "./annotations";
25
+ export { getDecoderStateCallbacks, CallbackProxy, GetCallbackProxy } from "./decoder/strategy/StateCallbacks";
26
+ export { getRawChangesCallback } from "./decoder/strategy/RawChanges";
24
27
  export { Encoder } from "./encoder/Encoder";
25
28
  export { encodeSchemaOperation, encodeArray as encodeKeyValueOperation } from "./encoder/EncodeOperation";
26
29
  export { ChangeTree, Ref } from "./encoder/ChangeTree";
package/lib/index.js CHANGED
@@ -1,17 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OPERATION = exports.decodeKeyValueOperation = exports.decodeSchemaOperation = exports.Decoder = exports.StateView = exports.ChangeTree = exports.encodeKeyValueOperation = exports.encodeSchemaOperation = exports.Encoder = exports.TypeContext = exports.view = exports.defineTypes = exports.deprecated = exports.type = exports.Metadata = exports.ReflectionField = exports.ReflectionType = exports.Reflection = exports.decode = exports.encode = exports.dumpChanges = exports.registerType = exports.SetSchema = exports.CollectionSchema = exports.ArraySchema = exports.MapSchema = exports.$childType = exports.$changes = exports.$deleteByIndex = exports.$getByIndex = exports.$filter = exports.$decoder = exports.$encoder = exports.$track = exports.Schema = void 0;
3
+ exports.OPERATION = exports.decodeKeyValueOperation = exports.decodeSchemaOperation = exports.Decoder = exports.StateView = exports.ChangeTree = exports.encodeKeyValueOperation = exports.encodeSchemaOperation = exports.Encoder = exports.getRawChangesCallback = exports.getDecoderStateCallbacks = exports.TypeContext = exports.schema = exports.view = exports.defineTypes = exports.deprecated = exports.type = exports.Metadata = exports.ReflectionField = exports.ReflectionType = exports.Reflection = exports.decode = exports.encode = exports.$childType = exports.$changes = exports.$deleteByIndex = exports.$getByIndex = exports.$filter = exports.$decoder = exports.$encoder = exports.$track = exports.dumpChanges = exports.registerType = exports.SetSchema = exports.CollectionSchema = exports.ArraySchema = exports.MapSchema = exports.Schema = void 0;
4
4
  var Schema_1 = require("./Schema");
5
5
  Object.defineProperty(exports, "Schema", { enumerable: true, get: function () { return Schema_1.Schema; } });
6
- const symbols_1 = require("./types/symbols");
7
- Object.defineProperty(exports, "$track", { enumerable: true, get: function () { return symbols_1.$track; } });
8
- Object.defineProperty(exports, "$encoder", { enumerable: true, get: function () { return symbols_1.$encoder; } });
9
- Object.defineProperty(exports, "$decoder", { enumerable: true, get: function () { return symbols_1.$decoder; } });
10
- Object.defineProperty(exports, "$filter", { enumerable: true, get: function () { return symbols_1.$filter; } });
11
- Object.defineProperty(exports, "$getByIndex", { enumerable: true, get: function () { return symbols_1.$getByIndex; } });
12
- Object.defineProperty(exports, "$deleteByIndex", { enumerable: true, get: function () { return symbols_1.$deleteByIndex; } });
13
- Object.defineProperty(exports, "$changes", { enumerable: true, get: function () { return symbols_1.$changes; } });
14
- Object.defineProperty(exports, "$childType", { enumerable: true, get: function () { return symbols_1.$childType; } });
15
6
  const MapSchema_1 = require("./types/custom/MapSchema");
16
7
  Object.defineProperty(exports, "MapSchema", { enumerable: true, get: function () { return MapSchema_1.MapSchema; } });
17
8
  const ArraySchema_1 = require("./types/custom/ArraySchema");
@@ -29,6 +20,16 @@ Object.defineProperty(exports, "registerType", { enumerable: true, get: function
29
20
  // Utils
30
21
  var utils_1 = require("./utils");
31
22
  Object.defineProperty(exports, "dumpChanges", { enumerable: true, get: function () { return utils_1.dumpChanges; } });
23
+ // Encoder / Decoder
24
+ var symbols_1 = require("./types/symbols");
25
+ Object.defineProperty(exports, "$track", { enumerable: true, get: function () { return symbols_1.$track; } });
26
+ Object.defineProperty(exports, "$encoder", { enumerable: true, get: function () { return symbols_1.$encoder; } });
27
+ Object.defineProperty(exports, "$decoder", { enumerable: true, get: function () { return symbols_1.$decoder; } });
28
+ Object.defineProperty(exports, "$filter", { enumerable: true, get: function () { return symbols_1.$filter; } });
29
+ Object.defineProperty(exports, "$getByIndex", { enumerable: true, get: function () { return symbols_1.$getByIndex; } });
30
+ Object.defineProperty(exports, "$deleteByIndex", { enumerable: true, get: function () { return symbols_1.$deleteByIndex; } });
31
+ Object.defineProperty(exports, "$changes", { enumerable: true, get: function () { return symbols_1.$changes; } });
32
+ Object.defineProperty(exports, "$childType", { enumerable: true, get: function () { return symbols_1.$childType; } });
32
33
  const encode = require("./encoding/encode");
33
34
  exports.encode = encode;
34
35
  const decode = require("./encoding/decode");
@@ -38,16 +39,21 @@ var Reflection_1 = require("./Reflection");
38
39
  Object.defineProperty(exports, "Reflection", { enumerable: true, get: function () { return Reflection_1.Reflection; } });
39
40
  Object.defineProperty(exports, "ReflectionType", { enumerable: true, get: function () { return Reflection_1.ReflectionType; } });
40
41
  Object.defineProperty(exports, "ReflectionField", { enumerable: true, get: function () { return Reflection_1.ReflectionField; } });
42
+ // Annotations, Metadata and TypeContext
41
43
  var Metadata_1 = require("./Metadata");
42
44
  Object.defineProperty(exports, "Metadata", { enumerable: true, get: function () { return Metadata_1.Metadata; } });
43
45
  var annotations_1 = require("./annotations");
44
- // Annotations
45
46
  Object.defineProperty(exports, "type", { enumerable: true, get: function () { return annotations_1.type; } });
46
47
  Object.defineProperty(exports, "deprecated", { enumerable: true, get: function () { return annotations_1.deprecated; } });
47
48
  Object.defineProperty(exports, "defineTypes", { enumerable: true, get: function () { return annotations_1.defineTypes; } });
48
49
  Object.defineProperty(exports, "view", { enumerable: true, get: function () { return annotations_1.view; } });
49
- // Internals
50
- Object.defineProperty(exports, "TypeContext", { enumerable: true, get: function () { return annotations_1.TypeContext; } });
50
+ Object.defineProperty(exports, "schema", { enumerable: true, get: function () { return annotations_1.schema; } });
51
+ var TypeContext_1 = require("./types/TypeContext");
52
+ Object.defineProperty(exports, "TypeContext", { enumerable: true, get: function () { return TypeContext_1.TypeContext; } });
53
+ var StateCallbacks_1 = require("./decoder/strategy/StateCallbacks");
54
+ Object.defineProperty(exports, "getDecoderStateCallbacks", { enumerable: true, get: function () { return StateCallbacks_1.getDecoderStateCallbacks; } });
55
+ var RawChanges_1 = require("./decoder/strategy/RawChanges");
56
+ Object.defineProperty(exports, "getRawChangesCallback", { enumerable: true, get: function () { return RawChanges_1.getRawChangesCallback; } });
51
57
  var Encoder_1 = require("./encoder/Encoder");
52
58
  Object.defineProperty(exports, "Encoder", { enumerable: true, get: function () { return Encoder_1.Encoder; } });
53
59
  var EncodeOperation_1 = require("./encoder/EncodeOperation");
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AAGf,6CAAyH;AAChH,uFADA,gBAAM,OACA;AAAE,yFADA,kBAAQ,OACA;AAAE,yFADA,kBAAQ,OACA;AAAE,wFADA,iBAAO,OACA;AAAE,4FADA,qBAAW,OACA;AAAE,+FADA,wBAAc,OACA;AAAE,yFADA,kBAAQ,OACA;AAAE,2FADA,oBAAU,OACA;AAE/F,wDAAoD;AAC3C,0FADA,qBAAS,OACA;AAElB,4DAAyD;AAChD,4FADA,yBAAW,OACA;AAEpB,sEAAmE;AAC1D,iGADA,mCAAgB,OACA;AAEzB,wDAAqD;AAC5C,0FADA,qBAAS,OACA;AAElB,+CAAgD;AACvC,6FADA,uBAAY,OACA;AAErB,IAAA,uBAAY,EAAC,KAAK,EAAE,EAAE,WAAW,EAAE,qBAAS,EAAE,CAAC,CAAC;AAChD,IAAA,uBAAY,EAAC,OAAO,EAAE,EAAE,WAAW,EAAE,yBAAW,EAAE,CAAC,CAAC;AACpD,IAAA,uBAAY,EAAC,KAAK,EAAE,EAAE,WAAW,EAAE,qBAAS,EAAE,CAAC,CAAC;AAChD,IAAA,uBAAY,EAAC,YAAY,EAAE,EAAE,WAAW,EAAE,mCAAgB,GAAG,CAAC,CAAC;AAE/D,QAAQ;AACR,iCAAsC;AAA7B,oGAAA,WAAW,OAAA;AAIpB,4CAA4C;AAEnC,wBAAM;AADf,4CAA4C;AAC3B,wBAAM;AAEvB,aAAa;AACb,2CAIsB;AAHlB,wGAAA,UAAU,OAAA;AACV,4GAAA,cAAc,OAAA;AACd,6GAAA,eAAe,OAAA;AAGnB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AAEjB,6CASuB;AARnB,cAAc;AACd,mGAAA,IAAI,OAAA;AACJ,yGAAA,UAAU,OAAA;AACV,0GAAA,WAAW,OAAA;AACX,mGAAA,IAAI,OAAA;AAEJ,YAAY;AACZ,0GAAA,WAAW,OAAA;AAMf,6CAA4C;AAAnC,kGAAA,OAAO,OAAA;AAChB,6DAA0G;AAAjG,wHAAA,qBAAqB,OAAA;AAAE,0HAAA,WAAW,OAA2B;AACtE,mDAAuD;AAA9C,wGAAA,UAAU,OAAA;AACnB,iDAAgD;AAAvC,sGAAA,SAAS,OAAA;AAElB,6CAA4C;AAAnC,kGAAA,OAAO,OAAA;AAChB,6DAA2F;AAAlF,wHAAA,qBAAqB,OAAA;AAAE,0HAAA,uBAAuB,OAAA;AAEvD,wCAA4C;AAAnC,iGAAA,SAAS,OAAA","sourcesContent":["export { Schema } from \"./Schema\";\nexport type { DataChange } from \"./decoder/DecodeOperation\";\n\nimport { $track, $encoder, $decoder, $filter, $getByIndex, $deleteByIndex, $changes, $childType } from \"./types/symbols\";\nexport { $track, $encoder, $decoder, $filter, $getByIndex, $deleteByIndex, $changes, $childType };\n\nimport { MapSchema } from \"./types/custom/MapSchema\"\nexport { MapSchema };\n\nimport { ArraySchema } from \"./types/custom/ArraySchema\";\nexport { ArraySchema };\n\nimport { CollectionSchema } from \"./types/custom/CollectionSchema\";\nexport { CollectionSchema };\n\nimport { SetSchema } from \"./types/custom/SetSchema\";\nexport { SetSchema };\n\nimport { registerType } from \"./types/registry\";\nexport { registerType };\n\nregisterType(\"map\", { constructor: MapSchema });\nregisterType(\"array\", { constructor: ArraySchema });\nregisterType(\"set\", { constructor: SetSchema });\nregisterType(\"collection\", { constructor: CollectionSchema, });\n\n// Utils\nexport { dumpChanges } from \"./utils\";\n\n// Encoder / Decoder\nexport type { Iterator } from \"./encoding/decode\";\nimport * as encode from \"./encoding/encode\";\nimport * as decode from \"./encoding/decode\";\nexport { encode, decode };\n\n// Reflection\nexport {\n Reflection,\n ReflectionType,\n ReflectionField,\n} from \"./Reflection\";\n\nexport { Metadata } from \"./Metadata\";\n\nexport {\n // Annotations\n type,\n deprecated,\n defineTypes,\n view,\n\n // Internals\n TypeContext,\n} from \"./annotations\";\n\n// Annotation types\nexport type { DefinitionType, PrimitiveType, Definition, } from \"./annotations\";\n\nexport { Encoder } from \"./encoder/Encoder\";\nexport { encodeSchemaOperation, encodeArray as encodeKeyValueOperation } from \"./encoder/EncodeOperation\";\nexport { ChangeTree, Ref } from \"./encoder/ChangeTree\";\nexport { StateView } from \"./encoder/StateView\";\n\nexport { Decoder } from \"./decoder/Decoder\";\nexport { decodeSchemaOperation, decodeKeyValueOperation } from \"./decoder/DecodeOperation\";\n\nexport { OPERATION } from \"./encoding/spec\";"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AAIf,wDAAoD;AAC3C,0FADA,qBAAS,OACA;AAElB,4DAAyD;AAChD,4FADA,yBAAW,OACA;AAEpB,sEAAmE;AAC1D,iGADA,mCAAgB,OACA;AAEzB,wDAAqD;AAC5C,0FADA,qBAAS,OACA;AAElB,+CAAgD;AACvC,6FADA,uBAAY,OACA;AAErB,IAAA,uBAAY,EAAC,KAAK,EAAE,EAAE,WAAW,EAAE,qBAAS,EAAE,CAAC,CAAC;AAChD,IAAA,uBAAY,EAAC,OAAO,EAAE,EAAE,WAAW,EAAE,yBAAW,EAAE,CAAC,CAAC;AACpD,IAAA,uBAAY,EAAC,KAAK,EAAE,EAAE,WAAW,EAAE,qBAAS,EAAE,CAAC,CAAC;AAChD,IAAA,uBAAY,EAAC,YAAY,EAAE,EAAE,WAAW,EAAE,mCAAgB,GAAG,CAAC,CAAC;AAE/D,QAAQ;AACR,iCAAsC;AAA7B,oGAAA,WAAW,OAAA;AAEpB,oBAAoB;AACpB,2CAAyH;AAAhH,iGAAA,MAAM,OAAA;AAAE,mGAAA,QAAQ,OAAA;AAAE,mGAAA,QAAQ,OAAA;AAAE,kGAAA,OAAO,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAE,yGAAA,cAAc,OAAA;AAAE,mGAAA,QAAQ,OAAA;AAAE,qGAAA,UAAU,OAAA;AAE/F,4CAA4C;AAEnC,wBAAM;AADf,4CAA4C;AAC3B,wBAAM;AAEvB,aAAa;AACb,2CAIsB;AAHlB,wGAAA,UAAU,OAAA;AACV,4GAAA,cAAc,OAAA;AACd,6GAAA,eAAe,OAAA;AAGnB,wCAAwC;AACxC,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,6CAAqG;AAA5F,mGAAA,IAAI,OAAA;AAAE,yGAAA,UAAU,OAAA;AAAE,0GAAA,WAAW,OAAA;AAAE,mGAAA,IAAI,OAAA;AAAE,qGAAA,MAAM,OAAA;AACpD,mDAAkD;AAAzC,0GAAA,WAAW,OAAA;AAKpB,oEAA8G;AAArG,0HAAA,wBAAwB,OAAA;AACjC,4DAAsE;AAA7D,mHAAA,qBAAqB,OAAA;AAE9B,6CAA4C;AAAnC,kGAAA,OAAO,OAAA;AAChB,6DAA0G;AAAjG,wHAAA,qBAAqB,OAAA;AAAE,0HAAA,WAAW,OAA2B;AACtE,mDAAuD;AAA9C,wGAAA,UAAU,OAAA;AACnB,iDAAgD;AAAvC,sGAAA,SAAS,OAAA;AAElB,6CAA4C;AAAnC,kGAAA,OAAO,OAAA;AAChB,6DAA2F;AAAlF,wHAAA,qBAAqB,OAAA;AAAE,0HAAA,uBAAuB,OAAA;AAEvD,wCAA4C;AAAnC,iGAAA,SAAS,OAAA","sourcesContent":["export { Schema } from \"./Schema\";\nexport type { DataChange } from \"./decoder/DecodeOperation\";\nexport type { ToJSON } from \"./types/HelperTypes\";\n\nimport { MapSchema } from \"./types/custom/MapSchema\"\nexport { MapSchema };\n\nimport { ArraySchema } from \"./types/custom/ArraySchema\";\nexport { ArraySchema };\n\nimport { CollectionSchema } from \"./types/custom/CollectionSchema\";\nexport { CollectionSchema };\n\nimport { SetSchema } from \"./types/custom/SetSchema\";\nexport { SetSchema };\n\nimport { registerType } from \"./types/registry\";\nexport { registerType };\n\nregisterType(\"map\", { constructor: MapSchema });\nregisterType(\"array\", { constructor: ArraySchema });\nregisterType(\"set\", { constructor: SetSchema });\nregisterType(\"collection\", { constructor: CollectionSchema, });\n\n// Utils\nexport { dumpChanges } from \"./utils\";\n\n// Encoder / Decoder\nexport { $track, $encoder, $decoder, $filter, $getByIndex, $deleteByIndex, $changes, $childType } from \"./types/symbols\";\nexport type { Iterator } from \"./encoding/decode\";\nimport * as encode from \"./encoding/encode\";\nimport * as decode from \"./encoding/decode\";\nexport { encode, decode };\n\n// Reflection\nexport {\n Reflection,\n ReflectionType,\n ReflectionField,\n} from \"./Reflection\";\n\n// Annotations, Metadata and TypeContext\nexport { Metadata } from \"./Metadata\";\nexport { type, deprecated, defineTypes, view, schema, type SchemaWithExtends, } from \"./annotations\";\nexport { TypeContext } from \"./types/TypeContext\";\n\n// Annotation types\nexport type { DefinitionType, PrimitiveType, Definition, } from \"./annotations\";\n\nexport { getDecoderStateCallbacks, CallbackProxy, GetCallbackProxy } from \"./decoder/strategy/StateCallbacks\";\nexport { getRawChangesCallback } from \"./decoder/strategy/RawChanges\";\n\nexport { Encoder } from \"./encoder/Encoder\";\nexport { encodeSchemaOperation, encodeArray as encodeKeyValueOperation } from \"./encoder/EncodeOperation\";\nexport { ChangeTree, Ref } from \"./encoder/ChangeTree\";\nexport { StateView } from \"./encoder/StateView\";\n\nexport { Decoder } from \"./decoder/Decoder\";\nexport { decodeSchemaOperation, decodeKeyValueOperation } from \"./decoder/DecodeOperation\";\n\nexport { OPERATION } from \"./encoding/spec\";"]}
@@ -1,10 +1,42 @@
1
- import { ArraySchema } from "./custom/ArraySchema";
2
- import { MapSchema } from "./custom/MapSchema";
1
+ import type { Definition, DefinitionType, PrimitiveType, RawPrimitiveType } from "../annotations";
2
+ import type { Schema } from "../Schema";
3
+ import type { ArraySchema } from "./custom/ArraySchema";
4
+ import type { CollectionSchema } from "./custom/CollectionSchema";
5
+ import type { MapSchema } from "./custom/MapSchema";
6
+ import type { SetSchema } from "./custom/SetSchema";
7
+ export type Constructor<T = {}> = new (...args: any[]) => T;
3
8
  export interface Collection<K = any, V = any, IT = V> {
4
9
  [Symbol.iterator](): IterableIterator<IT>;
5
10
  forEach(callback: Function): any;
6
11
  entries(): IterableIterator<[K, V]>;
7
12
  }
13
+ export type InferValueType<T extends DefinitionType> = T extends "string" ? string : T extends "number" ? number : T extends "int8" ? number : T extends "uint8" ? number : T extends "int16" ? number : T extends "uint16" ? number : T extends "int32" ? number : T extends "uint32" ? number : T extends "int64" ? number : T extends "uint64" ? number : T extends "float32" ? number : T extends "float64" ? number : T extends "boolean" ? boolean : T extends {
14
+ type: infer ChildType extends Constructor;
15
+ } ? InstanceType<ChildType> : T extends {
16
+ type: infer ChildType extends PrimitiveType;
17
+ } ? ChildType : T extends Array<infer ChildType extends Constructor> ? InstanceType<ChildType>[] : T extends Array<infer ChildType extends RawPrimitiveType> ? ChildType[] : T extends {
18
+ array: infer ChildType extends Constructor;
19
+ } ? InstanceType<ChildType>[] : T extends {
20
+ array: infer ChildType extends PrimitiveType;
21
+ } ? ChildType[] : T extends {
22
+ map: infer ChildType extends Constructor;
23
+ } ? MapSchema<InstanceType<ChildType>> : T extends {
24
+ map: infer ChildType extends PrimitiveType;
25
+ } ? MapSchema<ChildType> : T extends {
26
+ set: infer ChildType extends Constructor;
27
+ } ? SetSchema<InstanceType<ChildType>> : T extends {
28
+ set: infer ChildType extends PrimitiveType;
29
+ } ? SetSchema<ChildType> : T extends {
30
+ collection: infer ChildType extends Constructor;
31
+ } ? CollectionSchema<InstanceType<ChildType>> : T extends {
32
+ collection: infer ChildType extends PrimitiveType;
33
+ } ? CollectionSchema<ChildType> : T extends Constructor ? InstanceType<T> : T extends PrimitiveType ? T : never;
34
+ export type InferSchemaInstanceType<T extends Definition> = {
35
+ [K in keyof T]: InferValueType<T[K]>;
36
+ } & Schema;
37
+ export type DefinedSchemaType<T extends Definition, P extends typeof Schema> = {
38
+ new (): InferSchemaInstanceType<T> & InstanceType<P>;
39
+ } & typeof Schema;
8
40
  export type NonFunctionProps<T> = Omit<T, {
9
41
  [K in keyof T]: T[K] extends Function ? K : never;
10
42
  }[keyof T]>;
@@ -1 +1 @@
1
- {"version":3,"file":"HelperTypes.js","sourceRoot":"","sources":["../../src/types/HelperTypes.ts"],"names":[],"mappings":"","sourcesContent":["import { ArraySchema } from \"./custom/ArraySchema\";\nimport { MapSchema } from \"./custom/MapSchema\";\n\nexport interface Collection<K = any, V = any, IT = V> {\n [Symbol.iterator](): IterableIterator<IT>;\n forEach(callback: Function);\n entries(): IterableIterator<[K, V]>;\n}\n\nexport type NonFunctionProps<T> = Omit<T, {\n [K in keyof T]: T[K] extends Function ? K : never;\n}[keyof T]>;\n\nexport type NonFunctionPropNames<T> = {\n [K in keyof T]: T[K] extends Function ? never : K\n}[keyof T];\n\nexport type NonFunctionNonPrimitivePropNames<T> = {\n [K in keyof T]: T[K] extends Function\n ? never\n : T[K] extends number | string | boolean\n ? never\n : K\n}[keyof T];\n\nexport type ToJSON<T> = NonFunctionProps<{\n [K in keyof T]: T[K] extends MapSchema<infer U>\n ? Record<string, U>\n : T[K] extends Map<string, infer U>\n ? Record<string, U>\n : T[K] extends ArraySchema<infer U>\n ? U[]\n : T[K]\n}>;"]}
1
+ {"version":3,"file":"HelperTypes.js","sourceRoot":"","sources":["../../src/types/HelperTypes.ts"],"names":[],"mappings":"","sourcesContent":["import type { Definition, DefinitionType, PrimitiveType, RawPrimitiveType } from \"../annotations\";\nimport type { Schema } from \"../Schema\";\nimport type { ArraySchema } from \"./custom/ArraySchema\";\nimport type { CollectionSchema } from \"./custom/CollectionSchema\";\nimport type { MapSchema } from \"./custom/MapSchema\";\nimport type { SetSchema } from \"./custom/SetSchema\";\n\nexport type Constructor<T = {}> = new (...args: any[]) => T;\n\nexport interface Collection<K = any, V = any, IT = V> {\n [Symbol.iterator](): IterableIterator<IT>;\n forEach(callback: Function);\n entries(): IterableIterator<[K, V]>;\n}\n\nexport type InferValueType<T extends DefinitionType> =\n T extends \"string\" ? string\n : T extends \"number\" ? number\n : T extends \"int8\" ? number\n : T extends \"uint8\" ? number\n : T extends \"int16\" ? number\n : T extends \"uint16\" ? number\n : T extends \"int32\" ? number\n : T extends \"uint32\" ? number\n : T extends \"int64\" ? number\n : T extends \"uint64\" ? number\n : T extends \"float32\" ? number\n : T extends \"float64\" ? number\n : T extends \"boolean\" ? boolean\n\n : T extends { type: infer ChildType extends Constructor } ? InstanceType<ChildType>\n : T extends { type: infer ChildType extends PrimitiveType } ? ChildType\n\n : T extends Array<infer ChildType extends Constructor> ? InstanceType<ChildType>[]\n : T extends Array<infer ChildType extends RawPrimitiveType> ? ChildType[]\n\n : T extends { array: infer ChildType extends Constructor } ? InstanceType<ChildType>[]\n : T extends { array: infer ChildType extends PrimitiveType } ? ChildType[]\n\n : T extends { map: infer ChildType extends Constructor } ? MapSchema<InstanceType<ChildType>>\n : T extends { map: infer ChildType extends PrimitiveType } ? MapSchema<ChildType>\n\n : T extends { set: infer ChildType extends Constructor } ? SetSchema<InstanceType<ChildType>>\n : T extends { set: infer ChildType extends PrimitiveType } ? SetSchema<ChildType>\n\n : T extends { collection: infer ChildType extends Constructor } ? CollectionSchema<InstanceType<ChildType>>\n : T extends { collection: infer ChildType extends PrimitiveType } ? CollectionSchema<ChildType>\n\n : T extends Constructor ? InstanceType<T>\n : T extends PrimitiveType ? T\n\n : never;\n\nexport type InferSchemaInstanceType<T extends Definition> = {\n [K in keyof T]: InferValueType<T[K]>\n} & Schema;\n\nexport type DefinedSchemaType<T extends Definition, P extends typeof Schema> = {\n new (): InferSchemaInstanceType<T> & InstanceType<P>;\n} & typeof Schema;\n\nexport type NonFunctionProps<T> = Omit<T, {\n [K in keyof T]: T[K] extends Function ? K : never;\n}[keyof T]>;\n\nexport type NonFunctionPropNames<T> = {\n [K in keyof T]: T[K] extends Function ? never : K\n}[keyof T];\n\nexport type NonFunctionNonPrimitivePropNames<T> = {\n [K in keyof T]: T[K] extends Function\n ? never\n : T[K] extends number | string | boolean\n ? never\n : K\n}[keyof T];\n\nexport type ToJSON<T> = NonFunctionProps<{\n [K in keyof T]: T[K] extends MapSchema<infer U>\n ? Record<string, U>\n : T[K] extends Map<string, infer U>\n ? Record<string, U>\n : T[K] extends ArraySchema<infer U>\n ? U[]\n : T[K]\n}>;"]}
@@ -0,0 +1,23 @@
1
+ import { Schema } from "../Schema";
2
+ export declare class TypeContext {
3
+ types: {
4
+ [id: number]: typeof Schema;
5
+ };
6
+ schemas: Map<typeof Schema, number>;
7
+ hasFilters: boolean;
8
+ parentFiltered: {
9
+ [typeIdAndParentIndex: string]: boolean;
10
+ };
11
+ /**
12
+ * For inheritance support
13
+ * Keeps track of which classes extends which. (parent -> children)
14
+ */
15
+ static inheritedTypes: Map<typeof Schema, Set<typeof Schema>>;
16
+ static register(target: typeof Schema): void;
17
+ constructor(rootClass?: typeof Schema);
18
+ has(schema: typeof Schema): boolean;
19
+ get(typeid: number): typeof Schema;
20
+ add(schema: typeof Schema, typeid?: number): boolean;
21
+ getTypeId(klass: typeof Schema): number;
22
+ private discoverTypes;
23
+ }