@sendmux/cli 1.0.0 → 1.1.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 (308) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +73 -5
  3. package/dist/base-command.d.ts +4 -2
  4. package/dist/base-command.d.ts.map +1 -1
  5. package/dist/base-command.js +31 -4
  6. package/dist/commands/mailbox/batch-delete-messages.d.ts +26 -0
  7. package/dist/commands/mailbox/batch-delete-messages.d.ts.map +1 -0
  8. package/dist/commands/mailbox/batch-delete-messages.js +7 -0
  9. package/dist/commands/mailbox/batch-get-messages.d.ts +26 -0
  10. package/dist/commands/mailbox/batch-get-messages.d.ts.map +1 -0
  11. package/dist/commands/mailbox/batch-get-messages.js +7 -0
  12. package/dist/commands/mailbox/batch-update-messages.d.ts +26 -0
  13. package/dist/commands/mailbox/batch-update-messages.d.ts.map +1 -0
  14. package/dist/commands/mailbox/batch-update-messages.js +7 -0
  15. package/dist/commands/mailbox/count-messages.d.ts +142 -0
  16. package/dist/commands/mailbox/count-messages.d.ts.map +1 -0
  17. package/dist/commands/mailbox/count-messages.js +7 -0
  18. package/dist/commands/mailbox/create-folder.d.ts +26 -0
  19. package/dist/commands/mailbox/create-folder.d.ts.map +1 -0
  20. package/dist/commands/mailbox/create-folder.js +7 -0
  21. package/dist/commands/mailbox/delete-folder.d.ts +38 -0
  22. package/dist/commands/mailbox/delete-folder.d.ts.map +1 -0
  23. package/dist/commands/mailbox/delete-folder.js +7 -0
  24. package/dist/commands/mailbox/delete-message.d.ts +44 -0
  25. package/dist/commands/mailbox/delete-message.d.ts.map +1 -0
  26. package/dist/commands/mailbox/delete-message.js +7 -0
  27. package/dist/commands/mailbox/folders/list.d.ts +17 -1
  28. package/dist/commands/mailbox/folders/list.d.ts.map +1 -1
  29. package/dist/commands/mailbox/folders/list.js +5 -4
  30. package/dist/commands/mailbox/get-changes.d.ts +82 -0
  31. package/dist/commands/mailbox/get-changes.d.ts.map +1 -0
  32. package/dist/commands/mailbox/get-changes.js +7 -0
  33. package/dist/commands/mailbox/get-folder-changes.d.ts +40 -0
  34. package/dist/commands/mailbox/get-folder-changes.d.ts.map +1 -0
  35. package/dist/commands/mailbox/get-folder-changes.js +7 -0
  36. package/dist/commands/mailbox/get-folder.d.ts +38 -0
  37. package/dist/commands/mailbox/get-folder.d.ts.map +1 -0
  38. package/dist/commands/mailbox/get-folder.js +7 -0
  39. package/dist/commands/mailbox/get-identity.d.ts +26 -0
  40. package/dist/commands/mailbox/get-identity.d.ts.map +1 -0
  41. package/dist/commands/mailbox/get-identity.js +7 -0
  42. package/dist/commands/mailbox/get-message-attachment.d.ts +44 -0
  43. package/dist/commands/mailbox/get-message-attachment.d.ts.map +1 -0
  44. package/dist/commands/mailbox/get-message-attachment.js +7 -0
  45. package/dist/commands/mailbox/get-quota-changes.d.ts +40 -0
  46. package/dist/commands/mailbox/get-quota-changes.d.ts.map +1 -0
  47. package/dist/commands/mailbox/get-quota-changes.js +7 -0
  48. package/dist/commands/mailbox/get-session.d.ts +32 -0
  49. package/dist/commands/mailbox/get-session.d.ts.map +1 -0
  50. package/dist/commands/mailbox/get-session.js +7 -0
  51. package/dist/commands/mailbox/get-submission-changes.d.ts +40 -0
  52. package/dist/commands/mailbox/get-submission-changes.d.ts.map +1 -0
  53. package/dist/commands/mailbox/get-submission-changes.js +7 -0
  54. package/dist/commands/mailbox/get-submission.d.ts +38 -0
  55. package/dist/commands/mailbox/get-submission.d.ts.map +1 -0
  56. package/dist/commands/mailbox/get-submission.js +7 -0
  57. package/dist/commands/mailbox/get-thread-content.d.ts +112 -0
  58. package/dist/commands/mailbox/get-thread-content.d.ts.map +1 -0
  59. package/dist/commands/mailbox/get-thread-content.js +7 -0
  60. package/dist/commands/mailbox/get-thread.d.ts +38 -0
  61. package/dist/commands/mailbox/get-thread.d.ts.map +1 -0
  62. package/dist/commands/mailbox/get-thread.js +7 -0
  63. package/dist/commands/mailbox/list-body.d.ts +53 -0
  64. package/dist/commands/mailbox/list-body.d.ts.map +1 -0
  65. package/dist/commands/mailbox/list-body.js +7 -0
  66. package/dist/commands/mailbox/list-content.d.ts +91 -0
  67. package/dist/commands/mailbox/list-content.d.ts.map +1 -0
  68. package/dist/commands/mailbox/list-content.js +7 -0
  69. package/dist/commands/mailbox/list-granted-mailboxes.d.ts +40 -0
  70. package/dist/commands/mailbox/list-granted-mailboxes.d.ts.map +1 -0
  71. package/dist/commands/mailbox/list-granted-mailboxes.js +7 -0
  72. package/dist/commands/mailbox/list-identities.d.ts +40 -0
  73. package/dist/commands/mailbox/list-identities.d.ts.map +1 -0
  74. package/dist/commands/mailbox/list-identities.js +7 -0
  75. package/dist/commands/mailbox/list-quotas.d.ts +80 -0
  76. package/dist/commands/mailbox/list-quotas.d.ts.map +1 -0
  77. package/dist/commands/mailbox/list-quotas.js +7 -0
  78. package/dist/commands/mailbox/list-submissions.d.ts +91 -0
  79. package/dist/commands/mailbox/list-submissions.d.ts.map +1 -0
  80. package/dist/commands/mailbox/list-submissions.js +7 -0
  81. package/dist/commands/mailbox/list-thread-messages.d.ts +53 -0
  82. package/dist/commands/mailbox/list-thread-messages.d.ts.map +1 -0
  83. package/dist/commands/mailbox/list-thread-messages.js +7 -0
  84. package/dist/commands/mailbox/list-threads.d.ts +89 -0
  85. package/dist/commands/mailbox/list-threads.d.ts.map +1 -0
  86. package/dist/commands/mailbox/list-threads.js +7 -0
  87. package/dist/commands/mailbox/list-usage.d.ts +32 -0
  88. package/dist/commands/mailbox/list-usage.d.ts.map +1 -0
  89. package/dist/commands/mailbox/list-usage.js +7 -0
  90. package/dist/commands/mailbox/me/get.d.ts +13 -2
  91. package/dist/commands/mailbox/me/get.d.ts.map +1 -1
  92. package/dist/commands/mailbox/me/get.js +5 -4
  93. package/dist/commands/mailbox/messages/get.d.ts +16 -2
  94. package/dist/commands/mailbox/messages/get.d.ts.map +1 -1
  95. package/dist/commands/mailbox/messages/get.js +5 -4
  96. package/dist/commands/mailbox/messages/list.d.ts +84 -1
  97. package/dist/commands/mailbox/messages/list.d.ts.map +1 -1
  98. package/dist/commands/mailbox/messages/list.js +5 -4
  99. package/dist/commands/mailbox/query-folder-changes.d.ts +40 -0
  100. package/dist/commands/mailbox/query-folder-changes.d.ts.map +1 -0
  101. package/dist/commands/mailbox/query-folder-changes.js +7 -0
  102. package/dist/commands/mailbox/query-message-changes.d.ts +176 -0
  103. package/dist/commands/mailbox/query-message-changes.d.ts.map +1 -0
  104. package/dist/commands/mailbox/query-message-changes.js +7 -0
  105. package/dist/commands/mailbox/search-message-snippets.d.ts +150 -0
  106. package/dist/commands/mailbox/search-message-snippets.d.ts.map +1 -0
  107. package/dist/commands/mailbox/search-message-snippets.js +7 -0
  108. package/dist/commands/mailbox/send-message.d.ts +33 -0
  109. package/dist/commands/mailbox/send-message.d.ts.map +1 -0
  110. package/dist/commands/mailbox/send-message.js +7 -0
  111. package/dist/commands/mailbox/stream-events.d.ts +60 -0
  112. package/dist/commands/mailbox/stream-events.d.ts.map +1 -0
  113. package/dist/commands/mailbox/stream-events.js +7 -0
  114. package/dist/commands/mailbox/update-folder.d.ts +38 -0
  115. package/dist/commands/mailbox/update-folder.d.ts.map +1 -0
  116. package/dist/commands/mailbox/update-folder.js +7 -0
  117. package/dist/commands/mailbox/update-identity.d.ts +26 -0
  118. package/dist/commands/mailbox/update-identity.d.ts.map +1 -0
  119. package/dist/commands/mailbox/update-identity.js +7 -0
  120. package/dist/commands/mailbox/update-message.d.ts +38 -0
  121. package/dist/commands/mailbox/update-message.d.ts.map +1 -0
  122. package/dist/commands/mailbox/update-message.js +7 -0
  123. package/dist/commands/mailbox/upload-attachment.d.ts +32 -0
  124. package/dist/commands/mailbox/upload-attachment.d.ts.map +1 -0
  125. package/dist/commands/mailbox/upload-attachment.js +7 -0
  126. package/dist/commands/management/activate-provider.d.ts +33 -0
  127. package/dist/commands/management/activate-provider.d.ts.map +1 -0
  128. package/dist/commands/management/activate-provider.js +7 -0
  129. package/dist/commands/management/cancel-shared-amazon-ses-limit-request.d.ts +26 -0
  130. package/dist/commands/management/cancel-shared-amazon-ses-limit-request.d.ts.map +1 -0
  131. package/dist/commands/management/cancel-shared-amazon-ses-limit-request.js +7 -0
  132. package/dist/commands/management/check-mailbox-availability.d.ts +26 -0
  133. package/dist/commands/management/check-mailbox-availability.d.ts.map +1 -0
  134. package/dist/commands/management/check-mailbox-availability.js +7 -0
  135. package/dist/commands/management/create-domain.d.ts +27 -0
  136. package/dist/commands/management/create-domain.d.ts.map +1 -0
  137. package/dist/commands/management/create-domain.js +7 -0
  138. package/dist/commands/management/create-mailbox-key.d.ts +33 -0
  139. package/dist/commands/management/create-mailbox-key.d.ts.map +1 -0
  140. package/dist/commands/management/create-mailbox-key.js +7 -0
  141. package/dist/commands/management/create-mailbox.d.ts +27 -0
  142. package/dist/commands/management/create-mailbox.d.ts.map +1 -0
  143. package/dist/commands/management/create-mailbox.js +7 -0
  144. package/dist/commands/management/create-provider.d.ts +27 -0
  145. package/dist/commands/management/create-provider.d.ts.map +1 -0
  146. package/dist/commands/management/create-provider.js +7 -0
  147. package/dist/commands/management/create-shared-amazon-ses-limit-request.d.ts +27 -0
  148. package/dist/commands/management/create-shared-amazon-ses-limit-request.d.ts.map +1 -0
  149. package/dist/commands/management/create-shared-amazon-ses-limit-request.js +7 -0
  150. package/dist/commands/management/create-webhook.d.ts +27 -0
  151. package/dist/commands/management/create-webhook.d.ts.map +1 -0
  152. package/dist/commands/management/create-webhook.js +7 -0
  153. package/dist/commands/management/deactivate-provider.d.ts +33 -0
  154. package/dist/commands/management/deactivate-provider.d.ts.map +1 -0
  155. package/dist/commands/management/deactivate-provider.js +7 -0
  156. package/dist/commands/management/delete-domain.d.ts +26 -0
  157. package/dist/commands/management/delete-domain.d.ts.map +1 -0
  158. package/dist/commands/management/delete-domain.js +7 -0
  159. package/dist/commands/management/delete-mailbox-key.d.ts +32 -0
  160. package/dist/commands/management/delete-mailbox-key.d.ts.map +1 -0
  161. package/dist/commands/management/delete-mailbox-key.js +7 -0
  162. package/dist/commands/management/delete-mailbox.d.ts +26 -0
  163. package/dist/commands/management/delete-mailbox.d.ts.map +1 -0
  164. package/dist/commands/management/delete-mailbox.js +7 -0
  165. package/dist/commands/management/delete-provider.d.ts +26 -0
  166. package/dist/commands/management/delete-provider.d.ts.map +1 -0
  167. package/dist/commands/management/delete-provider.js +7 -0
  168. package/dist/commands/management/delete-webhook.d.ts +26 -0
  169. package/dist/commands/management/delete-webhook.d.ts.map +1 -0
  170. package/dist/commands/management/delete-webhook.js +7 -0
  171. package/dist/commands/management/domains/get.d.ts +9 -1
  172. package/dist/commands/management/domains/get.d.ts.map +1 -1
  173. package/dist/commands/management/domains/get.js +5 -4
  174. package/dist/commands/management/domains/list.d.ts +11 -1
  175. package/dist/commands/management/domains/list.d.ts.map +1 -1
  176. package/dist/commands/management/domains/list.js +5 -4
  177. package/dist/commands/management/get-delivery-payload.d.ts +32 -0
  178. package/dist/commands/management/get-delivery-payload.d.ts.map +1 -0
  179. package/dist/commands/management/get-delivery-payload.js +7 -0
  180. package/dist/commands/management/get-domain-filters.d.ts +32 -0
  181. package/dist/commands/management/get-domain-filters.d.ts.map +1 -0
  182. package/dist/commands/management/get-domain-filters.js +7 -0
  183. package/dist/commands/management/get-domain-zone-file.d.ts +26 -0
  184. package/dist/commands/management/get-domain-zone-file.d.ts.map +1 -0
  185. package/dist/commands/management/get-domain-zone-file.js +7 -0
  186. package/dist/commands/management/get-email-log.d.ts +32 -0
  187. package/dist/commands/management/get-email-log.d.ts.map +1 -0
  188. package/dist/commands/management/get-email-log.js +7 -0
  189. package/dist/commands/management/get-email-metrics.d.ts +52 -0
  190. package/dist/commands/management/get-email-metrics.d.ts.map +1 -0
  191. package/dist/commands/management/get-email-metrics.js +7 -0
  192. package/dist/commands/management/get-inbox-log.d.ts +26 -0
  193. package/dist/commands/management/get-inbox-log.d.ts.map +1 -0
  194. package/dist/commands/management/get-inbox-log.js +7 -0
  195. package/dist/commands/management/get-mailbox-filters.d.ts +32 -0
  196. package/dist/commands/management/get-mailbox-filters.d.ts.map +1 -0
  197. package/dist/commands/management/get-mailbox-filters.js +7 -0
  198. package/dist/commands/management/get-mailbox.d.ts +32 -0
  199. package/dist/commands/management/get-mailbox.d.ts.map +1 -0
  200. package/dist/commands/management/get-mailbox.js +7 -0
  201. package/dist/commands/management/get-provider-limits.d.ts +20 -0
  202. package/dist/commands/management/get-provider-limits.d.ts.map +1 -0
  203. package/dist/commands/management/get-provider-limits.js +7 -0
  204. package/dist/commands/management/get-provider-stats.d.ts +20 -0
  205. package/dist/commands/management/get-provider-stats.d.ts.map +1 -0
  206. package/dist/commands/management/get-provider-stats.js +7 -0
  207. package/dist/commands/management/get-provider-usage.d.ts +20 -0
  208. package/dist/commands/management/get-provider-usage.d.ts.map +1 -0
  209. package/dist/commands/management/get-provider-usage.js +7 -0
  210. package/dist/commands/management/get-provider.d.ts +32 -0
  211. package/dist/commands/management/get-provider.d.ts.map +1 -0
  212. package/dist/commands/management/get-provider.js +7 -0
  213. package/dist/commands/management/get-shared-amazon-ses-limit-request.d.ts +20 -0
  214. package/dist/commands/management/get-shared-amazon-ses-limit-request.d.ts.map +1 -0
  215. package/dist/commands/management/get-shared-amazon-ses-limit-request.js +7 -0
  216. package/dist/commands/management/get-spend-summary.d.ts +27 -0
  217. package/dist/commands/management/get-spend-summary.d.ts.map +1 -0
  218. package/dist/commands/management/get-spend-summary.js +7 -0
  219. package/dist/commands/management/get-webhook.d.ts +32 -0
  220. package/dist/commands/management/get-webhook.d.ts.map +1 -0
  221. package/dist/commands/management/get-webhook.js +7 -0
  222. package/dist/commands/management/list-balance.d.ts +20 -0
  223. package/dist/commands/management/list-balance.d.ts.map +1 -0
  224. package/dist/commands/management/list-balance.js +7 -0
  225. package/dist/commands/management/list-delivery.d.ts +54 -0
  226. package/dist/commands/management/list-delivery.d.ts.map +1 -0
  227. package/dist/commands/management/list-delivery.js +7 -0
  228. package/dist/commands/management/list-email-logs.d.ts +65 -0
  229. package/dist/commands/management/list-email-logs.d.ts.map +1 -0
  230. package/dist/commands/management/list-email-logs.js +7 -0
  231. package/dist/commands/management/list-inbox-logs.d.ts +65 -0
  232. package/dist/commands/management/list-inbox-logs.d.ts.map +1 -0
  233. package/dist/commands/management/list-inbox-logs.js +7 -0
  234. package/dist/commands/management/list-transactions.d.ts +41 -0
  235. package/dist/commands/management/list-transactions.d.ts.map +1 -0
  236. package/dist/commands/management/list-transactions.js +7 -0
  237. package/dist/commands/management/list-webhooks.d.ts +34 -0
  238. package/dist/commands/management/list-webhooks.d.ts.map +1 -0
  239. package/dist/commands/management/list-webhooks.js +7 -0
  240. package/dist/commands/management/mailboxes/list.d.ts +15 -1
  241. package/dist/commands/management/mailboxes/list.d.ts.map +1 -1
  242. package/dist/commands/management/mailboxes/list.js +5 -4
  243. package/dist/commands/management/providers/list.d.ts +19 -1
  244. package/dist/commands/management/providers/list.d.ts.map +1 -1
  245. package/dist/commands/management/providers/list.js +5 -4
  246. package/dist/commands/management/request-sending-account-limit-increase.d.ts +27 -0
  247. package/dist/commands/management/request-sending-account-limit-increase.d.ts.map +1 -0
  248. package/dist/commands/management/request-sending-account-limit-increase.js +7 -0
  249. package/dist/commands/management/resume-mailbox.d.ts +33 -0
  250. package/dist/commands/management/resume-mailbox.d.ts.map +1 -0
  251. package/dist/commands/management/resume-mailbox.js +7 -0
  252. package/dist/commands/management/rotate-webhook-secret.d.ts +33 -0
  253. package/dist/commands/management/rotate-webhook-secret.d.ts.map +1 -0
  254. package/dist/commands/management/rotate-webhook-secret.js +7 -0
  255. package/dist/commands/management/set-domain-filters.d.ts +32 -0
  256. package/dist/commands/management/set-domain-filters.d.ts.map +1 -0
  257. package/dist/commands/management/set-domain-filters.js +7 -0
  258. package/dist/commands/management/set-mailbox-filters.d.ts +32 -0
  259. package/dist/commands/management/set-mailbox-filters.d.ts.map +1 -0
  260. package/dist/commands/management/set-mailbox-filters.js +7 -0
  261. package/dist/commands/management/suspend-mailbox.d.ts +33 -0
  262. package/dist/commands/management/suspend-mailbox.d.ts.map +1 -0
  263. package/dist/commands/management/suspend-mailbox.js +7 -0
  264. package/dist/commands/management/test-provider.d.ts +33 -0
  265. package/dist/commands/management/test-provider.d.ts.map +1 -0
  266. package/dist/commands/management/test-provider.js +7 -0
  267. package/dist/commands/management/test-webhook.d.ts +33 -0
  268. package/dist/commands/management/test-webhook.d.ts.map +1 -0
  269. package/dist/commands/management/test-webhook.js +7 -0
  270. package/dist/commands/management/update-domain.d.ts +32 -0
  271. package/dist/commands/management/update-domain.d.ts.map +1 -0
  272. package/dist/commands/management/update-domain.js +7 -0
  273. package/dist/commands/management/update-mailbox.d.ts +32 -0
  274. package/dist/commands/management/update-mailbox.d.ts.map +1 -0
  275. package/dist/commands/management/update-mailbox.js +7 -0
  276. package/dist/commands/management/update-provider.d.ts +32 -0
  277. package/dist/commands/management/update-provider.d.ts.map +1 -0
  278. package/dist/commands/management/update-provider.js +7 -0
  279. package/dist/commands/management/update-webhook.d.ts +32 -0
  280. package/dist/commands/management/update-webhook.d.ts.map +1 -0
  281. package/dist/commands/management/update-webhook.js +7 -0
  282. package/dist/commands/management/verify-domain.d.ts +26 -0
  283. package/dist/commands/management/verify-domain.d.ts.map +1 -0
  284. package/dist/commands/management/verify-domain.js +7 -0
  285. package/dist/commands/sending/get-open-api-spec.d.ts +26 -0
  286. package/dist/commands/sending/get-open-api-spec.d.ts.map +1 -0
  287. package/dist/commands/sending/get-open-api-spec.js +7 -0
  288. package/dist/commands/sending/send/batch.d.ts +8 -2
  289. package/dist/commands/sending/send/batch.d.ts.map +1 -1
  290. package/dist/commands/sending/send/batch.js +5 -4
  291. package/dist/commands/sending/send.d.ts +8 -2
  292. package/dist/commands/sending/send.d.ts.map +1 -1
  293. package/dist/commands/sending/send.js +5 -4
  294. package/dist/generated/operations.d.ts +1731 -25
  295. package/dist/generated/operations.d.ts.map +1 -1
  296. package/dist/generated/operations.js +2035 -316
  297. package/dist/key-kind.d.ts +3 -0
  298. package/dist/key-kind.d.ts.map +1 -1
  299. package/dist/key-kind.js +13 -1
  300. package/dist/operation-flags.d.ts +3 -3
  301. package/dist/operation-flags.d.ts.map +1 -1
  302. package/dist/operation-flags.js +132 -21
  303. package/dist/operation-runner.d.ts.map +1 -1
  304. package/dist/operation-runner.js +65 -7
  305. package/dist/operation-types.d.ts +21 -2
  306. package/dist/operation-types.d.ts.map +1 -1
  307. package/oclif.manifest.json +13569 -200
  308. package/package.json +3 -2
@@ -1,4 +1,7 @@
1
1
  export type ApiKeyKind = "mailbox" | "root";
2
+ export type RequiredApiKeyKind = ApiKeyKind | "sending";
2
3
  export declare function inferApiKeyKind(apiKey: string): ApiKeyKind;
4
+ export declare function isApiKeyCompatibleWithKind(apiKey: string, expectedKind: RequiredApiKeyKind): boolean;
5
+ export declare function apiKeyKindLabel(kind: RequiredApiKeyKind): string;
3
6
  export declare function maskApiKey(apiKey: string): string;
4
7
  //# sourceMappingURL=key-kind.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"key-kind.d.ts","sourceRoot":"","sources":["../src/key-kind.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAE5C,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAU1D;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMjD"}
1
+ {"version":3,"file":"key-kind.d.ts","sourceRoot":"","sources":["../src/key-kind.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAC5C,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,SAAS,CAAC;AAExD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAc1D;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,kBAAkB,GAAG,OAAO,CAMpG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAEhE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMjD"}
package/dist/key-kind.js CHANGED
@@ -5,7 +5,19 @@ export function inferApiKeyKind(apiKey) {
5
5
  if (apiKey.startsWith("smx_mbx_")) {
6
6
  return "mailbox";
7
7
  }
8
- throw new Error("Sendmux API keys must start with smx_root_ or smx_mbx_");
8
+ if (apiKey.startsWith("smx_agent_")) {
9
+ return "mailbox";
10
+ }
11
+ throw new Error("Sendmux API keys must start with smx_root_, smx_mbx_, or smx_agent_");
12
+ }
13
+ export function isApiKeyCompatibleWithKind(apiKey, expectedKind) {
14
+ if (expectedKind === "sending") {
15
+ return apiKey.startsWith("smx_mbx_") || apiKey.startsWith("smx_agent_");
16
+ }
17
+ return inferApiKeyKind(apiKey) === expectedKind;
18
+ }
19
+ export function apiKeyKindLabel(kind) {
20
+ return kind === "sending" ? "sending" : kind;
9
21
  }
10
22
  export function maskApiKey(apiKey) {
11
23
  if (apiKey.length <= 16) {
@@ -12,9 +12,9 @@ export interface OperationFlags extends AuthFlags {
12
12
  }
13
13
  export interface ParsedOperationOptions {
14
14
  body?: unknown;
15
- headers?: Record<string, string>;
16
- path?: Record<string, string>;
17
- query?: Record<string, string>;
15
+ headers?: Record<string, unknown>;
16
+ path?: Record<string, unknown>;
17
+ query?: Record<string, unknown>;
18
18
  }
19
19
  export declare const operationFlags: {
20
20
  body: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -1 +1 @@
1
- {"version":3,"file":"operation-flags.d.ts","sourceRoot":"","sources":["../src/operation-flags.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,WAAW,cAAe,SAAQ,SAAS;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,eAAO,MAAM,cAAc;;;;;;;;;;;;CA6B1B,CAAC;AAEF,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,sBAAsB,CAAC,CAgCjC"}
1
+ {"version":3,"file":"operation-flags.d.ts","sourceRoot":"","sources":["../src/operation-flags.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,mBAAmB,EAGpB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,cAAe,SAAQ,SAAS;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,eAAO,MAAM,cAAc;;;;;;;;;;;;CA6B1B,CAAC;AAEF,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,sBAAsB,CAAC,CAwBjC"}
@@ -4,10 +4,10 @@ import { authFlags, } from "./base-command.js";
4
4
  export const operationFlags = {
5
5
  ...authFlags,
6
6
  body: Flags.string({
7
- description: "JSON request body for POST, PUT, and PATCH operations.",
7
+ description: "JSON request body, or UTF-8 bytes for binary operations.",
8
8
  }),
9
9
  "body-file": Flags.string({
10
- description: "Path to a JSON request body file.",
10
+ description: "Path to a JSON request body file, or a binary file for binary operations.",
11
11
  }),
12
12
  header: Flags.string({
13
13
  description: "Header as name=value. Repeat for multiple headers.",
@@ -32,24 +32,17 @@ export const operationFlags = {
32
32
  }),
33
33
  };
34
34
  export async function parseOperationOptions(command, operation, flags) {
35
- const path = parsePairs(flags.path ?? [], "--path");
36
- for (const parameter of operation.pathParams) {
37
- if (parameter.required && !path[parameter.name]) {
38
- command.error(`Missing path parameter "${parameter.name}". Pass --path ${parameter.name}=<value>.`, {
39
- exit: 2,
40
- });
41
- }
42
- }
43
- const query = parsePairs(flags.query ?? [], "--query");
44
- const headers = parsePairs(flags.header ?? [], "--header");
35
+ const path = parseParameterPairs(command, operation.pathParams, flags.path ?? [], "--path");
36
+ const query = parseParameterPairs(command, operation.queryParams, flags.query ?? [], "--query");
37
+ const headers = parseParameterPairs(command, operation.headerParams, flags.header ?? [], "--header");
45
38
  if (flags["idempotency-key"]) {
46
- headers["Idempotency-Key"] = flags["idempotency-key"];
39
+ addHeaderFlag(command, operation, headers, "Idempotency-Key", flags["idempotency-key"]);
47
40
  }
48
41
  if (flags["if-match"]) {
49
- headers["If-Match"] = flags["if-match"];
42
+ addHeaderFlag(command, operation, headers, "If-Match", flags["if-match"]);
50
43
  }
51
44
  if (flags["if-none-match"]) {
52
- headers["If-None-Match"] = flags["if-none-match"];
45
+ addHeaderFlag(command, operation, headers, "If-None-Match", flags["if-none-match"]);
53
46
  }
54
47
  const body = await parseBody(command, operation, flags);
55
48
  return dropEmpty({
@@ -59,14 +52,51 @@ export async function parseOperationOptions(command, operation, flags) {
59
52
  query,
60
53
  });
61
54
  }
62
- function parsePairs(values, flagName) {
55
+ function parseParameterPairs(command, parameters, values, flagName) {
56
+ const parameterMap = new Map(parameters.map((parameter) => [keyForParameter(flagName, parameter.name), parameter]));
63
57
  const pairs = {};
64
58
  for (const value of values) {
65
59
  const separator = value.indexOf("=");
66
60
  if (separator <= 0) {
67
- throw new Error(`${flagName} values must use name=value syntax`);
61
+ command.error(`${flagName} values must use name=value syntax`, { exit: 2 });
62
+ }
63
+ const name = value.slice(0, separator);
64
+ const parameter = parameterMap.get(keyForParameter(flagName, name));
65
+ if (!parameter) {
66
+ const allowed = parameters.map((item) => item.name).join(", ") || "none";
67
+ command.error(`Unknown ${labelForFlag(flagName)} parameter "${name}". Supported parameters: ${allowed}.`, {
68
+ exit: 2,
69
+ });
70
+ }
71
+ const parsedValue = parseParameterValue(command, parameter, value.slice(separator + 1), flagName);
72
+ if (parameter.schema.type === "array") {
73
+ const existing = pairs[parameter.name];
74
+ const nextValue = Array.isArray(existing) ? [...existing, parsedValue] : [parsedValue];
75
+ if (parameter.schema.maxItems !== undefined && nextValue.length > parameter.schema.maxItems) {
76
+ command.error(`${labelForFlag(flagName)} parameter "${parameter.name}" accepts at most ${parameter.schema.maxItems} values.`, {
77
+ exit: 2,
78
+ });
79
+ }
80
+ pairs[parameter.name] = nextValue;
81
+ continue;
82
+ }
83
+ pairs[parameter.name] = parsedValue;
84
+ }
85
+ for (const parameter of parameters) {
86
+ if (parameter.required && pairs[parameter.name] === undefined) {
87
+ command.error(`Missing ${labelForFlag(flagName)} parameter "${parameter.name}". Pass ${flagName} ${parameter.name}=<value>.`, {
88
+ exit: 2,
89
+ });
90
+ }
91
+ const parsed = pairs[parameter.name];
92
+ if (parameter.schema.type === "array" &&
93
+ parameter.schema.minItems !== undefined &&
94
+ Array.isArray(parsed) &&
95
+ parsed.length < parameter.schema.minItems) {
96
+ command.error(`${labelForFlag(flagName)} parameter "${parameter.name}" requires at least ${parameter.schema.minItems} values.`, {
97
+ exit: 2,
98
+ });
68
99
  }
69
- pairs[value.slice(0, separator)] = value.slice(separator + 1);
70
100
  }
71
101
  return pairs;
72
102
  }
@@ -74,11 +104,30 @@ async function parseBody(command, operation, flags) {
74
104
  if (flags.body && flags["body-file"]) {
75
105
  command.error("Pass only one of --body or --body-file.", { exit: 2 });
76
106
  }
77
- const raw = flags["body-file"] ? await readFile(flags["body-file"], "utf8") : flags.body;
78
- if (!raw) {
107
+ if (operation.bodyKind === "none") {
108
+ if (flags.body || flags["body-file"]) {
109
+ command.error("This command does not accept a request body.", { exit: 2 });
110
+ }
111
+ return undefined;
112
+ }
113
+ const hasBodyInput = flags.body !== undefined || flags["body-file"] !== undefined;
114
+ if (!hasBodyInput) {
79
115
  if (operation.requestBodyRequired) {
80
- command.error("This command requires a JSON body. Pass --body or --body-file.", { exit: 2 });
116
+ const label = operation.bodyKind === "binary" ? "request body file" : "JSON body";
117
+ command.error(`This command requires a ${label}. Pass --body${operation.bodyKind === "binary" ? "-file" : " or --body-file"}.`, {
118
+ exit: 2,
119
+ });
120
+ }
121
+ return undefined;
122
+ }
123
+ if (operation.bodyKind === "binary") {
124
+ if (flags.body !== undefined) {
125
+ return Buffer.from(flags.body, "utf8");
81
126
  }
127
+ return readFile(flags["body-file"]);
128
+ }
129
+ const raw = flags["body-file"] ? await readFile(flags["body-file"], "utf8") : flags.body;
130
+ if (raw === undefined) {
82
131
  return undefined;
83
132
  }
84
133
  try {
@@ -88,6 +137,68 @@ async function parseBody(command, operation, flags) {
88
137
  command.error("Request body must be valid JSON.", { exit: 2 });
89
138
  }
90
139
  }
140
+ function addHeaderFlag(command, operation, headers, name, value) {
141
+ const parameter = operation.headerParams.find((item) => item.name.toLowerCase() === name.toLowerCase());
142
+ if (!parameter) {
143
+ command.error(`This command does not support the ${name} header.`, { exit: 2 });
144
+ }
145
+ headers[parameter.name] = parseParameterValue(command, parameter, value, "--header");
146
+ }
147
+ function parseParameterValue(command, parameter, raw, flagName) {
148
+ const label = `${labelForFlag(flagName)} parameter "${parameter.name}"`;
149
+ const schema = scalarSchemaForParameter(parameter);
150
+ let value = raw;
151
+ if (schema.type === "integer" || schema.type === "number") {
152
+ const parsed = Number(raw);
153
+ if (!Number.isFinite(parsed) || (schema.type === "integer" && !Number.isInteger(parsed))) {
154
+ command.error(`${label} must be ${articleForType(schema.type)}.`, { exit: 2 });
155
+ }
156
+ value = parsed;
157
+ }
158
+ if (schema.type === "boolean") {
159
+ if (raw !== "true" && raw !== "false") {
160
+ command.error(`${label} must be true or false.`, { exit: 2 });
161
+ }
162
+ value = raw === "true";
163
+ }
164
+ if (typeof value === "number") {
165
+ if (schema.minimum !== undefined && value < schema.minimum) {
166
+ command.error(`${label} must be at least ${schema.minimum}.`, { exit: 2 });
167
+ }
168
+ if (schema.maximum !== undefined && value > schema.maximum) {
169
+ command.error(`${label} must be at most ${schema.maximum}.`, { exit: 2 });
170
+ }
171
+ }
172
+ if (typeof value === "string") {
173
+ if (schema.minLength !== undefined && value.length < schema.minLength) {
174
+ command.error(`${label} must be at least ${schema.minLength} characters.`, { exit: 2 });
175
+ }
176
+ if (schema.maxLength !== undefined && value.length > schema.maxLength) {
177
+ command.error(`${label} must be at most ${schema.maxLength} characters.`, { exit: 2 });
178
+ }
179
+ if (schema.pattern && !new RegExp(schema.pattern).test(value)) {
180
+ command.error(`${label} does not match the required format.`, { exit: 2 });
181
+ }
182
+ }
183
+ if (schema.enum &&
184
+ (typeof value === "string" || typeof value === "number") &&
185
+ !schema.enum.includes(value)) {
186
+ command.error(`${label} must be one of: ${schema.enum.join(", ")}.`, { exit: 2 });
187
+ }
188
+ return value;
189
+ }
190
+ function scalarSchemaForParameter(parameter) {
191
+ return parameter.schema.type === "array" ? parameter.schema.items : parameter.schema;
192
+ }
193
+ function keyForParameter(flagName, name) {
194
+ return flagName === "--header" ? name.toLowerCase() : name;
195
+ }
196
+ function labelForFlag(flagName) {
197
+ return flagName.replace(/^--/, "");
198
+ }
199
+ function articleForType(type) {
200
+ return type === "integer" ? "an integer" : "a number";
201
+ }
91
202
  function dropEmpty(options) {
92
203
  const next = {};
93
204
  for (const [key, value] of Object.entries(options)) {
@@ -1 +1 @@
1
- {"version":3,"file":"operation-runner.d.ts","sourceRoot":"","sources":["../src/operation-runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAoBhE,wBAAsB,eAAe,CACnC,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,OAAO,CAAC,CAelB"}
1
+ {"version":3,"file":"operation-runner.d.ts","sourceRoot":"","sources":["../src/operation-runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAoBhE,wBAAsB,eAAe,CACnC,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,OAAO,CAAC,CA4ClB"}
@@ -19,11 +19,73 @@ export async function runSdkOperation(command, operation, flags) {
19
19
  const client = clientFactories[operation.surface](clientConfig);
20
20
  const operationOptions = await parseOperationOptions(command, operation, flags);
21
21
  const sdkOperation = operationFor(operation);
22
+ if (operation.operationId === "mailboxStreamEvents") {
23
+ const controller = new AbortController();
24
+ const response = await sdkOperation({
25
+ client,
26
+ ...operationOptions,
27
+ signal: controller.signal,
28
+ });
29
+ return command.renderResult(await firstStreamEvent(response, controller));
30
+ }
31
+ if (operation.operationId === "mailboxGetMessageAttachment") {
32
+ const response = await sdkOperation({
33
+ client,
34
+ ...operationOptions,
35
+ parseAs: "arrayBuffer",
36
+ });
37
+ const data = rawResponseData(response);
38
+ if (typeof data === "string" || data instanceof ArrayBuffer || ArrayBuffer.isView(data)) {
39
+ return command.renderBinaryResult(data);
40
+ }
41
+ throw new Error("SDK operation mailboxGetMessageAttachment did not return binary content");
42
+ }
22
43
  const response = await sdkOperation({
23
44
  client,
24
45
  ...operationOptions,
25
46
  });
26
- return command.renderResult(rawEnvelope(response));
47
+ const data = rawResponseData(response);
48
+ if (operation.responseKind === "text" && typeof data === "string") {
49
+ return command.renderTextResult(data);
50
+ }
51
+ return command.renderResult(data);
52
+ }
53
+ async function firstStreamEvent(value, controller) {
54
+ const stream = value?.stream;
55
+ if (!stream || typeof stream[Symbol.asyncIterator] !== "function") {
56
+ throw new Error("SDK operation mailboxStreamEvents did not return an async stream");
57
+ }
58
+ const iterator = stream[Symbol.asyncIterator]();
59
+ let timer;
60
+ const timeout = new Promise((_, reject) => {
61
+ timer = setTimeout(() => reject(new Error("Timed out waiting for mailbox stream event")), 20_000);
62
+ });
63
+ try {
64
+ const next = await Promise.race([iterator.next(), timeout]);
65
+ if (next.done) {
66
+ throw new Error("Mailbox stream ended before yielding an event");
67
+ }
68
+ return next.value;
69
+ }
70
+ finally {
71
+ if (timer) {
72
+ clearTimeout(timer);
73
+ }
74
+ controller.abort();
75
+ await closeAsyncIterator(iterator);
76
+ }
77
+ }
78
+ async function closeAsyncIterator(iterator) {
79
+ if (typeof iterator.return !== "function") {
80
+ return;
81
+ }
82
+ await Promise.race([iterator.return(), sleep(1_000)]).catch(() => undefined);
83
+ }
84
+ function sleep(ms) {
85
+ return new Promise((resolve) => {
86
+ const timeout = setTimeout(resolve, ms);
87
+ timeout.unref?.();
88
+ });
27
89
  }
28
90
  function operationFor(operation) {
29
91
  const module = surfaceModules[operation.surface];
@@ -33,13 +95,9 @@ function operationFor(operation) {
33
95
  }
34
96
  return sdkOperation;
35
97
  }
36
- function rawEnvelope(value) {
98
+ function rawResponseData(value) {
37
99
  if (!value || typeof value !== "object" || !("data" in value)) {
38
100
  return value;
39
101
  }
40
- const data = value.data;
41
- if (!data || typeof data !== "object" || !("ok" in data)) {
42
- return value;
43
- }
44
- return data;
102
+ return value.data;
45
103
  }
@@ -1,9 +1,27 @@
1
- import type { ApiKeyKind } from "./key-kind.js";
1
+ import type { RequiredApiKeyKind } from "./key-kind.js";
2
2
  export interface OperationParameter {
3
3
  name: string;
4
4
  required: boolean;
5
+ schema: OperationParameterSchema;
6
+ }
7
+ export type OperationParameterSchema = OperationParameterArraySchema | OperationParameterScalarSchema;
8
+ export interface OperationParameterArraySchema {
9
+ items: OperationParameterScalarSchema;
10
+ maxItems?: number;
11
+ minItems?: number;
12
+ type: "array";
13
+ }
14
+ export interface OperationParameterScalarSchema {
15
+ enum?: readonly (number | string)[];
16
+ maximum?: number;
17
+ maxLength?: number;
18
+ minimum?: number;
19
+ minLength?: number;
20
+ pattern?: string;
21
+ type: "boolean" | "integer" | "number" | "string";
5
22
  }
6
23
  export interface OperationDefinition {
24
+ bodyKind: "binary" | "json" | "none";
7
25
  command: string;
8
26
  description: string;
9
27
  headerParams: readonly OperationParameter[];
@@ -12,8 +30,9 @@ export interface OperationDefinition {
12
30
  path: string;
13
31
  pathParams: readonly OperationParameter[];
14
32
  queryParams: readonly OperationParameter[];
33
+ responseKind: "binary" | "json" | "text";
15
34
  requestBodyRequired: boolean;
16
- requiredKeyKind: ApiKeyKind;
35
+ requiredKeyKind: RequiredApiKeyKind;
17
36
  surface: "mailbox" | "management" | "sending";
18
37
  }
19
38
  //# sourceMappingURL=operation-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"operation-types.d.ts","sourceRoot":"","sources":["../src/operation-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC1C,WAAW,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC3C,mBAAmB,EAAE,OAAO,CAAC;IAC7B,eAAe,EAAE,UAAU,CAAC;IAC5B,OAAO,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC;CAC/C"}
1
+ {"version":3,"file":"operation-types.d.ts","sourceRoot":"","sources":["../src/operation-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,wBAAwB,CAAC;CAClC;AAED,MAAM,MAAM,wBAAwB,GAAG,6BAA6B,GAAG,8BAA8B,CAAC;AAEtG,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,8BAA8B,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,8BAA8B;IAC7C,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACnD;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC1C,WAAW,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC3C,YAAY,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACzC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,eAAe,EAAE,kBAAkB,CAAC;IACpC,OAAO,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC;CAC/C"}