@prosopo/puzzle-assets 0.2.5 → 0.2.7
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/.turbo/turbo-build$colon$cjs.log +1 -1
- package/.turbo/turbo-build$colon$esm.log +2 -2
- package/.turbo/turbo-build$colon$tsc.log +4 -4
- package/CHANGELOG.md +16 -0
- package/dist/esm/browser.js +2 -1
- package/dist/tsc/browser.d.ts +2 -0
- package/dist/tsc/browser.d.ts.map +1 -1
- package/dist/tsc/browser.js +1 -0
- package/dist/tsc/browser.js.map +1 -1
- package/dist/tsc/tests/previewArgs.unit.test.d.ts +2 -0
- package/dist/tsc/tests/previewArgs.unit.test.d.ts.map +1 -0
- package/dist/tsc/tests/previewArgs.unit.test.js +25 -0
- package/dist/tsc/tests/previewArgs.unit.test.js.map +1 -0
- package/dist/types/browser.d.ts +2 -0
- package/dist/types/browser.d.ts.map +1 -1
- package/dist/types/tests/previewArgs.unit.test.d.ts +2 -0
- package/dist/types/tests/previewArgs.unit.test.d.ts.map +1 -0
- package/package.json +2 -2
- package/scripts/preview.ts +11 -2
|
@@ -11,8 +11,8 @@ rendering chunks...
|
|
|
11
11
|
computing gzip size...
|
|
12
12
|
dist/esm/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
|
|
13
13
|
dist/esm/prng.js 1.40 kB │ gzip: 0.73 kB
|
|
14
|
-
dist/esm/browser.js 1.66 kB │ gzip: 0.69 kB
|
|
15
14
|
dist/esm/encode.js 1.67 kB │ gzip: 0.82 kB
|
|
15
|
+
dist/esm/browser.js 1.72 kB │ gzip: 0.71 kB
|
|
16
16
|
dist/esm/index.js 3.51 kB │ gzip: 1.41 kB
|
|
17
17
|
dist/esm/palette.js 3.99 kB │ gzip: 1.79 kB
|
|
18
18
|
dist/esm/contrast.js 4.03 kB │ gzip: 1.90 kB
|
|
@@ -21,4 +21,4 @@ dist/esm/notch.js 4.41 kB │ gzip: 1.81 kB
|
|
|
21
21
|
dist/esm/decoys.js 4.50 kB │ gzip: 1.93 kB
|
|
22
22
|
dist/esm/compose.js 10.51 kB │ gzip: 4.01 kB
|
|
23
23
|
|
|
24
|
-
[32m✓ built in
|
|
24
|
+
[32m✓ built in 32ms[39m
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
$ tsc --build --verbose
|
|
2
|
-
|
|
2
|
+
10:05:40 AM - Projects in this build:
|
|
3
3
|
* ../../dev/config/tsconfig.json
|
|
4
4
|
* tsconfig.json
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
10:05:41 AM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/dist/tsc/tsconfig.tsbuildinfo'
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
10:05:41 AM - Project 'tsconfig.json' is out of date because output file 'dist/tsc/tsconfig.tsbuildinfo' does not exist
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
10:05:41 AM - Building project '/home/runner/work/captcha/captcha/packages/puzzle-assets/tsconfig.json'...
|
|
11
11
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @prosopo/puzzle-assets
|
|
2
2
|
|
|
3
|
+
## 0.2.7
|
|
4
|
+
### Patch Changes
|
|
5
|
+
|
|
6
|
+
- e1cb7f4: Icon order challenges can now be redrawn exactly, the way puzzle challenges already can.
|
|
7
|
+
|
|
8
|
+
- The provider saves what it needs to redraw each icon order challenge on its record: the render seed, the frame geometry and the render settings (`render`).
|
|
9
|
+
- `@prosopo/icon-order-assets/browser` is a new entry that rebuilds a challenge from those inputs without `sharp`, so the portal can show the image a visitor was served. It returns the frame and the target strip as SVG plus the grain to lay over the frame. Rasterised the same way, the frame matches the served one byte for byte.
|
|
10
|
+
- `@prosopo/puzzle-assets/browser` also exports `hslToRgb` and the `Prng` type, which the new entry uses.
|
|
11
|
+
|
|
12
|
+
The seed regenerates the answer too, so like the puzzle seeds it is never sent to a client.
|
|
13
|
+
|
|
14
|
+
## 0.2.6
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- cdea91f: Stop malformed input from turning into silent wrong values or unhandled throws. Numbers from env vars, headers, request fields and CLI flags are now parsed strictly: "12abc" is no longer read as 12, and an empty string is no longer read as 0. A bad request timestamp now gets a 400 response instead of a 500 or NaN. JSON reads name the file or source that was bad, and JSON writes no longer throw on bigints. Composite IP addresses and dates that cannot be read are now rejected instead of crashing or slipping through as an Invalid Date.
|
|
18
|
+
|
|
3
19
|
## 0.2.5
|
|
4
20
|
### Patch Changes
|
|
5
21
|
|
package/dist/esm/browser.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import "./_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { hslToRgb } from "./palette.js";
|
|
2
3
|
import { generateBackground } from "./background.js";
|
|
3
4
|
import { createNotchShape } from "./notch.js";
|
|
4
5
|
import { cutNotch } from "./compose.js";
|
|
@@ -36,4 +37,4 @@ var renderPuzzleToRgba = (background, placement, geometry = DEFAULT_GEOMETRY, se
|
|
|
36
37
|
};
|
|
37
38
|
var createBackground = (geometry = DEFAULT_GEOMETRY, seed = createSeed()) => generateBackground(createPrng(seed), geometry.width, geometry.height);
|
|
38
39
|
//#endregion
|
|
39
|
-
export { DEFAULT_GEOMETRY, DEFAULT_RENDER_SETTINGS, SEED_BYTES, createBackground, createPrng, createSeed, generateBackground, paintDecoyPiece, paintDecoys, renderPuzzleToRgba };
|
|
40
|
+
export { DEFAULT_GEOMETRY, DEFAULT_RENDER_SETTINGS, SEED_BYTES, createBackground, createPrng, createSeed, generateBackground, hslToRgb, paintDecoyPiece, paintDecoys, renderPuzzleToRgba };
|
package/dist/tsc/browser.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { NotchPlacement, PuzzleGeometry, PuzzleRenderSettings, RgbaImage } from "./types.js";
|
|
2
2
|
export { createPrng, createSeed, SEED_BYTES } from "./prng.js";
|
|
3
|
+
export type { Prng } from "./prng.js";
|
|
4
|
+
export { hslToRgb } from "./palette.js";
|
|
3
5
|
export { generateBackground } from "./background.js";
|
|
4
6
|
export { paintDecoys, paintDecoyPiece } from "./decoys.js";
|
|
5
7
|
export type { NotchPlacement, PuzzleGeometry, PuzzleRenderSettings, RenderedPuzzle, RgbaImage, } from "./types.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACX,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,SAAS,EACT,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC3D,YAAY,EACX,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,SAAS,GACT,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,gBAAgB,EAAE,cAI9B,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,oBAMrC,CAAC;AAEF,MAAM,WAAW,kBAAkB;IAClC,UAAU,EAAE,SAAS,CAAC;IACtB,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,EAAE,MAAM,CAAC;CACb;AAOD,eAAO,MAAM,kBAAkB,eAClB,SAAS,aACV,cAAc,aACf,cAAc,aACd,oBAAoB,SACxB,MAAM,KACV,kBAuBF,CAAC;AAEF,eAAO,MAAM,gBAAgB,cAClB,cAAc,SAClB,MAAM,KACV,SACmE,CAAC"}
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACX,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,SAAS,EACT,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/D,YAAY,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC3D,YAAY,EACX,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,SAAS,GACT,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,gBAAgB,EAAE,cAI9B,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,oBAMrC,CAAC;AAEF,MAAM,WAAW,kBAAkB;IAClC,UAAU,EAAE,SAAS,CAAC;IACtB,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,EAAE,MAAM,CAAC;CACb;AAOD,eAAO,MAAM,kBAAkB,eAClB,SAAS,aACV,cAAc,aACf,cAAc,aACd,oBAAoB,SACxB,MAAM,KACV,kBAuBF,CAAC;AAEF,eAAO,MAAM,gBAAgB,cAClB,cAAc,SAClB,MAAM,KACV,SACmE,CAAC"}
|
package/dist/tsc/browser.js
CHANGED
|
@@ -4,6 +4,7 @@ import { paintDecoys } from "./decoys.js";
|
|
|
4
4
|
import { createNotchShape } from "./notch.js";
|
|
5
5
|
import { createPrng, createSeed } from "./prng.js";
|
|
6
6
|
export { createPrng, createSeed, SEED_BYTES } from "./prng.js";
|
|
7
|
+
export { hslToRgb } from "./palette.js";
|
|
7
8
|
export { generateBackground } from "./background.js";
|
|
8
9
|
export { paintDecoys, paintDecoyPiece } from "./decoys.js";
|
|
9
10
|
export const DEFAULT_GEOMETRY = {
|
package/dist/tsc/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAQnD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAQnD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE/D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAS3D,MAAM,CAAC,MAAM,gBAAgB,GAAmB;IAC/C,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;IACX,SAAS,EAAE,EAAE;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAyB;IAC5D,UAAU,EAAE,CAAC;IACb,iBAAiB,EAAE,EAAE;IACrB,mBAAmB,EAAE,CAAC;IACtB,UAAU,EAAE,IAAI;IAChB,eAAe,EAAE,GAAG;CACpB,CAAC;AAeF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CACjC,UAAqB,EACrB,SAAyB,EACzB,WAA2B,gBAAgB,EAC3C,WAAiC,uBAAuB,EACxD,OAAe,UAAU,EAAE,EACN,EAAE;IACvB,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC;IAC3D,WAAW,CACV,UAAU,EACV,IAAI,EACJ,QAAQ,CAAC,UAAU,EACnB,SAAS,EACT,SAAS,EACT,QAAQ,CAAC,iBAAiB,EAC1B,QAAQ,CAAC,mBAAmB,EAC5B,QAAQ,CAAC,eAAe,CACxB,CAAC;IACF,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAChD,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,QAAQ,CAC1C,IAAI,EACJ,UAAU,EACV,KAAK,EACL,SAAS,EACT,SAAS,EACT,QAAQ,CAAC,UAAU,CACnB,CAAC;IACF,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC/B,WAA2B,gBAAgB,EAC3C,OAAe,UAAU,EAAE,EACf,EAAE,CACd,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"previewArgs.unit.test.d.ts","sourceRoot":"","sources":["../../../src/tests/previewArgs.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { existsSync, mkdtempSync, rmSync } from "node:fs";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
import { afterEach, describe, expect, it } from "vitest";
|
|
7
|
+
const packageDir = fileURLToPath(new URL("../..", import.meta.url));
|
|
8
|
+
const tsx = join(packageDir, "node_modules/.bin/tsx");
|
|
9
|
+
describe("preview script --count", () => {
|
|
10
|
+
let dir;
|
|
11
|
+
afterEach(() => {
|
|
12
|
+
if (dir)
|
|
13
|
+
rmSync(dir, { recursive: true, force: true });
|
|
14
|
+
dir = undefined;
|
|
15
|
+
});
|
|
16
|
+
it.each(["abc", "12abc", "1.5", "0", "-3", ""])("rejects %j before writing anything", (count) => {
|
|
17
|
+
dir = mkdtempSync(join(tmpdir(), "preview-"));
|
|
18
|
+
const out = join(dir, "out");
|
|
19
|
+
const run = spawnSync(tsx, ["scripts/preview.ts", "--count", count, "--out", out], { cwd: packageDir, encoding: "utf8", timeout: 30_000 });
|
|
20
|
+
expect(run.status).not.toBe(0);
|
|
21
|
+
expect(run.stderr).toContain("--count must be a positive integer");
|
|
22
|
+
expect(existsSync(out)).toBe(false);
|
|
23
|
+
}, 30_000);
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=previewArgs.unit.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"previewArgs.unit.test.js","sourceRoot":"","sources":["../../../src/tests/previewArgs.unit.test.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEzD,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACpE,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;AAEtD,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACvC,IAAI,GAAuB,CAAC;IAC5B,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,GAAG;YAAE,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,GAAG,GAAG,SAAS,CAAC;IACjB,CAAC,CAAC,CAAC;IAIH,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAC9C,oCAAoC,EACpC,CAAC,KAAK,EAAE,EAAE;QACT,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,SAAS,CACpB,GAAG,EACH,CAAC,oBAAoB,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EACtD,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CACtD,CAAC;QACF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,oCAAoC,CAAC,CAAC;QACnE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,EACD,MAAM,CACN,CAAC;AACH,CAAC,CAAC,CAAC"}
|
package/dist/types/browser.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { NotchPlacement, PuzzleGeometry, PuzzleRenderSettings, RgbaImage } from "./types.js";
|
|
2
2
|
export { createPrng, createSeed, SEED_BYTES } from "./prng.js";
|
|
3
|
+
export type { Prng } from "./prng.js";
|
|
4
|
+
export { hslToRgb } from "./palette.js";
|
|
3
5
|
export { generateBackground } from "./background.js";
|
|
4
6
|
export { paintDecoys, paintDecoyPiece } from "./decoys.js";
|
|
5
7
|
export type { NotchPlacement, PuzzleGeometry, PuzzleRenderSettings, RenderedPuzzle, RgbaImage, } from "./types.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACX,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,SAAS,EACT,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC3D,YAAY,EACX,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,SAAS,GACT,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,gBAAgB,EAAE,cAI9B,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,oBAMrC,CAAC;AAEF,MAAM,WAAW,kBAAkB;IAClC,UAAU,EAAE,SAAS,CAAC;IACtB,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,EAAE,MAAM,CAAC;CACb;AAOD,eAAO,MAAM,kBAAkB,eAClB,SAAS,aACV,cAAc,aACf,cAAc,aACd,oBAAoB,SACxB,MAAM,KACV,kBAuBF,CAAC;AAEF,eAAO,MAAM,gBAAgB,cAClB,cAAc,SAClB,MAAM,KACV,SACmE,CAAC"}
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACX,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,SAAS,EACT,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/D,YAAY,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC3D,YAAY,EACX,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,SAAS,GACT,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,gBAAgB,EAAE,cAI9B,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,oBAMrC,CAAC;AAEF,MAAM,WAAW,kBAAkB;IAClC,UAAU,EAAE,SAAS,CAAC;IACtB,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,EAAE,MAAM,CAAC;CACb;AAOD,eAAO,MAAM,kBAAkB,eAClB,SAAS,aACV,cAAc,aACf,cAAc,aACd,oBAAoB,SACxB,MAAM,KACV,kBAuBF,CAAC;AAEF,eAAO,MAAM,gBAAgB,cAClB,cAAc,SAClB,MAAM,KACV,SACmE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"previewArgs.unit.test.d.ts","sourceRoot":"","sources":["../../../src/tests/previewArgs.unit.test.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prosopo/puzzle-assets",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.7",
|
|
4
4
|
"description": "Procedural imagery for the slider puzzle captcha",
|
|
5
5
|
"main": "dist/esm/index.js",
|
|
6
6
|
"types": "dist/types/index.d.ts",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"sharp": "0.35.5"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@prosopo/config": "3.5.
|
|
38
|
+
"@prosopo/config": "3.5.4",
|
|
39
39
|
"@types/node": "22.10.2",
|
|
40
40
|
"@vitest/coverage-v8": "5.0.4",
|
|
41
41
|
"del-cli": "6.0.0",
|
package/scripts/preview.ts
CHANGED
|
@@ -40,13 +40,22 @@ interface Args {
|
|
|
40
40
|
out: string;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
/** `--count` must be a whole number of at least 1; parseInt would read "12abc" as 12 and "abc" as NaN. */
|
|
44
|
+
const parseCount = (value: string): number => {
|
|
45
|
+
const count = Number(value);
|
|
46
|
+
if (value.trim() === "" || !Number.isSafeInteger(count) || count < 1) {
|
|
47
|
+
throw new Error(`--count must be a positive integer, got "${value}"`);
|
|
48
|
+
}
|
|
49
|
+
return count;
|
|
50
|
+
};
|
|
51
|
+
|
|
43
52
|
const parseArgs = (argv: readonly string[]): Args => {
|
|
44
53
|
const args: Args = { count: 24, out: "./preview" };
|
|
45
54
|
for (let i = 0; i < argv.length; i++) {
|
|
46
55
|
const flag = argv[i];
|
|
47
56
|
const value = argv[i + 1];
|
|
48
|
-
if (flag === "--count" && value) {
|
|
49
|
-
args.count =
|
|
57
|
+
if (flag === "--count" && value !== undefined) {
|
|
58
|
+
args.count = parseCount(value);
|
|
50
59
|
i++;
|
|
51
60
|
} else if (flag === "--out" && value) {
|
|
52
61
|
args.out = value;
|