@xyo-network/previous-hash-store-storage 6.0.5 → 6.0.6

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.
@@ -0,0 +1,10 @@
1
+ export type StorageArea = 'local' | 'session' | 'page';
2
+ export declare class NamespacedStorage<T> {
3
+ private readonly backend;
4
+ private readonly prefix;
5
+ constructor(area: StorageArea, namespace: string);
6
+ get(key: string): T | undefined;
7
+ remove(key: string): void;
8
+ set(key: string, value: T): void;
9
+ }
10
+ //# sourceMappingURL=NamespacedStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NamespacedStorage.d.ts","sourceRoot":"","sources":["../../src/NamespacedStorage.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;AAiEtD,qBAAa,iBAAiB,CAAC,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;gBAEnB,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM;IAKhD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAU/B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;CAGjC"}
@@ -1,6 +1,8 @@
1
- import type { Address, Hash } from '@xylabs/sdk-js';
1
+ import type { Hash } from '@xylabs/sdk-js';
2
+ import type { XyoAddress } from '@xyo-network/address';
2
3
  import type { PreviousHashStore } from '@xyo-network/previous-hash-store-model';
3
- export type Storage = 'local' | 'session' | 'page';
4
+ import type { StorageArea } from './NamespacedStorage.ts';
5
+ export type Storage = StorageArea;
4
6
  export interface StoragePreviousHashOpts {
5
7
  namespace?: string;
6
8
  type?: Storage;
@@ -15,8 +17,8 @@ export declare class StoragePreviousHashStore implements PreviousHashStore {
15
17
  get namespace(): string;
16
18
  get type(): Storage;
17
19
  private get storage();
18
- getItem(address: Address): Promise<Hash | null>;
19
- removeItem(address: Address): Promise<void>;
20
- setItem(address: Address, previousHash: Hash): Promise<void>;
20
+ getItem(address: XyoAddress): Promise<Hash | null>;
21
+ removeItem(address: XyoAddress): Promise<void>;
22
+ setItem(address: XyoAddress, previousHash: Hash): Promise<void>;
21
23
  }
22
24
  //# sourceMappingURL=StoragePreviousHashStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StoragePreviousHashStore.d.ts","sourceRoot":"","sources":["../../src/StoragePreviousHashStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAI/E,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;AAElD,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAID,qBAAa,wBAAyB,YAAW,iBAAiB;IAChE,MAAM,CAAC,QAAQ,CAAC,gBAAgB,6BAA4B;IAC5D,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAU;IACrD,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,KAAK,CAAuD;gBAExD,IAAI,CAAC,EAAE,uBAAuB;IAM1C,IAAI,SAAS,WAEZ;IAED,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,OAAO,KAAK,OAAO,GAGlB;IAEK,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAK/C,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAGnE"}
1
+ {"version":3,"file":"StoragePreviousHashStore.d.ts","sourceRoot":"","sources":["../../src/StoragePreviousHashStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAE/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAGzD,MAAM,MAAM,OAAO,GAAG,WAAW,CAAA;AAEjC,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,qBAAa,wBAAyB,YAAW,iBAAiB;IAChE,MAAM,CAAC,QAAQ,CAAC,gBAAgB,6BAA4B;IAC5D,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAU;IACrD,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,KAAK,CAAuD;gBAExD,IAAI,CAAC,EAAE,uBAAuB;IAM1C,IAAI,SAAS,WAEZ;IAED,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,OAAO,KAAK,OAAO,GAGlB;IAEK,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAIlD,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAGtE"}
@@ -1,2 +1,3 @@
1
+ export * from './NamespacedStorage.ts';
1
2
  export * from './StoragePreviousHashStore.ts';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,+BAA+B,CAAA"}
@@ -1,5 +1,71 @@
1
+ // src/NamespacedStorage.ts
2
+ var InMemoryBackend = class {
3
+ data = /* @__PURE__ */ new Map();
4
+ get(key) {
5
+ return this.data.get(key) ?? null;
6
+ }
7
+ remove(key) {
8
+ this.data.delete(key);
9
+ }
10
+ set(key, value) {
11
+ this.data.set(key, value);
12
+ }
13
+ };
14
+ var WebStorageBackend = class {
15
+ storage;
16
+ constructor(storage) {
17
+ this.storage = storage;
18
+ }
19
+ get(key) {
20
+ return this.storage.getItem(key);
21
+ }
22
+ remove(key) {
23
+ this.storage.removeItem(key);
24
+ }
25
+ set(key, value) {
26
+ this.storage.setItem(key, value);
27
+ }
28
+ };
29
+ var pageBackend = new InMemoryBackend();
30
+ var localBackend;
31
+ var sessionBackend;
32
+ function getBackend(area) {
33
+ if (area === "page") return pageBackend;
34
+ const g = globalThis;
35
+ if (area === "local") {
36
+ if (localBackend) return localBackend;
37
+ localBackend = g.localStorage ? new WebStorageBackend(g.localStorage) : new InMemoryBackend();
38
+ return localBackend;
39
+ }
40
+ if (sessionBackend) return sessionBackend;
41
+ sessionBackend = g.sessionStorage ? new WebStorageBackend(g.sessionStorage) : new InMemoryBackend();
42
+ return sessionBackend;
43
+ }
44
+ var NamespacedStorage = class {
45
+ backend;
46
+ prefix;
47
+ constructor(area, namespace) {
48
+ this.backend = getBackend(area);
49
+ this.prefix = `${namespace}.`;
50
+ }
51
+ get(key) {
52
+ const raw = this.backend.get(this.prefix + key);
53
+ if (raw === null) return void 0;
54
+ try {
55
+ return JSON.parse(raw);
56
+ } catch {
57
+ return void 0;
58
+ }
59
+ }
60
+ remove(key) {
61
+ this.backend.remove(this.prefix + key);
62
+ }
63
+ set(key, value) {
64
+ this.backend.set(this.prefix + key, JSON.stringify(value));
65
+ }
66
+ };
67
+
1
68
  // src/StoragePreviousHashStore.ts
2
- import store from "store2";
3
69
  var StoragePreviousHashStore = class _StoragePreviousHashStore {
4
70
  static DefaultNamespace = "xyo-previous-hash-store";
5
71
  static DefaultStorageType = "local";
@@ -9,7 +75,7 @@ var StoragePreviousHashStore = class _StoragePreviousHashStore {
9
75
  constructor(opts) {
10
76
  if (opts?.namespace) this._namespace = opts.namespace;
11
77
  if (opts?.type) this._type = opts.type;
12
- this._storage = store[this.type].namespace(this.namespace);
78
+ this._storage = new NamespacedStorage(this.type, this.namespace);
13
79
  }
14
80
  get namespace() {
15
81
  return this._namespace;
@@ -18,21 +84,21 @@ var StoragePreviousHashStore = class _StoragePreviousHashStore {
18
84
  return this._type;
19
85
  }
20
86
  get storage() {
21
- this._storage ??= store[this.type].namespace(this.namespace);
87
+ this._storage ??= new NamespacedStorage(this.type, this.namespace);
22
88
  return this._storage;
23
89
  }
24
90
  async getItem(address) {
25
- const value = await this.storage.get(address);
26
- return value ?? null;
91
+ return this.storage.get(address) ?? null;
27
92
  }
28
93
  async removeItem(address) {
29
- await this.storage.remove(address);
94
+ this.storage.remove(address);
30
95
  }
31
96
  async setItem(address, previousHash) {
32
- await this.storage.set(address, previousHash);
97
+ this.storage.set(address, previousHash);
33
98
  }
34
99
  };
35
100
  export {
101
+ NamespacedStorage,
36
102
  StoragePreviousHashStore
37
103
  };
38
104
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/StoragePreviousHashStore.ts"],
4
- "sourcesContent": ["import type { Address, Hash } from '@xylabs/sdk-js'\nimport type { PreviousHashStore } from '@xyo-network/previous-hash-store-model'\nimport type { StoreBase } from 'store2'\nimport store from 'store2'\n\nexport type Storage = 'local' | 'session' | 'page'\n\nexport interface StoragePreviousHashOpts {\n namespace?: string\n type?: Storage\n}\n\ntype StoreByArea = Record<Storage, StoreBase>\n\nexport class StoragePreviousHashStore implements PreviousHashStore {\n static readonly DefaultNamespace = 'xyo-previous-hash-store'\n static readonly DefaultStorageType: Storage = 'local'\n private _namespace = StoragePreviousHashStore.DefaultNamespace\n private _storage: StoreBase | undefined\n private _type: Storage = StoragePreviousHashStore.DefaultStorageType\n\n constructor(opts?: StoragePreviousHashOpts) {\n if (opts?.namespace) this._namespace = opts.namespace\n if (opts?.type) this._type = opts.type\n this._storage = (store as unknown as StoreByArea)[this.type].namespace(this.namespace)\n }\n\n get namespace() {\n return this._namespace\n }\n\n get type(): Storage {\n return this._type\n }\n\n private get storage(): StoreBase {\n this._storage ??= (store as unknown as StoreByArea)[this.type].namespace(this.namespace)\n return this._storage\n }\n\n async getItem(address: Address): Promise<Hash | null> {\n const value = (await this.storage.get(address)) as Hash | null | undefined\n return value ?? null\n }\n\n async removeItem(address: Address): Promise<void> {\n await this.storage.remove(address)\n }\n\n async setItem(address: Address, previousHash: Hash): Promise<void> {\n await this.storage.set(address, previousHash)\n }\n}\n"],
5
- "mappings": ";AAGA,OAAO,WAAW;AAWX,IAAM,2BAAN,MAAM,0BAAsD;AAAA,EACjE,OAAgB,mBAAmB;AAAA,EACnC,OAAgB,qBAA8B;AAAA,EACtC,aAAa,0BAAyB;AAAA,EACtC;AAAA,EACA,QAAiB,0BAAyB;AAAA,EAElD,YAAY,MAAgC;AAC1C,QAAI,MAAM,UAAW,MAAK,aAAa,KAAK;AAC5C,QAAI,MAAM,KAAM,MAAK,QAAQ,KAAK;AAClC,SAAK,WAAY,MAAiC,KAAK,IAAI,EAAE,UAAU,KAAK,SAAS;AAAA,EACvF;AAAA,EAEA,IAAI,YAAY;AACd,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,OAAgB;AAClB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAY,UAAqB;AAC/B,SAAK,aAAc,MAAiC,KAAK,IAAI,EAAE,UAAU,KAAK,SAAS;AACvF,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,QAAQ,SAAwC;AACpD,UAAM,QAAS,MAAM,KAAK,QAAQ,IAAI,OAAO;AAC7C,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,WAAW,SAAiC;AAChD,UAAM,KAAK,QAAQ,OAAO,OAAO;AAAA,EACnC;AAAA,EAEA,MAAM,QAAQ,SAAkB,cAAmC;AACjE,UAAM,KAAK,QAAQ,IAAI,SAAS,YAAY;AAAA,EAC9C;AACF;",
3
+ "sources": ["../../src/NamespacedStorage.ts", "../../src/StoragePreviousHashStore.ts"],
4
+ "sourcesContent": ["export type StorageArea = 'local' | 'session' | 'page'\n\ninterface SyncStorageBackend {\n get(key: string): string | null\n remove(key: string): void\n set(key: string, value: string): void\n}\n\nclass InMemoryBackend implements SyncStorageBackend {\n private readonly data = new Map<string, string>()\n get(key: string): string | null {\n return this.data.get(key) ?? null\n }\n\n remove(key: string): void {\n this.data.delete(key)\n }\n\n set(key: string, value: string): void {\n this.data.set(key, value)\n }\n}\n\ninterface WebStorageLike {\n getItem(key: string): string | null\n removeItem(key: string): void\n setItem(key: string, value: string): void\n}\n\nclass WebStorageBackend implements SyncStorageBackend {\n private readonly storage: WebStorageLike\n constructor(storage: WebStorageLike) {\n this.storage = storage\n }\n\n get(key: string): string | null {\n return this.storage.getItem(key)\n }\n\n remove(key: string): void {\n this.storage.removeItem(key)\n }\n\n set(key: string, value: string): void {\n this.storage.setItem(key, value)\n }\n}\n\nconst pageBackend = new InMemoryBackend()\nlet localBackend: SyncStorageBackend | undefined\nlet sessionBackend: SyncStorageBackend | undefined\n\nfunction getBackend(area: StorageArea): SyncStorageBackend {\n if (area === 'page') return pageBackend\n const g = globalThis as unknown as { localStorage?: WebStorageLike; sessionStorage?: WebStorageLike }\n if (area === 'local') {\n if (localBackend) return localBackend\n localBackend = g.localStorage ? new WebStorageBackend(g.localStorage) : new InMemoryBackend()\n return localBackend\n }\n if (sessionBackend) return sessionBackend\n sessionBackend = g.sessionStorage ? new WebStorageBackend(g.sessionStorage) : new InMemoryBackend()\n return sessionBackend\n}\n\nexport class NamespacedStorage<T> {\n private readonly backend: SyncStorageBackend\n private readonly prefix: string\n\n constructor(area: StorageArea, namespace: string) {\n this.backend = getBackend(area)\n this.prefix = `${namespace}.`\n }\n\n get(key: string): T | undefined {\n const raw = this.backend.get(this.prefix + key)\n if (raw === null) return undefined\n try {\n return JSON.parse(raw) as T\n } catch {\n return undefined\n }\n }\n\n remove(key: string): void {\n this.backend.remove(this.prefix + key)\n }\n\n set(key: string, value: T): void {\n this.backend.set(this.prefix + key, JSON.stringify(value))\n }\n}\n", "import type { Hash } from '@xylabs/sdk-js'\nimport type { XyoAddress } from '@xyo-network/address'\nimport type { PreviousHashStore } from '@xyo-network/previous-hash-store-model'\n\nimport type { StorageArea } from './NamespacedStorage.ts'\nimport { NamespacedStorage } from './NamespacedStorage.ts'\n\nexport type Storage = StorageArea\n\nexport interface StoragePreviousHashOpts {\n namespace?: string\n type?: Storage\n}\n\nexport class StoragePreviousHashStore implements PreviousHashStore {\n static readonly DefaultNamespace = 'xyo-previous-hash-store'\n static readonly DefaultStorageType: Storage = 'local'\n private _namespace = StoragePreviousHashStore.DefaultNamespace\n private _storage: NamespacedStorage<Hash> | undefined\n private _type: Storage = StoragePreviousHashStore.DefaultStorageType\n\n constructor(opts?: StoragePreviousHashOpts) {\n if (opts?.namespace) this._namespace = opts.namespace\n if (opts?.type) this._type = opts.type\n this._storage = new NamespacedStorage<Hash>(this.type, this.namespace)\n }\n\n get namespace() {\n return this._namespace\n }\n\n get type(): Storage {\n return this._type\n }\n\n private get storage(): NamespacedStorage<Hash> {\n this._storage ??= new NamespacedStorage<Hash>(this.type, this.namespace)\n return this._storage\n }\n\n async getItem(address: XyoAddress): Promise<Hash | null> {\n return this.storage.get(address) ?? null\n }\n\n async removeItem(address: XyoAddress): Promise<void> {\n this.storage.remove(address)\n }\n\n async setItem(address: XyoAddress, previousHash: Hash): Promise<void> {\n this.storage.set(address, previousHash)\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,10 @@
1
+ export type StorageArea = 'local' | 'session' | 'page';
2
+ export declare class NamespacedStorage<T> {
3
+ private readonly backend;
4
+ private readonly prefix;
5
+ constructor(area: StorageArea, namespace: string);
6
+ get(key: string): T | undefined;
7
+ remove(key: string): void;
8
+ set(key: string, value: T): void;
9
+ }
10
+ //# sourceMappingURL=NamespacedStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NamespacedStorage.d.ts","sourceRoot":"","sources":["../../src/NamespacedStorage.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;AAiEtD,qBAAa,iBAAiB,CAAC,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;gBAEnB,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM;IAKhD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAU/B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;CAGjC"}
@@ -1,6 +1,8 @@
1
- import type { Address, Hash } from '@xylabs/sdk-js';
1
+ import type { Hash } from '@xylabs/sdk-js';
2
+ import type { XyoAddress } from '@xyo-network/address';
2
3
  import type { PreviousHashStore } from '@xyo-network/previous-hash-store-model';
3
- export type Storage = 'local' | 'session' | 'page';
4
+ import type { StorageArea } from './NamespacedStorage.ts';
5
+ export type Storage = StorageArea;
4
6
  export interface StoragePreviousHashOpts {
5
7
  namespace?: string;
6
8
  type?: Storage;
@@ -15,8 +17,8 @@ export declare class StoragePreviousHashStore implements PreviousHashStore {
15
17
  get namespace(): string;
16
18
  get type(): Storage;
17
19
  private get storage();
18
- getItem(address: Address): Promise<Hash | null>;
19
- removeItem(address: Address): Promise<void>;
20
- setItem(address: Address, previousHash: Hash): Promise<void>;
20
+ getItem(address: XyoAddress): Promise<Hash | null>;
21
+ removeItem(address: XyoAddress): Promise<void>;
22
+ setItem(address: XyoAddress, previousHash: Hash): Promise<void>;
21
23
  }
22
24
  //# sourceMappingURL=StoragePreviousHashStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StoragePreviousHashStore.d.ts","sourceRoot":"","sources":["../../src/StoragePreviousHashStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAI/E,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;AAElD,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAID,qBAAa,wBAAyB,YAAW,iBAAiB;IAChE,MAAM,CAAC,QAAQ,CAAC,gBAAgB,6BAA4B;IAC5D,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAU;IACrD,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,KAAK,CAAuD;gBAExD,IAAI,CAAC,EAAE,uBAAuB;IAM1C,IAAI,SAAS,WAEZ;IAED,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,OAAO,KAAK,OAAO,GAGlB;IAEK,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAK/C,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAGnE"}
1
+ {"version":3,"file":"StoragePreviousHashStore.d.ts","sourceRoot":"","sources":["../../src/StoragePreviousHashStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAE/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAGzD,MAAM,MAAM,OAAO,GAAG,WAAW,CAAA;AAEjC,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,qBAAa,wBAAyB,YAAW,iBAAiB;IAChE,MAAM,CAAC,QAAQ,CAAC,gBAAgB,6BAA4B;IAC5D,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAU;IACrD,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,KAAK,CAAuD;gBAExD,IAAI,CAAC,EAAE,uBAAuB;IAM1C,IAAI,SAAS,WAEZ;IAED,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,OAAO,KAAK,OAAO,GAGlB;IAEK,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAIlD,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAGtE"}
@@ -1,2 +1,3 @@
1
+ export * from './NamespacedStorage.ts';
1
2
  export * from './StoragePreviousHashStore.ts';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,+BAA+B,CAAA"}
@@ -1,5 +1,71 @@
1
+ // src/NamespacedStorage.ts
2
+ var InMemoryBackend = class {
3
+ data = /* @__PURE__ */ new Map();
4
+ get(key) {
5
+ return this.data.get(key) ?? null;
6
+ }
7
+ remove(key) {
8
+ this.data.delete(key);
9
+ }
10
+ set(key, value) {
11
+ this.data.set(key, value);
12
+ }
13
+ };
14
+ var WebStorageBackend = class {
15
+ storage;
16
+ constructor(storage) {
17
+ this.storage = storage;
18
+ }
19
+ get(key) {
20
+ return this.storage.getItem(key);
21
+ }
22
+ remove(key) {
23
+ this.storage.removeItem(key);
24
+ }
25
+ set(key, value) {
26
+ this.storage.setItem(key, value);
27
+ }
28
+ };
29
+ var pageBackend = new InMemoryBackend();
30
+ var localBackend;
31
+ var sessionBackend;
32
+ function getBackend(area) {
33
+ if (area === "page") return pageBackend;
34
+ const g = globalThis;
35
+ if (area === "local") {
36
+ if (localBackend) return localBackend;
37
+ localBackend = g.localStorage ? new WebStorageBackend(g.localStorage) : new InMemoryBackend();
38
+ return localBackend;
39
+ }
40
+ if (sessionBackend) return sessionBackend;
41
+ sessionBackend = g.sessionStorage ? new WebStorageBackend(g.sessionStorage) : new InMemoryBackend();
42
+ return sessionBackend;
43
+ }
44
+ var NamespacedStorage = class {
45
+ backend;
46
+ prefix;
47
+ constructor(area, namespace) {
48
+ this.backend = getBackend(area);
49
+ this.prefix = `${namespace}.`;
50
+ }
51
+ get(key) {
52
+ const raw = this.backend.get(this.prefix + key);
53
+ if (raw === null) return void 0;
54
+ try {
55
+ return JSON.parse(raw);
56
+ } catch {
57
+ return void 0;
58
+ }
59
+ }
60
+ remove(key) {
61
+ this.backend.remove(this.prefix + key);
62
+ }
63
+ set(key, value) {
64
+ this.backend.set(this.prefix + key, JSON.stringify(value));
65
+ }
66
+ };
67
+
1
68
  // src/StoragePreviousHashStore.ts
2
- import store from "store2";
3
69
  var StoragePreviousHashStore = class _StoragePreviousHashStore {
4
70
  static DefaultNamespace = "xyo-previous-hash-store";
5
71
  static DefaultStorageType = "local";
@@ -9,7 +75,7 @@ var StoragePreviousHashStore = class _StoragePreviousHashStore {
9
75
  constructor(opts) {
10
76
  if (opts?.namespace) this._namespace = opts.namespace;
11
77
  if (opts?.type) this._type = opts.type;
12
- this._storage = store[this.type].namespace(this.namespace);
78
+ this._storage = new NamespacedStorage(this.type, this.namespace);
13
79
  }
14
80
  get namespace() {
15
81
  return this._namespace;
@@ -18,21 +84,21 @@ var StoragePreviousHashStore = class _StoragePreviousHashStore {
18
84
  return this._type;
19
85
  }
20
86
  get storage() {
21
- this._storage ??= store[this.type].namespace(this.namespace);
87
+ this._storage ??= new NamespacedStorage(this.type, this.namespace);
22
88
  return this._storage;
23
89
  }
24
90
  async getItem(address) {
25
- const value = await this.storage.get(address);
26
- return value ?? null;
91
+ return this.storage.get(address) ?? null;
27
92
  }
28
93
  async removeItem(address) {
29
- await this.storage.remove(address);
94
+ this.storage.remove(address);
30
95
  }
31
96
  async setItem(address, previousHash) {
32
- await this.storage.set(address, previousHash);
97
+ this.storage.set(address, previousHash);
33
98
  }
34
99
  };
35
100
  export {
101
+ NamespacedStorage,
36
102
  StoragePreviousHashStore
37
103
  };
38
104
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/StoragePreviousHashStore.ts"],
4
- "sourcesContent": ["import type { Address, Hash } from '@xylabs/sdk-js'\nimport type { PreviousHashStore } from '@xyo-network/previous-hash-store-model'\nimport type { StoreBase } from 'store2'\nimport store from 'store2'\n\nexport type Storage = 'local' | 'session' | 'page'\n\nexport interface StoragePreviousHashOpts {\n namespace?: string\n type?: Storage\n}\n\ntype StoreByArea = Record<Storage, StoreBase>\n\nexport class StoragePreviousHashStore implements PreviousHashStore {\n static readonly DefaultNamespace = 'xyo-previous-hash-store'\n static readonly DefaultStorageType: Storage = 'local'\n private _namespace = StoragePreviousHashStore.DefaultNamespace\n private _storage: StoreBase | undefined\n private _type: Storage = StoragePreviousHashStore.DefaultStorageType\n\n constructor(opts?: StoragePreviousHashOpts) {\n if (opts?.namespace) this._namespace = opts.namespace\n if (opts?.type) this._type = opts.type\n this._storage = (store as unknown as StoreByArea)[this.type].namespace(this.namespace)\n }\n\n get namespace() {\n return this._namespace\n }\n\n get type(): Storage {\n return this._type\n }\n\n private get storage(): StoreBase {\n this._storage ??= (store as unknown as StoreByArea)[this.type].namespace(this.namespace)\n return this._storage\n }\n\n async getItem(address: Address): Promise<Hash | null> {\n const value = (await this.storage.get(address)) as Hash | null | undefined\n return value ?? null\n }\n\n async removeItem(address: Address): Promise<void> {\n await this.storage.remove(address)\n }\n\n async setItem(address: Address, previousHash: Hash): Promise<void> {\n await this.storage.set(address, previousHash)\n }\n}\n"],
5
- "mappings": ";AAGA,OAAO,WAAW;AAWX,IAAM,2BAAN,MAAM,0BAAsD;AAAA,EACjE,OAAgB,mBAAmB;AAAA,EACnC,OAAgB,qBAA8B;AAAA,EACtC,aAAa,0BAAyB;AAAA,EACtC;AAAA,EACA,QAAiB,0BAAyB;AAAA,EAElD,YAAY,MAAgC;AAC1C,QAAI,MAAM,UAAW,MAAK,aAAa,KAAK;AAC5C,QAAI,MAAM,KAAM,MAAK,QAAQ,KAAK;AAClC,SAAK,WAAY,MAAiC,KAAK,IAAI,EAAE,UAAU,KAAK,SAAS;AAAA,EACvF;AAAA,EAEA,IAAI,YAAY;AACd,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,OAAgB;AAClB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAY,UAAqB;AAC/B,SAAK,aAAc,MAAiC,KAAK,IAAI,EAAE,UAAU,KAAK,SAAS;AACvF,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,QAAQ,SAAwC;AACpD,UAAM,QAAS,MAAM,KAAK,QAAQ,IAAI,OAAO;AAC7C,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,WAAW,SAAiC;AAChD,UAAM,KAAK,QAAQ,OAAO,OAAO;AAAA,EACnC;AAAA,EAEA,MAAM,QAAQ,SAAkB,cAAmC;AACjE,UAAM,KAAK,QAAQ,IAAI,SAAS,YAAY;AAAA,EAC9C;AACF;",
3
+ "sources": ["../../src/NamespacedStorage.ts", "../../src/StoragePreviousHashStore.ts"],
4
+ "sourcesContent": ["export type StorageArea = 'local' | 'session' | 'page'\n\ninterface SyncStorageBackend {\n get(key: string): string | null\n remove(key: string): void\n set(key: string, value: string): void\n}\n\nclass InMemoryBackend implements SyncStorageBackend {\n private readonly data = new Map<string, string>()\n get(key: string): string | null {\n return this.data.get(key) ?? null\n }\n\n remove(key: string): void {\n this.data.delete(key)\n }\n\n set(key: string, value: string): void {\n this.data.set(key, value)\n }\n}\n\ninterface WebStorageLike {\n getItem(key: string): string | null\n removeItem(key: string): void\n setItem(key: string, value: string): void\n}\n\nclass WebStorageBackend implements SyncStorageBackend {\n private readonly storage: WebStorageLike\n constructor(storage: WebStorageLike) {\n this.storage = storage\n }\n\n get(key: string): string | null {\n return this.storage.getItem(key)\n }\n\n remove(key: string): void {\n this.storage.removeItem(key)\n }\n\n set(key: string, value: string): void {\n this.storage.setItem(key, value)\n }\n}\n\nconst pageBackend = new InMemoryBackend()\nlet localBackend: SyncStorageBackend | undefined\nlet sessionBackend: SyncStorageBackend | undefined\n\nfunction getBackend(area: StorageArea): SyncStorageBackend {\n if (area === 'page') return pageBackend\n const g = globalThis as unknown as { localStorage?: WebStorageLike; sessionStorage?: WebStorageLike }\n if (area === 'local') {\n if (localBackend) return localBackend\n localBackend = g.localStorage ? new WebStorageBackend(g.localStorage) : new InMemoryBackend()\n return localBackend\n }\n if (sessionBackend) return sessionBackend\n sessionBackend = g.sessionStorage ? new WebStorageBackend(g.sessionStorage) : new InMemoryBackend()\n return sessionBackend\n}\n\nexport class NamespacedStorage<T> {\n private readonly backend: SyncStorageBackend\n private readonly prefix: string\n\n constructor(area: StorageArea, namespace: string) {\n this.backend = getBackend(area)\n this.prefix = `${namespace}.`\n }\n\n get(key: string): T | undefined {\n const raw = this.backend.get(this.prefix + key)\n if (raw === null) return undefined\n try {\n return JSON.parse(raw) as T\n } catch {\n return undefined\n }\n }\n\n remove(key: string): void {\n this.backend.remove(this.prefix + key)\n }\n\n set(key: string, value: T): void {\n this.backend.set(this.prefix + key, JSON.stringify(value))\n }\n}\n", "import type { Hash } from '@xylabs/sdk-js'\nimport type { XyoAddress } from '@xyo-network/address'\nimport type { PreviousHashStore } from '@xyo-network/previous-hash-store-model'\n\nimport type { StorageArea } from './NamespacedStorage.ts'\nimport { NamespacedStorage } from './NamespacedStorage.ts'\n\nexport type Storage = StorageArea\n\nexport interface StoragePreviousHashOpts {\n namespace?: string\n type?: Storage\n}\n\nexport class StoragePreviousHashStore implements PreviousHashStore {\n static readonly DefaultNamespace = 'xyo-previous-hash-store'\n static readonly DefaultStorageType: Storage = 'local'\n private _namespace = StoragePreviousHashStore.DefaultNamespace\n private _storage: NamespacedStorage<Hash> | undefined\n private _type: Storage = StoragePreviousHashStore.DefaultStorageType\n\n constructor(opts?: StoragePreviousHashOpts) {\n if (opts?.namespace) this._namespace = opts.namespace\n if (opts?.type) this._type = opts.type\n this._storage = new NamespacedStorage<Hash>(this.type, this.namespace)\n }\n\n get namespace() {\n return this._namespace\n }\n\n get type(): Storage {\n return this._type\n }\n\n private get storage(): NamespacedStorage<Hash> {\n this._storage ??= new NamespacedStorage<Hash>(this.type, this.namespace)\n return this._storage\n }\n\n async getItem(address: XyoAddress): Promise<Hash | null> {\n return this.storage.get(address) ?? null\n }\n\n async removeItem(address: XyoAddress): Promise<void> {\n this.storage.remove(address)\n }\n\n async setItem(address: XyoAddress, previousHash: Hash): Promise<void> {\n this.storage.set(address, previousHash)\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,10 @@
1
+ export type StorageArea = 'local' | 'session' | 'page';
2
+ export declare class NamespacedStorage<T> {
3
+ private readonly backend;
4
+ private readonly prefix;
5
+ constructor(area: StorageArea, namespace: string);
6
+ get(key: string): T | undefined;
7
+ remove(key: string): void;
8
+ set(key: string, value: T): void;
9
+ }
10
+ //# sourceMappingURL=NamespacedStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NamespacedStorage.d.ts","sourceRoot":"","sources":["../../src/NamespacedStorage.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;AAiEtD,qBAAa,iBAAiB,CAAC,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;gBAEnB,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM;IAKhD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAU/B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;CAGjC"}
@@ -1,6 +1,8 @@
1
- import type { Address, Hash } from '@xylabs/sdk-js';
1
+ import type { Hash } from '@xylabs/sdk-js';
2
+ import type { XyoAddress } from '@xyo-network/address';
2
3
  import type { PreviousHashStore } from '@xyo-network/previous-hash-store-model';
3
- export type Storage = 'local' | 'session' | 'page';
4
+ import type { StorageArea } from './NamespacedStorage.ts';
5
+ export type Storage = StorageArea;
4
6
  export interface StoragePreviousHashOpts {
5
7
  namespace?: string;
6
8
  type?: Storage;
@@ -15,8 +17,8 @@ export declare class StoragePreviousHashStore implements PreviousHashStore {
15
17
  get namespace(): string;
16
18
  get type(): Storage;
17
19
  private get storage();
18
- getItem(address: Address): Promise<Hash | null>;
19
- removeItem(address: Address): Promise<void>;
20
- setItem(address: Address, previousHash: Hash): Promise<void>;
20
+ getItem(address: XyoAddress): Promise<Hash | null>;
21
+ removeItem(address: XyoAddress): Promise<void>;
22
+ setItem(address: XyoAddress, previousHash: Hash): Promise<void>;
21
23
  }
22
24
  //# sourceMappingURL=StoragePreviousHashStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StoragePreviousHashStore.d.ts","sourceRoot":"","sources":["../../src/StoragePreviousHashStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAI/E,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;AAElD,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAID,qBAAa,wBAAyB,YAAW,iBAAiB;IAChE,MAAM,CAAC,QAAQ,CAAC,gBAAgB,6BAA4B;IAC5D,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAU;IACrD,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,KAAK,CAAuD;gBAExD,IAAI,CAAC,EAAE,uBAAuB;IAM1C,IAAI,SAAS,WAEZ;IAED,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,OAAO,KAAK,OAAO,GAGlB;IAEK,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAK/C,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAGnE"}
1
+ {"version":3,"file":"StoragePreviousHashStore.d.ts","sourceRoot":"","sources":["../../src/StoragePreviousHashStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAE/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAGzD,MAAM,MAAM,OAAO,GAAG,WAAW,CAAA;AAEjC,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,qBAAa,wBAAyB,YAAW,iBAAiB;IAChE,MAAM,CAAC,QAAQ,CAAC,gBAAgB,6BAA4B;IAC5D,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAU;IACrD,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,KAAK,CAAuD;gBAExD,IAAI,CAAC,EAAE,uBAAuB;IAM1C,IAAI,SAAS,WAEZ;IAED,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,OAAO,KAAK,OAAO,GAGlB;IAEK,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAIlD,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAGtE"}
@@ -1,2 +1,3 @@
1
+ export * from './NamespacedStorage.ts';
1
2
  export * from './StoragePreviousHashStore.ts';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,+BAA+B,CAAA"}
@@ -1,5 +1,71 @@
1
+ // src/NamespacedStorage.ts
2
+ var InMemoryBackend = class {
3
+ data = /* @__PURE__ */ new Map();
4
+ get(key) {
5
+ return this.data.get(key) ?? null;
6
+ }
7
+ remove(key) {
8
+ this.data.delete(key);
9
+ }
10
+ set(key, value) {
11
+ this.data.set(key, value);
12
+ }
13
+ };
14
+ var WebStorageBackend = class {
15
+ storage;
16
+ constructor(storage) {
17
+ this.storage = storage;
18
+ }
19
+ get(key) {
20
+ return this.storage.getItem(key);
21
+ }
22
+ remove(key) {
23
+ this.storage.removeItem(key);
24
+ }
25
+ set(key, value) {
26
+ this.storage.setItem(key, value);
27
+ }
28
+ };
29
+ var pageBackend = new InMemoryBackend();
30
+ var localBackend;
31
+ var sessionBackend;
32
+ function getBackend(area) {
33
+ if (area === "page") return pageBackend;
34
+ const g = globalThis;
35
+ if (area === "local") {
36
+ if (localBackend) return localBackend;
37
+ localBackend = g.localStorage ? new WebStorageBackend(g.localStorage) : new InMemoryBackend();
38
+ return localBackend;
39
+ }
40
+ if (sessionBackend) return sessionBackend;
41
+ sessionBackend = g.sessionStorage ? new WebStorageBackend(g.sessionStorage) : new InMemoryBackend();
42
+ return sessionBackend;
43
+ }
44
+ var NamespacedStorage = class {
45
+ backend;
46
+ prefix;
47
+ constructor(area, namespace) {
48
+ this.backend = getBackend(area);
49
+ this.prefix = `${namespace}.`;
50
+ }
51
+ get(key) {
52
+ const raw = this.backend.get(this.prefix + key);
53
+ if (raw === null) return void 0;
54
+ try {
55
+ return JSON.parse(raw);
56
+ } catch {
57
+ return void 0;
58
+ }
59
+ }
60
+ remove(key) {
61
+ this.backend.remove(this.prefix + key);
62
+ }
63
+ set(key, value) {
64
+ this.backend.set(this.prefix + key, JSON.stringify(value));
65
+ }
66
+ };
67
+
1
68
  // src/StoragePreviousHashStore.ts
2
- import store from "store2";
3
69
  var StoragePreviousHashStore = class _StoragePreviousHashStore {
4
70
  static DefaultNamespace = "xyo-previous-hash-store";
5
71
  static DefaultStorageType = "local";
@@ -9,7 +75,7 @@ var StoragePreviousHashStore = class _StoragePreviousHashStore {
9
75
  constructor(opts) {
10
76
  if (opts?.namespace) this._namespace = opts.namespace;
11
77
  if (opts?.type) this._type = opts.type;
12
- this._storage = store[this.type].namespace(this.namespace);
78
+ this._storage = new NamespacedStorage(this.type, this.namespace);
13
79
  }
14
80
  get namespace() {
15
81
  return this._namespace;
@@ -18,21 +84,21 @@ var StoragePreviousHashStore = class _StoragePreviousHashStore {
18
84
  return this._type;
19
85
  }
20
86
  get storage() {
21
- this._storage ??= store[this.type].namespace(this.namespace);
87
+ this._storage ??= new NamespacedStorage(this.type, this.namespace);
22
88
  return this._storage;
23
89
  }
24
90
  async getItem(address) {
25
- const value = await this.storage.get(address);
26
- return value ?? null;
91
+ return this.storage.get(address) ?? null;
27
92
  }
28
93
  async removeItem(address) {
29
- await this.storage.remove(address);
94
+ this.storage.remove(address);
30
95
  }
31
96
  async setItem(address, previousHash) {
32
- await this.storage.set(address, previousHash);
97
+ this.storage.set(address, previousHash);
33
98
  }
34
99
  };
35
100
  export {
101
+ NamespacedStorage,
36
102
  StoragePreviousHashStore
37
103
  };
38
104
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/StoragePreviousHashStore.ts"],
4
- "sourcesContent": ["import type { Address, Hash } from '@xylabs/sdk-js'\nimport type { PreviousHashStore } from '@xyo-network/previous-hash-store-model'\nimport type { StoreBase } from 'store2'\nimport store from 'store2'\n\nexport type Storage = 'local' | 'session' | 'page'\n\nexport interface StoragePreviousHashOpts {\n namespace?: string\n type?: Storage\n}\n\ntype StoreByArea = Record<Storage, StoreBase>\n\nexport class StoragePreviousHashStore implements PreviousHashStore {\n static readonly DefaultNamespace = 'xyo-previous-hash-store'\n static readonly DefaultStorageType: Storage = 'local'\n private _namespace = StoragePreviousHashStore.DefaultNamespace\n private _storage: StoreBase | undefined\n private _type: Storage = StoragePreviousHashStore.DefaultStorageType\n\n constructor(opts?: StoragePreviousHashOpts) {\n if (opts?.namespace) this._namespace = opts.namespace\n if (opts?.type) this._type = opts.type\n this._storage = (store as unknown as StoreByArea)[this.type].namespace(this.namespace)\n }\n\n get namespace() {\n return this._namespace\n }\n\n get type(): Storage {\n return this._type\n }\n\n private get storage(): StoreBase {\n this._storage ??= (store as unknown as StoreByArea)[this.type].namespace(this.namespace)\n return this._storage\n }\n\n async getItem(address: Address): Promise<Hash | null> {\n const value = (await this.storage.get(address)) as Hash | null | undefined\n return value ?? null\n }\n\n async removeItem(address: Address): Promise<void> {\n await this.storage.remove(address)\n }\n\n async setItem(address: Address, previousHash: Hash): Promise<void> {\n await this.storage.set(address, previousHash)\n }\n}\n"],
5
- "mappings": ";AAGA,OAAO,WAAW;AAWX,IAAM,2BAAN,MAAM,0BAAsD;AAAA,EACjE,OAAgB,mBAAmB;AAAA,EACnC,OAAgB,qBAA8B;AAAA,EACtC,aAAa,0BAAyB;AAAA,EACtC;AAAA,EACA,QAAiB,0BAAyB;AAAA,EAElD,YAAY,MAAgC;AAC1C,QAAI,MAAM,UAAW,MAAK,aAAa,KAAK;AAC5C,QAAI,MAAM,KAAM,MAAK,QAAQ,KAAK;AAClC,SAAK,WAAY,MAAiC,KAAK,IAAI,EAAE,UAAU,KAAK,SAAS;AAAA,EACvF;AAAA,EAEA,IAAI,YAAY;AACd,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,OAAgB;AAClB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAY,UAAqB;AAC/B,SAAK,aAAc,MAAiC,KAAK,IAAI,EAAE,UAAU,KAAK,SAAS;AACvF,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,QAAQ,SAAwC;AACpD,UAAM,QAAS,MAAM,KAAK,QAAQ,IAAI,OAAO;AAC7C,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,WAAW,SAAiC;AAChD,UAAM,KAAK,QAAQ,OAAO,OAAO;AAAA,EACnC;AAAA,EAEA,MAAM,QAAQ,SAAkB,cAAmC;AACjE,UAAM,KAAK,QAAQ,IAAI,SAAS,YAAY;AAAA,EAC9C;AACF;",
3
+ "sources": ["../../src/NamespacedStorage.ts", "../../src/StoragePreviousHashStore.ts"],
4
+ "sourcesContent": ["export type StorageArea = 'local' | 'session' | 'page'\n\ninterface SyncStorageBackend {\n get(key: string): string | null\n remove(key: string): void\n set(key: string, value: string): void\n}\n\nclass InMemoryBackend implements SyncStorageBackend {\n private readonly data = new Map<string, string>()\n get(key: string): string | null {\n return this.data.get(key) ?? null\n }\n\n remove(key: string): void {\n this.data.delete(key)\n }\n\n set(key: string, value: string): void {\n this.data.set(key, value)\n }\n}\n\ninterface WebStorageLike {\n getItem(key: string): string | null\n removeItem(key: string): void\n setItem(key: string, value: string): void\n}\n\nclass WebStorageBackend implements SyncStorageBackend {\n private readonly storage: WebStorageLike\n constructor(storage: WebStorageLike) {\n this.storage = storage\n }\n\n get(key: string): string | null {\n return this.storage.getItem(key)\n }\n\n remove(key: string): void {\n this.storage.removeItem(key)\n }\n\n set(key: string, value: string): void {\n this.storage.setItem(key, value)\n }\n}\n\nconst pageBackend = new InMemoryBackend()\nlet localBackend: SyncStorageBackend | undefined\nlet sessionBackend: SyncStorageBackend | undefined\n\nfunction getBackend(area: StorageArea): SyncStorageBackend {\n if (area === 'page') return pageBackend\n const g = globalThis as unknown as { localStorage?: WebStorageLike; sessionStorage?: WebStorageLike }\n if (area === 'local') {\n if (localBackend) return localBackend\n localBackend = g.localStorage ? new WebStorageBackend(g.localStorage) : new InMemoryBackend()\n return localBackend\n }\n if (sessionBackend) return sessionBackend\n sessionBackend = g.sessionStorage ? new WebStorageBackend(g.sessionStorage) : new InMemoryBackend()\n return sessionBackend\n}\n\nexport class NamespacedStorage<T> {\n private readonly backend: SyncStorageBackend\n private readonly prefix: string\n\n constructor(area: StorageArea, namespace: string) {\n this.backend = getBackend(area)\n this.prefix = `${namespace}.`\n }\n\n get(key: string): T | undefined {\n const raw = this.backend.get(this.prefix + key)\n if (raw === null) return undefined\n try {\n return JSON.parse(raw) as T\n } catch {\n return undefined\n }\n }\n\n remove(key: string): void {\n this.backend.remove(this.prefix + key)\n }\n\n set(key: string, value: T): void {\n this.backend.set(this.prefix + key, JSON.stringify(value))\n }\n}\n", "import type { Hash } from '@xylabs/sdk-js'\nimport type { XyoAddress } from '@xyo-network/address'\nimport type { PreviousHashStore } from '@xyo-network/previous-hash-store-model'\n\nimport type { StorageArea } from './NamespacedStorage.ts'\nimport { NamespacedStorage } from './NamespacedStorage.ts'\n\nexport type Storage = StorageArea\n\nexport interface StoragePreviousHashOpts {\n namespace?: string\n type?: Storage\n}\n\nexport class StoragePreviousHashStore implements PreviousHashStore {\n static readonly DefaultNamespace = 'xyo-previous-hash-store'\n static readonly DefaultStorageType: Storage = 'local'\n private _namespace = StoragePreviousHashStore.DefaultNamespace\n private _storage: NamespacedStorage<Hash> | undefined\n private _type: Storage = StoragePreviousHashStore.DefaultStorageType\n\n constructor(opts?: StoragePreviousHashOpts) {\n if (opts?.namespace) this._namespace = opts.namespace\n if (opts?.type) this._type = opts.type\n this._storage = new NamespacedStorage<Hash>(this.type, this.namespace)\n }\n\n get namespace() {\n return this._namespace\n }\n\n get type(): Storage {\n return this._type\n }\n\n private get storage(): NamespacedStorage<Hash> {\n this._storage ??= new NamespacedStorage<Hash>(this.type, this.namespace)\n return this._storage\n }\n\n async getItem(address: XyoAddress): Promise<Hash | null> {\n return this.storage.get(address) ?? null\n }\n\n async removeItem(address: XyoAddress): Promise<void> {\n this.storage.remove(address)\n }\n\n async setItem(address: XyoAddress, previousHash: Hash): Promise<void> {\n this.storage.set(address, previousHash)\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/previous-hash-store-storage",
3
- "version": "6.0.5",
3
+ "version": "6.0.6",
4
4
  "description": "Primary SDK for using XYO Protocol 2.0",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -34,25 +34,24 @@
34
34
  "README.md"
35
35
  ],
36
36
  "dependencies": {
37
- "@xyo-network/previous-hash-store-model": "~6.0.5"
37
+ "@xyo-network/previous-hash-store-model": "~6.0.6",
38
+ "@xyo-network/address": "~6.0.6"
38
39
  },
39
40
  "devDependencies": {
40
41
  "@opentelemetry/api": "^1.9.1",
41
42
  "@opentelemetry/sdk-trace-base": "^2.7.1",
42
- "@xylabs/sdk-js": "~6.0.3",
43
- "@xylabs/toolchain": "~8.1.5",
44
- "@xylabs/tsconfig": "~8.1.5",
43
+ "@xylabs/sdk-js": "~6.0.6",
44
+ "@xylabs/toolchain": "~8.1.8",
45
+ "@xylabs/tsconfig": "~8.1.8",
45
46
  "async-mutex": "^0.5.0",
46
47
  "bn.js": "^5.2.3",
47
48
  "buffer": "^6.0.3",
48
- "eslint": "^10.4.0",
49
+ "eslint": "^10.4.1",
49
50
  "ethers": "^6.16.0",
50
- "pako": "~2.1.0",
51
- "store2": "~2.14.4",
51
+ "pako": "^2.1",
52
52
  "typescript": "~6.0.3",
53
- "uuid": "^14.0.0",
54
- "vite": "^8.0.14",
55
- "vitest": "~4.1.7",
53
+ "vite": "^8.0.16",
54
+ "vitest": "~4.1.8",
56
55
  "zod": "^4.4.3"
57
56
  },
58
57
  "peerDependencies": {
@@ -63,8 +62,7 @@
63
62
  "bn.js": "^5.2",
64
63
  "buffer": "^6.0",
65
64
  "ethers": "^6.16",
66
- "pako": "~2.1",
67
- "store2": "~2.14",
65
+ "pako": "^2.1",
68
66
  "zod": "^4.4"
69
67
  },
70
68
  "engines": {