@renown/sdk 6.2.2-dev.9 → 6.2.2
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/README.md +162 -1
- package/dist/{browser-key-storage-v4O-fjz0.js → browser-key-storage-e3RQsnLS.js} +1 -1
- package/dist/{browser-key-storage-v4O-fjz0.js.map → browser-key-storage-e3RQsnLS.js.map} +1 -1
- package/dist/constants-BexAR53F.js +82 -0
- package/dist/constants-BexAR53F.js.map +1 -0
- package/dist/crypto.d.ts +2 -2
- package/dist/crypto.js +2 -2
- package/dist/index-BLIpkdF7.d.ts +131 -0
- package/dist/index-BLIpkdF7.d.ts.map +1 -0
- package/dist/index.d.ts +11 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -9
- package/dist/index.js.map +1 -1
- package/dist/local-credential-verifier-CU8hmFlR.js +907 -0
- package/dist/local-credential-verifier-CU8hmFlR.js.map +1 -0
- package/dist/meta-BesJP74N.d.ts +19 -0
- package/dist/meta-BesJP74N.d.ts.map +1 -0
- package/dist/meta-CHgd9Qd0.js +31 -0
- package/dist/meta-CHgd9Qd0.js.map +1 -0
- package/dist/meta-D-5kvwx8.js +27 -0
- package/dist/meta-D-5kvwx8.js.map +1 -0
- package/dist/meta-bV7L-1yb.d.ts +19 -0
- package/dist/meta-bV7L-1yb.d.ts.map +1 -0
- package/dist/node.d.ts +11 -11
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +104 -12
- package/dist/node.js.map +1 -1
- package/dist/{signer-CgYhXTV7.js → signer-DrjINLqt.js} +13 -6
- package/dist/signer-DrjINLqt.js.map +1 -0
- package/dist/{signer-DYKGoYHB.d.ts → types-BGQKPoUr.d.ts} +170 -118
- package/dist/types-BGQKPoUr.d.ts.map +1 -0
- package/dist/types-C-hJrsQg.d.ts +59 -0
- package/dist/types-C-hJrsQg.d.ts.map +1 -0
- package/dist/types-C_qc_62W.js +20 -0
- package/dist/types-C_qc_62W.js.map +1 -0
- package/dist/types-DInveFLz.d.ts +63 -0
- package/dist/types-DInveFLz.d.ts.map +1 -0
- package/dist/{utils-C9ZgMs_C.d.ts → utils-DtWREYeO.d.ts} +81 -94
- package/dist/utils-DtWREYeO.d.ts.map +1 -0
- package/dist/wallet/index.d.ts +8 -0
- package/dist/wallet/index.d.ts.map +1 -0
- package/dist/wallet/index.js +30 -0
- package/dist/wallet/index.js.map +1 -0
- package/dist/wallet/mock/factory.d.ts +9 -0
- package/dist/wallet/mock/factory.d.ts.map +1 -0
- package/dist/wallet/mock/factory.js +35 -0
- package/dist/wallet/mock/factory.js.map +1 -0
- package/dist/wallet/mock/index.d.ts +9 -0
- package/dist/wallet/mock/index.d.ts.map +1 -0
- package/dist/wallet/mock/index.js +16 -0
- package/dist/wallet/mock/index.js.map +1 -0
- package/dist/wallet/privy/factory.d.ts +79 -0
- package/dist/wallet/privy/factory.d.ts.map +1 -0
- package/dist/wallet/privy/factory.js +382 -0
- package/dist/wallet/privy/factory.js.map +1 -0
- package/dist/wallet/privy/index.d.ts +9 -0
- package/dist/wallet/privy/index.d.ts.map +1 -0
- package/dist/wallet/privy/index.js +16 -0
- package/dist/wallet/privy/index.js.map +1 -0
- package/dist/wallet/rainbow/factory.d.ts +7 -0
- package/dist/wallet/rainbow/factory.d.ts.map +1 -0
- package/dist/wallet/rainbow/factory.js +219 -0
- package/dist/wallet/rainbow/factory.js.map +1 -0
- package/dist/wallet/rainbow/index.d.ts +9 -0
- package/dist/wallet/rainbow/index.d.ts.map +1 -0
- package/dist/wallet/rainbow/index.js +21 -0
- package/dist/wallet/rainbow/index.js.map +1 -0
- package/package.json +77 -4
- package/dist/browser-key-storage-DSkDBAhU.d.ts +0 -14
- package/dist/browser-key-storage-DSkDBAhU.d.ts.map +0 -1
- package/dist/renown-builder-Sn_Y2Cb2.js +0 -496
- package/dist/renown-builder-Sn_Y2Cb2.js.map +0 -1
- package/dist/signer-CgYhXTV7.js.map +0 -1
- package/dist/signer-DYKGoYHB.d.ts.map +0 -1
- package/dist/utils-C9ZgMs_C.d.ts.map +0 -1
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { at as SignCredentialTypedData } from "./types-BGQKPoUr.js";
|
|
2
|
+
import { ComponentType, ReactNode } from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/wallet/types.d.ts
|
|
5
|
+
declare const LoginMethod: {
|
|
6
|
+
readonly WALLET: "wallet";
|
|
7
|
+
readonly GOOGLE: "google";
|
|
8
|
+
readonly EMAIL: "email";
|
|
9
|
+
readonly APPLE: "apple";
|
|
10
|
+
};
|
|
11
|
+
type LoginMethod = (typeof LoginMethod)[keyof typeof LoginMethod];
|
|
12
|
+
interface WalletThemeColors {
|
|
13
|
+
accentColor?: string;
|
|
14
|
+
accentColorForeground?: string;
|
|
15
|
+
}
|
|
16
|
+
type WalletTheme = "light" | "dark" | ({
|
|
17
|
+
mode: "light" | "dark";
|
|
18
|
+
} & WalletThemeColors);
|
|
19
|
+
declare function normalizeWalletTheme(theme: WalletTheme | undefined): {
|
|
20
|
+
mode: "light" | "dark";
|
|
21
|
+
accentColor?: string;
|
|
22
|
+
accentColorForeground?: string;
|
|
23
|
+
};
|
|
24
|
+
interface WalletSession {
|
|
25
|
+
address: `0x${string}`;
|
|
26
|
+
chainId: number;
|
|
27
|
+
signTypedData: SignCredentialTypedData;
|
|
28
|
+
canSignSilently?: boolean;
|
|
29
|
+
}
|
|
30
|
+
interface WalletController {
|
|
31
|
+
connect(method?: LoginMethod): Promise<WalletSession>;
|
|
32
|
+
disconnect(): Promise<void>;
|
|
33
|
+
getSession(): WalletSession | undefined;
|
|
34
|
+
subscribe?(listener: (session: WalletSession | undefined) => void): () => void;
|
|
35
|
+
}
|
|
36
|
+
interface WalletAdapterMeta {
|
|
37
|
+
id: string;
|
|
38
|
+
redirectReturnParams: string[];
|
|
39
|
+
supportedMethods: LoginMethod[];
|
|
40
|
+
}
|
|
41
|
+
interface WalletAdapterImpl {
|
|
42
|
+
Provider: ComponentType<{
|
|
43
|
+
children: ReactNode;
|
|
44
|
+
theme?: WalletTheme;
|
|
45
|
+
}>;
|
|
46
|
+
useController: () => WalletController;
|
|
47
|
+
}
|
|
48
|
+
interface WalletAdapter extends WalletAdapterImpl {
|
|
49
|
+
meta: WalletAdapterMeta;
|
|
50
|
+
}
|
|
51
|
+
interface WalletAdapterDescriptor {
|
|
52
|
+
meta: WalletAdapterMeta;
|
|
53
|
+
load: () => Promise<WalletAdapterImpl>;
|
|
54
|
+
}
|
|
55
|
+
type WalletAdapterFactory<Config = unknown> = (config: Config) => WalletAdapterImpl;
|
|
56
|
+
type WalletAdapterProvider<Config = unknown> = (config: Config) => WalletAdapterDescriptor;
|
|
57
|
+
//#endregion
|
|
58
|
+
export { WalletAdapterImpl as a, WalletController as c, WalletThemeColors as d, normalizeWalletTheme as f, WalletAdapterFactory as i, WalletSession as l, WalletAdapter as n, WalletAdapterMeta as o, WalletAdapterDescriptor as r, WalletAdapterProvider as s, LoginMethod as t, WalletTheme as u };
|
|
59
|
+
//# sourceMappingURL=types-C-hJrsQg.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-C-hJrsQg.d.ts","names":[],"sources":["../src/wallet/types.ts"],"mappings":";;;;cAKa,WAAA;EAAA;;;;;KAOD,WAAA,WAAsB,WAAA,eAA0B,WAAA;AAAA,UAI3C,iBAAA;EACf,WAAA;EACA,qBAAA;AAAA;AAAA,KAIU,WAAA;EAGL,IAAA;AAAA,IAA2B,iBAAA;AAAA,iBAGlB,oBAAA,CAAqB,KAAA,EAAO,WAAA;EAC1C,IAAA;EACA,WAAA;EACA,qBAAA;AAAA;AAAA,UAYe,aAAA;EACf,OAAA;EACA,OAAA;EACA,aAAA,EAAe,uBAAA;EAGf,eAAA;AAAA;AAAA,UAIe,gBAAA;EACf,OAAA,CAAQ,MAAA,GAAS,WAAA,GAAc,OAAA,CAAQ,aAAA;EACvC,UAAA,IAAc,OAAA;EACd,UAAA,IAAc,aAAA;EAGd,SAAA,EACE,QAAA,GAAW,OAAA,EAAS,aAAA;AAAA;AAAA,UAMP,iBAAA;EACf,EAAA;EAGA,oBAAA;EAGA,gBAAA,EAAkB,WAAA;AAAA;AAAA,UAIH,iBAAA;EAGf,QAAA,EAAU,aAAA;IAAgB,QAAA,EAAU,SAAA;IAAW,KAAA,GAAQ,WAAA;EAAA;EAEvD,aAAA,QAAqB,gBAAA;AAAA;AAAA,UAIN,aAAA,SAAsB,iBAAA;EACrC,IAAA,EAAM,iBAAA;AAAA;AAAA,UAKS,uBAAA;EACf,IAAA,EAAM,iBAAA;EACN,IAAA,QAAY,OAAA,CAAQ,iBAAA;AAAA;AAAA,KAGV,oBAAA,sBACV,MAAA,EAAQ,MAAA,KACL,iBAAA;AAAA,KAEO,qBAAA,sBACV,MAAA,EAAQ,MAAA,KACL,uBAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/wallet/types.ts
|
|
2
|
+
const LoginMethod = {
|
|
3
|
+
WALLET: "wallet",
|
|
4
|
+
GOOGLE: "google",
|
|
5
|
+
EMAIL: "email",
|
|
6
|
+
APPLE: "apple"
|
|
7
|
+
};
|
|
8
|
+
function normalizeWalletTheme(theme) {
|
|
9
|
+
if (theme === void 0) return { mode: "light" };
|
|
10
|
+
if (typeof theme === "string") return { mode: theme };
|
|
11
|
+
return {
|
|
12
|
+
mode: theme.mode,
|
|
13
|
+
accentColor: theme.accentColor,
|
|
14
|
+
accentColorForeground: theme.accentColorForeground
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { normalizeWalletTheme as n, LoginMethod as t };
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=types-C_qc_62W.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-C_qc_62W.js","names":[],"sources":["../src/wallet/types.ts"],"sourcesContent":["import type { ComponentType, ReactNode } from \"react\";\nimport type { SignCredentialTypedData } from \"../credential.js\";\n\n// Const object rather than an enum so config can be authored with plain string\n// literals (`methods: [\"google\"]`) while `LoginMethod.GOOGLE` still works.\nexport const LoginMethod = {\n WALLET: \"wallet\",\n GOOGLE: \"google\",\n EMAIL: \"email\",\n APPLE: \"apple\",\n} as const;\n\nexport type LoginMethod = (typeof LoginMethod)[keyof typeof LoginMethod];\n\n// Colors the host passes into an adapter Provider so its wallet UI matches.\n// The adapter stays agnostic to how the host derives them (CSS tokens, etc.).\nexport interface WalletThemeColors {\n accentColor?: string;\n accentColorForeground?: string;\n}\n\n// The theme the host passes at runtime: a bare mode, or a mode plus colors.\nexport type WalletTheme =\n | \"light\"\n | \"dark\"\n | ({ mode: \"light\" | \"dark\" } & WalletThemeColors);\n\n// Normalize a WalletTheme (or undefined) to a mode + colors the adapters use.\nexport function normalizeWalletTheme(theme: WalletTheme | undefined): {\n mode: \"light\" | \"dark\";\n accentColor?: string;\n accentColorForeground?: string;\n} {\n if (theme === undefined) return { mode: \"light\" };\n if (typeof theme === \"string\") return { mode: theme };\n return {\n mode: theme.mode,\n accentColor: theme.accentColor,\n accentColorForeground: theme.accentColorForeground,\n };\n}\n\n// The signer surface signIn needs, produced by an adapter after the user connects.\nexport interface WalletSession {\n address: `0x${string}`;\n chainId: number;\n signTypedData: SignCredentialTypedData;\n // Capability, not policy: the session can sign without a user prompt (e.g. a\n // Privy embedded wallet). Whether/when to sign silently is the host's call.\n canSignSilently?: boolean;\n}\n\n// Imperative controls returned by an adapter's React hook (used inside its Provider).\nexport interface WalletController {\n connect(method?: LoginMethod): Promise<WalletSession>;\n disconnect(): Promise<void>;\n getSession(): WalletSession | undefined;\n // Optional push stream of session changes (fires immediately with the current\n // one), so a host can complete sign-in on an OAuth return with no live connect().\n subscribe?(\n listener: (session: WalletSession | undefined) => void,\n ): () => void;\n}\n\n// Identity + capabilities, declared once per adapter in a dependency-free module\n// so a host can list methods and detect a redirect return with no wallet library.\nexport interface WalletAdapterMeta {\n id: string;\n // URL params the adapter leaves when a full-page OAuth login returns; empty for\n // adapters with no redirect flow.\n redirectReturnParams: string[];\n // Must be known before load(): the login UI renders buttons before any wallet\n // library is fetched.\n supportedMethods: LoginMethod[];\n}\n\n// Behaviour only — what an adapter factory returns. Identity lives in the meta.\nexport interface WalletAdapterImpl {\n // React provider that must wrap the app subtree for this adapter to work; the\n // host passes its current theme so the adapter's UI can match.\n Provider: ComponentType<{ children: ReactNode; theme?: WalletTheme }>;\n // Hook returning imperative controls; MUST be called inside <Provider>.\n useController: () => WalletController;\n}\n\n// What the host consumes: resolveAdapters pairs an impl with its meta.\nexport interface WalletAdapter extends WalletAdapterImpl {\n meta: WalletAdapterMeta;\n}\n\n// An adapter's light entry: eager meta plus a lazy loader that pulls the factory\n// and its wallet library only once login is activated.\nexport interface WalletAdapterDescriptor {\n meta: WalletAdapterMeta;\n load: () => Promise<WalletAdapterImpl>;\n}\n\nexport type WalletAdapterFactory<Config = unknown> = (\n config: Config,\n) => WalletAdapterImpl;\n\nexport type WalletAdapterProvider<Config = unknown> = (\n config: Config,\n) => WalletAdapterDescriptor;\n"],"mappings":";AAKA,MAAa,cAAc;CACzB,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,OAAO;CACR;AAkBD,SAAgB,qBAAqB,OAInC;AACA,KAAI,UAAU,KAAA,EAAW,QAAO,EAAE,MAAM,SAAS;AACjD,KAAI,OAAO,UAAU,SAAU,QAAO,EAAE,MAAM,OAAO;AACrD,QAAO;EACL,MAAM,MAAM;EACZ,aAAa,MAAM;EACnB,uBAAuB,MAAM;EAC9B"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { c as WalletController, l as WalletSession, o as WalletAdapterMeta, t as LoginMethod } from "./types-C-hJrsQg.js";
|
|
2
|
+
|
|
3
|
+
//#region src/wallet/privy/meta.d.ts
|
|
4
|
+
/** Structural subset of viem's `Chain`, so any `viem/chains` / `wagmi/chains` export fits regardless of the host's viem version. */
|
|
5
|
+
interface PrivyChain {
|
|
6
|
+
id: number;
|
|
7
|
+
name: string;
|
|
8
|
+
nativeCurrency: {
|
|
9
|
+
name: string;
|
|
10
|
+
symbol: string;
|
|
11
|
+
decimals: number;
|
|
12
|
+
};
|
|
13
|
+
rpcUrls: {
|
|
14
|
+
default: {
|
|
15
|
+
http: readonly string[];
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
type PrivyLoginMethod = "wallet" | "google" | "apple" | "email";
|
|
20
|
+
declare const DEFAULT_PRIVY_METHODS: LoginMethod[];
|
|
21
|
+
interface PHRenownPrivyAdapterConfig {
|
|
22
|
+
appId: string;
|
|
23
|
+
clientId?: string;
|
|
24
|
+
/** Login methods to offer; defaults to [google, email]. */
|
|
25
|
+
methods?: PrivyLoginMethod[];
|
|
26
|
+
/** 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. */
|
|
27
|
+
chain?: PrivyChain;
|
|
28
|
+
/** 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. */
|
|
29
|
+
walletList?: string[];
|
|
30
|
+
}
|
|
31
|
+
declare function resolvePrivyMethods(methods?: string[]): LoginMethod[];
|
|
32
|
+
declare const privyAdapterMeta: Omit<WalletAdapterMeta, "supportedMethods">;
|
|
33
|
+
//#endregion
|
|
34
|
+
//#region src/wallet/privy/types.d.ts
|
|
35
|
+
/** Privy's email OTP flow status, as reported by its `useLoginWithEmail`. */
|
|
36
|
+
type PrivyEmailStatus = "initial" | "sending-code" | "awaiting-code-input" | "submitting-code" | "done" | "error";
|
|
37
|
+
/** Privy auth state the bridge mirrors into the core, for hosts drawing their own sign-in screens. */
|
|
38
|
+
interface PrivyAuthState {
|
|
39
|
+
/** Privy has finished restoring any existing session. */
|
|
40
|
+
ready: boolean;
|
|
41
|
+
/** Privy holds a session (before Renown has issued a credential). */
|
|
42
|
+
authenticated: boolean;
|
|
43
|
+
/** The signed-in user's verified email, when logged in by email. */
|
|
44
|
+
email?: string;
|
|
45
|
+
emailStatus: PrivyEmailStatus;
|
|
46
|
+
emailError?: Error;
|
|
47
|
+
}
|
|
48
|
+
interface SendCodeOptions {
|
|
49
|
+
/** Reject addresses with no Privy account instead of creating one. */
|
|
50
|
+
disableSignup?: boolean;
|
|
51
|
+
}
|
|
52
|
+
/** The Privy adapter's controller: `WalletController` plus the headless email OTP surface, so a host can draw its own sign-in screens without importing `@privy-io/react-auth`. */
|
|
53
|
+
interface PrivyWalletController extends WalletController {
|
|
54
|
+
/** Send a one-time code to `email`. */
|
|
55
|
+
sendCode(email: string, options?: SendCodeOptions): Promise<void>;
|
|
56
|
+
/** Verify the code; resolves with the embedded-wallet session, ready for `login(session)`. */
|
|
57
|
+
loginWithCode(code: string): Promise<WalletSession>;
|
|
58
|
+
getState(): PrivyAuthState;
|
|
59
|
+
subscribeState(listener: (state: PrivyAuthState) => void): () => void;
|
|
60
|
+
}
|
|
61
|
+
//#endregion
|
|
62
|
+
export { DEFAULT_PRIVY_METHODS as a, PrivyLoginMethod as c, SendCodeOptions as i, privyAdapterMeta as l, PrivyEmailStatus as n, PHRenownPrivyAdapterConfig as o, PrivyWalletController as r, PrivyChain as s, PrivyAuthState as t, resolvePrivyMethods as u };
|
|
63
|
+
//# sourceMappingURL=types-DInveFLz.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-DInveFLz.d.ts","names":[],"sources":["../src/wallet/privy/meta.ts","../src/wallet/privy/types.ts"],"mappings":";;;;UAGiB,UAAA;EACf,EAAA;EACA,IAAA;EACA,cAAA;IAAkB,IAAA;IAAc,MAAA;IAAgB,QAAA;EAAA;EAChD,OAAA;IAAW,OAAA;MAAW,IAAA;IAAA;EAAA;AAAA;AAAA,KAKZ,gBAAA;AAAA,cAUC,qBAAA,EAAuB,WAAA;AAAA,UAMnB,0BAAA;EACf,KAAA;EACA,QAAA;EAlB0B;EAoB1B,OAAA,GAAU,gBAAA;EAPX;EASC,KAAA,GAAQ,UAAA;EAZ0B;EAclC,UAAA;AAAA;AAAA,iBAKc,mBAAA,CAAoB,OAAA,cAAqB,WAAA;AAAA,cAe5C,gBAAA,EAAkB,IAAA,CAAK,iBAAA;;;;KClDxB,gBAAA;ADHZ;AAAA,UCYiB,cAAA;;EAEf,KAAA;EDbA;ECeA,aAAA;EDbA;ECeA,KAAA;EACA,WAAA,EAAa,gBAAA;EACb,UAAA,GAAa,KAAA;AAAA;AAAA,UAGE,eAAA;EDnBO;ECqBtB,aAAA;AAAA;ADhBF;AAAA,UCoBiB,qBAAA,SAA8B,gBAAA;;EAE7C,QAAA,CAAS,KAAA,UAAe,OAAA,GAAU,eAAA,GAAkB,OAAA;EDtB1B;ECwB1B,aAAA,CAAc,IAAA,WAAe,OAAA,CAAQ,aAAA;EACrC,QAAA,IAAY,cAAA;EACZ,cAAA,CAAe,QAAA,GAAW,KAAA,EAAO,cAAA;AAAA"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { $ as
|
|
1
|
+
import { $ as MemoryStorage, A as LoginStatus, C as InternalUser, F as RenownEventEmitter, G as User, H as SignInParams, I as RenownEvents, N as ProfileFetcher, R as RenownStorage, Y as VerifiedCredential, b as IRenown, ht as SwitchboardRequestFn, i as JsonWebKeyPairStorage, j as PKHDid, l as CreateBearerTokenOptions, mt as SwitchboardClient, r as IRenownCrypto, s as AuthVerifiedCredential, w as Issuer, x as ISigner, z as RenownStorageMap } from "./types-BGQKPoUr.js";
|
|
2
2
|
import { Resolver } from "did-resolver";
|
|
3
3
|
|
|
4
4
|
//#region src/common.d.ts
|
|
5
5
|
declare class RenownMemoryStorage extends MemoryStorage<RenownStorageMap> {}
|
|
6
6
|
declare class Renown implements IRenown {
|
|
7
7
|
#private;
|
|
8
|
-
constructor(store: RenownStorage, eventEmitter: RenownEventEmitter, crypto: IRenownCrypto, appName: string, baseUrl?: string, profileFetcher?: ProfileFetcher);
|
|
8
|
+
constructor(store: RenownStorage, eventEmitter: RenownEventEmitter, crypto: IRenownCrypto, appName: string, baseUrl?: string, profileFetcher?: ProfileFetcher, switchboard?: SwitchboardClient, chainId?: number);
|
|
9
9
|
get baseUrl(): string;
|
|
10
|
+
/** Chain id this app issues credentials on; a session from another chain is rejected by {@link signIn}. */
|
|
11
|
+
get chainId(): number;
|
|
10
12
|
get user(): InternalUser | undefined;
|
|
11
13
|
get status(): LoginStatus;
|
|
12
14
|
get signer(): ISigner;
|
|
@@ -14,104 +16,22 @@ declare class Renown implements IRenown {
|
|
|
14
16
|
get did(): `did:${string}`;
|
|
15
17
|
get profileFetcher(): ProfileFetcher | undefined;
|
|
16
18
|
login(userDid: string): Promise<User>;
|
|
19
|
+
signIn(params: SignInParams): Promise<User>;
|
|
17
20
|
logout(): Promise<void>;
|
|
21
|
+
revalidate(): Promise<boolean>;
|
|
22
|
+
refreshProfile(): Promise<boolean>;
|
|
18
23
|
on<K extends keyof RenownEvents>(event: K, listener: (data: RenownEvents[K]) => void): () => void;
|
|
19
24
|
verifyBearerToken(token: string): Promise<false | AuthVerifiedCredential>;
|
|
20
25
|
getBearerToken(options: CreateBearerTokenOptions): Promise<string>;
|
|
21
26
|
}
|
|
22
27
|
//#endregion
|
|
23
|
-
//#region src/
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
name?: string;
|
|
27
|
-
version?: string;
|
|
28
|
-
chainId?: number;
|
|
29
|
-
verifyingContract?: Hex;
|
|
30
|
-
salt?: Hex;
|
|
31
|
-
};
|
|
32
|
-
type TypedDataParameter = {
|
|
33
|
-
name: string;
|
|
34
|
-
type: string;
|
|
35
|
-
};
|
|
36
|
-
/** EIP-712 domain as signed by the credential issuer. */
|
|
37
|
-
type CredentialDomain = {
|
|
38
|
-
version: string;
|
|
39
|
-
chainId: number;
|
|
40
|
-
};
|
|
41
|
-
/** The credential body that is EIP-712 signed (everything except `proof`). */
|
|
42
|
-
type CredentialMessage = {
|
|
43
|
-
"@context": string[];
|
|
44
|
-
type: string[];
|
|
45
|
-
id: string;
|
|
46
|
-
issuer: {
|
|
47
|
-
id: string;
|
|
48
|
-
ethereumAddress: Hex;
|
|
49
|
-
};
|
|
50
|
-
credentialSubject: {
|
|
51
|
-
id: string;
|
|
52
|
-
app: string;
|
|
53
|
-
};
|
|
54
|
-
credentialSchema: {
|
|
55
|
-
id: string;
|
|
56
|
-
type: string;
|
|
57
|
-
};
|
|
58
|
-
issuanceDate: string;
|
|
59
|
-
expirationDate: string;
|
|
60
|
-
};
|
|
61
|
-
/** Typed-data signer; matches the loose shape used by wallet adapters. */
|
|
62
|
-
type SignCredentialTypedData = (args: {
|
|
63
|
-
domain: TypedDataDomain;
|
|
64
|
-
types: Record<string, readonly TypedDataParameter[]>;
|
|
65
|
-
primaryType: string;
|
|
66
|
-
message: Record<string, unknown>;
|
|
67
|
-
}) => Promise<Hex>;
|
|
68
|
-
interface BuildCredentialParams {
|
|
69
|
-
signTypedData: SignCredentialTypedData;
|
|
70
|
-
address: Hex;
|
|
71
|
-
chainId: number;
|
|
72
|
-
app: string;
|
|
73
|
-
/** Credential subject id: the app/client DID the credential delegates to. */
|
|
74
|
-
appId: string;
|
|
75
|
-
expiresInDays?: number;
|
|
76
|
-
}
|
|
77
|
-
/** Assemble a Renown delegation VC and sign it with the provided signer. */
|
|
78
|
-
declare function buildAndSignCredential(params: BuildCredentialParams): Promise<PowerhouseVerifiableCredential>;
|
|
79
|
-
/** Recover the address that signed a credential's EIP-712 proof. */
|
|
80
|
-
declare function recoverCredentialSigner(credential: PowerhouseVerifiableCredential): Promise<Hex>;
|
|
81
|
-
/** True when the proof was signed by the credential's declared issuer address. */
|
|
82
|
-
declare function verifyCredentialSignature(credential: PowerhouseVerifiableCredential): Promise<boolean>;
|
|
83
|
-
interface FetchDelegationCredentialOptions {
|
|
84
|
-
/** Ethereum address that must have issued the credential. */
|
|
85
|
-
address: string;
|
|
86
|
-
/** Chain id the credential must be scoped to. */
|
|
87
|
-
chainId: number;
|
|
88
|
-
/** App/client DID the credential must delegate to (credentialSubject.id). */
|
|
89
|
-
appDid: string;
|
|
90
|
-
/** Renown service base URL. Defaults to DEFAULT_RENOWN_URL. */
|
|
28
|
+
//#region src/discovery.d.ts
|
|
29
|
+
interface ResolveSwitchboardEndpointOptions {
|
|
30
|
+
switchboardUrl?: string;
|
|
91
31
|
baseUrl?: string;
|
|
92
|
-
|
|
93
|
-
verifySignature?: boolean;
|
|
32
|
+
timeoutMs?: number;
|
|
94
33
|
}
|
|
95
|
-
declare function
|
|
96
|
-
interface VerifiedAuthCredential {
|
|
97
|
-
address: string;
|
|
98
|
-
chainId: number;
|
|
99
|
-
networkId: string;
|
|
100
|
-
/** Owner identity: the pkh DID (did:pkh:<net>:<chainId>:<address>). */
|
|
101
|
-
did: string;
|
|
102
|
-
/** App/client DID the bearer token was issued by. */
|
|
103
|
-
appDid: string;
|
|
104
|
-
credential: PowerhouseVerifiableCredential;
|
|
105
|
-
}
|
|
106
|
-
interface VerifyAuthCredentialOptions {
|
|
107
|
-
/** Expected `aud` claim on the bearer token. */
|
|
108
|
-
audience?: string;
|
|
109
|
-
/** Renown service base URL. */
|
|
110
|
-
renownUrl?: string;
|
|
111
|
-
/** Re-verify the credential's EIP-712 proof (default true). */
|
|
112
|
-
verifySignature?: boolean;
|
|
113
|
-
}
|
|
114
|
-
declare function verifyAuthCredential(jwt: string, options?: VerifyAuthCredentialOptions): Promise<VerifiedAuthCredential | undefined>;
|
|
34
|
+
declare function resolveSwitchboardEndpoint(options: ResolveSwitchboardEndpointOptions): Promise<string | undefined>;
|
|
115
35
|
//#endregion
|
|
116
36
|
//#region src/renown-builder.d.ts
|
|
117
37
|
interface RenownBuilderOptions {
|
|
@@ -121,7 +41,10 @@ interface RenownBuilderOptions {
|
|
|
121
41
|
crypto?: IRenownCrypto;
|
|
122
42
|
keyPairStorage?: JsonWebKeyPairStorage;
|
|
123
43
|
baseUrl?: string;
|
|
44
|
+
switchboardUrl?: string;
|
|
124
45
|
profileFetcher?: ProfileFetcher;
|
|
46
|
+
/** Chain id credentials are issued on (default 1). The issuer DID embeds it, so `signIn` rejects a wallet session from another chain. */
|
|
47
|
+
chainId?: number;
|
|
125
48
|
}
|
|
126
49
|
/**
|
|
127
50
|
* Base builder for creating Renown instances.
|
|
@@ -160,6 +83,8 @@ declare class BaseRenownBuilder {
|
|
|
160
83
|
* Defaults to https://www.renown.id
|
|
161
84
|
*/
|
|
162
85
|
withBaseUrl(baseUrl: string): this;
|
|
86
|
+
withSwitchboardUrl(switchboardUrl: string): this;
|
|
87
|
+
withChainId(chainId: number): this;
|
|
163
88
|
/**
|
|
164
89
|
* Set a profile fetcher strategy for enriching user data after login.
|
|
165
90
|
* The fetcher receives the authenticated user and the base URL,
|
|
@@ -179,9 +104,71 @@ declare class BaseRenownBuilder {
|
|
|
179
104
|
static from(options: RenownBuilderOptions): BaseRenownBuilder;
|
|
180
105
|
}
|
|
181
106
|
//#endregion
|
|
107
|
+
//#region src/local-credential-verifier.d.ts
|
|
108
|
+
/** Confirms an authenticated signer's delegation credential is still live. */
|
|
109
|
+
type CredentialCheck = (params: {
|
|
110
|
+
address: string;
|
|
111
|
+
chainId: number;
|
|
112
|
+
appId: string;
|
|
113
|
+
}) => Promise<boolean>;
|
|
114
|
+
interface LocalCredentialVerifierOptions {
|
|
115
|
+
/** Notified when the read itself fails; the check then fails closed. */
|
|
116
|
+
onError?: (error: unknown) => void;
|
|
117
|
+
}
|
|
118
|
+
/** A credential check that reads a Switchboard's own renown read model through
|
|
119
|
+
* `execute`, rather than any Renown or Switchboard over HTTP. */
|
|
120
|
+
declare function createLocalCredentialVerifier(execute: SwitchboardRequestFn, options?: LocalCredentialVerifierOptions): CredentialCheck;
|
|
121
|
+
//#endregion
|
|
182
122
|
//#region src/profile.d.ts
|
|
183
123
|
declare const fetchRenownProfile: ProfileFetcher;
|
|
184
124
|
//#endregion
|
|
125
|
+
//#region src/session.d.ts
|
|
126
|
+
/** Server-side view of an authenticated Renown session. */
|
|
127
|
+
interface RenownSession {
|
|
128
|
+
/** Authenticated user identity derived from the session token. */
|
|
129
|
+
user: User;
|
|
130
|
+
/** App/client DID the token was issued by. */
|
|
131
|
+
appDid: string;
|
|
132
|
+
/** Token expiry (epoch seconds), when present. */
|
|
133
|
+
expiresAt?: number;
|
|
134
|
+
}
|
|
135
|
+
/** Display hint carried alongside the token (unverified; not for auth). */
|
|
136
|
+
interface RenownSessionProfile {
|
|
137
|
+
name?: string | null;
|
|
138
|
+
avatar?: string | null;
|
|
139
|
+
/** Renown profile document id, so SSR can resolve profile links. */
|
|
140
|
+
documentId?: string | null;
|
|
141
|
+
username?: string | null;
|
|
142
|
+
userImage?: string | null;
|
|
143
|
+
}
|
|
144
|
+
/** The `renown_session` cookie payload: the bearer token + a display hint. */
|
|
145
|
+
interface RenownSessionCookie {
|
|
146
|
+
token: string;
|
|
147
|
+
profile?: RenownSessionProfile | null;
|
|
148
|
+
}
|
|
149
|
+
interface VerifyRenownSessionOptions {
|
|
150
|
+
/** Expected `aud` claim on the token. */
|
|
151
|
+
audience?: string;
|
|
152
|
+
/** Switchboard GraphQL endpoint used when re-verifying the credential. */
|
|
153
|
+
switchboardUrl?: string;
|
|
154
|
+
/** Renown service base URL used when re-verifying the credential. */
|
|
155
|
+
renownUrl?: string;
|
|
156
|
+
/** Also re-verify the credential against Switchboard (default false = token-only, no network). */
|
|
157
|
+
verifyCredential?: boolean;
|
|
158
|
+
}
|
|
159
|
+
/** Claims read from a session token without verifying its signature. */
|
|
160
|
+
interface RenownSessionClaims {
|
|
161
|
+
address?: string;
|
|
162
|
+
chainId?: number;
|
|
163
|
+
networkId?: string;
|
|
164
|
+
/** Expiry in epoch seconds. */
|
|
165
|
+
expiresAt?: number;
|
|
166
|
+
}
|
|
167
|
+
/** Serialize a session cookie value (token + optional display hint). */
|
|
168
|
+
declare function serializeRenownSessionCookie(value: RenownSessionCookie): string;
|
|
169
|
+
declare function readSessionClaims(value: string): RenownSessionClaims | undefined;
|
|
170
|
+
declare function verifyRenownSession(value: string, options?: VerifyRenownSessionOptions): Promise<RenownSession | undefined>;
|
|
171
|
+
//#endregion
|
|
185
172
|
//#region src/utils.d.ts
|
|
186
173
|
type ILogger = {
|
|
187
174
|
level: "verbose" | "debug" | "info" | "warn" | "error";
|
|
@@ -210,5 +197,5 @@ declare function assertIsAuthCredential(credential: VerifiedCredential): asserts
|
|
|
210
197
|
declare function createAuthBearerToken(chainId: number, networkId: string, address: string, issuer: Issuer, options?: CreateBearerTokenOptions): Promise<string>;
|
|
211
198
|
declare const getResolver: () => Resolver;
|
|
212
199
|
//#endregion
|
|
213
|
-
export {
|
|
214
|
-
//# sourceMappingURL=utils-
|
|
200
|
+
export { resolveSwitchboardEndpoint as C, ResolveSwitchboardEndpointOptions as S, RenownMemoryStorage as T, CredentialCheck as _, getResolver as a, BaseRenownBuilder as b, RenownSession as c, RenownSessionProfile as d, VerifyRenownSessionOptions as f, fetchRenownProfile as g, verifyRenownSession as h, createAuthBearerToken as i, RenownSessionClaims as l, serializeRenownSessionCookie as m, VerifyAuthBearerTokenOptions as n, parsePkhDid as o, readSessionClaims as p, assertIsAuthCredential as r, verifyAuthBearerToken as s, ILogger as t, RenownSessionCookie as u, LocalCredentialVerifierOptions as v, Renown as w, RenownBuilderOptions as x, createLocalCredentialVerifier as y };
|
|
201
|
+
//# sourceMappingURL=utils-DtWREYeO.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-DtWREYeO.d.ts","names":[],"sources":["../src/common.ts","../src/discovery.ts","../src/renown-builder.ts","../src/local-credential-verifier.ts","../src/profile.ts","../src/session.ts","../src/utils.ts"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { a as WalletAdapterImpl, c as WalletController, d as WalletThemeColors, f as normalizeWalletTheme, i as WalletAdapterFactory, l as WalletSession, n as WalletAdapter, o as WalletAdapterMeta, r as WalletAdapterDescriptor, s as WalletAdapterProvider, t as LoginMethod, u as WalletTheme } from "../types-C-hJrsQg.js";
|
|
2
|
+
|
|
3
|
+
//#region src/wallet/controller.d.ts
|
|
4
|
+
declare function isWalletRedirectReturn(search: string, metas: WalletAdapterMeta[]): boolean;
|
|
5
|
+
declare function resolveAdapters(descriptors: WalletAdapterDescriptor[] | undefined): Promise<WalletAdapter[]>;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { LoginMethod, WalletAdapter, WalletAdapterDescriptor, WalletAdapterFactory, WalletAdapterImpl, WalletAdapterMeta, WalletAdapterProvider, WalletController, WalletSession, WalletTheme, WalletThemeColors, isWalletRedirectReturn, normalizeWalletTheme, resolveAdapters };
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/wallet/controller.ts"],"mappings":";;;iBAQgB,sBAAA,CACd,MAAA,UACA,KAAA,EAAO,iBAAA;AAAA,iBAUa,eAAA,CACpB,WAAA,EAAa,uBAAA,iBACZ,OAAA,CAAQ,aAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { n as normalizeWalletTheme, t as LoginMethod } from "../types-C_qc_62W.js";
|
|
2
|
+
//#region src/wallet/controller.ts
|
|
3
|
+
function isWalletRedirectReturn(search, metas) {
|
|
4
|
+
const params = new URLSearchParams(search);
|
|
5
|
+
return metas.some((meta) => meta.redirectReturnParams.some((param) => params.has(param)));
|
|
6
|
+
}
|
|
7
|
+
async function resolveAdapters(descriptors) {
|
|
8
|
+
if (!descriptors || descriptors.length === 0) return [];
|
|
9
|
+
const settled = await Promise.allSettled(descriptors.map((descriptor) => descriptor.load()));
|
|
10
|
+
const adapters = [];
|
|
11
|
+
const failures = [];
|
|
12
|
+
settled.forEach((result, index) => {
|
|
13
|
+
const { meta } = descriptors[index];
|
|
14
|
+
if (result.status === "fulfilled") adapters.push({
|
|
15
|
+
...result.value,
|
|
16
|
+
meta
|
|
17
|
+
});
|
|
18
|
+
else failures.push(`${meta.id}: ${describeError(result.reason)}`);
|
|
19
|
+
});
|
|
20
|
+
if (adapters.length === 0) throw new Error(`No wallet adapter could be loaded. ${failures.join("; ")}`);
|
|
21
|
+
if (failures.length > 0) console.error(`[renown] Some wallet adapters failed to load. ${failures.join("; ")}`);
|
|
22
|
+
return adapters;
|
|
23
|
+
}
|
|
24
|
+
function describeError(error) {
|
|
25
|
+
return error instanceof Error ? error.message : String(error);
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { LoginMethod, isWalletRedirectReturn, normalizeWalletTheme, resolveAdapters };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/wallet/controller.ts"],"sourcesContent":["import type {\n WalletAdapter,\n WalletAdapterDescriptor,\n WalletAdapterMeta,\n} from \"./types.js\";\n\n// True when a URL search string looks like a wallet OAuth redirect return, per\n// each adapter's own declared params — no adapter-specific strings live here.\nexport function isWalletRedirectReturn(\n search: string,\n metas: WalletAdapterMeta[],\n): boolean {\n const params = new URLSearchParams(search);\n return metas.some((meta) =>\n meta.redirectReturnParams.some((param) => params.has(param)),\n );\n}\n\n// Load the descriptors the host passed in, pairing each resolved implementation\n// with its already-eager meta so identity is declared in exactly one place.\nexport async function resolveAdapters(\n descriptors: WalletAdapterDescriptor[] | undefined,\n): Promise<WalletAdapter[]> {\n if (!descriptors || descriptors.length === 0) return [];\n // allSettled, not all: one broken loader must not take the others down.\n const settled = await Promise.allSettled(\n descriptors.map((descriptor) => descriptor.load()),\n );\n\n const adapters: WalletAdapter[] = [];\n const failures: string[] = [];\n settled.forEach((result, index) => {\n const { meta } = descriptors[index];\n if (result.status === \"fulfilled\") {\n adapters.push({ ...result.value, meta });\n } else {\n failures.push(`${meta.id}: ${describeError(result.reason)}`);\n }\n });\n\n if (adapters.length === 0) {\n throw new Error(\n `No wallet adapter could be loaded. ${failures.join(\"; \")}`,\n );\n }\n if (failures.length > 0) {\n console.error(\n `[renown] Some wallet adapters failed to load. ${failures.join(\"; \")}`,\n );\n }\n return adapters;\n}\n\nfunction describeError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n"],"mappings":";;AAQA,SAAgB,uBACd,QACA,OACS;CACT,MAAM,SAAS,IAAI,gBAAgB,OAAO;AAC1C,QAAO,MAAM,MAAM,SACjB,KAAK,qBAAqB,MAAM,UAAU,OAAO,IAAI,MAAM,CAAC,CAC7D;;AAKH,eAAsB,gBACpB,aAC0B;AAC1B,KAAI,CAAC,eAAe,YAAY,WAAW,EAAG,QAAO,EAAE;CAEvD,MAAM,UAAU,MAAM,QAAQ,WAC5B,YAAY,KAAK,eAAe,WAAW,MAAM,CAAC,CACnD;CAED,MAAM,WAA4B,EAAE;CACpC,MAAM,WAAqB,EAAE;AAC7B,SAAQ,SAAS,QAAQ,UAAU;EACjC,MAAM,EAAE,SAAS,YAAY;AAC7B,MAAI,OAAO,WAAW,YACpB,UAAS,KAAK;GAAE,GAAG,OAAO;GAAO;GAAM,CAAC;MAExC,UAAS,KAAK,GAAG,KAAK,GAAG,IAAI,cAAc,OAAO,OAAO,GAAG;GAE9D;AAEF,KAAI,SAAS,WAAW,EACtB,OAAM,IAAI,MACR,sCAAsC,SAAS,KAAK,KAAK,GAC1D;AAEH,KAAI,SAAS,SAAS,EACpB,SAAQ,MACN,iDAAiD,SAAS,KAAK,KAAK,GACrE;AAEH,QAAO;;AAGT,SAAS,cAAc,OAAwB;AAC7C,QAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { a as WalletAdapterImpl } from "../../types-C-hJrsQg.js";
|
|
2
|
+
import { r as PHRenownMockAdapterConfig } from "../../meta-BesJP74N.js";
|
|
3
|
+
|
|
4
|
+
//#region src/wallet/mock/factory.d.ts
|
|
5
|
+
/** Headless test/dev wallet adapter: `connect()` resolves immediately with a session backed by a viem local account (real EIP-712 signatures, no wallet UI or OAuth). **TEST/DEV ONLY; never enable in production** — it signs with a known key. See the reactor-browser README "Testing" and the Academy Renown auth guide. */
|
|
6
|
+
declare function createMockAdapter(config: PHRenownMockAdapterConfig): WalletAdapterImpl;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { createMockAdapter };
|
|
9
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","names":[],"sources":["../../../src/wallet/mock/factory.ts"],"mappings":";;;;;iBAqBgB,iBAAA,CACd,MAAA,EAAQ,yBAAA,GACP,iBAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { r as resolveMockMethods } from "../../meta-CHgd9Qd0.js";
|
|
2
|
+
import { privateKeyToAccount } from "viem/accounts";
|
|
3
|
+
//#region src/wallet/mock/factory.ts
|
|
4
|
+
const DEFAULT_TEST_KEY = "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80";
|
|
5
|
+
const MockProvider = (props) => props.children;
|
|
6
|
+
/** Headless test/dev wallet adapter: `connect()` resolves immediately with a session backed by a viem local account (real EIP-712 signatures, no wallet UI or OAuth). **TEST/DEV ONLY; never enable in production** — it signs with a known key. See the reactor-browser README "Testing" and the Academy Renown auth guide. */
|
|
7
|
+
function createMockAdapter(config) {
|
|
8
|
+
const account = privateKeyToAccount(config.privateKey ?? DEFAULT_TEST_KEY);
|
|
9
|
+
const chainId = config.chainId ?? 1;
|
|
10
|
+
resolveMockMethods(config.methods);
|
|
11
|
+
const signTypedData = (args) => account.signTypedData({
|
|
12
|
+
domain: args.domain,
|
|
13
|
+
types: args.types,
|
|
14
|
+
primaryType: args.primaryType,
|
|
15
|
+
message: args.message
|
|
16
|
+
});
|
|
17
|
+
const session = {
|
|
18
|
+
address: account.address,
|
|
19
|
+
chainId,
|
|
20
|
+
signTypedData
|
|
21
|
+
};
|
|
22
|
+
const controller = {
|
|
23
|
+
connect: () => Promise.resolve(session),
|
|
24
|
+
disconnect: () => Promise.resolve(),
|
|
25
|
+
getSession: () => session
|
|
26
|
+
};
|
|
27
|
+
return {
|
|
28
|
+
Provider: MockProvider,
|
|
29
|
+
useController: () => controller
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
export { createMockAdapter };
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","names":[],"sources":["../../../src/wallet/mock/factory.ts"],"sourcesContent":["import { privateKeyToAccount } from \"viem/accounts\";\nimport type { ComponentType, ReactNode } from \"react\";\nimport type { SignCredentialTypedData } from \"../../credential.js\";\nimport type {\n WalletAdapterImpl,\n WalletController,\n WalletSession,\n} from \"../types.js\";\nimport { resolveMockMethods, type PHRenownMockAdapterConfig } from \"./meta.js\";\n\ntype Hex = `0x${string}`;\n\n// Well-known Anvil/Hardhat test account #0 private key. Default so tests need no\n// key; every connect resolves to its deterministic address.\nconst DEFAULT_TEST_KEY: Hex =\n \"0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80\";\n\nconst MockProvider: ComponentType<{ children: ReactNode }> = (props) =>\n props.children;\n\n/** Headless test/dev wallet adapter: `connect()` resolves immediately with a session backed by a viem local account (real EIP-712 signatures, no wallet UI or OAuth). **TEST/DEV ONLY; never enable in production** — it signs with a known key. See the reactor-browser README \"Testing\" and the Academy Renown auth guide. */\nexport function createMockAdapter(\n config: PHRenownMockAdapterConfig,\n): WalletAdapterImpl {\n const account = privateKeyToAccount(config.privateKey ?? DEFAULT_TEST_KEY);\n const chainId = config.chainId ?? 1;\n // Validated here too: the descriptor resolves these for its meta, but the\n // factory is public API and may be called directly.\n resolveMockMethods(config.methods);\n\n const signTypedData: SignCredentialTypedData = (args) =>\n account.signTypedData({\n domain: args.domain,\n types: args.types,\n primaryType: args.primaryType,\n message: args.message,\n } as unknown as Parameters<typeof account.signTypedData>[0]);\n\n const session: WalletSession = {\n address: account.address,\n chainId,\n signTypedData,\n };\n\n const controller: WalletController = {\n connect: () => Promise.resolve(session),\n disconnect: () => Promise.resolve(),\n getSession: () => session,\n };\n\n return { Provider: MockProvider, useController: () => controller };\n}\n"],"mappings":";;;AAcA,MAAM,mBACJ;AAEF,MAAM,gBAAwD,UAC5D,MAAM;;AAGR,SAAgB,kBACd,QACmB;CACnB,MAAM,UAAU,oBAAoB,OAAO,cAAc,iBAAiB;CAC1E,MAAM,UAAU,OAAO,WAAW;AAGlC,oBAAmB,OAAO,QAAQ;CAElC,MAAM,iBAA0C,SAC9C,QAAQ,cAAc;EACpB,QAAQ,KAAK;EACb,OAAO,KAAK;EACZ,aAAa,KAAK;EAClB,SAAS,KAAK;EACf,CAA2D;CAE9D,MAAM,UAAyB;EAC7B,SAAS,QAAQ;EACjB;EACA;EACD;CAED,MAAM,aAA+B;EACnC,eAAe,QAAQ,QAAQ,QAAQ;EACvC,kBAAkB,QAAQ,SAAS;EACnC,kBAAkB;EACnB;AAED,QAAO;EAAE,UAAU;EAAc,qBAAqB;EAAY"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { r as WalletAdapterDescriptor } from "../../types-C-hJrsQg.js";
|
|
2
|
+
import { a as resolveMockMethods, i as mockAdapterMeta, n as MockLoginMethod, r as PHRenownMockAdapterConfig, t as DEFAULT_MOCK_METHODS } from "../../meta-BesJP74N.js";
|
|
3
|
+
|
|
4
|
+
//#region src/wallet/mock/index.d.ts
|
|
5
|
+
/** Headless test/dev wallet adapter for `RenownWalletProvider`: signs real EIP-712 credentials with a local viem account, no wallet UI or OAuth, so e2e sign-in is deterministic. **TEST/DEV ONLY; never enable in production** — it signs with a known key. Needs only `viem`, which `@renown/sdk` already depends on. */
|
|
6
|
+
declare function mockAdapter(config: PHRenownMockAdapterConfig): WalletAdapterDescriptor;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { DEFAULT_MOCK_METHODS, type MockLoginMethod, type PHRenownMockAdapterConfig, mockAdapter, mockAdapterMeta, resolveMockMethods };
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/wallet/mock/index.ts"],"mappings":";;;;;iBAQgB,WAAA,CACd,MAAA,EAAQ,yBAAA,GACP,uBAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { n as mockAdapterMeta, r as resolveMockMethods, t as DEFAULT_MOCK_METHODS } from "../../meta-CHgd9Qd0.js";
|
|
2
|
+
//#region src/wallet/mock/index.ts
|
|
3
|
+
/** Headless test/dev wallet adapter for `RenownWalletProvider`: signs real EIP-712 credentials with a local viem account, no wallet UI or OAuth, so e2e sign-in is deterministic. **TEST/DEV ONLY; never enable in production** — it signs with a known key. Needs only `viem`, which `@renown/sdk` already depends on. */
|
|
4
|
+
function mockAdapter(config) {
|
|
5
|
+
return {
|
|
6
|
+
meta: {
|
|
7
|
+
...mockAdapterMeta,
|
|
8
|
+
supportedMethods: resolveMockMethods(config.methods)
|
|
9
|
+
},
|
|
10
|
+
load: () => import("./factory.js").then((m) => m.createMockAdapter(config))
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { DEFAULT_MOCK_METHODS, mockAdapter, mockAdapterMeta, resolveMockMethods };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/wallet/mock/index.ts"],"sourcesContent":["import type { WalletAdapterDescriptor } from \"../types.js\";\nimport {\n mockAdapterMeta,\n resolveMockMethods,\n type PHRenownMockAdapterConfig,\n} from \"./meta.js\";\n\n/** Headless test/dev wallet adapter for `RenownWalletProvider`: signs real EIP-712 credentials with a local viem account, no wallet UI or OAuth, so e2e sign-in is deterministic. **TEST/DEV ONLY; never enable in production** — it signs with a known key. Needs only `viem`, which `@renown/sdk` already depends on. */\nexport function mockAdapter(\n config: PHRenownMockAdapterConfig,\n): WalletAdapterDescriptor {\n return {\n meta: {\n ...mockAdapterMeta,\n supportedMethods: resolveMockMethods(config.methods),\n },\n load: () => import(\"./factory.js\").then((m) => m.createMockAdapter(config)),\n };\n}\n\nexport {\n DEFAULT_MOCK_METHODS,\n mockAdapterMeta,\n resolveMockMethods,\n} from \"./meta.js\";\nexport type { MockLoginMethod, PHRenownMockAdapterConfig } from \"./meta.js\";\n"],"mappings":";;;AAQA,SAAgB,YACd,QACyB;AACzB,QAAO;EACL,MAAM;GACJ,GAAG;GACH,kBAAkB,mBAAmB,OAAO,QAAQ;GACrD;EACD,YAAY,OAAO,gBAAgB,MAAM,MAAM,EAAE,kBAAkB,OAAO,CAAC;EAC5E"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { at as SignCredentialTypedData } from "../../types-BGQKPoUr.js";
|
|
2
|
+
import { a as WalletAdapterImpl, l as WalletSession, t as LoginMethod, u as WalletTheme } from "../../types-C-hJrsQg.js";
|
|
3
|
+
import { i as SendCodeOptions, n as PrivyEmailStatus, o as PHRenownPrivyAdapterConfig, r as PrivyWalletController, s as PrivyChain, t as PrivyAuthState } from "../../types-DInveFLz.js";
|
|
4
|
+
import { ComponentType, ReactNode } from "react";
|
|
5
|
+
import { ConnectedWallet, LoginModalOptions } from "@privy-io/react-auth";
|
|
6
|
+
|
|
7
|
+
//#region src/wallet/privy/adapter.d.ts
|
|
8
|
+
type Hex = `0x${string}`;
|
|
9
|
+
type PrivyOAuthProviderId = "google" | "apple";
|
|
10
|
+
interface PrivyBindings {
|
|
11
|
+
openLoginModal: (options?: LoginModalOptions) => void;
|
|
12
|
+
initOAuth: (options: {
|
|
13
|
+
provider: PrivyOAuthProviderId;
|
|
14
|
+
}) => Promise<void>;
|
|
15
|
+
sendCode: (options: {
|
|
16
|
+
email: string;
|
|
17
|
+
disableSignup?: boolean;
|
|
18
|
+
}) => Promise<void>;
|
|
19
|
+
loginWithCode: (options: {
|
|
20
|
+
code: string;
|
|
21
|
+
}) => Promise<void>;
|
|
22
|
+
logout: () => Promise<void>;
|
|
23
|
+
signTypedData: (args: Parameters<SignCredentialTypedData>[0], address: Hex) => Promise<Hex>;
|
|
24
|
+
}
|
|
25
|
+
declare class PrivyCore {
|
|
26
|
+
readonly supportedMethods: LoginMethod[];
|
|
27
|
+
private bindings;
|
|
28
|
+
private pending;
|
|
29
|
+
private session;
|
|
30
|
+
private listeners;
|
|
31
|
+
private state;
|
|
32
|
+
private stateListeners;
|
|
33
|
+
constructor(supportedMethods: LoginMethod[]);
|
|
34
|
+
bind(bindings: PrivyBindings): () => void;
|
|
35
|
+
getSession(): WalletSession | undefined;
|
|
36
|
+
subscribe(listener: (session: WalletSession | undefined) => void): () => void;
|
|
37
|
+
private emit;
|
|
38
|
+
getState(): PrivyAuthState;
|
|
39
|
+
subscribeState(listener: (state: PrivyAuthState) => void): () => void;
|
|
40
|
+
syncState(next: PrivyAuthState): void;
|
|
41
|
+
syncFromEmbeddedWallet(wallet: ConnectedWallet): void;
|
|
42
|
+
clearSession(): void;
|
|
43
|
+
handleLoginError(error: unknown): void;
|
|
44
|
+
private requireBindings;
|
|
45
|
+
private requireMethod;
|
|
46
|
+
private awaitSession;
|
|
47
|
+
connect(method?: LoginMethod): Promise<WalletSession>;
|
|
48
|
+
sendCode(email: string, options?: SendCodeOptions): Promise<void>;
|
|
49
|
+
loginWithCode(code: string): Promise<WalletSession>;
|
|
50
|
+
disconnect(): Promise<void>;
|
|
51
|
+
private currentBindings;
|
|
52
|
+
private whenReady;
|
|
53
|
+
}
|
|
54
|
+
//#endregion
|
|
55
|
+
//#region src/wallet/privy/bridge.d.ts
|
|
56
|
+
interface PrivyAdapterBridgeProps {
|
|
57
|
+
core: PrivyCore;
|
|
58
|
+
}
|
|
59
|
+
declare function PrivyAdapterBridge({
|
|
60
|
+
core
|
|
61
|
+
}: PrivyAdapterBridgeProps): null;
|
|
62
|
+
//#endregion
|
|
63
|
+
//#region src/wallet/privy/provider.d.ts
|
|
64
|
+
interface PrivyProviderConfig {
|
|
65
|
+
appId: string;
|
|
66
|
+
clientId?: string;
|
|
67
|
+
chain?: PrivyChain;
|
|
68
|
+
walletList?: string[];
|
|
69
|
+
}
|
|
70
|
+
declare function createPrivyProvider(core: PrivyCore, config: PrivyProviderConfig): ComponentType<{
|
|
71
|
+
children: ReactNode;
|
|
72
|
+
theme?: WalletTheme;
|
|
73
|
+
}>;
|
|
74
|
+
//#endregion
|
|
75
|
+
//#region src/wallet/privy/factory.d.ts
|
|
76
|
+
declare function createPrivyAdapter(config: PHRenownPrivyAdapterConfig): WalletAdapterImpl;
|
|
77
|
+
//#endregion
|
|
78
|
+
export { PrivyAdapterBridge, type PrivyAuthState, type PrivyBindings, PrivyCore, type PrivyEmailStatus, type PrivyWalletController, type SendCodeOptions, createPrivyAdapter, createPrivyProvider };
|
|
79
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","names":[],"sources":["../../../src/wallet/privy/adapter.ts","../../../src/wallet/privy/bridge.tsx","../../../src/wallet/privy/provider.tsx","../../../src/wallet/privy/factory.ts"],"mappings":";;;;;;;KAUK,GAAA;AAAA,KAcA,oBAAA;AAAA,UAaY,aAAA;EACf,cAAA,GAAiB,OAAA,GAAU,iBAAA;EAC3B,SAAA,GAAY,OAAA;IAAW,QAAA,EAAU,oBAAA;EAAA,MAA2B,OAAA;EAC5D,QAAA,GAAW,OAAA;IACT,KAAA;IACA,aAAA;EAAA,MACI,OAAA;EACN,aAAA,GAAgB,OAAA;IAAW,IAAA;EAAA,MAAmB,OAAA;EAC9C,MAAA,QAAc,OAAA;EACd,aAAA,GACE,IAAA,EAAM,UAAA,CAAW,uBAAA,MACjB,OAAA,EAAS,GAAA,KACN,OAAA,CAAQ,GAAA;AAAA;AAAA,cAgBF,SAAA;EAAA,SACF,gBAAA,EAAkB,WAAA;EAAA,QAEnB,QAAA;EAAA,QACA,OAAA;EAAA,QACA,OAAA;EAAA,QACA,SAAA;EAAA,QACA,KAAA;EAAA,QACA,cAAA;cAEI,gBAAA,EAAkB,WAAA;EAI9B,IAAA,CAAK,QAAA,EAAU,aAAA;EAOf,UAAA,CAAA,GAAc,aAAA;EAMd,SAAA,CACE,QAAA,GAAW,OAAA,EAAS,aAAA;EAAA,QASd,IAAA;EAIR,QAAA,CAAA,GAAY,cAAA;EAIZ,cAAA,CAAe,QAAA,GAAW,KAAA,EAAO,cAAA;EASjC,SAAA,CAAU,IAAA,EAAM,cAAA;EAiBhB,sBAAA,CAAuB,MAAA,EAAQ,eAAA;EA8B/B,YAAA,CAAA;EAOA,gBAAA,CAAiB,KAAA;EAAA,QAOT,eAAA;EAAA,QASA,aAAA;EAAA,QAQA,YAAA;EAuBF,OAAA,CAAQ,MAAA,GAAS,WAAA,GAAc,OAAA,CAAQ,aAAA;EAyBvC,QAAA,CAAS,KAAA,UAAe,OAAA,GAAU,eAAA,GAAkB,OAAA;EAQpD,aAAA,CAAc,IAAA,WAAe,OAAA,CAAQ,aAAA;EAWrC,UAAA,CAAA,GAAc,OAAA;EAAA,QAYZ,eAAA;EAAA,QAIA,SAAA;AAAA;;;UCxPA,uBAAA;EACR,IAAA,EAAM,SAAA;AAAA;AAAA,iBAKQ,kBAAA,CAAA;EAAqB;AAAA,GAAQ,uBAAA;;;UC7BnC,mBAAA;EACR,KAAA;EACA,QAAA;EACA,KAAA,GAAQ,UAAA;EACR,UAAA;AAAA;AAAA,iBAKc,mBAAA,CACd,IAAA,EAAM,SAAA,EACN,MAAA,EAAQ,mBAAA,GACP,aAAA;EAAgB,QAAA,EAAU,SAAA;EAAW,KAAA,GAAQ,WAAA;AAAA;;;iBCLhC,kBAAA,CACd,MAAA,EAAQ,0BAAA,GACP,iBAAA"}
|