@fluxpointstudios/orynq-sdk-storage-adapters 0.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.
Files changed (50) hide show
  1. package/LICENSE +21 -0
  2. package/dist/adapters/arweave/arweave-adapter.d.ts +52 -0
  3. package/dist/adapters/arweave/arweave-adapter.d.ts.map +1 -0
  4. package/dist/adapters/arweave/arweave-adapter.js +200 -0
  5. package/dist/adapters/arweave/arweave-adapter.js.map +1 -0
  6. package/dist/adapters/arweave/index.d.ts +2 -0
  7. package/dist/adapters/arweave/index.d.ts.map +1 -0
  8. package/dist/adapters/arweave/index.js +2 -0
  9. package/dist/adapters/arweave/index.js.map +1 -0
  10. package/dist/adapters/ipfs/index.d.ts +3 -0
  11. package/dist/adapters/ipfs/index.d.ts.map +1 -0
  12. package/dist/adapters/ipfs/index.js +3 -0
  13. package/dist/adapters/ipfs/index.js.map +1 -0
  14. package/dist/adapters/ipfs/ipfs-adapter.d.ts +51 -0
  15. package/dist/adapters/ipfs/ipfs-adapter.d.ts.map +1 -0
  16. package/dist/adapters/ipfs/ipfs-adapter.js +186 -0
  17. package/dist/adapters/ipfs/ipfs-adapter.js.map +1 -0
  18. package/dist/adapters/ipfs/pinning-service.d.ts +68 -0
  19. package/dist/adapters/ipfs/pinning-service.d.ts.map +1 -0
  20. package/dist/adapters/ipfs/pinning-service.js +249 -0
  21. package/dist/adapters/ipfs/pinning-service.js.map +1 -0
  22. package/dist/adapters/s3/index.d.ts +2 -0
  23. package/dist/adapters/s3/index.d.ts.map +1 -0
  24. package/dist/adapters/s3/index.js +2 -0
  25. package/dist/adapters/s3/index.js.map +1 -0
  26. package/dist/adapters/s3/s3-adapter.d.ts +79 -0
  27. package/dist/adapters/s3/s3-adapter.d.ts.map +1 -0
  28. package/dist/adapters/s3/s3-adapter.js +275 -0
  29. package/dist/adapters/s3/s3-adapter.js.map +1 -0
  30. package/dist/index.d.ts +40 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +43 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/types.d.ts +182 -0
  35. package/dist/types.d.ts.map +1 -0
  36. package/dist/types.js +27 -0
  37. package/dist/types.js.map +1 -0
  38. package/dist/utils/content-addressing.d.ts +50 -0
  39. package/dist/utils/content-addressing.d.ts.map +1 -0
  40. package/dist/utils/content-addressing.js +101 -0
  41. package/dist/utils/content-addressing.js.map +1 -0
  42. package/dist/utils/index.d.ts +3 -0
  43. package/dist/utils/index.d.ts.map +1 -0
  44. package/dist/utils/index.js +3 -0
  45. package/dist/utils/index.js.map +1 -0
  46. package/dist/utils/replication.d.ts +64 -0
  47. package/dist/utils/replication.d.ts.map +1 -0
  48. package/dist/utils/replication.js +217 -0
  49. package/dist/utils/replication.js.map +1 -0
  50. package/package.json +68 -0
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Replication utility for storing data across multiple storage backends.
3
+ */
4
+ import { StorageError, StorageException } from "../types.js";
5
+ /**
6
+ * Storage adapter that replicates data across multiple backends.
7
+ */
8
+ export class ReplicatedStorageAdapter {
9
+ type = "local"; // Primary type
10
+ adapters;
11
+ strategy;
12
+ quorum;
13
+ retry;
14
+ constructor(config) {
15
+ if (config.adapters.length === 0) {
16
+ throw new StorageException(StorageError.INVALID_CONFIG, "At least one storage adapter is required for replication");
17
+ }
18
+ this.adapters = config.adapters;
19
+ this.strategy = config.strategy;
20
+ this.quorum = config.quorum ?? Math.ceil(config.adapters.length / 2);
21
+ this.retry = config.retry ?? {
22
+ maxAttempts: 3,
23
+ delayMs: 1000,
24
+ backoffMultiplier: 2,
25
+ };
26
+ }
27
+ /**
28
+ * Store data across all configured adapters.
29
+ */
30
+ async store(data) {
31
+ const result = await this.storeWithReplication((adapter) => adapter.store(data));
32
+ if (!result.success) {
33
+ throw new StorageException(StorageError.REPLICATION_FAILED, `Failed to replicate data: ${result.errors.map((e) => e.error.message).join(", ")}`);
34
+ }
35
+ // Return the first successful ref
36
+ const ref = result.refs[0];
37
+ if (ref === undefined) {
38
+ throw new StorageException(StorageError.STORE_FAILED, "No storage reference returned");
39
+ }
40
+ return ref;
41
+ }
42
+ /**
43
+ * Store a manifest across all configured adapters.
44
+ */
45
+ async storeManifest(manifest) {
46
+ const result = await this.storeWithReplication((adapter) => adapter.storeManifest(manifest));
47
+ if (!result.success) {
48
+ throw new StorageException(StorageError.REPLICATION_FAILED, `Failed to replicate manifest: ${result.errors.map((e) => e.error.message).join(", ")}`);
49
+ }
50
+ const ref = result.refs[0];
51
+ if (ref === undefined) {
52
+ throw new StorageException(StorageError.STORE_FAILED, "No storage reference returned");
53
+ }
54
+ return ref;
55
+ }
56
+ /**
57
+ * Fetch data from any adapter that has it.
58
+ */
59
+ async fetch(ref) {
60
+ for (const adapter of this.adapters) {
61
+ try {
62
+ return await adapter.fetch(ref);
63
+ }
64
+ catch {
65
+ // Try next adapter
66
+ continue;
67
+ }
68
+ }
69
+ throw new StorageException(StorageError.FETCH_FAILED, `Failed to fetch data from any adapter: ${ref.uri}`);
70
+ }
71
+ /**
72
+ * Fetch a manifest from any adapter that has it.
73
+ */
74
+ async fetchManifest(ref) {
75
+ for (const adapter of this.adapters) {
76
+ try {
77
+ return await adapter.fetchManifest(ref);
78
+ }
79
+ catch {
80
+ // Try next adapter
81
+ continue;
82
+ }
83
+ }
84
+ throw new StorageException(StorageError.FETCH_FAILED, `Failed to fetch manifest from any adapter: ${ref.uri}`);
85
+ }
86
+ /**
87
+ * Verify data exists and is valid in at least one adapter.
88
+ */
89
+ async verify(ref) {
90
+ for (const adapter of this.adapters) {
91
+ try {
92
+ const valid = await adapter.verify(ref);
93
+ if (valid)
94
+ return true;
95
+ }
96
+ catch {
97
+ // Try next adapter
98
+ continue;
99
+ }
100
+ }
101
+ return false;
102
+ }
103
+ /**
104
+ * Delete data from all adapters.
105
+ */
106
+ async delete(ref) {
107
+ const errors = [];
108
+ for (const adapter of this.adapters) {
109
+ if (adapter.delete) {
110
+ try {
111
+ await adapter.delete(ref);
112
+ }
113
+ catch (error) {
114
+ errors.push({
115
+ adapter: adapter.type,
116
+ error: error instanceof Error ? error : new Error(String(error)),
117
+ });
118
+ }
119
+ }
120
+ }
121
+ if (errors.length === this.adapters.filter((a) => a.delete).length) {
122
+ throw new StorageException(StorageError.DELETE_FAILED, `Failed to delete from all adapters: ${errors.map((e) => e.error.message).join(", ")}`);
123
+ }
124
+ }
125
+ /**
126
+ * Pin data in all adapters that support pinning.
127
+ */
128
+ async pin(ref) {
129
+ const errors = [];
130
+ for (const adapter of this.adapters) {
131
+ if (adapter.pin) {
132
+ try {
133
+ await adapter.pin(ref);
134
+ }
135
+ catch (error) {
136
+ errors.push({
137
+ adapter: adapter.type,
138
+ error: error instanceof Error ? error : new Error(String(error)),
139
+ });
140
+ }
141
+ }
142
+ }
143
+ // Only throw if all pinnable adapters failed
144
+ const pinnableAdapters = this.adapters.filter((a) => a.pin);
145
+ if (pinnableAdapters.length > 0 && errors.length === pinnableAdapters.length) {
146
+ throw new StorageException(StorageError.PIN_FAILED, `Failed to pin in all adapters: ${errors.map((e) => e.error.message).join(", ")}`);
147
+ }
148
+ }
149
+ /**
150
+ * Get all storage references from a replication operation.
151
+ */
152
+ async storeAll(data) {
153
+ return this.storeWithReplication((adapter) => adapter.store(data));
154
+ }
155
+ /**
156
+ * Store manifest to all adapters and return all references.
157
+ */
158
+ async storeManifestAll(manifest) {
159
+ return this.storeWithReplication((adapter) => adapter.storeManifest(manifest));
160
+ }
161
+ // === Private Methods ===
162
+ async storeWithReplication(operation) {
163
+ const results = await Promise.allSettled(this.adapters.map((adapter) => this.retryOperation(() => operation(adapter))));
164
+ const refs = [];
165
+ const errors = [];
166
+ for (let i = 0; i < results.length; i++) {
167
+ const result = results[i];
168
+ const adapter = this.adapters[i];
169
+ if (result === undefined || adapter === undefined)
170
+ continue;
171
+ if (result.status === "fulfilled") {
172
+ refs.push(result.value);
173
+ }
174
+ else {
175
+ errors.push({
176
+ adapter: adapter.type,
177
+ error: result.reason instanceof Error ? result.reason : new Error(String(result.reason)),
178
+ });
179
+ }
180
+ }
181
+ const success = this.checkSuccess(refs.length, this.adapters.length);
182
+ return { success, refs, errors };
183
+ }
184
+ checkSuccess(successCount, totalCount) {
185
+ switch (this.strategy) {
186
+ case "all":
187
+ return successCount === totalCount;
188
+ case "any":
189
+ return successCount > 0;
190
+ case "quorum":
191
+ return successCount >= this.quorum;
192
+ default:
193
+ return successCount > 0;
194
+ }
195
+ }
196
+ async retryOperation(operation) {
197
+ let lastError;
198
+ let delay = this.retry.delayMs;
199
+ for (let attempt = 0; attempt < this.retry.maxAttempts; attempt++) {
200
+ try {
201
+ return await operation();
202
+ }
203
+ catch (error) {
204
+ lastError = error instanceof Error ? error : new Error(String(error));
205
+ if (attempt < this.retry.maxAttempts - 1) {
206
+ await this.sleep(delay);
207
+ delay *= this.retry.backoffMultiplier;
208
+ }
209
+ }
210
+ }
211
+ throw lastError ?? new Error("Operation failed after retries");
212
+ }
213
+ sleep(ms) {
214
+ return new Promise((resolve) => setTimeout(resolve, ms));
215
+ }
216
+ }
217
+ //# sourceMappingURL=replication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replication.js","sourceRoot":"","sources":["../../src/utils/replication.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,68 @@
1
+ {
2
+ "name": "@fluxpointstudios/orynq-sdk-storage-adapters",
3
+ "version": "0.1.0",
4
+ "description": "Storage adapters for PoI SDK - IPFS, S3, and Arweave backends",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ },
13
+ "./ipfs": {
14
+ "types": "./dist/adapters/ipfs/index.d.ts",
15
+ "import": "./dist/adapters/ipfs/index.js"
16
+ },
17
+ "./s3": {
18
+ "types": "./dist/adapters/s3/index.d.ts",
19
+ "import": "./dist/adapters/s3/index.js"
20
+ },
21
+ "./arweave": {
22
+ "types": "./dist/adapters/arweave/index.d.ts",
23
+ "import": "./dist/adapters/arweave/index.js"
24
+ }
25
+ },
26
+ "files": [
27
+ "dist",
28
+ "README.md"
29
+ ],
30
+ "keywords": [
31
+ "poi",
32
+ "proof-of-inference",
33
+ "storage",
34
+ "ipfs",
35
+ "s3",
36
+ "arweave",
37
+ "content-addressed"
38
+ ],
39
+ "author": "Flux Point Studios",
40
+ "license": "MIT",
41
+ "repository": {
42
+ "type": "git",
43
+ "url": "https://github.com/Flux-Point-Studios/orynq-sdk.git",
44
+ "directory": "packages/storage-adapters"
45
+ },
46
+ "dependencies": {
47
+ "@fluxpointstudios/orynq-sdk-core": "0.1.0"
48
+ },
49
+ "optionalDependencies": {
50
+ "@aws-sdk/client-s3": "^3.0.0",
51
+ "@aws-sdk/s3-request-presigner": "^3.0.0",
52
+ "arweave": "^1.14.0"
53
+ },
54
+ "devDependencies": {
55
+ "typescript": "^5.3.3",
56
+ "vitest": "^2.1.8"
57
+ },
58
+ "engines": {
59
+ "node": ">=18.0.0"
60
+ },
61
+ "scripts": {
62
+ "build": "tsc",
63
+ "clean": "rimraf dist",
64
+ "typecheck": "tsc --noEmit",
65
+ "test": "vitest run",
66
+ "test:watch": "vitest watch"
67
+ }
68
+ }