@xyo-network/previous-hash-store-storage 6.0.8 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -38,10 +38,12 @@ bun add {{name}}
38
38
 
39
39
  See the [LICENSE](LICENSE) file for license rights and limitations (LGPL-3.0-only).
40
40
 
41
+ ## Credits
41
42
 
43
+ [Made with 🔥 and ❄️ by XYO Foundation](https://xyo.network)
42
44
 
43
- [logo]: https://cdn.xy.company/img/brand/XYO_full_colored.png
44
45
  [npm-badge]: https://img.shields.io/npm/v/@xyo-network/previous-hash-store-storage.svg
45
46
  [npm-link]: https://www.npmjs.com/package/@xyo-network/previous-hash-store-storage
46
47
  [license-badge]: https://img.shields.io/npm/l/@xyo-network/previous-hash-store-storage.svg
47
48
  [license-link]: https://github.com/xylabs/sdk-js/blob/main/LICENSE
49
+ [logo]: https://cdn.xy.company/img/brand/XYO_full_colored.png
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/previous-hash-store-storage",
3
- "version": "6.0.8",
3
+ "version": "6.1.0",
4
4
  "description": "Primary SDK for using XYO Protocol 2.0",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -34,22 +34,18 @@
34
34
  "README.md"
35
35
  ],
36
36
  "dependencies": {
37
- "@xyo-network/address": "~6.0.8",
38
- "@xyo-network/previous-hash-store-model": "~6.0.8"
37
+ "@xyo-network/address": "~6.1.0",
38
+ "@xyo-network/previous-hash-store-model": "~6.1.0"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@opentelemetry/api": "^1.9.1",
42
42
  "@opentelemetry/sdk-trace-base": "^2.7.1",
43
- "@scure/base": "~2.2",
44
- "@xylabs/sdk-js": "~6.0.6",
45
- "@xylabs/toolchain": "~8.1.10",
46
- "@xylabs/tsconfig": "~8.1.10",
43
+ "@scure/base": "~2.2.0",
44
+ "@xylabs/sdk-js": "^6.1.0",
45
+ "@xylabs/toolchain": "~8.1.20",
46
+ "@xylabs/tsconfig": "~8.1.20",
47
47
  "async-mutex": "^0.5.0",
48
- "bn.js": "^5.2.3",
49
- "buffer": "^6.0.3",
50
48
  "eslint": "^10.4.1",
51
- "ethers": "^6.16.0",
52
- "pako": "^2.1",
53
49
  "typescript": "~6.0.3",
54
50
  "vite": "^8.0.16",
55
51
  "vitest": "~4.1.8",
@@ -61,10 +57,6 @@
61
57
  "@scure/base": "~2.2",
62
58
  "@xylabs/sdk-js": "^6.0",
63
59
  "async-mutex": "^0.5",
64
- "bn.js": "^5.2",
65
- "buffer": "^6.0",
66
- "ethers": "^6.16",
67
- "pako": "^2.1",
68
60
  "zod": "^4.4"
69
61
  },
70
62
  "engines": {
@@ -1,10 +0,0 @@
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
@@ -1 +0,0 @@
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,24 +0,0 @@
1
- import type { Hash } from '@xylabs/sdk-js';
2
- import type { XyoAddress } from '@xyo-network/address';
3
- import type { PreviousHashStore } from '@xyo-network/previous-hash-store-model';
4
- import type { StorageArea } from './NamespacedStorage.ts';
5
- export type Storage = StorageArea;
6
- export interface StoragePreviousHashOpts {
7
- namespace?: string;
8
- type?: Storage;
9
- }
10
- export declare class StoragePreviousHashStore implements PreviousHashStore {
11
- static readonly DefaultNamespace = "xyo-previous-hash-store";
12
- static readonly DefaultStorageType: Storage;
13
- private _namespace;
14
- private _storage;
15
- private _type;
16
- constructor(opts?: StoragePreviousHashOpts);
17
- get namespace(): string;
18
- get type(): Storage;
19
- private get storage();
20
- getItem(address: XyoAddress): Promise<Hash | null>;
21
- removeItem(address: XyoAddress): Promise<void>;
22
- setItem(address: XyoAddress, previousHash: Hash): Promise<void>;
23
- }
24
- //# sourceMappingURL=StoragePreviousHashStore.d.ts.map
@@ -1 +0,0 @@
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,3 +0,0 @@
1
- export * from './NamespacedStorage.ts';
2
- export * from './StoragePreviousHashStore.ts';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,+BAA+B,CAAA"}
@@ -1,104 +0,0 @@
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
-
68
- // src/StoragePreviousHashStore.ts
69
- var StoragePreviousHashStore = class _StoragePreviousHashStore {
70
- static DefaultNamespace = "xyo-previous-hash-store";
71
- static DefaultStorageType = "local";
72
- _namespace = _StoragePreviousHashStore.DefaultNamespace;
73
- _storage;
74
- _type = _StoragePreviousHashStore.DefaultStorageType;
75
- constructor(opts) {
76
- if (opts?.namespace) this._namespace = opts.namespace;
77
- if (opts?.type) this._type = opts.type;
78
- this._storage = new NamespacedStorage(this.type, this.namespace);
79
- }
80
- get namespace() {
81
- return this._namespace;
82
- }
83
- get type() {
84
- return this._type;
85
- }
86
- get storage() {
87
- this._storage ??= new NamespacedStorage(this.type, this.namespace);
88
- return this._storage;
89
- }
90
- async getItem(address) {
91
- return this.storage.get(address) ?? null;
92
- }
93
- async removeItem(address) {
94
- this.storage.remove(address);
95
- }
96
- async setItem(address, previousHash) {
97
- this.storage.set(address, previousHash);
98
- }
99
- };
100
- export {
101
- NamespacedStorage,
102
- StoragePreviousHashStore
103
- };
104
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
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": ";AAQA,IAAM,kBAAN,MAAoD;AAAA,EACjC,OAAO,oBAAI,IAAoB;AAAA,EAChD,IAAI,KAA4B;AAC9B,WAAO,KAAK,KAAK,IAAI,GAAG,KAAK;AAAA,EAC/B;AAAA,EAEA,OAAO,KAAmB;AACxB,SAAK,KAAK,OAAO,GAAG;AAAA,EACtB;AAAA,EAEA,IAAI,KAAa,OAAqB;AACpC,SAAK,KAAK,IAAI,KAAK,KAAK;AAAA,EAC1B;AACF;AAQA,IAAM,oBAAN,MAAsD;AAAA,EACnC;AAAA,EACjB,YAAY,SAAyB;AACnC,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,IAAI,KAA4B;AAC9B,WAAO,KAAK,QAAQ,QAAQ,GAAG;AAAA,EACjC;AAAA,EAEA,OAAO,KAAmB;AACxB,SAAK,QAAQ,WAAW,GAAG;AAAA,EAC7B;AAAA,EAEA,IAAI,KAAa,OAAqB;AACpC,SAAK,QAAQ,QAAQ,KAAK,KAAK;AAAA,EACjC;AACF;AAEA,IAAM,cAAc,IAAI,gBAAgB;AACxC,IAAI;AACJ,IAAI;AAEJ,SAAS,WAAW,MAAuC;AACzD,MAAI,SAAS,OAAQ,QAAO;AAC5B,QAAM,IAAI;AACV,MAAI,SAAS,SAAS;AACpB,QAAI,aAAc,QAAO;AACzB,mBAAe,EAAE,eAAe,IAAI,kBAAkB,EAAE,YAAY,IAAI,IAAI,gBAAgB;AAC5F,WAAO;AAAA,EACT;AACA,MAAI,eAAgB,QAAO;AAC3B,mBAAiB,EAAE,iBAAiB,IAAI,kBAAkB,EAAE,cAAc,IAAI,IAAI,gBAAgB;AAClG,SAAO;AACT;AAEO,IAAM,oBAAN,MAA2B;AAAA,EACf;AAAA,EACA;AAAA,EAEjB,YAAY,MAAmB,WAAmB;AAChD,SAAK,UAAU,WAAW,IAAI;AAC9B,SAAK,SAAS,GAAG,SAAS;AAAA,EAC5B;AAAA,EAEA,IAAI,KAA4B;AAC9B,UAAM,MAAM,KAAK,QAAQ,IAAI,KAAK,SAAS,GAAG;AAC9C,QAAI,QAAQ,KAAM,QAAO;AACzB,QAAI;AACF,aAAO,KAAK,MAAM,GAAG;AAAA,IACvB,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,OAAO,KAAmB;AACxB,SAAK,QAAQ,OAAO,KAAK,SAAS,GAAG;AAAA,EACvC;AAAA,EAEA,IAAI,KAAa,OAAgB;AAC/B,SAAK,QAAQ,IAAI,KAAK,SAAS,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA,EAC3D;AACF;;;AC7EO,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,WAAW,IAAI,kBAAwB,KAAK,MAAM,KAAK,SAAS;AAAA,EACvE;AAAA,EAEA,IAAI,YAAY;AACd,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,OAAgB;AAClB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAY,UAAmC;AAC7C,SAAK,aAAa,IAAI,kBAAwB,KAAK,MAAM,KAAK,SAAS;AACvE,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,QAAQ,SAA2C;AACvD,WAAO,KAAK,QAAQ,IAAI,OAAO,KAAK;AAAA,EACtC;AAAA,EAEA,MAAM,WAAW,SAAoC;AACnD,SAAK,QAAQ,OAAO,OAAO;AAAA,EAC7B;AAAA,EAEA,MAAM,QAAQ,SAAqB,cAAmC;AACpE,SAAK,QAAQ,IAAI,SAAS,YAAY;AAAA,EACxC;AACF;",
6
- "names": []
7
- }
@@ -1,10 +0,0 @@
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
@@ -1 +0,0 @@
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,24 +0,0 @@
1
- import type { Hash } from '@xylabs/sdk-js';
2
- import type { XyoAddress } from '@xyo-network/address';
3
- import type { PreviousHashStore } from '@xyo-network/previous-hash-store-model';
4
- import type { StorageArea } from './NamespacedStorage.ts';
5
- export type Storage = StorageArea;
6
- export interface StoragePreviousHashOpts {
7
- namespace?: string;
8
- type?: Storage;
9
- }
10
- export declare class StoragePreviousHashStore implements PreviousHashStore {
11
- static readonly DefaultNamespace = "xyo-previous-hash-store";
12
- static readonly DefaultStorageType: Storage;
13
- private _namespace;
14
- private _storage;
15
- private _type;
16
- constructor(opts?: StoragePreviousHashOpts);
17
- get namespace(): string;
18
- get type(): Storage;
19
- private get storage();
20
- getItem(address: XyoAddress): Promise<Hash | null>;
21
- removeItem(address: XyoAddress): Promise<void>;
22
- setItem(address: XyoAddress, previousHash: Hash): Promise<void>;
23
- }
24
- //# sourceMappingURL=StoragePreviousHashStore.d.ts.map
@@ -1 +0,0 @@
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,3 +0,0 @@
1
- export * from './NamespacedStorage.ts';
2
- export * from './StoragePreviousHashStore.ts';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,+BAA+B,CAAA"}
@@ -1,104 +0,0 @@
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
-
68
- // src/StoragePreviousHashStore.ts
69
- var StoragePreviousHashStore = class _StoragePreviousHashStore {
70
- static DefaultNamespace = "xyo-previous-hash-store";
71
- static DefaultStorageType = "local";
72
- _namespace = _StoragePreviousHashStore.DefaultNamespace;
73
- _storage;
74
- _type = _StoragePreviousHashStore.DefaultStorageType;
75
- constructor(opts) {
76
- if (opts?.namespace) this._namespace = opts.namespace;
77
- if (opts?.type) this._type = opts.type;
78
- this._storage = new NamespacedStorage(this.type, this.namespace);
79
- }
80
- get namespace() {
81
- return this._namespace;
82
- }
83
- get type() {
84
- return this._type;
85
- }
86
- get storage() {
87
- this._storage ??= new NamespacedStorage(this.type, this.namespace);
88
- return this._storage;
89
- }
90
- async getItem(address) {
91
- return this.storage.get(address) ?? null;
92
- }
93
- async removeItem(address) {
94
- this.storage.remove(address);
95
- }
96
- async setItem(address, previousHash) {
97
- this.storage.set(address, previousHash);
98
- }
99
- };
100
- export {
101
- NamespacedStorage,
102
- StoragePreviousHashStore
103
- };
104
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
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
- "names": []
7
- }