@dcl/sdk 7.24.6-30098879609.commit-e704246 → 7.25.1-30310486734.commit-5ffe873

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 (78) hide show
  1. package/atom.d.ts +19 -0
  2. package/atom.js +83 -0
  3. package/composite-provider.js +9 -4
  4. package/future.d.ts +8 -0
  5. package/future.js +26 -0
  6. package/network/binary-message-bus.d.ts +6 -3
  7. package/network/binary-message-bus.js +9 -5
  8. package/network/chunking.d.ts +5 -0
  9. package/network/chunking.js +38 -0
  10. package/network/events/implementation.d.ts +93 -0
  11. package/network/events/implementation.js +221 -0
  12. package/network/events/index.d.ts +42 -0
  13. package/network/events/index.js +43 -0
  14. package/network/events/protocol.d.ts +27 -0
  15. package/network/events/protocol.js +66 -0
  16. package/network/events/registry.d.ts +8 -0
  17. package/network/events/registry.js +3 -0
  18. package/network/index.d.ts +8 -2
  19. package/network/index.js +16 -3
  20. package/network/message-bus-sync.d.ts +14 -1
  21. package/network/message-bus-sync.js +161 -103
  22. package/network/server/index.d.ts +14 -0
  23. package/network/server/index.js +219 -0
  24. package/network/server/utils.d.ts +18 -0
  25. package/network/server/utils.js +135 -0
  26. package/network/state.js +3 -5
  27. package/package.json +7 -6
  28. package/server/env-var.d.ts +15 -0
  29. package/server/env-var.js +31 -0
  30. package/server/index.d.ts +2 -0
  31. package/server/index.js +3 -0
  32. package/server/storage/constants.d.ts +79 -0
  33. package/server/storage/constants.js +19 -0
  34. package/server/storage/index.d.ts +45 -0
  35. package/server/storage/index.js +51 -0
  36. package/server/storage/player.d.ts +45 -0
  37. package/server/storage/player.js +198 -0
  38. package/server/storage/scene.d.ts +40 -0
  39. package/server/storage/scene.js +188 -0
  40. package/server/storage/value-cache.d.ts +1 -0
  41. package/server/storage/value-cache.js +52 -0
  42. package/server/storage/write-queue.d.ts +1 -0
  43. package/server/storage/write-queue.js +71 -0
  44. package/server/storage-url.d.ts +13 -0
  45. package/server/storage-url.js +42 -0
  46. package/server/utils.d.ts +35 -0
  47. package/server/utils.js +61 -0
  48. package/src/atom.ts +98 -0
  49. package/src/composite-provider.ts +10 -3
  50. package/src/ethereum-provider/text-encoding.d.ts +4 -0
  51. package/src/future.ts +38 -0
  52. package/src/network/binary-message-bus.ts +9 -4
  53. package/src/network/chunking.ts +45 -0
  54. package/src/network/events/implementation.ts +271 -0
  55. package/src/network/events/index.ts +48 -0
  56. package/src/network/events/protocol.ts +94 -0
  57. package/src/network/events/registry.ts +18 -0
  58. package/src/network/index.ts +40 -3
  59. package/src/network/message-bus-sync.ts +174 -110
  60. package/src/network/server/index.ts +301 -0
  61. package/src/network/server/utils.ts +189 -0
  62. package/src/network/state.ts +3 -4
  63. package/src/server/env-var.ts +36 -0
  64. package/src/server/index.ts +12 -0
  65. package/src/server/storage/constants.ts +111 -0
  66. package/src/server/storage/index.ts +74 -0
  67. package/src/server/storage/player.ts +289 -0
  68. package/src/server/storage/scene.ts +270 -0
  69. package/src/server/storage/value-cache.ts +92 -0
  70. package/src/server/storage/write-queue.ts +131 -0
  71. package/src/server/storage-url.ts +49 -0
  72. package/src/server/utils.ts +76 -0
  73. package/src/text-codec.ts +12 -59
  74. package/text-codec.d.ts +8 -23
  75. package/text-codec.js +13 -55
  76. package/internal/utf8.d.ts +0 -15
  77. package/internal/utf8.js +0 -172
  78. package/src/internal/utf8.ts +0 -167
package/internal/utf8.js DELETED
@@ -1,172 +0,0 @@
1
- /**
2
- * Self-contained UTF-8 codec implementing the WHATWG Encoding Standard
3
- * algorithms (https://encoding.spec.whatwg.org/), so SDK code never depends
4
- * on the host providing `TextEncoder` / `TextDecoder` globals.
5
- */
6
- const REPLACEMENT_CHARACTER = 0xfffd;
7
- export function decodeUtf8(input, options = {}) {
8
- const fatal = options.fatal === true;
9
- const start = !options.ignoreBOM && input.length >= 3 && input[0] === 0xef && input[1] === 0xbb && input[2] === 0xbf ? 3 : 0;
10
- let result = '';
11
- let pending = [];
12
- let codePoint = 0;
13
- let bytesNeeded = 0;
14
- let bytesSeen = 0;
15
- let lowerBoundary = 0x80;
16
- let upperBoundary = 0xbf;
17
- function emit(value) {
18
- if (value <= 0xffff) {
19
- pending.push(value);
20
- }
21
- else {
22
- const offset = value - 0x10000;
23
- pending.push(0xd800 + (offset >> 10), 0xdc00 + (offset & 0x3ff));
24
- }
25
- if (pending.length >= 4096) {
26
- result += String.fromCharCode(...pending);
27
- pending = [];
28
- }
29
- }
30
- function malformed() {
31
- if (fatal)
32
- throw new TypeError('decodeUtf8: the encoded data is not valid utf-8');
33
- emit(REPLACEMENT_CHARACTER);
34
- }
35
- for (let i = start; i < input.length; i++) {
36
- const byte = input[i];
37
- if (bytesNeeded === 0) {
38
- if (byte <= 0x7f) {
39
- emit(byte);
40
- }
41
- else if (byte >= 0xc2 && byte <= 0xdf) {
42
- bytesNeeded = 1;
43
- codePoint = byte & 0x1f;
44
- }
45
- else if (byte >= 0xe0 && byte <= 0xef) {
46
- if (byte === 0xe0)
47
- lowerBoundary = 0xa0;
48
- if (byte === 0xed)
49
- upperBoundary = 0x9f;
50
- bytesNeeded = 2;
51
- codePoint = byte & 0xf;
52
- }
53
- else if (byte >= 0xf0 && byte <= 0xf4) {
54
- if (byte === 0xf0)
55
- lowerBoundary = 0x90;
56
- if (byte === 0xf4)
57
- upperBoundary = 0x8f;
58
- bytesNeeded = 3;
59
- codePoint = byte & 0x7;
60
- }
61
- else {
62
- malformed();
63
- }
64
- }
65
- else if (byte < lowerBoundary || byte > upperBoundary) {
66
- codePoint = 0;
67
- bytesNeeded = 0;
68
- bytesSeen = 0;
69
- lowerBoundary = 0x80;
70
- upperBoundary = 0xbf;
71
- malformed();
72
- // the spec prepends the byte back to the stream: it starts a new sequence
73
- i--;
74
- }
75
- else {
76
- lowerBoundary = 0x80;
77
- upperBoundary = 0xbf;
78
- codePoint = (codePoint << 6) | (byte & 0x3f);
79
- if (++bytesSeen === bytesNeeded) {
80
- emit(codePoint);
81
- codePoint = 0;
82
- bytesNeeded = 0;
83
- bytesSeen = 0;
84
- }
85
- }
86
- }
87
- if (bytesNeeded !== 0)
88
- malformed();
89
- if (pending.length > 0)
90
- result += String.fromCharCode(...pending);
91
- return result;
92
- }
93
- export function encodeUtf8(input) {
94
- const output = new Uint8Array(utf8ByteLength(input));
95
- let offset = 0;
96
- for (let i = 0; i < input.length; i++) {
97
- const codePoint = codePointAt(input, i);
98
- if (codePoint > 0xffff)
99
- i++;
100
- offset = writeCodePoint(output, offset, codePoint);
101
- }
102
- return output;
103
- }
104
- export function encodeUtf8Into(source, destination) {
105
- let read = 0;
106
- let written = 0;
107
- for (let i = 0; i < source.length; i++) {
108
- const codePoint = codePointAt(source, i);
109
- const size = byteSize(codePoint);
110
- if (written + size > destination.length)
111
- break;
112
- written = writeCodePoint(destination, written, codePoint);
113
- if (codePoint > 0xffff) {
114
- i++;
115
- read += 2;
116
- }
117
- else {
118
- read += 1;
119
- }
120
- }
121
- return { read, written };
122
- }
123
- // Reads the code point at index, replacing unpaired surrogates with U+FFFD
124
- // (the USVString conversion `TextEncoder` mandates).
125
- function codePointAt(input, index) {
126
- const first = input.charCodeAt(index);
127
- if (first >= 0xd800 && first <= 0xdbff) {
128
- const second = index + 1 < input.length ? input.charCodeAt(index + 1) : 0;
129
- if (second >= 0xdc00 && second <= 0xdfff)
130
- return 0x10000 + ((first - 0xd800) << 10) + (second - 0xdc00);
131
- return REPLACEMENT_CHARACTER;
132
- }
133
- if (first >= 0xdc00 && first <= 0xdfff)
134
- return REPLACEMENT_CHARACTER;
135
- return first;
136
- }
137
- function byteSize(codePoint) {
138
- return codePoint <= 0x7f ? 1 : codePoint <= 0x7ff ? 2 : codePoint <= 0xffff ? 3 : 4;
139
- }
140
- function utf8ByteLength(input) {
141
- let length = 0;
142
- for (let i = 0; i < input.length; i++) {
143
- const codePoint = codePointAt(input, i);
144
- if (codePoint > 0xffff)
145
- i++;
146
- length += byteSize(codePoint);
147
- }
148
- return length;
149
- }
150
- function writeCodePoint(output, offset, codePoint) {
151
- let next = offset;
152
- if (codePoint <= 0x7f) {
153
- output[next++] = codePoint;
154
- }
155
- else if (codePoint <= 0x7ff) {
156
- output[next++] = 0xc0 | (codePoint >> 6);
157
- output[next++] = 0x80 | (codePoint & 0x3f);
158
- }
159
- else if (codePoint <= 0xffff) {
160
- output[next++] = 0xe0 | (codePoint >> 12);
161
- output[next++] = 0x80 | ((codePoint >> 6) & 0x3f);
162
- output[next++] = 0x80 | (codePoint & 0x3f);
163
- }
164
- else {
165
- output[next++] = 0xf0 | (codePoint >> 18);
166
- output[next++] = 0x80 | ((codePoint >> 12) & 0x3f);
167
- output[next++] = 0x80 | ((codePoint >> 6) & 0x3f);
168
- output[next++] = 0x80 | (codePoint & 0x3f);
169
- }
170
- return next;
171
- }
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRmOC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnRlcm5hbC91dGY4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQTtBQU9wQyxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQWlCLEVBQUUsVUFBNkIsRUFBRTtJQUMzRSxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQTtJQUNwQyxNQUFNLEtBQUssR0FDVCxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRWhILElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQTtJQUNmLElBQUksT0FBTyxHQUFhLEVBQUUsQ0FBQTtJQUMxQixJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUE7SUFDakIsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFBO0lBQ25CLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQTtJQUNqQixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUE7SUFDeEIsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFBO0lBRXhCLFNBQVMsSUFBSSxDQUFDLEtBQWE7UUFDekIsSUFBSSxLQUFLLElBQUksTUFBTSxFQUFFO1lBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7U0FDcEI7YUFBTTtZQUNMLE1BQU0sTUFBTSxHQUFHLEtBQUssR0FBRyxPQUFPLENBQUE7WUFDOUIsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLEVB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R0FBRyxJQUFJLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUE7S0FDM0M7U0FBTTtRQUNMLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUN6QyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTtRQUNsRCxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTtRQUNqRCxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUE7S0FDM0M7SUFDRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlbGYtY29udGFpbmVkIFVURi04IGNvZGVjIGltcGxlbWVudGluZyB0aGUgV0hBVFdHIEVuY29kaW5nIFN0YW5kYXJkXG4gKiBhbGdvcml0aG1zIChodHRwczovL2VuY29kaW5nLnNwZWMud2hhdHdnLm9yZy8pLCBzbyBTREsgY29kZSBuZXZlciBkZXBlbmRzXG4gKiBvbiB0aGUgaG9zdCBwcm92aWRpbmcgYFRleHRFbmNvZGVyYCAvIGBUZXh0RGVjb2RlcmAgZ2xvYmFscy5cbiAqL1xuXG5jb25zdCBSRVBMQUNFTUVOVF9DSEFSQUNURVIgPSAweGZmZmRcblxuZXhwb3J0IHR5cGUgRGVjb2RlVXRmOE9wdGlvbnMgPSB7XG4gIGZhdGFsPzogYm9vbGVhblxuICBpZ25vcmVCT00/OiBib29sZWFuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVVdGY4KGlucHV0OiBVaW50OEFycmF5LCBvcHRpb25zOiBEZWNvZGVVdGY4T3B0aW9ucyA9IHt9KTogc3RyaW5nIHtcbiAgY29uc3QgZmF0YWwgPSBvcHRpb25zLmZhdGFsID09PSB0cnVlXG4gIGNvbnN0IHN0YXJ0ID1cbiAgICAhb3B0aW9ucy5pZ25vcmVCT00gJiYgaW5wdXQubGVuZ3RoID49IDMgJiYgaW5wdXRbMF0gPT09IDB4ZWYgJiYgaW5wdXRbMV0gPT09IDB4YmIgJiYgaW5wdXRbMl0gPT09IDB4YmYgPyAzIDogMFxuXG4gIGxldCByZXN1bHQgPSAnJ1xuICBsZXQgcGVuZGluZzogbnVtYmVyW10gPSBbXVxuICBsZXQgY29kZVBvaW50ID0gMFxuICBsZXQgYnl0ZXNOZWVkZWQgPSAwXG4gIGxldCBieXRlc1NlZW4gPSAwXG4gIGxldCBsb3dlckJvdW5kYXJ5ID0gMHg4MFxuICBsZXQgdXBwZXJCb3VuZGFyeSA9IDB4YmZcblxuICBmdW5jdGlvbiBlbWl0KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgPD0gMHhmZmZmKSB7XG4gICAgICBwZW5kaW5nLnB1c2godmFsdWUpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG9mZnNldCA9IHZhbHVlIC0gMHgxMDAwMFxuICAgICAgcGVuZGluZy5wdXNoKDB4ZDgwMCArIChvZmZzZXQgPj4gMTApLCAweGRjMDAgKyAob2Zmc2V0ICYgMHgzZmYpKVxuICAgIH1cbiAgICBpZiAocGVuZGluZy5sZW5ndGggPj0gNDA5Nikge1xuICAgICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoLi4ucGVuZGluZylcbiAgICAgIHBlbmRpbmcgPSBbXVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG1hbGZvcm1lZCgpIHtcbiAgICBpZiAoZmF0YWwpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2RlY29kZVV0Zjg6IHRoZSBlbmNvZGVkIGRhdGEgaXMgbm90IHZhbGlkIHV0Zi04JylcbiAgICBlbWl0KFJFUExBQ0VNRU5UX0NIQVJBQ1RFUilcbiAgfVxuXG4gIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgYnl0ZSA9IGlucHV0W2ldXG4gICAgaWYgKGJ5dGVzTmVlZGVkID09PSAwKSB7XG4gICAgICBpZiAoYnl0ZSA8PSAweDdmKSB7XG4gICAgICAgIGVtaXQoYnl0ZSlcbiAgICAgIH0gZWxzZSBpZiAoYnl0ZSA+PSAweGMyICYmIGJ5dGUgPD0gMHhkZikge1xuICAgICAgICBieXRlc05lZWRlZCA9IDFcbiAgICAgICAgY29kZVBvaW50ID0gYnl0ZSAmIDB4MWZcbiAgICAgIH0gZWxzZSBpZiAoYnl0ZSA+PSAweGUwICYmIGJ5dGUgPD0gMHhlZikge1xuICAgICAgICBpZiAoYnl0ZSA9PT0gMHhlMCkgbG93ZXJCb3VuZGFyeSA9IDB4YTBcbiAgICAgICAgaWYgKGJ5dGUgPT09IDB4ZWQpIHVwcGVyQm91bmRhcnkgPSAweDlmXG4gICAgICAgIGJ5dGVzTmVlZGVkID0gMlxuICAgICAgICBjb2RlUG9pbnQgPSBieXRlICYgMHhmXG4gICAgICB9IGVsc2UgaWYgKGJ5dGUgPj0gMHhmMCAmJiBieXRlIDw9IDB4ZjQpIHtcbiAgICAgICAgaWYgKGJ5dGUgPT09IDB4ZjApIGxvd2VyQm91bmRhcnkgPSAweDkwXG4gICAgICAgIGlmIChieXRlID09PSAweGY0KSB1cHBlckJvdW5kYXJ5ID0gMHg4ZlxuICAgICAgICBieXRlc05lZWRlZCA9IDNcbiAgICAgICAgY29kZVBvaW50ID0gYnl0ZSAmIDB4N1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWFsZm9ybWVkKClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGJ5dGUgPCBsb3dlckJvdW5kYXJ5IHx8IGJ5dGUgPiB1cHBlckJvdW5kYXJ5KSB7XG4gICAgICBjb2RlUG9pbnQgPSAwXG4gICAgICBieXRlc05lZWRlZCA9IDBcbiAgICAgIGJ5dGVzU2VlbiA9IDBcbiAgICAgIGxvd2VyQm91bmRhcnkgPSAweDgwXG4gICAgICB1cHBlckJvdW5kYXJ5ID0gMHhiZlxuICAgICAgbWFsZm9ybWVkKClcbiAgICAgIC8vIHRoZSBzcGVjIHByZXBlbmRzIHRoZSBieXRlIGJhY2sgdG8gdGhlIHN0cmVhbTogaXQgc3RhcnRzIGEgbmV3IHNlcXVlbmNlXG4gICAgICBpLS1cbiAgICB9IGVsc2Uge1xuICAgICAgbG93ZXJCb3VuZGFyeSA9IDB4ODBcbiAgICAgIHVwcGVyQm91bmRhcnkgPSAweGJmXG4gICAgICBjb2RlUG9pbnQgPSAoY29kZVBvaW50IDw8IDYpIHwgKGJ5dGUgJiAweDNmKVxuICAgICAgaWYgKCsrYnl0ZXNTZWVuID09PSBieXRlc05lZWRlZCkge1xuICAgICAgICBlbWl0KGNvZGVQb2ludClcbiAgICAgICAgY29kZVBvaW50ID0gMFxuICAgICAgICBieXRlc05lZWRlZCA9IDBcbiAgICAgICAgYnl0ZXNTZWVuID0gMFxuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoYnl0ZXNOZWVkZWQgIT09IDApIG1hbGZvcm1lZCgpXG5cbiAgaWYgKHBlbmRpbmcubGVuZ3RoID4gMCkgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoLi4ucGVuZGluZylcbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlVXRmOChpbnB1dDogc3RyaW5nKTogVWludDhBcnJheSB7XG4gIGNvbnN0IG91dHB1dCA9IG5ldyBVaW50OEFycmF5KHV0ZjhCeXRlTGVuZ3RoKGlucHV0KSlcbiAgbGV0IG9mZnNldCA9IDBcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNvZGVQb2ludCA9IGNvZGVQb2ludEF0KGlucHV0LCBpKVxuICAgIGlmIChjb2RlUG9pbnQgPiAweGZmZmYpIGkrK1xuICAgIG9mZnNldCA9IHdyaXRlQ29kZVBvaW50KG91dHB1dCwgb2Zmc2V0LCBjb2RlUG9pbnQpXG4gIH1cbiAgcmV0dXJuIG91dHB1dFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlVXRmOEludG8oc291cmNlOiBzdHJpbmcsIGRlc3RpbmF0aW9uOiBVaW50OEFycmF5KTogeyByZWFkOiBudW1iZXI7IHdyaXR0ZW46IG51bWJlciB9IHtcbiAgbGV0IHJlYWQgPSAwXG4gIGxldCB3cml0dGVuID0gMFxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNvdXJjZS5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNvZGVQb2ludCA9IGNvZGVQb2ludEF0KHNvdXJjZSwgaSlcbiAgICBjb25zdCBzaXplID0gYnl0ZVNpemUoY29kZVBvaW50KVxuICAgIGlmICh3cml0dGVuICsgc2l6ZSA+IGRlc3RpbmF0aW9uLmxlbmd0aCkgYnJlYWtcbiAgICB3cml0dGVuID0gd3JpdGVDb2RlUG9pbnQoZGVzdGluYXRpb24sIHdyaXR0ZW4sIGNvZGVQb2ludClcbiAgICBpZiAoY29kZVBvaW50ID4gMHhmZmZmKSB7XG4gICAgICBpKytcbiAgICAgIHJlYWQgKz0gMlxuICAgIH0gZWxzZSB7XG4gICAgICByZWFkICs9IDFcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgcmVhZCwgd3JpdHRlbiB9XG59XG5cbi8vIFJlYWRzIHRoZSBjb2RlIHBvaW50IGF0IGluZGV4LCByZXBsYWNpbmcgdW5wYWlyZWQgc3Vycm9nYXRlcyB3aXRoIFUrRkZGRFxuLy8gKHRoZSBVU1ZTdHJpbmcgY29udmVyc2lvbiBgVGV4dEVuY29kZXJgIG1hbmRhdGVzKS5cbmZ1bmN0aW9uIGNvZGVQb2ludEF0KGlucHV0OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBmaXJzdCA9IGlucHV0LmNoYXJDb2RlQXQoaW5kZXgpXG4gIGlmIChmaXJzdCA+PSAweGQ4MDAgJiYgZmlyc3QgPD0gMHhkYmZmKSB7XG4gICAgY29uc3Qgc2Vjb25kID0gaW5kZXggKyAxIDwgaW5wdXQubGVuZ3RoID8gaW5wdXQuY2hhckNvZGVBdChpbmRleCArIDEpIDogMFxuICAgIGlmIChzZWNvbmQgPj0gMHhkYzAwICYmIHNlY29uZCA8PSAweGRmZmYpIHJldHVybiAweDEwMDAwICsgKChmaXJzdCAtIDB4ZDgwMCkgPDwgMTApICsgKHNlY29uZCAtIDB4ZGMwMClcbiAgICByZXR1cm4gUkVQTEFDRU1FTlRfQ0hBUkFDVEVSXG4gIH1cbiAgaWYgKGZpcnN0ID49IDB4ZGMwMCAmJiBmaXJzdCA8PSAweGRmZmYpIHJldHVybiBSRVBMQUNFTUVOVF9DSEFSQUNURVJcbiAgcmV0dXJuIGZpcnN0XG59XG5cbmZ1bmN0aW9uIGJ5dGVTaXplKGNvZGVQb2ludDogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIGNvZGVQb2ludCA8PSAweDdmID8gMSA6IGNvZGVQb2ludCA8PSAweDdmZiA/IDIgOiBjb2RlUG9pbnQgPD0gMHhmZmZmID8gMyA6IDRcbn1cblxuZnVuY3Rpb24gdXRmOEJ5dGVMZW5ndGgoaW5wdXQ6IHN0cmluZyk6IG51bWJlciB7XG4gIGxldCBsZW5ndGggPSAwXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjb2RlUG9pbnQgPSBjb2RlUG9pbnRBdChpbnB1dCwgaSlcbiAgICBpZiAoY29kZVBvaW50ID4gMHhmZmZmKSBpKytcbiAgICBsZW5ndGggKz0gYnl0ZVNpemUoY29kZVBvaW50KVxuICB9XG4gIHJldHVybiBsZW5ndGhcbn1cblxuZnVuY3Rpb24gd3JpdGVDb2RlUG9pbnQob3V0cHV0OiBVaW50OEFycmF5LCBvZmZzZXQ6IG51bWJlciwgY29kZVBvaW50OiBudW1iZXIpOiBudW1iZXIge1xuICBsZXQgbmV4dCA9IG9mZnNldFxuICBpZiAoY29kZVBvaW50IDw9IDB4N2YpIHtcbiAgICBvdXRwdXRbbmV4dCsrXSA9IGNvZGVQb2ludFxuICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8PSAweDdmZikge1xuICAgIG91dHB1dFtuZXh0KytdID0gMHhjMCB8IChjb2RlUG9pbnQgPj4gNilcbiAgICBvdXRwdXRbbmV4dCsrXSA9IDB4ODAgfCAoY29kZVBvaW50ICYgMHgzZilcbiAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPD0gMHhmZmZmKSB7XG4gICAgb3V0cHV0W25leHQrK10gPSAweGUwIHwgKGNvZGVQb2ludCA+PiAxMilcbiAgICBvdXRwdXRbbmV4dCsrXSA9IDB4ODAgfCAoKGNvZGVQb2ludCA+PiA2KSAmIDB4M2YpXG4gICAgb3V0cHV0W25leHQrK10gPSAweDgwIHwgKGNvZGVQb2ludCAmIDB4M2YpXG4gIH0gZWxzZSB7XG4gICAgb3V0cHV0W25leHQrK10gPSAweGYwIHwgKGNvZGVQb2ludCA+PiAxOClcbiAgICBvdXRwdXRbbmV4dCsrXSA9IDB4ODAgfCAoKGNvZGVQb2ludCA+PiAxMikgJiAweDNmKVxuICAgIG91dHB1dFtuZXh0KytdID0gMHg4MCB8ICgoY29kZVBvaW50ID4+IDYpICYgMHgzZilcbiAgICBvdXRwdXRbbmV4dCsrXSA9IDB4ODAgfCAoY29kZVBvaW50ICYgMHgzZilcbiAgfVxuICByZXR1cm4gbmV4dFxufVxuIl19
@@ -1,167 +0,0 @@
1
- /**
2
- * Self-contained UTF-8 codec implementing the WHATWG Encoding Standard
3
- * algorithms (https://encoding.spec.whatwg.org/), so SDK code never depends
4
- * on the host providing `TextEncoder` / `TextDecoder` globals.
5
- */
6
-
7
- const REPLACEMENT_CHARACTER = 0xfffd
8
-
9
- export type DecodeUtf8Options = {
10
- fatal?: boolean
11
- ignoreBOM?: boolean
12
- }
13
-
14
- export function decodeUtf8(input: Uint8Array, options: DecodeUtf8Options = {}): string {
15
- const fatal = options.fatal === true
16
- const start =
17
- !options.ignoreBOM && input.length >= 3 && input[0] === 0xef && input[1] === 0xbb && input[2] === 0xbf ? 3 : 0
18
-
19
- let result = ''
20
- let pending: number[] = []
21
- let codePoint = 0
22
- let bytesNeeded = 0
23
- let bytesSeen = 0
24
- let lowerBoundary = 0x80
25
- let upperBoundary = 0xbf
26
-
27
- function emit(value: number) {
28
- if (value <= 0xffff) {
29
- pending.push(value)
30
- } else {
31
- const offset = value - 0x10000
32
- pending.push(0xd800 + (offset >> 10), 0xdc00 + (offset & 0x3ff))
33
- }
34
- if (pending.length >= 4096) {
35
- result += String.fromCharCode(...pending)
36
- pending = []
37
- }
38
- }
39
-
40
- function malformed() {
41
- if (fatal) throw new TypeError('decodeUtf8: the encoded data is not valid utf-8')
42
- emit(REPLACEMENT_CHARACTER)
43
- }
44
-
45
- for (let i = start; i < input.length; i++) {
46
- const byte = input[i]
47
- if (bytesNeeded === 0) {
48
- if (byte <= 0x7f) {
49
- emit(byte)
50
- } else if (byte >= 0xc2 && byte <= 0xdf) {
51
- bytesNeeded = 1
52
- codePoint = byte & 0x1f
53
- } else if (byte >= 0xe0 && byte <= 0xef) {
54
- if (byte === 0xe0) lowerBoundary = 0xa0
55
- if (byte === 0xed) upperBoundary = 0x9f
56
- bytesNeeded = 2
57
- codePoint = byte & 0xf
58
- } else if (byte >= 0xf0 && byte <= 0xf4) {
59
- if (byte === 0xf0) lowerBoundary = 0x90
60
- if (byte === 0xf4) upperBoundary = 0x8f
61
- bytesNeeded = 3
62
- codePoint = byte & 0x7
63
- } else {
64
- malformed()
65
- }
66
- } else if (byte < lowerBoundary || byte > upperBoundary) {
67
- codePoint = 0
68
- bytesNeeded = 0
69
- bytesSeen = 0
70
- lowerBoundary = 0x80
71
- upperBoundary = 0xbf
72
- malformed()
73
- // the spec prepends the byte back to the stream: it starts a new sequence
74
- i--
75
- } else {
76
- lowerBoundary = 0x80
77
- upperBoundary = 0xbf
78
- codePoint = (codePoint << 6) | (byte & 0x3f)
79
- if (++bytesSeen === bytesNeeded) {
80
- emit(codePoint)
81
- codePoint = 0
82
- bytesNeeded = 0
83
- bytesSeen = 0
84
- }
85
- }
86
- }
87
- if (bytesNeeded !== 0) malformed()
88
-
89
- if (pending.length > 0) result += String.fromCharCode(...pending)
90
- return result
91
- }
92
-
93
- export function encodeUtf8(input: string): Uint8Array {
94
- const output = new Uint8Array(utf8ByteLength(input))
95
- let offset = 0
96
- for (let i = 0; i < input.length; i++) {
97
- const codePoint = codePointAt(input, i)
98
- if (codePoint > 0xffff) i++
99
- offset = writeCodePoint(output, offset, codePoint)
100
- }
101
- return output
102
- }
103
-
104
- export function encodeUtf8Into(source: string, destination: Uint8Array): { read: number; written: number } {
105
- let read = 0
106
- let written = 0
107
- for (let i = 0; i < source.length; i++) {
108
- const codePoint = codePointAt(source, i)
109
- const size = byteSize(codePoint)
110
- if (written + size > destination.length) break
111
- written = writeCodePoint(destination, written, codePoint)
112
- if (codePoint > 0xffff) {
113
- i++
114
- read += 2
115
- } else {
116
- read += 1
117
- }
118
- }
119
- return { read, written }
120
- }
121
-
122
- // Reads the code point at index, replacing unpaired surrogates with U+FFFD
123
- // (the USVString conversion `TextEncoder` mandates).
124
- function codePointAt(input: string, index: number): number {
125
- const first = input.charCodeAt(index)
126
- if (first >= 0xd800 && first <= 0xdbff) {
127
- const second = index + 1 < input.length ? input.charCodeAt(index + 1) : 0
128
- if (second >= 0xdc00 && second <= 0xdfff) return 0x10000 + ((first - 0xd800) << 10) + (second - 0xdc00)
129
- return REPLACEMENT_CHARACTER
130
- }
131
- if (first >= 0xdc00 && first <= 0xdfff) return REPLACEMENT_CHARACTER
132
- return first
133
- }
134
-
135
- function byteSize(codePoint: number): number {
136
- return codePoint <= 0x7f ? 1 : codePoint <= 0x7ff ? 2 : codePoint <= 0xffff ? 3 : 4
137
- }
138
-
139
- function utf8ByteLength(input: string): number {
140
- let length = 0
141
- for (let i = 0; i < input.length; i++) {
142
- const codePoint = codePointAt(input, i)
143
- if (codePoint > 0xffff) i++
144
- length += byteSize(codePoint)
145
- }
146
- return length
147
- }
148
-
149
- function writeCodePoint(output: Uint8Array, offset: number, codePoint: number): number {
150
- let next = offset
151
- if (codePoint <= 0x7f) {
152
- output[next++] = codePoint
153
- } else if (codePoint <= 0x7ff) {
154
- output[next++] = 0xc0 | (codePoint >> 6)
155
- output[next++] = 0x80 | (codePoint & 0x3f)
156
- } else if (codePoint <= 0xffff) {
157
- output[next++] = 0xe0 | (codePoint >> 12)
158
- output[next++] = 0x80 | ((codePoint >> 6) & 0x3f)
159
- output[next++] = 0x80 | (codePoint & 0x3f)
160
- } else {
161
- output[next++] = 0xf0 | (codePoint >> 18)
162
- output[next++] = 0x80 | ((codePoint >> 12) & 0x3f)
163
- output[next++] = 0x80 | ((codePoint >> 6) & 0x3f)
164
- output[next++] = 0x80 | (codePoint & 0x3f)
165
- }
166
- return next
167
- }