cipher-kit 0.0.3 → 0.0.4

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.
@@ -24,7 +24,7 @@ function $isStr(value, min = 0) {
24
24
  function $isObj(value) {
25
25
  return typeof value === "object" && value !== null && value !== void 0 && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);
26
26
  }
27
- function $stringifyObj(obj) {
27
+ function stringifyObj(obj) {
28
28
  if (!$isObj(obj)) return $err({ message: "Invalid object", description: "Input is not a plain object" });
29
29
  try {
30
30
  return $ok(JSON.stringify(obj));
@@ -32,7 +32,7 @@ function $stringifyObj(obj) {
32
32
  return $err({ message: "Stringify error", description: $stringifyError(error) });
33
33
  }
34
34
  }
35
- function $parseToObj(str) {
35
+ function parseToObj(str) {
36
36
  if (!$isStr(str)) return $err({ message: "Invalid input", description: "Input is not a valid string" });
37
37
  try {
38
38
  const obj = JSON.parse(str);
@@ -48,11 +48,11 @@ function $parseToObj(str) {
48
48
  exports.$err = $err;
49
49
  exports.$isStr = $isStr;
50
50
  exports.$ok = $ok;
51
- exports.$parseToObj = $parseToObj;
52
51
  exports.$stringifyError = $stringifyError;
53
- exports.$stringifyObj = $stringifyObj;
54
52
  exports.ENCRYPTED_NODE_REGEX = ENCRYPTED_NODE_REGEX;
55
53
  exports.ENCRYPTED_REGEX = ENCRYPTED_REGEX;
56
54
  exports.ENCRYPTED_WEB_REGEX = ENCRYPTED_WEB_REGEX;
57
- //# sourceMappingURL=chunk-WD5FWRQ4.cjs.map
58
- //# sourceMappingURL=chunk-WD5FWRQ4.cjs.map
55
+ exports.parseToObj = parseToObj;
56
+ exports.stringifyObj = stringifyObj;
57
+ //# sourceMappingURL=chunk-SSMTQMF4.cjs.map
58
+ //# sourceMappingURL=chunk-SSMTQMF4.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/error.ts","../src/utils.ts"],"names":[],"mappings":";;;AAeO,SAAS,IAAO,MAAA,EAAuB;AAC5C,EAAA,IAAI,MAAA,CAAO,MAAM,CAAA,EAAG,OAAO,EAAE,OAAA,EAAS,IAAA,EAAM,GAAI,MAAA,EAAsB;AACtE,EAAA,OAAO,EAAE,OAAA,EAAS,IAAA,EAAM,MAAA,EAAO;AACjC;AAIO,SAAS,KAAK,SAAA,EAA2F;AAC9G,EAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,SAAA,EAAU;AAC5C;AAEO,SAAS,gBAAgB,KAAA,EAAwB;AACtD,EAAA,IAAI,KAAA,YAAiB,KAAA,EAAO,OAAO,KAAA,CAAM,OAAA;AACzC,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AACtC,EAAA,OAAO,OAAO,KAAK,CAAA;AACrB;;;AC5BO,IAAM,eAAA,GAAkB;AACxB,IAAM,oBAAA,GAAuB;AAC7B,IAAM,mBAAA,GAAsB;AAE5B,SAAS,MAAA,CAAO,KAAA,EAAgB,GAAA,GAAM,CAAA,EAAoB;AAC/D,EAAA,OAAA,CAAQ,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,KAAc,OAAO,UAAU,QAAA,IAAY,KAAA,CAAM,IAAA,EAAK,CAAE,MAAA,IAAU,GAAA;AACxG;AAEO,SAAS,OAAO,KAAA,EAAkD;AACvE,EAAA,OACE,OAAO,KAAA,KAAU,QAAA,IACjB,KAAA,KAAU,IAAA,IACV,UAAU,MAAA,KACT,MAAA,CAAO,cAAA,CAAe,KAAK,MAAM,MAAA,CAAO,SAAA,IAAa,MAAA,CAAO,cAAA,CAAe,KAAK,CAAA,KAAM,IAAA,CAAA;AAE3F;AAEO,SAAS,cAAc,GAAA,EAA8C;AAC1E,EAAA,IAAI,CAAC,MAAA,CAAO,GAAG,CAAA,EAAG,OAAO,IAAA,CAAK,EAAE,OAAA,EAAS,gBAAA,EAAkB,WAAA,EAAa,6BAAA,EAA+B,CAAA;AAEvG,EAAA,IAAI;AACF,IAAA,OAAO,GAAA,CAAI,IAAA,CAAK,SAAA,CAAU,GAAG,CAAC,CAAA;AAAA,EAChC,SAAS,KAAA,EAAO;AACd,IAAA,OAAO,IAAA,CAAK,EAAE,OAAA,EAAS,iBAAA,EAAmB,aAAa,eAAA,CAAgB,KAAK,GAAG,CAAA;AAAA,EACjF;AACF;AAEO,SAAS,YAAY,GAAA,EAA0D;AACpF,EAAA,IAAI,CAAC,MAAA,CAAO,GAAG,CAAA,EAAG,OAAO,IAAA,CAAK,EAAE,OAAA,EAAS,eAAA,EAAiB,WAAA,EAAa,6BAAA,EAA+B,CAAA;AAEtG,EAAA,IAAI;AACF,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC1B,IAAA,IAAI,CAAC,MAAA,CAAO,GAAG,CAAA,EAAG;AAChB,MAAA,OAAO,KAAK,EAAE,OAAA,EAAS,uBAAA,EAAyB,WAAA,EAAa,qCAAqC,CAAA;AAAA,IACpG;AAEA,IAAA,OAAO,GAAA,CAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA;AAAA,EAC5B,SAAS,KAAA,EAAO;AACd,IAAA,OAAO,IAAA,CAAK,EAAE,OAAA,EAAS,gBAAA,EAAkB,aAAa,eAAA,CAAgB,KAAK,GAAG,CAAA;AAAA,EAChF;AACF","file":"chunk-WD5FWRQ4.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(typeOrErr: { message: string; description: string }): Result<never, ResultErr>;\r\nexport function $err(typeOrErr: ResultErr): Result<never, ResultErr>;\r\nexport function $err(typeOrErr: { message: string; description: string } | ResultErr): Result<never, ResultErr> {\r\n return { success: false, error: typeOrErr } as Result<never, ResultErr>;\r\n}\r\n\r\nexport function $stringifyError(error: unknown): string {\r\n if (error instanceof Error) return error.message;\r\n if (typeof error === 'string') return error;\r\n return String(error);\r\n}\r\n","import { $err, $ok, $stringifyError, type Result } from './error';\r\n\r\nexport const ENCRYPTED_REGEX = /^(?:[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+(?:\\.[A-Za-z0-9_-]+)?\\.)$/;\r\nexport const ENCRYPTED_NODE_REGEX = /^([A-Za-z0-9_-]+)\\.([A-Za-z0-9_-]+)\\.([A-Za-z0-9_-]+)\\.$/;\r\nexport const ENCRYPTED_WEB_REGEX = /^([A-Za-z0-9_-]+)\\.([A-Za-z0-9_-]+)\\.$/;\r\n\r\nexport function $isStr(value: unknown, min = 0): value is string {\r\n return (value !== null || value !== undefined) && typeof value === 'string' && value.trim().length >= min;\r\n}\r\n\r\nexport function $isObj(value: unknown): value is Record<string, unknown> {\r\n return (\r\n typeof value === 'object' &&\r\n value !== null &&\r\n value !== undefined &&\r\n (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null)\r\n );\r\n}\r\n\r\nexport function $stringifyObj(obj: Record<string, unknown>): Result<string> {\r\n if (!$isObj(obj)) return $err({ message: 'Invalid object', description: 'Input is not a plain object' });\r\n\r\n try {\r\n return $ok(JSON.stringify(obj));\r\n } catch (error) {\r\n return $err({ message: 'Stringify error', description: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport function $parseToObj(str: string): Result<{ result: Record<string, unknown> }> {\r\n if (!$isStr(str)) return $err({ message: 'Invalid input', description: 'Input is not a valid string' });\r\n\r\n try {\r\n const obj = JSON.parse(str);\r\n if (!$isObj(obj)) {\r\n return $err({ message: 'Invalid object format', description: 'Parsed data is not a plain object' });\r\n }\r\n\r\n return $ok({ result: obj });\r\n } catch (error) {\r\n return $err({ message: 'Invalid format', description: $stringifyError(error) });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"sources":["../src/error.ts","../src/utils.ts"],"names":[],"mappings":";;;AAeO,SAAS,IAAO,MAAA,EAAuB;AAC5C,EAAA,IAAI,MAAA,CAAO,MAAM,CAAA,EAAG,OAAO,EAAE,OAAA,EAAS,IAAA,EAAM,GAAI,MAAA,EAAsB;AACtE,EAAA,OAAO,EAAE,OAAA,EAAS,IAAA,EAAM,MAAA,EAAO;AACjC;AAIO,SAAS,KAAK,SAAA,EAA2F;AAC9G,EAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,SAAA,EAAU;AAC5C;AAEO,SAAS,gBAAgB,KAAA,EAAwB;AACtD,EAAA,IAAI,KAAA,YAAiB,KAAA,EAAO,OAAO,KAAA,CAAM,OAAA;AACzC,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AACtC,EAAA,OAAO,OAAO,KAAK,CAAA;AACrB;;;AC5BO,IAAM,eAAA,GAAkB;AACxB,IAAM,oBAAA,GAAuB;AAC7B,IAAM,mBAAA,GAAsB;AAE5B,SAAS,MAAA,CAAO,KAAA,EAAgB,GAAA,GAAM,CAAA,EAAoB;AAC/D,EAAA,OAAA,CAAQ,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,KAAc,OAAO,UAAU,QAAA,IAAY,KAAA,CAAM,IAAA,EAAK,CAAE,MAAA,IAAU,GAAA;AACxG;AAEO,SAAS,OAAO,KAAA,EAAkD;AACvE,EAAA,OACE,OAAO,KAAA,KAAU,QAAA,IACjB,KAAA,KAAU,IAAA,IACV,UAAU,MAAA,KACT,MAAA,CAAO,cAAA,CAAe,KAAK,MAAM,MAAA,CAAO,SAAA,IAAa,MAAA,CAAO,cAAA,CAAe,KAAK,CAAA,KAAM,IAAA,CAAA;AAE3F;AAEO,SAAS,aAAa,GAAA,EAA8C;AACzE,EAAA,IAAI,CAAC,MAAA,CAAO,GAAG,CAAA,EAAG,OAAO,IAAA,CAAK,EAAE,OAAA,EAAS,gBAAA,EAAkB,WAAA,EAAa,6BAAA,EAA+B,CAAA;AAEvG,EAAA,IAAI;AACF,IAAA,OAAO,GAAA,CAAI,IAAA,CAAK,SAAA,CAAU,GAAG,CAAC,CAAA;AAAA,EAChC,SAAS,KAAA,EAAO;AACd,IAAA,OAAO,IAAA,CAAK,EAAE,OAAA,EAAS,iBAAA,EAAmB,aAAa,eAAA,CAAgB,KAAK,GAAG,CAAA;AAAA,EACjF;AACF;AAEO,SAAS,WAAW,GAAA,EAA0D;AACnF,EAAA,IAAI,CAAC,MAAA,CAAO,GAAG,CAAA,EAAG,OAAO,IAAA,CAAK,EAAE,OAAA,EAAS,eAAA,EAAiB,WAAA,EAAa,6BAAA,EAA+B,CAAA;AAEtG,EAAA,IAAI;AACF,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC1B,IAAA,IAAI,CAAC,MAAA,CAAO,GAAG,CAAA,EAAG;AAChB,MAAA,OAAO,KAAK,EAAE,OAAA,EAAS,uBAAA,EAAyB,WAAA,EAAa,qCAAqC,CAAA;AAAA,IACpG;AAEA,IAAA,OAAO,GAAA,CAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA;AAAA,EAC5B,SAAS,KAAA,EAAO;AACd,IAAA,OAAO,IAAA,CAAK,EAAE,OAAA,EAAS,gBAAA,EAAkB,aAAa,eAAA,CAAgB,KAAK,GAAG,CAAA;AAAA,EAChF;AACF","file":"chunk-SSMTQMF4.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(typeOrErr: { message: string; description: string }): Result<never, ResultErr>;\r\nexport function $err(typeOrErr: ResultErr): Result<never, ResultErr>;\r\nexport function $err(typeOrErr: { message: string; description: string } | ResultErr): Result<never, ResultErr> {\r\n return { success: false, error: typeOrErr } as Result<never, ResultErr>;\r\n}\r\n\r\nexport function $stringifyError(error: unknown): string {\r\n if (error instanceof Error) return error.message;\r\n if (typeof error === 'string') return error;\r\n return String(error);\r\n}\r\n","import { $err, $ok, $stringifyError, type Result } from './error';\r\n\r\nexport const ENCRYPTED_REGEX = /^(?:[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+(?:\\.[A-Za-z0-9_-]+)?\\.)$/;\r\nexport const ENCRYPTED_NODE_REGEX = /^([A-Za-z0-9_-]+)\\.([A-Za-z0-9_-]+)\\.([A-Za-z0-9_-]+)\\.$/;\r\nexport const ENCRYPTED_WEB_REGEX = /^([A-Za-z0-9_-]+)\\.([A-Za-z0-9_-]+)\\.$/;\r\n\r\nexport function $isStr(value: unknown, min = 0): value is string {\r\n return (value !== null || value !== undefined) && typeof value === 'string' && value.trim().length >= min;\r\n}\r\n\r\nexport function $isObj(value: unknown): value is Record<string, unknown> {\r\n return (\r\n typeof value === 'object' &&\r\n value !== null &&\r\n value !== undefined &&\r\n (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null)\r\n );\r\n}\r\n\r\nexport function stringifyObj(obj: Record<string, unknown>): Result<string> {\r\n if (!$isObj(obj)) return $err({ message: 'Invalid object', description: 'Input is not a plain object' });\r\n\r\n try {\r\n return $ok(JSON.stringify(obj));\r\n } catch (error) {\r\n return $err({ message: 'Stringify error', description: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport function parseToObj(str: string): Result<{ result: Record<string, unknown> }> {\r\n if (!$isStr(str)) return $err({ message: 'Invalid input', description: 'Input is not a valid string' });\r\n\r\n try {\r\n const obj = JSON.parse(str);\r\n if (!$isObj(obj)) {\r\n return $err({ message: 'Invalid object format', description: 'Parsed data is not a plain object' });\r\n }\r\n\r\n return $ok({ result: obj });\r\n } catch (error) {\r\n return $err({ message: 'Invalid format', description: $stringifyError(error) });\r\n }\r\n}\r\n"]}
@@ -1,4 +1,4 @@
1
- import { $err, $ok, $stringifyError, $isStr, ENCRYPTED_WEB_REGEX, $stringifyObj, $parseToObj } from './chunk-72PZBMQR.js';
1
+ import { $err, $ok, $stringifyError, $isStr, ENCRYPTED_WEB_REGEX, stringifyObj, parseToObj } from './chunk-IHTNNCLY.js';
2
2
 
3
3
  // src/web/encode.ts
4
4
  var textEncoder = new TextEncoder();
@@ -85,7 +85,8 @@ function $fromHex(data) {
85
85
  return out;
86
86
  }
87
87
 
88
- // src/web/utils.ts
88
+ // src/web/encrypt.ts
89
+ var WEB_API_ALGORITHM = "AES-GCM";
89
90
  function newUuid() {
90
91
  try {
91
92
  return $ok(crypto.randomUUID());
@@ -93,12 +94,9 @@ function newUuid() {
93
94
  return $err({ message: "Failed to generate UUID with Crypto Web API", description: $stringifyError(error) });
94
95
  }
95
96
  }
96
- function $isWebApiKey(key) {
97
+ function isWebApiKey(key) {
97
98
  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");
98
99
  }
99
-
100
- // src/web/encrypt.ts
101
- var WEB_API_ALGORITHM = "AES-GCM";
102
100
  async function hash(data) {
103
101
  if (!$isStr(data)) {
104
102
  return $err({ message: "Empty data for hashing", description: "Data must be a non-empty string" });
@@ -128,14 +126,14 @@ async function newSecretKey(key) {
128
126
  return $err({ message: "Failed to create secret key with Crypto Web API", description: $stringifyError(error2) });
129
127
  }
130
128
  }
131
- if (!$isWebApiKey(key)) return $err({ message: "Invalid secret key", description: "Expected a webcrypto.CryptoKey" });
129
+ if (!isWebApiKey(key)) return $err({ message: "Invalid secret key", description: "Expected a webcrypto.CryptoKey" });
132
130
  return $ok({ secretKey: key });
133
131
  }
134
132
  async function encrypt(data, secretKey) {
135
133
  if (!$isStr(data)) {
136
134
  return $err({ message: "Empty data for encryption", description: "Data must be a non-empty string" });
137
135
  }
138
- if (!$isWebApiKey(secretKey)) {
136
+ if (!isWebApiKey(secretKey)) {
139
137
  return $err({ message: "Invalid encryption key", description: "Expected a webcrypto.CryptoKey" });
140
138
  }
141
139
  const { bytes, error } = encode(data, "utf8");
@@ -167,7 +165,7 @@ async function decrypt(encrypted, secretKey) {
167
165
  description: "IV and encrypted data must be non-empty strings"
168
166
  });
169
167
  }
170
- if (!$isWebApiKey(secretKey)) {
168
+ if (!isWebApiKey(secretKey)) {
171
169
  return $err({ message: "Invalid decryption key", description: "Expected a webcrypto.CryptoKey" });
172
170
  }
173
171
  const { bytes: ivBytes, error: ivError } = encode(iv, "base64url");
@@ -183,16 +181,16 @@ async function decrypt(encrypted, secretKey) {
183
181
  }
184
182
  }
185
183
  async function encryptObj(data, secretKey) {
186
- const { result, error } = $stringifyObj(data);
184
+ const { result, error } = stringifyObj(data);
187
185
  if (error) return $err(error);
188
186
  return await encrypt(result, secretKey);
189
187
  }
190
188
  async function decryptObj(encrypted, secretKey) {
191
189
  const { result, error } = await decrypt(encrypted, secretKey);
192
190
  if (error) return $err(error);
193
- return $parseToObj(result);
191
+ return parseToObj(result);
194
192
  }
195
193
 
196
- export { WEB_API_ALGORITHM, decode, decrypt, decryptObj, encode, encrypt, encryptObj, hash, newSecretKey, newUuid };
197
- //# sourceMappingURL=chunk-GYFL6RUD.js.map
198
- //# sourceMappingURL=chunk-GYFL6RUD.js.map
194
+ export { WEB_API_ALGORITHM, decode, decrypt, decryptObj, encode, encrypt, encryptObj, hash, isWebApiKey, newSecretKey, newUuid };
195
+ //# sourceMappingURL=chunk-VJ4BV4K2.js.map
196
+ //# sourceMappingURL=chunk-VJ4BV4K2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/web/encode.ts","../src/web/encrypt.ts"],"names":["error"],"mappings":"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","file":"chunk-VJ4BV4K2.js","sourcesContent":["import { $err, $ok, $stringifyError, type Result } from '~/error';\r\nimport type { EncodingFormat } from '~/types';\r\n\r\nconst textEncoder = new TextEncoder();\r\nconst textDecoder = new TextDecoder();\r\n\r\nexport function encode(data: string, format: EncodingFormat = 'utf8'): Result<{ bytes: Uint8Array }> {\r\n try {\r\n switch (format) {\r\n case 'base64':\r\n return $ok({ bytes: $fromBase64(data) });\r\n case 'base64url':\r\n return $ok({ bytes: $fromBase64Url(data) });\r\n case 'hex':\r\n return $ok({ bytes: $fromHex(data) });\r\n case 'utf8':\r\n return $ok({ bytes: textEncoder.encode(data) });\r\n default:\r\n return $err({\r\n message: `Unsupported encode format: ${format}`,\r\n description: 'Use base64, base64url, hex, or utf8',\r\n });\r\n }\r\n } catch (error) {\r\n return $err({ message: 'Failed to encode data', description: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport function decode(data: ArrayBuffer | Uint8Array, format: EncodingFormat = 'utf8'): Result<string> {\r\n try {\r\n const bytes = data instanceof Uint8Array ? data : new Uint8Array(data);\r\n switch (format) {\r\n case 'base64':\r\n return $ok($toBase64(bytes));\r\n case 'base64url':\r\n return $ok($toBase64Url(bytes));\r\n case 'hex':\r\n return $ok($toHex(bytes));\r\n case 'utf8':\r\n return $ok(textDecoder.decode(bytes));\r\n default:\r\n return $err({\r\n message: `Unsupported decode format: ${format}`,\r\n description: 'Use base64, base64url, hex, or utf8',\r\n });\r\n }\r\n } catch (error) {\r\n return $err({ message: 'Failed to decode data', description: $stringifyError(error) });\r\n }\r\n}\r\n\r\nfunction $toBase64(bytes: Uint8Array): string {\r\n let binary = '';\r\n const chunkSize = 0x8000; // 32KB per chunk\r\n for (let i = 0; i < bytes.length; i += chunkSize) {\r\n binary += String.fromCharCode(...bytes.subarray(i, i + chunkSize));\r\n }\r\n return btoa(binary);\r\n}\r\n\r\nfunction $fromBase64(data: string): Uint8Array {\r\n const binary = atob(data);\r\n const len = binary.length;\r\n const bytes = new Uint8Array(len);\r\n for (let i = 0; i < len; i++) {\r\n bytes[i] = binary.charCodeAt(i);\r\n }\r\n return bytes;\r\n}\r\n\r\nfunction $toBase64Url(bytes: Uint8Array): string {\r\n return $toBase64(bytes).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\r\n}\r\n\r\nfunction $fromBase64Url(data: string): Uint8Array {\r\n let b64 = data.replace(/-/g, '+').replace(/_/g, '/');\r\n const padLen = (4 - (b64.length % 4)) % 4;\r\n b64 += '='.repeat(padLen);\r\n return $fromBase64(b64);\r\n}\r\n\r\nfunction $toHex(bytes: Uint8Array): string {\r\n return Array.from(bytes)\r\n .map((b) => b.toString(16).padStart(2, '0'))\r\n .join('');\r\n}\r\n\r\nfunction $fromHex(data: string): Uint8Array {\r\n const clean = data.startsWith('0x') ? data.slice(2) : data;\r\n if (clean.length % 2 !== 0) throw new Error('Invalid hex string');\r\n const out = new Uint8Array(clean.length / 2);\r\n for (let i = 0; i < out.length; i++) {\r\n out[i] = Number.parseInt(clean.slice(i * 2, i * 2 + 2), 16);\r\n }\r\n return out;\r\n}\r\n","import { $err, $ok, $stringifyError, type Result } from '~/error';\r\nimport type { WebApiKey } from '~/types';\r\nimport { $isStr, ENCRYPTED_WEB_REGEX, parseToObj, stringifyObj } from '~/utils';\r\nimport { decode, encode } from './encode';\r\n\r\nexport const WEB_API_ALGORITHM = 'AES-GCM';\r\n\r\nexport function newUuid(): Result<string> {\r\n try {\r\n return $ok(crypto.randomUUID());\r\n } catch (error) {\r\n return $err({ message: 'Failed to generate UUID with Crypto Web API', description: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport function isWebApiKey(key: unknown): key is WebApiKey {\r\n return (\r\n key !== null &&\r\n key !== undefined &&\r\n typeof key === 'object' &&\r\n 'type' in key &&\r\n typeof key.type === 'string' &&\r\n 'algorithm' in key &&\r\n typeof key.algorithm === 'object' &&\r\n 'extractable' in key &&\r\n typeof key.extractable === 'boolean' &&\r\n 'usages' in key &&\r\n Array.isArray(key.usages) &&\r\n key.usages.every((usage) => typeof usage === 'string')\r\n );\r\n}\r\n\r\nexport async function hash(data: string): Promise<Result<string>> {\r\n if (!$isStr(data)) {\r\n return $err({ message: 'Empty data for hashing', description: 'Data must be a non-empty string' });\r\n }\r\n\r\n const { bytes, error } = encode(data, 'utf8');\r\n if (error) return $err(error);\r\n\r\n try {\r\n const hashed = await crypto.subtle.digest('SHA-256', bytes);\r\n return decode(hashed, 'base64url');\r\n } catch (error) {\r\n return $err({ message: 'Failed to hash data with Crypto Web API', description: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport async function newSecretKey(key: string | WebApiKey): Promise<Result<{ secretKey: WebApiKey }>> {\r\n if (typeof key === 'string') {\r\n if (!$isStr(key, 1)) return $err({ message: 'Empty key for Crypto Web API', description: 'Invalid secret key' });\r\n\r\n const { bytes, error } = encode(key, 'utf8');\r\n if (error) return $err(error);\r\n\r\n try {\r\n const hashedKey = await crypto.subtle.digest('SHA-256', bytes);\r\n const secretKey = await crypto.subtle.importKey('raw', hashedKey, { name: WEB_API_ALGORITHM }, true, [\r\n 'encrypt',\r\n 'decrypt',\r\n ]);\r\n return $ok({ secretKey });\r\n } catch (error) {\r\n return $err({ message: 'Failed to create secret key with Crypto Web API', description: $stringifyError(error) });\r\n }\r\n }\r\n\r\n if (!isWebApiKey(key)) return $err({ message: 'Invalid secret key', description: 'Expected a webcrypto.CryptoKey' });\r\n return $ok({ secretKey: key });\r\n}\r\n\r\nexport async function encrypt(data: string, secretKey: WebApiKey): Promise<Result<string>> {\r\n if (!$isStr(data)) {\r\n return $err({ message: 'Empty data for encryption', description: 'Data must be a non-empty string' });\r\n }\r\n\r\n if (!isWebApiKey(secretKey)) {\r\n return $err({ message: 'Invalid encryption key', description: 'Expected a webcrypto.CryptoKey' });\r\n }\r\n\r\n const { bytes, error } = encode(data, 'utf8');\r\n if (error) return $err(error);\r\n\r\n try {\r\n const iv = crypto.getRandomValues(new Uint8Array(12));\r\n const encrypted = await crypto.subtle.encrypt({ name: WEB_API_ALGORITHM, iv: iv }, secretKey, bytes);\r\n\r\n const { result: decodedIv, error: ivError } = decode(iv, 'base64url');\r\n const { result: decodedEncrypted, error: encryptedError } = decode(encrypted, 'base64url');\r\n\r\n if (ivError || encryptedError) {\r\n return $err({ message: 'Failed to encode IV or encrypted data', description: 'Encoding error' });\r\n }\r\n\r\n return $ok(`${decodedIv}.${decodedEncrypted}.`);\r\n } catch (error) {\r\n return $err({ message: 'Failed to encrypt data with Crypto Web API', description: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport async function decrypt(encrypted: string, secretKey: WebApiKey): Promise<Result<string>> {\r\n if (ENCRYPTED_WEB_REGEX.test(encrypted) === false) {\r\n return $err({\r\n message: 'Invalid encrypted data format',\r\n description: 'Data must be in the format \"iv.encryptedWithTag.\"',\r\n });\r\n }\r\n\r\n const [iv, encryptedWithTag] = encrypted.split('.', 3);\r\n if (!$isStr(iv, 1) || !$isStr(encryptedWithTag, 1)) {\r\n return $err({\r\n message: 'Invalid parameters for decryption',\r\n description: 'IV and encrypted data must be non-empty strings',\r\n });\r\n }\r\n\r\n if (!isWebApiKey(secretKey)) {\r\n return $err({ message: 'Invalid decryption key', description: 'Expected a webcrypto.CryptoKey' });\r\n }\r\n\r\n const { bytes: ivBytes, error: ivError } = encode(iv, 'base64url');\r\n const { bytes: encryptedBytes, error: encryptedError } = encode(encryptedWithTag, 'base64url');\r\n if (ivError || encryptedError) {\r\n return $err({ message: 'Failed to encode IV or encrypted data', description: 'Encoding error' });\r\n }\r\n\r\n try {\r\n const decrypted = await crypto.subtle.decrypt({ name: WEB_API_ALGORITHM, iv: ivBytes }, secretKey, encryptedBytes);\r\n\r\n return decode(decrypted, 'utf8');\r\n } catch (error) {\r\n return $err({ message: 'Failed to decrypt data with Crypto Web API', description: $stringifyError(error) });\r\n }\r\n}\r\n\r\nexport async function encryptObj(data: Record<string, unknown>, secretKey: WebApiKey): Promise<Result<string>> {\r\n const { result, error } = stringifyObj(data);\r\n if (error) return $err(error);\r\n return await encrypt(result, secretKey);\r\n}\r\n\r\nexport async function decryptObj(\r\n encrypted: string,\r\n secretKey: WebApiKey,\r\n): Promise<Result<{ result: Record<string, unknown> }>> {\r\n const { result, error } = await decrypt(encrypted, secretKey);\r\n if (error) return $err(error);\r\n return parseToObj(result);\r\n}\r\n"]}
package/dist/index.cjs CHANGED
@@ -1,130 +1,146 @@
1
1
  'use strict';
2
2
 
3
- var chunkWB7F34SY_cjs = require('./chunk-WB7F34SY.cjs');
4
- var chunkKFZLZJ2J_cjs = require('./chunk-KFZLZJ2J.cjs');
5
- var chunkWD5FWRQ4_cjs = require('./chunk-WD5FWRQ4.cjs');
3
+ var chunk6EC6NPNV_cjs = require('./chunk-6EC6NPNV.cjs');
4
+ var chunkDAMEE4F4_cjs = require('./chunk-DAMEE4F4.cjs');
5
+ var chunkSSMTQMF4_cjs = require('./chunk-SSMTQMF4.cjs');
6
6
 
7
7
 
8
8
 
9
9
  Object.defineProperty(exports, "NODE_ALGORITHM", {
10
10
  enumerable: true,
11
- get: function () { return chunkWB7F34SY_cjs.NODE_ALGORITHM; }
11
+ get: function () { return chunk6EC6NPNV_cjs.NODE_ALGORITHM; }
12
12
  });
13
13
  Object.defineProperty(exports, "decode", {
14
14
  enumerable: true,
15
- get: function () { return chunkWB7F34SY_cjs.decode; }
15
+ get: function () { return chunk6EC6NPNV_cjs.decode; }
16
16
  });
17
17
  Object.defineProperty(exports, "decrypt", {
18
18
  enumerable: true,
19
- get: function () { return chunkWB7F34SY_cjs.decrypt; }
19
+ get: function () { return chunk6EC6NPNV_cjs.decrypt; }
20
20
  });
21
21
  Object.defineProperty(exports, "decryptObj", {
22
22
  enumerable: true,
23
- get: function () { return chunkWB7F34SY_cjs.decryptObj; }
23
+ get: function () { return chunk6EC6NPNV_cjs.decryptObj; }
24
24
  });
25
25
  Object.defineProperty(exports, "encode", {
26
26
  enumerable: true,
27
- get: function () { return chunkWB7F34SY_cjs.encode; }
27
+ get: function () { return chunk6EC6NPNV_cjs.encode; }
28
28
  });
29
29
  Object.defineProperty(exports, "encrypt", {
30
30
  enumerable: true,
31
- get: function () { return chunkWB7F34SY_cjs.encrypt; }
31
+ get: function () { return chunk6EC6NPNV_cjs.encrypt; }
32
32
  });
33
33
  Object.defineProperty(exports, "encryptObj", {
34
34
  enumerable: true,
35
- get: function () { return chunkWB7F34SY_cjs.encryptObj; }
35
+ get: function () { return chunk6EC6NPNV_cjs.encryptObj; }
36
36
  });
37
37
  Object.defineProperty(exports, "hash", {
38
38
  enumerable: true,
39
- get: function () { return chunkWB7F34SY_cjs.hash; }
39
+ get: function () { return chunk6EC6NPNV_cjs.hash; }
40
+ });
41
+ Object.defineProperty(exports, "isNodeKey", {
42
+ enumerable: true,
43
+ get: function () { return chunk6EC6NPNV_cjs.isNodeKey; }
40
44
  });
41
45
  Object.defineProperty(exports, "newNodeSecretKey", {
42
46
  enumerable: true,
43
- get: function () { return chunkWB7F34SY_cjs.newSecretKey; }
47
+ get: function () { return chunk6EC6NPNV_cjs.newSecretKey; }
44
48
  });
45
49
  Object.defineProperty(exports, "newNodeUuid", {
46
50
  enumerable: true,
47
- get: function () { return chunkWB7F34SY_cjs.newUuid; }
51
+ get: function () { return chunk6EC6NPNV_cjs.newUuid; }
48
52
  });
49
53
  Object.defineProperty(exports, "newSecretKey", {
50
54
  enumerable: true,
51
- get: function () { return chunkWB7F34SY_cjs.newSecretKey; }
55
+ get: function () { return chunk6EC6NPNV_cjs.newSecretKey; }
52
56
  });
53
57
  Object.defineProperty(exports, "newUuid", {
54
58
  enumerable: true,
55
- get: function () { return chunkWB7F34SY_cjs.newUuid; }
59
+ get: function () { return chunk6EC6NPNV_cjs.newUuid; }
56
60
  });
57
61
  Object.defineProperty(exports, "nodeDecode", {
58
62
  enumerable: true,
59
- get: function () { return chunkWB7F34SY_cjs.decode; }
63
+ get: function () { return chunk6EC6NPNV_cjs.decode; }
60
64
  });
61
65
  Object.defineProperty(exports, "nodeDecrypt", {
62
66
  enumerable: true,
63
- get: function () { return chunkWB7F34SY_cjs.decrypt; }
67
+ get: function () { return chunk6EC6NPNV_cjs.decrypt; }
64
68
  });
65
69
  Object.defineProperty(exports, "nodeDecryptObj", {
66
70
  enumerable: true,
67
- get: function () { return chunkWB7F34SY_cjs.decryptObj; }
71
+ get: function () { return chunk6EC6NPNV_cjs.decryptObj; }
68
72
  });
69
73
  Object.defineProperty(exports, "nodeEncode", {
70
74
  enumerable: true,
71
- get: function () { return chunkWB7F34SY_cjs.encode; }
75
+ get: function () { return chunk6EC6NPNV_cjs.encode; }
72
76
  });
73
77
  Object.defineProperty(exports, "nodeEncrypt", {
74
78
  enumerable: true,
75
- get: function () { return chunkWB7F34SY_cjs.encrypt; }
79
+ get: function () { return chunk6EC6NPNV_cjs.encrypt; }
76
80
  });
77
81
  Object.defineProperty(exports, "nodeEncryptObj", {
78
82
  enumerable: true,
79
- get: function () { return chunkWB7F34SY_cjs.encryptObj; }
83
+ get: function () { return chunk6EC6NPNV_cjs.encryptObj; }
80
84
  });
81
85
  Object.defineProperty(exports, "nodeHash", {
82
86
  enumerable: true,
83
- get: function () { return chunkWB7F34SY_cjs.hash; }
87
+ get: function () { return chunk6EC6NPNV_cjs.hash; }
84
88
  });
85
89
  Object.defineProperty(exports, "WEB_API_ALGORITHM", {
86
90
  enumerable: true,
87
- get: function () { return chunkKFZLZJ2J_cjs.WEB_API_ALGORITHM; }
91
+ get: function () { return chunkDAMEE4F4_cjs.WEB_API_ALGORITHM; }
92
+ });
93
+ Object.defineProperty(exports, "isWebApiKey", {
94
+ enumerable: true,
95
+ get: function () { return chunkDAMEE4F4_cjs.isWebApiKey; }
88
96
  });
89
97
  Object.defineProperty(exports, "newWebSecretKey", {
90
98
  enumerable: true,
91
- get: function () { return chunkKFZLZJ2J_cjs.newSecretKey; }
99
+ get: function () { return chunkDAMEE4F4_cjs.newSecretKey; }
92
100
  });
93
101
  Object.defineProperty(exports, "newWebUuid", {
94
102
  enumerable: true,
95
- get: function () { return chunkKFZLZJ2J_cjs.newUuid; }
103
+ get: function () { return chunkDAMEE4F4_cjs.newUuid; }
96
104
  });
97
105
  Object.defineProperty(exports, "webDecode", {
98
106
  enumerable: true,
99
- get: function () { return chunkKFZLZJ2J_cjs.decode; }
107
+ get: function () { return chunkDAMEE4F4_cjs.decode; }
100
108
  });
101
109
  Object.defineProperty(exports, "webDecrypt", {
102
110
  enumerable: true,
103
- get: function () { return chunkKFZLZJ2J_cjs.decrypt; }
111
+ get: function () { return chunkDAMEE4F4_cjs.decrypt; }
104
112
  });
105
113
  Object.defineProperty(exports, "webEncode", {
106
114
  enumerable: true,
107
- get: function () { return chunkKFZLZJ2J_cjs.encode; }
115
+ get: function () { return chunkDAMEE4F4_cjs.encode; }
108
116
  });
109
117
  Object.defineProperty(exports, "webEncrypt", {
110
118
  enumerable: true,
111
- get: function () { return chunkKFZLZJ2J_cjs.encrypt; }
119
+ get: function () { return chunkDAMEE4F4_cjs.encrypt; }
112
120
  });
113
121
  Object.defineProperty(exports, "webHash", {
114
122
  enumerable: true,
115
- get: function () { return chunkKFZLZJ2J_cjs.hash; }
123
+ get: function () { return chunkDAMEE4F4_cjs.hash; }
116
124
  });
117
125
  Object.defineProperty(exports, "ENCRYPTED_NODE_REGEX", {
118
126
  enumerable: true,
119
- get: function () { return chunkWD5FWRQ4_cjs.ENCRYPTED_NODE_REGEX; }
127
+ get: function () { return chunkSSMTQMF4_cjs.ENCRYPTED_NODE_REGEX; }
120
128
  });
121
129
  Object.defineProperty(exports, "ENCRYPTED_REGEX", {
122
130
  enumerable: true,
123
- get: function () { return chunkWD5FWRQ4_cjs.ENCRYPTED_REGEX; }
131
+ get: function () { return chunkSSMTQMF4_cjs.ENCRYPTED_REGEX; }
124
132
  });
125
133
  Object.defineProperty(exports, "ENCRYPTED_WEB_REGEX", {
126
134
  enumerable: true,
127
- get: function () { return chunkWD5FWRQ4_cjs.ENCRYPTED_WEB_REGEX; }
135
+ get: function () { return chunkSSMTQMF4_cjs.ENCRYPTED_WEB_REGEX; }
136
+ });
137
+ Object.defineProperty(exports, "parseToObj", {
138
+ enumerable: true,
139
+ get: function () { return chunkSSMTQMF4_cjs.parseToObj; }
140
+ });
141
+ Object.defineProperty(exports, "stringifyObj", {
142
+ enumerable: true,
143
+ get: function () { return chunkSSMTQMF4_cjs.stringifyObj; }
128
144
  });
129
145
  //# sourceMappingURL=index.cjs.map
130
146
  //# sourceMappingURL=index.cjs.map
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- export { E as ENCRYPTED_NODE_REGEX, a as ENCRYPTED_REGEX, b as ENCRYPTED_WEB_REGEX, N as NodeKey, W as WebApiKey } from './utils-D8fOvyw5.cjs';
2
- export { NODE_ALGORITHM, decode, decrypt, decryptObj, encode, encrypt, encryptObj, hash, newSecretKey as newNodeSecretKey, newUuid as newNodeUuid, newSecretKey, newUuid, decode as nodeDecode, decrypt as nodeDecrypt, decryptObj as nodeDecryptObj, encode as nodeEncode, encrypt as nodeEncrypt, encryptObj as nodeEncryptObj, hash as nodeHash } from './node.cjs';
3
- export { WEB_API_ALGORITHM, newSecretKey as newWebSecretKey, newUuid as newWebUuid, decode as webDecode, decrypt as webDecrypt, encode as webEncode, encrypt as webEncrypt, hash as webHash } from './web-api.cjs';
1
+ export { E as ENCRYPTED_NODE_REGEX, a as ENCRYPTED_REGEX, b as ENCRYPTED_WEB_REGEX, N as NodeKey, W as WebApiKey, p as parseToObj, s as stringifyObj } from './utils-1Ds0QKBI.cjs';
2
+ export { NODE_ALGORITHM, decode, decrypt, decryptObj, encode, encrypt, encryptObj, hash, isNodeKey, newSecretKey as newNodeSecretKey, newUuid as newNodeUuid, newSecretKey, newUuid, decode as nodeDecode, decrypt as nodeDecrypt, decryptObj as nodeDecryptObj, encode as nodeEncode, encrypt as nodeEncrypt, encryptObj as nodeEncryptObj, hash as nodeHash } from './node.cjs';
3
+ export { WEB_API_ALGORITHM, isWebApiKey, newSecretKey as newWebSecretKey, newUuid as newWebUuid, decode as webDecode, decrypt as webDecrypt, encode as webEncode, encrypt as webEncrypt, hash as webHash } from './web-api.cjs';
4
4
  import 'node:crypto';
5
5
  import 'node:buffer';
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export { E as ENCRYPTED_NODE_REGEX, a as ENCRYPTED_REGEX, b as ENCRYPTED_WEB_REGEX, N as NodeKey, W as WebApiKey } from './utils-D8fOvyw5.js';
2
- export { NODE_ALGORITHM, decode, decrypt, decryptObj, encode, encrypt, encryptObj, hash, newSecretKey as newNodeSecretKey, newUuid as newNodeUuid, newSecretKey, newUuid, decode as nodeDecode, decrypt as nodeDecrypt, decryptObj as nodeDecryptObj, encode as nodeEncode, encrypt as nodeEncrypt, encryptObj as nodeEncryptObj, hash as nodeHash } from './node.js';
3
- export { WEB_API_ALGORITHM, newSecretKey as newWebSecretKey, newUuid as newWebUuid, decode as webDecode, decrypt as webDecrypt, encode as webEncode, encrypt as webEncrypt, hash as webHash } from './web-api.js';
1
+ export { E as ENCRYPTED_NODE_REGEX, a as ENCRYPTED_REGEX, b as ENCRYPTED_WEB_REGEX, N as NodeKey, W as WebApiKey, p as parseToObj, s as stringifyObj } from './utils-1Ds0QKBI.js';
2
+ export { NODE_ALGORITHM, decode, decrypt, decryptObj, encode, encrypt, encryptObj, hash, isNodeKey, newSecretKey as newNodeSecretKey, newUuid as newNodeUuid, newSecretKey, newUuid, decode as nodeDecode, decrypt as nodeDecrypt, decryptObj as nodeDecryptObj, encode as nodeEncode, encrypt as nodeEncrypt, encryptObj as nodeEncryptObj, hash as nodeHash } from './node.js';
3
+ export { WEB_API_ALGORITHM, isWebApiKey, newSecretKey as newWebSecretKey, newUuid as newWebUuid, decode as webDecode, decrypt as webDecrypt, encode as webEncode, encrypt as webEncrypt, hash as webHash } from './web-api.js';
4
4
  import 'node:crypto';
5
5
  import 'node:buffer';
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- export { NODE_ALGORITHM, decode, decrypt, decryptObj, encode, encrypt, encryptObj, hash, newSecretKey as newNodeSecretKey, newUuid as newNodeUuid, newSecretKey, newUuid, decode as nodeDecode, decrypt as nodeDecrypt, decryptObj as nodeDecryptObj, encode as nodeEncode, encrypt as nodeEncrypt, encryptObj as nodeEncryptObj, hash as nodeHash } from './chunk-MMHTEI3Q.js';
2
- export { WEB_API_ALGORITHM, newSecretKey as newWebSecretKey, newUuid as newWebUuid, decode as webDecode, decrypt as webDecrypt, encode as webEncode, encrypt as webEncrypt, hash as webHash } from './chunk-GYFL6RUD.js';
3
- export { ENCRYPTED_NODE_REGEX, ENCRYPTED_REGEX, ENCRYPTED_WEB_REGEX } from './chunk-72PZBMQR.js';
1
+ export { NODE_ALGORITHM, decode, decrypt, decryptObj, encode, encrypt, encryptObj, hash, isNodeKey, newSecretKey as newNodeSecretKey, newUuid as newNodeUuid, newSecretKey, newUuid, decode as nodeDecode, decrypt as nodeDecrypt, decryptObj as nodeDecryptObj, encode as nodeEncode, encrypt as nodeEncrypt, encryptObj as nodeEncryptObj, hash as nodeHash } from './chunk-HSRKAY2V.js';
2
+ export { WEB_API_ALGORITHM, isWebApiKey, newSecretKey as newWebSecretKey, newUuid as newWebUuid, decode as webDecode, decrypt as webDecrypt, encode as webEncode, encrypt as webEncrypt, hash as webHash } from './chunk-VJ4BV4K2.js';
3
+ export { ENCRYPTED_NODE_REGEX, ENCRYPTED_REGEX, ENCRYPTED_WEB_REGEX, parseToObj, stringifyObj } from './chunk-IHTNNCLY.js';
4
4
  //# sourceMappingURL=index.js.map
5
5
  //# sourceMappingURL=index.js.map
package/dist/node.cjs CHANGED
@@ -1,57 +1,69 @@
1
1
  'use strict';
2
2
 
3
- var chunkWB7F34SY_cjs = require('./chunk-WB7F34SY.cjs');
4
- var chunkWD5FWRQ4_cjs = require('./chunk-WD5FWRQ4.cjs');
3
+ var chunk6EC6NPNV_cjs = require('./chunk-6EC6NPNV.cjs');
4
+ var chunkSSMTQMF4_cjs = require('./chunk-SSMTQMF4.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "NODE_ALGORITHM", {
9
9
  enumerable: true,
10
- get: function () { return chunkWB7F34SY_cjs.NODE_ALGORITHM; }
10
+ get: function () { return chunk6EC6NPNV_cjs.NODE_ALGORITHM; }
11
11
  });
12
12
  Object.defineProperty(exports, "decode", {
13
13
  enumerable: true,
14
- get: function () { return chunkWB7F34SY_cjs.decode; }
14
+ get: function () { return chunk6EC6NPNV_cjs.decode; }
15
15
  });
16
16
  Object.defineProperty(exports, "decrypt", {
17
17
  enumerable: true,
18
- get: function () { return chunkWB7F34SY_cjs.decrypt; }
18
+ get: function () { return chunk6EC6NPNV_cjs.decrypt; }
19
19
  });
20
20
  Object.defineProperty(exports, "decryptObj", {
21
21
  enumerable: true,
22
- get: function () { return chunkWB7F34SY_cjs.decryptObj; }
22
+ get: function () { return chunk6EC6NPNV_cjs.decryptObj; }
23
23
  });
24
24
  Object.defineProperty(exports, "encode", {
25
25
  enumerable: true,
26
- get: function () { return chunkWB7F34SY_cjs.encode; }
26
+ get: function () { return chunk6EC6NPNV_cjs.encode; }
27
27
  });
28
28
  Object.defineProperty(exports, "encrypt", {
29
29
  enumerable: true,
30
- get: function () { return chunkWB7F34SY_cjs.encrypt; }
30
+ get: function () { return chunk6EC6NPNV_cjs.encrypt; }
31
31
  });
32
32
  Object.defineProperty(exports, "encryptObj", {
33
33
  enumerable: true,
34
- get: function () { return chunkWB7F34SY_cjs.encryptObj; }
34
+ get: function () { return chunk6EC6NPNV_cjs.encryptObj; }
35
35
  });
36
36
  Object.defineProperty(exports, "hash", {
37
37
  enumerable: true,
38
- get: function () { return chunkWB7F34SY_cjs.hash; }
38
+ get: function () { return chunk6EC6NPNV_cjs.hash; }
39
+ });
40
+ Object.defineProperty(exports, "isNodeKey", {
41
+ enumerable: true,
42
+ get: function () { return chunk6EC6NPNV_cjs.isNodeKey; }
39
43
  });
40
44
  Object.defineProperty(exports, "newSecretKey", {
41
45
  enumerable: true,
42
- get: function () { return chunkWB7F34SY_cjs.newSecretKey; }
46
+ get: function () { return chunk6EC6NPNV_cjs.newSecretKey; }
43
47
  });
44
48
  Object.defineProperty(exports, "newUuid", {
45
49
  enumerable: true,
46
- get: function () { return chunkWB7F34SY_cjs.newUuid; }
50
+ get: function () { return chunk6EC6NPNV_cjs.newUuid; }
47
51
  });
48
52
  Object.defineProperty(exports, "ENCRYPTED_NODE_REGEX", {
49
53
  enumerable: true,
50
- get: function () { return chunkWD5FWRQ4_cjs.ENCRYPTED_NODE_REGEX; }
54
+ get: function () { return chunkSSMTQMF4_cjs.ENCRYPTED_NODE_REGEX; }
51
55
  });
52
56
  Object.defineProperty(exports, "ENCRYPTED_REGEX", {
53
57
  enumerable: true,
54
- get: function () { return chunkWD5FWRQ4_cjs.ENCRYPTED_REGEX; }
58
+ get: function () { return chunkSSMTQMF4_cjs.ENCRYPTED_REGEX; }
59
+ });
60
+ Object.defineProperty(exports, "parseToObj", {
61
+ enumerable: true,
62
+ get: function () { return chunkSSMTQMF4_cjs.parseToObj; }
63
+ });
64
+ Object.defineProperty(exports, "stringifyObj", {
65
+ enumerable: true,
66
+ get: function () { return chunkSSMTQMF4_cjs.stringifyObj; }
55
67
  });
56
68
  //# sourceMappingURL=node.cjs.map
57
69
  //# sourceMappingURL=node.cjs.map
package/dist/node.d.cts CHANGED
@@ -1,7 +1,7 @@
1
- import { c as EncodingFormat, R as Result, N as NodeKey } from './utils-D8fOvyw5.cjs';
2
- export { E as ENCRYPTED_NODE_REGEX, a as ENCRYPTED_REGEX } from './utils-D8fOvyw5.cjs';
1
+ import { c as EncodingFormat, R as Result, N as NodeKey } from './utils-1Ds0QKBI.cjs';
2
+ export { E as ENCRYPTED_NODE_REGEX, a as ENCRYPTED_REGEX, p as parseToObj, s as stringifyObj } from './utils-1Ds0QKBI.cjs';
3
3
  import { Buffer } from 'node:buffer';
4
- import 'node:crypto';
4
+ import nodeCrypto from 'node:crypto';
5
5
 
6
6
  declare function encode(data: string, format?: EncodingFormat): Result<{
7
7
  bytes: Buffer;
@@ -9,6 +9,8 @@ declare function encode(data: string, format?: EncodingFormat): Result<{
9
9
  declare function decode(data: Buffer, format?: EncodingFormat): Result<string>;
10
10
 
11
11
  declare const NODE_ALGORITHM = "aes-256-gcm";
12
+ declare function newUuid(): Result<string>;
13
+ declare function isNodeKey(key: unknown): key is nodeCrypto.KeyObject;
12
14
  declare function hash(data: string): Result<string>;
13
15
  declare function newSecretKey(key: string | NodeKey): Result<{
14
16
  secretKey: NodeKey;
@@ -20,6 +22,4 @@ declare function decryptObj(encrypted: string, secretKey: NodeKey): Result<{
20
22
  result: Record<string, unknown>;
21
23
  }>;
22
24
 
23
- declare function newUuid(): Result<string>;
24
-
25
- export { NODE_ALGORITHM, NodeKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, hash, newSecretKey, newUuid };
25
+ export { NODE_ALGORITHM, NodeKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, hash, isNodeKey, newSecretKey, newUuid };
package/dist/node.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { c as EncodingFormat, R as Result, N as NodeKey } from './utils-D8fOvyw5.js';
2
- export { E as ENCRYPTED_NODE_REGEX, a as ENCRYPTED_REGEX } from './utils-D8fOvyw5.js';
1
+ import { c as EncodingFormat, R as Result, N as NodeKey } from './utils-1Ds0QKBI.js';
2
+ export { E as ENCRYPTED_NODE_REGEX, a as ENCRYPTED_REGEX, p as parseToObj, s as stringifyObj } from './utils-1Ds0QKBI.js';
3
3
  import { Buffer } from 'node:buffer';
4
- import 'node:crypto';
4
+ import nodeCrypto from 'node:crypto';
5
5
 
6
6
  declare function encode(data: string, format?: EncodingFormat): Result<{
7
7
  bytes: Buffer;
@@ -9,6 +9,8 @@ declare function encode(data: string, format?: EncodingFormat): Result<{
9
9
  declare function decode(data: Buffer, format?: EncodingFormat): Result<string>;
10
10
 
11
11
  declare const NODE_ALGORITHM = "aes-256-gcm";
12
+ declare function newUuid(): Result<string>;
13
+ declare function isNodeKey(key: unknown): key is nodeCrypto.KeyObject;
12
14
  declare function hash(data: string): Result<string>;
13
15
  declare function newSecretKey(key: string | NodeKey): Result<{
14
16
  secretKey: NodeKey;
@@ -20,6 +22,4 @@ declare function decryptObj(encrypted: string, secretKey: NodeKey): Result<{
20
22
  result: Record<string, unknown>;
21
23
  }>;
22
24
 
23
- declare function newUuid(): Result<string>;
24
-
25
- export { NODE_ALGORITHM, NodeKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, hash, newSecretKey, newUuid };
25
+ export { NODE_ALGORITHM, NodeKey, decode, decrypt, decryptObj, encode, encrypt, encryptObj, hash, isNodeKey, newSecretKey, newUuid };
package/dist/node.js CHANGED
@@ -1,4 +1,4 @@
1
- export { NODE_ALGORITHM, decode, decrypt, decryptObj, encode, encrypt, encryptObj, hash, newSecretKey, newUuid } from './chunk-MMHTEI3Q.js';
2
- export { ENCRYPTED_NODE_REGEX, ENCRYPTED_REGEX } from './chunk-72PZBMQR.js';
1
+ export { NODE_ALGORITHM, decode, decrypt, decryptObj, encode, encrypt, encryptObj, hash, isNodeKey, newSecretKey, newUuid } from './chunk-HSRKAY2V.js';
2
+ export { ENCRYPTED_NODE_REGEX, ENCRYPTED_REGEX, parseToObj, stringifyObj } from './chunk-IHTNNCLY.js';
3
3
  //# sourceMappingURL=node.js.map
4
4
  //# sourceMappingURL=node.js.map
@@ -31,5 +31,9 @@ type Result<T, E = ResultErr> = T extends object ? ({
31
31
  declare const ENCRYPTED_REGEX: RegExp;
32
32
  declare const ENCRYPTED_NODE_REGEX: RegExp;
33
33
  declare const ENCRYPTED_WEB_REGEX: RegExp;
34
+ declare function stringifyObj(obj: Record<string, unknown>): Result<string>;
35
+ declare function parseToObj(str: string): Result<{
36
+ result: Record<string, unknown>;
37
+ }>;
34
38
 
35
- export { ENCRYPTED_NODE_REGEX as E, type NodeKey as N, type Result as R, type WebApiKey as W, ENCRYPTED_REGEX as a, ENCRYPTED_WEB_REGEX as b, type EncodingFormat as c };
39
+ export { ENCRYPTED_NODE_REGEX as E, type NodeKey as N, type Result as R, type WebApiKey as W, ENCRYPTED_REGEX as a, ENCRYPTED_WEB_REGEX as b, type EncodingFormat as c, parseToObj as p, stringifyObj as s };
@@ -31,5 +31,9 @@ type Result<T, E = ResultErr> = T extends object ? ({
31
31
  declare const ENCRYPTED_REGEX: RegExp;
32
32
  declare const ENCRYPTED_NODE_REGEX: RegExp;
33
33
  declare const ENCRYPTED_WEB_REGEX: RegExp;
34
+ declare function stringifyObj(obj: Record<string, unknown>): Result<string>;
35
+ declare function parseToObj(str: string): Result<{
36
+ result: Record<string, unknown>;
37
+ }>;
34
38
 
35
- export { ENCRYPTED_NODE_REGEX as E, type NodeKey as N, type Result as R, type WebApiKey as W, ENCRYPTED_REGEX as a, ENCRYPTED_WEB_REGEX as b, type EncodingFormat as c };
39
+ export { ENCRYPTED_NODE_REGEX as E, type NodeKey as N, type Result as R, type WebApiKey as W, ENCRYPTED_REGEX as a, ENCRYPTED_WEB_REGEX as b, type EncodingFormat as c, parseToObj as p, stringifyObj as s };