Issue Apple Wallet and Google Wallet passes from any edge runtime. Zero Node built-ins, Web Crypto only.
See the code
Issue Apple Wallet and Google Wallet passes from any edge runtime.
One unified pass schema. Two outputs: a signed .pkpass for iOS and a Google Wallet save-link JWT for Android. Zero node:* imports, Web Crypto only.
const pass = Pass.eventTicket({ /* ... */ }).build()
await pass.sign(apple) // .pkpass bytes
await pass.toGoogleSaveLink(google, { origins: [...] }) // pay.google.com URL
Status: pre-1.0 alpha. API may change based on real-world feedback.
👉 Full docs, quickstart, and API reference: packages/passmint/README.md
node-forge, no node:crypto, no Buffer. Just Uint8Array, crypto.subtle, TextEncoder.Pass builds both an Apple .pkpass and a Google save-link JWT.| Package | Status | Description |
|---|---|---|
passmint | pre-alpha | Core library. Edge-runtime compatible. |
packages/passmint/ the library
examples/node/ Node examples for Apple + Google
.changeset/ changeset-driven release notes
.github/workflows/ CI (lint/type-check/test/bundle-guard/publint/attw/size)
+ release workflow (changesets → npm with provenance)
Prerequisites: Node 20+, pnpm 9+, and openssl on PATH (tests shell out to it for round-trip verification).
pnpm install
pnpm build # tsdown ESM build
pnpm test # vitest (Node pool)
pnpm lint # biome
pnpm type-check # tsc --noEmit
cd packages/passmint
pnpm test:workers # smoke tests inside real workerd via vitest-pool-workers
pnpm bundle-guard # fails if dist/ contains any `node:*` import
pnpm publint # catches common publish mistakes
pnpm attw # @arethetypeswrong/cli, esm-only profile
pnpm size # size-limit gate
Releases are driven by changesets:
pnpm changesetmain, the release workflow opens (or updates) a "Version Packages" PR.MIT
Issue Apple Wallet and Google Wallet passes from any edge runtime. Zero Node built-ins, Web Crypto only.
See the code
Issue Apple Wallet and Google Wallet passes from any edge runtime.
One unified pass schema. Two outputs: a signed .pkpass for iOS and a Google Wallet save-link JWT for Android. Zero node:* imports, Web Crypto only.
const pass = Pass.eventTicket({ /* ... */ }).build()
await pass.sign(apple) // .pkpass bytes
await pass.toGoogleSaveLink(google, { origins: [...] }) // pay.google.com URL
Status: pre-1.0 alpha. API may change based on real-world feedback.
👉 Full docs, quickstart, and API reference: packages/passmint/README.md
node-forge, no node:crypto, no Buffer. Just Uint8Array, crypto.subtle, TextEncoder.Pass builds both an Apple .pkpass and a Google save-link JWT.| Package | Status | Description |
|---|---|---|
passmint | pre-alpha | Core library. Edge-runtime compatible. |
packages/passmint/ the library
examples/node/ Node examples for Apple + Google
.changeset/ changeset-driven release notes
.github/workflows/ CI (lint/type-check/test/bundle-guard/publint/attw/size)
+ release workflow (changesets → npm with provenance)
Prerequisites: Node 20+, pnpm 9+, and openssl on PATH (tests shell out to it for round-trip verification).
pnpm install
pnpm build # tsdown ESM build
pnpm test # vitest (Node pool)
pnpm lint # biome
pnpm type-check # tsc --noEmit
cd packages/passmint
pnpm test:workers # smoke tests inside real workerd via vitest-pool-workers
pnpm bundle-guard # fails if dist/ contains any `node:*` import
pnpm publint # catches common publish mistakes
pnpm attw # @arethetypeswrong/cli, esm-only profile
pnpm size # size-limit gate
Releases are driven by changesets:
pnpm changesetmain, the release workflow opens (or updates) a "Version Packages" PR.MIT