transloadit 4.11.1 → 4.13.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 +231 -23
- package/dist/Transloadit.d.ts +55 -1
- package/dist/Transloadit.d.ts.map +1 -1
- package/dist/Transloadit.js +143 -2
- package/dist/Transloadit.js.map +1 -1
- package/dist/alphalib/types/assemblyStatus.d.ts +574 -198
- package/dist/alphalib/types/assemblyStatus.d.ts.map +1 -1
- package/dist/alphalib/types/assemblyStatus.js +17 -0
- package/dist/alphalib/types/assemblyStatus.js.map +1 -1
- package/dist/alphalib/types/robots/_index.d.ts +205 -93
- package/dist/alphalib/types/robots/_index.d.ts.map +1 -1
- package/dist/alphalib/types/robots/_index.js +8 -0
- package/dist/alphalib/types/robots/_index.js.map +1 -1
- package/dist/alphalib/types/robots/_instructions-primitives.d.ts +4 -4
- package/dist/alphalib/types/robots/_instructions-primitives.d.ts.map +1 -1
- package/dist/alphalib/types/robots/_instructions-primitives.js +2 -0
- package/dist/alphalib/types/robots/_instructions-primitives.js.map +1 -1
- package/dist/alphalib/types/robots/ai-chat.d.ts +2 -1
- package/dist/alphalib/types/robots/ai-chat.d.ts.map +1 -1
- package/dist/alphalib/types/robots/ai-chat.js +6 -5
- package/dist/alphalib/types/robots/ai-chat.js.map +1 -1
- package/dist/alphalib/types/robots/file-serve.d.ts +12 -0
- package/dist/alphalib/types/robots/file-serve.d.ts.map +1 -1
- package/dist/alphalib/types/robots/file-serve.js +9 -3
- package/dist/alphalib/types/robots/file-serve.js.map +1 -1
- package/dist/alphalib/types/robots/transloadit-import.d.ts +195 -0
- package/dist/alphalib/types/robots/transloadit-import.d.ts.map +1 -0
- package/dist/alphalib/types/robots/transloadit-import.js +108 -0
- package/dist/alphalib/types/robots/transloadit-import.js.map +1 -0
- package/dist/alphalib/types/robots/transloadit-store.d.ts +441 -0
- package/dist/alphalib/types/robots/transloadit-store.d.ts.map +1 -0
- package/dist/alphalib/types/robots/transloadit-store.js +69 -0
- package/dist/alphalib/types/robots/transloadit-store.js.map +1 -0
- package/dist/alphalib/types/robots/video-ondemand.d.ts +8 -8
- package/dist/alphalib/types/storageAsset.d.ts +226 -0
- package/dist/alphalib/types/storageAsset.d.ts.map +1 -0
- package/dist/alphalib/types/storageAsset.js +67 -0
- package/dist/alphalib/types/storageAsset.js.map +1 -0
- package/dist/alphalib/types/template.d.ts.map +1 -1
- package/dist/alphalib/types/template.js +5 -2
- package/dist/alphalib/types/template.js.map +1 -1
- package/dist/alphalib/types/templateCredential.d.ts +2 -2
- package/dist/cli/commands/BaseCommand.d.ts +3 -1
- package/dist/cli/commands/BaseCommand.d.ts.map +1 -1
- package/dist/cli/commands/BaseCommand.js +3 -2
- package/dist/cli/commands/BaseCommand.js.map +1 -1
- package/dist/cli/commands/assemblies.d.ts.map +1 -1
- package/dist/cli/commands/assemblies.js +9 -4
- package/dist/cli/commands/assemblies.js.map +1 -1
- package/dist/cli/commands/auth.d.ts +6 -0
- package/dist/cli/commands/auth.d.ts.map +1 -1
- package/dist/cli/commands/auth.js +21 -2
- package/dist/cli/commands/auth.js.map +1 -1
- package/dist/cli/commands/image.d.ts +15 -0
- package/dist/cli/commands/image.d.ts.map +1 -0
- package/dist/cli/commands/image.js +234 -0
- package/dist/cli/commands/image.js.map +1 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +15 -1
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/login.d.ts +24 -0
- package/dist/cli/commands/login.d.ts.map +1 -0
- package/dist/cli/commands/login.js +275 -0
- package/dist/cli/commands/login.js.map +1 -0
- package/dist/cli/commands/storage.d.ts +58 -0
- package/dist/cli/commands/storage.d.ts.map +1 -0
- package/dist/cli/commands/storage.js +589 -0
- package/dist/cli/commands/storage.js.map +1 -0
- package/dist/cli/commands/templates.d.ts.map +1 -1
- package/dist/cli/commands/templates.js +10 -6
- package/dist/cli/commands/templates.js.map +1 -1
- package/dist/cli/deviceLogin.d.ts +11 -0
- package/dist/cli/deviceLogin.d.ts.map +1 -0
- package/dist/cli/deviceLogin.js +187 -0
- package/dist/cli/deviceLogin.js.map +1 -0
- package/dist/cli/helpers.d.ts +23 -1
- package/dist/cli/helpers.d.ts.map +1 -1
- package/dist/cli/helpers.js +159 -25
- package/dist/cli/helpers.js.map +1 -1
- package/dist/cli/secretInput.d.ts +3 -0
- package/dist/cli/secretInput.d.ts.map +1 -0
- package/dist/cli/secretInput.js +11 -0
- package/dist/cli/secretInput.js.map +1 -0
- package/dist/cli/storageCatalog.d.ts +19 -0
- package/dist/cli/storageCatalog.d.ts.map +1 -0
- package/dist/cli/storageCatalog.js +129 -0
- package/dist/cli/storageCatalog.js.map +1 -0
- package/dist/cli/storagePublic.d.ts +3 -0
- package/dist/cli/storagePublic.d.ts.map +1 -0
- package/dist/cli/storagePublic.js +15 -0
- package/dist/cli/storagePublic.js.map +1 -0
- package/dist/cli/storageReceipts.d.ts +67 -0
- package/dist/cli/storageReceipts.d.ts.map +1 -0
- package/dist/cli/storageReceipts.js +242 -0
- package/dist/cli/storageReceipts.js.map +1 -0
- package/dist/cli/storageSnippets.d.ts +11 -0
- package/dist/cli/storageSnippets.d.ts.map +1 -0
- package/dist/cli/storageSnippets.js +89 -0
- package/dist/cli/storageSnippets.js.map +1 -0
- package/dist/storageImage.d.ts +40 -0
- package/dist/storageImage.d.ts.map +1 -0
- package/dist/storageImage.js +181 -0
- package/dist/storageImage.js.map +1 -0
- package/dist/storagePublicPrefixes.d.ts +62 -0
- package/dist/storagePublicPrefixes.d.ts.map +1 -0
- package/dist/storagePublicPrefixes.js +35 -0
- package/dist/storagePublicPrefixes.js.map +1 -0
- package/dist/storageResults.d.ts +31 -0
- package/dist/storageResults.d.ts.map +1 -0
- package/dist/storageResults.js +79 -0
- package/dist/storageResults.js.map +1 -0
- package/package.json +8 -3
- package/src/Transloadit.ts +251 -4
- package/src/alphalib/types/assemblyStatus.ts +17 -0
- package/src/alphalib/types/robots/_index.ts +28 -0
- package/src/alphalib/types/robots/_instructions-primitives.ts +2 -0
- package/src/alphalib/types/robots/ai-chat.ts +6 -5
- package/src/alphalib/types/robots/file-serve.ts +11 -3
- package/src/alphalib/types/robots/transloadit-import.ts +154 -0
- package/src/alphalib/types/robots/transloadit-store.ts +98 -0
- package/src/alphalib/types/storageAsset.ts +88 -0
- package/src/alphalib/types/template.ts +3 -0
- package/src/cli/commands/BaseCommand.ts +4 -2
- package/src/cli/commands/assemblies.ts +13 -5
- package/src/cli/commands/auth.ts +26 -3
- package/src/cli/commands/image.ts +282 -0
- package/src/cli/commands/index.ts +27 -1
- package/src/cli/commands/login.ts +334 -0
- package/src/cli/commands/storage.ts +733 -0
- package/src/cli/commands/templates.ts +14 -7
- package/src/cli/deviceLogin.ts +226 -0
- package/src/cli/helpers.ts +204 -27
- package/src/cli/secretInput.ts +12 -0
- package/src/cli/storageCatalog.ts +192 -0
- package/src/cli/storagePublic.ts +15 -0
- package/src/cli/storageReceipts.ts +307 -0
- package/src/cli/storageSnippets.ts +96 -0
- package/src/storageImage.ts +266 -0
- package/src/storagePublicPrefixes.ts +39 -0
- package/src/storageResults.ts +119 -0
package/README.md
CHANGED
|
@@ -24,7 +24,7 @@ This is a **Node.js** SDK to make it easy to talk to the
|
|
|
24
24
|
|
|
25
25
|
## Requirements
|
|
26
26
|
|
|
27
|
-
- [Node.js](https://nodejs.org/en/) version 20 or newer
|
|
27
|
+
- [Node.js](https://nodejs.org/en/) version 20.10.0 or newer
|
|
28
28
|
- [A Transloadit account](https://transloadit.com/signup/) ([free signup](https://transloadit.com/pricing/))
|
|
29
29
|
- [Your API credentials](https://transloadit.com/c/template-credentials) (`authKey`, `authSecret`)
|
|
30
30
|
|
|
@@ -51,32 +51,31 @@ This package includes a full-featured CLI for interacting with Transloadit from
|
|
|
51
51
|
|
|
52
52
|
### Quick Start
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
Use shell env vars:
|
|
54
|
+
Log in through your browser, then run a command:
|
|
57
55
|
|
|
58
56
|
```bash
|
|
59
|
-
|
|
60
|
-
|
|
57
|
+
npx -y @transloadit/node auth login
|
|
58
|
+
npx -y @transloadit/node auth status
|
|
59
|
+
npx -y @transloadit/node --help
|
|
61
60
|
```
|
|
62
61
|
|
|
63
|
-
|
|
62
|
+
No account yet? Choose Sign up in the browser, create your workspace, then approve the code from
|
|
63
|
+
your terminal. Login saves a dedicated CLI key in the owner-only `~/.transloadit/credentials` file.
|
|
64
|
+
Use `auth login --no-browser` to open the printed link yourself; `auth login --stdin` imports dotenv
|
|
65
|
+
credentials without browser approval. Existing saved credentials require `--replace`.
|
|
64
66
|
|
|
65
|
-
|
|
66
|
-
mkdir -p ~/.transloadit
|
|
67
|
-
cat > ~/.transloadit/credentials <<'EOF'
|
|
68
|
-
TRANSLOADIT_KEY="YOUR_TRANSLOADIT_KEY"
|
|
69
|
-
TRANSLOADIT_SECRET="YOUR_TRANSLOADIT_SECRET"
|
|
70
|
-
EOF
|
|
71
|
-
chmod 600 ~/.transloadit/credentials
|
|
72
|
-
```
|
|
67
|
+
### CI and manual credentials
|
|
73
68
|
|
|
74
|
-
|
|
69
|
+
For automation, provide an appropriately scoped key through your CI secret manager:
|
|
75
70
|
|
|
76
71
|
```bash
|
|
77
|
-
|
|
72
|
+
export TRANSLOADIT_KEY="YOUR_TRANSLOADIT_KEY"
|
|
73
|
+
export TRANSLOADIT_SECRET="YOUR_TRANSLOADIT_SECRET"
|
|
78
74
|
```
|
|
79
75
|
|
|
76
|
+
For application servers, provision a separate deployment key rather than copying your CLI login.
|
|
77
|
+
`auth logout` revokes the saved CLI key; it should not interrupt a deployed application.
|
|
78
|
+
|
|
80
79
|
The CLI binary is still called `transloadit`, so command examples below may use
|
|
81
80
|
`npx transloadit ...`.
|
|
82
81
|
|
|
@@ -107,6 +106,72 @@ Most commands can authenticate with either `TRANSLOADIT_AUTH_TOKEN` or `TRANSLOA
|
|
|
107
106
|
`TRANSLOADIT_SECRET`. Commands that mint bearer tokens or generate signatures still require
|
|
108
107
|
`TRANSLOADIT_KEY` and `TRANSLOADIT_SECRET`.
|
|
109
108
|
|
|
109
|
+
### Storage images for Next.js
|
|
110
|
+
|
|
111
|
+
`@transloadit/viewer` is currently an unpublished, private preview. Follow the
|
|
112
|
+
[local package instructions](https://github.com/transloadit/node-sdk/blob/img-onboard/docs/img-dogfood.md)
|
|
113
|
+
until release. In a Next.js 16.3.3+ App Router project with Storage enabled, run:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
yarn transloadit auth login
|
|
117
|
+
yarn transloadit storage store ./hero.jpg website/hero.jpg --public --hashed
|
|
118
|
+
yarn dev
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Follow the image package Quickstart to add its Next plugin and import Image from the package.
|
|
122
|
+
`--hashed` creates an immutable filename; use the printed JSX path, including its content hash.
|
|
123
|
+
Start with `auth login` even without an account: choose Sign up in the browser it opens, then approve
|
|
124
|
+
the CLI. For application-server uploads instead of CLI seeding, see [Store an image](#store-an-image).
|
|
125
|
+
Login opens browser approval (on Windows, open the printed URL) and saves one combined Auth Key,
|
|
126
|
+
workspace and signing algorithm in the owner-only credentials file. `--no-browser` prints the
|
|
127
|
+
approval URL; `--stdin` accepts dotenv credentials for automation. Existing credentials require
|
|
128
|
+
`--replace`. Login also checks Storage policy access with a bounded read-only request; if that
|
|
129
|
+
fails, it saves the login and prints a Console link. This check does not prove upload availability.
|
|
130
|
+
|
|
131
|
+
Store creates `transloadit.images.json` and derived `transloadit-images.d.ts`; commit both. The
|
|
132
|
+
catalog carries workspace, public prefixes and image receipts: no public app env is needed.
|
|
133
|
+
`--public` declares the destination directory recursively, including future uploads, after saving
|
|
134
|
+
the receipt. Plain store never publishes. `image init website/ --example` is an optional example
|
|
135
|
+
generator; private init (`image init uploads/ --private`) creates `transloadit.authorize.ts` and a
|
|
136
|
+
route that denies access until you connect per-object authorization. Use a separate deployment key.
|
|
137
|
+
Existing code/env files are never overwritten. Missing trailing directory slashes are accepted.
|
|
138
|
+
|
|
139
|
+
Store uploads originals and appends validated receipts to `transloadit.images.json`; commit it.
|
|
140
|
+
`storage store ./images/*.jpg website/` stores shell-expanded files, checkpointing each success.
|
|
141
|
+
It prints `width={960}` (bounded by the original) and `placeholder="blur"`, with a filename-derived
|
|
142
|
+
alt and a reminder. Store generates an optional base64 `thumbhash` from the original bytes.
|
|
143
|
+
An occupied path conflicts unless `--overwrite` is explicit; prefer `--hashed` for immutable
|
|
144
|
+
filenames. Matching receipts skip repeat uploads; changed bytes get a new name.
|
|
145
|
+
Storage receipts pin the returned `asset_id` and `version_id`. The image URL selects that exact
|
|
146
|
+
retained version, including after rename or overwrite; `v` is a real version, not a cache-busting hash.
|
|
147
|
+
Publication can also be managed explicitly:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
yarn transloadit storage publish website/
|
|
151
|
+
yarn transloadit storage publications
|
|
152
|
+
yarn transloadit storage unpublish website/
|
|
153
|
+
yarn transloadit auth status
|
|
154
|
+
yarn transloadit auth logout
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Logout revokes browser-login keys, including their use by any application. Imported (`--stdin`)
|
|
158
|
+
and legacy keys are only forgotten locally; `auth logout --revoke` explicitly revokes those too.
|
|
159
|
+
|
|
160
|
+
Unpublishing stops origin access but cannot recall cached/downloaded bytes. For lost metadata,
|
|
161
|
+
restore the committed catalog or use the signed native catalog API with `dam:read` or `dam:write`.
|
|
162
|
+
Older API deployments may not yet expose these reads; see [Recovery options and prerequisites](https://github.com/transloadit/node-sdk/blob/main/packages/img/docs/reference.md#recovery).
|
|
163
|
+
|
|
164
|
+
Storage commands report the selected credential source on stderr before operating. Ordinary
|
|
165
|
+
commands retain shell → project `.env` → saved login precedence; init prefers the saved login.
|
|
166
|
+
Store, list, sync and publication verify the selected key against the catalog workspace and stop
|
|
167
|
+
before acting on a mismatch. An explicit `--workspace` opts out, but never mixes catalogs: use
|
|
168
|
+
`--receipts` for a separate workspace's catalog. Status shows the saved workspace/key description;
|
|
169
|
+
logout revokes that key before deleting the credentials file and preserves it if revocation fails.
|
|
170
|
+
The endpoint stays bound to those credentials unless explicitly overridden. JSON result output
|
|
171
|
+
stays on stdout; credentials are never printed. See the
|
|
172
|
+
[image Quickstart](https://github.com/transloadit/node-sdk/blob/main/packages/img/README.md)
|
|
173
|
+
and [reference](https://github.com/transloadit/node-sdk/blob/main/packages/img/docs/reference.md).
|
|
174
|
+
|
|
110
175
|
### Minting Bearer Tokens (Hosted MCP)
|
|
111
176
|
|
|
112
177
|
If you want to connect an agent to the Transloadit-hosted MCP endpoint, mint a short-lived bearer
|
|
@@ -1379,7 +1444,140 @@ npx transloadit assemblies list -l 7
|
|
|
1379
1444
|
|
|
1380
1445
|
## SDK Usage
|
|
1381
1446
|
|
|
1382
|
-
|
|
1447
|
+
### Store an image
|
|
1448
|
+
|
|
1449
|
+
`storeImage()` uploads one local image and returns a verified receipt ready for `Image`.
|
|
1450
|
+
Install `@transloadit/node` as a runtime dependency for server uploads; a dev dependency is enough
|
|
1451
|
+
when you only use its CLI. Use an Assembly-enabled application key in your server environment,
|
|
1452
|
+
not a signing-only image-delivery key or the disposable login key that `auth logout` revokes.
|
|
1453
|
+
New combined Smart CDN/Assembly keys use SHA-256, as selected below; use your configured algorithm
|
|
1454
|
+
for an existing key.
|
|
1455
|
+
|
|
1456
|
+
In an authenticated server handler, `user` is your verified session user and `saveImage` is your
|
|
1457
|
+
application's database helper, not an SDK function:
|
|
1458
|
+
|
|
1459
|
+
```ts
|
|
1460
|
+
import { randomUUID } from 'node:crypto'
|
|
1461
|
+
import { Transloadit } from '@transloadit/node'
|
|
1462
|
+
|
|
1463
|
+
const { TRANSLOADIT_KEY: authKey, TRANSLOADIT_SECRET: authSecret } = process.env
|
|
1464
|
+
if (!authKey || !authSecret) {
|
|
1465
|
+
throw new Error('Set TRANSLOADIT_KEY and TRANSLOADIT_SECRET on the server')
|
|
1466
|
+
}
|
|
1467
|
+
const client = new Transloadit({
|
|
1468
|
+
authKey,
|
|
1469
|
+
authSecret,
|
|
1470
|
+
signatureAlgorithm: 'sha256',
|
|
1471
|
+
})
|
|
1472
|
+
const receipt = await client.storeImage('./hero.jpg', {
|
|
1473
|
+
path: `uploads/${randomUUID()}/hero.jpg`,
|
|
1474
|
+
})
|
|
1475
|
+
await saveImage({ ...receipt, ownerId: user.id })
|
|
1476
|
+
```
|
|
1477
|
+
|
|
1478
|
+
Choose the destination on the server and save the complete receipt with its owner ID. An occupied
|
|
1479
|
+
path is refused unless you explicitly pass `overwrite: true`. This helper does not publish a
|
|
1480
|
+
directory or update the CLI's catalog. Pass the saved receipt as `src` in an authorized application;
|
|
1481
|
+
see [user uploads, private access and trusted receipt recovery with `getStoredImageReceipt()`](https://github.com/transloadit/node-sdk/blob/main/packages/img/docs/reference.md#images-uploaded-by-your-users)
|
|
1482
|
+
for the Uppy/notification flow and recovery without another upload.
|
|
1483
|
+
|
|
1484
|
+
### Read and reuse stored assets
|
|
1485
|
+
|
|
1486
|
+
Save the complete stored result from `results[producingStep][i]` after `ASSEMBLY_COMPLETED`, including
|
|
1487
|
+
its Workspace and returned path. Collision handling can rename the requested destination.
|
|
1488
|
+
`storeImage()` returns this canonical record plus verified image metadata; other media use the
|
|
1489
|
+
same `StoredAsset` contract without requiring image dimensions.
|
|
1490
|
+
|
|
1491
|
+
```ts
|
|
1492
|
+
const page = await client.listStoredAssets({ prefix: 'uploads/', limit: 100 })
|
|
1493
|
+
// Continue with { prefix: 'uploads/', cursor: page.next_cursor } while next_cursor is not null.
|
|
1494
|
+
const current = await client.getStoredAsset(receipt.asset_id)
|
|
1495
|
+
const pinned = await client.getStoredAsset(receipt.asset_id, { version_id: receipt.version_id })
|
|
1496
|
+
```
|
|
1497
|
+
|
|
1498
|
+
These signed, bounded metadata reads require `dam:read` or `dam:write`, use the key's Workspace,
|
|
1499
|
+
and return checksums and dimensions when available. No S3 credentials or per-file HEADs are needed.
|
|
1500
|
+
|
|
1501
|
+
For a multi-file or mixed-media Assembly, fetch its retained results on your server:
|
|
1502
|
+
|
|
1503
|
+
```ts
|
|
1504
|
+
// Load this upload from your database after checking the current user's access.
|
|
1505
|
+
const outputs = await client.getStoredAssemblyResults({
|
|
1506
|
+
assemblyId: upload.assemblyId,
|
|
1507
|
+
workspace: upload.workspace,
|
|
1508
|
+
})
|
|
1509
|
+
for (const output of outputs) {
|
|
1510
|
+
// Use a unique database key (assembly_id, step, result_id) so notification retries are harmless.
|
|
1511
|
+
await registerMedia({ ...output, ownerId: upload.ownerId })
|
|
1512
|
+
}
|
|
1513
|
+
```
|
|
1514
|
+
|
|
1515
|
+
Each output contains `asset` (the canonical record), `assembly_id`, `step`, `result_id`, and
|
|
1516
|
+
`original_id` when the producing result supplies it. One input can produce an image, video and
|
|
1517
|
+
poster; combined inputs can have an array of original IDs. Do not correlate by filename or array
|
|
1518
|
+
position. Ordinary temporary results are omitted; malformed or cross-Workspace Storage records
|
|
1519
|
+
fail the whole read. Failed/incomplete Assemblies are not reported as successful batches, even
|
|
1520
|
+
if some writes already happened. This helper verifies authoritative metadata, **not application
|
|
1521
|
+
ownership**: never use an unchecked browser/notification Assembly ID in place of `upload`.
|
|
1522
|
+
|
|
1523
|
+
Rename/move with the native API to keep saved asset/version references working:
|
|
1524
|
+
|
|
1525
|
+
```ts
|
|
1526
|
+
const renamed = await client.moveStoredAsset(receipt.asset_id, { filename: 'ceremony.jpg' })
|
|
1527
|
+
// Supply destination_folder_id to change folders; null selects the Workspace root.
|
|
1528
|
+
const deletion = await client.deleteStoredAsset(renamed.asset_id)
|
|
1529
|
+
```
|
|
1530
|
+
|
|
1531
|
+
Mutations need `dam:write`. `moveStoredAsset()` returns the canonical record from the transaction
|
|
1532
|
+
(checksums may be omitted), with the same identity and version. It never implements a move as
|
|
1533
|
+
S3 copy/delete. A native folder move also keeps its descendants' identities.
|
|
1534
|
+
|
|
1535
|
+
### Original media, playback and downloads
|
|
1536
|
+
|
|
1537
|
+
`getStoredAssetUrl()` signs **exact original bytes**, not an image preview or a video transcode.
|
|
1538
|
+
It accepts the canonical record for any media type, without requiring image dimensions:
|
|
1539
|
+
|
|
1540
|
+
```ts
|
|
1541
|
+
// In a server route, authenticate and load this exact saved reference from your own database.
|
|
1542
|
+
const media = await loadMediaAuthorizedForUser(user, mediaId)
|
|
1543
|
+
const url = client.getStoredAssetUrl(media.asset, { download: true })
|
|
1544
|
+
return new Response(null, {
|
|
1545
|
+
status: 307,
|
|
1546
|
+
headers: { Location: url, 'Cache-Control': 'private, no-store', Vary: 'Cookie' },
|
|
1547
|
+
})
|
|
1548
|
+
```
|
|
1549
|
+
|
|
1550
|
+
`download: true` uses the receipt's filename; a string overrides it safely. Omit `download` for
|
|
1551
|
+
inline playback. The attachment header comes from the CDN response, including for cross-origin
|
|
1552
|
+
links: no `fetch().blob()`, application byte proxy or whole-video memory allocation is needed.
|
|
1553
|
+
Range requests support seeking when the original format/codecs work in that browser; generate
|
|
1554
|
+
and store a separate compatible playback rendition when they do not. Use Viewer for previews.
|
|
1555
|
+
|
|
1556
|
+
These URLs use signed `builtin/storage-serve@0.0.3` (deploy the matching API2 version first).
|
|
1557
|
+
The signing key needs `smart_cdn:sign` or the Workspace's legacy Smart CDN-enabled key permission.
|
|
1558
|
+
`lifetimeMs` defaults to a maximum of five minutes (allowed: one second to 48 hours). Signing
|
|
1559
|
+
rotates at most once a minute and never more slowly than half the lifetime, so a new URL retains
|
|
1560
|
+
at least half its requested lifetime. Bunny includes the full query in its cache key: each
|
|
1561
|
+
rotation starts a separate cache entry. An issued URL remains usable until expiry even if the
|
|
1562
|
+
application session is revoked. Reauthorize every redirect; do not cache private redirects in
|
|
1563
|
+
a shared cache. A download filename changes the signed URL/cache key but never the selected bytes.
|
|
1564
|
+
|
|
1565
|
+
For a later Assembly, choose exactly one `/transloadit/import` selector:
|
|
1566
|
+
|
|
1567
|
+
- `{ robot: '/transloadit/import', path: receipt.path }` reads the current bytes at that location.
|
|
1568
|
+
- `{ robot: '/transloadit/import', asset_id: receipt.asset_id }` follows the logical asset after moves.
|
|
1569
|
+
- `{ robot: '/transloadit/import', asset_id: receipt.asset_id, version_id: receipt.version_id }`
|
|
1570
|
+
selects the exact retained bytes. It never falls back to the current version.
|
|
1571
|
+
|
|
1572
|
+
Authenticate for the saved Workspace. Deleting the asset or removing that retained version makes
|
|
1573
|
+
the reference unavailable; an ID is neither a backup nor authorization. Use the actual stored IDs,
|
|
1574
|
+
not a filename or digest, and keep application ownership associated with the stable asset ID.
|
|
1575
|
+
|
|
1576
|
+
### Process an image
|
|
1577
|
+
|
|
1578
|
+
The following code will upload an image and resize it to a thumbnail. New Console-created combined
|
|
1579
|
+
Smart CDN/Assembly keys use SHA-256, so this example selects it explicitly; the SDK's legacy default
|
|
1580
|
+
remains SHA-384 for existing keys.
|
|
1383
1581
|
|
|
1384
1582
|
```javascript
|
|
1385
1583
|
import { Transloadit } from '@transloadit/node'
|
|
@@ -1387,6 +1585,7 @@ import { Transloadit } from '@transloadit/node'
|
|
|
1387
1585
|
const transloadit = new Transloadit({
|
|
1388
1586
|
authKey: 'YOUR_TRANSLOADIT_KEY',
|
|
1389
1587
|
authSecret: 'YOUR_TRANSLOADIT_SECRET',
|
|
1588
|
+
signatureAlgorithm: 'sha256',
|
|
1390
1589
|
})
|
|
1391
1590
|
|
|
1392
1591
|
try {
|
|
@@ -1486,10 +1685,24 @@ Table of contents:
|
|
|
1486
1685
|
|
|
1487
1686
|
Returns a new instance of the client.
|
|
1488
1687
|
|
|
1688
|
+
```typescript
|
|
1689
|
+
const transloadit = new Transloadit({
|
|
1690
|
+
authKey: 'YOUR_TRANSLOADIT_KEY',
|
|
1691
|
+
authSecret: 'YOUR_TRANSLOADIT_SECRET',
|
|
1692
|
+
signatureAlgorithm: 'sha256',
|
|
1693
|
+
})
|
|
1694
|
+
```
|
|
1695
|
+
|
|
1696
|
+
Select SHA-256 for new Console-created combined Smart CDN/Assembly keys; omitting it retains
|
|
1697
|
+
the SHA-384 default for existing keys and can produce `INVALID_SIGNATURE` with a combined key.
|
|
1698
|
+
|
|
1489
1699
|
The `options` object can contain the following keys:
|
|
1490
1700
|
|
|
1491
1701
|
- `authKey` **(required)** - see [requirements](#requirements)
|
|
1492
1702
|
- `authSecret` **(required)** - see [requirements](#requirements)
|
|
1703
|
+
- `signatureAlgorithm` (default `'sha384'`) - API signing algorithm configured on this Auth Key.
|
|
1704
|
+
Use `'sha256'` for combined Smart CDN-enabled keys. Browser CLI login saves and applies this
|
|
1705
|
+
setting automatically; explicit `calcSignature(params, algorithm)` calls still override it.
|
|
1493
1706
|
- `endpoint` (default `'https://api2.transloadit.com'`)
|
|
1494
1707
|
- `maxRetries` (default `5`) - see [Rate limiting & auto retry](#rate-limiting--auto-retry)
|
|
1495
1708
|
- `gotRetry` (default `0`) - see [Rate limiting & auto retry](#rate-limiting--auto-retry)
|
|
@@ -1934,8 +2147,3 @@ Thanks to [Ian Hansen](https://github.com/supershabam) for donating the `translo
|
|
|
1934
2147
|
## Development
|
|
1935
2148
|
|
|
1936
2149
|
See [CONTRIBUTING](./CONTRIBUTING.md).
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
package/dist/Transloadit.d.ts
CHANGED
|
@@ -1,20 +1,29 @@
|
|
|
1
1
|
import type { Readable } from 'node:stream';
|
|
2
2
|
import type { CompileAssemblyInstructionsOptions, CompileAssemblyInstructionsResult } from '@transloadit/utils';
|
|
3
|
+
import type { SignatureAlgorithm } from '@transloadit/utils/node';
|
|
3
4
|
import type { RetryOptions } from 'got';
|
|
5
|
+
import type { Input as IntoStreamInput } from 'into-stream';
|
|
4
6
|
import type { AssemblyIndexItem, AssemblyStatus } from './alphalib/types/assemblyStatus.ts';
|
|
7
|
+
import type { GetStoredAssetOptions, ListStoredAssetsOptions, MoveStoredAssetOptions, StoredAsset, StoredAssetsPage } from './alphalib/types/storageAsset.ts';
|
|
5
8
|
import type { BaseResponse, BillResponse, CreateAssemblyParams, CreateTemplateCredentialParams, CreateTemplateParams, EditTemplateParams, ListAssembliesParams, ListedTemplate, ListTemplateCredentialsParams, ListTemplatesParams, OptionalAuthParams, PaginationListWithCount, ReplayAssemblyNotificationParams, ReplayAssemblyNotificationResponse, ReplayAssemblyParams, ReplayAssemblyResponse, TemplateCredentialResponse, TemplateCredentialsResponse, TemplateResponse } from './apiTypes.ts';
|
|
6
9
|
import type { BearerTokenResponse, MintBearerTokenOptions } from './bearerToken.ts';
|
|
7
10
|
import type { LintAssemblyInstructionsInput, LintAssemblyInstructionsResult } from './lintAssemblyInstructions.ts';
|
|
11
|
+
import type { GetStoredImageReceiptOptions, StoredImageReceipt, StoreImageOptions } from './storageImage.ts';
|
|
12
|
+
import type { StoragePublicPrefixDeclared, StoragePublicPrefixes, StoragePublicPrefixRevoked } from './storagePublicPrefixes.ts';
|
|
13
|
+
import type { GetStoredAssemblyResultsOptions, StoredAssemblyResult, StoredAssetUrlOptions } from './storageResults.ts';
|
|
8
14
|
import type { UploadBehavior } from './tus.ts';
|
|
9
|
-
import { type Input as IntoStreamInput } from 'into-stream';
|
|
10
15
|
import { ApiError } from './ApiError.ts';
|
|
11
16
|
import InconsistentResponseError from './InconsistentResponseError.ts';
|
|
12
17
|
import PaginationStream from './PaginationStream.ts';
|
|
13
18
|
export type { CompileAssemblyInstructionsAttempt, CompileAssemblyInstructionsClient, CompileAssemblyInstructionsLintIssue, CompileAssemblyInstructionsMessage, CompileAssemblyInstructionsResult, } from '@transloadit/utils';
|
|
14
19
|
export type { AssemblyStatus } from './alphalib/types/assemblyStatus.ts';
|
|
20
|
+
export type { GetStoredAssetOptions, ListStoredAssetsOptions, MoveStoredAssetOptions, StoredAsset, StoredAssetsPage, } from './alphalib/types/storageAsset.ts';
|
|
15
21
|
export type { Base64Strategy, InputFile, PrepareInputFilesOptions, PrepareInputFilesResult, UploadInput, UrlStrategy, } from './inputFiles.ts';
|
|
16
22
|
export type { LintAssemblyInstructionsResult, LintFatalLevel } from './lintAssemblyInstructions.ts';
|
|
17
23
|
export type { RobotHelp, RobotHelpOptions, RobotListItem, RobotListOptions, RobotListResult, RobotParamHelp, } from './robots.ts';
|
|
24
|
+
export type { GetStoredImageReceiptOptions, StoredImageExpectation, StoredImageReceipt, StoreImageOptions, } from './storageImage.ts';
|
|
25
|
+
export type { StoragePublicPrefixDeclared, StoragePublicPrefixes, StoragePublicPrefixRevoked, } from './storagePublicPrefixes.ts';
|
|
26
|
+
export type { GetStoredAssemblyResultsOptions, StoredAssemblyResult, StoredAssetUrlOptions, } from './storageResults.ts';
|
|
18
27
|
export { buildCompileAssemblyInstructionsSystemPrompt, CompileAssemblyInstructionsError, parseCompileAssemblyInstructionsResponse, } from '@transloadit/utils';
|
|
19
28
|
export { HTTPError, MaxRedirectsError, ParseError, ReadError, RequestError, TimeoutError, UploadError, } from 'got';
|
|
20
29
|
export { extractFieldNamesFromTemplate } from './alphalib/stepParsing.ts';
|
|
@@ -132,6 +141,8 @@ type AuthToken = {
|
|
|
132
141
|
authSecret?: string;
|
|
133
142
|
};
|
|
134
143
|
type BaseOptions = {
|
|
144
|
+
/** Use signatureAlgorithm: 'sha256' for new combined Smart CDN/Assembly keys; legacy default: sha384. */
|
|
145
|
+
signatureAlgorithm?: SignatureAlgorithm;
|
|
135
146
|
endpoint?: string;
|
|
136
147
|
maxRetries?: number;
|
|
137
148
|
timeout?: number;
|
|
@@ -141,6 +152,7 @@ type BaseOptions = {
|
|
|
141
152
|
};
|
|
142
153
|
export type Options = BaseOptions & (AuthKeySecret | AuthToken);
|
|
143
154
|
export declare class Transloadit {
|
|
155
|
+
#private;
|
|
144
156
|
private _authKey;
|
|
145
157
|
private _authSecret;
|
|
146
158
|
private _authToken;
|
|
@@ -151,9 +163,37 @@ export declare class Transloadit {
|
|
|
151
163
|
private _clientName;
|
|
152
164
|
private _lastUsedAssemblyUrl;
|
|
153
165
|
private _validateResponses;
|
|
166
|
+
/** Create a client; new combined keys require signatureAlgorithm: 'sha256' explicitly. */
|
|
154
167
|
constructor(opts: Options);
|
|
155
168
|
getLastUsedAssemblyUrl(): string;
|
|
156
169
|
setDefaultTimeout(timeout: number): void;
|
|
170
|
+
/** Stores one local original at an explicit path and returns its verified image metadata. */
|
|
171
|
+
storeImage(filePath: string, options: StoreImageOptions): Promise<StoredImageReceipt>;
|
|
172
|
+
/** Reconstructs a verified receipt from authoritative Assembly status and trusted upload facts. */
|
|
173
|
+
getStoredImageReceipt(options: GetStoredImageReceiptOptions): Promise<StoredImageReceipt>;
|
|
174
|
+
/** Verifies a completed batch's retained media and preserves result/input provenance. */
|
|
175
|
+
getStoredAssemblyResults(options: GetStoredAssemblyResultsOptions): Promise<StoredAssemblyResult[]>;
|
|
176
|
+
/** Signs exact original bytes after your app authorizes the asset. Use a 307 for fresh request-time authorization. */
|
|
177
|
+
getStoredAssetUrl(asset: StoredAsset, options?: StoredAssetUrlOptions): string;
|
|
178
|
+
/** Reads a live asset's current version, or the exact retained version when version_id is set. */
|
|
179
|
+
getStoredAsset(assetId: string, options?: GetStoredAssetOptions & {
|
|
180
|
+
signal?: AbortSignal;
|
|
181
|
+
}): Promise<StoredAsset>;
|
|
182
|
+
/** Reads one bounded catalog page without S3 credentials or a HEAD request per object. */
|
|
183
|
+
listStoredAssets(options?: ListStoredAssetsOptions & {
|
|
184
|
+
signal?: AbortSignal;
|
|
185
|
+
}): Promise<StoredAssetsPage>;
|
|
186
|
+
/** Moves or renames an asset natively, preserving asset and version identities. */
|
|
187
|
+
moveStoredAsset(assetId: string, options: MoveStoredAssetOptions & {
|
|
188
|
+
signal?: AbortSignal;
|
|
189
|
+
}): Promise<StoredAsset>;
|
|
190
|
+
/** Soft-deletes an asset by identity, making retained versions unavailable for new reads. */
|
|
191
|
+
deleteStoredAsset(assetId: string, options?: {
|
|
192
|
+
signal?: AbortSignal;
|
|
193
|
+
}): Promise<{
|
|
194
|
+
asset_id: string;
|
|
195
|
+
deleted_at: string;
|
|
196
|
+
}>;
|
|
157
197
|
/**
|
|
158
198
|
* Create an Assembly
|
|
159
199
|
*
|
|
@@ -291,6 +331,8 @@ export declare class Transloadit {
|
|
|
291
331
|
* @returns when the template is deleted
|
|
292
332
|
*/
|
|
293
333
|
deleteTemplate(templateId: string): Promise<BaseResponse>;
|
|
334
|
+
/** Revoke the signing Auth Key itself, without granting access to other workspace keys. */
|
|
335
|
+
revokeOwnAuthKey(): Promise<void>;
|
|
294
336
|
/**
|
|
295
337
|
* Get an Assembly Template
|
|
296
338
|
*
|
|
@@ -306,6 +348,18 @@ export declare class Transloadit {
|
|
|
306
348
|
*/
|
|
307
349
|
listTemplates(params?: ListTemplatesParams): Promise<PaginationListWithCount<ListedTemplate>>;
|
|
308
350
|
streamTemplates(params?: ListTemplatesParams): PaginationStream<ListedTemplate>;
|
|
351
|
+
/** Declare a directory public for unsigned Storage Built-ins. Requires dam:write scope. */
|
|
352
|
+
publishStoragePrefix(prefix: string, options?: {
|
|
353
|
+
signal?: AbortSignal;
|
|
354
|
+
}): Promise<StoragePublicPrefixDeclared>;
|
|
355
|
+
/** Revoke origin access to a public directory; cached or downloaded bytes cannot be recalled. */
|
|
356
|
+
unpublishStoragePrefix(prefix: string, options?: {
|
|
357
|
+
signal?: AbortSignal;
|
|
358
|
+
}): Promise<StoragePublicPrefixRevoked>;
|
|
359
|
+
/** List the workspace's explicitly public directories through the ordinary signed API. */
|
|
360
|
+
listPublicStoragePrefixes(options?: {
|
|
361
|
+
signal?: AbortSignal;
|
|
362
|
+
}): Promise<StoragePublicPrefixes>;
|
|
309
363
|
/**
|
|
310
364
|
* Get account Billing details for a specific month
|
|
311
365
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transloadit.d.ts","sourceRoot":"","sources":["../src/Transloadit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,KAAK,EACV,kCAAkC,EAClC,iCAAiC,EAClC,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAA8C,YAAY,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"Transloadit.d.ts","sourceRoot":"","sources":["../src/Transloadit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,KAAK,EACV,kCAAkC,EAClC,iCAAiC,EAClC,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,KAAK,EAA8C,YAAY,EAAE,MAAM,KAAK,CAAA;AACnF,OAAO,KAAK,EAAE,KAAK,IAAI,eAAe,EAAE,MAAM,aAAa,CAAA;AAG3D,OAAO,KAAK,EAEV,iBAAiB,EACjB,cAAc,EACf,MAAM,oCAAoC,CAAA;AAC3C,OAAO,KAAK,EACV,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,WAAW,EACX,gBAAgB,EACjB,MAAM,kCAAkC,CAAA;AACzC,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,8BAA8B,EAC9B,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,6BAA6B,EAC7B,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,gCAAgC,EAChC,kCAAkC,EAClC,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,EAC1B,2BAA2B,EAC3B,gBAAgB,EACjB,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACnF,OAAO,KAAK,EACV,6BAA6B,EAC7B,8BAA8B,EAC/B,MAAM,+BAA+B,CAAA;AACtC,OAAO,KAAK,EACV,4BAA4B,EAC5B,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EACV,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,EAC3B,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EACV,+BAA+B,EAC/B,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAU,cAAc,EAAE,MAAM,UAAU,CAAA;AAoBtD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAaxC,OAAO,yBAAyB,MAAM,gCAAgC,CAAA;AAEtE,OAAO,gBAAgB,MAAM,uBAAuB,CAAA;AAYpD,YAAY,EACV,kCAAkC,EAClC,iCAAiC,EACjC,oCAAoC,EACpC,kCAAkC,EAClC,iCAAiC,GAClC,MAAM,oBAAoB,CAAA;AAE3B,YAAY,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACxE,YAAY,EACV,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,WAAW,EACX,gBAAgB,GACjB,MAAM,kCAAkC,CAAA;AACzC,YAAY,EACV,cAAc,EACd,SAAS,EACT,wBAAwB,EACxB,uBAAuB,EACvB,WAAW,EACX,WAAW,GACZ,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,8BAA8B,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AACnG,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,cAAc,GACf,MAAM,aAAa,CAAA;AACpB,YAAY,EACV,4BAA4B,EAC5B,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EACV,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,4BAA4B,CAAA;AACnC,YAAY,EACV,+BAA+B,EAC/B,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EACL,4CAA4C,EAC5C,gCAAgC,EAChC,wCAAwC,GACzC,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,WAAW,GACZ,MAAM,KAAK,CAAA;AAEZ,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAA;AAEzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAClE,cAAc,eAAe,CAAA;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACpE,OAAO,EAAE,QAAQ,EAAE,yBAAyB,EAAE,CAAA;AAK9C,MAAM,WAAW,cAAc;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAChC;AAED,YAAY,EAAE,cAAc,EAAE,CAAA;AAE9B,MAAM,MAAM,4BAA4B,GAAG,cAAc,GAAG;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACrC,CAAA;AAID,MAAM,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAA;AAoEjE,UAAU,qBAAqB;IAC7B,KAAK,CAAC,EAAE;QACN,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KACvB,CAAA;IACD,OAAO,CAAC,EAAE;QACR,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,eAAe,CAAA;KAC3C,CAAA;IACD,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,CAAC,cAAc,EAAE,cAAc,KAAK,IAAI,CAAA;IAC3D,kBAAkB,CAAC,EAAE,gBAAgB,CAAA;IACrC;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,WAAW,qBAAsB,SAAQ,qBAAqB;IAClE,MAAM,CAAC,EAAE,oBAAoB,CAAA;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,4BAA6B,SAAQ,qBAAqB;IACzE,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,8BAA8B;IAC7C,kBAAkB,CAAC,EAAE,gBAAgB,CAAA;IACrC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,OAAO,GAAG,SAAS,CAAA;CACnC;AAED,MAAM,WAAW,+BACf,SAAQ,IAAI,CAAC,6BAA6B,EAAE,UAAU,CAAC;IACvD;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;IACrF;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,MAAM,4CAA4C,GAAG,IAAI,CAC7D,kCAAkC,EAClC,QAAQ,CACT,GAAG;IACF,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;AAGpD,UAAU,qBAAsB,SAAQ,OAAO,CAAC,4BAA4B,CAAC;IAC3E,UAAU,EAAE,MAAM,CAAA;CACnB;AAiED,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,CAAA;AAED,KAAK,SAAS,GAAG;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,KAAK,WAAW,GAAG;IACjB,yGAAyG;IACzG,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,OAAO,GAAG,WAAW,GAAG,CAAC,aAAa,GAAG,SAAS,CAAC,CAAA;AAE/D,qBAAa,WAAW;;IAEtB,OAAO,CAAC,QAAQ,CAAQ;IAExB,OAAO,CAAC,WAAW,CAAQ;IAE3B,OAAO,CAAC,UAAU,CAAe;IAEjC,OAAO,CAAC,SAAS,CAAQ;IAEzB,OAAO,CAAC,WAAW,CAAQ;IAE3B,OAAO,CAAC,eAAe,CAAQ;IAE/B,OAAO,CAAC,SAAS,CAAuB;IAExC,OAAO,CAAC,WAAW,CAAQ;IAE3B,OAAO,CAAC,oBAAoB,CAAK;IAEjC,OAAO,CAAC,kBAAkB,CAAQ;IAElC,0FAA0F;gBAC9E,IAAI,EAAE,OAAO;IAiCzB,sBAAsB,IAAI,MAAM;IAIhC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIxC,6FAA6F;IAC7F,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIrF,mGAAmG;IACnG,qBAAqB,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIzF,yFAAyF;IACzF,wBAAwB,CACtB,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAIlC,sHAAsH;IACtH,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM;IAI9E,kGAAkG;IAC5F,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,qBAAqB,GAAG;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GAC7D,OAAO,CAAC,WAAW,CAAC;IAsBvB,0FAA0F;IACpF,gBAAgB,CACpB,OAAO,GAAE,uBAAuB,GAAG;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GAC/D,OAAO,CAAC,gBAAgB,CAAC;IAgB5B,mFAAmF;IAC7E,eAAe,CACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,sBAAsB,GAAG;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACzD,OAAO,CAAC,WAAW,CAAC;IAuBvB,6FAA6F;IACvF,iBAAiB,CACrB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GACrC,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAsBpD;;;;OAIG;IACH,cAAc,CAAC,IAAI,GAAE,qBAA0B,GAAG,qBAAqB;IA6HvE;;;;;;;;;OASG;IACG,wBAAwB,CAC5B,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,8BAA8B,CAAC;IAa1C;;;;;OAKG;IACG,qCAAqC,CACzC,OAAO,EAAE,4CAA4C,GACpD,OAAO,CAAC,iCAAiC,CAAC;IA0C7C;;;;;OAKG;IACG,eAAe,CACnB,OAAO,GAAE,IAAI,CAAC,sBAAsB,EAAE,UAAU,CAAC,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO,GAC7E,OAAO,CAAC,mBAAmB,CAAC;IAsBzB,qBAAqB,CACzB,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,4BAA4B,CAAC;IAsIlC,uBAAuB,CAC3B,UAAU,EAAE,MAAM,EAClB,EACE,kBAA6B,EAC7B,OAAO,EACP,WAA2B,EAC3B,QAAe,EACf,WAAW,EACX,MAAM,EACN,MAAM,GACP,GAAE,8BAAmC,GACrC,OAAO,CAAC,cAAc,CAAC;IAqE1B,mCAAmC,CAAC,OAAO,EAAE,MAAM;IAenD;;;;;OAKG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAoBjE;;;;;;OAMG;IACG,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,oBAAyB,GAChC,OAAO,CAAC,sBAAsB,CAAC;IAUlC;;;;;;OAMG;IACG,0BAA0B,CAC9B,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,gCAAqC,GAC5C,OAAO,CAAC,kCAAkC,CAAC;IAQ9C;;;;;OAKG;IACG,cAAc,CAClB,MAAM,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;IAkCtD,gBAAgB,CAAC,MAAM,EAAE,oBAAoB,GAAG,QAAQ;IAIxD;;;;;;OAMG;IACG,WAAW,CACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACjC,OAAO,CAAC,cAAc,CAAC;YAOZ,oBAAoB;IA6BlC;;;;;OAKG;IACG,wBAAwB,CAC5B,MAAM,EAAE,8BAA8B,GACrC,OAAO,CAAC,0BAA0B,CAAC;IAQtC;;;;;;OAMG;IACG,sBAAsB,CAC1B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,8BAA8B,GACrC,OAAO,CAAC,0BAA0B,CAAC;IAQtC;;;;;OAKG;IACG,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAO3E;;;;;OAKG;IACG,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAOtF;;;;;OAKG;IACG,uBAAuB,CAC3B,MAAM,CAAC,EAAE,6BAA6B,GACrC,OAAO,CAAC,2BAA2B,CAAC;IAQvC,yBAAyB,CAAC,MAAM,EAAE,6BAA6B;IAM/D;;;;;OAKG;IACG,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAQ7E;;;;;;OAMG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAQ7F;;;;;OAKG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAO/D,2FAA2F;IACrF,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAavC;;;;;OAKG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAOhE;;;;;OAKG;IACG,aAAa,CACjB,MAAM,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC;IAQnD,eAAe,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,gBAAgB,CAAC,cAAc,CAAC;IAI/E,2FAA2F;IACrF,oBAAoB,CACxB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACjC,OAAO,CAAC,2BAA2B,CAAC;IAWvC,iGAAiG;IAC3F,sBAAsB,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACjC,OAAO,CAAC,0BAA0B,CAAC;IAWtC,0FAA0F;IACpF,yBAAyB,CAAC,OAAO,CAAC,EAAE;QACxC,MAAM,CAAC,EAAE,WAAW,CAAA;KACrB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAUlC;;;;;;OAMG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAQnD,aAAa,CACX,MAAM,EAAE,kBAAkB,EAC1B,SAAS,CAAC,EAAE,MAAM,GACjB;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAUxC;;OAEG;IACH,oBAAoB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM;IAWtD,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,WAAW;IA0BnB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,eAAe;YAST,WAAW;CA8H1B"}
|