diff --git a/pkgs/server/jest.config.js b/pkgs/pow-captcha/jest.config.js similarity index 100% rename from pkgs/server/jest.config.js rename to pkgs/pow-captcha/jest.config.js diff --git a/pkgs/shared/package.json b/pkgs/pow-captcha/package.json similarity index 65% rename from pkgs/shared/package.json rename to pkgs/pow-captcha/package.json index c4ce262..22b1163 100644 --- a/pkgs/shared/package.json +++ b/pkgs/pow-captcha/package.json @@ -1,11 +1,12 @@ { - "name": "@pow-captcha/shared", + "name": "@pow-captcha/pow-captcha", "version": "0.0.0", "main": "dist/lib.js", "type": "module", "types": "dist/lib.d.ts", "scripts": { - "build": "tsc -p tsconfig.build.json" + "build": "tsc -p tsconfig.build.json", + "test": "jest" }, "dependencies": { "base64-js": "^1.5.1", diff --git a/pkgs/pow-captcha/src/lib.ts b/pkgs/pow-captcha/src/lib.ts new file mode 100644 index 0000000..0fdf54a --- /dev/null +++ b/pkgs/pow-captcha/src/lib.ts @@ -0,0 +1,5 @@ +import * as server from "./server"; +import * as solver from "./solver"; +import * as wire from "./wire"; + +export { server, solver, wire }; diff --git a/pkgs/server/src/lib.spec.ts b/pkgs/pow-captcha/src/server.spec.ts similarity index 90% rename from pkgs/server/src/lib.spec.ts rename to pkgs/pow-captcha/src/server.spec.ts index 73b918b..09e621f 100644 --- a/pkgs/server/src/lib.spec.ts +++ b/pkgs/pow-captcha/src/server.spec.ts @@ -1,6 +1,6 @@ import { describe, it, expect } from "@jest/globals"; -import { wire } from "@pow-captcha/shared"; -import * as server from "./lib"; +import * as wire from "./wire"; +import * as server from "./server"; const SECRET = "e2c0b4ab-a215-4b36-bba8-19fae1601045"; diff --git a/pkgs/server/src/lib.ts b/pkgs/pow-captcha/src/server.ts similarity index 77% rename from pkgs/server/src/lib.ts rename to pkgs/pow-captcha/src/server.ts index 2975d44..a00b49d 100644 --- a/pkgs/server/src/lib.ts +++ b/pkgs/pow-captcha/src/server.ts @@ -1,5 +1,6 @@ -import { utils, wire } from "@pow-captcha/shared"; -import * as solver from "@pow-captcha/solver"; +import * as wire from "./wire"; +import * as solver from "./solver"; +import { createArray } from "./utils"; export type CreateChallengesOptions = { /** @default 50 */ @@ -15,21 +16,15 @@ export async function createChallengesRaw({ challengeLength = 16, difficulty = 2, }: CreateChallengesOptions): Promise { - const challenges = utils.createArray( - challengeCount, - (): wire.ChallengeEntry => { - const challenge = new Uint8Array(challengeLength); - crypto.getRandomValues(challenge); + const challenges = createArray(challengeCount, (): wire.ChallengeEntry => { + const challenge = new Uint8Array(challengeLength); + crypto.getRandomValues(challenge); - const target = new Uint8Array(difficulty); - crypto.getRandomValues(target); + const target = new Uint8Array(difficulty); + crypto.getRandomValues(target); - return [ - wire.serializeArray(challenge), - wire.serializeArray(target), - ]; - }, - ); + return [wire.serializeArray(challenge), wire.serializeArray(target)]; + }); return { magic: wire.CHALLENGE_MAGIC, @@ -41,10 +36,8 @@ export async function createChallenges( options: CreateChallengesOptions, secret: string, ): Promise { - return await wire.serializeAndSignData( - createChallengesRaw(options), - secret, - ); + const data = await createChallengesRaw(options); + return await wire.serializeAndSignData(data, secret); } export async function redeemChallengeSolutionRaw( diff --git a/pkgs/solver/src/lib.spec.ts b/pkgs/pow-captcha/src/solver.spec.ts similarity index 93% rename from pkgs/solver/src/lib.spec.ts rename to pkgs/pow-captcha/src/solver.spec.ts index 169c55c..6b2eca1 100644 --- a/pkgs/solver/src/lib.spec.ts +++ b/pkgs/pow-captcha/src/solver.spec.ts @@ -1,5 +1,5 @@ import { describe, it, expect } from "@jest/globals"; -import * as solver from "./lib"; +import * as solver from "./solver"; describe("solver", () => { it("solveJs", async () => { diff --git a/pkgs/solver/src/lib.ts b/pkgs/pow-captcha/src/solver.ts similarity index 79% rename from pkgs/solver/src/lib.ts rename to pkgs/pow-captcha/src/solver.ts index a6316f7..02fae95 100644 --- a/pkgs/solver/src/lib.ts +++ b/pkgs/pow-captcha/src/solver.ts @@ -1,3 +1,5 @@ +import { arrayStartsWith } from "./utils"; + export async function solveJs( nonce: Uint8Array, target: Uint8Array, @@ -42,16 +44,3 @@ export async function verify( return arrayStartsWith(hash, target); } - -function arrayStartsWith(array: Uint8Array, search: Uint8Array): boolean { - const searchLen = search.length; - if (searchLen > array.length) { - return false; - } - for (let i = 0; i < searchLen; i += 1) { - if (array[i] !== search[i]) { - return false; - } - } - return true; -} diff --git a/pkgs/shared/src/utils.ts b/pkgs/pow-captcha/src/utils.ts similarity index 58% rename from pkgs/shared/src/utils.ts rename to pkgs/pow-captcha/src/utils.ts index e768bb7..b6861b8 100644 --- a/pkgs/shared/src/utils.ts +++ b/pkgs/pow-captcha/src/utils.ts @@ -17,3 +17,16 @@ export function byteArraysEqual(arr1: Uint8Array, arr2: Uint8Array): boolean { } return true; } + +export function arrayStartsWith(array: Uint8Array, search: Uint8Array): boolean { + const searchLen = search.length; + if (searchLen > array.length) { + return false; + } + for (let i = 0; i < searchLen; i += 1) { + if (array[i] !== search[i]) { + return false; + } + } + return true; +} diff --git a/pkgs/shared/src/wire.ts b/pkgs/pow-captcha/src/wire.ts similarity index 100% rename from pkgs/shared/src/wire.ts rename to pkgs/pow-captcha/src/wire.ts diff --git a/pkgs/server/tsconfig.build.json b/pkgs/pow-captcha/tsconfig.build.json similarity index 100% rename from pkgs/server/tsconfig.build.json rename to pkgs/pow-captcha/tsconfig.build.json diff --git a/pkgs/server/tsconfig.json b/pkgs/pow-captcha/tsconfig.json similarity index 100% rename from pkgs/server/tsconfig.json rename to pkgs/pow-captcha/tsconfig.json diff --git a/pkgs/server/package.json b/pkgs/server/package.json deleted file mode 100644 index 76bb4ac..0000000 --- a/pkgs/server/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "@pow-captcha/server", - "version": "0.0.0", - "main": "dist/lib.js", - "type": "module", - "types": "dist/lib.d.ts", - "scripts": { - "build": "tsc -p tsconfig.build.json", - "test": "jest" - }, - "dependencies": { - "@pow-captcha/solver": "workspace:*", - "@pow-captcha/shared": "workspace:*" - } -} diff --git a/pkgs/shared/src/lib.ts b/pkgs/shared/src/lib.ts deleted file mode 100644 index de8bd1f..0000000 --- a/pkgs/shared/src/lib.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * as wire from "./wire"; -export * as utils from "./utils"; diff --git a/pkgs/shared/tsconfig.build.json b/pkgs/shared/tsconfig.build.json deleted file mode 100644 index b284420..0000000 --- a/pkgs/shared/tsconfig.build.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../../tsconfig.build.json", - "compilerOptions": { - "outDir": "dist" - }, - "include": ["src/**/*"], - "exclude": ["**/*.spec.ts"] -} diff --git a/pkgs/shared/tsconfig.json b/pkgs/shared/tsconfig.json deleted file mode 100644 index 269232f..0000000 --- a/pkgs/shared/tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "include": ["src/**/*"] -} diff --git a/pkgs/solver/jest.config.js b/pkgs/solver/jest.config.js deleted file mode 100644 index fd1083d..0000000 --- a/pkgs/solver/jest.config.js +++ /dev/null @@ -1,6 +0,0 @@ -/** @type {import('jest').Config} */ -export default { - transform: { - "^.+\\.(t|j)sx?$": "@swc/jest", - }, -}; diff --git a/pkgs/solver/package.json b/pkgs/solver/package.json deleted file mode 100644 index 6e8fdaa..0000000 --- a/pkgs/solver/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "@pow-captcha/solver", - "version": "0.0.0", - "main": "dist/lib.js", - "type": "module", - "types": "dist/lib.d.ts", - "scripts": { - "build": "tsc -p tsconfig.build.json", - "test": "jest" - } -} diff --git a/pkgs/solver/tsconfig.build.json b/pkgs/solver/tsconfig.build.json deleted file mode 100644 index b284420..0000000 --- a/pkgs/solver/tsconfig.build.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../../tsconfig.build.json", - "compilerOptions": { - "outDir": "dist" - }, - "include": ["src/**/*"], - "exclude": ["**/*.spec.ts"] -} diff --git a/pkgs/solver/tsconfig.json b/pkgs/solver/tsconfig.json deleted file mode 100644 index 269232f..0000000 --- a/pkgs/solver/tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "include": ["src/**/*"] -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 62992c7..907360e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,16 +42,7 @@ importers: specifier: ^8.35.0 version: 8.35.0(eslint@9.29.0)(typescript@5.8.3) - pkgs/server: - dependencies: - '@pow-captcha/shared': - specifier: workspace:* - version: link:../shared - '@pow-captcha/solver': - specifier: workspace:* - version: link:../solver - - pkgs/shared: + pkgs/pow-captcha: dependencies: base64-js: specifier: ^1.5.1 @@ -60,7 +51,7 @@ importers: specifier: ^3.25.67 version: 3.25.67 - pkgs/solver: {} + pkgs/solver-wasm: {} packages: