sharp was the only native dependency preventing a single-file binary. Replaced with: - jpeg-js (pure JS) for JPEG decode/resize/encode in thumbnail gen - exif-reader (pure JS) for EXIF tag parsing - Raw JPEG APP1 marker extraction for EXIF segment discovery - Raw XMP packet extraction from file bytes make build-bin produces a ~59MB self-contained Mach-O binary via bun build --compile (bun installed via nix-shell). Zero runtime dependencies. Tested: login, whoami, collections, files all work from the compiled binary. bin/quak.ts: init() called once at program start before commander parses, so libsodium is ready for all commands including those that restore sessions from disk. 118 tests pass.
49 lines
1.3 KiB
JSON
49 lines
1.3 KiB
JSON
{
|
|
"name": "quak",
|
|
"version": "0.0.0",
|
|
"description": "TypeScript client library and CLI for the Ente end-to-end encrypted photo service",
|
|
"license": "WTFPL",
|
|
"author": "@sneak <https://sneak.berlin>",
|
|
"homepage": "https://git.eeqj.de/sneak/quak",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://git.eeqj.de/sneak/quak.git"
|
|
},
|
|
"type": "module",
|
|
"main": "./dist/index.js",
|
|
"types": "./dist/index.d.ts",
|
|
"bin": {
|
|
"quak": "./dist/bin/quak.js"
|
|
},
|
|
"files": [
|
|
"dist/",
|
|
"README.md",
|
|
"LICENSE"
|
|
],
|
|
"scripts": {
|
|
"build": "tsc",
|
|
"test": "vitest run",
|
|
"lint": "eslint .",
|
|
"fmt": "prettier --write .",
|
|
"fmt-check": "prettier --check ."
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "9.38.0",
|
|
"@types/libsodium-wrappers-sumo": "0.8.2",
|
|
"@types/node": "22.18.13",
|
|
"eslint": "9.38.0",
|
|
"prettier": "3.8.1",
|
|
"typescript": "5.9.3",
|
|
"typescript-eslint": "8.46.2",
|
|
"vitest": "2.1.9"
|
|
},
|
|
"dependencies": {
|
|
"commander": "14.0.3",
|
|
"env-paths": "4.0.0",
|
|
"exif-reader": "2.0.3",
|
|
"fast-srp-hap": "2.0.4",
|
|
"jpeg-js": "0.4.4",
|
|
"libsodium-wrappers-sumo": "0.8.4"
|
|
}
|
|
}
|