@constructive-sdk/cli 0.16.0 → 0.16.2

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.
@@ -36,9 +36,7 @@ class FetchAdapter {
36
36
  return {
37
37
  ok: false,
38
38
  data: null,
39
- errors: [
40
- { message: `HTTP ${response.status}: ${response.statusText}` },
41
- ],
39
+ errors: [{ message: `HTTP ${response.status}: ${response.statusText}` }],
42
40
  };
43
41
  }
44
42
  const json = (await response.json());
@@ -3041,6 +3041,8 @@ export interface RequestUploadUrlPayload {
3041
3041
  deduplicated: boolean;
3042
3042
  /** Presigned URL expiry time (null if deduplicated) */
3043
3043
  expiresAt?: string | null;
3044
+ /** File status — 'pending' for fresh uploads, 'ready' or 'processed' for deduplicated files. Clients can use this to know immediately whether the file is usable. */
3045
+ status: string;
3044
3046
  }
3045
3047
  export type RequestUploadUrlPayloadSelect = {
3046
3048
  uploadUrl?: boolean;
@@ -3048,6 +3050,7 @@ export type RequestUploadUrlPayloadSelect = {
3048
3050
  key?: boolean;
3049
3051
  deduplicated?: boolean;
3050
3052
  expiresAt?: boolean;
3053
+ status?: boolean;
3051
3054
  };
3052
3055
  export interface ConfirmUploadPayload {
3053
3056
  /** The confirmed file ID */
@@ -36,9 +36,7 @@ class FetchAdapter {
36
36
  return {
37
37
  ok: false,
38
38
  data: null,
39
- errors: [
40
- { message: `HTTP ${response.status}: ${response.statusText}` },
41
- ],
39
+ errors: [{ message: `HTTP ${response.status}: ${response.statusText}` }],
42
40
  };
43
41
  }
44
42
  const json = (await response.json());
@@ -2252,6 +2252,8 @@ export interface RequestUploadUrlPayload {
2252
2252
  deduplicated: boolean;
2253
2253
  /** Presigned URL expiry time (null if deduplicated) */
2254
2254
  expiresAt?: string | null;
2255
+ /** File status — 'pending' for fresh uploads, 'ready' or 'processed' for deduplicated files. Clients can use this to know immediately whether the file is usable. */
2256
+ status: string;
2255
2257
  }
2256
2258
  export type RequestUploadUrlPayloadSelect = {
2257
2259
  uploadUrl?: boolean;
@@ -2259,6 +2261,7 @@ export type RequestUploadUrlPayloadSelect = {
2259
2261
  key?: boolean;
2260
2262
  deduplicated?: boolean;
2261
2263
  expiresAt?: boolean;
2264
+ status?: boolean;
2262
2265
  };
2263
2266
  export interface ConfirmUploadPayload {
2264
2267
  /** The confirmed file ID */
@@ -33,9 +33,7 @@ export class FetchAdapter {
33
33
  return {
34
34
  ok: false,
35
35
  data: null,
36
- errors: [
37
- { message: `HTTP ${response.status}: ${response.statusText}` },
38
- ],
36
+ errors: [{ message: `HTTP ${response.status}: ${response.statusText}` }],
39
37
  };
40
38
  }
41
39
  const json = (await response.json());
@@ -3041,6 +3041,8 @@ export interface RequestUploadUrlPayload {
3041
3041
  deduplicated: boolean;
3042
3042
  /** Presigned URL expiry time (null if deduplicated) */
3043
3043
  expiresAt?: string | null;
3044
+ /** File status — 'pending' for fresh uploads, 'ready' or 'processed' for deduplicated files. Clients can use this to know immediately whether the file is usable. */
3045
+ status: string;
3044
3046
  }
3045
3047
  export type RequestUploadUrlPayloadSelect = {
3046
3048
  uploadUrl?: boolean;
@@ -3048,6 +3050,7 @@ export type RequestUploadUrlPayloadSelect = {
3048
3050
  key?: boolean;
3049
3051
  deduplicated?: boolean;
3050
3052
  expiresAt?: boolean;
3053
+ status?: boolean;
3051
3054
  };
3052
3055
  export interface ConfirmUploadPayload {
3053
3056
  /** The confirmed file ID */
@@ -33,9 +33,7 @@ export class FetchAdapter {
33
33
  return {
34
34
  ok: false,
35
35
  data: null,
36
- errors: [
37
- { message: `HTTP ${response.status}: ${response.statusText}` },
38
- ],
36
+ errors: [{ message: `HTTP ${response.status}: ${response.statusText}` }],
39
37
  };
40
38
  }
41
39
  const json = (await response.json());
@@ -2252,6 +2252,8 @@ export interface RequestUploadUrlPayload {
2252
2252
  deduplicated: boolean;
2253
2253
  /** Presigned URL expiry time (null if deduplicated) */
2254
2254
  expiresAt?: string | null;
2255
+ /** File status — 'pending' for fresh uploads, 'ready' or 'processed' for deduplicated files. Clients can use this to know immediately whether the file is usable. */
2256
+ status: string;
2255
2257
  }
2256
2258
  export type RequestUploadUrlPayloadSelect = {
2257
2259
  uploadUrl?: boolean;
@@ -2259,6 +2261,7 @@ export type RequestUploadUrlPayloadSelect = {
2259
2261
  key?: boolean;
2260
2262
  deduplicated?: boolean;
2261
2263
  expiresAt?: boolean;
2264
+ status?: boolean;
2262
2265
  };
2263
2266
  export interface ConfirmUploadPayload {
2264
2267
  /** The confirmed file ID */
@@ -33,9 +33,7 @@ export class FetchAdapter {
33
33
  return {
34
34
  ok: false,
35
35
  data: null,
36
- errors: [
37
- { message: `HTTP ${response.status}: ${response.statusText}` },
38
- ],
36
+ errors: [{ message: `HTTP ${response.status}: ${response.statusText}` }],
39
37
  };
40
38
  }
41
39
  const json = (await response.json());
@@ -751,6 +751,8 @@ export interface RequestUploadUrlPayload {
751
751
  deduplicated: boolean;
752
752
  /** Presigned URL expiry time (null if deduplicated) */
753
753
  expiresAt?: string | null;
754
+ /** File status — 'pending' for fresh uploads, 'ready' or 'processed' for deduplicated files. Clients can use this to know immediately whether the file is usable. */
755
+ status: string;
754
756
  }
755
757
  export type RequestUploadUrlPayloadSelect = {
756
758
  uploadUrl?: boolean;
@@ -758,6 +760,7 @@ export type RequestUploadUrlPayloadSelect = {
758
760
  key?: boolean;
759
761
  deduplicated?: boolean;
760
762
  expiresAt?: boolean;
763
+ status?: boolean;
761
764
  };
762
765
  export interface ConfirmUploadPayload {
763
766
  /** The confirmed file ID */
@@ -19,6 +19,7 @@ const fieldSchema = {
19
19
  hasProfiles: 'boolean',
20
20
  hasLevels: 'boolean',
21
21
  hasStorage: 'boolean',
22
+ hasInvites: 'boolean',
22
23
  storageConfig: 'json',
23
24
  skipEntityPolicies: 'boolean',
24
25
  tableProvision: 'json',
@@ -29,6 +30,7 @@ const fieldSchema = {
29
30
  outStorageModuleId: 'uuid',
30
31
  outBucketsTableId: 'uuid',
31
32
  outFilesTableId: 'uuid',
33
+ outInvitesModuleId: 'uuid',
32
34
  };
33
35
  const usage = '\nentity-type-provision <command>\n\nCommands:\n list List entityTypeProvision records\n find-first Find first matching entityTypeProvision record\n get Get a entityTypeProvision by ID\n create Create a new entityTypeProvision\n update Update an existing entityTypeProvision\n delete Delete a entityTypeProvision\n\nList Options:\n --limit <n> Max number of records to return (forward pagination)\n --last <n> Number of records from the end (backward pagination)\n --after <cursor> Cursor for forward pagination\n --before <cursor> Cursor for backward pagination\n --offset <n> Number of records to skip\n --select <fields> Comma-separated list of fields to return\n --where.<field>.<op> Filter (dot-notation, e.g. --where.name.equalTo foo)\n --condition.<f>.<op> Condition filter (dot-notation)\n --orderBy <values> Comma-separated ordering values (e.g. NAME_ASC,CREATED_AT_DESC)\n\nFind-First Options:\n --select <fields> Comma-separated list of fields to return\n --where.<field>.<op> Filter (dot-notation, e.g. --where.status.equalTo active)\n --condition.<f>.<op> Condition filter (dot-notation)\n\n --help, -h Show this help message\n';
34
36
  export default async (argv, prompter, _options) => {
@@ -84,6 +86,7 @@ async function handleList(argv, _prompter) {
84
86
  hasProfiles: true,
85
87
  hasLevels: true,
86
88
  hasStorage: true,
89
+ hasInvites: true,
87
90
  storageConfig: true,
88
91
  skipEntityPolicies: true,
89
92
  tableProvision: true,
@@ -94,6 +97,7 @@ async function handleList(argv, _prompter) {
94
97
  outStorageModuleId: true,
95
98
  outBucketsTableId: true,
96
99
  outFilesTableId: true,
100
+ outInvitesModuleId: true,
97
101
  };
98
102
  const findManyArgs = parseFindManyArgs(argv, defaultSelect);
99
103
  const client = getClient();
@@ -123,6 +127,7 @@ async function handleFindFirst(argv, _prompter) {
123
127
  hasProfiles: true,
124
128
  hasLevels: true,
125
129
  hasStorage: true,
130
+ hasInvites: true,
126
131
  storageConfig: true,
127
132
  skipEntityPolicies: true,
128
133
  tableProvision: true,
@@ -133,6 +138,7 @@ async function handleFindFirst(argv, _prompter) {
133
138
  outStorageModuleId: true,
134
139
  outBucketsTableId: true,
135
140
  outFilesTableId: true,
141
+ outInvitesModuleId: true,
136
142
  };
137
143
  const findFirstArgs = parseFindFirstArgs(argv, defaultSelect);
138
144
  const client = getClient();
@@ -174,6 +180,7 @@ async function handleGet(argv, prompter) {
174
180
  hasProfiles: true,
175
181
  hasLevels: true,
176
182
  hasStorage: true,
183
+ hasInvites: true,
177
184
  storageConfig: true,
178
185
  skipEntityPolicies: true,
179
186
  tableProvision: true,
@@ -184,6 +191,7 @@ async function handleGet(argv, prompter) {
184
191
  outStorageModuleId: true,
185
192
  outBucketsTableId: true,
186
193
  outFilesTableId: true,
194
+ outInvitesModuleId: true,
187
195
  },
188
196
  })
189
197
  .execute();
@@ -274,6 +282,13 @@ async function handleCreate(argv, prompter) {
274
282
  required: false,
275
283
  skipPrompt: true,
276
284
  },
285
+ {
286
+ type: 'boolean',
287
+ name: 'hasInvites',
288
+ message: 'hasInvites',
289
+ required: false,
290
+ skipPrompt: true,
291
+ },
277
292
  {
278
293
  type: 'json',
279
294
  name: 'storageConfig',
@@ -344,6 +359,13 @@ async function handleCreate(argv, prompter) {
344
359
  required: false,
345
360
  skipPrompt: true,
346
361
  },
362
+ {
363
+ type: 'text',
364
+ name: 'outInvitesModuleId',
365
+ message: 'outInvitesModuleId',
366
+ required: false,
367
+ skipPrompt: true,
368
+ },
347
369
  ]);
348
370
  const answers = coerceAnswers(rawAnswers, fieldSchema);
349
371
  const cleanedData = stripUndefined(answers, fieldSchema);
@@ -362,6 +384,7 @@ async function handleCreate(argv, prompter) {
362
384
  hasProfiles: cleanedData.hasProfiles,
363
385
  hasLevels: cleanedData.hasLevels,
364
386
  hasStorage: cleanedData.hasStorage,
387
+ hasInvites: cleanedData.hasInvites,
365
388
  storageConfig: cleanedData.storageConfig,
366
389
  skipEntityPolicies: cleanedData.skipEntityPolicies,
367
390
  tableProvision: cleanedData.tableProvision,
@@ -372,6 +395,7 @@ async function handleCreate(argv, prompter) {
372
395
  outStorageModuleId: cleanedData.outStorageModuleId,
373
396
  outBucketsTableId: cleanedData.outBucketsTableId,
374
397
  outFilesTableId: cleanedData.outFilesTableId,
398
+ outInvitesModuleId: cleanedData.outInvitesModuleId,
375
399
  },
376
400
  select: {
377
401
  id: true,
@@ -386,6 +410,7 @@ async function handleCreate(argv, prompter) {
386
410
  hasProfiles: true,
387
411
  hasLevels: true,
388
412
  hasStorage: true,
413
+ hasInvites: true,
389
414
  storageConfig: true,
390
415
  skipEntityPolicies: true,
391
416
  tableProvision: true,
@@ -396,6 +421,7 @@ async function handleCreate(argv, prompter) {
396
421
  outStorageModuleId: true,
397
422
  outBucketsTableId: true,
398
423
  outFilesTableId: true,
424
+ outInvitesModuleId: true,
399
425
  },
400
426
  })
401
427
  .execute();
@@ -492,6 +518,13 @@ async function handleUpdate(argv, prompter) {
492
518
  required: false,
493
519
  skipPrompt: true,
494
520
  },
521
+ {
522
+ type: 'boolean',
523
+ name: 'hasInvites',
524
+ message: 'hasInvites',
525
+ required: false,
526
+ skipPrompt: true,
527
+ },
495
528
  {
496
529
  type: 'json',
497
530
  name: 'storageConfig',
@@ -562,6 +595,13 @@ async function handleUpdate(argv, prompter) {
562
595
  required: false,
563
596
  skipPrompt: true,
564
597
  },
598
+ {
599
+ type: 'text',
600
+ name: 'outInvitesModuleId',
601
+ message: 'outInvitesModuleId',
602
+ required: false,
603
+ skipPrompt: true,
604
+ },
565
605
  ]);
566
606
  const answers = coerceAnswers(rawAnswers, fieldSchema);
567
607
  const cleanedData = stripUndefined(answers, fieldSchema);
@@ -583,6 +623,7 @@ async function handleUpdate(argv, prompter) {
583
623
  hasProfiles: cleanedData.hasProfiles,
584
624
  hasLevels: cleanedData.hasLevels,
585
625
  hasStorage: cleanedData.hasStorage,
626
+ hasInvites: cleanedData.hasInvites,
586
627
  storageConfig: cleanedData.storageConfig,
587
628
  skipEntityPolicies: cleanedData.skipEntityPolicies,
588
629
  tableProvision: cleanedData.tableProvision,
@@ -593,6 +634,7 @@ async function handleUpdate(argv, prompter) {
593
634
  outStorageModuleId: cleanedData.outStorageModuleId,
594
635
  outBucketsTableId: cleanedData.outBucketsTableId,
595
636
  outFilesTableId: cleanedData.outFilesTableId,
637
+ outInvitesModuleId: cleanedData.outInvitesModuleId,
596
638
  },
597
639
  select: {
598
640
  id: true,
@@ -607,6 +649,7 @@ async function handleUpdate(argv, prompter) {
607
649
  hasProfiles: true,
608
650
  hasLevels: true,
609
651
  hasStorage: true,
652
+ hasInvites: true,
610
653
  storageConfig: true,
611
654
  skipEntityPolicies: true,
612
655
  tableProvision: true,
@@ -617,6 +660,7 @@ async function handleUpdate(argv, prompter) {
617
660
  outStorageModuleId: true,
618
661
  outBucketsTableId: true,
619
662
  outFilesTableId: true,
663
+ outInvitesModuleId: true,
620
664
  },
621
665
  })
622
666
  .execute();
@@ -18,7 +18,8 @@ const fieldSchema = {
18
18
  filesTableName: 'string',
19
19
  uploadRequestsTableName: 'string',
20
20
  membershipType: 'int',
21
- policies: 'string',
21
+ policies: 'json',
22
+ skipDefaultPolicyTables: 'string',
22
23
  entityTableId: 'uuid',
23
24
  endpoint: 'string',
24
25
  publicUrlPrefix: 'string',
@@ -84,6 +85,7 @@ async function handleList(argv, _prompter) {
84
85
  uploadRequestsTableName: true,
85
86
  membershipType: true,
86
87
  policies: true,
88
+ skipDefaultPolicyTables: true,
87
89
  entityTableId: true,
88
90
  endpoint: true,
89
91
  publicUrlPrefix: true,
@@ -123,6 +125,7 @@ async function handleFindFirst(argv, _prompter) {
123
125
  uploadRequestsTableName: true,
124
126
  membershipType: true,
125
127
  policies: true,
128
+ skipDefaultPolicyTables: true,
126
129
  entityTableId: true,
127
130
  endpoint: true,
128
131
  publicUrlPrefix: true,
@@ -174,6 +177,7 @@ async function handleGet(argv, prompter) {
174
177
  uploadRequestsTableName: true,
175
178
  membershipType: true,
176
179
  policies: true,
180
+ skipDefaultPolicyTables: true,
177
181
  entityTableId: true,
178
182
  endpoint: true,
179
183
  publicUrlPrefix: true,
@@ -270,12 +274,19 @@ async function handleCreate(argv, prompter) {
270
274
  skipPrompt: true,
271
275
  },
272
276
  {
273
- type: 'text',
277
+ type: 'json',
274
278
  name: 'policies',
275
279
  message: 'policies',
276
280
  required: false,
277
281
  skipPrompt: true,
278
282
  },
283
+ {
284
+ type: 'text',
285
+ name: 'skipDefaultPolicyTables',
286
+ message: 'skipDefaultPolicyTables',
287
+ required: false,
288
+ skipPrompt: true,
289
+ },
279
290
  {
280
291
  type: 'text',
281
292
  name: 'entityTableId',
@@ -364,6 +375,7 @@ async function handleCreate(argv, prompter) {
364
375
  uploadRequestsTableName: cleanedData.uploadRequestsTableName,
365
376
  membershipType: cleanedData.membershipType,
366
377
  policies: cleanedData.policies,
378
+ skipDefaultPolicyTables: cleanedData.skipDefaultPolicyTables,
367
379
  entityTableId: cleanedData.entityTableId,
368
380
  endpoint: cleanedData.endpoint,
369
381
  publicUrlPrefix: cleanedData.publicUrlPrefix,
@@ -388,6 +400,7 @@ async function handleCreate(argv, prompter) {
388
400
  uploadRequestsTableName: true,
389
401
  membershipType: true,
390
402
  policies: true,
403
+ skipDefaultPolicyTables: true,
391
404
  entityTableId: true,
392
405
  endpoint: true,
393
406
  publicUrlPrefix: true,
@@ -490,12 +503,19 @@ async function handleUpdate(argv, prompter) {
490
503
  skipPrompt: true,
491
504
  },
492
505
  {
493
- type: 'text',
506
+ type: 'json',
494
507
  name: 'policies',
495
508
  message: 'policies',
496
509
  required: false,
497
510
  skipPrompt: true,
498
511
  },
512
+ {
513
+ type: 'text',
514
+ name: 'skipDefaultPolicyTables',
515
+ message: 'skipDefaultPolicyTables',
516
+ required: false,
517
+ skipPrompt: true,
518
+ },
499
519
  {
500
520
  type: 'text',
501
521
  name: 'entityTableId',
@@ -587,6 +607,7 @@ async function handleUpdate(argv, prompter) {
587
607
  uploadRequestsTableName: cleanedData.uploadRequestsTableName,
588
608
  membershipType: cleanedData.membershipType,
589
609
  policies: cleanedData.policies,
610
+ skipDefaultPolicyTables: cleanedData.skipDefaultPolicyTables,
590
611
  entityTableId: cleanedData.entityTableId,
591
612
  endpoint: cleanedData.endpoint,
592
613
  publicUrlPrefix: cleanedData.publicUrlPrefix,
@@ -611,6 +632,7 @@ async function handleUpdate(argv, prompter) {
611
632
  uploadRequestsTableName: true,
612
633
  membershipType: true,
613
634
  policies: true,
635
+ skipDefaultPolicyTables: true,
614
636
  entityTableId: true,
615
637
  endpoint: true,
616
638
  publicUrlPrefix: true,
@@ -33,9 +33,7 @@ export class FetchAdapter {
33
33
  return {
34
34
  ok: false,
35
35
  data: null,
36
- errors: [
37
- { message: `HTTP ${response.status}: ${response.statusText}` },
38
- ],
36
+ errors: [{ message: `HTTP ${response.status}: ${response.statusText}` }],
39
37
  };
40
38
  }
41
39
  const json = (await response.json());