monday-cli 0.2.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/CHANGELOG.md +439 -0
- package/LICENSE +21 -0
- package/README.md +431 -0
- package/dist/api/board-child-finder.d.ts +95 -0
- package/dist/api/board-child-finder.d.ts.map +1 -0
- package/dist/api/board-child-finder.js +89 -0
- package/dist/api/board-child-finder.js.map +1 -0
- package/dist/api/board-metadata.d.ts +162 -0
- package/dist/api/board-metadata.d.ts.map +1 -0
- package/dist/api/board-metadata.js +238 -0
- package/dist/api/board-metadata.js.map +1 -0
- package/dist/api/board-mutation-invalidation.d.ts +153 -0
- package/dist/api/board-mutation-invalidation.d.ts.map +1 -0
- package/dist/api/board-mutation-invalidation.js +136 -0
- package/dist/api/board-mutation-invalidation.js.map +1 -0
- package/dist/api/board-mutation-result.d.ts +97 -0
- package/dist/api/board-mutation-result.d.ts.map +1 -0
- package/dist/api/board-mutation-result.js +99 -0
- package/dist/api/board-mutation-result.js.map +1 -0
- package/dist/api/board-projection.d.ts +68 -0
- package/dist/api/board-projection.d.ts.map +1 -0
- package/dist/api/board-projection.js +79 -0
- package/dist/api/board-projection.js.map +1 -0
- package/dist/api/cache.d.ts +150 -0
- package/dist/api/cache.d.ts.map +1 -0
- package/dist/api/cache.js +418 -0
- package/dist/api/cache.js.map +1 -0
- package/dist/api/client.d.ts +162 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +205 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/column-mapping.d.ts +68 -0
- package/dist/api/column-mapping.d.ts.map +1 -0
- package/dist/api/column-mapping.js +117 -0
- package/dist/api/column-mapping.js.map +1 -0
- package/dist/api/column-mutation-result.d.ts +136 -0
- package/dist/api/column-mutation-result.d.ts.map +1 -0
- package/dist/api/column-mutation-result.js +130 -0
- package/dist/api/column-mutation-result.js.map +1 -0
- package/dist/api/column-types.d.ts +215 -0
- package/dist/api/column-types.d.ts.map +1 -0
- package/dist/api/column-types.js +195 -0
- package/dist/api/column-types.js.map +1 -0
- package/dist/api/column-values.d.ts +446 -0
- package/dist/api/column-values.d.ts.map +1 -0
- package/dist/api/column-values.js +795 -0
- package/dist/api/column-values.js.map +1 -0
- package/dist/api/columns.d.ts +205 -0
- package/dist/api/columns.d.ts.map +1 -0
- package/dist/api/columns.js +343 -0
- package/dist/api/columns.js.map +1 -0
- package/dist/api/complexity.d.ts +90 -0
- package/dist/api/complexity.d.ts.map +1 -0
- package/dist/api/complexity.js +194 -0
- package/dist/api/complexity.js.map +1 -0
- package/dist/api/dates.d.ts +150 -0
- package/dist/api/dates.d.ts.map +1 -0
- package/dist/api/dates.js +490 -0
- package/dist/api/dates.js.map +1 -0
- package/dist/api/destructive-gate.d.ts +107 -0
- package/dist/api/destructive-gate.d.ts.map +1 -0
- package/dist/api/destructive-gate.js +19 -0
- package/dist/api/destructive-gate.js.map +1 -0
- package/dist/api/dry-run.d.ts +338 -0
- package/dist/api/dry-run.d.ts.map +1 -0
- package/dist/api/dry-run.js +607 -0
- package/dist/api/dry-run.js.map +1 -0
- package/dist/api/emails.d.ts +60 -0
- package/dist/api/emails.d.ts.map +1 -0
- package/dist/api/emails.js +113 -0
- package/dist/api/emails.js.map +1 -0
- package/dist/api/errors.d.ts +82 -0
- package/dist/api/errors.d.ts.map +1 -0
- package/dist/api/errors.js +434 -0
- package/dist/api/errors.js.map +1 -0
- package/dist/api/filters.d.ts +198 -0
- package/dist/api/filters.d.ts.map +1 -0
- package/dist/api/filters.js +328 -0
- package/dist/api/filters.js.map +1 -0
- package/dist/api/group-color.d.ts +33 -0
- package/dist/api/group-color.d.ts.map +1 -0
- package/dist/api/group-color.js +80 -0
- package/dist/api/group-color.js.map +1 -0
- package/dist/api/group-mutation-result.d.ts +150 -0
- package/dist/api/group-mutation-result.d.ts.map +1 -0
- package/dist/api/group-mutation-result.js +141 -0
- package/dist/api/group-mutation-result.js.map +1 -0
- package/dist/api/iso-country-codes.d.ts +45 -0
- package/dist/api/iso-country-codes.d.ts.map +1 -0
- package/dist/api/iso-country-codes.js +71 -0
- package/dist/api/iso-country-codes.js.map +1 -0
- package/dist/api/item-board-lookup.d.ts +86 -0
- package/dist/api/item-board-lookup.d.ts.map +1 -0
- package/dist/api/item-board-lookup.js +140 -0
- package/dist/api/item-board-lookup.js.map +1 -0
- package/dist/api/item-helpers.d.ts +133 -0
- package/dist/api/item-helpers.d.ts.map +1 -0
- package/dist/api/item-helpers.js +139 -0
- package/dist/api/item-helpers.js.map +1 -0
- package/dist/api/item-mutation-result.d.ts +60 -0
- package/dist/api/item-mutation-result.d.ts.map +1 -0
- package/dist/api/item-mutation-result.js +63 -0
- package/dist/api/item-mutation-result.js.map +1 -0
- package/dist/api/item-projection.d.ts +165 -0
- package/dist/api/item-projection.d.ts.map +1 -0
- package/dist/api/item-projection.js +235 -0
- package/dist/api/item-projection.js.map +1 -0
- package/dist/api/item-source-read.d.ts +45 -0
- package/dist/api/item-source-read.d.ts.map +1 -0
- package/dist/api/item-source-read.js +57 -0
- package/dist/api/item-source-read.js.map +1 -0
- package/dist/api/items-page-walker.d.ts +126 -0
- package/dist/api/items-page-walker.d.ts.map +1 -0
- package/dist/api/items-page-walker.js +256 -0
- package/dist/api/items-page-walker.js.map +1 -0
- package/dist/api/links.d.ts +70 -0
- package/dist/api/links.d.ts.map +1 -0
- package/dist/api/links.js +128 -0
- package/dist/api/links.js.map +1 -0
- package/dist/api/me-token.d.ts +52 -0
- package/dist/api/me-token.d.ts.map +1 -0
- package/dist/api/me-token.js +55 -0
- package/dist/api/me-token.js.map +1 -0
- package/dist/api/pagination.d.ts +201 -0
- package/dist/api/pagination.d.ts.map +1 -0
- package/dist/api/pagination.js +223 -0
- package/dist/api/pagination.js.map +1 -0
- package/dist/api/partial-success-mutation.d.ts +28 -0
- package/dist/api/partial-success-mutation.d.ts.map +1 -0
- package/dist/api/partial-success-mutation.js +68 -0
- package/dist/api/partial-success-mutation.js.map +1 -0
- package/dist/api/people.d.ts +182 -0
- package/dist/api/people.d.ts.map +1 -0
- package/dist/api/people.js +260 -0
- package/dist/api/people.js.map +1 -0
- package/dist/api/phones.d.ts +74 -0
- package/dist/api/phones.d.ts.map +1 -0
- package/dist/api/phones.js +167 -0
- package/dist/api/phones.js.map +1 -0
- package/dist/api/raw-document.d.ts +53 -0
- package/dist/api/raw-document.d.ts.map +1 -0
- package/dist/api/raw-document.js +177 -0
- package/dist/api/raw-document.js.map +1 -0
- package/dist/api/raw-write.d.ts +127 -0
- package/dist/api/raw-write.d.ts.map +1 -0
- package/dist/api/raw-write.js +233 -0
- package/dist/api/raw-write.js.map +1 -0
- package/dist/api/resolution-context.d.ts +32 -0
- package/dist/api/resolution-context.d.ts.map +1 -0
- package/dist/api/resolution-context.js +42 -0
- package/dist/api/resolution-context.js.map +1 -0
- package/dist/api/resolution-pass.d.ts +163 -0
- package/dist/api/resolution-pass.d.ts.map +1 -0
- package/dist/api/resolution-pass.js +254 -0
- package/dist/api/resolution-pass.js.map +1 -0
- package/dist/api/resolve-client.d.ts +69 -0
- package/dist/api/resolve-client.d.ts.map +1 -0
- package/dist/api/resolve-client.js +70 -0
- package/dist/api/resolve-client.js.map +1 -0
- package/dist/api/resolver-error-fold.d.ts +176 -0
- package/dist/api/resolver-error-fold.d.ts.map +1 -0
- package/dist/api/resolver-error-fold.js +230 -0
- package/dist/api/resolver-error-fold.js.map +1 -0
- package/dist/api/resolvers.d.ts +131 -0
- package/dist/api/resolvers.d.ts.map +1 -0
- package/dist/api/resolvers.js +262 -0
- package/dist/api/resolvers.js.map +1 -0
- package/dist/api/response-root.d.ts +65 -0
- package/dist/api/response-root.d.ts.map +1 -0
- package/dist/api/response-root.js +61 -0
- package/dist/api/response-root.js.map +1 -0
- package/dist/api/retry.d.ts +112 -0
- package/dist/api/retry.d.ts.map +1 -0
- package/dist/api/retry.js +181 -0
- package/dist/api/retry.js.map +1 -0
- package/dist/api/set-expression.d.ts +23 -0
- package/dist/api/set-expression.d.ts.map +1 -0
- package/dist/api/set-expression.js +31 -0
- package/dist/api/set-expression.js.map +1 -0
- package/dist/api/sort.d.ts +59 -0
- package/dist/api/sort.d.ts.map +1 -0
- package/dist/api/sort.js +73 -0
- package/dist/api/sort.js.map +1 -0
- package/dist/api/source-aggregator.d.ts +94 -0
- package/dist/api/source-aggregator.d.ts.map +1 -0
- package/dist/api/source-aggregator.js +111 -0
- package/dist/api/source-aggregator.js.map +1 -0
- package/dist/api/transport.d.ts +58 -0
- package/dist/api/transport.d.ts.map +1 -0
- package/dist/api/transport.js +190 -0
- package/dist/api/transport.js.map +1 -0
- package/dist/api/update-mutation-result.d.ts +133 -0
- package/dist/api/update-mutation-result.d.ts.map +1 -0
- package/dist/api/update-mutation-result.js +145 -0
- package/dist/api/update-mutation-result.js.map +1 -0
- package/dist/api/users-fan-out-mutation.d.ts +124 -0
- package/dist/api/users-fan-out-mutation.d.ts.map +1 -0
- package/dist/api/users-fan-out-mutation.js +331 -0
- package/dist/api/users-fan-out-mutation.js.map +1 -0
- package/dist/api/walk-pages.d.ts +91 -0
- package/dist/api/walk-pages.d.ts.map +1 -0
- package/dist/api/walk-pages.js +84 -0
- package/dist/api/walk-pages.js.map +1 -0
- package/dist/api/workspace-projection.d.ts +64 -0
- package/dist/api/workspace-projection.d.ts.map +1 -0
- package/dist/api/workspace-projection.js +83 -0
- package/dist/api/workspace-projection.js.map +1 -0
- package/dist/cli/envelope-out.d.ts +128 -0
- package/dist/cli/envelope-out.d.ts.map +1 -0
- package/dist/cli/envelope-out.js +146 -0
- package/dist/cli/envelope-out.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +27 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/program.d.ts +29 -0
- package/dist/cli/program.d.ts.map +1 -0
- package/dist/cli/program.js +109 -0
- package/dist/cli/program.js.map +1 -0
- package/dist/cli/run.d.ts +108 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +105 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/commands/account/client-helper.d.ts +37 -0
- package/dist/commands/account/client-helper.d.ts.map +1 -0
- package/dist/commands/account/client-helper.js +55 -0
- package/dist/commands/account/client-helper.js.map +1 -0
- package/dist/commands/account/complexity.d.ts +29 -0
- package/dist/commands/account/complexity.d.ts.map +1 -0
- package/dist/commands/account/complexity.js +70 -0
- package/dist/commands/account/complexity.js.map +1 -0
- package/dist/commands/account/info.d.ts +36 -0
- package/dist/commands/account/info.d.ts.map +1 -0
- package/dist/commands/account/info.js +74 -0
- package/dist/commands/account/info.js.map +1 -0
- package/dist/commands/account/version.d.ts +44 -0
- package/dist/commands/account/version.d.ts.map +1 -0
- package/dist/commands/account/version.js +98 -0
- package/dist/commands/account/version.js.map +1 -0
- package/dist/commands/account/whoami.d.ts +34 -0
- package/dist/commands/account/whoami.d.ts.map +1 -0
- package/dist/commands/account/whoami.js +77 -0
- package/dist/commands/account/whoami.js.map +1 -0
- package/dist/commands/board/add-users.d.ts +60 -0
- package/dist/commands/board/add-users.d.ts.map +1 -0
- package/dist/commands/board/add-users.js +133 -0
- package/dist/commands/board/add-users.js.map +1 -0
- package/dist/commands/board/archive.d.ts +64 -0
- package/dist/commands/board/archive.d.ts.map +1 -0
- package/dist/commands/board/archive.js +226 -0
- package/dist/commands/board/archive.js.map +1 -0
- package/dist/commands/board/column-create.d.ts +146 -0
- package/dist/commands/board/column-create.d.ts.map +1 -0
- package/dist/commands/board/column-create.js +564 -0
- package/dist/commands/board/column-create.js.map +1 -0
- package/dist/commands/board/column-delete.d.ts +76 -0
- package/dist/commands/board/column-delete.d.ts.map +1 -0
- package/dist/commands/board/column-delete.js +224 -0
- package/dist/commands/board/column-delete.js.map +1 -0
- package/dist/commands/board/column-update.d.ts +92 -0
- package/dist/commands/board/column-update.d.ts.map +1 -0
- package/dist/commands/board/column-update.js +364 -0
- package/dist/commands/board/column-update.js.map +1 -0
- package/dist/commands/board/columns.d.ts +30 -0
- package/dist/commands/board/columns.d.ts.map +1 -0
- package/dist/commands/board/columns.js +102 -0
- package/dist/commands/board/columns.js.map +1 -0
- package/dist/commands/board/create.d.ts +67 -0
- package/dist/commands/board/create.d.ts.map +1 -0
- package/dist/commands/board/create.js +226 -0
- package/dist/commands/board/create.js.map +1 -0
- package/dist/commands/board/delete.d.ts +60 -0
- package/dist/commands/board/delete.d.ts.map +1 -0
- package/dist/commands/board/delete.js +192 -0
- package/dist/commands/board/delete.js.map +1 -0
- package/dist/commands/board/describe.d.ts +68 -0
- package/dist/commands/board/describe.d.ts.map +1 -0
- package/dist/commands/board/describe.js +241 -0
- package/dist/commands/board/describe.js.map +1 -0
- package/dist/commands/board/doctor.d.ts +108 -0
- package/dist/commands/board/doctor.d.ts.map +1 -0
- package/dist/commands/board/doctor.js +417 -0
- package/dist/commands/board/doctor.js.map +1 -0
- package/dist/commands/board/duplicate.d.ts +85 -0
- package/dist/commands/board/duplicate.d.ts.map +1 -0
- package/dist/commands/board/duplicate.js +281 -0
- package/dist/commands/board/duplicate.js.map +1 -0
- package/dist/commands/board/find.d.ts +47 -0
- package/dist/commands/board/find.d.ts.map +1 -0
- package/dist/commands/board/find.js +153 -0
- package/dist/commands/board/find.js.map +1 -0
- package/dist/commands/board/get.d.ts +41 -0
- package/dist/commands/board/get.d.ts.map +1 -0
- package/dist/commands/board/get.js +66 -0
- package/dist/commands/board/get.js.map +1 -0
- package/dist/commands/board/group-archive.d.ts +83 -0
- package/dist/commands/board/group-archive.d.ts.map +1 -0
- package/dist/commands/board/group-archive.js +264 -0
- package/dist/commands/board/group-archive.js.map +1 -0
- package/dist/commands/board/group-create.d.ts +118 -0
- package/dist/commands/board/group-create.d.ts.map +1 -0
- package/dist/commands/board/group-create.js +239 -0
- package/dist/commands/board/group-create.js.map +1 -0
- package/dist/commands/board/group-delete.d.ts +79 -0
- package/dist/commands/board/group-delete.d.ts.map +1 -0
- package/dist/commands/board/group-delete.js +222 -0
- package/dist/commands/board/group-delete.js.map +1 -0
- package/dist/commands/board/group-duplicate.d.ts +70 -0
- package/dist/commands/board/group-duplicate.d.ts.map +1 -0
- package/dist/commands/board/group-duplicate.js +219 -0
- package/dist/commands/board/group-duplicate.js.map +1 -0
- package/dist/commands/board/group-update.d.ts +145 -0
- package/dist/commands/board/group-update.d.ts.map +1 -0
- package/dist/commands/board/group-update.js +341 -0
- package/dist/commands/board/group-update.js.map +1 -0
- package/dist/commands/board/groups.d.ts +28 -0
- package/dist/commands/board/groups.d.ts.map +1 -0
- package/dist/commands/board/groups.js +85 -0
- package/dist/commands/board/groups.js.map +1 -0
- package/dist/commands/board/list.d.ts +39 -0
- package/dist/commands/board/list.d.ts.map +1 -0
- package/dist/commands/board/list.js +135 -0
- package/dist/commands/board/list.js.map +1 -0
- package/dist/commands/board/subscribers.d.ts +24 -0
- package/dist/commands/board/subscribers.d.ts.map +1 -0
- package/dist/commands/board/subscribers.js +89 -0
- package/dist/commands/board/subscribers.js.map +1 -0
- package/dist/commands/board/update.d.ts +82 -0
- package/dist/commands/board/update.d.ts.map +1 -0
- package/dist/commands/board/update.js +328 -0
- package/dist/commands/board/update.js.map +1 -0
- package/dist/commands/cache/clear.d.ts +34 -0
- package/dist/commands/cache/clear.d.ts.map +1 -0
- package/dist/commands/cache/clear.js +113 -0
- package/dist/commands/cache/clear.js.map +1 -0
- package/dist/commands/cache/list.d.ts +50 -0
- package/dist/commands/cache/list.d.ts.map +1 -0
- package/dist/commands/cache/list.js +77 -0
- package/dist/commands/cache/list.js.map +1 -0
- package/dist/commands/cache/stats.d.ts +22 -0
- package/dist/commands/cache/stats.d.ts.map +1 -0
- package/dist/commands/cache/stats.js +56 -0
- package/dist/commands/cache/stats.js.map +1 -0
- package/dist/commands/config/path.d.ts +22 -0
- package/dist/commands/config/path.d.ts.map +1 -0
- package/dist/commands/config/path.js +74 -0
- package/dist/commands/config/path.js.map +1 -0
- package/dist/commands/config/show.d.ts +61 -0
- package/dist/commands/config/show.d.ts.map +1 -0
- package/dist/commands/config/show.js +137 -0
- package/dist/commands/config/show.js.map +1 -0
- package/dist/commands/emit.d.ts +156 -0
- package/dist/commands/emit.d.ts.map +1 -0
- package/dist/commands/emit.js +212 -0
- package/dist/commands/emit.js.map +1 -0
- package/dist/commands/index.d.ts +5 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +195 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/item/archive.d.ts +81 -0
- package/dist/commands/item/archive.d.ts.map +1 -0
- package/dist/commands/item/archive.js +187 -0
- package/dist/commands/item/archive.js.map +1 -0
- package/dist/commands/item/clear.d.ts +140 -0
- package/dist/commands/item/clear.d.ts.map +1 -0
- package/dist/commands/item/clear.js +748 -0
- package/dist/commands/item/clear.js.map +1 -0
- package/dist/commands/item/create.d.ts +77 -0
- package/dist/commands/item/create.d.ts.map +1 -0
- package/dist/commands/item/create.js +802 -0
- package/dist/commands/item/create.js.map +1 -0
- package/dist/commands/item/delete.d.ts +82 -0
- package/dist/commands/item/delete.d.ts.map +1 -0
- package/dist/commands/item/delete.js +179 -0
- package/dist/commands/item/delete.js.map +1 -0
- package/dist/commands/item/duplicate.d.ts +117 -0
- package/dist/commands/item/duplicate.d.ts.map +1 -0
- package/dist/commands/item/duplicate.js +238 -0
- package/dist/commands/item/duplicate.js.map +1 -0
- package/dist/commands/item/find.d.ts +55 -0
- package/dist/commands/item/find.d.ts.map +1 -0
- package/dist/commands/item/find.js +231 -0
- package/dist/commands/item/find.js.map +1 -0
- package/dist/commands/item/get.d.ts +47 -0
- package/dist/commands/item/get.d.ts.map +1 -0
- package/dist/commands/item/get.js +66 -0
- package/dist/commands/item/get.js.map +1 -0
- package/dist/commands/item/list.d.ts +73 -0
- package/dist/commands/item/list.d.ts.map +1 -0
- package/dist/commands/item/list.js +284 -0
- package/dist/commands/item/list.js.map +1 -0
- package/dist/commands/item/move.d.ts +181 -0
- package/dist/commands/item/move.d.ts.map +1 -0
- package/dist/commands/item/move.js +560 -0
- package/dist/commands/item/move.js.map +1 -0
- package/dist/commands/item/search.d.ts +67 -0
- package/dist/commands/item/search.d.ts.map +1 -0
- package/dist/commands/item/search.js +322 -0
- package/dist/commands/item/search.js.map +1 -0
- package/dist/commands/item/set.d.ts +88 -0
- package/dist/commands/item/set.d.ts.map +1 -0
- package/dist/commands/item/set.js +387 -0
- package/dist/commands/item/set.js.map +1 -0
- package/dist/commands/item/subitems.d.ts +50 -0
- package/dist/commands/item/subitems.d.ts.map +1 -0
- package/dist/commands/item/subitems.js +86 -0
- package/dist/commands/item/subitems.js.map +1 -0
- package/dist/commands/item/update.d.ts +99 -0
- package/dist/commands/item/update.d.ts.map +1 -0
- package/dist/commands/item/update.js +884 -0
- package/dist/commands/item/update.js.map +1 -0
- package/dist/commands/item/upsert.d.ts +105 -0
- package/dist/commands/item/upsert.d.ts.map +1 -0
- package/dist/commands/item/upsert.js +998 -0
- package/dist/commands/item/upsert.js.map +1 -0
- package/dist/commands/parse-argv.d.ts +20 -0
- package/dist/commands/parse-argv.d.ts.map +1 -0
- package/dist/commands/parse-argv.js +40 -0
- package/dist/commands/parse-argv.js.map +1 -0
- package/dist/commands/raw/index.d.ts +23 -0
- package/dist/commands/raw/index.d.ts.map +1 -0
- package/dist/commands/raw/index.js +416 -0
- package/dist/commands/raw/index.js.map +1 -0
- package/dist/commands/run-by-id-lookup.d.ts +72 -0
- package/dist/commands/run-by-id-lookup.d.ts.map +1 -0
- package/dist/commands/run-by-id-lookup.js +58 -0
- package/dist/commands/run-by-id-lookup.js.map +1 -0
- package/dist/commands/schema/index.d.ts +104 -0
- package/dist/commands/schema/index.d.ts.map +1 -0
- package/dist/commands/schema/index.js +183 -0
- package/dist/commands/schema/index.js.map +1 -0
- package/dist/commands/types.d.ts +66 -0
- package/dist/commands/types.d.ts.map +1 -0
- package/dist/commands/types.js +15 -0
- package/dist/commands/types.js.map +1 -0
- package/dist/commands/update/body-source.d.ts +38 -0
- package/dist/commands/update/body-source.d.ts.map +1 -0
- package/dist/commands/update/body-source.js +80 -0
- package/dist/commands/update/body-source.js.map +1 -0
- package/dist/commands/update/clear-all.d.ts +67 -0
- package/dist/commands/update/clear-all.d.ts.map +1 -0
- package/dist/commands/update/clear-all.js +281 -0
- package/dist/commands/update/clear-all.js.map +1 -0
- package/dist/commands/update/create.d.ts +51 -0
- package/dist/commands/update/create.d.ts.map +1 -0
- package/dist/commands/update/create.js +167 -0
- package/dist/commands/update/create.js.map +1 -0
- package/dist/commands/update/delete.d.ts +53 -0
- package/dist/commands/update/delete.d.ts.map +1 -0
- package/dist/commands/update/delete.js +148 -0
- package/dist/commands/update/delete.js.map +1 -0
- package/dist/commands/update/edit.d.ts +37 -0
- package/dist/commands/update/edit.d.ts.map +1 -0
- package/dist/commands/update/edit.js +129 -0
- package/dist/commands/update/edit.js.map +1 -0
- package/dist/commands/update/get.d.ts +37 -0
- package/dist/commands/update/get.d.ts.map +1 -0
- package/dist/commands/update/get.js +92 -0
- package/dist/commands/update/get.js.map +1 -0
- package/dist/commands/update/like.d.ts +17 -0
- package/dist/commands/update/like.d.ts.map +1 -0
- package/dist/commands/update/like.js +23 -0
- package/dist/commands/update/like.js.map +1 -0
- package/dist/commands/update/list.d.ts +58 -0
- package/dist/commands/update/list.d.ts.map +1 -0
- package/dist/commands/update/list.js +322 -0
- package/dist/commands/update/list.js.map +1 -0
- package/dist/commands/update/pin.d.ts +17 -0
- package/dist/commands/update/pin.d.ts.map +1 -0
- package/dist/commands/update/pin.js +23 -0
- package/dist/commands/update/pin.js.map +1 -0
- package/dist/commands/update/reply.d.ts +47 -0
- package/dist/commands/update/reply.d.ts.map +1 -0
- package/dist/commands/update/reply.js +149 -0
- package/dist/commands/update/reply.js.map +1 -0
- package/dist/commands/update/toggle.d.ts +70 -0
- package/dist/commands/update/toggle.d.ts.map +1 -0
- package/dist/commands/update/toggle.js +118 -0
- package/dist/commands/update/toggle.js.map +1 -0
- package/dist/commands/update/unlike.d.ts +17 -0
- package/dist/commands/update/unlike.d.ts.map +1 -0
- package/dist/commands/update/unlike.js +22 -0
- package/dist/commands/update/unlike.js.map +1 -0
- package/dist/commands/update/unpin.d.ts +17 -0
- package/dist/commands/update/unpin.d.ts.map +1 -0
- package/dist/commands/update/unpin.js +21 -0
- package/dist/commands/update/unpin.js.map +1 -0
- package/dist/commands/user/get.d.ts +31 -0
- package/dist/commands/user/get.d.ts.map +1 -0
- package/dist/commands/user/get.js +81 -0
- package/dist/commands/user/get.js.map +1 -0
- package/dist/commands/user/list.d.ts +61 -0
- package/dist/commands/user/list.d.ts.map +1 -0
- package/dist/commands/user/list.js +148 -0
- package/dist/commands/user/list.js.map +1 -0
- package/dist/commands/user/me.d.ts +17 -0
- package/dist/commands/user/me.d.ts.map +1 -0
- package/dist/commands/user/me.js +49 -0
- package/dist/commands/user/me.js.map +1 -0
- package/dist/commands/workspace/add-users.d.ts +76 -0
- package/dist/commands/workspace/add-users.d.ts.map +1 -0
- package/dist/commands/workspace/add-users.js +154 -0
- package/dist/commands/workspace/add-users.js.map +1 -0
- package/dist/commands/workspace/create.d.ts +59 -0
- package/dist/commands/workspace/create.d.ts.map +1 -0
- package/dist/commands/workspace/create.js +163 -0
- package/dist/commands/workspace/create.js.map +1 -0
- package/dist/commands/workspace/delete.d.ts +67 -0
- package/dist/commands/workspace/delete.d.ts.map +1 -0
- package/dist/commands/workspace/delete.js +182 -0
- package/dist/commands/workspace/delete.js.map +1 -0
- package/dist/commands/workspace/folders.d.ts +40 -0
- package/dist/commands/workspace/folders.d.ts.map +1 -0
- package/dist/commands/workspace/folders.js +124 -0
- package/dist/commands/workspace/folders.js.map +1 -0
- package/dist/commands/workspace/get.d.ts +35 -0
- package/dist/commands/workspace/get.d.ts.map +1 -0
- package/dist/commands/workspace/get.js +62 -0
- package/dist/commands/workspace/get.js.map +1 -0
- package/dist/commands/workspace/list.d.ts +57 -0
- package/dist/commands/workspace/list.d.ts.map +1 -0
- package/dist/commands/workspace/list.js +125 -0
- package/dist/commands/workspace/list.js.map +1 -0
- package/dist/commands/workspace/remove-users.d.ts +47 -0
- package/dist/commands/workspace/remove-users.d.ts.map +1 -0
- package/dist/commands/workspace/remove-users.js +122 -0
- package/dist/commands/workspace/remove-users.js.map +1 -0
- package/dist/commands/workspace/update.d.ts +68 -0
- package/dist/commands/workspace/update.d.ts.map +1 -0
- package/dist/commands/workspace/update.js +237 -0
- package/dist/commands/workspace/update.js.map +1 -0
- package/dist/config/load.d.ts +33 -0
- package/dist/config/load.d.ts.map +1 -0
- package/dist/config/load.js +81 -0
- package/dist/config/load.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/types/global-flags.d.ts +69 -0
- package/dist/types/global-flags.d.ts.map +1 -0
- package/dist/types/global-flags.js +170 -0
- package/dist/types/global-flags.js.map +1 -0
- package/dist/types/ids.d.ts +38 -0
- package/dist/types/ids.d.ts.map +1 -0
- package/dist/types/ids.js +51 -0
- package/dist/types/ids.js.map +1 -0
- package/dist/types/json.d.ts +60 -0
- package/dist/types/json.d.ts.map +1 -0
- package/dist/types/json.js +33 -0
- package/dist/types/json.js.map +1 -0
- package/dist/utils/errors.d.ts +121 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +264 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logger.d.ts +39 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +49 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/output/envelope.d.ts +140 -0
- package/dist/utils/output/envelope.d.ts.map +1 -0
- package/dist/utils/output/envelope.js +120 -0
- package/dist/utils/output/envelope.js.map +1 -0
- package/dist/utils/output/json.d.ts +10 -0
- package/dist/utils/output/json.d.ts.map +1 -0
- package/dist/utils/output/json.js +12 -0
- package/dist/utils/output/json.js.map +1 -0
- package/dist/utils/output/ndjson.d.ts +92 -0
- package/dist/utils/output/ndjson.d.ts.map +1 -0
- package/dist/utils/output/ndjson.js +33 -0
- package/dist/utils/output/ndjson.js.map +1 -0
- package/dist/utils/output/select.d.ts +22 -0
- package/dist/utils/output/select.d.ts.map +1 -0
- package/dist/utils/output/select.js +47 -0
- package/dist/utils/output/select.js.map +1 -0
- package/dist/utils/output/table.d.ts +32 -0
- package/dist/utils/output/table.d.ts.map +1 -0
- package/dist/utils/output/table.js +133 -0
- package/dist/utils/output/table.js.map +1 -0
- package/dist/utils/output/text.d.ts +5 -0
- package/dist/utils/output/text.d.ts.map +1 -0
- package/dist/utils/output/text.js +32 -0
- package/dist/utils/output/text.js.map +1 -0
- package/dist/utils/parse-boundary.d.ts +53 -0
- package/dist/utils/parse-boundary.d.ts.map +1 -0
- package/dist/utils/parse-boundary.js +62 -0
- package/dist/utils/parse-boundary.js.map +1 -0
- package/dist/utils/redact.d.ts +54 -0
- package/dist/utils/redact.d.ts.map +1 -0
- package/dist/utils/redact.js +154 -0
- package/dist/utils/redact.js.map +1 -0
- package/dist/utils/request-id.d.ts +17 -0
- package/dist/utils/request-id.d.ts.map +1 -0
- package/dist/utils/request-id.js +26 -0
- package/dist/utils/request-id.js.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1,564 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `monday board column-create <bid> --type <type> --title <t>
|
|
3
|
+
* [--description <d>] [--settings <json>] [--dry-run]` — create a new
|
|
4
|
+
* column on a board (`cli-design.md` §4.3 line 875,
|
|
5
|
+
* `v0.2-plan.md` §3 M16).
|
|
6
|
+
*
|
|
7
|
+
* **Wire shape.** Single round-trip via `create_column(board_id,
|
|
8
|
+
* column_type, title, description?, defaults?)`. The CLI flag
|
|
9
|
+
* `--type` maps to the wire's `column_type: ColumnType!`; the CLI
|
|
10
|
+
* flag `--settings <json>` maps to the wire's `defaults: JSON`
|
|
11
|
+
* (NOT `settings_str` — `settings_str` is the read-side
|
|
12
|
+
* serialisation of column settings returned on `Column.settings_str`;
|
|
13
|
+
* `defaults` is the write-side input parameter on `create_column`).
|
|
14
|
+
* The wire mutation also accepts `id?: String` (agent-supplied
|
|
15
|
+
* custom column id) and `after_column_id?: ID` (placement); M16
|
|
16
|
+
* deliberately omits both — agents needing them call the wire
|
|
17
|
+
* mutation via M9's `dev mutate` escape hatch.
|
|
18
|
+
*
|
|
19
|
+
* **`--type` validation.** The full `ColumnType` enum (~40 values)
|
|
20
|
+
* per SDK 14.0.0; see §2.3. Argv-parses against the explicit string
|
|
21
|
+
* literal union below (kept hand-pinned rather than imported from
|
|
22
|
+
* the SDK because the SDK's enum is `declare enum`-shaped and
|
|
23
|
+
* doesn't survive zod's `.enum(...)` constructor cleanly). Adding
|
|
24
|
+
* a Monday-side type is SemVer-minor (this list grows); removing
|
|
25
|
+
* one is SemVer-major.
|
|
26
|
+
*
|
|
27
|
+
* **`noncanonical_column_type` warning** (cli-design §6 stable
|
|
28
|
+
* warning-code registry). When `--type` resolves to a column type
|
|
29
|
+
* outside `WRITABLE_COLUMN_TYPES`, the success / dry-run envelope
|
|
30
|
+
* carries a `noncanonical_column_type` warning so agents pick the
|
|
31
|
+
* right write path from the per-category `suggested_write_path`:
|
|
32
|
+
* - `raw_writable` → `--set-raw <col>=<json>` (agent reaches for
|
|
33
|
+
* the v0.2 escape hatch, accepts wire-shape correctness).
|
|
34
|
+
* - `read_only_forever` → no write path (the column exists only
|
|
35
|
+
* for read-side display / mirror sources).
|
|
36
|
+
* - `files_shaped` → `add_file_to_column` deferred to v0.4
|
|
37
|
+
* (asset upload).
|
|
38
|
+
* The command STILL PROCEEDS in all cases — Monday accepts non-
|
|
39
|
+
* writable types and agents may legitimately want them. The
|
|
40
|
+
* categorisation lives in `api/column-types.ts` so the warning
|
|
41
|
+
* shape and `--set-raw`'s reject lists agree on what's read-only-
|
|
42
|
+
* forever / files-shaped.
|
|
43
|
+
*
|
|
44
|
+
* **`--settings <json>` validation.** Parsed at argv-parse-time:
|
|
45
|
+
* malformed JSON → `usage_error` exit 1, before any network call.
|
|
46
|
+
* For types in `WRITABLE_COLUMN_TYPES`, validated against a
|
|
47
|
+
* per-type zod schema (status: `{labels?}`; dropdown: `{labels?}`;
|
|
48
|
+
* numbers: `{unit?}`; date / text / long_text / people / link /
|
|
49
|
+
* email / phone: empty `{}`). Type-mismatched settings (e.g.
|
|
50
|
+
* `--type text --settings '{"labels":[]}'`) → `usage_error` with
|
|
51
|
+
* `details: {column_type, expected_keys, actual_keys, hint}`.
|
|
52
|
+
* Raw-writable / read-only-forever / files-shaped types skip
|
|
53
|
+
* type-specific validation — `--settings` for these types only
|
|
54
|
+
* requires well-formed JSON (Monday validates server-side).
|
|
55
|
+
*
|
|
56
|
+
* **Live-envelope projection.** Returned `Maybe<Column>` is projected
|
|
57
|
+
* through `columnProjectionSchema` (the M16 R45-lifted shared shape)
|
|
58
|
+
* via `projectMutationColumn`. Sharing the schema keeps create /
|
|
59
|
+
* update / delete envelopes byte-identical for the same record.
|
|
60
|
+
*
|
|
61
|
+
* **Dry-run shape** per cli-design §6.4 column-create variant:
|
|
62
|
+
* minimal `{operation: "create_column", board_id, type, title,
|
|
63
|
+
* description?, settings?}`. No preflight read fires; the dry-run
|
|
64
|
+
* is purely argv-derived. `meta.source: 'none'`. The
|
|
65
|
+
* `noncanonical_column_type` warning fires on dry-run too so the
|
|
66
|
+
* live call's behaviour is predictable.
|
|
67
|
+
*
|
|
68
|
+
* **Eager invalidation** (cli-design §8 single-leg call-site
|
|
69
|
+
* contract). On success, calls `invalidateBoard(boardId)` AFTER
|
|
70
|
+
* the success envelope's `data` projection completes — never
|
|
71
|
+
* before the wire mutation, never between mutation and projection.
|
|
72
|
+
* Skipped on the error path (a failed single-leg call didn't
|
|
73
|
+
* change board state). The cache entry's stale `columns: [...]`
|
|
74
|
+
* list is dropped so subsequent reads in the same process see
|
|
75
|
+
* fresh state without TTL eviction.
|
|
76
|
+
*
|
|
77
|
+
* **Idempotent: false.** Re-running creates a second column with
|
|
78
|
+
* the same title (Monday auto-generates a fresh column id per
|
|
79
|
+
* call). NOT destructive (no --yes gate).
|
|
80
|
+
*/
|
|
81
|
+
import { z } from 'zod';
|
|
82
|
+
import { ensureSubcommand } from '../types.js';
|
|
83
|
+
import { emitDryRun, emitMutation } from '../emit.js';
|
|
84
|
+
import { resolveClient } from '../../api/resolve-client.js';
|
|
85
|
+
import { parseArgv } from '../parse-argv.js';
|
|
86
|
+
import { ApiError, UsageError } from '../../utils/errors.js';
|
|
87
|
+
import { unwrapOrThrow } from '../../utils/parse-boundary.js';
|
|
88
|
+
import { BoardIdSchema } from '../../types/ids.js';
|
|
89
|
+
import { withBoardInvalidationSingleLeg } from '../../api/board-mutation-invalidation.js';
|
|
90
|
+
import { COLUMN_FIELDS_FRAGMENT, columnProjectionSchema, projectMutationColumn, } from '../../api/column-mutation-result.js';
|
|
91
|
+
import { categorizeNoncanonicalColumnType, isWritableColumnType, } from '../../api/column-types.js';
|
|
92
|
+
const CREATE_COLUMN_MUTATION = `
|
|
93
|
+
mutation ColumnCreate(
|
|
94
|
+
$boardId: ID!,
|
|
95
|
+
$columnType: ColumnType!,
|
|
96
|
+
$title: String!,
|
|
97
|
+
$description: String,
|
|
98
|
+
$defaults: JSON
|
|
99
|
+
) {
|
|
100
|
+
create_column(
|
|
101
|
+
board_id: $boardId,
|
|
102
|
+
column_type: $columnType,
|
|
103
|
+
title: $title,
|
|
104
|
+
description: $description,
|
|
105
|
+
defaults: $defaults
|
|
106
|
+
) {
|
|
107
|
+
${COLUMN_FIELDS_FRAGMENT}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
`;
|
|
111
|
+
export const boardColumnCreateOutputSchema = columnProjectionSchema;
|
|
112
|
+
/**
|
|
113
|
+
* The full Monday `ColumnType` enum (SDK 14.0.0; see §2.3 +
|
|
114
|
+
* `node_modules/@mondaydotcomorg/api/dist/esm/lib/generated/sdk.d.ts:560`).
|
|
115
|
+
* Hand-mirrored from the SDK rather than imported because the SDK's
|
|
116
|
+
* `declare enum` shape doesn't compose with zod's `.enum(...)`
|
|
117
|
+
* constructor (zod expects a tuple of string literals; an enum const
|
|
118
|
+
* is a runtime object). Adding a Monday-side type here is SemVer-
|
|
119
|
+
* minor; removing one is SemVer-major.
|
|
120
|
+
*
|
|
121
|
+
* NOT the same set as `WRITABLE_COLUMN_TYPES` — this is "every type
|
|
122
|
+
* Monday's `create_column` accepts on the wire" (the full ColumnType
|
|
123
|
+
* enum), of which `WRITABLE_COLUMN_TYPES` is the v0.2 friendly-
|
|
124
|
+
* translator subset. Types outside the writable allowlist still
|
|
125
|
+
* create successfully (Monday accepts them); the CLI emits a
|
|
126
|
+
* `noncanonical_column_type` warning so agents know to use
|
|
127
|
+
* `--set-raw` / `add_file_to_column` / no-write-at-all per
|
|
128
|
+
* category.
|
|
129
|
+
*/
|
|
130
|
+
const COLUMN_TYPE_VALUES = [
|
|
131
|
+
'auto_number',
|
|
132
|
+
'board_relation',
|
|
133
|
+
'button',
|
|
134
|
+
'checkbox',
|
|
135
|
+
'color_picker',
|
|
136
|
+
'country',
|
|
137
|
+
'creation_log',
|
|
138
|
+
'date',
|
|
139
|
+
'dependency',
|
|
140
|
+
'doc',
|
|
141
|
+
'dropdown',
|
|
142
|
+
'email',
|
|
143
|
+
'file',
|
|
144
|
+
'formula',
|
|
145
|
+
'group',
|
|
146
|
+
'hour',
|
|
147
|
+
'integration',
|
|
148
|
+
'item_assignees',
|
|
149
|
+
'item_id',
|
|
150
|
+
'last_updated',
|
|
151
|
+
'link',
|
|
152
|
+
'location',
|
|
153
|
+
'long_text',
|
|
154
|
+
'mirror',
|
|
155
|
+
'name',
|
|
156
|
+
'numbers',
|
|
157
|
+
'people',
|
|
158
|
+
'person',
|
|
159
|
+
'phone',
|
|
160
|
+
'progress',
|
|
161
|
+
'rating',
|
|
162
|
+
'status',
|
|
163
|
+
'subtasks',
|
|
164
|
+
'tags',
|
|
165
|
+
'team',
|
|
166
|
+
'text',
|
|
167
|
+
'time_tracking',
|
|
168
|
+
'timeline',
|
|
169
|
+
'unsupported',
|
|
170
|
+
'vote',
|
|
171
|
+
'week',
|
|
172
|
+
'world_clock',
|
|
173
|
+
];
|
|
174
|
+
/**
|
|
175
|
+
* Per-type `--settings <json>` zod schemas for the writable
|
|
176
|
+
* allowlist. Pinned narrowly: only the keys agents commonly set via
|
|
177
|
+
* the wire (status `labels`, dropdown `labels`, numbers `unit`)
|
|
178
|
+
* appear in the schema. Empty `.strict()` schemas for the simple
|
|
179
|
+
* types (text / long_text / date / people / link / email / phone)
|
|
180
|
+
* reject any keys — `--settings '{"labels":[]}' --type text` is a
|
|
181
|
+
* usage_error rather than a Monday-side validation_failed.
|
|
182
|
+
*
|
|
183
|
+
* Why narrow: Monday's accepted shapes evolve (cli-design pinned the
|
|
184
|
+
* decision deliberately — over-pinning would force docs revisions
|
|
185
|
+
* every time Monday adds a setting key). The contract pins the
|
|
186
|
+
* SHAPE (per-type validation against a per-type schema), the M16
|
|
187
|
+
* implementation owns the field set. Status / dropdown / numbers
|
|
188
|
+
* cover the documented happy paths; the rest reject anything because
|
|
189
|
+
* Monday has no documented `defaults: JSON` shape for them.
|
|
190
|
+
*
|
|
191
|
+
* Status `labels` accepts both shapes Monday tolerates: bare
|
|
192
|
+
* `string[]` (the labels in order) and `Record<string,string>`
|
|
193
|
+
* (the legacy index-keyed shape). Same for dropdown.
|
|
194
|
+
*/
|
|
195
|
+
const statusSettingsSchema = z
|
|
196
|
+
.object({
|
|
197
|
+
labels: z
|
|
198
|
+
.union([
|
|
199
|
+
z.array(z.string()),
|
|
200
|
+
z.record(z.string(), z.string()),
|
|
201
|
+
])
|
|
202
|
+
.optional(),
|
|
203
|
+
})
|
|
204
|
+
.strict();
|
|
205
|
+
const dropdownLabelObjectSchema = z
|
|
206
|
+
.object({
|
|
207
|
+
id: z.union([z.string(), z.number()]).optional(),
|
|
208
|
+
name: z.string(),
|
|
209
|
+
})
|
|
210
|
+
.strict();
|
|
211
|
+
const dropdownSettingsSchema = z
|
|
212
|
+
.object({
|
|
213
|
+
labels: z
|
|
214
|
+
.array(z.union([z.string(), dropdownLabelObjectSchema]))
|
|
215
|
+
.optional(),
|
|
216
|
+
})
|
|
217
|
+
.strict();
|
|
218
|
+
const numbersSettingsSchema = z
|
|
219
|
+
.object({
|
|
220
|
+
unit: z.string().optional(),
|
|
221
|
+
})
|
|
222
|
+
.strict();
|
|
223
|
+
const emptySettingsSchema = z.object({}).strict();
|
|
224
|
+
/**
|
|
225
|
+
* Per-writable-type schema lookup. Used by `validateWritableSettings`
|
|
226
|
+
* to reject type-mismatched `--settings` payloads at argv-parse time.
|
|
227
|
+
*/
|
|
228
|
+
const WRITABLE_SETTINGS_SCHEMAS = {
|
|
229
|
+
text: emptySettingsSchema,
|
|
230
|
+
long_text: emptySettingsSchema,
|
|
231
|
+
numbers: numbersSettingsSchema,
|
|
232
|
+
status: statusSettingsSchema,
|
|
233
|
+
dropdown: dropdownSettingsSchema,
|
|
234
|
+
date: emptySettingsSchema,
|
|
235
|
+
people: emptySettingsSchema,
|
|
236
|
+
link: emptySettingsSchema,
|
|
237
|
+
email: emptySettingsSchema,
|
|
238
|
+
phone: emptySettingsSchema,
|
|
239
|
+
};
|
|
240
|
+
/**
|
|
241
|
+
* Hand-extracted documented key set per writable type — surfaces in
|
|
242
|
+
* `details.expected_keys` of the type-mismatched `usage_error` so
|
|
243
|
+
* agents read the accepted-keys list directly rather than having to
|
|
244
|
+
* round-trip through `--help`. Mirrors `WRITABLE_SETTINGS_SCHEMAS`
|
|
245
|
+
* verbatim — the two grow together.
|
|
246
|
+
*/
|
|
247
|
+
const WRITABLE_SETTINGS_EXPECTED_KEYS = {
|
|
248
|
+
text: [],
|
|
249
|
+
long_text: [],
|
|
250
|
+
numbers: ['unit'],
|
|
251
|
+
status: ['labels'],
|
|
252
|
+
dropdown: ['labels'],
|
|
253
|
+
date: [],
|
|
254
|
+
people: [],
|
|
255
|
+
link: [],
|
|
256
|
+
email: [],
|
|
257
|
+
phone: [],
|
|
258
|
+
};
|
|
259
|
+
const isJsonObject = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
260
|
+
/**
|
|
261
|
+
* Parses `--settings <json>` at argv-parse time. Two-stage:
|
|
262
|
+
* 1. JSON.parse (malformed JSON → usage_error, before any network
|
|
263
|
+
* call). Monday's `defaults: JSON` argument requires a JSON
|
|
264
|
+
* object on the wire; a bare string / number / array at the
|
|
265
|
+
* top level is rejected here (mirrors `--set-raw`'s shape rule
|
|
266
|
+
* so the two escape hatches read consistently).
|
|
267
|
+
* 2. For types in `WRITABLE_COLUMN_TYPES`, parse against the per-
|
|
268
|
+
* type schema. A schema failure surfaces as usage_error with
|
|
269
|
+
* `details: {column_type, expected_keys, actual_keys, hint}`.
|
|
270
|
+
* Other types skip type-specific validation per cli-design
|
|
271
|
+
* §4.3 column-create (well-formed JSON only).
|
|
272
|
+
*/
|
|
273
|
+
const parseSettingsFlag = (raw, columnType) => {
|
|
274
|
+
let parsed;
|
|
275
|
+
try {
|
|
276
|
+
parsed = JSON.parse(raw);
|
|
277
|
+
}
|
|
278
|
+
catch (err) {
|
|
279
|
+
// JSON.parse throws SyntaxError, which is an Error — the
|
|
280
|
+
// String(err) fallback is defensive against a future host that
|
|
281
|
+
// throws a non-Error here. Leaving the narrowing in for safety
|
|
282
|
+
// (useUnknownInCatchVariables) but ignoring the unreachable
|
|
283
|
+
// branch for coverage purposes.
|
|
284
|
+
/* c8 ignore next */
|
|
285
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
286
|
+
throw new UsageError(`--settings: malformed JSON (${message})`, {
|
|
287
|
+
cause: err,
|
|
288
|
+
details: {
|
|
289
|
+
column_type: columnType,
|
|
290
|
+
raw,
|
|
291
|
+
parse_error: message,
|
|
292
|
+
hint: 'pass a well-formed JSON object literal (e.g. ' +
|
|
293
|
+
'--settings \'{"labels":["Low","Med","High"]}\'); use ' +
|
|
294
|
+
'single-quote-around-double-quote shell quoting on POSIX shells.',
|
|
295
|
+
},
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
if (!isJsonObject(parsed)) {
|
|
299
|
+
throw new UsageError(`--settings: expected a JSON object, got ${Array.isArray(parsed) ? 'array' : parsed === null ? 'null' : typeof parsed}`, {
|
|
300
|
+
details: {
|
|
301
|
+
column_type: columnType,
|
|
302
|
+
raw,
|
|
303
|
+
hint: 'Monday\'s create_column `defaults: JSON` argument requires ' +
|
|
304
|
+
'a JSON object — wrap the literal in {…}.',
|
|
305
|
+
},
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
if (isWritableColumnType(columnType)) {
|
|
309
|
+
const schema = WRITABLE_SETTINGS_SCHEMAS[columnType];
|
|
310
|
+
const result = schema.safeParse(parsed);
|
|
311
|
+
if (!result.success) {
|
|
312
|
+
const expectedKeys = WRITABLE_SETTINGS_EXPECTED_KEYS[columnType];
|
|
313
|
+
const actualKeys = Object.keys(parsed);
|
|
314
|
+
const issues = result.error.issues.map((i) => ({
|
|
315
|
+
path: i.path.map(String).join('.'),
|
|
316
|
+
message: i.message,
|
|
317
|
+
}));
|
|
318
|
+
throw new UsageError(`--settings: payload doesn't match the schema for column type ` +
|
|
319
|
+
`"${columnType}" — ${issues
|
|
320
|
+
.map((i) => (i.path.length > 0 ? `${i.path}: ${i.message}` : i.message))
|
|
321
|
+
.join('; ')}`, {
|
|
322
|
+
cause: result.error,
|
|
323
|
+
details: {
|
|
324
|
+
column_type: columnType,
|
|
325
|
+
expected_keys: expectedKeys,
|
|
326
|
+
actual_keys: actualKeys,
|
|
327
|
+
issues,
|
|
328
|
+
hint: expectedKeys.length === 0
|
|
329
|
+
? `column type "${columnType}" accepts no --settings keys via M16; ` +
|
|
330
|
+
'omit --settings or use --set-raw post-creation for type-specific writes.'
|
|
331
|
+
: `column type "${columnType}" accepts these --settings keys: ` +
|
|
332
|
+
`${expectedKeys.join(', ')}.`,
|
|
333
|
+
},
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
return result.data;
|
|
337
|
+
}
|
|
338
|
+
// Raw-writable / read-only-forever / files-shaped: well-formed
|
|
339
|
+
// JSON only (Monday validates server-side); skip type-specific
|
|
340
|
+
// validation per cli-design §4.3 column-create.
|
|
341
|
+
return parsed;
|
|
342
|
+
};
|
|
343
|
+
const inputSchema = z
|
|
344
|
+
.object({
|
|
345
|
+
boardId: BoardIdSchema,
|
|
346
|
+
type: z.enum(COLUMN_TYPE_VALUES),
|
|
347
|
+
title: z.string().refine((s) => s.trim().length > 0, {
|
|
348
|
+
message: '--title must be non-empty (whitespace-only is rejected)',
|
|
349
|
+
}),
|
|
350
|
+
description: z.string().optional(),
|
|
351
|
+
/**
|
|
352
|
+
* Raw `--settings <json>` string — parsed + per-type-validated
|
|
353
|
+
* inside the action body via `parseSettingsFlag` because the
|
|
354
|
+
* validation depends on the resolved `--type`. Schema only
|
|
355
|
+
* checks "well-formed string" here.
|
|
356
|
+
*/
|
|
357
|
+
settings: z.string().optional(),
|
|
358
|
+
})
|
|
359
|
+
.strict();
|
|
360
|
+
const responseSchema = z
|
|
361
|
+
.object({
|
|
362
|
+
create_column: z.unknown(),
|
|
363
|
+
})
|
|
364
|
+
.loose();
|
|
365
|
+
/**
|
|
366
|
+
* Builds the §6 `noncanonical_column_type` warning when `--type`
|
|
367
|
+
* resolves to a non-canonical type. Returns `[]` for canonical types
|
|
368
|
+
* so the action body can splat unconditionally. Shape matches the
|
|
369
|
+
* cli-design §6 stable warning-code registry pin (column_type,
|
|
370
|
+
* category, suggested_write_path).
|
|
371
|
+
*/
|
|
372
|
+
const buildNoncanonicalWarning = (columnType) => {
|
|
373
|
+
const details = categorizeNoncanonicalColumnType(columnType);
|
|
374
|
+
if (details === null)
|
|
375
|
+
return [];
|
|
376
|
+
const message = buildNoncanonicalMessage(columnType, details.category);
|
|
377
|
+
return [
|
|
378
|
+
{
|
|
379
|
+
code: 'noncanonical_column_type',
|
|
380
|
+
message,
|
|
381
|
+
details: {
|
|
382
|
+
column_type: columnType,
|
|
383
|
+
category: details.category,
|
|
384
|
+
suggested_write_path: details.suggestedWritePath,
|
|
385
|
+
},
|
|
386
|
+
},
|
|
387
|
+
];
|
|
388
|
+
};
|
|
389
|
+
const buildNoncanonicalMessage = (columnType, category) => {
|
|
390
|
+
switch (category) {
|
|
391
|
+
case 'raw_writable':
|
|
392
|
+
return (`Column type "${columnType}" was created successfully but is not ` +
|
|
393
|
+
`in the v0.2 writable allowlist (cli-design §5.3). Use ` +
|
|
394
|
+
`\`--set-raw <col>=<json>\` to write to this column post-creation.`);
|
|
395
|
+
case 'read_only_forever':
|
|
396
|
+
return (`Column type "${columnType}" was created successfully but Monday ` +
|
|
397
|
+
`computes its value server-side and never makes it writable via ` +
|
|
398
|
+
`the API. The column exists for read-side display / mirror ` +
|
|
399
|
+
`sources only; \`--set\` and \`--set-raw\` against it surface ` +
|
|
400
|
+
`unsupported_column_type.`);
|
|
401
|
+
case 'files_shaped':
|
|
402
|
+
return (`Column type "${columnType}" was created successfully but the ` +
|
|
403
|
+
`write path is \`add_file_to_column\` (multipart upload), ` +
|
|
404
|
+
`pinned to v0.4 (asset upload). The column exists, but ` +
|
|
405
|
+
`\`--set\` and \`--set-raw\` against it surface ` +
|
|
406
|
+
`unsupported_column_type until v0.4 lands.`);
|
|
407
|
+
}
|
|
408
|
+
};
|
|
409
|
+
export const boardColumnCreateCommand = {
|
|
410
|
+
name: 'board.column-create',
|
|
411
|
+
summary: 'Create a new column on a board',
|
|
412
|
+
examples: [
|
|
413
|
+
'monday board column-create 12345 --type text --title "Notes"',
|
|
414
|
+
'monday board column-create 12345 --type status --title "Priority" --settings \'{"labels":["Low","Med","High"]}\'',
|
|
415
|
+
'monday board column-create 12345 --type numbers --title "Cost" --settings \'{"unit":"USD"}\' --description "Budgeted cost"',
|
|
416
|
+
'monday board column-create 12345 --type country --title "Region" --json',
|
|
417
|
+
'monday board column-create 12345 --type text --title "Preview" --dry-run --json',
|
|
418
|
+
],
|
|
419
|
+
// create_column is non-idempotent — re-running creates a second
|
|
420
|
+
// column with the same title (Monday auto-generates a fresh column
|
|
421
|
+
// id per call). Mirrors `board create` / `workspace create` /
|
|
422
|
+
// `item create` rationale.
|
|
423
|
+
idempotent: false,
|
|
424
|
+
inputSchema,
|
|
425
|
+
outputSchema: boardColumnCreateOutputSchema,
|
|
426
|
+
attach: (program, ctx) => {
|
|
427
|
+
const noun = ensureSubcommand(program, 'board', 'Board commands');
|
|
428
|
+
noun
|
|
429
|
+
.command('column-create <boardId>')
|
|
430
|
+
.description(boardColumnCreateCommand.summary)
|
|
431
|
+
.requiredOption('--type <type>', 'column type (e.g. text, status, numbers — full ColumnType enum)')
|
|
432
|
+
.requiredOption('--title <t>', 'column title')
|
|
433
|
+
.option('--description <d>', 'column description')
|
|
434
|
+
.option('--settings <json>', 'type-specific settings JSON (status/dropdown labels, numbers unit, etc.)')
|
|
435
|
+
.addHelpText('after', ['', 'Examples:', ...boardColumnCreateCommand.examples.map((e) => ` ${e}`), ''].join('\n'))
|
|
436
|
+
.action(async (boardId, opts) => {
|
|
437
|
+
const parsed = parseArgv(boardColumnCreateCommand.inputSchema, {
|
|
438
|
+
boardId,
|
|
439
|
+
...opts,
|
|
440
|
+
});
|
|
441
|
+
const title = parsed.title.trim();
|
|
442
|
+
// Parse + per-type-validate --settings ahead of resolveClient
|
|
443
|
+
// so a malformed payload surfaces as usage_error (exit 1)
|
|
444
|
+
// before any token check (config_error, exit 3) — same
|
|
445
|
+
// ordering invariant the destructive-gate verbs preserve.
|
|
446
|
+
const settings = parsed.settings === undefined
|
|
447
|
+
? undefined
|
|
448
|
+
: parseSettingsFlag(parsed.settings, parsed.type);
|
|
449
|
+
const { client, globalFlags, apiVersion, toEmit } = resolveClient(ctx, program.opts());
|
|
450
|
+
const warnings = buildNoncanonicalWarning(parsed.type);
|
|
451
|
+
if (globalFlags.dryRun) {
|
|
452
|
+
// Per cli-design §6.4 column-create variant: minimal
|
|
453
|
+
// `{operation, board_id, type, title, description?,
|
|
454
|
+
// settings?}`. No preflight read fires — purely argv-
|
|
455
|
+
// derived; meta.source: 'none'. The `noncanonical_column_
|
|
456
|
+
// type` warning fires on dry-run too so the live call's
|
|
457
|
+
// behaviour is predictable.
|
|
458
|
+
const planned = {
|
|
459
|
+
operation: 'create_column',
|
|
460
|
+
board_id: parsed.boardId,
|
|
461
|
+
type: parsed.type,
|
|
462
|
+
title,
|
|
463
|
+
};
|
|
464
|
+
if (parsed.description !== undefined) {
|
|
465
|
+
planned.description = parsed.description;
|
|
466
|
+
}
|
|
467
|
+
if (settings !== undefined) {
|
|
468
|
+
planned.settings = settings;
|
|
469
|
+
}
|
|
470
|
+
emitDryRun({
|
|
471
|
+
ctx,
|
|
472
|
+
programOpts: program.opts(),
|
|
473
|
+
plannedChanges: [planned],
|
|
474
|
+
source: 'none',
|
|
475
|
+
cacheAgeSeconds: null,
|
|
476
|
+
warnings,
|
|
477
|
+
apiVersion,
|
|
478
|
+
});
|
|
479
|
+
return;
|
|
480
|
+
}
|
|
481
|
+
// Live path. Send each optional arg only when the agent
|
|
482
|
+
// provided one — passing `null` would explicitly clear /
|
|
483
|
+
// reject Monday's server-side default.
|
|
484
|
+
const variables = {
|
|
485
|
+
boardId: parsed.boardId,
|
|
486
|
+
columnType: parsed.type,
|
|
487
|
+
title,
|
|
488
|
+
};
|
|
489
|
+
if (parsed.description !== undefined) {
|
|
490
|
+
variables.description = parsed.description;
|
|
491
|
+
}
|
|
492
|
+
if (settings !== undefined) {
|
|
493
|
+
variables.defaults = settings;
|
|
494
|
+
}
|
|
495
|
+
// §8 single-leg call-site contract via `withBoardInvalidation
|
|
496
|
+
// SingleLeg` (R46): the helper invalidates AFTER the closure
|
|
497
|
+
// returns (i.e. after `data` projection completes). On the
|
|
498
|
+
// error path the closure's throw bypasses invalidation —
|
|
499
|
+
// matching the §8 "skip on error" rule. Ordered BEFORE
|
|
500
|
+
// emitMutation so a cache-unlink failure surfaces through
|
|
501
|
+
// the runner's catch-all rather than double-emitting after
|
|
502
|
+
// a success envelope hit stdout.
|
|
503
|
+
const { data: projected, response } = await withBoardInvalidationSingleLeg({
|
|
504
|
+
boardId: parsed.boardId,
|
|
505
|
+
env: ctx.env,
|
|
506
|
+
perform: async () => {
|
|
507
|
+
const wireResponse = await client.raw(CREATE_COLUMN_MUTATION, variables, { operationName: 'ColumnCreate' });
|
|
508
|
+
const data = unwrapOrThrow(responseSchema.safeParse(wireResponse.data), {
|
|
509
|
+
context: 'Monday returned a malformed ColumnCreate response',
|
|
510
|
+
details: { board_id: parsed.boardId, title },
|
|
511
|
+
hint: "this is a data-integrity error in Monday's response; " +
|
|
512
|
+
'verify the response shape and update responseSchema if ' +
|
|
513
|
+
"Monday's contract has changed.",
|
|
514
|
+
});
|
|
515
|
+
// Distinguish missing-root-key (schema-drift →
|
|
516
|
+
// internal_error with schema-drift hint) from null
|
|
517
|
+
// payload (Monday returned no column → also
|
|
518
|
+
// internal_error here since create's contract is "every
|
|
519
|
+
// successful call returns a Column"). Mirrors the M15
|
|
520
|
+
// board-create / archive / delete missing-root-key vs
|
|
521
|
+
// null-payload split.
|
|
522
|
+
if (!('create_column' in data)) {
|
|
523
|
+
throw new ApiError('internal_error', `Monday's ColumnCreate response is missing the create_column root field`, {
|
|
524
|
+
details: {
|
|
525
|
+
board_id: parsed.boardId,
|
|
526
|
+
title,
|
|
527
|
+
hint: "this is a schema-drift error in Monday's GraphQL " +
|
|
528
|
+
'response; verify the mutation declaration and update ' +
|
|
529
|
+
"the response schema if Monday's contract has changed.",
|
|
530
|
+
},
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
// R45 lift (api/column-mutation-result.ts): null-payload
|
|
534
|
+
// guard + projection. Create's null path uses
|
|
535
|
+
// `internal_error` because the contract is "every
|
|
536
|
+
// successful call returns a Column"; the helper carries
|
|
537
|
+
// the agent-supplied `title` in `details` (paired with
|
|
538
|
+
// `board_id`) because the new column id doesn't exist
|
|
539
|
+
// yet on the null path.
|
|
540
|
+
const projection = projectMutationColumn({
|
|
541
|
+
raw: data.create_column,
|
|
542
|
+
errorCode: 'internal_error',
|
|
543
|
+
errorMessage: `Monday returned no column payload from create_column for board ${parsed.boardId} title ${JSON.stringify(title)}.`,
|
|
544
|
+
boardId: parsed.boardId,
|
|
545
|
+
columnIdKey: 'title',
|
|
546
|
+
columnIdValue: title,
|
|
547
|
+
});
|
|
548
|
+
return { data: projection, response: wireResponse };
|
|
549
|
+
},
|
|
550
|
+
});
|
|
551
|
+
emitMutation({
|
|
552
|
+
ctx,
|
|
553
|
+
data: projected,
|
|
554
|
+
schema: boardColumnCreateCommand.outputSchema,
|
|
555
|
+
programOpts: program.opts(),
|
|
556
|
+
warnings,
|
|
557
|
+
...toEmit(response),
|
|
558
|
+
source: 'live',
|
|
559
|
+
cacheAgeSeconds: null,
|
|
560
|
+
});
|
|
561
|
+
});
|
|
562
|
+
},
|
|
563
|
+
};
|
|
564
|
+
//# sourceMappingURL=column-create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column-create.js","sourceRoot":"","sources":["../../../src/commands/board/column-create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `monday board column-delete <bid> <cid> --yes [--dry-run]` — delete
|
|
3
|
+
* a column on a board (`cli-design.md` §4.3 line 1098, `v0.2-plan.md`
|
|
4
|
+
* §3 M16).
|
|
5
|
+
*
|
|
6
|
+
* **Confirmation gate** (cli-design §3.1 #7 + §10.2). `--yes` is
|
|
7
|
+
* mandatory for the live path; without `--yes` AND without
|
|
8
|
+
* `--dry-run` the command fails fast with `confirmation_required`
|
|
9
|
+
* (exit 1) carrying `details.{board_id, column_id, hint}` per
|
|
10
|
+
* cli-design §6.5 single-target shape — the wire signature
|
|
11
|
+
* (`delete_column(board_id, column_id)`) is two-tuple, so both ids
|
|
12
|
+
* echo. Same gate-before-`resolveClient()` ordering as `item delete`
|
|
13
|
+
* / `workspace delete` / `board delete`. R29 helper count: 7 → 8
|
|
14
|
+
* (column-delete is the 8th consumer of `enforceDestructiveGate`,
|
|
15
|
+
* the first to use the new `extraDetails` slot for two-tuple
|
|
16
|
+
* destructive verbs).
|
|
17
|
+
*
|
|
18
|
+
* **`--dry-run` bypasses the confirmation gate** per cli-design §3.1
|
|
19
|
+
* #7 — dry-run is non-executing and the gate is for live destructive
|
|
20
|
+
* writes only. `column-delete <bid> <cid> --dry-run` without
|
|
21
|
+
* `--yes` emits the dry-run envelope with `meta.source: 'none'`,
|
|
22
|
+
* matching `item delete` / `update delete` / `workspace delete` /
|
|
23
|
+
* `board delete` precedent.
|
|
24
|
+
*
|
|
25
|
+
* **Wire shape.** Single round-trip via `delete_column(board_id,
|
|
26
|
+
* column_id)`. Monday returns `Maybe<Column>` (the column's last-
|
|
27
|
+
* look projection before deletion). A null result surfaces as
|
|
28
|
+
* `not_found` — the standard "id was bogus / already deleted"
|
|
29
|
+
* mapping.
|
|
30
|
+
*
|
|
31
|
+
* **Dry-run shape** per cli-design §6.4 column-delete variant:
|
|
32
|
+
* minimal `{operation: "delete_column", board_id, column_id}`. No
|
|
33
|
+
* preflight read fires; the dry-run is purely argv-derived.
|
|
34
|
+
* `meta.source: 'none'`. Mirrors the destructive-no-read pattern
|
|
35
|
+
* uniform across `item delete` / `update delete` / `workspace
|
|
36
|
+
* delete` / `board delete`.
|
|
37
|
+
*
|
|
38
|
+
* **Eager invalidation** (cli-design §8 single-leg call-site
|
|
39
|
+
* contract). On success, calls `invalidateBoard(boardId)` AFTER the
|
|
40
|
+
* success envelope's `data` projection completes; ordered BEFORE
|
|
41
|
+
* `emitMutation` so a cache-unlink failure surfaces through the
|
|
42
|
+
* runner's catch-all rather than double-emitting after a success
|
|
43
|
+
* envelope hit stdout. Skipped on the error path (a failed call
|
|
44
|
+
* didn't change board state).
|
|
45
|
+
*
|
|
46
|
+
* **Idempotent: false.** Re-deleting an already-deleted column
|
|
47
|
+
* surfaces `not_found` past the first call — the wire-level
|
|
48
|
+
* converges, but the CLI-level surfaces a different envelope.
|
|
49
|
+
* Mirrors `item delete` / `update delete` / `workspace delete` /
|
|
50
|
+
* `board delete` rationale.
|
|
51
|
+
*
|
|
52
|
+
* **Note on column-archive divergence.** Monday's API has no
|
|
53
|
+
* `archive_column` mutation — column lifecycle is delete-only,
|
|
54
|
+
* mirroring the underlying API surface. The CLI doesn't surface
|
|
55
|
+
* a `column-archive` verb (cli-design §4.3 column-delete line ~1166).
|
|
56
|
+
*/
|
|
57
|
+
import { z } from 'zod';
|
|
58
|
+
import { type CommandModule } from '../types.js';
|
|
59
|
+
import { type ColumnProjection } from '../../api/column-mutation-result.js';
|
|
60
|
+
export declare const boardColumnDeleteOutputSchema: z.ZodObject<{
|
|
61
|
+
id: z.ZodString;
|
|
62
|
+
title: z.ZodString;
|
|
63
|
+
type: z.ZodString;
|
|
64
|
+
description: z.ZodNullable<z.ZodString>;
|
|
65
|
+
archived: z.ZodNullable<z.ZodBoolean>;
|
|
66
|
+
settings_str: z.ZodNullable<z.ZodString>;
|
|
67
|
+
width: z.ZodNullable<z.ZodNumber>;
|
|
68
|
+
}, z.core.$strict>;
|
|
69
|
+
export type BoardColumnDeleteOutput = ColumnProjection;
|
|
70
|
+
declare const inputSchema: z.ZodObject<{
|
|
71
|
+
boardId: z.core.$ZodBranded<z.ZodString, "BoardId", "out">;
|
|
72
|
+
columnId: z.core.$ZodBranded<z.ZodString, "ColumnId", "out">;
|
|
73
|
+
}, z.core.$strict>;
|
|
74
|
+
export declare const boardColumnDeleteCommand: CommandModule<z.infer<typeof inputSchema>, BoardColumnDeleteOutput>;
|
|
75
|
+
export {};
|
|
76
|
+
//# sourceMappingURL=column-delete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column-delete.d.ts","sourceRoot":"","sources":["../../../src/commands/board/column-delete.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAUnE,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,qCAAqC,CAAC;AAU7C,eAAO,MAAM,6BAA6B;;;;;;;;kBAAyB,CAAC;AACpE,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,CAAC;AAEvD,QAAA,MAAM,WAAW;;;kBAUN,CAAC;AAQZ,eAAO,MAAM,wBAAwB,EAAE,aAAa,CAClD,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,EAC3B,uBAAuB,CAyJxB,CAAC"}
|