primitive-admin 1.0.26 → 1.0.28

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.
@@ -1,6 +1,8 @@
1
1
  import { ApiClient } from "../lib/api-client.js";
2
2
  import { resolveAppId } from "../lib/config.js";
3
- import { success, error, info, formatTable, formatDate, json, } from "../lib/output.js";
3
+ import { success, error, info, formatTable, formatDate, json, keyValue, warn, } from "../lib/output.js";
4
+ import * as fs from "fs";
5
+ import * as path from "path";
4
6
  export function registerDocumentsCommands(program) {
5
7
  const documents = program
6
8
  .command("documents")
@@ -138,6 +140,193 @@ Examples:
138
140
  process.exit(1);
139
141
  }
140
142
  });
143
+ // ---- Export / Import commands ----
144
+ documents
145
+ .command("export")
146
+ .description("Export a document (Yjs state, blobs, permissions, aliases)")
147
+ .argument("[app-id]", "App ID (uses current app if not specified)")
148
+ .argument("<document-id>", "Document ID to export")
149
+ .option("--app <app-id>", "App ID")
150
+ .option("--output <dir>", "Output directory", "./primitive-export")
151
+ .option("--no-blobs", "Skip blob data")
152
+ .option("--json", "Output as JSON")
153
+ .action(async (first, second, options) => {
154
+ let resolvedAppId;
155
+ let documentId;
156
+ if (second && !second.startsWith("-")) {
157
+ resolvedAppId = resolveAppId(first, options);
158
+ documentId = second;
159
+ }
160
+ else {
161
+ resolvedAppId = resolveAppId(undefined, options);
162
+ documentId = first;
163
+ }
164
+ if (!documentId) {
165
+ error("Document ID is required.");
166
+ process.exit(1);
167
+ }
168
+ const client = new ApiClient();
169
+ try {
170
+ await exportSingleDocument(client, resolvedAppId, documentId, options.output, options.blobs !== false ? true : false, options.json);
171
+ }
172
+ catch (err) {
173
+ error(err.message);
174
+ process.exit(1);
175
+ }
176
+ });
177
+ documents
178
+ .command("export-all")
179
+ .description("Export all documents for a user")
180
+ .argument("[app-id]", "App ID (uses current app if not specified)")
181
+ .requiredOption("--user-id <id>", "User ID to export documents for")
182
+ .option("--app <app-id>", "App ID")
183
+ .option("--owned-only", "Only export documents owned by the user")
184
+ .option("--output <dir>", "Output directory", "./primitive-export")
185
+ .option("--no-blobs", "Skip blob data")
186
+ .option("--json", "Output as JSON")
187
+ .action(async (appIdArg, options) => {
188
+ const resolvedAppId = resolveAppId(appIdArg, options);
189
+ const client = new ApiClient();
190
+ const includeBlobs = options.blobs !== false;
191
+ try {
192
+ const documents = await client.listAdminDocuments(resolvedAppId, options.userId);
193
+ let docList = Array.isArray(documents) ? documents : [];
194
+ if (options.ownedOnly) {
195
+ docList = docList.filter((d) => d.permission === "owner");
196
+ }
197
+ if (docList.length === 0) {
198
+ info("No documents found.");
199
+ return;
200
+ }
201
+ info(`Exporting ${docList.length} document(s)...`);
202
+ const exportedIds = [];
203
+ for (const doc of docList) {
204
+ const docId = doc.documentId || doc.id;
205
+ try {
206
+ await exportSingleDocument(client, resolvedAppId, docId, options.output, includeBlobs, false);
207
+ exportedIds.push(docId);
208
+ }
209
+ catch (err) {
210
+ warn(`Failed to export ${docId}: ${err.message}`);
211
+ }
212
+ }
213
+ // Write manifest
214
+ const manifestPath = path.join(options.output, "manifest.json");
215
+ const manifest = {
216
+ version: 1,
217
+ exportedAt: new Date().toISOString(),
218
+ sourceAppId: resolvedAppId,
219
+ documentCount: exportedIds.length,
220
+ documents: exportedIds,
221
+ };
222
+ fs.mkdirSync(path.dirname(manifestPath), { recursive: true });
223
+ fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));
224
+ if (options.json) {
225
+ json(manifest);
226
+ }
227
+ else {
228
+ success(`Exported ${exportedIds.length} document(s) to ${options.output}`);
229
+ }
230
+ }
231
+ catch (err) {
232
+ error(err.message);
233
+ process.exit(1);
234
+ }
235
+ });
236
+ documents
237
+ .command("import")
238
+ .description("Import documents from an export directory")
239
+ .argument("[app-id]", "App ID (uses current app if not specified)")
240
+ .argument("<path>", "Path to export directory or single document directory")
241
+ .option("--app <app-id>", "App ID")
242
+ .option("--aliases <mode>", "Alias conflict handling: overwrite or skip", "skip")
243
+ .option("--overwrite", "Replace existing documents if IDs collide")
244
+ .option("--dry-run", "Show what would be imported without making changes")
245
+ .option("--json", "Output as JSON")
246
+ .action(async (first, second, options) => {
247
+ let resolvedAppId;
248
+ let importPath;
249
+ if (second && !second.startsWith("-")) {
250
+ resolvedAppId = resolveAppId(first, options);
251
+ importPath = second;
252
+ }
253
+ else {
254
+ resolvedAppId = resolveAppId(undefined, options);
255
+ importPath = first;
256
+ }
257
+ if (!importPath) {
258
+ error("Import path is required.");
259
+ process.exit(1);
260
+ }
261
+ const client = new ApiClient();
262
+ try {
263
+ // Determine if this is a manifest-based export or a single document
264
+ const manifestPath = path.join(importPath, "manifest.json");
265
+ let docDirs = [];
266
+ if (fs.existsSync(manifestPath)) {
267
+ const manifest = JSON.parse(fs.readFileSync(manifestPath, "utf-8"));
268
+ for (const docId of manifest.documents) {
269
+ const docDir = path.join(importPath, "documents", docId);
270
+ if (fs.existsSync(docDir)) {
271
+ docDirs.push(docDir);
272
+ }
273
+ }
274
+ }
275
+ else if (fs.existsSync(path.join(importPath, "metadata.json"))) {
276
+ // Single document directory
277
+ docDirs = [importPath];
278
+ }
279
+ else if (fs.existsSync(path.join(importPath, "documents"))) {
280
+ // Export directory without manifest — discover documents
281
+ const entries = fs.readdirSync(path.join(importPath, "documents"), { withFileTypes: true });
282
+ for (const entry of entries) {
283
+ if (entry.isDirectory()) {
284
+ docDirs.push(path.join(importPath, "documents", entry.name));
285
+ }
286
+ }
287
+ }
288
+ else {
289
+ error("No valid export data found at the specified path.");
290
+ process.exit(1);
291
+ }
292
+ if (docDirs.length === 0) {
293
+ info("No documents to import.");
294
+ return;
295
+ }
296
+ const summary = {
297
+ created: 0,
298
+ updated: 0,
299
+ skipped: 0,
300
+ blobsUploaded: 0,
301
+ aliasesSet: 0,
302
+ aliasesSkipped: 0,
303
+ };
304
+ for (const docDir of docDirs) {
305
+ await importSingleDocument(client, resolvedAppId, docDir, options.overwrite || false, options.aliases || "skip", options.dryRun || false, summary);
306
+ }
307
+ if (options.json) {
308
+ json(summary);
309
+ }
310
+ else {
311
+ success(`Import complete:`);
312
+ keyValue(" Documents created", String(summary.created));
313
+ if (summary.updated > 0)
314
+ keyValue(" Documents updated", String(summary.updated));
315
+ if (summary.skipped > 0)
316
+ keyValue(" Documents skipped", String(summary.skipped));
317
+ if (summary.blobsUploaded > 0)
318
+ keyValue(" Blobs uploaded", String(summary.blobsUploaded));
319
+ if (summary.aliasesSet > 0)
320
+ keyValue(" Aliases set", String(summary.aliasesSet));
321
+ if (summary.aliasesSkipped > 0)
322
+ keyValue(" Aliases skipped", String(summary.aliasesSkipped));
323
+ }
324
+ }
325
+ catch (err) {
326
+ error(err.message);
327
+ process.exit(1);
328
+ }
329
+ });
141
330
  // Revoke group permission
142
331
  groupPermissions
143
332
  .command("revoke")
@@ -175,4 +364,205 @@ Examples:
175
364
  }
176
365
  });
177
366
  }
367
+ // ============================================
368
+ // Helper functions for export/import
369
+ // ============================================
370
+ async function exportSingleDocument(client, appId, documentId, outputDir, includeBlobs, jsonOutput) {
371
+ const docDir = path.join(outputDir, "documents", documentId);
372
+ fs.mkdirSync(docDir, { recursive: true });
373
+ // 1. Fetch document metadata
374
+ const docMeta = await client.getDocument(appId, documentId);
375
+ // 2. Export Yjs state
376
+ const stateResult = await client.exportDocumentState(appId, documentId);
377
+ fs.writeFileSync(path.join(docDir, "document.yjs"), Buffer.from(stateResult.state, "base64"));
378
+ // 3. Fetch permissions
379
+ let permissions = [];
380
+ try {
381
+ const permResult = await client.listDocumentPermissions(appId, documentId);
382
+ permissions = Array.isArray(permResult) ? permResult : permResult?.permissions || [];
383
+ }
384
+ catch {
385
+ // Permissions endpoint might not return data for all docs
386
+ }
387
+ // 4. Fetch invitations
388
+ let invitations = [];
389
+ try {
390
+ const invResult = await client.listDocumentInvitations(appId, documentId);
391
+ invitations = Array.isArray(invResult) ? invResult : invResult?.invitations || [];
392
+ }
393
+ catch {
394
+ // May not have invitations
395
+ }
396
+ // Merge permissions and invitations into a single list with email identifiers
397
+ const permissionsExport = [
398
+ ...permissions.map((p) => ({
399
+ email: p.email,
400
+ permission: p.permission,
401
+ grantedAt: p.grantedAt,
402
+ })),
403
+ ...invitations
404
+ .filter((i) => !i.accepted && new Date(i.expiresAt) > new Date())
405
+ .map((i) => ({
406
+ email: i.email,
407
+ permission: i.permission,
408
+ source: "invitation",
409
+ status: "pending",
410
+ })),
411
+ ];
412
+ fs.writeFileSync(path.join(docDir, "permissions.json"), JSON.stringify(permissionsExport, null, 2));
413
+ // 5. Fetch aliases (user-scoped only)
414
+ let aliases = [];
415
+ try {
416
+ const aliasResult = await client.listDocumentAliases(appId, documentId);
417
+ aliases = (Array.isArray(aliasResult) ? aliasResult : aliasResult?.aliases || [])
418
+ .filter((a) => a.aliasScope === "user");
419
+ }
420
+ catch {
421
+ // May not have aliases
422
+ }
423
+ // 6. Write metadata
424
+ const metadata = {
425
+ documentId: docMeta.documentId || documentId,
426
+ title: docMeta.title,
427
+ tags: docMeta.tags || [],
428
+ createdAt: docMeta.createdAt,
429
+ createdBy: docMeta.createdByEmail || docMeta.createdBy,
430
+ aliases: aliases.map((a) => ({
431
+ aliasScope: a.aliasScope,
432
+ aliasKey: a.aliasKey,
433
+ ownerEmail: a.ownerEmail || a.ownerUserId,
434
+ })),
435
+ };
436
+ fs.writeFileSync(path.join(docDir, "metadata.json"), JSON.stringify(metadata, null, 2));
437
+ // 7. Blobs
438
+ if (includeBlobs) {
439
+ let blobs = [];
440
+ try {
441
+ const blobResult = await client.listDocumentBlobs(appId, documentId);
442
+ blobs = Array.isArray(blobResult) ? blobResult : blobResult?.blobs || [];
443
+ }
444
+ catch {
445
+ // May not have blobs
446
+ }
447
+ if (blobs.length > 0) {
448
+ const blobsDir = path.join(docDir, "blobs");
449
+ fs.mkdirSync(blobsDir, { recursive: true });
450
+ const blobIndex = blobs.map((b) => ({
451
+ blobId: b.blobId,
452
+ filename: b.filename,
453
+ contentType: b.contentType,
454
+ sha256: b.sha256,
455
+ numBytes: b.numBytes,
456
+ }));
457
+ fs.writeFileSync(path.join(blobsDir, "index.json"), JSON.stringify(blobIndex, null, 2));
458
+ // Download blobs (sequentially to avoid overwhelming the server)
459
+ for (const blob of blobs) {
460
+ const data = await client.downloadBlob(appId, documentId, blob.blobId);
461
+ fs.writeFileSync(path.join(blobsDir, `${blob.blobId}.bin`), data);
462
+ }
463
+ }
464
+ }
465
+ if (jsonOutput) {
466
+ json({
467
+ documentId,
468
+ title: metadata.title,
469
+ stateBytes: stateResult.byteLength,
470
+ permissions: permissionsExport.length,
471
+ aliases: aliases.length,
472
+ exportPath: docDir,
473
+ });
474
+ }
475
+ else {
476
+ success(`Exported document ${documentId} (${metadata.title || "untitled"}) to ${docDir}`);
477
+ }
478
+ }
479
+ async function importSingleDocument(client, appId, docDir, overwrite, aliasMode, dryRun, summary) {
480
+ const metadataPath = path.join(docDir, "metadata.json");
481
+ if (!fs.existsSync(metadataPath)) {
482
+ warn(`Skipping ${docDir}: no metadata.json found`);
483
+ summary.skipped++;
484
+ return;
485
+ }
486
+ const metadata = JSON.parse(fs.readFileSync(metadataPath, "utf-8"));
487
+ const documentId = metadata.documentId;
488
+ if (dryRun) {
489
+ info(`[dry-run] Would import document ${documentId} (${metadata.title || "untitled"})`);
490
+ summary.created++;
491
+ return;
492
+ }
493
+ // Check if document exists
494
+ let exists = false;
495
+ try {
496
+ await client.getDocument(appId, documentId);
497
+ exists = true;
498
+ }
499
+ catch {
500
+ exists = false;
501
+ }
502
+ if (exists && !overwrite) {
503
+ warn(`Skipping ${documentId}: already exists (use --overwrite to replace)`);
504
+ summary.skipped++;
505
+ return;
506
+ }
507
+ // Create document if it doesn't exist
508
+ if (!exists) {
509
+ await client.createDocument(appId, {
510
+ title: metadata.title || "Imported Document",
511
+ documentId,
512
+ tags: metadata.tags,
513
+ });
514
+ summary.created++;
515
+ }
516
+ else {
517
+ summary.updated++;
518
+ }
519
+ // Import Yjs state
520
+ const yjsPath = path.join(docDir, "document.yjs");
521
+ if (fs.existsSync(yjsPath)) {
522
+ const stateBuffer = fs.readFileSync(yjsPath);
523
+ const stateBase64 = stateBuffer.toString("base64");
524
+ await client.importDocumentState(appId, documentId, stateBase64);
525
+ }
526
+ // Upload blobs
527
+ const blobIndexPath = path.join(docDir, "blobs", "index.json");
528
+ if (fs.existsSync(blobIndexPath)) {
529
+ const blobIndex = JSON.parse(fs.readFileSync(blobIndexPath, "utf-8"));
530
+ for (const blob of blobIndex) {
531
+ const blobPath = path.join(docDir, "blobs", `${blob.blobId}.bin`);
532
+ if (fs.existsSync(blobPath)) {
533
+ const data = fs.readFileSync(blobPath);
534
+ await client.uploadBlob(appId, documentId, blob.blobId, data, {
535
+ filename: blob.filename,
536
+ contentType: blob.contentType,
537
+ sha256: blob.sha256,
538
+ });
539
+ summary.blobsUploaded++;
540
+ }
541
+ }
542
+ }
543
+ // Permissions are exported for reference but not restored during import.
544
+ // The importing admin is the new owner; sharing is managed in the target app.
545
+ // Restore aliases
546
+ if (metadata.aliases && Array.isArray(metadata.aliases)) {
547
+ for (const alias of metadata.aliases) {
548
+ if (alias.aliasScope !== "user")
549
+ continue;
550
+ // Resolve owner email to userId
551
+ const owner = alias.ownerEmail ? await client.findUserByEmail(appId, alias.ownerEmail) : null;
552
+ if (!owner) {
553
+ summary.aliasesSkipped++;
554
+ continue;
555
+ }
556
+ try {
557
+ await client.setDocumentAlias(appId, alias.aliasScope, alias.aliasKey, documentId, owner.userId || owner.id, aliasMode === "skip" // mustNotExist: true for skip mode, false for overwrite
558
+ );
559
+ summary.aliasesSet++;
560
+ }
561
+ catch {
562
+ summary.aliasesSkipped++;
563
+ }
564
+ }
565
+ }
566
+ info(`Imported document ${documentId} (${metadata.title || "untitled"})`);
567
+ }
178
568
  //# sourceMappingURL=documents.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"documents.js","sourceRoot":"","sources":["../../../src/commands/documents.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EACL,OAAO,EACP,KAAK,EACL,IAAI,EACJ,WAAW,EAEX,UAAU,EACV,IAAI,GACL,MAAM,kBAAkB,CAAC;AAE1B,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,MAAM,SAAS,GAAG,OAAO;SACtB,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,gCAAgC,CAAC;SAC7C,WAAW,CAAC,OAAO,EAAE;;;;CAIzB,CAAC,CAAC;IAED,8BAA8B;IAC9B,SAAS;SACN,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,QAAQ,CAAC,UAAU,EAAE,4CAA4C,CAAC;SAClE,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC;SACxC,QAAQ,CAAC,gBAAgB,EAAE,0BAA0B,CAAC;SACtD,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC;SAClC,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;SAC/C,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC9C,IAAI,aAAqB,CAAC;QAC1B,IAAI,UAAkB,CAAC;QACvB,IAAI,UAAkB,CAAC;QAEvB,IAAI,KAAK,EAAE,CAAC;YACV,aAAa,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC7C,UAAU,GAAG,MAAM,CAAC;YACpB,UAAU,GAAG,KAAK,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACjD,UAAU,GAAG,KAAK,CAAC;YACnB,UAAU,GAAG,MAAM,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,KAAK,CAAC,2BAA2B,CAAC,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;gBAChD;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,kCAAkC,UAAU,YAAY,UAAU,0BAA0B;oBACrG,OAAO,EAAE,KAAK;iBACf;aACF,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,CAAC,YAAY,CAAC,CAAC;gBACnB,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAE/B,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,yBAAyB,CACpC,aAAa,EACb,UAAU,EACV,UAAU,CACX,CAAC;YAEF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;gBAChD,OAAO;YACT,CAAC;YAED,OAAO,CAAC,yBAAyB,UAAU,mBAAmB,UAAU,GAAG,CAAC,CAAC;QAC/E,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,+CAA+C;IAC/C,MAAM,gBAAgB,GAAG,SAAS;SAC/B,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,wCAAwC,CAAC,CAAC;IAEzD,yBAAyB;IACzB,gBAAgB;SACb,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,uCAAuC,CAAC;SACpD,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC;SACxC,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC;SAClC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;QACpC,MAAM,aAAa,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAE/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;YACpF,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,MAAc,EAAE,WAAW,IAAI,EAAE,CAAC;YAEjF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,CAAC;gBACX,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBACpC,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CACT,WAAW,CAAC,IAAI,EAAE;gBAChB,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE;gBAC1C,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE;gBACtC,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE;gBAC3C,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE;aAC5D,CAAC,CACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,yBAAyB;IACzB,gBAAgB;SACb,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,wCAAwC,CAAC;SACrD,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC;SACxC,cAAc,CAAC,qBAAqB,EAAE,YAAY,CAAC;SACnD,cAAc,CAAC,iBAAiB,EAAE,UAAU,CAAC;SAC7C,cAAc,CAAC,2BAA2B,EAAE,wCAAwC,CAAC;SACrF,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC;SAClC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;QACpC,MAAM,aAAa,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAE/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,aAAa,EAAE,UAAU,EAAE;gBAClF,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,UAAU,EAAE,OAAO,CAAC,UAAU;aAC/B,CAAC,CAAC;YAEH,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,CAAC,CAAC;gBACb,OAAO;YACT,CAAC;YAED,OAAO,CAAC,eAAe,OAAO,CAAC,UAAU,sBAAsB,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;QAC1G,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,0BAA0B;IAC1B,gBAAgB;SACb,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,2CAA2C,CAAC;SACxD,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC;SACxC,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC;SACtC,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;SAClC,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC;SAClC,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QACxD,MAAM,aAAa,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEvD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;gBAChD;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,+BAA+B,SAAS,IAAI,OAAO,gBAAgB,UAAU,GAAG;oBACzF,OAAO,EAAE,KAAK;iBACf;aACF,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,CAAC,YAAY,CAAC,CAAC;gBACnB,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAE/B,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,6BAA6B,CAAC,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAC1F,OAAO,CAAC,gCAAgC,SAAS,IAAI,OAAO,GAAG,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"documents.js","sourceRoot":"","sources":["../../../src/commands/documents.ts"],"names":[],"mappings":"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"}
@@ -749,6 +749,19 @@ export class ApiClient {
749
749
  async describeDatabaseModel(appId, databaseId, modelName) {
750
750
  return this.get(`/app/${appId}/api/databases/${databaseId}/records/describe`, { modelName });
751
751
  }
752
+ async queryDatabaseRecords(appId, databaseId, modelName, queryOptions) {
753
+ const body = { modelName };
754
+ if (queryOptions?.filter)
755
+ body.filter = queryOptions.filter;
756
+ const options = {};
757
+ if (queryOptions?.limit)
758
+ options.limit = queryOptions.limit;
759
+ if (queryOptions?.cursor)
760
+ options.uniqueStartKey = queryOptions.cursor;
761
+ if (Object.keys(options).length > 0)
762
+ body.options = options;
763
+ return this.post(`/app/${appId}/api/databases/${databaseId}/admin-data/query`, body);
764
+ }
752
765
  // ============================================
753
766
  // DATABASE OPERATIONS (registered operations)
754
767
  // ============================================
@@ -1050,6 +1063,117 @@ export class ApiClient {
1050
1063
  async deleteGroupTypeConfig(appId, groupType) {
1051
1064
  return this.delete(`/app/${appId}/api/group-type-configs/${groupType}`);
1052
1065
  }
1066
+ // ============================================
1067
+ // DOCUMENT EXPORT / IMPORT
1068
+ // ============================================
1069
+ async exportDocumentState(appId, documentId) {
1070
+ return this.get(`/app/${appId}/api/documents/${documentId}/export/state`);
1071
+ }
1072
+ async importDocumentState(appId, documentId, stateBase64) {
1073
+ return this.post(`/app/${appId}/api/documents/${documentId}/import/state`, { state: stateBase64 });
1074
+ }
1075
+ async getDocument(appId, documentId) {
1076
+ return this.get(`/app/${appId}/api/documents/${documentId}`);
1077
+ }
1078
+ async createDocument(appId, data) {
1079
+ return this.post(`/app/${appId}/api/documents`, data);
1080
+ }
1081
+ async listDocumentPermissions(appId, documentId) {
1082
+ return this.get(`/app/${appId}/api/documents/${documentId}/permissions`);
1083
+ }
1084
+ async grantDocumentPermission(appId, documentId, permissions) {
1085
+ return this.put(`/app/${appId}/api/documents/${documentId}/permissions`, { permissions });
1086
+ }
1087
+ async listDocumentInvitations(appId, documentId) {
1088
+ return this.get(`/app/${appId}/api/documents/${documentId}/invitations`);
1089
+ }
1090
+ async listDocumentBlobs(appId, documentId) {
1091
+ return this.get(`/app/${appId}/api/documents/${documentId}/blobs`);
1092
+ }
1093
+ async downloadBlob(appId, documentId, blobId) {
1094
+ const credentials = await this.ensureAuthenticated();
1095
+ const url = `${credentials.serverUrl}/app/${appId}/api/documents/${documentId}/blobs/${blobId}/download`;
1096
+ const headers = {
1097
+ Authorization: `Bearer ${credentials.accessToken}`,
1098
+ };
1099
+ if (credentials.globalAdminAppId) {
1100
+ headers["X-Global-Admin-App-Id"] = credentials.globalAdminAppId;
1101
+ }
1102
+ const response = await fetchWithTLS(url, { headers });
1103
+ if (!response.ok) {
1104
+ throw new ApiError(`Failed to download blob: ${response.statusText}`, response.status);
1105
+ }
1106
+ const arrayBuffer = await response.arrayBuffer();
1107
+ return Buffer.from(arrayBuffer);
1108
+ }
1109
+ async uploadBlob(appId, documentId, blobId, data, meta) {
1110
+ const credentials = await this.ensureAuthenticated();
1111
+ const url = `${credentials.serverUrl}/app/${appId}/api/documents/${documentId}/blobs/${blobId}`;
1112
+ const headers = {
1113
+ Authorization: `Bearer ${credentials.accessToken}`,
1114
+ "Content-Type": meta.contentType,
1115
+ "X-Blob-Filename": encodeURIComponent(meta.filename),
1116
+ "X-Blob-Size": String(data.length),
1117
+ "X-Blob-Sha256": meta.sha256,
1118
+ };
1119
+ if (credentials.globalAdminAppId) {
1120
+ headers["X-Global-Admin-App-Id"] = credentials.globalAdminAppId;
1121
+ }
1122
+ const response = await fetchWithTLS(url, {
1123
+ method: "PUT",
1124
+ headers,
1125
+ body: data,
1126
+ });
1127
+ if (!response.ok) {
1128
+ const text = await response.text();
1129
+ throw new ApiError(`Failed to upload blob: ${text}`, response.status);
1130
+ }
1131
+ return response.json();
1132
+ }
1133
+ async listDocumentAliases(appId, documentId) {
1134
+ return this.get(`/app/${appId}/api/documents/${documentId}/aliases`);
1135
+ }
1136
+ async setDocumentAlias(appId, aliasScope, aliasKey, documentId, ownerUserId, mustNotExist) {
1137
+ return this.put(`/app/${appId}/api/document-aliases/${aliasScope}/${encodeURIComponent(aliasKey)}`, {
1138
+ documentId,
1139
+ userId: ownerUserId,
1140
+ mustNotExist,
1141
+ });
1142
+ }
1143
+ async findUserByEmail(appId, email) {
1144
+ try {
1145
+ const result = await this.get(`/app/${appId}/api/users`, { email });
1146
+ const items = result?.items || (Array.isArray(result) ? result : []);
1147
+ return items[0] || null;
1148
+ }
1149
+ catch {
1150
+ return null;
1151
+ }
1152
+ }
1153
+ async listAdminDocuments(appId, userId) {
1154
+ const result = await this.get(`/admin/api/apps/${appId}/documents`, { userId });
1155
+ return result?.documents || result || [];
1156
+ }
1157
+ // ============================================
1158
+ // DATABASE EXPORT / IMPORT
1159
+ // ============================================
1160
+ async saveDatabaseRecord(appId, databaseId, modelName, id, data) {
1161
+ return this.post(`/app/${appId}/api/databases/${databaseId}/admin-data/save`, {
1162
+ modelName,
1163
+ id,
1164
+ data,
1165
+ });
1166
+ }
1167
+ async batchDatabaseRecords(appId, databaseId, ops) {
1168
+ return this.post(`/app/${appId}/api/databases/${databaseId}/admin-data/batch`, { ops });
1169
+ }
1170
+ async listDatabaseUniqueConstraints(appId, databaseId) {
1171
+ const result = await this.get(`/app/${appId}/api/databases/${databaseId}/records/unique-constraints`);
1172
+ return result?.constraints || result || [];
1173
+ }
1174
+ async registerDatabaseUniqueConstraint(appId, databaseId, constraint) {
1175
+ return this.post(`/app/${appId}/api/databases/${databaseId}/records/unique-constraint/register`, constraint);
1176
+ }
1053
1177
  }
1054
1178
  // Export a singleton instance
1055
1179
  export const apiClient = new ApiClient();