@renown/sdk 6.2.2-dev.2 → 6.2.2-dev.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +103 -1
  2. package/dist/crypto.d.ts +2 -2
  3. package/dist/crypto.js +1 -1
  4. package/dist/index-25fTa4yI.d.ts +127 -0
  5. package/dist/index-25fTa4yI.d.ts.map +1 -0
  6. package/dist/index.d.ts +9 -8
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +17 -8
  9. package/dist/index.js.map +1 -1
  10. package/dist/node.d.ts +54 -11
  11. package/dist/node.d.ts.map +1 -1
  12. package/dist/node.js +94 -12
  13. package/dist/node.js.map +1 -1
  14. package/dist/renown-builder-BqWoYtBR.js +841 -0
  15. package/dist/renown-builder-BqWoYtBR.js.map +1 -0
  16. package/dist/{signer-XkA-D7Qt.js → signer-CgYhXTV7.js} +2 -2
  17. package/dist/{signer-XkA-D7Qt.js.map → signer-CgYhXTV7.js.map} +1 -1
  18. package/dist/types-DG816Qa8.js +27 -0
  19. package/dist/types-DG816Qa8.js.map +1 -0
  20. package/dist/{signer-DYKGoYHB.d.ts → types-DsF91dDF.d.ts} +121 -115
  21. package/dist/types-DsF91dDF.d.ts.map +1 -0
  22. package/dist/types-Z6jyeonm.d.ts +54 -0
  23. package/dist/types-Z6jyeonm.d.ts.map +1 -0
  24. package/dist/{utils-D8C7f9Qs.d.ts → utils-OOrVXHof.d.ts} +39 -65
  25. package/dist/utils-OOrVXHof.d.ts.map +1 -0
  26. package/dist/wallet/index.d.ts +30 -0
  27. package/dist/wallet/index.d.ts.map +1 -0
  28. package/dist/wallet/index.js +74 -0
  29. package/dist/wallet/index.js.map +1 -0
  30. package/dist/wallet/mock/index.d.ts +18 -0
  31. package/dist/wallet/mock/index.d.ts.map +1 -0
  32. package/dist/wallet/mock/index.js +38 -0
  33. package/dist/wallet/mock/index.js.map +1 -0
  34. package/dist/wallet/privy/index.d.ts +63 -0
  35. package/dist/wallet/privy/index.d.ts.map +1 -0
  36. package/dist/wallet/privy/index.js +230 -0
  37. package/dist/wallet/privy/index.js.map +1 -0
  38. package/dist/wallet/rainbow/index.d.ts +14 -0
  39. package/dist/wallet/rainbow/index.d.ts.map +1 -0
  40. package/dist/wallet/rainbow/index.js +218 -0
  41. package/dist/wallet/rainbow/index.js.map +1 -0
  42. package/package.json +57 -3
  43. package/dist/browser-key-storage-DSkDBAhU.d.ts +0 -14
  44. package/dist/browser-key-storage-DSkDBAhU.d.ts.map +0 -1
  45. package/dist/renown-builder-DP0iFzK1.js +0 -433
  46. package/dist/renown-builder-DP0iFzK1.js.map +0 -1
  47. package/dist/signer-DYKGoYHB.d.ts.map +0 -1
  48. package/dist/utils-D8C7f9Qs.d.ts.map +0 -1
package/README.md CHANGED
@@ -81,14 +81,116 @@ const { networkId, chainId, address } = parsePkhDid("did:pkh:eip155:1:0x...");
81
81
  const result = await verifyAuthBearerToken(jwt); // false | AuthVerifiedCredential
82
82
  ```
83
83
 
84
+ ## Wallet adapters (in-page sign-in)
85
+
86
+ `@renown/sdk/wallet` provides pluggable wallet adapters so a host app (e.g.
87
+ Connect) can sign a Renown credential **in-page**, without redirecting to the
88
+ Renown portal. Each adapter is a separate subexport, loaded via dynamic
89
+ `import()` so its wallet libraries are **optional peer dependencies** with zero
90
+ startup cost until a login method is chosen.
91
+
92
+ | Subexport | Adapter | Peer dependencies |
93
+ | ------------------------ | -------- | ------------------------------------------------------------- |
94
+ | `@renown/sdk/wallet/rainbow` | RainbowKit + wagmi (external wallets) | `wagmi`, `@rainbow-me/rainbowkit`, `@tanstack/react-query`, `viem` |
95
+ | `@renown/sdk/wallet/privy` | Privy (embedded / social / email) | `@privy-io/react-auth`, `viem` |
96
+ | `@renown/sdk/wallet/mock` | Headless test/dev signer (no UI) | `viem` |
97
+
98
+ Install only the peer deps for the adapters you enable.
99
+
100
+ > **Host apps should not wire these adapters by hand.** Use the
101
+ > `RenownWalletProvider` + `useRenownLoginMethods` + `useRenownAuth` primitives
102
+ > from `@powerhousedao/reactor-browser/renown`, which handle the activator,
103
+ > lazy-loading, controller merging and login UI wiring. See that package's
104
+ > README ("Renown in-page sign-in"). `resolveAdapters` below is the low-level
105
+ > primitive those build on.
106
+
107
+ ```typescript
108
+ import { resolveAdapters } from "@renown/sdk/wallet";
109
+
110
+ // Loads ONLY the configured adapters (dynamic import, on demand).
111
+ const adapters = await resolveAdapters({
112
+ rainbow: { walletConnectProjectId: "..." },
113
+ privy: { appId: "...", methods: ["google", "email"] },
114
+ });
115
+ ```
116
+
117
+ Each adapter exposes a `Provider` (mount it around the app; it accepts a runtime
118
+ `theme` of `"light" | "dark" | { mode, accentColor?, accentColorForeground? }`)
119
+ and a controller with `connect(method?)`, `disconnect()`, and `getSession()`.
120
+ `connect()` resolves a `WalletSession` (`{ address, chainId, signTypedData }`);
121
+ pass it to `renown.signIn(session)` to write + log in the credential in-page.
122
+
123
+ **Login methods.** Rainbow supports `wallet`; Privy supports `wallet`, `google`,
124
+ `apple`, `email` (default `["google", "email"]`). Social/email flows run inside
125
+ Privy's own modal (OAuth uses a popup, keeping the page alive) so sign-in
126
+ completes in-page — no full-page redirect.
127
+
128
+ **Configuration.** Only public identifiers belong in client config: Privy's
129
+ `appId` (and optional `clientId`), and RainbowKit's `walletConnectProjectId`.
130
+ Never put a Privy **App Secret** in browser config — it is server-only.
131
+
84
132
  ## Node.js
85
133
 
86
- For server-side usage, import from `@renown/sdk/node`:
134
+ For server-side usage, import from `@renown/sdk/node`.
135
+
136
+ **Building an instance (scripts / CLI).** The Node `RenownBuilder` uses file-based
137
+ storage. Its `build()` **blocks** on revalidating a stored credential against the
138
+ switchboard before resolving (so a short-lived process acts on fresh state); pass
139
+ `revalidate: "never"` to skip the network check.
87
140
 
88
141
  ```typescript
89
142
  import { RenownBuilder } from "@renown/sdk/node";
143
+
144
+ const renown = await new RenownBuilder("my-cli", {
145
+ switchboardUrl: "https://switchboard.example/graphql",
146
+ }).build();
147
+ // renown.user is present only if the stored credential is still valid
90
148
  ```
91
149
 
150
+ `renown.revalidate()` re-checks the current credential on demand and logs out if
151
+ it was revoked/expired; it is **fail-open** (a network error keeps the session).
152
+
153
+ ### Verifying a session cookie (SSR)
154
+
155
+ To gate server-rendered pages, store the bearer token from
156
+ `renown.getBearerToken()` — plus an optional display hint (name/avatar) — in a
157
+ cookie (name exported as `RENOWN_SESSION_COOKIE`), then verify it on the server:
158
+
159
+ ```typescript
160
+ import {
161
+ serializeRenownSessionCookie,
162
+ verifyRenownSession,
163
+ readSessionClaims,
164
+ } from "@renown/sdk/node";
165
+
166
+ // Build the cookie value (token + display hint) when setting the cookie:
167
+ const cookieValue = serializeRenownSessionCookie({
168
+ token,
169
+ profile: { name: "alice.eth", avatar: null },
170
+ });
171
+
172
+ // Verify the cookie value — checks the JWT (signature + expiry) and merges the
173
+ // display hint (unverified). verifyCredential:true also re-checks vs switchboard.
174
+ const session = await verifyRenownSession(cookieValue, {
175
+ switchboardUrl: "https://switchboard.example/graphql",
176
+ // verifyCredential: true, // default false = token-only, no network
177
+ });
178
+ if (session) {
179
+ // session.user (incl. display hint), session.appDid, session.expiresAt
180
+ }
181
+
182
+ // Cheap, signature-free decode for optimistic checks (e.g. a proxy redirect).
183
+ // NEVER trust this for access control.
184
+ const claims = readSessionClaims(cookieValue);
185
+ ```
186
+
187
+ `verifyCredential` defaults to **`false`** (token-only, no network): the JWT is
188
+ signed and expiring, and the switchboard enforces the credential on every real
189
+ operation, so token-only is enough for optimistic SSR UI. Set it to `true` on
190
+ routes that render sensitive data to also catch revocation server-side. To
191
+ verify a bare bearer token (e.g. an `Authorization` header), use
192
+ `verifyAuthBearerToken` instead.
193
+
92
194
  ## License
93
195
 
94
196
  AGPL-3.0-only
package/dist/crypto.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { a as signatureHasResultingHash, c as ConnectCrypto, d as IConnectCrypto, f as IRenownCrypto, i as parseSignatureHashField, l as RenownCrypto, m as JwkKeyPair, n as createSignatureVerifier, o as MemoryKeyStorage, p as JsonWebKeyPairStorage, r as extractResultingHashFromSignature, s as RenownCryptoBuilder, t as RenownCryptoSigner, u as DID } from "./signer-DYKGoYHB.js";
2
- import { t as BrowserKeyStorage } from "./browser-key-storage-DSkDBAhU.js";
1
+ import { a as JwkKeyPair, i as JsonWebKeyPairStorage, n as IConnectCrypto, r as IRenownCrypto, t as DID } from "./types-DsF91dDF.js";
2
+ import { a as parseSignatureHashField, c as RenownCryptoBuilder, i as extractResultingHashFromSignature, l as ConnectCrypto, n as RenownCryptoSigner, o as signatureHasResultingHash, r as createSignatureVerifier, s as MemoryKeyStorage, t as BrowserKeyStorage, u as RenownCrypto } from "./index-25fTa4yI.js";
3
3
  export { BrowserKeyStorage, ConnectCrypto, DID, IConnectCrypto, IRenownCrypto, JsonWebKeyPairStorage, JwkKeyPair, MemoryKeyStorage, RenownCrypto, RenownCryptoBuilder, RenownCryptoSigner, createSignatureVerifier, extractResultingHashFromSignature, parseSignatureHashField, signatureHasResultingHash };
package/dist/crypto.js CHANGED
@@ -1,3 +1,3 @@
1
- import { a as signatureHasResultingHash, c as ConnectCrypto, i as parseSignatureHashField, l as RenownCrypto, n as createSignatureVerifier, o as MemoryKeyStorage, r as extractResultingHashFromSignature, s as RenownCryptoBuilder, t as RenownCryptoSigner } from "./signer-XkA-D7Qt.js";
1
+ import { a as signatureHasResultingHash, c as ConnectCrypto, i as parseSignatureHashField, l as RenownCrypto, n as createSignatureVerifier, o as MemoryKeyStorage, r as extractResultingHashFromSignature, s as RenownCryptoBuilder, t as RenownCryptoSigner } from "./signer-CgYhXTV7.js";
2
2
  import { t as BrowserKeyStorage } from "./browser-key-storage-v4O-fjz0.js";
3
3
  export { BrowserKeyStorage, ConnectCrypto, MemoryKeyStorage, RenownCrypto, RenownCryptoBuilder, RenownCryptoSigner, createSignatureVerifier, extractResultingHashFromSignature, parseSignatureHashField, signatureHasResultingHash };
@@ -0,0 +1,127 @@
1
+ import { a as JwkKeyPair, i as JsonWebKeyPairStorage, l as CreateBearerTokenOptions, r as IRenownCrypto, t as DID, w as Issuer } from "./types-DsF91dDF.js";
2
+ import { Action, AppActionSigner, ISigner, Signature, SignatureVerificationHandler, UserActionSigner } from "@powerhousedao/shared/document-model";
3
+
4
+ //#region src/crypto/renown-crypto.d.ts
5
+ declare class RenownCrypto implements IRenownCrypto {
6
+ #private;
7
+ readonly did: DID;
8
+ static algorithm: EcKeyAlgorithm;
9
+ static signAlgorithm: {
10
+ name: string;
11
+ namedCurve: string;
12
+ hash: string;
13
+ };
14
+ constructor(keyPairStorage: JsonWebKeyPairStorage, crypto: SubtleCrypto, keyPair: CryptoKeyPair, did: DID);
15
+ get publicKey(): CryptoKey;
16
+ getBearerToken(address: string | undefined, options?: CreateBearerTokenOptions): Promise<string>;
17
+ removeDid(): Promise<void>;
18
+ sign(data: Uint8Array | string): Promise<Uint8Array>;
19
+ verify(data: Uint8Array, signature: Uint8Array): Promise<boolean>;
20
+ get issuer(): Issuer;
21
+ }
22
+ /**
23
+ * @deprecated Use RenownCrypto instead
24
+ */
25
+ declare class ConnectCrypto extends RenownCrypto {}
26
+ //#endregion
27
+ //#region src/crypto/renown-crypto-builder.d.ts
28
+ declare class RenownCryptoBuilder {
29
+ #private;
30
+ private keyPairStorage?;
31
+ private subtleCrypto?;
32
+ withKeyPairStorage(storage: JsonWebKeyPairStorage): this;
33
+ withSubtleCrypto(crypto: SubtleCrypto): this;
34
+ build(): Promise<RenownCrypto>;
35
+ }
36
+ //#endregion
37
+ //#region src/crypto/memory-key-storage.d.ts
38
+ declare class MemoryKeyStorage implements JsonWebKeyPairStorage {
39
+ private keyPair;
40
+ constructor(keyPair?: JwkKeyPair);
41
+ loadKeyPair(): Promise<JwkKeyPair | undefined>;
42
+ saveKeyPair(keyPair: JwkKeyPair): Promise<void>;
43
+ removeKeyPair(): Promise<void>;
44
+ }
45
+ //#endregion
46
+ //#region src/crypto/signer.d.ts
47
+ declare class RenownCryptoSigner implements ISigner {
48
+ private readonly crypto;
49
+ private readonly appName;
50
+ user?: UserActionSigner | undefined;
51
+ readonly app: AppActionSigner;
52
+ constructor(crypto: IRenownCrypto, appName: string, user?: UserActionSigner | undefined);
53
+ get publicKey(): CryptoKey;
54
+ sign(data: Uint8Array): Promise<Uint8Array>;
55
+ verify(data: Uint8Array, signature: Uint8Array): Promise<void>;
56
+ signAction(action: Action, abortSignal?: AbortSignal): Promise<Signature>;
57
+ /**
58
+ * Signs an action including a predicted resulting state hash.
59
+ *
60
+ * The resulting hash is packed into the signature tuple's 4th element (index 3)
61
+ * using the format: `${prevStateHash}:${resultingStateHash}`
62
+ *
63
+ * This allows offline verification of documents without reducer logic:
64
+ * - Verifier can check that the signature is valid for the claimed resulting state
65
+ * - Verifier can compare claimed resulting state to actual operation.hash
66
+ *
67
+ * @param action - The action to sign
68
+ * @param resultingStateHash - The predicted hash of document state AFTER this action runs
69
+ * @param abortSignal - Optional abort signal
70
+ * @returns A Signature tuple with the resulting hash encoded in element [3]
71
+ */
72
+ signActionWithResultingState(action: Action, resultingStateHash: string, abortSignal?: AbortSignal): Promise<Signature>;
73
+ /**
74
+ * Internal signing implementation shared by signAction and signActionWithResultingState.
75
+ */
76
+ private _signAction;
77
+ private hashAction;
78
+ private buildSignatureMessage;
79
+ private arrayBufferToHex;
80
+ private arrayBufferToBase64;
81
+ }
82
+ /**
83
+ * Creates a signature verification handler that verifies signatures using the Web Crypto API.
84
+ * The verification uses ECDSA with P-256 curve and SHA-256 hash, matching the RenownCrypto signing algorithm.
85
+ */
86
+ declare function createSignatureVerifier(requireSignature?: boolean): SignatureVerificationHandler;
87
+ /**
88
+ * Parses the hash field (element [3]) from a signature tuple.
89
+ *
90
+ * Supports two formats:
91
+ * - Old format: just `prevStateHash` (no colon)
92
+ * - New format: `prevStateHash:resultingStateHash` (colon-separated)
93
+ *
94
+ * @param hashField - The 4th element of a Signature tuple
95
+ * @returns Object with prevStateHash and optional resultingStateHash
96
+ */
97
+ declare function parseSignatureHashField(hashField: string): {
98
+ prevStateHash: string;
99
+ resultingStateHash: string | undefined;
100
+ };
101
+ /**
102
+ * Extracts the resulting state hash from a signature, if present.
103
+ *
104
+ * @param signature - A Signature tuple
105
+ * @returns The resulting state hash, or undefined if not present
106
+ */
107
+ declare function extractResultingHashFromSignature(signature: Signature): string | undefined;
108
+ /**
109
+ * Checks if a signature includes a resulting state hash.
110
+ *
111
+ * @param signature - A Signature tuple
112
+ * @returns true if the signature includes a resulting state hash
113
+ */
114
+ declare function signatureHasResultingHash(signature: Signature): boolean;
115
+ //#endregion
116
+ //#region src/crypto/browser-key-storage.d.ts
117
+ declare class BrowserKeyStorage implements JsonWebKeyPairStorage {
118
+ #private;
119
+ constructor(db: IDBDatabase);
120
+ static create(dbName?: string): Promise<BrowserKeyStorage>;
121
+ saveKeyPair(keyPair: JwkKeyPair): Promise<void>;
122
+ loadKeyPair(): Promise<JwkKeyPair | undefined>;
123
+ removeKeyPair(): Promise<void>;
124
+ }
125
+ //#endregion
126
+ export { parseSignatureHashField as a, RenownCryptoBuilder as c, extractResultingHashFromSignature as i, ConnectCrypto as l, RenownCryptoSigner as n, signatureHasResultingHash as o, createSignatureVerifier as r, MemoryKeyStorage as s, BrowserKeyStorage as t, RenownCrypto as u };
127
+ //# sourceMappingURL=index-25fTa4yI.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-25fTa4yI.d.ts","names":[],"sources":["../src/crypto/renown-crypto.ts","../src/crypto/renown-crypto-builder.ts","../src/crypto/memory-key-storage.ts","../src/crypto/signer.ts","../src/crypto/browser-key-storage.ts"],"mappings":";;;;cASa,YAAA,YAAwB,aAAA;EAAA;WAK1B,GAAA,EAAK,GAAA;EAAA,OAEP,SAAA,EAAS,cAAA;EAAA,OACT,aAAA;;;;;cAGL,cAAA,EAAgB,qBAAA,EAChB,MAAA,EAAQ,YAAA,EACR,OAAA,EAAS,aAAA,EACT,GAAA,EAAK,GAAA;EAAA,IAQH,SAAA,CAAA,GAAS,SAAA;EAIP,cAAA,CACJ,OAAA,sBACA,OAAA,GAAU,wBAAA,GACT,OAAA;EAUG,SAAA,CAAA,GAAa,OAAA;EAQb,IAAA,CAAK,IAAA,EAAM,UAAA,YAAsB,OAAA,CAAQ,UAAA;EAazC,MAAA,CAAO,IAAA,EAAM,UAAA,EAAY,SAAA,EAAW,UAAA,GAAa,OAAA;EAAA,IASnD,MAAA,CAAA,GAAU,MAAA;AAAA;;;;cAiBH,aAAA,SAAsB,YAAA;;;cCtFtB,mBAAA;EAAA;UACH,cAAA;EAAA,QACA,YAAA;EAER,kBAAA,CAAmB,OAAA,EAAS,qBAAA;EAK5B,gBAAA,CAAiB,MAAA,EAAQ,YAAA;EAKnB,KAAA,CAAA,GAAS,OAAA,CAAQ,YAAA;AAAA;;;cCrBZ,gBAAA,YAA4B,qBAAA;EAAA,QAC/B,OAAA;cAEI,OAAA,GAAU,UAAA;EAItB,WAAA,CAAA,GAAW,OAAA,CAAA,UAAA;EAIX,WAAA,CAAY,OAAA,EAAS,UAAA,GAAU,OAAA;EAK/B,aAAA,CAAA,GAAa,OAAA;AAAA;;;cCDF,kBAAA,YAA8B,OAAA;EAAA,iBAItB,MAAA;EAAA,iBACA,OAAA;EACV,IAAA,GAAO,gBAAA;EAAA,SALP,GAAA,EAAK,eAAA;cAGK,MAAA,EAAQ,aAAA,EACR,OAAA,UACV,IAAA,GAAO,gBAAA;EAAA,IAQZ,SAAA,CAAA,GAAS,SAAA;EAIP,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,OAAA,CAAQ,UAAA;EAIhC,MAAA,CAAO,IAAA,EAAM,UAAA,EAAY,SAAA,EAAW,UAAA,GAAa,OAAA;EAOjD,UAAA,CACJ,MAAA,EAAQ,MAAA,EACR,WAAA,GAAc,WAAA,GACb,OAAA,CAAQ,SAAA;EHXR;;;;;;;;;;;;;;;EG+BG,4BAAA,CACJ,MAAA,EAAQ,MAAA,EACR,kBAAA,UACA,WAAA,GAAc,WAAA,GACb,OAAA,CAAQ,SAAA;EHzDJ;;;EAAA,QGkEO,WAAA;EAAA,QAiCA,UAAA;EAAA,QAYN,qBAAA;EAAA,QASA,gBAAA;EAAA,QAQA,mBAAA;AAAA;;;;;iBAcM,uBAAA,CACd,gBAAA,aACC,4BAAA;;;;;;;;;;;iBAgNa,uBAAA,CAAwB,SAAA;EACtC,aAAA;EACA,kBAAA;AAAA;;;;;;;iBAuBc,iCAAA,CACd,SAAA,EAAW,SAAA;;;;;AH3Sb;;iBGwTgB,yBAAA,CAA0B,SAAA,EAAW,SAAA;;;cCjZxC,iBAAA,YAA6B,qBAAA;EAAA;cAG5B,EAAA,EAAI,WAAA;EAAA,OAIH,MAAA,CACX,MAAA,YACC,OAAA,CAAQ,iBAAA;EA4CL,WAAA,CAAY,OAAA,EAAS,UAAA,GAAU,OAAA;EAS/B,WAAA,CAAA,GAAe,OAAA,CAAQ,UAAA;EAavB,aAAA,CAAA,GAAiB,OAAA;AAAA"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { $ as User, A as ISigner, B as PKHDid, C as DIDResolutionResult, D as IPowerhouseIssuerType, E as IPowerhouseCredentialSubject, F as JWTVerified, G as RenownEvents, H as ProfileFetcher, I as JWTVerifyPolicies, J as RenownStorageMap, K as RenownProfile, L as JsonWebKey, M as InternalUser, N as Issuer, O as IProof, P as JWTPayload, Q as Unsubscribe, R as KeyCapabilitySection, S as DIDResolutionMetadata, T as IAuthCredentialSubject, U as Proof, V as PowerhouseVerifiableCredential, W as RenownEventEmitter, X as ServiceEndpoint, Y as Service, Z as Signer, _ as ConditionWeightedThreshold, a as signatureHasResultingHash, at as BaseStorage, b as DIDDocument, c as ConnectCrypto, ct as CREDENTIAL_SCHEMA_EIP712_TYPE, d as IConnectCrypto, dt as DEFAULT_RENOWN_CHAIN_ID, et as Verifiable, f as IRenownCrypto, ft as DEFAULT_RENOWN_NETWORK_ID, g as AuthVerifiedCredential, gt as VERIFIABLE_CREDENTIAL_EIP712_TYPE, h as AuthVerifiableCredential, ht as ISSUER_TYPE, i as parseSignatureHashField, it as W3CCredential, j as IVerifiableCredential, k as IRenown, l as RenownCrypto, lt as CREDENTIAL_SUBJECT_TYPE, m as JwkKeyPair, mt as DOMAIN_TYPE, n as createSignatureVerifier, nt as VerifiedCredential, o as MemoryKeyStorage, p as JsonWebKeyPairStorage, pt as DEFAULT_RENOWN_URL, q as RenownStorage, r as extractResultingHashFromSignature, rt as VerifiedJWT, s as RenownCryptoBuilder, st as IEventEmitter, t as RenownCryptoSigner, tt as VerificationMethod, u as DID, ut as CREDENTIAL_TYPES, v as CreateBearerTokenOptions, w as EcdsaSignature, x as DIDDocumentMetadata, y as CredentialStatus, z as LoginStatus } from "./signer-DYKGoYHB.js";
2
- import { t as BrowserKeyStorage } from "./browser-key-storage-DSkDBAhU.js";
3
- import { _ as verifyCredentialSignature, a as getResolver, c as fetchRenownProfile, d as BuildCredentialParams, f as CredentialDomain, g as recoverCredentialSigner, h as buildAndSignCredential, i as createAuthBearerToken, l as BaseRenownBuilder, m as SignCredentialTypedData, n as VerifyAuthBearerTokenOptions, o as parsePkhDid, p as CredentialMessage, r as assertIsAuthCredential, s as verifyAuthBearerToken, t as ILogger, u as RenownBuilderOptions, v as Renown, y as RenownMemoryStorage } from "./utils-D8C7f9Qs.js";
1
+ import { $ as IEventEmitter, A as LoginStatus, B as Service, C as InternalUser, D as JWTVerifyPolicies, E as JWTVerified, F as RenownEventEmitter, G as User, H as SignInParams, I as RenownEvents, J as VerifiedCredential, K as Verifiable, L as RenownProfile, M as PowerhouseVerifiableCredential, N as ProfileFetcher, O as JsonWebKey, P as Proof, R as RenownStorage, S as IVerifiableCredential, T as JWTPayload, U as Signer, V as ServiceEndpoint, W as Unsubscribe, X as W3CCredential, Y as VerifiedJWT, Z as BaseStorage, _ as IPowerhouseCredentialSubject, _t as DEFAULT_RENOWN_URL, a as JwkKeyPair, at as VerifiedAuthCredential, b as IRenown, bt as RENOWN_SESSION_COOKIE, c as ConditionWeightedThreshold, ct as fetchDelegationCredential, d as DIDDocument, dt as verifyCredentialSignature, et as BuildCredentialParams, f as DIDDocumentMetadata, ft as CREDENTIAL_SCHEMA_EIP712_TYPE, g as IAuthCredentialSubject, gt as DEFAULT_RENOWN_NETWORK_ID, h as EcdsaSignature, ht as DEFAULT_RENOWN_CHAIN_ID, i as JsonWebKeyPairStorage, it as SignCredentialTypedData, j as PKHDid, k as KeyCapabilitySection, l as CreateBearerTokenOptions, lt as recoverCredentialSigner, m as DIDResolutionResult, mt as CREDENTIAL_TYPES, n as IConnectCrypto, nt as CredentialMessage, o as AuthVerifiableCredential, ot as VerifyAuthCredentialOptions, p as DIDResolutionMetadata, pt as CREDENTIAL_SUBJECT_TYPE, q as VerificationMethod, r as IRenownCrypto, rt as FetchDelegationCredentialOptions, s as AuthVerifiedCredential, st as buildAndSignCredential, t as DID, tt as CredentialDomain, u as CredentialStatus, ut as verifyAuthCredential, v as IPowerhouseIssuerType, vt as DOMAIN_TYPE, w as Issuer, x as ISigner, xt as VERIFIABLE_CREDENTIAL_EIP712_TYPE, y as IProof, yt as ISSUER_TYPE, z as RenownStorageMap } from "./types-DsF91dDF.js";
2
+ import { a as parseSignatureHashField, c as RenownCryptoBuilder, i as extractResultingHashFromSignature, l as ConnectCrypto, n as RenownCryptoSigner, o as signatureHasResultingHash, r as createSignatureVerifier, s as MemoryKeyStorage, t as BrowserKeyStorage, u as RenownCrypto } from "./index-25fTa4yI.js";
3
+ import { a as getResolver, c as fetchRenownProfile, d as ResolveSwitchboardEndpointOptions, f as resolveSwitchboardEndpoint, h as SwitchboardClient, i as createAuthBearerToken, l as BaseRenownBuilder, m as RenownMemoryStorage, n as VerifyAuthBearerTokenOptions, o as parsePkhDid, p as Renown, r as assertIsAuthCredential, s as verifyAuthBearerToken, t as ILogger, u as RenownBuilderOptions } from "./utils-OOrVXHof.js";
4
4
 
5
5
  //#region src/event/event.browser.d.ts
6
6
  declare class BrowserEventEmitter<Events extends Record<string, unknown>> implements IEventEmitter<Events> {
@@ -22,13 +22,18 @@ declare class BrowserStorage<T extends Record<string, unknown> = Record<string,
22
22
  //#region src/init.browser.d.ts
23
23
  declare class BrowserRenownStorage extends BrowserStorage<RenownStorageMap> {}
24
24
  declare class BrowserRenownEventEmitter extends BrowserEventEmitter<RenownEvents> {}
25
+ declare function readPersistedUser(basename?: string): User | undefined;
25
26
  interface BrowserRenownBuilderOptions {
26
27
  /** Base path for storage keys (e.g., "/app" for multi-tenant apps) */
27
28
  basename?: string;
28
29
  /** Renown server URL. Defaults to https://www.renown.id */
29
30
  baseUrl?: string;
31
+ /** Switchboard GraphQL endpoint for the direct-to-reactor flow. */
32
+ switchboardUrl?: string;
30
33
  /** IndexedDB database name for key storage. Defaults to "renownKeyDB" */
31
34
  keyDbName?: string;
35
+ /** Re-check a stored credential on build (default "always"). */
36
+ revalidate?: "always" | "never";
32
37
  }
33
38
  /**
34
39
  * Browser-specific Renown builder with pre-configured defaults.
@@ -36,10 +41,6 @@ interface BrowserRenownBuilderOptions {
36
41
  */
37
42
  declare class RenownBuilder extends BaseRenownBuilder {
38
43
  #private;
39
- /**
40
- * @param appName - Application name used for signing context
41
- * @param options - Browser-specific configuration options
42
- */
43
44
  constructor(appName: string, options?: BrowserRenownBuilderOptions);
44
45
  /**
45
46
  * Set base path for storage keys (e.g., "/app" for multi-tenant apps).
@@ -65,5 +66,5 @@ declare class RenownBuilder extends BaseRenownBuilder {
65
66
  */
66
67
  declare function initRenown(appName: string, options?: BrowserRenownBuilderOptions): Promise<Renown>;
67
68
  //#endregion
68
- export { AuthVerifiableCredential, AuthVerifiedCredential, BaseRenownBuilder, BrowserKeyStorage, BrowserRenownBuilderOptions, BrowserRenownEventEmitter, BrowserRenownStorage, BuildCredentialParams, CREDENTIAL_SCHEMA_EIP712_TYPE, CREDENTIAL_SUBJECT_TYPE, CREDENTIAL_TYPES, ConditionWeightedThreshold, ConnectCrypto, CreateBearerTokenOptions, CredentialDomain, CredentialMessage, CredentialStatus, DEFAULT_RENOWN_CHAIN_ID, DEFAULT_RENOWN_NETWORK_ID, DEFAULT_RENOWN_URL, DID, DIDDocument, DIDDocumentMetadata, DIDResolutionMetadata, DIDResolutionResult, DOMAIN_TYPE, EcdsaSignature, IAuthCredentialSubject, IConnectCrypto, ILogger, IPowerhouseCredentialSubject, IPowerhouseIssuerType, IProof, IRenown, IRenownCrypto, ISSUER_TYPE, ISigner, IVerifiableCredential, InternalUser, Issuer, JWTPayload, JWTVerified, JWTVerifyPolicies, JsonWebKey, JsonWebKeyPairStorage, JwkKeyPair, KeyCapabilitySection, LoginStatus, MemoryKeyStorage, PKHDid, PowerhouseVerifiableCredential, ProfileFetcher, Proof, Renown, RenownBuilder, RenownBuilderOptions, RenownCrypto, RenownCryptoBuilder, RenownCryptoSigner, RenownEventEmitter, RenownEvents, RenownMemoryStorage, RenownProfile, RenownStorage, RenownStorageMap, Service, ServiceEndpoint, SignCredentialTypedData, Signer, Unsubscribe, User, VERIFIABLE_CREDENTIAL_EIP712_TYPE, Verifiable, VerificationMethod, VerifiedCredential, VerifiedJWT, VerifyAuthBearerTokenOptions, W3CCredential, assertIsAuthCredential, buildAndSignCredential, createAuthBearerToken, createSignatureVerifier, extractResultingHashFromSignature, fetchRenownProfile, getResolver, initRenown, parsePkhDid, parseSignatureHashField, recoverCredentialSigner, signatureHasResultingHash, verifyAuthBearerToken, verifyCredentialSignature };
69
+ export { AuthVerifiableCredential, AuthVerifiedCredential, BaseRenownBuilder, BrowserKeyStorage, BrowserRenownBuilderOptions, BrowserRenownEventEmitter, BrowserRenownStorage, BuildCredentialParams, CREDENTIAL_SCHEMA_EIP712_TYPE, CREDENTIAL_SUBJECT_TYPE, CREDENTIAL_TYPES, ConditionWeightedThreshold, ConnectCrypto, CreateBearerTokenOptions, CredentialDomain, CredentialMessage, CredentialStatus, DEFAULT_RENOWN_CHAIN_ID, DEFAULT_RENOWN_NETWORK_ID, DEFAULT_RENOWN_URL, DID, DIDDocument, DIDDocumentMetadata, DIDResolutionMetadata, DIDResolutionResult, DOMAIN_TYPE, EcdsaSignature, FetchDelegationCredentialOptions, IAuthCredentialSubject, IConnectCrypto, ILogger, IPowerhouseCredentialSubject, IPowerhouseIssuerType, IProof, IRenown, IRenownCrypto, ISSUER_TYPE, ISigner, IVerifiableCredential, InternalUser, Issuer, JWTPayload, JWTVerified, JWTVerifyPolicies, JsonWebKey, JsonWebKeyPairStorage, JwkKeyPair, KeyCapabilitySection, LoginStatus, MemoryKeyStorage, PKHDid, PowerhouseVerifiableCredential, ProfileFetcher, Proof, RENOWN_SESSION_COOKIE, Renown, RenownBuilder, RenownBuilderOptions, RenownCrypto, RenownCryptoBuilder, RenownCryptoSigner, RenownEventEmitter, RenownEvents, RenownMemoryStorage, RenownProfile, RenownStorage, RenownStorageMap, ResolveSwitchboardEndpointOptions, Service, ServiceEndpoint, SignCredentialTypedData, SignInParams, Signer, SwitchboardClient, Unsubscribe, User, VERIFIABLE_CREDENTIAL_EIP712_TYPE, Verifiable, VerificationMethod, VerifiedAuthCredential, VerifiedCredential, VerifiedJWT, VerifyAuthBearerTokenOptions, VerifyAuthCredentialOptions, W3CCredential, assertIsAuthCredential, buildAndSignCredential, createAuthBearerToken, createSignatureVerifier, extractResultingHashFromSignature, fetchDelegationCredential, fetchRenownProfile, getResolver, initRenown, parsePkhDid, parseSignatureHashField, readPersistedUser, recoverCredentialSigner, resolveSwitchboardEndpoint, signatureHasResultingHash, verifyAuthBearerToken, verifyAuthCredential, verifyCredentialSignature };
69
70
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/event/event.browser.ts","../src/storage/storage.browser.ts","../src/init.browser.ts"],"mappings":";;;;;cAQa,mBAAA,gBACI,MAAA,8BACJ,aAAA,CAAc,MAAA;EAAA;EAGzB,EAAA,iBAAmB,MAAA,CAAA,CACjB,KAAA,EAAO,CAAA,EACP,QAAA,GAAW,IAAA,EAAM,MAAA,CAAO,CAAA;EAc1B,IAAA,iBAAqB,MAAA,CAAA,CAAQ,KAAA,EAAO,CAAA,EAAG,IAAA,EAAM,MAAA,CAAO,CAAA;AAAA;;;cC3BzC,cAAA,WACD,MAAA,oBAA0B,MAAA,2BAC5B,WAAA,CAAY,CAAA;EAAA;mBACH,SAAA;cAEL,SAAA,UAAmB,QAAA;EAQ/B,GAAA,mBAAsB,CAAA,CAAA,CAAG,GAAA,EAAK,GAAA,GAAM,CAAA,CAAE,GAAA;EAQtC,GAAA,mBAAsB,CAAA,CAAA,CAAG,GAAA,EAAK,GAAA,EAAK,KAAA,GAAQ,CAAA,CAAE,GAAA;EAM7C,MAAA,CAAO,GAAA,QAAW,CAAA;AAAA;;;cCtBP,oBAAA,SAA6B,cAAA,CAAe,gBAAA;AAAA,cAC5C,yBAAA,SAAkC,mBAAA,CAAoB,YAAA;AAAA,UAElD,2BAAA;EFGI;EEDnB,QAAA;EFGmB;EEDnB,OAAA;EFeqB;EEbrB,SAAA;AAAA;;;;;cAOW,aAAA,SAAsB,iBAAA;EAAA;EFbtB;;;;cEqBC,OAAA,UAAiB,OAAA,GAAS,2BAAA;EFlBnB;;;EEgCnB,YAAA,CAAa,QAAA;EF9Ba;;;;EEwC1B,aAAA,CAAc,SAAA;EF1BO;;;;EEmCf,KAAA,CAAA,GAAS,OAAA,CAAQ,MAAA;AAAA;;;;;;AD9DzB;;iBC4EgB,UAAA,CACd,OAAA,UACA,OAAA,GAAS,2BAAA,GAAgC,OAAA,CAAA,MAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/event/event.browser.ts","../src/storage/storage.browser.ts","../src/init.browser.ts"],"mappings":";;;;;cAQa,mBAAA,gBACI,MAAA,8BACJ,aAAA,CAAc,MAAA;EAAA;EAGzB,EAAA,iBAAmB,MAAA,CAAA,CACjB,KAAA,EAAO,CAAA,EACP,QAAA,GAAW,IAAA,EAAM,MAAA,CAAO,CAAA;EAc1B,IAAA,iBAAqB,MAAA,CAAA,CAAQ,KAAA,EAAO,CAAA,EAAG,IAAA,EAAM,MAAA,CAAO,CAAA;AAAA;;;cC3BzC,cAAA,WACD,MAAA,oBAA0B,MAAA,2BAC5B,WAAA,CAAY,CAAA;EAAA;mBACH,SAAA;cAEL,SAAA,UAAmB,QAAA;EAQ/B,GAAA,mBAAsB,CAAA,CAAA,CAAG,GAAA,EAAK,GAAA,GAAM,CAAA,CAAE,GAAA;EAQtC,GAAA,mBAAsB,CAAA,CAAA,CAAG,GAAA,EAAK,GAAA,EAAK,KAAA,GAAQ,CAAA,CAAE,GAAA;EAM7C,MAAA,CAAO,GAAA,QAAW,CAAA;AAAA;;;cCtBP,oBAAA,SAA6B,cAAA,CAAe,gBAAA;AAAA,cAC5C,yBAAA,SAAkC,mBAAA,CAAoB,YAAA;AAAA,iBAInD,iBAAA,CAAkB,QAAA,YAAoB,IAAA;AAAA,UASrC,2BAAA;EFPN;EEST,QAAA;EFR0B;EEU1B,OAAA;EFIoC;EEFpC,cAAA;EFEoD;EEApD,SAAA;EFnBwB;EEqBxB,UAAA;AAAA;;;;;cAOW,aAAA,SAAsB,iBAAA;EAAA;cAKrB,OAAA,UAAiB,OAAA,GAAS,2BAAA;EF7B7B;;;EE+CT,YAAA,CAAa,QAAA;EF9CA;;;;EEwDb,aAAA,CAAc,SAAA;EF1CsB;;;;EEmD9B,KAAA,CAAA,GAAS,OAAA,CAAQ,MAAA;AAAA;;;;;AD9EzB;;;iBCkGgB,UAAA,CACd,OAAA,UACA,OAAA,GAAS,2BAAA,GAAgC,OAAA,CAAA,MAAA"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { _ as VERIFIABLE_CREDENTIAL_EIP712_TYPE, a as BaseStorage, c as verifyCredentialSignature, d as CREDENTIAL_TYPES, f as DEFAULT_RENOWN_CHAIN_ID, g as ISSUER_TYPE, h as DOMAIN_TYPE, i as RenownMemoryStorage, l as CREDENTIAL_SCHEMA_EIP712_TYPE, m as DEFAULT_RENOWN_URL, n as fetchRenownProfile, o as buildAndSignCredential, p as DEFAULT_RENOWN_NETWORK_ID, r as Renown, s as recoverCredentialSigner, t as BaseRenownBuilder, u as CREDENTIAL_SUBJECT_TYPE } from "./renown-builder-DP0iFzK1.js";
2
- import { a as signatureHasResultingHash, c as ConnectCrypto, d as createAuthBearerToken, f as getResolver, i as parseSignatureHashField, l as RenownCrypto, m as verifyAuthBearerToken, n as createSignatureVerifier, o as MemoryKeyStorage, p as parsePkhDid, r as extractResultingHashFromSignature, s as RenownCryptoBuilder, t as RenownCryptoSigner, u as assertIsAuthCredential } from "./signer-XkA-D7Qt.js";
1
+ import { S as VERIFIABLE_CREDENTIAL_EIP712_TYPE, _ as DEFAULT_RENOWN_NETWORK_ID, a as BaseStorage, b as ISSUER_TYPE, c as recoverCredentialSigner, d as SwitchboardClient, f as resolveSwitchboardEndpoint, g as DEFAULT_RENOWN_CHAIN_ID, h as CREDENTIAL_TYPES, i as RenownMemoryStorage, l as verifyAuthCredential, m as CREDENTIAL_SUBJECT_TYPE, n as fetchRenownProfile, o as buildAndSignCredential, p as CREDENTIAL_SCHEMA_EIP712_TYPE, r as Renown, s as fetchDelegationCredential, t as BaseRenownBuilder, u as verifyCredentialSignature, v as DEFAULT_RENOWN_URL, x as RENOWN_SESSION_COOKIE, y as DOMAIN_TYPE } from "./renown-builder-BqWoYtBR.js";
2
+ import { a as signatureHasResultingHash, c as ConnectCrypto, d as createAuthBearerToken, f as getResolver, i as parseSignatureHashField, l as RenownCrypto, m as verifyAuthBearerToken, n as createSignatureVerifier, o as MemoryKeyStorage, p as parsePkhDid, r as extractResultingHashFromSignature, s as RenownCryptoBuilder, t as RenownCryptoSigner, u as assertIsAuthCredential } from "./signer-CgYhXTV7.js";
3
3
  import { t as BrowserKeyStorage } from "./browser-key-storage-v4O-fjz0.js";
4
4
  //#region src/event/event.browser.ts
5
5
  var TypedCustomEvent = class extends CustomEvent {
@@ -49,6 +49,14 @@ var BrowserStorage = class extends BaseStorage {
49
49
  //#region src/init.browser.ts
50
50
  var BrowserRenownStorage = class extends BrowserStorage {};
51
51
  var BrowserRenownEventEmitter = class extends BrowserEventEmitter {};
52
+ function readPersistedUser(basename) {
53
+ if (typeof localStorage === "undefined") return void 0;
54
+ try {
55
+ return new BrowserStorage("renown", basename).get("user");
56
+ } catch {
57
+ return;
58
+ }
59
+ }
52
60
  /**
53
61
  * Browser-specific Renown builder with pre-configured defaults.
54
62
  * Uses localStorage for user data and IndexedDB for key storage.
@@ -56,17 +64,16 @@ var BrowserRenownEventEmitter = class extends BrowserEventEmitter {};
56
64
  var RenownBuilder = class extends BaseRenownBuilder {
57
65
  #basename;
58
66
  #keyDbName;
59
- /**
60
- * @param appName - Application name used for signing context
61
- * @param options - Browser-specific configuration options
62
- */
67
+ #revalidate;
63
68
  constructor(appName, options = {}) {
64
69
  super(appName);
65
70
  this.#basename = options.basename;
66
71
  this.#keyDbName = options.keyDbName;
72
+ this.#revalidate = options.revalidate ?? "always";
67
73
  this.withStorage(new BrowserRenownStorage("renown", this.#basename));
68
74
  this.withEventEmitter(new BrowserRenownEventEmitter());
69
75
  if (options.baseUrl) this.withBaseUrl(options.baseUrl);
76
+ if (options.switchboardUrl) this.withSwitchboardUrl(options.switchboardUrl);
70
77
  }
71
78
  /**
72
79
  * Set base path for storage keys (e.g., "/app" for multi-tenant apps).
@@ -91,7 +98,9 @@ var RenownBuilder = class extends BaseRenownBuilder {
91
98
  async build() {
92
99
  const keyStorage = await BrowserKeyStorage.create(this.#keyDbName);
93
100
  this.withKeyPairStorage(keyStorage);
94
- return super.build();
101
+ const renown = await super.build();
102
+ if (this.#revalidate === "always" && renown.user) renown.revalidate();
103
+ return renown;
95
104
  }
96
105
  };
97
106
  /**
@@ -105,6 +114,6 @@ function initRenown(appName, options = {}) {
105
114
  return new RenownBuilder(appName, options).build();
106
115
  }
107
116
  //#endregion
108
- export { BaseRenownBuilder, BrowserKeyStorage, BrowserRenownEventEmitter, BrowserRenownStorage, CREDENTIAL_SCHEMA_EIP712_TYPE, CREDENTIAL_SUBJECT_TYPE, CREDENTIAL_TYPES, ConnectCrypto, DEFAULT_RENOWN_CHAIN_ID, DEFAULT_RENOWN_NETWORK_ID, DEFAULT_RENOWN_URL, DOMAIN_TYPE, ISSUER_TYPE, MemoryKeyStorage, Renown, RenownBuilder, RenownCrypto, RenownCryptoBuilder, RenownCryptoSigner, RenownMemoryStorage, VERIFIABLE_CREDENTIAL_EIP712_TYPE, assertIsAuthCredential, buildAndSignCredential, createAuthBearerToken, createSignatureVerifier, extractResultingHashFromSignature, fetchRenownProfile, getResolver, initRenown, parsePkhDid, parseSignatureHashField, recoverCredentialSigner, signatureHasResultingHash, verifyAuthBearerToken, verifyCredentialSignature };
117
+ export { BaseRenownBuilder, BrowserKeyStorage, BrowserRenownEventEmitter, BrowserRenownStorage, CREDENTIAL_SCHEMA_EIP712_TYPE, CREDENTIAL_SUBJECT_TYPE, CREDENTIAL_TYPES, ConnectCrypto, DEFAULT_RENOWN_CHAIN_ID, DEFAULT_RENOWN_NETWORK_ID, DEFAULT_RENOWN_URL, DOMAIN_TYPE, ISSUER_TYPE, MemoryKeyStorage, RENOWN_SESSION_COOKIE, Renown, RenownBuilder, RenownCrypto, RenownCryptoBuilder, RenownCryptoSigner, RenownMemoryStorage, SwitchboardClient, VERIFIABLE_CREDENTIAL_EIP712_TYPE, assertIsAuthCredential, buildAndSignCredential, createAuthBearerToken, createSignatureVerifier, extractResultingHashFromSignature, fetchDelegationCredential, fetchRenownProfile, getResolver, initRenown, parsePkhDid, parseSignatureHashField, readPersistedUser, recoverCredentialSigner, resolveSwitchboardEndpoint, signatureHasResultingHash, verifyAuthBearerToken, verifyAuthCredential, verifyCredentialSignature };
109
118
 
110
119
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["#eventTarget","#buildKey","#basename","#keyDbName"],"sources":["../src/event/event.browser.ts","../src/storage/storage.browser.ts","../src/init.browser.ts"],"sourcesContent":["import type { IEventEmitter } from \"./types.js\";\n\nexport class TypedCustomEvent<T> extends CustomEvent<T> {\n constructor(type: string, detail?: T) {\n super(type, { detail });\n }\n}\n\nexport class BrowserEventEmitter<\n Events extends Record<string, unknown>,\n> implements IEventEmitter<Events> {\n #eventTarget = new EventTarget();\n\n on<K extends keyof Events>(\n event: K,\n listener: (data: Events[K]) => void,\n ): () => void {\n const wrappedListener = (e: Event) => {\n if (e instanceof TypedCustomEvent) {\n listener(e.detail as Events[K]);\n }\n };\n\n this.#eventTarget.addEventListener(event.toString(), wrappedListener);\n return () => {\n this.#eventTarget.removeEventListener(event.toString(), wrappedListener);\n };\n }\n\n emit<K extends keyof Events>(event: K, data: Events[K]): void {\n const customEvent = new TypedCustomEvent(event.toString(), data);\n this.#eventTarget.dispatchEvent(customEvent);\n }\n}\n","import { BaseStorage } from \"./common.js\";\n\nexport class BrowserStorage<\n T extends Record<string, unknown> = Record<string, unknown>,\n> extends BaseStorage<T> {\n private readonly namespace: string;\n\n constructor(namespace: string, basename: string | undefined) {\n super();\n this.namespace = `${basename}:${namespace}`;\n }\n\n #buildKey(key: keyof T): string {\n return `${this.namespace}:${key.toString()}`;\n }\n get<Key extends keyof T>(key: Key): T[Key] | undefined {\n const value = localStorage.getItem(this.#buildKey(key));\n if (value) {\n return JSON.parse(value) as T[Key];\n }\n return undefined;\n }\n\n set<Key extends keyof T>(key: Key, value?: T[Key]): void {\n return value\n ? localStorage.setItem(this.#buildKey(key), JSON.stringify(value))\n : localStorage.removeItem(this.#buildKey(key));\n }\n\n delete(key: keyof T): void {\n return localStorage.removeItem(this.#buildKey(key));\n }\n}\n","import type { Renown } from \"./common.js\";\nimport { BrowserKeyStorage } from \"./crypto/browser-key-storage.js\";\nimport { BrowserEventEmitter } from \"./event/event.browser.js\";\nimport { BaseRenownBuilder } from \"./renown-builder.js\";\nimport { BrowserStorage } from \"./storage/storage.browser.js\";\nimport type { RenownEvents, RenownStorageMap } from \"./types.js\";\n\nexport class BrowserRenownStorage extends BrowserStorage<RenownStorageMap> {}\nexport class BrowserRenownEventEmitter extends BrowserEventEmitter<RenownEvents> {}\n\nexport interface BrowserRenownBuilderOptions {\n /** Base path for storage keys (e.g., \"/app\" for multi-tenant apps) */\n basename?: string;\n /** Renown server URL. Defaults to https://www.renown.id */\n baseUrl?: string;\n /** IndexedDB database name for key storage. Defaults to \"renownKeyDB\" */\n keyDbName?: string;\n}\n\n/**\n * Browser-specific Renown builder with pre-configured defaults.\n * Uses localStorage for user data and IndexedDB for key storage.\n */\nexport class RenownBuilder extends BaseRenownBuilder {\n #basename?: string;\n #keyDbName?: string;\n\n /**\n * @param appName - Application name used for signing context\n * @param options - Browser-specific configuration options\n */\n constructor(appName: string, options: BrowserRenownBuilderOptions = {}) {\n super(appName);\n this.#basename = options.basename;\n this.#keyDbName = options.keyDbName;\n this.withStorage(new BrowserRenownStorage(\"renown\", this.#basename));\n this.withEventEmitter(new BrowserRenownEventEmitter());\n if (options.baseUrl) {\n this.withBaseUrl(options.baseUrl);\n }\n }\n\n /**\n * Set base path for storage keys (e.g., \"/app\" for multi-tenant apps).\n */\n withBasename(basename: string): this {\n this.#basename = basename;\n this.withStorage(new BrowserRenownStorage(\"renown\", this.#basename));\n return this;\n }\n\n /**\n * Set IndexedDB database name for key storage.\n * Defaults to \"renownKeyDB\".\n */\n withKeyDbName(keyDbName: string): this {\n this.#keyDbName = keyDbName;\n return this;\n }\n\n /**\n * Build and initialize the Renown instance.\n * Initializes IndexedDB for key storage before building.\n */\n async build(): Promise<Renown> {\n const keyStorage = await BrowserKeyStorage.create(this.#keyDbName);\n this.withKeyPairStorage(keyStorage);\n return super.build();\n }\n}\n\n/**\n * @deprecated Use RenownBuilder directly instead.\n * Initialize a browser-specific Renown instance.\n * @param appName - Application name used for signing context\n * @param options - Browser-specific configuration options\n * @returns Initialized Renown instance\n */\nexport function initRenown(\n appName: string,\n options: BrowserRenownBuilderOptions = {},\n) {\n return new RenownBuilder(appName, options).build();\n}\n"],"mappings":";;;;AAEA,IAAa,mBAAb,cAAyC,YAAe;CACtD,YAAY,MAAc,QAAY;AACpC,QAAM,MAAM,EAAE,QAAQ,CAAC;;;AAI3B,IAAa,sBAAb,MAEmC;CACjC,eAAe,IAAI,aAAa;CAEhC,GACE,OACA,UACY;EACZ,MAAM,mBAAmB,MAAa;AACpC,OAAI,aAAa,iBACf,UAAS,EAAE,OAAoB;;AAInC,QAAA,YAAkB,iBAAiB,MAAM,UAAU,EAAE,gBAAgB;AACrE,eAAa;AACX,SAAA,YAAkB,oBAAoB,MAAM,UAAU,EAAE,gBAAgB;;;CAI5E,KAA6B,OAAU,MAAuB;EAC5D,MAAM,cAAc,IAAI,iBAAiB,MAAM,UAAU,EAAE,KAAK;AAChE,QAAA,YAAkB,cAAc,YAAY;;;;;AC7BhD,IAAa,iBAAb,cAEU,YAAe;CACvB;CAEA,YAAY,WAAmB,UAA8B;AAC3D,SAAO;AACP,OAAK,YAAY,GAAG,SAAS,GAAG;;CAGlC,UAAU,KAAsB;AAC9B,SAAO,GAAG,KAAK,UAAU,GAAG,IAAI,UAAU;;CAE5C,IAAyB,KAA8B;EACrD,MAAM,QAAQ,aAAa,QAAQ,MAAA,SAAe,IAAI,CAAC;AACvD,MAAI,MACF,QAAO,KAAK,MAAM,MAAM;;CAK5B,IAAyB,KAAU,OAAsB;AACvD,SAAO,QACH,aAAa,QAAQ,MAAA,SAAe,IAAI,EAAE,KAAK,UAAU,MAAM,CAAC,GAChE,aAAa,WAAW,MAAA,SAAe,IAAI,CAAC;;CAGlD,OAAO,KAAoB;AACzB,SAAO,aAAa,WAAW,MAAA,SAAe,IAAI,CAAC;;;;;ACvBvD,IAAa,uBAAb,cAA0C,eAAiC;AAC3E,IAAa,4BAAb,cAA+C,oBAAkC;;;;;AAejF,IAAa,gBAAb,cAAmC,kBAAkB;CACnD;CACA;;;;;CAMA,YAAY,SAAiB,UAAuC,EAAE,EAAE;AACtE,QAAM,QAAQ;AACd,QAAA,WAAiB,QAAQ;AACzB,QAAA,YAAkB,QAAQ;AAC1B,OAAK,YAAY,IAAI,qBAAqB,UAAU,MAAA,SAAe,CAAC;AACpE,OAAK,iBAAiB,IAAI,2BAA2B,CAAC;AACtD,MAAI,QAAQ,QACV,MAAK,YAAY,QAAQ,QAAQ;;;;;CAOrC,aAAa,UAAwB;AACnC,QAAA,WAAiB;AACjB,OAAK,YAAY,IAAI,qBAAqB,UAAU,MAAA,SAAe,CAAC;AACpE,SAAO;;;;;;CAOT,cAAc,WAAyB;AACrC,QAAA,YAAkB;AAClB,SAAO;;;;;;CAOT,MAAM,QAAyB;EAC7B,MAAM,aAAa,MAAM,kBAAkB,OAAO,MAAA,UAAgB;AAClE,OAAK,mBAAmB,WAAW;AACnC,SAAO,MAAM,OAAO;;;;;;;;;;AAWxB,SAAgB,WACd,SACA,UAAuC,EAAE,EACzC;AACA,QAAO,IAAI,cAAc,SAAS,QAAQ,CAAC,OAAO"}
1
+ {"version":3,"file":"index.js","names":["#eventTarget","#buildKey","#basename","#keyDbName","#revalidate"],"sources":["../src/event/event.browser.ts","../src/storage/storage.browser.ts","../src/init.browser.ts"],"sourcesContent":["import type { IEventEmitter } from \"./types.js\";\n\nexport class TypedCustomEvent<T> extends CustomEvent<T> {\n constructor(type: string, detail?: T) {\n super(type, { detail });\n }\n}\n\nexport class BrowserEventEmitter<\n Events extends Record<string, unknown>,\n> implements IEventEmitter<Events> {\n #eventTarget = new EventTarget();\n\n on<K extends keyof Events>(\n event: K,\n listener: (data: Events[K]) => void,\n ): () => void {\n const wrappedListener = (e: Event) => {\n if (e instanceof TypedCustomEvent) {\n listener(e.detail as Events[K]);\n }\n };\n\n this.#eventTarget.addEventListener(event.toString(), wrappedListener);\n return () => {\n this.#eventTarget.removeEventListener(event.toString(), wrappedListener);\n };\n }\n\n emit<K extends keyof Events>(event: K, data: Events[K]): void {\n const customEvent = new TypedCustomEvent(event.toString(), data);\n this.#eventTarget.dispatchEvent(customEvent);\n }\n}\n","import { BaseStorage } from \"./common.js\";\n\nexport class BrowserStorage<\n T extends Record<string, unknown> = Record<string, unknown>,\n> extends BaseStorage<T> {\n private readonly namespace: string;\n\n constructor(namespace: string, basename: string | undefined) {\n super();\n this.namespace = `${basename}:${namespace}`;\n }\n\n #buildKey(key: keyof T): string {\n return `${this.namespace}:${key.toString()}`;\n }\n get<Key extends keyof T>(key: Key): T[Key] | undefined {\n const value = localStorage.getItem(this.#buildKey(key));\n if (value) {\n return JSON.parse(value) as T[Key];\n }\n return undefined;\n }\n\n set<Key extends keyof T>(key: Key, value?: T[Key]): void {\n return value\n ? localStorage.setItem(this.#buildKey(key), JSON.stringify(value))\n : localStorage.removeItem(this.#buildKey(key));\n }\n\n delete(key: keyof T): void {\n return localStorage.removeItem(this.#buildKey(key));\n }\n}\n","import type { Renown } from \"./common.js\";\nimport { BrowserKeyStorage } from \"./crypto/browser-key-storage.js\";\nimport { BrowserEventEmitter } from \"./event/event.browser.js\";\nimport { BaseRenownBuilder } from \"./renown-builder.js\";\nimport { BrowserStorage } from \"./storage/storage.browser.js\";\nimport type { RenownEvents, RenownStorageMap, User } from \"./types.js\";\n\nexport class BrowserRenownStorage extends BrowserStorage<RenownStorageMap> {}\nexport class BrowserRenownEventEmitter extends BrowserEventEmitter<RenownEvents> {}\n\n// Synchronously read the persisted user from localStorage (browser only) for an\n// instant optimistic first paint, before the async SDK build resolves.\nexport function readPersistedUser(basename?: string): User | undefined {\n if (typeof localStorage === \"undefined\") return undefined;\n try {\n return new BrowserStorage<RenownStorageMap>(\"renown\", basename).get(\"user\");\n } catch {\n return undefined;\n }\n}\n\nexport interface BrowserRenownBuilderOptions {\n /** Base path for storage keys (e.g., \"/app\" for multi-tenant apps) */\n basename?: string;\n /** Renown server URL. Defaults to https://www.renown.id */\n baseUrl?: string;\n /** Switchboard GraphQL endpoint for the direct-to-reactor flow. */\n switchboardUrl?: string;\n /** IndexedDB database name for key storage. Defaults to \"renownKeyDB\" */\n keyDbName?: string;\n /** Re-check a stored credential on build (default \"always\"). */\n revalidate?: \"always\" | \"never\";\n}\n\n/**\n * Browser-specific Renown builder with pre-configured defaults.\n * Uses localStorage for user data and IndexedDB for key storage.\n */\nexport class RenownBuilder extends BaseRenownBuilder {\n #basename?: string;\n #keyDbName?: string;\n #revalidate: \"always\" | \"never\";\n\n constructor(appName: string, options: BrowserRenownBuilderOptions = {}) {\n super(appName);\n this.#basename = options.basename;\n this.#keyDbName = options.keyDbName;\n this.#revalidate = options.revalidate ?? \"always\";\n this.withStorage(new BrowserRenownStorage(\"renown\", this.#basename));\n this.withEventEmitter(new BrowserRenownEventEmitter());\n if (options.baseUrl) {\n this.withBaseUrl(options.baseUrl);\n }\n if (options.switchboardUrl) {\n this.withSwitchboardUrl(options.switchboardUrl);\n }\n }\n\n /**\n * Set base path for storage keys (e.g., \"/app\" for multi-tenant apps).\n */\n withBasename(basename: string): this {\n this.#basename = basename;\n this.withStorage(new BrowserRenownStorage(\"renown\", this.#basename));\n return this;\n }\n\n /**\n * Set IndexedDB database name for key storage.\n * Defaults to \"renownKeyDB\".\n */\n withKeyDbName(keyDbName: string): this {\n this.#keyDbName = keyDbName;\n return this;\n }\n\n /**\n * Build and initialize the Renown instance.\n * Initializes IndexedDB for key storage before building.\n */\n async build(): Promise<Renown> {\n const keyStorage = await BrowserKeyStorage.create(this.#keyDbName);\n this.withKeyPairStorage(keyStorage);\n const renown = await super.build();\n // Browser has a reactive UI, so revalidate in the background (fail-open) and\n // let the store update if the credential was revoked; never block the paint.\n if (this.#revalidate === \"always\" && renown.user) {\n void renown.revalidate();\n }\n return renown;\n }\n}\n\n/**\n * @deprecated Use RenownBuilder directly instead.\n * Initialize a browser-specific Renown instance.\n * @param appName - Application name used for signing context\n * @param options - Browser-specific configuration options\n * @returns Initialized Renown instance\n */\nexport function initRenown(\n appName: string,\n options: BrowserRenownBuilderOptions = {},\n) {\n return new RenownBuilder(appName, options).build();\n}\n"],"mappings":";;;;AAEA,IAAa,mBAAb,cAAyC,YAAe;CACtD,YAAY,MAAc,QAAY;AACpC,QAAM,MAAM,EAAE,QAAQ,CAAC;;;AAI3B,IAAa,sBAAb,MAEmC;CACjC,eAAe,IAAI,aAAa;CAEhC,GACE,OACA,UACY;EACZ,MAAM,mBAAmB,MAAa;AACpC,OAAI,aAAa,iBACf,UAAS,EAAE,OAAoB;;AAInC,QAAA,YAAkB,iBAAiB,MAAM,UAAU,EAAE,gBAAgB;AACrE,eAAa;AACX,SAAA,YAAkB,oBAAoB,MAAM,UAAU,EAAE,gBAAgB;;;CAI5E,KAA6B,OAAU,MAAuB;EAC5D,MAAM,cAAc,IAAI,iBAAiB,MAAM,UAAU,EAAE,KAAK;AAChE,QAAA,YAAkB,cAAc,YAAY;;;;;AC7BhD,IAAa,iBAAb,cAEU,YAAe;CACvB;CAEA,YAAY,WAAmB,UAA8B;AAC3D,SAAO;AACP,OAAK,YAAY,GAAG,SAAS,GAAG;;CAGlC,UAAU,KAAsB;AAC9B,SAAO,GAAG,KAAK,UAAU,GAAG,IAAI,UAAU;;CAE5C,IAAyB,KAA8B;EACrD,MAAM,QAAQ,aAAa,QAAQ,MAAA,SAAe,IAAI,CAAC;AACvD,MAAI,MACF,QAAO,KAAK,MAAM,MAAM;;CAK5B,IAAyB,KAAU,OAAsB;AACvD,SAAO,QACH,aAAa,QAAQ,MAAA,SAAe,IAAI,EAAE,KAAK,UAAU,MAAM,CAAC,GAChE,aAAa,WAAW,MAAA,SAAe,IAAI,CAAC;;CAGlD,OAAO,KAAoB;AACzB,SAAO,aAAa,WAAW,MAAA,SAAe,IAAI,CAAC;;;;;ACvBvD,IAAa,uBAAb,cAA0C,eAAiC;AAC3E,IAAa,4BAAb,cAA+C,oBAAkC;AAIjF,SAAgB,kBAAkB,UAAqC;AACrE,KAAI,OAAO,iBAAiB,YAAa,QAAO,KAAA;AAChD,KAAI;AACF,SAAO,IAAI,eAAiC,UAAU,SAAS,CAAC,IAAI,OAAO;SACrE;AACN;;;;;;;AAqBJ,IAAa,gBAAb,cAAmC,kBAAkB;CACnD;CACA;CACA;CAEA,YAAY,SAAiB,UAAuC,EAAE,EAAE;AACtE,QAAM,QAAQ;AACd,QAAA,WAAiB,QAAQ;AACzB,QAAA,YAAkB,QAAQ;AAC1B,QAAA,aAAmB,QAAQ,cAAc;AACzC,OAAK,YAAY,IAAI,qBAAqB,UAAU,MAAA,SAAe,CAAC;AACpE,OAAK,iBAAiB,IAAI,2BAA2B,CAAC;AACtD,MAAI,QAAQ,QACV,MAAK,YAAY,QAAQ,QAAQ;AAEnC,MAAI,QAAQ,eACV,MAAK,mBAAmB,QAAQ,eAAe;;;;;CAOnD,aAAa,UAAwB;AACnC,QAAA,WAAiB;AACjB,OAAK,YAAY,IAAI,qBAAqB,UAAU,MAAA,SAAe,CAAC;AACpE,SAAO;;;;;;CAOT,cAAc,WAAyB;AACrC,QAAA,YAAkB;AAClB,SAAO;;;;;;CAOT,MAAM,QAAyB;EAC7B,MAAM,aAAa,MAAM,kBAAkB,OAAO,MAAA,UAAgB;AAClE,OAAK,mBAAmB,WAAW;EACnC,MAAM,SAAS,MAAM,MAAM,OAAO;AAGlC,MAAI,MAAA,eAAqB,YAAY,OAAO,KACrC,QAAO,YAAY;AAE1B,SAAO;;;;;;;;;;AAWX,SAAgB,WACd,SACA,UAAuC,EAAE,EACzC;AACA,QAAO,IAAI,cAAc,SAAS,QAAQ,CAAC,OAAO"}
package/dist/node.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- import { $ as User, A as ISigner, B as PKHDid, C as DIDResolutionResult, D as IPowerhouseIssuerType, E as IPowerhouseCredentialSubject, F as JWTVerified, G as RenownEvents, H as ProfileFetcher, I as JWTVerifyPolicies, J as RenownStorageMap, K as RenownProfile, L as JsonWebKey, M as InternalUser, N as Issuer, O as IProof, P as JWTPayload, Q as Unsubscribe, R as KeyCapabilitySection, S as DIDResolutionMetadata, T as IAuthCredentialSubject, U as Proof, V as PowerhouseVerifiableCredential, W as RenownEventEmitter, X as ServiceEndpoint, Y as Service, Z as Signer, _ as ConditionWeightedThreshold, a as signatureHasResultingHash, at as BaseStorage, b as DIDDocument, c as ConnectCrypto, ct as CREDENTIAL_SCHEMA_EIP712_TYPE, d as IConnectCrypto, dt as DEFAULT_RENOWN_CHAIN_ID, et as Verifiable, f as IRenownCrypto, ft as DEFAULT_RENOWN_NETWORK_ID, g as AuthVerifiedCredential, gt as VERIFIABLE_CREDENTIAL_EIP712_TYPE, h as AuthVerifiableCredential, ht as ISSUER_TYPE, i as parseSignatureHashField, it as W3CCredential, j as IVerifiableCredential, k as IRenown, l as RenownCrypto, lt as CREDENTIAL_SUBJECT_TYPE, m as JwkKeyPair, mt as DOMAIN_TYPE, n as createSignatureVerifier, nt as VerifiedCredential, o as MemoryKeyStorage, p as JsonWebKeyPairStorage, pt as DEFAULT_RENOWN_URL, q as RenownStorage, r as extractResultingHashFromSignature, rt as VerifiedJWT, s as RenownCryptoBuilder, st as IEventEmitter, t as RenownCryptoSigner, tt as VerificationMethod, u as DID, ut as CREDENTIAL_TYPES, v as CreateBearerTokenOptions, w as EcdsaSignature, x as DIDDocumentMetadata, y as CredentialStatus, z as LoginStatus } from "./signer-DYKGoYHB.js";
2
- import { _ as verifyCredentialSignature, a as getResolver, c as fetchRenownProfile, d as BuildCredentialParams, f as CredentialDomain, g as recoverCredentialSigner, h as buildAndSignCredential, i as createAuthBearerToken, l as BaseRenownBuilder, m as SignCredentialTypedData, n as VerifyAuthBearerTokenOptions, o as parsePkhDid, p as CredentialMessage, r as assertIsAuthCredential, s as verifyAuthBearerToken, t as ILogger, u as RenownBuilderOptions, v as Renown, y as RenownMemoryStorage } from "./utils-D8C7f9Qs.js";
1
+ import { $ as IEventEmitter, A as LoginStatus, B as Service, C as InternalUser, D as JWTVerifyPolicies, E as JWTVerified, F as RenownEventEmitter, G as User, H as SignInParams, I as RenownEvents, J as VerifiedCredential, K as Verifiable, L as RenownProfile, M as PowerhouseVerifiableCredential, N as ProfileFetcher, O as JsonWebKey, P as Proof, R as RenownStorage, S as IVerifiableCredential, T as JWTPayload, U as Signer, V as ServiceEndpoint, W as Unsubscribe, X as W3CCredential, Y as VerifiedJWT, Z as BaseStorage, _ as IPowerhouseCredentialSubject, _t as DEFAULT_RENOWN_URL, a as JwkKeyPair, at as VerifiedAuthCredential, b as IRenown, bt as RENOWN_SESSION_COOKIE, c as ConditionWeightedThreshold, ct as fetchDelegationCredential, d as DIDDocument, dt as verifyCredentialSignature, et as BuildCredentialParams, f as DIDDocumentMetadata, ft as CREDENTIAL_SCHEMA_EIP712_TYPE, g as IAuthCredentialSubject, gt as DEFAULT_RENOWN_NETWORK_ID, h as EcdsaSignature, ht as DEFAULT_RENOWN_CHAIN_ID, i as JsonWebKeyPairStorage, it as SignCredentialTypedData, j as PKHDid, k as KeyCapabilitySection, l as CreateBearerTokenOptions, lt as recoverCredentialSigner, m as DIDResolutionResult, mt as CREDENTIAL_TYPES, n as IConnectCrypto, nt as CredentialMessage, o as AuthVerifiableCredential, ot as VerifyAuthCredentialOptions, p as DIDResolutionMetadata, pt as CREDENTIAL_SUBJECT_TYPE, q as VerificationMethod, r as IRenownCrypto, rt as FetchDelegationCredentialOptions, s as AuthVerifiedCredential, st as buildAndSignCredential, t as DID, tt as CredentialDomain, u as CredentialStatus, ut as verifyAuthCredential, v as IPowerhouseIssuerType, vt as DOMAIN_TYPE, w as Issuer, x as ISigner, xt as VERIFIABLE_CREDENTIAL_EIP712_TYPE, y as IProof, yt as ISSUER_TYPE, z as RenownStorageMap } from "./types-DsF91dDF.js";
2
+ import { a as parseSignatureHashField, c as RenownCryptoBuilder, i as extractResultingHashFromSignature, l as ConnectCrypto, n as RenownCryptoSigner, o as signatureHasResultingHash, r as createSignatureVerifier, s as MemoryKeyStorage, u as RenownCrypto } from "./index-25fTa4yI.js";
3
+ import { a as getResolver, c as fetchRenownProfile, d as ResolveSwitchboardEndpointOptions, f as resolveSwitchboardEndpoint, h as SwitchboardClient, i as createAuthBearerToken, l as BaseRenownBuilder, m as RenownMemoryStorage, n as VerifyAuthBearerTokenOptions, o as parsePkhDid, p as Renown, r as assertIsAuthCredential, s as verifyAuthBearerToken, t as ILogger, u as RenownBuilderOptions } from "./utils-OOrVXHof.js";
3
4
 
4
5
  //#region src/crypto/node-key-storage.d.ts
5
6
  declare const RENOWN_PRIVATE_KEY_ENV = "PH_RENOWN_PRIVATE_KEY";
@@ -53,17 +54,16 @@ interface NodeRenownBuilderOptions {
53
54
  keyPath?: string;
54
55
  /** Renown server URL. Defaults to https://www.renown.id */
55
56
  baseUrl?: string;
57
+ /** Switchboard GraphQL endpoint for the direct-to-reactor flow. */
58
+ switchboardUrl?: string;
59
+ /** Re-check a stored credential on build (default "always"). */
60
+ revalidate?: "always" | "never";
56
61
  }
57
- /**
58
- * Node.js-specific Renown builder with pre-configured defaults.
59
- * Uses file-based storage for both user data and key storage.
60
- */
62
+ /** Node.js Renown builder: file-based user + key storage. */
61
63
  declare class RenownBuilder extends BaseRenownBuilder {
62
- /**
63
- * @param appName - Application name used for signing context
64
- * @param options - Node.js-specific configuration options
65
- */
64
+ #private;
66
65
  constructor(appName: string, options?: NodeRenownBuilderOptions);
66
+ build(): Promise<Renown>;
67
67
  }
68
68
  //#endregion
69
69
  //#region src/login.node.d.ts
@@ -133,5 +133,48 @@ declare function parseExpiry(expiry: string): number;
133
133
  */
134
134
  declare function formatExpiry(expiresIn: number): string;
135
135
  //#endregion
136
- export { AccessTokenResult, AuthStatusResult, AuthVerifiableCredential, AuthVerifiedCredential, BaseRenownBuilder, BrowserLoginOptions, BrowserLoginResult, BuildCredentialParams, CREDENTIAL_SCHEMA_EIP712_TYPE, CREDENTIAL_SUBJECT_TYPE, CREDENTIAL_TYPES, ConditionWeightedThreshold, ConnectCrypto, CreateBearerTokenOptions, CredentialDomain, CredentialMessage, CredentialStatus, DEFAULT_KEYPAIR_PATH, DEFAULT_RENOWN_CHAIN_ID, DEFAULT_RENOWN_NETWORK_ID, DEFAULT_RENOWN_STORAGE_PATH, DEFAULT_RENOWN_URL, DID, DIDDocument, DIDDocumentMetadata, DIDResolutionMetadata, DIDResolutionResult, DOMAIN_TYPE, EcdsaSignature, IAuthCredentialSubject, IConnectCrypto, ILogger, IPowerhouseCredentialSubject, IPowerhouseIssuerType, IProof, IRenown, IRenownCrypto, ISSUER_TYPE, ISigner, IVerifiableCredential, InternalUser, Issuer, JWTPayload, JWTVerified, JWTVerifyPolicies, JsonWebKey, JsonWebKeyPairStorage, JwkKeyPair, KeyCapabilitySection, LoginStatus, MemoryKeyStorage, NodeEventEmitter, NodeKeyStorage, NodeRenownBuilderOptions, NodeRenownEventEmitter, NodeRenownStorage, NodeStorage, PKHDid, PowerhouseVerifiableCredential, ProfileFetcher, Proof, RENOWN_PRIVATE_KEY_ENV, Renown, RenownBuilder, RenownBuilderOptions, RenownCrypto, RenownCryptoBuilder, RenownCryptoSigner, RenownEventEmitter, RenownEvents, RenownMemoryStorage, RenownProfile, RenownStorage, RenownStorageMap, Service, ServiceEndpoint, SignCredentialTypedData, Signer, Unsubscribe, User, VERIFIABLE_CREDENTIAL_EIP712_TYPE, Verifiable, VerificationMethod, VerifiedCredential, VerifiedJWT, VerifyAuthBearerTokenOptions, W3CCredential, assertIsAuthCredential, browserLogin, buildAndSignCredential, createAuthBearerToken, createSignatureVerifier, extractResultingHashFromSignature, fetchRenownProfile, formatExpiry, generateAccessToken, getAuthStatus, getResolver, openBrowser, parseExpiry, parsePkhDid, parseSignatureHashField, recoverCredentialSigner, signatureHasResultingHash, verifyAuthBearerToken, verifyCredentialSignature };
136
+ //#region src/session.d.ts
137
+ /** Server-side view of an authenticated Renown session. */
138
+ interface RenownSession {
139
+ /** Authenticated user identity derived from the session token. */
140
+ user: User;
141
+ /** App/client DID the token was issued by. */
142
+ appDid: string;
143
+ /** Token expiry (epoch seconds), when present. */
144
+ expiresAt?: number;
145
+ }
146
+ /** Display hint carried alongside the token (unverified; not for auth). */
147
+ interface RenownSessionProfile {
148
+ name?: string | null;
149
+ avatar?: string | null;
150
+ }
151
+ /** The `renown_session` cookie payload: the bearer token + a display hint. */
152
+ interface RenownSessionCookie {
153
+ token: string;
154
+ profile?: RenownSessionProfile | null;
155
+ }
156
+ interface VerifyRenownSessionOptions {
157
+ /** Expected `aud` claim on the token. */
158
+ audience?: string;
159
+ /** Switchboard GraphQL endpoint used when re-verifying the credential. */
160
+ switchboardUrl?: string;
161
+ /** Renown service base URL used when re-verifying the credential. */
162
+ renownUrl?: string;
163
+ /** Also re-verify the credential against Switchboard (default false = token-only, no network). */
164
+ verifyCredential?: boolean;
165
+ }
166
+ /** Claims read from a session token without verifying its signature. */
167
+ interface RenownSessionClaims {
168
+ address?: string;
169
+ chainId?: number;
170
+ networkId?: string;
171
+ /** Expiry in epoch seconds. */
172
+ expiresAt?: number;
173
+ }
174
+ /** Serialize a session cookie value (token + optional display hint). */
175
+ declare function serializeRenownSessionCookie(value: RenownSessionCookie): string;
176
+ declare function readSessionClaims(value: string): RenownSessionClaims | undefined;
177
+ declare function verifyRenownSession(value: string, options?: VerifyRenownSessionOptions): Promise<RenownSession | undefined>;
178
+ //#endregion
179
+ export { AccessTokenResult, AuthStatusResult, AuthVerifiableCredential, AuthVerifiedCredential, BaseRenownBuilder, BrowserLoginOptions, BrowserLoginResult, BuildCredentialParams, CREDENTIAL_SCHEMA_EIP712_TYPE, CREDENTIAL_SUBJECT_TYPE, CREDENTIAL_TYPES, ConditionWeightedThreshold, ConnectCrypto, CreateBearerTokenOptions, CredentialDomain, CredentialMessage, CredentialStatus, DEFAULT_KEYPAIR_PATH, DEFAULT_RENOWN_CHAIN_ID, DEFAULT_RENOWN_NETWORK_ID, DEFAULT_RENOWN_STORAGE_PATH, DEFAULT_RENOWN_URL, DID, DIDDocument, DIDDocumentMetadata, DIDResolutionMetadata, DIDResolutionResult, DOMAIN_TYPE, EcdsaSignature, FetchDelegationCredentialOptions, IAuthCredentialSubject, IConnectCrypto, ILogger, IPowerhouseCredentialSubject, IPowerhouseIssuerType, IProof, IRenown, IRenownCrypto, ISSUER_TYPE, ISigner, IVerifiableCredential, InternalUser, Issuer, JWTPayload, JWTVerified, JWTVerifyPolicies, JsonWebKey, JsonWebKeyPairStorage, JwkKeyPair, KeyCapabilitySection, LoginStatus, MemoryKeyStorage, NodeEventEmitter, NodeKeyStorage, NodeRenownBuilderOptions, NodeRenownEventEmitter, NodeRenownStorage, NodeStorage, PKHDid, PowerhouseVerifiableCredential, ProfileFetcher, Proof, RENOWN_PRIVATE_KEY_ENV, RENOWN_SESSION_COOKIE, Renown, RenownBuilder, RenownBuilderOptions, RenownCrypto, RenownCryptoBuilder, RenownCryptoSigner, RenownEventEmitter, RenownEvents, RenownMemoryStorage, RenownProfile, RenownSession, RenownSessionClaims, RenownSessionCookie, RenownSessionProfile, RenownStorage, RenownStorageMap, ResolveSwitchboardEndpointOptions, Service, ServiceEndpoint, SignCredentialTypedData, SignInParams, Signer, SwitchboardClient, Unsubscribe, User, VERIFIABLE_CREDENTIAL_EIP712_TYPE, Verifiable, VerificationMethod, VerifiedAuthCredential, VerifiedCredential, VerifiedJWT, VerifyAuthBearerTokenOptions, VerifyAuthCredentialOptions, VerifyRenownSessionOptions, W3CCredential, assertIsAuthCredential, browserLogin, buildAndSignCredential, createAuthBearerToken, createSignatureVerifier, extractResultingHashFromSignature, fetchDelegationCredential, fetchRenownProfile, formatExpiry, generateAccessToken, getAuthStatus, getResolver, openBrowser, parseExpiry, parsePkhDid, parseSignatureHashField, readSessionClaims, recoverCredentialSigner, resolveSwitchboardEndpoint, serializeRenownSessionCookie, signatureHasResultingHash, verifyAuthBearerToken, verifyAuthCredential, verifyCredentialSignature, verifyRenownSession };
137
180
  //# sourceMappingURL=node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","names":[],"sources":["../src/crypto/node-key-storage.ts","../src/event/event.node.ts","../src/storage/storage.node.ts","../src/init.node.ts","../src/login.node.ts"],"mappings":";;;;cAWa,sBAAA;AAAA,cACA,oBAAA;AADb;;;;;AACA;AADA,cASa,cAAA,YAA0B,qBAAA;EAAA;kBAKrB,oBAAA;EAAA,gBACA,sBAAA;cAGd,QAAA,WACA,OAAA;IAAW,UAAA;IAAqB,MAAA,GAAS,OAAA;EAAA;EAa3C,WAAA,CAAA,GAAe,OAAA,CAAQ,UAAA;EAyBjB,WAAA,CAAY,OAAA,EAAS,UAAA,GAAa,OAAA;EAWxC,aAAA,CAAA,GAAiB,OAAA;AAAA;;;cC5EN,gBAAA,gBACI,MAAA,8BACJ,aAAA,CAAc,MAAA;EAAA;;EAOzB,EAAA,iBAAmB,MAAA,CAAA,CACjB,KAAA,EAAO,CAAA,EACP,QAAA,GAAW,IAAA,EAAM,MAAA,CAAO,CAAA;EAQ1B,IAAA,iBAAqB,MAAA,CAAA,CAAQ,KAAA,EAAO,CAAA,EAAG,IAAA,EAAM,MAAA,CAAO,CAAA;AAAA;;;cClBzC,WAAA,WACD,MAAA,oBAA0B,MAAA,2BAC5B,WAAA,CAAY,CAAA;EAAA,iBACH,QAAA;cAEL,QAAA;EAAA,QAYJ,QAAA;EAAA,QAKA,SAAA;EAIR,GAAA,mBAAsB,CAAA,CAAA,CAAG,GAAA,EAAK,GAAA,GAAM,CAAA,CAAE,GAAA;EAKtC,GAAA,mBAAsB,CAAA,CAAA,CAAG,GAAA,EAAK,GAAA,EAAK,KAAA,GAAQ,CAAA,CAAE,GAAA;EAU7C,MAAA,CAAO,GAAA,QAAW,CAAA;AAAA;;;cCvCP,sBAAA,SAA+B,gBAAA,CAAiB,YAAA;AAAA,cAChD,iBAAA,SAA0B,WAAA,CAAY,gBAAA;AAAA,cAEtC,2BAAA;AAAA,UAEI,wBAAA;EHCgB;EGC/B,WAAA;EHD+B;EGG/B,OAAA;EHKW;EGHX,OAAA;AAAA;;;;;cAOW,aAAA,SAAsB,iBAAA;EHuDhB;;;;cGlDL,OAAA,UAAiB,OAAA,GAAS,wBAAA;AAAA;;;UCvBvB,mBAAA;;EAEf,SAAA;EJGW;EIDX,SAAA;;EAEA,UAAA,IAAc,GAAA,UAAa,SAAA;EJDM;EIGjC,UAAA;EJF+B;EII/B,mBAAA,IAAuB,GAAA;EJJQ;EIM/B,MAAA,GAAS,WAAA;AAAA;AAAA,UAGM,kBAAA;EACf,IAAA,EAAM,IAAA;EACN,MAAA;AAAA;AAAA,UAGe,gBAAA;EACf,aAAA;EACA,OAAA;EACA,OAAA;EACA,OAAA;EACA,MAAA;EACA,eAAA,GAAkB,IAAA;EAClB,OAAA;AAAA;;;;iBA+CoB,WAAA,CAAY,GAAA,WAAc,OAAA;;;;;;;;iBAyD1B,YAAA,CACpB,MAAA,EAAQ,OAAA,EACR,OAAA,EAAS,mBAAA,GACR,OAAA,CAAQ,kBAAA;;;;iBA2CK,aAAA,CAAc,MAAA,EAAQ,OAAA,GAAU,gBAAA;AAAA,UAe/B,iBAAA;EACf,KAAA;EACA,GAAA;EACA,OAAA;EACA,SAAA;AAAA;AHvMF;;;;;AAAA,iBG+MsB,mBAAA,CACpB,MAAA,EAAQ,OAAA,EACR,OAAA,GAAU,wBAAA,GACT,OAAA,CAAQ,iBAAA;;;;;;iBAuBK,WAAA,CAAY,MAAA;;;;iBAgCZ,YAAA,CAAa,SAAA"}
1
+ {"version":3,"file":"node.d.ts","names":[],"sources":["../src/crypto/node-key-storage.ts","../src/event/event.node.ts","../src/storage/storage.node.ts","../src/init.node.ts","../src/login.node.ts","../src/session.ts"],"mappings":";;;;;cAWa,sBAAA;AAAA,cACA,oBAAA;;AADb;;;;;cASa,cAAA,YAA0B,qBAAA;EAAA;kBAKrB,oBAAA;EAAA,gBACA,sBAAA;cAGd,QAAA,WACA,OAAA;IAAW,UAAA;IAAqB,MAAA,GAAS,OAAA;EAAA;EAa3C,WAAA,CAAA,GAAe,OAAA,CAAQ,UAAA;EAyBjB,WAAA,CAAY,OAAA,EAAS,UAAA,GAAa,OAAA;EAWxC,aAAA,CAAA,GAAiB,OAAA;AAAA;;;cC5EN,gBAAA,gBACI,MAAA,8BACJ,aAAA,CAAc,MAAA;EAAA;;EAOzB,EAAA,iBAAmB,MAAA,CAAA,CACjB,KAAA,EAAO,CAAA,EACP,QAAA,GAAW,IAAA,EAAM,MAAA,CAAO,CAAA;EAQ1B,IAAA,iBAAqB,MAAA,CAAA,CAAQ,KAAA,EAAO,CAAA,EAAG,IAAA,EAAM,MAAA,CAAO,CAAA;AAAA;;;cClBzC,WAAA,WACD,MAAA,oBAA0B,MAAA,2BAC5B,WAAA,CAAY,CAAA;EAAA,iBACH,QAAA;cAEL,QAAA;EAAA,QAYJ,QAAA;EAAA,QAKA,SAAA;EAIR,GAAA,mBAAsB,CAAA,CAAA,CAAG,GAAA,EAAK,GAAA,GAAM,CAAA,CAAE,GAAA;EAKtC,GAAA,mBAAsB,CAAA,CAAA,CAAG,GAAA,EAAK,GAAA,EAAK,KAAA,GAAQ,CAAA,CAAE,GAAA;EAU7C,MAAA,CAAO,GAAA,QAAW,CAAA;AAAA;;;cCtCP,sBAAA,SAA+B,gBAAA,CAAiB,YAAA;AAAA,cAChD,iBAAA,SAA0B,WAAA,CAAY,gBAAA;AAAA,cAEtC,2BAAA;AAAA,UAEI,wBAAA;EHAgB;EGE/B,WAAA;EHF+B;EGI/B,OAAA;EHIW;EGFX,OAAA;;EAEA,cAAA;EHuBuB;EGrBvB,UAAA;AAAA;;cAIW,aAAA,SAAsB,iBAAA;EAAA;cAGrB,OAAA,UAAiB,OAAA,GAAS,wBAAA;EAyBhC,KAAA,CAAA,GAAS,OAAA,CAAQ,MAAA;AAAA;;;UChDR,mBAAA;;EAEf,SAAA;;EAEA,SAAA;EJCiC;EICjC,UAAA,IAAc,GAAA,UAAa,SAAA;EJDM;EIGjC,UAAA;EJFW;EIIX,mBAAA,IAAuB,GAAA;;EAEvB,MAAA,GAAS,WAAA;AAAA;AAAA,UAGM,kBAAA;EACf,IAAA,EAAM,IAAA;EACN,MAAA;AAAA;AAAA,UAGe,gBAAA;EACf,aAAA;EACA,OAAA;EACA,OAAA;EACA,OAAA;EACA,MAAA;EACA,eAAA,GAAkB,IAAA;EAClB,OAAA;AAAA;;;;iBA+CoB,WAAA,CAAY,GAAA,WAAc,OAAA;;;;;;;;iBAyD1B,YAAA,CACpB,MAAA,EAAQ,OAAA,EACR,OAAA,EAAS,mBAAA,GACR,OAAA,CAAQ,kBAAA;;;;iBA2CK,aAAA,CAAc,MAAA,EAAQ,OAAA,GAAU,gBAAA;AAAA,UAe/B,iBAAA;EACf,KAAA;EACA,GAAA;EACA,OAAA;EACA,SAAA;AAAA;;AHvMF;;;;iBG+MsB,mBAAA,CACpB,MAAA,EAAQ,OAAA,EACR,OAAA,GAAU,wBAAA,GACT,OAAA,CAAQ,iBAAA;;;;;;iBAuBK,WAAA,CAAY,MAAA;;;;iBAgCZ,YAAA,CAAa,SAAA;;;;UCvQZ,aAAA;;EAEf,IAAA,EAAM,IAAA;ELIK;EKFX,MAAA;;EAEA,SAAA;AAAA;ALCF;AAAA,UKGiB,oBAAA;EACf,IAAA;EACA,MAAA;AAAA;ALGF;AAAA,UKCiB,mBAAA;EACf,KAAA;EACA,OAAA,GAAU,oBAAA;AAAA;AAAA,UAGK,0BAAA;EL0CY;EKxC3B,QAAA;ELmDiB;EKjDjB,cAAA;ELV0D;EKY1D,SAAA;ELZqC;EKcrC,gBAAA;AAAA;;UAIe,mBAAA;EACf,OAAA;EACA,OAAA;EACA,SAAA;ELX2C;EKa3C,SAAA;AAAA;;iBAIc,4BAAA,CACd,KAAA,EAAO,mBAAA;AAAA,iBAwBO,iBAAA,CACd,KAAA,WACC,mBAAA;AAAA,iBA+BmB,mBAAA,CACpB,KAAA,UACA,OAAA,GAAS,0BAAA,GACR,OAAA,CAAQ,aAAA"}