cipher-kit 0.0.4 → 0.0.6
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/chunk-65XPPPAR.cjs +216 -0
- package/dist/chunk-65XPPPAR.cjs.map +1 -0
- package/dist/chunk-F52DT5C4.js +70 -0
- package/dist/chunk-F52DT5C4.js.map +1 -0
- package/dist/chunk-IMSNCUFU.cjs +84 -0
- package/dist/chunk-IMSNCUFU.cjs.map +1 -0
- package/dist/{chunk-HSRKAY2V.js → chunk-PKIT6YQN.js} +41 -27
- package/dist/chunk-PKIT6YQN.js.map +1 -0
- package/dist/chunk-RF735UV3.cjs +153 -0
- package/dist/chunk-RF735UV3.cjs.map +1 -0
- package/dist/{chunk-VJ4BV4K2.js → chunk-UYBB4K56.js} +43 -35
- package/dist/chunk-UYBB4K56.js.map +1 -0
- package/dist/index.cjs +34 -90
- package/dist/index.d.cts +24 -3
- package/dist/index.d.ts +24 -3
- package/dist/index.js +3 -3
- package/dist/node.cjs +26 -22
- package/dist/node.d.cts +5 -6
- package/dist/node.d.ts +5 -6
- package/dist/node.js +2 -2
- package/dist/{utils-1Ds0QKBI.d.cts → types-C7UlGfO2.d.cts} +15 -8
- package/dist/{utils-1Ds0QKBI.d.ts → types-C7UlGfO2.d.ts} +15 -8
- package/dist/web-api.cjs +26 -22
- package/dist/web-api.d.cts +5 -6
- package/dist/web-api.d.ts +5 -6
- package/dist/web-api.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-6EC6NPNV.cjs +0 -139
- package/dist/chunk-6EC6NPNV.cjs.map +0 -1
- package/dist/chunk-DAMEE4F4.cjs +0 -208
- package/dist/chunk-DAMEE4F4.cjs.map +0 -1
- package/dist/chunk-HSRKAY2V.js.map +0 -1
- package/dist/chunk-IHTNNCLY.js +0 -48
- package/dist/chunk-IHTNNCLY.js.map +0 -1
- package/dist/chunk-SSMTQMF4.cjs +0 -58
- package/dist/chunk-SSMTQMF4.cjs.map +0 -1
- package/dist/chunk-VJ4BV4K2.js.map +0 -1
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkIMSNCUFU_cjs = require('./chunk-IMSNCUFU.cjs');
|
|
4
|
+
var buffer = require('buffer');
|
|
5
|
+
var nodeCrypto = require('crypto');
|
|
6
|
+
|
|
7
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
+
|
|
9
|
+
var nodeCrypto__default = /*#__PURE__*/_interopDefault(nodeCrypto);
|
|
10
|
+
|
|
11
|
+
function encode(data, format = "utf8") {
|
|
12
|
+
try {
|
|
13
|
+
return chunkIMSNCUFU_cjs.$ok({ bytes: buffer.Buffer.from(data, format) });
|
|
14
|
+
} catch (error) {
|
|
15
|
+
return chunkIMSNCUFU_cjs.$err({ msg: "Failed to encode data", desc: chunkIMSNCUFU_cjs.$stringifyError(error) });
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function decode(data, format = "utf8") {
|
|
19
|
+
try {
|
|
20
|
+
return chunkIMSNCUFU_cjs.$ok(buffer.Buffer.from(data).toString(format));
|
|
21
|
+
} catch (error) {
|
|
22
|
+
return chunkIMSNCUFU_cjs.$err({ msg: "Failed to decode data", desc: chunkIMSNCUFU_cjs.$stringifyError(error) });
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function generateUuid() {
|
|
26
|
+
try {
|
|
27
|
+
return chunkIMSNCUFU_cjs.$ok(nodeCrypto__default.default.randomUUID());
|
|
28
|
+
} catch (error) {
|
|
29
|
+
return chunkIMSNCUFU_cjs.$err({ msg: "Failed to generate UUID with Crypto NodeJS", desc: chunkIMSNCUFU_cjs.$stringifyError(error) });
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function isNodeKey(key) {
|
|
33
|
+
return key instanceof nodeCrypto__default.default.KeyObject;
|
|
34
|
+
}
|
|
35
|
+
function hash(data) {
|
|
36
|
+
if (!chunkIMSNCUFU_cjs.$isStr(data)) {
|
|
37
|
+
return chunkIMSNCUFU_cjs.$err({ msg: "Empty data for hashing", desc: "Data must be a non-empty string" });
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
const hashed = nodeCrypto__default.default.createHash("sha256").update(data).digest();
|
|
41
|
+
return decode(hashed, "base64url");
|
|
42
|
+
} catch (error) {
|
|
43
|
+
return chunkIMSNCUFU_cjs.$err({ msg: "Failed to hash data with Crypto NodeJS", desc: chunkIMSNCUFU_cjs.$stringifyError(error) });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function createSecretKey(key) {
|
|
47
|
+
if (typeof key === "string") {
|
|
48
|
+
if (!chunkIMSNCUFU_cjs.$isStr(key, 1)) return chunkIMSNCUFU_cjs.$err({ msg: "Empty key for Crypto NodeJS", desc: "Invalid secret key" });
|
|
49
|
+
try {
|
|
50
|
+
const hashedKey = nodeCrypto__default.default.createHash("sha256").update(key).digest();
|
|
51
|
+
const secretKey = nodeCrypto__default.default.createSecretKey(hashedKey);
|
|
52
|
+
return chunkIMSNCUFU_cjs.$ok({ secretKey });
|
|
53
|
+
} catch (error) {
|
|
54
|
+
return chunkIMSNCUFU_cjs.$err({ msg: "Failed to create secret key with Crypto NodeJS", desc: chunkIMSNCUFU_cjs.$stringifyError(error) });
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (!isNodeKey(key)) return chunkIMSNCUFU_cjs.$err({ msg: "Invalid secret key", desc: "Expected a crypto.KeyObject" });
|
|
58
|
+
return chunkIMSNCUFU_cjs.$ok({ secretKey: key });
|
|
59
|
+
}
|
|
60
|
+
function encrypt(data, secretKey) {
|
|
61
|
+
if (!chunkIMSNCUFU_cjs.$isStr(data)) {
|
|
62
|
+
return chunkIMSNCUFU_cjs.$err({ msg: "Empty data for encryption", desc: "Data must be a non-empty string" });
|
|
63
|
+
}
|
|
64
|
+
if (!isNodeKey(secretKey)) {
|
|
65
|
+
return chunkIMSNCUFU_cjs.$err({ msg: "Invalid encryption key", desc: "Expected a crypto.KeyObject" });
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
const iv = nodeCrypto__default.default.randomBytes(12);
|
|
69
|
+
const cipher = nodeCrypto__default.default.createCipheriv(chunkIMSNCUFU_cjs.NODE_ALGORITHM, secretKey, iv);
|
|
70
|
+
const encrypted = buffer.Buffer.concat([cipher.update(data, "utf8"), cipher.final()]);
|
|
71
|
+
const tag = cipher.getAuthTag();
|
|
72
|
+
const { result: decodedIv, error: ivError } = decode(iv, "base64url");
|
|
73
|
+
const { result: decodedEncrypted, error: encryptedError } = decode(encrypted, "base64url");
|
|
74
|
+
const { result: decodedTag, error: tagError } = decode(tag, "base64url");
|
|
75
|
+
if (ivError || encryptedError || tagError) {
|
|
76
|
+
return chunkIMSNCUFU_cjs.$err({ msg: "Failed to encode encrypted data", desc: "Encoding error" });
|
|
77
|
+
}
|
|
78
|
+
return chunkIMSNCUFU_cjs.$ok(`${decodedIv}.${decodedEncrypted}.${decodedTag}.`);
|
|
79
|
+
} catch (error) {
|
|
80
|
+
return chunkIMSNCUFU_cjs.$err({ msg: "Failed to encrypt data with Crypto NodeJS", desc: chunkIMSNCUFU_cjs.$stringifyError(error) });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function decrypt(encrypted, secretKey) {
|
|
84
|
+
if (chunkIMSNCUFU_cjs.isInNodeEncryptionFormat(encrypted) === false) {
|
|
85
|
+
return chunkIMSNCUFU_cjs.$err({
|
|
86
|
+
msg: "Invalid encrypted data format",
|
|
87
|
+
desc: 'Encrypted data must be in the format "iv.encrypted.tag."'
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
const [iv, encryptedData, tag] = encrypted.split(".", 4);
|
|
91
|
+
if (!chunkIMSNCUFU_cjs.$isStr(iv, 1) || !chunkIMSNCUFU_cjs.$isStr(encryptedData, 1) || !chunkIMSNCUFU_cjs.$isStr(tag, 1)) {
|
|
92
|
+
return chunkIMSNCUFU_cjs.$err({
|
|
93
|
+
msg: "Invalid parameters for decryption",
|
|
94
|
+
desc: "IV, encrypted data, and tag must be non-empty strings"
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
if (!isNodeKey(secretKey)) {
|
|
98
|
+
return chunkIMSNCUFU_cjs.$err({ msg: "Invalid decryption key", desc: "Expected a crypto.KeyObject" });
|
|
99
|
+
}
|
|
100
|
+
const { bytes: ivBytes, error: ivError } = encode(iv, "base64url");
|
|
101
|
+
const { bytes: encryptedBytes, error: encryptedError } = encode(encryptedData, "base64url");
|
|
102
|
+
const { bytes: tagBytes, error: tagError } = encode(tag, "base64url");
|
|
103
|
+
if (ivError || encryptedError || tagError) {
|
|
104
|
+
return chunkIMSNCUFU_cjs.$err({ msg: "Failed to encode IV or encrypted data", desc: "Encoding error" });
|
|
105
|
+
}
|
|
106
|
+
try {
|
|
107
|
+
const decipher = nodeCrypto__default.default.createDecipheriv(chunkIMSNCUFU_cjs.NODE_ALGORITHM, secretKey, ivBytes);
|
|
108
|
+
decipher.setAuthTag(tagBytes);
|
|
109
|
+
const decrypted = buffer.Buffer.concat([decipher.update(encryptedBytes), decipher.final()]);
|
|
110
|
+
return decode(decrypted, "utf8");
|
|
111
|
+
} catch (error) {
|
|
112
|
+
return chunkIMSNCUFU_cjs.$err({ msg: "Failed to decrypt data with Crypto NodeJS", desc: chunkIMSNCUFU_cjs.$stringifyError(error) });
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
function encryptObj(data, secretKey) {
|
|
116
|
+
const { result, error } = chunkIMSNCUFU_cjs.stringifyObj(data);
|
|
117
|
+
if (error) return chunkIMSNCUFU_cjs.$err(error);
|
|
118
|
+
return encrypt(result, secretKey);
|
|
119
|
+
}
|
|
120
|
+
function decryptObj(encrypted, secretKey) {
|
|
121
|
+
const { result, error } = decrypt(encrypted, secretKey);
|
|
122
|
+
if (error) return chunkIMSNCUFU_cjs.$err(error);
|
|
123
|
+
return chunkIMSNCUFU_cjs.parseToObj(result);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// src/node/export.ts
|
|
127
|
+
var export_exports = {};
|
|
128
|
+
chunkIMSNCUFU_cjs.__export(export_exports, {
|
|
129
|
+
createSecretKey: () => createSecretKey,
|
|
130
|
+
decode: () => decode,
|
|
131
|
+
decrypt: () => decrypt,
|
|
132
|
+
decryptObj: () => decryptObj,
|
|
133
|
+
encode: () => encode,
|
|
134
|
+
encrypt: () => encrypt,
|
|
135
|
+
encryptObj: () => encryptObj,
|
|
136
|
+
generateUuid: () => generateUuid,
|
|
137
|
+
hash: () => hash,
|
|
138
|
+
isNodeKey: () => isNodeKey
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
exports.createSecretKey = createSecretKey;
|
|
142
|
+
exports.decode = decode;
|
|
143
|
+
exports.decrypt = decrypt;
|
|
144
|
+
exports.decryptObj = decryptObj;
|
|
145
|
+
exports.encode = encode;
|
|
146
|
+
exports.encrypt = encrypt;
|
|
147
|
+
exports.encryptObj = encryptObj;
|
|
148
|
+
exports.export_exports = export_exports;
|
|
149
|
+
exports.generateUuid = generateUuid;
|
|
150
|
+
exports.hash = hash;
|
|
151
|
+
exports.isNodeKey = isNodeKey;
|
|
152
|
+
//# sourceMappingURL=chunk-RF735UV3.cjs.map
|
|
153
|
+
//# sourceMappingURL=chunk-RF735UV3.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/node/encode.ts","../src/node/encrypt.ts","../src/node/export.ts"],"names":["$ok","Buffer","$err","$stringifyError","nodeCrypto","$isStr","NODE_ALGORITHM","isInNodeEncryptionFormat","stringifyObj","parseToObj","__export"],"mappings":"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","file":"chunk-RF735UV3.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: '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: '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, 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: 'Failed to generate UUID with Crypto NodeJS', desc: $stringifyError(error) });\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 hash(data: string): 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 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: '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 if (!$isStr(key, 1)) return $err({ msg: 'Empty key for Crypto NodeJS', desc: 'Invalid secret key' });\r\n\r\n try {\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: 'Failed to create secret key with Crypto NodeJS', desc: $stringifyError(error) });\r\n }\r\n }\r\n\r\n if (!isNodeKey(key)) return $err({ msg: 'Invalid secret key', desc: 'Expected a crypto.KeyObject' });\r\n return $ok({ secretKey: key });\r\n}\r\n\r\nexport function encrypt(data: string, secretKey: NodeKey): 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 (!isNodeKey(secretKey)) {\r\n return $err({ msg: 'Invalid encryption key', desc: 'Expected a crypto.KeyObject' });\r\n }\r\n\r\n try {\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({ msg: 'Failed to encode encrypted data', desc: 'Encoding error' });\r\n }\r\n\r\n return $ok(`${decodedIv}.${decodedEncrypted}.${decodedTag}.`);\r\n } catch (error) {\r\n return $err({ msg: 'Failed to encrypt data with Crypto NodeJS', 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: 'Invalid encrypted data format',\r\n desc: 'Encrypted data must be in the format \"iv.encrypted.tag.\"',\r\n });\r\n }\r\n\r\n const [iv, encryptedData, tag] = encrypted.split('.', 4);\r\n if (!$isStr(iv, 1) || !$isStr(encryptedData, 1) || !$isStr(tag, 1)) {\r\n return $err({\r\n msg: 'Invalid parameters for decryption',\r\n desc: 'IV, encrypted data, and tag must be non-empty strings',\r\n });\r\n }\r\n\r\n if (!isNodeKey(secretKey)) {\r\n return $err({ msg: '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({ msg: 'Failed to encode IV or encrypted data', desc: 'Encoding error' });\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: 'Failed to decrypt data with Crypto NodeJS', 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, isNodeKey } from './encrypt';\r\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $
|
|
1
|
+
import { __export, $isStr, $err, $stringifyError, $ok, stringifyObj, WEB_API_ALGORITHM, parseToObj, isInWebApiEncryptionFormat } from './chunk-F52DT5C4.js';
|
|
2
2
|
|
|
3
3
|
// src/web/encode.ts
|
|
4
4
|
var textEncoder = new TextEncoder();
|
|
@@ -15,13 +15,10 @@ function encode(data, format = "utf8") {
|
|
|
15
15
|
case "utf8":
|
|
16
16
|
return $ok({ bytes: textEncoder.encode(data) });
|
|
17
17
|
default:
|
|
18
|
-
return $err({
|
|
19
|
-
message: `Unsupported encode format: ${format}`,
|
|
20
|
-
description: "Use base64, base64url, hex, or utf8"
|
|
21
|
-
});
|
|
18
|
+
return $err({ msg: `Unsupported encode format: ${format}`, desc: "Use base64, base64url, hex, or utf8" });
|
|
22
19
|
}
|
|
23
20
|
} catch (error) {
|
|
24
|
-
return $err({
|
|
21
|
+
return $err({ msg: "Failed to encode data", desc: $stringifyError(error) });
|
|
25
22
|
}
|
|
26
23
|
}
|
|
27
24
|
function decode(data, format = "utf8") {
|
|
@@ -37,13 +34,10 @@ function decode(data, format = "utf8") {
|
|
|
37
34
|
case "utf8":
|
|
38
35
|
return $ok(textDecoder.decode(bytes));
|
|
39
36
|
default:
|
|
40
|
-
return $err({
|
|
41
|
-
message: `Unsupported decode format: ${format}`,
|
|
42
|
-
description: "Use base64, base64url, hex, or utf8"
|
|
43
|
-
});
|
|
37
|
+
return $err({ msg: `Unsupported decode format: ${format}`, desc: "Use base64, base64url, hex, or utf8" });
|
|
44
38
|
}
|
|
45
39
|
} catch (error) {
|
|
46
|
-
return $err({
|
|
40
|
+
return $err({ msg: "Failed to decode data", desc: $stringifyError(error) });
|
|
47
41
|
}
|
|
48
42
|
}
|
|
49
43
|
function $toBase64(bytes) {
|
|
@@ -86,12 +80,11 @@ function $fromHex(data) {
|
|
|
86
80
|
}
|
|
87
81
|
|
|
88
82
|
// src/web/encrypt.ts
|
|
89
|
-
|
|
90
|
-
function newUuid() {
|
|
83
|
+
function generateUuid() {
|
|
91
84
|
try {
|
|
92
85
|
return $ok(crypto.randomUUID());
|
|
93
86
|
} catch (error) {
|
|
94
|
-
return $err({
|
|
87
|
+
return $err({ msg: "Failed to generate UUID with Crypto Web API", desc: $stringifyError(error) });
|
|
95
88
|
}
|
|
96
89
|
}
|
|
97
90
|
function isWebApiKey(key) {
|
|
@@ -99,7 +92,7 @@ function isWebApiKey(key) {
|
|
|
99
92
|
}
|
|
100
93
|
async function hash(data) {
|
|
101
94
|
if (!$isStr(data)) {
|
|
102
|
-
return $err({
|
|
95
|
+
return $err({ msg: "Empty data for hashing", desc: "Data must be a non-empty string" });
|
|
103
96
|
}
|
|
104
97
|
const { bytes, error } = encode(data, "utf8");
|
|
105
98
|
if (error) return $err(error);
|
|
@@ -107,12 +100,12 @@ async function hash(data) {
|
|
|
107
100
|
const hashed = await crypto.subtle.digest("SHA-256", bytes);
|
|
108
101
|
return decode(hashed, "base64url");
|
|
109
102
|
} catch (error2) {
|
|
110
|
-
return $err({
|
|
103
|
+
return $err({ msg: "Failed to hash data with Crypto Web API", desc: $stringifyError(error2) });
|
|
111
104
|
}
|
|
112
105
|
}
|
|
113
|
-
async function
|
|
106
|
+
async function createSecretKey(key) {
|
|
114
107
|
if (typeof key === "string") {
|
|
115
|
-
if (!$isStr(key, 1)) return $err({
|
|
108
|
+
if (!$isStr(key, 1)) return $err({ msg: "Empty key for Crypto Web API", desc: "Invalid secret key" });
|
|
116
109
|
const { bytes, error } = encode(key, "utf8");
|
|
117
110
|
if (error) return $err(error);
|
|
118
111
|
try {
|
|
@@ -123,18 +116,18 @@ async function newSecretKey(key) {
|
|
|
123
116
|
]);
|
|
124
117
|
return $ok({ secretKey });
|
|
125
118
|
} catch (error2) {
|
|
126
|
-
return $err({
|
|
119
|
+
return $err({ msg: "Failed to create secret key with Crypto Web API", desc: $stringifyError(error2) });
|
|
127
120
|
}
|
|
128
121
|
}
|
|
129
|
-
if (!isWebApiKey(key)) return $err({
|
|
122
|
+
if (!isWebApiKey(key)) return $err({ msg: "Invalid secret key", desc: "Expected a webcrypto.CryptoKey" });
|
|
130
123
|
return $ok({ secretKey: key });
|
|
131
124
|
}
|
|
132
125
|
async function encrypt(data, secretKey) {
|
|
133
126
|
if (!$isStr(data)) {
|
|
134
|
-
return $err({
|
|
127
|
+
return $err({ msg: "Empty data for encryption", desc: "Data must be a non-empty string" });
|
|
135
128
|
}
|
|
136
129
|
if (!isWebApiKey(secretKey)) {
|
|
137
|
-
return $err({
|
|
130
|
+
return $err({ msg: "Invalid encryption key", desc: "Expected a webcrypto.CryptoKey" });
|
|
138
131
|
}
|
|
139
132
|
const { bytes, error } = encode(data, "utf8");
|
|
140
133
|
if (error) return $err(error);
|
|
@@ -144,40 +137,40 @@ async function encrypt(data, secretKey) {
|
|
|
144
137
|
const { result: decodedIv, error: ivError } = decode(iv, "base64url");
|
|
145
138
|
const { result: decodedEncrypted, error: encryptedError } = decode(encrypted, "base64url");
|
|
146
139
|
if (ivError || encryptedError) {
|
|
147
|
-
return $err({
|
|
140
|
+
return $err({ msg: "Failed to encode IV or encrypted data", desc: "Encoding error" });
|
|
148
141
|
}
|
|
149
142
|
return $ok(`${decodedIv}.${decodedEncrypted}.`);
|
|
150
143
|
} catch (error2) {
|
|
151
|
-
return $err({
|
|
144
|
+
return $err({ msg: "Failed to encrypt data with Crypto Web API", desc: $stringifyError(error2) });
|
|
152
145
|
}
|
|
153
146
|
}
|
|
154
147
|
async function decrypt(encrypted, secretKey) {
|
|
155
|
-
if (
|
|
148
|
+
if (isInWebApiEncryptionFormat(encrypted) === false) {
|
|
156
149
|
return $err({
|
|
157
|
-
|
|
158
|
-
|
|
150
|
+
msg: "Invalid encrypted data format",
|
|
151
|
+
desc: 'Data must be in the format "iv.encryptedWithTag."'
|
|
159
152
|
});
|
|
160
153
|
}
|
|
161
154
|
const [iv, encryptedWithTag] = encrypted.split(".", 3);
|
|
162
155
|
if (!$isStr(iv, 1) || !$isStr(encryptedWithTag, 1)) {
|
|
163
156
|
return $err({
|
|
164
|
-
|
|
165
|
-
|
|
157
|
+
msg: "Invalid parameters for decryption",
|
|
158
|
+
desc: "IV and encrypted data must be non-empty strings"
|
|
166
159
|
});
|
|
167
160
|
}
|
|
168
161
|
if (!isWebApiKey(secretKey)) {
|
|
169
|
-
return $err({
|
|
162
|
+
return $err({ msg: "Invalid decryption key", desc: "Expected a webcrypto.CryptoKey" });
|
|
170
163
|
}
|
|
171
164
|
const { bytes: ivBytes, error: ivError } = encode(iv, "base64url");
|
|
172
165
|
const { bytes: encryptedBytes, error: encryptedError } = encode(encryptedWithTag, "base64url");
|
|
173
166
|
if (ivError || encryptedError) {
|
|
174
|
-
return $err({
|
|
167
|
+
return $err({ msg: "Failed to encode IV or encrypted data", desc: "Encoding error" });
|
|
175
168
|
}
|
|
176
169
|
try {
|
|
177
170
|
const decrypted = await crypto.subtle.decrypt({ name: WEB_API_ALGORITHM, iv: ivBytes }, secretKey, encryptedBytes);
|
|
178
171
|
return decode(decrypted, "utf8");
|
|
179
172
|
} catch (error) {
|
|
180
|
-
return $err({
|
|
173
|
+
return $err({ msg: "Failed to decrypt data with Crypto Web API", desc: $stringifyError(error) });
|
|
181
174
|
}
|
|
182
175
|
}
|
|
183
176
|
async function encryptObj(data, secretKey) {
|
|
@@ -191,6 +184,21 @@ async function decryptObj(encrypted, secretKey) {
|
|
|
191
184
|
return parseToObj(result);
|
|
192
185
|
}
|
|
193
186
|
|
|
194
|
-
export
|
|
195
|
-
|
|
196
|
-
|
|
187
|
+
// src/web/export.ts
|
|
188
|
+
var export_exports = {};
|
|
189
|
+
__export(export_exports, {
|
|
190
|
+
createSecretKey: () => createSecretKey,
|
|
191
|
+
decode: () => decode,
|
|
192
|
+
decrypt: () => decrypt,
|
|
193
|
+
decryptObj: () => decryptObj,
|
|
194
|
+
encode: () => encode,
|
|
195
|
+
encrypt: () => encrypt,
|
|
196
|
+
encryptObj: () => encryptObj,
|
|
197
|
+
generateUuid: () => generateUuid,
|
|
198
|
+
hash: () => hash,
|
|
199
|
+
isWebApiKey: () => isWebApiKey
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
export { createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, export_exports, generateUuid, hash, isWebApiKey };
|
|
203
|
+
//# sourceMappingURL=chunk-UYBB4K56.js.map
|
|
204
|
+
//# sourceMappingURL=chunk-UYBB4K56.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/web/encode.ts","../src/web/encrypt.ts","../src/web/export.ts"],"names":["error"],"mappings":"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","file":"chunk-UYBB4K56.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({ 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"]}
|
package/dist/index.cjs
CHANGED
|
@@ -1,146 +1,90 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var chunkRF735UV3_cjs = require('./chunk-RF735UV3.cjs');
|
|
4
|
+
var chunk65XPPPAR_cjs = require('./chunk-65XPPPAR.cjs');
|
|
5
|
+
var chunkIMSNCUFU_cjs = require('./chunk-IMSNCUFU.cjs');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
Object.defineProperty(exports, "
|
|
9
|
+
Object.defineProperty(exports, "createSecretKey", {
|
|
10
10
|
enumerable: true,
|
|
11
|
-
get: function () { return
|
|
11
|
+
get: function () { return chunkRF735UV3_cjs.createSecretKey; }
|
|
12
12
|
});
|
|
13
13
|
Object.defineProperty(exports, "decode", {
|
|
14
14
|
enumerable: true,
|
|
15
|
-
get: function () { return
|
|
15
|
+
get: function () { return chunkRF735UV3_cjs.decode; }
|
|
16
16
|
});
|
|
17
17
|
Object.defineProperty(exports, "decrypt", {
|
|
18
18
|
enumerable: true,
|
|
19
|
-
get: function () { return
|
|
19
|
+
get: function () { return chunkRF735UV3_cjs.decrypt; }
|
|
20
20
|
});
|
|
21
21
|
Object.defineProperty(exports, "decryptObj", {
|
|
22
22
|
enumerable: true,
|
|
23
|
-
get: function () { return
|
|
23
|
+
get: function () { return chunkRF735UV3_cjs.decryptObj; }
|
|
24
24
|
});
|
|
25
25
|
Object.defineProperty(exports, "encode", {
|
|
26
26
|
enumerable: true,
|
|
27
|
-
get: function () { return
|
|
27
|
+
get: function () { return chunkRF735UV3_cjs.encode; }
|
|
28
28
|
});
|
|
29
29
|
Object.defineProperty(exports, "encrypt", {
|
|
30
30
|
enumerable: true,
|
|
31
|
-
get: function () { return
|
|
31
|
+
get: function () { return chunkRF735UV3_cjs.encrypt; }
|
|
32
32
|
});
|
|
33
33
|
Object.defineProperty(exports, "encryptObj", {
|
|
34
34
|
enumerable: true,
|
|
35
|
-
get: function () { return
|
|
36
|
-
});
|
|
37
|
-
Object.defineProperty(exports, "hash", {
|
|
38
|
-
enumerable: true,
|
|
39
|
-
get: function () { return chunk6EC6NPNV_cjs.hash; }
|
|
40
|
-
});
|
|
41
|
-
Object.defineProperty(exports, "isNodeKey", {
|
|
42
|
-
enumerable: true,
|
|
43
|
-
get: function () { return chunk6EC6NPNV_cjs.isNodeKey; }
|
|
44
|
-
});
|
|
45
|
-
Object.defineProperty(exports, "newNodeSecretKey", {
|
|
46
|
-
enumerable: true,
|
|
47
|
-
get: function () { return chunk6EC6NPNV_cjs.newSecretKey; }
|
|
35
|
+
get: function () { return chunkRF735UV3_cjs.encryptObj; }
|
|
48
36
|
});
|
|
49
|
-
Object.defineProperty(exports, "
|
|
37
|
+
Object.defineProperty(exports, "generateUuid", {
|
|
50
38
|
enumerable: true,
|
|
51
|
-
get: function () { return
|
|
39
|
+
get: function () { return chunkRF735UV3_cjs.generateUuid; }
|
|
52
40
|
});
|
|
53
|
-
Object.defineProperty(exports, "
|
|
54
|
-
enumerable: true,
|
|
55
|
-
get: function () { return chunk6EC6NPNV_cjs.newSecretKey; }
|
|
56
|
-
});
|
|
57
|
-
Object.defineProperty(exports, "newUuid", {
|
|
58
|
-
enumerable: true,
|
|
59
|
-
get: function () { return chunk6EC6NPNV_cjs.newUuid; }
|
|
60
|
-
});
|
|
61
|
-
Object.defineProperty(exports, "nodeDecode", {
|
|
62
|
-
enumerable: true,
|
|
63
|
-
get: function () { return chunk6EC6NPNV_cjs.decode; }
|
|
64
|
-
});
|
|
65
|
-
Object.defineProperty(exports, "nodeDecrypt", {
|
|
41
|
+
Object.defineProperty(exports, "hash", {
|
|
66
42
|
enumerable: true,
|
|
67
|
-
get: function () { return
|
|
43
|
+
get: function () { return chunkRF735UV3_cjs.hash; }
|
|
68
44
|
});
|
|
69
|
-
Object.defineProperty(exports, "
|
|
45
|
+
Object.defineProperty(exports, "isNodeKey", {
|
|
70
46
|
enumerable: true,
|
|
71
|
-
get: function () { return
|
|
47
|
+
get: function () { return chunkRF735UV3_cjs.isNodeKey; }
|
|
72
48
|
});
|
|
73
|
-
Object.defineProperty(exports, "
|
|
49
|
+
Object.defineProperty(exports, "node", {
|
|
74
50
|
enumerable: true,
|
|
75
|
-
get: function () { return
|
|
51
|
+
get: function () { return chunkRF735UV3_cjs.export_exports; }
|
|
76
52
|
});
|
|
77
|
-
Object.defineProperty(exports, "
|
|
53
|
+
Object.defineProperty(exports, "webApi", {
|
|
78
54
|
enumerable: true,
|
|
79
|
-
get: function () { return
|
|
55
|
+
get: function () { return chunk65XPPPAR_cjs.export_exports; }
|
|
80
56
|
});
|
|
81
|
-
Object.defineProperty(exports, "
|
|
57
|
+
Object.defineProperty(exports, "ENCRYPTION_REGEX", {
|
|
82
58
|
enumerable: true,
|
|
83
|
-
get: function () { return
|
|
59
|
+
get: function () { return chunkIMSNCUFU_cjs.ENCRYPTION_REGEX; }
|
|
84
60
|
});
|
|
85
|
-
Object.defineProperty(exports, "
|
|
61
|
+
Object.defineProperty(exports, "NODE_ALGORITHM", {
|
|
86
62
|
enumerable: true,
|
|
87
|
-
get: function () { return
|
|
63
|
+
get: function () { return chunkIMSNCUFU_cjs.NODE_ALGORITHM; }
|
|
88
64
|
});
|
|
89
65
|
Object.defineProperty(exports, "WEB_API_ALGORITHM", {
|
|
90
66
|
enumerable: true,
|
|
91
|
-
get: function () { return
|
|
92
|
-
});
|
|
93
|
-
Object.defineProperty(exports, "isWebApiKey", {
|
|
94
|
-
enumerable: true,
|
|
95
|
-
get: function () { return chunkDAMEE4F4_cjs.isWebApiKey; }
|
|
96
|
-
});
|
|
97
|
-
Object.defineProperty(exports, "newWebSecretKey", {
|
|
98
|
-
enumerable: true,
|
|
99
|
-
get: function () { return chunkDAMEE4F4_cjs.newSecretKey; }
|
|
100
|
-
});
|
|
101
|
-
Object.defineProperty(exports, "newWebUuid", {
|
|
102
|
-
enumerable: true,
|
|
103
|
-
get: function () { return chunkDAMEE4F4_cjs.newUuid; }
|
|
104
|
-
});
|
|
105
|
-
Object.defineProperty(exports, "webDecode", {
|
|
106
|
-
enumerable: true,
|
|
107
|
-
get: function () { return chunkDAMEE4F4_cjs.decode; }
|
|
108
|
-
});
|
|
109
|
-
Object.defineProperty(exports, "webDecrypt", {
|
|
110
|
-
enumerable: true,
|
|
111
|
-
get: function () { return chunkDAMEE4F4_cjs.decrypt; }
|
|
112
|
-
});
|
|
113
|
-
Object.defineProperty(exports, "webEncode", {
|
|
114
|
-
enumerable: true,
|
|
115
|
-
get: function () { return chunkDAMEE4F4_cjs.encode; }
|
|
116
|
-
});
|
|
117
|
-
Object.defineProperty(exports, "webEncrypt", {
|
|
118
|
-
enumerable: true,
|
|
119
|
-
get: function () { return chunkDAMEE4F4_cjs.encrypt; }
|
|
120
|
-
});
|
|
121
|
-
Object.defineProperty(exports, "webHash", {
|
|
122
|
-
enumerable: true,
|
|
123
|
-
get: function () { return chunkDAMEE4F4_cjs.hash; }
|
|
67
|
+
get: function () { return chunkIMSNCUFU_cjs.WEB_API_ALGORITHM; }
|
|
124
68
|
});
|
|
125
|
-
Object.defineProperty(exports, "
|
|
69
|
+
Object.defineProperty(exports, "isInEncryptionFormat", {
|
|
126
70
|
enumerable: true,
|
|
127
|
-
get: function () { return
|
|
71
|
+
get: function () { return chunkIMSNCUFU_cjs.isInEncryptionFormat; }
|
|
128
72
|
});
|
|
129
|
-
Object.defineProperty(exports, "
|
|
73
|
+
Object.defineProperty(exports, "isInNodeEncryptionFormat", {
|
|
130
74
|
enumerable: true,
|
|
131
|
-
get: function () { return
|
|
75
|
+
get: function () { return chunkIMSNCUFU_cjs.isInNodeEncryptionFormat; }
|
|
132
76
|
});
|
|
133
|
-
Object.defineProperty(exports, "
|
|
77
|
+
Object.defineProperty(exports, "isInWebApiEncryptionFormat", {
|
|
134
78
|
enumerable: true,
|
|
135
|
-
get: function () { return
|
|
79
|
+
get: function () { return chunkIMSNCUFU_cjs.isInWebApiEncryptionFormat; }
|
|
136
80
|
});
|
|
137
81
|
Object.defineProperty(exports, "parseToObj", {
|
|
138
82
|
enumerable: true,
|
|
139
|
-
get: function () { return
|
|
83
|
+
get: function () { return chunkIMSNCUFU_cjs.parseToObj; }
|
|
140
84
|
});
|
|
141
85
|
Object.defineProperty(exports, "stringifyObj", {
|
|
142
86
|
enumerable: true,
|
|
143
|
-
get: function () { return
|
|
87
|
+
get: function () { return chunkIMSNCUFU_cjs.stringifyObj; }
|
|
144
88
|
});
|
|
145
89
|
//# sourceMappingURL=index.cjs.map
|
|
146
90
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
|
-
export { E as
|
|
2
|
-
|
|
3
|
-
|
|
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.cjs';
|
|
2
|
+
import { createSecretKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, generateUuid, hash, isNodeKey } from './node.cjs';
|
|
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.cjs';
|
|
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 webApi };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
|
-
export { E as
|
|
2
|
-
|
|
3
|
-
|
|
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 webApi };
|