@constructive-sdk/cli 0.12.23 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/admin/cli/commands/confirm-upload.d.ts +8 -0
  2. package/admin/cli/commands/confirm-upload.js +36 -0
  3. package/admin/cli/commands/provision-bucket.d.ts +8 -0
  4. package/admin/cli/commands/provision-bucket.js +36 -0
  5. package/admin/cli/commands/request-upload-url.d.ts +8 -0
  6. package/admin/cli/commands/request-upload-url.js +36 -0
  7. package/admin/cli/commands.js +7 -1
  8. package/admin/cli/executor.d.ts +15 -0
  9. package/admin/orm/index.d.ts +15 -0
  10. package/admin/orm/input-types.d.ts +74 -0
  11. package/admin/orm/mutation/index.d.ts +45 -1
  12. package/admin/orm/mutation/index.js +36 -0
  13. package/auth/cli/commands/confirm-upload.d.ts +8 -0
  14. package/auth/cli/commands/confirm-upload.js +36 -0
  15. package/auth/cli/commands/provision-bucket.d.ts +8 -0
  16. package/auth/cli/commands/provision-bucket.js +36 -0
  17. package/auth/cli/commands/request-upload-url.d.ts +8 -0
  18. package/auth/cli/commands/request-upload-url.js +36 -0
  19. package/auth/cli/commands.js +7 -1
  20. package/auth/cli/executor.d.ts +15 -0
  21. package/auth/orm/index.d.ts +15 -0
  22. package/auth/orm/input-types.d.ts +74 -0
  23. package/auth/orm/mutation/index.d.ts +45 -1
  24. package/auth/orm/mutation/index.js +36 -0
  25. package/esm/admin/cli/commands/confirm-upload.d.ts +8 -0
  26. package/esm/admin/cli/commands/confirm-upload.js +34 -0
  27. package/esm/admin/cli/commands/provision-bucket.d.ts +8 -0
  28. package/esm/admin/cli/commands/provision-bucket.js +34 -0
  29. package/esm/admin/cli/commands/request-upload-url.d.ts +8 -0
  30. package/esm/admin/cli/commands/request-upload-url.js +34 -0
  31. package/esm/admin/cli/commands.js +7 -1
  32. package/esm/admin/cli/executor.d.ts +15 -0
  33. package/esm/admin/orm/index.d.ts +15 -0
  34. package/esm/admin/orm/input-types.d.ts +74 -0
  35. package/esm/admin/orm/mutation/index.d.ts +45 -1
  36. package/esm/admin/orm/mutation/index.js +36 -0
  37. package/esm/auth/cli/commands/confirm-upload.d.ts +8 -0
  38. package/esm/auth/cli/commands/confirm-upload.js +34 -0
  39. package/esm/auth/cli/commands/provision-bucket.d.ts +8 -0
  40. package/esm/auth/cli/commands/provision-bucket.js +34 -0
  41. package/esm/auth/cli/commands/request-upload-url.d.ts +8 -0
  42. package/esm/auth/cli/commands/request-upload-url.js +34 -0
  43. package/esm/auth/cli/commands.js +7 -1
  44. package/esm/auth/cli/executor.d.ts +15 -0
  45. package/esm/auth/orm/index.d.ts +15 -0
  46. package/esm/auth/orm/input-types.d.ts +74 -0
  47. package/esm/auth/orm/mutation/index.d.ts +45 -1
  48. package/esm/auth/orm/mutation/index.js +36 -0
  49. package/esm/objects/cli/commands/confirm-upload.d.ts +8 -0
  50. package/esm/objects/cli/commands/confirm-upload.js +34 -0
  51. package/esm/objects/cli/commands/provision-bucket.d.ts +8 -0
  52. package/esm/objects/cli/commands/provision-bucket.js +34 -0
  53. package/esm/objects/cli/commands/request-upload-url.d.ts +8 -0
  54. package/esm/objects/cli/commands/request-upload-url.js +34 -0
  55. package/esm/objects/cli/commands.js +7 -1
  56. package/esm/objects/cli/executor.d.ts +15 -0
  57. package/esm/objects/orm/index.d.ts +15 -0
  58. package/esm/objects/orm/input-types.d.ts +74 -0
  59. package/esm/objects/orm/mutation/index.d.ts +45 -1
  60. package/esm/objects/orm/mutation/index.js +36 -0
  61. package/esm/public/cli/commands/confirm-upload.d.ts +8 -0
  62. package/esm/public/cli/commands/confirm-upload.js +34 -0
  63. package/esm/public/cli/commands/provision-bucket.d.ts +8 -0
  64. package/esm/public/cli/commands/provision-bucket.js +34 -0
  65. package/esm/public/cli/commands/request-upload-url.d.ts +8 -0
  66. package/esm/public/cli/commands/request-upload-url.js +34 -0
  67. package/esm/public/cli/commands/storage-module.js +88 -0
  68. package/esm/public/cli/commands.js +7 -1
  69. package/esm/public/cli/executor.d.ts +15 -0
  70. package/esm/public/orm/index.d.ts +15 -0
  71. package/esm/public/orm/input-types.d.ts +107 -1
  72. package/esm/public/orm/mutation/index.d.ts +45 -1
  73. package/esm/public/orm/mutation/index.js +36 -0
  74. package/objects/cli/commands/confirm-upload.d.ts +8 -0
  75. package/objects/cli/commands/confirm-upload.js +36 -0
  76. package/objects/cli/commands/provision-bucket.d.ts +8 -0
  77. package/objects/cli/commands/provision-bucket.js +36 -0
  78. package/objects/cli/commands/request-upload-url.d.ts +8 -0
  79. package/objects/cli/commands/request-upload-url.js +36 -0
  80. package/objects/cli/commands.js +7 -1
  81. package/objects/cli/executor.d.ts +15 -0
  82. package/objects/orm/index.d.ts +15 -0
  83. package/objects/orm/input-types.d.ts +74 -0
  84. package/objects/orm/mutation/index.d.ts +45 -1
  85. package/objects/orm/mutation/index.js +36 -0
  86. package/package.json +3 -3
  87. package/public/cli/commands/confirm-upload.d.ts +8 -0
  88. package/public/cli/commands/confirm-upload.js +36 -0
  89. package/public/cli/commands/provision-bucket.d.ts +8 -0
  90. package/public/cli/commands/provision-bucket.js +36 -0
  91. package/public/cli/commands/request-upload-url.d.ts +8 -0
  92. package/public/cli/commands/request-upload-url.js +36 -0
  93. package/public/cli/commands/storage-module.js +88 -0
  94. package/public/cli/commands.js +7 -1
  95. package/public/cli/executor.d.ts +15 -0
  96. package/public/orm/index.d.ts +15 -0
  97. package/public/orm/input-types.d.ts +107 -1
  98. package/public/orm/mutation/index.d.ts +45 -1
  99. package/public/orm/mutation/index.js +36 -0
@@ -0,0 +1,8 @@
1
+ /**
2
+ * CLI command for mutation confirmUpload
3
+ * @generated by @constructive-io/graphql-codegen
4
+ * DO NOT EDIT - changes will be overwritten
5
+ */
6
+ import { CLIOptions, Inquirerer } from 'inquirerer';
7
+ declare const _default: (argv: Partial<Record<string, unknown>>, prompter: Inquirerer, _options: CLIOptions) => Promise<void>;
8
+ export default _default;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const executor_1 = require("../executor");
4
+ const utils_1 = require("../utils");
5
+ exports.default = async (argv, prompter, _options) => {
6
+ try {
7
+ if (argv.help || argv.h) {
8
+ console.log("confirm-upload - Confirm that a file has been uploaded to S3.\nVerifies the object exists in S3, checks content-type,\nand transitions the file status from 'pending' to 'ready'.\n\nUsage: confirm-upload [OPTIONS]\n");
9
+ process.exit(0);
10
+ }
11
+ const answers = await prompter.prompt(argv, [
12
+ {
13
+ type: 'text',
14
+ name: 'input',
15
+ message: 'The exclusive input argument for this mutation. An object type, make sure to see documentation for this object\u2019s fields.',
16
+ required: true,
17
+ },
18
+ ]);
19
+ const client = (0, executor_1.getClient)();
20
+ const parsedAnswers = (0, utils_1.unflattenDotNotation)(answers);
21
+ const selectFields = (0, utils_1.buildSelectFromPaths)(argv.select ?? 'clientMutationId');
22
+ const result = await client.mutation
23
+ .confirmUpload(parsedAnswers, {
24
+ select: selectFields,
25
+ })
26
+ .execute();
27
+ console.log(JSON.stringify(result, null, 2));
28
+ }
29
+ catch (error) {
30
+ console.error('Failed: confirmUpload');
31
+ if (error instanceof Error) {
32
+ console.error(error.message);
33
+ }
34
+ process.exit(1);
35
+ }
36
+ };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * CLI command for mutation provisionBucket
3
+ * @generated by @constructive-io/graphql-codegen
4
+ * DO NOT EDIT - changes will be overwritten
5
+ */
6
+ import { CLIOptions, Inquirerer } from 'inquirerer';
7
+ declare const _default: (argv: Partial<Record<string, unknown>>, prompter: Inquirerer, _options: CLIOptions) => Promise<void>;
8
+ export default _default;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const executor_1 = require("../executor");
4
+ const utils_1 = require("../utils");
5
+ exports.default = async (argv, prompter, _options) => {
6
+ try {
7
+ if (argv.help || argv.h) {
8
+ console.log('provision-bucket - Provision an S3 bucket for a logical bucket in the database.\nReads the bucket config via RLS, then creates and configures\nthe S3 bucket with the appropriate privacy policies, CORS rules,\nand lifecycle settings.\n\nUsage: provision-bucket [OPTIONS]\n');
9
+ process.exit(0);
10
+ }
11
+ const answers = await prompter.prompt(argv, [
12
+ {
13
+ type: 'text',
14
+ name: 'input',
15
+ message: 'The exclusive input argument for this mutation. An object type, make sure to see documentation for this object\u2019s fields.',
16
+ required: true,
17
+ },
18
+ ]);
19
+ const client = (0, executor_1.getClient)();
20
+ const parsedAnswers = (0, utils_1.unflattenDotNotation)(answers);
21
+ const selectFields = (0, utils_1.buildSelectFromPaths)(argv.select ?? 'clientMutationId');
22
+ const result = await client.mutation
23
+ .provisionBucket(parsedAnswers, {
24
+ select: selectFields,
25
+ })
26
+ .execute();
27
+ console.log(JSON.stringify(result, null, 2));
28
+ }
29
+ catch (error) {
30
+ console.error('Failed: provisionBucket');
31
+ if (error instanceof Error) {
32
+ console.error(error.message);
33
+ }
34
+ process.exit(1);
35
+ }
36
+ };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * CLI command for mutation requestUploadUrl
3
+ * @generated by @constructive-io/graphql-codegen
4
+ * DO NOT EDIT - changes will be overwritten
5
+ */
6
+ import { CLIOptions, Inquirerer } from 'inquirerer';
7
+ declare const _default: (argv: Partial<Record<string, unknown>>, prompter: Inquirerer, _options: CLIOptions) => Promise<void>;
8
+ export default _default;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const executor_1 = require("../executor");
4
+ const utils_1 = require("../utils");
5
+ exports.default = async (argv, prompter, _options) => {
6
+ try {
7
+ if (argv.help || argv.h) {
8
+ console.log('request-upload-url - Request a presigned URL for uploading a file directly to S3.\nClient computes SHA-256 of the file content and provides it here.\nIf a file with the same hash already exists (dedup), returns the\nexisting file ID and deduplicated=true with no uploadUrl.\n\nUsage: request-upload-url [OPTIONS]\n');
9
+ process.exit(0);
10
+ }
11
+ const answers = await prompter.prompt(argv, [
12
+ {
13
+ type: 'text',
14
+ name: 'input',
15
+ message: 'The exclusive input argument for this mutation. An object type, make sure to see documentation for this object\u2019s fields.',
16
+ required: true,
17
+ },
18
+ ]);
19
+ const client = (0, executor_1.getClient)();
20
+ const parsedAnswers = (0, utils_1.unflattenDotNotation)(answers);
21
+ const selectFields = (0, utils_1.buildSelectFromPaths)(argv.select ?? 'clientMutationId');
22
+ const result = await client.mutation
23
+ .requestUploadUrl(parsedAnswers, {
24
+ select: selectFields,
25
+ })
26
+ .execute();
27
+ console.log(JSON.stringify(result, null, 2));
28
+ }
29
+ catch (error) {
30
+ console.error('Failed: requestUploadUrl');
31
+ if (error instanceof Error) {
32
+ console.error(error.message);
33
+ }
34
+ process.exit(1);
35
+ }
36
+ };
@@ -57,6 +57,9 @@ const org_permissions_get_by_mask_1 = __importDefault(require("./commands/org-pe
57
57
  const steps_required_1 = __importDefault(require("./commands/steps-required"));
58
58
  const submit_invite_code_1 = __importDefault(require("./commands/submit-invite-code"));
59
59
  const submit_org_invite_code_1 = __importDefault(require("./commands/submit-org-invite-code"));
60
+ const request_upload_url_1 = __importDefault(require("./commands/request-upload-url"));
61
+ const confirm_upload_1 = __importDefault(require("./commands/confirm-upload"));
62
+ const provision_bucket_1 = __importDefault(require("./commands/provision-bucket"));
60
63
  const createCommandMap = () => ({
61
64
  context: context_1.default,
62
65
  auth: auth_1.default,
@@ -105,8 +108,11 @@ const createCommandMap = () => ({
105
108
  'steps-required': steps_required_1.default,
106
109
  'submit-invite-code': submit_invite_code_1.default,
107
110
  'submit-org-invite-code': submit_org_invite_code_1.default,
111
+ 'request-upload-url': request_upload_url_1.default,
112
+ 'confirm-upload': confirm_upload_1.default,
113
+ 'provision-bucket': provision_bucket_1.default,
108
114
  });
109
- const usage = '\ncsdk <command>\n\nCommands:\n context Manage API contexts\n auth Manage authentication\n org-get-managers-record orgGetManagersRecord CRUD operations\n org-get-subordinates-record orgGetSubordinatesRecord CRUD operations\n app-permission appPermission CRUD operations\n org-permission orgPermission CRUD operations\n app-level-requirement appLevelRequirement CRUD operations\n org-member orgMember CRUD operations\n app-permission-default appPermissionDefault CRUD operations\n org-permission-default orgPermissionDefault CRUD operations\n app-admin-grant appAdminGrant CRUD operations\n app-owner-grant appOwnerGrant CRUD operations\n app-limit-default appLimitDefault CRUD operations\n org-limit-default orgLimitDefault CRUD operations\n org-admin-grant orgAdminGrant CRUD operations\n org-owner-grant orgOwnerGrant CRUD operations\n membership-type membershipType CRUD operations\n app-limit appLimit CRUD operations\n app-achievement appAchievement CRUD operations\n app-step appStep CRUD operations\n claimed-invite claimedInvite CRUD operations\n org-chart-edge-grant orgChartEdgeGrant CRUD operations\n org-limit orgLimit CRUD operations\n app-grant appGrant CRUD operations\n app-membership-default appMembershipDefault CRUD operations\n org-claimed-invite orgClaimedInvite CRUD operations\n org-grant orgGrant CRUD operations\n org-chart-edge orgChartEdge CRUD operations\n org-membership-default orgMembershipDefault CRUD operations\n app-level appLevel CRUD operations\n invite invite CRUD operations\n app-membership appMembership CRUD operations\n org-membership orgMembership CRUD operations\n org-invite orgInvite CRUD operations\n app-permissions-get-padded-mask appPermissionsGetPaddedMask\n org-permissions-get-padded-mask orgPermissionsGetPaddedMask\n org-is-manager-of orgIsManagerOf\n app-permissions-get-mask appPermissionsGetMask\n org-permissions-get-mask orgPermissionsGetMask\n steps-achieved stepsAchieved\n app-permissions-get-mask-by-names appPermissionsGetMaskByNames\n org-permissions-get-mask-by-names orgPermissionsGetMaskByNames\n app-permissions-get-by-mask Reads and enables pagination through a set of `AppPermission`.\n org-permissions-get-by-mask Reads and enables pagination through a set of `OrgPermission`.\n steps-required Reads and enables pagination through a set of `AppLevelRequirement`.\n submit-invite-code submitInviteCode\n submit-org-invite-code submitOrgInviteCode\n\n --help, -h Show this help message\n --version, -v Show version\n';
115
+ const usage = "\ncsdk <command>\n\nCommands:\n context Manage API contexts\n auth Manage authentication\n org-get-managers-record orgGetManagersRecord CRUD operations\n org-get-subordinates-record orgGetSubordinatesRecord CRUD operations\n app-permission appPermission CRUD operations\n org-permission orgPermission CRUD operations\n app-level-requirement appLevelRequirement CRUD operations\n org-member orgMember CRUD operations\n app-permission-default appPermissionDefault CRUD operations\n org-permission-default orgPermissionDefault CRUD operations\n app-admin-grant appAdminGrant CRUD operations\n app-owner-grant appOwnerGrant CRUD operations\n app-limit-default appLimitDefault CRUD operations\n org-limit-default orgLimitDefault CRUD operations\n org-admin-grant orgAdminGrant CRUD operations\n org-owner-grant orgOwnerGrant CRUD operations\n membership-type membershipType CRUD operations\n app-limit appLimit CRUD operations\n app-achievement appAchievement CRUD operations\n app-step appStep CRUD operations\n claimed-invite claimedInvite CRUD operations\n org-chart-edge-grant orgChartEdgeGrant CRUD operations\n org-limit orgLimit CRUD operations\n app-grant appGrant CRUD operations\n app-membership-default appMembershipDefault CRUD operations\n org-claimed-invite orgClaimedInvite CRUD operations\n org-grant orgGrant CRUD operations\n org-chart-edge orgChartEdge CRUD operations\n org-membership-default orgMembershipDefault CRUD operations\n app-level appLevel CRUD operations\n invite invite CRUD operations\n app-membership appMembership CRUD operations\n org-membership orgMembership CRUD operations\n org-invite orgInvite CRUD operations\n app-permissions-get-padded-mask appPermissionsGetPaddedMask\n org-permissions-get-padded-mask orgPermissionsGetPaddedMask\n org-is-manager-of orgIsManagerOf\n app-permissions-get-mask appPermissionsGetMask\n org-permissions-get-mask orgPermissionsGetMask\n steps-achieved stepsAchieved\n app-permissions-get-mask-by-names appPermissionsGetMaskByNames\n org-permissions-get-mask-by-names orgPermissionsGetMaskByNames\n app-permissions-get-by-mask Reads and enables pagination through a set of `AppPermission`.\n org-permissions-get-by-mask Reads and enables pagination through a set of `OrgPermission`.\n steps-required Reads and enables pagination through a set of `AppLevelRequirement`.\n submit-invite-code submitInviteCode\n submit-org-invite-code submitOrgInviteCode\n request-upload-url Request a presigned URL for uploading a file directly to S3.\nClient computes SHA-256 of the file content and provides it here.\nIf a file with the same hash already exists (dedup), returns the\nexisting file ID and deduplicated=true with no uploadUrl.\n confirm-upload Confirm that a file has been uploaded to S3.\nVerifies the object exists in S3, checks content-type,\nand transitions the file status from 'pending' to 'ready'.\n provision-bucket Provision an S3 bucket for a logical bucket in the database.\nReads the bucket config via RLS, then creates and configures\nthe S3 bucket with the appropriate privacy policies, CORS rules,\nand lifecycle settings.\n\n --help, -h Show this help message\n --version, -v Show version\n";
110
116
  const commands = async (argv, prompter, options) => {
111
117
  if (argv.help || argv.h) {
112
118
  console.log(usage);
@@ -100,5 +100,20 @@ export declare function getClient(contextName?: string): {
100
100
  } & import("../orm").StrictSelect<S, import("../orm/input-types").SubmitOrgInviteCodePayloadSelect>) => import("../orm").QueryBuilder<{
101
101
  submitOrgInviteCode: import("../orm").InferSelectResult<import("../orm/input-types").SubmitOrgInviteCodePayload, S> | null;
102
102
  }>;
103
+ requestUploadUrl: <S extends import("../orm/input-types").RequestUploadUrlPayloadSelect>(args: import("../orm/mutation").RequestUploadUrlVariables, options: {
104
+ select: S;
105
+ } & import("../orm").StrictSelect<S, import("../orm/input-types").RequestUploadUrlPayloadSelect>) => import("../orm").QueryBuilder<{
106
+ requestUploadUrl: import("../orm").InferSelectResult<import("../orm/input-types").RequestUploadUrlPayload, S> | null;
107
+ }>;
108
+ confirmUpload: <S extends import("../orm/input-types").ConfirmUploadPayloadSelect>(args: import("../orm/mutation").ConfirmUploadVariables, options: {
109
+ select: S;
110
+ } & import("../orm").StrictSelect<S, import("../orm/input-types").ConfirmUploadPayloadSelect>) => import("../orm").QueryBuilder<{
111
+ confirmUpload: import("../orm").InferSelectResult<import("../orm/input-types").ConfirmUploadPayload, S> | null;
112
+ }>;
113
+ provisionBucket: <S extends import("../orm/input-types").ProvisionBucketPayloadSelect>(args: import("../orm/mutation").ProvisionBucketVariables, options: {
114
+ select: S;
115
+ } & import("../orm").StrictSelect<S, import("../orm/input-types").ProvisionBucketPayloadSelect>) => import("../orm").QueryBuilder<{
116
+ provisionBucket: import("../orm").InferSelectResult<import("../orm/input-types").ProvisionBucketPayload, S> | null;
117
+ }>;
103
118
  };
104
119
  };
@@ -163,5 +163,20 @@ export declare function createClient(config: OrmClientConfig): {
163
163
  } & import("./select-types").StrictSelect<S, import("./input-types").SubmitOrgInviteCodePayloadSelect>) => import("./query-builder").QueryBuilder<{
164
164
  submitOrgInviteCode: import("./select-types").InferSelectResult<import("./input-types").SubmitOrgInviteCodePayload, S> | null;
165
165
  }>;
166
+ requestUploadUrl: <S extends import("./input-types").RequestUploadUrlPayloadSelect>(args: import("./mutation").RequestUploadUrlVariables, options: {
167
+ select: S;
168
+ } & import("./select-types").StrictSelect<S, import("./input-types").RequestUploadUrlPayloadSelect>) => import("./query-builder").QueryBuilder<{
169
+ requestUploadUrl: import("./select-types").InferSelectResult<import("./input-types").RequestUploadUrlPayload, S> | null;
170
+ }>;
171
+ confirmUpload: <S extends import("./input-types").ConfirmUploadPayloadSelect>(args: import("./mutation").ConfirmUploadVariables, options: {
172
+ select: S;
173
+ } & import("./select-types").StrictSelect<S, import("./input-types").ConfirmUploadPayloadSelect>) => import("./query-builder").QueryBuilder<{
174
+ confirmUpload: import("./select-types").InferSelectResult<import("./input-types").ConfirmUploadPayload, S> | null;
175
+ }>;
176
+ provisionBucket: <S extends import("./input-types").ProvisionBucketPayloadSelect>(args: import("./mutation").ProvisionBucketVariables, options: {
177
+ select: S;
178
+ } & import("./select-types").StrictSelect<S, import("./input-types").ProvisionBucketPayloadSelect>) => import("./query-builder").QueryBuilder<{
179
+ provisionBucket: import("./select-types").InferSelectResult<import("./input-types").ProvisionBucketPayload, S> | null;
180
+ }>;
166
181
  };
167
182
  };
@@ -2570,6 +2570,26 @@ export interface SubmitOrgInviteCodeInput {
2570
2570
  clientMutationId?: string;
2571
2571
  token?: string;
2572
2572
  }
2573
+ export interface RequestUploadUrlInput {
2574
+ /** Bucket key (e.g., "public", "private") */
2575
+ bucketKey: string;
2576
+ /** SHA-256 content hash computed by the client (hex-encoded, 64 chars) */
2577
+ contentHash: string;
2578
+ /** MIME type of the file (e.g., "image/png") */
2579
+ contentType: string;
2580
+ /** File size in bytes */
2581
+ size: number;
2582
+ /** Original filename (optional, for display and Content-Disposition) */
2583
+ filename?: string;
2584
+ }
2585
+ export interface ConfirmUploadInput {
2586
+ /** The file ID returned by requestUploadUrl */
2587
+ fileId: string;
2588
+ }
2589
+ export interface ProvisionBucketInput {
2590
+ /** The logical bucket key (e.g., "public", "private") */
2591
+ bucketKey: string;
2592
+ }
2573
2593
  /** A filter to be used against ConstructiveInternalTypeImage fields. All fields are combined with a logical ‘and.’ */
2574
2594
  export interface ConstructiveInternalTypeImageFilter {
2575
2595
  /** Is null (if `true` is specified) or is not null (if `false` is specified). */
@@ -2755,6 +2775,60 @@ export type SubmitOrgInviteCodePayloadSelect = {
2755
2775
  clientMutationId?: boolean;
2756
2776
  result?: boolean;
2757
2777
  };
2778
+ export interface RequestUploadUrlPayload {
2779
+ /** Presigned PUT URL (null if file was deduplicated) */
2780
+ uploadUrl?: string | null;
2781
+ /** The file ID (existing if deduplicated, new if fresh upload) */
2782
+ fileId: string;
2783
+ /** The S3 object key */
2784
+ key: string;
2785
+ /** Whether this file was deduplicated (already exists with same hash) */
2786
+ deduplicated: boolean;
2787
+ /** Presigned URL expiry time (null if deduplicated) */
2788
+ expiresAt?: string | null;
2789
+ }
2790
+ export type RequestUploadUrlPayloadSelect = {
2791
+ uploadUrl?: boolean;
2792
+ fileId?: boolean;
2793
+ key?: boolean;
2794
+ deduplicated?: boolean;
2795
+ expiresAt?: boolean;
2796
+ };
2797
+ export interface ConfirmUploadPayload {
2798
+ /** The confirmed file ID */
2799
+ fileId: string;
2800
+ /** New file status */
2801
+ status: string;
2802
+ /** Whether confirmation succeeded */
2803
+ success: boolean;
2804
+ }
2805
+ export type ConfirmUploadPayloadSelect = {
2806
+ fileId?: boolean;
2807
+ status?: boolean;
2808
+ success?: boolean;
2809
+ };
2810
+ export interface ProvisionBucketPayload {
2811
+ /** Whether provisioning succeeded */
2812
+ success: boolean;
2813
+ /** The S3 bucket name that was provisioned */
2814
+ bucketName: string;
2815
+ /** The access type applied */
2816
+ accessType: string;
2817
+ /** The storage provider used */
2818
+ provider: string;
2819
+ /** The S3 endpoint (null for AWS S3 default) */
2820
+ endpoint?: string | null;
2821
+ /** Error message if provisioning failed */
2822
+ error?: string | null;
2823
+ }
2824
+ export type ProvisionBucketPayloadSelect = {
2825
+ success?: boolean;
2826
+ bucketName?: boolean;
2827
+ accessType?: boolean;
2828
+ provider?: boolean;
2829
+ endpoint?: boolean;
2830
+ error?: boolean;
2831
+ };
2758
2832
  export interface CreateAppPermissionPayload {
2759
2833
  clientMutationId?: string | null;
2760
2834
  /** The `AppPermission` that was created by this mutation. */
@@ -6,13 +6,42 @@
6
6
  import { OrmClient } from '../client';
7
7
  import { QueryBuilder } from '../query-builder';
8
8
  import type { InferSelectResult, StrictSelect } from '../select-types';
9
- import type { SubmitInviteCodeInput, SubmitOrgInviteCodeInput, SubmitInviteCodePayload, SubmitOrgInviteCodePayload, SubmitInviteCodePayloadSelect, SubmitOrgInviteCodePayloadSelect } from '../input-types';
9
+ import type { SubmitInviteCodeInput, SubmitOrgInviteCodeInput, RequestUploadUrlInput, ConfirmUploadInput, ProvisionBucketInput, SubmitInviteCodePayload, SubmitOrgInviteCodePayload, RequestUploadUrlPayload, ConfirmUploadPayload, ProvisionBucketPayload, SubmitInviteCodePayloadSelect, SubmitOrgInviteCodePayloadSelect, RequestUploadUrlPayloadSelect, ConfirmUploadPayloadSelect, ProvisionBucketPayloadSelect } from '../input-types';
10
10
  export interface SubmitInviteCodeVariables {
11
11
  input: SubmitInviteCodeInput;
12
12
  }
13
13
  export interface SubmitOrgInviteCodeVariables {
14
14
  input: SubmitOrgInviteCodeInput;
15
15
  }
16
+ /**
17
+ * Variables for requestUploadUrl
18
+ * Request a presigned URL for uploading a file directly to S3.
19
+ Client computes SHA-256 of the file content and provides it here.
20
+ If a file with the same hash already exists (dedup), returns the
21
+ existing file ID and deduplicated=true with no uploadUrl.
22
+ */
23
+ export interface RequestUploadUrlVariables {
24
+ input: RequestUploadUrlInput;
25
+ }
26
+ /**
27
+ * Variables for confirmUpload
28
+ * Confirm that a file has been uploaded to S3.
29
+ Verifies the object exists in S3, checks content-type,
30
+ and transitions the file status from 'pending' to 'ready'.
31
+ */
32
+ export interface ConfirmUploadVariables {
33
+ input: ConfirmUploadInput;
34
+ }
35
+ /**
36
+ * Variables for provisionBucket
37
+ * Provision an S3 bucket for a logical bucket in the database.
38
+ Reads the bucket config via RLS, then creates and configures
39
+ the S3 bucket with the appropriate privacy policies, CORS rules,
40
+ and lifecycle settings.
41
+ */
42
+ export interface ProvisionBucketVariables {
43
+ input: ProvisionBucketInput;
44
+ }
16
45
  export declare function createMutationOperations(client: OrmClient): {
17
46
  submitInviteCode: <S extends SubmitInviteCodePayloadSelect>(args: SubmitInviteCodeVariables, options: {
18
47
  select: S;
@@ -24,4 +53,19 @@ export declare function createMutationOperations(client: OrmClient): {
24
53
  } & StrictSelect<S, SubmitOrgInviteCodePayloadSelect>) => QueryBuilder<{
25
54
  submitOrgInviteCode: InferSelectResult<SubmitOrgInviteCodePayload, S> | null;
26
55
  }>;
56
+ requestUploadUrl: <S extends RequestUploadUrlPayloadSelect>(args: RequestUploadUrlVariables, options: {
57
+ select: S;
58
+ } & StrictSelect<S, RequestUploadUrlPayloadSelect>) => QueryBuilder<{
59
+ requestUploadUrl: InferSelectResult<RequestUploadUrlPayload, S> | null;
60
+ }>;
61
+ confirmUpload: <S extends ConfirmUploadPayloadSelect>(args: ConfirmUploadVariables, options: {
62
+ select: S;
63
+ } & StrictSelect<S, ConfirmUploadPayloadSelect>) => QueryBuilder<{
64
+ confirmUpload: InferSelectResult<ConfirmUploadPayload, S> | null;
65
+ }>;
66
+ provisionBucket: <S extends ProvisionBucketPayloadSelect>(args: ProvisionBucketVariables, options: {
67
+ select: S;
68
+ } & StrictSelect<S, ProvisionBucketPayloadSelect>) => QueryBuilder<{
69
+ provisionBucket: InferSelectResult<ProvisionBucketPayload, S> | null;
70
+ }>;
27
71
  };
@@ -29,5 +29,41 @@ function createMutationOperations(client) {
29
29
  },
30
30
  ], input_types_1.connectionFieldsMap, 'SubmitOrgInviteCodePayload'),
31
31
  }),
32
+ requestUploadUrl: (args, options) => new query_builder_1.QueryBuilder({
33
+ client,
34
+ operation: 'mutation',
35
+ operationName: 'RequestUploadUrl',
36
+ fieldName: 'requestUploadUrl',
37
+ ...(0, query_builder_1.buildCustomDocument)('mutation', 'RequestUploadUrl', 'requestUploadUrl', options.select, args, [
38
+ {
39
+ name: 'input',
40
+ type: 'RequestUploadUrlInput!',
41
+ },
42
+ ], input_types_1.connectionFieldsMap, 'RequestUploadUrlPayload'),
43
+ }),
44
+ confirmUpload: (args, options) => new query_builder_1.QueryBuilder({
45
+ client,
46
+ operation: 'mutation',
47
+ operationName: 'ConfirmUpload',
48
+ fieldName: 'confirmUpload',
49
+ ...(0, query_builder_1.buildCustomDocument)('mutation', 'ConfirmUpload', 'confirmUpload', options.select, args, [
50
+ {
51
+ name: 'input',
52
+ type: 'ConfirmUploadInput!',
53
+ },
54
+ ], input_types_1.connectionFieldsMap, 'ConfirmUploadPayload'),
55
+ }),
56
+ provisionBucket: (args, options) => new query_builder_1.QueryBuilder({
57
+ client,
58
+ operation: 'mutation',
59
+ operationName: 'ProvisionBucket',
60
+ fieldName: 'provisionBucket',
61
+ ...(0, query_builder_1.buildCustomDocument)('mutation', 'ProvisionBucket', 'provisionBucket', options.select, args, [
62
+ {
63
+ name: 'input',
64
+ type: 'ProvisionBucketInput!',
65
+ },
66
+ ], input_types_1.connectionFieldsMap, 'ProvisionBucketPayload'),
67
+ }),
32
68
  };
33
69
  }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * CLI command for mutation confirmUpload
3
+ * @generated by @constructive-io/graphql-codegen
4
+ * DO NOT EDIT - changes will be overwritten
5
+ */
6
+ import { CLIOptions, Inquirerer } from 'inquirerer';
7
+ declare const _default: (argv: Partial<Record<string, unknown>>, prompter: Inquirerer, _options: CLIOptions) => Promise<void>;
8
+ export default _default;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const executor_1 = require("../executor");
4
+ const utils_1 = require("../utils");
5
+ exports.default = async (argv, prompter, _options) => {
6
+ try {
7
+ if (argv.help || argv.h) {
8
+ console.log("confirm-upload - Confirm that a file has been uploaded to S3.\nVerifies the object exists in S3, checks content-type,\nand transitions the file status from 'pending' to 'ready'.\n\nUsage: confirm-upload [OPTIONS]\n");
9
+ process.exit(0);
10
+ }
11
+ const answers = await prompter.prompt(argv, [
12
+ {
13
+ type: 'text',
14
+ name: 'input',
15
+ message: 'The exclusive input argument for this mutation. An object type, make sure to see documentation for this object\u2019s fields.',
16
+ required: true,
17
+ },
18
+ ]);
19
+ const client = (0, executor_1.getClient)();
20
+ const parsedAnswers = (0, utils_1.unflattenDotNotation)(answers);
21
+ const selectFields = (0, utils_1.buildSelectFromPaths)(argv.select ?? 'clientMutationId');
22
+ const result = await client.mutation
23
+ .confirmUpload(parsedAnswers, {
24
+ select: selectFields,
25
+ })
26
+ .execute();
27
+ console.log(JSON.stringify(result, null, 2));
28
+ }
29
+ catch (error) {
30
+ console.error('Failed: confirmUpload');
31
+ if (error instanceof Error) {
32
+ console.error(error.message);
33
+ }
34
+ process.exit(1);
35
+ }
36
+ };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * CLI command for mutation provisionBucket
3
+ * @generated by @constructive-io/graphql-codegen
4
+ * DO NOT EDIT - changes will be overwritten
5
+ */
6
+ import { CLIOptions, Inquirerer } from 'inquirerer';
7
+ declare const _default: (argv: Partial<Record<string, unknown>>, prompter: Inquirerer, _options: CLIOptions) => Promise<void>;
8
+ export default _default;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const executor_1 = require("../executor");
4
+ const utils_1 = require("../utils");
5
+ exports.default = async (argv, prompter, _options) => {
6
+ try {
7
+ if (argv.help || argv.h) {
8
+ console.log('provision-bucket - Provision an S3 bucket for a logical bucket in the database.\nReads the bucket config via RLS, then creates and configures\nthe S3 bucket with the appropriate privacy policies, CORS rules,\nand lifecycle settings.\n\nUsage: provision-bucket [OPTIONS]\n');
9
+ process.exit(0);
10
+ }
11
+ const answers = await prompter.prompt(argv, [
12
+ {
13
+ type: 'text',
14
+ name: 'input',
15
+ message: 'The exclusive input argument for this mutation. An object type, make sure to see documentation for this object\u2019s fields.',
16
+ required: true,
17
+ },
18
+ ]);
19
+ const client = (0, executor_1.getClient)();
20
+ const parsedAnswers = (0, utils_1.unflattenDotNotation)(answers);
21
+ const selectFields = (0, utils_1.buildSelectFromPaths)(argv.select ?? 'clientMutationId');
22
+ const result = await client.mutation
23
+ .provisionBucket(parsedAnswers, {
24
+ select: selectFields,
25
+ })
26
+ .execute();
27
+ console.log(JSON.stringify(result, null, 2));
28
+ }
29
+ catch (error) {
30
+ console.error('Failed: provisionBucket');
31
+ if (error instanceof Error) {
32
+ console.error(error.message);
33
+ }
34
+ process.exit(1);
35
+ }
36
+ };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * CLI command for mutation requestUploadUrl
3
+ * @generated by @constructive-io/graphql-codegen
4
+ * DO NOT EDIT - changes will be overwritten
5
+ */
6
+ import { CLIOptions, Inquirerer } from 'inquirerer';
7
+ declare const _default: (argv: Partial<Record<string, unknown>>, prompter: Inquirerer, _options: CLIOptions) => Promise<void>;
8
+ export default _default;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const executor_1 = require("../executor");
4
+ const utils_1 = require("../utils");
5
+ exports.default = async (argv, prompter, _options) => {
6
+ try {
7
+ if (argv.help || argv.h) {
8
+ console.log('request-upload-url - Request a presigned URL for uploading a file directly to S3.\nClient computes SHA-256 of the file content and provides it here.\nIf a file with the same hash already exists (dedup), returns the\nexisting file ID and deduplicated=true with no uploadUrl.\n\nUsage: request-upload-url [OPTIONS]\n');
9
+ process.exit(0);
10
+ }
11
+ const answers = await prompter.prompt(argv, [
12
+ {
13
+ type: 'text',
14
+ name: 'input',
15
+ message: 'The exclusive input argument for this mutation. An object type, make sure to see documentation for this object\u2019s fields.',
16
+ required: true,
17
+ },
18
+ ]);
19
+ const client = (0, executor_1.getClient)();
20
+ const parsedAnswers = (0, utils_1.unflattenDotNotation)(answers);
21
+ const selectFields = (0, utils_1.buildSelectFromPaths)(argv.select ?? 'clientMutationId');
22
+ const result = await client.mutation
23
+ .requestUploadUrl(parsedAnswers, {
24
+ select: selectFields,
25
+ })
26
+ .execute();
27
+ console.log(JSON.stringify(result, null, 2));
28
+ }
29
+ catch (error) {
30
+ console.error('Failed: requestUploadUrl');
31
+ if (error instanceof Error) {
32
+ console.error(error.message);
33
+ }
34
+ process.exit(1);
35
+ }
36
+ };
@@ -39,6 +39,9 @@ const forgot_password_1 = __importDefault(require("./commands/forgot-password"))
39
39
  const send_verification_email_1 = __importDefault(require("./commands/send-verification-email"));
40
40
  const verify_password_1 = __importDefault(require("./commands/verify-password"));
41
41
  const verify_totp_1 = __importDefault(require("./commands/verify-totp"));
42
+ const request_upload_url_1 = __importDefault(require("./commands/request-upload-url"));
43
+ const confirm_upload_1 = __importDefault(require("./commands/confirm-upload"));
44
+ const provision_bucket_1 = __importDefault(require("./commands/provision-bucket"));
42
45
  const createCommandMap = () => ({
43
46
  context: context_1.default,
44
47
  auth: auth_1.default,
@@ -69,8 +72,11 @@ const createCommandMap = () => ({
69
72
  'send-verification-email': send_verification_email_1.default,
70
73
  'verify-password': verify_password_1.default,
71
74
  'verify-totp': verify_totp_1.default,
75
+ 'request-upload-url': request_upload_url_1.default,
76
+ 'confirm-upload': confirm_upload_1.default,
77
+ 'provision-bucket': provision_bucket_1.default,
72
78
  });
73
- const usage = '\ncsdk <command>\n\nCommands:\n context Manage API contexts\n auth Manage authentication\n email email CRUD operations\n phone-number phoneNumber CRUD operations\n crypto-address cryptoAddress CRUD operations\n connected-account connectedAccount CRUD operations\n audit-log auditLog CRUD operations\n role-type roleType CRUD operations\n user user CRUD operations\n current-ip-address currentIpAddress\n current-user-agent currentUserAgent\n current-user-id currentUserId\n current-user currentUser\n sign-out signOut\n send-account-deletion-email sendAccountDeletionEmail\n check-password checkPassword\n confirm-delete-account confirmDeleteAccount\n set-password setPassword\n verify-email verifyEmail\n reset-password resetPassword\n sign-in-one-time-token signInOneTimeToken\n sign-in signIn\n sign-up signUp\n one-time-token oneTimeToken\n extend-token-expires extendTokenExpires\n forgot-password forgotPassword\n send-verification-email sendVerificationEmail\n verify-password verifyPassword\n verify-totp verifyTotp\n\n --help, -h Show this help message\n --version, -v Show version\n';
79
+ const usage = "\ncsdk <command>\n\nCommands:\n context Manage API contexts\n auth Manage authentication\n email email CRUD operations\n phone-number phoneNumber CRUD operations\n crypto-address cryptoAddress CRUD operations\n connected-account connectedAccount CRUD operations\n audit-log auditLog CRUD operations\n role-type roleType CRUD operations\n user user CRUD operations\n current-ip-address currentIpAddress\n current-user-agent currentUserAgent\n current-user-id currentUserId\n current-user currentUser\n sign-out signOut\n send-account-deletion-email sendAccountDeletionEmail\n check-password checkPassword\n confirm-delete-account confirmDeleteAccount\n set-password setPassword\n verify-email verifyEmail\n reset-password resetPassword\n sign-in-one-time-token signInOneTimeToken\n sign-in signIn\n sign-up signUp\n one-time-token oneTimeToken\n extend-token-expires extendTokenExpires\n forgot-password forgotPassword\n send-verification-email sendVerificationEmail\n verify-password verifyPassword\n verify-totp verifyTotp\n request-upload-url Request a presigned URL for uploading a file directly to S3.\nClient computes SHA-256 of the file content and provides it here.\nIf a file with the same hash already exists (dedup), returns the\nexisting file ID and deduplicated=true with no uploadUrl.\n confirm-upload Confirm that a file has been uploaded to S3.\nVerifies the object exists in S3, checks content-type,\nand transitions the file status from 'pending' to 'ready'.\n provision-bucket Provision an S3 bucket for a logical bucket in the database.\nReads the bucket config via RLS, then creates and configures\nthe S3 bucket with the appropriate privacy policies, CORS rules,\nand lifecycle settings.\n\n --help, -h Show this help message\n --version, -v Show version\n";
74
80
  const commands = async (argv, prompter, options) => {
75
81
  if (argv.help || argv.h) {
76
82
  console.log(usage);
@@ -110,5 +110,20 @@ export declare function getClient(contextName?: string): {
110
110
  } & import("../orm").StrictSelect<S, import("../orm/input-types").VerifyTotpPayloadSelect>) => import("../orm").QueryBuilder<{
111
111
  verifyTotp: import("../orm").InferSelectResult<import("../orm/input-types").VerifyTotpPayload, S> | null;
112
112
  }>;
113
+ requestUploadUrl: <S extends import("../orm/input-types").RequestUploadUrlPayloadSelect>(args: import("../orm/mutation").RequestUploadUrlVariables, options: {
114
+ select: S;
115
+ } & import("../orm").StrictSelect<S, import("../orm/input-types").RequestUploadUrlPayloadSelect>) => import("../orm").QueryBuilder<{
116
+ requestUploadUrl: import("../orm").InferSelectResult<import("../orm/input-types").RequestUploadUrlPayload, S> | null;
117
+ }>;
118
+ confirmUpload: <S extends import("../orm/input-types").ConfirmUploadPayloadSelect>(args: import("../orm/mutation").ConfirmUploadVariables, options: {
119
+ select: S;
120
+ } & import("../orm").StrictSelect<S, import("../orm/input-types").ConfirmUploadPayloadSelect>) => import("../orm").QueryBuilder<{
121
+ confirmUpload: import("../orm").InferSelectResult<import("../orm/input-types").ConfirmUploadPayload, S> | null;
122
+ }>;
123
+ provisionBucket: <S extends import("../orm/input-types").ProvisionBucketPayloadSelect>(args: import("../orm/mutation").ProvisionBucketVariables, options: {
124
+ select: S;
125
+ } & import("../orm").StrictSelect<S, import("../orm/input-types").ProvisionBucketPayloadSelect>) => import("../orm").QueryBuilder<{
126
+ provisionBucket: import("../orm").InferSelectResult<import("../orm/input-types").ProvisionBucketPayload, S> | null;
127
+ }>;
113
128
  };
114
129
  };
@@ -148,5 +148,20 @@ export declare function createClient(config: OrmClientConfig): {
148
148
  } & import("./select-types").StrictSelect<S, import("./input-types").VerifyTotpPayloadSelect>) => import("./query-builder").QueryBuilder<{
149
149
  verifyTotp: import("./select-types").InferSelectResult<import("./input-types").VerifyTotpPayload, S> | null;
150
150
  }>;
151
+ requestUploadUrl: <S extends import("./input-types").RequestUploadUrlPayloadSelect>(args: import("./mutation").RequestUploadUrlVariables, options: {
152
+ select: S;
153
+ } & import("./select-types").StrictSelect<S, import("./input-types").RequestUploadUrlPayloadSelect>) => import("./query-builder").QueryBuilder<{
154
+ requestUploadUrl: import("./select-types").InferSelectResult<import("./input-types").RequestUploadUrlPayload, S> | null;
155
+ }>;
156
+ confirmUpload: <S extends import("./input-types").ConfirmUploadPayloadSelect>(args: import("./mutation").ConfirmUploadVariables, options: {
157
+ select: S;
158
+ } & import("./select-types").StrictSelect<S, import("./input-types").ConfirmUploadPayloadSelect>) => import("./query-builder").QueryBuilder<{
159
+ confirmUpload: import("./select-types").InferSelectResult<import("./input-types").ConfirmUploadPayload, S> | null;
160
+ }>;
161
+ provisionBucket: <S extends import("./input-types").ProvisionBucketPayloadSelect>(args: import("./mutation").ProvisionBucketVariables, options: {
162
+ select: S;
163
+ } & import("./select-types").StrictSelect<S, import("./input-types").ProvisionBucketPayloadSelect>) => import("./query-builder").QueryBuilder<{
164
+ provisionBucket: import("./select-types").InferSelectResult<import("./input-types").ProvisionBucketPayload, S> | null;
165
+ }>;
151
166
  };
152
167
  };