@wallet-ui/core 1.1.0-canary-20250327121701 → 1.1.0-canary-20250328181248

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.
@@ -1,5 +1,8 @@
1
1
  'use strict';
2
2
 
3
+ var persistent = require('@nanostores/persistent');
4
+ var nanostores = require('nanostores');
5
+
3
6
  // src/clusters.ts
4
7
  function createSolanaCluster(props, { cluster, id, label, urlOrMoniker }) {
5
8
  if (typeof props === "string") {
@@ -39,6 +42,50 @@ function createSolanaTestnet(props = {}) {
39
42
  urlOrMoniker: "testnet"
40
43
  });
41
44
  }
45
+ var Storage = class {
46
+ constructor(key, initial) {
47
+ this.key = key;
48
+ this.initial = initial;
49
+ this.atom = persistent.persistentAtom(key, initial, { decode: JSON.parse, encode: JSON.stringify });
50
+ }
51
+ atom;
52
+ get() {
53
+ return this.atom.get();
54
+ }
55
+ set(value) {
56
+ this.atom.set(value);
57
+ }
58
+ get value() {
59
+ return nanostores.computed(this.atom, (value) => value);
60
+ }
61
+ };
62
+
63
+ // src/create-storage.ts
64
+ function createStorage({ initial, key }) {
65
+ return new Storage(key, initial);
66
+ }
67
+
68
+ // src/create-storage-account.ts
69
+ function createStorageAccount({
70
+ initial,
71
+ key
72
+ } = {}) {
73
+ return createStorage({
74
+ initial,
75
+ key: key ?? "wallet-ui:account"
76
+ });
77
+ }
78
+
79
+ // src/create-storage-cluster.ts
80
+ function createStorageCluster({
81
+ initial,
82
+ key
83
+ } = {}) {
84
+ return createStorage({
85
+ initial: initial ?? "solana:devnet",
86
+ key: key ?? "wallet-ui:cluster"
87
+ });
88
+ }
42
89
 
43
90
  // src/handle-copy-text.ts
44
91
  function handleCopyText(text) {
@@ -51,24 +98,14 @@ function handleCopyText(text) {
51
98
  void globalThis.navigator.clipboard.writeText(text);
52
99
  }
53
100
 
54
- // src/storage.ts
55
- var LocalStorage = class {
56
- getItem(key) {
57
- return localStorage.getItem(key);
58
- }
59
- setItem(key, value) {
60
- localStorage.setItem(key, value);
61
- }
62
- removeItem(key) {
63
- localStorage.removeItem(key);
64
- }
65
- };
66
-
67
- exports.LocalStorage = LocalStorage;
101
+ exports.Storage = Storage;
68
102
  exports.createSolanaDevnet = createSolanaDevnet;
69
103
  exports.createSolanaLocalnet = createSolanaLocalnet;
70
104
  exports.createSolanaMainnet = createSolanaMainnet;
71
105
  exports.createSolanaTestnet = createSolanaTestnet;
106
+ exports.createStorage = createStorage;
107
+ exports.createStorageAccount = createStorageAccount;
108
+ exports.createStorageCluster = createStorageCluster;
72
109
  exports.handleCopyText = handleCopyText;
73
110
  //# sourceMappingURL=index.browser.cjs.map
74
111
  //# sourceMappingURL=index.browser.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/clusters.ts","../src/handle-copy-text.ts","../src/storage.ts"],"names":[],"mappings":";;;AAMA,SAAS,oBACL,KACA,EAAA,EAAE,SAAS,EAAI,EAAA,KAAA,EAAO,cAC0C,EAAA;AAChE,EAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC3B,IAAA,OAAO,EAAE,OAAA,EAAS,EAAI,EAAA,KAAA,EAAO,cAAc,KAAW,EAAA;AAAA;AAG1D,EAAO,OAAA,EAAE,OAAS,EAAA,EAAA,EAAI,KAAO,EAAA,KAAA,CAAM,SAAS,KAAO,EAAA,YAAA,EAAc,KAAM,CAAA,YAAA,IAAgB,YAAa,EAAA;AACxG;AAEO,SAAS,kBAAA,CAAmB,KAA2B,GAAA,EAAmB,EAAA;AAC7E,EAAA,OAAO,oBAA+B,KAAO,EAAA;AAAA,IACzC,OAAS,EAAA,QAAA;AAAA,IACT,EAAI,EAAA,eAAA;AAAA,IACJ,KAAO,EAAA,QAAA;AAAA,IACP,YAAc,EAAA;AAAA,GACjB,CAAA;AACL;AAEO,SAAS,oBAAA,CAAqB,KAA2B,GAAA,EAAmB,EAAA;AAC/E,EAAA,OAAO,oBAAoB,KAAO,EAAA;AAAA,IAC9B,OAAS,EAAA,UAAA;AAAA,IACT,EAAI,EAAA,iBAAA;AAAA,IACJ,KAAO,EAAA,UAAA;AAAA,IACP,YAAc,EAAA;AAAA,GACjB,CAAA;AACL;AAEO,SAAS,mBAAA,CAAoB,KAA2B,GAAA,EAAmB,EAAA;AAC9E,EAAA,OAAO,oBAAoB,KAAO,EAAA;AAAA,IAC9B,OAAS,EAAA,SAAA;AAAA,IACT,EAAI,EAAA,gBAAA;AAAA,IACJ,KAAO,EAAA,SAAA;AAAA,IACP,YAAc,EAAA;AAAA,GACjB,CAAA;AACL;AAEO,SAAS,mBAAA,CAAoB,KAA2B,GAAA,EAAmB,EAAA;AAC9E,EAAA,OAAO,oBAAoB,KAAO,EAAA;AAAA,IAC9B,OAAS,EAAA,SAAA;AAAA,IACT,EAAI,EAAA,gBAAA;AAAA,IACJ,KAAO,EAAA,SAAA;AAAA,IACP,YAAc,EAAA;AAAA,GACjB,CAAA;AACL;;;ACnDO,SAAS,eAAe,IAAe,EAAA;AAC1C,EAAA,IAAI,CAAC,IAAM,EAAA;AACP,IAAA;AAAA;AAEJ,EAAA,IACI,OAAO,UAAA,KAAe,WACtB,IAAA,CAAC,WAAW,SACZ,IAAA,CAAC,UAAW,CAAA,SAAA,CAAU,SACtB,IAAA,CAAC,UAAW,CAAA,SAAA,CAAU,UAAU,SAClC,EAAA;AACE,IAAA;AAAA;AAEJ,EAAA,KAAK,UAAW,CAAA,SAAA,CAAU,SAAU,CAAA,SAAA,CAAU,IAAI,CAAA;AACtD;;;ACLO,IAAM,eAAN,MAAsC;AAAA,EACzC,QAAQ,GAA4B,EAAA;AAChC,IAAO,OAAA,YAAA,CAAa,QAAQ,GAAG,CAAA;AAAA;AACnC,EAEA,OAAA,CAAQ,KAAa,KAAqB,EAAA;AACtC,IAAa,YAAA,CAAA,OAAA,CAAQ,KAAK,KAAK,CAAA;AAAA;AACnC,EAEA,WAAW,GAAmB,EAAA;AAC1B,IAAA,YAAA,CAAa,WAAW,GAAG,CAAA;AAAA;AAEnC","file":"index.browser.cjs","sourcesContent":["import type { DevnetUrl, LocalnetUrl, MainnetUrl, TestnetUrl } from 'gill';\n\nimport { SolanaCluster } from './types/solana-cluster';\n\nexport type CreateSolanaProps = Partial<Pick<SolanaCluster, 'label' | 'urlOrMoniker'>> | string;\n\nfunction createSolanaCluster<T extends DevnetUrl | LocalnetUrl | MainnetUrl | TestnetUrl>(\n props: CreateSolanaProps,\n { cluster, id, label, urlOrMoniker }: SolanaCluster,\n): Pick<SolanaCluster, 'cluster' | 'id' | 'label' | 'urlOrMoniker'> {\n if (typeof props === 'string') {\n return { cluster, id, label, urlOrMoniker: props as T };\n }\n\n return { cluster, id, label: props.label ?? label, urlOrMoniker: props.urlOrMoniker ?? urlOrMoniker };\n}\n\nexport function createSolanaDevnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster<DevnetUrl>(props, {\n cluster: 'devnet',\n id: 'solana:devnet',\n label: 'Devnet',\n urlOrMoniker: 'devnet' as DevnetUrl,\n });\n}\n\nexport function createSolanaLocalnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'localnet',\n id: 'solana:localnet',\n label: 'Localnet',\n urlOrMoniker: 'localnet' as LocalnetUrl,\n });\n}\n\nexport function createSolanaMainnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'mainnet',\n id: 'solana:mainnet',\n label: 'Mainnet',\n urlOrMoniker: 'mainnet' as MainnetUrl,\n });\n}\n\nexport function createSolanaTestnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'testnet',\n id: 'solana:testnet',\n label: 'Testnet',\n urlOrMoniker: 'testnet' as TestnetUrl,\n });\n}\n","export function handleCopyText(text?: string) {\n if (!text) {\n return;\n }\n if (\n typeof globalThis === 'undefined' ||\n !globalThis.navigator ||\n !globalThis.navigator.clipboard ||\n !globalThis.navigator.clipboard.writeText\n ) {\n return;\n }\n void globalThis.navigator.clipboard.writeText(text);\n}\n","export interface Storage {\n getItem(key: string): string | null;\n\n removeItem(key: string): void;\n\n setItem(key: string, value: string): void;\n}\n\nexport class LocalStorage implements Storage {\n getItem(key: string): string | null {\n return localStorage.getItem(key);\n }\n\n setItem(key: string, value: string): void {\n localStorage.setItem(key, value);\n }\n\n removeItem(key: string): void {\n localStorage.removeItem(key);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/clusters.ts","../src/storage.ts","../src/create-storage.ts","../src/create-storage-account.ts","../src/create-storage-cluster.ts","../src/handle-copy-text.ts"],"names":["persistentAtom","computed"],"mappings":"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","file":"index.browser.cjs","sourcesContent":["import type { DevnetUrl, LocalnetUrl, MainnetUrl, TestnetUrl } from 'gill';\n\nimport { SolanaCluster } from './types/solana-cluster';\n\nexport type CreateSolanaProps = Partial<Pick<SolanaCluster, 'label' | 'urlOrMoniker'>> | string;\n\nfunction createSolanaCluster<T extends DevnetUrl | LocalnetUrl | MainnetUrl | TestnetUrl>(\n props: CreateSolanaProps,\n { cluster, id, label, urlOrMoniker }: SolanaCluster,\n): Pick<SolanaCluster, 'cluster' | 'id' | 'label' | 'urlOrMoniker'> {\n if (typeof props === 'string') {\n return { cluster, id, label, urlOrMoniker: props as T };\n }\n\n return { cluster, id, label: props.label ?? label, urlOrMoniker: props.urlOrMoniker ?? urlOrMoniker };\n}\n\nexport function createSolanaDevnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster<DevnetUrl>(props, {\n cluster: 'devnet',\n id: 'solana:devnet',\n label: 'Devnet',\n urlOrMoniker: 'devnet' as DevnetUrl,\n });\n}\n\nexport function createSolanaLocalnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'localnet',\n id: 'solana:localnet',\n label: 'Localnet',\n urlOrMoniker: 'localnet' as LocalnetUrl,\n });\n}\n\nexport function createSolanaMainnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'mainnet',\n id: 'solana:mainnet',\n label: 'Mainnet',\n urlOrMoniker: 'mainnet' as MainnetUrl,\n });\n}\n\nexport function createSolanaTestnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'testnet',\n id: 'solana:testnet',\n label: 'Testnet',\n urlOrMoniker: 'testnet' as TestnetUrl,\n });\n}\n","import { persistentAtom } from '@nanostores/persistent';\nimport { computed, WritableAtom } from 'nanostores';\n\nexport class Storage<T> {\n private readonly atom: WritableAtom<T>;\n\n constructor(\n readonly key: string,\n readonly initial: T,\n ) {\n this.atom = persistentAtom<T>(key, initial, { decode: JSON.parse, encode: JSON.stringify });\n }\n\n get() {\n return this.atom.get();\n }\n\n set(value: T) {\n this.atom.set(value);\n }\n\n get value() {\n return computed(this.atom, value => value);\n }\n}\n","import { Storage } from './storage';\n\nexport function createStorage<T>({ initial, key }: { initial: T; key: string }) {\n return new Storage(key, initial);\n}\n","import { createStorage } from './create-storage';\nimport { Storage } from './storage';\n\nexport type StorageAccount = Storage<string | undefined>;\n\nexport function createStorageAccount({\n initial,\n key,\n}: {\n initial?: string | undefined;\n key?: string;\n} = {}): StorageAccount {\n return createStorage<string | undefined>({\n initial,\n key: key ?? 'wallet-ui:account',\n });\n}\n","import { createStorage } from './create-storage';\nimport { Storage } from './storage';\nimport { SolanaClusterId } from './types/solana-cluster-id';\n\nexport type StorageCluster = Storage<SolanaClusterId>;\n\nexport function createStorageCluster({\n initial,\n key,\n}: {\n initial?: SolanaClusterId;\n key?: string;\n} = {}): StorageCluster {\n return createStorage<SolanaClusterId>({\n initial: initial ?? 'solana:devnet',\n key: key ?? 'wallet-ui:cluster',\n });\n}\n","export function handleCopyText(text?: string) {\n if (!text) {\n return;\n }\n if (\n typeof globalThis === 'undefined' ||\n !globalThis.navigator ||\n !globalThis.navigator.clipboard ||\n !globalThis.navigator.clipboard.writeText\n ) {\n return;\n }\n void globalThis.navigator.clipboard.writeText(text);\n}\n"]}
@@ -1,3 +1,6 @@
1
+ import { persistentAtom } from '@nanostores/persistent';
2
+ import { computed } from 'nanostores';
3
+
1
4
  // src/clusters.ts
2
5
  function createSolanaCluster(props, { cluster, id, label, urlOrMoniker }) {
3
6
  if (typeof props === "string") {
@@ -37,6 +40,50 @@ function createSolanaTestnet(props = {}) {
37
40
  urlOrMoniker: "testnet"
38
41
  });
39
42
  }
43
+ var Storage = class {
44
+ constructor(key, initial) {
45
+ this.key = key;
46
+ this.initial = initial;
47
+ this.atom = persistentAtom(key, initial, { decode: JSON.parse, encode: JSON.stringify });
48
+ }
49
+ atom;
50
+ get() {
51
+ return this.atom.get();
52
+ }
53
+ set(value) {
54
+ this.atom.set(value);
55
+ }
56
+ get value() {
57
+ return computed(this.atom, (value) => value);
58
+ }
59
+ };
60
+
61
+ // src/create-storage.ts
62
+ function createStorage({ initial, key }) {
63
+ return new Storage(key, initial);
64
+ }
65
+
66
+ // src/create-storage-account.ts
67
+ function createStorageAccount({
68
+ initial,
69
+ key
70
+ } = {}) {
71
+ return createStorage({
72
+ initial,
73
+ key: key ?? "wallet-ui:account"
74
+ });
75
+ }
76
+
77
+ // src/create-storage-cluster.ts
78
+ function createStorageCluster({
79
+ initial,
80
+ key
81
+ } = {}) {
82
+ return createStorage({
83
+ initial: initial ?? "solana:devnet",
84
+ key: key ?? "wallet-ui:cluster"
85
+ });
86
+ }
40
87
 
41
88
  // src/handle-copy-text.ts
42
89
  function handleCopyText(text) {
@@ -49,19 +96,6 @@ function handleCopyText(text) {
49
96
  void globalThis.navigator.clipboard.writeText(text);
50
97
  }
51
98
 
52
- // src/storage.ts
53
- var LocalStorage = class {
54
- getItem(key) {
55
- return localStorage.getItem(key);
56
- }
57
- setItem(key, value) {
58
- localStorage.setItem(key, value);
59
- }
60
- removeItem(key) {
61
- localStorage.removeItem(key);
62
- }
63
- };
64
-
65
- export { LocalStorage, createSolanaDevnet, createSolanaLocalnet, createSolanaMainnet, createSolanaTestnet, handleCopyText };
99
+ export { Storage, createSolanaDevnet, createSolanaLocalnet, createSolanaMainnet, createSolanaTestnet, createStorage, createStorageAccount, createStorageCluster, handleCopyText };
66
100
  //# sourceMappingURL=index.browser.mjs.map
67
101
  //# sourceMappingURL=index.browser.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/clusters.ts","../src/handle-copy-text.ts","../src/storage.ts"],"names":[],"mappings":";AAMA,SAAS,oBACL,KACA,EAAA,EAAE,SAAS,EAAI,EAAA,KAAA,EAAO,cAC0C,EAAA;AAChE,EAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC3B,IAAA,OAAO,EAAE,OAAA,EAAS,EAAI,EAAA,KAAA,EAAO,cAAc,KAAW,EAAA;AAAA;AAG1D,EAAO,OAAA,EAAE,OAAS,EAAA,EAAA,EAAI,KAAO,EAAA,KAAA,CAAM,SAAS,KAAO,EAAA,YAAA,EAAc,KAAM,CAAA,YAAA,IAAgB,YAAa,EAAA;AACxG;AAEO,SAAS,kBAAA,CAAmB,KAA2B,GAAA,EAAmB,EAAA;AAC7E,EAAA,OAAO,oBAA+B,KAAO,EAAA;AAAA,IACzC,OAAS,EAAA,QAAA;AAAA,IACT,EAAI,EAAA,eAAA;AAAA,IACJ,KAAO,EAAA,QAAA;AAAA,IACP,YAAc,EAAA;AAAA,GACjB,CAAA;AACL;AAEO,SAAS,oBAAA,CAAqB,KAA2B,GAAA,EAAmB,EAAA;AAC/E,EAAA,OAAO,oBAAoB,KAAO,EAAA;AAAA,IAC9B,OAAS,EAAA,UAAA;AAAA,IACT,EAAI,EAAA,iBAAA;AAAA,IACJ,KAAO,EAAA,UAAA;AAAA,IACP,YAAc,EAAA;AAAA,GACjB,CAAA;AACL;AAEO,SAAS,mBAAA,CAAoB,KAA2B,GAAA,EAAmB,EAAA;AAC9E,EAAA,OAAO,oBAAoB,KAAO,EAAA;AAAA,IAC9B,OAAS,EAAA,SAAA;AAAA,IACT,EAAI,EAAA,gBAAA;AAAA,IACJ,KAAO,EAAA,SAAA;AAAA,IACP,YAAc,EAAA;AAAA,GACjB,CAAA;AACL;AAEO,SAAS,mBAAA,CAAoB,KAA2B,GAAA,EAAmB,EAAA;AAC9E,EAAA,OAAO,oBAAoB,KAAO,EAAA;AAAA,IAC9B,OAAS,EAAA,SAAA;AAAA,IACT,EAAI,EAAA,gBAAA;AAAA,IACJ,KAAO,EAAA,SAAA;AAAA,IACP,YAAc,EAAA;AAAA,GACjB,CAAA;AACL;;;ACnDO,SAAS,eAAe,IAAe,EAAA;AAC1C,EAAA,IAAI,CAAC,IAAM,EAAA;AACP,IAAA;AAAA;AAEJ,EAAA,IACI,OAAO,UAAA,KAAe,WACtB,IAAA,CAAC,WAAW,SACZ,IAAA,CAAC,UAAW,CAAA,SAAA,CAAU,SACtB,IAAA,CAAC,UAAW,CAAA,SAAA,CAAU,UAAU,SAClC,EAAA;AACE,IAAA;AAAA;AAEJ,EAAA,KAAK,UAAW,CAAA,SAAA,CAAU,SAAU,CAAA,SAAA,CAAU,IAAI,CAAA;AACtD;;;ACLO,IAAM,eAAN,MAAsC;AAAA,EACzC,QAAQ,GAA4B,EAAA;AAChC,IAAO,OAAA,YAAA,CAAa,QAAQ,GAAG,CAAA;AAAA;AACnC,EAEA,OAAA,CAAQ,KAAa,KAAqB,EAAA;AACtC,IAAa,YAAA,CAAA,OAAA,CAAQ,KAAK,KAAK,CAAA;AAAA;AACnC,EAEA,WAAW,GAAmB,EAAA;AAC1B,IAAA,YAAA,CAAa,WAAW,GAAG,CAAA;AAAA;AAEnC","file":"index.browser.mjs","sourcesContent":["import type { DevnetUrl, LocalnetUrl, MainnetUrl, TestnetUrl } from 'gill';\n\nimport { SolanaCluster } from './types/solana-cluster';\n\nexport type CreateSolanaProps = Partial<Pick<SolanaCluster, 'label' | 'urlOrMoniker'>> | string;\n\nfunction createSolanaCluster<T extends DevnetUrl | LocalnetUrl | MainnetUrl | TestnetUrl>(\n props: CreateSolanaProps,\n { cluster, id, label, urlOrMoniker }: SolanaCluster,\n): Pick<SolanaCluster, 'cluster' | 'id' | 'label' | 'urlOrMoniker'> {\n if (typeof props === 'string') {\n return { cluster, id, label, urlOrMoniker: props as T };\n }\n\n return { cluster, id, label: props.label ?? label, urlOrMoniker: props.urlOrMoniker ?? urlOrMoniker };\n}\n\nexport function createSolanaDevnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster<DevnetUrl>(props, {\n cluster: 'devnet',\n id: 'solana:devnet',\n label: 'Devnet',\n urlOrMoniker: 'devnet' as DevnetUrl,\n });\n}\n\nexport function createSolanaLocalnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'localnet',\n id: 'solana:localnet',\n label: 'Localnet',\n urlOrMoniker: 'localnet' as LocalnetUrl,\n });\n}\n\nexport function createSolanaMainnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'mainnet',\n id: 'solana:mainnet',\n label: 'Mainnet',\n urlOrMoniker: 'mainnet' as MainnetUrl,\n });\n}\n\nexport function createSolanaTestnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'testnet',\n id: 'solana:testnet',\n label: 'Testnet',\n urlOrMoniker: 'testnet' as TestnetUrl,\n });\n}\n","export function handleCopyText(text?: string) {\n if (!text) {\n return;\n }\n if (\n typeof globalThis === 'undefined' ||\n !globalThis.navigator ||\n !globalThis.navigator.clipboard ||\n !globalThis.navigator.clipboard.writeText\n ) {\n return;\n }\n void globalThis.navigator.clipboard.writeText(text);\n}\n","export interface Storage {\n getItem(key: string): string | null;\n\n removeItem(key: string): void;\n\n setItem(key: string, value: string): void;\n}\n\nexport class LocalStorage implements Storage {\n getItem(key: string): string | null {\n return localStorage.getItem(key);\n }\n\n setItem(key: string, value: string): void {\n localStorage.setItem(key, value);\n }\n\n removeItem(key: string): void {\n localStorage.removeItem(key);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/clusters.ts","../src/storage.ts","../src/create-storage.ts","../src/create-storage-account.ts","../src/create-storage-cluster.ts","../src/handle-copy-text.ts"],"names":[],"mappings":"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","file":"index.browser.mjs","sourcesContent":["import type { DevnetUrl, LocalnetUrl, MainnetUrl, TestnetUrl } from 'gill';\n\nimport { SolanaCluster } from './types/solana-cluster';\n\nexport type CreateSolanaProps = Partial<Pick<SolanaCluster, 'label' | 'urlOrMoniker'>> | string;\n\nfunction createSolanaCluster<T extends DevnetUrl | LocalnetUrl | MainnetUrl | TestnetUrl>(\n props: CreateSolanaProps,\n { cluster, id, label, urlOrMoniker }: SolanaCluster,\n): Pick<SolanaCluster, 'cluster' | 'id' | 'label' | 'urlOrMoniker'> {\n if (typeof props === 'string') {\n return { cluster, id, label, urlOrMoniker: props as T };\n }\n\n return { cluster, id, label: props.label ?? label, urlOrMoniker: props.urlOrMoniker ?? urlOrMoniker };\n}\n\nexport function createSolanaDevnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster<DevnetUrl>(props, {\n cluster: 'devnet',\n id: 'solana:devnet',\n label: 'Devnet',\n urlOrMoniker: 'devnet' as DevnetUrl,\n });\n}\n\nexport function createSolanaLocalnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'localnet',\n id: 'solana:localnet',\n label: 'Localnet',\n urlOrMoniker: 'localnet' as LocalnetUrl,\n });\n}\n\nexport function createSolanaMainnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'mainnet',\n id: 'solana:mainnet',\n label: 'Mainnet',\n urlOrMoniker: 'mainnet' as MainnetUrl,\n });\n}\n\nexport function createSolanaTestnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'testnet',\n id: 'solana:testnet',\n label: 'Testnet',\n urlOrMoniker: 'testnet' as TestnetUrl,\n });\n}\n","import { persistentAtom } from '@nanostores/persistent';\nimport { computed, WritableAtom } from 'nanostores';\n\nexport class Storage<T> {\n private readonly atom: WritableAtom<T>;\n\n constructor(\n readonly key: string,\n readonly initial: T,\n ) {\n this.atom = persistentAtom<T>(key, initial, { decode: JSON.parse, encode: JSON.stringify });\n }\n\n get() {\n return this.atom.get();\n }\n\n set(value: T) {\n this.atom.set(value);\n }\n\n get value() {\n return computed(this.atom, value => value);\n }\n}\n","import { Storage } from './storage';\n\nexport function createStorage<T>({ initial, key }: { initial: T; key: string }) {\n return new Storage(key, initial);\n}\n","import { createStorage } from './create-storage';\nimport { Storage } from './storage';\n\nexport type StorageAccount = Storage<string | undefined>;\n\nexport function createStorageAccount({\n initial,\n key,\n}: {\n initial?: string | undefined;\n key?: string;\n} = {}): StorageAccount {\n return createStorage<string | undefined>({\n initial,\n key: key ?? 'wallet-ui:account',\n });\n}\n","import { createStorage } from './create-storage';\nimport { Storage } from './storage';\nimport { SolanaClusterId } from './types/solana-cluster-id';\n\nexport type StorageCluster = Storage<SolanaClusterId>;\n\nexport function createStorageCluster({\n initial,\n key,\n}: {\n initial?: SolanaClusterId;\n key?: string;\n} = {}): StorageCluster {\n return createStorage<SolanaClusterId>({\n initial: initial ?? 'solana:devnet',\n key: key ?? 'wallet-ui:cluster',\n });\n}\n","export function handleCopyText(text?: string) {\n if (!text) {\n return;\n }\n if (\n typeof globalThis === 'undefined' ||\n !globalThis.navigator ||\n !globalThis.navigator.clipboard ||\n !globalThis.navigator.clipboard.writeText\n ) {\n return;\n }\n void globalThis.navigator.clipboard.writeText(text);\n}\n"]}
@@ -2,6 +2,10 @@ this.globalThis = this.globalThis || {};
2
2
  this.globalThis.solanaWeb3 = (function (exports) {
3
3
  'use strict';
4
4
 
5
+ var __defProp = Object.defineProperty;
6
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
7
+ var __publicField = (obj, key, value) => __defNormalProp(obj, key + "" , value);
8
+
5
9
  // src/clusters.ts
6
10
  function createSolanaCluster(props, { cluster, id, label, urlOrMoniker }) {
7
11
  var _a, _b;
@@ -43,6 +47,318 @@ this.globalThis.solanaWeb3 = (function (exports) {
43
47
  });
44
48
  }
45
49
 
50
+ // ../../node_modules/.pnpm/nanostores@0.11.4/node_modules/nanostores/clean-stores/index.js
51
+ var clean = Symbol("clean");
52
+
53
+ // ../../node_modules/.pnpm/nanostores@0.11.4/node_modules/nanostores/atom/index.js
54
+ var listenerQueue = [];
55
+ var lqIndex = 0;
56
+ var QUEUE_ITEMS_PER_LISTENER = 4;
57
+ var epoch = 0;
58
+ var atom = (initialValue) => {
59
+ let listeners = [];
60
+ let $atom = {
61
+ get() {
62
+ if (!$atom.lc) {
63
+ $atom.listen(() => {
64
+ })();
65
+ }
66
+ return $atom.value;
67
+ },
68
+ lc: 0,
69
+ listen(listener) {
70
+ $atom.lc = listeners.push(listener);
71
+ return () => {
72
+ for (let i = lqIndex + QUEUE_ITEMS_PER_LISTENER; i < listenerQueue.length; ) {
73
+ if (listenerQueue[i] === listener) {
74
+ listenerQueue.splice(i, QUEUE_ITEMS_PER_LISTENER);
75
+ } else {
76
+ i += QUEUE_ITEMS_PER_LISTENER;
77
+ }
78
+ }
79
+ let index = listeners.indexOf(listener);
80
+ if (~index) {
81
+ listeners.splice(index, 1);
82
+ if (!--$atom.lc) $atom.off();
83
+ }
84
+ };
85
+ },
86
+ notify(oldValue, changedKey) {
87
+ epoch++;
88
+ let runListenerQueue = !listenerQueue.length;
89
+ for (let listener of listeners) {
90
+ listenerQueue.push(
91
+ listener,
92
+ $atom.value,
93
+ oldValue,
94
+ changedKey
95
+ );
96
+ }
97
+ if (runListenerQueue) {
98
+ for (lqIndex = 0; lqIndex < listenerQueue.length; lqIndex += QUEUE_ITEMS_PER_LISTENER) {
99
+ listenerQueue[lqIndex](
100
+ listenerQueue[lqIndex + 1],
101
+ listenerQueue[lqIndex + 2],
102
+ listenerQueue[lqIndex + 3]
103
+ );
104
+ }
105
+ listenerQueue.length = 0;
106
+ }
107
+ },
108
+ /* It will be called on last listener unsubscribing.
109
+ We will redefine it in onMount and onStop. */
110
+ off() {
111
+ },
112
+ set(newValue) {
113
+ let oldValue = $atom.value;
114
+ if (oldValue !== newValue) {
115
+ $atom.value = newValue;
116
+ $atom.notify(oldValue);
117
+ }
118
+ },
119
+ subscribe(listener) {
120
+ let unbind = $atom.listen(listener);
121
+ listener($atom.value);
122
+ return unbind;
123
+ },
124
+ value: initialValue
125
+ };
126
+ {
127
+ $atom[clean] = () => {
128
+ listeners = [];
129
+ $atom.lc = 0;
130
+ $atom.off();
131
+ };
132
+ }
133
+ return $atom;
134
+ };
135
+
136
+ // ../../node_modules/.pnpm/nanostores@0.11.4/node_modules/nanostores/lifecycle/index.js
137
+ var MOUNT = 5;
138
+ var UNMOUNT = 6;
139
+ var REVERT_MUTATION = 10;
140
+ var on = (object, listener, eventKey, mutateStore) => {
141
+ object.events = object.events || {};
142
+ if (!object.events[eventKey + REVERT_MUTATION]) {
143
+ object.events[eventKey + REVERT_MUTATION] = mutateStore((eventProps) => {
144
+ object.events[eventKey].reduceRight((event, l) => (l(event), event), {
145
+ shared: {},
146
+ ...eventProps
147
+ });
148
+ });
149
+ }
150
+ object.events[eventKey] = object.events[eventKey] || [];
151
+ object.events[eventKey].push(listener);
152
+ return () => {
153
+ let currentListeners = object.events[eventKey];
154
+ let index = currentListeners.indexOf(listener);
155
+ currentListeners.splice(index, 1);
156
+ if (!currentListeners.length) {
157
+ delete object.events[eventKey];
158
+ object.events[eventKey + REVERT_MUTATION]();
159
+ delete object.events[eventKey + REVERT_MUTATION];
160
+ }
161
+ };
162
+ };
163
+ var STORE_UNMOUNT_DELAY = 1e3;
164
+ var onMount = ($store, initialize) => {
165
+ let listener = (payload) => {
166
+ let destroy = initialize(payload);
167
+ if (destroy) $store.events[UNMOUNT].push(destroy);
168
+ };
169
+ return on($store, listener, MOUNT, (runListeners) => {
170
+ let originListen = $store.listen;
171
+ $store.listen = (...args) => {
172
+ if (!$store.lc && !$store.active) {
173
+ $store.active = true;
174
+ runListeners();
175
+ }
176
+ return originListen(...args);
177
+ };
178
+ let originOff = $store.off;
179
+ $store.events[UNMOUNT] = [];
180
+ $store.off = () => {
181
+ originOff();
182
+ setTimeout(() => {
183
+ if ($store.active && !$store.lc) {
184
+ $store.active = false;
185
+ for (let destroy of $store.events[UNMOUNT]) destroy();
186
+ $store.events[UNMOUNT] = [];
187
+ }
188
+ }, STORE_UNMOUNT_DELAY);
189
+ };
190
+ {
191
+ let originClean = $store[clean];
192
+ $store[clean] = () => {
193
+ for (let destroy of $store.events[UNMOUNT]) destroy();
194
+ $store.events[UNMOUNT] = [];
195
+ $store.active = false;
196
+ originClean();
197
+ };
198
+ }
199
+ return () => {
200
+ $store.listen = originListen;
201
+ $store.off = originOff;
202
+ };
203
+ });
204
+ };
205
+
206
+ // ../../node_modules/.pnpm/nanostores@0.11.4/node_modules/nanostores/computed/index.js
207
+ var computedStore = (stores, cb, batched2) => {
208
+ if (!Array.isArray(stores)) stores = [stores];
209
+ let previousArgs;
210
+ let currentEpoch;
211
+ let set = () => {
212
+ if (currentEpoch === epoch) return;
213
+ currentEpoch = epoch;
214
+ let args = stores.map(($store) => $store.get());
215
+ if (!previousArgs || args.some((arg, i) => arg !== previousArgs[i])) {
216
+ previousArgs = args;
217
+ let value = cb(...args);
218
+ if (value && value.then && value.t) {
219
+ value.then((asyncValue) => {
220
+ if (previousArgs === args) {
221
+ $computed.set(asyncValue);
222
+ }
223
+ });
224
+ } else {
225
+ $computed.set(value);
226
+ currentEpoch = epoch;
227
+ }
228
+ }
229
+ };
230
+ let $computed = atom(void 0);
231
+ let get = $computed.get;
232
+ $computed.get = () => {
233
+ set();
234
+ return get();
235
+ };
236
+ let run = set;
237
+ onMount($computed, () => {
238
+ let unbinds = stores.map(($store) => $store.listen(run));
239
+ set();
240
+ return () => {
241
+ for (let unbind of unbinds) unbind();
242
+ };
243
+ });
244
+ return $computed;
245
+ };
246
+ var computed = (stores, fn) => computedStore(stores, fn);
247
+
248
+ // ../../node_modules/.pnpm/@nanostores+persistent@0.10.2_nanostores@0.11.4/node_modules/@nanostores/persistent/index.js
249
+ var identity = (a) => a;
250
+ var storageEngine = {};
251
+ var eventsEngine = { addEventListener() {
252
+ }, removeEventListener() {
253
+ } };
254
+ function testSupport() {
255
+ try {
256
+ return typeof localStorage !== "undefined";
257
+ } catch {
258
+ return false;
259
+ }
260
+ }
261
+ if (testSupport()) {
262
+ storageEngine = localStorage;
263
+ }
264
+ var windowPersistentEvents = {
265
+ addEventListener(key, listener, restore) {
266
+ window.addEventListener("storage", listener);
267
+ window.addEventListener("pageshow", restore);
268
+ },
269
+ removeEventListener(key, listener, restore) {
270
+ window.removeEventListener("storage", listener);
271
+ window.removeEventListener("pageshow", restore);
272
+ }
273
+ };
274
+ if (typeof window !== "undefined") {
275
+ eventsEngine = windowPersistentEvents;
276
+ }
277
+ function persistentAtom(name, initial = void 0, opts = {}) {
278
+ let encode = opts.encode || identity;
279
+ let decode = opts.decode || identity;
280
+ let store = atom(initial);
281
+ let set = store.set;
282
+ store.set = (newValue) => {
283
+ if (typeof newValue === "undefined") {
284
+ delete storageEngine[name];
285
+ } else {
286
+ storageEngine[name] = encode(newValue);
287
+ }
288
+ set(newValue);
289
+ };
290
+ function listener(e) {
291
+ if (e.key === name) {
292
+ if (e.newValue === null) {
293
+ set(void 0);
294
+ } else {
295
+ set(decode(e.newValue));
296
+ }
297
+ } else if (!storageEngine[name]) {
298
+ set(void 0);
299
+ }
300
+ }
301
+ function restore() {
302
+ store.set(storageEngine[name] ? decode(storageEngine[name]) : initial);
303
+ }
304
+ onMount(store, () => {
305
+ restore();
306
+ if (opts.listen !== false) {
307
+ eventsEngine.addEventListener(name, listener, restore);
308
+ return () => {
309
+ eventsEngine.removeEventListener(name, listener, restore);
310
+ };
311
+ }
312
+ });
313
+ return store;
314
+ }
315
+
316
+ // src/storage.ts
317
+ var Storage = class {
318
+ constructor(key, initial) {
319
+ this.key = key;
320
+ this.initial = initial;
321
+ __publicField(this, "atom");
322
+ this.atom = persistentAtom(key, initial, { decode: JSON.parse, encode: JSON.stringify });
323
+ }
324
+ get() {
325
+ return this.atom.get();
326
+ }
327
+ set(value) {
328
+ this.atom.set(value);
329
+ }
330
+ get value() {
331
+ return computed(this.atom, (value) => value);
332
+ }
333
+ };
334
+
335
+ // src/create-storage.ts
336
+ function createStorage({ initial, key }) {
337
+ return new Storage(key, initial);
338
+ }
339
+
340
+ // src/create-storage-account.ts
341
+ function createStorageAccount({
342
+ initial,
343
+ key
344
+ } = {}) {
345
+ return createStorage({
346
+ initial,
347
+ key: key != null ? key : "wallet-ui:account"
348
+ });
349
+ }
350
+
351
+ // src/create-storage-cluster.ts
352
+ function createStorageCluster({
353
+ initial,
354
+ key
355
+ } = {}) {
356
+ return createStorage({
357
+ initial: initial != null ? initial : "solana:devnet",
358
+ key: key != null ? key : "wallet-ui:cluster"
359
+ });
360
+ }
361
+
46
362
  // src/handle-copy-text.ts
47
363
  function handleCopyText(text) {
48
364
  if (!text) {
@@ -54,24 +370,14 @@ this.globalThis.solanaWeb3 = (function (exports) {
54
370
  void globalThis.navigator.clipboard.writeText(text);
55
371
  }
56
372
 
57
- // src/storage.ts
58
- var LocalStorage = class {
59
- getItem(key) {
60
- return localStorage.getItem(key);
61
- }
62
- setItem(key, value) {
63
- localStorage.setItem(key, value);
64
- }
65
- removeItem(key) {
66
- localStorage.removeItem(key);
67
- }
68
- };
69
-
70
- exports.LocalStorage = LocalStorage;
373
+ exports.Storage = Storage;
71
374
  exports.createSolanaDevnet = createSolanaDevnet;
72
375
  exports.createSolanaLocalnet = createSolanaLocalnet;
73
376
  exports.createSolanaMainnet = createSolanaMainnet;
74
377
  exports.createSolanaTestnet = createSolanaTestnet;
378
+ exports.createStorage = createStorage;
379
+ exports.createStorageAccount = createStorageAccount;
380
+ exports.createStorageCluster = createStorageCluster;
75
381
  exports.handleCopyText = handleCopyText;
76
382
 
77
383
  return exports;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/clusters.ts","../src/handle-copy-text.ts","../src/storage.ts"],"names":[],"mappings":";;;;;EAMA,SAAS,oBACL,KACA,EAAA,EAAE,SAAS,EAAI,EAAA,KAAA,EAAO,cAC0C,EAAA;EATpE,EAAA,IAAA,EAAA,EAAA,EAAA;EAUI,EAAI,IAAA,OAAO,UAAU,QAAU,EAAA;EAC3B,IAAA,OAAO,EAAE,OAAA,EAAS,EAAI,EAAA,KAAA,EAAO,cAAc,KAAW,EAAA;EAAA;EAG1D,EAAA,OAAO,EAAE,OAAA,EAAS,EAAI,EAAA,KAAA,EAAA,CAAO,EAAM,GAAA,KAAA,CAAA,KAAA,KAAN,IAAe,GAAA,EAAA,GAAA,KAAA,EAAO,YAAc,EAAA,CAAA,EAAA,GAAA,KAAA,CAAM,YAAN,KAAA,IAAA,GAAA,EAAA,GAAsB,YAAa,EAAA;EACxG;EAEO,SAAS,kBAAA,CAAmB,KAA2B,GAAA,EAAmB,EAAA;EAC7E,EAAA,OAAO,oBAA+B,KAAO,EAAA;EAAA,IACzC,OAAS,EAAA,QAAA;EAAA,IACT,EAAI,EAAA,eAAA;EAAA,IACJ,KAAO,EAAA,QAAA;EAAA,IACP,YAAc,EAAA;EAAA,GACjB,CAAA;EACL;EAEO,SAAS,oBAAA,CAAqB,KAA2B,GAAA,EAAmB,EAAA;EAC/E,EAAA,OAAO,oBAAoB,KAAO,EAAA;EAAA,IAC9B,OAAS,EAAA,UAAA;EAAA,IACT,EAAI,EAAA,iBAAA;EAAA,IACJ,KAAO,EAAA,UAAA;EAAA,IACP,YAAc,EAAA;EAAA,GACjB,CAAA;EACL;EAEO,SAAS,mBAAA,CAAoB,KAA2B,GAAA,EAAmB,EAAA;EAC9E,EAAA,OAAO,oBAAoB,KAAO,EAAA;EAAA,IAC9B,OAAS,EAAA,SAAA;EAAA,IACT,EAAI,EAAA,gBAAA;EAAA,IACJ,KAAO,EAAA,SAAA;EAAA,IACP,YAAc,EAAA;EAAA,GACjB,CAAA;EACL;EAEO,SAAS,mBAAA,CAAoB,KAA2B,GAAA,EAAmB,EAAA;EAC9E,EAAA,OAAO,oBAAoB,KAAO,EAAA;EAAA,IAC9B,OAAS,EAAA,SAAA;EAAA,IACT,EAAI,EAAA,gBAAA;EAAA,IACJ,KAAO,EAAA,SAAA;EAAA,IACP,YAAc,EAAA;EAAA,GACjB,CAAA;EACL;;;ECnDO,SAAS,eAAe,IAAe,EAAA;EAC1C,EAAA,IAAI,CAAC,IAAM,EAAA;EACP,IAAA;EAAA;EAEJ,EAAA,IACI,OAAO,UAAA,KAAe,WACtB,IAAA,CAAC,WAAW,SACZ,IAAA,CAAC,UAAW,CAAA,SAAA,CAAU,SACtB,IAAA,CAAC,UAAW,CAAA,SAAA,CAAU,UAAU,SAClC,EAAA;EACE,IAAA;EAAA;EAEJ,EAAA,KAAK,UAAW,CAAA,SAAA,CAAU,SAAU,CAAA,SAAA,CAAU,IAAI,CAAA;EACtD;;;ACLO,MAAM,eAAN,MAAsC;EAAA,EACzC,QAAQ,GAA4B,EAAA;EAChC,IAAO,OAAA,YAAA,CAAa,QAAQ,GAAG,CAAA;EAAA;EACnC,EAEA,OAAA,CAAQ,KAAa,KAAqB,EAAA;EACtC,IAAa,YAAA,CAAA,OAAA,CAAQ,KAAK,KAAK,CAAA;EAAA;EACnC,EAEA,WAAW,GAAmB,EAAA;EAC1B,IAAA,YAAA,CAAa,WAAW,GAAG,CAAA;EAAA;EAEnC","file":"index.development.js","sourcesContent":["import type { DevnetUrl, LocalnetUrl, MainnetUrl, TestnetUrl } from 'gill';\n\nimport { SolanaCluster } from './types/solana-cluster';\n\nexport type CreateSolanaProps = Partial<Pick<SolanaCluster, 'label' | 'urlOrMoniker'>> | string;\n\nfunction createSolanaCluster<T extends DevnetUrl | LocalnetUrl | MainnetUrl | TestnetUrl>(\n props: CreateSolanaProps,\n { cluster, id, label, urlOrMoniker }: SolanaCluster,\n): Pick<SolanaCluster, 'cluster' | 'id' | 'label' | 'urlOrMoniker'> {\n if (typeof props === 'string') {\n return { cluster, id, label, urlOrMoniker: props as T };\n }\n\n return { cluster, id, label: props.label ?? label, urlOrMoniker: props.urlOrMoniker ?? urlOrMoniker };\n}\n\nexport function createSolanaDevnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster<DevnetUrl>(props, {\n cluster: 'devnet',\n id: 'solana:devnet',\n label: 'Devnet',\n urlOrMoniker: 'devnet' as DevnetUrl,\n });\n}\n\nexport function createSolanaLocalnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'localnet',\n id: 'solana:localnet',\n label: 'Localnet',\n urlOrMoniker: 'localnet' as LocalnetUrl,\n });\n}\n\nexport function createSolanaMainnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'mainnet',\n id: 'solana:mainnet',\n label: 'Mainnet',\n urlOrMoniker: 'mainnet' as MainnetUrl,\n });\n}\n\nexport function createSolanaTestnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'testnet',\n id: 'solana:testnet',\n label: 'Testnet',\n urlOrMoniker: 'testnet' as TestnetUrl,\n });\n}\n","export function handleCopyText(text?: string) {\n if (!text) {\n return;\n }\n if (\n typeof globalThis === 'undefined' ||\n !globalThis.navigator ||\n !globalThis.navigator.clipboard ||\n !globalThis.navigator.clipboard.writeText\n ) {\n return;\n }\n void globalThis.navigator.clipboard.writeText(text);\n}\n","export interface Storage {\n getItem(key: string): string | null;\n\n removeItem(key: string): void;\n\n setItem(key: string, value: string): void;\n}\n\nexport class LocalStorage implements Storage {\n getItem(key: string): string | null {\n return localStorage.getItem(key);\n }\n\n setItem(key: string, value: string): void {\n localStorage.setItem(key, value);\n }\n\n removeItem(key: string): void {\n localStorage.removeItem(key);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/clusters.ts","../../../node_modules/.pnpm/nanostores@0.11.4/node_modules/nanostores/clean-stores/index.js","../../../node_modules/.pnpm/nanostores@0.11.4/node_modules/nanostores/atom/index.js","../../../node_modules/.pnpm/nanostores@0.11.4/node_modules/nanostores/lifecycle/index.js","../../../node_modules/.pnpm/nanostores@0.11.4/node_modules/nanostores/computed/index.js","../../../node_modules/.pnpm/@nanostores+persistent@0.10.2_nanostores@0.11.4/node_modules/@nanostores/persistent/index.js","../src/storage.ts","../src/create-storage.ts","../src/create-storage-account.ts","../src/create-storage-cluster.ts","../src/handle-copy-text.ts"],"names":["batched"],"mappings":"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","file":"index.development.js","sourcesContent":["import type { DevnetUrl, LocalnetUrl, MainnetUrl, TestnetUrl } from 'gill';\n\nimport { SolanaCluster } from './types/solana-cluster';\n\nexport type CreateSolanaProps = Partial<Pick<SolanaCluster, 'label' | 'urlOrMoniker'>> | string;\n\nfunction createSolanaCluster<T extends DevnetUrl | LocalnetUrl | MainnetUrl | TestnetUrl>(\n props: CreateSolanaProps,\n { cluster, id, label, urlOrMoniker }: SolanaCluster,\n): Pick<SolanaCluster, 'cluster' | 'id' | 'label' | 'urlOrMoniker'> {\n if (typeof props === 'string') {\n return { cluster, id, label, urlOrMoniker: props as T };\n }\n\n return { cluster, id, label: props.label ?? label, urlOrMoniker: props.urlOrMoniker ?? urlOrMoniker };\n}\n\nexport function createSolanaDevnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster<DevnetUrl>(props, {\n cluster: 'devnet',\n id: 'solana:devnet',\n label: 'Devnet',\n urlOrMoniker: 'devnet' as DevnetUrl,\n });\n}\n\nexport function createSolanaLocalnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'localnet',\n id: 'solana:localnet',\n label: 'Localnet',\n urlOrMoniker: 'localnet' as LocalnetUrl,\n });\n}\n\nexport function createSolanaMainnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'mainnet',\n id: 'solana:mainnet',\n label: 'Mainnet',\n urlOrMoniker: 'mainnet' as MainnetUrl,\n });\n}\n\nexport function createSolanaTestnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'testnet',\n id: 'solana:testnet',\n label: 'Testnet',\n urlOrMoniker: 'testnet' as TestnetUrl,\n });\n}\n","import { cleanTasks } from '../task/index.js'\n\nexport let clean = Symbol('clean')\n\nexport let cleanStores = (...stores) => {\n if (process.env.NODE_ENV === 'production') {\n throw new Error(\n 'cleanStores() can be used only during development or tests'\n )\n }\n cleanTasks()\n for (let $store of stores) {\n if ($store) {\n if ($store.mocked) delete $store.mocked\n if ($store[clean]) $store[clean]()\n }\n }\n}\n","import { clean } from '../clean-stores/index.js'\n\nlet listenerQueue = []\nlet lqIndex = 0\nconst QUEUE_ITEMS_PER_LISTENER = 4\nexport let epoch = 0\n\nexport let atom = (initialValue) => {\n let listeners = []\n let $atom = {\n get() {\n if (!$atom.lc) {\n $atom.listen(() => {})()\n }\n return $atom.value\n },\n lc: 0,\n listen(listener) {\n $atom.lc = listeners.push(listener)\n\n return () => {\n for (let i = lqIndex + QUEUE_ITEMS_PER_LISTENER; i < listenerQueue.length;) {\n if (listenerQueue[i] === listener) {\n listenerQueue.splice(i, QUEUE_ITEMS_PER_LISTENER)\n } else {\n i += QUEUE_ITEMS_PER_LISTENER\n }\n }\n\n let index = listeners.indexOf(listener)\n if (~index) {\n listeners.splice(index, 1)\n if (!--$atom.lc) $atom.off()\n }\n }\n },\n notify(oldValue, changedKey) {\n epoch++\n let runListenerQueue = !listenerQueue.length\n for (let listener of listeners) {\n listenerQueue.push(\n listener,\n $atom.value,\n oldValue,\n changedKey\n )\n }\n\n if (runListenerQueue) {\n for (lqIndex = 0; lqIndex < listenerQueue.length; lqIndex += QUEUE_ITEMS_PER_LISTENER) {\n listenerQueue[lqIndex](\n listenerQueue[lqIndex + 1],\n listenerQueue[lqIndex + 2],\n listenerQueue[lqIndex + 3]\n )\n }\n listenerQueue.length = 0\n }\n },\n /* It will be called on last listener unsubscribing.\n We will redefine it in onMount and onStop. */\n off() {},\n set(newValue) {\n let oldValue = $atom.value\n if (oldValue !== newValue) {\n $atom.value = newValue\n $atom.notify(oldValue)\n }\n },\n subscribe(listener) {\n let unbind = $atom.listen(listener)\n listener($atom.value)\n return unbind\n },\n value: initialValue\n }\n\n if (process.env.NODE_ENV !== 'production') {\n $atom[clean] = () => {\n listeners = []\n $atom.lc = 0\n $atom.off()\n }\n }\n\n return $atom\n}\n","import { clean } from '../clean-stores/index.js'\n\nconst START = 0\nconst STOP = 1\nconst SET = 2\nconst NOTIFY = 3\nconst MOUNT = 5\nconst UNMOUNT = 6\nconst REVERT_MUTATION = 10\n\nexport let on = (object, listener, eventKey, mutateStore) => {\n object.events = object.events || {}\n if (!object.events[eventKey + REVERT_MUTATION]) {\n object.events[eventKey + REVERT_MUTATION] = mutateStore(eventProps => {\n // eslint-disable-next-line no-sequences\n object.events[eventKey].reduceRight((event, l) => (l(event), event), {\n shared: {},\n ...eventProps\n })\n })\n }\n object.events[eventKey] = object.events[eventKey] || []\n object.events[eventKey].push(listener)\n return () => {\n let currentListeners = object.events[eventKey]\n let index = currentListeners.indexOf(listener)\n currentListeners.splice(index, 1)\n if (!currentListeners.length) {\n delete object.events[eventKey]\n object.events[eventKey + REVERT_MUTATION]()\n delete object.events[eventKey + REVERT_MUTATION]\n }\n }\n}\n\nexport let onStart = ($store, listener) =>\n on($store, listener, START, runListeners => {\n let originListen = $store.listen\n $store.listen = arg => {\n if (!$store.lc && !$store.starting) {\n $store.starting = true\n runListeners()\n delete $store.starting\n }\n return originListen(arg)\n }\n return () => {\n $store.listen = originListen\n }\n })\n\nexport let onStop = ($store, listener) =>\n on($store, listener, STOP, runListeners => {\n let originOff = $store.off\n $store.off = () => {\n runListeners()\n originOff()\n }\n return () => {\n $store.off = originOff\n }\n })\n\nexport let onSet = ($store, listener) =>\n on($store, listener, SET, runListeners => {\n let originSet = $store.set\n let originSetKey = $store.setKey\n if ($store.setKey) {\n $store.setKey = (changed, changedValue) => {\n let isAborted\n let abort = () => {\n isAborted = true\n }\n\n runListeners({\n abort,\n changed,\n newValue: { ...$store.value, [changed]: changedValue }\n })\n if (!isAborted) return originSetKey(changed, changedValue)\n }\n }\n $store.set = newValue => {\n let isAborted\n let abort = () => {\n isAborted = true\n }\n\n runListeners({ abort, newValue })\n if (!isAborted) return originSet(newValue)\n }\n return () => {\n $store.set = originSet\n $store.setKey = originSetKey\n }\n })\n\nexport let onNotify = ($store, listener) =>\n on($store, listener, NOTIFY, runListeners => {\n let originNotify = $store.notify\n $store.notify = (oldValue, changed) => {\n let isAborted\n let abort = () => {\n isAborted = true\n }\n\n runListeners({ abort, changed, oldValue })\n if (!isAborted) return originNotify(oldValue, changed)\n }\n return () => {\n $store.notify = originNotify\n }\n })\n\nexport let STORE_UNMOUNT_DELAY = 1000\n\nexport let onMount = ($store, initialize) => {\n let listener = payload => {\n let destroy = initialize(payload)\n if (destroy) $store.events[UNMOUNT].push(destroy)\n }\n return on($store, listener, MOUNT, runListeners => {\n let originListen = $store.listen\n $store.listen = (...args) => {\n if (!$store.lc && !$store.active) {\n $store.active = true\n runListeners()\n }\n return originListen(...args)\n }\n\n let originOff = $store.off\n $store.events[UNMOUNT] = []\n $store.off = () => {\n originOff()\n setTimeout(() => {\n if ($store.active && !$store.lc) {\n $store.active = false\n for (let destroy of $store.events[UNMOUNT]) destroy()\n $store.events[UNMOUNT] = []\n }\n }, STORE_UNMOUNT_DELAY)\n }\n\n if (process.env.NODE_ENV !== 'production') {\n let originClean = $store[clean]\n $store[clean] = () => {\n for (let destroy of $store.events[UNMOUNT]) destroy()\n $store.events[UNMOUNT] = []\n $store.active = false\n originClean()\n }\n }\n\n return () => {\n $store.listen = originListen\n $store.off = originOff\n }\n })\n}\n","import { atom, epoch } from '../atom/index.js'\nimport { onMount } from '../lifecycle/index.js'\n\nlet computedStore = (stores, cb, batched) => {\n if (!Array.isArray(stores)) stores = [stores]\n\n let previousArgs\n let currentEpoch\n let set = () => {\n if (currentEpoch === epoch) return\n currentEpoch = epoch\n let args = stores.map($store => $store.get())\n if (!previousArgs || args.some((arg, i) => arg !== previousArgs[i])) {\n previousArgs = args\n let value = cb(...args)\n if (value && value.then && value.t) {\n value.then(asyncValue => {\n if (previousArgs === args) {\n // Prevent a stale set\n $computed.set(asyncValue)\n }\n })\n } else {\n $computed.set(value)\n currentEpoch = epoch\n }\n }\n }\n let $computed = atom(undefined)\n let get = $computed.get\n $computed.get = () => {\n set()\n return get()\n }\n\n let timer\n let run = batched\n ? () => {\n clearTimeout(timer)\n timer = setTimeout(set)\n }\n : set\n\n onMount($computed, () => {\n let unbinds = stores.map($store => $store.listen(run))\n set()\n return () => {\n for (let unbind of unbinds) unbind()\n }\n })\n\n return $computed\n}\n\nexport let computed = (stores, fn) => computedStore(stores, fn)\nexport let batched = (stores, fn) => computedStore(stores, fn, true)\n","import { atom, map, onMount } from 'nanostores'\n\nlet identity = a => a\nlet storageEngine = {}\nlet eventsEngine = { addEventListener() {}, removeEventListener() {} }\n\nfunction testSupport() {\n try {\n return typeof localStorage !== 'undefined'\n /* c8 ignore next 4 */\n } catch {\n // In Privacy Mode access to localStorage will return error\n return false\n }\n}\nif (testSupport()) {\n storageEngine = localStorage\n}\n\nexport let windowPersistentEvents = {\n addEventListener(key, listener, restore) {\n window.addEventListener('storage', listener)\n window.addEventListener('pageshow', restore)\n },\n removeEventListener(key, listener, restore) {\n window.removeEventListener('storage', listener)\n window.removeEventListener('pageshow', restore)\n }\n}\n\nif (typeof window !== 'undefined') {\n eventsEngine = windowPersistentEvents\n}\n\nexport function setPersistentEngine(storage, events) {\n storageEngine = storage\n eventsEngine = events\n}\n\nexport function persistentAtom(name, initial = undefined, opts = {}) {\n let encode = opts.encode || identity\n let decode = opts.decode || identity\n\n let store = atom(initial)\n\n let set = store.set\n store.set = newValue => {\n if (typeof newValue === 'undefined') {\n delete storageEngine[name]\n } else {\n storageEngine[name] = encode(newValue)\n }\n set(newValue)\n }\n\n function listener(e) {\n if (e.key === name) {\n if (e.newValue === null) {\n set(undefined)\n } else {\n set(decode(e.newValue))\n }\n } else if (!storageEngine[name]) {\n set(undefined)\n }\n }\n\n function restore() {\n store.set(storageEngine[name] ? decode(storageEngine[name]) : initial)\n }\n\n onMount(store, () => {\n restore()\n if (opts.listen !== false) {\n eventsEngine.addEventListener(name, listener, restore)\n return () => {\n eventsEngine.removeEventListener(name, listener, restore)\n }\n }\n })\n\n return store\n}\n\nexport function persistentMap(prefix, initial = {}, opts = {}) {\n let encode = opts.encode || identity\n let decode = opts.decode || identity\n\n let store = map()\n\n let setKey = store.setKey\n let storeKey = (key, newValue) => {\n if (typeof newValue === 'undefined') {\n if (opts.listen !== false && eventsEngine.perKey) {\n eventsEngine.removeEventListener(prefix + key, listener, restore)\n }\n delete storageEngine[prefix + key]\n } else {\n if (\n opts.listen !== false &&\n eventsEngine.perKey &&\n !(key in store.value)\n ) {\n eventsEngine.addEventListener(prefix + key, listener, restore)\n }\n storageEngine[prefix + key] = encode(newValue)\n }\n }\n\n store.setKey = (key, newValue) => {\n storeKey(key, newValue)\n setKey(key, newValue)\n }\n\n let set = store.set\n store.set = function (newObject) {\n for (let key in newObject) {\n storeKey(key, newObject[key])\n }\n for (let key in store.value) {\n if (!(key in newObject)) {\n storeKey(key, undefined)\n }\n }\n set(newObject)\n }\n\n function listener(e) {\n if (!e.key) {\n set({})\n } else if (e.key.startsWith(prefix)) {\n if (e.newValue === null) {\n setKey(e.key.slice(prefix.length), undefined)\n } else {\n setKey(e.key.slice(prefix.length), decode(e.newValue))\n }\n }\n }\n\n function restore() {\n let data = { ...initial }\n for (let key in storageEngine) {\n if (key.startsWith(prefix)) {\n data[key.slice(prefix.length)] = decode(storageEngine[key])\n }\n }\n for (let key in data) {\n store.setKey(key, data[key])\n }\n }\n\n onMount(store, () => {\n restore()\n if (opts.listen !== false) {\n eventsEngine.addEventListener(prefix, listener, restore)\n return () => {\n eventsEngine.removeEventListener(prefix, listener, restore)\n for (let key in store.value) {\n eventsEngine.removeEventListener(prefix + key, listener, restore)\n }\n }\n }\n })\n\n return store\n}\n\nlet testStorage = {}\nlet testListeners = []\n\nexport function useTestStorageEngine() {\n setPersistentEngine(testStorage, {\n addEventListener(key, cb) {\n testListeners.push(cb)\n },\n removeEventListener(key, cb) {\n testListeners = testListeners.filter(i => i !== cb)\n }\n })\n}\n\nexport function setTestStorageKey(key, newValue) {\n if (typeof newValue === 'undefined') {\n delete testStorage[key]\n } else {\n testStorage[key] = newValue\n }\n let event = { key, newValue }\n for (let listener of testListeners) {\n listener(event)\n }\n}\n\nexport function getTestStorage() {\n return testStorage\n}\n\nexport function cleanTestStorage() {\n for (let i in testStorage) {\n setTestStorageKey(i, undefined)\n }\n}\n","import { persistentAtom } from '@nanostores/persistent';\nimport { computed, WritableAtom } from 'nanostores';\n\nexport class Storage<T> {\n private readonly atom: WritableAtom<T>;\n\n constructor(\n readonly key: string,\n readonly initial: T,\n ) {\n this.atom = persistentAtom<T>(key, initial, { decode: JSON.parse, encode: JSON.stringify });\n }\n\n get() {\n return this.atom.get();\n }\n\n set(value: T) {\n this.atom.set(value);\n }\n\n get value() {\n return computed(this.atom, value => value);\n }\n}\n","import { Storage } from './storage';\n\nexport function createStorage<T>({ initial, key }: { initial: T; key: string }) {\n return new Storage(key, initial);\n}\n","import { createStorage } from './create-storage';\nimport { Storage } from './storage';\n\nexport type StorageAccount = Storage<string | undefined>;\n\nexport function createStorageAccount({\n initial,\n key,\n}: {\n initial?: string | undefined;\n key?: string;\n} = {}): StorageAccount {\n return createStorage<string | undefined>({\n initial,\n key: key ?? 'wallet-ui:account',\n });\n}\n","import { createStorage } from './create-storage';\nimport { Storage } from './storage';\nimport { SolanaClusterId } from './types/solana-cluster-id';\n\nexport type StorageCluster = Storage<SolanaClusterId>;\n\nexport function createStorageCluster({\n initial,\n key,\n}: {\n initial?: SolanaClusterId;\n key?: string;\n} = {}): StorageCluster {\n return createStorage<SolanaClusterId>({\n initial: initial ?? 'solana:devnet',\n key: key ?? 'wallet-ui:cluster',\n });\n}\n","export function handleCopyText(text?: string) {\n if (!text) {\n return;\n }\n if (\n typeof globalThis === 'undefined' ||\n !globalThis.navigator ||\n !globalThis.navigator.clipboard ||\n !globalThis.navigator.clipboard.writeText\n ) {\n return;\n }\n void globalThis.navigator.clipboard.writeText(text);\n}\n"]}
@@ -1,3 +1,6 @@
1
+ import { persistentAtom } from '@nanostores/persistent';
2
+ import { computed } from 'nanostores';
3
+
1
4
  // src/clusters.ts
2
5
  function createSolanaCluster(props, { cluster, id, label, urlOrMoniker }) {
3
6
  if (typeof props === "string") {
@@ -37,6 +40,50 @@ function createSolanaTestnet(props = {}) {
37
40
  urlOrMoniker: "testnet"
38
41
  });
39
42
  }
43
+ var Storage = class {
44
+ constructor(key, initial) {
45
+ this.key = key;
46
+ this.initial = initial;
47
+ this.atom = persistentAtom(key, initial, { decode: JSON.parse, encode: JSON.stringify });
48
+ }
49
+ atom;
50
+ get() {
51
+ return this.atom.get();
52
+ }
53
+ set(value) {
54
+ this.atom.set(value);
55
+ }
56
+ get value() {
57
+ return computed(this.atom, (value) => value);
58
+ }
59
+ };
60
+
61
+ // src/create-storage.ts
62
+ function createStorage({ initial, key }) {
63
+ return new Storage(key, initial);
64
+ }
65
+
66
+ // src/create-storage-account.ts
67
+ function createStorageAccount({
68
+ initial,
69
+ key
70
+ } = {}) {
71
+ return createStorage({
72
+ initial,
73
+ key: key ?? "wallet-ui:account"
74
+ });
75
+ }
76
+
77
+ // src/create-storage-cluster.ts
78
+ function createStorageCluster({
79
+ initial,
80
+ key
81
+ } = {}) {
82
+ return createStorage({
83
+ initial: initial ?? "solana:devnet",
84
+ key: key ?? "wallet-ui:cluster"
85
+ });
86
+ }
40
87
 
41
88
  // src/handle-copy-text.ts
42
89
  function handleCopyText(text) {
@@ -49,19 +96,6 @@ function handleCopyText(text) {
49
96
  void globalThis.navigator.clipboard.writeText(text);
50
97
  }
51
98
 
52
- // src/storage.ts
53
- var LocalStorage = class {
54
- getItem(key) {
55
- return localStorage.getItem(key);
56
- }
57
- setItem(key, value) {
58
- localStorage.setItem(key, value);
59
- }
60
- removeItem(key) {
61
- localStorage.removeItem(key);
62
- }
63
- };
64
-
65
- export { LocalStorage, createSolanaDevnet, createSolanaLocalnet, createSolanaMainnet, createSolanaTestnet, handleCopyText };
99
+ export { Storage, createSolanaDevnet, createSolanaLocalnet, createSolanaMainnet, createSolanaTestnet, createStorage, createStorageAccount, createStorageCluster, handleCopyText };
66
100
  //# sourceMappingURL=index.native.mjs.map
67
101
  //# sourceMappingURL=index.native.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/clusters.ts","../src/handle-copy-text.ts","../src/storage.ts"],"names":[],"mappings":";AAMA,SAAS,oBACL,KACA,EAAA,EAAE,SAAS,EAAI,EAAA,KAAA,EAAO,cAC0C,EAAA;AAChE,EAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC3B,IAAA,OAAO,EAAE,OAAA,EAAS,EAAI,EAAA,KAAA,EAAO,cAAc,KAAW,EAAA;AAAA;AAG1D,EAAO,OAAA,EAAE,OAAS,EAAA,EAAA,EAAI,KAAO,EAAA,KAAA,CAAM,SAAS,KAAO,EAAA,YAAA,EAAc,KAAM,CAAA,YAAA,IAAgB,YAAa,EAAA;AACxG;AAEO,SAAS,kBAAA,CAAmB,KAA2B,GAAA,EAAmB,EAAA;AAC7E,EAAA,OAAO,oBAA+B,KAAO,EAAA;AAAA,IACzC,OAAS,EAAA,QAAA;AAAA,IACT,EAAI,EAAA,eAAA;AAAA,IACJ,KAAO,EAAA,QAAA;AAAA,IACP,YAAc,EAAA;AAAA,GACjB,CAAA;AACL;AAEO,SAAS,oBAAA,CAAqB,KAA2B,GAAA,EAAmB,EAAA;AAC/E,EAAA,OAAO,oBAAoB,KAAO,EAAA;AAAA,IAC9B,OAAS,EAAA,UAAA;AAAA,IACT,EAAI,EAAA,iBAAA;AAAA,IACJ,KAAO,EAAA,UAAA;AAAA,IACP,YAAc,EAAA;AAAA,GACjB,CAAA;AACL;AAEO,SAAS,mBAAA,CAAoB,KAA2B,GAAA,EAAmB,EAAA;AAC9E,EAAA,OAAO,oBAAoB,KAAO,EAAA;AAAA,IAC9B,OAAS,EAAA,SAAA;AAAA,IACT,EAAI,EAAA,gBAAA;AAAA,IACJ,KAAO,EAAA,SAAA;AAAA,IACP,YAAc,EAAA;AAAA,GACjB,CAAA;AACL;AAEO,SAAS,mBAAA,CAAoB,KAA2B,GAAA,EAAmB,EAAA;AAC9E,EAAA,OAAO,oBAAoB,KAAO,EAAA;AAAA,IAC9B,OAAS,EAAA,SAAA;AAAA,IACT,EAAI,EAAA,gBAAA;AAAA,IACJ,KAAO,EAAA,SAAA;AAAA,IACP,YAAc,EAAA;AAAA,GACjB,CAAA;AACL;;;ACnDO,SAAS,eAAe,IAAe,EAAA;AAC1C,EAAA,IAAI,CAAC,IAAM,EAAA;AACP,IAAA;AAAA;AAEJ,EAAA,IACI,OAAO,UAAA,KAAe,WACtB,IAAA,CAAC,WAAW,SACZ,IAAA,CAAC,UAAW,CAAA,SAAA,CAAU,SACtB,IAAA,CAAC,UAAW,CAAA,SAAA,CAAU,UAAU,SAClC,EAAA;AACE,IAAA;AAAA;AAEJ,EAAA,KAAK,UAAW,CAAA,SAAA,CAAU,SAAU,CAAA,SAAA,CAAU,IAAI,CAAA;AACtD;;;ACLO,IAAM,eAAN,MAAsC;AAAA,EACzC,QAAQ,GAA4B,EAAA;AAChC,IAAO,OAAA,YAAA,CAAa,QAAQ,GAAG,CAAA;AAAA;AACnC,EAEA,OAAA,CAAQ,KAAa,KAAqB,EAAA;AACtC,IAAa,YAAA,CAAA,OAAA,CAAQ,KAAK,KAAK,CAAA;AAAA;AACnC,EAEA,WAAW,GAAmB,EAAA;AAC1B,IAAA,YAAA,CAAa,WAAW,GAAG,CAAA;AAAA;AAEnC","file":"index.native.mjs","sourcesContent":["import type { DevnetUrl, LocalnetUrl, MainnetUrl, TestnetUrl } from 'gill';\n\nimport { SolanaCluster } from './types/solana-cluster';\n\nexport type CreateSolanaProps = Partial<Pick<SolanaCluster, 'label' | 'urlOrMoniker'>> | string;\n\nfunction createSolanaCluster<T extends DevnetUrl | LocalnetUrl | MainnetUrl | TestnetUrl>(\n props: CreateSolanaProps,\n { cluster, id, label, urlOrMoniker }: SolanaCluster,\n): Pick<SolanaCluster, 'cluster' | 'id' | 'label' | 'urlOrMoniker'> {\n if (typeof props === 'string') {\n return { cluster, id, label, urlOrMoniker: props as T };\n }\n\n return { cluster, id, label: props.label ?? label, urlOrMoniker: props.urlOrMoniker ?? urlOrMoniker };\n}\n\nexport function createSolanaDevnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster<DevnetUrl>(props, {\n cluster: 'devnet',\n id: 'solana:devnet',\n label: 'Devnet',\n urlOrMoniker: 'devnet' as DevnetUrl,\n });\n}\n\nexport function createSolanaLocalnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'localnet',\n id: 'solana:localnet',\n label: 'Localnet',\n urlOrMoniker: 'localnet' as LocalnetUrl,\n });\n}\n\nexport function createSolanaMainnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'mainnet',\n id: 'solana:mainnet',\n label: 'Mainnet',\n urlOrMoniker: 'mainnet' as MainnetUrl,\n });\n}\n\nexport function createSolanaTestnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'testnet',\n id: 'solana:testnet',\n label: 'Testnet',\n urlOrMoniker: 'testnet' as TestnetUrl,\n });\n}\n","export function handleCopyText(text?: string) {\n if (!text) {\n return;\n }\n if (\n typeof globalThis === 'undefined' ||\n !globalThis.navigator ||\n !globalThis.navigator.clipboard ||\n !globalThis.navigator.clipboard.writeText\n ) {\n return;\n }\n void globalThis.navigator.clipboard.writeText(text);\n}\n","export interface Storage {\n getItem(key: string): string | null;\n\n removeItem(key: string): void;\n\n setItem(key: string, value: string): void;\n}\n\nexport class LocalStorage implements Storage {\n getItem(key: string): string | null {\n return localStorage.getItem(key);\n }\n\n setItem(key: string, value: string): void {\n localStorage.setItem(key, value);\n }\n\n removeItem(key: string): void {\n localStorage.removeItem(key);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/clusters.ts","../src/storage.ts","../src/create-storage.ts","../src/create-storage-account.ts","../src/create-storage-cluster.ts","../src/handle-copy-text.ts"],"names":[],"mappings":"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","file":"index.native.mjs","sourcesContent":["import type { DevnetUrl, LocalnetUrl, MainnetUrl, TestnetUrl } from 'gill';\n\nimport { SolanaCluster } from './types/solana-cluster';\n\nexport type CreateSolanaProps = Partial<Pick<SolanaCluster, 'label' | 'urlOrMoniker'>> | string;\n\nfunction createSolanaCluster<T extends DevnetUrl | LocalnetUrl | MainnetUrl | TestnetUrl>(\n props: CreateSolanaProps,\n { cluster, id, label, urlOrMoniker }: SolanaCluster,\n): Pick<SolanaCluster, 'cluster' | 'id' | 'label' | 'urlOrMoniker'> {\n if (typeof props === 'string') {\n return { cluster, id, label, urlOrMoniker: props as T };\n }\n\n return { cluster, id, label: props.label ?? label, urlOrMoniker: props.urlOrMoniker ?? urlOrMoniker };\n}\n\nexport function createSolanaDevnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster<DevnetUrl>(props, {\n cluster: 'devnet',\n id: 'solana:devnet',\n label: 'Devnet',\n urlOrMoniker: 'devnet' as DevnetUrl,\n });\n}\n\nexport function createSolanaLocalnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'localnet',\n id: 'solana:localnet',\n label: 'Localnet',\n urlOrMoniker: 'localnet' as LocalnetUrl,\n });\n}\n\nexport function createSolanaMainnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'mainnet',\n id: 'solana:mainnet',\n label: 'Mainnet',\n urlOrMoniker: 'mainnet' as MainnetUrl,\n });\n}\n\nexport function createSolanaTestnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'testnet',\n id: 'solana:testnet',\n label: 'Testnet',\n urlOrMoniker: 'testnet' as TestnetUrl,\n });\n}\n","import { persistentAtom } from '@nanostores/persistent';\nimport { computed, WritableAtom } from 'nanostores';\n\nexport class Storage<T> {\n private readonly atom: WritableAtom<T>;\n\n constructor(\n readonly key: string,\n readonly initial: T,\n ) {\n this.atom = persistentAtom<T>(key, initial, { decode: JSON.parse, encode: JSON.stringify });\n }\n\n get() {\n return this.atom.get();\n }\n\n set(value: T) {\n this.atom.set(value);\n }\n\n get value() {\n return computed(this.atom, value => value);\n }\n}\n","import { Storage } from './storage';\n\nexport function createStorage<T>({ initial, key }: { initial: T; key: string }) {\n return new Storage(key, initial);\n}\n","import { createStorage } from './create-storage';\nimport { Storage } from './storage';\n\nexport type StorageAccount = Storage<string | undefined>;\n\nexport function createStorageAccount({\n initial,\n key,\n}: {\n initial?: string | undefined;\n key?: string;\n} = {}): StorageAccount {\n return createStorage<string | undefined>({\n initial,\n key: key ?? 'wallet-ui:account',\n });\n}\n","import { createStorage } from './create-storage';\nimport { Storage } from './storage';\nimport { SolanaClusterId } from './types/solana-cluster-id';\n\nexport type StorageCluster = Storage<SolanaClusterId>;\n\nexport function createStorageCluster({\n initial,\n key,\n}: {\n initial?: SolanaClusterId;\n key?: string;\n} = {}): StorageCluster {\n return createStorage<SolanaClusterId>({\n initial: initial ?? 'solana:devnet',\n key: key ?? 'wallet-ui:cluster',\n });\n}\n","export function handleCopyText(text?: string) {\n if (!text) {\n return;\n }\n if (\n typeof globalThis === 'undefined' ||\n !globalThis.navigator ||\n !globalThis.navigator.clipboard ||\n !globalThis.navigator.clipboard.writeText\n ) {\n return;\n }\n void globalThis.navigator.clipboard.writeText(text);\n}\n"]}
@@ -1,5 +1,8 @@
1
1
  'use strict';
2
2
 
3
+ var persistent = require('@nanostores/persistent');
4
+ var nanostores = require('nanostores');
5
+
3
6
  // src/clusters.ts
4
7
  function createSolanaCluster(props, { cluster, id, label, urlOrMoniker }) {
5
8
  if (typeof props === "string") {
@@ -39,6 +42,50 @@ function createSolanaTestnet(props = {}) {
39
42
  urlOrMoniker: "testnet"
40
43
  });
41
44
  }
45
+ var Storage = class {
46
+ constructor(key, initial) {
47
+ this.key = key;
48
+ this.initial = initial;
49
+ this.atom = persistent.persistentAtom(key, initial, { decode: JSON.parse, encode: JSON.stringify });
50
+ }
51
+ atom;
52
+ get() {
53
+ return this.atom.get();
54
+ }
55
+ set(value) {
56
+ this.atom.set(value);
57
+ }
58
+ get value() {
59
+ return nanostores.computed(this.atom, (value) => value);
60
+ }
61
+ };
62
+
63
+ // src/create-storage.ts
64
+ function createStorage({ initial, key }) {
65
+ return new Storage(key, initial);
66
+ }
67
+
68
+ // src/create-storage-account.ts
69
+ function createStorageAccount({
70
+ initial,
71
+ key
72
+ } = {}) {
73
+ return createStorage({
74
+ initial,
75
+ key: key ?? "wallet-ui:account"
76
+ });
77
+ }
78
+
79
+ // src/create-storage-cluster.ts
80
+ function createStorageCluster({
81
+ initial,
82
+ key
83
+ } = {}) {
84
+ return createStorage({
85
+ initial: initial ?? "solana:devnet",
86
+ key: key ?? "wallet-ui:cluster"
87
+ });
88
+ }
42
89
 
43
90
  // src/handle-copy-text.ts
44
91
  function handleCopyText(text) {
@@ -51,24 +98,14 @@ function handleCopyText(text) {
51
98
  void globalThis.navigator.clipboard.writeText(text);
52
99
  }
53
100
 
54
- // src/storage.ts
55
- var LocalStorage = class {
56
- getItem(key) {
57
- return localStorage.getItem(key);
58
- }
59
- setItem(key, value) {
60
- localStorage.setItem(key, value);
61
- }
62
- removeItem(key) {
63
- localStorage.removeItem(key);
64
- }
65
- };
66
-
67
- exports.LocalStorage = LocalStorage;
101
+ exports.Storage = Storage;
68
102
  exports.createSolanaDevnet = createSolanaDevnet;
69
103
  exports.createSolanaLocalnet = createSolanaLocalnet;
70
104
  exports.createSolanaMainnet = createSolanaMainnet;
71
105
  exports.createSolanaTestnet = createSolanaTestnet;
106
+ exports.createStorage = createStorage;
107
+ exports.createStorageAccount = createStorageAccount;
108
+ exports.createStorageCluster = createStorageCluster;
72
109
  exports.handleCopyText = handleCopyText;
73
110
  //# sourceMappingURL=index.node.cjs.map
74
111
  //# sourceMappingURL=index.node.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/clusters.ts","../src/handle-copy-text.ts","../src/storage.ts"],"names":[],"mappings":";;;AAMA,SAAS,oBACL,KACA,EAAA,EAAE,SAAS,EAAI,EAAA,KAAA,EAAO,cAC0C,EAAA;AAChE,EAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC3B,IAAA,OAAO,EAAE,OAAA,EAAS,EAAI,EAAA,KAAA,EAAO,cAAc,KAAW,EAAA;AAAA;AAG1D,EAAO,OAAA,EAAE,OAAS,EAAA,EAAA,EAAI,KAAO,EAAA,KAAA,CAAM,SAAS,KAAO,EAAA,YAAA,EAAc,KAAM,CAAA,YAAA,IAAgB,YAAa,EAAA;AACxG;AAEO,SAAS,kBAAA,CAAmB,KAA2B,GAAA,EAAmB,EAAA;AAC7E,EAAA,OAAO,oBAA+B,KAAO,EAAA;AAAA,IACzC,OAAS,EAAA,QAAA;AAAA,IACT,EAAI,EAAA,eAAA;AAAA,IACJ,KAAO,EAAA,QAAA;AAAA,IACP,YAAc,EAAA;AAAA,GACjB,CAAA;AACL;AAEO,SAAS,oBAAA,CAAqB,KAA2B,GAAA,EAAmB,EAAA;AAC/E,EAAA,OAAO,oBAAoB,KAAO,EAAA;AAAA,IAC9B,OAAS,EAAA,UAAA;AAAA,IACT,EAAI,EAAA,iBAAA;AAAA,IACJ,KAAO,EAAA,UAAA;AAAA,IACP,YAAc,EAAA;AAAA,GACjB,CAAA;AACL;AAEO,SAAS,mBAAA,CAAoB,KAA2B,GAAA,EAAmB,EAAA;AAC9E,EAAA,OAAO,oBAAoB,KAAO,EAAA;AAAA,IAC9B,OAAS,EAAA,SAAA;AAAA,IACT,EAAI,EAAA,gBAAA;AAAA,IACJ,KAAO,EAAA,SAAA;AAAA,IACP,YAAc,EAAA;AAAA,GACjB,CAAA;AACL;AAEO,SAAS,mBAAA,CAAoB,KAA2B,GAAA,EAAmB,EAAA;AAC9E,EAAA,OAAO,oBAAoB,KAAO,EAAA;AAAA,IAC9B,OAAS,EAAA,SAAA;AAAA,IACT,EAAI,EAAA,gBAAA;AAAA,IACJ,KAAO,EAAA,SAAA;AAAA,IACP,YAAc,EAAA;AAAA,GACjB,CAAA;AACL;;;ACnDO,SAAS,eAAe,IAAe,EAAA;AAC1C,EAAA,IAAI,CAAC,IAAM,EAAA;AACP,IAAA;AAAA;AAEJ,EAAA,IACI,OAAO,UAAA,KAAe,WACtB,IAAA,CAAC,WAAW,SACZ,IAAA,CAAC,UAAW,CAAA,SAAA,CAAU,SACtB,IAAA,CAAC,UAAW,CAAA,SAAA,CAAU,UAAU,SAClC,EAAA;AACE,IAAA;AAAA;AAEJ,EAAA,KAAK,UAAW,CAAA,SAAA,CAAU,SAAU,CAAA,SAAA,CAAU,IAAI,CAAA;AACtD;;;ACLO,IAAM,eAAN,MAAsC;AAAA,EACzC,QAAQ,GAA4B,EAAA;AAChC,IAAO,OAAA,YAAA,CAAa,QAAQ,GAAG,CAAA;AAAA;AACnC,EAEA,OAAA,CAAQ,KAAa,KAAqB,EAAA;AACtC,IAAa,YAAA,CAAA,OAAA,CAAQ,KAAK,KAAK,CAAA;AAAA;AACnC,EAEA,WAAW,GAAmB,EAAA;AAC1B,IAAA,YAAA,CAAa,WAAW,GAAG,CAAA;AAAA;AAEnC","file":"index.node.cjs","sourcesContent":["import type { DevnetUrl, LocalnetUrl, MainnetUrl, TestnetUrl } from 'gill';\n\nimport { SolanaCluster } from './types/solana-cluster';\n\nexport type CreateSolanaProps = Partial<Pick<SolanaCluster, 'label' | 'urlOrMoniker'>> | string;\n\nfunction createSolanaCluster<T extends DevnetUrl | LocalnetUrl | MainnetUrl | TestnetUrl>(\n props: CreateSolanaProps,\n { cluster, id, label, urlOrMoniker }: SolanaCluster,\n): Pick<SolanaCluster, 'cluster' | 'id' | 'label' | 'urlOrMoniker'> {\n if (typeof props === 'string') {\n return { cluster, id, label, urlOrMoniker: props as T };\n }\n\n return { cluster, id, label: props.label ?? label, urlOrMoniker: props.urlOrMoniker ?? urlOrMoniker };\n}\n\nexport function createSolanaDevnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster<DevnetUrl>(props, {\n cluster: 'devnet',\n id: 'solana:devnet',\n label: 'Devnet',\n urlOrMoniker: 'devnet' as DevnetUrl,\n });\n}\n\nexport function createSolanaLocalnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'localnet',\n id: 'solana:localnet',\n label: 'Localnet',\n urlOrMoniker: 'localnet' as LocalnetUrl,\n });\n}\n\nexport function createSolanaMainnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'mainnet',\n id: 'solana:mainnet',\n label: 'Mainnet',\n urlOrMoniker: 'mainnet' as MainnetUrl,\n });\n}\n\nexport function createSolanaTestnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'testnet',\n id: 'solana:testnet',\n label: 'Testnet',\n urlOrMoniker: 'testnet' as TestnetUrl,\n });\n}\n","export function handleCopyText(text?: string) {\n if (!text) {\n return;\n }\n if (\n typeof globalThis === 'undefined' ||\n !globalThis.navigator ||\n !globalThis.navigator.clipboard ||\n !globalThis.navigator.clipboard.writeText\n ) {\n return;\n }\n void globalThis.navigator.clipboard.writeText(text);\n}\n","export interface Storage {\n getItem(key: string): string | null;\n\n removeItem(key: string): void;\n\n setItem(key: string, value: string): void;\n}\n\nexport class LocalStorage implements Storage {\n getItem(key: string): string | null {\n return localStorage.getItem(key);\n }\n\n setItem(key: string, value: string): void {\n localStorage.setItem(key, value);\n }\n\n removeItem(key: string): void {\n localStorage.removeItem(key);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/clusters.ts","../src/storage.ts","../src/create-storage.ts","../src/create-storage-account.ts","../src/create-storage-cluster.ts","../src/handle-copy-text.ts"],"names":["persistentAtom","computed"],"mappings":"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","file":"index.node.cjs","sourcesContent":["import type { DevnetUrl, LocalnetUrl, MainnetUrl, TestnetUrl } from 'gill';\n\nimport { SolanaCluster } from './types/solana-cluster';\n\nexport type CreateSolanaProps = Partial<Pick<SolanaCluster, 'label' | 'urlOrMoniker'>> | string;\n\nfunction createSolanaCluster<T extends DevnetUrl | LocalnetUrl | MainnetUrl | TestnetUrl>(\n props: CreateSolanaProps,\n { cluster, id, label, urlOrMoniker }: SolanaCluster,\n): Pick<SolanaCluster, 'cluster' | 'id' | 'label' | 'urlOrMoniker'> {\n if (typeof props === 'string') {\n return { cluster, id, label, urlOrMoniker: props as T };\n }\n\n return { cluster, id, label: props.label ?? label, urlOrMoniker: props.urlOrMoniker ?? urlOrMoniker };\n}\n\nexport function createSolanaDevnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster<DevnetUrl>(props, {\n cluster: 'devnet',\n id: 'solana:devnet',\n label: 'Devnet',\n urlOrMoniker: 'devnet' as DevnetUrl,\n });\n}\n\nexport function createSolanaLocalnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'localnet',\n id: 'solana:localnet',\n label: 'Localnet',\n urlOrMoniker: 'localnet' as LocalnetUrl,\n });\n}\n\nexport function createSolanaMainnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'mainnet',\n id: 'solana:mainnet',\n label: 'Mainnet',\n urlOrMoniker: 'mainnet' as MainnetUrl,\n });\n}\n\nexport function createSolanaTestnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'testnet',\n id: 'solana:testnet',\n label: 'Testnet',\n urlOrMoniker: 'testnet' as TestnetUrl,\n });\n}\n","import { persistentAtom } from '@nanostores/persistent';\nimport { computed, WritableAtom } from 'nanostores';\n\nexport class Storage<T> {\n private readonly atom: WritableAtom<T>;\n\n constructor(\n readonly key: string,\n readonly initial: T,\n ) {\n this.atom = persistentAtom<T>(key, initial, { decode: JSON.parse, encode: JSON.stringify });\n }\n\n get() {\n return this.atom.get();\n }\n\n set(value: T) {\n this.atom.set(value);\n }\n\n get value() {\n return computed(this.atom, value => value);\n }\n}\n","import { Storage } from './storage';\n\nexport function createStorage<T>({ initial, key }: { initial: T; key: string }) {\n return new Storage(key, initial);\n}\n","import { createStorage } from './create-storage';\nimport { Storage } from './storage';\n\nexport type StorageAccount = Storage<string | undefined>;\n\nexport function createStorageAccount({\n initial,\n key,\n}: {\n initial?: string | undefined;\n key?: string;\n} = {}): StorageAccount {\n return createStorage<string | undefined>({\n initial,\n key: key ?? 'wallet-ui:account',\n });\n}\n","import { createStorage } from './create-storage';\nimport { Storage } from './storage';\nimport { SolanaClusterId } from './types/solana-cluster-id';\n\nexport type StorageCluster = Storage<SolanaClusterId>;\n\nexport function createStorageCluster({\n initial,\n key,\n}: {\n initial?: SolanaClusterId;\n key?: string;\n} = {}): StorageCluster {\n return createStorage<SolanaClusterId>({\n initial: initial ?? 'solana:devnet',\n key: key ?? 'wallet-ui:cluster',\n });\n}\n","export function handleCopyText(text?: string) {\n if (!text) {\n return;\n }\n if (\n typeof globalThis === 'undefined' ||\n !globalThis.navigator ||\n !globalThis.navigator.clipboard ||\n !globalThis.navigator.clipboard.writeText\n ) {\n return;\n }\n void globalThis.navigator.clipboard.writeText(text);\n}\n"]}
@@ -1,3 +1,6 @@
1
+ import { persistentAtom } from '@nanostores/persistent';
2
+ import { computed } from 'nanostores';
3
+
1
4
  // src/clusters.ts
2
5
  function createSolanaCluster(props, { cluster, id, label, urlOrMoniker }) {
3
6
  if (typeof props === "string") {
@@ -37,6 +40,50 @@ function createSolanaTestnet(props = {}) {
37
40
  urlOrMoniker: "testnet"
38
41
  });
39
42
  }
43
+ var Storage = class {
44
+ constructor(key, initial) {
45
+ this.key = key;
46
+ this.initial = initial;
47
+ this.atom = persistentAtom(key, initial, { decode: JSON.parse, encode: JSON.stringify });
48
+ }
49
+ atom;
50
+ get() {
51
+ return this.atom.get();
52
+ }
53
+ set(value) {
54
+ this.atom.set(value);
55
+ }
56
+ get value() {
57
+ return computed(this.atom, (value) => value);
58
+ }
59
+ };
60
+
61
+ // src/create-storage.ts
62
+ function createStorage({ initial, key }) {
63
+ return new Storage(key, initial);
64
+ }
65
+
66
+ // src/create-storage-account.ts
67
+ function createStorageAccount({
68
+ initial,
69
+ key
70
+ } = {}) {
71
+ return createStorage({
72
+ initial,
73
+ key: key ?? "wallet-ui:account"
74
+ });
75
+ }
76
+
77
+ // src/create-storage-cluster.ts
78
+ function createStorageCluster({
79
+ initial,
80
+ key
81
+ } = {}) {
82
+ return createStorage({
83
+ initial: initial ?? "solana:devnet",
84
+ key: key ?? "wallet-ui:cluster"
85
+ });
86
+ }
40
87
 
41
88
  // src/handle-copy-text.ts
42
89
  function handleCopyText(text) {
@@ -49,19 +96,6 @@ function handleCopyText(text) {
49
96
  void globalThis.navigator.clipboard.writeText(text);
50
97
  }
51
98
 
52
- // src/storage.ts
53
- var LocalStorage = class {
54
- getItem(key) {
55
- return localStorage.getItem(key);
56
- }
57
- setItem(key, value) {
58
- localStorage.setItem(key, value);
59
- }
60
- removeItem(key) {
61
- localStorage.removeItem(key);
62
- }
63
- };
64
-
65
- export { LocalStorage, createSolanaDevnet, createSolanaLocalnet, createSolanaMainnet, createSolanaTestnet, handleCopyText };
99
+ export { Storage, createSolanaDevnet, createSolanaLocalnet, createSolanaMainnet, createSolanaTestnet, createStorage, createStorageAccount, createStorageCluster, handleCopyText };
66
100
  //# sourceMappingURL=index.node.mjs.map
67
101
  //# sourceMappingURL=index.node.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/clusters.ts","../src/handle-copy-text.ts","../src/storage.ts"],"names":[],"mappings":";AAMA,SAAS,oBACL,KACA,EAAA,EAAE,SAAS,EAAI,EAAA,KAAA,EAAO,cAC0C,EAAA;AAChE,EAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC3B,IAAA,OAAO,EAAE,OAAA,EAAS,EAAI,EAAA,KAAA,EAAO,cAAc,KAAW,EAAA;AAAA;AAG1D,EAAO,OAAA,EAAE,OAAS,EAAA,EAAA,EAAI,KAAO,EAAA,KAAA,CAAM,SAAS,KAAO,EAAA,YAAA,EAAc,KAAM,CAAA,YAAA,IAAgB,YAAa,EAAA;AACxG;AAEO,SAAS,kBAAA,CAAmB,KAA2B,GAAA,EAAmB,EAAA;AAC7E,EAAA,OAAO,oBAA+B,KAAO,EAAA;AAAA,IACzC,OAAS,EAAA,QAAA;AAAA,IACT,EAAI,EAAA,eAAA;AAAA,IACJ,KAAO,EAAA,QAAA;AAAA,IACP,YAAc,EAAA;AAAA,GACjB,CAAA;AACL;AAEO,SAAS,oBAAA,CAAqB,KAA2B,GAAA,EAAmB,EAAA;AAC/E,EAAA,OAAO,oBAAoB,KAAO,EAAA;AAAA,IAC9B,OAAS,EAAA,UAAA;AAAA,IACT,EAAI,EAAA,iBAAA;AAAA,IACJ,KAAO,EAAA,UAAA;AAAA,IACP,YAAc,EAAA;AAAA,GACjB,CAAA;AACL;AAEO,SAAS,mBAAA,CAAoB,KAA2B,GAAA,EAAmB,EAAA;AAC9E,EAAA,OAAO,oBAAoB,KAAO,EAAA;AAAA,IAC9B,OAAS,EAAA,SAAA;AAAA,IACT,EAAI,EAAA,gBAAA;AAAA,IACJ,KAAO,EAAA,SAAA;AAAA,IACP,YAAc,EAAA;AAAA,GACjB,CAAA;AACL;AAEO,SAAS,mBAAA,CAAoB,KAA2B,GAAA,EAAmB,EAAA;AAC9E,EAAA,OAAO,oBAAoB,KAAO,EAAA;AAAA,IAC9B,OAAS,EAAA,SAAA;AAAA,IACT,EAAI,EAAA,gBAAA;AAAA,IACJ,KAAO,EAAA,SAAA;AAAA,IACP,YAAc,EAAA;AAAA,GACjB,CAAA;AACL;;;ACnDO,SAAS,eAAe,IAAe,EAAA;AAC1C,EAAA,IAAI,CAAC,IAAM,EAAA;AACP,IAAA;AAAA;AAEJ,EAAA,IACI,OAAO,UAAA,KAAe,WACtB,IAAA,CAAC,WAAW,SACZ,IAAA,CAAC,UAAW,CAAA,SAAA,CAAU,SACtB,IAAA,CAAC,UAAW,CAAA,SAAA,CAAU,UAAU,SAClC,EAAA;AACE,IAAA;AAAA;AAEJ,EAAA,KAAK,UAAW,CAAA,SAAA,CAAU,SAAU,CAAA,SAAA,CAAU,IAAI,CAAA;AACtD;;;ACLO,IAAM,eAAN,MAAsC;AAAA,EACzC,QAAQ,GAA4B,EAAA;AAChC,IAAO,OAAA,YAAA,CAAa,QAAQ,GAAG,CAAA;AAAA;AACnC,EAEA,OAAA,CAAQ,KAAa,KAAqB,EAAA;AACtC,IAAa,YAAA,CAAA,OAAA,CAAQ,KAAK,KAAK,CAAA;AAAA;AACnC,EAEA,WAAW,GAAmB,EAAA;AAC1B,IAAA,YAAA,CAAa,WAAW,GAAG,CAAA;AAAA;AAEnC","file":"index.node.mjs","sourcesContent":["import type { DevnetUrl, LocalnetUrl, MainnetUrl, TestnetUrl } from 'gill';\n\nimport { SolanaCluster } from './types/solana-cluster';\n\nexport type CreateSolanaProps = Partial<Pick<SolanaCluster, 'label' | 'urlOrMoniker'>> | string;\n\nfunction createSolanaCluster<T extends DevnetUrl | LocalnetUrl | MainnetUrl | TestnetUrl>(\n props: CreateSolanaProps,\n { cluster, id, label, urlOrMoniker }: SolanaCluster,\n): Pick<SolanaCluster, 'cluster' | 'id' | 'label' | 'urlOrMoniker'> {\n if (typeof props === 'string') {\n return { cluster, id, label, urlOrMoniker: props as T };\n }\n\n return { cluster, id, label: props.label ?? label, urlOrMoniker: props.urlOrMoniker ?? urlOrMoniker };\n}\n\nexport function createSolanaDevnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster<DevnetUrl>(props, {\n cluster: 'devnet',\n id: 'solana:devnet',\n label: 'Devnet',\n urlOrMoniker: 'devnet' as DevnetUrl,\n });\n}\n\nexport function createSolanaLocalnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'localnet',\n id: 'solana:localnet',\n label: 'Localnet',\n urlOrMoniker: 'localnet' as LocalnetUrl,\n });\n}\n\nexport function createSolanaMainnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'mainnet',\n id: 'solana:mainnet',\n label: 'Mainnet',\n urlOrMoniker: 'mainnet' as MainnetUrl,\n });\n}\n\nexport function createSolanaTestnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'testnet',\n id: 'solana:testnet',\n label: 'Testnet',\n urlOrMoniker: 'testnet' as TestnetUrl,\n });\n}\n","export function handleCopyText(text?: string) {\n if (!text) {\n return;\n }\n if (\n typeof globalThis === 'undefined' ||\n !globalThis.navigator ||\n !globalThis.navigator.clipboard ||\n !globalThis.navigator.clipboard.writeText\n ) {\n return;\n }\n void globalThis.navigator.clipboard.writeText(text);\n}\n","export interface Storage {\n getItem(key: string): string | null;\n\n removeItem(key: string): void;\n\n setItem(key: string, value: string): void;\n}\n\nexport class LocalStorage implements Storage {\n getItem(key: string): string | null {\n return localStorage.getItem(key);\n }\n\n setItem(key: string, value: string): void {\n localStorage.setItem(key, value);\n }\n\n removeItem(key: string): void {\n localStorage.removeItem(key);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/clusters.ts","../src/storage.ts","../src/create-storage.ts","../src/create-storage-account.ts","../src/create-storage-cluster.ts","../src/handle-copy-text.ts"],"names":[],"mappings":"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","file":"index.node.mjs","sourcesContent":["import type { DevnetUrl, LocalnetUrl, MainnetUrl, TestnetUrl } from 'gill';\n\nimport { SolanaCluster } from './types/solana-cluster';\n\nexport type CreateSolanaProps = Partial<Pick<SolanaCluster, 'label' | 'urlOrMoniker'>> | string;\n\nfunction createSolanaCluster<T extends DevnetUrl | LocalnetUrl | MainnetUrl | TestnetUrl>(\n props: CreateSolanaProps,\n { cluster, id, label, urlOrMoniker }: SolanaCluster,\n): Pick<SolanaCluster, 'cluster' | 'id' | 'label' | 'urlOrMoniker'> {\n if (typeof props === 'string') {\n return { cluster, id, label, urlOrMoniker: props as T };\n }\n\n return { cluster, id, label: props.label ?? label, urlOrMoniker: props.urlOrMoniker ?? urlOrMoniker };\n}\n\nexport function createSolanaDevnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster<DevnetUrl>(props, {\n cluster: 'devnet',\n id: 'solana:devnet',\n label: 'Devnet',\n urlOrMoniker: 'devnet' as DevnetUrl,\n });\n}\n\nexport function createSolanaLocalnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'localnet',\n id: 'solana:localnet',\n label: 'Localnet',\n urlOrMoniker: 'localnet' as LocalnetUrl,\n });\n}\n\nexport function createSolanaMainnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'mainnet',\n id: 'solana:mainnet',\n label: 'Mainnet',\n urlOrMoniker: 'mainnet' as MainnetUrl,\n });\n}\n\nexport function createSolanaTestnet(props: CreateSolanaProps = {}): SolanaCluster {\n return createSolanaCluster(props, {\n cluster: 'testnet',\n id: 'solana:testnet',\n label: 'Testnet',\n urlOrMoniker: 'testnet' as TestnetUrl,\n });\n}\n","import { persistentAtom } from '@nanostores/persistent';\nimport { computed, WritableAtom } from 'nanostores';\n\nexport class Storage<T> {\n private readonly atom: WritableAtom<T>;\n\n constructor(\n readonly key: string,\n readonly initial: T,\n ) {\n this.atom = persistentAtom<T>(key, initial, { decode: JSON.parse, encode: JSON.stringify });\n }\n\n get() {\n return this.atom.get();\n }\n\n set(value: T) {\n this.atom.set(value);\n }\n\n get value() {\n return computed(this.atom, value => value);\n }\n}\n","import { Storage } from './storage';\n\nexport function createStorage<T>({ initial, key }: { initial: T; key: string }) {\n return new Storage(key, initial);\n}\n","import { createStorage } from './create-storage';\nimport { Storage } from './storage';\n\nexport type StorageAccount = Storage<string | undefined>;\n\nexport function createStorageAccount({\n initial,\n key,\n}: {\n initial?: string | undefined;\n key?: string;\n} = {}): StorageAccount {\n return createStorage<string | undefined>({\n initial,\n key: key ?? 'wallet-ui:account',\n });\n}\n","import { createStorage } from './create-storage';\nimport { Storage } from './storage';\nimport { SolanaClusterId } from './types/solana-cluster-id';\n\nexport type StorageCluster = Storage<SolanaClusterId>;\n\nexport function createStorageCluster({\n initial,\n key,\n}: {\n initial?: SolanaClusterId;\n key?: string;\n} = {}): StorageCluster {\n return createStorage<SolanaClusterId>({\n initial: initial ?? 'solana:devnet',\n key: key ?? 'wallet-ui:cluster',\n });\n}\n","export function handleCopyText(text?: string) {\n if (!text) {\n return;\n }\n if (\n typeof globalThis === 'undefined' ||\n !globalThis.navigator ||\n !globalThis.navigator.clipboard ||\n !globalThis.navigator.clipboard.writeText\n ) {\n return;\n }\n void globalThis.navigator.clipboard.writeText(text);\n}\n"]}
@@ -2,14 +2,17 @@ this.globalThis = this.globalThis || {};
2
2
  this.globalThis.solanaWeb3 = (function (exports) {
3
3
  'use strict';
4
4
 
5
- function n(e,{cluster:t,id:r,label:a,urlOrMoniker:s}){var l,o;return typeof e=="string"?{cluster:t,id:r,label:a,urlOrMoniker:e}:{cluster:t,id:r,label:(l=e.label)!=null?l:a,urlOrMoniker:(o=e.urlOrMoniker)!=null?o:s}}function u(e={}){return n(e,{cluster:"devnet",id:"solana:devnet",label:"Devnet",urlOrMoniker:"devnet"})}function c(e={}){return n(e,{cluster:"localnet",id:"solana:localnet",label:"Localnet",urlOrMoniker:"localnet"})}function g(e={}){return n(e,{cluster:"mainnet",id:"solana:mainnet",label:"Mainnet",urlOrMoniker:"mainnet"})}function m(e={}){return n(e,{cluster:"testnet",id:"solana:testnet",label:"Testnet",urlOrMoniker:"testnet"})}function S(e){e&&(typeof globalThis>"u"||!globalThis.navigator||!globalThis.navigator.clipboard||!globalThis.navigator.clipboard.writeText||globalThis.navigator.clipboard.writeText(e));}var i=class{getItem(t){return localStorage.getItem(t)}setItem(t,r){localStorage.setItem(t,r);}removeItem(t){localStorage.removeItem(t);}};
5
+ var A=Object.defineProperty;var P=(e,t,n)=>t in e?A(e,t,{enumerable:true,configurable:true,writable:true,value:n}):e[t]=n;var O=(e,t,n)=>P(e,t+"",n);function T(e,{cluster:t,id:n,label:l,urlOrMoniker:r}){var o,i;return typeof e=="string"?{cluster:t,id:n,label:l,urlOrMoniker:e}:{cluster:t,id:n,label:(o=e.label)!=null?o:l,urlOrMoniker:(i=e.urlOrMoniker)!=null?i:r}}function W(e={}){return T(e,{cluster:"devnet",id:"solana:devnet",label:"Devnet",urlOrMoniker:"devnet"})}function Q(e={}){return T(e,{cluster:"localnet",id:"solana:localnet",label:"Localnet",urlOrMoniker:"localnet"})}function Y(e={}){return T(e,{cluster:"mainnet",id:"solana:mainnet",label:"Mainnet",urlOrMoniker:"mainnet"})}function J(e={}){return T(e,{cluster:"testnet",id:"solana:testnet",label:"Testnet",urlOrMoniker:"testnet"})}var s=[],u=0,x=4,g=0,v=e=>{let t=[],n={get(){return n.lc||n.listen(()=>{})(),n.value},lc:0,listen(l){return n.lc=t.push(l),()=>{for(let o=u+x;o<s.length;)s[o]===l?s.splice(o,x):o+=x;let r=t.indexOf(l);~r&&(t.splice(r,1),--n.lc||n.off());}},notify(l,r){g++;let o=!s.length;for(let i of t)s.push(i,n.value,l,r);if(o){for(u=0;u<s.length;u+=x)s[u](s[u+1],s[u+2],s[u+3]);s.length=0;}},off(){},set(l){let r=n.value;r!==l&&(n.value=l,n.notify(r));},subscribe(l){let r=n.listen(l);return l(n.value),r},value:e};return n};var w=5,y=6,E=10,D=(e,t,n,l)=>(e.events=e.events||{},e.events[n+E]||(e.events[n+E]=l(r=>{e.events[n].reduceRight((o,i)=>(i(o),o),{shared:{},...r});})),e.events[n]=e.events[n]||[],e.events[n].push(t),()=>{let r=e.events[n],o=r.indexOf(t);r.splice(o,1),r.length||(delete e.events[n],e.events[n+E](),delete e.events[n+E]);});var N=1e3,S=(e,t)=>D(e,l=>{let r=t(l);r&&e.events[y].push(r);},w,l=>{let r=e.listen;e.listen=(...i)=>(!e.lc&&!e.active&&(e.active=true,l()),r(...i));let o=e.off;return e.events[y]=[],e.off=()=>{o(),setTimeout(()=>{if(e.active&&!e.lc){e.active=false;for(let i of e.events[y])i();e.events[y]=[];}},N);},()=>{e.listen=r,e.off=o;}});var _=(e,t,n)=>{Array.isArray(e)||(e=[e]);let l,r,o=()=>{if(r===g)return;r=g;let c=e.map(a=>a.get());if(!l||c.some((a,M)=>a!==l[M])){l=c;let a=t(...c);a&&a.then&&a.t?a.then(M=>{l===c&&i.set(M);}):(i.set(a),r=g);}},i=v(void 0),m=i.get;i.get=()=>(o(),m());let f=o;return S(i,()=>{let c=e.map(a=>a.listen(f));return o(),()=>{for(let a of c)a();}}),i},U=(e,t)=>_(e,t);var b=e=>e,p={},C={addEventListener(){},removeEventListener(){}};function I(){try{return typeof localStorage<"u"}catch{return false}}I()&&(p=localStorage);var R={addEventListener(e,t,n){window.addEventListener("storage",t),window.addEventListener("pageshow",n);},removeEventListener(e,t,n){window.removeEventListener("storage",t),window.removeEventListener("pageshow",n);}};typeof window<"u"&&(C=R);function k(e,t=void 0,n={}){let l=n.encode||b,r=n.decode||b,o=v(t),i=o.set;o.set=f=>{typeof f>"u"?delete p[e]:p[e]=l(f),i(f);};function m(f){f.key===e?f.newValue===null?i(void 0):i(r(f.newValue)):p[e]||i(void 0);}function d(){o.set(p[e]?r(p[e]):t);}return S(o,()=>{if(d(),n.listen!==false)return C.addEventListener(e,m,d),()=>{C.removeEventListener(e,m,d);}}),o}var h=class{constructor(t,n){this.key=t;this.initial=n;O(this,"atom");this.atom=k(t,n,{decode:JSON.parse,encode:JSON.stringify});}get(){return this.atom.get()}set(t){this.atom.set(t);}get value(){return U(this.atom,t=>t)}};function L({initial:e,key:t}){return new h(t,e)}function ge({initial:e,key:t}={}){return L({initial:e,key:t!=null?t:"wallet-ui:account"})}function Te({initial:e,key:t}={}){return L({initial:e!=null?e:"solana:devnet",key:t!=null?t:"wallet-ui:cluster"})}function ye(e){e&&(typeof globalThis>"u"||!globalThis.navigator||!globalThis.navigator.clipboard||!globalThis.navigator.clipboard.writeText||globalThis.navigator.clipboard.writeText(e));}
6
6
 
7
- exports.LocalStorage = i;
8
- exports.createSolanaDevnet = u;
9
- exports.createSolanaLocalnet = c;
10
- exports.createSolanaMainnet = g;
11
- exports.createSolanaTestnet = m;
12
- exports.handleCopyText = S;
7
+ exports.Storage = h;
8
+ exports.createSolanaDevnet = W;
9
+ exports.createSolanaLocalnet = Q;
10
+ exports.createSolanaMainnet = Y;
11
+ exports.createSolanaTestnet = J;
12
+ exports.createStorage = L;
13
+ exports.createStorageAccount = ge;
14
+ exports.createStorageCluster = Te;
15
+ exports.handleCopyText = ye;
13
16
 
14
17
  return exports;
15
18
 
@@ -0,0 +1,7 @@
1
+ import { Storage } from './storage';
2
+ export type StorageAccount = Storage<string | undefined>;
3
+ export declare function createStorageAccount({ initial, key, }?: {
4
+ initial?: string | undefined;
5
+ key?: string;
6
+ }): StorageAccount;
7
+ //# sourceMappingURL=create-storage-account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-storage-account.d.ts","sourceRoot":"","sources":["../../src/create-storage-account.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAEzD,wBAAgB,oBAAoB,CAAC,EACjC,OAAO,EACP,GAAG,GACN,GAAE;IACC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;CACX,GAAG,cAAc,CAKtB"}
@@ -0,0 +1,8 @@
1
+ import { Storage } from './storage';
2
+ import { SolanaClusterId } from './types/solana-cluster-id';
3
+ export type StorageCluster = Storage<SolanaClusterId>;
4
+ export declare function createStorageCluster({ initial, key, }?: {
5
+ initial?: SolanaClusterId;
6
+ key?: string;
7
+ }): StorageCluster;
8
+ //# sourceMappingURL=create-storage-cluster.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-storage-cluster.d.ts","sourceRoot":"","sources":["../../src/create-storage-cluster.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAEtD,wBAAgB,oBAAoB,CAAC,EACjC,OAAO,EACP,GAAG,GACN,GAAE;IACC,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;CACX,GAAG,cAAc,CAKtB"}
@@ -0,0 +1,6 @@
1
+ import { Storage } from './storage';
2
+ export declare function createStorage<T>({ initial, key }: {
3
+ initial: T;
4
+ key: string;
5
+ }): Storage<T>;
6
+ //# sourceMappingURL=create-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-storage.d.ts","sourceRoot":"","sources":["../../src/create-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;IAAE,OAAO,EAAE,CAAC,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,cAE7E"}
@@ -1,6 +1,9 @@
1
1
  export * from './clusters';
2
+ export * from './create-storage';
3
+ export * from './create-storage-account';
4
+ export * from './create-storage-cluster';
2
5
  export * from './handle-copy-text';
3
6
  export * from './storage';
4
- export * from './types/solana-cluster-id';
5
7
  export * from './types/solana-cluster';
8
+ export * from './types/solana-cluster-id';
6
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC"}
@@ -1,11 +1,10 @@
1
- export interface Storage {
2
- getItem(key: string): string | null;
3
- removeItem(key: string): void;
4
- setItem(key: string, value: string): void;
5
- }
6
- export declare class LocalStorage implements Storage {
7
- getItem(key: string): string | null;
8
- setItem(key: string, value: string): void;
9
- removeItem(key: string): void;
1
+ export declare class Storage<T> {
2
+ readonly key: string;
3
+ readonly initial: T;
4
+ private readonly atom;
5
+ constructor(key: string, initial: T);
6
+ get(): T;
7
+ set(value: T): void;
8
+ get value(): import("nanostores").ReadableAtom<T>;
10
9
  }
11
10
  //# sourceMappingURL=storage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACpB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAEpC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C;AAED,qBAAa,YAAa,YAAW,OAAO;IACxC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAInC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIzC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAGhC"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"AAGA,qBAAa,OAAO,CAAC,CAAC;IAId,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,OAAO,EAAE,CAAC;IAJvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkB;gBAG1B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,CAAC;IAKvB,GAAG;IAIH,GAAG,CAAC,KAAK,EAAE,CAAC;IAIZ,IAAI,KAAK,yCAER;CACJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wallet-ui/core",
3
- "version": "1.1.0-canary-20250327121701",
3
+ "version": "1.1.0-canary-20250328181248",
4
4
  "description": "Wallet UI core",
5
5
  "exports": {
6
6
  "edge-light": {
@@ -56,6 +56,10 @@
56
56
  "supports bigint and not dead",
57
57
  "maintained node versions"
58
58
  ],
59
+ "dependencies": {
60
+ "@nanostores/persistent": "0.10.2",
61
+ "nanostores": "0.11.4"
62
+ },
59
63
  "peerDependencies": {
60
64
  "gill": "^0.8.0",
61
65
  "typescript": ">=5"