@giveitsmaller/sdk 0.6.0 → 0.8.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/dist/_audit.js +71 -0
- package/dist/builder.d.ts +406 -0
- package/dist/builder.js +706 -0
- package/dist/client.d.ts +10 -0
- package/dist/client.js +42 -6
- package/dist/credentials.d.ts +61 -0
- package/dist/credentials.js +200 -0
- package/dist/ergonomic/preset_resolver.d.ts +75 -0
- package/dist/ergonomic/preset_resolver.js +568 -0
- package/dist/ergonomic/presets/_translate.d.ts +11 -0
- package/dist/ergonomic/presets/_translate.js +35 -0
- package/dist/ergonomic/presets/audio_compress.d.ts +16 -0
- package/dist/ergonomic/presets/audio_compress.js +45 -0
- package/dist/ergonomic/presets/document_epub_compress.d.ts +14 -0
- package/dist/ergonomic/presets/document_epub_compress.js +34 -0
- package/dist/ergonomic/presets/document_odf_compress.d.ts +14 -0
- package/dist/ergonomic/presets/document_odf_compress.js +34 -0
- package/dist/ergonomic/presets/document_office_compress.d.ts +16 -0
- package/dist/ergonomic/presets/document_office_compress.js +40 -0
- package/dist/ergonomic/presets/document_pdf_compress.d.ts +14 -0
- package/dist/ergonomic/presets/document_pdf_compress.js +35 -0
- package/dist/ergonomic/presets/image_compress.d.ts +43 -0
- package/dist/ergonomic/presets/image_compress.js +95 -0
- package/dist/ergonomic/presets/index.d.ts +77 -0
- package/dist/ergonomic/presets/index.js +216 -0
- package/dist/ergonomic/presets/video_compress.d.ts +30 -0
- package/dist/ergonomic/presets/video_compress.js +83 -0
- package/dist/errors.d.ts +196 -1
- package/dist/errors.js +216 -0
- package/dist/file-first.d.ts +284 -0
- package/dist/file-first.js +445 -0
- package/dist/generated/sdk_spec/enums.d.ts +195 -0
- package/dist/generated/sdk_spec/enums.js +127 -0
- package/dist/generated/sdk_spec/errors.d.ts +16 -0
- package/dist/generated/sdk_spec/errors.js +523 -0
- package/dist/generated/sdk_spec/index.d.ts +4 -0
- package/dist/generated/sdk_spec/index.js +7 -0
- package/dist/generated/sdk_spec/presets.d.ts +6 -0
- package/dist/generated/sdk_spec/presets.js +157 -0
- package/dist/generated/sdk_spec/version.d.ts +3 -0
- package/dist/generated/sdk_spec/version.js +6 -0
- package/dist/gisl.d.ts +122 -0
- package/dist/gisl.js +283 -0
- package/dist/http-downloader.d.ts +9 -0
- package/dist/http-downloader.js +55 -0
- package/dist/index.d.ts +20 -5
- package/dist/index.js +45 -4
- package/dist/merge.d.ts +142 -0
- package/dist/merge.js +411 -0
- package/dist/types.d.ts +12 -14
- package/dist/types.js +18 -0
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -3,15 +3,30 @@ export { verifyWebhook } from './webhook.js';
|
|
|
3
3
|
export { parseSseStream } from './sse.js';
|
|
4
4
|
export type { CreditsUsageOptions, GetSchemaOptions, GetSchemaResult, PreflightClipError, PreflightClipsResult, GislClientConfig, GislSseEvent, UploadOptions, WaitOptions, WorkflowCreatePayload, OperationDef, WorkflowSourcePayload, UploadSourcePayload, JobOutputSourcePayload, ExternalImportSourcePayload, ConnectionSourcePayload, JobInputV2Payload, JobDefinitionPayload, ExternalDestinationPayload, DeliveryPayload, DeliveryModePayload, DeliveryBundleFormatPayload, DeliverySelectionPayload, DeliverySelectionTypePayload, DeliveryOutputRefPayload, WorkflowProcessingPayload, ProcessingClassHintPayload, MultipartCheckpointState, _Sdk3HandCodedUploadedPart, _Sdk3HandCodedMultipartStatusResult, _Sdk3HandCodedPresignedPart, _Sdk3HandCodedPresignPartsResult, _Sdk3HandCodedKeepaliveResult, } from './types.js';
|
|
5
5
|
export { uploadSource, jobOutputSource, externalImportSource, connectionSource, } from './types.js';
|
|
6
|
-
export {
|
|
6
|
+
export type { GislConfigErrorMetadata } from './errors.js';
|
|
7
|
+
export { GislError, GislApiError, GislValidationError, GislBalanceExhaustedError, GislTierRestrictedError, GislFeatureTierRestrictedError, GislFeatureNotAvailableError, GislWorkflowExpiredError, GislProbePendingError, GislAuthError, GislUploadCapExceededError, GislMultipartPartError, GislMultipartPartCountError, GislMultipartSessionNotFoundError, GislMultipartSessionOwnershipError, GislMultipartSessionAuthRequiredError, GislTimeoutError, GislAbortError, GislNetworkError, GislConfigError, GislMissingCredentialsError, GislFeatureRequiresAuthError, GislUndeclaredAssetError, GislUnusedAssetError, GislPerInputOptionsNotSupportedError, GislChainCardinalityMismatchError, GislNoSuchKeyError, GislSinkError, } from './errors.js';
|
|
7
8
|
export type { GislApiErrorOptions, GislUploadCapKind } from './errors.js';
|
|
8
|
-
export
|
|
9
|
+
export { RunResult } from './file-first.js';
|
|
10
|
+
export type { OutputFile, ItemResult, ItemFailure, Manifest, Downloader, } from './file-first.js';
|
|
11
|
+
export { Recipe, fileInput } from './file-first.js';
|
|
12
|
+
export type { FileInput } from './file-first.js';
|
|
13
|
+
export { HttpDownloader } from './http-downloader.js';
|
|
14
|
+
export { gisl, create } from './gisl.js';
|
|
15
|
+
export type { GislCreateOptions, Environment, ErgonomicClient } from './gisl.js';
|
|
16
|
+
export { presetDefaults, PresetDefaults, type PresetMedia, type PresetOp, type AnyPresetOptions, ImageCompressPresetOptions, type ImageCompressPresetOptionsInput, AudioCompressPresetOptions, type AudioCompressPresetOptionsInput, VideoCompressPresetOptions, type VideoCompressPresetOptionsInput, DocumentPdfCompressPresetOptions, type DocumentPdfCompressPresetOptionsInput, DocumentOfficeCompressPresetOptions, type DocumentOfficeCompressPresetOptionsInput, DocumentOdfCompressPresetOptions, type DocumentOdfCompressPresetOptionsInput, DocumentEpubCompressPresetOptions, type DocumentEpubCompressPresetOptionsInput, OptimizeFor, ImageMode, ImageFit, ImageMetadataPolicy, IccProfilePolicy, ImageFormat, VideoCodec, VideoPreset, VideoFit, AudioBitrate, AudioCodec, AudioSampleRate, PdfProfile, PdfColorspace, } from './ergonomic/presets/index.js';
|
|
17
|
+
export { OperationBuilder, MapEachBuilder } from './builder.js';
|
|
18
|
+
export { MergeBuilder, asset, handle, clip } from './merge.js';
|
|
19
|
+
export type { Asset, ClipEntry, ClipOptions, MergeMediaKind, MergeOptions, SequenceEntry, } from './merge.js';
|
|
20
|
+
export type { Artifact, ArtifactRef, Handle, JobBreakdown, OperationBreakdown, ProcessingProgressEvent, ProgressEvent, ResolvedOptions, ResolvedOptionsSources, Result, RunOptions, SubmitOptions, UploadProgressEvent, } from './builder.js';
|
|
21
|
+
export { PRESET_VERSION, resolveCompressOptions } from './ergonomic/preset_resolver.js';
|
|
22
|
+
export type { ResolveCompressOptionsInput, ResolveCompressOptionsOutput, } from './ergonomic/preset_resolver.js';
|
|
23
|
+
export type { AudioWatermarkDecodeRequest, AudioWatermarkDecodeResponse, ContactRequest, CreditsBalanceResponse, CreditsUsageResponse, CreditTransaction, ExternalImportCreatedResponse, ExternalImportRequest, LoginUserRequest, LoginUser200ResponseData, LoginUser200ResponseDataUser, WorkflowCancelResponse, WorkflowResumeResponse, WorkflowPausedDetail, WorkflowPausedDetailLinks, UploadResponse, UploadConstraintsApplied, UploadProbeResponse, UploadProbeMediaMetadata, MultipartInitiateRequestMetadataHint, WorkflowCreateResponse, WorkflowStatusResponse, WorkflowDownloadResponse, MetadataResponse, MetadataResponseDimensions, MetadataResponseExif, MetadataResponseExifGps, OperationsSchemaResponse, OperationSchemaDefinition, MimeGroupSchema, OptionSchema, PerValueAvailabilityEntry, PerRoleCardinalityEntry, RetryResponse, JobDownload, OperationDownload, WebhookPayload, WebhookOperationContext, JobResponse, OperationResponse, OperationResult, OperationResultMetrics, ExternalDestination, Delivery, DeliveryPlan, DeliveryPlanOutput, WorkflowProcessing, ProcessingPlan, ProcessingPlanJob, WorkflowEdge, WorkflowWarning, JobInputV2, WorkflowSource, UploadSource, JobOutputSource, ConnectionSource, ExternalImportToken, BalanceExhaustedResponse, BalanceExhaustedResponseAllOfLinks, TierRestrictionResponse, FeatureTierRestrictedResponse, FeatureNotAvailableResponse, FeatureViolation, WorkflowExpiredResponse, ProbePendingResponse, AuthErrorResponse, } from '@giveitsmaller/contracts/openapi';
|
|
9
24
|
export { AudioWatermarkDecodeRequestMethodHintEnum, AudioWatermarkDecodeResponseMethodEnum, OperationInputModel, ExternalImportRequestProviderHintEnum, ContactSubject, CreditTransactionSourceBucket, UploadProbeStatus, UploadProbeProcessingClass, WorkflowCancelBillingEffect, WorkflowPauseRequiredAction, WorkflowStatus, WarningType, WorkflowWarningSeverity, OperationType, SseEventType, CallbackEventType, OperationStatus, JobStatus, JobInputV2RoleEnum, AuthErrorType, TierRestrictionKind, BalanceExhaustedResponseRequiredActionEnum, ProcessingClassReason, DeliveryPlanReason, UserTier, ProcessingClass, } from '@giveitsmaller/contracts/openapi';
|
|
10
25
|
export type { SseOperationProgressData, SseOperationCompletedData, SseOperationFailedData, SseJobCompletedData, SseJobFailedData, SseWorkflowTerminalData, } from '@giveitsmaller/contracts/openapi';
|
|
11
26
|
export type { MultiOutputCompletion, PageIndexed, PositionIndexed, Unindexed, } from '@giveitsmaller/contracts/asyncapi';
|
|
12
27
|
import type { MultiOutputCompletion as _MultiOutputCompletion } from '@giveitsmaller/contracts/asyncapi';
|
|
13
28
|
export type OperationResultOutputEntry = _MultiOutputCompletion['outputs'][number];
|
|
14
|
-
export type { CompressImageOptions, CompressVideoOptions, CompressAudioOptions, CompressDocumentPdfOptions, CompressDocumentOfficeOptions, CompressDocumentOdfOptions, CompressDocumentEpubOptions, ThumbnailImageOptions, ThumbnailVideoOptions, ThumbnailDocumentOptions, ConvertImageOptions, ConvertVideoOptions, ConvertAudioOptions, ConvertDocumentPdfOptions, MergeImageOptions, MergeVideoOptions, MergeVideoPerInputOptions, MergeAudioOptions, MergeAudioPerInputOptions, ArchiveOptions, ImageWatermarkImageOptions, ImageWatermarkImageGifOptions,
|
|
15
|
-
export { ImageWatermarkImageAnchor, ImageWatermarkImageGifAnchor,
|
|
16
|
-
export { archiveMetadata, audioOverlayMetadata, audioWatermarkMetadata, compressMetadata, convertMetadata, customLumaMetadata, imageWatermarkMetadata, mergeMetadata, textWatermarkMetadata, thumbnailMetadata, } from '@giveitsmaller/contracts/operations';
|
|
29
|
+
export type { CompressImageOptions, CompressVideoOptions, CompressAudioOptions, CompressDocumentPdfOptions, CompressDocumentOfficeOptions, CompressDocumentOdfOptions, CompressDocumentEpubOptions, ThumbnailImageOptions, ThumbnailVideoOptions, ThumbnailDocumentOptions, ConvertImageOptions, ConvertVideoOptions, ConvertAudioOptions, ConvertDocumentPdfOptions, MergeImageOptions, MergeVideoOptions, MergeVideoPerInputOptions, MergeAudioOptions, MergeAudioPerInputOptions, ArchiveOptions, ImageWatermarkImageOptions, ImageWatermarkImageGifOptions, TextWatermarkImageOptions, CustomLumaVideoOptions, AudioOverlayAudioOptions, AudioOverlayVideoOptions, AudioWatermarkAudioOptions, AudioWatermarkVideoOptions, AudioToVideoAudioOptions, VideoWatermarkVideoOptions, VideoTextWatermarkVideoOptions, SplitImageGifOptions, SplitDocumentPdfOptions, SplitAudioOptions, SplitVideoOptions, } from '@giveitsmaller/contracts/operations';
|
|
30
|
+
export { ImageWatermarkImageAnchor, ImageWatermarkImageGifAnchor, TextWatermarkImageAnchor, TextWatermarkImageFontFamily, TextWatermarkImageWatermarkMode, AudioOverlayAudioMode, AudioOverlayVideoMode, AudioOverlayVideoNoAudioTrackBehaviour, AudioWatermarkAudioMethod, AudioWatermarkAudioRobustness, AudioWatermarkAudioDensity, AudioWatermarkVideoMethod, AudioWatermarkVideoRobustness, AudioWatermarkVideoDensity, AudioToVideoAudioOutputResolution, AudioToVideoAudioImageFit, AudioToVideoAudioOutputFormat, VideoWatermarkVideoAnchor, VideoTextWatermarkVideoFontFamily, VideoTextWatermarkVideoWatermarkMode, VideoTextWatermarkVideoAnchor, SplitImageGifOutputFormat, SplitDocumentPdfMode, SplitAudioMode, SplitAudioPrecision, SplitVideoMode, SplitVideoPrecision, } from '@giveitsmaller/contracts/operations';
|
|
31
|
+
export { archiveMetadata, audioOverlayMetadata, audioWatermarkMetadata, compressMetadata, convertMetadata, customLumaMetadata, imageWatermarkMetadata, mergeMetadata, textWatermarkMetadata, thumbnailMetadata, audioToVideoMetadata, videoWatermarkMetadata, videoTextWatermarkMetadata, splitMetadata, } from '@giveitsmaller/contracts/operations';
|
|
17
32
|
export type { OperationMetadata, AvailabilityValue, AvailabilityEntry, FeatureEntry, MimeGroupMetadata, OptionMetadata, ProcessingClassConstraints, } from '@giveitsmaller/contracts/operations';
|
package/dist/index.js
CHANGED
|
@@ -4,9 +4,46 @@ export { verifyWebhook } from './webhook.js';
|
|
|
4
4
|
export { parseSseStream } from './sse.js';
|
|
5
5
|
export { uploadSource, jobOutputSource, externalImportSource, connectionSource, } from './types.js';
|
|
6
6
|
// Errors
|
|
7
|
-
export { GislError, GislApiError, GislValidationError, GislBalanceExhaustedError, GislTierRestrictedError, GislFeatureTierRestrictedError, GislFeatureNotAvailableError, GislWorkflowExpiredError, GislAuthError, GislUploadCapExceededError, GislMultipartPartError, GislMultipartPartCountError,
|
|
7
|
+
export { GislError, GislApiError, GislValidationError, GislBalanceExhaustedError, GislTierRestrictedError, GislFeatureTierRestrictedError, GislFeatureNotAvailableError, GislWorkflowExpiredError, GislProbePendingError, GislAuthError, GislUploadCapExceededError, GislMultipartPartError, GislMultipartPartCountError,
|
|
8
8
|
// SDK-3 (Wb6ebOMM) — typed errors for the 3 resume-support endpoints.
|
|
9
|
-
GislMultipartSessionNotFoundError, GislMultipartSessionOwnershipError, GislMultipartSessionAuthRequiredError, GislTimeoutError, GislAbortError,
|
|
9
|
+
GislMultipartSessionNotFoundError, GislMultipartSessionOwnershipError, GislMultipartSessionAuthRequiredError, GislTimeoutError, GislAbortError,
|
|
10
|
+
// FF2b / tywwynmN — transport-level failure (mirrors PHP GislNetworkError);
|
|
11
|
+
// raised by the file-first HttpDownloader when an output URL cannot be read.
|
|
12
|
+
GislNetworkError,
|
|
13
|
+
// T1 / wVU4xHx3 — local config-error tree (pre-I/O; sibling of GislApiError).
|
|
14
|
+
GislConfigError, GislMissingCredentialsError, GislFeatureRequiresAuthError,
|
|
15
|
+
// T3 / cuecCmb5 — merge-compose local validation errors.
|
|
16
|
+
GislUndeclaredAssetError, GislUnusedAssetError, GislPerInputOptionsNotSupportedError,
|
|
17
|
+
// T6 / aDR1jnyZ — chain-cardinality validation (dormant until chain
|
|
18
|
+
// methods on OperationBuilder ship; type + audit registration land
|
|
19
|
+
// here so the future chain-method PR is a pure addition).
|
|
20
|
+
GislChainCardinalityMismatchError,
|
|
21
|
+
// FF1 / 3BIxEnfR — file-first result sink errors.
|
|
22
|
+
GislNoSuchKeyError, GislSinkError, } from './errors.js';
|
|
23
|
+
// File-first result surface (FF1 / 3BIxEnfR) — coexists with the
|
|
24
|
+
// operation-first `Result`/`Artifact` until FF6 removes the old layer.
|
|
25
|
+
export { RunResult } from './file-first.js';
|
|
26
|
+
// File-first builder (FF2a / MfV0PDok) — `client.file(path).op()...` lowering.
|
|
27
|
+
export { Recipe, fileInput } from './file-first.js';
|
|
28
|
+
// File-first execution (FF2b / MfV0PDok) — Node streaming downloader bound by
|
|
29
|
+
// `Recipe.run()` to write pre-signed output URLs to disk.
|
|
30
|
+
export { HttpDownloader } from './http-downloader.js';
|
|
31
|
+
// Ergonomic-layer entrypoint (T1 / wVU4xHx3) — `gisl.create()` factory +
|
|
32
|
+
// credential-chain types. `gisl.anonymous()` (public export) lands once
|
|
33
|
+
// the anonymous-capable operation allowlist is non-empty (plan §12).
|
|
34
|
+
export { gisl, create } from './gisl.js';
|
|
35
|
+
// Ergonomic preset defaults (T4a / VhIj4S7T) — typed leaf DTOs + immutable
|
|
36
|
+
// `PresetDefaults` builder + `presetDefaults()` factory + ergonomic enum
|
|
37
|
+
// re-exports. Resolver wiring (T4b) consumes `PresetDefaults.cellFor()`.
|
|
38
|
+
export { presetDefaults, PresetDefaults, ImageCompressPresetOptions, AudioCompressPresetOptions, VideoCompressPresetOptions, DocumentPdfCompressPresetOptions, DocumentOfficeCompressPresetOptions, DocumentOdfCompressPresetOptions, DocumentEpubCompressPresetOptions, OptimizeFor, ImageMode, ImageFit, ImageMetadataPolicy, IccProfilePolicy, ImageFormat, VideoCodec, VideoPreset, VideoFit, AudioBitrate, AudioCodec, AudioSampleRate, PdfProfile, PdfColorspace, } from './ergonomic/presets/index.js';
|
|
39
|
+
// Operation-builder surface (T2 / xVDTIm8C) — `client.compress/convert/thumbnail`
|
|
40
|
+
// returns an `OperationBuilder`; `.run()` projects to a flat `Result` /
|
|
41
|
+
// `.submit({webhook})` returns a `Handle`. Progress events are the
|
|
42
|
+
// SDK-synthesised `{phase:'upload'|'processing', ...}` discriminated union.
|
|
43
|
+
export { OperationBuilder, MapEachBuilder } from './builder.js';
|
|
44
|
+
export { MergeBuilder, asset, handle, clip } from './merge.js';
|
|
45
|
+
// T4b — preset resolver public surface (PRESET_VERSION constant + types).
|
|
46
|
+
export { PRESET_VERSION, resolveCompressOptions } from './ergonomic/preset_resolver.js';
|
|
10
47
|
export { AudioWatermarkDecodeRequestMethodHintEnum, AudioWatermarkDecodeResponseMethodEnum,
|
|
11
48
|
// OperationInputModel — value-bearing enum (`single` | `multi`).
|
|
12
49
|
// Surfaced on OperationSchemaDefinition.inputModel so form-renderers
|
|
@@ -25,10 +62,14 @@ AuthErrorType, TierRestrictionKind, BalanceExhaustedResponseRequiredActionEnum,
|
|
|
25
62
|
// aliases (no runtime value); the openapi versions carry both the
|
|
26
63
|
// string-union type and a const map. Per audit follow-up.
|
|
27
64
|
UserTier, ProcessingClass, } from '@giveitsmaller/contracts/openapi';
|
|
28
|
-
export { ImageWatermarkImageAnchor, ImageWatermarkImageGifAnchor,
|
|
65
|
+
export { ImageWatermarkImageAnchor, ImageWatermarkImageGifAnchor, TextWatermarkImageAnchor, TextWatermarkImageFontFamily, TextWatermarkImageWatermarkMode, AudioOverlayAudioMode, AudioOverlayVideoMode, AudioOverlayVideoNoAudioTrackBehaviour, AudioWatermarkAudioMethod, AudioWatermarkAudioRobustness, AudioWatermarkAudioDensity, AudioWatermarkVideoMethod, AudioWatermarkVideoRobustness, AudioWatermarkVideoDensity,
|
|
66
|
+
// New planned operation enums — contracts v2.15 (AJCLLGaG).
|
|
67
|
+
AudioToVideoAudioOutputResolution, AudioToVideoAudioImageFit, AudioToVideoAudioOutputFormat, VideoWatermarkVideoAnchor, VideoTextWatermarkVideoFontFamily, VideoTextWatermarkVideoWatermarkMode, VideoTextWatermarkVideoAnchor, SplitImageGifOutputFormat, SplitDocumentPdfMode, SplitAudioMode, SplitAudioPrecision, SplitVideoMode, SplitVideoPrecision, } from '@giveitsmaller/contracts/operations';
|
|
29
68
|
// Per-operation metadata sidecars. Inspect `availability`,
|
|
30
69
|
// `required_tier`, per-value gating, mime-group availability and
|
|
31
70
|
// per-feature flags before submitting a workflow — the API will
|
|
32
71
|
// otherwise reject planned ops with `feature_not_available` (422,
|
|
33
72
|
// surfaces as `GislFeatureNotAvailableError`).
|
|
34
|
-
export { archiveMetadata, audioOverlayMetadata, audioWatermarkMetadata, compressMetadata, convertMetadata, customLumaMetadata, imageWatermarkMetadata, mergeMetadata, textWatermarkMetadata, thumbnailMetadata,
|
|
73
|
+
export { archiveMetadata, audioOverlayMetadata, audioWatermarkMetadata, compressMetadata, convertMetadata, customLumaMetadata, imageWatermarkMetadata, mergeMetadata, textWatermarkMetadata, thumbnailMetadata,
|
|
74
|
+
// New planned operation metadata sidecars — contracts v2.15 (AJCLLGaG).
|
|
75
|
+
audioToVideoMetadata, videoWatermarkMetadata, videoTextWatermarkMetadata, splitMetadata, } from '@giveitsmaller/contracts/operations';
|
package/dist/merge.d.ts
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merge-compose layer for the SDK ergonomic surface (T3 / cuecCmb5).
|
|
3
|
+
*
|
|
4
|
+
* `client.merge(...assets, options?)` returns a `MergeBuilder`. The builder
|
|
5
|
+
* separates WHAT (the asset set) from ORDER (the timeline):
|
|
6
|
+
*
|
|
7
|
+
* - `merge(a, b, c)` declares the asset set — each unique input is uploaded
|
|
8
|
+
* ONCE per run, even if referenced multiple times in the sequence.
|
|
9
|
+
* - `.sequence(...refs)` defines the play order. References may repeat
|
|
10
|
+
* freely; entries may be bare asset refs or `clip(ref, opts)` objects
|
|
11
|
+
* carrying per-position options.
|
|
12
|
+
* - No `.sequence(...)` => play in declared order, no transitions.
|
|
13
|
+
*
|
|
14
|
+
* Wire-truth boundaries (lowering.md §sequences):
|
|
15
|
+
* - Video merge per-input options: `transition`, `crossfadeDuration` only.
|
|
16
|
+
* - Audio merge per-input options: `transition`, `crossfadeDuration`,
|
|
17
|
+
* `gapDuration` only.
|
|
18
|
+
* - Image merge has NO per-input options today — `clip(ref)` is reuse/order
|
|
19
|
+
* only. Per-position transitions on image merges throw locally as
|
|
20
|
+
* `GislPerInputOptionsNotSupportedError`.
|
|
21
|
+
* - No per-clip `trimStart`/`trimEnd` today (contracts ticket iZzn5QrS
|
|
22
|
+
* tracks the fix). Workaround: pre-trim each clip via a chained
|
|
23
|
+
* `compress(file, trimStart, trimEnd)`.
|
|
24
|
+
*
|
|
25
|
+
* Local validation runs BEFORE any upload — undeclared refs and unused
|
|
26
|
+
* assets both fail fast so the caller saves bandwidth on typo'd composes.
|
|
27
|
+
*/
|
|
28
|
+
import type { GislClient } from './client.js';
|
|
29
|
+
import { type Handle, type Result, type RunOptions, type SubmitOptions } from './builder.js';
|
|
30
|
+
/**
|
|
31
|
+
* A declared merge asset. `path` carries a string or Blob (deduped by
|
|
32
|
+
* normalised source key); `handle` wraps an already-uploaded file (deduped
|
|
33
|
+
* by handle identity — same handle reference = same upload regardless of
|
|
34
|
+
* path). Use a handle for guaranteed reuse.
|
|
35
|
+
*/
|
|
36
|
+
export type Asset = {
|
|
37
|
+
readonly type: 'path';
|
|
38
|
+
readonly path: string | Blob;
|
|
39
|
+
} | {
|
|
40
|
+
readonly type: 'handle';
|
|
41
|
+
readonly fileId: string;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Construct a path-asset. Bare-string arguments to `merge(...)` are
|
|
45
|
+
* implicitly wrapped via this helper.
|
|
46
|
+
*/
|
|
47
|
+
export declare function asset(path: string | Blob): Asset;
|
|
48
|
+
/**
|
|
49
|
+
* Wrap an already-uploaded file_id as a merge asset. Use this when the
|
|
50
|
+
* SAME logical file should be referenced from multiple merge runs with
|
|
51
|
+
* guaranteed-single-upload semantics.
|
|
52
|
+
*/
|
|
53
|
+
export declare function handle(fileId: string): Asset;
|
|
54
|
+
/**
|
|
55
|
+
* Per-position options carried by `clip(ref, opts)` entries. Image merges
|
|
56
|
+
* reject ANY per-input options today (see module docstring).
|
|
57
|
+
*/
|
|
58
|
+
export interface ClipOptions {
|
|
59
|
+
/** Transition to apply at this position (video/audio per-input only). */
|
|
60
|
+
readonly transition?: string;
|
|
61
|
+
/** Crossfade duration in seconds (when `transition` is crossfade). */
|
|
62
|
+
readonly crossfadeDuration?: number;
|
|
63
|
+
/** Gap duration in seconds (audio merge only). */
|
|
64
|
+
readonly gapDuration?: number;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* A sequence entry that carries per-position options. Use the `clip(...)`
|
|
68
|
+
* helper to construct.
|
|
69
|
+
*/
|
|
70
|
+
export interface ClipEntry {
|
|
71
|
+
readonly type: 'clip';
|
|
72
|
+
readonly asset: Asset;
|
|
73
|
+
readonly options: ClipOptions;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Construct a clip entry for `.sequence(...)`. The asset MUST already
|
|
77
|
+
* be in the merge's declared asset set.
|
|
78
|
+
*/
|
|
79
|
+
export declare function clip(ref: Asset, options?: ClipOptions): ClipEntry;
|
|
80
|
+
export type SequenceEntry = Asset | ClipEntry;
|
|
81
|
+
/**
|
|
82
|
+
* Inferred media kind. `merge` picks the wire variant from the inferred
|
|
83
|
+
* media; the SDK reads the FIRST asset's path/MIME to decide.
|
|
84
|
+
*/
|
|
85
|
+
export type MergeMediaKind = 'video' | 'audio' | 'image';
|
|
86
|
+
export interface MergeOptions {
|
|
87
|
+
/** Merge-level transition (applies to every join — image merge ONLY uses this). */
|
|
88
|
+
readonly transition?: string;
|
|
89
|
+
readonly crossfadeDuration?: number;
|
|
90
|
+
readonly gapDuration?: number;
|
|
91
|
+
readonly normalizeAudio?: boolean;
|
|
92
|
+
readonly codec?: string;
|
|
93
|
+
readonly crf?: number;
|
|
94
|
+
readonly preset?: string;
|
|
95
|
+
readonly targetSize?: string | number;
|
|
96
|
+
readonly transitionDuration?: number;
|
|
97
|
+
readonly fps?: number;
|
|
98
|
+
readonly durationPerImage?: number;
|
|
99
|
+
readonly loopCount?: number;
|
|
100
|
+
readonly output?: string;
|
|
101
|
+
readonly videoFormat?: string;
|
|
102
|
+
readonly outputType?: string;
|
|
103
|
+
/** Force the inferred media kind (skip the first-asset sniff). */
|
|
104
|
+
readonly mediaKind?: MergeMediaKind;
|
|
105
|
+
/** Bypass the unused-asset validation (rarely needed; usually a bug indicator). */
|
|
106
|
+
readonly allowUnusedAssets?: boolean;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Captures the (declared assets, options) for a merge. `.sequence(...)`
|
|
110
|
+
* pins the play order; without it, the declared order is used as-is
|
|
111
|
+
* with no per-input options.
|
|
112
|
+
*
|
|
113
|
+
* Local validation runs at `.run()`/`.submit()` time (BEFORE any upload)
|
|
114
|
+
* and throws one of `GislUndeclaredAssetError`, `GislUnusedAssetError`,
|
|
115
|
+
* or `GislPerInputOptionsNotSupportedError` if the compose is invalid.
|
|
116
|
+
*/
|
|
117
|
+
export declare class MergeBuilder {
|
|
118
|
+
private readonly client;
|
|
119
|
+
private readonly assets;
|
|
120
|
+
private readonly opOptions;
|
|
121
|
+
private sequenceEntries;
|
|
122
|
+
constructor(client: GislClient, assets: readonly Asset[], opOptions: MergeOptions);
|
|
123
|
+
/**
|
|
124
|
+
* Pin the merge play order. Each entry must reference an asset that
|
|
125
|
+
* was declared in the parent `merge(...)` call. Repeats are allowed
|
|
126
|
+
* and deduped on upload (one upload per unique declared asset).
|
|
127
|
+
*/
|
|
128
|
+
sequence(...entries: SequenceEntry[]): this;
|
|
129
|
+
run(options: RunOptions): Promise<Result>;
|
|
130
|
+
submit(options: SubmitOptions): Promise<Handle>;
|
|
131
|
+
/**
|
|
132
|
+
* Resolve the declared assets + sequence (or fall back to declared order),
|
|
133
|
+
* dedupe by identity, and run the local validators. The returned plan
|
|
134
|
+
* carries the SEQUENCE (positional entries) + the UNIQUE assets to upload.
|
|
135
|
+
*/
|
|
136
|
+
private planSequence;
|
|
137
|
+
private inferMediaKind;
|
|
138
|
+
private uploadUniqueAssets;
|
|
139
|
+
private buildPayload;
|
|
140
|
+
private opOptionsForResolved;
|
|
141
|
+
private awaitTerminal;
|
|
142
|
+
}
|