deeplake 0.3.16 → 0.3.21
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/browser/{browser/client.d.ts → client.d.ts} +2 -2
- package/dist/browser/{browser/client.js → client.js} +8 -8
- package/dist/browser/{browser/index.d.ts → index.d.ts} +12 -12
- package/dist/browser/{browser/index.js → index.js} +8 -8
- package/dist/browser/shared/credentials.d.ts.map +1 -1
- package/dist/browser/shared/credentials.js +4 -6
- package/dist/browser/shared/credentials.js.map +1 -1
- package/dist/browser/shared/database.d.ts +3 -1
- package/dist/browser/shared/database.d.ts.map +1 -1
- package/dist/browser/shared/dlref.d.ts +3 -0
- package/dist/browser/shared/dlref.d.ts.map +1 -1
- package/dist/browser/shared/dlref.js +3 -0
- package/dist/browser/shared/dlref.js.map +1 -1
- package/dist/browser/shared/schema.d.ts.map +1 -1
- package/dist/browser/shared/schema.js +31 -20
- package/dist/browser/shared/schema.js.map +1 -1
- package/dist/browser/shared/token.d.ts.map +1 -1
- package/dist/browser/shared/token.js +1 -17
- package/dist/browser/shared/token.js.map +1 -1
- package/dist/browser/{browser/storage.d.ts.map → storage.d.ts.map} +1 -1
- package/dist/browser/{browser/storage.js → storage.js} +20 -33
- package/dist/browser/storage.js.map +1 -0
- package/dist/browser/{browser/wasm.js → wasm.js} +1 -1
- package/dist/node/client.d.ts +107 -0
- package/dist/node/client.d.ts.map +1 -0
- package/dist/node/{node/client.js → client.js} +138 -112
- package/dist/node/client.js.map +1 -0
- package/dist/node/formats/coco.d.ts +62 -0
- package/dist/node/formats/coco.d.ts.map +1 -0
- package/dist/node/{node/formats → formats}/coco.js +94 -8
- package/dist/node/formats/coco.js.map +1 -0
- package/dist/node/{node/formats → formats}/coco_panoptic.d.ts +1 -1
- package/dist/node/{node/formats → formats}/coco_panoptic.d.ts.map +1 -1
- package/dist/node/{node/formats → formats}/coco_panoptic.js +1 -0
- package/dist/node/formats/coco_panoptic.js.map +1 -0
- package/dist/node/formats/lerobot.d.ts +84 -0
- package/dist/node/formats/lerobot.d.ts.map +1 -0
- package/dist/node/{node/formats → formats}/lerobot.js +61 -1
- package/dist/node/formats/lerobot.js.map +1 -0
- package/dist/node/{node/index.d.ts → index.d.ts} +12 -12
- package/dist/node/{node/index.js → index.js} +8 -8
- package/dist/node/normalizers/binary.d.ts +3 -0
- package/dist/node/{node/normalizers → normalizers}/binary.js +1 -1
- package/dist/node/{node/normalizers → normalizers}/binary.js.map +1 -1
- package/dist/node/{node/normalizers → normalizers}/dict.d.ts +1 -1
- package/dist/node/{node/normalizers → normalizers}/files.d.ts +1 -1
- package/dist/node/{node/normalizers → normalizers}/files.js +1 -1
- package/dist/node/normalizers/huggingface.d.ts +23 -0
- package/dist/node/normalizers/huggingface.d.ts.map +1 -0
- package/dist/node/{node/normalizers → normalizers}/huggingface.js +29 -0
- package/dist/node/normalizers/huggingface.js.map +1 -0
- package/dist/node/normalizers/image.d.ts +3 -0
- package/dist/node/{node/normalizers → normalizers}/image.js +1 -1
- package/dist/node/{node/normalizers → normalizers}/image.js.map +1 -1
- package/dist/node/normalizers/pdf.d.ts +3 -0
- package/dist/node/{node/normalizers → normalizers}/pdf.js +2 -2
- package/dist/node/{node/normalizers → normalizers}/pdf.js.map +1 -1
- package/dist/node/{node/normalizers → normalizers}/text.d.ts +1 -1
- package/dist/node/{node/normalizers → normalizers}/text.js +1 -1
- package/dist/node/{node/normalizers → normalizers}/text.js.map +1 -1
- package/dist/node/{node/normalizers → normalizers}/video.d.ts +1 -1
- package/dist/node/{node/normalizers → normalizers}/video.js +2 -2
- package/dist/node/{node/normalizers → normalizers}/video.js.map +1 -1
- package/dist/node/shared/credentials.d.ts.map +1 -1
- package/dist/node/shared/credentials.js +4 -6
- package/dist/node/shared/credentials.js.map +1 -1
- package/dist/node/shared/database.d.ts +3 -1
- package/dist/node/shared/database.d.ts.map +1 -1
- package/dist/node/shared/dlref.d.ts +3 -0
- package/dist/node/shared/dlref.d.ts.map +1 -1
- package/dist/node/shared/dlref.js +3 -0
- package/dist/node/shared/dlref.js.map +1 -1
- package/dist/node/shared/schema.d.ts.map +1 -1
- package/dist/node/shared/schema.js +31 -20
- package/dist/node/shared/schema.js.map +1 -1
- package/dist/node/shared/token.d.ts.map +1 -1
- package/dist/node/shared/token.js +1 -17
- package/dist/node/shared/token.js.map +1 -1
- package/dist/node/{node/storage.d.ts → storage.d.ts} +5 -0
- package/dist/node/storage.d.ts.map +1 -0
- package/dist/node/{node/storage.js → storage.js} +137 -16
- package/dist/node/storage.js.map +1 -0
- package/dist/node/{node/wasm.js → wasm.js} +1 -1
- package/package.json +17 -13
- package/wasm/browser/deeplake_browser.js +1 -1
- package/wasm/browser/deeplake_browser.wasm +0 -0
- package/wasm/node/deeplake_node.js +1 -1
- package/wasm/node/deeplake_node.wasm +0 -0
- package/dist/browser/browser/storage.js.map +0 -1
- package/dist/node/node/client.d.ts +0 -49
- package/dist/node/node/client.d.ts.map +0 -1
- package/dist/node/node/client.js.map +0 -1
- package/dist/node/node/formats/coco.d.ts +0 -24
- package/dist/node/node/formats/coco.d.ts.map +0 -1
- package/dist/node/node/formats/coco.js.map +0 -1
- package/dist/node/node/formats/coco_panoptic.js.map +0 -1
- package/dist/node/node/formats/lerobot.d.ts +0 -42
- package/dist/node/node/formats/lerobot.d.ts.map +0 -1
- package/dist/node/node/formats/lerobot.js.map +0 -1
- package/dist/node/node/normalizers/binary.d.ts +0 -3
- package/dist/node/node/normalizers/huggingface.d.ts +0 -3
- package/dist/node/node/normalizers/huggingface.d.ts.map +0 -1
- package/dist/node/node/normalizers/huggingface.js.map +0 -1
- package/dist/node/node/normalizers/image.d.ts +0 -3
- package/dist/node/node/normalizers/pdf.d.ts +0 -3
- package/dist/node/node/storage.d.ts.map +0 -1
- package/dist/node/node/storage.js.map +0 -1
- package/dist/wasm/node/deeplake_node.js +0 -3
- package/dist/wasm/node/deeplake_node.wasm +0 -0
- package/dist/wasm/node/deeplake_node.worker.js +0 -5
- package/wasm/browser/deeplake_browser.worker.js +0 -5
- package/wasm/node/deeplake_node.worker.js +0 -5
- /package/dist/browser/{browser/client.d.ts.map → client.d.ts.map} +0 -0
- /package/dist/browser/{browser/client.js.map → client.js.map} +0 -0
- /package/dist/browser/{browser/index.d.ts.map → index.d.ts.map} +0 -0
- /package/dist/browser/{browser/index.js.map → index.js.map} +0 -0
- /package/dist/browser/{browser/storage.d.ts → storage.d.ts} +0 -0
- /package/dist/browser/{browser/wasm.d.ts → wasm.d.ts} +0 -0
- /package/dist/browser/{browser/wasm.d.ts.map → wasm.d.ts.map} +0 -0
- /package/dist/browser/{browser/wasm.js.map → wasm.js.map} +0 -0
- /package/dist/node/{node/formats → formats}/index.d.ts +0 -0
- /package/dist/node/{node/formats → formats}/index.d.ts.map +0 -0
- /package/dist/node/{node/formats → formats}/index.js +0 -0
- /package/dist/node/{node/formats → formats}/index.js.map +0 -0
- /package/dist/node/{node/index.d.ts.map → index.d.ts.map} +0 -0
- /package/dist/node/{node/index.js.map → index.js.map} +0 -0
- /package/dist/node/{node/mime.d.ts → mime.d.ts} +0 -0
- /package/dist/node/{node/mime.d.ts.map → mime.d.ts.map} +0 -0
- /package/dist/node/{node/mime.js → mime.js} +0 -0
- /package/dist/node/{node/mime.js.map → mime.js.map} +0 -0
- /package/dist/node/{node/normalizers → normalizers}/binary.d.ts.map +0 -0
- /package/dist/node/{node/normalizers → normalizers}/dict.d.ts.map +0 -0
- /package/dist/node/{node/normalizers → normalizers}/dict.js +0 -0
- /package/dist/node/{node/normalizers → normalizers}/dict.js.map +0 -0
- /package/dist/node/{node/normalizers → normalizers}/files.d.ts.map +0 -0
- /package/dist/node/{node/normalizers → normalizers}/files.js.map +0 -0
- /package/dist/node/{node/normalizers → normalizers}/image.d.ts.map +0 -0
- /package/dist/node/{node/normalizers → normalizers}/index.d.ts +0 -0
- /package/dist/node/{node/normalizers → normalizers}/index.d.ts.map +0 -0
- /package/dist/node/{node/normalizers → normalizers}/index.js +0 -0
- /package/dist/node/{node/normalizers → normalizers}/index.js.map +0 -0
- /package/dist/node/{node/normalizers → normalizers}/pdf.d.ts.map +0 -0
- /package/dist/node/{node/normalizers → normalizers}/text.d.ts.map +0 -0
- /package/dist/node/{node/normalizers → normalizers}/video.d.ts.map +0 -0
- /package/dist/node/{node/wasm.d.ts → wasm.d.ts} +0 -0
- /package/dist/node/{node/wasm.d.ts.map → wasm.d.ts.map} +0 -0
- /package/dist/node/{node/wasm.js.map → wasm.js.map} +0 -0
|
@@ -35,14 +35,14 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.ManagedClient = void 0;
|
|
37
37
|
const crypto = __importStar(require("crypto"));
|
|
38
|
-
const api_1 = require("
|
|
39
|
-
const credentials_1 = require("
|
|
40
|
-
const database_1 = require("
|
|
41
|
-
const errors_1 = require("
|
|
42
|
-
const schema_1 = require("
|
|
43
|
-
const token_1 = require("
|
|
44
|
-
const errors_2 = require("
|
|
45
|
-
const wasm_common_1 = require("
|
|
38
|
+
const api_1 = require("./shared/api");
|
|
39
|
+
const credentials_1 = require("./shared/credentials");
|
|
40
|
+
const database_1 = require("./shared/database");
|
|
41
|
+
const errors_1 = require("./shared/errors");
|
|
42
|
+
const schema_1 = require("./shared/schema");
|
|
43
|
+
const token_1 = require("./shared/token");
|
|
44
|
+
const errors_2 = require("./shared/errors");
|
|
45
|
+
const wasm_common_1 = require("./shared/wasm-common");
|
|
46
46
|
const dict_1 = require("./normalizers/dict");
|
|
47
47
|
const files_1 = require("./normalizers/files");
|
|
48
48
|
const huggingface_1 = require("./normalizers/huggingface");
|
|
@@ -222,7 +222,19 @@ class ManagedClient {
|
|
|
222
222
|
const pgSchema = (0, schema_1.buildPgSchema)(firstBatch, schema, format);
|
|
223
223
|
// Create table via API — pg_deeplake creates both the PG table
|
|
224
224
|
// and the S3 dataset in one shot.
|
|
225
|
-
await this.createTableViaApi(tableName, alPath, pgSchema);
|
|
225
|
+
const tableCreated = await this.createTableViaApi(tableName, alPath, pgSchema);
|
|
226
|
+
// Pre-apply storage credentials to process.env so the JS S3 client
|
|
227
|
+
// has a fallback if the C++ credential resolution returns empty creds.
|
|
228
|
+
// This calls POST /workspaces/{ws}/credentials/generate which returns
|
|
229
|
+
// workspace-scoped STS credentials.
|
|
230
|
+
try {
|
|
231
|
+
await this.applyStorageCreds('readwrite');
|
|
232
|
+
}
|
|
233
|
+
catch (credErr) {
|
|
234
|
+
// Non-fatal: the C++ backend will also try to resolve credentials
|
|
235
|
+
// via /api/org/{org}/ds/{table}/creds. Log for debugging.
|
|
236
|
+
console.warn(`[ingest] Failed to pre-apply storage credentials: ${credErr instanceof Error ? credErr.message : credErr}`);
|
|
237
|
+
}
|
|
226
238
|
// Open the dataset via al:// — the C++ backend resolves creds
|
|
227
239
|
// automatically through /api/org/{ws}/ds/{table}/creds,
|
|
228
240
|
// with automatic credential rotation.
|
|
@@ -251,6 +263,19 @@ class ManagedClient {
|
|
|
251
263
|
}
|
|
252
264
|
return { tableName, rowCount, datasetPath: alPath };
|
|
253
265
|
}
|
|
266
|
+
catch (ingestErr) {
|
|
267
|
+
// Clean up: drop the table if we created it during this call,
|
|
268
|
+
// so the user doesn't see an empty table in the sidebar.
|
|
269
|
+
if (tableCreated) {
|
|
270
|
+
try {
|
|
271
|
+
await this.dropTable(tableName);
|
|
272
|
+
}
|
|
273
|
+
catch {
|
|
274
|
+
// Best-effort cleanup — don't mask the original error
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
throw ingestErr;
|
|
278
|
+
}
|
|
254
279
|
finally {
|
|
255
280
|
(0, wasm_common_1.deeplakeRelease)(ds);
|
|
256
281
|
}
|
|
@@ -264,13 +289,50 @@ class ManagedClient {
|
|
|
264
289
|
// ------------------------------------------------------------------
|
|
265
290
|
// Write batches
|
|
266
291
|
// ------------------------------------------------------------------
|
|
292
|
+
/**
|
|
293
|
+
* Generate 128×128 inline thumbnails for IMAGE columns.
|
|
294
|
+
* Adds a `{col}_thumbnail` column to the buffer for each IMAGE column.
|
|
295
|
+
* Modifies the buffer in-place.
|
|
296
|
+
*/
|
|
297
|
+
static async generateInlineThumbnails(buf, imageCols, sharp) {
|
|
298
|
+
for (const col of imageCols) {
|
|
299
|
+
if (!(col in buf))
|
|
300
|
+
continue;
|
|
301
|
+
const values = buf[col];
|
|
302
|
+
const thumbCol = `${col}_thumbnail`;
|
|
303
|
+
// Process images in parallel — sharp releases the event loop
|
|
304
|
+
// during decode/encode so concurrent calls provide real speedup.
|
|
305
|
+
const thumbnails = await Promise.all(values.map(async (val) => {
|
|
306
|
+
let raw = null;
|
|
307
|
+
if (Buffer.isBuffer(val)) {
|
|
308
|
+
raw = val;
|
|
309
|
+
}
|
|
310
|
+
else if (val instanceof Uint8Array) {
|
|
311
|
+
raw = Buffer.from(val);
|
|
312
|
+
}
|
|
313
|
+
if (!raw || raw.length === 0) {
|
|
314
|
+
return Buffer.alloc(0);
|
|
315
|
+
}
|
|
316
|
+
try {
|
|
317
|
+
return await sharp(raw)
|
|
318
|
+
.resize(128, 128, { fit: 'inside' })
|
|
319
|
+
.jpeg({ quality: 85 })
|
|
320
|
+
.toBuffer();
|
|
321
|
+
}
|
|
322
|
+
catch {
|
|
323
|
+
return Buffer.alloc(0);
|
|
324
|
+
}
|
|
325
|
+
}));
|
|
326
|
+
buf[thumbCol] = thumbnails;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
267
329
|
async writeBatches(ds, batches, schema, onProgress, imageCols = [], flushEvery = 200, commitEvery = 2000) {
|
|
268
330
|
let rowCount = 0;
|
|
269
331
|
let buffer = {};
|
|
270
332
|
let bufferRows = 0;
|
|
271
333
|
let columnsEnsured = false;
|
|
272
334
|
let rowsSinceCommit = 0;
|
|
273
|
-
//
|
|
335
|
+
// Try to load sharp for inline thumbnail generation
|
|
274
336
|
let sharp = null;
|
|
275
337
|
if (imageCols.length > 0) {
|
|
276
338
|
try {
|
|
@@ -280,81 +342,6 @@ class ManagedClient {
|
|
|
280
342
|
// sharp not available — skip thumbnail generation
|
|
281
343
|
}
|
|
282
344
|
}
|
|
283
|
-
const thumbBuffer = {
|
|
284
|
-
file_id: [],
|
|
285
|
-
column_name: [],
|
|
286
|
-
dimension: [],
|
|
287
|
-
content: [],
|
|
288
|
-
};
|
|
289
|
-
let thumbCount = 0;
|
|
290
|
-
let thumbDs = null;
|
|
291
|
-
const flushThumbnails = async () => {
|
|
292
|
-
if (thumbCount === 0)
|
|
293
|
-
return;
|
|
294
|
-
if (!thumbDs) {
|
|
295
|
-
// Same flow as regular tables: create via API, then open with al://
|
|
296
|
-
// Uses atomic setEndpoint+open to prevent endpoint races.
|
|
297
|
-
const thumbAlPath = `al://${this.workspaceId}/thumbnails`;
|
|
298
|
-
const thumbPgSchema = {
|
|
299
|
-
column_name: 'TEXT',
|
|
300
|
-
content: 'IMAGE',
|
|
301
|
-
dimension: 'TEXT',
|
|
302
|
-
file_id: 'TEXT',
|
|
303
|
-
};
|
|
304
|
-
await this.createTableViaApi('thumbnails', thumbAlPath, thumbPgSchema);
|
|
305
|
-
thumbDs = await (0, wasm_common_1.deeplakeSetEndpointAndOpen)(this.apiUrl, thumbAlPath, '', this.token);
|
|
306
|
-
}
|
|
307
|
-
await (0, wasm_common_1.deeplakeAppend)(thumbDs, thumbBuffer);
|
|
308
|
-
for (const k of Object.keys(thumbBuffer)) {
|
|
309
|
-
thumbBuffer[k] = [];
|
|
310
|
-
}
|
|
311
|
-
thumbCount = 0;
|
|
312
|
-
};
|
|
313
|
-
const generateThumbnailsForBuffer = async (buf) => {
|
|
314
|
-
if (!sharp || imageCols.length === 0)
|
|
315
|
-
return;
|
|
316
|
-
const idVals = (buf['_id'] ?? []);
|
|
317
|
-
for (const col of imageCols) {
|
|
318
|
-
if (!(col in buf))
|
|
319
|
-
continue;
|
|
320
|
-
const values = buf[col];
|
|
321
|
-
for (let i = 0; i < values.length; i++) {
|
|
322
|
-
const val = values[i];
|
|
323
|
-
let raw;
|
|
324
|
-
if (Buffer.isBuffer(val)) {
|
|
325
|
-
raw = val;
|
|
326
|
-
}
|
|
327
|
-
else if (val instanceof Uint8Array) {
|
|
328
|
-
raw = Buffer.from(val);
|
|
329
|
-
}
|
|
330
|
-
else {
|
|
331
|
-
continue;
|
|
332
|
-
}
|
|
333
|
-
if (raw.length === 0)
|
|
334
|
-
continue;
|
|
335
|
-
const fid = i < idVals.length ? idVals[i] : String(rowCount + i);
|
|
336
|
-
for (const [w, h] of ManagedClient.THUMBNAIL_SIZES) {
|
|
337
|
-
try {
|
|
338
|
-
const thumbBuf = await sharp(raw)
|
|
339
|
-
.resize(w, h, { fit: 'inside' })
|
|
340
|
-
.jpeg({ quality: 85 })
|
|
341
|
-
.toBuffer();
|
|
342
|
-
thumbBuffer.file_id.push(fid);
|
|
343
|
-
thumbBuffer.column_name.push(col);
|
|
344
|
-
thumbBuffer.dimension.push(`${w}x${h}`);
|
|
345
|
-
thumbBuffer.content.push(thumbBuf);
|
|
346
|
-
thumbCount++;
|
|
347
|
-
}
|
|
348
|
-
catch {
|
|
349
|
-
// Skip this thumbnail
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
if (thumbCount >= 200) {
|
|
353
|
-
await flushThumbnails();
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
};
|
|
358
345
|
for await (const batch of batches) {
|
|
359
346
|
if (!batch)
|
|
360
347
|
continue;
|
|
@@ -363,8 +350,6 @@ class ManagedClient {
|
|
|
363
350
|
continue;
|
|
364
351
|
const batchRows = Array.isArray(firstCol) ? firstCol.length : 1;
|
|
365
352
|
// Inject _id (UUID) if not already present or wrong length.
|
|
366
|
-
// Format generators may carry over an empty _id array from
|
|
367
|
-
// a previous yield, so always verify the length matches.
|
|
368
353
|
const idCol = batch['_id'];
|
|
369
354
|
if (!idCol || (Array.isArray(idCol) && idCol.length !== batchRows)) {
|
|
370
355
|
batch['_id'] = Array.from({ length: batchRows }, () => crypto.randomUUID());
|
|
@@ -386,12 +371,14 @@ class ManagedClient {
|
|
|
386
371
|
bufferRows += batchRows;
|
|
387
372
|
// Flush buffer when large enough
|
|
388
373
|
if (bufferRows >= flushEvery) {
|
|
374
|
+
// Generate inline thumbnails before flushing
|
|
375
|
+
if (sharp && imageCols.length > 0) {
|
|
376
|
+
await ManagedClient.generateInlineThumbnails(buffer, imageCols, sharp);
|
|
377
|
+
}
|
|
389
378
|
if (!columnsEnsured) {
|
|
390
379
|
(0, schema_1.ensureColumns)(ds, buffer, schema);
|
|
391
380
|
columnsEnsured = true;
|
|
392
381
|
}
|
|
393
|
-
// Generate thumbnails from buffer before flushing
|
|
394
|
-
await generateThumbnailsForBuffer(buffer);
|
|
395
382
|
await (0, wasm_common_1.deeplakeAppend)(ds, buffer);
|
|
396
383
|
rowCount += bufferRows;
|
|
397
384
|
rowsSinceCommit += bufferRows;
|
|
@@ -409,37 +396,27 @@ class ManagedClient {
|
|
|
409
396
|
}
|
|
410
397
|
// Flush remaining rows
|
|
411
398
|
if (bufferRows > 0) {
|
|
399
|
+
if (sharp && imageCols.length > 0) {
|
|
400
|
+
await ManagedClient.generateInlineThumbnails(buffer, imageCols, sharp);
|
|
401
|
+
}
|
|
412
402
|
if (!columnsEnsured) {
|
|
413
403
|
(0, schema_1.ensureColumns)(ds, buffer, schema);
|
|
414
404
|
}
|
|
415
|
-
await generateThumbnailsForBuffer(buffer);
|
|
416
405
|
await (0, wasm_common_1.deeplakeAppend)(ds, buffer);
|
|
417
406
|
rowCount += bufferRows;
|
|
418
407
|
if (onProgress) {
|
|
419
408
|
onProgress(rowCount, -1);
|
|
420
409
|
}
|
|
421
410
|
}
|
|
422
|
-
// Flush remaining thumbnails and commit
|
|
423
|
-
if (thumbCount > 0 || thumbDs) {
|
|
424
|
-
try {
|
|
425
|
-
await flushThumbnails();
|
|
426
|
-
if (thumbDs) {
|
|
427
|
-
await (0, wasm_common_1.deeplakeCommit)(thumbDs);
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
catch {
|
|
431
|
-
// Thumbnail finalization failed — non-fatal
|
|
432
|
-
}
|
|
433
|
-
finally {
|
|
434
|
-
if (thumbDs)
|
|
435
|
-
(0, wasm_common_1.deeplakeRelease)(thumbDs);
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
411
|
return rowCount;
|
|
439
412
|
}
|
|
440
413
|
// ------------------------------------------------------------------
|
|
441
414
|
// Table management via REST API
|
|
442
415
|
// ------------------------------------------------------------------
|
|
416
|
+
/**
|
|
417
|
+
* Create a table via the REST API.
|
|
418
|
+
* @returns `true` if the table was newly created, `false` if it already existed.
|
|
419
|
+
*/
|
|
443
420
|
async createTableViaApi(tableName, _datasetPath, pgSchema) {
|
|
444
421
|
await this.ensureInitialized();
|
|
445
422
|
try {
|
|
@@ -452,12 +429,13 @@ class ManagedClient {
|
|
|
452
429
|
body,
|
|
453
430
|
timeoutMs: 30_000,
|
|
454
431
|
});
|
|
432
|
+
return true;
|
|
455
433
|
}
|
|
456
434
|
catch (e) {
|
|
457
435
|
if (e instanceof errors_1.TableError &&
|
|
458
436
|
String(e.message).toLowerCase().includes('already exists')) {
|
|
459
437
|
// Table already exists — ok
|
|
460
|
-
return;
|
|
438
|
+
return false;
|
|
461
439
|
}
|
|
462
440
|
throw e;
|
|
463
441
|
}
|
|
@@ -465,18 +443,31 @@ class ManagedClient {
|
|
|
465
443
|
// ------------------------------------------------------------------
|
|
466
444
|
// Query via REST API
|
|
467
445
|
// ------------------------------------------------------------------
|
|
468
|
-
|
|
446
|
+
/**
|
|
447
|
+
* Execute a SQL query via the managed service API.
|
|
448
|
+
*
|
|
449
|
+
* @param sql — SQL query string.
|
|
450
|
+
* @param params — Optional query parameters (for $1, $2, … placeholders).
|
|
451
|
+
* @param options — Optional settings.
|
|
452
|
+
* @param options.timeoutMs — HTTP request timeout in milliseconds (default 60 000).
|
|
453
|
+
* Increase for long-running queries such as large aggregations or index builds.
|
|
454
|
+
*/
|
|
455
|
+
async query(sql, params, options) {
|
|
469
456
|
await this.ensureInitialized();
|
|
457
|
+
const timeoutMs = options?.timeoutMs ?? 60_000;
|
|
470
458
|
const body = { query: sql };
|
|
471
459
|
if (params && params.length > 0) {
|
|
472
460
|
body.params = params;
|
|
473
461
|
}
|
|
462
|
+
if (timeoutMs !== 60_000) {
|
|
463
|
+
body.timeout_ms = timeoutMs;
|
|
464
|
+
}
|
|
474
465
|
try {
|
|
475
466
|
const resp = await (0, api_1.apiRequest)(this.apiUrl, this.token, this.orgId, {
|
|
476
467
|
method: 'POST',
|
|
477
468
|
path: `/workspaces/${this.workspaceId}/tables/query`,
|
|
478
469
|
body,
|
|
479
|
-
timeoutMs
|
|
470
|
+
timeoutMs,
|
|
480
471
|
});
|
|
481
472
|
const columns = (resp.columns ?? []);
|
|
482
473
|
const rows = (resp.rows ?? []);
|
|
@@ -556,6 +547,10 @@ class ManagedClient {
|
|
|
556
547
|
// ------------------------------------------------------------------
|
|
557
548
|
// Direct dataset data access (bypasses SQL query API)
|
|
558
549
|
// ------------------------------------------------------------------
|
|
550
|
+
/**
|
|
551
|
+
* Get a single field value from a table row, reading directly from the
|
|
552
|
+
* underlying dataset (no SQL query).
|
|
553
|
+
*/
|
|
559
554
|
async getField(tableName, rowIndex, column) {
|
|
560
555
|
const ds = await this.openTable(tableName);
|
|
561
556
|
try {
|
|
@@ -565,6 +560,10 @@ class ManagedClient {
|
|
|
565
560
|
(0, wasm_common_1.deeplakeRelease)(ds);
|
|
566
561
|
}
|
|
567
562
|
}
|
|
563
|
+
/**
|
|
564
|
+
* Get multiple fields from a table row, reading directly from the
|
|
565
|
+
* underlying dataset. Returns a plain object { col: value, ... }.
|
|
566
|
+
*/
|
|
568
567
|
async getRow(tableName, rowIndex, columns) {
|
|
569
568
|
const ds = await this.openTable(tableName);
|
|
570
569
|
try {
|
|
@@ -574,6 +573,10 @@ class ManagedClient {
|
|
|
574
573
|
(0, wasm_common_1.deeplakeRelease)(ds);
|
|
575
574
|
}
|
|
576
575
|
}
|
|
576
|
+
/**
|
|
577
|
+
* Get a column's data for a range of rows, reading directly from the
|
|
578
|
+
* underlying dataset. Returns the raw array data.
|
|
579
|
+
*/
|
|
577
580
|
async getColumnData(tableName, column, start, end) {
|
|
578
581
|
const ds = await this.openTable(tableName);
|
|
579
582
|
try {
|
|
@@ -583,6 +586,10 @@ class ManagedClient {
|
|
|
583
586
|
(0, wasm_common_1.deeplakeRelease)(ds);
|
|
584
587
|
}
|
|
585
588
|
}
|
|
589
|
+
/**
|
|
590
|
+
* Get the number of rows in a table by reading the underlying dataset
|
|
591
|
+
* directly (no SQL query).
|
|
592
|
+
*/
|
|
586
593
|
async getNumRows(tableName) {
|
|
587
594
|
const ds = await this.openTable(tableName);
|
|
588
595
|
try {
|
|
@@ -592,6 +599,11 @@ class ManagedClient {
|
|
|
592
599
|
(0, wasm_common_1.deeplakeRelease)(ds);
|
|
593
600
|
}
|
|
594
601
|
}
|
|
602
|
+
/**
|
|
603
|
+
* Fetch actual data for a DLREF data reference.
|
|
604
|
+
* Resolves a (column_id, row_id) pair from a DLREF into the raw data
|
|
605
|
+
* by reading directly from the underlying dataset storage.
|
|
606
|
+
*/
|
|
595
607
|
async getSampleByRef(tableName, columnId, rowId) {
|
|
596
608
|
const ds = await this.openTable(tableName);
|
|
597
609
|
try {
|
|
@@ -601,6 +613,10 @@ class ManagedClient {
|
|
|
601
613
|
(0, wasm_common_1.deeplakeRelease)(ds);
|
|
602
614
|
}
|
|
603
615
|
}
|
|
616
|
+
/**
|
|
617
|
+
* Set a single field value on a table row and commit.
|
|
618
|
+
* Writes directly to the underlying dataset (no SQL query).
|
|
619
|
+
*/
|
|
604
620
|
async setField(tableName, rowIndex, column, value) {
|
|
605
621
|
const ds = await this.openTable(tableName);
|
|
606
622
|
try {
|
|
@@ -611,6 +627,10 @@ class ManagedClient {
|
|
|
611
627
|
(0, wasm_common_1.deeplakeRelease)(ds);
|
|
612
628
|
}
|
|
613
629
|
}
|
|
630
|
+
/**
|
|
631
|
+
* Set multiple field values on a table row and commit.
|
|
632
|
+
* Writes directly to the underlying dataset (no SQL query).
|
|
633
|
+
*/
|
|
614
634
|
async setRow(tableName, rowIndex, data) {
|
|
615
635
|
const ds = await this.openTable(tableName);
|
|
616
636
|
try {
|
|
@@ -624,6 +644,15 @@ class ManagedClient {
|
|
|
624
644
|
// ------------------------------------------------------------------
|
|
625
645
|
// Thumbnail generation
|
|
626
646
|
// ------------------------------------------------------------------
|
|
647
|
+
/**
|
|
648
|
+
* Detect which columns contain IMAGE data for thumbnail generation.
|
|
649
|
+
*
|
|
650
|
+
* Sources (in priority order):
|
|
651
|
+
* 1. format.image_columns() — explicit declaration from a Format object
|
|
652
|
+
* 2. format.pg_schema() — columns with type "IMAGE"
|
|
653
|
+
* 3. pgSchema — inferred schema columns with BYTEA that came from
|
|
654
|
+
* image file normalizers (the image normalizer names its column "image")
|
|
655
|
+
*/
|
|
627
656
|
detectImageColumns(format, _pgSchema, firstBatch) {
|
|
628
657
|
// 1. Format declares image_columns explicitly
|
|
629
658
|
if (format && typeof format.image_columns === 'function') {
|
|
@@ -650,9 +679,6 @@ class ManagedClient {
|
|
|
650
679
|
}
|
|
651
680
|
return [];
|
|
652
681
|
}
|
|
653
|
-
static THUMBNAIL_SIZES = [
|
|
654
|
-
[32, 32], [64, 64], [128, 128], [256, 256],
|
|
655
|
-
];
|
|
656
682
|
}
|
|
657
683
|
exports.ManagedClient = ManagedClient;
|
|
658
684
|
// =====================================================================
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/node/client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AACjC,uCAA2C;AAC3C,uDAG+B;AAC/B,iDAAyD;AACzD,6CAK0B;AAC1B,6CAAgE;AAChE,2CAAqE;AACrE,6CAA8C;AAU9C,uDAY+B;AAC/B,6CAAmD;AACnD,+CAAqD;AACrD,2DAAiE;AAEjE,MAAM,eAAe,GAAG,yBAAyB,CAAC;AAElD,MAAa,aAAa;IACf,KAAK,CAAS;IACd,WAAW,CAAS;IACpB,MAAM,CAAS;IACxB,KAAK,CAAS;IAEN,SAAS,GAAkB,IAAI,CAAC;IAChC,cAAc,CAAU;IACxB,aAAa,GAAyB,IAAI,CAAC;IAEnD,YAAY,OAA6B;QACvC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,kBAAS,CACjB,iGAAiG,CAClG,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAE3B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,SAAS,CAAC;QACpD,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,eAAe,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAEtE,oDAAoD;QACpD,MAAM,SAAS,GAAG,IAAA,uBAAe,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC9B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,IAAI,IAAI,CAAC,cAAc;YAAE,OAAO;QAChC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC5C,CAAC;QACD,MAAM,IAAI,CAAC,aAAa,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,MAAM,KAAK,GAAG,MAAM,IAAA,yBAAiB,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,mBAAU,CAAC,6DAA6D,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAiB;QACrB,OAAO,IAAI,8BAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAClD,CAAC;IAGD,qEAAqE;IACrE,eAAe;IACf,qEAAqE;IAErE,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC;QAEnD,MAAM,IAAI,GAAG,MAAM,IAAA,gBAAU,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YACjE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,eAAe,IAAI,CAAC,WAAW,eAAe;SACrD,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,YAAkC,CAAC;QAC5D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,4BAAmB,CAC3B,2CAA2C,IAAI,CAAC,WAAW,GAAG,CAC/D,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC;QAC7B,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAChE,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC9C,OAAO,GAAG,QAAQ,IAAI,SAAS,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,GAAG,QAAQ,IAAI,IAAI,CAAC,WAAW,IAAI,SAAS,EAAE,CAAC;IACxD,CAAC;IAED,qEAAqE;IACrE,sBAAsB;IACtB,qEAAqE;IAErE,KAAK,CAAC,eAAe,CAAC,OAAe,WAAW;QAC9C,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,OAAO,IAAA,6BAAe,EACpB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,WAAW,EAChB,IAAI,CACL,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAe,WAAW;QAChD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAA,+BAAiB,EAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,qEAAqE;IACrE,kBAAkB;IAClB,qEAAqE;IAErE,KAAK,CAAC,MAAM,CACV,SAAiB,EACjB,IAAuC,EACvC,OAAuB;QAEvB,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;QAE/B,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,oBAAW,CAAC,yCAAyC,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7C,MAAM,IAAI,oBAAW,CAAC,+BAA+B,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACrE,MAAM,IAAI,oBAAW,CAAC,yBAAyB,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;QAC7B,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;QACvC,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC;QAC7C,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,GAAG,CAAC;QAElD,iEAAiE;QACjE,4DAA4D;QAC5D,MAAM,MAAM,GAAG,QAAQ,IAAI,CAAC,WAAW,IAAI,SAAS,EAAE,CAAC;QAEvD,IAAI,CAAC;YACH,yBAAyB;YACzB,IAAI,OAA+C,CAAC;YAEpD,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;oBAC3C,MAAM,IAAI,oBAAW,CAAC,+CAA+C,CAAC,CAAC;gBACzE,CAAC;gBACD,sDAAsD;gBACtD,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;oBACxC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;oBAClC,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;oBAC/C,CAAC;gBACH,CAAC;gBACD,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YAC/B,CAAC;iBAAM,IAAI,IAAI,IAAI,IAAI,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;gBAClD,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;gBACtC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;oBACnE,MAAM,IAAI,oBAAW,CACnB,4CAA4C,OAAO,WAAW,GAAG,CAClE,CAAC;gBACJ,CAAC;gBACD,OAAO,GAAG,IAAA,kCAAoB,EAC5B,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAC1E,CAAC;YACJ,CAAC;iBAAM,IACL,MAAM;gBACN,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,EAC7D,CAAC;gBACD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;qBACvC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;qBAC7C,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBACnB,MAAM,QAAQ,GAAa,EAAE,CAAC;gBAC9B,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;oBAC9B,IAAI,CAAC,CAAC,GAAG,IAAI,IAAK,CAAC,EAAE,CAAC;wBACpB,MAAM,IAAI,oBAAW,CACnB,oBAAoB,GAAG,mCAAmC,CAC3D,CAAC;oBACJ,CAAC;oBACD,QAAQ,CAAC,IAAI,CAAC,GAAI,IAAK,CAAC,GAAG,CAAc,CAAC,CAAC;gBAC7C,CAAC;gBACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1B,MAAM,IAAI,oBAAW,CAAC,qCAAqC,CAAC,CAAC;gBAC/D,CAAC;gBACD,OAAO,GAAG,IAAA,sBAAc,EAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;YAC9D,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,IAAA,oBAAa,EAAC,IAAkC,CAAC,CAAC;YAC9D,CAAC;YAED,8CAA8C;YAC9C,MAAM,IAAI,GACR,MAAM,CAAC,aAAa,IAAK,OAAe;gBACtC,CAAC,CAAE,OAAgC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;gBAC3D,CAAC,CAAE,OAA2B,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAEtD,MAAM,WAAW,GAAG,MAAO,IAAY,CAAC,IAAI,EAAE,CAAC;YAC/C,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;gBACrB,MAAM,IAAI,oBAAW,CAAC,oBAAoB,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,UAAU,GAAU,WAAW,CAAC,KAAK,CAAC;YAE1C,8DAA8D;YAC9D,IAAI,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC;gBAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9C,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxD,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YAC3E,CAAC;YAED,6DAA6D;YAC7D,gEAAgE;YAChE,6DAA6D;YAC7D,UAAU,GAAG,MAAM,CAAC,WAAW,CAC7B,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAClE,CAAC;YAEF,MAAM,QAAQ,GAAG,IAAA,sBAAa,EAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAE3D,+DAA+D;YAC/D,kCAAkC;YAClC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAE/E,mEAAmE;YACnE,uEAAuE;YACvE,sEAAsE;YACtE,oCAAoC;YACpC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAC5C,CAAC;YAAC,OAAO,OAAO,EAAE,CAAC;gBACjB,kEAAkE;gBAClE,2DAA2D;gBAC3D,OAAO,CAAC,IAAI,CACV,qDAAqD,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAC5G,CAAC;YACJ,CAAC;YAED,8DAA8D;YAC9D,wDAAwD;YACxD,sCAAsC;YACtC,kEAAkE;YAClE,uDAAuD;YACvD,MAAM,EAAE,GAAG,MAAM,IAAA,wCAA0B,EAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAEjF,IAAI,CAAC;gBAEH,gDAAgD;gBAChD,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAExE,uDAAuD;gBACvD,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,EAAE,IAAW,CAAC,CAAC;gBACzD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CACtC,EAAE,EACF,UAAU,EACV,MAAM,EACN,UAAU,EACV,SAAS,CACV,CAAC;gBAEF,mEAAmE;gBACnE,MAAM,IAAA,4BAAc,EAAC,EAAE,CAAC,CAAC;gBAEzB,sCAAsC;gBACtC,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;oBACnB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;wBAChC,IAAI,CAAC;4BACH,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;wBACzC,CAAC;wBAAC,OAAO,CAAC,EAAE,CAAC;4BACX,uCAAuC;4BACvC,OAAO,CAAC,IAAI,CACV,6BAA6B,SAAS,IAAI,GAAG,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CACvF,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;YACtD,CAAC;YAAC,OAAO,SAAS,EAAE,CAAC;gBACnB,8DAA8D;gBAC9D,yDAAyD;gBACzD,IAAI,YAAY,EAAE,CAAC;oBACjB,IAAI,CAAC;wBACH,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;oBAClC,CAAC;oBAAC,MAAM,CAAC;wBACP,sDAAsD;oBACxD,CAAC;gBACH,CAAC;gBACD,MAAM,SAAS,CAAC;YAClB,CAAC;oBAAS,CAAC;gBACT,IAAA,6BAAe,EAAC,EAAE,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,oBAAW,IAAI,CAAC,YAAY,4BAAmB;gBAAE,MAAM,CAAC,CAAC;YAC1E,MAAM,IAAI,oBAAW,CACnB,0BAA0B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAC/D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,gBAAgB;IAChB,qEAAqE;IAErE;;;;OAIG;IACK,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAC3C,GAAU,EACV,SAAmB,EACnB,KAAU;QAEV,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC;gBAAE,SAAS;YAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAc,CAAC;YACrC,MAAM,QAAQ,GAAG,GAAG,GAAG,YAAY,CAAC;YAEpC,6DAA6D;YAC7D,iEAAiE;YACjE,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACvB,IAAI,GAAG,GAAkB,IAAI,CAAC;gBAC9B,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACzB,GAAG,GAAG,GAAG,CAAC;gBACZ,CAAC;qBAAM,IAAI,GAAG,YAAY,UAAU,EAAE,CAAC;oBACrC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;gBAED,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC7B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACzB,CAAC;gBAED,IAAI,CAAC;oBACH,OAAO,MAAM,KAAK,CAAC,GAAG,CAAC;yBACpB,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;yBACnC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;yBACrB,QAAQ,EAAE,CAAC;gBAChB,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC,CAAC,CACH,CAAC;YAEF,GAAG,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;QAC7B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,EAAO,EACP,OAA6B,EAC7B,MAAkB,EAClB,UAAuD,EACvD,YAAsB,EAAE,EACxB,aAAqB,GAAG,EACxB,cAAsB,IAAI;QAE1B,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,MAAM,GAAU,EAAE,CAAC;QACvB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,IAAI,eAAe,GAAG,CAAC,CAAC;QAExB,oDAAoD;QACpD,IAAI,KAAK,GAAQ,IAAI,CAAC;QACtB,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;YAAC,MAAM,CAAC;gBACP,kDAAkD;YACpD,CAAC;QACH,CAAC;QAED,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK;gBAAE,SAAS;YAErB,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAE/D,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAEhE,4DAA4D;YAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC;gBACnE,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YAC9E,CAAC;YAED,0BAA0B;YAC1B,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClD,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC;oBACrB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC/D,CAAC;qBAAM,CAAC;oBACN,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;wBACzB,MAAM,CAAC,GAAG,CAAe,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;oBAC7C,CAAC;yBAAM,CAAC;wBACL,MAAM,CAAC,GAAG,CAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC1C,CAAC;gBACH,CAAC;YACH,CAAC;YACD,UAAU,IAAI,SAAS,CAAC;YAExB,iCAAiC;YACjC,IAAI,UAAU,IAAI,UAAU,EAAE,CAAC;gBAC7B,6CAA6C;gBAC7C,IAAI,KAAK,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClC,MAAM,aAAa,CAAC,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;gBACzE,CAAC;gBAED,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,IAAA,sBAAa,EAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;oBAClC,cAAc,GAAG,IAAI,CAAC;gBACxB,CAAC;gBAED,MAAM,IAAA,4BAAc,EAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBACjC,QAAQ,IAAI,UAAU,CAAC;gBACvB,eAAe,IAAI,UAAU,CAAC;gBAC9B,MAAM,GAAG,EAAE,CAAC;gBACZ,UAAU,GAAG,CAAC,CAAC;gBAEf,IAAI,UAAU,EAAE,CAAC;oBACf,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC3B,CAAC;gBAED,gEAAgE;gBAChE,IAAI,eAAe,IAAI,WAAW,EAAE,CAAC;oBACnC,MAAM,IAAA,4BAAc,EAAC,EAAE,CAAC,CAAC;oBACzB,eAAe,GAAG,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACnB,IAAI,KAAK,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,MAAM,aAAa,CAAC,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACzE,CAAC;YAED,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,IAAA,sBAAa,EAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YACpC,CAAC;YAED,MAAM,IAAA,4BAAc,EAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACjC,QAAQ,IAAI,UAAU,CAAC;YAEvB,IAAI,UAAU,EAAE,CAAC;gBACf,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,qEAAqE;IACrE,gCAAgC;IAChC,qEAAqE;IAErE;;;OAGG;IACK,KAAK,CAAC,iBAAiB,CAC7B,SAAiB,EACjB,YAAoB,EACpB,QAAiC;QAEjC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,IAAI,GAA4B,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;YAChE,IAAI,QAAQ;gBAAE,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;YAC3C,MAAM,IAAA,gBAAU,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;gBACpD,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,eAAe,IAAI,CAAC,WAAW,SAAS;gBAC9C,IAAI;gBACJ,SAAS,EAAE,MAAM;aAClB,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IACE,CAAC,YAAY,mBAAU;gBACvB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAC1D,CAAC;gBACD,4BAA4B;gBAC5B,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,qBAAqB;IACrB,qEAAqE;IAErE;;;;;;;;OAQG;IACH,KAAK,CAAC,KAAK,CACT,GAAW,EACX,MAAkB,EAClB,OAAgC;QAEhC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,MAAM,CAAC;QAC/C,MAAM,IAAI,GAA4B,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QACrD,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC;QACD,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAA,gBAAU,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;gBACjE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,eAAe,IAAI,CAAC,WAAW,eAAe;gBACpD,IAAI;gBACJ,SAAS;aACV,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAa,CAAC;YACjD,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAgB,CAAC;YAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACtB,MAAM,GAAG,GAAa,EAAE,CAAC;gBACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACxC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC3B,CAAC;gBACD,OAAO,GAAG,CAAC;YACb,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,4BAAmB,EAAE,CAAC;gBACrC,MAAM,IAAI,mBAAU,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,MAAM,IAAI,mBAAU,CAClB,iBAAiB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CACtD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,kCAAkC;IAClC,qEAAqE;IAErE,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,MAAM,IAAA,gBAAU,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YACjE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,eAAe,IAAI,CAAC,WAAW,SAAS;SAC/C,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAA6B,CAAC;QAC/D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,WAAoB,IAAI;QACzD,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,IAAA,gBAAU,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;gBACpD,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,eAAe,IAAI,CAAC,WAAW,WAAW,SAAS,EAAE;aAC5D,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IACE,QAAQ;gBACR,CAAC,YAAY,4BAAmB;gBAChC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EACrD,CAAC;gBACD,OAAO;YACT,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,MAAc;QACjD,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,OAAO,SAAS,IAAI,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjE,MAAM,GAAG,GAAG,+BAA+B,OAAO,SAAS,SAAS,4BAA4B,OAAO,IAAI,CAAC;QAC5G,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IACE,CAAC,YAAY,mBAAU;gBACvB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAC1D,CAAC;gBACD,OAAO;YACT,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAiB;QAC/B,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,QAAQ,IAAI,CAAC,WAAW,IAAI,SAAS,EAAE,CAAC;QAEvD,kEAAkE;QAClE,uDAAuD;QACvD,OAAO,IAAA,wCAA0B,EAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACzE,CAAC;IAED,qEAAqE;IACrE,sDAAsD;IACtD,qEAAqE;IAErE;;;OAGG;IACH,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,QAAgB,EAAE,MAAc;QAChE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,OAAO,MAAM,IAAA,8BAAgB,EAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACtD,CAAC;gBAAS,CAAC;YACT,IAAA,6BAAe,EAAC,EAAE,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CACV,SAAiB,EACjB,QAAgB,EAChB,OAAiB;QAEjB,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,OAAO,MAAM,IAAA,4BAAc,EAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;gBAAS,CAAC;YACT,IAAA,6BAAe,EAAC,EAAE,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CACjB,SAAiB,EACjB,MAAc,EACd,KAAa,EACb,GAAW;QAEX,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,OAAO,MAAM,IAAA,mCAAqB,EAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAC7D,CAAC;gBAAS,CAAC;YACT,IAAA,6BAAe,EAAC,EAAE,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,OAAO,IAAA,6BAAe,EAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;gBAAS,CAAC;YACT,IAAA,6BAAe,EAAC,EAAE,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAClB,SAAiB,EACjB,QAAgB,EAChB,KAAa;QAEb,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,OAAO,MAAM,IAAA,oCAAsB,EAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC3D,CAAC;gBAAS,CAAC;YACT,IAAA,6BAAe,EAAC,EAAE,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ,CACZ,SAAiB,EACjB,QAAgB,EAChB,MAAc,EACd,KAAU;QAEV,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,IAAA,8BAAgB,EAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YACpD,MAAM,IAAA,4BAAc,EAAC,EAAE,EAAE,YAAY,MAAM,IAAI,QAAQ,GAAG,CAAC,CAAC;QAC9D,CAAC;gBAAS,CAAC;YACT,IAAA,6BAAe,EAAC,EAAE,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CACV,SAAiB,EACjB,QAAgB,EAChB,IAAyB;QAEzB,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,IAAA,4BAAc,EAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,IAAA,4BAAc,EAAC,EAAE,EAAE,UAAU,QAAQ,GAAG,CAAC,CAAC;QAClD,CAAC;gBAAS,CAAC;YACT,IAAA,6BAAe,EAAC,EAAE,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,uBAAuB;IACvB,qEAAqE;IAErE;;;;;;;;OAQG;IACK,kBAAkB,CACxB,MAAiC,EACjC,SAAiC,EACjC,UAAiB;QAEjB,8CAA8C;QAC9C,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;YACzD,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;YACpC,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC3C,CAAC;QAED,0CAA0C;QAC1C,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;YACrD,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;iBAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC;iBAC9C,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;QACnC,CAAC;QAED,sEAAsE;QACtE,kEAAkE;QAClE,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;YACxF,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,YAAY,UAAU,EAAE,CAAC;gBAC5D,OAAO,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;CAEF;AAvwBD,sCAuwBC;AAED,wEAAwE;AACxE,UAAU;AACV,wEAAwE;AAExE,KAAK,SAAS,CAAC,CAAC,YAAY,CAC1B,KAAY,EACZ,IAA4C;IAE5C,MAAM,KAAK,CAAC;IAEZ,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,MAAO,IAAY,CAAC,IAAI,EAAE,CAAC;QAC1C,IAAI,MAAM,CAAC,IAAI;YAAE,MAAM;QACvB,MAAM,MAAM,CAAC,KAAK,CAAC;IACrB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* COCO (Common Objects in Context) detection/captions format normalizer.
|
|
3
|
+
*
|
|
4
|
+
* Reads a COCO dataset directory and yields column-oriented batches
|
|
5
|
+
* suitable for `ManagedClient.ingest()`. Works with both train and val splits.
|
|
6
|
+
*
|
|
7
|
+
* Expected directory layout:
|
|
8
|
+
*
|
|
9
|
+
* coco_root/
|
|
10
|
+
* ├── train2017/ (or val2017/)
|
|
11
|
+
* │ ├── 000000000009.jpg
|
|
12
|
+
* │ └── ...
|
|
13
|
+
* └── annotations/
|
|
14
|
+
* ├── instances_train2017.json
|
|
15
|
+
* └── captions_train2017.json [optional]
|
|
16
|
+
*
|
|
17
|
+
* Columns produced per image (one row per image):
|
|
18
|
+
*
|
|
19
|
+
* coco_image_id - COCO image ID (int)
|
|
20
|
+
* image - Source image file bytes (IMAGE)
|
|
21
|
+
* mask - Segmentation mask PNG (SEGMENT_MASK)
|
|
22
|
+
* width - Image width in pixels
|
|
23
|
+
* height - Image height in pixels
|
|
24
|
+
* filename - Original image filename
|
|
25
|
+
* captions - JSON-encoded list of caption strings
|
|
26
|
+
* annotations - JSON-encoded list of annotation dicts
|
|
27
|
+
* categories - JSON-encoded category list (same for all rows)
|
|
28
|
+
* num_objects - Number of object annotations for this image
|
|
29
|
+
*
|
|
30
|
+
* No external dependencies — uses built-in Node.js `zlib` for PNG encoding
|
|
31
|
+
* and a pure JS scanline polygon rasterizer for mask rendering.
|
|
32
|
+
*/
|
|
33
|
+
import type { Batch, Format, SchemaMap } from '.././shared/types';
|
|
34
|
+
export interface CocoOptions {
|
|
35
|
+
/** Directory containing images (e.g. "coco/train2017"). */
|
|
36
|
+
imagesDir: string;
|
|
37
|
+
/** Directory containing annotation JSON files. Defaults to `<imagesDir>/../annotations`. */
|
|
38
|
+
annotationsDir?: string;
|
|
39
|
+
/** Explicit path to instances JSON. Auto-detected if omitted. */
|
|
40
|
+
instancesJson?: string;
|
|
41
|
+
/** Explicit path to captions JSON. Auto-detected if omitted. Set to `false` to skip. */
|
|
42
|
+
captionsJson?: string | false;
|
|
43
|
+
/** Number of images per yielded batch (default 100). */
|
|
44
|
+
batchSize?: number;
|
|
45
|
+
/** Maximum images to ingest (useful for testing). */
|
|
46
|
+
maxImages?: number;
|
|
47
|
+
}
|
|
48
|
+
export declare class Coco implements Format {
|
|
49
|
+
private imagesDir;
|
|
50
|
+
private batchSize;
|
|
51
|
+
private maxImages;
|
|
52
|
+
private _split;
|
|
53
|
+
private _annDir;
|
|
54
|
+
private _instancesJson;
|
|
55
|
+
private _captionsJson;
|
|
56
|
+
constructor(options: CocoOptions);
|
|
57
|
+
schema(): SchemaMap;
|
|
58
|
+
pg_schema(): Record<string, string>;
|
|
59
|
+
image_columns(): string[];
|
|
60
|
+
normalize(): Generator<Batch>;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=coco.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coco.d.ts","sourceRoot":"","sources":["../../../../src/node/formats/coco.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAKH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAsCnE,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,4FAA4F;IAC5F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wFAAwF;IACxF,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC9B,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,qBAAa,IAAK,YAAW,MAAM;IACjC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAgB;IAEjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,aAAa,CAAgB;gBAEzB,OAAO,EAAE,WAAW;IAgChC,MAAM,IAAI,SAAS;IAOnB,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAOnC,aAAa,IAAI,MAAM,EAAE;IAIxB,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC;CA8F/B"}
|