accounts 0.3.0 → 0.4.1
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/CHANGELOG.md +13 -0
- package/LICENSE +21 -0
- package/README.md +97 -0
- package/dist/core/AccessKey.d.ts +55 -0
- package/dist/core/AccessKey.d.ts.map +1 -0
- package/dist/core/AccessKey.js +69 -0
- package/dist/core/AccessKey.js.map +1 -0
- package/dist/core/Account.d.ts +91 -0
- package/dist/core/Account.d.ts.map +1 -0
- package/dist/core/Account.js +64 -0
- package/dist/core/Account.js.map +1 -0
- package/dist/core/Adapter.d.ts +187 -0
- package/dist/core/Adapter.d.ts.map +1 -0
- package/dist/core/Adapter.js +7 -0
- package/dist/core/Adapter.js.map +1 -0
- package/dist/core/Ceremony.d.ts +109 -0
- package/dist/core/Ceremony.d.ts.map +1 -0
- package/dist/core/Ceremony.js +104 -0
- package/dist/core/Ceremony.js.map +1 -0
- package/dist/core/Client.d.ts +16 -0
- package/dist/core/Client.d.ts.map +1 -0
- package/dist/core/Client.js +18 -0
- package/dist/core/Client.js.map +1 -0
- package/dist/core/Dialog.d.ts +52 -0
- package/dist/core/Dialog.d.ts.map +1 -0
- package/dist/core/Dialog.js +342 -0
- package/dist/core/Dialog.js.map +1 -0
- package/dist/core/Expiry.d.ts +15 -0
- package/dist/core/Expiry.d.ts.map +1 -0
- package/dist/core/Expiry.js +29 -0
- package/dist/core/Expiry.js.map +1 -0
- package/dist/core/Messenger.d.ts +86 -0
- package/dist/core/Messenger.d.ts.map +1 -0
- package/dist/core/Messenger.js +127 -0
- package/dist/core/Messenger.js.map +1 -0
- package/dist/core/Provider.d.ts +69 -0
- package/dist/core/Provider.d.ts.map +1 -0
- package/dist/core/Provider.js +401 -0
- package/dist/core/Provider.js.map +1 -0
- package/dist/core/Remote.d.ts +114 -0
- package/dist/core/Remote.d.ts.map +1 -0
- package/dist/core/Remote.js +116 -0
- package/dist/core/Remote.js.map +1 -0
- package/dist/core/Schema.d.ts +805 -0
- package/dist/core/Schema.d.ts.map +1 -0
- package/dist/core/Schema.js +43 -0
- package/dist/core/Schema.js.map +1 -0
- package/dist/core/Storage.d.ts +42 -0
- package/dist/core/Storage.d.ts.map +1 -0
- package/dist/core/Storage.js +173 -0
- package/dist/core/Storage.js.map +1 -0
- package/dist/core/Store.d.ts +58 -0
- package/dist/core/Store.d.ts.map +1 -0
- package/dist/core/Store.js +58 -0
- package/dist/core/Store.js.map +1 -0
- package/dist/core/adapters/dangerous_secp256k1.d.ts +30 -0
- package/dist/core/adapters/dangerous_secp256k1.d.ts.map +1 -0
- package/dist/core/adapters/dangerous_secp256k1.js +39 -0
- package/dist/core/adapters/dangerous_secp256k1.js.map +1 -0
- package/dist/core/adapters/dialog.d.ts +31 -0
- package/dist/core/adapters/dialog.d.ts.map +1 -0
- package/dist/core/adapters/dialog.js +306 -0
- package/dist/core/adapters/dialog.js.map +1 -0
- package/dist/core/adapters/local.d.ts +33 -0
- package/dist/core/adapters/local.d.ts.map +1 -0
- package/dist/core/adapters/local.js +227 -0
- package/dist/core/adapters/local.js.map +1 -0
- package/dist/core/adapters/webAuthn.d.ts +36 -0
- package/dist/core/adapters/webAuthn.d.ts.map +1 -0
- package/dist/core/adapters/webAuthn.js +93 -0
- package/dist/core/adapters/webAuthn.js.map +1 -0
- package/dist/core/internal/withDedupe.d.ts +12 -0
- package/dist/core/internal/withDedupe.d.ts.map +1 -0
- package/dist/core/internal/withDedupe.js +12 -0
- package/dist/core/internal/withDedupe.js.map +1 -0
- package/dist/core/zod/request.d.ts +31 -0
- package/dist/core/zod/request.d.ts.map +1 -0
- package/dist/core/zod/request.js +41 -0
- package/dist/core/zod/request.js.map +1 -0
- package/dist/core/zod/rpc.d.ts +603 -0
- package/dist/core/zod/rpc.d.ts.map +1 -0
- package/dist/core/zod/rpc.js +293 -0
- package/dist/core/zod/rpc.js.map +1 -0
- package/dist/core/zod/utils.d.ts +18 -0
- package/dist/core/zod/utils.d.ts.map +1 -0
- package/dist/core/zod/utils.js +21 -0
- package/dist/core/zod/utils.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/types.d.ts +284 -0
- package/dist/internal/types.d.ts.map +1 -0
- package/dist/internal/types.js +2 -0
- package/dist/internal/types.js.map +1 -0
- package/dist/server/Handler.d.ts +257 -0
- package/dist/server/Handler.d.ts.map +1 -0
- package/dist/server/Handler.js +433 -0
- package/dist/server/Handler.js.map +1 -0
- package/dist/server/Kv.d.ts +16 -0
- package/dist/server/Kv.d.ts.map +1 -0
- package/dist/server/Kv.js +30 -0
- package/dist/server/Kv.js.map +1 -0
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +3 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/internal/requestListener.d.ts +124 -0
- package/dist/server/internal/requestListener.d.ts.map +1 -0
- package/dist/server/internal/requestListener.js +173 -0
- package/dist/server/internal/requestListener.js.map +1 -0
- package/dist/wagmi/Connector.d.ts +93 -0
- package/dist/wagmi/Connector.d.ts.map +1 -0
- package/dist/wagmi/Connector.js +238 -0
- package/dist/wagmi/Connector.js.map +1 -0
- package/dist/wagmi/index.d.ts +3 -0
- package/dist/wagmi/index.d.ts.map +1 -0
- package/dist/wagmi/index.js +3 -0
- package/dist/wagmi/index.js.map +1 -0
- package/package.json +56 -2
- package/src/core/AccessKey.test.ts +257 -0
- package/src/core/AccessKey.ts +123 -0
- package/src/core/Account.test.ts +309 -0
- package/src/core/Account.ts +152 -0
- package/src/core/Adapter.ts +238 -0
- package/src/core/Ceremony.browser.test.ts +239 -0
- package/src/core/Ceremony.test.ts +151 -0
- package/src/core/Ceremony.ts +203 -0
- package/src/core/Client.ts +36 -0
- package/src/core/Dialog.browser.test.ts +309 -0
- package/src/core/Dialog.test-d.ts +19 -0
- package/src/core/Dialog.ts +442 -0
- package/src/core/Expiry.ts +34 -0
- package/src/core/Messenger.ts +206 -0
- package/src/core/Provider.browser.test.ts +774 -0
- package/src/core/Provider.connect.browser.test.ts +415 -0
- package/src/core/Provider.test-d.ts +53 -0
- package/src/core/Provider.test.ts +1566 -0
- package/src/core/Provider.ts +559 -0
- package/src/core/Remote.ts +262 -0
- package/src/core/Schema.test-d.ts +211 -0
- package/src/core/Schema.ts +143 -0
- package/src/core/Storage.ts +213 -0
- package/src/core/Store.test.ts +287 -0
- package/src/core/Store.ts +129 -0
- package/src/core/adapters/dangerous_secp256k1.ts +53 -0
- package/src/core/adapters/dialog.ts +379 -0
- package/src/core/adapters/local.test.ts +97 -0
- package/src/core/adapters/local.ts +277 -0
- package/src/core/adapters/webAuthn.ts +129 -0
- package/src/core/internal/withDedupe.test.ts +116 -0
- package/src/core/internal/withDedupe.ts +20 -0
- package/src/core/mppx.test.ts +83 -0
- package/src/core/zod/request.test.ts +121 -0
- package/src/core/zod/request.ts +70 -0
- package/src/core/zod/rpc.ts +374 -0
- package/src/core/zod/utils.test.ts +69 -0
- package/src/core/zod/utils.ts +40 -0
- package/src/index.ts +14 -0
- package/src/internal/types.ts +378 -0
- package/src/server/Handler.test.ts +1014 -0
- package/src/server/Handler.ts +605 -0
- package/src/server/Kv.ts +46 -0
- package/src/server/index.ts +2 -0
- package/src/server/internal/requestListener.ts +273 -0
- package/src/tsconfig.json +9 -0
- package/src/wagmi/Connector.ts +287 -0
- package/src/wagmi/index.ts +2 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../src/core/Schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { RpcSchema } from 'ox';
|
|
2
|
+
import { rpcSchema } from 'viem';
|
|
3
|
+
import * as z from 'zod/mini';
|
|
4
|
+
import * as Rpc from './zod/rpc.js';
|
|
5
|
+
/** All provider-handled RPC method definitions. */
|
|
6
|
+
export const schema = from([
|
|
7
|
+
Rpc.eth_accounts.schema,
|
|
8
|
+
Rpc.eth_chainId.schema,
|
|
9
|
+
Rpc.eth_requestAccounts.schema,
|
|
10
|
+
Rpc.eth_sendTransaction.schema,
|
|
11
|
+
Rpc.eth_signTransaction.schema,
|
|
12
|
+
Rpc.eth_sendTransactionSync.schema,
|
|
13
|
+
Rpc.eth_signTypedData_v4.schema,
|
|
14
|
+
Rpc.personal_sign.schema,
|
|
15
|
+
Rpc.wallet_sendCalls.schema,
|
|
16
|
+
Rpc.wallet_getBalances.schema,
|
|
17
|
+
Rpc.wallet_getCallsStatus.schema,
|
|
18
|
+
Rpc.wallet_getCapabilities.schema,
|
|
19
|
+
Rpc.wallet_connect.schema,
|
|
20
|
+
Rpc.wallet_disconnect.schema,
|
|
21
|
+
Rpc.wallet_authorizeAccessKey.schema,
|
|
22
|
+
Rpc.wallet_revokeAccessKey.schema,
|
|
23
|
+
Rpc.wallet_switchEthereumChain.schema,
|
|
24
|
+
]);
|
|
25
|
+
export const ox = RpcSchema.from();
|
|
26
|
+
export const viem = rpcSchema();
|
|
27
|
+
/** Builds a request `z.object` from a schema item at runtime. */
|
|
28
|
+
function toRequestSchema(item) {
|
|
29
|
+
if (item.params)
|
|
30
|
+
return z.object({ method: item.method, params: item.params });
|
|
31
|
+
return z.object({ method: item.method });
|
|
32
|
+
}
|
|
33
|
+
/** Discriminated union of all provider-handled RPC requests. */
|
|
34
|
+
export const Request = z.discriminatedUnion('method', schema.map(toRequestSchema));
|
|
35
|
+
/** Defines a JSON-RPC method schema item. */
|
|
36
|
+
export function defineItem(item) {
|
|
37
|
+
return item;
|
|
38
|
+
}
|
|
39
|
+
/** Creates a {@link Schema}. */
|
|
40
|
+
export function from(schema) {
|
|
41
|
+
return schema;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=Schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../src/core/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAChC,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAE7B,OAAO,KAAK,GAAG,MAAM,cAAc,CAAA;AAEnC,mDAAmD;AACnD,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC;IACzB,GAAG,CAAC,YAAY,CAAC,MAAM;IACvB,GAAG,CAAC,WAAW,CAAC,MAAM;IACtB,GAAG,CAAC,mBAAmB,CAAC,MAAM;IAC9B,GAAG,CAAC,mBAAmB,CAAC,MAAM;IAC9B,GAAG,CAAC,mBAAmB,CAAC,MAAM;IAC9B,GAAG,CAAC,uBAAuB,CAAC,MAAM;IAClC,GAAG,CAAC,oBAAoB,CAAC,MAAM;IAC/B,GAAG,CAAC,aAAa,CAAC,MAAM;IACxB,GAAG,CAAC,gBAAgB,CAAC,MAAM;IAC3B,GAAG,CAAC,kBAAkB,CAAC,MAAM;IAC7B,GAAG,CAAC,qBAAqB,CAAC,MAAM;IAChC,GAAG,CAAC,sBAAsB,CAAC,MAAM;IACjC,GAAG,CAAC,cAAc,CAAC,MAAM;IACzB,GAAG,CAAC,iBAAiB,CAAC,MAAM;IAC5B,GAAG,CAAC,yBAAyB,CAAC,MAAM;IACpC,GAAG,CAAC,sBAAsB,CAAC,MAAM;IACjC,GAAG,CAAC,0BAA0B,CAAC,MAAM;CACtC,CAAC,CAAA;AAuEF,MAAM,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,EAAM,CAAA;AAItC,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,EAAQ,CAAA;AAOrC,iEAAiE;AACjE,SAAS,eAAe,CAA0B,IAAU;IAC1D,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAU,CAAA;IACvF,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAU,CAAA;AACnD,CAAC;AAgBD,gEAAgE;AAChE,MAAM,CAAC,MAAM,OAAO,GAGhB,CAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAU,CAAC,CAAA;AAGxE,6CAA6C;AAC7C,MAAM,UAAU,UAAU,CAA0B,IAAU;IAC5D,OAAO,IAAI,CAAA;AACb,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,IAAI,CAA8B,MAAc;IAC9D,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { MaybePromise } from '../internal/types.js';
|
|
2
|
+
/** Pluggable storage adapter for persisting provider state. */
|
|
3
|
+
export type Storage = {
|
|
4
|
+
getItem: <value>(name: string) => MaybePromise<value | null>;
|
|
5
|
+
setItem: (name: string, value: unknown) => MaybePromise<void>;
|
|
6
|
+
removeItem: (name: string) => MaybePromise<void>;
|
|
7
|
+
};
|
|
8
|
+
/** Creates a storage adapter from a custom implementation, optionally scoping all keys under a prefix. */
|
|
9
|
+
export declare function from(storage: Storage, options?: from.Options): Storage;
|
|
10
|
+
export declare namespace from {
|
|
11
|
+
type Options = {
|
|
12
|
+
/** Key prefix for all stored items. @default "tempo" */
|
|
13
|
+
key?: string | undefined;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Combines multiple storage adapters into one. Reads return the first
|
|
18
|
+
* non-null result; writes propagate to all storages (failures are isolated
|
|
19
|
+
* via `Promise.allSettled`).
|
|
20
|
+
*/
|
|
21
|
+
export declare function combine(...storages: readonly Storage[]): Storage;
|
|
22
|
+
/** Creates a `document.cookie`-backed storage adapter. Uses `SameSite=None; Secure` with a 1-year expiry. Deep objects are flattened into individual cookies to stay within the 4KB-per-cookie browser limit. */
|
|
23
|
+
export declare function cookie(options?: cookie.Options): Storage;
|
|
24
|
+
export declare namespace cookie {
|
|
25
|
+
type Options = from.Options;
|
|
26
|
+
}
|
|
27
|
+
/** Creates an IndexedDB-backed storage adapter. Stores raw values (no JSON serialization). */
|
|
28
|
+
export declare function idb(options?: idb.Options): Storage;
|
|
29
|
+
export declare namespace idb {
|
|
30
|
+
type Options = from.Options;
|
|
31
|
+
}
|
|
32
|
+
/** Creates a `localStorage`-backed storage adapter. */
|
|
33
|
+
export declare function localStorage(options?: localStorage.Options): Storage;
|
|
34
|
+
export declare namespace localStorage {
|
|
35
|
+
type Options = from.Options;
|
|
36
|
+
}
|
|
37
|
+
/** Creates an in-memory storage adapter. Useful for SSR and tests. */
|
|
38
|
+
export declare function memory(options?: memory.Options): Storage;
|
|
39
|
+
export declare namespace memory {
|
|
40
|
+
type Options = from.Options;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=Storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Storage.d.ts","sourceRoot":"","sources":["../../src/core/Storage.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAExD,+DAA+D;AAC/D,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,KAAK,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;IAC5D,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,YAAY,CAAC,IAAI,CAAC,CAAA;IAC7D,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,YAAY,CAAC,IAAI,CAAC,CAAA;CACjD,CAAA;AAED,0GAA0G;AAC1G,wBAAgB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,IAAI,CAAC,OAAY,GAAG,OAAO,CAQ1E;AAED,MAAM,CAAC,OAAO,WAAW,IAAI,CAAC;IAC5B,KAAK,OAAO,GAAG;QACb,wDAAwD;QACxD,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KACzB,CAAA;CACF;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,GAAG,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAehE;AAED,iNAAiN;AACjN,wBAAgB,MAAM,CAAC,OAAO,GAAE,MAAM,CAAC,OAAY,GAAG,OAAO,CA+E5D;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,KAAK,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;CAC5B;AAED,8FAA8F;AAC9F,wBAAgB,GAAG,CAAC,OAAO,GAAE,GAAG,CAAC,OAAY,GAAG,OAAO,CAkBtD;AAED,MAAM,CAAC,OAAO,WAAW,GAAG,CAAC;IAC3B,KAAK,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;CAC5B;AAED,uDAAuD;AACvD,wBAAgB,YAAY,CAAC,OAAO,GAAE,YAAY,CAAC,OAAY,GAAG,OAAO,CAqBxE;AAED,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IACpC,KAAK,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;CAC5B;AAED,sEAAsE;AACtE,wBAAgB,MAAM,CAAC,OAAO,GAAE,MAAM,CAAC,OAAY,GAAG,OAAO,CAgB5D;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,KAAK,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;CAC5B"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { createStore, del, get, set } from 'idb-keyval';
|
|
2
|
+
import { Json } from 'ox';
|
|
3
|
+
/** Creates a storage adapter from a custom implementation, optionally scoping all keys under a prefix. */
|
|
4
|
+
export function from(storage, options = {}) {
|
|
5
|
+
const key = options.key ?? 'tempo';
|
|
6
|
+
const prefix = `${key}.`;
|
|
7
|
+
return {
|
|
8
|
+
getItem: (name) => storage.getItem(`${prefix}${name}`),
|
|
9
|
+
setItem: (name, value) => storage.setItem(`${prefix}${name}`, value),
|
|
10
|
+
removeItem: (name) => storage.removeItem(`${prefix}${name}`),
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Combines multiple storage adapters into one. Reads return the first
|
|
15
|
+
* non-null result; writes propagate to all storages (failures are isolated
|
|
16
|
+
* via `Promise.allSettled`).
|
|
17
|
+
*/
|
|
18
|
+
export function combine(...storages) {
|
|
19
|
+
return {
|
|
20
|
+
async getItem(name) {
|
|
21
|
+
const results = await Promise.allSettled(storages.map((x) => x.getItem(name)));
|
|
22
|
+
const result = results.find((x) => x.status === 'fulfilled' && x.value !== null);
|
|
23
|
+
if (result?.status !== 'fulfilled')
|
|
24
|
+
return null;
|
|
25
|
+
return result.value;
|
|
26
|
+
},
|
|
27
|
+
async removeItem(name) {
|
|
28
|
+
await Promise.allSettled(storages.map((x) => x.removeItem(name)));
|
|
29
|
+
},
|
|
30
|
+
async setItem(name, value) {
|
|
31
|
+
await Promise.allSettled(storages.map((x) => x.setItem(name, value)));
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/** Creates a `document.cookie`-backed storage adapter. Uses `SameSite=None; Secure` with a 1-year expiry. Deep objects are flattened into individual cookies to stay within the 4KB-per-cookie browser limit. */
|
|
36
|
+
export function cookie(options = {}) {
|
|
37
|
+
function getRaw(name) {
|
|
38
|
+
return document.cookie.split('; ').find((x) => x.startsWith(`${name}=`));
|
|
39
|
+
}
|
|
40
|
+
function setRaw(name, value) {
|
|
41
|
+
document.cookie = `${name}=${value};path=/;samesite=None;secure;max-age=31536000`;
|
|
42
|
+
}
|
|
43
|
+
function removeRaw(name) {
|
|
44
|
+
document.cookie = `${name}=;max-age=-1;path=/`;
|
|
45
|
+
}
|
|
46
|
+
function flatten(prefix, value, result = []) {
|
|
47
|
+
if (Array.isArray(value)) {
|
|
48
|
+
for (let i = 0; i < value.length; i++)
|
|
49
|
+
flatten(`${prefix}[${i}]`, value[i], result);
|
|
50
|
+
// Store length so we know how many indices to reconstruct.
|
|
51
|
+
result.push([`${prefix}.__length`, Json.stringify(value.length)]);
|
|
52
|
+
}
|
|
53
|
+
else if (value !== null && typeof value === 'object') {
|
|
54
|
+
for (const [k, v] of Object.entries(value))
|
|
55
|
+
flatten(`${prefix}.${k}`, v, result);
|
|
56
|
+
}
|
|
57
|
+
else
|
|
58
|
+
result.push([prefix, Json.stringify(value)]);
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
function unflatten(prefix) {
|
|
62
|
+
// Check for a direct (leaf) cookie first.
|
|
63
|
+
const direct = getRaw(prefix);
|
|
64
|
+
if (direct) {
|
|
65
|
+
try {
|
|
66
|
+
return Json.parse(direct.substring(prefix.length + 1));
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Check if this is an array (has a __length cookie).
|
|
73
|
+
const lengthCookie = getRaw(`${prefix}.__length`);
|
|
74
|
+
if (lengthCookie) {
|
|
75
|
+
const length = Json.parse(lengthCookie.substring(`${prefix}.__length`.length + 1));
|
|
76
|
+
const result = [];
|
|
77
|
+
for (let i = 0; i < length; i++)
|
|
78
|
+
result.push(unflatten(`${prefix}[${i}]`));
|
|
79
|
+
return result;
|
|
80
|
+
}
|
|
81
|
+
// Collect all sub-keys (object children use `.`, array children use `[`).
|
|
82
|
+
const dotPrefix = `${prefix}.`;
|
|
83
|
+
const bracketPrefix = `${prefix}[`;
|
|
84
|
+
const children = document.cookie
|
|
85
|
+
.split('; ')
|
|
86
|
+
.filter((x) => x.startsWith(dotPrefix) || x.startsWith(bracketPrefix));
|
|
87
|
+
if (children.length === 0)
|
|
88
|
+
return null;
|
|
89
|
+
const result = {};
|
|
90
|
+
for (const entry of children) {
|
|
91
|
+
const key = entry.substring(dotPrefix.length, entry.indexOf('='));
|
|
92
|
+
const segment = key.split(/[.[]/)[0];
|
|
93
|
+
if (segment === '__length')
|
|
94
|
+
continue;
|
|
95
|
+
if (!(segment in result))
|
|
96
|
+
result[segment] = unflatten(`${dotPrefix}${segment}`);
|
|
97
|
+
}
|
|
98
|
+
return result;
|
|
99
|
+
}
|
|
100
|
+
return from({
|
|
101
|
+
getItem(name) {
|
|
102
|
+
return unflatten(name);
|
|
103
|
+
},
|
|
104
|
+
setItem(name, value) {
|
|
105
|
+
// Remove existing keys before writing.
|
|
106
|
+
this.removeItem(name);
|
|
107
|
+
for (const [k, v] of flatten(name, value))
|
|
108
|
+
setRaw(k, v);
|
|
109
|
+
},
|
|
110
|
+
removeItem(name) {
|
|
111
|
+
removeRaw(name);
|
|
112
|
+
for (const entry of document.cookie.split('; '))
|
|
113
|
+
if (entry.startsWith(`${name}.`) || entry.startsWith(`${name}[`))
|
|
114
|
+
removeRaw(entry.substring(0, entry.indexOf('=')));
|
|
115
|
+
},
|
|
116
|
+
}, options);
|
|
117
|
+
}
|
|
118
|
+
/** Creates an IndexedDB-backed storage adapter. Stores raw values (no JSON serialization). */
|
|
119
|
+
export function idb(options = {}) {
|
|
120
|
+
const store = typeof indexedDB !== 'undefined' ? createStore('tempo', 'store') : undefined;
|
|
121
|
+
return from({
|
|
122
|
+
async getItem(name) {
|
|
123
|
+
const value = await get(name, store);
|
|
124
|
+
if (value === null)
|
|
125
|
+
return null;
|
|
126
|
+
return value;
|
|
127
|
+
},
|
|
128
|
+
async setItem(name, value) {
|
|
129
|
+
await set(name, value, store);
|
|
130
|
+
},
|
|
131
|
+
async removeItem(name) {
|
|
132
|
+
await del(name, store);
|
|
133
|
+
},
|
|
134
|
+
}, options);
|
|
135
|
+
}
|
|
136
|
+
/** Creates a `localStorage`-backed storage adapter. */
|
|
137
|
+
export function localStorage(options = {}) {
|
|
138
|
+
return from({
|
|
139
|
+
getItem(name) {
|
|
140
|
+
const value = globalThis.localStorage.getItem(name);
|
|
141
|
+
if (value === null)
|
|
142
|
+
return null;
|
|
143
|
+
try {
|
|
144
|
+
return Json.parse(value);
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
setItem(name, value) {
|
|
151
|
+
globalThis.localStorage.setItem(name, Json.stringify(value));
|
|
152
|
+
},
|
|
153
|
+
removeItem(name) {
|
|
154
|
+
globalThis.localStorage.removeItem(name);
|
|
155
|
+
},
|
|
156
|
+
}, options);
|
|
157
|
+
}
|
|
158
|
+
/** Creates an in-memory storage adapter. Useful for SSR and tests. */
|
|
159
|
+
export function memory(options = {}) {
|
|
160
|
+
const store = new Map();
|
|
161
|
+
return from({
|
|
162
|
+
getItem(name) {
|
|
163
|
+
return store.get(name) ?? null;
|
|
164
|
+
},
|
|
165
|
+
setItem(name, value) {
|
|
166
|
+
store.set(name, value);
|
|
167
|
+
},
|
|
168
|
+
removeItem(name) {
|
|
169
|
+
store.delete(name);
|
|
170
|
+
},
|
|
171
|
+
}, options);
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=Storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Storage.js","sourceRoot":"","sources":["../../src/core/Storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { RpcRequest, RpcResponse } from 'ox';
|
|
2
|
+
import type { Mutate, StoreApi } from 'zustand';
|
|
3
|
+
import type { OneOf } from '../internal/types.js';
|
|
4
|
+
import type { AccessKey, Store as Account } from './Account.js';
|
|
5
|
+
import * as Storage from './Storage.js';
|
|
6
|
+
export type { AccessKey, Account };
|
|
7
|
+
/** Reactive state for the provider. */
|
|
8
|
+
export type State = {
|
|
9
|
+
/** Stored access keys. */
|
|
10
|
+
accessKeys: readonly AccessKey[];
|
|
11
|
+
/** Connected accounts. */
|
|
12
|
+
accounts: readonly Account[];
|
|
13
|
+
/** Index of the active account. */
|
|
14
|
+
activeAccount: number;
|
|
15
|
+
/** Active chain ID. */
|
|
16
|
+
chainId: number;
|
|
17
|
+
/** Queued RPC requests pending resolution by the dialog. */
|
|
18
|
+
requestQueue: readonly QueuedRequest[];
|
|
19
|
+
};
|
|
20
|
+
/** Zustand vanilla store with `subscribeWithSelector` and `persist` middleware. */
|
|
21
|
+
export type Store = Mutate<StoreApi<State>, [
|
|
22
|
+
['zustand/subscribeWithSelector', never],
|
|
23
|
+
['zustand/persist', State]
|
|
24
|
+
]>;
|
|
25
|
+
/** Options for {@link create}. */
|
|
26
|
+
export type Options = {
|
|
27
|
+
/** Initial chain ID. */
|
|
28
|
+
chainId: number;
|
|
29
|
+
/** Whether to persist credentials and access keys to storage. When `false`, only account addresses are persisted. @default true */
|
|
30
|
+
persistCredentials?: boolean | undefined;
|
|
31
|
+
/** Storage adapter for persistence. */
|
|
32
|
+
storage?: Storage.Storage | undefined;
|
|
33
|
+
};
|
|
34
|
+
/** A queued JSON-RPC request tracked in the store. */
|
|
35
|
+
export type QueuedRequest<result = unknown> = OneOf<{
|
|
36
|
+
request: RpcRequest.RpcRequest;
|
|
37
|
+
status: 'pending';
|
|
38
|
+
} | {
|
|
39
|
+
request: RpcRequest.RpcRequest;
|
|
40
|
+
result: result;
|
|
41
|
+
status: 'success';
|
|
42
|
+
} | {
|
|
43
|
+
request: RpcRequest.RpcRequest;
|
|
44
|
+
error: RpcResponse.ErrorObject;
|
|
45
|
+
status: 'error';
|
|
46
|
+
}>;
|
|
47
|
+
/**
|
|
48
|
+
* Creates a Zustand vanilla store with `subscribeWithSelector` and `persist` middleware.
|
|
49
|
+
*/
|
|
50
|
+
export declare function create(options: Options): Store;
|
|
51
|
+
/**
|
|
52
|
+
* Waits for the store to finish hydrating from storage.
|
|
53
|
+
*
|
|
54
|
+
* Returns immediately if the store has already hydrated. Otherwise, waits
|
|
55
|
+
* for the `onFinishHydration` callback with a 100ms safety timeout fallback.
|
|
56
|
+
*/
|
|
57
|
+
export declare function waitForHydration(store: Store): Promise<void>;
|
|
58
|
+
//# sourceMappingURL=Store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Store.d.ts","sourceRoot":"","sources":["../../src/core/Store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,IAAI,CAAA;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAK/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;AAElC,uCAAuC;AACvC,MAAM,MAAM,KAAK,GAAG;IAClB,0BAA0B;IAC1B,UAAU,EAAE,SAAS,SAAS,EAAE,CAAA;IAChC,0BAA0B;IAC1B,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;IAC5B,mCAAmC;IACnC,aAAa,EAAE,MAAM,CAAA;IACrB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,4DAA4D;IAC5D,YAAY,EAAE,SAAS,aAAa,EAAE,CAAA;CACvC,CAAA;AAED,mFAAmF;AACnF,MAAM,MAAM,KAAK,GAAG,MAAM,CACxB,QAAQ,CAAC,KAAK,CAAC,EACf;IAAC,CAAC,+BAA+B,EAAE,KAAK,CAAC;IAAE,CAAC,iBAAiB,EAAE,KAAK,CAAC;CAAC,CACvE,CAAA;AAED,kCAAkC;AAClC,MAAM,MAAM,OAAO,GAAG;IACpB,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,mIAAmI;IACnI,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACxC,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,GAAG,SAAS,CAAA;CACtC,CAAA;AAED,sDAAsD;AACtD,MAAM,MAAM,aAAa,CAAC,MAAM,GAAG,OAAO,IAAI,KAAK,CAC/C;IACE,OAAO,EAAE,UAAU,CAAC,UAAU,CAAA;IAC9B,MAAM,EAAE,SAAS,CAAA;CAClB,GACD;IACE,OAAO,EAAE,UAAU,CAAC,UAAU,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,SAAS,CAAA;CAClB,GACD;IACE,OAAO,EAAE,UAAU,CAAC,UAAU,CAAA;IAC9B,KAAK,EAAE,WAAW,CAAC,WAAW,CAAA;IAC9B,MAAM,EAAE,OAAO,CAAA;CAChB,CACJ,CAAA;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,CAmD9C;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAMlE"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { persist } from 'zustand/middleware';
|
|
2
|
+
import { subscribeWithSelector } from 'zustand/middleware';
|
|
3
|
+
import { createStore } from 'zustand/vanilla';
|
|
4
|
+
import * as Storage from './Storage.js';
|
|
5
|
+
/**
|
|
6
|
+
* Creates a Zustand vanilla store with `subscribeWithSelector` and `persist` middleware.
|
|
7
|
+
*/
|
|
8
|
+
export function create(options) {
|
|
9
|
+
const { chainId, persistCredentials = true, storage = typeof window !== 'undefined'
|
|
10
|
+
? Storage.idb({ key: 'tempo' })
|
|
11
|
+
: Storage.memory({ key: 'tempo' }), } = options;
|
|
12
|
+
return createStore(subscribeWithSelector(persist(() => ({
|
|
13
|
+
accessKeys: [],
|
|
14
|
+
accounts: [],
|
|
15
|
+
activeAccount: 0,
|
|
16
|
+
chainId,
|
|
17
|
+
requestQueue: [],
|
|
18
|
+
}), {
|
|
19
|
+
merge(persisted, current) {
|
|
20
|
+
const state = persisted;
|
|
21
|
+
return {
|
|
22
|
+
...state,
|
|
23
|
+
...current,
|
|
24
|
+
// Preserve in-memory credentials when persisted accounts only have addresses.
|
|
25
|
+
accounts: state.accounts?.map((persisted) => {
|
|
26
|
+
const account = current.accounts.find((a) => a.address.toLowerCase() === persisted.address.toLowerCase());
|
|
27
|
+
return account ?? persisted;
|
|
28
|
+
}) ?? current.accounts,
|
|
29
|
+
accessKeys: state.accessKeys ?? current.accessKeys,
|
|
30
|
+
chainId: state.chainId ?? current.chainId,
|
|
31
|
+
};
|
|
32
|
+
},
|
|
33
|
+
name: 'store',
|
|
34
|
+
partialize: (state) => ({
|
|
35
|
+
accounts: state.accounts,
|
|
36
|
+
activeAccount: state.activeAccount,
|
|
37
|
+
...(persistCredentials ? { accessKeys: state.accessKeys } : {}),
|
|
38
|
+
chainId: state.chainId,
|
|
39
|
+
}),
|
|
40
|
+
storage,
|
|
41
|
+
version: 0,
|
|
42
|
+
})));
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Waits for the store to finish hydrating from storage.
|
|
46
|
+
*
|
|
47
|
+
* Returns immediately if the store has already hydrated. Otherwise, waits
|
|
48
|
+
* for the `onFinishHydration` callback with a 100ms safety timeout fallback.
|
|
49
|
+
*/
|
|
50
|
+
export async function waitForHydration(store) {
|
|
51
|
+
if (store.persist.hasHydrated())
|
|
52
|
+
return;
|
|
53
|
+
await new Promise((resolve) => {
|
|
54
|
+
store.persist.onFinishHydration(() => resolve());
|
|
55
|
+
setTimeout(() => resolve(), 100);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=Store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Store.js","sourceRoot":"","sources":["../../src/core/Store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAI7C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAoDvC;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,OAAgB;IACrC,MAAM,EACJ,OAAO,EACP,kBAAkB,GAAG,IAAI,EACzB,OAAO,GAAG,OAAO,MAAM,KAAK,WAAW;QACrC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;QAC/B,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,GACrC,GAAG,OAAO,CAAA;IAEX,OAAO,WAAW,CAChB,qBAAqB,CACnB,OAAO,CACL,GAAG,EAAE,CAAC,CAAC;QACL,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,EAAE;QACZ,aAAa,EAAE,CAAC;QAChB,OAAO;QACP,YAAY,EAAE,EAAE;KACjB,CAAC,EACF;QACE,KAAK,CAAC,SAAS,EAAE,OAAO;YACtB,MAAM,KAAK,GAAG,SAAkB,CAAA;YAChC,OAAO;gBACL,GAAG,KAAK;gBACR,GAAG,OAAO;gBACV,8EAA8E;gBAC9E,QAAQ,EACN,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;oBAChC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CACnC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,CACnE,CAAA;oBACD,OAAO,OAAO,IAAI,SAAS,CAAA;gBAC7B,CAAC,CAAC,IAAI,OAAO,CAAC,QAAQ;gBACxB,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU;gBAClD,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO;aAC1C,CAAA;QACH,CAAC;QACD,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CACpB,CAAC;YACC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAqB;QACxB,OAAO;QACP,OAAO,EAAE,CAAC;KACX,CACF,CACF,CACF,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAY;IACjD,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE;QAAE,OAAM;IACvC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;QAChD,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as Adapter from '../Adapter.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a secp256k1 adapter that generates random private keys and persists them to storage.
|
|
4
|
+
*
|
|
5
|
+
* ⚠️ **Dangerous**: Private keys are stored in plaintext via the provider's storage adapter
|
|
6
|
+
* (e.g. localStorage, cookies). Use only for development, testing, or when the threat model allows it.
|
|
7
|
+
*
|
|
8
|
+
* Wraps the {@link local} adapter with automatic key generation.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { dangerous_secp256k1, Provider } from 'accounts'
|
|
13
|
+
*
|
|
14
|
+
* const provider = Provider.create({
|
|
15
|
+
* adapter: dangerous_secp256k1(),
|
|
16
|
+
* })
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare function dangerous_secp256k1(options?: dangerous_secp256k1.Options): Adapter.Adapter;
|
|
20
|
+
export declare namespace dangerous_secp256k1 {
|
|
21
|
+
type Options = {
|
|
22
|
+
/** Data URI of the provider icon. @default Black 1×1 SVG. */
|
|
23
|
+
icon?: `data:image/${string}` | undefined;
|
|
24
|
+
/** Display name of the provider (e.g. `"My Wallet"`). @default "Injected Wallet" */
|
|
25
|
+
name?: string | undefined;
|
|
26
|
+
/** Reverse DNS identifier. @default `com.{lowercase name}` */
|
|
27
|
+
rdns?: string | undefined;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=dangerous_secp256k1.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dangerous_secp256k1.d.ts","sourceRoot":"","sources":["../../../src/core/adapters/dangerous_secp256k1.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AAGxC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,mBAAmB,CAAC,OAAY,GAAG,OAAO,CAAC,OAAO,CAmB9F;AAED,MAAM,CAAC,OAAO,WAAW,mBAAmB,CAAC;IAC3C,KAAK,OAAO,GAAG;QACb,6DAA6D;QAC7D,IAAI,CAAC,EAAE,cAAc,MAAM,EAAE,GAAG,SAAS,CAAA;QACzC,oFAAoF;QACpF,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACzB,8DAA8D;QAC9D,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC1B,CAAA;CACF"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Account, Secp256k1 } from 'viem/tempo';
|
|
2
|
+
import * as Adapter from '../Adapter.js';
|
|
3
|
+
import { local } from './local.js';
|
|
4
|
+
/**
|
|
5
|
+
* Creates a secp256k1 adapter that generates random private keys and persists them to storage.
|
|
6
|
+
*
|
|
7
|
+
* ⚠️ **Dangerous**: Private keys are stored in plaintext via the provider's storage adapter
|
|
8
|
+
* (e.g. localStorage, cookies). Use only for development, testing, or when the threat model allows it.
|
|
9
|
+
*
|
|
10
|
+
* Wraps the {@link local} adapter with automatic key generation.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { dangerous_secp256k1, Provider } from 'accounts'
|
|
15
|
+
*
|
|
16
|
+
* const provider = Provider.create({
|
|
17
|
+
* adapter: dangerous_secp256k1(),
|
|
18
|
+
* })
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export function dangerous_secp256k1(options = {}) {
|
|
22
|
+
const { icon, name, rdns } = options;
|
|
23
|
+
return Adapter.define({ icon, name, rdns }, (config) => {
|
|
24
|
+
const { store } = config;
|
|
25
|
+
return local({
|
|
26
|
+
async createAccount() {
|
|
27
|
+
const privateKey = Secp256k1.randomPrivateKey();
|
|
28
|
+
const account = Account.fromSecp256k1(privateKey);
|
|
29
|
+
return {
|
|
30
|
+
accounts: [{ address: account.address, keyType: 'secp256k1', privateKey }],
|
|
31
|
+
};
|
|
32
|
+
},
|
|
33
|
+
async loadAccounts() {
|
|
34
|
+
return { accounts: [...store.getState().accounts] };
|
|
35
|
+
},
|
|
36
|
+
})(config);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=dangerous_secp256k1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dangerous_secp256k1.js","sourceRoot":"","sources":["../../../src/core/adapters/dangerous_secp256k1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE/C,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAuC,EAAE;IAC3E,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;IAEpC,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE;QACrD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;QAExB,OAAO,KAAK,CAAC;YACX,KAAK,CAAC,aAAa;gBACjB,MAAM,UAAU,GAAG,SAAS,CAAC,gBAAgB,EAAE,CAAA;gBAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;gBACjD,OAAO;oBACL,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,WAAoB,EAAE,UAAU,EAAE,CAAC;iBACpF,CAAA;YACH,CAAC;YACD,KAAK,CAAC,YAAY;gBAChB,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAA;YACrD,CAAC;SACF,CAAC,CAAC,MAAM,CAAC,CAAA;IACZ,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as Adapter from '../Adapter.js';
|
|
2
|
+
import * as Dialog from '../Dialog.js';
|
|
3
|
+
/**
|
|
4
|
+
* Creates a dialog adapter that delegates signing to a remote embed app
|
|
5
|
+
* via an iframe or popup dialog.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { dialog, Provider } from 'accounts'
|
|
10
|
+
*
|
|
11
|
+
* const provider = Provider.create({
|
|
12
|
+
* adapter: dialog(),
|
|
13
|
+
* })
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export declare function dialog(options?: dialog.Options): Adapter.Adapter;
|
|
17
|
+
export declare namespace dialog {
|
|
18
|
+
type Options = {
|
|
19
|
+
/** Dialog to use for the embed app. @default `Dialog.iframe()` (or `Dialog.popup()` in Safari) */
|
|
20
|
+
dialog?: Dialog.Dialog | undefined;
|
|
21
|
+
/** URL of the embed app. @default `'https://wallet.tempo.xyz/embed'` */
|
|
22
|
+
host?: string | undefined;
|
|
23
|
+
/** Data URI of the provider icon. */
|
|
24
|
+
icon?: `data:image/${string}` | undefined;
|
|
25
|
+
/** Display name of the provider. @default `'Tempo'` */
|
|
26
|
+
name?: string | undefined;
|
|
27
|
+
/** Reverse DNS identifier. @default `'xyz.tempo'` */
|
|
28
|
+
rdns?: string | undefined;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=dialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../src/core/adapters/dialog.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AACxC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAKtC;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CAAC,OAAO,GAAE,MAAM,CAAC,OAAY,GAAG,OAAO,CAAC,OAAO,CAiVpE;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,KAAK,OAAO,GAAG;QACb,kGAAkG;QAClG,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,SAAS,CAAA;QAClC,wEAAwE;QACxE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACzB,qCAAqC;QACrC,IAAI,CAAC,EAAE,cAAc,MAAM,EAAE,GAAG,SAAS,CAAA;QACzC,uDAAuD;QACvD,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACzB,qDAAqD;QACrD,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC1B,CAAA;CACF"}
|