Releases: PerryTS/storekit
Release list
v0.1.3
Build on non-Mac hosts — including for iOS
The package no longer requires Swift or macOS to build, for any target:
- Linux / Windows / Android targets — pure Rust (perry-ffi → dashmap, once_cell).
crate-iosnow compiles the same stub fallback ascrate-stubon non-Apple targets instead of failing atxcrun. - iOS / macOS targets from a non-Mac host — the npm tarball ships prebuilt Swift bridge archives (
crate-ios/prebuilt/<rust-triple>/libstorekit_bridge.a, built on macOS CI at publish time). Whenbuild.rsfinds noswiftc, it links the prebuilt bridge, socargo build --target aarch64-apple-iosworks on Linux with onlyrustup target add aarch64-apple-ios. Perry's Linux builders link the result withld64.lld+ Apple sysroot as usual. - Macs with Xcode — unchanged: the bridge compiles from source. Force a path with
PERRY_STOREKIT_BRIDGE=source|prebuilt.
CI now includes an ios-from-linux job that builds the iOS device archive on an ubuntu runner and asserts the full FFI + Swift bridge symbol surface.
v0.1.2
Changes
- Clarify that Android is served by
@perryts/play-billing— the Play Billing binding has shipped as a separate package. - Update README platforms table and npm description; drop stale references to issue #537.
No functional or API changes.
v0.1.1 — provenance casing fix
Fixes npm trusted-publisher provenance verification (0.1.0 failed at npm's signature step because package.json :: repository.url was lowercase perryts/storekit while GitHub's OIDC token reported PerryTS/storekit).
No code changes — same FFI surface, same Swift bridge, same TS types as 0.1.0.
v0.1.0 — initial release
First release of @perryts/storekit — StoreKit 2 in-app purchase bindings for Perry.
Closes PerryTS/perry#537.
Highlights
- Built against
perry-ffi = "0.5"(declaresperry.nativeLibrary.abiVersion: "0.5"). - Six FFI exports —
js_storekit_load_products/purchase/restore/has_subscription/get_jws/start_listener— wired to a Swift bridge over StoreKit 2 (Product.products(for:),Product.purchase(),AppStore.sync(),Transaction.currentEntitlements,Transaction.updates). - iOS 16+ and macOS 13+ build the Swift bridge via
crate-ios/build.rs. Non-Apple targets fall back tocrate-stubso calling code can use the same imports without#ifdef-style platform checks. - TypeScript exports the typed
Product/PurchaseResult/HasSubscriptionResult/JwsResult/RestoreResultshapes alongside the raw FFI declarations. README has a copy-pasteable typed wrapper layer.
Still open
Google Play Billing for Android is a separate binding (same TS surface, different native side) — out of scope for this release.