@beyonk/tus-bunny-store 0.1.0-beta.2 → 0.1.0-beta.4
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 +56 -33
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +63 -37
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAKjC,OAAO,EAAwB,MAAM,EAAE,SAAS,EAAC,MAAM,YAAY,CAAA;AACnE,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAA;AAIzD,MAAM,MAAM,OAAO,GAAG;IACpB;;OAEG;IACH,WAAW,EAAE,eAAe,CAAC,IAAI,CAAC,WAAW,CAAA;CAC9C,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAKjC,OAAO,EAAwB,MAAM,EAAE,SAAS,EAAC,MAAM,YAAY,CAAA;AACnE,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAA;AAIzD,MAAM,MAAM,OAAO,GAAG;IACpB;;OAEG;IACH,WAAW,EAAE,eAAe,CAAC,IAAI,CAAC,WAAW,CAAA;CAC9C,CAAA;AAmED,qBAAa,UAAW,SAAQ,SAAS;;IAChC,WAAW,EAAE,eAAe,CAAC,IAAI,CAAC,WAAW,CAAA;gBAExC,OAAO,EAAE,OAAO;IAyHtB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA+BvC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;IAcrD;;OAEG;IACG,KAAK,CACT,QAAQ,EAAE,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,QAAQ,EAChD,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC;IAiIZ,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAyBtC,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAO5E"}
|
package/dist/index.js
CHANGED
|
@@ -7,8 +7,14 @@ import * as BunnyStorageSDK from '@bunny.net/storage-sdk';
|
|
|
7
7
|
const log = debug('tus-node-server:stores:bunnystore');
|
|
8
8
|
/**
|
|
9
9
|
* Convert a Node.js Readable stream to a Web ReadableStream
|
|
10
|
+
* Uses the built-in toWeb() method if available, otherwise falls back to manual conversion
|
|
10
11
|
*/
|
|
11
12
|
function nodeStreamToWebStream(nodeStream) {
|
|
13
|
+
// Use built-in toWeb() method if available (Node.js 17+)
|
|
14
|
+
if (typeof stream.Readable.toWeb === 'function') {
|
|
15
|
+
return stream.Readable.toWeb(nodeStream);
|
|
16
|
+
}
|
|
17
|
+
// Fallback for older Node.js versions or edge environments
|
|
12
18
|
return new ReadableStream({
|
|
13
19
|
start(controller) {
|
|
14
20
|
nodeStream.on('data', (chunk) => {
|
|
@@ -29,8 +35,14 @@ function nodeStreamToWebStream(nodeStream) {
|
|
|
29
35
|
}
|
|
30
36
|
/**
|
|
31
37
|
* Convert a Web ReadableStream to a Node.js Readable stream
|
|
38
|
+
* Uses the built-in fromWeb() method if available, otherwise falls back to manual conversion
|
|
32
39
|
*/
|
|
33
40
|
function webStreamToNodeStream(webStream) {
|
|
41
|
+
// Use built-in fromWeb() method if available (Node.js 17+)
|
|
42
|
+
if (typeof stream.Readable.fromWeb === 'function') {
|
|
43
|
+
return stream.Readable.fromWeb(webStream);
|
|
44
|
+
}
|
|
45
|
+
// Fallback for older Node.js versions or edge environments
|
|
34
46
|
const reader = webStream.getReader();
|
|
35
47
|
const nodeStream = new stream.Readable({
|
|
36
48
|
async read() {
|
|
@@ -60,12 +72,6 @@ export class BunnyStore extends DataStore {
|
|
|
60
72
|
this.storageZone = options.storageZone;
|
|
61
73
|
this.extensions = ['creation', 'creation-with-upload', 'creation-defer-length'];
|
|
62
74
|
}
|
|
63
|
-
/**
|
|
64
|
-
* Normalize path for Bunny Storage - ensure it starts with /
|
|
65
|
-
*/
|
|
66
|
-
#normalizePath(path) {
|
|
67
|
-
return path.startsWith('/') ? path : `/${path}`;
|
|
68
|
-
}
|
|
69
75
|
/**
|
|
70
76
|
* Get the path for the metadata info file
|
|
71
77
|
*/
|
|
@@ -82,15 +88,18 @@ export class BunnyStore extends DataStore {
|
|
|
82
88
|
'tus-version': TUS_RESUMABLE,
|
|
83
89
|
};
|
|
84
90
|
const metadataJson = JSON.stringify(metadata);
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
91
|
+
const metadataBytes = new TextEncoder().encode(metadataJson);
|
|
92
|
+
// Create a Web ReadableStream directly instead of converting from Node.js stream
|
|
93
|
+
// This is more compatible with edge environments
|
|
94
|
+
const metadataStream = new ReadableStream({
|
|
95
|
+
start(controller) {
|
|
96
|
+
controller.enqueue(metadataBytes);
|
|
97
|
+
controller.close();
|
|
89
98
|
},
|
|
90
99
|
});
|
|
91
|
-
const metadataPath = this.#
|
|
100
|
+
const metadataPath = this.#infoKey(upload.id);
|
|
92
101
|
log(`[${upload.id}] uploading metadata to path: ${metadataPath}`);
|
|
93
|
-
await BunnyStorageSDK.file.upload(this.storageZone, metadataPath,
|
|
102
|
+
await BunnyStorageSDK.file.upload(this.storageZone, metadataPath, metadataStream);
|
|
94
103
|
log(`[${upload.id}] metadata file saved`);
|
|
95
104
|
}
|
|
96
105
|
/**
|
|
@@ -98,15 +107,35 @@ export class BunnyStore extends DataStore {
|
|
|
98
107
|
*/
|
|
99
108
|
async #getMetadata(id) {
|
|
100
109
|
try {
|
|
101
|
-
const infoPath = this.#
|
|
110
|
+
const infoPath = this.#infoKey(id);
|
|
102
111
|
const infoFile = await BunnyStorageSDK.file.get(this.storageZone, infoPath);
|
|
103
112
|
const { stream: webStream } = await infoFile.data();
|
|
104
|
-
|
|
113
|
+
// Read directly from Web ReadableStream instead of converting to Node.js stream
|
|
114
|
+
// This avoids asyncIterator issues in edge environments
|
|
115
|
+
const reader = webStream.getReader();
|
|
105
116
|
const chunks = [];
|
|
106
|
-
|
|
107
|
-
|
|
117
|
+
try {
|
|
118
|
+
while (true) {
|
|
119
|
+
const { done, value } = await reader.read();
|
|
120
|
+
if (done)
|
|
121
|
+
break;
|
|
122
|
+
if (value) {
|
|
123
|
+
chunks.push(value);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
finally {
|
|
128
|
+
reader.releaseLock();
|
|
129
|
+
}
|
|
130
|
+
// Combine chunks and convert to string
|
|
131
|
+
const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
|
|
132
|
+
const combined = new Uint8Array(totalLength);
|
|
133
|
+
let offset = 0;
|
|
134
|
+
for (const chunk of chunks) {
|
|
135
|
+
combined.set(chunk, offset);
|
|
136
|
+
offset += chunk.length;
|
|
108
137
|
}
|
|
109
|
-
const metadataJson =
|
|
138
|
+
const metadataJson = new TextDecoder().decode(combined);
|
|
110
139
|
const metadata = JSON.parse(metadataJson);
|
|
111
140
|
// Reconstruct Upload object
|
|
112
141
|
metadata.file = new Upload({
|
|
@@ -141,11 +170,9 @@ export class BunnyStore extends DataStore {
|
|
|
141
170
|
if (!upload.id) {
|
|
142
171
|
throw ERRORS.FILE_NOT_FOUND;
|
|
143
172
|
}
|
|
144
|
-
const filePath = this.#normalizePath(upload.id);
|
|
145
|
-
log(`[${upload.id}] normalized file path: ${filePath}`);
|
|
146
173
|
upload.storage = {
|
|
147
174
|
type: 'bunny',
|
|
148
|
-
path:
|
|
175
|
+
path: upload.id,
|
|
149
176
|
bucket: BunnyStorageSDK.zone.name(this.storageZone),
|
|
150
177
|
};
|
|
151
178
|
upload.creation_date = new Date().toISOString();
|
|
@@ -158,7 +185,7 @@ export class BunnyStore extends DataStore {
|
|
|
158
185
|
return upload;
|
|
159
186
|
}
|
|
160
187
|
catch (error) {
|
|
161
|
-
log(`[BunnyStore] create error for path "${
|
|
188
|
+
log(`[BunnyStore] create error for path "${upload.id}":`, error);
|
|
162
189
|
if (error instanceof Error) {
|
|
163
190
|
log(`[BunnyStore] error message: ${error.message}`);
|
|
164
191
|
log(`[BunnyStore] error stack: ${error.stack}`);
|
|
@@ -167,14 +194,13 @@ export class BunnyStore extends DataStore {
|
|
|
167
194
|
}
|
|
168
195
|
}
|
|
169
196
|
async read(file_id) {
|
|
170
|
-
const filePath = this.#normalizePath(file_id);
|
|
171
197
|
try {
|
|
172
|
-
log(`[${file_id}] reading from path: ${
|
|
173
|
-
const { stream: webStream } = await BunnyStorageSDK.file.download(this.storageZone,
|
|
198
|
+
log(`[${file_id}] reading from path: ${file_id}`);
|
|
199
|
+
const { stream: webStream } = await BunnyStorageSDK.file.download(this.storageZone, file_id);
|
|
174
200
|
return webStreamToNodeStream(webStream);
|
|
175
201
|
}
|
|
176
202
|
catch (error) {
|
|
177
|
-
log(`[BunnyStore] read error for path "${
|
|
203
|
+
log(`[BunnyStore] read error for path "${file_id}":`, error);
|
|
178
204
|
throw ERRORS.FILE_NOT_FOUND;
|
|
179
205
|
}
|
|
180
206
|
}
|
|
@@ -202,10 +228,9 @@ export class BunnyStore extends DataStore {
|
|
|
202
228
|
const chunks = [];
|
|
203
229
|
// If there's existing data, download it first
|
|
204
230
|
if (upload.offset > 0) {
|
|
205
|
-
const existingFilePath = this.#normalizePath(id);
|
|
206
231
|
try {
|
|
207
|
-
log(`[${id}] downloading existing file from path: ${
|
|
208
|
-
const existingFile = await BunnyStorageSDK.file.get(this.storageZone,
|
|
232
|
+
log(`[${id}] downloading existing file from path: ${id}`);
|
|
233
|
+
const existingFile = await BunnyStorageSDK.file.get(this.storageZone, id);
|
|
209
234
|
const { stream: existingWebStream } = await existingFile.data();
|
|
210
235
|
const existingNodeStream = webStreamToNodeStream(existingWebStream);
|
|
211
236
|
for await (const chunk of existingNodeStream) {
|
|
@@ -213,7 +238,7 @@ export class BunnyStore extends DataStore {
|
|
|
213
238
|
}
|
|
214
239
|
}
|
|
215
240
|
catch (error) {
|
|
216
|
-
log(`[${id}] error downloading existing file from path "${
|
|
241
|
+
log(`[${id}] error downloading existing file from path "${id}":`, error);
|
|
217
242
|
// If file doesn't exist yet, that's okay for offset 0
|
|
218
243
|
if (upload.offset > 0) {
|
|
219
244
|
isResolved = true;
|
|
@@ -253,8 +278,7 @@ export class BunnyStore extends DataStore {
|
|
|
253
278
|
if (upload.metadata?.contentType) {
|
|
254
279
|
uploadOptions.contentType = upload.metadata.contentType;
|
|
255
280
|
}
|
|
256
|
-
|
|
257
|
-
await BunnyStorageSDK.file.upload(this.storageZone, uploadFilePath, nodeStreamToWebStream(combinedStream), uploadOptions);
|
|
281
|
+
await BunnyStorageSDK.file.upload(this.storageZone, id, nodeStreamToWebStream(combinedStream), uploadOptions);
|
|
258
282
|
// Update metadata
|
|
259
283
|
await this.#saveMetadata(upload);
|
|
260
284
|
log(`[${id}] ${newOffset} bytes written`);
|
|
@@ -306,8 +330,7 @@ export class BunnyStore extends DataStore {
|
|
|
306
330
|
const upload = metadata.file;
|
|
307
331
|
// Get the actual file size from storage
|
|
308
332
|
try {
|
|
309
|
-
const
|
|
310
|
-
const fileInfo = await BunnyStorageSDK.file.get(this.storageZone, filePath);
|
|
333
|
+
const fileInfo = await BunnyStorageSDK.file.get(this.storageZone, id);
|
|
311
334
|
upload.offset = fileInfo.length;
|
|
312
335
|
}
|
|
313
336
|
catch (error) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@beyonk/tus-bunny-store",
|
|
4
|
-
"version": "0.1.0-beta.
|
|
4
|
+
"version": "0.1.0-beta.4",
|
|
5
5
|
"description": "Bunny.net store for @tus/server",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"exports": "./dist/index.js",
|
package/src/index.ts
CHANGED
|
@@ -23,8 +23,15 @@ type MetadataValue = {
|
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* Convert a Node.js Readable stream to a Web ReadableStream
|
|
26
|
+
* Uses the built-in toWeb() method if available, otherwise falls back to manual conversion
|
|
26
27
|
*/
|
|
27
28
|
function nodeStreamToWebStream(nodeStream: stream.Readable): ReadableStream<Uint8Array> {
|
|
29
|
+
// Use built-in toWeb() method if available (Node.js 17+)
|
|
30
|
+
if (typeof stream.Readable.toWeb === 'function') {
|
|
31
|
+
return stream.Readable.toWeb(nodeStream) as ReadableStream<Uint8Array>
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Fallback for older Node.js versions or edge environments
|
|
28
35
|
return new ReadableStream({
|
|
29
36
|
start(controller) {
|
|
30
37
|
nodeStream.on('data', (chunk: Buffer | Uint8Array) => {
|
|
@@ -46,8 +53,15 @@ function nodeStreamToWebStream(nodeStream: stream.Readable): ReadableStream<Uint
|
|
|
46
53
|
|
|
47
54
|
/**
|
|
48
55
|
* Convert a Web ReadableStream to a Node.js Readable stream
|
|
56
|
+
* Uses the built-in fromWeb() method if available, otherwise falls back to manual conversion
|
|
49
57
|
*/
|
|
50
58
|
function webStreamToNodeStream(webStream: ReadableStream<Uint8Array>): stream.Readable {
|
|
59
|
+
// Use built-in fromWeb() method if available (Node.js 17+)
|
|
60
|
+
if (typeof stream.Readable.fromWeb === 'function') {
|
|
61
|
+
return stream.Readable.fromWeb(webStream)
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Fallback for older Node.js versions or edge environments
|
|
51
65
|
const reader = webStream.getReader()
|
|
52
66
|
const nodeStream = new stream.Readable({
|
|
53
67
|
async read() {
|
|
@@ -82,13 +96,6 @@ export class BunnyStore extends DataStore {
|
|
|
82
96
|
this.extensions = ['creation', 'creation-with-upload', 'creation-defer-length']
|
|
83
97
|
}
|
|
84
98
|
|
|
85
|
-
/**
|
|
86
|
-
* Normalize path for Bunny Storage - ensure it starts with /
|
|
87
|
-
*/
|
|
88
|
-
#normalizePath(path: string): string {
|
|
89
|
-
return path.startsWith('/') ? path : `/${path}`
|
|
90
|
-
}
|
|
91
|
-
|
|
92
99
|
/**
|
|
93
100
|
* Get the path for the metadata info file
|
|
94
101
|
*/
|
|
@@ -107,19 +114,25 @@ export class BunnyStore extends DataStore {
|
|
|
107
114
|
}
|
|
108
115
|
|
|
109
116
|
const metadataJson = JSON.stringify(metadata)
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
117
|
+
const metadataBytes = new TextEncoder().encode(metadataJson)
|
|
118
|
+
|
|
119
|
+
// Create a Web ReadableStream directly instead of converting from Node.js stream
|
|
120
|
+
// This is more compatible with edge environments
|
|
121
|
+
const metadataStream = new ReadableStream({
|
|
122
|
+
start(controller) {
|
|
123
|
+
controller.enqueue(metadataBytes)
|
|
124
|
+
controller.close()
|
|
114
125
|
},
|
|
115
126
|
})
|
|
116
127
|
|
|
117
|
-
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
const metadataPath = this.#infoKey(upload.id)
|
|
118
131
|
log(`[${upload.id}] uploading metadata to path: ${metadataPath}`)
|
|
119
132
|
await BunnyStorageSDK.file.upload(
|
|
120
133
|
this.storageZone,
|
|
121
134
|
metadataPath,
|
|
122
|
-
|
|
135
|
+
metadataStream
|
|
123
136
|
)
|
|
124
137
|
log(`[${upload.id}] metadata file saved`)
|
|
125
138
|
}
|
|
@@ -129,17 +142,37 @@ export class BunnyStore extends DataStore {
|
|
|
129
142
|
*/
|
|
130
143
|
async #getMetadata(id: string): Promise<MetadataValue> {
|
|
131
144
|
try {
|
|
132
|
-
const infoPath = this.#
|
|
145
|
+
const infoPath = this.#infoKey(id)
|
|
133
146
|
const infoFile = await BunnyStorageSDK.file.get(this.storageZone, infoPath)
|
|
134
147
|
const {stream: webStream} = await infoFile.data()
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
148
|
+
|
|
149
|
+
// Read directly from Web ReadableStream instead of converting to Node.js stream
|
|
150
|
+
// This avoids asyncIterator issues in edge environments
|
|
151
|
+
const reader = webStream.getReader()
|
|
152
|
+
const chunks: Uint8Array[] = []
|
|
153
|
+
|
|
154
|
+
try {
|
|
155
|
+
while (true) {
|
|
156
|
+
const {done, value} = await reader.read()
|
|
157
|
+
if (done) break
|
|
158
|
+
if (value) {
|
|
159
|
+
chunks.push(value)
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
} finally {
|
|
163
|
+
reader.releaseLock()
|
|
140
164
|
}
|
|
141
165
|
|
|
142
|
-
|
|
166
|
+
// Combine chunks and convert to string
|
|
167
|
+
const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0)
|
|
168
|
+
const combined = new Uint8Array(totalLength)
|
|
169
|
+
let offset = 0
|
|
170
|
+
for (const chunk of chunks) {
|
|
171
|
+
combined.set(chunk, offset)
|
|
172
|
+
offset += chunk.length
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
const metadataJson = new TextDecoder().decode(combined)
|
|
143
176
|
const metadata: MetadataValue = JSON.parse(metadataJson)
|
|
144
177
|
|
|
145
178
|
// Reconstruct Upload object
|
|
@@ -178,12 +211,9 @@ export class BunnyStore extends DataStore {
|
|
|
178
211
|
throw ERRORS.FILE_NOT_FOUND
|
|
179
212
|
}
|
|
180
213
|
|
|
181
|
-
const filePath = this.#normalizePath(upload.id)
|
|
182
|
-
log(`[${upload.id}] normalized file path: ${filePath}`)
|
|
183
|
-
|
|
184
214
|
upload.storage = {
|
|
185
215
|
type: 'bunny',
|
|
186
|
-
path:
|
|
216
|
+
path: upload.id,
|
|
187
217
|
bucket: BunnyStorageSDK.zone.name(this.storageZone),
|
|
188
218
|
}
|
|
189
219
|
|
|
@@ -197,7 +227,7 @@ export class BunnyStore extends DataStore {
|
|
|
197
227
|
log(`[${upload.id}] upload created (metadata only, file will be created on first write)`)
|
|
198
228
|
return upload
|
|
199
229
|
} catch (error) {
|
|
200
|
-
log(`[BunnyStore] create error for path "${
|
|
230
|
+
log(`[BunnyStore] create error for path "${upload.id}":`, error)
|
|
201
231
|
if (error instanceof Error) {
|
|
202
232
|
log(`[BunnyStore] error message: ${error.message}`)
|
|
203
233
|
log(`[BunnyStore] error stack: ${error.stack}`)
|
|
@@ -207,16 +237,15 @@ export class BunnyStore extends DataStore {
|
|
|
207
237
|
}
|
|
208
238
|
|
|
209
239
|
async read(file_id: string): Promise<stream.Readable> {
|
|
210
|
-
const filePath = this.#normalizePath(file_id)
|
|
211
240
|
try {
|
|
212
|
-
log(`[${file_id}] reading from path: ${
|
|
241
|
+
log(`[${file_id}] reading from path: ${file_id}`)
|
|
213
242
|
const {stream: webStream} = await BunnyStorageSDK.file.download(
|
|
214
243
|
this.storageZone,
|
|
215
|
-
|
|
244
|
+
file_id
|
|
216
245
|
)
|
|
217
246
|
return webStreamToNodeStream(webStream)
|
|
218
247
|
} catch (error) {
|
|
219
|
-
log(`[BunnyStore] read error for path "${
|
|
248
|
+
log(`[BunnyStore] read error for path "${file_id}":`, error)
|
|
220
249
|
throw ERRORS.FILE_NOT_FOUND
|
|
221
250
|
}
|
|
222
251
|
}
|
|
@@ -255,10 +284,9 @@ export class BunnyStore extends DataStore {
|
|
|
255
284
|
|
|
256
285
|
// If there's existing data, download it first
|
|
257
286
|
if (upload.offset > 0) {
|
|
258
|
-
const existingFilePath = this.#normalizePath(id)
|
|
259
287
|
try {
|
|
260
|
-
log(`[${id}] downloading existing file from path: ${
|
|
261
|
-
const existingFile = await BunnyStorageSDK.file.get(this.storageZone,
|
|
288
|
+
log(`[${id}] downloading existing file from path: ${id}`)
|
|
289
|
+
const existingFile = await BunnyStorageSDK.file.get(this.storageZone, id)
|
|
262
290
|
const {stream: existingWebStream} = await existingFile.data()
|
|
263
291
|
const existingNodeStream = webStreamToNodeStream(existingWebStream)
|
|
264
292
|
|
|
@@ -266,7 +294,7 @@ export class BunnyStore extends DataStore {
|
|
|
266
294
|
chunks.push(chunk)
|
|
267
295
|
}
|
|
268
296
|
} catch (error) {
|
|
269
|
-
log(`[${id}] error downloading existing file from path "${
|
|
297
|
+
log(`[${id}] error downloading existing file from path "${id}":`, error)
|
|
270
298
|
// If file doesn't exist yet, that's okay for offset 0
|
|
271
299
|
if (upload.offset > 0) {
|
|
272
300
|
isResolved = true
|
|
@@ -311,10 +339,9 @@ export class BunnyStore extends DataStore {
|
|
|
311
339
|
uploadOptions.contentType = upload.metadata.contentType
|
|
312
340
|
}
|
|
313
341
|
|
|
314
|
-
const uploadFilePath = this.#normalizePath(id)
|
|
315
342
|
await BunnyStorageSDK.file.upload(
|
|
316
343
|
this.storageZone,
|
|
317
|
-
|
|
344
|
+
id,
|
|
318
345
|
nodeStreamToWebStream(combinedStream),
|
|
319
346
|
uploadOptions
|
|
320
347
|
)
|
|
@@ -370,8 +397,7 @@ export class BunnyStore extends DataStore {
|
|
|
370
397
|
|
|
371
398
|
// Get the actual file size from storage
|
|
372
399
|
try {
|
|
373
|
-
const
|
|
374
|
-
const fileInfo = await BunnyStorageSDK.file.get(this.storageZone, filePath)
|
|
400
|
+
const fileInfo = await BunnyStorageSDK.file.get(this.storageZone, id)
|
|
375
401
|
upload.offset = fileInfo.length
|
|
376
402
|
} catch (error) {
|
|
377
403
|
// If file doesn't exist yet, offset is 0
|