@transloadit/node 6.4.0 → 6.6.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 +30 -5
- package/dist/Transloadit.d.ts.map +1 -1
- package/dist/Transloadit.js +61 -5
- package/dist/Transloadit.js.map +1 -1
- package/dist/alphalib/renderSimpleValue.d.ts +14 -0
- package/dist/alphalib/renderSimpleValue.d.ts.map +1 -0
- package/dist/alphalib/renderSimpleValue.js +87 -0
- package/dist/alphalib/renderSimpleValue.js.map +1 -0
- package/dist/alphalib/truncateString.d.ts +5 -0
- package/dist/alphalib/truncateString.d.ts.map +1 -0
- package/dist/alphalib/truncateString.js +19 -0
- package/dist/alphalib/truncateString.js.map +1 -0
- package/dist/alphalib/types/builtinTemplates.d.ts +15 -3
- package/dist/alphalib/types/builtinTemplates.d.ts.map +1 -1
- package/dist/alphalib/types/builtinTemplates.js +23 -3
- package/dist/alphalib/types/builtinTemplates.js.map +1 -1
- package/dist/alphalib/types/robots/_instructions-primitives.d.ts +6 -0
- package/dist/alphalib/types/robots/_instructions-primitives.d.ts.map +1 -1
- package/dist/alphalib/types/robots/_instructions-primitives.js +29 -7
- package/dist/alphalib/types/robots/_instructions-primitives.js.map +1 -1
- package/dist/alphalib/types/robots/_video-generate.d.ts +34 -0
- package/dist/alphalib/types/robots/_video-generate.d.ts.map +1 -0
- package/dist/alphalib/types/robots/_video-generate.js +157 -0
- package/dist/alphalib/types/robots/_video-generate.js.map +1 -0
- package/dist/alphalib/types/robots/ai-chat.d.ts +2 -0
- package/dist/alphalib/types/robots/ai-chat.d.ts.map +1 -1
- package/dist/alphalib/types/robots/ai-chat.js +7 -5
- package/dist/alphalib/types/robots/ai-chat.js.map +1 -1
- package/dist/alphalib/types/robots/audio-concat.d.ts.map +1 -1
- package/dist/alphalib/types/robots/audio-concat.js +5 -5
- package/dist/alphalib/types/robots/audio-concat.js.map +1 -1
- package/dist/alphalib/types/robots/azure-import.d.ts.map +1 -1
- package/dist/alphalib/types/robots/azure-import.js +3 -3
- package/dist/alphalib/types/robots/azure-import.js.map +1 -1
- package/dist/alphalib/types/robots/document-convert.d.ts.map +1 -1
- package/dist/alphalib/types/robots/document-convert.js +7 -5
- package/dist/alphalib/types/robots/document-convert.js.map +1 -1
- package/dist/alphalib/types/robots/document-extract.d.ts +8 -8
- package/dist/alphalib/types/robots/document-extract.d.ts.map +1 -1
- package/dist/alphalib/types/robots/document-extract.js +18 -2
- package/dist/alphalib/types/robots/document-extract.js.map +1 -1
- package/dist/alphalib/types/robots/document-split.d.ts +12 -0
- package/dist/alphalib/types/robots/document-split.d.ts.map +1 -1
- package/dist/alphalib/types/robots/document-split.js +15 -2
- package/dist/alphalib/types/robots/document-split.js.map +1 -1
- package/dist/alphalib/types/robots/file-decompress.d.ts.map +1 -1
- package/dist/alphalib/types/robots/file-decompress.js +2 -0
- package/dist/alphalib/types/robots/file-decompress.js.map +1 -1
- package/dist/alphalib/types/robots/file-preview.d.ts +22 -0
- package/dist/alphalib/types/robots/file-preview.d.ts.map +1 -1
- package/dist/alphalib/types/robots/file-preview.js +43 -26
- package/dist/alphalib/types/robots/file-preview.js.map +1 -1
- package/dist/alphalib/types/robots/http-request.d.ts.map +1 -1
- package/dist/alphalib/types/robots/http-request.js +9 -14
- package/dist/alphalib/types/robots/http-request.js.map +1 -1
- package/dist/alphalib/types/robots/image-enhance.d.ts +8 -8
- package/dist/alphalib/types/robots/image-enhance.js +2 -2
- package/dist/alphalib/types/robots/image-resize.d.ts.map +1 -1
- package/dist/alphalib/types/robots/image-resize.js +3 -1
- package/dist/alphalib/types/robots/image-resize.js.map +1 -1
- package/dist/alphalib/types/robots/image-upscale.js +1 -1
- package/dist/alphalib/types/robots/image-upscale.js.map +1 -1
- package/dist/alphalib/types/robots/s3-import.d.ts.map +1 -1
- package/dist/alphalib/types/robots/s3-import.js +14 -15
- package/dist/alphalib/types/robots/s3-import.js.map +1 -1
- package/dist/alphalib/types/robots/supabase-store.d.ts +16 -6
- package/dist/alphalib/types/robots/supabase-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/supabase-store.js +23 -1
- package/dist/alphalib/types/robots/supabase-store.js.map +1 -1
- package/dist/alphalib/types/robots/tigris-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/tigris-store.js +3 -4
- package/dist/alphalib/types/robots/tigris-store.js.map +1 -1
- package/dist/alphalib/types/robots/transloadit-import.d.ts +2 -2
- package/dist/alphalib/types/robots/transloadit-import.d.ts.map +1 -1
- package/dist/alphalib/types/robots/transloadit-import.js +4 -1
- package/dist/alphalib/types/robots/transloadit-import.js.map +1 -1
- package/dist/alphalib/types/robots/transloadit-store.d.ts +2 -3
- package/dist/alphalib/types/robots/transloadit-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/transloadit-store.js +19 -0
- package/dist/alphalib/types/robots/transloadit-store.js.map +1 -1
- package/dist/alphalib/types/robots/video-adaptive.d.ts.map +1 -1
- package/dist/alphalib/types/robots/video-adaptive.js +12 -0
- package/dist/alphalib/types/robots/video-adaptive.js.map +1 -1
- package/dist/alphalib/types/robots/video-concat.d.ts.map +1 -1
- package/dist/alphalib/types/robots/video-concat.js +9 -9
- package/dist/alphalib/types/robots/video-concat.js.map +1 -1
- package/dist/alphalib/types/robots/video-thumbs.d.ts +8 -8
- package/dist/alphalib/types/robots/video-thumbs.js +8 -8
- package/dist/alphalib/types/robots/video-thumbs.js.map +1 -1
- package/dist/alphalib/types/robots/vimeo-store.js +1 -1
- package/dist/alphalib/types/template.d.ts +3 -3
- package/dist/alphalib/types/templateValues.d.ts +83 -0
- package/dist/alphalib/types/templateValues.d.ts.map +1 -0
- package/dist/alphalib/types/templateValues.js +117 -0
- package/dist/alphalib/types/templateValues.js.map +1 -0
- package/dist/cli/OutputCtl.d.ts +1 -0
- package/dist/cli/OutputCtl.d.ts.map +1 -1
- package/dist/cli/OutputCtl.js +1 -1
- package/dist/cli/OutputCtl.js.map +1 -1
- package/dist/cli/commands/BaseCommand.d.ts +3 -2
- package/dist/cli/commands/BaseCommand.d.ts.map +1 -1
- package/dist/cli/commands/BaseCommand.js +27 -3
- package/dist/cli/commands/BaseCommand.js.map +1 -1
- package/dist/cli/commands/assemblies.d.ts +21 -1
- package/dist/cli/commands/assemblies.d.ts.map +1 -1
- package/dist/cli/commands/assemblies.js +584 -91
- package/dist/cli/commands/assemblies.js.map +1 -1
- package/dist/cli/commands/templates.d.ts +1 -1
- package/dist/cli/commands/templates.d.ts.map +1 -1
- package/dist/cli/commands/templates.js +57 -67
- package/dist/cli/commands/templates.js.map +1 -1
- package/dist/cli/errors.d.ts +8 -0
- package/dist/cli/errors.d.ts.map +1 -0
- package/dist/cli/errors.js +28 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/helpers.d.ts.map +1 -1
- package/dist/cli/helpers.js +22 -0
- package/dist/cli/helpers.js.map +1 -1
- package/dist/cli/intentRuntime.d.ts +1 -0
- package/dist/cli/intentRuntime.d.ts.map +1 -1
- package/dist/cli/intentRuntime.js +9 -3
- package/dist/cli/intentRuntime.js.map +1 -1
- package/dist/cli/resultFiles.d.ts +1 -0
- package/dist/cli/resultFiles.d.ts.map +1 -1
- package/dist/cli/resultFiles.js.map +1 -1
- package/dist/cli/resultUrls.d.ts +2 -1
- package/dist/cli/resultUrls.d.ts.map +1 -1
- package/dist/cli/resultUrls.js +6 -3
- package/dist/cli/resultUrls.js.map +1 -1
- package/dist/cli/stepsInput.d.ts +1 -1
- package/dist/cli/stepsInput.d.ts.map +1 -1
- package/dist/cli/stepsInput.js +48 -6
- package/dist/cli/stepsInput.js.map +1 -1
- package/dist/cli/types.d.ts +66 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/types.js +29 -0
- package/dist/cli/types.js.map +1 -1
- package/dist/tus.d.ts +7 -2
- package/dist/tus.d.ts.map +1 -1
- package/dist/tus.js +58 -4
- package/dist/tus.js.map +1 -1
- package/package.json +1 -1
- package/src/Transloadit.ts +65 -4
- package/src/alphalib/renderSimpleValue.ts +120 -0
- package/src/alphalib/truncateString.ts +23 -0
- package/src/alphalib/types/builtinTemplates.ts +33 -3
- package/src/alphalib/types/robots/_instructions-primitives.ts +34 -7
- package/src/alphalib/types/robots/_video-generate.ts +211 -0
- package/src/alphalib/types/robots/ai-chat.ts +8 -5
- package/src/alphalib/types/robots/audio-concat.ts +5 -4
- package/src/alphalib/types/robots/azure-import.ts +3 -4
- package/src/alphalib/types/robots/document-convert.ts +8 -5
- package/src/alphalib/types/robots/document-extract.ts +18 -2
- package/src/alphalib/types/robots/document-split.ts +17 -2
- package/src/alphalib/types/robots/file-decompress.ts +2 -0
- package/src/alphalib/types/robots/file-preview.ts +44 -25
- package/src/alphalib/types/robots/http-request.ts +9 -13
- package/src/alphalib/types/robots/image-enhance.ts +2 -2
- package/src/alphalib/types/robots/image-resize.ts +3 -1
- package/src/alphalib/types/robots/image-upscale.ts +1 -1
- package/src/alphalib/types/robots/s3-import.ts +14 -15
- package/src/alphalib/types/robots/supabase-store.ts +23 -1
- package/src/alphalib/types/robots/tigris-store.ts +2 -3
- package/src/alphalib/types/robots/transloadit-import.ts +4 -1
- package/src/alphalib/types/robots/transloadit-store.ts +19 -0
- package/src/alphalib/types/robots/video-adaptive.ts +12 -0
- package/src/alphalib/types/robots/video-concat.ts +9 -8
- package/src/alphalib/types/robots/video-thumbs.ts +8 -8
- package/src/alphalib/types/robots/vimeo-store.ts +1 -1
- package/src/alphalib/types/templateValues.ts +157 -0
- package/src/cli/OutputCtl.ts +2 -1
- package/src/cli/commands/BaseCommand.ts +29 -7
- package/src/cli/commands/assemblies.ts +775 -118
- package/src/cli/commands/templates.ts +93 -98
- package/src/cli/errors.ts +34 -0
- package/src/cli/helpers.ts +21 -0
- package/src/cli/intentRuntime.ts +10 -3
- package/src/cli/resultFiles.ts +1 -0
- package/src/cli/resultUrls.ts +11 -3
- package/src/cli/stepsInput.ts +54 -6
- package/src/cli/types.ts +35 -0
- package/src/tus.ts +72 -5
package/src/tus.ts
CHANGED
|
@@ -1,16 +1,24 @@
|
|
|
1
1
|
import type { Readable } from 'node:stream'
|
|
2
2
|
|
|
3
|
-
import type {
|
|
3
|
+
import type {
|
|
4
|
+
FileSource,
|
|
5
|
+
HttpRequest,
|
|
6
|
+
HttpResponse,
|
|
7
|
+
OnSuccessPayload,
|
|
8
|
+
SliceResult,
|
|
9
|
+
UploadOptions,
|
|
10
|
+
} from 'tus-js-client'
|
|
4
11
|
|
|
5
12
|
import type { AssemblyStatus } from './alphalib/types/assemblyStatus.ts'
|
|
6
13
|
import type { UploadProgress } from './Transloadit.ts'
|
|
7
14
|
|
|
15
|
+
import { ReadStream } from 'node:fs'
|
|
8
16
|
import { stat } from 'node:fs/promises'
|
|
9
17
|
import { basename } from 'node:path'
|
|
10
18
|
|
|
11
19
|
import debug from 'debug'
|
|
12
20
|
import pMap from 'p-map'
|
|
13
|
-
import { Upload } from 'tus-js-client'
|
|
21
|
+
import { defaultOptions, Upload } from 'tus-js-client'
|
|
14
22
|
|
|
15
23
|
const log = debug('transloadit')
|
|
16
24
|
const logWarn = debug('transloadit:warn')
|
|
@@ -31,6 +39,13 @@ interface SendTusRequestOptions {
|
|
|
31
39
|
signal?: AbortSignal
|
|
32
40
|
uploadUrls?: Record<string, string>
|
|
33
41
|
uploadBehavior?: UploadBehavior
|
|
42
|
+
onFileStreamOpened?: (stream: ReadStream) => void
|
|
43
|
+
onFileSliceStarted?: (slice: Promise<unknown>) => void
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
interface SendTusRequestResult {
|
|
47
|
+
uploadUrls: Record<string, string>
|
|
48
|
+
uploadsComplete?: Promise<unknown>
|
|
34
49
|
}
|
|
35
50
|
|
|
36
51
|
export async function sendTusRequest({
|
|
@@ -42,7 +57,9 @@ export async function sendTusRequest({
|
|
|
42
57
|
signal,
|
|
43
58
|
uploadUrls,
|
|
44
59
|
uploadBehavior = 'await',
|
|
45
|
-
|
|
60
|
+
onFileStreamOpened,
|
|
61
|
+
onFileSliceStarted,
|
|
62
|
+
}: SendTusRequestOptions): Promise<SendTusRequestResult> {
|
|
46
63
|
const streamLabels = Object.keys(streamsMap)
|
|
47
64
|
|
|
48
65
|
let totalBytes = 0
|
|
@@ -203,6 +220,25 @@ export async function sendTusRequest({
|
|
|
203
220
|
fieldname: label,
|
|
204
221
|
filename,
|
|
205
222
|
},
|
|
223
|
+
httpStack: {
|
|
224
|
+
createRequest(method: string, url: string): HttpRequest {
|
|
225
|
+
const request = defaultOptions.httpStack.createRequest(method, url)
|
|
226
|
+
const send = request.send.bind(request)
|
|
227
|
+
request.send = (body: unknown): Promise<HttpResponse> => {
|
|
228
|
+
// tus awaits pre-request hooks, so queued aborts must be checked at send itself.
|
|
229
|
+
if (signal?.aborted) {
|
|
230
|
+
// File setup can finish after abort() and reset tus's aborted state.
|
|
231
|
+
tusUpload.abort()
|
|
232
|
+
return Promise.reject(new Error('Upload aborted'))
|
|
233
|
+
}
|
|
234
|
+
return send(body)
|
|
235
|
+
}
|
|
236
|
+
return request
|
|
237
|
+
},
|
|
238
|
+
getName(): string {
|
|
239
|
+
return defaultOptions.httpStack.getName()
|
|
240
|
+
},
|
|
241
|
+
},
|
|
206
242
|
onError: reject,
|
|
207
243
|
onProgress: onTusProgress,
|
|
208
244
|
onSuccess: resolve,
|
|
@@ -218,6 +254,36 @@ export async function sendTusRequest({
|
|
|
218
254
|
}
|
|
219
255
|
},
|
|
220
256
|
}
|
|
257
|
+
if (onFileStreamOpened) {
|
|
258
|
+
// tus opens a separate ReadStream for each chunk; abort() leaves those streams open.
|
|
259
|
+
// Track those chunks even when the original file stream belongs to the caller.
|
|
260
|
+
tusOptions.fileReader = {
|
|
261
|
+
async openFile(input: unknown, chunkSize: number): Promise<FileSource> {
|
|
262
|
+
const source = await defaultOptions.fileReader.openFile(input, chunkSize)
|
|
263
|
+
return {
|
|
264
|
+
size: source.size,
|
|
265
|
+
async slice(start: number, end: number): Promise<SliceResult> {
|
|
266
|
+
if (signal?.aborted) throw new Error('Upload aborted')
|
|
267
|
+
const reading = source.slice(start, end).then((chunk) => {
|
|
268
|
+
// tus-js-client declares platform-specific chunk values as any.
|
|
269
|
+
const value: unknown = chunk.value
|
|
270
|
+
if (value instanceof ReadStream) onFileStreamOpened(value)
|
|
271
|
+
if (signal?.aborted) throw new Error('Upload aborted')
|
|
272
|
+
return chunk
|
|
273
|
+
})
|
|
274
|
+
// A file slice can open its stream before the promise resolves.
|
|
275
|
+
if (input instanceof ReadStream && input.path != null) {
|
|
276
|
+
onFileSliceStarted?.(reading)
|
|
277
|
+
}
|
|
278
|
+
return await reading
|
|
279
|
+
},
|
|
280
|
+
close() {
|
|
281
|
+
source.close()
|
|
282
|
+
},
|
|
283
|
+
}
|
|
284
|
+
},
|
|
285
|
+
}
|
|
286
|
+
}
|
|
221
287
|
// tus-js-client doesn't like undefined/null
|
|
222
288
|
if (size != null) tusOptions.uploadSize = size
|
|
223
289
|
if (chunkSize) tusOptions.chunkSize = chunkSize
|
|
@@ -255,13 +321,14 @@ export async function sendTusRequest({
|
|
|
255
321
|
|
|
256
322
|
await Promise.all(uploadUrlPromises)
|
|
257
323
|
|
|
324
|
+
const uploadsComplete = Promise.allSettled(completionPromises)
|
|
258
325
|
if (uploadBehavior === 'await') {
|
|
259
326
|
await Promise.all(completionPromises)
|
|
260
327
|
} else {
|
|
261
|
-
|
|
328
|
+
uploadsComplete.catch((err) => {
|
|
262
329
|
logWarn('Background upload failed', err)
|
|
263
330
|
})
|
|
264
331
|
}
|
|
265
332
|
|
|
266
|
-
return { uploadUrls: uploadUrlsResult }
|
|
333
|
+
return { uploadUrls: uploadUrlsResult, uploadsComplete }
|
|
267
334
|
}
|