cipher-kit 0.0.9 → 1.0.0

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.
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkM5QWZAR4_cjs = require('./chunk-M5QWZAR4.cjs');
3
+ var chunkSBXDW4MY_cjs = require('./chunk-SBXDW4MY.cjs');
4
4
  var buffer = require('buffer');
5
5
  var nodeCrypto = require('crypto');
6
6
 
@@ -10,127 +10,127 @@ var nodeCrypto__default = /*#__PURE__*/_interopDefault(nodeCrypto);
10
10
 
11
11
  function encode(data, format = "utf8") {
12
12
  try {
13
- return chunkM5QWZAR4_cjs.$ok({ bytes: buffer.Buffer.from(data, format) });
13
+ return chunkSBXDW4MY_cjs.$ok({ bytes: buffer.Buffer.from(data, format) });
14
14
  } catch (error) {
15
- return chunkM5QWZAR4_cjs.$err({ msg: "Crypto NodeJS: Failed to encode data", desc: chunkM5QWZAR4_cjs.$stringifyError(error) });
15
+ return chunkSBXDW4MY_cjs.$err({ msg: "Crypto NodeJS: Failed to encode data", desc: chunkSBXDW4MY_cjs.$stringifyError(error) });
16
16
  }
17
17
  }
18
18
  function decode(data, format = "utf8") {
19
19
  try {
20
- return chunkM5QWZAR4_cjs.$ok(buffer.Buffer.from(data).toString(format));
20
+ return chunkSBXDW4MY_cjs.$ok(buffer.Buffer.from(data).toString(format));
21
21
  } catch (error) {
22
- return chunkM5QWZAR4_cjs.$err({ msg: "Crypto NodeJS: Failed to decode data", desc: chunkM5QWZAR4_cjs.$stringifyError(error) });
22
+ return chunkSBXDW4MY_cjs.$err({ msg: "Crypto NodeJS: Failed to decode data", desc: chunkSBXDW4MY_cjs.$stringifyError(error) });
23
23
  }
24
24
  }
25
25
  function generateUuid() {
26
26
  try {
27
- return chunkM5QWZAR4_cjs.$ok(nodeCrypto__default.default.randomUUID());
27
+ return chunkSBXDW4MY_cjs.$ok(nodeCrypto__default.default.randomUUID());
28
28
  } catch (error) {
29
- return chunkM5QWZAR4_cjs.$err({ msg: "Crypto NodeJS: Failed to generate UUID", desc: chunkM5QWZAR4_cjs.$stringifyError(error) });
29
+ return chunkSBXDW4MY_cjs.$err({ msg: "Crypto NodeJS: Failed to generate UUID", desc: chunkSBXDW4MY_cjs.$stringifyError(error) });
30
30
  }
31
31
  }
32
32
  function hash(data) {
33
- if (!chunkM5QWZAR4_cjs.$isStr(data, 0)) {
34
- return chunkM5QWZAR4_cjs.$err({ msg: "Crypto NodeJS: Empty data for hashing", desc: "Data must be a non-empty string" });
33
+ if (!chunkSBXDW4MY_cjs.$isStr(data, 0)) {
34
+ return chunkSBXDW4MY_cjs.$err({ msg: "Crypto NodeJS: Empty data for hashing", desc: "Data must be a non-empty string" });
35
35
  }
36
36
  try {
37
37
  const hashed = nodeCrypto__default.default.createHash("sha256").update(data).digest();
38
38
  return decode(hashed, "base64url");
39
39
  } catch (error) {
40
- return chunkM5QWZAR4_cjs.$err({ msg: "Crypto NodeJS: Failed to hash data with Crypto NodeJS", desc: chunkM5QWZAR4_cjs.$stringifyError(error) });
40
+ return chunkSBXDW4MY_cjs.$err({ msg: "Crypto NodeJS: Failed to hash data with Crypto NodeJS", desc: chunkSBXDW4MY_cjs.$stringifyError(error) });
41
41
  }
42
42
  }
43
43
  function createSecretKey(key) {
44
44
  if (typeof key === "string") {
45
45
  try {
46
- if (!chunkM5QWZAR4_cjs.$isStr(key)) return chunkM5QWZAR4_cjs.$err({ msg: "Crypto NodeJS: Empty key", desc: "Key must be a non-empty string" });
46
+ if (!chunkSBXDW4MY_cjs.$isStr(key)) return chunkSBXDW4MY_cjs.$err({ msg: "Crypto NodeJS: Empty key", desc: "Key must be a non-empty string" });
47
47
  const hashedKey = nodeCrypto__default.default.createHash("sha256").update(key).digest();
48
48
  const secretKey = nodeCrypto__default.default.createSecretKey(hashedKey);
49
- return chunkM5QWZAR4_cjs.$ok({ secretKey });
49
+ return chunkSBXDW4MY_cjs.$ok({ secretKey });
50
50
  } catch (error) {
51
- return chunkM5QWZAR4_cjs.$err({ msg: "Crypto NodeJS: Failed to create secret key", desc: chunkM5QWZAR4_cjs.$stringifyError(error) });
51
+ return chunkSBXDW4MY_cjs.$err({ msg: "Crypto NodeJS: Failed to create secret key", desc: chunkSBXDW4MY_cjs.$stringifyError(error) });
52
52
  }
53
53
  }
54
- if (!chunkM5QWZAR4_cjs.isNodeKey(key)) {
55
- return chunkM5QWZAR4_cjs.$err({ msg: "Crypto NodeJS: Invalid secret key", desc: "Expected a NodeKey(crypto.KeyObject)" });
54
+ if (!chunkSBXDW4MY_cjs.isNodeKey(key)) {
55
+ return chunkSBXDW4MY_cjs.$err({ msg: "Crypto NodeJS: Invalid secret key", desc: "Expected a NodeKey(crypto.KeyObject)" });
56
56
  }
57
- return chunkM5QWZAR4_cjs.$ok({ secretKey: key });
57
+ return chunkSBXDW4MY_cjs.$ok({ secretKey: key });
58
58
  }
59
59
  function encrypt(data, secretKey) {
60
60
  try {
61
- if (!chunkM5QWZAR4_cjs.$isStr(data)) {
62
- return chunkM5QWZAR4_cjs.$err({ msg: "Crypto NodeJS: Empty data for encryption", desc: "Data must be a non-empty string" });
61
+ if (!chunkSBXDW4MY_cjs.$isStr(data)) {
62
+ return chunkSBXDW4MY_cjs.$err({ msg: "Crypto NodeJS: Empty data for encryption", desc: "Data must be a non-empty string" });
63
63
  }
64
- if (!chunkM5QWZAR4_cjs.isNodeKey(secretKey)) {
65
- return chunkM5QWZAR4_cjs.$err({ msg: "Crypto NodeJS: Invalid encryption key", desc: "Expected a NodeKey(crypto.KeyObject)" });
64
+ if (!chunkSBXDW4MY_cjs.isNodeKey(secretKey)) {
65
+ return chunkSBXDW4MY_cjs.$err({ msg: "Crypto NodeJS: Invalid encryption key", desc: "Expected a NodeKey(crypto.KeyObject)" });
66
66
  }
67
67
  const iv = nodeCrypto__default.default.randomBytes(12);
68
- const cipher = nodeCrypto__default.default.createCipheriv(chunkM5QWZAR4_cjs.NODE_ALGORITHM, secretKey, iv);
68
+ const cipher = nodeCrypto__default.default.createCipheriv(chunkSBXDW4MY_cjs.NODE_ALGORITHM, secretKey, iv);
69
69
  const encrypted = buffer.Buffer.concat([cipher.update(data, "utf8"), cipher.final()]);
70
70
  const tag = cipher.getAuthTag();
71
71
  const { result: decodedIv, error: ivError } = decode(iv, "base64url");
72
72
  const { result: decodedEncrypted, error: encryptedError } = decode(encrypted, "base64url");
73
73
  const { result: decodedTag, error: tagError } = decode(tag, "base64url");
74
74
  if (ivError || encryptedError || tagError) {
75
- return chunkM5QWZAR4_cjs.$err({
76
- msg: "Crypto NodeJS: Failed to encode IV or encrypted data",
77
- desc: `Decoding error: ${ivError || encryptedError || tagError}`
75
+ return chunkSBXDW4MY_cjs.$err({
76
+ msg: "Crypto NodeJS: Failed to convert IV or encrypted data or tag",
77
+ desc: `Conversion error: ${ivError || encryptedError || tagError}`
78
78
  });
79
79
  }
80
- return chunkM5QWZAR4_cjs.$ok(`${decodedIv}.${decodedEncrypted}.${decodedTag}.`);
80
+ return chunkSBXDW4MY_cjs.$ok(`${decodedIv}.${decodedEncrypted}.${decodedTag}.`);
81
81
  } catch (error) {
82
- return chunkM5QWZAR4_cjs.$err({ msg: "Crypto NodeJS: Failed to encrypt data", desc: chunkM5QWZAR4_cjs.$stringifyError(error) });
82
+ return chunkSBXDW4MY_cjs.$err({ msg: "Crypto NodeJS: Failed to encrypt data", desc: chunkSBXDW4MY_cjs.$stringifyError(error) });
83
83
  }
84
84
  }
85
85
  function decrypt(encrypted, secretKey) {
86
- if (chunkM5QWZAR4_cjs.isInNodeEncryptionFormat(encrypted) === false) {
87
- return chunkM5QWZAR4_cjs.$err({
86
+ if (chunkSBXDW4MY_cjs.isInNodeEncryptionFormat(encrypted) === false) {
87
+ return chunkSBXDW4MY_cjs.$err({
88
88
  msg: "Crypto NodeJS: Invalid encrypted data format",
89
89
  desc: 'Encrypted data must be in the format "iv.encryptedData.tag."'
90
90
  });
91
91
  }
92
92
  const [iv, encryptedData, tag] = encrypted.split(".", 4);
93
- if (!chunkM5QWZAR4_cjs.$isStr(iv) || !chunkM5QWZAR4_cjs.$isStr(encryptedData) || !chunkM5QWZAR4_cjs.$isStr(tag)) {
94
- return chunkM5QWZAR4_cjs.$err({
93
+ if (!chunkSBXDW4MY_cjs.$isStr(iv) || !chunkSBXDW4MY_cjs.$isStr(encryptedData) || !chunkSBXDW4MY_cjs.$isStr(tag)) {
94
+ return chunkSBXDW4MY_cjs.$err({
95
95
  msg: "Crypto NodeJS: Invalid encrypted data",
96
96
  desc: "Encrypted data must contain valid IV, encrypted data, and tag components"
97
97
  });
98
98
  }
99
- if (!chunkM5QWZAR4_cjs.isNodeKey(secretKey)) {
100
- return chunkM5QWZAR4_cjs.$err({ msg: "Crypto NodeJS: Invalid decryption key", desc: "Expected a crypto.KeyObject" });
99
+ if (!chunkSBXDW4MY_cjs.isNodeKey(secretKey)) {
100
+ return chunkSBXDW4MY_cjs.$err({ msg: "Crypto NodeJS: Invalid decryption key", desc: "Expected a crypto.KeyObject" });
101
101
  }
102
102
  const { bytes: ivBytes, error: ivError } = encode(iv, "base64url");
103
103
  const { bytes: encryptedBytes, error: encryptedError } = encode(encryptedData, "base64url");
104
104
  const { bytes: tagBytes, error: tagError } = encode(tag, "base64url");
105
105
  if (ivError || encryptedError || tagError) {
106
- return chunkM5QWZAR4_cjs.$err({
107
- msg: "Crypto NodeJS: Failed to decode IV or encrypted data",
108
- desc: `Encoding error: ${ivError || encryptedError || tagError}`
106
+ return chunkSBXDW4MY_cjs.$err({
107
+ msg: "Crypto NodeJS: Failed to convert IV or encrypted data or tag",
108
+ desc: `Conversion error: ${ivError || encryptedError || tagError}`
109
109
  });
110
110
  }
111
111
  try {
112
- const decipher = nodeCrypto__default.default.createDecipheriv(chunkM5QWZAR4_cjs.NODE_ALGORITHM, secretKey, ivBytes);
112
+ const decipher = nodeCrypto__default.default.createDecipheriv(chunkSBXDW4MY_cjs.NODE_ALGORITHM, secretKey, ivBytes);
113
113
  decipher.setAuthTag(tagBytes);
114
114
  const decrypted = buffer.Buffer.concat([decipher.update(encryptedBytes), decipher.final()]);
115
115
  return decode(decrypted, "utf8");
116
116
  } catch (error) {
117
- return chunkM5QWZAR4_cjs.$err({ msg: "Crypto NodeJS: Failed to decrypt data", desc: chunkM5QWZAR4_cjs.$stringifyError(error) });
117
+ return chunkSBXDW4MY_cjs.$err({ msg: "Crypto NodeJS: Failed to decrypt data", desc: chunkSBXDW4MY_cjs.$stringifyError(error) });
118
118
  }
119
119
  }
120
120
  function encryptObj(data, secretKey) {
121
- const { result, error } = chunkM5QWZAR4_cjs.stringifyObj(data);
122
- if (error) return chunkM5QWZAR4_cjs.$err(error);
121
+ const { result, error } = chunkSBXDW4MY_cjs.stringifyObj(data);
122
+ if (error) return chunkSBXDW4MY_cjs.$err(error);
123
123
  return encrypt(result, secretKey);
124
124
  }
125
125
  function decryptObj(encrypted, secretKey) {
126
126
  const { result, error } = decrypt(encrypted, secretKey);
127
- if (error) return chunkM5QWZAR4_cjs.$err(error);
128
- return chunkM5QWZAR4_cjs.parseToObj(result);
127
+ if (error) return chunkSBXDW4MY_cjs.$err(error);
128
+ return chunkSBXDW4MY_cjs.parseToObj(result);
129
129
  }
130
130
 
131
131
  // src/node/export.ts
132
132
  var export_exports = {};
133
- chunkM5QWZAR4_cjs.__export(export_exports, {
133
+ chunkSBXDW4MY_cjs.__export(export_exports, {
134
134
  createSecretKey: () => createSecretKey,
135
135
  decode: () => decode,
136
136
  decrypt: () => decrypt,
@@ -152,5 +152,5 @@ exports.encryptObj = encryptObj;
152
152
  exports.export_exports = export_exports;
153
153
  exports.generateUuid = generateUuid;
154
154
  exports.hash = hash;
155
- //# sourceMappingURL=chunk-KLCBAR7C.cjs.map
156
- //# sourceMappingURL=chunk-KLCBAR7C.cjs.map
155
+ //# sourceMappingURL=chunk-QGYPW6G5.cjs.map
156
+ //# sourceMappingURL=chunk-QGYPW6G5.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/node/encode.ts","../src/node/encrypt.ts","../src/node/export.ts"],"names":["$ok","Buffer","$err","$stringifyError","nodeCrypto","$isStr","isNodeKey","NODE_ALGORITHM","isInNodeEncryptionFormat","stringifyObj","parseToObj","__export"],"mappings":"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","file":"chunk-KLCBAR7C.cjs","sourcesContent":["import { Buffer } from 'node:buffer';\r\nimport { $err, $ok, $stringifyError, type Result } from '~/error';\r\nimport type { EncodingFormat } from '~/types';\r\n\r\nexport function encode(data: string, format: EncodingFormat = 'utf8'): Result<{ bytes: Buffer }> {\r\n try {\r\n return $ok({ bytes: Buffer.from(data, format) });\r\n } catch (error) {\r\n return $err({ msg: 'Crypto NodeJS: Failed to encode data', desc: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport function decode(data: Buffer, format: EncodingFormat = 'utf8'): Result<string> {\r\n try {\r\n return $ok(Buffer.from(data).toString(format));\r\n } catch (error) {\r\n return $err({ msg: 'Crypto NodeJS: Failed to decode data', desc: $stringifyError(error) });\r\n }\r\n}\r\n","import { Buffer } from 'node:buffer';\r\nimport nodeCrypto from 'node:crypto';\r\nimport { $err, $ok, $stringifyError, type Result } from '~/error';\r\nimport type { NodeKey } from '~/types';\r\nimport { $isStr, isInNodeEncryptionFormat, isNodeKey, NODE_ALGORITHM, parseToObj, stringifyObj } from '~/utils';\r\nimport { decode, encode } from './encode';\r\n\r\nexport function generateUuid(): Result<string> {\r\n try {\r\n return $ok(nodeCrypto.randomUUID());\r\n } catch (error) {\r\n return $err({ msg: 'Crypto NodeJS: Failed to generate UUID', desc: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport function hash(data: string): Result<string> {\r\n if (!$isStr(data, 0)) {\r\n return $err({ msg: 'Crypto NodeJS: Empty data for hashing', desc: 'Data must be a non-empty string' });\r\n }\r\n\r\n try {\r\n const hashed = nodeCrypto.createHash('sha256').update(data).digest();\r\n return decode(hashed, 'base64url');\r\n } catch (error) {\r\n return $err({ msg: 'Crypto NodeJS: Failed to hash data with Crypto NodeJS', desc: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport function createSecretKey(key: string | NodeKey): Result<{ secretKey: NodeKey }> {\r\n if (typeof key === 'string') {\r\n try {\r\n if (!$isStr(key)) return $err({ msg: 'Crypto NodeJS: Empty key', desc: 'Key must be a non-empty string' });\r\n const hashedKey = nodeCrypto.createHash('sha256').update(key).digest();\r\n const secretKey = nodeCrypto.createSecretKey(hashedKey);\r\n return $ok({ secretKey });\r\n } catch (error) {\r\n return $err({ msg: 'Crypto NodeJS: Failed to create secret key', desc: $stringifyError(error) });\r\n }\r\n }\r\n\r\n if (!isNodeKey(key)) {\r\n return $err({ msg: 'Crypto NodeJS: Invalid secret key', desc: 'Expected a NodeKey(crypto.KeyObject)' });\r\n }\r\n\r\n return $ok({ secretKey: key });\r\n}\r\n\r\nexport function encrypt(data: string, secretKey: NodeKey): Result<string> {\r\n try {\r\n if (!$isStr(data)) {\r\n return $err({ msg: 'Crypto NodeJS: Empty data for encryption', desc: 'Data must be a non-empty string' });\r\n }\r\n\r\n if (!isNodeKey(secretKey)) {\r\n return $err({ msg: 'Crypto NodeJS: Invalid encryption key', desc: 'Expected a NodeKey(crypto.KeyObject)' });\r\n }\r\n\r\n const iv = nodeCrypto.randomBytes(12);\r\n const cipher = nodeCrypto.createCipheriv(NODE_ALGORITHM, secretKey, iv);\r\n const encrypted = Buffer.concat([cipher.update(data, 'utf8'), cipher.final()]);\r\n const tag = cipher.getAuthTag();\r\n\r\n const { result: decodedIv, error: ivError } = decode(iv, 'base64url');\r\n const { result: decodedEncrypted, error: encryptedError } = decode(encrypted, 'base64url');\r\n const { result: decodedTag, error: tagError } = decode(tag, 'base64url');\r\n if (ivError || encryptedError || tagError) {\r\n return $err({\r\n msg: 'Crypto NodeJS: Failed to encode IV or encrypted data',\r\n desc: `Decoding error: ${ivError || encryptedError || tagError}`,\r\n });\r\n }\r\n\r\n return $ok(`${decodedIv}.${decodedEncrypted}.${decodedTag}.`);\r\n } catch (error) {\r\n return $err({ msg: 'Crypto NodeJS: Failed to encrypt data', desc: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport function decrypt(encrypted: string, secretKey: NodeKey): Result<string> {\r\n if (isInNodeEncryptionFormat(encrypted) === false) {\r\n return $err({\r\n msg: 'Crypto NodeJS: Invalid encrypted data format',\r\n desc: 'Encrypted data must be in the format \"iv.encryptedData.tag.\"',\r\n });\r\n }\r\n\r\n const [iv, encryptedData, tag] = encrypted.split('.', 4);\r\n if (!$isStr(iv) || !$isStr(encryptedData) || !$isStr(tag)) {\r\n return $err({\r\n msg: 'Crypto NodeJS: Invalid encrypted data',\r\n desc: 'Encrypted data must contain valid IV, encrypted data, and tag components',\r\n });\r\n }\r\n\r\n if (!isNodeKey(secretKey)) {\r\n return $err({ msg: 'Crypto NodeJS: Invalid decryption key', desc: 'Expected a crypto.KeyObject' });\r\n }\r\n\r\n const { bytes: ivBytes, error: ivError } = encode(iv, 'base64url');\r\n const { bytes: encryptedBytes, error: encryptedError } = encode(encryptedData, 'base64url');\r\n const { bytes: tagBytes, error: tagError } = encode(tag, 'base64url');\r\n if (ivError || encryptedError || tagError) {\r\n return $err({\r\n msg: 'Crypto NodeJS: Failed to decode IV or encrypted data',\r\n desc: `Encoding error: ${ivError || encryptedError || tagError}`,\r\n });\r\n }\r\n\r\n try {\r\n const decipher = nodeCrypto.createDecipheriv(NODE_ALGORITHM, secretKey, ivBytes);\r\n decipher.setAuthTag(tagBytes);\r\n\r\n const decrypted = Buffer.concat([decipher.update(encryptedBytes), decipher.final()]);\r\n return decode(decrypted, 'utf8');\r\n } catch (error) {\r\n return $err({ msg: 'Crypto NodeJS: Failed to decrypt data', desc: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport function encryptObj(data: Record<string, unknown>, secretKey: NodeKey): Result<string> {\r\n const { result, error } = stringifyObj(data);\r\n if (error) return $err(error);\r\n return encrypt(result, secretKey);\r\n}\r\n\r\nexport function decryptObj(encrypted: string, secretKey: NodeKey): Result<{ result: Record<string, unknown> }> {\r\n const { result, error } = 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 } from './encrypt';\r\n"]}
1
+ {"version":3,"sources":["../src/node/encode.ts","../src/node/encrypt.ts","../src/node/export.ts"],"names":["$ok","Buffer","$err","$stringifyError","nodeCrypto","$isStr","isNodeKey","NODE_ALGORITHM","isInNodeEncryptionFormat","stringifyObj","parseToObj","__export"],"mappings":"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","file":"chunk-QGYPW6G5.cjs","sourcesContent":["import { Buffer } from 'node:buffer';\r\nimport { $err, $ok, $stringifyError, type Result } from '~/error';\r\nimport type { EncodingFormat } from '~/types';\r\n\r\nexport function encode(data: string, format: EncodingFormat = 'utf8'): Result<{ bytes: Buffer }> {\r\n try {\r\n return $ok({ bytes: Buffer.from(data, format) });\r\n } catch (error) {\r\n return $err({ msg: 'Crypto NodeJS: Failed to encode data', desc: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport function decode(data: Buffer, format: EncodingFormat = 'utf8'): Result<string> {\r\n try {\r\n return $ok(Buffer.from(data).toString(format));\r\n } catch (error) {\r\n return $err({ msg: 'Crypto NodeJS: Failed to decode data', desc: $stringifyError(error) });\r\n }\r\n}\r\n","import { Buffer } from 'node:buffer';\r\nimport nodeCrypto from 'node:crypto';\r\nimport { $err, $ok, $stringifyError, type Result } from '~/error';\r\nimport type { NodeKey } from '~/types';\r\nimport { $isStr, isInNodeEncryptionFormat, isNodeKey, NODE_ALGORITHM, parseToObj, stringifyObj } from '~/utils';\r\nimport { decode, encode } from './encode';\r\n\r\nexport function generateUuid(): Result<string> {\r\n try {\r\n return $ok(nodeCrypto.randomUUID());\r\n } catch (error) {\r\n return $err({ msg: 'Crypto NodeJS: Failed to generate UUID', desc: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport function hash(data: string): Result<string> {\r\n if (!$isStr(data, 0)) {\r\n return $err({ msg: 'Crypto NodeJS: Empty data for hashing', desc: 'Data must be a non-empty string' });\r\n }\r\n\r\n try {\r\n const hashed = nodeCrypto.createHash('sha256').update(data).digest();\r\n return decode(hashed, 'base64url');\r\n } catch (error) {\r\n return $err({ msg: 'Crypto NodeJS: Failed to hash data with Crypto NodeJS', desc: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport function createSecretKey(key: string | NodeKey): Result<{ secretKey: NodeKey }> {\r\n if (typeof key === 'string') {\r\n try {\r\n if (!$isStr(key)) return $err({ msg: 'Crypto NodeJS: Empty key', desc: 'Key must be a non-empty string' });\r\n const hashedKey = nodeCrypto.createHash('sha256').update(key).digest();\r\n const secretKey = nodeCrypto.createSecretKey(hashedKey);\r\n return $ok({ secretKey });\r\n } catch (error) {\r\n return $err({ msg: 'Crypto NodeJS: Failed to create secret key', desc: $stringifyError(error) });\r\n }\r\n }\r\n\r\n if (!isNodeKey(key)) {\r\n return $err({ msg: 'Crypto NodeJS: Invalid secret key', desc: 'Expected a NodeKey(crypto.KeyObject)' });\r\n }\r\n\r\n return $ok({ secretKey: key });\r\n}\r\n\r\nexport function encrypt(data: string, secretKey: NodeKey): Result<string> {\r\n try {\r\n if (!$isStr(data)) {\r\n return $err({ msg: 'Crypto NodeJS: Empty data for encryption', desc: 'Data must be a non-empty string' });\r\n }\r\n\r\n if (!isNodeKey(secretKey)) {\r\n return $err({ msg: 'Crypto NodeJS: Invalid encryption key', desc: 'Expected a NodeKey(crypto.KeyObject)' });\r\n }\r\n\r\n const iv = nodeCrypto.randomBytes(12);\r\n const cipher = nodeCrypto.createCipheriv(NODE_ALGORITHM, secretKey, iv);\r\n const encrypted = Buffer.concat([cipher.update(data, 'utf8'), cipher.final()]);\r\n const tag = cipher.getAuthTag();\r\n\r\n const { result: decodedIv, error: ivError } = decode(iv, 'base64url');\r\n const { result: decodedEncrypted, error: encryptedError } = decode(encrypted, 'base64url');\r\n const { result: decodedTag, error: tagError } = decode(tag, 'base64url');\r\n if (ivError || encryptedError || tagError) {\r\n return $err({\r\n msg: 'Crypto NodeJS: Failed to convert IV or encrypted data or tag',\r\n desc: `Conversion error: ${ivError || encryptedError || tagError}`,\r\n });\r\n }\r\n\r\n return $ok(`${decodedIv}.${decodedEncrypted}.${decodedTag}.`);\r\n } catch (error) {\r\n return $err({ msg: 'Crypto NodeJS: Failed to encrypt data', desc: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport function decrypt(encrypted: string, secretKey: NodeKey): Result<string> {\r\n if (isInNodeEncryptionFormat(encrypted) === false) {\r\n return $err({\r\n msg: 'Crypto NodeJS: Invalid encrypted data format',\r\n desc: 'Encrypted data must be in the format \"iv.encryptedData.tag.\"',\r\n });\r\n }\r\n\r\n const [iv, encryptedData, tag] = encrypted.split('.', 4);\r\n if (!$isStr(iv) || !$isStr(encryptedData) || !$isStr(tag)) {\r\n return $err({\r\n msg: 'Crypto NodeJS: Invalid encrypted data',\r\n desc: 'Encrypted data must contain valid IV, encrypted data, and tag components',\r\n });\r\n }\r\n\r\n if (!isNodeKey(secretKey)) {\r\n return $err({ msg: 'Crypto NodeJS: Invalid decryption key', desc: 'Expected a crypto.KeyObject' });\r\n }\r\n\r\n const { bytes: ivBytes, error: ivError } = encode(iv, 'base64url');\r\n const { bytes: encryptedBytes, error: encryptedError } = encode(encryptedData, 'base64url');\r\n const { bytes: tagBytes, error: tagError } = encode(tag, 'base64url');\r\n if (ivError || encryptedError || tagError) {\r\n return $err({\r\n msg: 'Crypto NodeJS: Failed to convert IV or encrypted data or tag',\r\n desc: `Conversion error: ${ivError || encryptedError || tagError}`,\r\n });\r\n }\r\n\r\n try {\r\n const decipher = nodeCrypto.createDecipheriv(NODE_ALGORITHM, secretKey, ivBytes);\r\n decipher.setAuthTag(tagBytes);\r\n\r\n const decrypted = Buffer.concat([decipher.update(encryptedBytes), decipher.final()]);\r\n return decode(decrypted, 'utf8');\r\n } catch (error) {\r\n return $err({ msg: 'Crypto NodeJS: Failed to decrypt data', desc: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport function encryptObj(data: Record<string, unknown>, secretKey: NodeKey): Result<string> {\r\n const { result, error } = stringifyObj(data);\r\n if (error) return $err(error);\r\n return encrypt(result, secretKey);\r\n}\r\n\r\nexport function decryptObj(encrypted: string, secretKey: NodeKey): Result<{ result: Record<string, unknown> }> {\r\n const { result, error } = 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 } from './encrypt';\r\n"]}
@@ -50,7 +50,7 @@ function isInWebApiEncryptionFormat(data) {
50
50
  return typeof data === "string" && ENCRYPTION_REGEX.WEB_API.test(data);
51
51
  }
52
52
  function $isStr(value, min = 1) {
53
- return (value !== null || value !== void 0) && typeof value === "string" && value.trim().length >= min;
53
+ return value !== null && value !== void 0 && typeof value === "string" && value.trim().length >= min;
54
54
  }
55
55
  function $isObj(value) {
56
56
  return typeof value === "object" && value !== null && value !== void 0 && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);
@@ -95,5 +95,5 @@ exports.isNodeKey = isNodeKey;
95
95
  exports.isWebApiKey = isWebApiKey;
96
96
  exports.parseToObj = parseToObj;
97
97
  exports.stringifyObj = stringifyObj;
98
- //# sourceMappingURL=chunk-M5QWZAR4.cjs.map
99
- //# sourceMappingURL=chunk-M5QWZAR4.cjs.map
98
+ //# sourceMappingURL=chunk-SBXDW4MY.cjs.map
99
+ //# sourceMappingURL=chunk-SBXDW4MY.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/error.ts","../src/utils.ts"],"names":["nodeCrypto"],"mappings":"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","file":"chunk-SBXDW4MY.cjs","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(err: { msg: string; desc: string }): Result<never, ResultErr>;\r\nexport function $err(err: ResultErr): Result<never, ResultErr>;\r\nexport function $err(err: { msg: string; desc: string } | ResultErr): Result<never, ResultErr> {\r\n return {\r\n success: false,\r\n error: {\r\n message: 'msg' in err ? err.msg : err.message,\r\n description: 'desc' in err ? err.desc : err.description,\r\n },\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 nodeCrypto from 'node:crypto';\r\nimport type { WebApiKey } from '~/types';\r\nimport { $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 = 1): 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 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 function isNodeKey(key: unknown): key is nodeCrypto.KeyObject {\r\n return key instanceof nodeCrypto.KeyObject;\r\n}\r\n\r\nexport function stringifyObj(obj: Record<string, unknown>): Result<string> {\r\n try {\r\n if (!$isObj(obj)) return $err({ msg: 'Invalid object', desc: 'Input is not a plain object' });\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 try {\r\n if (!$isStr(str)) return $err({ msg: 'Invalid input', desc: 'Input is not a valid string' });\r\n const obj = JSON.parse(str);\r\n if (!$isObj(obj)) return $err({ msg: 'Invalid object format', desc: 'Parsed data is not a plain object' });\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"]}
@@ -44,7 +44,7 @@ function isInWebApiEncryptionFormat(data) {
44
44
  return typeof data === "string" && ENCRYPTION_REGEX.WEB_API.test(data);
45
45
  }
46
46
  function $isStr(value, min = 1) {
47
- return (value !== null || value !== void 0) && typeof value === "string" && value.trim().length >= min;
47
+ return value !== null && value !== void 0 && typeof value === "string" && value.trim().length >= min;
48
48
  }
49
49
  function $isObj(value) {
50
50
  return typeof value === "object" && value !== null && value !== void 0 && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);
@@ -75,5 +75,5 @@ function parseToObj(str) {
75
75
  }
76
76
 
77
77
  export { $err, $isStr, $ok, $stringifyError, ENCRYPTION_REGEX, NODE_ALGORITHM, WEB_API_ALGORITHM, __export, isInEncryptionFormat, isInNodeEncryptionFormat, isInWebApiEncryptionFormat, isNodeKey, isWebApiKey, parseToObj, stringifyObj };
78
- //# sourceMappingURL=chunk-LO5ITHDI.js.map
79
- //# sourceMappingURL=chunk-LO5ITHDI.js.map
78
+ //# sourceMappingURL=chunk-THMEBIZB.js.map
79
+ //# sourceMappingURL=chunk-THMEBIZB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/error.ts","../src/utils.ts"],"names":[],"mappings":"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","file":"chunk-THMEBIZB.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(err: { msg: string; desc: string }): Result<never, ResultErr>;\r\nexport function $err(err: ResultErr): Result<never, ResultErr>;\r\nexport function $err(err: { msg: string; desc: string } | ResultErr): Result<never, ResultErr> {\r\n return {\r\n success: false,\r\n error: {\r\n message: 'msg' in err ? err.msg : err.message,\r\n description: 'desc' in err ? err.desc : err.description,\r\n },\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 nodeCrypto from 'node:crypto';\r\nimport type { WebApiKey } from '~/types';\r\nimport { $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 = 1): 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 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 function isNodeKey(key: unknown): key is nodeCrypto.KeyObject {\r\n return key instanceof nodeCrypto.KeyObject;\r\n}\r\n\r\nexport function stringifyObj(obj: Record<string, unknown>): Result<string> {\r\n try {\r\n if (!$isObj(obj)) return $err({ msg: 'Invalid object', desc: 'Input is not a plain object' });\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 try {\r\n if (!$isStr(str)) return $err({ msg: 'Invalid input', desc: 'Input is not a valid string' });\r\n const obj = JSON.parse(str);\r\n if (!$isObj(obj)) return $err({ msg: 'Invalid object format', desc: 'Parsed data is not a plain object' });\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"]}
package/dist/index.cjs CHANGED
@@ -1,94 +1,94 @@
1
1
  'use strict';
2
2
 
3
- var chunkKLCBAR7C_cjs = require('./chunk-KLCBAR7C.cjs');
4
- var chunkHPWXLVXW_cjs = require('./chunk-HPWXLVXW.cjs');
5
- var chunkM5QWZAR4_cjs = require('./chunk-M5QWZAR4.cjs');
3
+ var chunkQGYPW6G5_cjs = require('./chunk-QGYPW6G5.cjs');
4
+ var chunkPDLO733W_cjs = require('./chunk-PDLO733W.cjs');
5
+ var chunkSBXDW4MY_cjs = require('./chunk-SBXDW4MY.cjs');
6
6
 
7
7
 
8
8
 
9
9
  Object.defineProperty(exports, "createSecretKey", {
10
10
  enumerable: true,
11
- get: function () { return chunkKLCBAR7C_cjs.createSecretKey; }
11
+ get: function () { return chunkQGYPW6G5_cjs.createSecretKey; }
12
12
  });
13
13
  Object.defineProperty(exports, "decode", {
14
14
  enumerable: true,
15
- get: function () { return chunkKLCBAR7C_cjs.decode; }
15
+ get: function () { return chunkQGYPW6G5_cjs.decode; }
16
16
  });
17
17
  Object.defineProperty(exports, "decrypt", {
18
18
  enumerable: true,
19
- get: function () { return chunkKLCBAR7C_cjs.decrypt; }
19
+ get: function () { return chunkQGYPW6G5_cjs.decrypt; }
20
20
  });
21
21
  Object.defineProperty(exports, "decryptObj", {
22
22
  enumerable: true,
23
- get: function () { return chunkKLCBAR7C_cjs.decryptObj; }
23
+ get: function () { return chunkQGYPW6G5_cjs.decryptObj; }
24
24
  });
25
25
  Object.defineProperty(exports, "encode", {
26
26
  enumerable: true,
27
- get: function () { return chunkKLCBAR7C_cjs.encode; }
27
+ get: function () { return chunkQGYPW6G5_cjs.encode; }
28
28
  });
29
29
  Object.defineProperty(exports, "encrypt", {
30
30
  enumerable: true,
31
- get: function () { return chunkKLCBAR7C_cjs.encrypt; }
31
+ get: function () { return chunkQGYPW6G5_cjs.encrypt; }
32
32
  });
33
33
  Object.defineProperty(exports, "encryptObj", {
34
34
  enumerable: true,
35
- get: function () { return chunkKLCBAR7C_cjs.encryptObj; }
35
+ get: function () { return chunkQGYPW6G5_cjs.encryptObj; }
36
36
  });
37
37
  Object.defineProperty(exports, "generateUuid", {
38
38
  enumerable: true,
39
- get: function () { return chunkKLCBAR7C_cjs.generateUuid; }
39
+ get: function () { return chunkQGYPW6G5_cjs.generateUuid; }
40
40
  });
41
41
  Object.defineProperty(exports, "hash", {
42
42
  enumerable: true,
43
- get: function () { return chunkKLCBAR7C_cjs.hash; }
43
+ get: function () { return chunkQGYPW6G5_cjs.hash; }
44
44
  });
45
45
  Object.defineProperty(exports, "nodeKit", {
46
46
  enumerable: true,
47
- get: function () { return chunkKLCBAR7C_cjs.export_exports; }
47
+ get: function () { return chunkQGYPW6G5_cjs.export_exports; }
48
48
  });
49
49
  Object.defineProperty(exports, "webApiKit", {
50
50
  enumerable: true,
51
- get: function () { return chunkHPWXLVXW_cjs.export_exports; }
51
+ get: function () { return chunkPDLO733W_cjs.export_exports; }
52
52
  });
53
53
  Object.defineProperty(exports, "ENCRYPTION_REGEX", {
54
54
  enumerable: true,
55
- get: function () { return chunkM5QWZAR4_cjs.ENCRYPTION_REGEX; }
55
+ get: function () { return chunkSBXDW4MY_cjs.ENCRYPTION_REGEX; }
56
56
  });
57
57
  Object.defineProperty(exports, "NODE_ALGORITHM", {
58
58
  enumerable: true,
59
- get: function () { return chunkM5QWZAR4_cjs.NODE_ALGORITHM; }
59
+ get: function () { return chunkSBXDW4MY_cjs.NODE_ALGORITHM; }
60
60
  });
61
61
  Object.defineProperty(exports, "WEB_API_ALGORITHM", {
62
62
  enumerable: true,
63
- get: function () { return chunkM5QWZAR4_cjs.WEB_API_ALGORITHM; }
63
+ get: function () { return chunkSBXDW4MY_cjs.WEB_API_ALGORITHM; }
64
64
  });
65
65
  Object.defineProperty(exports, "isInEncryptionFormat", {
66
66
  enumerable: true,
67
- get: function () { return chunkM5QWZAR4_cjs.isInEncryptionFormat; }
67
+ get: function () { return chunkSBXDW4MY_cjs.isInEncryptionFormat; }
68
68
  });
69
69
  Object.defineProperty(exports, "isInNodeEncryptionFormat", {
70
70
  enumerable: true,
71
- get: function () { return chunkM5QWZAR4_cjs.isInNodeEncryptionFormat; }
71
+ get: function () { return chunkSBXDW4MY_cjs.isInNodeEncryptionFormat; }
72
72
  });
73
73
  Object.defineProperty(exports, "isInWebApiEncryptionFormat", {
74
74
  enumerable: true,
75
- get: function () { return chunkM5QWZAR4_cjs.isInWebApiEncryptionFormat; }
75
+ get: function () { return chunkSBXDW4MY_cjs.isInWebApiEncryptionFormat; }
76
76
  });
77
77
  Object.defineProperty(exports, "isNodeKey", {
78
78
  enumerable: true,
79
- get: function () { return chunkM5QWZAR4_cjs.isNodeKey; }
79
+ get: function () { return chunkSBXDW4MY_cjs.isNodeKey; }
80
80
  });
81
81
  Object.defineProperty(exports, "isWebApiKey", {
82
82
  enumerable: true,
83
- get: function () { return chunkM5QWZAR4_cjs.isWebApiKey; }
83
+ get: function () { return chunkSBXDW4MY_cjs.isWebApiKey; }
84
84
  });
85
85
  Object.defineProperty(exports, "parseToObj", {
86
86
  enumerable: true,
87
- get: function () { return chunkM5QWZAR4_cjs.parseToObj; }
87
+ get: function () { return chunkSBXDW4MY_cjs.parseToObj; }
88
88
  });
89
89
  Object.defineProperty(exports, "stringifyObj", {
90
90
  enumerable: true,
91
- get: function () { return chunkM5QWZAR4_cjs.stringifyObj; }
91
+ get: function () { return chunkSBXDW4MY_cjs.stringifyObj; }
92
92
  });
93
93
  //# sourceMappingURL=index.cjs.map
94
94
  //# sourceMappingURL=index.cjs.map
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- export { createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, generateUuid, hash, export_exports as nodeKit } from './chunk-GOCDVHG7.js';
2
- export { export_exports as webApiKit } from './chunk-FTE4MPWV.js';
3
- export { ENCRYPTION_REGEX, NODE_ALGORITHM, WEB_API_ALGORITHM, isInEncryptionFormat, isInNodeEncryptionFormat, isInWebApiEncryptionFormat, isNodeKey, isWebApiKey, parseToObj, stringifyObj } from './chunk-LO5ITHDI.js';
1
+ export { createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, generateUuid, hash, export_exports as nodeKit } from './chunk-A7EF2XVZ.js';
2
+ export { export_exports as webApiKit } from './chunk-BQTBKP4M.js';
3
+ export { ENCRYPTION_REGEX, NODE_ALGORITHM, WEB_API_ALGORITHM, isInEncryptionFormat, isInNodeEncryptionFormat, isInWebApiEncryptionFormat, isNodeKey, isWebApiKey, parseToObj, stringifyObj } from './chunk-THMEBIZB.js';
4
4
  //# sourceMappingURL=index.js.map
5
5
  //# sourceMappingURL=index.js.map
package/dist/node.cjs CHANGED
@@ -1,73 +1,73 @@
1
1
  'use strict';
2
2
 
3
- var chunkKLCBAR7C_cjs = require('./chunk-KLCBAR7C.cjs');
4
- var chunkM5QWZAR4_cjs = require('./chunk-M5QWZAR4.cjs');
3
+ var chunkQGYPW6G5_cjs = require('./chunk-QGYPW6G5.cjs');
4
+ var chunkSBXDW4MY_cjs = require('./chunk-SBXDW4MY.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "createSecretKey", {
9
9
  enumerable: true,
10
- get: function () { return chunkKLCBAR7C_cjs.createSecretKey; }
10
+ get: function () { return chunkQGYPW6G5_cjs.createSecretKey; }
11
11
  });
12
12
  Object.defineProperty(exports, "decode", {
13
13
  enumerable: true,
14
- get: function () { return chunkKLCBAR7C_cjs.decode; }
14
+ get: function () { return chunkQGYPW6G5_cjs.decode; }
15
15
  });
16
16
  Object.defineProperty(exports, "decrypt", {
17
17
  enumerable: true,
18
- get: function () { return chunkKLCBAR7C_cjs.decrypt; }
18
+ get: function () { return chunkQGYPW6G5_cjs.decrypt; }
19
19
  });
20
20
  Object.defineProperty(exports, "decryptObj", {
21
21
  enumerable: true,
22
- get: function () { return chunkKLCBAR7C_cjs.decryptObj; }
22
+ get: function () { return chunkQGYPW6G5_cjs.decryptObj; }
23
23
  });
24
24
  Object.defineProperty(exports, "encode", {
25
25
  enumerable: true,
26
- get: function () { return chunkKLCBAR7C_cjs.encode; }
26
+ get: function () { return chunkQGYPW6G5_cjs.encode; }
27
27
  });
28
28
  Object.defineProperty(exports, "encrypt", {
29
29
  enumerable: true,
30
- get: function () { return chunkKLCBAR7C_cjs.encrypt; }
30
+ get: function () { return chunkQGYPW6G5_cjs.encrypt; }
31
31
  });
32
32
  Object.defineProperty(exports, "encryptObj", {
33
33
  enumerable: true,
34
- get: function () { return chunkKLCBAR7C_cjs.encryptObj; }
34
+ get: function () { return chunkQGYPW6G5_cjs.encryptObj; }
35
35
  });
36
36
  Object.defineProperty(exports, "generateUuid", {
37
37
  enumerable: true,
38
- get: function () { return chunkKLCBAR7C_cjs.generateUuid; }
38
+ get: function () { return chunkQGYPW6G5_cjs.generateUuid; }
39
39
  });
40
40
  Object.defineProperty(exports, "hash", {
41
41
  enumerable: true,
42
- get: function () { return chunkKLCBAR7C_cjs.hash; }
42
+ get: function () { return chunkQGYPW6G5_cjs.hash; }
43
43
  });
44
44
  Object.defineProperty(exports, "ENCRYPTION_REGEX", {
45
45
  enumerable: true,
46
- get: function () { return chunkM5QWZAR4_cjs.ENCRYPTION_REGEX; }
46
+ get: function () { return chunkSBXDW4MY_cjs.ENCRYPTION_REGEX; }
47
47
  });
48
48
  Object.defineProperty(exports, "NODE_ALGORITHM", {
49
49
  enumerable: true,
50
- get: function () { return chunkM5QWZAR4_cjs.NODE_ALGORITHM; }
50
+ get: function () { return chunkSBXDW4MY_cjs.NODE_ALGORITHM; }
51
51
  });
52
52
  Object.defineProperty(exports, "isInEncryptionFormat", {
53
53
  enumerable: true,
54
- get: function () { return chunkM5QWZAR4_cjs.isInEncryptionFormat; }
54
+ get: function () { return chunkSBXDW4MY_cjs.isInEncryptionFormat; }
55
55
  });
56
56
  Object.defineProperty(exports, "isInNodeEncryptionFormat", {
57
57
  enumerable: true,
58
- get: function () { return chunkM5QWZAR4_cjs.isInNodeEncryptionFormat; }
58
+ get: function () { return chunkSBXDW4MY_cjs.isInNodeEncryptionFormat; }
59
59
  });
60
60
  Object.defineProperty(exports, "isNodeKey", {
61
61
  enumerable: true,
62
- get: function () { return chunkM5QWZAR4_cjs.isNodeKey; }
62
+ get: function () { return chunkSBXDW4MY_cjs.isNodeKey; }
63
63
  });
64
64
  Object.defineProperty(exports, "parseToObj", {
65
65
  enumerable: true,
66
- get: function () { return chunkM5QWZAR4_cjs.parseToObj; }
66
+ get: function () { return chunkSBXDW4MY_cjs.parseToObj; }
67
67
  });
68
68
  Object.defineProperty(exports, "stringifyObj", {
69
69
  enumerable: true,
70
- get: function () { return chunkM5QWZAR4_cjs.stringifyObj; }
70
+ get: function () { return chunkSBXDW4MY_cjs.stringifyObj; }
71
71
  });
72
72
  //# sourceMappingURL=node.cjs.map
73
73
  //# sourceMappingURL=node.cjs.map
package/dist/node.js CHANGED
@@ -1,4 +1,4 @@
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';
1
+ export { createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, generateUuid, hash } from './chunk-A7EF2XVZ.js';
2
+ export { ENCRYPTION_REGEX, NODE_ALGORITHM, isInEncryptionFormat, isInNodeEncryptionFormat, isNodeKey, parseToObj, stringifyObj } from './chunk-THMEBIZB.js';
3
3
  //# sourceMappingURL=node.js.map
4
4
  //# sourceMappingURL=node.js.map