@renown/sdk 6.2.3-dev.24 → 6.2.3-dev.25
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.
- package/dist/{browser-key-storage-CeyLjla8.js → browser-key-storage-wjSwTnhs.js} +3 -2
- package/dist/browser-key-storage-wjSwTnhs.js.map +1 -0
- package/dist/{constants-BexAR53F.js → constants-DVOF17NB.js} +1 -1
- package/dist/{constants-BexAR53F.js.map → constants-DVOF17NB.js.map} +1 -1
- package/dist/crypto.d.ts +4 -3
- package/dist/crypto.js +2 -2
- package/dist/{index-Bcs-BY-C.d.ts → index-CGTiUojp.d.ts} +3 -3
- package/dist/index-CGTiUojp.d.ts.map +1 -0
- package/dist/index.d.ts +12 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -8
- package/dist/index.js.map +1 -1
- package/dist/{local-credential-verifier-2aC00ymX.js → local-credential-verifier-BC4HS01T.js} +5 -5
- package/dist/local-credential-verifier-BC4HS01T.js.map +1 -0
- package/dist/{meta-adhFGw0o.js → meta-4NmijIbE.js} +2 -2
- package/dist/{meta-adhFGw0o.js.map → meta-4NmijIbE.js.map} +1 -1
- package/dist/{meta-BOjLjJ1Y.js → meta-B2fHYlPD.js} +2 -2
- package/dist/{meta-BOjLjJ1Y.js.map → meta-B2fHYlPD.js.map} +1 -1
- package/dist/{meta-B8HbJHy8.d.ts → meta-CpBbgZnu.d.ts} +3 -3
- package/dist/meta-CpBbgZnu.d.ts.map +1 -0
- package/dist/{meta-CRXEMUUQ.d.ts → meta-DlON7DmF.d.ts} +3 -3
- package/dist/meta-DlON7DmF.d.ts.map +1 -0
- package/dist/node.d.ts +31 -29
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +9 -8
- package/dist/node.js.map +1 -1
- package/dist/{signer-DIbtSfsu.js → signer-GzTlZLjR.js} +10 -6
- package/dist/signer-GzTlZLjR.js.map +1 -0
- package/dist/{signer-trust-D7vg4xbS.js → signer-trust-C6UJAsNJ.js} +3 -3
- package/dist/signer-trust-C6UJAsNJ.js.map +1 -0
- package/dist/{signer-trust-Dg7Wggsc.d.ts → signer-trust-DstQutcf.d.ts} +3 -3
- package/dist/signer-trust-DstQutcf.d.ts.map +1 -0
- package/dist/trust.d.ts +3 -2
- package/dist/trust.js +1 -1
- package/dist/{types-CQDAkCVn.d.ts → types-Bsve10Ny.d.ts} +3 -3
- package/dist/types-Bsve10Ny.d.ts.map +1 -0
- package/dist/{types-ChjGDXVS.d.ts → types-CHIgkzKb.d.ts} +3 -3
- package/dist/types-CHIgkzKb.d.ts.map +1 -0
- package/dist/{types-CXBWG4JY.d.ts → types-DOTk0z2D.d.ts} +7 -5
- package/dist/types-DOTk0z2D.d.ts.map +1 -0
- package/dist/{types-ome2Ysme.js → types-Dwy6khXb.js} +1 -1
- package/dist/{types-ome2Ysme.js.map → types-Dwy6khXb.js.map} +1 -1
- package/dist/{utils-BuSw6Mud.d.ts → utils-C_2VV8CS.d.ts} +4 -3
- package/dist/utils-C_2VV8CS.d.ts.map +1 -0
- package/dist/{utils-Dtdm4vFs.js → utils-DLQ5VVqT.js} +4 -3
- package/dist/{utils-Dtdm4vFs.js.map → utils-DLQ5VVqT.js.map} +1 -1
- package/dist/wallet/index.d.ts +5 -5
- package/dist/wallet/index.d.ts.map +1 -1
- package/dist/wallet/index.js +1 -1
- package/dist/wallet/index.js.map +1 -1
- package/dist/wallet/mock/factory.d.ts +4 -5
- package/dist/wallet/mock/factory.d.ts.map +1 -1
- package/dist/wallet/mock/factory.js +1 -1
- package/dist/wallet/mock/factory.js.map +1 -1
- package/dist/wallet/mock/index.d.ts +5 -5
- package/dist/wallet/mock/index.d.ts.map +1 -1
- package/dist/wallet/mock/index.js +1 -1
- package/dist/wallet/mock/index.js.map +1 -1
- package/dist/wallet/privy/factory.d.ts +9 -11
- package/dist/wallet/privy/factory.d.ts.map +1 -1
- package/dist/wallet/privy/factory.js +2 -2
- package/dist/wallet/privy/factory.js.map +1 -1
- package/dist/wallet/privy/index.d.ts +5 -5
- package/dist/wallet/privy/index.d.ts.map +1 -1
- package/dist/wallet/privy/index.js +1 -1
- package/dist/wallet/privy/index.js.map +1 -1
- package/dist/wallet/rainbow/factory.d.ts +5 -4
- package/dist/wallet/rainbow/factory.d.ts.map +1 -1
- package/dist/wallet/rainbow/factory.js +2 -2
- package/dist/wallet/rainbow/factory.js.map +1 -1
- package/dist/wallet/rainbow/index.d.ts +5 -5
- package/dist/wallet/rainbow/index.d.ts.map +1 -1
- package/dist/wallet/rainbow/index.js +1 -1
- package/dist/wallet/rainbow/index.js.map +1 -1
- package/package.json +4 -3
- package/dist/browser-key-storage-CeyLjla8.js.map +0 -1
- package/dist/index-Bcs-BY-C.d.ts.map +0 -1
- package/dist/local-credential-verifier-2aC00ymX.js.map +0 -1
- package/dist/meta-B8HbJHy8.d.ts.map +0 -1
- package/dist/meta-CRXEMUUQ.d.ts.map +0 -1
- package/dist/signer-DIbtSfsu.js.map +0 -1
- package/dist/signer-trust-D7vg4xbS.js.map +0 -1
- package/dist/signer-trust-Dg7Wggsc.d.ts.map +0 -1
- package/dist/types-CQDAkCVn.d.ts.map +0 -1
- package/dist/types-CXBWG4JY.d.ts.map +0 -1
- package/dist/types-ChjGDXVS.d.ts.map +0 -1
- package/dist/utils-BuSw6Mud.d.ts.map +0 -1
|
@@ -8,7 +8,8 @@ var BrowserKeyStorage = class BrowserKeyStorage {
|
|
|
8
8
|
this.#db = db;
|
|
9
9
|
}
|
|
10
10
|
static async create(dbName = DEFAULT_DB_NAME) {
|
|
11
|
-
|
|
11
|
+
const db = await BrowserKeyStorage.#openDatabase(dbName);
|
|
12
|
+
return new BrowserKeyStorage(db);
|
|
12
13
|
}
|
|
13
14
|
static #openDatabase(dbName) {
|
|
14
15
|
return new Promise((resolve, reject) => {
|
|
@@ -65,4 +66,4 @@ var BrowserKeyStorage = class BrowserKeyStorage {
|
|
|
65
66
|
//#endregion
|
|
66
67
|
export { BrowserKeyStorage as t };
|
|
67
68
|
|
|
68
|
-
//# sourceMappingURL=browser-key-storage-
|
|
69
|
+
//# sourceMappingURL=browser-key-storage-wjSwTnhs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-key-storage-wjSwTnhs.js","names":[],"sources":["../src/crypto/browser-key-storage.ts"],"sourcesContent":["import type { JsonWebKeyPairStorage, JwkKeyPair } from \"./types.js\";\n\nconst DEFAULT_DB_NAME = \"renownKeyDB\";\nconst STORE_NAME = \"keyPairs\";\nconst KEY = \"keyPair\";\n\nexport class BrowserKeyStorage implements JsonWebKeyPairStorage {\n #db: IDBDatabase;\n\n constructor(db: IDBDatabase) {\n this.#db = db;\n }\n\n static async create(\n dbName: string = DEFAULT_DB_NAME,\n ): Promise<BrowserKeyStorage> {\n const db = await BrowserKeyStorage.#openDatabase(dbName);\n return new BrowserKeyStorage(db);\n }\n\n static #openDatabase(dbName: string): Promise<IDBDatabase> {\n return new Promise((resolve, reject) => {\n const req = indexedDB.open(dbName);\n\n req.onupgradeneeded = (event) => {\n const db = (event.target as IDBOpenDBRequest).result;\n if (!db.objectStoreNames.contains(STORE_NAME)) {\n db.createObjectStore(STORE_NAME);\n }\n };\n\n req.onsuccess = () => {\n const db = req.result;\n if (!db.objectStoreNames.contains(STORE_NAME)) {\n const currentVersion = db.version;\n db.close();\n const upgradeReq = indexedDB.open(dbName, currentVersion + 1);\n upgradeReq.onupgradeneeded = (event) => {\n const upgradeDb = (event.target as IDBOpenDBRequest).result;\n if (!upgradeDb.objectStoreNames.contains(STORE_NAME)) {\n upgradeDb.createObjectStore(STORE_NAME);\n }\n };\n upgradeReq.onsuccess = () => resolve(upgradeReq.result);\n upgradeReq.onerror = () => reject(upgradeReq.error as Error);\n } else {\n resolve(db);\n }\n };\n\n req.onerror = () => reject(req.error as Error);\n });\n }\n\n #useStore(mode: IDBTransactionMode = \"readwrite\") {\n const transaction = this.#db.transaction(STORE_NAME, mode);\n return transaction.objectStore(STORE_NAME);\n }\n\n async saveKeyPair(keyPair: JwkKeyPair) {\n const store = this.#useStore();\n const request = store.put(keyPair, KEY);\n return new Promise<void>((resolve, reject) => {\n request.onsuccess = () => resolve();\n request.onerror = () => reject(new Error(\"Failed to save key pair\"));\n });\n }\n\n async loadKeyPair(): Promise<JwkKeyPair | undefined> {\n const store = this.#useStore(\"readonly\");\n const request = store.get(KEY);\n\n return new Promise<JwkKeyPair | undefined>((resolve, reject) => {\n request.onsuccess = () => {\n const keyPair = request.result as JwkKeyPair | undefined;\n resolve(keyPair);\n };\n request.onerror = () => reject(new Error(\"Failed to load key pair\"));\n });\n }\n\n async removeKeyPair(): Promise<void> {\n const store = this.#useStore();\n const request = store.delete(KEY);\n\n return new Promise<void>((resolve, reject) => {\n request.onsuccess = () => resolve();\n request.onerror = () => reject(new Error(\"Failed to remove key pair\"));\n });\n }\n}\n"],"mappings":";AAEA,MAAM,kBAAkB;AACxB,MAAM,aAAa;AACnB,MAAM,MAAM;AAEZ,IAAa,oBAAb,MAAa,kBAAmD;CAC9D;CAEA,YAAY,IAAiB;EAC3B,KAAK,MAAM;CACb;CAEA,aAAa,OACX,SAAiB,iBACW;EAC5B,MAAM,KAAK,MAAM,kBAAkB,cAAc,MAAM;EACvD,OAAO,IAAI,kBAAkB,EAAE;CACjC;CAEA,OAAO,cAAc,QAAsC;EACzD,OAAO,IAAI,SAAS,SAAS,WAAW;GACtC,MAAM,MAAM,UAAU,KAAK,MAAM;GAEjC,IAAI,mBAAmB,UAAU;IAC/B,MAAM,KAAM,MAAM,OAA4B;IAC9C,IAAI,CAAC,GAAG,iBAAiB,SAAS,UAAU,GAC1C,GAAG,kBAAkB,UAAU;GAEnC;GAEA,IAAI,kBAAkB;IACpB,MAAM,KAAK,IAAI;IACf,IAAI,CAAC,GAAG,iBAAiB,SAAS,UAAU,GAAG;KAC7C,MAAM,iBAAiB,GAAG;KAC1B,GAAG,MAAM;KACT,MAAM,aAAa,UAAU,KAAK,QAAQ,iBAAiB,CAAC;KAC5D,WAAW,mBAAmB,UAAU;MACtC,MAAM,YAAa,MAAM,OAA4B;MACrD,IAAI,CAAC,UAAU,iBAAiB,SAAS,UAAU,GACjD,UAAU,kBAAkB,UAAU;KAE1C;KACA,WAAW,kBAAkB,QAAQ,WAAW,MAAM;KACtD,WAAW,gBAAgB,OAAO,WAAW,KAAc;IAC7D,OACE,QAAQ,EAAE;GAEd;GAEA,IAAI,gBAAgB,OAAO,IAAI,KAAc;EAC/C,CAAC;CACH;CAEA,UAAU,OAA2B,aAAa;EAEhD,OADoB,KAAK,IAAI,YAAY,YAAY,IACpC,CAAC,CAAC,YAAY,UAAU;CAC3C;CAEA,MAAM,YAAY,SAAqB;EAErC,MAAM,UADQ,KAAK,UACC,CAAC,CAAC,IAAI,SAAS,GAAG;EACtC,OAAO,IAAI,SAAe,SAAS,WAAW;GAC5C,QAAQ,kBAAkB,QAAQ;GAClC,QAAQ,gBAAgB,uBAAO,IAAI,MAAM,yBAAyB,CAAC;EACrE,CAAC;CACH;CAEA,MAAM,cAA+C;EAEnD,MAAM,UADQ,KAAK,UAAU,UACT,CAAC,CAAC,IAAI,GAAG;EAE7B,OAAO,IAAI,SAAiC,SAAS,WAAW;GAC9D,QAAQ,kBAAkB;IACxB,MAAM,UAAU,QAAQ;IACxB,QAAQ,OAAO;GACjB;GACA,QAAQ,gBAAgB,uBAAO,IAAI,MAAM,yBAAyB,CAAC;EACrE,CAAC;CACH;CAEA,MAAM,gBAA+B;EAEnC,MAAM,UADQ,KAAK,UACC,CAAC,CAAC,OAAO,GAAG;EAEhC,OAAO,IAAI,SAAe,SAAS,WAAW;GAC5C,QAAQ,kBAAkB,QAAQ;GAClC,QAAQ,gBAAgB,uBAAO,IAAI,MAAM,2BAA2B,CAAC;EACvE,CAAC;CACH;AACF"}
|
|
@@ -79,4 +79,4 @@ const CREDENTIAL_TYPES = {
|
|
|
79
79
|
//#endregion
|
|
80
80
|
export { DEFAULT_RENOWN_NETWORK_ID as a, ISSUER_TYPE as c, VERIFIABLE_CREDENTIAL_EIP712_TYPE as d, DEFAULT_RENOWN_CHAIN_ID as i, RENOWN_READ_MODEL_SUBGRAPH as l, CREDENTIAL_SUBJECT_TYPE as n, DEFAULT_RENOWN_URL as o, CREDENTIAL_TYPES as r, DOMAIN_TYPE as s, CREDENTIAL_SCHEMA_EIP712_TYPE as t, RENOWN_SESSION_COOKIE as u };
|
|
81
81
|
|
|
82
|
-
//# sourceMappingURL=constants-
|
|
82
|
+
//# sourceMappingURL=constants-DVOF17NB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants-
|
|
1
|
+
{"version":3,"file":"constants-DVOF17NB.js","names":[],"sources":["../src/constants.ts"],"sourcesContent":["export const DEFAULT_RENOWN_URL = \"https://www.renown.id\";\nexport const DEFAULT_RENOWN_NETWORK_ID = \"eip155\";\nexport const DEFAULT_RENOWN_CHAIN_ID = \"1\";\n\n/** Default cookie name for a server-readable Renown session (bearer token). */\nexport const RENOWN_SESSION_COOKIE = \"renown_session\";\n\n/** Subgraph a Switchboard exposes the renown read model under; the queries in\n * `switchboard.ts` are written against it. */\nexport const RENOWN_READ_MODEL_SUBGRAPH = \"renown-read-model\";\n\nexport const DOMAIN_TYPE = [\n { name: \"version\", type: \"string\" },\n { name: \"chainId\", type: \"uint256\" },\n] as const;\n\nexport const VERIFIABLE_CREDENTIAL_EIP712_TYPE = [\n { name: \"@context\", type: \"string[]\" },\n { name: \"type\", type: \"string[]\" },\n { name: \"id\", type: \"string\" },\n { name: \"issuer\", type: \"Issuer\" },\n { name: \"credentialSubject\", type: \"CredentialSubject\" },\n { name: \"credentialSchema\", type: \"CredentialSchema\" },\n { name: \"issuanceDate\", type: \"string\" },\n { name: \"expirationDate\", type: \"string\" },\n] as const;\n\nexport const CREDENTIAL_SCHEMA_EIP712_TYPE = [\n { name: \"id\", type: \"string\" },\n { name: \"type\", type: \"string\" },\n] as const;\n\nexport const CREDENTIAL_SUBJECT_TYPE = [\n { name: \"app\", type: \"string\" },\n { name: \"id\", type: \"string\" },\n] as const;\n\nexport const ISSUER_TYPE = [\n { name: \"id\", type: \"string\" },\n { name: \"ethereumAddress\", type: \"string\" },\n] as const;\n\nexport const CREDENTIAL_TYPES = {\n EIP712Domain: DOMAIN_TYPE,\n VerifiableCredential: VERIFIABLE_CREDENTIAL_EIP712_TYPE,\n CredentialSchema: CREDENTIAL_SCHEMA_EIP712_TYPE,\n CredentialSubject: CREDENTIAL_SUBJECT_TYPE,\n Issuer: ISSUER_TYPE,\n} as const;\n"],"mappings":";AAAA,MAAa,qBAAqB;AAClC,MAAa,4BAA4B;AACzC,MAAa,0BAA0B;;AAGvC,MAAa,wBAAwB;;;AAIrC,MAAa,6BAA6B;AAE1C,MAAa,cAAc,CACzB;CAAE,MAAM;CAAW,MAAM;AAAS,GAClC;CAAE,MAAM;CAAW,MAAM;AAAU,CACrC;AAEA,MAAa,oCAAoC;CAC/C;EAAE,MAAM;EAAY,MAAM;CAAW;CACrC;EAAE,MAAM;EAAQ,MAAM;CAAW;CACjC;EAAE,MAAM;EAAM,MAAM;CAAS;CAC7B;EAAE,MAAM;EAAU,MAAM;CAAS;CACjC;EAAE,MAAM;EAAqB,MAAM;CAAoB;CACvD;EAAE,MAAM;EAAoB,MAAM;CAAmB;CACrD;EAAE,MAAM;EAAgB,MAAM;CAAS;CACvC;EAAE,MAAM;EAAkB,MAAM;CAAS;AAC3C;AAEA,MAAa,gCAAgC,CAC3C;CAAE,MAAM;CAAM,MAAM;AAAS,GAC7B;CAAE,MAAM;CAAQ,MAAM;AAAS,CACjC;AAEA,MAAa,0BAA0B,CACrC;CAAE,MAAM;CAAO,MAAM;AAAS,GAC9B;CAAE,MAAM;CAAM,MAAM;AAAS,CAC/B;AAEA,MAAa,cAAc,CACzB;CAAE,MAAM;CAAM,MAAM;AAAS,GAC7B;CAAE,MAAM;CAAmB,MAAM;AAAS,CAC5C;AAEA,MAAa,mBAAmB;CAC9B,cAAc;CACd,sBAAsB;CACtB,kBAAkB;CAClB,mBAAmB;CACnB,QAAQ;AACV"}
|
package/dist/crypto.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import { a as JwkKeyPair, i as JsonWebKeyPairStorage, n as IConnectCrypto, r as IRenownCrypto, t as DID } from "./types-
|
|
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-
|
|
3
|
-
export { BrowserKeyStorage, ConnectCrypto, DID, IConnectCrypto, IRenownCrypto, JsonWebKeyPairStorage, JwkKeyPair, MemoryKeyStorage, RenownCrypto, RenownCryptoBuilder, RenownCryptoSigner, createSignatureVerifier, extractResultingHashFromSignature, parseSignatureHashField, signatureHasResultingHash };
|
|
1
|
+
import { a as JwkKeyPair, i as JsonWebKeyPairStorage, n as IConnectCrypto, r as IRenownCrypto, t as DID } from "./types-DOTk0z2D.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-CGTiUojp.js";
|
|
3
|
+
export { BrowserKeyStorage, ConnectCrypto, type DID, type IConnectCrypto, type IRenownCrypto, type JsonWebKeyPairStorage, type JwkKeyPair, MemoryKeyStorage, RenownCrypto, RenownCryptoBuilder, RenownCryptoSigner, createSignatureVerifier, extractResultingHashFromSignature, parseSignatureHashField, signatureHasResultingHash };
|
|
4
|
+
export {};
|
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-
|
|
2
|
-
import { t as BrowserKeyStorage } from "./browser-key-storage-
|
|
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-GzTlZLjR.js";
|
|
2
|
+
import { t as BrowserKeyStorage } from "./browser-key-storage-wjSwTnhs.js";
|
|
3
3
|
export { BrowserKeyStorage, ConnectCrypto, MemoryKeyStorage, RenownCrypto, RenownCryptoBuilder, RenownCryptoSigner, createSignatureVerifier, extractResultingHashFromSignature, parseSignatureHashField, signatureHasResultingHash };
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { a as JwkKeyPair, i as JsonWebKeyPairStorage, l as CreateBearerTokenOptions, r as IRenownCrypto, t as DID, w as Issuer } from "./types-
|
|
1
|
+
import { a as JwkKeyPair, i as JsonWebKeyPairStorage, l as CreateBearerTokenOptions, r as IRenownCrypto, t as DID, w as Issuer } from "./types-DOTk0z2D.js";
|
|
2
2
|
import { Action, ActionSigningTarget, AppActionSigner, ISigner, Signature, SignatureVerificationHandler, UserActionSigner } from "@powerhousedao/shared/document-model";
|
|
3
|
-
|
|
4
3
|
//#region src/crypto/renown-crypto.d.ts
|
|
5
4
|
declare class RenownCrypto implements IRenownCrypto {
|
|
6
5
|
#private;
|
|
@@ -119,4 +118,5 @@ declare class BrowserKeyStorage implements JsonWebKeyPairStorage {
|
|
|
119
118
|
}
|
|
120
119
|
//#endregion
|
|
121
120
|
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 };
|
|
122
|
-
|
|
121
|
+
export {};
|
|
122
|
+
//# sourceMappingURL=index-CGTiUojp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-CGTiUojp.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":";;;cAUa,wBAAwB;;WAK1B,KAAK;;WAEL;SAEF,WAAS;SACT;;;;;EAEP,YACE,gBAAgB,uBAChB,QAAQ,cACR,SAAS,eACT,KAAK,KACL;MASE,aAAS;EAIP,eACJ,6BACA,UAAU,2BACT;EAUG,aAAa;EAQb,KAAK,MAAM,sBAAsB,QAAQ;EAazC,OAAO,MAAM,YAAY,WAAW,aAAa;MASnD,UAAU;;;;;cAiBH,sBAAsB;;;cC3FtB;;UACH;UACA;UACA;EAER,mBAAmB,SAAS;EAK5B,iBAAiB,QAAQ;EAOzB,YAAY;EAKN,SAAS,QAAQ;;;;cC7BZ,4BAA4B;UAC/B;EAER,YAAY,UAAU;EAItB,eAAW,QAAA;EAIX,YAAY,SAAS,aAAU;EAK/B,iBAAa;;;;cCIF,8BAA8B;mBAItB;mBACA;EACV,OAAO;WALP,KAAK;EAEd,YACmB,QAAQ,eACR,iBACV,OAAO;MAQZ,aAAS;EAIP,KAAK,MAAM,aAAa,QAAQ;EAIhC,OAAO,MAAM,YAAY,WAAW,aAAa;EAOjD,WACJ,QAAQ,QACR,QAAQ,qBACR,cAAc,cACb,QAAQ;;;;;EASL,6BACJ,QAAQ,QACR,QAAQ,qBACR,4BACA,cAAc,cACb,QAAQ;;;;;EAUL,iBACJ,QAAQ,QACR,cAAc,cACb,QAAQ;UAqBG;UAyBA;UAYN;UASA;UAQA;;;;;;iBAcM,wBACd,6BACC;;;;;;;;;;;iBAgNa,wBAAwB;EACtC;EACA;;;;;;;;iBAuBc,kCACd,WAAW;;;;;;;iBAaG,0BAA0B,WAAW;;;cC9ZxC,6BAA6B;;EAGxC,YAAY,IAAI;SAIH,OACX,kBACC,QAAQ;EA4CL,YAAY,SAAS,aAAU;EAS/B,eAAe,QAAQ;EAavB,iBAAiB"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { A as LoginStatus, B as Service, C as InternalUser, Ct as DEFAULT_RENOWN_URL, D as JWTVerifyPolicies, Dt as RENOWN_SESSION_COOKIE, E as JWTVerified, Et as RENOWN_READ_MODEL_SUBGRAPH, F as RenownEventEmitter, G as User, H as SignInParams, I as RenownEvents, J as VerificationMethod, K as UserActionSigner, L as RenownProfile, M as PowerhouseVerifiableCredential, N as ProfileFetcher, O as JsonWebKey, Ot as VERIFIABLE_CREDENTIAL_EIP712_TYPE, P as Proof, Q as BaseStorage, R as RenownStorage, S as IVerifiableCredential, St as DEFAULT_RENOWN_NETWORK_ID, T as JWTPayload, Tt as ISSUER_TYPE, U as Signer, V as ServiceEndpoint, W as Unsubscribe, X as VerifiedJWT, Y as VerifiedCredential, Z as W3CCredential, _ as IPowerhouseCredentialSubject, _t as SwitchboardSource, a as JwkKeyPair, at as SignCredentialTypedData, b as IRenown, bt as CREDENTIAL_TYPES, c as ConditionWeightedThreshold, ct as buildAndSignCredential, d as DIDDocument, dt as verifyAuthCredential, et as IEventEmitter, f as DIDDocumentMetadata, ft as verifyCredentialSignature, g as IAuthCredentialSubject, gt as SwitchboardRequestFn, h as EcdsaSignature, ht as SwitchboardClient, i as JsonWebKeyPairStorage, it as FetchDelegationCredentialOptions, j as PKHDid, k as KeyCapabilitySection, l as CreateBearerTokenOptions, lt as fetchDelegationCredential, m as DIDResolutionResult, mt as MissingSwitchboardError, n as IConnectCrypto, nt as CredentialDomain, o as AuthVerifiableCredential, ot as VerifiedAuthCredential, p as DIDResolutionMetadata, pt as verifyDelegationProof, q as Verifiable, r as IRenownCrypto, rt as CredentialMessage, s as AuthVerifiedCredential, st as VerifyAuthCredentialOptions, t as DID, tt as BuildCredentialParams, u as CredentialStatus, ut as recoverCredentialSigner, v as IPowerhouseIssuerType, vt as CREDENTIAL_SCHEMA_EIP712_TYPE, w as Issuer, wt as DOMAIN_TYPE, x as ISigner, xt as DEFAULT_RENOWN_CHAIN_ID, y as IProof, yt as CREDENTIAL_SUBJECT_TYPE, z as RenownStorageMap } from "./types-
|
|
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-
|
|
3
|
-
import { C as RenownMemoryStorage, S as Renown, _ as CredentialCheck, a as getResolver, b as BaseRenownBuilder, d as RenownSessionProfile, g as fetchRenownProfile, i as createAuthBearerToken, n as VerifyAuthBearerTokenOptions, o as parsePkhDid, r as assertIsAuthCredential, s as verifyAuthBearerToken, t as ILogger, u as RenownSessionCookie, v as LocalCredentialVerifierOptions, x as RenownBuilderOptions, y as createLocalCredentialVerifier } from "./utils-
|
|
4
|
-
import { a as ResolveSwitchboardEndpointOptions, i as createRenownTrustPolicy, n as RenownTrustPolicy, o as resolveSwitchboardEndpoint, r as RenownTrustPolicyOptions, t as RenownOwnSigner } from "./signer-trust-
|
|
5
|
-
|
|
1
|
+
import { A as LoginStatus, B as Service, C as InternalUser, Ct as DEFAULT_RENOWN_URL, D as JWTVerifyPolicies, Dt as RENOWN_SESSION_COOKIE, E as JWTVerified, Et as RENOWN_READ_MODEL_SUBGRAPH, F as RenownEventEmitter, G as User, H as SignInParams, I as RenownEvents, J as VerificationMethod, K as UserActionSigner, L as RenownProfile, M as PowerhouseVerifiableCredential, N as ProfileFetcher, O as JsonWebKey, Ot as VERIFIABLE_CREDENTIAL_EIP712_TYPE, P as Proof, Q as BaseStorage, R as RenownStorage, S as IVerifiableCredential, St as DEFAULT_RENOWN_NETWORK_ID, T as JWTPayload, Tt as ISSUER_TYPE, U as Signer, V as ServiceEndpoint, W as Unsubscribe, X as VerifiedJWT, Y as VerifiedCredential, Z as W3CCredential, _ as IPowerhouseCredentialSubject, _t as SwitchboardSource, a as JwkKeyPair, at as SignCredentialTypedData, b as IRenown, bt as CREDENTIAL_TYPES, c as ConditionWeightedThreshold, ct as buildAndSignCredential, d as DIDDocument, dt as verifyAuthCredential, et as IEventEmitter, f as DIDDocumentMetadata, ft as verifyCredentialSignature, g as IAuthCredentialSubject, gt as SwitchboardRequestFn, h as EcdsaSignature, ht as SwitchboardClient, i as JsonWebKeyPairStorage, it as FetchDelegationCredentialOptions, j as PKHDid, k as KeyCapabilitySection, l as CreateBearerTokenOptions, lt as fetchDelegationCredential, m as DIDResolutionResult, mt as MissingSwitchboardError, n as IConnectCrypto, nt as CredentialDomain, o as AuthVerifiableCredential, ot as VerifiedAuthCredential, p as DIDResolutionMetadata, pt as verifyDelegationProof, q as Verifiable, r as IRenownCrypto, rt as CredentialMessage, s as AuthVerifiedCredential, st as VerifyAuthCredentialOptions, t as DID, tt as BuildCredentialParams, u as CredentialStatus, ut as recoverCredentialSigner, v as IPowerhouseIssuerType, vt as CREDENTIAL_SCHEMA_EIP712_TYPE, w as Issuer, wt as DOMAIN_TYPE, x as ISigner, xt as DEFAULT_RENOWN_CHAIN_ID, y as IProof, yt as CREDENTIAL_SUBJECT_TYPE, z as RenownStorageMap } from "./types-DOTk0z2D.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-CGTiUojp.js";
|
|
3
|
+
import { C as RenownMemoryStorage, S as Renown, _ as CredentialCheck, a as getResolver, b as BaseRenownBuilder, d as RenownSessionProfile, g as fetchRenownProfile, i as createAuthBearerToken, n as VerifyAuthBearerTokenOptions, o as parsePkhDid, r as assertIsAuthCredential, s as verifyAuthBearerToken, t as ILogger, u as RenownSessionCookie, v as LocalCredentialVerifierOptions, x as RenownBuilderOptions, y as createLocalCredentialVerifier } from "./utils-C_2VV8CS.js";
|
|
4
|
+
import { a as ResolveSwitchboardEndpointOptions, i as createRenownTrustPolicy, n as RenownTrustPolicy, o as resolveSwitchboardEndpoint, r as RenownTrustPolicyOptions, t as RenownOwnSigner } from "./signer-trust-DstQutcf.js";
|
|
6
5
|
//#region src/event/event.browser.d.ts
|
|
7
6
|
declare class BrowserEventEmitter<Events extends Record<string, unknown>> implements IEventEmitter<Events> {
|
|
8
7
|
#private;
|
|
@@ -21,10 +20,10 @@ declare class BrowserStorage<T extends Record<string, unknown> = Record<string,
|
|
|
21
20
|
}
|
|
22
21
|
//#endregion
|
|
23
22
|
//#region src/init.browser.d.ts
|
|
24
|
-
declare class BrowserRenownStorage extends BrowserStorage<RenownStorageMap> {}
|
|
25
|
-
declare class BrowserRenownEventEmitter extends BrowserEventEmitter<RenownEvents> {}
|
|
26
|
-
declare function readPersistedUser(basename?: string): User | undefined;
|
|
27
|
-
interface BrowserRenownBuilderOptions {
|
|
23
|
+
export declare class BrowserRenownStorage extends BrowserStorage<RenownStorageMap> {}
|
|
24
|
+
export declare class BrowserRenownEventEmitter extends BrowserEventEmitter<RenownEvents> {}
|
|
25
|
+
export declare function readPersistedUser(basename?: string): User | undefined;
|
|
26
|
+
export interface BrowserRenownBuilderOptions {
|
|
28
27
|
/** Base path for storage keys (e.g., "/app" for multi-tenant apps) */
|
|
29
28
|
basename?: string;
|
|
30
29
|
/** Renown server URL. Defaults to https://www.renown.id */
|
|
@@ -42,7 +41,7 @@ interface BrowserRenownBuilderOptions {
|
|
|
42
41
|
* Browser-specific Renown builder with pre-configured defaults.
|
|
43
42
|
* Uses localStorage for user data and IndexedDB for key storage.
|
|
44
43
|
*/
|
|
45
|
-
declare class RenownBuilder extends BaseRenownBuilder {
|
|
44
|
+
export declare class RenownBuilder extends BaseRenownBuilder {
|
|
46
45
|
#private;
|
|
47
46
|
constructor(appName: string, options?: BrowserRenownBuilderOptions);
|
|
48
47
|
/**
|
|
@@ -67,7 +66,8 @@ declare class RenownBuilder extends BaseRenownBuilder {
|
|
|
67
66
|
* @param options - Browser-specific configuration options
|
|
68
67
|
* @returns Initialized Renown instance
|
|
69
68
|
*/
|
|
70
|
-
declare function initRenown(appName: string, options?: BrowserRenownBuilderOptions): Promise<Renown>;
|
|
69
|
+
export declare function initRenown(appName: string, options?: BrowserRenownBuilderOptions): Promise<Renown>;
|
|
71
70
|
//#endregion
|
|
72
|
-
export { AuthVerifiableCredential, AuthVerifiedCredential, BaseRenownBuilder, BrowserKeyStorage,
|
|
71
|
+
export { AuthVerifiableCredential, AuthVerifiedCredential, BaseRenownBuilder, BrowserKeyStorage, BuildCredentialParams, CREDENTIAL_SCHEMA_EIP712_TYPE, CREDENTIAL_SUBJECT_TYPE, CREDENTIAL_TYPES, ConditionWeightedThreshold, ConnectCrypto, CreateBearerTokenOptions, CredentialCheck, CredentialDomain, CredentialMessage, CredentialStatus, DEFAULT_RENOWN_CHAIN_ID, DEFAULT_RENOWN_NETWORK_ID, DEFAULT_RENOWN_URL, type DID, DIDDocument, DIDDocumentMetadata, DIDResolutionMetadata, DIDResolutionResult, DOMAIN_TYPE, EcdsaSignature, FetchDelegationCredentialOptions, IAuthCredentialSubject, type IConnectCrypto, ILogger, IPowerhouseCredentialSubject, IPowerhouseIssuerType, IProof, IRenown, type IRenownCrypto, ISSUER_TYPE, type ISigner, IVerifiableCredential, InternalUser, Issuer, JWTPayload, JWTVerified, JWTVerifyPolicies, JsonWebKey, type JsonWebKeyPairStorage, type JwkKeyPair, KeyCapabilitySection, LocalCredentialVerifierOptions, LoginStatus, MemoryKeyStorage, MissingSwitchboardError, PKHDid, PowerhouseVerifiableCredential, ProfileFetcher, Proof, RENOWN_READ_MODEL_SUBGRAPH, RENOWN_SESSION_COOKIE, Renown, RenownBuilderOptions, RenownCrypto, RenownCryptoBuilder, RenownCryptoSigner, RenownEventEmitter, RenownEvents, RenownMemoryStorage, RenownOwnSigner, RenownProfile, type RenownSessionCookie, type RenownSessionProfile, RenownStorage, RenownStorageMap, RenownTrustPolicy, RenownTrustPolicyOptions, ResolveSwitchboardEndpointOptions, Service, ServiceEndpoint, SignCredentialTypedData, SignInParams, Signer, SwitchboardClient, SwitchboardRequestFn, SwitchboardSource, Unsubscribe, User, type UserActionSigner, VERIFIABLE_CREDENTIAL_EIP712_TYPE, Verifiable, VerificationMethod, VerifiedAuthCredential, VerifiedCredential, VerifiedJWT, VerifyAuthBearerTokenOptions, VerifyAuthCredentialOptions, W3CCredential, assertIsAuthCredential, buildAndSignCredential, createAuthBearerToken, createLocalCredentialVerifier, createRenownTrustPolicy, createSignatureVerifier, extractResultingHashFromSignature, fetchDelegationCredential, fetchRenownProfile, getResolver, parsePkhDid, parseSignatureHashField, recoverCredentialSigner, resolveSwitchboardEndpoint, signatureHasResultingHash, verifyAuthBearerToken, verifyAuthCredential, verifyCredentialSignature, verifyDelegationProof };
|
|
72
|
+
export {};
|
|
73
73
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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":"
|
|
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,oBACX,eAAe,oCACJ,cAAc;;EAGzB,GAAG,gBAAgB,QACjB,OAAO,GACP,WAAW,MAAM,OAAO;EAc1B,KAAK,gBAAgB,QAAQ,OAAO,GAAG,MAAM,OAAO;;;;cC3BzC,eACX,UAAU,0BAA0B,iCAC5B,YAAY;;mBACH;EAEjB,YAAY,mBAAmB;EAQ/B,IAAI,kBAAkB,GAAG,KAAK,MAAM,EAAE;EAQtC,IAAI,kBAAkB,GAAG,KAAK,KAAK,QAAQ,EAAE;EAM7C,OAAO,WAAW;;;;qBCtBP,6BAA6B,eAAe;qBAC5C,kCAAkC,oBAAoB;wBAInD,kBAAkB,oBAAoB;iBASrC;;EAEf;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;;;;;qBAOW,sBAAsB;;EAKjC,YAAY,iBAAiB,UAAS;;;;EAqBtC,aAAa;;;;;EAUb,cAAc;;;;;EASR,SAAS,QAAQ;;;;;;;;;wBAwBT,WACd,iBACA,UAAS,8BAAgC,QAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { a as DEFAULT_RENOWN_NETWORK_ID, c as ISSUER_TYPE, d as VERIFIABLE_CREDENTIAL_EIP712_TYPE, i as DEFAULT_RENOWN_CHAIN_ID, l as RENOWN_READ_MODEL_SUBGRAPH, n as CREDENTIAL_SUBJECT_TYPE, o as DEFAULT_RENOWN_URL, r as CREDENTIAL_TYPES, s as DOMAIN_TYPE, t as CREDENTIAL_SCHEMA_EIP712_TYPE, u as RENOWN_SESSION_COOKIE } from "./constants-
|
|
2
|
-
import { a as verifyAuthCredential, c as MissingSwitchboardError, i as recoverCredentialSigner, l as SwitchboardClient, n as buildAndSignCredential, o as verifyCredentialSignature, r as fetchDelegationCredential, s as verifyDelegationProof, t as createRenownTrustPolicy, u as resolveSwitchboardEndpoint } from "./signer-trust-
|
|
3
|
-
import { a as verifyAuthBearerToken, i as parsePkhDid, n as createAuthBearerToken, r as getResolver, t as assertIsAuthCredential } from "./utils-
|
|
4
|
-
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-
|
|
5
|
-
import { t as BrowserKeyStorage } from "./browser-key-storage-
|
|
6
|
-
import { a as RenownMemoryStorage, i as Renown, n as BaseRenownBuilder, o as BaseStorage, r as fetchRenownProfile, t as createLocalCredentialVerifier } from "./local-credential-verifier-
|
|
1
|
+
import { a as DEFAULT_RENOWN_NETWORK_ID, c as ISSUER_TYPE, d as VERIFIABLE_CREDENTIAL_EIP712_TYPE, i as DEFAULT_RENOWN_CHAIN_ID, l as RENOWN_READ_MODEL_SUBGRAPH, n as CREDENTIAL_SUBJECT_TYPE, o as DEFAULT_RENOWN_URL, r as CREDENTIAL_TYPES, s as DOMAIN_TYPE, t as CREDENTIAL_SCHEMA_EIP712_TYPE, u as RENOWN_SESSION_COOKIE } from "./constants-DVOF17NB.js";
|
|
2
|
+
import { a as verifyAuthCredential, c as MissingSwitchboardError, i as recoverCredentialSigner, l as SwitchboardClient, n as buildAndSignCredential, o as verifyCredentialSignature, r as fetchDelegationCredential, s as verifyDelegationProof, t as createRenownTrustPolicy, u as resolveSwitchboardEndpoint } from "./signer-trust-C6UJAsNJ.js";
|
|
3
|
+
import { a as verifyAuthBearerToken, i as parsePkhDid, n as createAuthBearerToken, r as getResolver, t as assertIsAuthCredential } from "./utils-DLQ5VVqT.js";
|
|
4
|
+
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-GzTlZLjR.js";
|
|
5
|
+
import { t as BrowserKeyStorage } from "./browser-key-storage-wjSwTnhs.js";
|
|
6
|
+
import { a as RenownMemoryStorage, i as Renown, n as BaseRenownBuilder, o as BaseStorage, r as fetchRenownProfile, t as createLocalCredentialVerifier } from "./local-credential-verifier-BC4HS01T.js";
|
|
7
7
|
//#region src/event/event.browser.ts
|
|
8
8
|
var TypedCustomEvent = class extends CustomEvent {
|
|
9
9
|
constructor(type, detail) {
|
|
@@ -103,8 +103,10 @@ var RenownBuilder = class extends BaseRenownBuilder {
|
|
|
103
103
|
const keyStorage = await BrowserKeyStorage.create(this.#keyDbName);
|
|
104
104
|
this.withKeyPairStorage(keyStorage);
|
|
105
105
|
const renown = await super.build();
|
|
106
|
-
if (renown.user)
|
|
107
|
-
|
|
106
|
+
if (renown.user) {
|
|
107
|
+
if (this.#revalidate === "always") renown.revalidate();
|
|
108
|
+
else renown.refreshProfile();
|
|
109
|
+
}
|
|
108
110
|
return renown;
|
|
109
111
|
}
|
|
110
112
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"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 /** Chain id credentials are issued on (default 1). It is part of the issuer DID, so `signIn` rejects a session from another chain. */\n chainId?: number;\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 if (options.chainId !== undefined) {\n this.withChainId(options.chainId);\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 // Refresh in the background, never blocking the paint. Only the credential\n // check can log a user out, so it stays gated; the profile refresh always runs.\n if (renown.user) {\n if (this.#revalidate === \"always\") {\n void renown.revalidate();\n } else {\n void renown.refreshProfile();\n }\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;EACpC,MAAM,MAAM,EAAE,OAAO,CAAC;CACxB;AACF;AAEA,IAAa,sBAAb,MAEmC;CACjC,eAAe,IAAI,YAAY;CAE/B,GACE,OACA,UACY;EACZ,MAAM,mBAAmB,MAAa;GACpC,IAAI,aAAa,kBACf,SAAS,EAAE,MAAmB;EAElC;EAEA,KAAK,aAAa,iBAAiB,MAAM,SAAS,GAAG,eAAe;EACpE,aAAa;GACX,KAAK,aAAa,oBAAoB,MAAM,SAAS,GAAG,eAAe;EACzE;CACF;CAEA,KAA6B,OAAU,MAAuB;EAC5D,MAAM,cAAc,IAAI,iBAAiB,MAAM,SAAS,GAAG,IAAI;EAC/D,KAAK,aAAa,cAAc,WAAW;CAC7C;AACF;;;AC/BA,IAAa,iBAAb,cAEU,YAAe;CACvB;CAEA,YAAY,WAAmB,UAA8B;EAC3D,MAAM;EACN,KAAK,YAAY,GAAG,SAAS,GAAG;CAClC;CAEA,UAAU,KAAsB;EAC9B,OAAO,GAAG,KAAK,UAAU,GAAG,IAAI,SAAS;CAC3C;CACA,IAAyB,KAA8B;EACrD,MAAM,QAAQ,aAAa,QAAQ,KAAK,UAAU,GAAG,CAAC;EACtD,IAAI,OACF,OAAO,KAAK,MAAM,KAAK;CAG3B;CAEA,IAAyB,KAAU,OAAsB;EACvD,OAAO,QACH,aAAa,QAAQ,KAAK,UAAU,GAAG,GAAG,KAAK,UAAU,KAAK,CAAC,IAC/D,aAAa,WAAW,KAAK,UAAU,GAAG,CAAC;CACjD;CAEA,OAAO,KAAoB;EACzB,OAAO,aAAa,WAAW,KAAK,UAAU,GAAG,CAAC;CACpD;AACF;;;ACzBA,IAAa,uBAAb,cAA0C,eAAiC,CAAC;AAC5E,IAAa,4BAAb,cAA+C,oBAAkC,CAAC;AAIlF,SAAgB,kBAAkB,UAAqC;CACrE,IAAI,OAAO,iBAAiB,aAAa,OAAO,KAAA;CAChD,IAAI;EACF,OAAO,IAAI,eAAiC,UAAU,QAAQ,CAAC,CAAC,IAAI,MAAM;CAC5E,QAAQ;EACN;CACF;AACF;;;;;AAqBA,IAAa,gBAAb,cAAmC,kBAAkB;CACnD;CACA;CACA;CAEA,YAAY,SAAiB,UAAuC,CAAC,GAAG;EACtE,MAAM,OAAO;EACb,KAAK,YAAY,QAAQ;EACzB,KAAK,aAAa,QAAQ;EAC1B,KAAK,cAAc,QAAQ,cAAc;EACzC,KAAK,YAAY,IAAI,qBAAqB,UAAU,KAAK,SAAS,CAAC;EACnE,KAAK,iBAAiB,IAAI,0BAA0B,CAAC;EACrD,IAAI,QAAQ,SACV,KAAK,YAAY,QAAQ,OAAO;EAElC,IAAI,QAAQ,gBACV,KAAK,mBAAmB,QAAQ,cAAc;EAEhD,IAAI,QAAQ,YAAY,KAAA,GACtB,KAAK,YAAY,QAAQ,OAAO;CAEpC;;;;CAKA,aAAa,UAAwB;EACnC,KAAK,YAAY;EACjB,KAAK,YAAY,IAAI,qBAAqB,UAAU,KAAK,SAAS,CAAC;EACnE,OAAO;CACT;;;;;CAMA,cAAc,WAAyB;EACrC,KAAK,aAAa;EAClB,OAAO;CACT;;;;;CAMA,MAAM,QAAyB;EAC7B,MAAM,aAAa,MAAM,kBAAkB,OAAO,KAAK,UAAU;EACjE,KAAK,mBAAmB,UAAU;EAClC,MAAM,SAAS,MAAM,MAAM,MAAM;EAGjC,IAAI,OAAO,MAAM;GACf,IAAI,KAAK,gBAAgB,UACvB,OAAY,WAAW;QAEvB,OAAY,eAAe;EAE/B;EACA,OAAO;CACT;AACF;;;;;;;;AASA,SAAgB,WACd,SACA,UAAuC,CAAC,GACxC;CACA,OAAO,IAAI,cAAc,SAAS,OAAO,CAAC,CAAC,MAAM;AACnD"}
|
package/dist/{local-credential-verifier-2aC00ymX.js → local-credential-verifier-BC4HS01T.js}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { a as DEFAULT_RENOWN_NETWORK_ID, o as DEFAULT_RENOWN_URL, r as CREDENTIAL_TYPES } from "./constants-
|
|
2
|
-
import { c as MissingSwitchboardError, l as SwitchboardClient, n as buildAndSignCredential, o as verifyCredentialSignature, r as fetchDelegationCredential, u as resolveSwitchboardEndpoint } from "./signer-trust-
|
|
3
|
-
import { a as verifyAuthBearerToken, i as parsePkhDid } from "./utils-
|
|
4
|
-
import { s as RenownCryptoBuilder, t as RenownCryptoSigner } from "./signer-
|
|
1
|
+
import { a as DEFAULT_RENOWN_NETWORK_ID, o as DEFAULT_RENOWN_URL, r as CREDENTIAL_TYPES } from "./constants-DVOF17NB.js";
|
|
2
|
+
import { c as MissingSwitchboardError, l as SwitchboardClient, n as buildAndSignCredential, o as verifyCredentialSignature, r as fetchDelegationCredential, u as resolveSwitchboardEndpoint } from "./signer-trust-C6UJAsNJ.js";
|
|
3
|
+
import { a as verifyAuthBearerToken, i as parsePkhDid } from "./utils-DLQ5VVqT.js";
|
|
4
|
+
import { s as RenownCryptoBuilder, t as RenownCryptoSigner } from "./signer-GzTlZLjR.js";
|
|
5
5
|
//#region src/storage/common.ts
|
|
6
6
|
var BaseStorage = class {};
|
|
7
7
|
var MemoryStorage = class extends BaseStorage {
|
|
@@ -426,4 +426,4 @@ function createLocalCredentialVerifier(execute, options = {}) {
|
|
|
426
426
|
//#endregion
|
|
427
427
|
export { RenownMemoryStorage as a, Renown as i, BaseRenownBuilder as n, BaseStorage as o, fetchRenownProfile as r, createLocalCredentialVerifier as t };
|
|
428
428
|
|
|
429
|
-
//# sourceMappingURL=local-credential-verifier-
|
|
429
|
+
//# sourceMappingURL=local-credential-verifier-BC4HS01T.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-credential-verifier-BC4HS01T.js","names":[],"sources":["../src/storage/common.ts","../src/common.ts","../src/event/memory.ts","../src/profile.ts","../src/renown-builder.ts","../src/local-credential-verifier.ts"],"sourcesContent":["export interface IStorage<\n T extends Record<string, unknown> = Record<string, unknown>,\n Key extends keyof T = keyof T,\n> {\n get(key: Key): T[Key] | undefined;\n set(key: Key, value?: T[Key]): void;\n delete(key: Key): void;\n}\n\nexport abstract class BaseStorage<\n T extends Record<string, unknown> = Record<string, unknown>,\n Key extends keyof T = keyof T,\n> implements IStorage<T> {\n abstract get(key: Key): T[Key] | undefined;\n abstract set(key: Key, value?: T[Key]): void;\n abstract delete(key: Key): void;\n}\n\nexport class MemoryStorage<\n T extends Record<string, unknown> = Record<string, unknown>,\n Key extends keyof T = keyof T,\n> extends BaseStorage<T> {\n private readonly data = new Map<Key, T[Key]>();\n\n get(key: Key) {\n return this.data.get(key);\n }\n\n set(key: Key, value?: T[Key]): void {\n if (value === undefined) {\n this.data.delete(key);\n } else {\n this.data.set(key, value);\n }\n }\n\n delete(key: Key): void {\n this.data.delete(key);\n }\n}\n","import {\n CREDENTIAL_TYPES,\n DEFAULT_RENOWN_CHAIN_ID,\n DEFAULT_RENOWN_NETWORK_ID,\n DEFAULT_RENOWN_URL,\n} from \"./constants.js\";\nimport {\n buildAndSignCredential,\n verifyCredentialSignature,\n} from \"./credential.js\";\nimport { RenownCryptoSigner, type IRenownCrypto } from \"./crypto/index.js\";\nimport { MemoryStorage } from \"./storage/common.js\";\nimport {\n MissingSwitchboardError,\n type SwitchboardClient,\n} from \"./switchboard.js\";\nimport type {\n CreateBearerTokenOptions,\n IProof,\n IRenown,\n ISigner,\n LoginStatus,\n PKHDid,\n PowerhouseVerifiableCredential,\n ProfileFetcher,\n RenownEventEmitter,\n RenownEvents,\n RenownStorage,\n RenownStorageMap,\n SignInParams,\n User,\n UserActionSigner,\n} from \"./types.js\";\nimport { parsePkhDid, verifyAuthBearerToken } from \"./utils.js\";\nexport * from \"./constants.js\";\n\nexport class RenownMemoryStorage extends MemoryStorage<RenownStorageMap> {}\n\n/**\n * The acting identity an action's signature carries.\n *\n * `User` here is the whole session record — it also holds the DID, the\n * credential, the fetched profile and ENS info — while `UserActionSigner` is\n * what travels on a signed action, and it is deliberately just an address on a\n * chain. The reactor's `ReactorSignerUserInput` declares exactly these three\n * fields, and a GraphQL input object refuses a field it does not declare by\n * rejecting the WHOLE request, so handing the session record to the signer\n * makes every signed push fail before it reaches the reactor.\n *\n * Narrowed here rather than at the transport, because the session record has no\n * business being on an operation in the first place: it is stored on every\n * operation a local reactor writes, not only on the ones that go over a wire.\n *\n * The compiler cannot catch the difference — excess-property checks apply to\n * fresh object literals, never to a variable of a wider type — which is why\n * this is a function rather than a type annotation.\n */\nfunction toActionSigner(user: User | undefined): UserActionSigner | undefined {\n if (!user) return undefined;\n return {\n address: user.address,\n networkId: user.networkId,\n chainId: user.chainId,\n };\n}\n\nexport class Renown implements IRenown {\n #baseUrl: string;\n #store: RenownStorage;\n #eventEmitter: RenownEventEmitter;\n #appName: string;\n #crypto: IRenownCrypto;\n #signer: ISigner;\n #profileFetcher?: ProfileFetcher;\n #switchboard?: SwitchboardClient;\n #chainId: number;\n #status: LoginStatus = \"initial\";\n\n constructor(\n store: RenownStorage,\n eventEmitter: RenownEventEmitter,\n crypto: IRenownCrypto,\n appName: string,\n baseUrl = DEFAULT_RENOWN_URL,\n profileFetcher?: ProfileFetcher,\n switchboard?: SwitchboardClient,\n chainId = Number(DEFAULT_RENOWN_CHAIN_ID),\n ) {\n this.#store = store;\n this.#eventEmitter = eventEmitter;\n this.#baseUrl = baseUrl;\n this.#crypto = crypto;\n this.#appName = appName;\n this.#profileFetcher = profileFetcher;\n this.#switchboard = switchboard;\n this.#chainId = chainId;\n const restoredUser = this.user;\n this.#signer = new RenownCryptoSigner(\n crypto,\n this.#appName,\n toActionSigner(restoredUser),\n );\n\n // A restored, previously-verified user is an authorized session; otherwise\n // status stays \"initial\" after a reload while the user is present.\n if (restoredUser) {\n this.#status = \"authorized\";\n }\n\n this.on(\"user\", (user) => {\n this.#signer.user = toActionSigner(user);\n });\n }\n\n get baseUrl() {\n return this.#baseUrl;\n }\n\n /** Chain id this app issues credentials on; a session from another chain is rejected by {@link signIn}. */\n get chainId() {\n return this.#chainId;\n }\n\n get user() {\n return this.#store.get(\"user\");\n }\n\n get status() {\n return this.#status;\n }\n\n get signer() {\n return this.#signer;\n }\n\n get crypto() {\n return this.#crypto;\n }\n\n get did() {\n return this.#crypto.did;\n }\n\n get profileFetcher() {\n return this.#profileFetcher;\n }\n\n #updateStatus(status: LoginStatus) {\n this.#status = status;\n this.#eventEmitter.emit(\"status\", status);\n }\n\n #updateUser(user: User | undefined) {\n if (user) {\n this.#store.set(\"user\", user);\n } else {\n this.#store.delete(\"user\");\n }\n this.#eventEmitter.emit(\"user\", user);\n }\n\n async login(userDid: string): Promise<User> {\n this.#updateStatus(\"checking\");\n try {\n const result = parsePkhDid(userDid);\n const credential = await this.#getCredential(\n result.address,\n result.chainId,\n this.#crypto.did,\n );\n\n if (!credential) {\n this.#updateUser(undefined);\n throw new Error(\"Credential not found\");\n }\n\n return await this.#completeLogin(userDid, result, credential);\n } catch (error) {\n this.#updateUser(undefined);\n this.#updateStatus(\"not-authorized\");\n throw error;\n }\n }\n\n // Sign in without the Renown redirect: build + sign a delegation credential\n // with the caller's wallet signer, write it to the switchboard, then log in.\n async signIn(params: SignInParams): Promise<User> {\n if (!this.#switchboard) throw new MissingSwitchboardError();\n const {\n address,\n chainId,\n signTypedData,\n username,\n userImage,\n expiresInDays,\n } = params;\n\n // The chain id goes into the issuer DID and the EIP-712 domain, so signing on\n // another chain would mint a second identity for the same wallet.\n if (chainId !== this.#chainId) {\n throw new Error(\n `Renown signIn: wallet is on chain ${chainId}, but this app issues credentials on chain ${this.#chainId}. Switch networks and retry — signing here would create a separate identity for the same address.`,\n );\n }\n\n this.#updateStatus(\"checking\");\n try {\n const credential = await buildAndSignCredential({\n signTypedData,\n address,\n chainId,\n app: this.#appName,\n appId: this.did,\n expiresInDays,\n });\n\n await this.#switchboard.issueCredential(credential);\n await this.#switchboard.findOrCreateUser(address, {\n username,\n userImage,\n });\n\n const userDid = `did:pkh:${DEFAULT_RENOWN_NETWORK_ID}:${chainId}:${address.toLowerCase()}`;\n // Authenticate from the freshly signed credential — no read-back, which\n // avoids racing the read-model processor that indexes the write.\n return await this.#completeLogin(\n userDid,\n parsePkhDid(userDid),\n credential,\n );\n } catch (error) {\n this.#updateUser(undefined);\n this.#updateStatus(\"not-authorized\");\n throw error;\n }\n }\n\n // Verify a credential binds to userDid + this app key, set the user, and\n // start the background profile fetch. Throws if the credential is invalid.\n async #completeLogin(\n userDid: string,\n result: PKHDid,\n credential: PowerhouseVerifiableCredential,\n ): Promise<User> {\n if (\n !(\n credential.issuer.id === userDid &&\n credential.credentialSubject.id === this.did\n )\n ) {\n throw new Error(\"Invalid credential\");\n }\n\n // The API may return proof.eip712 without domain/types; the domain is\n // canonical (version \"1\", the chainId), so reconstruct it before verifying.\n const eip712 = credential.proof.eip712 as\n | Partial<IProof[\"eip712\"]>\n | undefined;\n const verifiableCredential: PowerhouseVerifiableCredential = eip712?.domain\n ? credential\n : {\n ...credential,\n proof: {\n ...credential.proof,\n eip712: {\n domain: { version: \"1\", chainId: result.chainId },\n types: CREDENTIAL_TYPES,\n primaryType: \"VerifiableCredential\",\n },\n },\n };\n\n // Verify the EIP-712 proof was signed by the DID's address on its chain.\n if (\n credential.issuer.ethereumAddress.toLowerCase() !==\n result.address.toLowerCase() ||\n verifiableCredential.proof.eip712.domain.chainId !== result.chainId ||\n !(await verifyCredentialSignature(verifiableCredential))\n ) {\n throw new Error(\"Invalid credential signature\");\n }\n\n const user: User = {\n ...result,\n address: credential.issuer.ethereumAddress,\n did: userDid,\n credential: verifiableCredential,\n };\n\n this.#updateUser(user);\n this.#updateStatus(\"authorized\");\n\n // Fetch profile data in the background if a fetcher is configured\n if (this.#profileFetcher) {\n this.#profileFetcher(user, this.#baseUrl)\n .then((profile) => {\n if (\n profile &&\n this.user?.address === user.address &&\n this.user.chainId === user.chainId\n ) {\n this.#updateUser({\n ...this.user,\n profile,\n ens: {\n name: profile.username ?? undefined,\n avatarUrl: profile.userImage ?? undefined,\n },\n });\n }\n })\n .catch(console.error);\n }\n\n return user;\n }\n\n logout() {\n this.#updateUser(undefined);\n this.#updateStatus(\"initial\");\n return Promise.resolve();\n }\n\n // Re-check the current user's credential at the source; logs out if it was\n // revoked or expired. Network errors keep the session (fail open).\n async revalidate(): Promise<boolean> {\n const user = this.user;\n if (!user) return false;\n try {\n const credential = await this.#getCredential(\n user.address,\n user.chainId,\n this.#crypto.did,\n );\n if (!credential) {\n await this.logout();\n return false;\n }\n await this.refreshProfile();\n return true;\n } catch {\n return true;\n }\n }\n\n // Re-read profile attributes at the source so a renamed user or changed avatar\n // shows up on the next load. Carries no logout risk, unlike revalidate().\n async refreshProfile(): Promise<boolean> {\n const user = this.user;\n if (!user || !this.#profileFetcher) return false;\n try {\n const profile = await this.#profileFetcher(user, this.#baseUrl);\n if (!profile) return false;\n // Asserted because narrowing from the pre-await read would otherwise hide\n // that a logout during the fetch can clear this.\n const current = this.user as User | undefined;\n if (\n !current ||\n current.address !== user.address ||\n current.chainId !== user.chainId\n ) {\n return false;\n }\n // Narrow `profile` first: the fetched payload is unvalidated JSON, so a\n // missing documentId must not make the undefined case compare equal.\n const unchanged =\n current.profile !== undefined &&\n current.profile.documentId === profile.documentId &&\n current.profile.username === profile.username &&\n current.profile.userImage === profile.userImage;\n if (unchanged) return false;\n this.#updateUser({\n ...current,\n profile,\n ens: {\n name: profile.username ?? undefined,\n avatarUrl: profile.userImage ?? undefined,\n },\n });\n return true;\n } catch {\n return false;\n }\n }\n\n on<K extends keyof RenownEvents>(\n event: K,\n listener: (data: RenownEvents[K]) => void,\n ): () => void {\n return this.#eventEmitter.on(event, listener);\n }\n\n async #getCredential(\n address: string,\n chainId: number,\n appDid: string,\n ): Promise<PowerhouseVerifiableCredential | undefined> {\n // Direct-switchboard flow: read the credential from the reactor subgraph.\n if (this.#switchboard) {\n return this.#switchboard.getCredential({ address, chainId, appDid });\n }\n if (!this.#baseUrl) {\n throw new Error(\"RENOWN_URL is not set\");\n }\n const url = new URL(\n `/api/auth/credential?address=${encodeURIComponent(address)}&chainId=${encodeURIComponent(chainId)}&connectId=${encodeURIComponent(appDid)}&appId=${encodeURIComponent(appDid)}`,\n this.#baseUrl,\n );\n const response = await fetch(url, {\n method: \"GET\",\n });\n if (response.ok) {\n const result = (await response.json()) as {\n credential: PowerhouseVerifiableCredential;\n };\n return result.credential;\n } else {\n throw new Error(`Failed to get credential: ${response.status}`);\n }\n }\n\n async verifyBearerToken(token: string) {\n return verifyAuthBearerToken(token);\n }\n\n async getBearerToken(options: CreateBearerTokenOptions) {\n if (!this.user) {\n throw new Error(\"User not found\");\n }\n return this.#crypto.getBearerToken(this.user.address, options);\n }\n}\n","import type { RenownEvents } from \"../types.js\";\nimport type { IEventEmitter } from \"./types.js\";\n\nexport class MemoryEventEmitter implements IEventEmitter<RenownEvents> {\n #listeners = new Map<keyof RenownEvents, Set<(data: unknown) => void>>();\n\n on<K extends keyof RenownEvents>(\n event: K,\n listener: (data: RenownEvents[K]) => void,\n ): () => void {\n if (!this.#listeners.has(event)) {\n this.#listeners.set(event, new Set());\n }\n this.#listeners.get(event)!.add(listener as (data: unknown) => void);\n return () => {\n this.#listeners.get(event)?.delete(listener as (data: unknown) => void);\n };\n }\n\n emit<K extends keyof RenownEvents>(event: K, data: RenownEvents[K]): void {\n this.#listeners.get(event)?.forEach((listener) => listener(data));\n }\n}\n","import type { ProfileFetcher, RenownProfile } from \"./types.js\";\n\nexport const fetchRenownProfile: ProfileFetcher = async (user, baseUrl) => {\n try {\n const response = await fetch(`${baseUrl.replace(/\\/+$/, \"\")}/api/profile`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ethAddress: user.address,\n }),\n });\n\n if (!response.ok) {\n return undefined;\n }\n\n const result = (await response.json()) as {\n profile?: RenownProfile;\n };\n\n return result.profile ?? undefined;\n } catch {\n return undefined;\n }\n};\n","import { Renown, RenownMemoryStorage } from \"./common.js\";\nimport { DEFAULT_RENOWN_CHAIN_ID, DEFAULT_RENOWN_URL } from \"./constants.js\";\nimport { RenownCryptoBuilder } from \"./crypto/renown-crypto-builder.js\";\nimport type { IRenownCrypto, JsonWebKeyPairStorage } from \"./crypto/types.js\";\nimport { resolveSwitchboardEndpoint } from \"./discovery.js\";\nimport { MemoryEventEmitter } from \"./event/memory.js\";\nimport { fetchRenownProfile } from \"./profile.js\";\nimport { SwitchboardClient } from \"./switchboard.js\";\nimport type {\n ProfileFetcher,\n RenownEventEmitter,\n RenownStorage,\n} from \"./types.js\";\n\nexport interface RenownBuilderOptions {\n appName: string;\n storage?: RenownStorage;\n eventEmitter?: RenownEventEmitter;\n crypto?: IRenownCrypto;\n keyPairStorage?: JsonWebKeyPairStorage;\n baseUrl?: string;\n switchboardUrl?: string;\n profileFetcher?: ProfileFetcher;\n /** Chain id credentials are issued on (default 1). The issuer DID embeds it, so `signIn` rejects a wallet session from another chain. */\n chainId?: number;\n}\n\n/**\n * Base builder for creating Renown instances.\n * Use platform-specific builders (RenownBuilder from init.browser.js or init.node.js)\n * for pre-configured defaults.\n */\nexport class BaseRenownBuilder {\n #appName: string;\n #storage?: RenownStorage;\n #eventEmitter?: RenownEventEmitter;\n #crypto?: IRenownCrypto;\n #keyPairStorage?: JsonWebKeyPairStorage;\n #baseUrl?: string;\n #switchboardUrl?: string;\n #profileFetcher?: ProfileFetcher;\n #chainId?: number;\n\n /**\n * @param appName - Application name used for signing context\n */\n constructor(appName: string) {\n this.#appName = appName;\n }\n\n /**\n * Set custom storage for user data persistence.\n * Defaults to in-memory storage if not set.\n */\n withStorage(storage: RenownStorage): this {\n this.#storage = storage;\n return this;\n }\n\n /**\n * Set custom event emitter for user state changes.\n * Defaults to in-memory event emitter if not set.\n */\n withEventEmitter(eventEmitter: RenownEventEmitter): this {\n this.#eventEmitter = eventEmitter;\n return this;\n }\n\n /**\n * Set a pre-built crypto instance.\n * Either crypto or keyPairStorage must be provided.\n */\n withCrypto(crypto: IRenownCrypto): this {\n this.#crypto = crypto;\n return this;\n }\n\n /**\n * Set key pair storage for cryptographic keys.\n * A crypto instance will be built from this storage.\n * Either crypto or keyPairStorage must be provided.\n */\n withKeyPairStorage(keyPairStorage: JsonWebKeyPairStorage): this {\n this.#keyPairStorage = keyPairStorage;\n return this;\n }\n\n /**\n * Set the Renown server URL for credential verification.\n * Defaults to https://www.renown.id\n */\n withBaseUrl(baseUrl: string): this {\n this.#baseUrl = baseUrl;\n return this;\n }\n\n // Set the Switchboard GraphQL endpoint to read from the reactor directly.\n // When unset, the SDK discovers it from the base URL, else uses the REST flow.\n withSwitchboardUrl(switchboardUrl: string): this {\n this.#switchboardUrl = switchboardUrl;\n return this;\n }\n\n // Set the chain id credentials are issued on (default 1). It is part of the\n // issuer DID, so signIn rejects a wallet session from a different chain.\n withChainId(chainId: number): this {\n this.#chainId = chainId;\n return this;\n }\n\n /**\n * Set a profile fetcher strategy for enriching user data after login.\n * The fetcher receives the authenticated user and the base URL,\n * and returns a RenownProfile. Called in the background after each login.\n * Defaults to fetchRenownProfile which calls the Renown API.\n */\n withProfileFetcher(profileFetcher: ProfileFetcher): this {\n this.#profileFetcher = profileFetcher;\n return this;\n }\n\n /**\n * Build and initialize the Renown instance.\n * If a user is stored, attempts to re-authenticate them.\n * @throws Error if neither crypto nor keyPairStorage is provided\n */\n async build(): Promise<Renown> {\n if (!this.#crypto && !this.#keyPairStorage) {\n throw new Error(\n \"Either crypto or keyPairStorage is required. Use withCrypto() or withKeyPairStorage() to set one.\",\n );\n }\n\n const chainId = this.#chainId ?? Number(DEFAULT_RENOWN_CHAIN_ID);\n const crypto =\n this.#crypto ??\n (await new RenownCryptoBuilder()\n .withKeyPairStorage(this.#keyPairStorage!)\n .withChainId(chainId)\n .build());\n\n // A crypto supplied via withCrypto() carries its own chain; the bearer token\n // it mints would then disagree with the credentials issued here.\n if (crypto.chainId !== undefined && crypto.chainId !== chainId) {\n console.warn(\n `Renown: the supplied crypto signs bearer tokens for chain ${crypto.chainId}, but credentials are issued on chain ${chainId}.`,\n );\n }\n\n const storage = this.#storage ?? new RenownMemoryStorage();\n const eventEmitter = this.#eventEmitter ?? new MemoryEventEmitter();\n const baseUrl = this.#baseUrl ?? DEFAULT_RENOWN_URL;\n\n // Pick the transport once: direct-switchboard when an endpoint resolves,\n // else the REST flow. A custom profile fetcher always takes precedence.\n const switchboardEndpoint = await resolveSwitchboardEndpoint({\n switchboardUrl: this.#switchboardUrl,\n baseUrl,\n });\n const switchboard = switchboardEndpoint\n ? new SwitchboardClient(switchboardEndpoint)\n : undefined;\n const profileFetcher =\n this.#profileFetcher ??\n (switchboard ? switchboard.profileFetcher : fetchRenownProfile);\n\n const renown = new Renown(\n storage,\n eventEmitter,\n crypto,\n this.#appName,\n baseUrl,\n profileFetcher,\n switchboard,\n chainId,\n );\n\n // A stored user is loaded as-is for an instant, offline-safe start; callers\n // revalidate against the source separately via renown.revalidate().\n return renown;\n }\n\n /**\n * Create a BaseRenownBuilder from options object for a more concise API\n */\n static from(options: RenownBuilderOptions): BaseRenownBuilder {\n const builder = new BaseRenownBuilder(options.appName);\n\n if (options.storage) {\n builder.withStorage(options.storage);\n }\n if (options.eventEmitter) {\n builder.withEventEmitter(options.eventEmitter);\n }\n if (options.crypto) {\n builder.withCrypto(options.crypto);\n }\n if (options.keyPairStorage) {\n builder.withKeyPairStorage(options.keyPairStorage);\n }\n if (options.baseUrl) {\n builder.withBaseUrl(options.baseUrl);\n }\n if (options.switchboardUrl) {\n builder.withSwitchboardUrl(options.switchboardUrl);\n }\n if (options.profileFetcher) {\n builder.withProfileFetcher(options.profileFetcher);\n }\n if (options.chainId !== undefined) {\n builder.withChainId(options.chainId);\n }\n\n return builder;\n }\n}\n","import { fetchDelegationCredential } from \"./credential.js\";\nimport type { SwitchboardRequestFn } from \"./switchboard.js\";\n\n/** Confirms an authenticated signer's delegation credential is still live. */\nexport type CredentialCheck = (params: {\n address: string;\n chainId: number;\n appId: string;\n}) => Promise<boolean>;\n\nexport interface LocalCredentialVerifierOptions {\n /** Notified when the read itself fails; the check then fails closed. */\n onError?: (error: unknown) => void;\n}\n\n/** A credential check that reads a Switchboard's own renown read model through\n * `execute`, rather than any Renown or Switchboard over HTTP. */\nexport function createLocalCredentialVerifier(\n execute: SwitchboardRequestFn,\n options: LocalCredentialVerifierOptions = {},\n): CredentialCheck {\n // fetchDelegationCredential turns a read failure into \"no credential\" — the\n // right verdict, but silent; surface it before it is swallowed.\n const request: SwitchboardRequestFn = async (query, variables) => {\n try {\n return await execute(query, variables);\n } catch (error) {\n options.onError?.(error);\n throw error;\n }\n };\n\n return async ({ address, chainId, appId }) => {\n const credential = await fetchDelegationCredential({\n address,\n chainId,\n appDid: appId,\n switchboardRequest: request,\n });\n return credential !== undefined;\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as LoginMethod } from "./types-
|
|
1
|
+
import { t as LoginMethod } from "./types-Dwy6khXb.js";
|
|
2
2
|
//#region src/wallet/privy/meta.ts
|
|
3
3
|
const PRIVY_SUPPORTED_METHODS = [
|
|
4
4
|
LoginMethod.WALLET,
|
|
@@ -24,4 +24,4 @@ const privyAdapterMeta = {
|
|
|
24
24
|
//#endregion
|
|
25
25
|
export { privyAdapterMeta as n, resolvePrivyMethods as r, DEFAULT_PRIVY_METHODS as t };
|
|
26
26
|
|
|
27
|
-
//# sourceMappingURL=meta-
|
|
27
|
+
//# sourceMappingURL=meta-4NmijIbE.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-
|
|
1
|
+
{"version":3,"file":"meta-4NmijIbE.js","names":[],"sources":["../src/wallet/privy/meta.ts"],"sourcesContent":["import { LoginMethod, type WalletAdapterMeta } from \"../types.js\";\n\n/** Structural subset of viem's `Chain`, so any `viem/chains` / `wagmi/chains` export fits regardless of the host's viem version. */\nexport interface PrivyChain {\n id: number;\n name: string;\n nativeCurrency: { name: string; symbol: string; decimals: number };\n rpcUrls: { default: { http: readonly string[] } };\n}\n\n// Login methods the Privy adapter can drive. adapter.ts maps each to a Privy\n// login-method id, so adding one here without mapping it fails to compile.\nexport type PrivyLoginMethod = \"wallet\" | \"google\" | \"apple\" | \"email\";\n\nexport const PRIVY_SUPPORTED_METHODS: PrivyLoginMethod[] = [\n LoginMethod.WALLET,\n LoginMethod.GOOGLE,\n LoginMethod.APPLE,\n LoginMethod.EMAIL,\n];\n\n// Methods offered when config omits `methods`.\nexport const DEFAULT_PRIVY_METHODS: LoginMethod[] = [\n LoginMethod.GOOGLE,\n LoginMethod.EMAIL,\n];\n\n// Config slice for the Privy adapter (mirrors connect.renown.adapters.privy).\nexport interface PHRenownPrivyAdapterConfig {\n appId: string;\n clientId?: string;\n /** Login methods to offer; defaults to [google, email]. */\n methods?: PrivyLoginMethod[];\n /** Chain Renown issues credentials on (e.g. `mainnet` from `viem/chains`). Pins the embedded wallet to it: a wallet on another chain is a different DID and is rejected. */\n chain?: PrivyChain;\n /** Privy `appearance.walletList`. Defaults to `[\"detected_ethereum_wallets\"]`: with external wallets disabled here (they go through the rainbow adapter), anything else makes Privy fetch the WalletConnect explorer listings (~163 KB) on mount. Set it only if you want those listings. */\n walletList?: string[];\n}\n\n// Resolve config `methods` to the supported set, falling back to the default.\n// Takes string[] because Connect's config arrives from JSON, unvalidated.\nexport function resolvePrivyMethods(methods?: string[]): LoginMethod[] {\n if (!methods || methods.length === 0) return [...DEFAULT_PRIVY_METHODS];\n const resolved: LoginMethod[] = [];\n for (const method of methods) {\n const value = method as PrivyLoginMethod;\n if (!PRIVY_SUPPORTED_METHODS.includes(value)) {\n throw new Error(`PrivyAdapter cannot support login method \"${method}\"`);\n }\n resolved.push(value);\n }\n return resolved;\n}\n\n// Dependency-free identity, safe to import eagerly (pulls no wallet library);\n// the heavy factory stays behind the dynamic import in ./index.ts.\nexport const privyAdapterMeta: Omit<WalletAdapterMeta, \"supportedMethods\"> = {\n id: \"privy\",\n redirectReturnParams: [\"privy_oauth_code\", \"privy_oauth_state\"],\n};\n"],"mappings":";;AAcA,MAAa,0BAA8C;CACzD,YAAY;CACZ,YAAY;CACZ,YAAY;CACZ,YAAY;AACd;AAGA,MAAa,wBAAuC,CAClD,YAAY,QACZ,YAAY,KACd;AAgBA,SAAgB,oBAAoB,SAAmC;CACrE,IAAI,CAAC,WAAW,QAAQ,WAAW,GAAG,OAAO,CAAC,GAAG,qBAAqB;CACtE,MAAM,WAA0B,CAAC;CACjC,KAAK,MAAM,UAAU,SAAS;EAC5B,MAAM,QAAQ;EACd,IAAI,CAAC,wBAAwB,SAAS,KAAK,GACzC,MAAM,IAAI,MAAM,6CAA6C,OAAO,EAAE;EAExE,SAAS,KAAK,KAAK;CACrB;CACA,OAAO;AACT;AAIA,MAAa,mBAAgE;CAC3E,IAAI;CACJ,sBAAsB,CAAC,oBAAoB,mBAAmB;AAChE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as LoginMethod } from "./types-
|
|
1
|
+
import { t as LoginMethod } from "./types-Dwy6khXb.js";
|
|
2
2
|
//#region src/wallet/mock/meta.ts
|
|
3
3
|
const MOCK_SUPPORTED_METHODS = [
|
|
4
4
|
LoginMethod.WALLET,
|
|
@@ -28,4 +28,4 @@ const mockAdapterMeta = {
|
|
|
28
28
|
//#endregion
|
|
29
29
|
export { mockAdapterMeta as n, resolveMockMethods as r, DEFAULT_MOCK_METHODS as t };
|
|
30
30
|
|
|
31
|
-
//# sourceMappingURL=meta-
|
|
31
|
+
//# sourceMappingURL=meta-B2fHYlPD.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-
|
|
1
|
+
{"version":3,"file":"meta-B2fHYlPD.js","names":[],"sources":["../src/wallet/mock/meta.ts"],"sourcesContent":["import { LoginMethod, type WalletAdapterMeta } from \"../types.js\";\n\nexport type MockLoginMethod = \"wallet\" | \"google\" | \"apple\" | \"email\";\n\nconst MOCK_SUPPORTED_METHODS: MockLoginMethod[] = [\n LoginMethod.WALLET,\n LoginMethod.GOOGLE,\n LoginMethod.APPLE,\n LoginMethod.EMAIL,\n];\n\n// Methods offered when config omits `methods`.\nexport const DEFAULT_MOCK_METHODS: LoginMethod[] = [\n LoginMethod.WALLET,\n LoginMethod.GOOGLE,\n LoginMethod.EMAIL,\n];\n\n/** Config for the mock wallet adapter. TEST/DEV ONLY — signs with a local key; never enable in production. */\nexport interface PHRenownMockAdapterConfig {\n /** Signing key; defaults to the well-known Anvil test account #0. */\n privateKey?: `0x${string}`;\n /** Chain id reported in the session (default 1). */\n chainId?: number;\n /** Methods this adapter answers for; defaults to wallet + google + email. */\n methods?: MockLoginMethod[];\n}\n\n// Resolve config `methods` to the supported set, falling back to the default.\n// Takes string[] because Connect's config arrives from JSON, unvalidated.\nexport function resolveMockMethods(methods?: string[]): LoginMethod[] {\n if (!methods || methods.length === 0) return [...DEFAULT_MOCK_METHODS];\n const resolved: LoginMethod[] = [];\n for (const method of methods) {\n const value = method as MockLoginMethod;\n if (!MOCK_SUPPORTED_METHODS.includes(value)) {\n throw new Error(`MockAdapter cannot support login method \"${method}\"`);\n }\n resolved.push(value);\n }\n return resolved;\n}\n\n// Dependency-free identity (see privy/meta.ts). The mock signer has no\n// full-page OAuth redirect.\nexport const mockAdapterMeta: Omit<WalletAdapterMeta, \"supportedMethods\"> = {\n id: \"mock\",\n redirectReturnParams: [],\n};\n"],"mappings":";;AAIA,MAAM,yBAA4C;CAChD,YAAY;CACZ,YAAY;CACZ,YAAY;CACZ,YAAY;AACd;AAGA,MAAa,uBAAsC;CACjD,YAAY;CACZ,YAAY;CACZ,YAAY;AACd;AAcA,SAAgB,mBAAmB,SAAmC;CACpE,IAAI,CAAC,WAAW,QAAQ,WAAW,GAAG,OAAO,CAAC,GAAG,oBAAoB;CACrE,MAAM,WAA0B,CAAC;CACjC,KAAK,MAAM,UAAU,SAAS;EAC5B,MAAM,QAAQ;EACd,IAAI,CAAC,uBAAuB,SAAS,KAAK,GACxC,MAAM,IAAI,MAAM,4CAA4C,OAAO,EAAE;EAEvE,SAAS,KAAK,KAAK;CACrB;CACA,OAAO;AACT;AAIA,MAAa,kBAA+D;CAC1E,IAAI;CACJ,sBAAsB,CAAC;AACzB"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { o as WalletAdapterMeta, t as LoginMethod } from "./types-
|
|
2
|
-
|
|
1
|
+
import { o as WalletAdapterMeta, t as LoginMethod } from "./types-CHIgkzKb.js";
|
|
3
2
|
//#region src/wallet/rainbow/meta.d.ts
|
|
4
3
|
interface PHRenownChain {
|
|
5
4
|
id: number;
|
|
@@ -16,4 +15,5 @@ declare const RAINBOW_METHODS: LoginMethod[];
|
|
|
16
15
|
declare const rainbowAdapterMeta: WalletAdapterMeta;
|
|
17
16
|
//#endregion
|
|
18
17
|
export { rainbowAdapterMeta as i, PHRenownRainbowAdapterConfig as n, RAINBOW_METHODS as r, PHRenownChain as t };
|
|
19
|
-
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=meta-CpBbgZnu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta-CpBbgZnu.d.ts","names":[],"sources":["../src/wallet/rainbow/meta.ts"],"mappings":";;UAIiB;EACf;EACA;;UAKe;EAGf;EACA;EACA;EAGA,mBAAmB,kBAAkB;EAGrC;;cAGW,iBAAiB;cAIjB,oBAAoB"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { o as WalletAdapterMeta, t as LoginMethod } from "./types-
|
|
2
|
-
|
|
1
|
+
import { o as WalletAdapterMeta, t as LoginMethod } from "./types-CHIgkzKb.js";
|
|
3
2
|
//#region src/wallet/mock/meta.d.ts
|
|
4
3
|
type MockLoginMethod = "wallet" | "google" | "apple" | "email";
|
|
5
4
|
declare const DEFAULT_MOCK_METHODS: LoginMethod[];
|
|
@@ -16,4 +15,5 @@ declare function resolveMockMethods(methods?: string[]): LoginMethod[];
|
|
|
16
15
|
declare const mockAdapterMeta: Omit<WalletAdapterMeta, "supportedMethods">;
|
|
17
16
|
//#endregion
|
|
18
17
|
export { resolveMockMethods as a, mockAdapterMeta as i, MockLoginMethod as n, PHRenownMockAdapterConfig as r, DEFAULT_MOCK_METHODS as t };
|
|
19
|
-
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=meta-DlON7DmF.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta-DlON7DmF.d.ts","names":[],"sources":["../src/wallet/mock/meta.ts"],"mappings":";;KAEY;cAUC,sBAAsB;;UAOlB;;EAEf;;EAEA;;EAEA,UAAU;;iBAKI,mBAAmB,qBAAqB;cAe3C,iBAAiB,KAAK"}
|