cipher-kit 0.0.7 → 0.0.9

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/node.cjs CHANGED
@@ -1,73 +1,73 @@
1
1
  'use strict';
2
2
 
3
- var chunkRF735UV3_cjs = require('./chunk-RF735UV3.cjs');
4
- var chunkIMSNCUFU_cjs = require('./chunk-IMSNCUFU.cjs');
3
+ var chunkKLCBAR7C_cjs = require('./chunk-KLCBAR7C.cjs');
4
+ var chunkM5QWZAR4_cjs = require('./chunk-M5QWZAR4.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "createSecretKey", {
9
9
  enumerable: true,
10
- get: function () { return chunkRF735UV3_cjs.createSecretKey; }
10
+ get: function () { return chunkKLCBAR7C_cjs.createSecretKey; }
11
11
  });
12
12
  Object.defineProperty(exports, "decode", {
13
13
  enumerable: true,
14
- get: function () { return chunkRF735UV3_cjs.decode; }
14
+ get: function () { return chunkKLCBAR7C_cjs.decode; }
15
15
  });
16
16
  Object.defineProperty(exports, "decrypt", {
17
17
  enumerable: true,
18
- get: function () { return chunkRF735UV3_cjs.decrypt; }
18
+ get: function () { return chunkKLCBAR7C_cjs.decrypt; }
19
19
  });
20
20
  Object.defineProperty(exports, "decryptObj", {
21
21
  enumerable: true,
22
- get: function () { return chunkRF735UV3_cjs.decryptObj; }
22
+ get: function () { return chunkKLCBAR7C_cjs.decryptObj; }
23
23
  });
24
24
  Object.defineProperty(exports, "encode", {
25
25
  enumerable: true,
26
- get: function () { return chunkRF735UV3_cjs.encode; }
26
+ get: function () { return chunkKLCBAR7C_cjs.encode; }
27
27
  });
28
28
  Object.defineProperty(exports, "encrypt", {
29
29
  enumerable: true,
30
- get: function () { return chunkRF735UV3_cjs.encrypt; }
30
+ get: function () { return chunkKLCBAR7C_cjs.encrypt; }
31
31
  });
32
32
  Object.defineProperty(exports, "encryptObj", {
33
33
  enumerable: true,
34
- get: function () { return chunkRF735UV3_cjs.encryptObj; }
34
+ get: function () { return chunkKLCBAR7C_cjs.encryptObj; }
35
35
  });
36
36
  Object.defineProperty(exports, "generateUuid", {
37
37
  enumerable: true,
38
- get: function () { return chunkRF735UV3_cjs.generateUuid; }
38
+ get: function () { return chunkKLCBAR7C_cjs.generateUuid; }
39
39
  });
40
40
  Object.defineProperty(exports, "hash", {
41
41
  enumerable: true,
42
- get: function () { return chunkRF735UV3_cjs.hash; }
43
- });
44
- Object.defineProperty(exports, "isNodeKey", {
45
- enumerable: true,
46
- get: function () { return chunkRF735UV3_cjs.isNodeKey; }
42
+ get: function () { return chunkKLCBAR7C_cjs.hash; }
47
43
  });
48
44
  Object.defineProperty(exports, "ENCRYPTION_REGEX", {
49
45
  enumerable: true,
50
- get: function () { return chunkIMSNCUFU_cjs.ENCRYPTION_REGEX; }
46
+ get: function () { return chunkM5QWZAR4_cjs.ENCRYPTION_REGEX; }
51
47
  });
52
48
  Object.defineProperty(exports, "NODE_ALGORITHM", {
53
49
  enumerable: true,
54
- get: function () { return chunkIMSNCUFU_cjs.NODE_ALGORITHM; }
50
+ get: function () { return chunkM5QWZAR4_cjs.NODE_ALGORITHM; }
55
51
  });
56
52
  Object.defineProperty(exports, "isInEncryptionFormat", {
57
53
  enumerable: true,
58
- get: function () { return chunkIMSNCUFU_cjs.isInEncryptionFormat; }
54
+ get: function () { return chunkM5QWZAR4_cjs.isInEncryptionFormat; }
59
55
  });
60
56
  Object.defineProperty(exports, "isInNodeEncryptionFormat", {
61
57
  enumerable: true,
62
- get: function () { return chunkIMSNCUFU_cjs.isInNodeEncryptionFormat; }
58
+ get: function () { return chunkM5QWZAR4_cjs.isInNodeEncryptionFormat; }
59
+ });
60
+ Object.defineProperty(exports, "isNodeKey", {
61
+ enumerable: true,
62
+ get: function () { return chunkM5QWZAR4_cjs.isNodeKey; }
63
63
  });
64
64
  Object.defineProperty(exports, "parseToObj", {
65
65
  enumerable: true,
66
- get: function () { return chunkIMSNCUFU_cjs.parseToObj; }
66
+ get: function () { return chunkM5QWZAR4_cjs.parseToObj; }
67
67
  });
68
68
  Object.defineProperty(exports, "stringifyObj", {
69
69
  enumerable: true,
70
- get: function () { return chunkIMSNCUFU_cjs.stringifyObj; }
70
+ get: function () { return chunkM5QWZAR4_cjs.stringifyObj; }
71
71
  });
72
72
  //# sourceMappingURL=node.cjs.map
73
73
  //# sourceMappingURL=node.cjs.map
package/dist/node.d.cts CHANGED
@@ -1,7 +1,7 @@
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';
1
+ import { g as EncodingFormat, R as Result, e as NodeKey } from './utils-Bryp07ny.cjs';
2
+ export { E as ENCRYPTION_REGEX, N as NODE_ALGORITHM, i as isInEncryptionFormat, a as isInNodeEncryptionFormat, c as isNodeKey, p as parseToObj, s as stringifyObj } from './utils-Bryp07ny.cjs';
3
3
  import { Buffer } from 'node:buffer';
4
- import nodeCrypto from 'node:crypto';
4
+ import 'node:crypto';
5
5
 
6
6
  declare function encode(data: string, format?: EncodingFormat): Result<{
7
7
  bytes: Buffer;
@@ -9,7 +9,6 @@ declare function encode(data: string, format?: EncodingFormat): Result<{
9
9
  declare function decode(data: Buffer, format?: EncodingFormat): Result<string>;
10
10
 
11
11
  declare function generateUuid(): Result<string>;
12
- declare function isNodeKey(key: unknown): key is nodeCrypto.KeyObject;
13
12
  declare function hash(data: string): Result<string>;
14
13
  declare function createSecretKey(key: string | NodeKey): Result<{
15
14
  secretKey: NodeKey;
@@ -21,4 +20,4 @@ declare function decryptObj(encrypted: string, secretKey: NodeKey): Result<{
21
20
  result: Record<string, unknown>;
22
21
  }>;
23
22
 
24
- export { NodeKey, createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, generateUuid, hash, isNodeKey };
23
+ export { NodeKey, createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, generateUuid, hash };
package/dist/node.d.ts CHANGED
@@ -1,7 +1,7 @@
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';
1
+ import { g as EncodingFormat, R as Result, e as NodeKey } from './utils-Bryp07ny.js';
2
+ export { E as ENCRYPTION_REGEX, N as NODE_ALGORITHM, i as isInEncryptionFormat, a as isInNodeEncryptionFormat, c as isNodeKey, p as parseToObj, s as stringifyObj } from './utils-Bryp07ny.js';
3
3
  import { Buffer } from 'node:buffer';
4
- import nodeCrypto from 'node:crypto';
4
+ import 'node:crypto';
5
5
 
6
6
  declare function encode(data: string, format?: EncodingFormat): Result<{
7
7
  bytes: Buffer;
@@ -9,7 +9,6 @@ declare function encode(data: string, format?: EncodingFormat): Result<{
9
9
  declare function decode(data: Buffer, format?: EncodingFormat): Result<string>;
10
10
 
11
11
  declare function generateUuid(): Result<string>;
12
- declare function isNodeKey(key: unknown): key is nodeCrypto.KeyObject;
13
12
  declare function hash(data: string): Result<string>;
14
13
  declare function createSecretKey(key: string | NodeKey): Result<{
15
14
  secretKey: NodeKey;
@@ -21,4 +20,4 @@ declare function decryptObj(encrypted: string, secretKey: NodeKey): Result<{
21
20
  result: Record<string, unknown>;
22
21
  }>;
23
22
 
24
- export { NodeKey, createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, generateUuid, hash, isNodeKey };
23
+ export { NodeKey, createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, generateUuid, hash };
package/dist/node.js CHANGED
@@ -1,4 +1,4 @@
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';
1
+ export { createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, generateUuid, hash } from './chunk-GOCDVHG7.js';
2
+ export { ENCRYPTION_REGEX, NODE_ALGORITHM, isInEncryptionFormat, isInNodeEncryptionFormat, isNodeKey, parseToObj, stringifyObj } from './chunk-LO5ITHDI.js';
3
3
  //# sourceMappingURL=node.js.map
4
4
  //# sourceMappingURL=node.js.map
@@ -1,5 +1,9 @@
1
1
  import nodeCrypto, { webcrypto } from 'node:crypto';
2
2
 
3
+ type WebApiKey = webcrypto.CryptoKey;
4
+ type NodeKey = nodeCrypto.KeyObject;
5
+ type EncodingFormat = 'base64' | 'base64url' | 'hex' | 'utf8';
6
+
3
7
  interface ResultErr {
4
8
  readonly message: string;
5
9
  readonly description: string;
@@ -34,13 +38,11 @@ declare const ENCRYPTION_REGEX: Readonly<{
34
38
  declare function isInEncryptionFormat(data: string): boolean;
35
39
  declare function isInNodeEncryptionFormat(data: string): boolean;
36
40
  declare function isInWebApiEncryptionFormat(data: string): boolean;
41
+ declare function isWebApiKey(key: unknown): key is WebApiKey;
42
+ declare function isNodeKey(key: unknown): key is nodeCrypto.KeyObject;
37
43
  declare function stringifyObj(obj: Record<string, unknown>): Result<string>;
38
44
  declare function parseToObj(str: string): Result<{
39
45
  result: Record<string, unknown>;
40
46
  }>;
41
47
 
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 };
48
+ export { ENCRYPTION_REGEX as E, NODE_ALGORITHM as N, type Result as R, WEB_API_ALGORITHM as W, isInNodeEncryptionFormat as a, isInWebApiEncryptionFormat as b, isNodeKey as c, isWebApiKey as d, type NodeKey as e, type WebApiKey as f, type EncodingFormat as g, isInEncryptionFormat as i, parseToObj as p, stringifyObj as s };
@@ -1,5 +1,9 @@
1
1
  import nodeCrypto, { webcrypto } from 'node:crypto';
2
2
 
3
+ type WebApiKey = webcrypto.CryptoKey;
4
+ type NodeKey = nodeCrypto.KeyObject;
5
+ type EncodingFormat = 'base64' | 'base64url' | 'hex' | 'utf8';
6
+
3
7
  interface ResultErr {
4
8
  readonly message: string;
5
9
  readonly description: string;
@@ -34,13 +38,11 @@ declare const ENCRYPTION_REGEX: Readonly<{
34
38
  declare function isInEncryptionFormat(data: string): boolean;
35
39
  declare function isInNodeEncryptionFormat(data: string): boolean;
36
40
  declare function isInWebApiEncryptionFormat(data: string): boolean;
41
+ declare function isWebApiKey(key: unknown): key is WebApiKey;
42
+ declare function isNodeKey(key: unknown): key is nodeCrypto.KeyObject;
37
43
  declare function stringifyObj(obj: Record<string, unknown>): Result<string>;
38
44
  declare function parseToObj(str: string): Result<{
39
45
  result: Record<string, unknown>;
40
46
  }>;
41
47
 
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 };
48
+ export { ENCRYPTION_REGEX as E, NODE_ALGORITHM as N, type Result as R, WEB_API_ALGORITHM as W, isInNodeEncryptionFormat as a, isInWebApiEncryptionFormat as b, isNodeKey as c, isWebApiKey as d, type NodeKey as e, type WebApiKey as f, type EncodingFormat as g, isInEncryptionFormat as i, parseToObj as p, stringifyObj as s };
package/dist/web-api.cjs CHANGED
@@ -1,73 +1,73 @@
1
1
  'use strict';
2
2
 
3
- var chunk65XPPPAR_cjs = require('./chunk-65XPPPAR.cjs');
4
- var chunkIMSNCUFU_cjs = require('./chunk-IMSNCUFU.cjs');
3
+ var chunkHPWXLVXW_cjs = require('./chunk-HPWXLVXW.cjs');
4
+ var chunkM5QWZAR4_cjs = require('./chunk-M5QWZAR4.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "createSecretKey", {
9
9
  enumerable: true,
10
- get: function () { return chunk65XPPPAR_cjs.createSecretKey; }
10
+ get: function () { return chunkHPWXLVXW_cjs.createSecretKey; }
11
11
  });
12
12
  Object.defineProperty(exports, "decode", {
13
13
  enumerable: true,
14
- get: function () { return chunk65XPPPAR_cjs.decode; }
14
+ get: function () { return chunkHPWXLVXW_cjs.decode; }
15
15
  });
16
16
  Object.defineProperty(exports, "decrypt", {
17
17
  enumerable: true,
18
- get: function () { return chunk65XPPPAR_cjs.decrypt; }
18
+ get: function () { return chunkHPWXLVXW_cjs.decrypt; }
19
19
  });
20
20
  Object.defineProperty(exports, "decryptObj", {
21
21
  enumerable: true,
22
- get: function () { return chunk65XPPPAR_cjs.decryptObj; }
22
+ get: function () { return chunkHPWXLVXW_cjs.decryptObj; }
23
23
  });
24
24
  Object.defineProperty(exports, "encode", {
25
25
  enumerable: true,
26
- get: function () { return chunk65XPPPAR_cjs.encode; }
26
+ get: function () { return chunkHPWXLVXW_cjs.encode; }
27
27
  });
28
28
  Object.defineProperty(exports, "encrypt", {
29
29
  enumerable: true,
30
- get: function () { return chunk65XPPPAR_cjs.encrypt; }
30
+ get: function () { return chunkHPWXLVXW_cjs.encrypt; }
31
31
  });
32
32
  Object.defineProperty(exports, "encryptObj", {
33
33
  enumerable: true,
34
- get: function () { return chunk65XPPPAR_cjs.encryptObj; }
34
+ get: function () { return chunkHPWXLVXW_cjs.encryptObj; }
35
35
  });
36
36
  Object.defineProperty(exports, "generateUuid", {
37
37
  enumerable: true,
38
- get: function () { return chunk65XPPPAR_cjs.generateUuid; }
38
+ get: function () { return chunkHPWXLVXW_cjs.generateUuid; }
39
39
  });
40
40
  Object.defineProperty(exports, "hash", {
41
41
  enumerable: true,
42
- get: function () { return chunk65XPPPAR_cjs.hash; }
43
- });
44
- Object.defineProperty(exports, "isWebApiKey", {
45
- enumerable: true,
46
- get: function () { return chunk65XPPPAR_cjs.isWebApiKey; }
42
+ get: function () { return chunkHPWXLVXW_cjs.hash; }
47
43
  });
48
44
  Object.defineProperty(exports, "ENCRYPTION_REGEX", {
49
45
  enumerable: true,
50
- get: function () { return chunkIMSNCUFU_cjs.ENCRYPTION_REGEX; }
46
+ get: function () { return chunkM5QWZAR4_cjs.ENCRYPTION_REGEX; }
51
47
  });
52
48
  Object.defineProperty(exports, "WEB_API_ALGORITHM", {
53
49
  enumerable: true,
54
- get: function () { return chunkIMSNCUFU_cjs.WEB_API_ALGORITHM; }
50
+ get: function () { return chunkM5QWZAR4_cjs.WEB_API_ALGORITHM; }
55
51
  });
56
52
  Object.defineProperty(exports, "isInEncryptionFormat", {
57
53
  enumerable: true,
58
- get: function () { return chunkIMSNCUFU_cjs.isInEncryptionFormat; }
54
+ get: function () { return chunkM5QWZAR4_cjs.isInEncryptionFormat; }
59
55
  });
60
56
  Object.defineProperty(exports, "isInWebApiEncryptionFormat", {
61
57
  enumerable: true,
62
- get: function () { return chunkIMSNCUFU_cjs.isInWebApiEncryptionFormat; }
58
+ get: function () { return chunkM5QWZAR4_cjs.isInWebApiEncryptionFormat; }
59
+ });
60
+ Object.defineProperty(exports, "isWebApiKey", {
61
+ enumerable: true,
62
+ get: function () { return chunkM5QWZAR4_cjs.isWebApiKey; }
63
63
  });
64
64
  Object.defineProperty(exports, "parseToObj", {
65
65
  enumerable: true,
66
- get: function () { return chunkIMSNCUFU_cjs.parseToObj; }
66
+ get: function () { return chunkM5QWZAR4_cjs.parseToObj; }
67
67
  });
68
68
  Object.defineProperty(exports, "stringifyObj", {
69
69
  enumerable: true,
70
- get: function () { return chunkIMSNCUFU_cjs.stringifyObj; }
70
+ get: function () { return chunkM5QWZAR4_cjs.stringifyObj; }
71
71
  });
72
72
  //# sourceMappingURL=web-api.cjs.map
73
73
  //# sourceMappingURL=web-api.cjs.map
@@ -1,5 +1,5 @@
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';
1
+ import { g as EncodingFormat, R as Result, f as WebApiKey } from './utils-Bryp07ny.cjs';
2
+ export { E as ENCRYPTION_REGEX, W as WEB_API_ALGORITHM, i as isInEncryptionFormat, b as isInWebApiEncryptionFormat, d as isWebApiKey, p as parseToObj, s as stringifyObj } from './utils-Bryp07ny.cjs';
3
3
  import 'node:crypto';
4
4
 
5
5
  declare function encode(data: string, format?: EncodingFormat): Result<{
@@ -8,7 +8,6 @@ declare function encode(data: string, format?: EncodingFormat): Result<{
8
8
  declare function decode(data: ArrayBuffer | Uint8Array, format?: EncodingFormat): Result<string>;
9
9
 
10
10
  declare function generateUuid(): Result<string>;
11
- declare function isWebApiKey(key: unknown): key is WebApiKey;
12
11
  declare function hash(data: string): Promise<Result<string>>;
13
12
  declare function createSecretKey(key: string | WebApiKey): Promise<Result<{
14
13
  secretKey: WebApiKey;
@@ -20,4 +19,4 @@ declare function decryptObj(encrypted: string, secretKey: WebApiKey): Promise<Re
20
19
  result: Record<string, unknown>;
21
20
  }>>;
22
21
 
23
- export { WebApiKey, createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, generateUuid, hash, isWebApiKey };
22
+ export { WebApiKey, createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, generateUuid, hash };
package/dist/web-api.d.ts CHANGED
@@ -1,5 +1,5 @@
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';
1
+ import { g as EncodingFormat, R as Result, f as WebApiKey } from './utils-Bryp07ny.js';
2
+ export { E as ENCRYPTION_REGEX, W as WEB_API_ALGORITHM, i as isInEncryptionFormat, b as isInWebApiEncryptionFormat, d as isWebApiKey, p as parseToObj, s as stringifyObj } from './utils-Bryp07ny.js';
3
3
  import 'node:crypto';
4
4
 
5
5
  declare function encode(data: string, format?: EncodingFormat): Result<{
@@ -8,7 +8,6 @@ declare function encode(data: string, format?: EncodingFormat): Result<{
8
8
  declare function decode(data: ArrayBuffer | Uint8Array, format?: EncodingFormat): Result<string>;
9
9
 
10
10
  declare function generateUuid(): Result<string>;
11
- declare function isWebApiKey(key: unknown): key is WebApiKey;
12
11
  declare function hash(data: string): Promise<Result<string>>;
13
12
  declare function createSecretKey(key: string | WebApiKey): Promise<Result<{
14
13
  secretKey: WebApiKey;
@@ -20,4 +19,4 @@ declare function decryptObj(encrypted: string, secretKey: WebApiKey): Promise<Re
20
19
  result: Record<string, unknown>;
21
20
  }>>;
22
21
 
23
- export { WebApiKey, createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, generateUuid, hash, isWebApiKey };
22
+ export { WebApiKey, createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, generateUuid, hash };
package/dist/web-api.js CHANGED
@@ -1,4 +1,4 @@
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';
1
+ export { createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, generateUuid, hash } from './chunk-FTE4MPWV.js';
2
+ export { ENCRYPTION_REGEX, WEB_API_ALGORITHM, isInEncryptionFormat, isInWebApiEncryptionFormat, isWebApiKey, parseToObj, stringifyObj } from './chunk-LO5ITHDI.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.7",
3
+ "version": "0.0.9",
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,216 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkIMSNCUFU_cjs = require('./chunk-IMSNCUFU.cjs');
4
-
5
- // src/web/encode.ts
6
- var textEncoder = new TextEncoder();
7
- var textDecoder = new TextDecoder();
8
- function encode(data, format = "utf8") {
9
- try {
10
- switch (format) {
11
- case "base64":
12
- return chunkIMSNCUFU_cjs.$ok({ bytes: $fromBase64(data) });
13
- case "base64url":
14
- return chunkIMSNCUFU_cjs.$ok({ bytes: $fromBase64Url(data) });
15
- case "hex":
16
- return chunkIMSNCUFU_cjs.$ok({ bytes: $fromHex(data) });
17
- case "utf8":
18
- return chunkIMSNCUFU_cjs.$ok({ bytes: textEncoder.encode(data) });
19
- default:
20
- return chunkIMSNCUFU_cjs.$err({ msg: `Unsupported encode format: ${format}`, desc: "Use base64, base64url, hex, or utf8" });
21
- }
22
- } catch (error) {
23
- return chunkIMSNCUFU_cjs.$err({ msg: "Failed to encode data", desc: chunkIMSNCUFU_cjs.$stringifyError(error) });
24
- }
25
- }
26
- function decode(data, format = "utf8") {
27
- try {
28
- const bytes = data instanceof Uint8Array ? data : new Uint8Array(data);
29
- switch (format) {
30
- case "base64":
31
- return chunkIMSNCUFU_cjs.$ok($toBase64(bytes));
32
- case "base64url":
33
- return chunkIMSNCUFU_cjs.$ok($toBase64Url(bytes));
34
- case "hex":
35
- return chunkIMSNCUFU_cjs.$ok($toHex(bytes));
36
- case "utf8":
37
- return chunkIMSNCUFU_cjs.$ok(textDecoder.decode(bytes));
38
- default:
39
- return chunkIMSNCUFU_cjs.$err({ msg: `Unsupported decode format: ${format}`, desc: "Use base64, base64url, hex, or utf8" });
40
- }
41
- } catch (error) {
42
- return chunkIMSNCUFU_cjs.$err({ msg: "Failed to decode data", desc: chunkIMSNCUFU_cjs.$stringifyError(error) });
43
- }
44
- }
45
- function $toBase64(bytes) {
46
- let binary = "";
47
- const chunkSize = 32768;
48
- for (let i = 0; i < bytes.length; i += chunkSize) {
49
- binary += String.fromCharCode(...bytes.subarray(i, i + chunkSize));
50
- }
51
- return btoa(binary);
52
- }
53
- function $fromBase64(data) {
54
- const binary = atob(data);
55
- const len = binary.length;
56
- const bytes = new Uint8Array(len);
57
- for (let i = 0; i < len; i++) {
58
- bytes[i] = binary.charCodeAt(i);
59
- }
60
- return bytes;
61
- }
62
- function $toBase64Url(bytes) {
63
- return $toBase64(bytes).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
64
- }
65
- function $fromBase64Url(data) {
66
- let b64 = data.replace(/-/g, "+").replace(/_/g, "/");
67
- const padLen = (4 - b64.length % 4) % 4;
68
- b64 += "=".repeat(padLen);
69
- return $fromBase64(b64);
70
- }
71
- function $toHex(bytes) {
72
- return Array.from(bytes).map((b) => b.toString(16).padStart(2, "0")).join("");
73
- }
74
- function $fromHex(data) {
75
- const clean = data.startsWith("0x") ? data.slice(2) : data;
76
- if (clean.length % 2 !== 0) throw new Error("Invalid hex string");
77
- const out = new Uint8Array(clean.length / 2);
78
- for (let i = 0; i < out.length; i++) {
79
- out[i] = Number.parseInt(clean.slice(i * 2, i * 2 + 2), 16);
80
- }
81
- return out;
82
- }
83
-
84
- // src/web/encrypt.ts
85
- function generateUuid() {
86
- try {
87
- return chunkIMSNCUFU_cjs.$ok(crypto.randomUUID());
88
- } catch (error) {
89
- return chunkIMSNCUFU_cjs.$err({ msg: "Failed to generate UUID with Crypto Web API", desc: chunkIMSNCUFU_cjs.$stringifyError(error) });
90
- }
91
- }
92
- function isWebApiKey(key) {
93
- return key !== null && key !== void 0 && typeof key === "object" && "type" in key && typeof key.type === "string" && "algorithm" in key && typeof key.algorithm === "object" && "extractable" in key && typeof key.extractable === "boolean" && "usages" in key && Array.isArray(key.usages) && key.usages.every((usage) => typeof usage === "string");
94
- }
95
- async function hash(data) {
96
- if (!chunkIMSNCUFU_cjs.$isStr(data)) {
97
- return chunkIMSNCUFU_cjs.$err({ msg: "Empty data for hashing", desc: "Data must be a non-empty string" });
98
- }
99
- const { bytes, error } = encode(data, "utf8");
100
- if (error) return chunkIMSNCUFU_cjs.$err(error);
101
- try {
102
- const hashed = await crypto.subtle.digest("SHA-256", bytes);
103
- return decode(hashed, "base64url");
104
- } catch (error2) {
105
- return chunkIMSNCUFU_cjs.$err({ msg: "Failed to hash data with Crypto Web API", desc: chunkIMSNCUFU_cjs.$stringifyError(error2) });
106
- }
107
- }
108
- async function createSecretKey(key) {
109
- if (typeof key === "string") {
110
- if (!chunkIMSNCUFU_cjs.$isStr(key, 1)) return chunkIMSNCUFU_cjs.$err({ msg: "Empty key for Crypto Web API", desc: "Invalid secret key" });
111
- const { bytes, error } = encode(key, "utf8");
112
- if (error) return chunkIMSNCUFU_cjs.$err(error);
113
- try {
114
- const hashedKey = await crypto.subtle.digest("SHA-256", bytes);
115
- const secretKey = await crypto.subtle.importKey("raw", hashedKey, { name: chunkIMSNCUFU_cjs.WEB_API_ALGORITHM }, true, [
116
- "encrypt",
117
- "decrypt"
118
- ]);
119
- return chunkIMSNCUFU_cjs.$ok({ secretKey });
120
- } catch (error2) {
121
- return chunkIMSNCUFU_cjs.$err({ msg: "Failed to create secret key with Crypto Web API", desc: chunkIMSNCUFU_cjs.$stringifyError(error2) });
122
- }
123
- }
124
- if (!isWebApiKey(key)) return chunkIMSNCUFU_cjs.$err({ msg: "Invalid secret key", desc: "Expected a webcrypto.CryptoKey" });
125
- return chunkIMSNCUFU_cjs.$ok({ secretKey: key });
126
- }
127
- async function encrypt(data, secretKey) {
128
- if (!chunkIMSNCUFU_cjs.$isStr(data)) {
129
- return chunkIMSNCUFU_cjs.$err({ msg: "Empty data for encryption", desc: "Data must be a non-empty string" });
130
- }
131
- if (!isWebApiKey(secretKey)) {
132
- return chunkIMSNCUFU_cjs.$err({ msg: "Invalid encryption key", desc: "Expected a webcrypto.CryptoKey" });
133
- }
134
- const { bytes, error } = encode(data, "utf8");
135
- if (error) return chunkIMSNCUFU_cjs.$err(error);
136
- try {
137
- const iv = crypto.getRandomValues(new Uint8Array(12));
138
- const encrypted = await crypto.subtle.encrypt({ name: chunkIMSNCUFU_cjs.WEB_API_ALGORITHM, iv }, secretKey, bytes);
139
- const { result: decodedIv, error: ivError } = decode(iv, "base64url");
140
- const { result: decodedEncrypted, error: encryptedError } = decode(encrypted, "base64url");
141
- if (ivError || encryptedError) {
142
- return chunkIMSNCUFU_cjs.$err({ msg: "Failed to encode IV or encrypted data", desc: "Encoding error" });
143
- }
144
- return chunkIMSNCUFU_cjs.$ok(`${decodedIv}.${decodedEncrypted}.`);
145
- } catch (error2) {
146
- return chunkIMSNCUFU_cjs.$err({ msg: "Failed to encrypt data with Crypto Web API", desc: chunkIMSNCUFU_cjs.$stringifyError(error2) });
147
- }
148
- }
149
- async function decrypt(encrypted, secretKey) {
150
- if (chunkIMSNCUFU_cjs.isInWebApiEncryptionFormat(encrypted) === false) {
151
- return chunkIMSNCUFU_cjs.$err({
152
- msg: "Invalid encrypted data format",
153
- desc: 'Data must be in the format "iv.encryptedWithTag."'
154
- });
155
- }
156
- const [iv, encryptedWithTag] = encrypted.split(".", 3);
157
- if (!chunkIMSNCUFU_cjs.$isStr(iv, 1) || !chunkIMSNCUFU_cjs.$isStr(encryptedWithTag, 1)) {
158
- return chunkIMSNCUFU_cjs.$err({
159
- msg: "Invalid parameters for decryption",
160
- desc: "IV and encrypted data must be non-empty strings"
161
- });
162
- }
163
- if (!isWebApiKey(secretKey)) {
164
- return chunkIMSNCUFU_cjs.$err({ msg: "Invalid decryption key", desc: "Expected a webcrypto.CryptoKey" });
165
- }
166
- const { bytes: ivBytes, error: ivError } = encode(iv, "base64url");
167
- const { bytes: encryptedBytes, error: encryptedError } = encode(encryptedWithTag, "base64url");
168
- if (ivError || encryptedError) {
169
- return chunkIMSNCUFU_cjs.$err({ msg: "Failed to encode IV or encrypted data", desc: "Encoding error" });
170
- }
171
- try {
172
- const decrypted = await crypto.subtle.decrypt({ name: chunkIMSNCUFU_cjs.WEB_API_ALGORITHM, iv: ivBytes }, secretKey, encryptedBytes);
173
- return decode(decrypted, "utf8");
174
- } catch (error) {
175
- return chunkIMSNCUFU_cjs.$err({ msg: "Failed to decrypt data with Crypto Web API", desc: chunkIMSNCUFU_cjs.$stringifyError(error) });
176
- }
177
- }
178
- async function encryptObj(data, secretKey) {
179
- const { result, error } = chunkIMSNCUFU_cjs.stringifyObj(data);
180
- if (error) return chunkIMSNCUFU_cjs.$err(error);
181
- return await encrypt(result, secretKey);
182
- }
183
- async function decryptObj(encrypted, secretKey) {
184
- const { result, error } = await decrypt(encrypted, secretKey);
185
- if (error) return chunkIMSNCUFU_cjs.$err(error);
186
- return chunkIMSNCUFU_cjs.parseToObj(result);
187
- }
188
-
189
- // src/web/export.ts
190
- var export_exports = {};
191
- chunkIMSNCUFU_cjs.__export(export_exports, {
192
- createSecretKey: () => createSecretKey,
193
- decode: () => decode,
194
- decrypt: () => decrypt,
195
- decryptObj: () => decryptObj,
196
- encode: () => encode,
197
- encrypt: () => encrypt,
198
- encryptObj: () => encryptObj,
199
- generateUuid: () => generateUuid,
200
- hash: () => hash,
201
- isWebApiKey: () => isWebApiKey
202
- });
203
-
204
- exports.createSecretKey = createSecretKey;
205
- exports.decode = decode;
206
- exports.decrypt = decrypt;
207
- exports.decryptObj = decryptObj;
208
- exports.encode = encode;
209
- exports.encrypt = encrypt;
210
- exports.encryptObj = encryptObj;
211
- exports.export_exports = export_exports;
212
- exports.generateUuid = generateUuid;
213
- exports.hash = hash;
214
- exports.isWebApiKey = isWebApiKey;
215
- //# sourceMappingURL=chunk-65XPPPAR.cjs.map
216
- //# sourceMappingURL=chunk-65XPPPAR.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/web/encode.ts","../src/web/encrypt.ts","../src/web/export.ts"],"names":["$ok","$err","$stringifyError","$isStr","error","WEB_API_ALGORITHM","isInWebApiEncryptionFormat","stringifyObj","parseToObj","__export"],"mappings":"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","file":"chunk-65XPPPAR.cjs","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({ msg: `Unsupported encode format: ${format}`, desc: 'Use base64, base64url, hex, or utf8' });\r\n }\r\n } catch (error) {\r\n return $err({ msg: 'Failed to encode data', desc: $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({ msg: `Unsupported decode format: ${format}`, desc: 'Use base64, base64url, hex, or utf8' });\r\n }\r\n } catch (error) {\r\n return $err({ msg: 'Failed to decode data', desc: $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\nimport { $isStr, isInWebApiEncryptionFormat, parseToObj, stringifyObj, WEB_API_ALGORITHM } from '~/utils';\r\nimport { decode, encode } from './encode';\r\n\r\nexport function generateUuid(): Result<string> {\r\n try {\r\n return $ok(crypto.randomUUID());\r\n } catch (error) {\r\n return $err({ msg: 'Failed to generate UUID with Crypto Web API', desc: $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\r\nexport async function hash(data: string): Promise<Result<string>> {\r\n if (!$isStr(data)) {\r\n return $err({ msg: 'Empty data for hashing', desc: '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({ msg: 'Failed to hash data with Crypto Web API', desc: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport async function createSecretKey(key: string | WebApiKey): Promise<Result<{ secretKey: WebApiKey }>> {\r\n if (typeof key === 'string') {\r\n if (!$isStr(key, 1)) return $err({ msg: 'Empty key for Crypto Web API', desc: '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({ msg: 'Failed to create secret key with Crypto Web API', desc: $stringifyError(error) });\r\n }\r\n }\r\n\r\n if (!isWebApiKey(key)) return $err({ msg: 'Invalid secret key', desc: '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({ msg: 'Empty data for encryption', desc: 'Data must be a non-empty string' });\r\n }\r\n\r\n if (!isWebApiKey(secretKey)) {\r\n return $err({ msg: 'Invalid encryption key', desc: '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({ msg: 'Failed to encode IV or encrypted data', desc: 'Encoding error' });\r\n }\r\n\r\n return $ok(`${decodedIv}.${decodedEncrypted}.`);\r\n } catch (error) {\r\n return $err({ msg: 'Failed to encrypt data with Crypto Web API', desc: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport async function decrypt(encrypted: string, secretKey: WebApiKey): Promise<Result<string>> {\r\n if (isInWebApiEncryptionFormat(encrypted) === false) {\r\n return $err({\r\n msg: 'Invalid encrypted data format',\r\n desc: '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 msg: 'Invalid parameters for decryption',\r\n desc: 'IV and encrypted data must be non-empty strings',\r\n });\r\n }\r\n\r\n if (!isWebApiKey(secretKey)) {\r\n return $err({ msg: 'Invalid decryption key', desc: '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({ msg: 'Failed to encode IV or encrypted data', desc: '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({ msg: 'Failed to decrypt data with Crypto Web API', desc: $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","export { decode, encode } from './encode';\r\nexport { createSecretKey, decrypt, decryptObj, encrypt, encryptObj, generateUuid, hash, isWebApiKey } from './encrypt';\r\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/error.ts","../src/utils.ts"],"names":[],"mappings":"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","file":"chunk-F52DT5C4.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: { msg: string; desc: string }): Result<never, ResultErr>;\r\nexport function $err(typeOrErr: ResultErr): Result<never, ResultErr>;\r\nexport function $err(typeOrErr: { msg: string; desc: string } | ResultErr): Result<never, ResultErr> {\r\n return {\r\n success: false,\r\n error:\r\n 'msg' in typeOrErr && 'desc' in typeOrErr\r\n ? { message: typeOrErr.msg, description: typeOrErr.desc }\r\n : { message: typeOrErr.message, description: typeOrErr.description },\r\n } 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 NODE_ALGORITHM = 'aes-256-gcm';\r\nexport const WEB_API_ALGORITHM = 'AES-GCM';\r\n\r\nexport const ENCRYPTION_REGEX = Object.freeze({\r\n GENERAL: /^(?:[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+(?:\\.[A-Za-z0-9_-]+)?\\.)$/,\r\n NODE: /^([A-Za-z0-9_-]+)\\.([A-Za-z0-9_-]+)\\.([A-Za-z0-9_-]+)\\.$/,\r\n WEB_API: /^([A-Za-z0-9_-]+)\\.([A-Za-z0-9_-]+)\\.$/,\r\n});\r\n\r\nexport function isInEncryptionFormat(data: string): boolean {\r\n return typeof data === 'string' && ENCRYPTION_REGEX.GENERAL.test(data);\r\n}\r\n\r\nexport function isInNodeEncryptionFormat(data: string): boolean {\r\n return typeof data === 'string' && ENCRYPTION_REGEX.NODE.test(data);\r\n}\r\n\r\nexport function isInWebApiEncryptionFormat(data: string): boolean {\r\n return typeof data === 'string' && ENCRYPTION_REGEX.WEB_API.test(data);\r\n}\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({ msg: 'Invalid object', desc: '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({ msg: 'Stringify error', desc: $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({ msg: 'Invalid input', desc: '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({ msg: 'Invalid object format', desc: '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({ msg: 'Invalid format', desc: $stringifyError(error) });\r\n }\r\n}\r\n"]}