cipher-kit 0.0.3 → 0.0.5

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 (40) hide show
  1. package/dist/chunk-65XPPPAR.cjs +216 -0
  2. package/dist/chunk-65XPPPAR.cjs.map +1 -0
  3. package/dist/chunk-F52DT5C4.js +70 -0
  4. package/dist/chunk-F52DT5C4.js.map +1 -0
  5. package/dist/chunk-IMSNCUFU.cjs +84 -0
  6. package/dist/chunk-IMSNCUFU.cjs.map +1 -0
  7. package/dist/chunk-PKIT6YQN.js +137 -0
  8. package/dist/chunk-PKIT6YQN.js.map +1 -0
  9. package/dist/chunk-RF735UV3.cjs +153 -0
  10. package/dist/chunk-RF735UV3.cjs.map +1 -0
  11. package/dist/{chunk-GYFL6RUD.js → chunk-UYBB4K56.js} +49 -43
  12. package/dist/chunk-UYBB4K56.js.map +1 -0
  13. package/dist/index.cjs +36 -76
  14. package/dist/index.d.cts +24 -3
  15. package/dist/index.d.ts +24 -3
  16. package/dist/index.js +3 -3
  17. package/dist/node.cjs +35 -19
  18. package/dist/node.d.cts +7 -8
  19. package/dist/node.d.ts +7 -8
  20. package/dist/node.js +2 -2
  21. package/dist/types-C7UlGfO2.d.cts +46 -0
  22. package/dist/types-C7UlGfO2.d.ts +46 -0
  23. package/dist/web-api.cjs +35 -19
  24. package/dist/web-api.d.cts +6 -7
  25. package/dist/web-api.d.ts +6 -7
  26. package/dist/web-api.js +2 -2
  27. package/package.json +1 -1
  28. package/dist/chunk-72PZBMQR.js +0 -48
  29. package/dist/chunk-72PZBMQR.js.map +0 -1
  30. package/dist/chunk-GYFL6RUD.js.map +0 -1
  31. package/dist/chunk-KFZLZJ2J.cjs +0 -209
  32. package/dist/chunk-KFZLZJ2J.cjs.map +0 -1
  33. package/dist/chunk-MMHTEI3Q.js +0 -125
  34. package/dist/chunk-MMHTEI3Q.js.map +0 -1
  35. package/dist/chunk-WB7F34SY.cjs +0 -140
  36. package/dist/chunk-WB7F34SY.cjs.map +0 -1
  37. package/dist/chunk-WD5FWRQ4.cjs +0 -58
  38. package/dist/chunk-WD5FWRQ4.cjs.map +0 -1
  39. package/dist/utils-D8fOvyw5.d.cts +0 -35
  40. package/dist/utils-D8fOvyw5.d.ts +0 -35
package/dist/index.d.ts CHANGED
@@ -1,5 +1,26 @@
1
- export { E as ENCRYPTED_NODE_REGEX, a as ENCRYPTED_REGEX, b as ENCRYPTED_WEB_REGEX, N as NodeKey, W as WebApiKey } from './utils-D8fOvyw5.js';
2
- export { NODE_ALGORITHM, decode, decrypt, decryptObj, encode, encrypt, encryptObj, hash, newSecretKey as newNodeSecretKey, newUuid as newNodeUuid, newSecretKey, newUuid, decode as nodeDecode, decrypt as nodeDecrypt, decryptObj as nodeDecryptObj, encode as nodeEncode, encrypt as nodeEncrypt, encryptObj as nodeEncryptObj, hash as nodeHash } from './node.js';
3
- export { WEB_API_ALGORITHM, newSecretKey as newWebSecretKey, newUuid as newWebUuid, decode as webDecode, decrypt as webDecrypt, encode as webEncode, encrypt as webEncrypt, hash as webHash } from './web-api.js';
1
+ export { E as ENCRYPTION_REGEX, N as NODE_ALGORITHM, c as NodeKey, W as WEB_API_ALGORITHM, d as WebApiKey, i as isInEncryptionFormat, a as isInNodeEncryptionFormat, b as isInWebApiEncryptionFormat, p as parseToObj, s as stringifyObj } from './types-C7UlGfO2.js';
2
+ import { createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, generateUuid, hash, isNodeKey } from './node.js';
3
+ import { createSecretKey as createSecretKey$1, decode as decode$1, decrypt as decrypt$1, decryptObj as decryptObj$1, encode as encode$1, encrypt as encrypt$1, encryptObj as encryptObj$1, generateUuid as generateUuid$1, hash as hash$1, isWebApiKey } from './web-api.js';
4
4
  import 'node:crypto';
5
5
  import 'node:buffer';
6
+
7
+ declare const _export$1_createSecretKey: typeof createSecretKey;
8
+ declare const _export$1_decode: typeof decode;
9
+ declare const _export$1_decrypt: typeof decrypt;
10
+ declare const _export$1_decryptObj: typeof decryptObj;
11
+ declare const _export$1_encode: typeof encode;
12
+ declare const _export$1_encrypt: typeof encrypt;
13
+ declare const _export$1_encryptObj: typeof encryptObj;
14
+ declare const _export$1_generateUuid: typeof generateUuid;
15
+ declare const _export$1_hash: typeof hash;
16
+ declare const _export$1_isNodeKey: typeof isNodeKey;
17
+ declare namespace _export$1 {
18
+ export { _export$1_createSecretKey as createSecretKey, _export$1_decode as decode, _export$1_decrypt as decrypt, _export$1_decryptObj as decryptObj, _export$1_encode as encode, _export$1_encrypt as encrypt, _export$1_encryptObj as encryptObj, _export$1_generateUuid as generateUuid, _export$1_hash as hash, _export$1_isNodeKey as isNodeKey };
19
+ }
20
+
21
+ declare const _export_isWebApiKey: typeof isWebApiKey;
22
+ declare namespace _export {
23
+ export { createSecretKey$1 as createSecretKey, decode$1 as decode, decrypt$1 as decrypt, decryptObj$1 as decryptObj, encode$1 as encode, encrypt$1 as encrypt, encryptObj$1 as encryptObj, generateUuid$1 as generateUuid, hash$1 as hash, _export_isWebApiKey as isWebApiKey };
24
+ }
25
+
26
+ export { createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, generateUuid, hash, isNodeKey, _export$1 as node, _export as web };
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- export { NODE_ALGORITHM, decode, decrypt, decryptObj, encode, encrypt, encryptObj, hash, newSecretKey as newNodeSecretKey, newUuid as newNodeUuid, newSecretKey, newUuid, decode as nodeDecode, decrypt as nodeDecrypt, decryptObj as nodeDecryptObj, encode as nodeEncode, encrypt as nodeEncrypt, encryptObj as nodeEncryptObj, hash as nodeHash } from './chunk-MMHTEI3Q.js';
2
- export { WEB_API_ALGORITHM, newSecretKey as newWebSecretKey, newUuid as newWebUuid, decode as webDecode, decrypt as webDecrypt, encode as webEncode, encrypt as webEncrypt, hash as webHash } from './chunk-GYFL6RUD.js';
3
- export { ENCRYPTED_NODE_REGEX, ENCRYPTED_REGEX, ENCRYPTED_WEB_REGEX } from './chunk-72PZBMQR.js';
1
+ export { createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, generateUuid, hash, isNodeKey, export_exports as node } from './chunk-PKIT6YQN.js';
2
+ export { export_exports as web } from './chunk-UYBB4K56.js';
3
+ export { ENCRYPTION_REGEX, NODE_ALGORITHM, WEB_API_ALGORITHM, isInEncryptionFormat, isInNodeEncryptionFormat, isInWebApiEncryptionFormat, parseToObj, stringifyObj } from './chunk-F52DT5C4.js';
4
4
  //# sourceMappingURL=index.js.map
5
5
  //# sourceMappingURL=index.js.map
package/dist/node.cjs CHANGED
@@ -1,57 +1,73 @@
1
1
  'use strict';
2
2
 
3
- var chunkWB7F34SY_cjs = require('./chunk-WB7F34SY.cjs');
4
- var chunkWD5FWRQ4_cjs = require('./chunk-WD5FWRQ4.cjs');
3
+ var chunkRF735UV3_cjs = require('./chunk-RF735UV3.cjs');
4
+ var chunkIMSNCUFU_cjs = require('./chunk-IMSNCUFU.cjs');
5
5
 
6
6
 
7
7
 
8
- Object.defineProperty(exports, "NODE_ALGORITHM", {
8
+ Object.defineProperty(exports, "createSecretKey", {
9
9
  enumerable: true,
10
- get: function () { return chunkWB7F34SY_cjs.NODE_ALGORITHM; }
10
+ get: function () { return chunkRF735UV3_cjs.createSecretKey; }
11
11
  });
12
12
  Object.defineProperty(exports, "decode", {
13
13
  enumerable: true,
14
- get: function () { return chunkWB7F34SY_cjs.decode; }
14
+ get: function () { return chunkRF735UV3_cjs.decode; }
15
15
  });
16
16
  Object.defineProperty(exports, "decrypt", {
17
17
  enumerable: true,
18
- get: function () { return chunkWB7F34SY_cjs.decrypt; }
18
+ get: function () { return chunkRF735UV3_cjs.decrypt; }
19
19
  });
20
20
  Object.defineProperty(exports, "decryptObj", {
21
21
  enumerable: true,
22
- get: function () { return chunkWB7F34SY_cjs.decryptObj; }
22
+ get: function () { return chunkRF735UV3_cjs.decryptObj; }
23
23
  });
24
24
  Object.defineProperty(exports, "encode", {
25
25
  enumerable: true,
26
- get: function () { return chunkWB7F34SY_cjs.encode; }
26
+ get: function () { return chunkRF735UV3_cjs.encode; }
27
27
  });
28
28
  Object.defineProperty(exports, "encrypt", {
29
29
  enumerable: true,
30
- get: function () { return chunkWB7F34SY_cjs.encrypt; }
30
+ get: function () { return chunkRF735UV3_cjs.encrypt; }
31
31
  });
32
32
  Object.defineProperty(exports, "encryptObj", {
33
33
  enumerable: true,
34
- get: function () { return chunkWB7F34SY_cjs.encryptObj; }
34
+ get: function () { return chunkRF735UV3_cjs.encryptObj; }
35
+ });
36
+ Object.defineProperty(exports, "generateUuid", {
37
+ enumerable: true,
38
+ get: function () { return chunkRF735UV3_cjs.generateUuid; }
35
39
  });
36
40
  Object.defineProperty(exports, "hash", {
37
41
  enumerable: true,
38
- get: function () { return chunkWB7F34SY_cjs.hash; }
42
+ get: function () { return chunkRF735UV3_cjs.hash; }
43
+ });
44
+ Object.defineProperty(exports, "isNodeKey", {
45
+ enumerable: true,
46
+ get: function () { return chunkRF735UV3_cjs.isNodeKey; }
47
+ });
48
+ Object.defineProperty(exports, "ENCRYPTION_REGEX", {
49
+ enumerable: true,
50
+ get: function () { return chunkIMSNCUFU_cjs.ENCRYPTION_REGEX; }
51
+ });
52
+ Object.defineProperty(exports, "NODE_ALGORITHM", {
53
+ enumerable: true,
54
+ get: function () { return chunkIMSNCUFU_cjs.NODE_ALGORITHM; }
39
55
  });
40
- Object.defineProperty(exports, "newSecretKey", {
56
+ Object.defineProperty(exports, "isInEncryptionFormat", {
41
57
  enumerable: true,
42
- get: function () { return chunkWB7F34SY_cjs.newSecretKey; }
58
+ get: function () { return chunkIMSNCUFU_cjs.isInEncryptionFormat; }
43
59
  });
44
- Object.defineProperty(exports, "newUuid", {
60
+ Object.defineProperty(exports, "isInNodeEncryptionFormat", {
45
61
  enumerable: true,
46
- get: function () { return chunkWB7F34SY_cjs.newUuid; }
62
+ get: function () { return chunkIMSNCUFU_cjs.isInNodeEncryptionFormat; }
47
63
  });
48
- Object.defineProperty(exports, "ENCRYPTED_NODE_REGEX", {
64
+ Object.defineProperty(exports, "parseToObj", {
49
65
  enumerable: true,
50
- get: function () { return chunkWD5FWRQ4_cjs.ENCRYPTED_NODE_REGEX; }
66
+ get: function () { return chunkIMSNCUFU_cjs.parseToObj; }
51
67
  });
52
- Object.defineProperty(exports, "ENCRYPTED_REGEX", {
68
+ Object.defineProperty(exports, "stringifyObj", {
53
69
  enumerable: true,
54
- get: function () { return chunkWD5FWRQ4_cjs.ENCRYPTED_REGEX; }
70
+ get: function () { return chunkIMSNCUFU_cjs.stringifyObj; }
55
71
  });
56
72
  //# sourceMappingURL=node.cjs.map
57
73
  //# sourceMappingURL=node.cjs.map
package/dist/node.d.cts CHANGED
@@ -1,16 +1,17 @@
1
- import { c as EncodingFormat, R as Result, N as NodeKey } from './utils-D8fOvyw5.cjs';
2
- export { E as ENCRYPTED_NODE_REGEX, a as ENCRYPTED_REGEX } from './utils-D8fOvyw5.cjs';
1
+ import { e as EncodingFormat, R as Result, c as NodeKey } from './types-C7UlGfO2.cjs';
2
+ export { E as ENCRYPTION_REGEX, N as NODE_ALGORITHM, i as isInEncryptionFormat, a as isInNodeEncryptionFormat, p as parseToObj, s as stringifyObj } from './types-C7UlGfO2.cjs';
3
3
  import { Buffer } from 'node:buffer';
4
- import 'node:crypto';
4
+ import nodeCrypto from 'node:crypto';
5
5
 
6
6
  declare function encode(data: string, format?: EncodingFormat): Result<{
7
7
  bytes: Buffer;
8
8
  }>;
9
9
  declare function decode(data: Buffer, format?: EncodingFormat): Result<string>;
10
10
 
11
- declare const NODE_ALGORITHM = "aes-256-gcm";
11
+ declare function generateUuid(): Result<string>;
12
+ declare function isNodeKey(key: unknown): key is nodeCrypto.KeyObject;
12
13
  declare function hash(data: string): Result<string>;
13
- declare function newSecretKey(key: string | NodeKey): Result<{
14
+ declare function createSecretKey(key: string | NodeKey): Result<{
14
15
  secretKey: NodeKey;
15
16
  }>;
16
17
  declare function encrypt(data: string, secretKey: NodeKey): Result<string>;
@@ -20,6 +21,4 @@ declare function decryptObj(encrypted: string, secretKey: NodeKey): Result<{
20
21
  result: Record<string, unknown>;
21
22
  }>;
22
23
 
23
- declare function newUuid(): Result<string>;
24
-
25
- export { NODE_ALGORITHM, NodeKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, hash, newSecretKey, newUuid };
24
+ export { NodeKey, createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, generateUuid, hash, isNodeKey };
package/dist/node.d.ts CHANGED
@@ -1,16 +1,17 @@
1
- import { c as EncodingFormat, R as Result, N as NodeKey } from './utils-D8fOvyw5.js';
2
- export { E as ENCRYPTED_NODE_REGEX, a as ENCRYPTED_REGEX } from './utils-D8fOvyw5.js';
1
+ import { e as EncodingFormat, R as Result, c as NodeKey } from './types-C7UlGfO2.js';
2
+ export { E as ENCRYPTION_REGEX, N as NODE_ALGORITHM, i as isInEncryptionFormat, a as isInNodeEncryptionFormat, p as parseToObj, s as stringifyObj } from './types-C7UlGfO2.js';
3
3
  import { Buffer } from 'node:buffer';
4
- import 'node:crypto';
4
+ import nodeCrypto from 'node:crypto';
5
5
 
6
6
  declare function encode(data: string, format?: EncodingFormat): Result<{
7
7
  bytes: Buffer;
8
8
  }>;
9
9
  declare function decode(data: Buffer, format?: EncodingFormat): Result<string>;
10
10
 
11
- declare const NODE_ALGORITHM = "aes-256-gcm";
11
+ declare function generateUuid(): Result<string>;
12
+ declare function isNodeKey(key: unknown): key is nodeCrypto.KeyObject;
12
13
  declare function hash(data: string): Result<string>;
13
- declare function newSecretKey(key: string | NodeKey): Result<{
14
+ declare function createSecretKey(key: string | NodeKey): Result<{
14
15
  secretKey: NodeKey;
15
16
  }>;
16
17
  declare function encrypt(data: string, secretKey: NodeKey): Result<string>;
@@ -20,6 +21,4 @@ declare function decryptObj(encrypted: string, secretKey: NodeKey): Result<{
20
21
  result: Record<string, unknown>;
21
22
  }>;
22
23
 
23
- declare function newUuid(): Result<string>;
24
-
25
- export { NODE_ALGORITHM, NodeKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, hash, newSecretKey, newUuid };
24
+ export { NodeKey, createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, generateUuid, hash, isNodeKey };
package/dist/node.js CHANGED
@@ -1,4 +1,4 @@
1
- export { NODE_ALGORITHM, decode, decrypt, decryptObj, encode, encrypt, encryptObj, hash, newSecretKey, newUuid } from './chunk-MMHTEI3Q.js';
2
- export { ENCRYPTED_NODE_REGEX, ENCRYPTED_REGEX } from './chunk-72PZBMQR.js';
1
+ export { createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, generateUuid, hash, isNodeKey } from './chunk-PKIT6YQN.js';
2
+ export { ENCRYPTION_REGEX, NODE_ALGORITHM, isInEncryptionFormat, isInNodeEncryptionFormat, parseToObj, stringifyObj } from './chunk-F52DT5C4.js';
3
3
  //# sourceMappingURL=node.js.map
4
4
  //# sourceMappingURL=node.js.map
@@ -0,0 +1,46 @@
1
+ import nodeCrypto, { webcrypto } from 'node:crypto';
2
+
3
+ interface ResultErr {
4
+ readonly message: string;
5
+ readonly description: string;
6
+ }
7
+ type Result<T, E = ResultErr> = T extends object ? ({
8
+ readonly [K in keyof T]: T[K];
9
+ } & {
10
+ readonly success: true;
11
+ readonly error?: undefined;
12
+ }) | ({
13
+ readonly [K in keyof T]?: undefined;
14
+ } & {
15
+ readonly success: false;
16
+ readonly error: E;
17
+ }) : {
18
+ readonly success: true;
19
+ readonly result: T;
20
+ readonly error?: undefined;
21
+ } | {
22
+ readonly success: false;
23
+ readonly error: E;
24
+ readonly result?: undefined;
25
+ };
26
+
27
+ declare const NODE_ALGORITHM = "aes-256-gcm";
28
+ declare const WEB_API_ALGORITHM = "AES-GCM";
29
+ declare const ENCRYPTION_REGEX: Readonly<{
30
+ GENERAL: RegExp;
31
+ NODE: RegExp;
32
+ WEB_API: RegExp;
33
+ }>;
34
+ declare function isInEncryptionFormat(data: string): boolean;
35
+ declare function isInNodeEncryptionFormat(data: string): boolean;
36
+ declare function isInWebApiEncryptionFormat(data: string): boolean;
37
+ declare function stringifyObj(obj: Record<string, unknown>): Result<string>;
38
+ declare function parseToObj(str: string): Result<{
39
+ result: Record<string, unknown>;
40
+ }>;
41
+
42
+ type WebApiKey = webcrypto.CryptoKey;
43
+ type NodeKey = nodeCrypto.KeyObject;
44
+ type EncodingFormat = 'base64' | 'base64url' | 'hex' | 'utf8';
45
+
46
+ export { ENCRYPTION_REGEX as E, NODE_ALGORITHM as N, type Result as R, WEB_API_ALGORITHM as W, isInNodeEncryptionFormat as a, isInWebApiEncryptionFormat as b, type NodeKey as c, type WebApiKey as d, type EncodingFormat as e, isInEncryptionFormat as i, parseToObj as p, stringifyObj as s };
@@ -0,0 +1,46 @@
1
+ import nodeCrypto, { webcrypto } from 'node:crypto';
2
+
3
+ interface ResultErr {
4
+ readonly message: string;
5
+ readonly description: string;
6
+ }
7
+ type Result<T, E = ResultErr> = T extends object ? ({
8
+ readonly [K in keyof T]: T[K];
9
+ } & {
10
+ readonly success: true;
11
+ readonly error?: undefined;
12
+ }) | ({
13
+ readonly [K in keyof T]?: undefined;
14
+ } & {
15
+ readonly success: false;
16
+ readonly error: E;
17
+ }) : {
18
+ readonly success: true;
19
+ readonly result: T;
20
+ readonly error?: undefined;
21
+ } | {
22
+ readonly success: false;
23
+ readonly error: E;
24
+ readonly result?: undefined;
25
+ };
26
+
27
+ declare const NODE_ALGORITHM = "aes-256-gcm";
28
+ declare const WEB_API_ALGORITHM = "AES-GCM";
29
+ declare const ENCRYPTION_REGEX: Readonly<{
30
+ GENERAL: RegExp;
31
+ NODE: RegExp;
32
+ WEB_API: RegExp;
33
+ }>;
34
+ declare function isInEncryptionFormat(data: string): boolean;
35
+ declare function isInNodeEncryptionFormat(data: string): boolean;
36
+ declare function isInWebApiEncryptionFormat(data: string): boolean;
37
+ declare function stringifyObj(obj: Record<string, unknown>): Result<string>;
38
+ declare function parseToObj(str: string): Result<{
39
+ result: Record<string, unknown>;
40
+ }>;
41
+
42
+ type WebApiKey = webcrypto.CryptoKey;
43
+ type NodeKey = nodeCrypto.KeyObject;
44
+ type EncodingFormat = 'base64' | 'base64url' | 'hex' | 'utf8';
45
+
46
+ export { ENCRYPTION_REGEX as E, NODE_ALGORITHM as N, type Result as R, WEB_API_ALGORITHM as W, isInNodeEncryptionFormat as a, isInWebApiEncryptionFormat as b, type NodeKey as c, type WebApiKey as d, type EncodingFormat as e, isInEncryptionFormat as i, parseToObj as p, stringifyObj as s };
package/dist/web-api.cjs CHANGED
@@ -1,57 +1,73 @@
1
1
  'use strict';
2
2
 
3
- var chunkKFZLZJ2J_cjs = require('./chunk-KFZLZJ2J.cjs');
4
- var chunkWD5FWRQ4_cjs = require('./chunk-WD5FWRQ4.cjs');
3
+ var chunk65XPPPAR_cjs = require('./chunk-65XPPPAR.cjs');
4
+ var chunkIMSNCUFU_cjs = require('./chunk-IMSNCUFU.cjs');
5
5
 
6
6
 
7
7
 
8
- Object.defineProperty(exports, "WEB_API_ALGORITHM", {
8
+ Object.defineProperty(exports, "createSecretKey", {
9
9
  enumerable: true,
10
- get: function () { return chunkKFZLZJ2J_cjs.WEB_API_ALGORITHM; }
10
+ get: function () { return chunk65XPPPAR_cjs.createSecretKey; }
11
11
  });
12
12
  Object.defineProperty(exports, "decode", {
13
13
  enumerable: true,
14
- get: function () { return chunkKFZLZJ2J_cjs.decode; }
14
+ get: function () { return chunk65XPPPAR_cjs.decode; }
15
15
  });
16
16
  Object.defineProperty(exports, "decrypt", {
17
17
  enumerable: true,
18
- get: function () { return chunkKFZLZJ2J_cjs.decrypt; }
18
+ get: function () { return chunk65XPPPAR_cjs.decrypt; }
19
19
  });
20
20
  Object.defineProperty(exports, "decryptObj", {
21
21
  enumerable: true,
22
- get: function () { return chunkKFZLZJ2J_cjs.decryptObj; }
22
+ get: function () { return chunk65XPPPAR_cjs.decryptObj; }
23
23
  });
24
24
  Object.defineProperty(exports, "encode", {
25
25
  enumerable: true,
26
- get: function () { return chunkKFZLZJ2J_cjs.encode; }
26
+ get: function () { return chunk65XPPPAR_cjs.encode; }
27
27
  });
28
28
  Object.defineProperty(exports, "encrypt", {
29
29
  enumerable: true,
30
- get: function () { return chunkKFZLZJ2J_cjs.encrypt; }
30
+ get: function () { return chunk65XPPPAR_cjs.encrypt; }
31
31
  });
32
32
  Object.defineProperty(exports, "encryptObj", {
33
33
  enumerable: true,
34
- get: function () { return chunkKFZLZJ2J_cjs.encryptObj; }
34
+ get: function () { return chunk65XPPPAR_cjs.encryptObj; }
35
+ });
36
+ Object.defineProperty(exports, "generateUuid", {
37
+ enumerable: true,
38
+ get: function () { return chunk65XPPPAR_cjs.generateUuid; }
35
39
  });
36
40
  Object.defineProperty(exports, "hash", {
37
41
  enumerable: true,
38
- get: function () { return chunkKFZLZJ2J_cjs.hash; }
42
+ get: function () { return chunk65XPPPAR_cjs.hash; }
43
+ });
44
+ Object.defineProperty(exports, "isWebApiKey", {
45
+ enumerable: true,
46
+ get: function () { return chunk65XPPPAR_cjs.isWebApiKey; }
47
+ });
48
+ Object.defineProperty(exports, "ENCRYPTION_REGEX", {
49
+ enumerable: true,
50
+ get: function () { return chunkIMSNCUFU_cjs.ENCRYPTION_REGEX; }
51
+ });
52
+ Object.defineProperty(exports, "WEB_API_ALGORITHM", {
53
+ enumerable: true,
54
+ get: function () { return chunkIMSNCUFU_cjs.WEB_API_ALGORITHM; }
39
55
  });
40
- Object.defineProperty(exports, "newSecretKey", {
56
+ Object.defineProperty(exports, "isInEncryptionFormat", {
41
57
  enumerable: true,
42
- get: function () { return chunkKFZLZJ2J_cjs.newSecretKey; }
58
+ get: function () { return chunkIMSNCUFU_cjs.isInEncryptionFormat; }
43
59
  });
44
- Object.defineProperty(exports, "newUuid", {
60
+ Object.defineProperty(exports, "isInWebApiEncryptionFormat", {
45
61
  enumerable: true,
46
- get: function () { return chunkKFZLZJ2J_cjs.newUuid; }
62
+ get: function () { return chunkIMSNCUFU_cjs.isInWebApiEncryptionFormat; }
47
63
  });
48
- Object.defineProperty(exports, "ENCRYPTED_REGEX", {
64
+ Object.defineProperty(exports, "parseToObj", {
49
65
  enumerable: true,
50
- get: function () { return chunkWD5FWRQ4_cjs.ENCRYPTED_REGEX; }
66
+ get: function () { return chunkIMSNCUFU_cjs.parseToObj; }
51
67
  });
52
- Object.defineProperty(exports, "ENCRYPTED_WEB_REGEX", {
68
+ Object.defineProperty(exports, "stringifyObj", {
53
69
  enumerable: true,
54
- get: function () { return chunkWD5FWRQ4_cjs.ENCRYPTED_WEB_REGEX; }
70
+ get: function () { return chunkIMSNCUFU_cjs.stringifyObj; }
55
71
  });
56
72
  //# sourceMappingURL=web-api.cjs.map
57
73
  //# sourceMappingURL=web-api.cjs.map
@@ -1,5 +1,5 @@
1
- import { c as EncodingFormat, R as Result, W as WebApiKey } from './utils-D8fOvyw5.cjs';
2
- export { a as ENCRYPTED_REGEX, b as ENCRYPTED_WEB_REGEX } from './utils-D8fOvyw5.cjs';
1
+ import { e as EncodingFormat, R as Result, d as WebApiKey } from './types-C7UlGfO2.cjs';
2
+ export { E as ENCRYPTION_REGEX, W as WEB_API_ALGORITHM, i as isInEncryptionFormat, b as isInWebApiEncryptionFormat, p as parseToObj, s as stringifyObj } from './types-C7UlGfO2.cjs';
3
3
  import 'node:crypto';
4
4
 
5
5
  declare function encode(data: string, format?: EncodingFormat): Result<{
@@ -7,9 +7,10 @@ declare function encode(data: string, format?: EncodingFormat): Result<{
7
7
  }>;
8
8
  declare function decode(data: ArrayBuffer | Uint8Array, format?: EncodingFormat): Result<string>;
9
9
 
10
- declare const WEB_API_ALGORITHM = "AES-GCM";
10
+ declare function generateUuid(): Result<string>;
11
+ declare function isWebApiKey(key: unknown): key is WebApiKey;
11
12
  declare function hash(data: string): Promise<Result<string>>;
12
- declare function newSecretKey(key: string | WebApiKey): Promise<Result<{
13
+ declare function createSecretKey(key: string | WebApiKey): Promise<Result<{
13
14
  secretKey: WebApiKey;
14
15
  }>>;
15
16
  declare function encrypt(data: string, secretKey: WebApiKey): Promise<Result<string>>;
@@ -19,6 +20,4 @@ declare function decryptObj(encrypted: string, secretKey: WebApiKey): Promise<Re
19
20
  result: Record<string, unknown>;
20
21
  }>>;
21
22
 
22
- declare function newUuid(): Result<string>;
23
-
24
- export { WEB_API_ALGORITHM, WebApiKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, hash, newSecretKey, newUuid };
23
+ export { WebApiKey, createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, generateUuid, hash, isWebApiKey };
package/dist/web-api.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { c as EncodingFormat, R as Result, W as WebApiKey } from './utils-D8fOvyw5.js';
2
- export { a as ENCRYPTED_REGEX, b as ENCRYPTED_WEB_REGEX } from './utils-D8fOvyw5.js';
1
+ import { e as EncodingFormat, R as Result, d as WebApiKey } from './types-C7UlGfO2.js';
2
+ export { E as ENCRYPTION_REGEX, W as WEB_API_ALGORITHM, i as isInEncryptionFormat, b as isInWebApiEncryptionFormat, p as parseToObj, s as stringifyObj } from './types-C7UlGfO2.js';
3
3
  import 'node:crypto';
4
4
 
5
5
  declare function encode(data: string, format?: EncodingFormat): Result<{
@@ -7,9 +7,10 @@ declare function encode(data: string, format?: EncodingFormat): Result<{
7
7
  }>;
8
8
  declare function decode(data: ArrayBuffer | Uint8Array, format?: EncodingFormat): Result<string>;
9
9
 
10
- declare const WEB_API_ALGORITHM = "AES-GCM";
10
+ declare function generateUuid(): Result<string>;
11
+ declare function isWebApiKey(key: unknown): key is WebApiKey;
11
12
  declare function hash(data: string): Promise<Result<string>>;
12
- declare function newSecretKey(key: string | WebApiKey): Promise<Result<{
13
+ declare function createSecretKey(key: string | WebApiKey): Promise<Result<{
13
14
  secretKey: WebApiKey;
14
15
  }>>;
15
16
  declare function encrypt(data: string, secretKey: WebApiKey): Promise<Result<string>>;
@@ -19,6 +20,4 @@ declare function decryptObj(encrypted: string, secretKey: WebApiKey): Promise<Re
19
20
  result: Record<string, unknown>;
20
21
  }>>;
21
22
 
22
- declare function newUuid(): Result<string>;
23
-
24
- export { WEB_API_ALGORITHM, WebApiKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, hash, newSecretKey, newUuid };
23
+ export { WebApiKey, createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, generateUuid, hash, isWebApiKey };
package/dist/web-api.js CHANGED
@@ -1,4 +1,4 @@
1
- export { WEB_API_ALGORITHM, decode, decrypt, decryptObj, encode, encrypt, encryptObj, hash, newSecretKey, newUuid } from './chunk-GYFL6RUD.js';
2
- export { ENCRYPTED_REGEX, ENCRYPTED_WEB_REGEX } from './chunk-72PZBMQR.js';
1
+ export { createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, generateUuid, hash, isWebApiKey } from './chunk-UYBB4K56.js';
2
+ export { ENCRYPTION_REGEX, WEB_API_ALGORITHM, isInEncryptionFormat, isInWebApiEncryptionFormat, parseToObj, stringifyObj } from './chunk-F52DT5C4.js';
3
3
  //# sourceMappingURL=web-api.js.map
4
4
  //# sourceMappingURL=web-api.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cipher-kit",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "description": "🔐 Secure, Lightweight, and Cross-Platform Encryption & Decryption for Web, Node.js, Deno, and Bun",
5
5
  "homepage": "https://github.com/WolfieLeader/npm/tree/main/packages/cipher-kit#readme",
6
6
  "repository": {
@@ -1,48 +0,0 @@
1
- // src/error.ts
2
- function $ok(result) {
3
- if ($isObj(result)) return { success: true, ...result };
4
- return { success: true, result };
5
- }
6
- function $err(typeOrErr) {
7
- return { success: false, error: typeOrErr };
8
- }
9
- function $stringifyError(error) {
10
- if (error instanceof Error) return error.message;
11
- if (typeof error === "string") return error;
12
- return String(error);
13
- }
14
-
15
- // src/utils.ts
16
- var ENCRYPTED_REGEX = /^(?:[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+(?:\.[A-Za-z0-9_-]+)?\.)$/;
17
- var ENCRYPTED_NODE_REGEX = /^([A-Za-z0-9_-]+)\.([A-Za-z0-9_-]+)\.([A-Za-z0-9_-]+)\.$/;
18
- var ENCRYPTED_WEB_REGEX = /^([A-Za-z0-9_-]+)\.([A-Za-z0-9_-]+)\.$/;
19
- function $isStr(value, min = 0) {
20
- return (value !== null || value !== void 0) && typeof value === "string" && value.trim().length >= min;
21
- }
22
- function $isObj(value) {
23
- return typeof value === "object" && value !== null && value !== void 0 && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);
24
- }
25
- function $stringifyObj(obj) {
26
- if (!$isObj(obj)) return $err({ message: "Invalid object", description: "Input is not a plain object" });
27
- try {
28
- return $ok(JSON.stringify(obj));
29
- } catch (error) {
30
- return $err({ message: "Stringify error", description: $stringifyError(error) });
31
- }
32
- }
33
- function $parseToObj(str) {
34
- if (!$isStr(str)) return $err({ message: "Invalid input", description: "Input is not a valid string" });
35
- try {
36
- const obj = JSON.parse(str);
37
- if (!$isObj(obj)) {
38
- return $err({ message: "Invalid object format", description: "Parsed data is not a plain object" });
39
- }
40
- return $ok({ result: obj });
41
- } catch (error) {
42
- return $err({ message: "Invalid format", description: $stringifyError(error) });
43
- }
44
- }
45
-
46
- export { $err, $isStr, $ok, $parseToObj, $stringifyError, $stringifyObj, ENCRYPTED_NODE_REGEX, ENCRYPTED_REGEX, ENCRYPTED_WEB_REGEX };
47
- //# sourceMappingURL=chunk-72PZBMQR.js.map
48
- //# sourceMappingURL=chunk-72PZBMQR.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/error.ts","../src/utils.ts"],"names":[],"mappings":";AAeO,SAAS,IAAO,MAAA,EAAuB;AAC5C,EAAA,IAAI,MAAA,CAAO,MAAM,CAAA,EAAG,OAAO,EAAE,OAAA,EAAS,IAAA,EAAM,GAAI,MAAA,EAAsB;AACtE,EAAA,OAAO,EAAE,OAAA,EAAS,IAAA,EAAM,MAAA,EAAO;AACjC;AAIO,SAAS,KAAK,SAAA,EAA2F;AAC9G,EAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,SAAA,EAAU;AAC5C;AAEO,SAAS,gBAAgB,KAAA,EAAwB;AACtD,EAAA,IAAI,KAAA,YAAiB,KAAA,EAAO,OAAO,KAAA,CAAM,OAAA;AACzC,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AACtC,EAAA,OAAO,OAAO,KAAK,CAAA;AACrB;;;AC5BO,IAAM,eAAA,GAAkB;AACxB,IAAM,oBAAA,GAAuB;AAC7B,IAAM,mBAAA,GAAsB;AAE5B,SAAS,MAAA,CAAO,KAAA,EAAgB,GAAA,GAAM,CAAA,EAAoB;AAC/D,EAAA,OAAA,CAAQ,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,KAAc,OAAO,UAAU,QAAA,IAAY,KAAA,CAAM,IAAA,EAAK,CAAE,MAAA,IAAU,GAAA;AACxG;AAEO,SAAS,OAAO,KAAA,EAAkD;AACvE,EAAA,OACE,OAAO,KAAA,KAAU,QAAA,IACjB,KAAA,KAAU,IAAA,IACV,UAAU,MAAA,KACT,MAAA,CAAO,cAAA,CAAe,KAAK,MAAM,MAAA,CAAO,SAAA,IAAa,MAAA,CAAO,cAAA,CAAe,KAAK,CAAA,KAAM,IAAA,CAAA;AAE3F;AAEO,SAAS,cAAc,GAAA,EAA8C;AAC1E,EAAA,IAAI,CAAC,MAAA,CAAO,GAAG,CAAA,EAAG,OAAO,IAAA,CAAK,EAAE,OAAA,EAAS,gBAAA,EAAkB,WAAA,EAAa,6BAAA,EAA+B,CAAA;AAEvG,EAAA,IAAI;AACF,IAAA,OAAO,GAAA,CAAI,IAAA,CAAK,SAAA,CAAU,GAAG,CAAC,CAAA;AAAA,EAChC,SAAS,KAAA,EAAO;AACd,IAAA,OAAO,IAAA,CAAK,EAAE,OAAA,EAAS,iBAAA,EAAmB,aAAa,eAAA,CAAgB,KAAK,GAAG,CAAA;AAAA,EACjF;AACF;AAEO,SAAS,YAAY,GAAA,EAA0D;AACpF,EAAA,IAAI,CAAC,MAAA,CAAO,GAAG,CAAA,EAAG,OAAO,IAAA,CAAK,EAAE,OAAA,EAAS,eAAA,EAAiB,WAAA,EAAa,6BAAA,EAA+B,CAAA;AAEtG,EAAA,IAAI;AACF,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC1B,IAAA,IAAI,CAAC,MAAA,CAAO,GAAG,CAAA,EAAG;AAChB,MAAA,OAAO,KAAK,EAAE,OAAA,EAAS,uBAAA,EAAyB,WAAA,EAAa,qCAAqC,CAAA;AAAA,IACpG;AAEA,IAAA,OAAO,GAAA,CAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA;AAAA,EAC5B,SAAS,KAAA,EAAO;AACd,IAAA,OAAO,IAAA,CAAK,EAAE,OAAA,EAAS,gBAAA,EAAkB,aAAa,eAAA,CAAgB,KAAK,GAAG,CAAA;AAAA,EAChF;AACF","file":"chunk-72PZBMQR.js","sourcesContent":["import { $isObj } from './utils';\r\n\r\nexport interface ResultErr {\r\n readonly message: string;\r\n readonly description: string;\r\n}\r\n\r\nexport type Result<T, E = ResultErr> = T extends object\r\n ?\r\n | ({ readonly [K in keyof T]: T[K] } & { readonly success: true; readonly error?: undefined })\r\n | ({ readonly [K in keyof T]?: undefined } & { readonly success: false; readonly error: E })\r\n :\r\n | { readonly success: true; readonly result: T; readonly error?: undefined }\r\n | { readonly success: false; readonly error: E; readonly result?: undefined };\r\n\r\nexport function $ok<T>(result?: T): Result<T> {\r\n if ($isObj(result)) return { success: true, ...(result as T & object) } as Result<T>;\r\n return { success: true, result } as Result<T>;\r\n}\r\n\r\nexport function $err(typeOrErr: { message: string; description: string }): Result<never, ResultErr>;\r\nexport function $err(typeOrErr: ResultErr): Result<never, ResultErr>;\r\nexport function $err(typeOrErr: { message: string; description: string } | ResultErr): Result<never, ResultErr> {\r\n return { success: false, error: typeOrErr } as Result<never, ResultErr>;\r\n}\r\n\r\nexport function $stringifyError(error: unknown): string {\r\n if (error instanceof Error) return error.message;\r\n if (typeof error === 'string') return error;\r\n return String(error);\r\n}\r\n","import { $err, $ok, $stringifyError, type Result } from './error';\r\n\r\nexport const ENCRYPTED_REGEX = /^(?:[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+(?:\\.[A-Za-z0-9_-]+)?\\.)$/;\r\nexport const ENCRYPTED_NODE_REGEX = /^([A-Za-z0-9_-]+)\\.([A-Za-z0-9_-]+)\\.([A-Za-z0-9_-]+)\\.$/;\r\nexport const ENCRYPTED_WEB_REGEX = /^([A-Za-z0-9_-]+)\\.([A-Za-z0-9_-]+)\\.$/;\r\n\r\nexport function $isStr(value: unknown, min = 0): value is string {\r\n return (value !== null || value !== undefined) && typeof value === 'string' && value.trim().length >= min;\r\n}\r\n\r\nexport function $isObj(value: unknown): value is Record<string, unknown> {\r\n return (\r\n typeof value === 'object' &&\r\n value !== null &&\r\n value !== undefined &&\r\n (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null)\r\n );\r\n}\r\n\r\nexport function $stringifyObj(obj: Record<string, unknown>): Result<string> {\r\n if (!$isObj(obj)) return $err({ message: 'Invalid object', description: 'Input is not a plain object' });\r\n\r\n try {\r\n return $ok(JSON.stringify(obj));\r\n } catch (error) {\r\n return $err({ message: 'Stringify error', description: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport function $parseToObj(str: string): Result<{ result: Record<string, unknown> }> {\r\n if (!$isStr(str)) return $err({ message: 'Invalid input', description: 'Input is not a valid string' });\r\n\r\n try {\r\n const obj = JSON.parse(str);\r\n if (!$isObj(obj)) {\r\n return $err({ message: 'Invalid object format', description: 'Parsed data is not a plain object' });\r\n }\r\n\r\n return $ok({ result: obj });\r\n } catch (error) {\r\n return $err({ message: 'Invalid format', description: $stringifyError(error) });\r\n }\r\n}\r\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/web/encode.ts","../src/web/utils.ts","../src/web/encrypt.ts"],"names":["error"],"mappings":"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","file":"chunk-GYFL6RUD.js","sourcesContent":["import { $err, $ok, $stringifyError, type Result } from '~/error';\r\nimport type { EncodingFormat } from '~/types';\r\n\r\nconst textEncoder = new TextEncoder();\r\nconst textDecoder = new TextDecoder();\r\n\r\nexport function encode(data: string, format: EncodingFormat = 'utf8'): Result<{ bytes: Uint8Array }> {\r\n try {\r\n switch (format) {\r\n case 'base64':\r\n return $ok({ bytes: $fromBase64(data) });\r\n case 'base64url':\r\n return $ok({ bytes: $fromBase64Url(data) });\r\n case 'hex':\r\n return $ok({ bytes: $fromHex(data) });\r\n case 'utf8':\r\n return $ok({ bytes: textEncoder.encode(data) });\r\n default:\r\n return $err({\r\n message: `Unsupported encode format: ${format}`,\r\n description: 'Use base64, base64url, hex, or utf8',\r\n });\r\n }\r\n } catch (error) {\r\n return $err({ message: 'Failed to encode data', description: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport function decode(data: ArrayBuffer | Uint8Array, format: EncodingFormat = 'utf8'): Result<string> {\r\n try {\r\n const bytes = data instanceof Uint8Array ? data : new Uint8Array(data);\r\n switch (format) {\r\n case 'base64':\r\n return $ok($toBase64(bytes));\r\n case 'base64url':\r\n return $ok($toBase64Url(bytes));\r\n case 'hex':\r\n return $ok($toHex(bytes));\r\n case 'utf8':\r\n return $ok(textDecoder.decode(bytes));\r\n default:\r\n return $err({\r\n message: `Unsupported decode format: ${format}`,\r\n description: 'Use base64, base64url, hex, or utf8',\r\n });\r\n }\r\n } catch (error) {\r\n return $err({ message: 'Failed to decode data', description: $stringifyError(error) });\r\n }\r\n}\r\n\r\nfunction $toBase64(bytes: Uint8Array): string {\r\n let binary = '';\r\n const chunkSize = 0x8000; // 32KB per chunk\r\n for (let i = 0; i < bytes.length; i += chunkSize) {\r\n binary += String.fromCharCode(...bytes.subarray(i, i + chunkSize));\r\n }\r\n return btoa(binary);\r\n}\r\n\r\nfunction $fromBase64(data: string): Uint8Array {\r\n const binary = atob(data);\r\n const len = binary.length;\r\n const bytes = new Uint8Array(len);\r\n for (let i = 0; i < len; i++) {\r\n bytes[i] = binary.charCodeAt(i);\r\n }\r\n return bytes;\r\n}\r\n\r\nfunction $toBase64Url(bytes: Uint8Array): string {\r\n return $toBase64(bytes).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\r\n}\r\n\r\nfunction $fromBase64Url(data: string): Uint8Array {\r\n let b64 = data.replace(/-/g, '+').replace(/_/g, '/');\r\n const padLen = (4 - (b64.length % 4)) % 4;\r\n b64 += '='.repeat(padLen);\r\n return $fromBase64(b64);\r\n}\r\n\r\nfunction $toHex(bytes: Uint8Array): string {\r\n return Array.from(bytes)\r\n .map((b) => b.toString(16).padStart(2, '0'))\r\n .join('');\r\n}\r\n\r\nfunction $fromHex(data: string): Uint8Array {\r\n const clean = data.startsWith('0x') ? data.slice(2) : data;\r\n if (clean.length % 2 !== 0) throw new Error('Invalid hex string');\r\n const out = new Uint8Array(clean.length / 2);\r\n for (let i = 0; i < out.length; i++) {\r\n out[i] = Number.parseInt(clean.slice(i * 2, i * 2 + 2), 16);\r\n }\r\n return out;\r\n}\r\n","import { $err, $ok, $stringifyError, type Result } from '~/error';\r\nimport type { WebApiKey } from '~/types';\r\n\r\nexport const ENCRYPTED_WEB_API_REGEX = /^([A-Za-z0-9_-]+)\\.([A-Za-z0-9_-]+)\\.$/;\r\n\r\nexport function newUuid(): Result<string> {\r\n try {\r\n return $ok(crypto.randomUUID());\r\n } catch (error) {\r\n return $err({ message: 'Failed to generate UUID with Crypto Web API', description: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport function $isWebApiKey(key: unknown): key is WebApiKey {\r\n return (\r\n key !== null &&\r\n key !== undefined &&\r\n typeof key === 'object' &&\r\n 'type' in key &&\r\n typeof key.type === 'string' &&\r\n 'algorithm' in key &&\r\n typeof key.algorithm === 'object' &&\r\n 'extractable' in key &&\r\n typeof key.extractable === 'boolean' &&\r\n 'usages' in key &&\r\n Array.isArray(key.usages) &&\r\n key.usages.every((usage) => typeof usage === 'string')\r\n );\r\n}\r\n","import { $err, $ok, $stringifyError, type Result } from '~/error';\r\nimport type { WebApiKey } from '~/types';\r\nimport { $isStr, $parseToObj, $stringifyObj, ENCRYPTED_WEB_REGEX } from '~/utils';\r\nimport { decode, encode } from './encode';\r\nimport { $isWebApiKey } from './utils';\r\n\r\nexport const WEB_API_ALGORITHM = 'AES-GCM';\r\n\r\nexport async function hash(data: string): Promise<Result<string>> {\r\n if (!$isStr(data)) {\r\n return $err({ message: 'Empty data for hashing', description: 'Data must be a non-empty string' });\r\n }\r\n\r\n const { bytes, error } = encode(data, 'utf8');\r\n if (error) return $err(error);\r\n\r\n try {\r\n const hashed = await crypto.subtle.digest('SHA-256', bytes);\r\n return decode(hashed, 'base64url');\r\n } catch (error) {\r\n return $err({ message: 'Failed to hash data with Crypto Web API', description: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport async function newSecretKey(key: string | WebApiKey): Promise<Result<{ secretKey: WebApiKey }>> {\r\n if (typeof key === 'string') {\r\n if (!$isStr(key, 1)) return $err({ message: 'Empty key for Crypto Web API', description: 'Invalid secret key' });\r\n\r\n const { bytes, error } = encode(key, 'utf8');\r\n if (error) return $err(error);\r\n\r\n try {\r\n const hashedKey = await crypto.subtle.digest('SHA-256', bytes);\r\n const secretKey = await crypto.subtle.importKey('raw', hashedKey, { name: WEB_API_ALGORITHM }, true, [\r\n 'encrypt',\r\n 'decrypt',\r\n ]);\r\n return $ok({ secretKey });\r\n } catch (error) {\r\n return $err({ message: 'Failed to create secret key with Crypto Web API', description: $stringifyError(error) });\r\n }\r\n }\r\n\r\n if (!$isWebApiKey(key)) return $err({ message: 'Invalid secret key', description: 'Expected a webcrypto.CryptoKey' });\r\n return $ok({ secretKey: key });\r\n}\r\n\r\nexport async function encrypt(data: string, secretKey: WebApiKey): Promise<Result<string>> {\r\n if (!$isStr(data)) {\r\n return $err({ message: 'Empty data for encryption', description: 'Data must be a non-empty string' });\r\n }\r\n\r\n if (!$isWebApiKey(secretKey)) {\r\n return $err({ message: 'Invalid encryption key', description: 'Expected a webcrypto.CryptoKey' });\r\n }\r\n\r\n const { bytes, error } = encode(data, 'utf8');\r\n if (error) return $err(error);\r\n\r\n try {\r\n const iv = crypto.getRandomValues(new Uint8Array(12));\r\n const encrypted = await crypto.subtle.encrypt({ name: WEB_API_ALGORITHM, iv: iv }, secretKey, bytes);\r\n\r\n const { result: decodedIv, error: ivError } = decode(iv, 'base64url');\r\n const { result: decodedEncrypted, error: encryptedError } = decode(encrypted, 'base64url');\r\n\r\n if (ivError || encryptedError) {\r\n return $err({ message: 'Failed to encode IV or encrypted data', description: 'Encoding error' });\r\n }\r\n\r\n return $ok(`${decodedIv}.${decodedEncrypted}.`);\r\n } catch (error) {\r\n return $err({ message: 'Failed to encrypt data with Crypto Web API', description: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport async function decrypt(encrypted: string, secretKey: WebApiKey): Promise<Result<string>> {\r\n if (ENCRYPTED_WEB_REGEX.test(encrypted) === false) {\r\n return $err({\r\n message: 'Invalid encrypted data format',\r\n description: 'Data must be in the format \"iv.encryptedWithTag.\"',\r\n });\r\n }\r\n\r\n const [iv, encryptedWithTag] = encrypted.split('.', 3);\r\n if (!$isStr(iv, 1) || !$isStr(encryptedWithTag, 1)) {\r\n return $err({\r\n message: 'Invalid parameters for decryption',\r\n description: 'IV and encrypted data must be non-empty strings',\r\n });\r\n }\r\n\r\n if (!$isWebApiKey(secretKey)) {\r\n return $err({ message: 'Invalid decryption key', description: 'Expected a webcrypto.CryptoKey' });\r\n }\r\n\r\n const { bytes: ivBytes, error: ivError } = encode(iv, 'base64url');\r\n const { bytes: encryptedBytes, error: encryptedError } = encode(encryptedWithTag, 'base64url');\r\n if (ivError || encryptedError) {\r\n return $err({ message: 'Failed to encode IV or encrypted data', description: 'Encoding error' });\r\n }\r\n\r\n try {\r\n const decrypted = await crypto.subtle.decrypt({ name: WEB_API_ALGORITHM, iv: ivBytes }, secretKey, encryptedBytes);\r\n\r\n return decode(decrypted, 'utf8');\r\n } catch (error) {\r\n return $err({ message: 'Failed to decrypt data with Crypto Web API', description: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport async function encryptObj(data: Record<string, unknown>, secretKey: WebApiKey): Promise<Result<string>> {\r\n const { result, error } = $stringifyObj(data);\r\n if (error) return $err(error);\r\n return await encrypt(result, secretKey);\r\n}\r\n\r\nexport async function decryptObj(\r\n encrypted: string,\r\n secretKey: WebApiKey,\r\n): Promise<Result<{ result: Record<string, unknown> }>> {\r\n const { result, error } = await decrypt(encrypted, secretKey);\r\n if (error) return $err(error);\r\n return $parseToObj(result);\r\n}\r\n"]}