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,607 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dry-run engine (`cli-design.md` §6.4 + §5.3, `v0.1-plan.md` §3 M5a).
|
|
3
|
+
*
|
|
4
|
+
* Single export `planChanges` — given a board / item / set-pair list,
|
|
5
|
+
* runs every read-side resolution that the matching live mutation
|
|
6
|
+
* would run (column lookup, value translation, current-state read)
|
|
7
|
+
* and emits a `planned_changes[]` array byte-compatible with the
|
|
8
|
+
* `cli-design.md` §6.4 sample.
|
|
9
|
+
*
|
|
10
|
+
* **Why a separate module.** column-values.ts owns *translation*;
|
|
11
|
+
* resolution lives in columns.ts; current-state reads live in the
|
|
12
|
+
* item GraphQL queries spread across the command surface. The
|
|
13
|
+
* dry-run engine is the unique spot that orchestrates all three for
|
|
14
|
+
* a planned-but-unsent mutation. Keeping it in its own module means
|
|
15
|
+
* M5b's three command surfaces (`item set` / `item clear` /
|
|
16
|
+
* `item update`) each call `planChanges(...)` once when `--dry-run`
|
|
17
|
+
* is set, rather than reimplementing the orchestration in three
|
|
18
|
+
* places.
|
|
19
|
+
*
|
|
20
|
+
* **All-or-nothing semantics.** Any resolution failure — unknown
|
|
21
|
+
* column, ambiguous column, unsupported type, unknown email — fails
|
|
22
|
+
* the entire batch. cli-design §6.4 prescribes the dry-run envelope
|
|
23
|
+
* as a single `data: null` + populated `planned_changes` shape;
|
|
24
|
+
* surfacing partial plans would force the caller to second-guess
|
|
25
|
+
* which entries actually planned versus which silently dropped.
|
|
26
|
+
* The engine collects every `--set` pair before translating, but
|
|
27
|
+
* the first failing pair short-circuits — the typed error bubbles
|
|
28
|
+
* with whatever `details` the underlying resolver / translator
|
|
29
|
+
* built.
|
|
30
|
+
*
|
|
31
|
+
* **Mutation kind selection** (`change_simple_column_value` /
|
|
32
|
+
* `change_column_value` / `change_multiple_column_values`) goes
|
|
33
|
+
* through `selectMutation`, so the dry-run engine and the
|
|
34
|
+
* eventually-live M5b mutation pick the same wire shape from the
|
|
35
|
+
* same source of truth. The `operation` field in each
|
|
36
|
+
* `PlannedChange` reflects what the live call would issue.
|
|
37
|
+
*
|
|
38
|
+
* **Resolved-from echoes.** Two slots, one per kind:
|
|
39
|
+
* - **Date** — relative tokens carry a `DateResolution`
|
|
40
|
+
* (`{input, timezone, now}`) on the translated value. Rendered
|
|
41
|
+
* as `details.resolved_from` on the diff cell.
|
|
42
|
+
* - **People** — the people translator emits a
|
|
43
|
+
* `PeopleResolution` (`{tokens: [{input, resolved_id}, ...]}`)
|
|
44
|
+
* pairing each input token with its resolved Monday user ID.
|
|
45
|
+
* Rendered as `details.resolved_from` on people diff cells.
|
|
46
|
+
*
|
|
47
|
+
* Other types (status / dropdown / text / long_text / numbers and
|
|
48
|
+
* non-relative dates) emit no `details` block — there's nothing to
|
|
49
|
+
* resolve beyond what's already visible in the wire payload.
|
|
50
|
+
*/
|
|
51
|
+
import { ApiError } from '../utils/errors.js';
|
|
52
|
+
import { resolveColumnWithRefresh, } from './columns.js';
|
|
53
|
+
import { parseColumnValue, } from './item-projection.js';
|
|
54
|
+
import { ITEM_FIELDS_FRAGMENT, parseRawItem, } from './item-helpers.js';
|
|
55
|
+
import { bundleColumnValues, selectMutation, translateColumnClear, } from './column-values.js';
|
|
56
|
+
import { foldResolverWarningsIntoError } from './resolver-error-fold.js';
|
|
57
|
+
import { mergeSource } from './source-aggregator.js';
|
|
58
|
+
import { buildColumnArchivedError, resolveAndTranslate, } from './resolution-pass.js';
|
|
59
|
+
/**
|
|
60
|
+
* Resolves every `--set` pair, fetches the item's current state,
|
|
61
|
+
* translates each value, and assembles a single `PlannedChange`
|
|
62
|
+
* (v0.1 — one item per call). All-or-nothing: any resolution
|
|
63
|
+
* failure throws the typed error directly so the command layer
|
|
64
|
+
* surfaces it through the runner's normal error path.
|
|
65
|
+
*/
|
|
66
|
+
export const planChanges = async (inputs) => {
|
|
67
|
+
const rawEntries = inputs.rawEntries ?? [];
|
|
68
|
+
if (inputs.setEntries.length === 0 &&
|
|
69
|
+
rawEntries.length === 0 &&
|
|
70
|
+
inputs.nameChange === undefined) {
|
|
71
|
+
// Defensive — the command layer is supposed to reject the
|
|
72
|
+
// no-`--set`-and-no-`--set-raw`-and-no-`--name` case before reaching
|
|
73
|
+
// the engine. Surfacing as internal_error rather than usage_error
|
|
74
|
+
// because reaching this path is a wiring bug, not a user fault.
|
|
75
|
+
throw new ApiError('internal_error', 'planChanges called with zero --set entries, zero --set-raw entries, ' +
|
|
76
|
+
'and no --name change; the command layer should reject the empty ' +
|
|
77
|
+
'case before invoking the dry-run engine.', { details: { board_id: inputs.boardId, item_id: inputs.itemId } });
|
|
78
|
+
}
|
|
79
|
+
// Three-pass column resolution + translation per cli-design §5.3
|
|
80
|
+
// — see api/resolution-pass.ts (R20 lift).
|
|
81
|
+
const resolution = await resolveAndTranslate({
|
|
82
|
+
client: inputs.client,
|
|
83
|
+
boardId: inputs.boardId,
|
|
84
|
+
setEntries: inputs.setEntries,
|
|
85
|
+
rawEntries,
|
|
86
|
+
...(inputs.dateResolution === undefined
|
|
87
|
+
? {}
|
|
88
|
+
: { dateResolution: inputs.dateResolution }),
|
|
89
|
+
...(inputs.peopleResolution === undefined
|
|
90
|
+
? {}
|
|
91
|
+
: { peopleResolution: inputs.peopleResolution }),
|
|
92
|
+
...(inputs.env === undefined ? {} : { env: inputs.env }),
|
|
93
|
+
...(inputs.noCache === undefined ? {} : { noCache: inputs.noCache }),
|
|
94
|
+
});
|
|
95
|
+
const warnings = [...resolution.warnings];
|
|
96
|
+
const resolvedIds = resolution.resolvedIds;
|
|
97
|
+
let aggregateSource = resolution.source;
|
|
98
|
+
const aggregateCacheAge = resolution.cacheAgeSeconds;
|
|
99
|
+
// 2) Fetch item current state. The query mirrors `item get`'s
|
|
100
|
+
// shape — board/group/columns inline — because the dry-run
|
|
101
|
+
// diff key is the resolved column ID (not the title) and we
|
|
102
|
+
// need the current `value` per column.
|
|
103
|
+
const itemRead = await fetchItem(inputs.client, inputs.itemId);
|
|
104
|
+
// Item read is always live in v0.1; mark aggregate accordingly.
|
|
105
|
+
aggregateSource = mergeSource(aggregateSource, 'live');
|
|
106
|
+
if (itemRead.boardId !== null && itemRead.boardId !== inputs.boardId) {
|
|
107
|
+
// Defensive: caller's `boardId` doesn't match the item's actual
|
|
108
|
+
// home board. Could indicate a stale `--board` override or a
|
|
109
|
+
// wrong-tenant cross-call. Surface as `usage_error` (caller can
|
|
110
|
+
// fix) rather than `internal_error`.
|
|
111
|
+
throw new ApiError('usage_error', `Item ${inputs.itemId} lives on board ${itemRead.boardId} but the ` +
|
|
112
|
+
`dry-run was issued against board ${inputs.boardId}. Re-run ` +
|
|
113
|
+
`with the correct --board, or omit --board to let the CLI ` +
|
|
114
|
+
`look it up.`, {
|
|
115
|
+
details: {
|
|
116
|
+
item_id: inputs.itemId,
|
|
117
|
+
item_board_id: itemRead.boardId,
|
|
118
|
+
requested_board_id: inputs.boardId,
|
|
119
|
+
},
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
// 3) Pick the mutation kind FIRST. `selectMutation` owns the
|
|
123
|
+
// long_text re-wrap (`{text: <value>}` inside multi vs bare
|
|
124
|
+
// string in single) per cli-design §5.3 step 5; the dry-run
|
|
125
|
+
// diff `to` should reflect the *actual* wire shape that would
|
|
126
|
+
// be sent. Building diff cells before selectMutation would
|
|
127
|
+
// mis-render long_text in multi as a bare string. The
|
|
128
|
+
// `translated` array preserves argv order: --set entries first
|
|
129
|
+
// then --set-raw, both within their argv order. Pinned by
|
|
130
|
+
// single-mutation and multi-mutation snapshots.
|
|
131
|
+
const orderedTranslated = resolution.translated;
|
|
132
|
+
// When `--name <n>` is present, prepend a synthetic translated
|
|
133
|
+
// value so `selectMutation` handles bundling uniformly: name-only
|
|
134
|
+
// → `change_simple_column_value(column_id: "name", ...)`; name +
|
|
135
|
+
// columns → `change_multiple_column_values` with name as a key.
|
|
136
|
+
const allTranslated = inputs.nameChange === undefined
|
|
137
|
+
? orderedTranslated
|
|
138
|
+
: [buildNameTranslatedValue(inputs.nameChange), ...orderedTranslated];
|
|
139
|
+
const mutation = selectMutation(allTranslated);
|
|
140
|
+
const operation = mutation.kind;
|
|
141
|
+
// 4) Build diff cells per resolved column, projecting `to` from
|
|
142
|
+
// the selected mutation's wire shape. For single mutations
|
|
143
|
+
// the projection is identity; for multi the long_text re-wrap
|
|
144
|
+
// surfaces in the diff as it would on the wire. Real columns
|
|
145
|
+
// only — the synthetic `name` entry, when present, lands in
|
|
146
|
+
// `diff.name` separately so the `from` side reads the item's
|
|
147
|
+
// `name` field (not a column_values entry).
|
|
148
|
+
const diff = {};
|
|
149
|
+
for (const translated of orderedTranslated) {
|
|
150
|
+
const wireTo = projectWireTo(translated, mutation);
|
|
151
|
+
diff[translated.columnId] = buildDiffCell(translated, wireTo, itemRead.byColumnId.get(translated.columnId));
|
|
152
|
+
}
|
|
153
|
+
if (inputs.nameChange !== undefined) {
|
|
154
|
+
// Synthetic `name` diff cell. The `from` side reads the item's
|
|
155
|
+
// current `name` field (always populated in Monday). No
|
|
156
|
+
// resolver echo since `name` doesn't go through the column
|
|
157
|
+
// translator's date / people paths.
|
|
158
|
+
diff.name = {
|
|
159
|
+
from: itemRead.item.name,
|
|
160
|
+
to: inputs.nameChange,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
const plannedChange = {
|
|
164
|
+
operation,
|
|
165
|
+
board_id: inputs.boardId,
|
|
166
|
+
item_id: inputs.itemId,
|
|
167
|
+
resolved_ids: resolvedIds,
|
|
168
|
+
diff,
|
|
169
|
+
};
|
|
170
|
+
return {
|
|
171
|
+
plannedChanges: [plannedChange],
|
|
172
|
+
// aggregateSource has been merged at least twice by this point
|
|
173
|
+
// (column + item legs) because setEntries.length > 0 was enforced
|
|
174
|
+
// at the top, and the assignment threads through `mergeSource`
|
|
175
|
+
// which can never return undefined — TS narrows accordingly.
|
|
176
|
+
source: aggregateSource,
|
|
177
|
+
cacheAgeSeconds: aggregateCacheAge,
|
|
178
|
+
warnings,
|
|
179
|
+
};
|
|
180
|
+
};
|
|
181
|
+
/**
|
|
182
|
+
* `archived` is a nullable boolean on Monday's column shape — `null`
|
|
183
|
+
* means "no archive flag set", `false` means "explicitly active",
|
|
184
|
+
* `true` means archived. Treat any truthy value as archived; `null`
|
|
185
|
+
* / `false` / `undefined` all flow through.
|
|
186
|
+
*/
|
|
187
|
+
const isArchivedColumn = (column) => column.archived === true;
|
|
188
|
+
/**
|
|
189
|
+
* Builds a synthetic `TranslatedColumnValue` for a `--name <n>`
|
|
190
|
+
* rename. `selectMutation` then handles bundling uniformly: if it's
|
|
191
|
+
* the only entry → `change_simple_column_value(column_id: "name",
|
|
192
|
+
* value: <n>)`; if there are columns alongside → roll into
|
|
193
|
+
* `change_multiple_column_values` with `name` as a key.
|
|
194
|
+
*
|
|
195
|
+
* **The `name` white lie.** "name" isn't a column on Monday's
|
|
196
|
+
* `board.columns` surface — it's the item's top-level field. We
|
|
197
|
+
* tag the synthetic value with `columnType: 'text'` (closest
|
|
198
|
+
* analog) so `projectForMulti`'s `long_text`-rewrap branch isn't
|
|
199
|
+
* accidentally triggered. The resulting wire shape is correct
|
|
200
|
+
* because Monday's `change_*_column_value` mutations accept
|
|
201
|
+
* `column_id: "name"` with a bare string regardless of which
|
|
202
|
+
* mutation kind is used.
|
|
203
|
+
*/
|
|
204
|
+
const buildNameTranslatedValue = (nameChange) => ({
|
|
205
|
+
columnId: 'name',
|
|
206
|
+
columnType: 'text',
|
|
207
|
+
rawInput: nameChange,
|
|
208
|
+
payload: { format: 'simple', value: nameChange },
|
|
209
|
+
resolvedFrom: null,
|
|
210
|
+
peopleResolution: null,
|
|
211
|
+
});
|
|
212
|
+
/**
|
|
213
|
+
* Single-column clear-mode dry-run. cli-design §4.3 ships `item clear`
|
|
214
|
+
* as a single-column-only verb (no `--where` bulk path; that's
|
|
215
|
+
* `item update`'s territory), so the engine doesn't need a
|
|
216
|
+
* setEntries-style multi-token shape — one token in, one
|
|
217
|
+
* `PlannedChange` out. Reuses the same column-resolution +
|
|
218
|
+
* archived-detection + item-state-read machinery as `planChanges`,
|
|
219
|
+
* routed through `translateColumnClear` for the per-type clear
|
|
220
|
+
* payload.
|
|
221
|
+
*
|
|
222
|
+
* **`from` / `to` shape.** Same `DiffCell` contract as
|
|
223
|
+
* `planChanges` — the `from` side decodes the current Monday cell
|
|
224
|
+
* value (or `null` for empty cells); the `to` side is the wire
|
|
225
|
+
* payload the live mutation would send (`""` for simple types, `{}`
|
|
226
|
+
* for rich types). cli-design §6.4's diff-cell shape is invariant
|
|
227
|
+
* across set / clear.
|
|
228
|
+
*/
|
|
229
|
+
export const planClear = async (inputs) => {
|
|
230
|
+
const warnings = [];
|
|
231
|
+
const resolution = await resolveColumnWithRefresh({
|
|
232
|
+
client: inputs.client,
|
|
233
|
+
boardId: inputs.boardId,
|
|
234
|
+
token: inputs.token,
|
|
235
|
+
includeArchived: true,
|
|
236
|
+
...(inputs.env === undefined ? {} : { env: inputs.env }),
|
|
237
|
+
...(inputs.noCache === undefined ? {} : { noCache: inputs.noCache }),
|
|
238
|
+
});
|
|
239
|
+
warnings.push(...resolution.warnings);
|
|
240
|
+
if (isArchivedColumn(resolution.match.column)) {
|
|
241
|
+
throw foldResolverWarningsIntoError(buildColumnArchivedError({
|
|
242
|
+
columnId: resolution.match.column.id,
|
|
243
|
+
columnTitle: resolution.match.column.title,
|
|
244
|
+
columnType: resolution.match.column.type,
|
|
245
|
+
boardId: inputs.boardId,
|
|
246
|
+
}), resolution.warnings);
|
|
247
|
+
}
|
|
248
|
+
const translated = translateColumnClear({
|
|
249
|
+
id: resolution.match.column.id,
|
|
250
|
+
type: resolution.match.column.type,
|
|
251
|
+
});
|
|
252
|
+
const itemRead = await fetchItem(inputs.client, inputs.itemId);
|
|
253
|
+
let aggregateSource = mergeSource(resolution.source, 'live');
|
|
254
|
+
if (itemRead.boardId !== null && itemRead.boardId !== inputs.boardId) {
|
|
255
|
+
throw new ApiError('usage_error', `Item ${inputs.itemId} lives on board ${itemRead.boardId} but the ` +
|
|
256
|
+
`dry-run was issued against board ${inputs.boardId}. Re-run ` +
|
|
257
|
+
`with the correct --board, or omit --board to let the CLI ` +
|
|
258
|
+
`look it up.`, {
|
|
259
|
+
details: {
|
|
260
|
+
item_id: inputs.itemId,
|
|
261
|
+
item_board_id: itemRead.boardId,
|
|
262
|
+
requested_board_id: inputs.boardId,
|
|
263
|
+
},
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
const mutation = selectMutation([translated]);
|
|
267
|
+
const operation = mutation.kind;
|
|
268
|
+
const wireTo = projectWireTo(translated, mutation);
|
|
269
|
+
const diffCell = buildDiffCell(translated, wireTo, itemRead.byColumnId.get(translated.columnId));
|
|
270
|
+
const plannedChange = {
|
|
271
|
+
operation,
|
|
272
|
+
board_id: inputs.boardId,
|
|
273
|
+
item_id: inputs.itemId,
|
|
274
|
+
resolved_ids: { [inputs.token]: resolution.match.column.id },
|
|
275
|
+
diff: { [translated.columnId]: diffCell },
|
|
276
|
+
};
|
|
277
|
+
// Item read is always live; aggregate source folds the resolution's
|
|
278
|
+
// source with `live`. `mergeSource` treats `live + live → live`,
|
|
279
|
+
// `cache + live → mixed`, `mixed → mixed`.
|
|
280
|
+
aggregateSource = mergeSource(aggregateSource, 'live');
|
|
281
|
+
return {
|
|
282
|
+
plannedChanges: [plannedChange],
|
|
283
|
+
source: aggregateSource,
|
|
284
|
+
cacheAgeSeconds: resolution.cacheAgeSeconds,
|
|
285
|
+
warnings,
|
|
286
|
+
};
|
|
287
|
+
};
|
|
288
|
+
/**
|
|
289
|
+
* Resolves every `--set` / `--set-raw` token, translates each value,
|
|
290
|
+
* and assembles a single `CreatePlannedChange`. **No item-state read**
|
|
291
|
+
* — the item doesn't exist yet, so every diff cell's `from` is `null`.
|
|
292
|
+
*
|
|
293
|
+
* **All-or-nothing semantics** (same as `planChanges`). Any resolution
|
|
294
|
+
* failure (`column_not_found` / `ambiguous_column` / `column_archived`
|
|
295
|
+
* / `unsupported_column_type` / `user_not_found` / duplicate token /
|
|
296
|
+
* duplicate resolved id) aborts before any further work.
|
|
297
|
+
*
|
|
298
|
+
* **Diff `to` projection.** The wire shape every Monday create
|
|
299
|
+
* mutation accepts is `column_values: JSON!` — the same map shape
|
|
300
|
+
* `change_multiple_column_values` accepts. So the diff `to` side
|
|
301
|
+
* routes through `bundleColumnValues` for byte-equivalence with the
|
|
302
|
+
* live mutation's wire payload, including the `long_text` re-wrap
|
|
303
|
+
* (`{text: <value>}` inside the map).
|
|
304
|
+
*
|
|
305
|
+
* **No-`--set` path.** Create with neither `--set` nor `--set-raw`
|
|
306
|
+
* is valid (Monday accepts `create_item(item_name: ..., column_values:
|
|
307
|
+
* null)`). The function short-circuits the resolution loop and
|
|
308
|
+
* returns a `CreatePlannedChange` with empty `resolved_ids` and `diff`.
|
|
309
|
+
* `source: 'none'` because no API call fired.
|
|
310
|
+
*/
|
|
311
|
+
export const planCreate = async (inputs) => {
|
|
312
|
+
const rawEntries = inputs.rawEntries ?? [];
|
|
313
|
+
// No-set short-circuit. Returns the create payload without any
|
|
314
|
+
// resolution / translation / API leg. Source is 'none' because
|
|
315
|
+
// nothing fired. The dry-run preview is just "name + placement".
|
|
316
|
+
if (inputs.setEntries.length === 0 && rawEntries.length === 0) {
|
|
317
|
+
return {
|
|
318
|
+
plannedChanges: [buildCreatePlannedChange(inputs, {}, {})],
|
|
319
|
+
source: 'none',
|
|
320
|
+
cacheAgeSeconds: null,
|
|
321
|
+
warnings: [],
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
// The board to resolve columns against — top-level `boardId` for
|
|
325
|
+
// `create_item`, `subitemsBoardId` for `create_subitem`.
|
|
326
|
+
const resolveBoardId = inputs.mode.kind === 'item' ? inputs.mode.boardId : inputs.mode.subitemsBoardId;
|
|
327
|
+
// Three-pass column resolution + translation per cli-design §5.3
|
|
328
|
+
// — see api/resolution-pass.ts (R20 lift).
|
|
329
|
+
const resolution = await resolveAndTranslate({
|
|
330
|
+
client: inputs.client,
|
|
331
|
+
boardId: resolveBoardId,
|
|
332
|
+
setEntries: inputs.setEntries,
|
|
333
|
+
rawEntries,
|
|
334
|
+
...(inputs.dateResolution === undefined
|
|
335
|
+
? {}
|
|
336
|
+
: { dateResolution: inputs.dateResolution }),
|
|
337
|
+
...(inputs.peopleResolution === undefined
|
|
338
|
+
? {}
|
|
339
|
+
: { peopleResolution: inputs.peopleResolution }),
|
|
340
|
+
...(inputs.env === undefined ? {} : { env: inputs.env }),
|
|
341
|
+
...(inputs.noCache === undefined ? {} : { noCache: inputs.noCache }),
|
|
342
|
+
});
|
|
343
|
+
const orderedTranslated = resolution.translated;
|
|
344
|
+
// Bundle into the column_values map shape `create_item.column_values`
|
|
345
|
+
// accepts. Routing through `bundleColumnValues` keeps the long_text
|
|
346
|
+
// re-wrap consistent with the live mutation's wire payload.
|
|
347
|
+
const bundled = bundleColumnValues(orderedTranslated);
|
|
348
|
+
const diff = {};
|
|
349
|
+
for (const t of orderedTranslated) {
|
|
350
|
+
const wireTo = bundled[t.columnId];
|
|
351
|
+
/* c8 ignore next 4 — defensive: bundleColumnValues maps every
|
|
352
|
+
translated value into the bundle by columnId. */
|
|
353
|
+
if (wireTo === undefined) {
|
|
354
|
+
throw new ApiError('internal_error', 'planCreate: lost bundled entry');
|
|
355
|
+
}
|
|
356
|
+
diff[t.columnId] = buildCreateDiffCell(t, wireTo);
|
|
357
|
+
}
|
|
358
|
+
return {
|
|
359
|
+
plannedChanges: [buildCreatePlannedChange(inputs, resolution.resolvedIds, diff)],
|
|
360
|
+
/* c8 ignore next — defensive: the early-return at the top
|
|
361
|
+
handles the no-set case explicitly, so by this line at least
|
|
362
|
+
one resolution leg has populated `source`. The `?? 'none'`
|
|
363
|
+
keeps the type-narrow tidy without surfacing `undefined`. */
|
|
364
|
+
source: resolution.source ?? 'none',
|
|
365
|
+
cacheAgeSeconds: resolution.cacheAgeSeconds,
|
|
366
|
+
warnings: resolution.warnings,
|
|
367
|
+
};
|
|
368
|
+
};
|
|
369
|
+
/**
|
|
370
|
+
* Builds the create planned-change envelope per cli-design §6.4
|
|
371
|
+
* "Item-create shape" (and its "Subitem variant" sibling). Optional
|
|
372
|
+
* top-level slots appear only when populated; agents read the shape
|
|
373
|
+
* by switching on `operation` and the presence of the optional keys
|
|
374
|
+
* (`board_id` / `parent_item_id` / `group_id` / `position`).
|
|
375
|
+
*
|
|
376
|
+
* Field order matches the cli-design sample for byte-stable JSON
|
|
377
|
+
* output: `operation`, `board_id?` (item only), `parent_item_id?`
|
|
378
|
+
* (subitem only), `name`, `group_id?`, `position?`, `resolved_ids`,
|
|
379
|
+
* `diff`.
|
|
380
|
+
*/
|
|
381
|
+
const buildCreatePlannedChange = (inputs, resolvedIds, diff) => {
|
|
382
|
+
if (inputs.mode.kind === 'item') {
|
|
383
|
+
const change = {
|
|
384
|
+
operation: 'create_item',
|
|
385
|
+
board_id: inputs.mode.boardId,
|
|
386
|
+
name: inputs.name,
|
|
387
|
+
};
|
|
388
|
+
if (inputs.mode.groupId !== undefined) {
|
|
389
|
+
change.group_id = inputs.mode.groupId;
|
|
390
|
+
}
|
|
391
|
+
if (inputs.mode.position !== undefined) {
|
|
392
|
+
change.position = {
|
|
393
|
+
method: inputs.mode.position.method,
|
|
394
|
+
relative_to: inputs.mode.position.relativeTo,
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
change.resolved_ids = resolvedIds;
|
|
398
|
+
change.diff = diff;
|
|
399
|
+
return change;
|
|
400
|
+
}
|
|
401
|
+
// subitem
|
|
402
|
+
const change = {
|
|
403
|
+
operation: 'create_subitem',
|
|
404
|
+
parent_item_id: inputs.mode.parentItemId,
|
|
405
|
+
name: inputs.name,
|
|
406
|
+
resolved_ids: resolvedIds,
|
|
407
|
+
diff,
|
|
408
|
+
};
|
|
409
|
+
return change;
|
|
410
|
+
};
|
|
411
|
+
/**
|
|
412
|
+
* Builds one diff cell for a create's planned change. `from` is
|
|
413
|
+
* always `null` (item doesn't exist yet); `to` is the bundled wire
|
|
414
|
+
* value. Resolver echoes (`details.resolved_from`) for date / people
|
|
415
|
+
* inputs surface the same way `buildDiffCell` handles them — exclusivity
|
|
416
|
+
* pins the same internal_error guard so a future translator setting
|
|
417
|
+
* both echoes is loud, not silent.
|
|
418
|
+
*/
|
|
419
|
+
const buildCreateDiffCell = (translated, to) => {
|
|
420
|
+
if (translated.resolvedFrom !== null && translated.peopleResolution !== null) {
|
|
421
|
+
throw new ApiError('internal_error', `Translator emitted both resolvedFrom and peopleResolution for ` +
|
|
422
|
+
`column "${translated.columnId}" (type "${translated.columnType}"). ` +
|
|
423
|
+
`These slots are mutually exclusive in v0.1; a translator setting ` +
|
|
424
|
+
`both is a wiring bug.`, {
|
|
425
|
+
details: {
|
|
426
|
+
column_id: translated.columnId,
|
|
427
|
+
column_type: translated.columnType,
|
|
428
|
+
},
|
|
429
|
+
});
|
|
430
|
+
}
|
|
431
|
+
if (translated.resolvedFrom !== null) {
|
|
432
|
+
return {
|
|
433
|
+
from: null,
|
|
434
|
+
to,
|
|
435
|
+
details: {
|
|
436
|
+
resolved_from: {
|
|
437
|
+
input: translated.resolvedFrom.input,
|
|
438
|
+
timezone: translated.resolvedFrom.timezone,
|
|
439
|
+
now: translated.resolvedFrom.now,
|
|
440
|
+
},
|
|
441
|
+
},
|
|
442
|
+
};
|
|
443
|
+
}
|
|
444
|
+
if (translated.peopleResolution !== null) {
|
|
445
|
+
return {
|
|
446
|
+
from: null,
|
|
447
|
+
to,
|
|
448
|
+
details: {
|
|
449
|
+
resolved_from: {
|
|
450
|
+
tokens: translated.peopleResolution.tokens.map((t) => ({
|
|
451
|
+
input: t.input,
|
|
452
|
+
resolved_id: t.resolved_id,
|
|
453
|
+
})),
|
|
454
|
+
},
|
|
455
|
+
},
|
|
456
|
+
};
|
|
457
|
+
}
|
|
458
|
+
return { from: null, to };
|
|
459
|
+
};
|
|
460
|
+
/**
|
|
461
|
+
* Projects the wire-side `to` value for a translated column,
|
|
462
|
+
* matching the actual mutation's payload exactly — including the
|
|
463
|
+
* `long_text` re-wrap that `selectMutation` applies for multi
|
|
464
|
+
* mutations. The single-mutation cases pass the translator's
|
|
465
|
+
* payload through unchanged.
|
|
466
|
+
*
|
|
467
|
+
* Why route through the selected mutation: `change_simple_column_value`
|
|
468
|
+
* accepts a bare string for `long_text`, but
|
|
469
|
+
* `change_multiple_column_values` requires `{text: <value>}` for
|
|
470
|
+
* the same type (cli-design §5.3 step 5 spec gap, pinned via
|
|
471
|
+
* fixture in column-values.test.ts). The dry-run diff `to` should
|
|
472
|
+
* reflect the wire shape the live mutation would actually send;
|
|
473
|
+
* routing through `selectMutation`'s output keeps both sides
|
|
474
|
+
* consistent without the dry-run engine duplicating the re-wrap.
|
|
475
|
+
*/
|
|
476
|
+
const projectWireTo = (translated, mutation) => {
|
|
477
|
+
if (mutation.kind === 'change_multiple_column_values') {
|
|
478
|
+
const value = mutation.columnValues[translated.columnId];
|
|
479
|
+
/* c8 ignore next 3 — defensive: every translated column lands
|
|
480
|
+
in the multi map by construction in selectMutation. */
|
|
481
|
+
if (value === undefined) {
|
|
482
|
+
throw new ApiError('internal_error', 'projectWireTo: lost multi entry');
|
|
483
|
+
}
|
|
484
|
+
return value;
|
|
485
|
+
}
|
|
486
|
+
// Single-mutation path: payload's value is the wire value.
|
|
487
|
+
return translated.payload.value;
|
|
488
|
+
};
|
|
489
|
+
/**
|
|
490
|
+
* Builds one diff cell. `from` decodes the current Monday value (or
|
|
491
|
+
* `null` for empty cells); `to` is the wire-side projection
|
|
492
|
+
* (`projectWireTo` already applied the long_text re-wrap for
|
|
493
|
+
* multi). `details.resolved_from` populates only when the
|
|
494
|
+
* translator emitted an echo.
|
|
495
|
+
*/
|
|
496
|
+
const buildDiffCell = (translated, to, current) => {
|
|
497
|
+
const from = current === undefined ? null : decodeFrom(current);
|
|
498
|
+
// Echo-slot exclusivity invariant. Today's translators populate
|
|
499
|
+
// at most one of resolvedFrom (date) / peopleResolution (people).
|
|
500
|
+
// A future translator that mistakenly sets both would silently
|
|
501
|
+
// collapse to the date echo (the first branch wins below); fire
|
|
502
|
+
// an internal_error so the regression is loud, not silent.
|
|
503
|
+
// Codex pass-2 finding F3.
|
|
504
|
+
if (translated.resolvedFrom !== null && translated.peopleResolution !== null) {
|
|
505
|
+
throw new ApiError('internal_error', `Translator emitted both resolvedFrom and peopleResolution for ` +
|
|
506
|
+
`column "${translated.columnId}" (type "${translated.columnType}"). ` +
|
|
507
|
+
`These slots are mutually exclusive in v0.1; a translator setting ` +
|
|
508
|
+
`both is a wiring bug.`, {
|
|
509
|
+
details: {
|
|
510
|
+
column_id: translated.columnId,
|
|
511
|
+
column_type: translated.columnType,
|
|
512
|
+
},
|
|
513
|
+
});
|
|
514
|
+
}
|
|
515
|
+
if (translated.resolvedFrom !== null) {
|
|
516
|
+
return {
|
|
517
|
+
from,
|
|
518
|
+
to,
|
|
519
|
+
details: {
|
|
520
|
+
resolved_from: {
|
|
521
|
+
input: translated.resolvedFrom.input,
|
|
522
|
+
timezone: translated.resolvedFrom.timezone,
|
|
523
|
+
now: translated.resolvedFrom.now,
|
|
524
|
+
},
|
|
525
|
+
},
|
|
526
|
+
};
|
|
527
|
+
}
|
|
528
|
+
if (translated.peopleResolution !== null) {
|
|
529
|
+
return {
|
|
530
|
+
from,
|
|
531
|
+
to,
|
|
532
|
+
details: {
|
|
533
|
+
resolved_from: {
|
|
534
|
+
tokens: translated.peopleResolution.tokens.map((t) => ({
|
|
535
|
+
input: t.input,
|
|
536
|
+
resolved_id: t.resolved_id,
|
|
537
|
+
})),
|
|
538
|
+
},
|
|
539
|
+
},
|
|
540
|
+
};
|
|
541
|
+
}
|
|
542
|
+
return { from, to };
|
|
543
|
+
};
|
|
544
|
+
/**
|
|
545
|
+
* Decodes a Monday `column_values[]` entry into the diff `from`
|
|
546
|
+
* shape. Mirrors `cli-design.md` §6.4 sample line 1213: status
|
|
547
|
+
* cells emit `{label, index}`; date emits `{date, time?}`;
|
|
548
|
+
* people emits `{personsAndTeams: [...]}`; simple types emit the
|
|
549
|
+
* `text` string verbatim.
|
|
550
|
+
*
|
|
551
|
+
* Empty cells (`value === null` or empty-string) emit `null` —
|
|
552
|
+
* matches the §6.4 sample line 1214 `from: null` for empty date.
|
|
553
|
+
*/
|
|
554
|
+
const decodeFrom = (raw) => {
|
|
555
|
+
if (raw.value === null || raw.value.length === 0) {
|
|
556
|
+
// Simple types still surface the bare `text` when present —
|
|
557
|
+
// Monday sometimes returns `text: "42"` with `value: null` for
|
|
558
|
+
// numbers / text columns. Without this branch, the diff would
|
|
559
|
+
// claim from=null for a populated cell.
|
|
560
|
+
if (raw.text !== null && raw.text.length > 0) {
|
|
561
|
+
return raw.text;
|
|
562
|
+
}
|
|
563
|
+
return null;
|
|
564
|
+
}
|
|
565
|
+
const parsed = parseColumnValue(raw.value);
|
|
566
|
+
// For status / date / people / dropdown the parsed value is a
|
|
567
|
+
// plain JSON object that's already shaped like `{label, index}`
|
|
568
|
+
// / `{date, time}` / `{personsAndTeams: [...]}` /
|
|
569
|
+
// `{ids|labels: [...]}`. For text / long_text / numbers, Monday
|
|
570
|
+
// encodes the value as a JSON-quoted string — JSON.parse returns
|
|
571
|
+
// the bare string. Either way `parsed` is a JsonValue.
|
|
572
|
+
return parsed;
|
|
573
|
+
};
|
|
574
|
+
const ITEM_DRY_RUN_QUERY = `
|
|
575
|
+
query ItemDryRunRead($ids: [ID!]!) {
|
|
576
|
+
items(ids: $ids) {
|
|
577
|
+
${ITEM_FIELDS_FRAGMENT}
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
`;
|
|
581
|
+
const fetchItem = async (client, itemId) => {
|
|
582
|
+
const response = await client.raw(ITEM_DRY_RUN_QUERY, { ids: [itemId] }, { operationName: 'ItemDryRunRead' });
|
|
583
|
+
const items = response.data.items ?? [];
|
|
584
|
+
const first = items[0];
|
|
585
|
+
if (first === undefined || first === null) {
|
|
586
|
+
throw new ApiError('not_found', `Item ${itemId} does not exist or the token has no read access.`, { details: { item_id: itemId } });
|
|
587
|
+
}
|
|
588
|
+
// R18 parse-boundary wrap — validation.md "Never bubble raw
|
|
589
|
+
// ZodError out of a parse boundary". A malformed Monday response
|
|
590
|
+
// (schema drift, future field rename) surfaces as a typed
|
|
591
|
+
// internal_error carrying details.issues + item_id rather than a
|
|
592
|
+
// bare ZodError that loses the failing field path. Threads through
|
|
593
|
+
// the shared `parseRawItem` helper so the dry-run engine, every
|
|
594
|
+
// M4 read command, and any future M5b/M6 consumer pin the same
|
|
595
|
+
// contract via one source of truth.
|
|
596
|
+
const item = parseRawItem(first, { item_id: itemId });
|
|
597
|
+
const byColumnId = new Map();
|
|
598
|
+
for (const cv of item.column_values) {
|
|
599
|
+
byColumnId.set(cv.id, cv);
|
|
600
|
+
}
|
|
601
|
+
return {
|
|
602
|
+
item,
|
|
603
|
+
boardId: item.board?.id ?? null,
|
|
604
|
+
byColumnId,
|
|
605
|
+
};
|
|
606
|
+
};
|
|
607
|
+
//# sourceMappingURL=dry-run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dry-run.js","sourceRoot":"","sources":["../../src/api/dry-run.ts"],"names":[],"mappings":"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"}
|