check / check (push) Successful in 28s
downloadFile, shared by quak get, the content cache and backup, hashes the decrypted bytes (unkeyed BLAKE2b-512, standard base64) and stores nothing on a mismatch, failing with an error naming the file ID. A live photo ZIP is unpacked as it streams with fflate's Unzip, in small slices so memory stays bounded however far an entry expands, and its image and video hashed separately as <imageHash>:<videoHash>. decryptFile reads the older imageHash/videoHash fields for live photos. A file with no recorded hash is stored unchecked. Model: opus-5-5
50 lines
1.3 KiB
JSON
50 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/src/index.js",
|
|
"types": "./dist/src/index.d.ts",
|
|
"bin": {
|
|
"quak": "./dist/bin/quak.js"
|
|
},
|
|
"files": [
|
|
"dist/",
|
|
"README.md",
|
|
"LICENSE"
|
|
],
|
|
"scripts": {
|
|
"build": "script/build",
|
|
"quak": "node ./dist/bin/quak.js",
|
|
"test": "vitest run",
|
|
"fmt": "prettier --write .",
|
|
"fmt-check": "prettier --check ."
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "9.38.0",
|
|
"@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": {
|
|
"@inquirer/prompts": "8.5.2",
|
|
"commander": "14.0.3",
|
|
"env-paths": "4.0.0",
|
|
"exif-reader": "2.0.3",
|
|
"fast-srp-hap": "2.0.4",
|
|
"fflate": "0.8.3",
|
|
"jpeg-js": "0.4.4",
|
|
"libsodium-wrappers-sumo": "0.8.4"
|
|
}
|
|
}
|