Node.js daemon: Ed25519 identity + self-signed TLS, signed registration/ renewal with the central registry, mDNS advertising, disk-backed fetch-through asset cache with an origin allowlist. Includes a local dev-registry stand-in for the real oxmc.me endpoints and an end-to-end smoke test (register -> token -> cache miss/hit -> SSRF rejection). See README.md for the full protocol and trust model.
152 lines
5.3 KiB
JSON
152 lines
5.3 KiB
JSON
{
|
|
"name": "pawletcache-server",
|
|
"version": "1.0.0",
|
|
"lockfileVersion": 3,
|
|
"requires": true,
|
|
"packages": {
|
|
"": {
|
|
"name": "pawletcache-server",
|
|
"version": "1.0.0",
|
|
"license": "Apache-2.0",
|
|
"dependencies": {
|
|
"bonjour-service": "^1.2.1",
|
|
"js-yaml": "^4.1.0",
|
|
"selfsigned": "^2.4.1"
|
|
},
|
|
"bin": {
|
|
"pawletcache-server": "src/index.js"
|
|
},
|
|
"engines": {
|
|
"node": ">=20"
|
|
}
|
|
},
|
|
"node_modules/@leichtgewicht/ip-codec": {
|
|
"version": "2.0.5",
|
|
"resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz",
|
|
"integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==",
|
|
"license": "MIT"
|
|
},
|
|
"node_modules/@types/node": {
|
|
"version": "26.1.1",
|
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.1.tgz",
|
|
"integrity": "sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"undici-types": "~8.3.0"
|
|
}
|
|
},
|
|
"node_modules/@types/node-forge": {
|
|
"version": "1.3.14",
|
|
"resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz",
|
|
"integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"@types/node": "*"
|
|
}
|
|
},
|
|
"node_modules/argparse": {
|
|
"version": "2.0.1",
|
|
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
|
|
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
|
|
"license": "Python-2.0"
|
|
},
|
|
"node_modules/bonjour-service": {
|
|
"version": "1.4.3",
|
|
"resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.4.3.tgz",
|
|
"integrity": "sha512-2Kd5UYlFUVgAKMTyuBLl6w49wqfOnbxHqmuH0oCl/n7TfAikR0zoowNOP5BU4dfXmm+Vr9JyEN370auSMx+CNg==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"fast-deep-equal": "^3.1.3",
|
|
"multicast-dns": "^7.2.5"
|
|
}
|
|
},
|
|
"node_modules/dns-packet": {
|
|
"version": "5.6.1",
|
|
"resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz",
|
|
"integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"@leichtgewicht/ip-codec": "^2.0.1"
|
|
},
|
|
"engines": {
|
|
"node": ">=6"
|
|
}
|
|
},
|
|
"node_modules/fast-deep-equal": {
|
|
"version": "3.1.3",
|
|
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
|
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
|
|
"license": "MIT"
|
|
},
|
|
"node_modules/js-yaml": {
|
|
"version": "4.3.0",
|
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz",
|
|
"integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==",
|
|
"funding": [
|
|
{
|
|
"type": "github",
|
|
"url": "https://github.com/sponsors/puzrin"
|
|
},
|
|
{
|
|
"type": "github",
|
|
"url": "https://github.com/sponsors/nodeca"
|
|
}
|
|
],
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"argparse": "^2.0.1"
|
|
},
|
|
"bin": {
|
|
"js-yaml": "bin/js-yaml.js"
|
|
}
|
|
},
|
|
"node_modules/multicast-dns": {
|
|
"version": "7.2.5",
|
|
"resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz",
|
|
"integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"dns-packet": "^5.2.2",
|
|
"thunky": "^1.0.2"
|
|
},
|
|
"bin": {
|
|
"multicast-dns": "cli.js"
|
|
}
|
|
},
|
|
"node_modules/node-forge": {
|
|
"version": "1.4.0",
|
|
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz",
|
|
"integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==",
|
|
"license": "(BSD-3-Clause OR GPL-2.0)",
|
|
"engines": {
|
|
"node": ">= 6.13.0"
|
|
}
|
|
},
|
|
"node_modules/selfsigned": {
|
|
"version": "2.4.1",
|
|
"resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz",
|
|
"integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"@types/node-forge": "^1.3.0",
|
|
"node-forge": "^1"
|
|
},
|
|
"engines": {
|
|
"node": ">=10"
|
|
}
|
|
},
|
|
"node_modules/thunky": {
|
|
"version": "1.1.0",
|
|
"resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
|
|
"integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
|
|
"license": "MIT"
|
|
},
|
|
"node_modules/undici-types": {
|
|
"version": "8.3.0",
|
|
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz",
|
|
"integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==",
|
|
"license": "MIT"
|
|
}
|
|
}
|
|
}
|