one 2.6.20 → 2.6.22
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.
- package/android/src/main/java/dev/onejs/onenative/OneNativeCameraManager.kt +24 -0
- package/android/src/main/java/dev/onejs/onenative/OneNativeCameraView.kt +197 -2
- package/cpp/HybridOneCrypto.cpp +327 -1
- package/cpp/HybridOneCrypto.hpp +8 -0
- package/dist/cjs/index.cjs +25 -22
- package/dist/cjs/index.native.cjs +25 -22
- package/dist/cjs/index.native.js +25 -22
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/one.cjs +1 -0
- package/dist/cjs/one.native.cjs +1 -0
- package/dist/cjs/one.native.js +1 -0
- package/dist/cjs/one.native.js.map +1 -1
- package/dist/cjs/platform/camera/index.cjs +3 -2
- package/dist/cjs/platform/camera/index.native.cjs +89 -3
- package/dist/cjs/platform/camera/index.native.js +89 -3
- package/dist/cjs/platform/camera/index.native.js.map +1 -1
- package/dist/cjs/platform/crypto/aes.cjs +259 -0
- package/dist/cjs/platform/crypto/aes.native.cjs +343 -0
- package/dist/cjs/platform/crypto/aes.native.js +345 -0
- package/dist/cjs/platform/crypto/aes.native.js.map +1 -0
- package/dist/cjs/platform/crypto/bytes.cjs +132 -0
- package/dist/cjs/platform/crypto/bytes.native.cjs +175 -0
- package/dist/cjs/platform/crypto/bytes.native.js +177 -0
- package/dist/cjs/platform/crypto/bytes.native.js.map +1 -0
- package/dist/cjs/platform/crypto/digest-api.cjs +65 -0
- package/dist/cjs/platform/crypto/digest-api.native.cjs +69 -0
- package/dist/cjs/platform/crypto/digest-api.native.js +71 -0
- package/dist/cjs/platform/crypto/digest-api.native.js.map +1 -0
- package/dist/cjs/platform/crypto/digest.cjs +26 -15
- package/dist/cjs/platform/crypto/digest.native.cjs +26 -15
- package/dist/cjs/platform/crypto/digest.native.js +26 -15
- package/dist/cjs/platform/crypto/digest.native.js.map +1 -1
- package/dist/cjs/platform/crypto/index.cjs +19 -1
- package/dist/cjs/platform/crypto/index.native.cjs +39 -1
- package/dist/cjs/platform/crypto/index.native.js +39 -1
- package/dist/cjs/platform/crypto/index.native.js.map +1 -1
- package/dist/cjs/platform/crypto/types.cjs +16 -0
- package/dist/cjs/platform/crypto/types.native.cjs +18 -0
- package/dist/cjs/platform/crypto/types.native.js +20 -0
- package/dist/cjs/platform/crypto/types.native.js.map +1 -0
- package/dist/cjs/platform/crypto/web.cjs +73 -0
- package/dist/cjs/platform/extras.cjs +4 -0
- package/dist/cjs/platform/extras.native.cjs +4 -0
- package/dist/cjs/platform/extras.native.js +4 -0
- package/dist/cjs/platform/extras.native.js.map +1 -1
- package/dist/cjs/platform/specs/OneNativeCameraNativeComponent.cjs +37 -21
- package/dist/cjs/platform/specs/OneNativeCameraNativeComponent.native.cjs +37 -21
- package/dist/cjs/platform/specs/OneNativeCameraNativeComponent.native.js +37 -21
- package/dist/cjs/platform/specs/OneNativeCameraNativeComponent.native.js.map +3 -3
- package/dist/cjs/router/router.cjs +4 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.mjs +2 -2
- package/dist/esm/index.native.js +2 -2
- package/dist/esm/one.mjs +2 -1
- package/dist/esm/one.mjs.map +1 -1
- package/dist/esm/one.native.js +2 -1
- package/dist/esm/one.native.js.map +1 -1
- package/dist/esm/platform/camera/index.mjs +4 -2
- package/dist/esm/platform/camera/index.mjs.map +1 -1
- package/dist/esm/platform/camera/index.native.js +90 -4
- package/dist/esm/platform/camera/index.native.js.map +1 -1
- package/dist/esm/platform/crypto/aes.mjs +236 -0
- package/dist/esm/platform/crypto/aes.mjs.map +1 -0
- package/dist/esm/platform/crypto/aes.native.js +318 -0
- package/dist/esm/platform/crypto/aes.native.js.map +1 -0
- package/dist/esm/platform/crypto/bytes.mjs +104 -0
- package/dist/esm/platform/crypto/bytes.mjs.map +1 -0
- package/dist/esm/platform/crypto/bytes.native.js +145 -0
- package/dist/esm/platform/crypto/bytes.native.js.map +1 -0
- package/dist/esm/platform/crypto/digest-api.mjs +42 -0
- package/dist/esm/platform/crypto/digest-api.mjs.map +1 -0
- package/dist/esm/platform/crypto/digest-api.native.js +44 -0
- package/dist/esm/platform/crypto/digest-api.native.js.map +1 -0
- package/dist/esm/platform/crypto/digest.mjs +23 -15
- package/dist/esm/platform/crypto/digest.mjs.map +1 -1
- package/dist/esm/platform/crypto/digest.native.js +23 -15
- package/dist/esm/platform/crypto/digest.native.js.map +1 -1
- package/dist/esm/platform/crypto/index.mjs +14 -1
- package/dist/esm/platform/crypto/index.mjs.map +1 -1
- package/dist/esm/platform/crypto/index.native.js +34 -1
- package/dist/esm/platform/crypto/index.native.js.map +1 -1
- package/dist/esm/platform/crypto/types.mjs +0 -0
- package/dist/esm/platform/crypto/types.native.js +0 -0
- package/dist/esm/platform/crypto/web.mjs +50 -0
- package/dist/esm/platform/crypto/web.mjs.map +1 -0
- package/dist/esm/platform/extras.mjs +2 -1
- package/dist/esm/platform/extras.native.js +2 -1
- package/dist/esm/platform/specs/OneNativeCameraNativeComponent.mjs +25 -9
- package/dist/esm/platform/specs/OneNativeCameraNativeComponent.mjs.map +3 -3
- package/dist/esm/platform/specs/OneNativeCameraNativeComponent.native.js +25 -9
- package/dist/esm/platform/specs/OneNativeCameraNativeComponent.native.js.map +3 -3
- package/dist/esm/router/router.mjs +5 -2
- package/dist/esm/router/router.mjs.map +1 -1
- package/ios/OneNativeCameraComponentView.mm +28 -0
- package/ios/OneNativeCameraView.swift +163 -0
- package/nitrogen/generated/shared/c++/HybridOneCryptoSpec.cpp +2 -0
- package/nitrogen/generated/shared/c++/HybridOneCryptoSpec.hpp +4 -1
- package/package.json +12 -12
- package/src/index.ts +4 -0
- package/src/one.ts +3 -0
- package/src/platform/camera/index.native.tsx +116 -12
- package/src/platform/camera/index.tsx +15 -4
- package/src/platform/camera/types.ts +22 -0
- package/src/platform/crypto/aes.ts +345 -0
- package/src/platform/crypto/bytes.ts +120 -0
- package/src/platform/crypto/digest-api.ts +50 -0
- package/src/platform/crypto/digest.ts +24 -15
- package/src/platform/crypto/index.native.ts +68 -0
- package/src/platform/crypto/index.ts +31 -0
- package/src/platform/crypto/types.ts +64 -0
- package/src/platform/crypto/web.ts +69 -0
- package/src/platform/extras.ts +15 -0
- package/src/platform/index.native.ts +4 -0
- package/src/platform/index.ts +4 -0
- package/src/platform/specs/OneCrypto.nitro.ts +19 -0
- package/src/platform/specs/OneNativeCameraNativeComponent.ts +35 -2
- package/src/router/router.ts +7 -4
- package/types/index.d.ts +2 -1
- package/types/index.d.ts.map +1 -1
- package/types/one.d.ts +2 -1
- package/types/one.d.ts.map +1 -1
- package/types/platform/camera/index.d.ts +3 -3
- package/types/platform/camera/index.d.ts.map +1 -1
- package/types/platform/camera/index.native.d.ts +3 -3
- package/types/platform/camera/index.native.d.ts.map +1 -1
- package/types/platform/camera/types.d.ts +18 -0
- package/types/platform/camera/types.d.ts.map +1 -1
- package/types/platform/crypto/aes.d.ts +211 -0
- package/types/platform/crypto/aes.d.ts.map +1 -0
- package/types/platform/crypto/bytes.d.ts +8 -0
- package/types/platform/crypto/bytes.d.ts.map +1 -0
- package/types/platform/crypto/digest-api.d.ts +9 -0
- package/types/platform/crypto/digest-api.d.ts.map +1 -0
- package/types/platform/crypto/digest.d.ts +5 -0
- package/types/platform/crypto/digest.d.ts.map +1 -1
- package/types/platform/crypto/index.d.ts +127 -0
- package/types/platform/crypto/index.d.ts.map +1 -1
- package/types/platform/crypto/index.native.d.ts +127 -0
- package/types/platform/crypto/index.native.d.ts.map +1 -1
- package/types/platform/crypto/types.d.ts +43 -0
- package/types/platform/crypto/types.d.ts.map +1 -0
- package/types/platform/crypto/web.d.ts +5 -0
- package/types/platform/crypto/web.d.ts.map +1 -0
- package/types/platform/extras.d.ts +2 -0
- package/types/platform/extras.d.ts.map +1 -1
- package/types/platform/index.d.ts +1 -1
- package/types/platform/index.d.ts.map +1 -1
- package/types/platform/index.native.d.ts +1 -1
- package/types/platform/index.native.d.ts.map +1 -1
- package/types/platform/specs/OneCrypto.nitro.d.ts +2 -0
- package/types/platform/specs/OneCrypto.nitro.d.ts.map +1 -1
- package/types/platform/specs/OneNativeCameraNativeComponent.d.ts +18 -2
- package/types/platform/specs/OneNativeCameraNativeComponent.d.ts.map +1 -1
- package/types/router/router.d.ts.map +1 -1
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: true
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
16
|
+
get: () => from[key],
|
|
17
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
23
|
+
var aes_exports = {};
|
|
24
|
+
__export(aes_exports, {
|
|
25
|
+
assertTagLength: () => assertTagLength,
|
|
26
|
+
createAesApi: () => createAesApi,
|
|
27
|
+
toBytes: () => toBytes
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(aes_exports);
|
|
30
|
+
var import_bytes = require("./bytes.native.js");
|
|
31
|
+
function _class_call_check(instance, Constructor) {
|
|
32
|
+
if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
|
|
33
|
+
}
|
|
34
|
+
function _defineProperties(target, props) {
|
|
35
|
+
for (var i = 0; i < props.length; i++) {
|
|
36
|
+
var descriptor = props[i];
|
|
37
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
38
|
+
descriptor.configurable = true;
|
|
39
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
40
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function _create_class(Constructor, protoProps, staticProps) {
|
|
44
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
45
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
46
|
+
return Constructor;
|
|
47
|
+
}
|
|
48
|
+
function _define_property(obj, key, value) {
|
|
49
|
+
if (key in obj) {
|
|
50
|
+
Object.defineProperty(obj, key, {
|
|
51
|
+
value,
|
|
52
|
+
enumerable: true,
|
|
53
|
+
configurable: true,
|
|
54
|
+
writable: true
|
|
55
|
+
});
|
|
56
|
+
} else obj[key] = value;
|
|
57
|
+
return obj;
|
|
58
|
+
}
|
|
59
|
+
var KEY_SIZES = [
|
|
60
|
+
128,
|
|
61
|
+
192,
|
|
62
|
+
256
|
|
63
|
+
];
|
|
64
|
+
var TAG_LENGTHS = [
|
|
65
|
+
16,
|
|
66
|
+
15,
|
|
67
|
+
14,
|
|
68
|
+
13,
|
|
69
|
+
12,
|
|
70
|
+
8,
|
|
71
|
+
4
|
|
72
|
+
];
|
|
73
|
+
var DEFAULT_IV_LENGTH = 12;
|
|
74
|
+
var DEFAULT_TAG_LENGTH = 16;
|
|
75
|
+
function assertTagLength(tagLength, verb) {
|
|
76
|
+
if (!TAG_LENGTHS.includes(tagLength)) {
|
|
77
|
+
throw new Error(`${verb}: tagLength must be one of: ${TAG_LENGTHS.join(", ")}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
function toBytes(input, verb) {
|
|
81
|
+
if (typeof input === "string") return (0, import_bytes.base64ToBytes)(input, verb);
|
|
82
|
+
if (input instanceof ArrayBuffer) return new Uint8Array(input.slice(0));
|
|
83
|
+
if (ArrayBuffer.isView(input) && input.buffer instanceof ArrayBuffer) {
|
|
84
|
+
return (0, import_bytes.exactBytes)(new Uint8Array(input.buffer, input.byteOffset, input.byteLength));
|
|
85
|
+
}
|
|
86
|
+
throw new TypeError(`${verb}: expected a base64 string, Uint8Array, or ArrayBuffer`);
|
|
87
|
+
}
|
|
88
|
+
var sealedParts = /* @__PURE__ */ new WeakMap();
|
|
89
|
+
var keyBytes = /* @__PURE__ */ new WeakMap();
|
|
90
|
+
function encodeParts(bytes, encoding) {
|
|
91
|
+
return encoding === "base64" ? (0, import_bytes.bytesToBase64)(bytes) : (0, import_bytes.exactBytes)(bytes);
|
|
92
|
+
}
|
|
93
|
+
function createAesApi(engine) {
|
|
94
|
+
var AESEncryptionKey = /* @__PURE__ */ (function() {
|
|
95
|
+
"use strict";
|
|
96
|
+
function AESEncryptionKey2(bytes) {
|
|
97
|
+
_class_call_check(this, AESEncryptionKey2);
|
|
98
|
+
_define_property(this, "size", void 0);
|
|
99
|
+
if (!KEY_SIZES.includes(bytes.length * 8)) {
|
|
100
|
+
throw new Error(`Crypto.AESEncryptionKey: key must be 128, 192, or 256 bits, got ${bytes.length * 8}`);
|
|
101
|
+
}
|
|
102
|
+
this.size = bytes.length * 8;
|
|
103
|
+
keyBytes.set(this, (0, import_bytes.exactBytes)(bytes));
|
|
104
|
+
}
|
|
105
|
+
_create_class(AESEncryptionKey2, [{
|
|
106
|
+
key: "bytes",
|
|
107
|
+
value: async function bytes() {
|
|
108
|
+
return (0, import_bytes.exactBytes)(keyBytes.get(this));
|
|
109
|
+
}
|
|
110
|
+
}, {
|
|
111
|
+
key: "encoded",
|
|
112
|
+
value: async function encoded(encoding) {
|
|
113
|
+
var bytes = keyBytes.get(this);
|
|
114
|
+
if (encoding === "hex") return (0, import_bytes.bytesToHex)(bytes);
|
|
115
|
+
if (encoding === "base64") return (0, import_bytes.bytesToBase64)(bytes);
|
|
116
|
+
throw new Error(`Crypto.AESEncryptionKey.encoded: encoding must be 'hex' or 'base64'`);
|
|
117
|
+
}
|
|
118
|
+
}], [{
|
|
119
|
+
key: "generate",
|
|
120
|
+
value: async function generate() {
|
|
121
|
+
var size = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 256;
|
|
122
|
+
if (!KEY_SIZES.includes(size)) {
|
|
123
|
+
throw new Error(`Crypto.AESEncryptionKey.generate: size must be one of: ${KEY_SIZES.join(", ")}`);
|
|
124
|
+
}
|
|
125
|
+
var bytes = new Uint8Array(size / 8);
|
|
126
|
+
engine.random(bytes);
|
|
127
|
+
return new AESEncryptionKey2(bytes);
|
|
128
|
+
}
|
|
129
|
+
}, {
|
|
130
|
+
key: "import",
|
|
131
|
+
value: async function _import(input, encoding) {
|
|
132
|
+
var verb = "Crypto.AESEncryptionKey.import";
|
|
133
|
+
var bytes;
|
|
134
|
+
if (typeof input === "string") {
|
|
135
|
+
if (encoding === "hex") bytes = (0, import_bytes.hexToBytes)(input, verb);
|
|
136
|
+
else if (encoding === "base64") bytes = (0, import_bytes.base64ToBytes)(input, verb);
|
|
137
|
+
else throw new Error(`${verb}: encoding must be 'hex' or 'base64'`);
|
|
138
|
+
} else if (input instanceof Uint8Array) {
|
|
139
|
+
bytes = (0, import_bytes.exactBytes)(input);
|
|
140
|
+
} else {
|
|
141
|
+
throw new TypeError(`${verb}: expected bytes or an encoded string`);
|
|
142
|
+
}
|
|
143
|
+
if (!KEY_SIZES.includes(bytes.length * 8)) {
|
|
144
|
+
throw new Error(`${verb}: key must be 128, 192, or 256 bits, got ${bytes.length * 8}`);
|
|
145
|
+
}
|
|
146
|
+
return new AESEncryptionKey2(bytes);
|
|
147
|
+
}
|
|
148
|
+
}]);
|
|
149
|
+
return AESEncryptionKey2;
|
|
150
|
+
})();
|
|
151
|
+
var AESSealedData = /* @__PURE__ */ (function() {
|
|
152
|
+
"use strict";
|
|
153
|
+
function AESSealedData2(parts) {
|
|
154
|
+
_class_call_check(this, AESSealedData2);
|
|
155
|
+
if (parts.iv.length === 0) throw new Error("Crypto.AESSealedData: iv must not be empty");
|
|
156
|
+
assertTagLength(parts.tag.length, "Crypto.AESSealedData");
|
|
157
|
+
sealedParts.set(this, parts);
|
|
158
|
+
}
|
|
159
|
+
_create_class(AESSealedData2, [
|
|
160
|
+
{
|
|
161
|
+
key: "ivSize",
|
|
162
|
+
get: function get() {
|
|
163
|
+
return sealedParts.get(this).iv.length;
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
key: "tagSize",
|
|
168
|
+
get: function get() {
|
|
169
|
+
return sealedParts.get(this).tag.length;
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
key: "combinedSize",
|
|
174
|
+
get: function get() {
|
|
175
|
+
var parts = sealedParts.get(this);
|
|
176
|
+
return parts.iv.length + parts.ciphertext.length + parts.tag.length;
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
key: "iv",
|
|
181
|
+
value: async function iv(encoding) {
|
|
182
|
+
return encodeParts(sealedParts.get(this).iv, encoding);
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
key: "tag",
|
|
187
|
+
value: async function tag(encoding) {
|
|
188
|
+
return encodeParts(sealedParts.get(this).tag, encoding);
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
key: "ciphertext",
|
|
193
|
+
value: async function ciphertext(options) {
|
|
194
|
+
var parts = sealedParts.get(this);
|
|
195
|
+
var bytes = (options === null || options === void 0 ? void 0 : options.includeTag) ? (0, import_bytes.concatBytes)([parts.ciphertext, parts.tag]) : parts.ciphertext;
|
|
196
|
+
return encodeParts(bytes, options === null || options === void 0 ? void 0 : options.encoding);
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
key: "combined",
|
|
201
|
+
value: async function combined(encoding) {
|
|
202
|
+
var parts = sealedParts.get(this);
|
|
203
|
+
return encodeParts((0, import_bytes.concatBytes)([
|
|
204
|
+
parts.iv,
|
|
205
|
+
parts.ciphertext,
|
|
206
|
+
parts.tag
|
|
207
|
+
]), encoding);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
], [
|
|
211
|
+
{
|
|
212
|
+
key: "fromCombined",
|
|
213
|
+
value: function fromCombined(combined) {
|
|
214
|
+
var config = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
215
|
+
var _config_ivLength, _config_tagLength;
|
|
216
|
+
var verb = "Crypto.AESSealedData.fromCombined";
|
|
217
|
+
var ivLength = (_config_ivLength = config.ivLength) !== null && _config_ivLength !== void 0 ? _config_ivLength : DEFAULT_IV_LENGTH;
|
|
218
|
+
var tagLength = (_config_tagLength = config.tagLength) !== null && _config_tagLength !== void 0 ? _config_tagLength : DEFAULT_TAG_LENGTH;
|
|
219
|
+
assertTagLength(tagLength, verb);
|
|
220
|
+
if (!Number.isInteger(ivLength) || ivLength <= 0) {
|
|
221
|
+
throw new Error(`${verb}: ivLength must be a positive integer`);
|
|
222
|
+
}
|
|
223
|
+
var bytes = toBytes(combined, verb);
|
|
224
|
+
if (bytes.length < ivLength + tagLength) {
|
|
225
|
+
throw new Error(`${verb}: combined data is shorter than its iv and tag`);
|
|
226
|
+
}
|
|
227
|
+
return new AESSealedData2({
|
|
228
|
+
iv: (0, import_bytes.exactBytes)(bytes.subarray(0, ivLength)),
|
|
229
|
+
ciphertext: (0, import_bytes.exactBytes)(bytes.subarray(ivLength, bytes.length - tagLength)),
|
|
230
|
+
tag: (0, import_bytes.exactBytes)(bytes.subarray(bytes.length - tagLength))
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
key: "fromParts",
|
|
236
|
+
value: function fromParts(ivInput, ciphertextInput, tagOrLength) {
|
|
237
|
+
var verb = "Crypto.AESSealedData.fromParts";
|
|
238
|
+
var iv = toBytes(ivInput, verb);
|
|
239
|
+
var ciphertext = toBytes(ciphertextInput, verb);
|
|
240
|
+
if (tagOrLength === void 0 || typeof tagOrLength === "number") {
|
|
241
|
+
var tagLength = tagOrLength !== null && tagOrLength !== void 0 ? tagOrLength : DEFAULT_TAG_LENGTH;
|
|
242
|
+
assertTagLength(tagLength, verb);
|
|
243
|
+
if (ciphertext.length < tagLength) {
|
|
244
|
+
throw new Error(`${verb}: ciphertext is shorter than its tag`);
|
|
245
|
+
}
|
|
246
|
+
return new AESSealedData2({
|
|
247
|
+
iv,
|
|
248
|
+
ciphertext: (0, import_bytes.exactBytes)(ciphertext.subarray(0, ciphertext.length - tagLength)),
|
|
249
|
+
tag: (0, import_bytes.exactBytes)(ciphertext.subarray(ciphertext.length - tagLength))
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
var tag = toBytes(tagOrLength, verb);
|
|
253
|
+
assertTagLength(tag.length, verb);
|
|
254
|
+
return new AESSealedData2({
|
|
255
|
+
iv,
|
|
256
|
+
ciphertext,
|
|
257
|
+
tag
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
key: "fromSeal",
|
|
263
|
+
value: (function fromSeal(iv, ciphertextWithTag, tagLength) {
|
|
264
|
+
return new AESSealedData2({
|
|
265
|
+
iv,
|
|
266
|
+
ciphertext: (0, import_bytes.exactBytes)(ciphertextWithTag.subarray(0, ciphertextWithTag.length - tagLength)),
|
|
267
|
+
tag: (0, import_bytes.exactBytes)(ciphertextWithTag.subarray(ciphertextWithTag.length - tagLength))
|
|
268
|
+
});
|
|
269
|
+
})
|
|
270
|
+
}
|
|
271
|
+
]);
|
|
272
|
+
return AESSealedData2;
|
|
273
|
+
})();
|
|
274
|
+
async function keyMaterial(key, verb) {
|
|
275
|
+
var own = keyBytes.get(key);
|
|
276
|
+
if (own) return (0, import_bytes.exactBytes)(own);
|
|
277
|
+
if (key && typeof key.bytes === "function") return (0, import_bytes.exactBytes)(await key.bytes());
|
|
278
|
+
throw new TypeError(`${verb}: expected an AESEncryptionKey`);
|
|
279
|
+
}
|
|
280
|
+
async function partsOf(sealed, verb) {
|
|
281
|
+
var own = sealedParts.get(sealed);
|
|
282
|
+
if (own) {
|
|
283
|
+
return {
|
|
284
|
+
iv: (0, import_bytes.exactBytes)(own.iv),
|
|
285
|
+
ciphertext: (0, import_bytes.exactBytes)(own.ciphertext),
|
|
286
|
+
tag: (0, import_bytes.exactBytes)(own.tag)
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
if (sealed && typeof sealed.iv === "function" && typeof sealed.combined === "function") {
|
|
290
|
+
var iv = (0, import_bytes.exactBytes)(await sealed.iv());
|
|
291
|
+
var tag = (0, import_bytes.exactBytes)(await sealed.tag());
|
|
292
|
+
var ciphertext = (0, import_bytes.exactBytes)(await sealed.ciphertext({
|
|
293
|
+
encoding: "bytes",
|
|
294
|
+
includeTag: false
|
|
295
|
+
}));
|
|
296
|
+
return {
|
|
297
|
+
iv,
|
|
298
|
+
ciphertext,
|
|
299
|
+
tag
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
throw new TypeError(`${verb}: expected an AESSealedData`);
|
|
303
|
+
}
|
|
304
|
+
async function aesEncrypt(plaintext, key) {
|
|
305
|
+
var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
|
|
306
|
+
var _options_tagLength;
|
|
307
|
+
var verb = "Crypto.aesEncrypt";
|
|
308
|
+
var tagLength = (_options_tagLength = options.tagLength) !== null && _options_tagLength !== void 0 ? _options_tagLength : DEFAULT_TAG_LENGTH;
|
|
309
|
+
assertTagLength(tagLength, verb);
|
|
310
|
+
var iv;
|
|
311
|
+
var nonce = options.nonce;
|
|
312
|
+
if (nonce && "bytes" in nonce && nonce.bytes !== void 0) {
|
|
313
|
+
iv = toBytes(nonce.bytes, verb);
|
|
314
|
+
if (iv.length === 0) throw new Error(`${verb}: nonce bytes must not be empty`);
|
|
315
|
+
} else {
|
|
316
|
+
var length = nonce && "length" in nonce && nonce.length !== void 0 ? nonce.length : DEFAULT_IV_LENGTH;
|
|
317
|
+
if (!Number.isInteger(length) || length <= 0) {
|
|
318
|
+
throw new Error(`${verb}: nonce length must be a positive integer`);
|
|
319
|
+
}
|
|
320
|
+
iv = new Uint8Array(length);
|
|
321
|
+
engine.random(iv);
|
|
322
|
+
}
|
|
323
|
+
var additionalData = options.additionalData === void 0 ? void 0 : toBytes(options.additionalData, verb);
|
|
324
|
+
var plainBytes = toBytes(plaintext, verb);
|
|
325
|
+
var sealed = await engine.seal(await keyMaterial(key, verb), iv, plainBytes, additionalData, tagLength);
|
|
326
|
+
var actualTag = sealed.length - plainBytes.length;
|
|
327
|
+
return AESSealedData.fromSeal(iv, sealed, actualTag > 0 ? actualTag : tagLength);
|
|
328
|
+
}
|
|
329
|
+
async function aesDecrypt(sealedData, key) {
|
|
330
|
+
var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
|
|
331
|
+
var verb = "Crypto.aesDecrypt";
|
|
332
|
+
var parts = await partsOf(sealedData, verb);
|
|
333
|
+
var additionalData = options.additionalData === void 0 ? void 0 : toBytes(options.additionalData, verb);
|
|
334
|
+
var plaintext = await engine.open(await keyMaterial(key, verb), parts.iv, (0, import_bytes.concatBytes)([parts.ciphertext, parts.tag]), additionalData, parts.tag.length);
|
|
335
|
+
return options.output === "base64" ? (0, import_bytes.bytesToBase64)(plaintext) : plaintext;
|
|
336
|
+
}
|
|
337
|
+
return {
|
|
338
|
+
AESEncryptionKey,
|
|
339
|
+
AESSealedData,
|
|
340
|
+
aesEncrypt,
|
|
341
|
+
aesDecrypt
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
//# sourceMappingURL=aes.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aes.native.js","names":[],"sources":["cjs/platform/crypto/aes.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar aes_exports = {};\n__export(aes_exports, {\n assertTagLength: () => assertTagLength,\n createAesApi: () => createAesApi,\n toBytes: () => toBytes\n});\nmodule.exports = __toCommonJS(aes_exports);\nvar import_bytes = require(\"./bytes\");\nfunction _class_call_check(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else obj[key] = value;\n return obj;\n}\nvar KEY_SIZES = [\n 128,\n 192,\n 256\n];\nvar TAG_LENGTHS = [\n 16,\n 15,\n 14,\n 13,\n 12,\n 8,\n 4\n];\nvar DEFAULT_IV_LENGTH = 12;\nvar DEFAULT_TAG_LENGTH = 16;\nfunction assertTagLength(tagLength, verb) {\n if (!TAG_LENGTHS.includes(tagLength)) {\n throw new Error(`${verb}: tagLength must be one of: ${TAG_LENGTHS.join(\", \")}`);\n }\n}\nfunction toBytes(input, verb) {\n if (typeof input === \"string\") return (0, import_bytes.base64ToBytes)(input, verb);\n if (input instanceof ArrayBuffer) return new Uint8Array(input.slice(0));\n if (ArrayBuffer.isView(input) && input.buffer instanceof ArrayBuffer) {\n return (0, import_bytes.exactBytes)(new Uint8Array(input.buffer, input.byteOffset, input.byteLength));\n }\n throw new TypeError(`${verb}: expected a base64 string, Uint8Array, or ArrayBuffer`);\n}\nvar sealedParts = /* @__PURE__ */ new WeakMap();\nvar keyBytes = /* @__PURE__ */ new WeakMap();\nfunction encodeParts(bytes, encoding) {\n return encoding === \"base64\" ? (0, import_bytes.bytesToBase64)(bytes) : (0, import_bytes.exactBytes)(bytes);\n}\nfunction createAesApi(engine) {\n var AESEncryptionKey = /* @__PURE__ */ (function() {\n \"use strict\";\n function AESEncryptionKey2(bytes) {\n _class_call_check(this, AESEncryptionKey2);\n _define_property(this, \"size\", void 0);\n if (!KEY_SIZES.includes(bytes.length * 8)) {\n throw new Error(`Crypto.AESEncryptionKey: key must be 128, 192, or 256 bits, got ${bytes.length * 8}`);\n }\n this.size = bytes.length * 8;\n keyBytes.set(this, (0, import_bytes.exactBytes)(bytes));\n }\n _create_class(AESEncryptionKey2, [\n {\n key: \"bytes\",\n value: async function bytes() {\n return (0, import_bytes.exactBytes)(keyBytes.get(this));\n }\n },\n {\n key: \"encoded\",\n value: async function encoded(encoding) {\n var bytes = keyBytes.get(this);\n if (encoding === \"hex\") return (0, import_bytes.bytesToHex)(bytes);\n if (encoding === \"base64\") return (0, import_bytes.bytesToBase64)(bytes);\n throw new Error(`Crypto.AESEncryptionKey.encoded: encoding must be 'hex' or 'base64'`);\n }\n }\n ], [\n {\n key: \"generate\",\n value: async function generate() {\n var size = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 256;\n if (!KEY_SIZES.includes(size)) {\n throw new Error(`Crypto.AESEncryptionKey.generate: size must be one of: ${KEY_SIZES.join(\", \")}`);\n }\n var bytes = new Uint8Array(size / 8);\n engine.random(bytes);\n return new AESEncryptionKey2(bytes);\n }\n },\n {\n key: \"import\",\n value: async function _import(input, encoding) {\n var verb = \"Crypto.AESEncryptionKey.import\";\n var bytes;\n if (typeof input === \"string\") {\n if (encoding === \"hex\") bytes = (0, import_bytes.hexToBytes)(input, verb);\n else if (encoding === \"base64\") bytes = (0, import_bytes.base64ToBytes)(input, verb);\n else throw new Error(`${verb}: encoding must be 'hex' or 'base64'`);\n } else if (input instanceof Uint8Array) {\n bytes = (0, import_bytes.exactBytes)(input);\n } else {\n throw new TypeError(`${verb}: expected bytes or an encoded string`);\n }\n if (!KEY_SIZES.includes(bytes.length * 8)) {\n throw new Error(`${verb}: key must be 128, 192, or 256 bits, got ${bytes.length * 8}`);\n }\n return new AESEncryptionKey2(bytes);\n }\n }\n ]);\n return AESEncryptionKey2;\n })();\n var AESSealedData = /* @__PURE__ */ (function() {\n \"use strict\";\n function AESSealedData2(parts) {\n _class_call_check(this, AESSealedData2);\n if (parts.iv.length === 0) throw new Error(\"Crypto.AESSealedData: iv must not be empty\");\n assertTagLength(parts.tag.length, \"Crypto.AESSealedData\");\n sealedParts.set(this, parts);\n }\n _create_class(AESSealedData2, [\n {\n key: \"ivSize\",\n get: function get() {\n return sealedParts.get(this).iv.length;\n }\n },\n {\n key: \"tagSize\",\n get: function get() {\n return sealedParts.get(this).tag.length;\n }\n },\n {\n key: \"combinedSize\",\n get: function get() {\n var parts = sealedParts.get(this);\n return parts.iv.length + parts.ciphertext.length + parts.tag.length;\n }\n },\n {\n key: \"iv\",\n value: async function iv(encoding) {\n return encodeParts(sealedParts.get(this).iv, encoding);\n }\n },\n {\n key: \"tag\",\n value: async function tag(encoding) {\n return encodeParts(sealedParts.get(this).tag, encoding);\n }\n },\n {\n key: \"ciphertext\",\n value: async function ciphertext(options) {\n var parts = sealedParts.get(this);\n var bytes = (options === null || options === void 0 ? void 0 : options.includeTag) ? (0, import_bytes.concatBytes)([\n parts.ciphertext,\n parts.tag\n ]) : parts.ciphertext;\n return encodeParts(bytes, options === null || options === void 0 ? void 0 : options.encoding);\n }\n },\n {\n key: \"combined\",\n value: async function combined(encoding) {\n var parts = sealedParts.get(this);\n return encodeParts((0, import_bytes.concatBytes)([\n parts.iv,\n parts.ciphertext,\n parts.tag\n ]), encoding);\n }\n }\n ], [\n {\n key: \"fromCombined\",\n value: function fromCombined(combined) {\n var config = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var _config_ivLength, _config_tagLength;\n var verb = \"Crypto.AESSealedData.fromCombined\";\n var ivLength = (_config_ivLength = config.ivLength) !== null && _config_ivLength !== void 0 ? _config_ivLength : DEFAULT_IV_LENGTH;\n var tagLength = (_config_tagLength = config.tagLength) !== null && _config_tagLength !== void 0 ? _config_tagLength : DEFAULT_TAG_LENGTH;\n assertTagLength(tagLength, verb);\n if (!Number.isInteger(ivLength) || ivLength <= 0) {\n throw new Error(`${verb}: ivLength must be a positive integer`);\n }\n var bytes = toBytes(combined, verb);\n if (bytes.length < ivLength + tagLength) {\n throw new Error(`${verb}: combined data is shorter than its iv and tag`);\n }\n return new AESSealedData2({\n iv: (0, import_bytes.exactBytes)(bytes.subarray(0, ivLength)),\n ciphertext: (0, import_bytes.exactBytes)(bytes.subarray(ivLength, bytes.length - tagLength)),\n tag: (0, import_bytes.exactBytes)(bytes.subarray(bytes.length - tagLength))\n });\n }\n },\n {\n key: \"fromParts\",\n value: function fromParts(ivInput, ciphertextInput, tagOrLength) {\n var verb = \"Crypto.AESSealedData.fromParts\";\n var iv = toBytes(ivInput, verb);\n var ciphertext = toBytes(ciphertextInput, verb);\n if (tagOrLength === void 0 || typeof tagOrLength === \"number\") {\n var tagLength = tagOrLength !== null && tagOrLength !== void 0 ? tagOrLength : DEFAULT_TAG_LENGTH;\n assertTagLength(tagLength, verb);\n if (ciphertext.length < tagLength) {\n throw new Error(`${verb}: ciphertext is shorter than its tag`);\n }\n return new AESSealedData2({\n iv,\n ciphertext: (0, import_bytes.exactBytes)(ciphertext.subarray(0, ciphertext.length - tagLength)),\n tag: (0, import_bytes.exactBytes)(ciphertext.subarray(ciphertext.length - tagLength))\n });\n }\n var tag = toBytes(tagOrLength, verb);\n assertTagLength(tag.length, verb);\n return new AESSealedData2({\n iv,\n ciphertext,\n tag\n });\n }\n },\n {\n key: \"fromSeal\",\n value: (\n // internal: aesEncrypt builds sealed data from engine output without\n // going through the public parsers (which would just re-split it).\n function fromSeal(iv, ciphertextWithTag, tagLength) {\n return new AESSealedData2({\n iv,\n ciphertext: (0, import_bytes.exactBytes)(ciphertextWithTag.subarray(0, ciphertextWithTag.length - tagLength)),\n tag: (0, import_bytes.exactBytes)(ciphertextWithTag.subarray(ciphertextWithTag.length - tagLength))\n });\n }\n )\n }\n ]);\n return AESSealedData2;\n })();\n async function keyMaterial(key, verb) {\n var own = keyBytes.get(key);\n if (own) return (0, import_bytes.exactBytes)(own);\n if (key && typeof key.bytes === \"function\") return (0, import_bytes.exactBytes)(await key.bytes());\n throw new TypeError(`${verb}: expected an AESEncryptionKey`);\n }\n async function partsOf(sealed, verb) {\n var own = sealedParts.get(sealed);\n if (own) {\n return {\n iv: (0, import_bytes.exactBytes)(own.iv),\n ciphertext: (0, import_bytes.exactBytes)(own.ciphertext),\n tag: (0, import_bytes.exactBytes)(own.tag)\n };\n }\n if (sealed && typeof sealed.iv === \"function\" && typeof sealed.combined === \"function\") {\n var iv = (0, import_bytes.exactBytes)(await sealed.iv());\n var tag = (0, import_bytes.exactBytes)(await sealed.tag());\n var ciphertext = (0, import_bytes.exactBytes)(await sealed.ciphertext({\n encoding: \"bytes\",\n includeTag: false\n }));\n return {\n iv,\n ciphertext,\n tag\n };\n }\n throw new TypeError(`${verb}: expected an AESSealedData`);\n }\n async function aesEncrypt(plaintext, key) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var _options_tagLength;\n var verb = \"Crypto.aesEncrypt\";\n var tagLength = (_options_tagLength = options.tagLength) !== null && _options_tagLength !== void 0 ? _options_tagLength : DEFAULT_TAG_LENGTH;\n assertTagLength(tagLength, verb);\n var iv;\n var nonce = options.nonce;\n if (nonce && \"bytes\" in nonce && nonce.bytes !== void 0) {\n iv = toBytes(nonce.bytes, verb);\n if (iv.length === 0) throw new Error(`${verb}: nonce bytes must not be empty`);\n } else {\n var length = nonce && \"length\" in nonce && nonce.length !== void 0 ? nonce.length : DEFAULT_IV_LENGTH;\n if (!Number.isInteger(length) || length <= 0) {\n throw new Error(`${verb}: nonce length must be a positive integer`);\n }\n iv = new Uint8Array(length);\n engine.random(iv);\n }\n var additionalData = options.additionalData === void 0 ? void 0 : toBytes(options.additionalData, verb);\n var plainBytes = toBytes(plaintext, verb);\n var sealed = await engine.seal(await keyMaterial(key, verb), iv, plainBytes, additionalData, tagLength);\n var actualTag = sealed.length - plainBytes.length;\n return AESSealedData.fromSeal(iv, sealed, actualTag > 0 ? actualTag : tagLength);\n }\n async function aesDecrypt(sealedData, key) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var verb = \"Crypto.aesDecrypt\";\n var parts = await partsOf(sealedData, verb);\n var additionalData = options.additionalData === void 0 ? void 0 : toBytes(options.additionalData, verb);\n var plaintext = await engine.open(await keyMaterial(key, verb), parts.iv, (0, import_bytes.concatBytes)([\n parts.ciphertext,\n parts.tag\n ]), additionalData, parts.tag.length);\n return options.output === \"base64\" ? (0, import_bytes.bytesToBase64)(plaintext) : plaintext;\n }\n return {\n AESEncryptionKey,\n AESSealedData,\n aesEncrypt,\n aesDecrypt\n };\n}\n//# sourceMappingURL=aes.js.map\n"],"mappings":";;;AACA,IAAI,YAAY,OAAO;AACvB,IAAI,mBAAmB,OAAO;AAC9B,IAAI,oBAAoB,OAAO;AAC/B,IAAI,eAAe,OAAO,UAAU;AACpC,IAAI,YAAY,QAAQ,QAAQ;CAC9B,KAAK,IAAI,QAAQ,KACf,UAAU,QAAQ,MAAM;EAAE,KAAK,IAAI;EAAO,YAAY;CAAK,CAAC;AAChE;AACA,IAAI,eAAe,IAAI,MAAM,QAAQ,SAAS;CAC5C,IAAI,QAAQ,OAAO,SAAS,YAAY,OAAO,SAAS,YAAY;EAClE,KAAK,IAAI,OAAO,kBAAkB,IAAI,GACpC,IAAI,CAAC,aAAa,KAAK,IAAI,GAAG,KAAK,QAAQ,QACzC,UAAU,IAAI,KAAK;GAAE,WAAW,KAAK;GAAM,YAAY,EAAE,OAAO,iBAAiB,MAAM,GAAG,MAAM,KAAK;EAAW,CAAC;CACvH;CACA,OAAO;AACT;AACA,IAAI,gBAAgB,QAAQ,YAAY,UAAU,CAAC,GAAG,cAAc,EAAE,OAAO,KAAK,CAAC,GAAG,GAAG;AACzF,IAAI,cAAc,CAAC;AACnB,SAAS,aAAa;CACpB,uBAAuB;CACvB,oBAAoB;CACpB,eAAe;AACjB,CAAC;AACD,OAAO,UAAU,aAAa,WAAW;AACzC,IAAI,eAAe,QAAQ,mBAAS;AACpC,SAAS,kBAAkB,UAAU,aAAa;CAChD,IAAI,EAAE,oBAAoB,cAAc,MAAM,IAAI,UAAU,mCAAmC;AACjG;AACA,SAAS,kBAAkB,QAAQ,OAAO;CACxC,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;EACrC,IAAI,aAAa,MAAM;EACvB,WAAW,aAAa,WAAW,cAAc;EACjD,WAAW,eAAe;EAC1B,IAAI,WAAW,YAAY,WAAW,WAAW;EACjD,OAAO,eAAe,QAAQ,WAAW,KAAK,UAAU;CAC1D;AACF;AACA,SAAS,cAAc,aAAa,YAAY,aAAa;CAC3D,IAAI,YAAY,kBAAkB,YAAY,WAAW,UAAU;CACnE,IAAI,aAAa,kBAAkB,aAAa,WAAW;CAC3D,OAAO;AACT;AACA,SAAS,iBAAiB,KAAK,KAAK,OAAO;CACzC,IAAI,OAAO,KAAK;EACd,OAAO,eAAe,KAAK,KAAK;GAC9B;GACA,YAAY;GACZ,cAAc;GACd,UAAU;EACZ,CAAC;CACH,OAAO,IAAI,OAAO;CAClB,OAAO;AACT;AACA,IAAI,YAAY;CACd;CACA;CACA;AACF;AACA,IAAI,cAAc;CAChB;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AACA,IAAI,oBAAoB;AACxB,IAAI,qBAAqB;AACzB,SAAS,gBAAgB,WAAW,MAAM;CACxC,IAAI,CAAC,YAAY,SAAS,SAAS,GAAG;EACpC,MAAM,IAAI,MAAM,GAAG,KAAK,8BAA8B,YAAY,KAAK,IAAI,GAAG;CAChF;AACF;AACA,SAAS,QAAQ,OAAO,MAAM;CAC5B,IAAI,OAAO,UAAU,UAAU,QAAQ,GAAG,aAAa,cAAa,CAAE,OAAO,IAAI;CACjF,IAAI,iBAAiB,aAAa,OAAO,IAAI,WAAW,MAAM,MAAM,CAAC,CAAC;CACtE,IAAI,YAAY,OAAO,KAAK,KAAK,MAAM,kBAAkB,aAAa;EACpE,QAAQ,GAAG,aAAa,WAAU,CAAE,IAAI,WAAW,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU,CAAC;CACtG;CACA,MAAM,IAAI,UAAU,GAAG,KAAK,uDAAuD;AACrF;AACA,IAAI,8BAA8B,IAAI,QAAQ;AAC9C,IAAI,2BAA2B,IAAI,QAAQ;AAC3C,SAAS,YAAY,OAAO,UAAU;CACpC,OAAO,aAAa,YAAY,GAAG,aAAa,cAAa,CAAE,KAAK,KAAK,GAAG,aAAa,WAAU,CAAE,KAAK;AAC5G;AACA,SAAS,aAAa,QAAQ;CAC5B,IAAI,mBAAmC,iBAAC,WAAW;EACjD;EACA,SAAS,kBAAkB,OAAO;GAChC,kBAAkB,MAAM,iBAAiB;GACzC,iBAAiB,MAAM,QAAQ,KAAK,CAAC;GACrC,IAAI,CAAC,UAAU,SAAS,MAAM,SAAS,CAAC,GAAG;IACzC,MAAM,IAAI,MAAM,mEAAmE,MAAM,SAAS,GAAG;GACvG;GACA,KAAK,OAAO,MAAM,SAAS;GAC3B,SAAS,IAAI,OAAO,GAAG,aAAa,WAAU,CAAE,KAAK,CAAC;EACxD;EACA,cAAc,mBAAmB,CAC/B;GACE,KAAK;GACL,OAAO,eAAe,QAAQ;IAC5B,QAAQ,GAAG,aAAa,WAAU,CAAE,SAAS,IAAI,IAAI,CAAC;GACxD;EACF,GACA;GACE,KAAK;GACL,OAAO,eAAe,QAAQ,UAAU;IACtC,IAAI,QAAQ,SAAS,IAAI,IAAI;IAC7B,IAAI,aAAa,OAAO,QAAQ,GAAG,aAAa,WAAU,CAAE,KAAK;IACjE,IAAI,aAAa,UAAU,QAAQ,GAAG,aAAa,cAAa,CAAE,KAAK;IACvE,MAAM,IAAI,MAAM,qEAAqE;GACvF;EACF,CACF,GAAG,CACD;GACE,KAAK;GACL,OAAO,eAAe,WAAW;IAC/B,IAAI,OAAO,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK;IAC5E,IAAI,CAAC,UAAU,SAAS,IAAI,GAAG;KAC7B,MAAM,IAAI,MAAM,0DAA0D,UAAU,KAAK,IAAI,GAAG;IAClG;IACA,IAAI,QAAQ,IAAI,WAAW,OAAO,CAAC;IACnC,OAAO,OAAO,KAAK;IACnB,OAAO,IAAI,kBAAkB,KAAK;GACpC;EACF,GACA;GACE,KAAK;GACL,OAAO,eAAe,QAAQ,OAAO,UAAU;IAC7C,IAAI,OAAO;IACX,IAAI;IACJ,IAAI,OAAO,UAAU,UAAU;KAC7B,IAAI,aAAa,OAAO,SAAS,GAAG,aAAa,WAAU,CAAE,OAAO,IAAI;UACnE,IAAI,aAAa,UAAU,SAAS,GAAG,aAAa,cAAa,CAAE,OAAO,IAAI;UAC9E,MAAM,IAAI,MAAM,GAAG,KAAK,qCAAqC;IACpE,OAAO,IAAI,iBAAiB,YAAY;KACtC,SAAS,GAAG,aAAa,WAAU,CAAE,KAAK;IAC5C,OAAO;KACL,MAAM,IAAI,UAAU,GAAG,KAAK,sCAAsC;IACpE;IACA,IAAI,CAAC,UAAU,SAAS,MAAM,SAAS,CAAC,GAAG;KACzC,MAAM,IAAI,MAAM,GAAG,KAAK,2CAA2C,MAAM,SAAS,GAAG;IACvF;IACA,OAAO,IAAI,kBAAkB,KAAK;GACpC;EACF,CACF,CAAC;EACD,OAAO;CACT,EAAC,CAAE;CACH,IAAI,gBAAgC,iBAAC,WAAW;EAC9C;EACA,SAAS,eAAe,OAAO;GAC7B,kBAAkB,MAAM,cAAc;GACtC,IAAI,MAAM,GAAG,WAAW,GAAG,MAAM,IAAI,MAAM,4CAA4C;GACvF,gBAAgB,MAAM,IAAI,QAAQ,sBAAsB;GACxD,YAAY,IAAI,MAAM,KAAK;EAC7B;EACA,cAAc,gBAAgB;GAC5B;IACE,KAAK;IACL,KAAK,SAAS,MAAM;KAClB,OAAO,YAAY,IAAI,IAAI,CAAC,CAAC,GAAG;IAClC;GACF;GACA;IACE,KAAK;IACL,KAAK,SAAS,MAAM;KAClB,OAAO,YAAY,IAAI,IAAI,CAAC,CAAC,IAAI;IACnC;GACF;GACA;IACE,KAAK;IACL,KAAK,SAAS,MAAM;KAClB,IAAI,QAAQ,YAAY,IAAI,IAAI;KAChC,OAAO,MAAM,GAAG,SAAS,MAAM,WAAW,SAAS,MAAM,IAAI;IAC/D;GACF;GACA;IACE,KAAK;IACL,OAAO,eAAe,GAAG,UAAU;KACjC,OAAO,YAAY,YAAY,IAAI,IAAI,CAAC,CAAC,IAAI,QAAQ;IACvD;GACF;GACA;IACE,KAAK;IACL,OAAO,eAAe,IAAI,UAAU;KAClC,OAAO,YAAY,YAAY,IAAI,IAAI,CAAC,CAAC,KAAK,QAAQ;IACxD;GACF;GACA;IACE,KAAK;IACL,OAAO,eAAe,WAAW,SAAS;KACxC,IAAI,QAAQ,YAAY,IAAI,IAAI;KAChC,IAAI,SAAS,YAAY,QAAQ,YAAY,KAAK,IAAI,KAAK,IAAI,QAAQ,eAAe,GAAG,aAAa,YAAW,CAAE,CACjH,MAAM,YACN,MAAM,GACR,CAAC,IAAI,MAAM;KACX,OAAO,YAAY,OAAO,YAAY,QAAQ,YAAY,KAAK,IAAI,KAAK,IAAI,QAAQ,QAAQ;IAC9F;GACF;GACA;IACE,KAAK;IACL,OAAO,eAAe,SAAS,UAAU;KACvC,IAAI,QAAQ,YAAY,IAAI,IAAI;KAChC,OAAO,aAAa,GAAG,aAAa,YAAW,CAAE;MAC/C,MAAM;MACN,MAAM;MACN,MAAM;KACR,CAAC,GAAG,QAAQ;IACd;GACF;EACF,GAAG;GACD;IACE,KAAK;IACL,OAAO,SAAS,aAAa,UAAU;KACrC,IAAI,SAAS,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK,CAAC;KAC/E,IAAI,kBAAkB;KACtB,IAAI,OAAO;KACX,IAAI,YAAY,mBAAmB,OAAO,cAAc,QAAQ,qBAAqB,KAAK,IAAI,mBAAmB;KACjH,IAAI,aAAa,oBAAoB,OAAO,eAAe,QAAQ,sBAAsB,KAAK,IAAI,oBAAoB;KACtH,gBAAgB,WAAW,IAAI;KAC/B,IAAI,CAAC,OAAO,UAAU,QAAQ,KAAK,YAAY,GAAG;MAChD,MAAM,IAAI,MAAM,GAAG,KAAK,sCAAsC;KAChE;KACA,IAAI,QAAQ,QAAQ,UAAU,IAAI;KAClC,IAAI,MAAM,SAAS,WAAW,WAAW;MACvC,MAAM,IAAI,MAAM,GAAG,KAAK,+CAA+C;KACzE;KACA,OAAO,IAAI,eAAe;MACxB,KAAK,GAAG,aAAa,WAAU,CAAE,MAAM,SAAS,GAAG,QAAQ,CAAC;MAC5D,aAAa,GAAG,aAAa,WAAU,CAAE,MAAM,SAAS,UAAU,MAAM,SAAS,SAAS,CAAC;MAC3F,MAAM,GAAG,aAAa,WAAU,CAAE,MAAM,SAAS,MAAM,SAAS,SAAS,CAAC;KAC5E,CAAC;IACH;GACF;GACA;IACE,KAAK;IACL,OAAO,SAAS,UAAU,SAAS,iBAAiB,aAAa;KAC/D,IAAI,OAAO;KACX,IAAI,KAAK,QAAQ,SAAS,IAAI;KAC9B,IAAI,aAAa,QAAQ,iBAAiB,IAAI;KAC9C,IAAI,gBAAgB,KAAK,KAAK,OAAO,gBAAgB,UAAU;MAC7D,IAAI,YAAY,gBAAgB,QAAQ,gBAAgB,KAAK,IAAI,cAAc;MAC/E,gBAAgB,WAAW,IAAI;MAC/B,IAAI,WAAW,SAAS,WAAW;OACjC,MAAM,IAAI,MAAM,GAAG,KAAK,qCAAqC;MAC/D;MACA,OAAO,IAAI,eAAe;OACxB;OACA,aAAa,GAAG,aAAa,WAAU,CAAE,WAAW,SAAS,GAAG,WAAW,SAAS,SAAS,CAAC;OAC9F,MAAM,GAAG,aAAa,WAAU,CAAE,WAAW,SAAS,WAAW,SAAS,SAAS,CAAC;MACtF,CAAC;KACH;KACA,IAAI,MAAM,QAAQ,aAAa,IAAI;KACnC,gBAAgB,IAAI,QAAQ,IAAI;KAChC,OAAO,IAAI,eAAe;MACxB;MACA;MACA;KACF,CAAC;IACH;GACF;GACA;IACE,KAAK;IACL,QAGE,SAAS,SAAS,IAAI,mBAAmB,WAAW;KAClD,OAAO,IAAI,eAAe;MACxB;MACA,aAAa,GAAG,aAAa,WAAU,CAAE,kBAAkB,SAAS,GAAG,kBAAkB,SAAS,SAAS,CAAC;MAC5G,MAAM,GAAG,aAAa,WAAU,CAAE,kBAAkB,SAAS,kBAAkB,SAAS,SAAS,CAAC;KACpG,CAAC;IACH;GAEJ;EACF,CAAC;EACD,OAAO;CACT,EAAC,CAAE;CACH,eAAe,YAAY,KAAK,MAAM;EACpC,IAAI,MAAM,SAAS,IAAI,GAAG;EAC1B,IAAI,KAAK,QAAQ,GAAG,aAAa,WAAU,CAAE,GAAG;EAChD,IAAI,OAAO,OAAO,IAAI,UAAU,YAAY,QAAQ,GAAG,aAAa,WAAU,CAAE,MAAM,IAAI,MAAM,CAAC;EACjG,MAAM,IAAI,UAAU,GAAG,KAAK,+BAA+B;CAC7D;CACA,eAAe,QAAQ,QAAQ,MAAM;EACnC,IAAI,MAAM,YAAY,IAAI,MAAM;EAChC,IAAI,KAAK;GACP,OAAO;IACL,KAAK,GAAG,aAAa,WAAU,CAAE,IAAI,EAAE;IACvC,aAAa,GAAG,aAAa,WAAU,CAAE,IAAI,UAAU;IACvD,MAAM,GAAG,aAAa,WAAU,CAAE,IAAI,GAAG;GAC3C;EACF;EACA,IAAI,UAAU,OAAO,OAAO,OAAO,cAAc,OAAO,OAAO,aAAa,YAAY;GACtF,IAAI,MAAM,GAAG,aAAa,WAAU,CAAE,MAAM,OAAO,GAAG,CAAC;GACvD,IAAI,OAAO,GAAG,aAAa,WAAU,CAAE,MAAM,OAAO,IAAI,CAAC;GACzD,IAAI,cAAc,GAAG,aAAa,WAAU,CAAE,MAAM,OAAO,WAAW;IACpE,UAAU;IACV,YAAY;GACd,CAAC,CAAC;GACF,OAAO;IACL;IACA;IACA;GACF;EACF;EACA,MAAM,IAAI,UAAU,GAAG,KAAK,4BAA4B;CAC1D;CACA,eAAe,WAAW,WAAW,KAAK;EACxC,IAAI,UAAU,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK,CAAC;EAChF,IAAI;EACJ,IAAI,OAAO;EACX,IAAI,aAAa,qBAAqB,QAAQ,eAAe,QAAQ,uBAAuB,KAAK,IAAI,qBAAqB;EAC1H,gBAAgB,WAAW,IAAI;EAC/B,IAAI;EACJ,IAAI,QAAQ,QAAQ;EACpB,IAAI,SAAS,WAAW,SAAS,MAAM,UAAU,KAAK,GAAG;GACvD,KAAK,QAAQ,MAAM,OAAO,IAAI;GAC9B,IAAI,GAAG,WAAW,GAAG,MAAM,IAAI,MAAM,GAAG,KAAK,gCAAgC;EAC/E,OAAO;GACL,IAAI,SAAS,SAAS,YAAY,SAAS,MAAM,WAAW,KAAK,IAAI,MAAM,SAAS;GACpF,IAAI,CAAC,OAAO,UAAU,MAAM,KAAK,UAAU,GAAG;IAC5C,MAAM,IAAI,MAAM,GAAG,KAAK,0CAA0C;GACpE;GACA,KAAK,IAAI,WAAW,MAAM;GAC1B,OAAO,OAAO,EAAE;EAClB;EACA,IAAI,iBAAiB,QAAQ,mBAAmB,KAAK,IAAI,KAAK,IAAI,QAAQ,QAAQ,gBAAgB,IAAI;EACtG,IAAI,aAAa,QAAQ,WAAW,IAAI;EACxC,IAAI,SAAS,MAAM,OAAO,KAAK,MAAM,YAAY,KAAK,IAAI,GAAG,IAAI,YAAY,gBAAgB,SAAS;EACtG,IAAI,YAAY,OAAO,SAAS,WAAW;EAC3C,OAAO,cAAc,SAAS,IAAI,QAAQ,YAAY,IAAI,YAAY,SAAS;CACjF;CACA,eAAe,WAAW,YAAY,KAAK;EACzC,IAAI,UAAU,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK,CAAC;EAChF,IAAI,OAAO;EACX,IAAI,QAAQ,MAAM,QAAQ,YAAY,IAAI;EAC1C,IAAI,iBAAiB,QAAQ,mBAAmB,KAAK,IAAI,KAAK,IAAI,QAAQ,QAAQ,gBAAgB,IAAI;EACtG,IAAI,YAAY,MAAM,OAAO,KAAK,MAAM,YAAY,KAAK,IAAI,GAAG,MAAM,KAAK,GAAG,aAAa,YAAW,CAAE,CACtG,MAAM,YACN,MAAM,GACR,CAAC,GAAG,gBAAgB,MAAM,IAAI,MAAM;EACpC,OAAO,QAAQ,WAAW,YAAY,GAAG,aAAa,cAAa,CAAE,SAAS,IAAI;CACpF;CACA,OAAO;EACL;EACA;EACA;EACA;CACF;AACF"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all) __defProp(target, name, {
|
|
7
|
+
get: all[name],
|
|
8
|
+
enumerable: true
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
14
|
+
get: () => from[key],
|
|
15
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
21
|
+
var bytes_exports = {};
|
|
22
|
+
__export(bytes_exports, {
|
|
23
|
+
base64ToBytes: () => base64ToBytes,
|
|
24
|
+
bytesToBase64: () => bytesToBase64,
|
|
25
|
+
bytesToHex: () => bytesToHex,
|
|
26
|
+
concatBytes: () => concatBytes,
|
|
27
|
+
exactBytes: () => exactBytes,
|
|
28
|
+
hexToBytes: () => hexToBytes,
|
|
29
|
+
utf8Encode: () => utf8Encode
|
|
30
|
+
});
|
|
31
|
+
module.exports = __toCommonJS(bytes_exports);
|
|
32
|
+
const HEX_DIGITS = "0123456789abcdef";
|
|
33
|
+
function bytesToHex(bytes) {
|
|
34
|
+
let out = "";
|
|
35
|
+
for (const byte of bytes) out += HEX_DIGITS[byte >> 4] + HEX_DIGITS[byte & 15];
|
|
36
|
+
return out;
|
|
37
|
+
}
|
|
38
|
+
function hexToBytes(hex, verb) {
|
|
39
|
+
if (hex.length % 2 !== 0 || /[^0-9a-fA-F]/.test(hex)) {
|
|
40
|
+
throw new Error(`${verb}: expected an even-length hex string`);
|
|
41
|
+
}
|
|
42
|
+
const out = new Uint8Array(hex.length / 2);
|
|
43
|
+
for (let index = 0; index < out.length; index++) {
|
|
44
|
+
out[index] = parseInt(hex.slice(index * 2, index * 2 + 2), 16);
|
|
45
|
+
}
|
|
46
|
+
return out;
|
|
47
|
+
}
|
|
48
|
+
const BASE64_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
|
49
|
+
const BASE64_VALUES = new Int16Array(128).fill(-1);
|
|
50
|
+
for (let index = 0; index < BASE64_ALPHABET.length; index++) {
|
|
51
|
+
BASE64_VALUES[BASE64_ALPHABET.charCodeAt(index)] = index;
|
|
52
|
+
}
|
|
53
|
+
function bytesToBase64(bytes) {
|
|
54
|
+
let out = "";
|
|
55
|
+
for (let index = 0; index < bytes.length; index += 3) {
|
|
56
|
+
const first = bytes[index];
|
|
57
|
+
const second = bytes[index + 1];
|
|
58
|
+
const third = bytes[index + 2];
|
|
59
|
+
out += BASE64_ALPHABET[first >> 2];
|
|
60
|
+
out += BASE64_ALPHABET[(first & 3) << 4 | (second ?? 0) >> 4];
|
|
61
|
+
out += second === void 0 ? "=" : BASE64_ALPHABET[(second & 15) << 2 | (third ?? 0) >> 6];
|
|
62
|
+
out += third === void 0 ? "=" : BASE64_ALPHABET[third & 63];
|
|
63
|
+
}
|
|
64
|
+
return out;
|
|
65
|
+
}
|
|
66
|
+
function base64ToBytes(base64, verb) {
|
|
67
|
+
if (base64.length % 4 !== 0 || /[^A-Za-z0-9+/=]/.test(base64)) {
|
|
68
|
+
throw new Error(`${verb}: expected a base64 string`);
|
|
69
|
+
}
|
|
70
|
+
const padding = base64.endsWith("==") ? 2 : base64.endsWith("=") ? 1 : 0;
|
|
71
|
+
if (base64.slice(0, base64.length - padding).includes("=")) {
|
|
72
|
+
throw new Error(`${verb}: expected a base64 string`);
|
|
73
|
+
}
|
|
74
|
+
const out = new Uint8Array(base64.length / 4 * 3 - padding);
|
|
75
|
+
let at = 0;
|
|
76
|
+
for (let index = 0; index < base64.length; index += 4) {
|
|
77
|
+
const values = [
|
|
78
|
+
0,
|
|
79
|
+
1,
|
|
80
|
+
2,
|
|
81
|
+
3
|
|
82
|
+
].map((offset) => {
|
|
83
|
+
const code = base64.charCodeAt(index + offset);
|
|
84
|
+
return code === 61 ? 0 : BASE64_VALUES[code];
|
|
85
|
+
});
|
|
86
|
+
if (values.some((value) => value < 0)) throw new Error(`${verb}: expected a base64 string`);
|
|
87
|
+
if (at < out.length) out[at++] = values[0] << 2 | values[1] >> 4;
|
|
88
|
+
if (at < out.length) out[at++] = (values[1] & 15) << 4 | values[2] >> 2;
|
|
89
|
+
if (at < out.length) out[at++] = (values[2] & 3) << 6 | values[3];
|
|
90
|
+
}
|
|
91
|
+
return out;
|
|
92
|
+
}
|
|
93
|
+
function utf8Encode(text) {
|
|
94
|
+
const bytes = [];
|
|
95
|
+
for (let index = 0; index < text.length; index++) {
|
|
96
|
+
let code = text.charCodeAt(index);
|
|
97
|
+
if (code >= 55296 && code <= 56319) {
|
|
98
|
+
const next = text.charCodeAt(index + 1);
|
|
99
|
+
if (next >= 56320 && next <= 57343) {
|
|
100
|
+
code = 65536 + (code - 55296 << 10) + (next - 56320);
|
|
101
|
+
index++;
|
|
102
|
+
} else {
|
|
103
|
+
code = 65533;
|
|
104
|
+
}
|
|
105
|
+
} else if (code >= 56320 && code <= 57343) {
|
|
106
|
+
code = 65533;
|
|
107
|
+
}
|
|
108
|
+
if (code < 128) {
|
|
109
|
+
bytes.push(code);
|
|
110
|
+
} else if (code < 2048) {
|
|
111
|
+
bytes.push(192 | code >> 6, 128 | code & 63);
|
|
112
|
+
} else if (code < 65536) {
|
|
113
|
+
bytes.push(224 | code >> 12, 128 | code >> 6 & 63, 128 | code & 63);
|
|
114
|
+
} else {
|
|
115
|
+
bytes.push(240 | code >> 18, 128 | code >> 12 & 63, 128 | code >> 6 & 63, 128 | code & 63);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return new Uint8Array(bytes);
|
|
119
|
+
}
|
|
120
|
+
function exactBytes(view) {
|
|
121
|
+
return new Uint8Array(view);
|
|
122
|
+
}
|
|
123
|
+
function concatBytes(parts) {
|
|
124
|
+
const length = parts.reduce((sum, part) => sum + part.length, 0);
|
|
125
|
+
const out = new Uint8Array(length);
|
|
126
|
+
let at = 0;
|
|
127
|
+
for (const part of parts) {
|
|
128
|
+
out.set(part, at);
|
|
129
|
+
at += part.length;
|
|
130
|
+
}
|
|
131
|
+
return out;
|
|
132
|
+
}
|