@colyseus/schema 4.0.1 → 4.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/build/cjs/{index.js → index.cjs} +1 -1
  2. package/build/cjs/index.cjs.map +1 -0
  3. package/build/esm/index.mjs.map +1 -1
  4. package/lib/Metadata.js +54 -58
  5. package/lib/Metadata.js.map +1 -1
  6. package/lib/Reflection.js +29 -32
  7. package/lib/Reflection.js.map +1 -1
  8. package/lib/Schema.js +41 -45
  9. package/lib/Schema.js.map +1 -1
  10. package/lib/annotations.d.ts +1 -1
  11. package/lib/annotations.js +58 -69
  12. package/lib/annotations.js.map +1 -1
  13. package/lib/bench_encode.js +24 -59
  14. package/lib/bench_encode.js.map +1 -1
  15. package/lib/benchmark.d.ts +1 -0
  16. package/lib/benchmark.js +218 -0
  17. package/lib/benchmark.js.map +1 -0
  18. package/lib/codegen/api.js +10 -41
  19. package/lib/codegen/api.js.map +1 -1
  20. package/lib/codegen/argv.js +1 -3
  21. package/lib/codegen/argv.js.map +1 -1
  22. package/lib/codegen/cli.js +4 -9
  23. package/lib/codegen/cli.js.map +1 -1
  24. package/lib/codegen/languages/cpp.js +5 -8
  25. package/lib/codegen/languages/cpp.js.map +1 -1
  26. package/lib/codegen/languages/csharp.js +5 -8
  27. package/lib/codegen/languages/csharp.js.map +1 -1
  28. package/lib/codegen/languages/haxe.js +3 -6
  29. package/lib/codegen/languages/haxe.js.map +1 -1
  30. package/lib/codegen/languages/java.js +3 -6
  31. package/lib/codegen/languages/java.js.map +1 -1
  32. package/lib/codegen/languages/js.js +4 -7
  33. package/lib/codegen/languages/js.js.map +1 -1
  34. package/lib/codegen/languages/lua.js +4 -7
  35. package/lib/codegen/languages/lua.js.map +1 -1
  36. package/lib/codegen/languages/ts.js +5 -8
  37. package/lib/codegen/languages/ts.js.map +1 -1
  38. package/lib/codegen/parser.js +22 -59
  39. package/lib/codegen/parser.js.map +1 -1
  40. package/lib/codegen/types.js +12 -51
  41. package/lib/codegen/types.js.map +1 -1
  42. package/lib/decoder/DecodeOperation.js +44 -51
  43. package/lib/decoder/DecodeOperation.js.map +1 -1
  44. package/lib/decoder/Decoder.js +24 -28
  45. package/lib/decoder/Decoder.js.map +1 -1
  46. package/lib/decoder/ReferenceTracker.js +10 -14
  47. package/lib/decoder/ReferenceTracker.js.map +1 -1
  48. package/lib/decoder/strategy/Callbacks.js +39 -43
  49. package/lib/decoder/strategy/Callbacks.js.map +1 -1
  50. package/lib/decoder/strategy/RawChanges.js +1 -4
  51. package/lib/decoder/strategy/RawChanges.js.map +1 -1
  52. package/lib/decoder/strategy/getDecoderStateCallbacks.js +24 -27
  53. package/lib/decoder/strategy/getDecoderStateCallbacks.js.map +1 -1
  54. package/lib/encoder/ChangeTree.js +36 -44
  55. package/lib/encoder/ChangeTree.js.map +1 -1
  56. package/lib/encoder/EncodeOperation.js +25 -32
  57. package/lib/encoder/EncodeOperation.js.map +1 -1
  58. package/lib/encoder/Encoder.js +25 -29
  59. package/lib/encoder/Encoder.js.map +1 -1
  60. package/lib/encoder/Root.js +17 -21
  61. package/lib/encoder/Root.js.map +1 -1
  62. package/lib/encoder/StateView.js +40 -45
  63. package/lib/encoder/StateView.js.map +1 -1
  64. package/lib/encoding/assert.js +3 -9
  65. package/lib/encoding/assert.js.map +1 -1
  66. package/lib/encoding/decode.js +2 -6
  67. package/lib/encoding/decode.js.map +1 -1
  68. package/lib/encoding/encode.js +1 -4
  69. package/lib/encoding/encode.js.map +1 -1
  70. package/lib/encoding/spec.js +4 -7
  71. package/lib/encoding/spec.js.map +1 -1
  72. package/lib/index.d.ts +2 -2
  73. package/lib/index.js +33 -75
  74. package/lib/index.js.map +1 -1
  75. package/lib/src/Metadata.d.ts +49 -0
  76. package/lib/src/Metadata.js +256 -0
  77. package/lib/src/Metadata.js.map +1 -0
  78. package/lib/src/Reflection.d.ts +71 -0
  79. package/lib/src/Reflection.js +179 -0
  80. package/lib/src/Reflection.js.map +1 -0
  81. package/lib/src/Schema.d.ts +86 -0
  82. package/lib/src/Schema.js +352 -0
  83. package/lib/src/Schema.js.map +1 -0
  84. package/lib/src/annotations.d.ts +109 -0
  85. package/lib/src/annotations.js +473 -0
  86. package/lib/src/annotations.js.map +1 -0
  87. package/lib/src/bench_encode.d.ts +1 -0
  88. package/lib/src/bench_encode.js +91 -0
  89. package/lib/src/bench_encode.js.map +1 -0
  90. package/lib/src/codegen/api.d.ts +7 -0
  91. package/lib/src/codegen/api.js +56 -0
  92. package/lib/src/codegen/api.js.map +1 -0
  93. package/lib/src/codegen/argv.d.ts +6 -0
  94. package/lib/src/codegen/argv.js +39 -0
  95. package/lib/src/codegen/argv.js.map +1 -0
  96. package/lib/src/codegen/cli.d.ts +1 -0
  97. package/lib/src/codegen/cli.js +58 -0
  98. package/lib/src/codegen/cli.js.map +1 -0
  99. package/lib/src/codegen/languages/cpp.d.ts +3 -0
  100. package/lib/src/codegen/languages/cpp.js +258 -0
  101. package/lib/src/codegen/languages/cpp.js.map +1 -0
  102. package/lib/src/codegen/languages/csharp.d.ts +4 -0
  103. package/lib/src/codegen/languages/csharp.js +154 -0
  104. package/lib/src/codegen/languages/csharp.js.map +1 -0
  105. package/lib/src/codegen/languages/haxe.d.ts +3 -0
  106. package/lib/src/codegen/languages/haxe.js +100 -0
  107. package/lib/src/codegen/languages/haxe.js.map +1 -0
  108. package/lib/src/codegen/languages/java.d.ts +6 -0
  109. package/lib/src/codegen/languages/java.js +100 -0
  110. package/lib/src/codegen/languages/java.js.map +1 -0
  111. package/lib/src/codegen/languages/js.d.ts +3 -0
  112. package/lib/src/codegen/languages/js.js +101 -0
  113. package/lib/src/codegen/languages/js.js.map +1 -0
  114. package/lib/src/codegen/languages/lua.d.ts +3 -0
  115. package/lib/src/codegen/languages/lua.js +103 -0
  116. package/lib/src/codegen/languages/lua.js.map +1 -0
  117. package/lib/src/codegen/languages/ts.d.ts +3 -0
  118. package/lib/src/codegen/languages/ts.js +116 -0
  119. package/lib/src/codegen/languages/ts.js.map +1 -0
  120. package/lib/src/codegen/parser.d.ts +13 -0
  121. package/lib/src/codegen/parser.js +327 -0
  122. package/lib/src/codegen/parser.js.map +1 -0
  123. package/lib/src/codegen/types.d.ts +52 -0
  124. package/lib/src/codegen/types.js +142 -0
  125. package/lib/src/codegen/types.js.map +1 -0
  126. package/lib/src/decoder/DecodeOperation.d.ts +23 -0
  127. package/lib/src/decoder/DecodeOperation.js +248 -0
  128. package/lib/src/decoder/DecodeOperation.js.map +1 -0
  129. package/lib/src/decoder/Decoder.d.ts +21 -0
  130. package/lib/src/decoder/Decoder.js +114 -0
  131. package/lib/src/decoder/Decoder.js.map +1 -0
  132. package/lib/src/decoder/ReferenceTracker.d.ts +25 -0
  133. package/lib/src/decoder/ReferenceTracker.js +135 -0
  134. package/lib/src/decoder/ReferenceTracker.js.map +1 -0
  135. package/lib/src/decoder/strategy/Callbacks.d.ts +154 -0
  136. package/lib/src/decoder/strategy/Callbacks.js +336 -0
  137. package/lib/src/decoder/strategy/Callbacks.js.map +1 -0
  138. package/lib/src/decoder/strategy/RawChanges.d.ts +3 -0
  139. package/lib/src/decoder/strategy/RawChanges.js +4 -0
  140. package/lib/src/decoder/strategy/RawChanges.js.map +1 -0
  141. package/lib/src/decoder/strategy/getDecoderStateCallbacks.d.ts +76 -0
  142. package/lib/src/decoder/strategy/getDecoderStateCallbacks.js +274 -0
  143. package/lib/src/decoder/strategy/getDecoderStateCallbacks.js.map +1 -0
  144. package/lib/src/encoder/ChangeTree.d.ts +135 -0
  145. package/lib/src/encoder/ChangeTree.js +534 -0
  146. package/lib/src/encoder/ChangeTree.js.map +1 -0
  147. package/lib/src/encoder/EncodeOperation.d.ts +22 -0
  148. package/lib/src/encoder/EncodeOperation.js +132 -0
  149. package/lib/src/encoder/EncodeOperation.js.map +1 -0
  150. package/lib/src/encoder/Encoder.d.ts +22 -0
  151. package/lib/src/encoder/Encoder.js +204 -0
  152. package/lib/src/encoder/Encoder.js.map +1 -0
  153. package/lib/src/encoder/Root.d.ts +28 -0
  154. package/lib/src/encoder/Root.js +229 -0
  155. package/lib/src/encoder/Root.js.map +1 -0
  156. package/lib/src/encoder/StateView.d.ts +34 -0
  157. package/lib/src/encoder/StateView.js +279 -0
  158. package/lib/src/encoder/StateView.js.map +1 -0
  159. package/lib/src/encoding/assert.d.ts +10 -0
  160. package/lib/src/encoding/assert.js +49 -0
  161. package/lib/src/encoding/assert.js.map +1 -0
  162. package/lib/src/encoding/decode.d.ts +67 -0
  163. package/lib/src/encoding/decode.js +217 -0
  164. package/lib/src/encoding/decode.js.map +1 -0
  165. package/lib/src/encoding/encode.d.ts +40 -0
  166. package/lib/src/encoding/encode.js +279 -0
  167. package/lib/src/encoding/encode.js.map +1 -0
  168. package/lib/src/encoding/spec.d.ts +24 -0
  169. package/lib/src/encoding/spec.js +26 -0
  170. package/lib/src/encoding/spec.js.map +1 -0
  171. package/lib/src/index.d.ts +32 -0
  172. package/lib/src/index.js +39 -0
  173. package/lib/src/index.js.map +1 -0
  174. package/lib/src/symbol.shim.d.ts +6 -0
  175. package/lib/src/symbol.shim.js +3 -0
  176. package/lib/src/symbol.shim.js.map +1 -0
  177. package/lib/src/types/HelperTypes.d.ts +77 -0
  178. package/lib/src/types/HelperTypes.js +2 -0
  179. package/lib/src/types/HelperTypes.js.map +1 -0
  180. package/lib/src/types/TypeContext.d.ts +31 -0
  181. package/lib/src/types/TypeContext.js +143 -0
  182. package/lib/src/types/TypeContext.js.map +1 -0
  183. package/lib/src/types/custom/ArraySchema.d.ts +270 -0
  184. package/lib/src/types/custom/ArraySchema.js +733 -0
  185. package/lib/src/types/custom/ArraySchema.js.map +1 -0
  186. package/lib/src/types/custom/CollectionSchema.d.ts +51 -0
  187. package/lib/src/types/custom/CollectionSchema.js +170 -0
  188. package/lib/src/types/custom/CollectionSchema.js.map +1 -0
  189. package/lib/src/types/custom/MapSchema.d.ts +51 -0
  190. package/lib/src/types/custom/MapSchema.js +222 -0
  191. package/lib/src/types/custom/MapSchema.js.map +1 -0
  192. package/lib/src/types/custom/SetSchema.d.ts +48 -0
  193. package/lib/src/types/custom/SetSchema.js +178 -0
  194. package/lib/src/types/custom/SetSchema.js.map +1 -0
  195. package/lib/src/types/registry.d.ts +16 -0
  196. package/lib/src/types/registry.js +30 -0
  197. package/lib/src/types/registry.js.map +1 -0
  198. package/lib/src/types/symbols.d.ts +33 -0
  199. package/lib/src/types/symbols.js +34 -0
  200. package/lib/src/types/symbols.js.map +1 -0
  201. package/lib/src/types/utils.d.ts +1 -0
  202. package/lib/src/types/utils.js +13 -0
  203. package/lib/src/types/utils.js.map +1 -0
  204. package/lib/src/utils.d.ts +13 -0
  205. package/lib/src/utils.js +49 -0
  206. package/lib/src/utils.js.map +1 -0
  207. package/lib/src/v3_bench.d.ts +1 -0
  208. package/lib/src/v3_bench.js +128 -0
  209. package/lib/src/v3_bench.js.map +1 -0
  210. package/lib/symbol.shim.js +1 -2
  211. package/lib/symbol.shim.js.map +1 -1
  212. package/lib/types/HelperTypes.js +1 -2
  213. package/lib/types/TypeContext.js +8 -12
  214. package/lib/types/TypeContext.js.map +1 -1
  215. package/lib/types/custom/ArraySchema.js +63 -67
  216. package/lib/types/custom/ArraySchema.js.map +1 -1
  217. package/lib/types/custom/CollectionSchema.js +27 -31
  218. package/lib/types/custom/CollectionSchema.js.map +1 -1
  219. package/lib/types/custom/MapSchema.js +37 -41
  220. package/lib/types/custom/MapSchema.js.map +1 -1
  221. package/lib/types/custom/SetSchema.js +28 -32
  222. package/lib/types/custom/SetSchema.js.map +1 -1
  223. package/lib/types/registry.js +13 -20
  224. package/lib/types/registry.js.map +1 -1
  225. package/lib/types/symbols.js +16 -19
  226. package/lib/types/symbols.js.map +1 -1
  227. package/lib/types/utils.js +1 -4
  228. package/lib/types/utils.js.map +1 -1
  229. package/lib/utils.js +9 -14
  230. package/lib/utils.js.map +1 -1
  231. package/lib/v3_bench.js +17 -19
  232. package/lib/v3_bench.js.map +1 -1
  233. package/package.json +9 -7
  234. package/src/codegen/api.ts +7 -0
  235. package/src/codegen/parser.ts +2 -2
  236. package/src/codegen/types.ts +5 -0
  237. package/src/index.ts +2 -2
  238. package/build/cjs/index.js.map +0 -1
  239. package/src/bench_encode.ts +0 -64
@@ -1,16 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StateView = void 0;
4
- exports.createView = createView;
5
- const symbols_1 = require("../types/symbols");
6
- const annotations_1 = require("../annotations");
7
- const spec_1 = require("../encoding/spec");
8
- const Metadata_1 = require("../Metadata");
9
- const utils_1 = require("../types/utils");
10
- function createView(iterable = false) {
1
+ import { $changes, $fieldIndexesByViewTag, $refId, $viewFieldIndexes } from "../types/symbols";
2
+ import { DEFAULT_VIEW_TAG } from "../annotations";
3
+ import { OPERATION } from "../encoding/spec";
4
+ import { Metadata } from "../Metadata";
5
+ import { spliceOne } from "../types/utils";
6
+ export function createView(iterable = false) {
11
7
  return new StateView(iterable);
12
8
  }
13
- class StateView {
9
+ export class StateView {
14
10
  constructor(iterable = false) {
15
11
  this.iterable = iterable;
16
12
  /**
@@ -31,15 +27,15 @@ class StateView {
31
27
  }
32
28
  }
33
29
  // TODO: allow to set multiple tags at once
34
- add(obj, tag = annotations_1.DEFAULT_VIEW_TAG, checkIncludeParent = true) {
35
- const changeTree = obj?.[symbols_1.$changes];
30
+ add(obj, tag = DEFAULT_VIEW_TAG, checkIncludeParent = true) {
31
+ const changeTree = obj?.[$changes];
36
32
  const parentChangeTree = changeTree.parent;
37
33
  if (!changeTree) {
38
34
  console.warn("StateView#add(), invalid object:", obj);
39
35
  return false;
40
36
  }
41
37
  else if (!parentChangeTree &&
42
- obj[symbols_1.$refId] !== 0 // allow root object
38
+ obj[$refId] !== 0 // allow root object
43
39
  ) {
44
40
  /**
45
41
  * TODO: can we avoid this?
@@ -63,11 +59,11 @@ class StateView {
63
59
  if (checkIncludeParent && parentChangeTree) {
64
60
  this.addParentOf(changeTree, tag);
65
61
  }
66
- let changes = this.changes.get(obj[symbols_1.$refId]);
62
+ let changes = this.changes.get(obj[$refId]);
67
63
  if (changes === undefined) {
68
64
  changes = {};
69
65
  // FIXME / OPTIMIZE: do not add if no changes are needed
70
- this.changes.set(obj[symbols_1.$refId], changes);
66
+ this.changes.set(obj[$refId], changes);
71
67
  }
72
68
  let isChildAdded = false;
73
69
  //
@@ -86,7 +82,7 @@ class StateView {
86
82
  }
87
83
  });
88
84
  // set tag
89
- if (tag !== annotations_1.DEFAULT_VIEW_TAG) {
85
+ if (tag !== DEFAULT_VIEW_TAG) {
90
86
  if (!this.tags) {
91
87
  this.tags = new WeakMap();
92
88
  }
@@ -100,9 +96,9 @@ class StateView {
100
96
  }
101
97
  tags.add(tag);
102
98
  // Ref: add tagged properties
103
- metadata?.[symbols_1.$fieldIndexesByViewTag]?.[tag]?.forEach((index) => {
104
- if (changeTree.getChange(index) !== spec_1.OPERATION.DELETE) {
105
- changes[index] = spec_1.OPERATION.ADD;
99
+ metadata?.[$fieldIndexesByViewTag]?.[tag]?.forEach((index) => {
100
+ if (changeTree.getChange(index) !== OPERATION.DELETE) {
101
+ changes[index] = OPERATION.ADD;
106
102
  }
107
103
  });
108
104
  }
@@ -117,9 +113,9 @@ class StateView {
117
113
  if (index === undefined) {
118
114
  continue;
119
115
  } // skip "undefined" indexes
120
- const op = changeTree.indexedOperations[index] ?? spec_1.OPERATION.ADD;
116
+ const op = changeTree.indexedOperations[index] ?? OPERATION.ADD;
121
117
  const tagAtIndex = metadata?.[index].tag;
122
- if (op !== spec_1.OPERATION.DELETE &&
118
+ if (op !== OPERATION.DELETE &&
123
119
  (isInvisible || // if "invisible", include all
124
120
  tagAtIndex === undefined || // "all change" with no tag
125
121
  tagAtIndex === tag // tagged property
@@ -132,13 +128,13 @@ class StateView {
132
128
  return isChildAdded;
133
129
  }
134
130
  addParentOf(childChangeTree, tag) {
135
- const changeTree = childChangeTree.parent[symbols_1.$changes];
131
+ const changeTree = childChangeTree.parent[$changes];
136
132
  const parentIndex = childChangeTree.parentIndex;
137
133
  if (!this.visible.has(changeTree)) {
138
134
  // view must have all "changeTree" parent tree
139
135
  this.visible.add(changeTree);
140
136
  // add parent's parent
141
- const parentChangeTree = changeTree.parent?.[symbols_1.$changes];
137
+ const parentChangeTree = changeTree.parent?.[$changes];
142
138
  if (parentChangeTree && (parentChangeTree.filteredChanges !== undefined)) {
143
139
  this.addParentOf(changeTree, tag);
144
140
  }
@@ -146,11 +142,11 @@ class StateView {
146
142
  // if (!this.invisible.has(changeTree)) { return; }
147
143
  }
148
144
  // add parent's tag properties
149
- if (changeTree.getChange(parentIndex) !== spec_1.OPERATION.DELETE) {
150
- let changes = this.changes.get(changeTree.ref[symbols_1.$refId]);
145
+ if (changeTree.getChange(parentIndex) !== OPERATION.DELETE) {
146
+ let changes = this.changes.get(changeTree.ref[$refId]);
151
147
  if (changes === undefined) {
152
148
  changes = {};
153
- this.changes.set(changeTree.ref[symbols_1.$refId], changes);
149
+ this.changes.set(changeTree.ref[$refId], changes);
154
150
  }
155
151
  if (!this.tags) {
156
152
  this.tags = new WeakMap();
@@ -164,11 +160,11 @@ class StateView {
164
160
  tags = this.tags.get(changeTree);
165
161
  }
166
162
  tags.add(tag);
167
- changes[parentIndex] = spec_1.OPERATION.ADD;
163
+ changes[parentIndex] = OPERATION.ADD;
168
164
  }
169
165
  }
170
- remove(obj, tag = annotations_1.DEFAULT_VIEW_TAG, _isClear = false) {
171
- const changeTree = obj[symbols_1.$changes];
166
+ remove(obj, tag = DEFAULT_VIEW_TAG, _isClear = false) {
167
+ const changeTree = obj[$changes];
172
168
  if (!changeTree) {
173
169
  console.warn("StateView#remove(), invalid object:", obj);
174
170
  return this;
@@ -178,27 +174,27 @@ class StateView {
178
174
  if (this.iterable &&
179
175
  !_isClear // no need to remove during clear(), as it will be cleared entirely
180
176
  ) {
181
- (0, utils_1.spliceOne)(this.items, this.items.indexOf(obj));
177
+ spliceOne(this.items, this.items.indexOf(obj));
182
178
  }
183
179
  const ref = changeTree.ref;
184
180
  const metadata = ref.constructor[Symbol.metadata]; // ArraySchema/MapSchema do not have metadata
185
- const refId = ref[symbols_1.$refId];
181
+ const refId = ref[$refId];
186
182
  let changes = this.changes.get(refId);
187
183
  if (changes === undefined) {
188
184
  changes = {};
189
185
  this.changes.set(refId, changes);
190
186
  }
191
- if (tag === annotations_1.DEFAULT_VIEW_TAG) {
187
+ if (tag === DEFAULT_VIEW_TAG) {
192
188
  // parent is collection (Map/Array)
193
189
  const parent = changeTree.parent;
194
- if (parent && !Metadata_1.Metadata.isValidInstance(parent) && changeTree.isFiltered) {
195
- const parentRefId = parent[symbols_1.$refId];
190
+ if (parent && !Metadata.isValidInstance(parent) && changeTree.isFiltered) {
191
+ const parentRefId = parent[$refId];
196
192
  let changes = this.changes.get(parentRefId);
197
193
  if (changes === undefined) {
198
194
  changes = {};
199
195
  this.changes.set(parentRefId, changes);
200
196
  }
201
- else if (changes[changeTree.parentIndex] === spec_1.OPERATION.ADD) {
197
+ else if (changes[changeTree.parentIndex] === OPERATION.ADD) {
202
198
  //
203
199
  // SAME PATCH ADD + REMOVE:
204
200
  // The 'changes' of deleted structure should be ignored.
@@ -206,18 +202,18 @@ class StateView {
206
202
  this.changes.delete(refId);
207
203
  }
208
204
  // DELETE / DELETE BY REF ID
209
- changes[changeTree.parentIndex] = spec_1.OPERATION.DELETE;
205
+ changes[changeTree.parentIndex] = OPERATION.DELETE;
210
206
  // Remove child schema from visible set
211
207
  this._recursiveDeleteVisibleChangeTree(changeTree);
212
208
  }
213
209
  else {
214
210
  // delete all "tagged" properties.
215
- metadata?.[symbols_1.$viewFieldIndexes]?.forEach((index) => changes[index] = spec_1.OPERATION.DELETE);
211
+ metadata?.[$viewFieldIndexes]?.forEach((index) => changes[index] = OPERATION.DELETE);
216
212
  }
217
213
  }
218
214
  else {
219
215
  // delete only tagged properties
220
- metadata?.[symbols_1.$fieldIndexesByViewTag][tag].forEach((index) => changes[index] = spec_1.OPERATION.DELETE);
216
+ metadata?.[$fieldIndexesByViewTag][tag].forEach((index) => changes[index] = OPERATION.DELETE);
221
217
  }
222
218
  // remove tag
223
219
  if (this.tags && this.tags.has(changeTree)) {
@@ -238,10 +234,10 @@ class StateView {
238
234
  return this;
239
235
  }
240
236
  has(obj) {
241
- return this.visible.has(obj[symbols_1.$changes]);
237
+ return this.visible.has(obj[$changes]);
242
238
  }
243
- hasTag(ob, tag = annotations_1.DEFAULT_VIEW_TAG) {
244
- const tags = this.tags?.get(ob[symbols_1.$changes]);
239
+ hasTag(ob, tag = DEFAULT_VIEW_TAG) {
240
+ const tags = this.tags?.get(ob[$changes]);
245
241
  return tags?.has(tag) ?? false;
246
242
  }
247
243
  clear() {
@@ -249,7 +245,7 @@ class StateView {
249
245
  throw new Error("StateView#clear() is only available for iterable StateView's. Use StateView(iterable: true) constructor.");
250
246
  }
251
247
  for (let i = 0, l = this.items.length; i < l; i++) {
252
- this.remove(this.items[i], annotations_1.DEFAULT_VIEW_TAG, true);
248
+ this.remove(this.items[i], DEFAULT_VIEW_TAG, true);
253
249
  }
254
250
  // clear items array
255
251
  this.items.length = 0;
@@ -266,7 +262,7 @@ class StateView {
266
262
  // refId: changeTree.ref[$refId],
267
263
  // parent: changeTree.parent.constructor.name,
268
264
  // });
269
- if (this.visible.has(changeTree.parent[symbols_1.$changes])) {
265
+ if (this.visible.has(changeTree.parent[$changes])) {
270
266
  this.visible.add(changeTree);
271
267
  isVisible = true;
272
268
  }
@@ -280,5 +276,4 @@ class StateView {
280
276
  });
281
277
  }
282
278
  }
283
- exports.StateView = StateView;
284
279
  //# sourceMappingURL=StateView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StateView.js","sourceRoot":"","sources":["../../src/encoder/StateView.ts"],"names":[],"mappings":"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","sourcesContent":["import { ChangeTree, IndexedOperations, Ref } from \"./ChangeTree\";\nimport { $changes, $fieldIndexesByViewTag, $refId, $viewFieldIndexes } from \"../types/symbols\";\nimport { DEFAULT_VIEW_TAG } from \"../annotations\";\nimport { OPERATION } from \"../encoding/spec\";\nimport { Metadata } from \"../Metadata\";\nimport { spliceOne } from \"../types/utils\";\nimport type { Schema } from \"../Schema\";\n\nexport function createView(iterable: boolean = false) {\n return new StateView(iterable);\n}\n\nexport class StateView {\n /**\n * Iterable list of items that are visible to this view\n * (Available only if constructed with `iterable: true`)\n */\n items: Ref[];\n\n /**\n * List of ChangeTree's that are visible to this view\n */\n visible: WeakSet<ChangeTree> = new WeakSet<ChangeTree>();\n\n /**\n * List of ChangeTree's that are invisible to this view\n */\n invisible: WeakSet<ChangeTree> = new WeakSet<ChangeTree>();\n\n tags?: WeakMap<ChangeTree, Set<number>>; // TODO: use bit manipulation instead of Set<number> ()\n\n /**\n * Manual \"ADD\" operations for changes per ChangeTree, specific to this view.\n * (This is used to force encoding a property, even if it was not changed)\n */\n changes = new Map<number, IndexedOperations>();\n\n constructor(public iterable: boolean = false) {\n if (iterable) {\n this.items = [];\n }\n }\n\n // TODO: allow to set multiple tags at once\n add(obj: Ref, tag: number = DEFAULT_VIEW_TAG, checkIncludeParent: boolean = true) {\n const changeTree: ChangeTree = obj?.[$changes];\n const parentChangeTree = changeTree.parent;\n\n if (!changeTree) {\n console.warn(\"StateView#add(), invalid object:\", obj);\n return false;\n\n } else if (\n !parentChangeTree &&\n obj[$refId] !== 0 // allow root object\n ) {\n /**\n * TODO: can we avoid this?\n *\n * When the \"parent\" structure has the @view() tag, it is currently\n * not possible to identify it has to be added to the view as well\n * (this.addParentOf() is not called).\n */\n throw new Error(\n `Cannot add a detached instance to the StateView. Make sure to assign the \"${changeTree.ref.constructor.name}\" instance to the state before calling view.add()`\n );\n }\n\n // FIXME: ArraySchema/MapSchema do not have metadata\n const metadata: Metadata = (obj.constructor as typeof Schema)[Symbol.metadata];\n this.visible.add(changeTree);\n\n // add to iterable list (only the explicitly added items)\n if (this.iterable && checkIncludeParent) {\n this.items.push(obj);\n }\n\n // add parent ChangeTree's\n // - if it was invisible to this view\n // - if it were previously filtered out\n if (checkIncludeParent && parentChangeTree) {\n this.addParentOf(changeTree, tag);\n }\n\n let changes = this.changes.get(obj[$refId]);\n if (changes === undefined) {\n changes = {};\n // FIXME / OPTIMIZE: do not add if no changes are needed\n this.changes.set(obj[$refId], changes);\n }\n\n let isChildAdded = false;\n\n //\n // Add children of this ChangeTree first.\n // If successful, we must link the current ChangeTree to the child.\n //\n changeTree.forEachChild((change, index) => {\n // Do not ADD children that don't have the same tag\n if (\n metadata &&\n metadata[index].tag !== undefined &&\n metadata[index].tag !== tag\n ) {\n return;\n }\n\n if (this.add(change.ref, tag, false)) {\n isChildAdded = true;\n }\n });\n\n // set tag\n if (tag !== DEFAULT_VIEW_TAG) {\n if (!this.tags) {\n this.tags = new WeakMap<ChangeTree, Set<number>>();\n }\n let tags: Set<number>;\n if (!this.tags.has(changeTree)) {\n tags = new Set<number>();\n this.tags.set(changeTree, tags);\n } else {\n tags = this.tags.get(changeTree);\n }\n tags.add(tag);\n\n // Ref: add tagged properties\n metadata?.[$fieldIndexesByViewTag]?.[tag]?.forEach((index) => {\n if (changeTree.getChange(index) !== OPERATION.DELETE) {\n changes[index] = OPERATION.ADD;\n }\n });\n\n } else if (!changeTree.isNew || isChildAdded) {\n // new structures will be added as part of .encode() call, no need to force it to .encodeView()\n const changeSet = (changeTree.filteredChanges !== undefined)\n ? changeTree.allFilteredChanges\n : changeTree.allChanges;\n\n const isInvisible = this.invisible.has(changeTree);\n\n for (let i = 0, len = changeSet.operations.length; i < len; i++) {\n const index = changeSet.operations[i];\n if (index === undefined) { continue; } // skip \"undefined\" indexes\n\n const op = changeTree.indexedOperations[index] ?? OPERATION.ADD;\n const tagAtIndex = metadata?.[index].tag;\n if (\n op !== OPERATION.DELETE &&\n (\n isInvisible || // if \"invisible\", include all\n tagAtIndex === undefined || // \"all change\" with no tag\n tagAtIndex === tag // tagged property\n )\n ) {\n changes[index] = op;\n isChildAdded = true; // FIXME: assign only once\n }\n }\n }\n\n return isChildAdded;\n }\n\n protected addParentOf(childChangeTree: ChangeTree, tag: number) {\n const changeTree = childChangeTree.parent[$changes];\n const parentIndex = childChangeTree.parentIndex;\n\n if (!this.visible.has(changeTree)) {\n // view must have all \"changeTree\" parent tree\n this.visible.add(changeTree);\n\n // add parent's parent\n const parentChangeTree: ChangeTree = changeTree.parent?.[$changes];\n if (parentChangeTree && (parentChangeTree.filteredChanges !== undefined)) {\n this.addParentOf(changeTree, tag);\n }\n\n // // parent is already available, no need to add it!\n // if (!this.invisible.has(changeTree)) { return; }\n }\n\n // add parent's tag properties\n if (changeTree.getChange(parentIndex) !== OPERATION.DELETE) {\n let changes = this.changes.get(changeTree.ref[$refId]);\n if (changes === undefined) {\n changes = {};\n this.changes.set(changeTree.ref[$refId], changes);\n }\n\n if (!this.tags) {\n this.tags = new WeakMap<ChangeTree, Set<number>>();\n }\n\n let tags: Set<number>;\n if (!this.tags.has(changeTree)) {\n tags = new Set<number>();\n this.tags.set(changeTree, tags);\n } else {\n tags = this.tags.get(changeTree);\n }\n tags.add(tag);\n\n changes[parentIndex] = OPERATION.ADD;\n }\n }\n\n remove(obj: Ref, tag?: number): this; // hide _isClear parameter from public API\n remove(obj: Ref, tag?: number, _isClear?: boolean): this;\n remove(obj: Ref, tag: number = DEFAULT_VIEW_TAG, _isClear: boolean = false): this {\n const changeTree: ChangeTree = obj[$changes];\n if (!changeTree) {\n console.warn(\"StateView#remove(), invalid object:\", obj);\n return this;\n }\n\n this.visible.delete(changeTree);\n\n // remove from iterable list\n if (\n this.iterable &&\n !_isClear // no need to remove during clear(), as it will be cleared entirely\n ) {\n spliceOne(this.items, this.items.indexOf(obj));\n }\n\n const ref = changeTree.ref;\n const metadata: Metadata = ref.constructor[Symbol.metadata]; // ArraySchema/MapSchema do not have metadata\n\n const refId = ref[$refId];\n\n let changes = this.changes.get(refId);\n if (changes === undefined) {\n changes = {};\n this.changes.set(refId, changes);\n }\n\n if (tag === DEFAULT_VIEW_TAG) {\n // parent is collection (Map/Array)\n const parent = changeTree.parent;\n if (parent && !Metadata.isValidInstance(parent) && changeTree.isFiltered) {\n const parentRefId = parent[$refId];\n let changes = this.changes.get(parentRefId);\n if (changes === undefined) {\n changes = {};\n this.changes.set(parentRefId, changes);\n\n } else if (changes[changeTree.parentIndex] === OPERATION.ADD) {\n //\n // SAME PATCH ADD + REMOVE:\n // The 'changes' of deleted structure should be ignored.\n //\n this.changes.delete(refId);\n }\n\n // DELETE / DELETE BY REF ID\n changes[changeTree.parentIndex] = OPERATION.DELETE;\n\n // Remove child schema from visible set\n this._recursiveDeleteVisibleChangeTree(changeTree);\n\n } else {\n // delete all \"tagged\" properties.\n metadata?.[$viewFieldIndexes]?.forEach((index) =>\n changes[index] = OPERATION.DELETE);\n }\n\n } else {\n // delete only tagged properties\n metadata?.[$fieldIndexesByViewTag][tag].forEach((index) =>\n changes[index] = OPERATION.DELETE);\n }\n\n // remove tag\n if (this.tags && this.tags.has(changeTree)) {\n const tags = this.tags.get(changeTree);\n if (tag === undefined) {\n // delete all tags\n this.tags.delete(changeTree);\n } else {\n // delete specific tag\n tags.delete(tag);\n\n // if tag set is empty, delete it entirely\n if (tags.size === 0) {\n this.tags.delete(changeTree);\n }\n }\n }\n\n return this;\n }\n\n has(obj: Ref) {\n return this.visible.has(obj[$changes]);\n }\n\n hasTag(ob: Ref, tag: number = DEFAULT_VIEW_TAG) {\n const tags = this.tags?.get(ob[$changes]);\n return tags?.has(tag) ?? false;\n }\n\n clear() {\n if (!this.iterable) {\n throw new Error(\"StateView#clear() is only available for iterable StateView's. Use StateView(iterable: true) constructor.\");\n }\n\n for (let i = 0, l = this.items.length; i < l; i++) {\n this.remove(this.items[i], DEFAULT_VIEW_TAG, true);\n }\n\n // clear items array\n this.items.length = 0;\n }\n\n isChangeTreeVisible(changeTree: ChangeTree) {\n let isVisible = this.visible.has(changeTree);\n\n //\n // TODO: avoid checking for parent visibility, most of the time it's not needed\n // See test case: 'should not be required to manually call view.add() items to child arrays without @view() tag'\n //\n if (!isVisible && changeTree.isVisibilitySharedWithParent){\n\n // console.log(\"CHECK AGAINST PARENT...\", {\n // ref: changeTree.ref.constructor.name,\n // refId: changeTree.ref[$refId],\n // parent: changeTree.parent.constructor.name,\n // });\n\n if (this.visible.has(changeTree.parent[$changes])) {\n this.visible.add(changeTree);\n isVisible = true;\n }\n }\n\n return isVisible;\n }\n\n protected _recursiveDeleteVisibleChangeTree(changeTree: ChangeTree) {\n changeTree.forEachChild((childChangeTree) => {\n this.visible.delete(childChangeTree);\n this._recursiveDeleteVisibleChangeTree(childChangeTree);\n });\n }\n}\n"]}
1
+ {"version":3,"file":"StateView.js","sourceRoot":"","sources":["../../src/encoder/StateView.ts"],"names":[],"mappings":"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","sourcesContent":["import { ChangeTree, IndexedOperations, Ref } from \"./ChangeTree\";\nimport { $changes, $fieldIndexesByViewTag, $refId, $viewFieldIndexes } from \"../types/symbols\";\nimport { DEFAULT_VIEW_TAG } from \"../annotations\";\nimport { OPERATION } from \"../encoding/spec\";\nimport { Metadata } from \"../Metadata\";\nimport { spliceOne } from \"../types/utils\";\nimport type { Schema } from \"../Schema\";\n\nexport function createView(iterable: boolean = false) {\n return new StateView(iterable);\n}\n\nexport class StateView {\n /**\n * Iterable list of items that are visible to this view\n * (Available only if constructed with `iterable: true`)\n */\n items: Ref[];\n\n /**\n * List of ChangeTree's that are visible to this view\n */\n visible: WeakSet<ChangeTree> = new WeakSet<ChangeTree>();\n\n /**\n * List of ChangeTree's that are invisible to this view\n */\n invisible: WeakSet<ChangeTree> = new WeakSet<ChangeTree>();\n\n tags?: WeakMap<ChangeTree, Set<number>>; // TODO: use bit manipulation instead of Set<number> ()\n\n /**\n * Manual \"ADD\" operations for changes per ChangeTree, specific to this view.\n * (This is used to force encoding a property, even if it was not changed)\n */\n changes = new Map<number, IndexedOperations>();\n\n constructor(public iterable: boolean = false) {\n if (iterable) {\n this.items = [];\n }\n }\n\n // TODO: allow to set multiple tags at once\n add(obj: Ref, tag: number = DEFAULT_VIEW_TAG, checkIncludeParent: boolean = true) {\n const changeTree: ChangeTree = obj?.[$changes];\n const parentChangeTree = changeTree.parent;\n\n if (!changeTree) {\n console.warn(\"StateView#add(), invalid object:\", obj);\n return false;\n\n } else if (\n !parentChangeTree &&\n obj[$refId] !== 0 // allow root object\n ) {\n /**\n * TODO: can we avoid this?\n *\n * When the \"parent\" structure has the @view() tag, it is currently\n * not possible to identify it has to be added to the view as well\n * (this.addParentOf() is not called).\n */\n throw new Error(\n `Cannot add a detached instance to the StateView. Make sure to assign the \"${changeTree.ref.constructor.name}\" instance to the state before calling view.add()`\n );\n }\n\n // FIXME: ArraySchema/MapSchema do not have metadata\n const metadata: Metadata = (obj.constructor as typeof Schema)[Symbol.metadata];\n this.visible.add(changeTree);\n\n // add to iterable list (only the explicitly added items)\n if (this.iterable && checkIncludeParent) {\n this.items.push(obj);\n }\n\n // add parent ChangeTree's\n // - if it was invisible to this view\n // - if it were previously filtered out\n if (checkIncludeParent && parentChangeTree) {\n this.addParentOf(changeTree, tag);\n }\n\n let changes = this.changes.get(obj[$refId]);\n if (changes === undefined) {\n changes = {};\n // FIXME / OPTIMIZE: do not add if no changes are needed\n this.changes.set(obj[$refId], changes);\n }\n\n let isChildAdded = false;\n\n //\n // Add children of this ChangeTree first.\n // If successful, we must link the current ChangeTree to the child.\n //\n changeTree.forEachChild((change, index) => {\n // Do not ADD children that don't have the same tag\n if (\n metadata &&\n metadata[index].tag !== undefined &&\n metadata[index].tag !== tag\n ) {\n return;\n }\n\n if (this.add(change.ref, tag, false)) {\n isChildAdded = true;\n }\n });\n\n // set tag\n if (tag !== DEFAULT_VIEW_TAG) {\n if (!this.tags) {\n this.tags = new WeakMap<ChangeTree, Set<number>>();\n }\n let tags: Set<number>;\n if (!this.tags.has(changeTree)) {\n tags = new Set<number>();\n this.tags.set(changeTree, tags);\n } else {\n tags = this.tags.get(changeTree);\n }\n tags.add(tag);\n\n // Ref: add tagged properties\n metadata?.[$fieldIndexesByViewTag]?.[tag]?.forEach((index) => {\n if (changeTree.getChange(index) !== OPERATION.DELETE) {\n changes[index] = OPERATION.ADD;\n }\n });\n\n } else if (!changeTree.isNew || isChildAdded) {\n // new structures will be added as part of .encode() call, no need to force it to .encodeView()\n const changeSet = (changeTree.filteredChanges !== undefined)\n ? changeTree.allFilteredChanges\n : changeTree.allChanges;\n\n const isInvisible = this.invisible.has(changeTree);\n\n for (let i = 0, len = changeSet.operations.length; i < len; i++) {\n const index = changeSet.operations[i];\n if (index === undefined) { continue; } // skip \"undefined\" indexes\n\n const op = changeTree.indexedOperations[index] ?? OPERATION.ADD;\n const tagAtIndex = metadata?.[index].tag;\n if (\n op !== OPERATION.DELETE &&\n (\n isInvisible || // if \"invisible\", include all\n tagAtIndex === undefined || // \"all change\" with no tag\n tagAtIndex === tag // tagged property\n )\n ) {\n changes[index] = op;\n isChildAdded = true; // FIXME: assign only once\n }\n }\n }\n\n return isChildAdded;\n }\n\n protected addParentOf(childChangeTree: ChangeTree, tag: number) {\n const changeTree = childChangeTree.parent[$changes];\n const parentIndex = childChangeTree.parentIndex;\n\n if (!this.visible.has(changeTree)) {\n // view must have all \"changeTree\" parent tree\n this.visible.add(changeTree);\n\n // add parent's parent\n const parentChangeTree: ChangeTree = changeTree.parent?.[$changes];\n if (parentChangeTree && (parentChangeTree.filteredChanges !== undefined)) {\n this.addParentOf(changeTree, tag);\n }\n\n // // parent is already available, no need to add it!\n // if (!this.invisible.has(changeTree)) { return; }\n }\n\n // add parent's tag properties\n if (changeTree.getChange(parentIndex) !== OPERATION.DELETE) {\n let changes = this.changes.get(changeTree.ref[$refId]);\n if (changes === undefined) {\n changes = {};\n this.changes.set(changeTree.ref[$refId], changes);\n }\n\n if (!this.tags) {\n this.tags = new WeakMap<ChangeTree, Set<number>>();\n }\n\n let tags: Set<number>;\n if (!this.tags.has(changeTree)) {\n tags = new Set<number>();\n this.tags.set(changeTree, tags);\n } else {\n tags = this.tags.get(changeTree);\n }\n tags.add(tag);\n\n changes[parentIndex] = OPERATION.ADD;\n }\n }\n\n remove(obj: Ref, tag?: number): this; // hide _isClear parameter from public API\n remove(obj: Ref, tag?: number, _isClear?: boolean): this;\n remove(obj: Ref, tag: number = DEFAULT_VIEW_TAG, _isClear: boolean = false): this {\n const changeTree: ChangeTree = obj[$changes];\n if (!changeTree) {\n console.warn(\"StateView#remove(), invalid object:\", obj);\n return this;\n }\n\n this.visible.delete(changeTree);\n\n // remove from iterable list\n if (\n this.iterable &&\n !_isClear // no need to remove during clear(), as it will be cleared entirely\n ) {\n spliceOne(this.items, this.items.indexOf(obj));\n }\n\n const ref = changeTree.ref;\n const metadata: Metadata = ref.constructor[Symbol.metadata]; // ArraySchema/MapSchema do not have metadata\n\n const refId = ref[$refId];\n\n let changes = this.changes.get(refId);\n if (changes === undefined) {\n changes = {};\n this.changes.set(refId, changes);\n }\n\n if (tag === DEFAULT_VIEW_TAG) {\n // parent is collection (Map/Array)\n const parent = changeTree.parent;\n if (parent && !Metadata.isValidInstance(parent) && changeTree.isFiltered) {\n const parentRefId = parent[$refId];\n let changes = this.changes.get(parentRefId);\n if (changes === undefined) {\n changes = {};\n this.changes.set(parentRefId, changes);\n\n } else if (changes[changeTree.parentIndex] === OPERATION.ADD) {\n //\n // SAME PATCH ADD + REMOVE:\n // The 'changes' of deleted structure should be ignored.\n //\n this.changes.delete(refId);\n }\n\n // DELETE / DELETE BY REF ID\n changes[changeTree.parentIndex] = OPERATION.DELETE;\n\n // Remove child schema from visible set\n this._recursiveDeleteVisibleChangeTree(changeTree);\n\n } else {\n // delete all \"tagged\" properties.\n metadata?.[$viewFieldIndexes]?.forEach((index) =>\n changes[index] = OPERATION.DELETE);\n }\n\n } else {\n // delete only tagged properties\n metadata?.[$fieldIndexesByViewTag][tag].forEach((index) =>\n changes[index] = OPERATION.DELETE);\n }\n\n // remove tag\n if (this.tags && this.tags.has(changeTree)) {\n const tags = this.tags.get(changeTree);\n if (tag === undefined) {\n // delete all tags\n this.tags.delete(changeTree);\n } else {\n // delete specific tag\n tags.delete(tag);\n\n // if tag set is empty, delete it entirely\n if (tags.size === 0) {\n this.tags.delete(changeTree);\n }\n }\n }\n\n return this;\n }\n\n has(obj: Ref) {\n return this.visible.has(obj[$changes]);\n }\n\n hasTag(ob: Ref, tag: number = DEFAULT_VIEW_TAG) {\n const tags = this.tags?.get(ob[$changes]);\n return tags?.has(tag) ?? false;\n }\n\n clear() {\n if (!this.iterable) {\n throw new Error(\"StateView#clear() is only available for iterable StateView's. Use StateView(iterable: true) constructor.\");\n }\n\n for (let i = 0, l = this.items.length; i < l; i++) {\n this.remove(this.items[i], DEFAULT_VIEW_TAG, true);\n }\n\n // clear items array\n this.items.length = 0;\n }\n\n isChangeTreeVisible(changeTree: ChangeTree) {\n let isVisible = this.visible.has(changeTree);\n\n //\n // TODO: avoid checking for parent visibility, most of the time it's not needed\n // See test case: 'should not be required to manually call view.add() items to child arrays without @view() tag'\n //\n if (!isVisible && changeTree.isVisibilitySharedWithParent){\n\n // console.log(\"CHECK AGAINST PARENT...\", {\n // ref: changeTree.ref.constructor.name,\n // refId: changeTree.ref[$refId],\n // parent: changeTree.parent.constructor.name,\n // });\n\n if (this.visible.has(changeTree.parent[$changes])) {\n this.visible.add(changeTree);\n isVisible = true;\n }\n }\n\n return isVisible;\n }\n\n protected _recursiveDeleteVisibleChangeTree(changeTree: ChangeTree) {\n changeTree.forEachChild((childChangeTree) => {\n this.visible.delete(childChangeTree);\n this._recursiveDeleteVisibleChangeTree(childChangeTree);\n });\n }\n}\n"]}
@@ -1,12 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EncodeSchemaError = void 0;
4
- exports.assertType = assertType;
5
- exports.assertInstanceType = assertInstanceType;
6
- class EncodeSchemaError extends Error {
1
+ export class EncodeSchemaError extends Error {
7
2
  }
8
- exports.EncodeSchemaError = EncodeSchemaError;
9
- function assertType(value, type, klass, field) {
3
+ export function assertType(value, type, klass, field) {
10
4
  let typeofTarget;
11
5
  let allowNull = false;
12
6
  switch (type) {
@@ -47,7 +41,7 @@ function assertType(value, type, klass, field) {
47
41
  throw new EncodeSchemaError(`a '${typeofTarget}' was expected, but ${foundValue} was provided in ${klass.constructor.name}#${field}`);
48
42
  }
49
43
  }
50
- function assertInstanceType(value, type, instance, field) {
44
+ export function assertInstanceType(value, type, instance, field) {
51
45
  if (!(value instanceof type)) {
52
46
  throw new EncodeSchemaError(`a '${type.name}' was expected, but '${value && value.constructor.name}' was provided in ${instance.constructor.name}#${field}`);
53
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"assert.js","sourceRoot":"","sources":["../../src/encoding/assert.ts"],"names":[],"mappings":";;;AASA,gCA0CC;AAED,gDAaC;AA3DD,MAAa,iBAAkB,SAAQ,KAAK;CAAG;AAA/C,8CAA+C;AAE/C,SAAgB,UAAU,CAAC,KAAU,EAAE,IAAY,EAAE,KAAa,EAAE,KAAsB;IACtF,IAAI,YAAoB,CAAC;IACzB,IAAI,SAAS,GAAY,KAAK,CAAC;IAE/B,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO,CAAC;QACb,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,SAAS;YACV,YAAY,GAAG,QAAQ,CAAC;YACxB,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,6BAA6B,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;YAChF,CAAC;YACD,MAAM;QACV,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW;YACZ,YAAY,GAAG,QAAQ,CAAC;YACxB,MAAM;QACV,KAAK,QAAQ;YACT,YAAY,GAAG,QAAQ,CAAC;YACxB,SAAS,GAAG,IAAI,CAAC;YACjB,MAAM;QACV,KAAK,SAAS;YACV,8DAA8D;YAC9D,OAAO;QACX;YACI,kCAAkC;YAClC,0DAA0D;YAC1D,OAAO;IACf,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;QACnF,IAAI,UAAU,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,KAAK,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QACrH,MAAM,IAAI,iBAAiB,CAAC,MAAM,YAAY,uBAAuB,UAAU,oBAAoB,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;IAC1I,CAAC;AACL,CAAC;AAED,SAAgB,kBAAkB,CAC9B,KAAU,EACV,IAIsB,EACtB,QAAa,EACb,KAAsB;IAEtB,IAAI,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,iBAAiB,CAAC,MAAM,IAAI,CAAC,IAAI,wBAAwB,KAAK,IAAK,KAAa,CAAC,WAAW,CAAC,IAAI,qBAAqB,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;IAC1K,CAAC;AACL,CAAC","sourcesContent":["import type { Schema } from \"../Schema\";\nimport type { CollectionSchema } from \"../types/custom/CollectionSchema\";\nimport type { MapSchema } from \"../types/custom/MapSchema\";\nimport type { SetSchema } from \"../types/custom/SetSchema\";\nimport type { ArraySchema } from \"../types/custom/ArraySchema\";\nimport type { Ref } from \"../encoder/ChangeTree\";\n\nexport class EncodeSchemaError extends Error {}\n\nexport function assertType(value: any, type: string, klass: Schema, field: string | number) {\n let typeofTarget: string;\n let allowNull: boolean = false;\n\n switch (type) {\n case \"number\":\n case \"int8\":\n case \"uint8\":\n case \"int16\":\n case \"uint16\":\n case \"int32\":\n case \"uint32\":\n case \"int64\":\n case \"uint64\":\n case \"float32\":\n case \"float64\":\n typeofTarget = \"number\";\n if (isNaN(value)) {\n console.log(`trying to encode \"NaN\" in ${klass.constructor.name}#${field}`);\n }\n break;\n case \"bigint64\":\n case \"biguint64\":\n typeofTarget = \"bigint\";\n break;\n case \"string\":\n typeofTarget = \"string\";\n allowNull = true;\n break;\n case \"boolean\":\n // boolean is always encoded as true/false based on truthiness\n return;\n default:\n // skip assertion for custom types\n // TODO: allow custom types to define their own assertions\n return;\n }\n\n if (typeof (value) !== typeofTarget && (!allowNull || (allowNull && value !== null))) {\n let foundValue = `'${JSON.stringify(value)}'${(value && value.constructor && ` (${value.constructor.name})`) || ''}`;\n throw new EncodeSchemaError(`a '${typeofTarget}' was expected, but ${foundValue} was provided in ${klass.constructor.name}#${field}`);\n }\n}\n\nexport function assertInstanceType(\n value: Ref,\n type: typeof Schema\n | typeof ArraySchema\n | typeof MapSchema\n | typeof CollectionSchema\n | typeof SetSchema,\n instance: Ref,\n field: string | number,\n) {\n if (!(value instanceof type)) {\n throw new EncodeSchemaError(`a '${type.name}' was expected, but '${value && (value as any).constructor.name}' was provided in ${instance.constructor.name}#${field}`);\n }\n}"]}
1
+ {"version":3,"file":"assert.js","sourceRoot":"","sources":["../../src/encoding/assert.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,iBAAkB,SAAQ,KAAK;CAAG;AAE/C,MAAM,UAAU,UAAU,CAAC,KAAU,EAAE,IAAY,EAAE,KAAa,EAAE,KAAsB;IACtF,IAAI,YAAoB,CAAC;IACzB,IAAI,SAAS,GAAY,KAAK,CAAC;IAE/B,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO,CAAC;QACb,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,SAAS;YACV,YAAY,GAAG,QAAQ,CAAC;YACxB,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,6BAA6B,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;YAChF,CAAC;YACD,MAAM;QACV,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW;YACZ,YAAY,GAAG,QAAQ,CAAC;YACxB,MAAM;QACV,KAAK,QAAQ;YACT,YAAY,GAAG,QAAQ,CAAC;YACxB,SAAS,GAAG,IAAI,CAAC;YACjB,MAAM;QACV,KAAK,SAAS;YACV,8DAA8D;YAC9D,OAAO;QACX;YACI,kCAAkC;YAClC,0DAA0D;YAC1D,OAAO;IACf,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;QACnF,IAAI,UAAU,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,KAAK,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QACrH,MAAM,IAAI,iBAAiB,CAAC,MAAM,YAAY,uBAAuB,UAAU,oBAAoB,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;IAC1I,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB,CAC9B,KAAU,EACV,IAIsB,EACtB,QAAa,EACb,KAAsB;IAEtB,IAAI,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,iBAAiB,CAAC,MAAM,IAAI,CAAC,IAAI,wBAAwB,KAAK,IAAK,KAAa,CAAC,WAAW,CAAC,IAAI,qBAAqB,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;IAC1K,CAAC;AACL,CAAC","sourcesContent":["import type { Schema } from \"../Schema\";\nimport type { CollectionSchema } from \"../types/custom/CollectionSchema\";\nimport type { MapSchema } from \"../types/custom/MapSchema\";\nimport type { SetSchema } from \"../types/custom/SetSchema\";\nimport type { ArraySchema } from \"../types/custom/ArraySchema\";\nimport type { Ref } from \"../encoder/ChangeTree\";\n\nexport class EncodeSchemaError extends Error {}\n\nexport function assertType(value: any, type: string, klass: Schema, field: string | number) {\n let typeofTarget: string;\n let allowNull: boolean = false;\n\n switch (type) {\n case \"number\":\n case \"int8\":\n case \"uint8\":\n case \"int16\":\n case \"uint16\":\n case \"int32\":\n case \"uint32\":\n case \"int64\":\n case \"uint64\":\n case \"float32\":\n case \"float64\":\n typeofTarget = \"number\";\n if (isNaN(value)) {\n console.log(`trying to encode \"NaN\" in ${klass.constructor.name}#${field}`);\n }\n break;\n case \"bigint64\":\n case \"biguint64\":\n typeofTarget = \"bigint\";\n break;\n case \"string\":\n typeofTarget = \"string\";\n allowNull = true;\n break;\n case \"boolean\":\n // boolean is always encoded as true/false based on truthiness\n return;\n default:\n // skip assertion for custom types\n // TODO: allow custom types to define their own assertions\n return;\n }\n\n if (typeof (value) !== typeofTarget && (!allowNull || (allowNull && value !== null))) {\n let foundValue = `'${JSON.stringify(value)}'${(value && value.constructor && ` (${value.constructor.name})`) || ''}`;\n throw new EncodeSchemaError(`a '${typeofTarget}' was expected, but ${foundValue} was provided in ${klass.constructor.name}#${field}`);\n }\n}\n\nexport function assertInstanceType(\n value: Ref,\n type: typeof Schema\n | typeof ArraySchema\n | typeof MapSchema\n | typeof CollectionSchema\n | typeof SetSchema,\n instance: Ref,\n field: string | number,\n) {\n if (!(value instanceof type)) {\n throw new EncodeSchemaError(`a '${type.name}' was expected, but '${value && (value as any).constructor.name}' was provided in ${instance.constructor.name}#${field}`);\n }\n}"]}
@@ -1,8 +1,4 @@
1
- "use strict";
2
1
  // @ts-nocheck
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.decode = void 0;
5
- exports.stringCheck = stringCheck;
6
2
  // force little endian to facilitate decoding on multiple implementations
7
3
  const _isLittleEndian = true; // new Uint16Array(new Uint8Array([1, 0]).buffer)[0] === 1;
8
4
  const _convoBuffer = new ArrayBuffer(8);
@@ -187,7 +183,7 @@ function number(bytes, it) {
187
183
  }
188
184
  }
189
185
  ;
190
- function stringCheck(bytes, it) {
186
+ export function stringCheck(bytes, it) {
191
187
  const prefix = bytes[it.offset];
192
188
  return (
193
189
  // fixstr
@@ -199,7 +195,7 @@ function stringCheck(bytes, it) {
199
195
  // str 32
200
196
  prefix === 0xdb);
201
197
  }
202
- exports.decode = {
198
+ export const decode = {
203
199
  utf8Read,
204
200
  int8,
205
201
  uint8,
@@ -1 +1 @@
1
- {"version":3,"file":"decode.js","sourceRoot":"","sources":["../../src/encoding/decode.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\n\n/**\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 { BufferLike } from \"./encode\";\n\n/**\n * msgpack implementation highly based on notepack.io\n * https://github.com/darrachequesne/notepack\n */\n\nexport interface Iterator { offset: number; }\n\n// force little endian to facilitate decoding on multiple implementations\nconst _isLittleEndian = true; // new Uint16Array(new Uint8Array([1, 0]).buffer)[0] === 1;\nconst _convoBuffer = new ArrayBuffer(8);\n\nconst _int32 = new Int32Array(_convoBuffer);\nconst _float32 = new Float32Array(_convoBuffer);\nconst _float64 = new Float64Array(_convoBuffer);\nconst _uint64 = new BigUint64Array(_convoBuffer);\nconst _int64 = new BigInt64Array(_convoBuffer);\n\nfunction utf8Read(bytes: BufferLike, it: Iterator, length: number) {\n // boundary check\n if (length > bytes.length - it.offset) { length = bytes.length - it.offset; }\n\n var string = '', chr = 0;\n for (var i = it.offset, end = it.offset + length; i < end; i++) {\n var byte = bytes[i];\n if ((byte & 0x80) === 0x00) {\n string += String.fromCharCode(byte);\n continue;\n }\n if ((byte & 0xe0) === 0xc0) {\n string += String.fromCharCode(\n ((byte & 0x1f) << 6) |\n (bytes[++i] & 0x3f)\n );\n continue;\n }\n if ((byte & 0xf0) === 0xe0) {\n string += String.fromCharCode(\n ((byte & 0x0f) << 12) |\n ((bytes[++i] & 0x3f) << 6) |\n ((bytes[++i] & 0x3f) << 0)\n );\n continue;\n }\n if ((byte & 0xf8) === 0xf0) {\n chr = ((byte & 0x07) << 18) |\n ((bytes[++i] & 0x3f) << 12) |\n ((bytes[++i] & 0x3f) << 6) |\n ((bytes[++i] & 0x3f) << 0);\n if (chr >= 0x010000) { // surrogate pair\n chr -= 0x010000;\n string += String.fromCharCode((chr >>> 10) + 0xD800, (chr & 0x3FF) + 0xDC00);\n } else {\n string += String.fromCharCode(chr);\n }\n continue;\n }\n\n // (do not throw error to avoid server/client from crashing due to hack attemps)\n // throw new Error('Invalid byte ' + byte.toString(16));\n\n console.error('decode.utf8Read(): Invalid byte ' + byte + ' at offset ' + i + '. Skip to end of string: ' + (it.offset + length));\n break;\n }\n it.offset += length;\n return string;\n}\n\nfunction int8 (bytes: BufferLike, it: Iterator) {\n return uint8(bytes, it) << 24 >> 24;\n};\n\nfunction uint8 (bytes: BufferLike, it: Iterator) {\n return bytes[it.offset++];\n};\n\nfunction int16 (bytes: BufferLike, it: Iterator) {\n return uint16(bytes, it) << 16 >> 16;\n};\n\nfunction uint16 (bytes: BufferLike, it: Iterator) {\n return bytes[it.offset++] | bytes[it.offset++] << 8;\n};\n\nfunction int32 (bytes: BufferLike, it: Iterator) {\n return bytes[it.offset++] | bytes[it.offset++] << 8 | bytes[it.offset++] << 16 | bytes[it.offset++] << 24;\n};\n\nfunction uint32 (bytes: BufferLike, it: Iterator) {\n return int32(bytes, it) >>> 0;\n};\n\nfunction float32 (bytes: BufferLike, it: Iterator) {\n _int32[0] = int32(bytes, it);\n return _float32[0];\n};\n\nfunction float64 (bytes: BufferLike, it: Iterator) {\n _int32[_isLittleEndian ? 0 : 1] = int32(bytes, it);\n _int32[_isLittleEndian ? 1 : 0] = int32(bytes, it);\n return _float64[0];\n};\n\nfunction int64(bytes: BufferLike, it: Iterator) {\n const low = uint32(bytes, it);\n const high = int32(bytes, it) * Math.pow(2, 32);\n return high + low;\n};\n\nfunction uint64(bytes: BufferLike, it: Iterator) {\n const low = uint32(bytes, it);\n const high = uint32(bytes, it) * Math.pow(2, 32);\n return high + low;\n};\n\nfunction bigint64(bytes: BufferLike, it: Iterator) {\n _int32[0] = int32(bytes, it);\n _int32[1] = int32(bytes, it);\n return _int64[0];\n}\n\nfunction biguint64(bytes: BufferLike, it: Iterator) {\n _int32[0] = int32(bytes, it);\n _int32[1] = int32(bytes, it);\n return _uint64[0];\n}\n\nfunction boolean (bytes: BufferLike, it: Iterator) {\n return uint8(bytes, it) > 0;\n};\n\nfunction string (bytes: BufferLike, it: Iterator) {\n const prefix = bytes[it.offset++];\n let length: number;\n\n if (prefix < 0xc0) {\n // fixstr\n length = prefix & 0x1f;\n\n } else if (prefix === 0xd9) {\n length = uint8(bytes, it);\n\n } else if (prefix === 0xda) {\n length = uint16(bytes, it);\n\n } else if (prefix === 0xdb) {\n length = uint32(bytes, it);\n }\n\n return utf8Read(bytes, it, length);\n}\n\nfunction number (bytes: BufferLike, it: Iterator) {\n const prefix = bytes[it.offset++];\n\n if (prefix < 0x80) {\n // positive fixint\n return prefix;\n\n } else if (prefix === 0xca) {\n // float 32\n return float32(bytes, it);\n\n } else if (prefix === 0xcb) {\n // float 64\n return float64(bytes, it);\n\n } else if (prefix === 0xcc) {\n // uint 8\n return uint8(bytes, it);\n\n } else if (prefix === 0xcd) {\n // uint 16\n return uint16(bytes, it);\n\n } else if (prefix === 0xce) {\n // uint 32\n return uint32(bytes, it);\n\n } else if (prefix === 0xcf) {\n // uint 64\n return uint64(bytes, it);\n\n } else if (prefix === 0xd0) {\n // int 8\n return int8(bytes, it);\n\n } else if (prefix === 0xd1) {\n // int 16\n return int16(bytes, it);\n\n } else if (prefix === 0xd2) {\n // int 32\n return int32(bytes, it);\n\n } else if (prefix === 0xd3) {\n // int 64\n return int64(bytes, it);\n\n } else if (prefix > 0xdf) {\n // negative fixint\n return (0xff - prefix + 1) * -1\n }\n};\n\nexport function stringCheck(bytes: BufferLike, it: Iterator) {\n const prefix = bytes[it.offset];\n return (\n // fixstr\n (prefix < 0xc0 && prefix > 0xa0) ||\n // str 8\n prefix === 0xd9 ||\n // str 16\n prefix === 0xda ||\n // str 32\n prefix === 0xdb\n );\n}\n\nexport const decode = {\n utf8Read,\n int8,\n uint8,\n int16,\n uint16,\n int32,\n uint32,\n float32,\n float64,\n int64,\n uint64,\n bigint64,\n biguint64,\n boolean,\n string,\n number,\n stringCheck,\n};"]}
1
+ {"version":3,"file":"decode.js","sourceRoot":"","sources":["../../src/encoding/decode.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\n\n/**\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 { BufferLike } from \"./encode\";\n\n/**\n * msgpack implementation highly based on notepack.io\n * https://github.com/darrachequesne/notepack\n */\n\nexport interface Iterator { offset: number; }\n\n// force little endian to facilitate decoding on multiple implementations\nconst _isLittleEndian = true; // new Uint16Array(new Uint8Array([1, 0]).buffer)[0] === 1;\nconst _convoBuffer = new ArrayBuffer(8);\n\nconst _int32 = new Int32Array(_convoBuffer);\nconst _float32 = new Float32Array(_convoBuffer);\nconst _float64 = new Float64Array(_convoBuffer);\nconst _uint64 = new BigUint64Array(_convoBuffer);\nconst _int64 = new BigInt64Array(_convoBuffer);\n\nfunction utf8Read(bytes: BufferLike, it: Iterator, length: number) {\n // boundary check\n if (length > bytes.length - it.offset) { length = bytes.length - it.offset; }\n\n var string = '', chr = 0;\n for (var i = it.offset, end = it.offset + length; i < end; i++) {\n var byte = bytes[i];\n if ((byte & 0x80) === 0x00) {\n string += String.fromCharCode(byte);\n continue;\n }\n if ((byte & 0xe0) === 0xc0) {\n string += String.fromCharCode(\n ((byte & 0x1f) << 6) |\n (bytes[++i] & 0x3f)\n );\n continue;\n }\n if ((byte & 0xf0) === 0xe0) {\n string += String.fromCharCode(\n ((byte & 0x0f) << 12) |\n ((bytes[++i] & 0x3f) << 6) |\n ((bytes[++i] & 0x3f) << 0)\n );\n continue;\n }\n if ((byte & 0xf8) === 0xf0) {\n chr = ((byte & 0x07) << 18) |\n ((bytes[++i] & 0x3f) << 12) |\n ((bytes[++i] & 0x3f) << 6) |\n ((bytes[++i] & 0x3f) << 0);\n if (chr >= 0x010000) { // surrogate pair\n chr -= 0x010000;\n string += String.fromCharCode((chr >>> 10) + 0xD800, (chr & 0x3FF) + 0xDC00);\n } else {\n string += String.fromCharCode(chr);\n }\n continue;\n }\n\n // (do not throw error to avoid server/client from crashing due to hack attemps)\n // throw new Error('Invalid byte ' + byte.toString(16));\n\n console.error('decode.utf8Read(): Invalid byte ' + byte + ' at offset ' + i + '. Skip to end of string: ' + (it.offset + length));\n break;\n }\n it.offset += length;\n return string;\n}\n\nfunction int8 (bytes: BufferLike, it: Iterator) {\n return uint8(bytes, it) << 24 >> 24;\n};\n\nfunction uint8 (bytes: BufferLike, it: Iterator) {\n return bytes[it.offset++];\n};\n\nfunction int16 (bytes: BufferLike, it: Iterator) {\n return uint16(bytes, it) << 16 >> 16;\n};\n\nfunction uint16 (bytes: BufferLike, it: Iterator) {\n return bytes[it.offset++] | bytes[it.offset++] << 8;\n};\n\nfunction int32 (bytes: BufferLike, it: Iterator) {\n return bytes[it.offset++] | bytes[it.offset++] << 8 | bytes[it.offset++] << 16 | bytes[it.offset++] << 24;\n};\n\nfunction uint32 (bytes: BufferLike, it: Iterator) {\n return int32(bytes, it) >>> 0;\n};\n\nfunction float32 (bytes: BufferLike, it: Iterator) {\n _int32[0] = int32(bytes, it);\n return _float32[0];\n};\n\nfunction float64 (bytes: BufferLike, it: Iterator) {\n _int32[_isLittleEndian ? 0 : 1] = int32(bytes, it);\n _int32[_isLittleEndian ? 1 : 0] = int32(bytes, it);\n return _float64[0];\n};\n\nfunction int64(bytes: BufferLike, it: Iterator) {\n const low = uint32(bytes, it);\n const high = int32(bytes, it) * Math.pow(2, 32);\n return high + low;\n};\n\nfunction uint64(bytes: BufferLike, it: Iterator) {\n const low = uint32(bytes, it);\n const high = uint32(bytes, it) * Math.pow(2, 32);\n return high + low;\n};\n\nfunction bigint64(bytes: BufferLike, it: Iterator) {\n _int32[0] = int32(bytes, it);\n _int32[1] = int32(bytes, it);\n return _int64[0];\n}\n\nfunction biguint64(bytes: BufferLike, it: Iterator) {\n _int32[0] = int32(bytes, it);\n _int32[1] = int32(bytes, it);\n return _uint64[0];\n}\n\nfunction boolean (bytes: BufferLike, it: Iterator) {\n return uint8(bytes, it) > 0;\n};\n\nfunction string (bytes: BufferLike, it: Iterator) {\n const prefix = bytes[it.offset++];\n let length: number;\n\n if (prefix < 0xc0) {\n // fixstr\n length = prefix & 0x1f;\n\n } else if (prefix === 0xd9) {\n length = uint8(bytes, it);\n\n } else if (prefix === 0xda) {\n length = uint16(bytes, it);\n\n } else if (prefix === 0xdb) {\n length = uint32(bytes, it);\n }\n\n return utf8Read(bytes, it, length);\n}\n\nfunction number (bytes: BufferLike, it: Iterator) {\n const prefix = bytes[it.offset++];\n\n if (prefix < 0x80) {\n // positive fixint\n return prefix;\n\n } else if (prefix === 0xca) {\n // float 32\n return float32(bytes, it);\n\n } else if (prefix === 0xcb) {\n // float 64\n return float64(bytes, it);\n\n } else if (prefix === 0xcc) {\n // uint 8\n return uint8(bytes, it);\n\n } else if (prefix === 0xcd) {\n // uint 16\n return uint16(bytes, it);\n\n } else if (prefix === 0xce) {\n // uint 32\n return uint32(bytes, it);\n\n } else if (prefix === 0xcf) {\n // uint 64\n return uint64(bytes, it);\n\n } else if (prefix === 0xd0) {\n // int 8\n return int8(bytes, it);\n\n } else if (prefix === 0xd1) {\n // int 16\n return int16(bytes, it);\n\n } else if (prefix === 0xd2) {\n // int 32\n return int32(bytes, it);\n\n } else if (prefix === 0xd3) {\n // int 64\n return int64(bytes, it);\n\n } else if (prefix > 0xdf) {\n // negative fixint\n return (0xff - prefix + 1) * -1\n }\n};\n\nexport function stringCheck(bytes: BufferLike, it: Iterator) {\n const prefix = bytes[it.offset];\n return (\n // fixstr\n (prefix < 0xc0 && prefix > 0xa0) ||\n // str 8\n prefix === 0xd9 ||\n // str 16\n prefix === 0xda ||\n // str 32\n prefix === 0xdb\n );\n}\n\nexport const decode = {\n utf8Read,\n int8,\n uint8,\n int16,\n uint16,\n int32,\n uint32,\n float32,\n float64,\n int64,\n uint64,\n bigint64,\n biguint64,\n boolean,\n string,\n number,\n stringCheck,\n};"]}
@@ -1,7 +1,4 @@
1
- "use strict";
2
1
  // @ts-nocheck
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.encode = void 0;
5
2
  /**
6
3
  * msgpack implementation highly based on notepack.io
7
4
  * https://github.com/darrachequesne/notepack
@@ -260,7 +257,7 @@ function number(bytes, value, it) {
260
257
  return 9;
261
258
  }
262
259
  }
263
- exports.encode = {
260
+ export const encode = {
264
261
  int8,
265
262
  uint8,
266
263
  int16,
@@ -1 +1 @@
1
- {"version":3,"file":"encode.js","sourceRoot":"","sources":["../../src/encoding/encode.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\n\n/**\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 = ArrayLike<number> & { [index: number]: number };\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\n// force little endian to facilitate decoding on multiple implementations\nconst _isLittleEndian = true; // new Uint16Array(new Uint8Array([1, 0]).buffer)[0] === 1;\nconst _convoBuffer = new ArrayBuffer(8);\nconst _int32 = new Int32Array(_convoBuffer);\nconst _float32 = new Float32Array(_convoBuffer);\nconst _float64 = new Float64Array(_convoBuffer);\nconst _int64 = new BigInt64Array(_convoBuffer);\n\nconst hasBufferByteLength = (typeof Buffer !== 'undefined' && Buffer.byteLength);\n\nconst 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\nfunction 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\nfunction int8(bytes: BufferLike, value: number, it: Iterator) {\n bytes[it.offset++] = value & 255;\n};\n\nfunction uint8(bytes: BufferLike, value: number, it: Iterator) {\n bytes[it.offset++] = value & 255;\n};\n\nfunction int16(bytes: BufferLike, value: number, it: Iterator) {\n bytes[it.offset++] = value & 255;\n bytes[it.offset++] = (value >> 8) & 255;\n};\n\nfunction uint16(bytes: BufferLike, value: number, it: Iterator) {\n bytes[it.offset++] = value & 255;\n bytes[it.offset++] = (value >> 8) & 255;\n};\n\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction bigint64(bytes: BufferLike, value: bigint, it: Iterator) {\n _int64[0] = BigInt.asIntN(64, value);\n int32(bytes, _int32[0], it);\n int32(bytes, _int32[1], it);\n}\n\nfunction biguint64(bytes: BufferLike, value: bigint, it: Iterator) {\n _int64[0] = BigInt.asIntN(64, value);\n int32(bytes, _int32[0], it);\n int32(bytes, _int32[1], it);\n}\n\nfunction float32(bytes: BufferLike, value: number, it: Iterator) {\n _float32[0] = value;\n int32(bytes, _int32[0], it);\n}\n\nfunction float64(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\nfunction boolean(bytes: BufferLike, value: number, it: Iterator) {\n bytes[it.offset++] = value ? 1 : 0; // uint8\n};\n\nfunction 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\nfunction 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 if (Math.abs(value) <= 3.4028235e+38) { // range check\n _float32[0] = value;\n if (Math.abs(Math.abs(_float32[0]) - Math.abs(value)) < 1e-4) { // precision check; adjust 1e-n (n = precision) to in-/decrease acceptable precision loss\n // now we know value is in range for f32 and has acceptable precision for f32\n bytes[it.offset++] = 0xca;\n float32(bytes, value, it);\n return 5;\n }\n }\n\n bytes[it.offset++] = 0xcb;\n float64(bytes, value, it);\n return 9;\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\nexport const encode = {\n int8,\n uint8,\n int16,\n uint16,\n int32,\n uint32,\n int64,\n uint64,\n bigint64,\n biguint64,\n float32,\n float64,\n boolean,\n string,\n number,\n utf8Write,\n utf8Length,\n}"]}
1
+ {"version":3,"file":"encode.js","sourceRoot":"","sources":["../../src/encoding/encode.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\n\n/**\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 = ArrayLike<number> & { [index: number]: number };\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\n// force little endian to facilitate decoding on multiple implementations\nconst _isLittleEndian = true; // new Uint16Array(new Uint8Array([1, 0]).buffer)[0] === 1;\nconst _convoBuffer = new ArrayBuffer(8);\nconst _int32 = new Int32Array(_convoBuffer);\nconst _float32 = new Float32Array(_convoBuffer);\nconst _float64 = new Float64Array(_convoBuffer);\nconst _int64 = new BigInt64Array(_convoBuffer);\n\nconst hasBufferByteLength = (typeof Buffer !== 'undefined' && Buffer.byteLength);\n\nconst 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\nfunction 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\nfunction int8(bytes: BufferLike, value: number, it: Iterator) {\n bytes[it.offset++] = value & 255;\n};\n\nfunction uint8(bytes: BufferLike, value: number, it: Iterator) {\n bytes[it.offset++] = value & 255;\n};\n\nfunction int16(bytes: BufferLike, value: number, it: Iterator) {\n bytes[it.offset++] = value & 255;\n bytes[it.offset++] = (value >> 8) & 255;\n};\n\nfunction uint16(bytes: BufferLike, value: number, it: Iterator) {\n bytes[it.offset++] = value & 255;\n bytes[it.offset++] = (value >> 8) & 255;\n};\n\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction bigint64(bytes: BufferLike, value: bigint, it: Iterator) {\n _int64[0] = BigInt.asIntN(64, value);\n int32(bytes, _int32[0], it);\n int32(bytes, _int32[1], it);\n}\n\nfunction biguint64(bytes: BufferLike, value: bigint, it: Iterator) {\n _int64[0] = BigInt.asIntN(64, value);\n int32(bytes, _int32[0], it);\n int32(bytes, _int32[1], it);\n}\n\nfunction float32(bytes: BufferLike, value: number, it: Iterator) {\n _float32[0] = value;\n int32(bytes, _int32[0], it);\n}\n\nfunction float64(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\nfunction boolean(bytes: BufferLike, value: number, it: Iterator) {\n bytes[it.offset++] = value ? 1 : 0; // uint8\n};\n\nfunction 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\nfunction 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 if (Math.abs(value) <= 3.4028235e+38) { // range check\n _float32[0] = value;\n if (Math.abs(Math.abs(_float32[0]) - Math.abs(value)) < 1e-4) { // precision check; adjust 1e-n (n = precision) to in-/decrease acceptable precision loss\n // now we know value is in range for f32 and has acceptable precision for f32\n bytes[it.offset++] = 0xca;\n float32(bytes, value, it);\n return 5;\n }\n }\n\n bytes[it.offset++] = 0xcb;\n float64(bytes, value, it);\n return 9;\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\nexport const encode = {\n int8,\n uint8,\n int16,\n uint16,\n int32,\n uint32,\n int64,\n uint64,\n bigint64,\n biguint64,\n float32,\n float64,\n boolean,\n string,\n number,\n utf8Write,\n utf8Length,\n}"]}
@@ -1,12 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OPERATION = exports.TYPE_ID = exports.SWITCH_TO_STRUCTURE = void 0;
4
- exports.SWITCH_TO_STRUCTURE = 255; // (decoding collides with DELETE_AND_ADD + fieldIndex = 63)
5
- exports.TYPE_ID = 213;
1
+ export const SWITCH_TO_STRUCTURE = 255; // (decoding collides with DELETE_AND_ADD + fieldIndex = 63)
2
+ export const TYPE_ID = 213;
6
3
  /**
7
4
  * Encoding Schema field operations.
8
5
  */
9
- var OPERATION;
6
+ export var OPERATION;
10
7
  (function (OPERATION) {
11
8
  OPERATION[OPERATION["ADD"] = 128] = "ADD";
12
9
  OPERATION[OPERATION["REPLACE"] = 0] = "REPLACE";
@@ -25,5 +22,5 @@ var OPERATION;
25
22
  OPERATION[OPERATION["MOVE"] = 32] = "MOVE";
26
23
  OPERATION[OPERATION["DELETE_BY_REFID"] = 33] = "DELETE_BY_REFID";
27
24
  OPERATION[OPERATION["ADD_BY_REFID"] = 129] = "ADD_BY_REFID";
28
- })(OPERATION || (exports.OPERATION = OPERATION = {}));
25
+ })(OPERATION || (OPERATION = {}));
29
26
  //# sourceMappingURL=spec.js.map