@cloudpss/crypto 0.5.53 → 0.5.55
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/dist/encryption/common.d.ts +5 -5
- package/dist/encryption/common.d.ts.map +1 -1
- package/dist/encryption/node.js.map +1 -1
- package/dist/encryption/wasm.js.map +1 -1
- package/dist/encryption/web.js.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/encryption/common.ts +5 -5
- package/src/encryption/node.ts +1 -1
- package/src/encryption/wasm.ts +2 -2
- package/src/encryption/web.ts +1 -1
- package/src/utils.ts +1 -1
|
@@ -15,18 +15,18 @@ export declare const AES_TAG_SIZE: number;
|
|
|
15
15
|
/** 加密输入/解密结果 */
|
|
16
16
|
export interface PlainData {
|
|
17
17
|
/** 附加数据 */
|
|
18
|
-
aad: Uint8Array
|
|
18
|
+
aad: Uint8Array<ArrayBuffer>;
|
|
19
19
|
/** 明文数据 */
|
|
20
|
-
data: Uint8Array
|
|
20
|
+
data: Uint8Array<ArrayBuffer>;
|
|
21
21
|
}
|
|
22
22
|
/** 解密输入/加密结果 */
|
|
23
23
|
export interface EncryptedData {
|
|
24
24
|
/** NONCE */
|
|
25
|
-
nonce: Uint8Array
|
|
25
|
+
nonce: Uint8Array<ArrayBuffer>;
|
|
26
26
|
/** 附加数据 */
|
|
27
|
-
aad: Uint8Array
|
|
27
|
+
aad: Uint8Array<ArrayBuffer>;
|
|
28
28
|
/** 加密后的数据和 tag */
|
|
29
|
-
data: Uint8Array
|
|
29
|
+
data: Uint8Array<ArrayBuffer>;
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
32
|
* CloudPSS 数据加密
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/encryption/common.ts"],"names":[],"mappings":"AAEA,kBAAkB;AAClB,eAAO,MAAM,iBAAiB,SAAU,CAAC;AACzC,qBAAqB;AACrB,eAAO,MAAM,UAAU,QAAS,CAAC;AACjC,qBAAqB;AACrB,eAAO,MAAM,YAAY,QAAwB,CAAC;AAClD,uBAAuB;AACvB,eAAO,MAAM,YAAY,IAAI,CAAC;AAG9B,kBAAkB;AAClB,eAAO,MAAM,WAAW,QAAU,CAAC;AACnC,mBAAmB;AACnB,eAAO,MAAM,YAAY,QAAU,CAAC;AACpC,wBAAwB;AACxB,eAAO,MAAM,YAAY,QAAU,CAAC;AAEpC,gBAAgB;AAChB,MAAM,WAAW,SAAS;IACtB,WAAW;IACX,GAAG,EAAE,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/encryption/common.ts"],"names":[],"mappings":"AAEA,kBAAkB;AAClB,eAAO,MAAM,iBAAiB,SAAU,CAAC;AACzC,qBAAqB;AACrB,eAAO,MAAM,UAAU,QAAS,CAAC;AACjC,qBAAqB;AACrB,eAAO,MAAM,YAAY,QAAwB,CAAC;AAClD,uBAAuB;AACvB,eAAO,MAAM,YAAY,IAAI,CAAC;AAG9B,kBAAkB;AAClB,eAAO,MAAM,WAAW,QAAU,CAAC;AACnC,mBAAmB;AACnB,eAAO,MAAM,YAAY,QAAU,CAAC;AACpC,wBAAwB;AACxB,eAAO,MAAM,YAAY,QAAU,CAAC;AAEpC,gBAAgB;AAChB,MAAM,WAAW,SAAS;IACtB,WAAW;IACX,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAC7B,WAAW;IACX,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CACjC;AAED,gBAAgB;AAChB,MAAM,WAAW,aAAa;IAC1B,YAAY;IACZ,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAC/B,WAAW;IACX,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAC7B,kBAAkB;IAClB,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CACjC;AAED;;;;;;;;;;;;;GAaG;AAEH,oBAAoB;AACpB,eAAO,MAAM,YAAY,yBAAoE,CAAC;AAI9F,eAAe;AACf,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,uBAAuB;AACvB,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,GAAG,SAAS,CAyB5E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/encryption/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/F,OAAO,EACH,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,YAAY,GAGf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;AAClC,MAAM,MAAM,GAAG,KAAK,EAAE,UAAkB,EAAE,IAAgB,EAAmB,EAAE;IAC3E,OAAO,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AAC/E,CAAC,CAAC;AAEF,qBAAqB;AACrB,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAa,EAAE,UAAkB;IACtE,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/encryption/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/F,OAAO,EACH,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,YAAY,GAGf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;AAClC,MAAM,MAAM,GAAG,KAAK,EAAE,UAAkB,EAAE,IAAgB,EAAmB,EAAE;IAC3E,OAAO,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AAC/E,CAAC,CAAC;AAEF,qBAAqB;AACrB,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAa,EAAE,UAAkB;IACtE,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,CAAwB,CAAC;IAC7D,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;IAC1F,IAAI,GAAG,CAAC,UAAU;QAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC5F,OAAO;QACH,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;QAC1B,GAAG;QACH,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC;KAChC,CAAC;AACN,CAAC;AAED,qBAAqB;AACrB,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAiB,EAAE,UAAkB;IACjF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;IAC9F,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC;IAC/D,IAAI,GAAG,CAAC,UAAU;QAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACnH,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;AAClD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasm.js","sourceRoot":"","sources":["../../src/encryption/wasm.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EACV,YAAY,EACZ,YAAY,EAEZ,iBAAiB,GAEpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,GAAG,MAAM,WAAW,CAAC;AAEjC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC,wBAAwB;AACxB,MAAM,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAa,EAAE,UAAkB;IAChE,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CACtB,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAC1B,IAAI,EACJ,GAAG,EACH,KAAK,EACL,iBAAiB,EACjB,YAAY,EACZ,YAAY,
|
|
1
|
+
{"version":3,"file":"wasm.js","sourceRoot":"","sources":["../../src/encryption/wasm.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EACV,YAAY,EACZ,YAAY,EAEZ,iBAAiB,GAEpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,GAAG,MAAM,WAAW,CAAC;AAEjC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC,wBAAwB;AACxB,MAAM,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAa,EAAE,UAAkB;IAChE,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CACtB,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAC1B,IAAI,EACJ,GAAG,EACH,KAAK,EACL,iBAAiB,EACjB,YAAY,EACZ,YAAY,CACY,CAAC;IAC7B,OAAO;QACH,KAAK;QACL,GAAG;QACH,IAAI,EAAE,MAAM;KACf,CAAC;AACN,CAAC;AAED,wBAAwB;AACxB,MAAM,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAiB,EAAE,UAAkB;IAC3E,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CACzB,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAC1B,IAAI,EACJ,GAAG,EACH,KAAK,EACL,iBAAiB,EACjB,YAAY,EACZ,YAAY,CACY,CAAC;IAC7B,OAAO;QACH,GAAG;QACH,IAAI,EAAE,SAAS;KAClB,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/encryption/web.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EACV,YAAY,EACZ,YAAY,EAGZ,iBAAiB,GACpB,MAAM,aAAa,CAAC;AAErB,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC,wBAAwB;AACxB,KAAK,UAAU,SAAS,CAAC,UAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/encryption/web.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EACV,YAAY,EACZ,YAAY,EAGZ,iBAAiB,GACpB,MAAM,aAAa,CAAC;AAErB,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC,wBAAwB;AACxB,KAAK,UAAU,SAAS,CAAC,UAAkB,EAAE,IAA6B;IACtE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9G,MAAM,YAAY,GAAiB;QAC/B,IAAI,EAAE,QAAQ;QACd,IAAI;QACJ,UAAU,EAAE,iBAAiB;QAC7B,IAAI,EAAE,SAAS;KAClB,CAAC;IACF,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE;QAC3G,SAAS;QACT,SAAS;KACZ,CAAC,CAAC;AACP,CAAC;AAED,wBAAwB;AACxB,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAa,EAAE,UAAkB;IACtE,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CACzC;QACI,IAAI,EAAE,SAAS;QACf,EAAE,EAAE,KAAK;QACT,SAAS,EAAE,YAAY,GAAG,CAAC;QAC3B,cAAc,EAAE,GAAG;KACtB,EACD,GAAG,EACH,IAAI,CACP,CAAC;IACF,OAAO;QACH,KAAK;QACL,GAAG;QACH,IAAI,EAAE,IAAI,UAAU,CAAC,SAAS,CAAC;KAClC,CAAC;AACN,CAAC;AAED,wBAAwB;AACxB,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAiB,EAAE,UAAkB;IACjF,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CACzC;QACI,IAAI,EAAE,SAAS;QACf,EAAE,EAAE,KAAK;QACT,SAAS,EAAE,YAAY,GAAG,CAAC;QAC3B,cAAc,EAAE,GAAG;KACtB,EACD,GAAG,EACH,IAAI,CACP,CAAC;IACF,OAAO;QACH,GAAG;QACH,IAAI,EAAE,IAAI,UAAU,CAAC,SAAS,CAAC;KAClC,CAAC;AACN,CAAC"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** 支持的数据转为 Uint8Array */
|
|
2
|
-
export declare function toUint8Array(data: BufferSource): Uint8Array
|
|
2
|
+
export declare function toUint8Array(data: BufferSource): Uint8Array<ArrayBuffer>;
|
|
3
3
|
/** 长度为 0 的 Uint8Array */
|
|
4
4
|
export declare const EMPTY_BUFFER: Uint8Array<ArrayBuffer>;
|
|
5
5
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,CAQxE;AAED,yBAAyB;AACzB,eAAO,MAAM,YAAY,yBAAoB,CAAC"}
|
package/package.json
CHANGED
package/src/encryption/common.ts
CHANGED
|
@@ -20,19 +20,19 @@ export const AES_TAG_SIZE = 128 / 8;
|
|
|
20
20
|
/** 加密输入/解密结果 */
|
|
21
21
|
export interface PlainData {
|
|
22
22
|
/** 附加数据 */
|
|
23
|
-
aad: Uint8Array
|
|
23
|
+
aad: Uint8Array<ArrayBuffer>;
|
|
24
24
|
/** 明文数据 */
|
|
25
|
-
data: Uint8Array
|
|
25
|
+
data: Uint8Array<ArrayBuffer>;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
/** 解密输入/加密结果 */
|
|
29
29
|
export interface EncryptedData {
|
|
30
30
|
/** NONCE */
|
|
31
|
-
nonce: Uint8Array
|
|
31
|
+
nonce: Uint8Array<ArrayBuffer>;
|
|
32
32
|
/** 附加数据 */
|
|
33
|
-
aad: Uint8Array
|
|
33
|
+
aad: Uint8Array<ArrayBuffer>;
|
|
34
34
|
/** 加密后的数据和 tag */
|
|
35
|
-
data: Uint8Array
|
|
35
|
+
data: Uint8Array<ArrayBuffer>;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
/**
|
package/src/encryption/node.ts
CHANGED
|
@@ -17,7 +17,7 @@ const aesKdf = async (passphrase: string, salt: Uint8Array): Promise<Buffer> =>
|
|
|
17
17
|
|
|
18
18
|
/** nodejs encrypt */
|
|
19
19
|
export async function encrypt({ data, aad }: PlainData, passphrase: string): Promise<EncryptedData> {
|
|
20
|
-
const nonce = randomBytes(NONCE_SIZE)
|
|
20
|
+
const nonce = randomBytes(NONCE_SIZE) as Buffer<ArrayBuffer>;
|
|
21
21
|
const key = await aesKdf(passphrase, nonce);
|
|
22
22
|
const cipher = createCipheriv('aes-256-gcm', key, nonce, { authTagLength: AES_TAG_SIZE });
|
|
23
23
|
if (aad.byteLength) cipher.setAAD(aad);
|
package/src/encryption/wasm.ts
CHANGED
|
@@ -21,7 +21,7 @@ export function encrypt({ data, aad }: PlainData, passphrase: string): Encrypted
|
|
|
21
21
|
PBKDF2_ITERATIONS,
|
|
22
22
|
AES_KEY_SIZE,
|
|
23
23
|
AES_TAG_SIZE,
|
|
24
|
-
)
|
|
24
|
+
) as Uint8Array<ArrayBuffer>;
|
|
25
25
|
return {
|
|
26
26
|
nonce,
|
|
27
27
|
aad,
|
|
@@ -39,7 +39,7 @@ export function decrypt({ data, aad, nonce }: EncryptedData, passphrase: string)
|
|
|
39
39
|
PBKDF2_ITERATIONS,
|
|
40
40
|
AES_KEY_SIZE,
|
|
41
41
|
AES_TAG_SIZE,
|
|
42
|
-
)
|
|
42
|
+
) as Uint8Array<ArrayBuffer>;
|
|
43
43
|
return {
|
|
44
44
|
aad,
|
|
45
45
|
data: decrypted,
|
package/src/encryption/web.ts
CHANGED
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
const encoder = new TextEncoder();
|
|
11
11
|
|
|
12
12
|
/** Create aes params */
|
|
13
|
-
async function aesKdfWeb(passphrase: string, salt: Uint8Array): Promise<CryptoKey> {
|
|
13
|
+
async function aesKdfWeb(passphrase: string, salt: Uint8Array<ArrayBuffer>): Promise<CryptoKey> {
|
|
14
14
|
const pass = await crypto.subtle.importKey('raw', encoder.encode(passphrase), 'PBKDF2', false, ['deriveKey']);
|
|
15
15
|
const pbkdf2Params: Pbkdf2Params = {
|
|
16
16
|
name: 'PBKDF2',
|
package/src/utils.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** 支持的数据转为 Uint8Array */
|
|
2
|
-
export function toUint8Array(data: BufferSource): Uint8Array {
|
|
2
|
+
export function toUint8Array(data: BufferSource): Uint8Array<ArrayBuffer> {
|
|
3
3
|
if (data == null || typeof data != 'object' || typeof data.byteLength != 'number') {
|
|
4
4
|
throw new TypeError('Invalid data');
|
|
5
5
|
}
|