@synopackageland/package-source
v0.2.1
Published
Package Center machine source (Cloudflare Worker + R2)
Readme
Package Source (@synopackageland/package-source)
Machine-readable Package Center source for Syno Package Land. A Cloudflare Worker serves a spkrepo-compatible catalog; SPK artifacts live in R2 behind immutable URLs.
Endpoints
| Path | Method | Purpose |
| --- | --- | --- |
| / | GET/POST | Package catalog (build, arch, major, language query params) |
| /api/package | GET/POST | Same catalog (alias) |
| /spk/{package}/{version}/{sha256}.spk | GET/HEAD | Immutable SPK download |
DSM Package Center adds the root URL (for example https://packages.example.org/).
Publish order
- Build SPKs (
synopkgland build-spk, brokerbuildBrokerSpk). - Upload each SPK to R2 at a digest-based key (
spk/.../{sha256}.spk). - Verify MD5/SHA-256 locally.
- Upload
_meta/index.jsonlast.
The publish script enforces checksum-before-index:
npm run publish:fixtures -w @synopackageland/package-sourceEnvironment overrides:
PACKAGE_SOURCE_BUCKET(defaultsyno-package-source-throwaway)PACKAGE_SOURCE_ORIGIN(public URL DSM will use)
Deploy (throwaway)
cd packages/package-source
npm install
wrangler r2 bucket create syno-package-source-throwaway
npm run publish:fixtures
wrangler deploy --env throwawaySmoke the catalog (throwaway test host — change PACKAGE_SOURCE_ORIGIN when domain moves):
curl "https://packages.varvis.me/?arch=x86_64&build=69057&major=7&language=enu"workers.dev fallback remains available at deploy output URL.
Tests
npm test -w @synopackageland/package-sourceCovers index shape, Broker deppkgs, immutable SPK keys, checksum-then-index ordering, Worker catalog/HEAD behavior.
Notes
- Throwaway public host is currently
packages.varvis.me(test-only; seewrangler.jsoncenvthrowaway). - No WAF challenge on the
packages.worker route (separate from the human website). - Do not use
r2.devas the official DSM-facing URL. deppkgsin the index mirrors SPKinstall_dep_packagesso Package Center can install Broker before hello-web.
