@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.
- package/README.md +57 -3
- package/dist/commands/mailbox/create-attachment-upload.d.ts +26 -0
- package/dist/commands/mailbox/create-attachment-upload.d.ts.map +1 -0
- package/dist/commands/mailbox/create-attachment-upload.js +7 -0
- package/dist/commands/mailbox/get-message-attachment.d.ts +7 -1
- package/dist/commands/mailbox/get-message-attachment.d.ts.map +1 -1
- package/dist/commands/mailbox/stream-events.d.ts +18 -0
- package/dist/commands/mailbox/stream-events.d.ts.map +1 -1
- package/dist/commands/mailbox/stream-events.js +8 -0
- package/dist/commands/sending/complete-attachment-upload.d.ts +40 -0
- package/dist/commands/sending/complete-attachment-upload.d.ts.map +1 -0
- package/dist/commands/sending/complete-attachment-upload.js +7 -0
- package/dist/commands/sending/create-attachment-upload.d.ts +27 -0
- package/dist/commands/sending/create-attachment-upload.d.ts.map +1 -0
- package/dist/commands/sending/create-attachment-upload.js +7 -0
- package/dist/commands/sending/get-attachment.d.ts +27 -0
- package/dist/commands/sending/get-attachment.d.ts.map +1 -0
- package/dist/commands/sending/get-attachment.js +7 -0
- package/dist/commands/sending/get-open-api-spec.d.ts +1 -1
- package/dist/commands/sending/upload-attachment.d.ts +49 -0
- package/dist/commands/sending/upload-attachment.d.ts.map +1 -0
- package/dist/commands/sending/upload-attachment.js +7 -0
- package/dist/generated/operations.d.ts +152 -2
- package/dist/generated/operations.d.ts.map +1 -1
- package/dist/generated/operations.js +170 -2
- package/dist/key-kind.d.ts +1 -1
- package/dist/key-kind.d.ts.map +1 -1
- package/dist/key-kind.js +6 -0
- package/dist/operation-command.d.ts +4 -0
- package/dist/operation-command.d.ts.map +1 -1
- package/dist/operation-flags.d.ts +9 -0
- package/dist/operation-flags.d.ts.map +1 -1
- package/dist/operation-flags.js +29 -4
- package/dist/operation-runner.d.ts.map +1 -1
- package/dist/operation-runner.js +331 -14
- package/oclif.manifest.json +3785 -334
- 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 `
|
|
101
|
+
The CLI includes `97` generated API operation commands:
|
|
56
102
|
|
|
57
|
-
- `
|
|
58
|
-
- `
|
|
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: "
|
|
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
|
|
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":"
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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
|
|
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"}
|