viem 2.47.19 → 2.48.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/_cjs/actions/public/fillTransaction.js +1 -1
  3. package/_cjs/actions/public/fillTransaction.js.map +1 -1
  4. package/_cjs/actions/wallet/signTransaction.js +1 -0
  5. package/_cjs/actions/wallet/signTransaction.js.map +1 -1
  6. package/_cjs/chains/definitions/ancient8Sepolia.js +1 -0
  7. package/_cjs/chains/definitions/ancient8Sepolia.js.map +1 -1
  8. package/_cjs/chains/definitions/artheraTestnet.js +1 -0
  9. package/_cjs/chains/definitions/artheraTestnet.js.map +1 -1
  10. package/_cjs/chains/definitions/autheoTestnet.js +1 -0
  11. package/_cjs/chains/definitions/autheoTestnet.js.map +1 -1
  12. package/_cjs/chains/definitions/codexTestnet.js +1 -0
  13. package/_cjs/chains/definitions/codexTestnet.js.map +1 -1
  14. package/_cjs/chains/definitions/dchainTestnet.js +1 -0
  15. package/_cjs/chains/definitions/dchainTestnet.js.map +1 -1
  16. package/_cjs/chains/definitions/edgelessTestnet.js +1 -0
  17. package/_cjs/chains/definitions/edgelessTestnet.js.map +1 -1
  18. package/_cjs/chains/definitions/edgewareTestnet.js +1 -0
  19. package/_cjs/chains/definitions/edgewareTestnet.js.map +1 -1
  20. package/_cjs/chains/definitions/evmosTestnet.js +1 -0
  21. package/_cjs/chains/definitions/evmosTestnet.js.map +1 -1
  22. package/_cjs/chains/definitions/exSatTestnet.js +1 -0
  23. package/_cjs/chains/definitions/exSatTestnet.js.map +1 -1
  24. package/_cjs/chains/definitions/flowPreviewnet.js +1 -0
  25. package/_cjs/chains/definitions/flowPreviewnet.js.map +1 -1
  26. package/_cjs/chains/definitions/fraxtalTestnet.js +1 -0
  27. package/_cjs/chains/definitions/fraxtalTestnet.js.map +1 -1
  28. package/_cjs/chains/definitions/haqqTestedge2.js +1 -0
  29. package/_cjs/chains/definitions/haqqTestedge2.js.map +1 -1
  30. package/_cjs/chains/definitions/horizenTestnet.js +2 -2
  31. package/_cjs/chains/definitions/horizenTestnet.js.map +1 -1
  32. package/_cjs/chains/definitions/huddle01Testnet.js +1 -0
  33. package/_cjs/chains/definitions/huddle01Testnet.js.map +1 -1
  34. package/_cjs/chains/definitions/humanodeTestnet5.js +1 -0
  35. package/_cjs/chains/definitions/humanodeTestnet5.js.map +1 -1
  36. package/_cjs/chains/definitions/meterTestnet.js +1 -0
  37. package/_cjs/chains/definitions/meterTestnet.js.map +1 -1
  38. package/_cjs/chains/definitions/metisGoerli.js +1 -0
  39. package/_cjs/chains/definitions/metisGoerli.js.map +1 -1
  40. package/_cjs/chains/definitions/metisSepolia.js +1 -0
  41. package/_cjs/chains/definitions/metisSepolia.js.map +1 -1
  42. package/_cjs/chains/definitions/moonbeam.js +1 -1
  43. package/_cjs/chains/definitions/moonbeam.js.map +1 -1
  44. package/_cjs/chains/definitions/moonriver.js +1 -1
  45. package/_cjs/chains/definitions/moonriver.js.map +1 -1
  46. package/_cjs/chains/definitions/otimDevnet.js +1 -0
  47. package/_cjs/chains/definitions/otimDevnet.js.map +1 -1
  48. package/_cjs/chains/definitions/rolluxTestnet.js +1 -0
  49. package/_cjs/chains/definitions/rolluxTestnet.js.map +1 -1
  50. package/_cjs/chains/definitions/swellchainTestnet.js +1 -0
  51. package/_cjs/chains/definitions/swellchainTestnet.js.map +1 -1
  52. package/_cjs/chains/definitions/syscoinTestnet.js +1 -0
  53. package/_cjs/chains/definitions/syscoinTestnet.js.map +1 -1
  54. package/_cjs/chains/definitions/taikoKatla.js +1 -0
  55. package/_cjs/chains/definitions/taikoKatla.js.map +1 -1
  56. package/_cjs/chains/definitions/taikoTestnetSepolia.js +1 -0
  57. package/_cjs/chains/definitions/taikoTestnetSepolia.js.map +1 -1
  58. package/_cjs/chains/definitions/tempoDevnet.js +1 -0
  59. package/_cjs/chains/definitions/tempoDevnet.js.map +1 -1
  60. package/_cjs/chains/definitions/tempoModerato.js +1 -0
  61. package/_cjs/chains/definitions/tempoModerato.js.map +1 -1
  62. package/_cjs/chains/definitions/xdcTestnet.js +1 -0
  63. package/_cjs/chains/definitions/xdcTestnet.js.map +1 -1
  64. package/_cjs/chains/definitions/zkLinkNovaSepoliaTestnet.js +1 -0
  65. package/_cjs/chains/definitions/zkLinkNovaSepoliaTestnet.js.map +1 -1
  66. package/_cjs/errors/version.js +1 -1
  67. package/_cjs/errors/version.js.map +1 -1
  68. package/_cjs/tempo/Addresses.js +2 -1
  69. package/_cjs/tempo/Addresses.js.map +1 -1
  70. package/_cjs/tempo/Decorator.js +16 -0
  71. package/_cjs/tempo/Decorator.js.map +1 -1
  72. package/_cjs/tempo/Formatters.js +5 -1
  73. package/_cjs/tempo/Formatters.js.map +1 -1
  74. package/_cjs/tempo/Storage.js +77 -0
  75. package/_cjs/tempo/Storage.js.map +1 -0
  76. package/_cjs/tempo/actions/index.js +2 -1
  77. package/_cjs/tempo/actions/index.js.map +1 -1
  78. package/_cjs/tempo/actions/zone.js +432 -0
  79. package/_cjs/tempo/actions/zone.js.map +1 -0
  80. package/_cjs/tempo/index.js +2 -1
  81. package/_cjs/tempo/index.js.map +1 -1
  82. package/_cjs/tempo/zones/Abis.js +82 -0
  83. package/_cjs/tempo/zones/Abis.js.map +1 -0
  84. package/_cjs/tempo/zones/index.js +13 -0
  85. package/_cjs/tempo/zones/index.js.map +1 -0
  86. package/_cjs/tempo/zones/transport.js +24 -0
  87. package/_cjs/tempo/zones/transport.js.map +1 -0
  88. package/_cjs/tempo/zones/zone.js +53 -0
  89. package/_cjs/tempo/zones/zone.js.map +1 -0
  90. package/_esm/actions/public/fillTransaction.js +1 -1
  91. package/_esm/actions/public/fillTransaction.js.map +1 -1
  92. package/_esm/actions/wallet/signTransaction.js +1 -0
  93. package/_esm/actions/wallet/signTransaction.js.map +1 -1
  94. package/_esm/chains/definitions/ancient8Sepolia.js +1 -0
  95. package/_esm/chains/definitions/ancient8Sepolia.js.map +1 -1
  96. package/_esm/chains/definitions/artheraTestnet.js +1 -0
  97. package/_esm/chains/definitions/artheraTestnet.js.map +1 -1
  98. package/_esm/chains/definitions/autheoTestnet.js +1 -0
  99. package/_esm/chains/definitions/autheoTestnet.js.map +1 -1
  100. package/_esm/chains/definitions/codexTestnet.js +1 -0
  101. package/_esm/chains/definitions/codexTestnet.js.map +1 -1
  102. package/_esm/chains/definitions/dchainTestnet.js +1 -0
  103. package/_esm/chains/definitions/dchainTestnet.js.map +1 -1
  104. package/_esm/chains/definitions/edgelessTestnet.js +1 -0
  105. package/_esm/chains/definitions/edgelessTestnet.js.map +1 -1
  106. package/_esm/chains/definitions/edgewareTestnet.js +1 -0
  107. package/_esm/chains/definitions/edgewareTestnet.js.map +1 -1
  108. package/_esm/chains/definitions/evmosTestnet.js +1 -0
  109. package/_esm/chains/definitions/evmosTestnet.js.map +1 -1
  110. package/_esm/chains/definitions/exSatTestnet.js +1 -0
  111. package/_esm/chains/definitions/exSatTestnet.js.map +1 -1
  112. package/_esm/chains/definitions/flowPreviewnet.js +1 -0
  113. package/_esm/chains/definitions/flowPreviewnet.js.map +1 -1
  114. package/_esm/chains/definitions/fraxtalTestnet.js +1 -0
  115. package/_esm/chains/definitions/fraxtalTestnet.js.map +1 -1
  116. package/_esm/chains/definitions/haqqTestedge2.js +1 -0
  117. package/_esm/chains/definitions/haqqTestedge2.js.map +1 -1
  118. package/_esm/chains/definitions/horizenTestnet.js +2 -2
  119. package/_esm/chains/definitions/horizenTestnet.js.map +1 -1
  120. package/_esm/chains/definitions/huddle01Testnet.js +1 -0
  121. package/_esm/chains/definitions/huddle01Testnet.js.map +1 -1
  122. package/_esm/chains/definitions/humanodeTestnet5.js +1 -0
  123. package/_esm/chains/definitions/humanodeTestnet5.js.map +1 -1
  124. package/_esm/chains/definitions/meterTestnet.js +1 -0
  125. package/_esm/chains/definitions/meterTestnet.js.map +1 -1
  126. package/_esm/chains/definitions/metisGoerli.js +1 -0
  127. package/_esm/chains/definitions/metisGoerli.js.map +1 -1
  128. package/_esm/chains/definitions/metisSepolia.js +1 -0
  129. package/_esm/chains/definitions/metisSepolia.js.map +1 -1
  130. package/_esm/chains/definitions/moonbeam.js +1 -1
  131. package/_esm/chains/definitions/moonbeam.js.map +1 -1
  132. package/_esm/chains/definitions/moonriver.js +1 -1
  133. package/_esm/chains/definitions/moonriver.js.map +1 -1
  134. package/_esm/chains/definitions/otimDevnet.js +1 -0
  135. package/_esm/chains/definitions/otimDevnet.js.map +1 -1
  136. package/_esm/chains/definitions/rolluxTestnet.js +1 -0
  137. package/_esm/chains/definitions/rolluxTestnet.js.map +1 -1
  138. package/_esm/chains/definitions/swellchainTestnet.js +1 -0
  139. package/_esm/chains/definitions/swellchainTestnet.js.map +1 -1
  140. package/_esm/chains/definitions/syscoinTestnet.js +1 -0
  141. package/_esm/chains/definitions/syscoinTestnet.js.map +1 -1
  142. package/_esm/chains/definitions/taikoKatla.js +1 -0
  143. package/_esm/chains/definitions/taikoKatla.js.map +1 -1
  144. package/_esm/chains/definitions/taikoTestnetSepolia.js +1 -0
  145. package/_esm/chains/definitions/taikoTestnetSepolia.js.map +1 -1
  146. package/_esm/chains/definitions/tempoDevnet.js +1 -0
  147. package/_esm/chains/definitions/tempoDevnet.js.map +1 -1
  148. package/_esm/chains/definitions/tempoModerato.js +1 -0
  149. package/_esm/chains/definitions/tempoModerato.js.map +1 -1
  150. package/_esm/chains/definitions/xdcTestnet.js +1 -0
  151. package/_esm/chains/definitions/xdcTestnet.js.map +1 -1
  152. package/_esm/chains/definitions/zkLinkNovaSepoliaTestnet.js +1 -0
  153. package/_esm/chains/definitions/zkLinkNovaSepoliaTestnet.js.map +1 -1
  154. package/_esm/errors/version.js +1 -1
  155. package/_esm/errors/version.js.map +1 -1
  156. package/_esm/tempo/Addresses.js +1 -0
  157. package/_esm/tempo/Addresses.js.map +1 -1
  158. package/_esm/tempo/Decorator.js +16 -0
  159. package/_esm/tempo/Decorator.js.map +1 -1
  160. package/_esm/tempo/Formatters.js +5 -1
  161. package/_esm/tempo/Formatters.js.map +1 -1
  162. package/_esm/tempo/Storage.js +96 -0
  163. package/_esm/tempo/Storage.js.map +1 -0
  164. package/_esm/tempo/actions/index.js +1 -0
  165. package/_esm/tempo/actions/index.js.map +1 -1
  166. package/_esm/tempo/actions/zone.js +786 -0
  167. package/_esm/tempo/actions/zone.js.map +1 -0
  168. package/_esm/tempo/index.js +1 -0
  169. package/_esm/tempo/index.js.map +1 -1
  170. package/_esm/tempo/zones/Abis.js +79 -0
  171. package/_esm/tempo/zones/Abis.js.map +1 -0
  172. package/_esm/tempo/zones/index.js +5 -0
  173. package/_esm/tempo/zones/index.js.map +1 -0
  174. package/_esm/tempo/zones/transport.js +39 -0
  175. package/_esm/tempo/zones/transport.js.map +1 -0
  176. package/_esm/tempo/zones/zone.js +49 -0
  177. package/_esm/tempo/zones/zone.js.map +1 -0
  178. package/_types/actions/wallet/signTransaction.d.ts.map +1 -1
  179. package/_types/chains/definitions/ancient8Sepolia.d.ts +1 -1
  180. package/_types/chains/definitions/ancient8Sepolia.d.ts.map +1 -1
  181. package/_types/chains/definitions/artheraTestnet.d.ts +1 -1
  182. package/_types/chains/definitions/artheraTestnet.d.ts.map +1 -1
  183. package/_types/chains/definitions/autheoTestnet.d.ts +1 -1
  184. package/_types/chains/definitions/autheoTestnet.d.ts.map +1 -1
  185. package/_types/chains/definitions/codexTestnet.d.ts +1 -1
  186. package/_types/chains/definitions/codexTestnet.d.ts.map +1 -1
  187. package/_types/chains/definitions/dchainTestnet.d.ts +1 -1
  188. package/_types/chains/definitions/dchainTestnet.d.ts.map +1 -1
  189. package/_types/chains/definitions/edgelessTestnet.d.ts +1 -1
  190. package/_types/chains/definitions/edgelessTestnet.d.ts.map +1 -1
  191. package/_types/chains/definitions/edgewareTestnet.d.ts +1 -1
  192. package/_types/chains/definitions/edgewareTestnet.d.ts.map +1 -1
  193. package/_types/chains/definitions/evmosTestnet.d.ts +1 -1
  194. package/_types/chains/definitions/evmosTestnet.d.ts.map +1 -1
  195. package/_types/chains/definitions/exSatTestnet.d.ts +1 -1
  196. package/_types/chains/definitions/exSatTestnet.d.ts.map +1 -1
  197. package/_types/chains/definitions/flowPreviewnet.d.ts +1 -1
  198. package/_types/chains/definitions/flowPreviewnet.d.ts.map +1 -1
  199. package/_types/chains/definitions/fraxtalTestnet.d.ts +1 -1
  200. package/_types/chains/definitions/fraxtalTestnet.d.ts.map +1 -1
  201. package/_types/chains/definitions/haqqTestedge2.d.ts +1 -1
  202. package/_types/chains/definitions/haqqTestedge2.d.ts.map +1 -1
  203. package/_types/chains/definitions/horizenTestnet.d.ts +2 -2
  204. package/_types/chains/definitions/huddle01Testnet.d.ts +1 -1
  205. package/_types/chains/definitions/huddle01Testnet.d.ts.map +1 -1
  206. package/_types/chains/definitions/humanodeTestnet5.d.ts +1 -1
  207. package/_types/chains/definitions/humanodeTestnet5.d.ts.map +1 -1
  208. package/_types/chains/definitions/meterTestnet.d.ts +1 -1
  209. package/_types/chains/definitions/meterTestnet.d.ts.map +1 -1
  210. package/_types/chains/definitions/metisGoerli.d.ts +1 -1
  211. package/_types/chains/definitions/metisGoerli.d.ts.map +1 -1
  212. package/_types/chains/definitions/metisSepolia.d.ts +1 -1
  213. package/_types/chains/definitions/metisSepolia.d.ts.map +1 -1
  214. package/_types/chains/definitions/moonbeam.d.ts +1 -1
  215. package/_types/chains/definitions/moonriver.d.ts +1 -1
  216. package/_types/chains/definitions/otimDevnet.d.ts +1 -1
  217. package/_types/chains/definitions/otimDevnet.d.ts.map +1 -1
  218. package/_types/chains/definitions/rolluxTestnet.d.ts +1 -1
  219. package/_types/chains/definitions/rolluxTestnet.d.ts.map +1 -1
  220. package/_types/chains/definitions/swellchainTestnet.d.ts +1 -1
  221. package/_types/chains/definitions/swellchainTestnet.d.ts.map +1 -1
  222. package/_types/chains/definitions/syscoinTestnet.d.ts +1 -1
  223. package/_types/chains/definitions/syscoinTestnet.d.ts.map +1 -1
  224. package/_types/chains/definitions/taikoKatla.d.ts +1 -1
  225. package/_types/chains/definitions/taikoKatla.d.ts.map +1 -1
  226. package/_types/chains/definitions/taikoTestnetSepolia.d.ts +1 -1
  227. package/_types/chains/definitions/taikoTestnetSepolia.d.ts.map +1 -1
  228. package/_types/chains/definitions/tempoDevnet.d.ts +2 -1
  229. package/_types/chains/definitions/tempoDevnet.d.ts.map +1 -1
  230. package/_types/chains/definitions/tempoModerato.d.ts +2 -1
  231. package/_types/chains/definitions/tempoModerato.d.ts.map +1 -1
  232. package/_types/chains/definitions/xdcTestnet.d.ts +1 -1
  233. package/_types/chains/definitions/xdcTestnet.d.ts.map +1 -1
  234. package/_types/chains/definitions/zkLinkNovaSepoliaTestnet.d.ts +1 -1
  235. package/_types/chains/definitions/zkLinkNovaSepoliaTestnet.d.ts.map +1 -1
  236. package/_types/errors/version.d.ts +1 -1
  237. package/_types/errors/version.d.ts.map +1 -1
  238. package/_types/tempo/Addresses.d.ts +1 -0
  239. package/_types/tempo/Addresses.d.ts.map +1 -1
  240. package/_types/tempo/Decorator.d.ts +283 -0
  241. package/_types/tempo/Decorator.d.ts.map +1 -1
  242. package/_types/tempo/Formatters.d.ts.map +1 -1
  243. package/_types/tempo/Storage.d.ts +42 -0
  244. package/_types/tempo/Storage.d.ts.map +1 -0
  245. package/_types/tempo/actions/index.d.ts +1 -0
  246. package/_types/tempo/actions/index.d.ts.map +1 -1
  247. package/_types/tempo/actions/zone.d.ts +874 -0
  248. package/_types/tempo/actions/zone.d.ts.map +1 -0
  249. package/_types/tempo/index.d.ts +1 -0
  250. package/_types/tempo/index.d.ts.map +1 -1
  251. package/_types/tempo/zones/Abis.d.ts +124 -0
  252. package/_types/tempo/zones/Abis.d.ts.map +1 -0
  253. package/_types/tempo/zones/index.d.ts +4 -0
  254. package/_types/tempo/zones/index.d.ts.map +1 -0
  255. package/_types/tempo/zones/transport.d.ts +26 -0
  256. package/_types/tempo/zones/transport.d.ts.map +1 -0
  257. package/_types/tempo/zones/zone.d.ts +2775 -0
  258. package/_types/tempo/zones/zone.d.ts.map +1 -0
  259. package/actions/public/fillTransaction.ts +1 -1
  260. package/actions/wallet/signTransaction.ts +1 -0
  261. package/chains/definitions/ancient8Sepolia.ts +1 -0
  262. package/chains/definitions/artheraTestnet.ts +1 -0
  263. package/chains/definitions/autheoTestnet.ts +1 -0
  264. package/chains/definitions/codexTestnet.ts +1 -0
  265. package/chains/definitions/dchainTestnet.ts +1 -0
  266. package/chains/definitions/edgelessTestnet.ts +1 -0
  267. package/chains/definitions/edgewareTestnet.ts +1 -0
  268. package/chains/definitions/evmosTestnet.ts +1 -0
  269. package/chains/definitions/exSatTestnet.ts +1 -0
  270. package/chains/definitions/flowPreviewnet.ts +1 -0
  271. package/chains/definitions/fraxtalTestnet.ts +1 -0
  272. package/chains/definitions/haqqTestedge2.ts +1 -0
  273. package/chains/definitions/horizenTestnet.ts +2 -2
  274. package/chains/definitions/huddle01Testnet.ts +1 -0
  275. package/chains/definitions/humanodeTestnet5.ts +1 -0
  276. package/chains/definitions/meterTestnet.ts +1 -0
  277. package/chains/definitions/metisGoerli.ts +1 -0
  278. package/chains/definitions/metisSepolia.ts +1 -0
  279. package/chains/definitions/moonbeam.ts +1 -1
  280. package/chains/definitions/moonriver.ts +1 -1
  281. package/chains/definitions/otimDevnet.ts +1 -0
  282. package/chains/definitions/rolluxTestnet.ts +1 -0
  283. package/chains/definitions/swellchainTestnet.ts +1 -0
  284. package/chains/definitions/syscoinTestnet.ts +1 -0
  285. package/chains/definitions/taikoKatla.ts +1 -0
  286. package/chains/definitions/taikoTestnetSepolia.ts +1 -0
  287. package/chains/definitions/tempoDevnet.ts +1 -0
  288. package/chains/definitions/tempoModerato.ts +1 -0
  289. package/chains/definitions/xdcTestnet.ts +1 -0
  290. package/chains/definitions/zkLinkNovaSepoliaTestnet.ts +1 -0
  291. package/errors/version.ts +1 -1
  292. package/package.json +7 -2
  293. package/tempo/Addresses.ts +1 -0
  294. package/tempo/Decorator.ts +337 -0
  295. package/tempo/Formatters.ts +5 -1
  296. package/tempo/Storage.ts +118 -0
  297. package/tempo/actions/index.ts +1 -0
  298. package/tempo/actions/zone.ts +1317 -0
  299. package/tempo/index.ts +1 -0
  300. package/tempo/zones/Abis.ts +79 -0
  301. package/tempo/zones/index.ts +10 -0
  302. package/tempo/zones/package.json +6 -0
  303. package/tempo/zones/transport.ts +58 -0
  304. package/tempo/zones/zone.ts +70 -0
@@ -0,0 +1,118 @@
1
+ import type { MaybePromise } from '../types/utils.js'
2
+
3
+ export type Storage = {
4
+ getItem(key: string): MaybePromise<string | null | undefined>
5
+ setItem(key: string, value: string): MaybePromise<void>
6
+ removeItem(key: string): MaybePromise<void>
7
+ }
8
+
9
+ /**
10
+ * Wraps a base storage with an optional key prefix and request
11
+ * deduplication — concurrent `getItem` calls for the same key share
12
+ * a single in-flight promise.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * import * as Storage from 'viem/tempo/zones'
17
+ *
18
+ * const storage = Storage.from(Storage.memory(), { key: 'tempo' })
19
+ * await storage.setItem('foo', 'bar')
20
+ * // stored under "tempo:foo"
21
+ * ```
22
+ */
23
+ export function from(storage: Storage, options: from.Options = {}): Storage {
24
+ const { key } = options
25
+ const prefix = key ? `${key}:` : ''
26
+ const inflight = new Map<string, Promise<string | null | undefined>>()
27
+ return {
28
+ getItem(k) {
29
+ const fullKey = `${prefix}${k}`
30
+ const existing = inflight.get(fullKey)
31
+ if (existing) return existing
32
+ const result = Promise.resolve(storage.getItem(fullKey)).finally(() => {
33
+ inflight.delete(fullKey)
34
+ })
35
+ inflight.set(fullKey, result)
36
+ return result
37
+ },
38
+ setItem(k, value) {
39
+ const fullKey = `${prefix}${k}`
40
+ inflight.delete(fullKey)
41
+ return storage.setItem(fullKey, value)
42
+ },
43
+ removeItem(k) {
44
+ const fullKey = `${prefix}${k}`
45
+ inflight.delete(fullKey)
46
+ return storage.removeItem(fullKey)
47
+ },
48
+ }
49
+ }
50
+
51
+ export declare namespace from {
52
+ type Options = {
53
+ /** Key prefix prepended to all storage keys. */
54
+ key?: string | undefined
55
+ }
56
+ }
57
+
58
+ /** Creates an in-memory storage backed by a `Map`. */
59
+ export function memory(options: from.Options = {}): Storage {
60
+ const store = new Map<string, string>()
61
+ return from(
62
+ {
63
+ getItem(key) {
64
+ return store.get(key) ?? null
65
+ },
66
+ setItem(key, value) {
67
+ store.set(key, value)
68
+ },
69
+ removeItem(key) {
70
+ store.delete(key)
71
+ },
72
+ },
73
+ options,
74
+ )
75
+ }
76
+
77
+ /** Creates a storage backed by `globalThis.sessionStorage`. */
78
+ export function session(options: from.Options = {}): Storage {
79
+ return from(
80
+ {
81
+ getItem(key) {
82
+ return globalThis.sessionStorage.getItem(key)
83
+ },
84
+ setItem(key, value) {
85
+ try {
86
+ globalThis.sessionStorage.setItem(key, value)
87
+ } catch {}
88
+ },
89
+ removeItem(key) {
90
+ globalThis.sessionStorage.removeItem(key)
91
+ },
92
+ },
93
+ options,
94
+ )
95
+ }
96
+
97
+ let _default: Storage | undefined
98
+
99
+ /**
100
+ * Returns the default storage for the current environment.
101
+ *
102
+ * Returns a singleton so that the zone transport and actions share the
103
+ * same instance without requiring explicit plumbing.
104
+ *
105
+ * - Browser: `sessionStorage`
106
+ * - Server/unsupported: in-memory `Map`-based storage
107
+ */
108
+ export function defaultStorage(): Storage {
109
+ if (_default) return _default
110
+ if (
111
+ typeof globalThis !== 'undefined' &&
112
+ 'sessionStorage' in globalThis &&
113
+ globalThis.sessionStorage
114
+ )
115
+ _default = session()
116
+ else _default = memory()
117
+ return _default
118
+ }
@@ -10,3 +10,4 @@ export * as reward from './reward.js'
10
10
  export * as simulate from './simulate.js'
11
11
  export * as token from './token.js'
12
12
  export * as validator from './validator.js'
13
+ export * as zone from './zone.js'