@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.
- package/LICENSE +21 -0
- package/dist/adapters/arweave/arweave-adapter.d.ts +52 -0
- package/dist/adapters/arweave/arweave-adapter.d.ts.map +1 -0
- package/dist/adapters/arweave/arweave-adapter.js +200 -0
- package/dist/adapters/arweave/arweave-adapter.js.map +1 -0
- package/dist/adapters/arweave/index.d.ts +2 -0
- package/dist/adapters/arweave/index.d.ts.map +1 -0
- package/dist/adapters/arweave/index.js +2 -0
- package/dist/adapters/arweave/index.js.map +1 -0
- package/dist/adapters/ipfs/index.d.ts +3 -0
- package/dist/adapters/ipfs/index.d.ts.map +1 -0
- package/dist/adapters/ipfs/index.js +3 -0
- package/dist/adapters/ipfs/index.js.map +1 -0
- package/dist/adapters/ipfs/ipfs-adapter.d.ts +51 -0
- package/dist/adapters/ipfs/ipfs-adapter.d.ts.map +1 -0
- package/dist/adapters/ipfs/ipfs-adapter.js +186 -0
- package/dist/adapters/ipfs/ipfs-adapter.js.map +1 -0
- package/dist/adapters/ipfs/pinning-service.d.ts +68 -0
- package/dist/adapters/ipfs/pinning-service.d.ts.map +1 -0
- package/dist/adapters/ipfs/pinning-service.js +249 -0
- package/dist/adapters/ipfs/pinning-service.js.map +1 -0
- package/dist/adapters/s3/index.d.ts +2 -0
- package/dist/adapters/s3/index.d.ts.map +1 -0
- package/dist/adapters/s3/index.js +2 -0
- package/dist/adapters/s3/index.js.map +1 -0
- package/dist/adapters/s3/s3-adapter.d.ts +79 -0
- package/dist/adapters/s3/s3-adapter.d.ts.map +1 -0
- package/dist/adapters/s3/s3-adapter.js +275 -0
- package/dist/adapters/s3/s3-adapter.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +182 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +27 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/content-addressing.d.ts +50 -0
- package/dist/utils/content-addressing.d.ts.map +1 -0
- package/dist/utils/content-addressing.js +101 -0
- package/dist/utils/content-addressing.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/replication.d.ts +64 -0
- package/dist/utils/replication.d.ts.map +1 -0
- package/dist/utils/replication.js +217 -0
- package/dist/utils/replication.js.map +1 -0
- 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
|
+
}
|