altcha-lib 1.4.1 → 2.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/LICENSE.txt +1 -1
  2. package/README.md +44 -149
  3. package/bin/cli.mjs +35 -0
  4. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  5. package/dist/cjs/v2/algorithms/argon2id.d.ts +2 -0
  6. package/dist/cjs/v2/algorithms/argon2id.js +26 -0
  7. package/dist/cjs/v2/algorithms/pbkdf2.d.ts +2 -0
  8. package/dist/cjs/v2/algorithms/pbkdf2.js +23 -0
  9. package/dist/cjs/v2/algorithms/scrypt.d.ts +2 -0
  10. package/dist/cjs/v2/algorithms/scrypt.js +17 -0
  11. package/dist/cjs/v2/algorithms/sha.d.ts +2 -0
  12. package/dist/cjs/v2/algorithms/sha.js +35 -0
  13. package/dist/cjs/v2/algorithms/web/pbkdf2.d.ts +2 -0
  14. package/dist/cjs/v2/algorithms/web/pbkdf2.js +19 -0
  15. package/dist/cjs/v2/algorithms/web/sha.d.ts +2 -0
  16. package/dist/cjs/v2/algorithms/web/sha.js +23 -0
  17. package/dist/cjs/v2/capped-map.d.ts +7 -0
  18. package/dist/cjs/v2/capped-map.js +18 -0
  19. package/dist/cjs/v2/frameworks/express.d.ts +21 -0
  20. package/dist/cjs/v2/frameworks/express.js +77 -0
  21. package/dist/cjs/v2/frameworks/fastify.d.ts +26 -0
  22. package/dist/cjs/v2/frameworks/fastify.js +88 -0
  23. package/dist/cjs/v2/frameworks/h3.d.ts +37 -0
  24. package/dist/cjs/v2/frameworks/h3.js +89 -0
  25. package/dist/cjs/v2/frameworks/hono.d.ts +99 -0
  26. package/dist/cjs/v2/frameworks/hono.js +86 -0
  27. package/dist/cjs/v2/frameworks/nestjs.d.ts +79 -0
  28. package/dist/cjs/v2/frameworks/nestjs.js +198 -0
  29. package/dist/cjs/v2/frameworks/nextjs.d.ts +21 -0
  30. package/dist/cjs/v2/frameworks/nextjs.js +112 -0
  31. package/dist/cjs/v2/frameworks/shared.d.ts +8 -0
  32. package/dist/cjs/v2/frameworks/shared.js +121 -0
  33. package/dist/cjs/v2/frameworks/sveltekit.d.ts +29 -0
  34. package/dist/cjs/v2/frameworks/sveltekit.js +101 -0
  35. package/dist/cjs/v2/frameworks/types.d.ts +47 -0
  36. package/dist/cjs/v2/frameworks/types.js +2 -0
  37. package/dist/cjs/v2/helpers.d.ts +27 -0
  38. package/dist/cjs/v2/helpers.js +127 -0
  39. package/dist/cjs/v2/index.d.ts +19 -0
  40. package/dist/cjs/v2/index.js +28 -0
  41. package/dist/cjs/v2/obfuscation.d.ts +11 -0
  42. package/dist/cjs/v2/obfuscation.js +74 -0
  43. package/dist/cjs/v2/pow.d.ts +60 -0
  44. package/dist/cjs/v2/pow.js +286 -0
  45. package/dist/cjs/v2/server-signature.d.ts +12 -0
  46. package/dist/cjs/v2/server-signature.js +68 -0
  47. package/dist/cjs/v2/types.d.ts +277 -0
  48. package/dist/cjs/v2/types.js +18 -0
  49. package/dist/cjs/v2/workers/argon2id.js +7 -0
  50. package/dist/cjs/v2/workers/pbkdf2.js +7 -0
  51. package/dist/cjs/v2/workers/scrypt.d.ts +1 -0
  52. package/dist/cjs/v2/workers/scrypt.js +7 -0
  53. package/dist/cjs/v2/workers/sha.d.ts +1 -0
  54. package/dist/cjs/v2/workers/sha.js +7 -0
  55. package/dist/cjs/v2/workers/shared.d.ts +4 -0
  56. package/dist/cjs/v2/workers/shared.js +32 -0
  57. package/dist/esm/tsconfig.build.tsbuildinfo +1 -0
  58. package/dist/esm/v1/types.js +1 -0
  59. package/dist/esm/v1/worker.d.ts +1 -0
  60. package/dist/esm/v2/algorithms/argon2id.d.ts +2 -0
  61. package/dist/esm/v2/algorithms/argon2id.js +20 -0
  62. package/dist/esm/v2/algorithms/pbkdf2.d.ts +2 -0
  63. package/dist/esm/v2/algorithms/pbkdf2.js +20 -0
  64. package/dist/esm/v2/algorithms/scrypt.d.ts +2 -0
  65. package/dist/esm/v2/algorithms/scrypt.js +14 -0
  66. package/dist/esm/v2/algorithms/sha.d.ts +2 -0
  67. package/dist/esm/v2/algorithms/sha.js +32 -0
  68. package/dist/esm/v2/algorithms/web/pbkdf2.d.ts +2 -0
  69. package/dist/esm/v2/algorithms/web/pbkdf2.js +16 -0
  70. package/dist/esm/v2/algorithms/web/sha.d.ts +2 -0
  71. package/dist/esm/v2/algorithms/web/sha.js +20 -0
  72. package/dist/esm/v2/capped-map.d.ts +7 -0
  73. package/dist/esm/v2/capped-map.js +15 -0
  74. package/dist/esm/v2/frameworks/express.d.ts +21 -0
  75. package/dist/esm/v2/frameworks/express.js +71 -0
  76. package/dist/esm/v2/frameworks/fastify.d.ts +26 -0
  77. package/dist/esm/v2/frameworks/fastify.js +82 -0
  78. package/dist/esm/v2/frameworks/h3.d.ts +37 -0
  79. package/dist/esm/v2/frameworks/h3.js +83 -0
  80. package/dist/esm/v2/frameworks/hono.d.ts +99 -0
  81. package/dist/esm/v2/frameworks/hono.js +80 -0
  82. package/dist/esm/v2/frameworks/nestjs.d.ts +79 -0
  83. package/dist/esm/v2/frameworks/nestjs.js +202 -0
  84. package/dist/esm/v2/frameworks/nextjs.d.ts +21 -0
  85. package/dist/esm/v2/frameworks/nextjs.js +106 -0
  86. package/dist/esm/v2/frameworks/shared.d.ts +8 -0
  87. package/dist/esm/v2/frameworks/shared.js +117 -0
  88. package/dist/esm/v2/frameworks/sveltekit.d.ts +29 -0
  89. package/dist/esm/v2/frameworks/sveltekit.js +95 -0
  90. package/dist/esm/v2/frameworks/types.d.ts +47 -0
  91. package/dist/esm/v2/frameworks/types.js +1 -0
  92. package/dist/esm/v2/helpers.d.ts +27 -0
  93. package/dist/esm/v2/helpers.js +112 -0
  94. package/dist/esm/v2/index.d.ts +19 -0
  95. package/dist/esm/v2/index.js +17 -0
  96. package/dist/esm/v2/obfuscation.d.ts +11 -0
  97. package/dist/esm/v2/obfuscation.js +70 -0
  98. package/dist/esm/v2/pow.d.ts +60 -0
  99. package/dist/esm/v2/pow.js +281 -0
  100. package/dist/esm/v2/server-signature.d.ts +12 -0
  101. package/dist/esm/v2/server-signature.js +63 -0
  102. package/dist/esm/v2/types.d.ts +277 -0
  103. package/dist/esm/v2/types.js +15 -0
  104. package/dist/esm/v2/workers/argon2id.d.ts +1 -0
  105. package/dist/esm/v2/workers/argon2id.js +5 -0
  106. package/dist/esm/v2/workers/pbkdf2.d.ts +1 -0
  107. package/dist/esm/v2/workers/pbkdf2.js +5 -0
  108. package/dist/esm/v2/workers/scrypt.d.ts +1 -0
  109. package/dist/esm/v2/workers/scrypt.js +5 -0
  110. package/dist/esm/v2/workers/sha.d.ts +1 -0
  111. package/dist/esm/v2/workers/sha.js +5 -0
  112. package/dist/esm/v2/workers/shared.d.ts +4 -0
  113. package/dist/esm/v2/workers/shared.js +29 -0
  114. package/package.json +138 -27
  115. package/cjs/dist/tsconfig.cjs.tsbuildinfo +0 -1
  116. package/cjs/package.json +0 -3
  117. package/dist/tsconfig.build.tsbuildinfo +0 -1
  118. /package/{cjs/dist → dist/cjs/v1}/helpers.d.ts +0 -0
  119. /package/{cjs/dist → dist/cjs/v1}/helpers.js +0 -0
  120. /package/{cjs/dist → dist/cjs/v1}/index.d.ts +0 -0
  121. /package/{cjs/dist → dist/cjs/v1}/index.js +0 -0
  122. /package/{cjs/dist → dist/cjs/v1}/types.d.ts +0 -0
  123. /package/{cjs/dist → dist/cjs/v1}/types.js +0 -0
  124. /package/{cjs/dist → dist/cjs/v1}/worker.d.ts +0 -0
  125. /package/{cjs/dist → dist/cjs/v1}/worker.js +0 -0
  126. /package/dist/{types.js → cjs/v2/workers/argon2id.d.ts} +0 -0
  127. /package/dist/{worker.d.ts → cjs/v2/workers/pbkdf2.d.ts} +0 -0
  128. /package/dist/{helpers.d.ts → esm/v1/helpers.d.ts} +0 -0
  129. /package/dist/{helpers.js → esm/v1/helpers.js} +0 -0
  130. /package/dist/{index.d.ts → esm/v1/index.d.ts} +0 -0
  131. /package/dist/{index.js → esm/v1/index.js} +0 -0
  132. /package/dist/{types.d.ts → esm/v1/types.d.ts} +0 -0
  133. /package/dist/{worker.js → esm/v1/worker.js} +0 -0
@@ -0,0 +1,277 @@
1
+ export interface Challenge {
2
+ codeChallenge?: CodeChallenge;
3
+ parameters: ChallengeParameters;
4
+ signature?: string;
5
+ }
6
+ export interface ChallengeParameters {
7
+ algorithm: string;
8
+ nonce: string;
9
+ salt: string;
10
+ cost: number;
11
+ keyLength: number;
12
+ keyPrefix: string;
13
+ keySignature?: string;
14
+ memoryCost?: number;
15
+ parallelism?: number;
16
+ expiresAt?: number;
17
+ data?: Record<string, string | number | boolean | null>;
18
+ }
19
+ export interface CodeChallenge {
20
+ image: string;
21
+ audio?: string;
22
+ length?: number;
23
+ }
24
+ export interface CreateChallengeOptions {
25
+ /**
26
+ * Key derivation algorithm used for the challenge.
27
+ * Common values: `'PBKDF2/SHA-256'`, `'ARGON2ID'`, `'SCRYPT'`.
28
+ */
29
+ algorithm: string;
30
+ /**
31
+ * Randomly selected integer used as the starting counter in deterministic mode.
32
+ */
33
+ counter?: number;
34
+ /**
35
+ * Encoding format for the counter value.
36
+ * V2 uses `'uint32'`; `'string'` is supported for backward compatibility with V1.
37
+ */
38
+ counterMode?: 'uint32' | 'string';
39
+ /**
40
+ * Algorithm-specific cost parameter controlling computational difficulty
41
+ * (e.g., iteration count for PBKDF2, time cost for Argon2id).
42
+ */
43
+ cost: number;
44
+ /**
45
+ * Arbitrary key-value metadata embedded in the challenge.
46
+ */
47
+ data?: Record<string, string | number | boolean | null>;
48
+ /**
49
+ * Algorithm-specific key derivation function used to generate challenge keys.
50
+ */
51
+ deriveKey: DeriveKeyFunction;
52
+ /**
53
+ * Timestamp in seconds or Date after which the challenge is no longer valid.
54
+ */
55
+ expiresAt?: number | Date;
56
+ /**
57
+ * HMAC digest algorithm used for signing challenges.
58
+ * Defaults to `'SHA-256'`.
59
+ */
60
+ hmacAlgorithm?: HmacAlgorithm;
61
+ /**
62
+ * HMAC secret used to sign derived keys in deterministic mode.
63
+ */
64
+ hmacKeySignatureSecret?: string;
65
+ /**
66
+ * HMAC secret used to sign the challenge payload.
67
+ */
68
+ hmacSignatureSecret?: string;
69
+ /**
70
+ * Length of the derived key in bytes.
71
+ * Defaults to `32`.
72
+ */
73
+ keyLength?: number;
74
+ /**
75
+ * Required prefix that the derived key must match for the challenge to be solved.
76
+ */
77
+ keyPrefix?: string;
78
+ /**
79
+ * Number of bytes from the derived key used as the prefix in deterministic mode.
80
+ * Defaults to `keyLength / 2`.
81
+ */
82
+ keyPrefixLength?: number;
83
+ /**
84
+ * Algorithm-specific memory cost in KiB (applicable to Argon2id and scrypt).
85
+ */
86
+ memoryCost?: number;
87
+ /**
88
+ * Algorithm-specific parallelism setting controlling the parallelism
89
+ * (applicable to Argon2id and scrypt).
90
+ */
91
+ parallelism?: number;
92
+ }
93
+ export type DeriveKeyFunction = (parameters: ChallengeParameters, salt: Uint8Array, password: Uint8Array) => Promise<DeriveKeyFunctionResult>;
94
+ export interface DeriveKeyFunctionResult {
95
+ parameters?: Partial<ChallengeParameters>;
96
+ derivedKey: Uint8Array;
97
+ }
98
+ export declare enum HmacAlgorithm {
99
+ SHA_256 = "SHA-256",
100
+ SHA_384 = "SHA-384",
101
+ SHA_512 = "SHA-512"
102
+ }
103
+ export interface Payload {
104
+ challenge: Omit<Challenge, 'codeChallenge'>;
105
+ solution: Solution;
106
+ }
107
+ export interface PayloadV1 {
108
+ algorithm: string;
109
+ challenge: string;
110
+ number: number;
111
+ salt: string;
112
+ signature?: string;
113
+ took: number;
114
+ }
115
+ export interface SetCookieOptions {
116
+ domain?: string;
117
+ name?: string;
118
+ maxAge?: number;
119
+ path?: string;
120
+ sameSite?: string;
121
+ secure?: boolean;
122
+ }
123
+ export type ServerClassification = 'BAD' | 'GOOD' | 'NEUTRAL';
124
+ export interface ServerSignaturePayload {
125
+ algorithm: string;
126
+ apiKey?: string;
127
+ id?: string;
128
+ signature: string;
129
+ verificationData: string;
130
+ verified: boolean;
131
+ }
132
+ export interface ServerSignatureVerificationData {
133
+ [key: string]: string | unknown;
134
+ classification?: ServerClassification;
135
+ email?: string;
136
+ expire?: number;
137
+ fields?: string[];
138
+ fieldsHash?: string;
139
+ id?: string;
140
+ ipAddress?: string;
141
+ reasons?: string[];
142
+ score?: number;
143
+ time?: number;
144
+ verified?: boolean;
145
+ }
146
+ export interface ServerVerificationResult {
147
+ algorithm?: string;
148
+ apiKey?: string;
149
+ id?: string;
150
+ payload?: string;
151
+ reason?: string;
152
+ score?: number;
153
+ signature?: string;
154
+ verificationData?: string;
155
+ verified?: boolean;
156
+ }
157
+ export interface SolveChallengeOptions {
158
+ /**
159
+ * Challenge object to solve, either decoded from a server payload
160
+ * or as originally returned by `createChallenge`.
161
+ */
162
+ challenge: Challenge;
163
+ /**
164
+ * AbortController for cancelling the solve operation before completion.
165
+ */
166
+ controller?: AbortController;
167
+ /**
168
+ * Initial counter value to begin iterating from.
169
+ * Useful for resuming or partitioning work across multiple solvers.
170
+ */
171
+ counterStart?: number;
172
+ /**
173
+ * Increment between counter attempts.
174
+ * Defaults to `1`.
175
+ */
176
+ counterStep?: number;
177
+ /**
178
+ * Encoding format for the counter value.
179
+ * V2 uses `'uint32'`; `'string'` is supported for backward compatibility with V1.
180
+ */
181
+ counterMode?: 'uint32' | 'string';
182
+ /**
183
+ * Algorithm-specific key derivation function used to compute candidate keys
184
+ * for each counter value until a match is found.
185
+ */
186
+ deriveKey: DeriveKeyFunction;
187
+ /**
188
+ * Maximum time in milliseconds before the solve attempt is aborted.
189
+ * Defaults to `90_000` (90 seconds).
190
+ */
191
+ timeout?: number;
192
+ }
193
+ export interface Strings {
194
+ ariaLinkLabel: string;
195
+ enterCode: string;
196
+ enterCodeAria: string;
197
+ error: string;
198
+ expired: string;
199
+ footer: string;
200
+ getAudioChallenge: string;
201
+ label: string;
202
+ loading: string;
203
+ reload: string;
204
+ verify: string;
205
+ verificationRequired: string;
206
+ verified: string;
207
+ verifying: string;
208
+ waitAlert: string;
209
+ }
210
+ export declare enum State {
211
+ CODE = "code",
212
+ ERROR = "error",
213
+ VERIFIED = "verified",
214
+ VERIFYING = "verifying",
215
+ UNVERIFIED = "unverified",
216
+ EXPIRED = "expired"
217
+ }
218
+ export interface Solution {
219
+ counter: number;
220
+ derivedKey: string;
221
+ time?: number;
222
+ }
223
+ export interface VerifyOptions {
224
+ concurrency?: number;
225
+ controller?: AbortController;
226
+ minDuration?: number;
227
+ }
228
+ export interface VerifyResult {
229
+ challenge?: Challenge;
230
+ payload: string;
231
+ solution?: Solution;
232
+ }
233
+ export interface VerifyServerSignatureResult extends VerifySolutionResult {
234
+ verificationData?: ServerSignatureVerificationData | null;
235
+ }
236
+ export interface VerifySolutionOptions {
237
+ /**
238
+ * Challenge object to verify against, either decoded from the client payload
239
+ * or as originally returned by `createChallenge`.
240
+ */
241
+ challenge: Challenge;
242
+ /**
243
+ * Encoding format for the counter value.
244
+ * V2 uses `'uint32'`; `'string'` is supported for backward compatibility with V1.
245
+ */
246
+ counterMode?: 'uint32' | 'string';
247
+ /**
248
+ * Algorithm-specific key derivation function used to recompute the expected key
249
+ * during verification.
250
+ */
251
+ deriveKey: DeriveKeyFunction;
252
+ /**
253
+ * HMAC digest algorithm used when verifying challenge signatures.
254
+ * Defaults to `'SHA-256'`.
255
+ */
256
+ hmacAlgorithm?: HmacAlgorithm;
257
+ /**
258
+ * HMAC secret used to verify derived-key signatures in deterministic mode.
259
+ */
260
+ hmacKeySignatureSecret?: string;
261
+ /**
262
+ * HMAC secret used to verify the challenge payload signature.
263
+ */
264
+ hmacSignatureSecret: string;
265
+ /**
266
+ * Solution object to validate, either decoded from the client payload
267
+ * or as returned by `solveChallenge`.
268
+ */
269
+ solution: Solution;
270
+ }
271
+ export interface VerifySolutionResult {
272
+ expired: boolean;
273
+ invalidSignature: boolean | null;
274
+ invalidSolution: boolean | null;
275
+ time: number;
276
+ verified: boolean;
277
+ }
@@ -0,0 +1,15 @@
1
+ export var HmacAlgorithm;
2
+ (function (HmacAlgorithm) {
3
+ HmacAlgorithm["SHA_256"] = "SHA-256";
4
+ HmacAlgorithm["SHA_384"] = "SHA-384";
5
+ HmacAlgorithm["SHA_512"] = "SHA-512";
6
+ })(HmacAlgorithm || (HmacAlgorithm = {}));
7
+ export var State;
8
+ (function (State) {
9
+ State["CODE"] = "code";
10
+ State["ERROR"] = "error";
11
+ State["VERIFIED"] = "verified";
12
+ State["VERIFYING"] = "verifying";
13
+ State["UNVERIFIED"] = "unverified";
14
+ State["EXPIRED"] = "expired";
15
+ })(State || (State = {}));
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ import { handler } from './shared.js';
2
+ import { deriveKey } from '../algorithms/argon2id.js';
3
+ handler({
4
+ deriveKey,
5
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ import { handler } from './shared.js';
2
+ import { deriveKey } from '../algorithms/pbkdf2.js';
3
+ handler({
4
+ deriveKey,
5
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ import { handler } from './shared.js';
2
+ import { deriveKey } from '../algorithms/scrypt.js';
3
+ handler({
4
+ deriveKey,
5
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ import { handler } from './shared.js';
2
+ import { deriveKey } from '../algorithms/sha.js';
3
+ handler({
4
+ deriveKey,
5
+ });
@@ -0,0 +1,4 @@
1
+ import type { DeriveKeyFunction } from '../types.js';
2
+ export declare function handler(options: {
3
+ deriveKey: DeriveKeyFunction;
4
+ }): void;
@@ -0,0 +1,29 @@
1
+ import { solveChallenge } from '../pow.js';
2
+ export function handler(options) {
3
+ const { deriveKey } = options;
4
+ let controller = undefined;
5
+ self.onmessage = async (message) => {
6
+ const { challenge, counterMode, counterStart, counterStep, type } = message.data;
7
+ if (type === 'abort') {
8
+ controller?.abort();
9
+ }
10
+ else if (type === 'work') {
11
+ controller = new AbortController();
12
+ let solution;
13
+ try {
14
+ solution = await solveChallenge({
15
+ challenge,
16
+ controller,
17
+ counterStart,
18
+ counterStep,
19
+ deriveKey,
20
+ counterMode,
21
+ });
22
+ }
23
+ catch (err) {
24
+ return self.postMessage({ error: err });
25
+ }
26
+ self.postMessage(solution);
27
+ }
28
+ };
29
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "altcha-lib",
3
- "version": "1.4.1",
4
- "description": "A library for creating and verifying ALTCHA challenges for Node.js, Bun and Deno.",
3
+ "version": "2.0.0-beta.1",
4
+ "description": "A lightweight library for creating and verifying ALTCHA challenges on the server.",
5
5
  "author": {
6
6
  "name": "Daniel Regeci",
7
7
  "url": "https://altcha.org"
@@ -23,55 +23,166 @@
23
23
  "types": "./dist/index.d.ts",
24
24
  "type": "module",
25
25
  "scripts": {
26
- "build": "rimraf dist && rimraf cjs/dist && tsc -b tsconfig.build.json tsconfig.cjs.json",
27
- "denoify": "rimraf deno_dist && denoify && find deno_dist/. -type f -exec sed -i '' -e 's/node:node:/node:/g' {} +",
28
- "eslint": "eslint ./lib/**/*",
29
- "format": "prettier --write './(lib|tests)/**/*'",
26
+ "build": "rimraf dist && tsc -b tsconfig.build.json tsconfig.cjs.json",
27
+ "lint": "eslint ./src/**/*",
28
+ "format": "prettier --write './(src|tests)/**/*'",
30
29
  "test": "vitest --run",
31
- "test:deno": "deno test --allow-read tests/deno.ts",
32
30
  "prepare": "husky"
33
31
  },
34
32
  "files": [
35
- "cjs",
36
33
  "dist"
37
34
  ],
35
+ "bin": {
36
+ "altcha-lib": "./bin/cli.mjs"
37
+ },
38
38
  "exports": {
39
39
  ".": {
40
- "types": "./dist/index.d.ts",
41
- "import": "./dist/index.js",
42
- "require": "./cjs/dist/index.js",
43
- "default": "./dist/index.js"
40
+ "types": "./dist/esm/v2/index.d.ts",
41
+ "import": "./dist/esm/v2/index.js",
42
+ "require": "./dist/cjs/v2/index.js",
43
+ "default": "./dist/esm/v2/index.js"
44
+ },
45
+ "./algorithms/*": {
46
+ "types": "./dist/esm/v2/algorithms/*.d.ts",
47
+ "import": "./dist/esm/v2/algorithms/*.js",
48
+ "require": "./dist/cjs/v2/algorithms/*.js"
49
+ },
50
+ "./frameworks/*": {
51
+ "types": "./dist/esm/v2/frameworks/*.d.ts",
52
+ "import": "./dist/esm/v2/frameworks/*.js",
53
+ "require": "./dist/cjs/v2/frameworks/*.js"
54
+ },
55
+ "./obfuscation": {
56
+ "types": "./dist/esm/v2/obfuscation.d.ts",
57
+ "import": "./dist/esm/v2/obfuscation.js",
58
+ "require": "./dist/cjs/v2/obfuscation.js"
59
+ },
60
+ "./workers/*": {
61
+ "types": "./dist/esm/v2/workers/*.d.ts",
62
+ "import": "./dist/esm/v2/workers/*.js",
63
+ "require": "./dist/cjs/v2/workers/*.js"
44
64
  },
45
65
  "./types": {
46
- "types": "./dist/types.d.ts",
47
- "import": "./dist/types.js"
48
- },
49
- "./worker": {
50
- "types": "./dist/worker.d.ts",
51
- "import": "./dist/worker.js",
52
- "require": "./cjs/dist/worker.js",
53
- "default": "./dist/worker.js"
66
+ "types": "./dist/esm/v2/types.d.ts",
67
+ "import": "./dist/esm/v2/types.js"
68
+ },
69
+ "./v1": {
70
+ "types": "./dist/esm/v1/index.d.ts",
71
+ "import": "./dist/esm/v1/index.js",
72
+ "require": "./dist/cjs/v1/index.js",
73
+ "default": "./dist/esm/v1/index.js"
74
+ },
75
+ "./v1/types": {
76
+ "types": "./dist/esm/v1/types.d.ts",
77
+ "import": "./dist/esm/v1/types.js"
78
+ },
79
+ "./v1/worker": {
80
+ "types": "./dist/esm/v1/worker.d.ts",
81
+ "import": "./dist/esm/v1/worker.js",
82
+ "require": "./dist/cjs/v1/worker.js",
83
+ "default": "./dist/esm/v1/worker.js"
54
84
  }
55
85
  },
56
86
  "typesVersions": {
57
87
  "*": {
58
88
  "types": [
59
- "./dist/types"
89
+ "./dist/esm/v2/types"
60
90
  ]
61
91
  }
62
92
  },
63
93
  "devDependencies": {
94
+ "@eslint/eslintrc": "^3.3.5",
95
+ "@eslint/js": "^10.0.1",
96
+ "@fastify/cookie": "^11.0.2",
97
+ "@fastify/cors": "^11.2.0",
98
+ "@fastify/formbody": "^8.0.2",
99
+ "@nestjs/common": "^11.1.16",
100
+ "@nestjs/core": "^11.1.16",
101
+ "@nestjs/platform-express": "^11.1.16",
102
+ "@sveltejs/kit": "^2.54.0",
103
+ "@types/cookie-parser": "^1.4.10",
104
+ "@types/cors": "^2.8.19",
105
+ "@types/express": "^5.0.6",
64
106
  "@types/node": "^24.10.3",
107
+ "@types/supertest": "^7.2.0",
65
108
  "@typescript-eslint/eslint-plugin": "^8.49.0",
66
- "denoify": "^1.6.17",
67
- "eslint": "^8.57.1",
109
+ "cookie-parser": "^1.4.7",
110
+ "cors": "^2.8.6",
111
+ "eslint": "^10.0.3",
112
+ "express": "^5.2.1",
113
+ "fastify": "^5.8.2",
114
+ "globals": "^17.4.0",
115
+ "h3": "2.0.1-rc.16",
116
+ "hono": "^4.12.5",
68
117
  "husky": "^9.1.7",
69
- "prettier": "^3.7.4",
70
- "rimraf": "^6.1.2",
118
+ "prettier": "^3.8.1",
119
+ "rimraf": "^6.1.3",
120
+ "supertest": "^7.2.2",
71
121
  "ts-node": "^10.9.2",
72
122
  "tsx": "^4.21.0",
73
123
  "typescript": "^5.9.3",
74
- "vite": "^7.2.7",
75
- "vitest": "^4.0.15"
124
+ "vite": "^8.0.0",
125
+ "vitest": "^4.1.0",
126
+ "web-worker": "^1.5.0"
127
+ },
128
+ "peerDependencies": {
129
+ "@fastify/cookie": "^11.0.0",
130
+ "@fastify/cors": "^11.0.0",
131
+ "@fastify/formbody": "^8.0.0",
132
+ "@nestjs/common": "^10.0.0 || ^11.0.0",
133
+ "@nestjs/core": "^10.0.0 || ^11.0.0",
134
+ "@nestjs/platform-express": "^10.0.0 || ^11.0.0",
135
+ "@sveltejs/kit": "^2.0.0",
136
+ "cookie-parser": "^1.0.0",
137
+ "cors": "^2.0.0",
138
+ "express": "^4.0.0 || ^5.0.0",
139
+ "fastify": "^5.0.0",
140
+ "h3": "^2.0.0",
141
+ "hono": "^4.0.0"
142
+ },
143
+ "peerDependenciesMeta": {
144
+ "@nestjs/common": {
145
+ "optional": true
146
+ },
147
+ "@nestjs/core": {
148
+ "optional": true
149
+ },
150
+ "@nestjs/platform-express": {
151
+ "optional": true
152
+ },
153
+ "@fastify/cookie": {
154
+ "optional": true
155
+ },
156
+ "@fastify/cors": {
157
+ "optional": true
158
+ },
159
+ "@fastify/formbody": {
160
+ "optional": true
161
+ },
162
+ "@sveltejs/kit": {
163
+ "optional": true
164
+ },
165
+ "cookie-parser": {
166
+ "optional": true
167
+ },
168
+ "cors": {
169
+ "optional": true
170
+ },
171
+ "express": {
172
+ "optional": true
173
+ },
174
+ "fastify": {
175
+ "optional": true
176
+ },
177
+ "h3": {
178
+ "optional": true
179
+ },
180
+ "hono": {
181
+ "optional": true
182
+ }
183
+ },
184
+ "overrides": {
185
+ "cookie": "^1.1.1",
186
+ "file-type": "^21.3.1"
76
187
  }
77
188
  }
@@ -1 +0,0 @@
1
- {"root":["../../lib/helpers.ts","../../lib/index.ts","../../lib/types.ts","../../lib/worker.ts"],"version":"5.9.3"}
package/cjs/package.json DELETED
@@ -1,3 +0,0 @@
1
- {
2
- "type": "commonjs"
3
- }
@@ -1 +0,0 @@
1
- {"root":["../lib/helpers.ts","../lib/index.ts","../lib/types.ts","../lib/worker.ts"],"version":"5.9.3"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes