@sendmux/cli 1.1.0 → 1.3.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 (37) hide show
  1. package/README.md +57 -3
  2. package/dist/commands/mailbox/create-attachment-upload.d.ts +26 -0
  3. package/dist/commands/mailbox/create-attachment-upload.d.ts.map +1 -0
  4. package/dist/commands/mailbox/create-attachment-upload.js +7 -0
  5. package/dist/commands/mailbox/get-message-attachment.d.ts +7 -1
  6. package/dist/commands/mailbox/get-message-attachment.d.ts.map +1 -1
  7. package/dist/commands/mailbox/stream-events.d.ts +18 -0
  8. package/dist/commands/mailbox/stream-events.d.ts.map +1 -1
  9. package/dist/commands/mailbox/stream-events.js +8 -0
  10. package/dist/commands/sending/complete-attachment-upload.d.ts +40 -0
  11. package/dist/commands/sending/complete-attachment-upload.d.ts.map +1 -0
  12. package/dist/commands/sending/complete-attachment-upload.js +7 -0
  13. package/dist/commands/sending/create-attachment-upload.d.ts +27 -0
  14. package/dist/commands/sending/create-attachment-upload.d.ts.map +1 -0
  15. package/dist/commands/sending/create-attachment-upload.js +7 -0
  16. package/dist/commands/sending/get-attachment.d.ts +27 -0
  17. package/dist/commands/sending/get-attachment.d.ts.map +1 -0
  18. package/dist/commands/sending/get-attachment.js +7 -0
  19. package/dist/commands/sending/get-open-api-spec.d.ts +1 -1
  20. package/dist/commands/sending/upload-attachment.d.ts +49 -0
  21. package/dist/commands/sending/upload-attachment.d.ts.map +1 -0
  22. package/dist/commands/sending/upload-attachment.js +7 -0
  23. package/dist/generated/operations.d.ts +152 -2
  24. package/dist/generated/operations.d.ts.map +1 -1
  25. package/dist/generated/operations.js +170 -2
  26. package/dist/key-kind.d.ts +1 -1
  27. package/dist/key-kind.d.ts.map +1 -1
  28. package/dist/key-kind.js +6 -0
  29. package/dist/operation-command.d.ts +4 -0
  30. package/dist/operation-command.d.ts.map +1 -1
  31. package/dist/operation-flags.d.ts +9 -0
  32. package/dist/operation-flags.d.ts.map +1 -1
  33. package/dist/operation-flags.js +29 -4
  34. package/dist/operation-runner.d.ts.map +1 -1
  35. package/dist/operation-runner.js +331 -14
  36. package/oclif.manifest.json +3785 -334
  37. package/package.json +2 -2
package/README.md CHANGED
@@ -50,12 +50,58 @@ sendmux sending:send --profile sending --body '{"from":{"email":"sender@example.
50
50
 
51
51
  Commands reject mismatched key types before making a network request.
52
52
 
53
+ ## Attachments And Events
54
+
55
+ Send a mailbox message with a local file in one command:
56
+
57
+ ```sh
58
+ sendmux mailbox:send-message \
59
+ --profile mailbox \
60
+ --idempotency-key "$IDEMPOTENCY_KEY" \
61
+ --attach ./report.md \
62
+ --body '{"to":[{"email":"recipient@example.com","name":null}],"subject":"Report","text_body":"Attached."}' \
63
+ --json
64
+ ```
65
+
66
+ `--attach` can be repeated. The CLI reads and uploads each local file before sending, so the file bytes do not pass through model context. Mailbox uploads use the mailbox attachment cap, currently `7,500,000` bytes per attachment; Sending API sends use the generated Sending API request-body limits.
67
+
68
+ Upload a file first, then use the returned `blob_id` in `mailbox:send-message`:
69
+
70
+ ```sh
71
+ sendmux mailbox:upload-attachment \
72
+ --profile mailbox \
73
+ --file ./report.md \
74
+ --json
75
+ ```
76
+
77
+ Use presigned upload when a shell should upload without an API key:
78
+
79
+ ```sh
80
+ sendmux mailbox:upload-attachment \
81
+ --profile mailbox \
82
+ --file ./report.md \
83
+ --via-presigned \
84
+ --json
85
+ ```
86
+
87
+ Attachment metadata returned from message, search, and event operations includes `download_url`. Fetch it promptly with any HTTP client; no `Authorization` header is needed. If it expires, re-run the message or attachment metadata command to get a fresh URL.
88
+
89
+ Follow live mailbox events as newline-delimited JSON:
90
+
91
+ ```sh
92
+ sendmux mailbox:stream-events \
93
+ --profile mailbox \
94
+ --query event_types=message.received \
95
+ --query close_after=300 \
96
+ --follow
97
+ ```
98
+
53
99
  ## Commands
54
100
 
55
- The CLI includes `95` generated API operation commands:
101
+ The CLI includes `97` generated API operation commands:
56
102
 
57
- - `40` Mailbox commands, including `mailbox:messages:list`, `mailbox:messages:get`, `mailbox:send-message`, and `mailbox:list-granted-mailboxes`.
58
- - `52` Management commands, including `management:domains:list`, `management:create-mailbox`, `management:get-spend-summary`, and `management:create-webhook`.
103
+ - `41` Mailbox commands, including `mailbox:messages:list`, `mailbox:messages:get`, `mailbox:send-message`, and `mailbox:list-granted-mailboxes`.
104
+ - `53` Management commands, including `management:domains:list`, `management:create-mailbox`, `management:get-spend-summary`, and `management:create-webhook`.
59
105
  - `3` Sending commands: `sending:get-open-api-spec`, `sending:send`, and `sending:send:batch`.
60
106
  - Profile commands: `profiles:list`, `profiles:set`, and `profiles:show`.
61
107
 
@@ -75,6 +121,10 @@ Operation commands support:
75
121
  - `--profile` / `-p`
76
122
  - `--body`
77
123
  - `--body-file`
124
+ - `--attach`
125
+ - `--file`
126
+ - `--via-presigned`
127
+ - `--content-type`
78
128
  - `--header`
79
129
  - `--idempotency-key`
80
130
  - `--if-match`
@@ -85,6 +135,10 @@ Operation commands support:
85
135
 
86
136
  `--path`, `--query`, and `--header` use `name=value` syntax and can be repeated when the operation accepts multiple values.
87
137
 
138
+ Attachment flags are command-specific: `--attach` works on supported send commands, while `--file` and `--via-presigned` work on mailbox attachment upload commands. Mailbox upload commands share the `7,500,000` byte per-attachment cap.
139
+
140
+ `mailbox:stream-events` also supports `--follow` to keep printing events until the stream closes or the process is interrupted.
141
+
88
142
  ## Support
89
143
 
90
144
  Open an issue in [Sendmux/sendmux-sdk](https://github.com/Sendmux/sendmux-sdk/issues) with the CLI version, command, flags, and request ID from any API error.
@@ -0,0 +1,26 @@
1
+ import { OperationCommand } from "../../operation-command.js";
2
+ export default class MailboxCreateAttachmentUploadCommand extends OperationCommand {
3
+ static description: "Create a presigned mailbox attachment upload";
4
+ static operation: {
5
+ readonly bodyKind: "json";
6
+ readonly command: "mailbox:create-attachment-upload";
7
+ readonly description: "Create a presigned mailbox attachment upload";
8
+ readonly headerParams: readonly [];
9
+ readonly method: "post";
10
+ readonly operationId: "mailboxCreateAttachmentUpload";
11
+ readonly path: "/mailbox/attachment-uploads";
12
+ readonly pathParams: readonly [];
13
+ readonly queryParams: readonly [{
14
+ readonly name: "mailbox_id";
15
+ readonly required: false;
16
+ readonly schema: {
17
+ readonly type: "string";
18
+ };
19
+ }];
20
+ readonly responseKind: "json";
21
+ readonly requestBodyRequired: false;
22
+ readonly requiredKeyKind: "mailbox";
23
+ readonly surface: "mailbox";
24
+ };
25
+ }
26
+ //# sourceMappingURL=create-attachment-upload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-attachment-upload.d.ts","sourceRoot":"","sources":["../../../src/commands/mailbox/create-attachment-upload.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,oCAAqC,SAAQ,gBAAgB;IAChF,MAAM,CAAC,WAAW,iDAAwD;IAC1E,MAAM,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;MAA4C;CAC7D"}
@@ -0,0 +1,7 @@
1
+ // This file is generated by scripts/generate-cli.mjs
2
+ import { operations } from "../../generated/operations.js";
3
+ import { OperationCommand } from "../../operation-command.js";
4
+ export default class MailboxCreateAttachmentUploadCommand extends OperationCommand {
5
+ static description = operations.mailboxCreateAttachmentUpload.description;
6
+ static operation = operations.mailboxCreateAttachmentUpload;
7
+ }
@@ -34,8 +34,14 @@ export default class MailboxGetMessageAttachmentCommand extends OperationCommand
34
34
  readonly schema: {
35
35
  readonly type: "string";
36
36
  };
37
+ }, {
38
+ readonly name: "download_token";
39
+ readonly required: false;
40
+ readonly schema: {
41
+ readonly type: "string";
42
+ };
37
43
  }];
38
- readonly responseKind: "json";
44
+ readonly responseKind: "binary";
39
45
  readonly requestBodyRequired: false;
40
46
  readonly requiredKeyKind: "mailbox";
41
47
  readonly surface: "mailbox";
@@ -1 +1 @@
1
- {"version":3,"file":"get-message-attachment.d.ts","sourceRoot":"","sources":["../../../src/commands/mailbox/get-message-attachment.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,kCAAmC,SAAQ,gBAAgB;IAC9E,MAAM,CAAC,WAAW,kCAAsD;IACxE,MAAM,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAA0C;CAC3D"}
1
+ {"version":3,"file":"get-message-attachment.d.ts","sourceRoot":"","sources":["../../../src/commands/mailbox/get-message-attachment.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,kCAAmC,SAAQ,gBAAgB;IAC9E,MAAM,CAAC,WAAW,kCAAsD;IACxE,MAAM,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAA0C;CAC3D"}
@@ -1,6 +1,24 @@
1
1
  import { OperationCommand } from "../../operation-command.js";
2
2
  export default class MailboxStreamEventsCommand extends OperationCommand {
3
3
  static description: "Stream mailbox events";
4
+ static flags: {
5
+ follow: import("@oclif/core/interfaces").BooleanFlag<boolean>;
6
+ attach: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ body: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ "body-file": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ "content-type": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ file: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ header: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ "idempotency-key": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ "if-match": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ "if-none-match": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ path: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
+ query: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
+ "via-presigned": import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
+ "api-key": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
+ "base-url": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
20
+ profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
21
+ };
4
22
  static operation: {
5
23
  readonly bodyKind: "none";
6
24
  readonly command: "mailbox:stream-events";
@@ -1 +1 @@
1
- {"version":3,"file":"stream-events.d.ts","sourceRoot":"","sources":["../../../src/commands/mailbox/stream-events.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,gBAAgB;IACtE,MAAM,CAAC,WAAW,0BAA8C;IAChE,MAAM,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAkC;CACnD"}
1
+ {"version":3,"file":"stream-events.d.ts","sourceRoot":"","sources":["../../../src/commands/mailbox/stream-events.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAG9D,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,gBAAgB;IACtE,MAAM,CAAC,WAAW,0BAA8C;IAChE,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;MAKV;IACF,MAAM,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAkC;CACnD"}
@@ -1,7 +1,15 @@
1
1
  // This file is generated by scripts/generate-cli.mjs
2
+ import { Flags } from "@oclif/core";
2
3
  import { operations } from "../../generated/operations.js";
3
4
  import { OperationCommand } from "../../operation-command.js";
5
+ import { operationFlags } from "../../operation-flags.js";
4
6
  export default class MailboxStreamEventsCommand extends OperationCommand {
5
7
  static description = operations.mailboxStreamEvents.description;
8
+ static flags = {
9
+ ...operationFlags,
10
+ follow: Flags.boolean({
11
+ description: "Keep streaming mailbox events until the stream closes or the process is interrupted. Emits one JSON object per line.",
12
+ }),
13
+ };
6
14
  static operation = operations.mailboxStreamEvents;
7
15
  }
@@ -0,0 +1,40 @@
1
+ import { OperationCommand } from "../../operation-command.js";
2
+ export default class SendingCompleteAttachmentUploadCommand extends OperationCommand {
3
+ static description: "Upload bytes to an attachment upload URL";
4
+ static operation: {
5
+ readonly bodyKind: "binary";
6
+ readonly command: "sending:complete-attachment-upload";
7
+ readonly description: "Upload bytes to an attachment upload URL";
8
+ readonly headerParams: readonly [{
9
+ readonly name: "X-Sendmux-Upload-Token";
10
+ readonly required: true;
11
+ readonly schema: {
12
+ readonly type: "string";
13
+ };
14
+ }, {
15
+ readonly name: "Content-Length";
16
+ readonly required: true;
17
+ readonly schema: {
18
+ readonly type: "integer";
19
+ readonly minimum: 1;
20
+ };
21
+ }];
22
+ readonly method: "put";
23
+ readonly operationId: "sendingCompleteAttachmentUpload";
24
+ readonly path: "/emails/attachment-uploads/{upload_id}";
25
+ readonly pathParams: readonly [{
26
+ readonly name: "upload_id";
27
+ readonly required: true;
28
+ readonly schema: {
29
+ readonly type: "string";
30
+ readonly pattern: "^upl_[a-z0-9]{24}$";
31
+ };
32
+ }];
33
+ readonly queryParams: readonly [];
34
+ readonly responseKind: "json";
35
+ readonly requestBodyRequired: true;
36
+ readonly requiredKeyKind: "none";
37
+ readonly surface: "sending";
38
+ };
39
+ }
40
+ //# sourceMappingURL=complete-attachment-upload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"complete-attachment-upload.d.ts","sourceRoot":"","sources":["../../../src/commands/sending/complete-attachment-upload.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,sCAAuC,SAAQ,gBAAgB;IAClF,MAAM,CAAC,WAAW,6CAA0D;IAC5E,MAAM,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAA8C;CAC/D"}
@@ -0,0 +1,7 @@
1
+ // This file is generated by scripts/generate-cli.mjs
2
+ import { operations } from "../../generated/operations.js";
3
+ import { OperationCommand } from "../../operation-command.js";
4
+ export default class SendingCompleteAttachmentUploadCommand extends OperationCommand {
5
+ static description = operations.sendingCompleteAttachmentUpload.description;
6
+ static operation = operations.sendingCompleteAttachmentUpload;
7
+ }
@@ -0,0 +1,27 @@
1
+ import { OperationCommand } from "../../operation-command.js";
2
+ export default class SendingCreateAttachmentUploadCommand extends OperationCommand {
3
+ static description: "Create an attachment upload URL";
4
+ static operation: {
5
+ readonly bodyKind: "json";
6
+ readonly command: "sending:create-attachment-upload";
7
+ readonly description: "Create an attachment upload URL";
8
+ readonly headerParams: readonly [{
9
+ readonly name: "Idempotency-Key";
10
+ readonly required: false;
11
+ readonly schema: {
12
+ readonly type: "string";
13
+ readonly maxLength: 255;
14
+ };
15
+ }];
16
+ readonly method: "post";
17
+ readonly operationId: "sendingCreateAttachmentUpload";
18
+ readonly path: "/emails/attachment-uploads";
19
+ readonly pathParams: readonly [];
20
+ readonly queryParams: readonly [];
21
+ readonly responseKind: "json";
22
+ readonly requestBodyRequired: true;
23
+ readonly requiredKeyKind: "sending";
24
+ readonly surface: "sending";
25
+ };
26
+ }
27
+ //# sourceMappingURL=create-attachment-upload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-attachment-upload.d.ts","sourceRoot":"","sources":["../../../src/commands/sending/create-attachment-upload.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,oCAAqC,SAAQ,gBAAgB;IAChF,MAAM,CAAC,WAAW,oCAAwD;IAC1E,MAAM,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;MAA4C;CAC7D"}
@@ -0,0 +1,7 @@
1
+ // This file is generated by scripts/generate-cli.mjs
2
+ import { operations } from "../../generated/operations.js";
3
+ import { OperationCommand } from "../../operation-command.js";
4
+ export default class SendingCreateAttachmentUploadCommand extends OperationCommand {
5
+ static description = operations.sendingCreateAttachmentUpload.description;
6
+ static operation = operations.sendingCreateAttachmentUpload;
7
+ }
@@ -0,0 +1,27 @@
1
+ import { OperationCommand } from "../../operation-command.js";
2
+ export default class SendingGetAttachmentCommand extends OperationCommand {
3
+ static description: "Get attachment metadata";
4
+ static operation: {
5
+ readonly bodyKind: "none";
6
+ readonly command: "sending:get-attachment";
7
+ readonly description: "Get attachment metadata";
8
+ readonly headerParams: readonly [];
9
+ readonly method: "get";
10
+ readonly operationId: "sendingGetAttachment";
11
+ readonly path: "/emails/attachments/{attachment_id}";
12
+ readonly pathParams: readonly [{
13
+ readonly name: "attachment_id";
14
+ readonly required: true;
15
+ readonly schema: {
16
+ readonly type: "string";
17
+ readonly pattern: "^att_[a-z0-9]{24}$";
18
+ };
19
+ }];
20
+ readonly queryParams: readonly [];
21
+ readonly responseKind: "json";
22
+ readonly requestBodyRequired: false;
23
+ readonly requiredKeyKind: "sending";
24
+ readonly surface: "sending";
25
+ };
26
+ }
27
+ //# sourceMappingURL=get-attachment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-attachment.d.ts","sourceRoot":"","sources":["../../../src/commands/sending/get-attachment.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,2BAA4B,SAAQ,gBAAgB;IACvE,MAAM,CAAC,WAAW,4BAA+C;IACjE,MAAM,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;MAAmC;CACpD"}
@@ -0,0 +1,7 @@
1
+ // This file is generated by scripts/generate-cli.mjs
2
+ import { operations } from "../../generated/operations.js";
3
+ import { OperationCommand } from "../../operation-command.js";
4
+ export default class SendingGetAttachmentCommand extends OperationCommand {
5
+ static description = operations.sendingGetAttachment.description;
6
+ static operation = operations.sendingGetAttachment;
7
+ }
@@ -19,7 +19,7 @@ export default class SendingGetOpenApiSpecCommand extends OperationCommand {
19
19
  readonly queryParams: readonly [];
20
20
  readonly responseKind: "json";
21
21
  readonly requestBodyRequired: false;
22
- readonly requiredKeyKind: "sending";
22
+ readonly requiredKeyKind: "none";
23
23
  readonly surface: "sending";
24
24
  };
25
25
  }
@@ -0,0 +1,49 @@
1
+ import { OperationCommand } from "../../operation-command.js";
2
+ export default class SendingUploadAttachmentCommand extends OperationCommand {
3
+ static description: "Upload an attachment";
4
+ static operation: {
5
+ readonly bodyKind: "binary";
6
+ readonly command: "sending:upload-attachment";
7
+ readonly description: "Upload an attachment";
8
+ readonly headerParams: readonly [{
9
+ readonly name: "Idempotency-Key";
10
+ readonly required: false;
11
+ readonly schema: {
12
+ readonly type: "string";
13
+ readonly maxLength: 255;
14
+ };
15
+ }, {
16
+ readonly name: "Content-Length";
17
+ readonly required: true;
18
+ readonly schema: {
19
+ readonly type: "integer";
20
+ readonly minimum: 1;
21
+ };
22
+ }];
23
+ readonly method: "post";
24
+ readonly operationId: "sendingUploadAttachment";
25
+ readonly path: "/emails/attachments";
26
+ readonly pathParams: readonly [];
27
+ readonly queryParams: readonly [{
28
+ readonly name: "filename";
29
+ readonly required: true;
30
+ readonly schema: {
31
+ readonly type: "string";
32
+ readonly minLength: 1;
33
+ readonly maxLength: 255;
34
+ };
35
+ }, {
36
+ readonly name: "content_type";
37
+ readonly required: false;
38
+ readonly schema: {
39
+ readonly type: "string";
40
+ readonly maxLength: 255;
41
+ };
42
+ }];
43
+ readonly responseKind: "json";
44
+ readonly requestBodyRequired: true;
45
+ readonly requiredKeyKind: "sending";
46
+ readonly surface: "sending";
47
+ };
48
+ }
49
+ //# sourceMappingURL=upload-attachment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-attachment.d.ts","sourceRoot":"","sources":["../../../src/commands/sending/upload-attachment.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,8BAA+B,SAAQ,gBAAgB;IAC1E,MAAM,CAAC,WAAW,yBAAkD;IACpE,MAAM,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAsC;CACvD"}
@@ -0,0 +1,7 @@
1
+ // This file is generated by scripts/generate-cli.mjs
2
+ import { operations } from "../../generated/operations.js";
3
+ import { OperationCommand } from "../../operation-command.js";
4
+ export default class SendingUploadAttachmentCommand extends OperationCommand {
5
+ static description = operations.sendingUploadAttachment.description;
6
+ static operation = operations.sendingUploadAttachment;
7
+ }
@@ -199,6 +199,27 @@ export declare const operations: {
199
199
  readonly requiredKeyKind: "mailbox";
200
200
  readonly surface: "mailbox";
201
201
  };
202
+ readonly mailboxCreateAttachmentUpload: {
203
+ readonly bodyKind: "json";
204
+ readonly command: "mailbox:create-attachment-upload";
205
+ readonly description: "Create a presigned mailbox attachment upload";
206
+ readonly headerParams: readonly [];
207
+ readonly method: "post";
208
+ readonly operationId: "mailboxCreateAttachmentUpload";
209
+ readonly path: "/mailbox/attachment-uploads";
210
+ readonly pathParams: readonly [];
211
+ readonly queryParams: readonly [{
212
+ readonly name: "mailbox_id";
213
+ readonly required: false;
214
+ readonly schema: {
215
+ readonly type: "string";
216
+ };
217
+ }];
218
+ readonly responseKind: "json";
219
+ readonly requestBodyRequired: false;
220
+ readonly requiredKeyKind: "mailbox";
221
+ readonly surface: "mailbox";
222
+ };
202
223
  readonly mailboxCreateFolder: {
203
224
  readonly bodyKind: "json";
204
225
  readonly command: "mailbox:create-folder";
@@ -551,8 +572,14 @@ export declare const operations: {
551
572
  readonly schema: {
552
573
  readonly type: "string";
553
574
  };
575
+ }, {
576
+ readonly name: "download_token";
577
+ readonly required: false;
578
+ readonly schema: {
579
+ readonly type: "string";
580
+ };
554
581
  }];
555
- readonly responseKind: "json";
582
+ readonly responseKind: "binary";
556
583
  readonly requestBodyRequired: false;
557
584
  readonly requiredKeyKind: "mailbox";
558
585
  readonly surface: "mailbox";
@@ -3535,6 +3562,85 @@ export declare const operations: {
3535
3562
  readonly requiredKeyKind: "root";
3536
3563
  readonly surface: "management";
3537
3564
  };
3565
+ readonly sendingCompleteAttachmentUpload: {
3566
+ readonly bodyKind: "binary";
3567
+ readonly command: "sending:complete-attachment-upload";
3568
+ readonly description: "Upload bytes to an attachment upload URL";
3569
+ readonly headerParams: readonly [{
3570
+ readonly name: "X-Sendmux-Upload-Token";
3571
+ readonly required: true;
3572
+ readonly schema: {
3573
+ readonly type: "string";
3574
+ };
3575
+ }, {
3576
+ readonly name: "Content-Length";
3577
+ readonly required: true;
3578
+ readonly schema: {
3579
+ readonly type: "integer";
3580
+ readonly minimum: 1;
3581
+ };
3582
+ }];
3583
+ readonly method: "put";
3584
+ readonly operationId: "sendingCompleteAttachmentUpload";
3585
+ readonly path: "/emails/attachment-uploads/{upload_id}";
3586
+ readonly pathParams: readonly [{
3587
+ readonly name: "upload_id";
3588
+ readonly required: true;
3589
+ readonly schema: {
3590
+ readonly type: "string";
3591
+ readonly pattern: "^upl_[a-z0-9]{24}$";
3592
+ };
3593
+ }];
3594
+ readonly queryParams: readonly [];
3595
+ readonly responseKind: "json";
3596
+ readonly requestBodyRequired: true;
3597
+ readonly requiredKeyKind: "none";
3598
+ readonly surface: "sending";
3599
+ };
3600
+ readonly sendingCreateAttachmentUpload: {
3601
+ readonly bodyKind: "json";
3602
+ readonly command: "sending:create-attachment-upload";
3603
+ readonly description: "Create an attachment upload URL";
3604
+ readonly headerParams: readonly [{
3605
+ readonly name: "Idempotency-Key";
3606
+ readonly required: false;
3607
+ readonly schema: {
3608
+ readonly type: "string";
3609
+ readonly maxLength: 255;
3610
+ };
3611
+ }];
3612
+ readonly method: "post";
3613
+ readonly operationId: "sendingCreateAttachmentUpload";
3614
+ readonly path: "/emails/attachment-uploads";
3615
+ readonly pathParams: readonly [];
3616
+ readonly queryParams: readonly [];
3617
+ readonly responseKind: "json";
3618
+ readonly requestBodyRequired: true;
3619
+ readonly requiredKeyKind: "sending";
3620
+ readonly surface: "sending";
3621
+ };
3622
+ readonly sendingGetAttachment: {
3623
+ readonly bodyKind: "none";
3624
+ readonly command: "sending:get-attachment";
3625
+ readonly description: "Get attachment metadata";
3626
+ readonly headerParams: readonly [];
3627
+ readonly method: "get";
3628
+ readonly operationId: "sendingGetAttachment";
3629
+ readonly path: "/emails/attachments/{attachment_id}";
3630
+ readonly pathParams: readonly [{
3631
+ readonly name: "attachment_id";
3632
+ readonly required: true;
3633
+ readonly schema: {
3634
+ readonly type: "string";
3635
+ readonly pattern: "^att_[a-z0-9]{24}$";
3636
+ };
3637
+ }];
3638
+ readonly queryParams: readonly [];
3639
+ readonly responseKind: "json";
3640
+ readonly requestBodyRequired: false;
3641
+ readonly requiredKeyKind: "sending";
3642
+ readonly surface: "sending";
3643
+ };
3538
3644
  readonly sendingGetOpenApiSpec: {
3539
3645
  readonly bodyKind: "none";
3540
3646
  readonly command: "sending:get-open-api-spec";
@@ -3553,7 +3659,7 @@ export declare const operations: {
3553
3659
  readonly queryParams: readonly [];
3554
3660
  readonly responseKind: "json";
3555
3661
  readonly requestBodyRequired: false;
3556
- readonly requiredKeyKind: "sending";
3662
+ readonly requiredKeyKind: "none";
3557
3663
  readonly surface: "sending";
3558
3664
  };
3559
3665
  readonly sendingSendEmail: {
@@ -3600,6 +3706,50 @@ export declare const operations: {
3600
3706
  readonly requiredKeyKind: "sending";
3601
3707
  readonly surface: "sending";
3602
3708
  };
3709
+ readonly sendingUploadAttachment: {
3710
+ readonly bodyKind: "binary";
3711
+ readonly command: "sending:upload-attachment";
3712
+ readonly description: "Upload an attachment";
3713
+ readonly headerParams: readonly [{
3714
+ readonly name: "Idempotency-Key";
3715
+ readonly required: false;
3716
+ readonly schema: {
3717
+ readonly type: "string";
3718
+ readonly maxLength: 255;
3719
+ };
3720
+ }, {
3721
+ readonly name: "Content-Length";
3722
+ readonly required: true;
3723
+ readonly schema: {
3724
+ readonly type: "integer";
3725
+ readonly minimum: 1;
3726
+ };
3727
+ }];
3728
+ readonly method: "post";
3729
+ readonly operationId: "sendingUploadAttachment";
3730
+ readonly path: "/emails/attachments";
3731
+ readonly pathParams: readonly [];
3732
+ readonly queryParams: readonly [{
3733
+ readonly name: "filename";
3734
+ readonly required: true;
3735
+ readonly schema: {
3736
+ readonly type: "string";
3737
+ readonly minLength: 1;
3738
+ readonly maxLength: 255;
3739
+ };
3740
+ }, {
3741
+ readonly name: "content_type";
3742
+ readonly required: false;
3743
+ readonly schema: {
3744
+ readonly type: "string";
3745
+ readonly maxLength: 255;
3746
+ };
3747
+ }];
3748
+ readonly responseKind: "json";
3749
+ readonly requestBodyRequired: true;
3750
+ readonly requiredKeyKind: "sending";
3751
+ readonly surface: "sending";
3752
+ };
3603
3753
  };
3604
3754
  export declare const curatedOperations: {
3605
3755
  readonly mailboxGetMe: {
@@ -1 +1 @@
1
- {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/generated/operations.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwnIiC,CAAC;AAEzD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWpB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,UAAU,CAAC"}
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/generated/operations.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgyIiC,CAAC;AAEzD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWpB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,UAAU,CAAC"}