@syncular/server-storage-s3 0.0.6-159 → 0.0.6-167
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/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -16
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +38 -16
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAIV,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAExB;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1C;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,KAC3B,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,gBAAgB,EAAE,KAAK,KAAK,EAAE;QAC5B,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,IAAI,CAAC,EAAE,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;KAChD,KAAK,OAAO,CAAC;IACd,gBAAgB,EAAE,KAAK,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;IAC1E,iBAAiB,EAAE,KAAK,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;IAC3E,mBAAmB,EAAE,KAAK,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;CAC9E;AAED,MAAM,WAAW,2BAA2B;IAC1C,yBAAyB;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,QAAQ,EAAE,UAAU,CAAC;IACrB,+DAA+D;IAC/D,YAAY,EAAE,cAAc,CAAC;IAC7B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,2BAA2B,GACnC,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAIV,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAExB;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1C;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,KAC3B,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,gBAAgB,EAAE,KAAK,KAAK,EAAE;QAC5B,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,IAAI,CAAC,EAAE,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;KAChD,KAAK,OAAO,CAAC;IACd,gBAAgB,EAAE,KAAK,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;IAC1E,iBAAiB,EAAE,KAAK,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;IAC3E,mBAAmB,EAAE,KAAK,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;CAC9E;AAED,MAAM,WAAW,2BAA2B;IAC1C,yBAAyB;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,QAAQ,EAAE,UAAU,CAAC;IACrB,+DAA+D;IAC/D,YAAY,EAAE,cAAc,CAAC;IAC7B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,2BAA2B,GACnC,kBAAkB,CA2MpB"}
|
package/dist/index.js
CHANGED
|
@@ -23,15 +23,19 @@
|
|
|
23
23
|
*/
|
|
24
24
|
export function createS3BlobStorageAdapter(options) {
|
|
25
25
|
const { client, bucket, keyPrefix = '', commands, getSignedUrl, requireChecksum = true, } = options;
|
|
26
|
-
function getKey(hash) {
|
|
26
|
+
function getKey(hash, partitionId) {
|
|
27
27
|
// Remove "sha256:" prefix and use hex as key
|
|
28
28
|
const hex = hash.startsWith('sha256:') ? hash.slice(7) : hash;
|
|
29
|
-
|
|
29
|
+
const normalizedPartition = partitionId?.trim();
|
|
30
|
+
if (!normalizedPartition || normalizedPartition === 'default') {
|
|
31
|
+
return `${keyPrefix}${hex}`;
|
|
32
|
+
}
|
|
33
|
+
return `${keyPrefix}${encodeURIComponent(normalizedPartition)}/${hex}`;
|
|
30
34
|
}
|
|
31
35
|
return {
|
|
32
36
|
name: 's3',
|
|
33
37
|
async signUpload(opts) {
|
|
34
|
-
const key = getKey(opts.hash);
|
|
38
|
+
const key = getKey(opts.hash, opts.partitionId);
|
|
35
39
|
// Extract hex hash for checksum (S3 expects base64-encoded SHA-256)
|
|
36
40
|
const hexHash = opts.hash.startsWith('sha256:')
|
|
37
41
|
? opts.hash.slice(7)
|
|
@@ -65,15 +69,15 @@ export function createS3BlobStorageAdapter(options) {
|
|
|
65
69
|
};
|
|
66
70
|
},
|
|
67
71
|
async signDownload(opts) {
|
|
68
|
-
const key = getKey(opts.hash);
|
|
72
|
+
const key = getKey(opts.hash, opts.partitionId);
|
|
69
73
|
const command = new commands.GetObjectCommand({
|
|
70
74
|
Bucket: bucket,
|
|
71
75
|
Key: key,
|
|
72
76
|
});
|
|
73
77
|
return getSignedUrl(client, command, { expiresIn: opts.expiresIn });
|
|
74
78
|
},
|
|
75
|
-
async exists(hash) {
|
|
76
|
-
const key = getKey(hash);
|
|
79
|
+
async exists(hash, options) {
|
|
80
|
+
const key = getKey(hash, options?.partitionId);
|
|
77
81
|
try {
|
|
78
82
|
const command = new commands.HeadObjectCommand({
|
|
79
83
|
Bucket: bucket,
|
|
@@ -90,16 +94,16 @@ export function createS3BlobStorageAdapter(options) {
|
|
|
90
94
|
throw err;
|
|
91
95
|
}
|
|
92
96
|
},
|
|
93
|
-
async delete(hash) {
|
|
94
|
-
const key = getKey(hash);
|
|
97
|
+
async delete(hash, options) {
|
|
98
|
+
const key = getKey(hash, options?.partitionId);
|
|
95
99
|
const command = new commands.DeleteObjectCommand({
|
|
96
100
|
Bucket: bucket,
|
|
97
101
|
Key: key,
|
|
98
102
|
});
|
|
99
103
|
await client.send(command);
|
|
100
104
|
},
|
|
101
|
-
async getMetadata(hash) {
|
|
102
|
-
const key = getKey(hash);
|
|
105
|
+
async getMetadata(hash, options) {
|
|
106
|
+
const key = getKey(hash, options?.partitionId);
|
|
103
107
|
try {
|
|
104
108
|
const command = new commands.HeadObjectCommand({
|
|
105
109
|
Bucket: bucket,
|
|
@@ -118,8 +122,8 @@ export function createS3BlobStorageAdapter(options) {
|
|
|
118
122
|
throw err;
|
|
119
123
|
}
|
|
120
124
|
},
|
|
121
|
-
async put(hash, data) {
|
|
122
|
-
const key = getKey(hash);
|
|
125
|
+
async put(hash, data, _metadata, options) {
|
|
126
|
+
const key = getKey(hash, options?.partitionId);
|
|
123
127
|
const command = new commands.PutObjectCommand({
|
|
124
128
|
Bucket: bucket,
|
|
125
129
|
Key: key,
|
|
@@ -129,8 +133,8 @@ export function createS3BlobStorageAdapter(options) {
|
|
|
129
133
|
});
|
|
130
134
|
await client.send(command);
|
|
131
135
|
},
|
|
132
|
-
async get(hash) {
|
|
133
|
-
const key = getKey(hash);
|
|
136
|
+
async get(hash, options) {
|
|
137
|
+
const key = getKey(hash, options?.partitionId);
|
|
134
138
|
try {
|
|
135
139
|
const command = new commands.GetObjectCommand({
|
|
136
140
|
Bucket: bucket,
|
|
@@ -148,8 +152,8 @@ export function createS3BlobStorageAdapter(options) {
|
|
|
148
152
|
throw err;
|
|
149
153
|
}
|
|
150
154
|
},
|
|
151
|
-
async getStream(hash) {
|
|
152
|
-
const key = getKey(hash);
|
|
155
|
+
async getStream(hash, options) {
|
|
156
|
+
const key = getKey(hash, options?.partitionId);
|
|
153
157
|
try {
|
|
154
158
|
const command = new commands.GetObjectCommand({
|
|
155
159
|
Bucket: bucket,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA+DH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAAoC,EAChB;IACpB,MAAM,EACJ,MAAM,EACN,MAAM,EACN,SAAS,GAAG,EAAE,EACd,QAAQ,EACR,YAAY,EACZ,eAAe,GAAG,IAAI,GACvB,GAAG,OAAO,CAAC;IAEZ,SAAS,MAAM,CAAC,IAAY,EAAU;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@syncular/server-storage-s3",
|
|
3
|
-
"version": "0.0.6-
|
|
3
|
+
"version": "0.0.6-167",
|
|
4
4
|
"description": "S3-compatible blob storage adapter for Syncular server",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Benjamin Kniffler",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"release": "bunx syncular-publish"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@syncular/core": "0.0.6-
|
|
44
|
+
"@syncular/core": "0.0.6-167"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@syncular/config": "0.0.0"
|
package/src/index.ts
CHANGED
|
@@ -95,17 +95,21 @@ export function createS3BlobStorageAdapter(
|
|
|
95
95
|
requireChecksum = true,
|
|
96
96
|
} = options;
|
|
97
97
|
|
|
98
|
-
function getKey(hash: string): string {
|
|
98
|
+
function getKey(hash: string, partitionId?: string): string {
|
|
99
99
|
// Remove "sha256:" prefix and use hex as key
|
|
100
100
|
const hex = hash.startsWith('sha256:') ? hash.slice(7) : hash;
|
|
101
|
-
|
|
101
|
+
const normalizedPartition = partitionId?.trim();
|
|
102
|
+
if (!normalizedPartition || normalizedPartition === 'default') {
|
|
103
|
+
return `${keyPrefix}${hex}`;
|
|
104
|
+
}
|
|
105
|
+
return `${keyPrefix}${encodeURIComponent(normalizedPartition)}/${hex}`;
|
|
102
106
|
}
|
|
103
107
|
|
|
104
108
|
return {
|
|
105
109
|
name: 's3',
|
|
106
110
|
|
|
107
111
|
async signUpload(opts: BlobSignUploadOptions): Promise<BlobSignedUpload> {
|
|
108
|
-
const key = getKey(opts.hash);
|
|
112
|
+
const key = getKey(opts.hash, opts.partitionId);
|
|
109
113
|
|
|
110
114
|
// Extract hex hash for checksum (S3 expects base64-encoded SHA-256)
|
|
111
115
|
const hexHash = opts.hash.startsWith('sha256:')
|
|
@@ -154,7 +158,7 @@ export function createS3BlobStorageAdapter(
|
|
|
154
158
|
},
|
|
155
159
|
|
|
156
160
|
async signDownload(opts: BlobSignDownloadOptions): Promise<string> {
|
|
157
|
-
const key = getKey(opts.hash);
|
|
161
|
+
const key = getKey(opts.hash, opts.partitionId);
|
|
158
162
|
const command = new commands.GetObjectCommand({
|
|
159
163
|
Bucket: bucket,
|
|
160
164
|
Key: key,
|
|
@@ -162,8 +166,11 @@ export function createS3BlobStorageAdapter(
|
|
|
162
166
|
return getSignedUrl(client, command, { expiresIn: opts.expiresIn });
|
|
163
167
|
},
|
|
164
168
|
|
|
165
|
-
async exists(
|
|
166
|
-
|
|
169
|
+
async exists(
|
|
170
|
+
hash: string,
|
|
171
|
+
options?: { partitionId?: string }
|
|
172
|
+
): Promise<boolean> {
|
|
173
|
+
const key = getKey(hash, options?.partitionId);
|
|
167
174
|
try {
|
|
168
175
|
const command = new commands.HeadObjectCommand({
|
|
169
176
|
Bucket: bucket,
|
|
@@ -180,8 +187,11 @@ export function createS3BlobStorageAdapter(
|
|
|
180
187
|
}
|
|
181
188
|
},
|
|
182
189
|
|
|
183
|
-
async delete(
|
|
184
|
-
|
|
190
|
+
async delete(
|
|
191
|
+
hash: string,
|
|
192
|
+
options?: { partitionId?: string }
|
|
193
|
+
): Promise<void> {
|
|
194
|
+
const key = getKey(hash, options?.partitionId);
|
|
185
195
|
const command = new commands.DeleteObjectCommand({
|
|
186
196
|
Bucket: bucket,
|
|
187
197
|
Key: key,
|
|
@@ -190,9 +200,10 @@ export function createS3BlobStorageAdapter(
|
|
|
190
200
|
},
|
|
191
201
|
|
|
192
202
|
async getMetadata(
|
|
193
|
-
hash: string
|
|
203
|
+
hash: string,
|
|
204
|
+
options?: { partitionId?: string }
|
|
194
205
|
): Promise<{ size: number; mimeType?: string } | null> {
|
|
195
|
-
const key = getKey(hash);
|
|
206
|
+
const key = getKey(hash, options?.partitionId);
|
|
196
207
|
try {
|
|
197
208
|
const command = new commands.HeadObjectCommand({
|
|
198
209
|
Bucket: bucket,
|
|
@@ -214,8 +225,13 @@ export function createS3BlobStorageAdapter(
|
|
|
214
225
|
}
|
|
215
226
|
},
|
|
216
227
|
|
|
217
|
-
async put(
|
|
218
|
-
|
|
228
|
+
async put(
|
|
229
|
+
hash: string,
|
|
230
|
+
data: Uint8Array,
|
|
231
|
+
_metadata?: Record<string, unknown>,
|
|
232
|
+
options?: { partitionId?: string }
|
|
233
|
+
): Promise<void> {
|
|
234
|
+
const key = getKey(hash, options?.partitionId);
|
|
219
235
|
const command = new commands.PutObjectCommand({
|
|
220
236
|
Bucket: bucket,
|
|
221
237
|
Key: key,
|
|
@@ -226,8 +242,11 @@ export function createS3BlobStorageAdapter(
|
|
|
226
242
|
await client.send(command);
|
|
227
243
|
},
|
|
228
244
|
|
|
229
|
-
async get(
|
|
230
|
-
|
|
245
|
+
async get(
|
|
246
|
+
hash: string,
|
|
247
|
+
options?: { partitionId?: string }
|
|
248
|
+
): Promise<Uint8Array | null> {
|
|
249
|
+
const key = getKey(hash, options?.partitionId);
|
|
231
250
|
try {
|
|
232
251
|
const command = new commands.GetObjectCommand({
|
|
233
252
|
Bucket: bucket,
|
|
@@ -246,8 +265,11 @@ export function createS3BlobStorageAdapter(
|
|
|
246
265
|
}
|
|
247
266
|
},
|
|
248
267
|
|
|
249
|
-
async getStream(
|
|
250
|
-
|
|
268
|
+
async getStream(
|
|
269
|
+
hash: string,
|
|
270
|
+
options?: { partitionId?: string }
|
|
271
|
+
): Promise<ReadableStream<Uint8Array> | null> {
|
|
272
|
+
const key = getKey(hash, options?.partitionId);
|
|
251
273
|
try {
|
|
252
274
|
const command = new commands.GetObjectCommand({
|
|
253
275
|
Bucket: bucket,
|