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,328 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filter DSL parser (`cli-design.md` §5.5, `v0.1-plan.md` §3 M4).
|
|
3
|
+
*
|
|
4
|
+
* Two surfaces, one for each `monday item list` knob:
|
|
5
|
+
*
|
|
6
|
+
* - `--where <token><op><val>` (repeatable) → parsed against §5.5's
|
|
7
|
+
* allowlist (`=`, `!=`, `~=`, `<`, `<=`, `>`, `>=`, `:is_empty`,
|
|
8
|
+
* `:is_not_empty`) and emitted as a Monday `query_params.rules`
|
|
9
|
+
* object. Multiple `--where` flags are AND'd. Token resolution
|
|
10
|
+
* reuses the M3 column read-resolver (`api/columns.ts`) so the
|
|
11
|
+
* same NFC + case-fold rules apply across read and write surfaces.
|
|
12
|
+
*
|
|
13
|
+
* - `--filter-json <json>` is the literal Monday `query_params`
|
|
14
|
+
* object — never re-parsed. Power users / agents needing OR /
|
|
15
|
+
* nested groups / `within_last(7d)` use this. v0.1's `--where`
|
|
16
|
+
* surface is intentionally narrow; `--filter-json` is the escape
|
|
17
|
+
* hatch.
|
|
18
|
+
*
|
|
19
|
+
* `--where` and `--filter-json` are **mutually exclusive**. Combining
|
|
20
|
+
* them would either force a merge rule (extra contract surface) or
|
|
21
|
+
* silently let one win — both are worse than failing fast with a
|
|
22
|
+
* `usage_error` and asking the agent to pick.
|
|
23
|
+
*
|
|
24
|
+
* **Operator-in-title trap.** When a column title contains an
|
|
25
|
+
* operator (`Plan A=B`), the implicit-resolution path can't
|
|
26
|
+
* disambiguate — `--where Plan A=B=approved` splits on the *first*
|
|
27
|
+
* `=` per §5.3 step 2.b, so the token resolves as `Plan A` and the
|
|
28
|
+
* value is `B=approved`. This is documented behaviour, not a bug.
|
|
29
|
+
* The `title:`/`id:` prefix doesn't help here either — `parseWhereSyntax`
|
|
30
|
+
* splits on the first operator before `parseColumnTokenPrefix`
|
|
31
|
+
* sees the token, so `title:Plan A=B=approved` still cleaves at
|
|
32
|
+
* the first `=`. The supported escape hatch for operator-in-title
|
|
33
|
+
* columns is `--filter-json`, where the agent passes the literal
|
|
34
|
+
* Monday `query_params` JSON; the rule's `column_id` is unambiguous
|
|
35
|
+
* and the value carries through verbatim. Codex M4 pass-2 §4
|
|
36
|
+
* surfaced this as a documentation backfill item — logged in
|
|
37
|
+
* v0.1-plan.md §3 M4 spec-gaps. The unit suite asserts the
|
|
38
|
+
* documented split verbatim so a future "be clever about it"
|
|
39
|
+
* patch fails loudly.
|
|
40
|
+
*
|
|
41
|
+
* **`me` sugar.** Per §5.5 + §5.3, `--where owner=me` against a
|
|
42
|
+
* `people` column resolves through the directory cache to the
|
|
43
|
+
* current user's ID. The resolution is a separate `whoami` query
|
|
44
|
+
* the parser issues on demand; tests inject a stub via the
|
|
45
|
+
* `resolveMe` callback so the pure-syntax layer stays
|
|
46
|
+
* unit-testable.
|
|
47
|
+
*
|
|
48
|
+
* **Result-type meta surface (§14 M3 prophylactic).** Even though
|
|
49
|
+
* filter parsing produces no network-derived data of its own
|
|
50
|
+
* (resolution is delegated to columns.ts + a `me`-resolver
|
|
51
|
+
* callback), the result type carries `warnings` from day one. The
|
|
52
|
+
* meta-source / cache-age / complexity slots travel through the
|
|
53
|
+
* board-metadata loader the caller has already opened — surfacing
|
|
54
|
+
* them again here would be redundant.
|
|
55
|
+
*/
|
|
56
|
+
import { z } from 'zod';
|
|
57
|
+
import { ApiError, UsageError } from '../utils/errors.js';
|
|
58
|
+
import { resolveColumnsAcrossClauses } from './columns.js';
|
|
59
|
+
import { isMeToken } from './me-token.js';
|
|
60
|
+
const OPERATORS_BINARY = [
|
|
61
|
+
// Two-character operators must come before their one-character
|
|
62
|
+
// prefixes so the position-by-position scan picks the longest
|
|
63
|
+
// match at any given index.
|
|
64
|
+
{ kind: 'lower_than_or_equals', literal: '<=', arity: 'binary' },
|
|
65
|
+
{ kind: 'greater_than_or_equals', literal: '>=', arity: 'binary' },
|
|
66
|
+
{ kind: 'not_equals', literal: '!=', arity: 'binary' },
|
|
67
|
+
{ kind: 'contains_text', literal: '~=', arity: 'binary' },
|
|
68
|
+
{ kind: 'lower_than', literal: '<', arity: 'binary' },
|
|
69
|
+
{ kind: 'greater_than', literal: '>', arity: 'binary' },
|
|
70
|
+
{ kind: 'equals', literal: '=', arity: 'binary' },
|
|
71
|
+
];
|
|
72
|
+
/**
|
|
73
|
+
* Maps the AST kind to the Monday `query_params` operator name.
|
|
74
|
+
* Frozen so a future import can't mutate the table mid-process.
|
|
75
|
+
*/
|
|
76
|
+
const MONDAY_OPERATOR_NAME = Object.freeze({
|
|
77
|
+
equals: 'any_of',
|
|
78
|
+
not_equals: 'not_any_of',
|
|
79
|
+
contains_text: 'contains_text',
|
|
80
|
+
lower_than: 'lower_than',
|
|
81
|
+
lower_than_or_equals: 'lower_than_or_equals',
|
|
82
|
+
greater_than: 'greater_than',
|
|
83
|
+
greater_than_or_equals: 'greater_than_or_equals',
|
|
84
|
+
is_empty: 'is_empty',
|
|
85
|
+
is_not_empty: 'is_not_empty',
|
|
86
|
+
});
|
|
87
|
+
/**
|
|
88
|
+
* Splits one raw `--where` argument into a {@link WhereClause}.
|
|
89
|
+
*
|
|
90
|
+
* Algorithm (left-to-right, longest-match-at-position):
|
|
91
|
+
*
|
|
92
|
+
* 1. Match `:is_not_empty` / `:is_empty` suffix on the right (with
|
|
93
|
+
* `:is_not_empty` checked first so it doesn't get truncated to
|
|
94
|
+
* the shorter form).
|
|
95
|
+
* 2. Otherwise scan position-by-position from index 1 (token must
|
|
96
|
+
* be non-empty), trying each binary operator at that position.
|
|
97
|
+
* The first match wins — earliest-leftmost-with-longest-tie-break.
|
|
98
|
+
* 3. If no operator is found, raise `UsageError`.
|
|
99
|
+
*
|
|
100
|
+
* Per §5.3 step 2.b, the split happens on the *first* operator
|
|
101
|
+
* occurrence — a column title containing an operator (`Plan A=B`)
|
|
102
|
+
* needs the explicit `title:` prefix or `--filter-json` to round-trip.
|
|
103
|
+
*/
|
|
104
|
+
export const parseWhereSyntax = (raw) => {
|
|
105
|
+
const trimmed = raw.trim();
|
|
106
|
+
if (trimmed.length === 0) {
|
|
107
|
+
throw new UsageError(`--where: empty filter clause`, { details: { clause: raw } });
|
|
108
|
+
}
|
|
109
|
+
// Step 1: unary `:is_empty` / `:is_not_empty` suffix. Order matters
|
|
110
|
+
// so the longer literal binds first.
|
|
111
|
+
const unarySuffixes = [
|
|
112
|
+
{ suffix: ':is_not_empty', kind: 'is_not_empty' },
|
|
113
|
+
{ suffix: ':is_empty', kind: 'is_empty' },
|
|
114
|
+
];
|
|
115
|
+
for (const u of unarySuffixes) {
|
|
116
|
+
if (trimmed.endsWith(u.suffix)) {
|
|
117
|
+
const tokenPart = trimmed.slice(0, trimmed.length - u.suffix.length);
|
|
118
|
+
if (tokenPart.length === 0) {
|
|
119
|
+
throw new UsageError(`--where: missing column token before ${u.suffix}`, { details: { clause: raw } });
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
token: tokenPart,
|
|
123
|
+
operator: { kind: u.kind, literal: u.suffix.slice(1), arity: 'unary' },
|
|
124
|
+
value: undefined,
|
|
125
|
+
raw,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Step 2: scan left-to-right from index 1 (a leading operator
|
|
130
|
+
// would mean an empty token, rejected). At each index, prefer the
|
|
131
|
+
// longest matching operator literal.
|
|
132
|
+
for (let i = 1; i < trimmed.length; i++) {
|
|
133
|
+
for (const op of OPERATORS_BINARY) {
|
|
134
|
+
if (trimmed.startsWith(op.literal, i)) {
|
|
135
|
+
const token = trimmed.slice(0, i);
|
|
136
|
+
const value = trimmed.slice(i + op.literal.length);
|
|
137
|
+
// Token mustn't end with whitespace + operator-only — but a
|
|
138
|
+
// non-empty token + non-empty value is always valid. Empty
|
|
139
|
+
// value (`status=`) is technically allowed by §5.5 but
|
|
140
|
+
// pragmatically meaningless; reject so agents notice.
|
|
141
|
+
if (value.length === 0) {
|
|
142
|
+
throw new UsageError(`--where: missing value after ${op.literal} (use ${op.literal}'<value>')`, { details: { clause: raw, operator: op.literal } });
|
|
143
|
+
}
|
|
144
|
+
return { token, operator: op, value, raw };
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
throw new UsageError(`--where: no recognised operator in ${JSON.stringify(raw)}; ` +
|
|
149
|
+
`expected one of =, !=, ~=, <, <=, >, >=, :is_empty, :is_not_empty`, { details: { clause: raw } });
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Resolves each parsed `WhereClause` against the board metadata and
|
|
153
|
+
* emits the Monday `query_params` payload. Empty `clauses` →
|
|
154
|
+
* `queryParams: undefined` (caller omits the variable from the
|
|
155
|
+
* GraphQL request). Multiple clauses are AND'd by Monday's default
|
|
156
|
+
* rule-array semantics — no nested groups in v0.1.
|
|
157
|
+
*
|
|
158
|
+
* Throws `ApiError` (`column_not_found` / `ambiguous_column`) when
|
|
159
|
+
* column resolution fails — same shape `--set` will surface in M5b
|
|
160
|
+
* so agents key off the same code regardless of the read vs write
|
|
161
|
+
* channel.
|
|
162
|
+
*/
|
|
163
|
+
export const buildFilterRules = async (inputs) => {
|
|
164
|
+
if (inputs.clauses.length === 0) {
|
|
165
|
+
return { queryParams: undefined, warnings: [], refreshed: false };
|
|
166
|
+
}
|
|
167
|
+
let cachedMe;
|
|
168
|
+
const me = async () => {
|
|
169
|
+
cachedMe ??= await inputs.resolveMe();
|
|
170
|
+
return cachedMe;
|
|
171
|
+
};
|
|
172
|
+
// R12 lift: cache-miss-refresh + collision-warning collection are
|
|
173
|
+
// shared with `commands/item/search.ts buildColumnQueries`. The
|
|
174
|
+
// helper resolves every clause's column token; per-clause value
|
|
175
|
+
// resolution (`me` for people, etc.) stays here.
|
|
176
|
+
const resolved = await resolveColumnsAcrossClauses({
|
|
177
|
+
metadata: inputs.metadata,
|
|
178
|
+
tokens: inputs.clauses.map((c) => c.token),
|
|
179
|
+
...(inputs.onColumnNotFound === undefined
|
|
180
|
+
? {}
|
|
181
|
+
: { onColumnNotFound: inputs.onColumnNotFound }),
|
|
182
|
+
});
|
|
183
|
+
const rules = [];
|
|
184
|
+
for (let i = 0; i < inputs.clauses.length; i++) {
|
|
185
|
+
const clause = inputs.clauses[i];
|
|
186
|
+
const match = resolved.matches[i];
|
|
187
|
+
/* c8 ignore next 6 — defensive: matches.length === clauses.length
|
|
188
|
+
by helper contract; the index guard exists for
|
|
189
|
+
noUncheckedIndexedAccess narrowing only. */
|
|
190
|
+
if (clause === undefined || match === undefined) {
|
|
191
|
+
throw new ApiError('internal_error', `buildFilterRules: lost clause/match alignment at index ${String(i)}`);
|
|
192
|
+
}
|
|
193
|
+
const rule = await buildRuleForClause(clause, match.column, me);
|
|
194
|
+
rules.push(rule);
|
|
195
|
+
}
|
|
196
|
+
// ResolverWarning is structurally compatible with envelope.Warning
|
|
197
|
+
// (narrower `code` literal, required `details`), so the assignment
|
|
198
|
+
// widens cleanly without a cast. Same shape `commands/item/search.ts`
|
|
199
|
+
// uses post-R12 for the same reason.
|
|
200
|
+
return {
|
|
201
|
+
queryParams: { rules },
|
|
202
|
+
warnings: resolved.warnings,
|
|
203
|
+
refreshed: resolved.refreshed,
|
|
204
|
+
};
|
|
205
|
+
};
|
|
206
|
+
const buildRuleForClause = async (clause, column, resolveMe) => {
|
|
207
|
+
const operator = clause.operator;
|
|
208
|
+
if (operator.arity === 'unary') {
|
|
209
|
+
return {
|
|
210
|
+
column_id: column.id,
|
|
211
|
+
operator: MONDAY_OPERATOR_NAME[operator.kind],
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
// Binary operator — extract value, resolve `me` if applicable.
|
|
215
|
+
/* c8 ignore next 7 — defensive guard. The parser's output shape
|
|
216
|
+
guarantees `value` is defined whenever `arity: 'binary'`; the
|
|
217
|
+
check exists for type narrowing under
|
|
218
|
+
`noUncheckedIndexedAccess` / `exactOptionalPropertyTypes`. */
|
|
219
|
+
if (clause.value === undefined) {
|
|
220
|
+
throw new ApiError('internal_error', `binary operator ${operator.literal} produced no value during build`);
|
|
221
|
+
}
|
|
222
|
+
const compareValue = await resolveCompareValue(clause.value, column, operator, resolveMe);
|
|
223
|
+
return {
|
|
224
|
+
column_id: column.id,
|
|
225
|
+
operator: MONDAY_OPERATOR_NAME[operator.kind],
|
|
226
|
+
compare_value: compareValue,
|
|
227
|
+
};
|
|
228
|
+
};
|
|
229
|
+
const resolveCompareValue = async (rawValue, column, operator, resolveMe) => {
|
|
230
|
+
// `me` sugar resolves only on people-style columns. Other types
|
|
231
|
+
// pass through verbatim so a stray `me` against a text column
|
|
232
|
+
// surfaces as Monday's validation_failed rather than a silent
|
|
233
|
+
// identity swap.
|
|
234
|
+
//
|
|
235
|
+
// `isMeToken` is the shared (`api/me-token.ts`, R15) recogniser
|
|
236
|
+
// used by all three `me`-aware surfaces — `--where Owner=me`
|
|
237
|
+
// here, `item search --where Owner=me` in commands/item/search.ts,
|
|
238
|
+
// and `--set Owner=me` in api/people.ts. One rule across read
|
|
239
|
+
// filters and `--set` writes per cli-design §5.3 step 3 line
|
|
240
|
+
// 704-707. cli-design doesn't pin case-sensitivity explicitly;
|
|
241
|
+
// the people-session Codex passes settled on case-insensitive
|
|
242
|
+
// (logged as a v0.1-plan §3 M5a spec gap for backfill).
|
|
243
|
+
if (column.type === 'people' && isMeToken(rawValue)) {
|
|
244
|
+
const id = await resolveMe();
|
|
245
|
+
return wrapForOperator([id], operator);
|
|
246
|
+
}
|
|
247
|
+
// contains_text takes a bare string. Everything else takes an
|
|
248
|
+
// array (any_of / not_any_of) or a scalar (lt/gt/le/ge — number
|
|
249
|
+
// or date string). For v0.1 we pass strings as-is and let Monday
|
|
250
|
+
// coerce; Monday accepts both string and number for numeric
|
|
251
|
+
// columns when the value parses as a number.
|
|
252
|
+
return wrapForOperator(rawValue, operator);
|
|
253
|
+
};
|
|
254
|
+
const wrapForOperator = (value, operator) => {
|
|
255
|
+
switch (operator.kind) {
|
|
256
|
+
case 'equals':
|
|
257
|
+
case 'not_equals':
|
|
258
|
+
return Array.isArray(value) ? value : [value];
|
|
259
|
+
case 'contains_text':
|
|
260
|
+
return Array.isArray(value) ? value[0] : value;
|
|
261
|
+
case 'lower_than':
|
|
262
|
+
case 'lower_than_or_equals':
|
|
263
|
+
case 'greater_than':
|
|
264
|
+
case 'greater_than_or_equals':
|
|
265
|
+
return Array.isArray(value) ? value[0] : value;
|
|
266
|
+
/* c8 ignore start — unary kinds never reach this helper; the
|
|
267
|
+
caller only invokes wrapForOperator for binary operators. */
|
|
268
|
+
case 'is_empty':
|
|
269
|
+
case 'is_not_empty':
|
|
270
|
+
return undefined;
|
|
271
|
+
/* c8 ignore stop */
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
const filterJsonSchema = z.object({}).loose();
|
|
275
|
+
/**
|
|
276
|
+
* Validates a raw `--filter-json` string into a `query_params`-shaped
|
|
277
|
+
* object. Per §5.5, the payload is "never parsed; passed through as
|
|
278
|
+
* the GraphQL var" — the JSON.parse here is just a syntax check so a
|
|
279
|
+
* malformed input produces `usage_error` instead of a server-side
|
|
280
|
+
* parse error. Field-level shape validation stays on Monday's side.
|
|
281
|
+
*/
|
|
282
|
+
export const parseFilterJson = (raw) => {
|
|
283
|
+
let parsed;
|
|
284
|
+
try {
|
|
285
|
+
parsed = JSON.parse(raw);
|
|
286
|
+
}
|
|
287
|
+
catch (err) {
|
|
288
|
+
throw new UsageError(`--filter-json: input is not valid JSON`, { details: { input: raw }, cause: err });
|
|
289
|
+
}
|
|
290
|
+
const result = filterJsonSchema.safeParse(parsed);
|
|
291
|
+
if (!result.success) {
|
|
292
|
+
throw new UsageError(`--filter-json: expected a JSON object`, { details: { input: raw } });
|
|
293
|
+
}
|
|
294
|
+
return result.data;
|
|
295
|
+
};
|
|
296
|
+
export const buildQueryParams = async (inputs) => {
|
|
297
|
+
const hasWhere = inputs.whereClauses.length > 0;
|
|
298
|
+
const filterJson = inputs.filterJson;
|
|
299
|
+
const hasFilterJson = filterJson !== undefined && filterJson.length > 0;
|
|
300
|
+
if (hasWhere && hasFilterJson) {
|
|
301
|
+
throw new UsageError('--where and --filter-json are mutually exclusive; pick one');
|
|
302
|
+
}
|
|
303
|
+
if (hasFilterJson) {
|
|
304
|
+
return {
|
|
305
|
+
queryParams: parseFilterJson(filterJson),
|
|
306
|
+
warnings: [],
|
|
307
|
+
refreshed: false,
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
if (!hasWhere) {
|
|
311
|
+
return { queryParams: undefined, warnings: [], refreshed: false };
|
|
312
|
+
}
|
|
313
|
+
const clauses = inputs.whereClauses.map(parseWhereSyntax);
|
|
314
|
+
const result = await buildFilterRules({
|
|
315
|
+
metadata: inputs.metadata,
|
|
316
|
+
resolveMe: inputs.resolveMe,
|
|
317
|
+
clauses,
|
|
318
|
+
...(inputs.onColumnNotFound === undefined
|
|
319
|
+
? {}
|
|
320
|
+
: { onColumnNotFound: inputs.onColumnNotFound }),
|
|
321
|
+
});
|
|
322
|
+
return {
|
|
323
|
+
queryParams: result.queryParams,
|
|
324
|
+
warnings: result.warnings,
|
|
325
|
+
refreshed: result.refreshed,
|
|
326
|
+
};
|
|
327
|
+
};
|
|
328
|
+
//# sourceMappingURL=filters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/api/filters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Monday-supported group colour palette (M17 implementation-owned
|
|
3
|
+
* field set per cli-design §4.3 group-create + group-update).
|
|
4
|
+
*
|
|
5
|
+
* Monday's `create_group(group_color)` and `update_group(group_
|
|
6
|
+
* attribute: color, new_value)` accept plain `String` on the wire
|
|
7
|
+
* (the SDK 14.0.0 `MutationCreate_GroupArgs.group_color: String?`
|
|
8
|
+
* type is unstructured); the accepted-values list lives in Monday's
|
|
9
|
+
* public API help center, not in the SDK's typed surface, and
|
|
10
|
+
* evolves over time.
|
|
11
|
+
*
|
|
12
|
+
* This module owns the v0.2 field set. The cli-design contract
|
|
13
|
+
* pins the SHAPE (argv-parse validation against the M17
|
|
14
|
+
* implementation-owned set); pinning specific values inline in the
|
|
15
|
+
* contract would force docs revisions every time Monday tweaks
|
|
16
|
+
* the palette. Same rationale as M16 column-create's per-type
|
|
17
|
+
* `--settings` field-set ownership in `column-types.ts`.
|
|
18
|
+
*
|
|
19
|
+
* **What's here**: the union of Monday's documented group colours
|
|
20
|
+
* across both the API help center and the working `update_group`
|
|
21
|
+
* payloads observed in the SDK 14.0.0 test fixtures. When Monday
|
|
22
|
+
* adds a colour, agents either patch this list (SemVer-minor) or
|
|
23
|
+
* fall back to `dev mutate` until the next release.
|
|
24
|
+
*
|
|
25
|
+
* **Why two consumers** (group-create + group-update): both verbs
|
|
26
|
+
* share the argv-parse validation layer. Sharing the constant
|
|
27
|
+
* means an agent that successfully sets a colour via group-create
|
|
28
|
+
* can rely on it round-tripping through group-update without
|
|
29
|
+
* surprise rejections, and vice versa.
|
|
30
|
+
*/
|
|
31
|
+
export declare const GROUP_COLOR_VALUES: readonly ["dark-red", "red", "stuck-red", "sofia-pink", "lipstick", "berry", "dark-orange", "orange", "working-orange", "peachy", "sunset", "sun-yellow", "yellow", "dark-yellow", "gold", "lime-green", "grass-green", "done-green", "dark-green", "sea-foam", "teal", "turqouise", "sky", "light-blue", "bright-blue", "blue", "dark-blue", "royal", "indigo", "dark-indigo", "navy", "purple", "dark-purple", "lavender", "dark-pink", "pink", "brown", "pecan", "tan", "american-gray", "gray-gray", "blackish"];
|
|
32
|
+
export type GroupColor = (typeof GROUP_COLOR_VALUES)[number];
|
|
33
|
+
//# sourceMappingURL=group-color.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group-color.d.ts","sourceRoot":"","sources":["../../src/api/group-color.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,eAAO,MAAM,kBAAkB,sfAgDrB,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Monday-supported group colour palette (M17 implementation-owned
|
|
3
|
+
* field set per cli-design §4.3 group-create + group-update).
|
|
4
|
+
*
|
|
5
|
+
* Monday's `create_group(group_color)` and `update_group(group_
|
|
6
|
+
* attribute: color, new_value)` accept plain `String` on the wire
|
|
7
|
+
* (the SDK 14.0.0 `MutationCreate_GroupArgs.group_color: String?`
|
|
8
|
+
* type is unstructured); the accepted-values list lives in Monday's
|
|
9
|
+
* public API help center, not in the SDK's typed surface, and
|
|
10
|
+
* evolves over time.
|
|
11
|
+
*
|
|
12
|
+
* This module owns the v0.2 field set. The cli-design contract
|
|
13
|
+
* pins the SHAPE (argv-parse validation against the M17
|
|
14
|
+
* implementation-owned set); pinning specific values inline in the
|
|
15
|
+
* contract would force docs revisions every time Monday tweaks
|
|
16
|
+
* the palette. Same rationale as M16 column-create's per-type
|
|
17
|
+
* `--settings` field-set ownership in `column-types.ts`.
|
|
18
|
+
*
|
|
19
|
+
* **What's here**: the union of Monday's documented group colours
|
|
20
|
+
* across both the API help center and the working `update_group`
|
|
21
|
+
* payloads observed in the SDK 14.0.0 test fixtures. When Monday
|
|
22
|
+
* adds a colour, agents either patch this list (SemVer-minor) or
|
|
23
|
+
* fall back to `dev mutate` until the next release.
|
|
24
|
+
*
|
|
25
|
+
* **Why two consumers** (group-create + group-update): both verbs
|
|
26
|
+
* share the argv-parse validation layer. Sharing the constant
|
|
27
|
+
* means an agent that successfully sets a colour via group-create
|
|
28
|
+
* can rely on it round-tripping through group-update without
|
|
29
|
+
* surprise rejections, and vice versa.
|
|
30
|
+
*/
|
|
31
|
+
export const GROUP_COLOR_VALUES = [
|
|
32
|
+
// Reds + warm
|
|
33
|
+
'dark-red',
|
|
34
|
+
'red',
|
|
35
|
+
'stuck-red',
|
|
36
|
+
'sofia-pink',
|
|
37
|
+
'lipstick',
|
|
38
|
+
'berry',
|
|
39
|
+
'dark-orange',
|
|
40
|
+
'orange',
|
|
41
|
+
'working-orange',
|
|
42
|
+
'peachy',
|
|
43
|
+
'sunset',
|
|
44
|
+
'sun-yellow',
|
|
45
|
+
'yellow',
|
|
46
|
+
'dark-yellow',
|
|
47
|
+
'gold',
|
|
48
|
+
// Greens
|
|
49
|
+
'lime-green',
|
|
50
|
+
'grass-green',
|
|
51
|
+
'done-green',
|
|
52
|
+
'dark-green',
|
|
53
|
+
'sea-foam',
|
|
54
|
+
'teal',
|
|
55
|
+
// Blues + indigos
|
|
56
|
+
'turqouise',
|
|
57
|
+
'sky',
|
|
58
|
+
'light-blue',
|
|
59
|
+
'bright-blue',
|
|
60
|
+
'blue',
|
|
61
|
+
'dark-blue',
|
|
62
|
+
'royal',
|
|
63
|
+
'indigo',
|
|
64
|
+
'dark-indigo',
|
|
65
|
+
'navy',
|
|
66
|
+
// Purples + pinks
|
|
67
|
+
'purple',
|
|
68
|
+
'dark-purple',
|
|
69
|
+
'lavender',
|
|
70
|
+
'dark-pink',
|
|
71
|
+
'pink',
|
|
72
|
+
// Earth + neutrals
|
|
73
|
+
'brown',
|
|
74
|
+
'pecan',
|
|
75
|
+
'tan',
|
|
76
|
+
'american-gray',
|
|
77
|
+
'gray-gray',
|
|
78
|
+
'blackish',
|
|
79
|
+
];
|
|
80
|
+
//# sourceMappingURL=group-color.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group-color.js","sourceRoot":"","sources":["../../src/api/group-color.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,cAAc;IACd,UAAU;IACV,KAAK;IACL,WAAW;IACX,YAAY;IACZ,UAAU;IACV,OAAO;IACP,aAAa;IACb,QAAQ;IACR,gBAAgB;IAChB,QAAQ;IACR,QAAQ;IACR,YAAY;IACZ,QAAQ;IACR,aAAa;IACb,MAAM;IACN,SAAS;IACT,YAAY;IACZ,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,UAAU;IACV,MAAM;IACN,kBAAkB;IAClB,WAAW;IACX,KAAK;IACL,YAAY;IACZ,aAAa;IACb,MAAM;IACN,WAAW;IACX,OAAO;IACP,QAAQ;IACR,aAAa;IACb,MAAM;IACN,kBAAkB;IAClB,QAAQ;IACR,aAAa;IACb,UAAU;IACV,WAAW;IACX,MAAM;IACN,mBAAmB;IACnB,OAAO;IACP,OAAO;IACP,KAAK;IACL,eAAe;IACf,WAAW;IACX,UAAU;CACF,CAAC"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Live-mutation null-result projection for the M17 group lifecycle
|
|
3
|
+
* cluster (`v0.2-plan.md` §22 R48 lift).
|
|
4
|
+
*
|
|
5
|
+
* Five M17 verbs share a near-verbatim shape: null-check the wire
|
|
6
|
+
* payload, throw a typed ApiError on null carrying both
|
|
7
|
+
* `details.board_id` and `details.group_id` (the group-mutation
|
|
8
|
+
* wire signature is two-tuple — `create_group` carries `board_id`
|
|
9
|
+
* only pre-id, but the read-side projection always pairs the two),
|
|
10
|
+
* then parse through `groupProjectionSchema` to surface the §6.4
|
|
11
|
+
* mutation envelope's `data: <projected snapshot>`.
|
|
12
|
+
*
|
|
13
|
+
* Lifted alongside the first M17 group verb commit (mirroring R45's
|
|
14
|
+
* "ship the projection helper alongside the first new mutation
|
|
15
|
+
* rather than as a follow-up R-class" precedent — same precedent
|
|
16
|
+
* R39 originally established). The five M17 verbs land in the same
|
|
17
|
+
* milestone, so adopting the helper from day one avoids five
|
|
18
|
+
* parallel inline implementations of the same shape. cf. R28
|
|
19
|
+
* (`projectMutationItem`), R37 (`projectMutationUpdate`), R43
|
|
20
|
+
* (`projectMutationBoard`), R45 (`projectMutationColumn`); R48
|
|
21
|
+
* ships the fifth per-noun helper at the firmest 5-consumer trigger
|
|
22
|
+
* any projection-helper lift has had to date (R39 fired at 3, R45
|
|
23
|
+
* at 3, R48 at 5).
|
|
24
|
+
*
|
|
25
|
+
* **Why parameterised on `errorCode` + `errorMessage`.** Like
|
|
26
|
+
* R28 / R37 / R43 / R45, the M17 verbs diverge in error semantics:
|
|
27
|
+
* - `group-create` chose `internal_error` (every successful call
|
|
28
|
+
* returns a Group — a null payload means Monday glitched
|
|
29
|
+
* server-side, abnormal); the `details` carry `board_id` +
|
|
30
|
+
* `name` (no group_id yet).
|
|
31
|
+
* - `group-update`, `group-archive`, `group-duplicate`,
|
|
32
|
+
* `group-delete` chose `not_found` (Monday's idiomatic null-
|
|
33
|
+
* for-missing-or-no-access response — a typed agent-recovery
|
|
34
|
+
* story); all four carry `board_id` + `group_id`.
|
|
35
|
+
* The helper owns the boilerplate (null check, `details: {board_id,
|
|
36
|
+
* [idKey]: idValue}` envelope, the `unwrapOrThrow` schema parse);
|
|
37
|
+
* each call site supplies its own typed error parts.
|
|
38
|
+
*
|
|
39
|
+
* **`GROUP_FIELDS_FRAGMENT` + `groupProjectionSchema` co-ship.**
|
|
40
|
+
* Mirrors R39's `WORKSPACE_FIELDS_FRAGMENT` + `workspaceProjection
|
|
41
|
+
* Schema`, R43's `BOARD_FIELDS_FRAGMENT` + `boardProjectionSchema`,
|
|
42
|
+
* and R45's `COLUMN_FIELDS_FRAGMENT` + `columnProjectionSchema`
|
|
43
|
+
* patterns. The schema mirrors the `groupSchema` already in
|
|
44
|
+
* `src/api/board-metadata.ts` (the read-side cache projection) but
|
|
45
|
+
* exists as an exported strict projection schema so M17's five
|
|
46
|
+
* mutation verbs share one source of truth for the on-the-wire
|
|
47
|
+
* Group shape. The field set covers the full Group metadata —
|
|
48
|
+
* every Group field except `items_page`, which is the group's
|
|
49
|
+
* items rather than group metadata and is out of scope for the
|
|
50
|
+
* mutation envelope's `data` slot (M17 pre-flight load-bearing
|
|
51
|
+
* finding).
|
|
52
|
+
*
|
|
53
|
+
* **What stays at the call site.** The wire-shape parse of the full
|
|
54
|
+
* mutation response (`responseSchema.safeParse(response.data)`)
|
|
55
|
+
* stays inline because each verb's response root key (`create_
|
|
56
|
+
* group` / `update_group` / `archive_group` / `duplicate_group` /
|
|
57
|
+
* `delete_group`) is per-verb. The missing-root-key check (schema-
|
|
58
|
+
* drift → `internal_error` with a `hint`) stays inline too —
|
|
59
|
+
* that's Codex M15 implementation round-2 F1's distinction between
|
|
60
|
+
* schema-drift and null-payload, deliberately preserved at each
|
|
61
|
+
* site. R42 would unify the missing-root-key check across all
|
|
62
|
+
* pre-M14 mutation verbs once scheduled.
|
|
63
|
+
*/
|
|
64
|
+
import { z } from 'zod';
|
|
65
|
+
import { type ErrorCode } from '../utils/errors.js';
|
|
66
|
+
/**
|
|
67
|
+
* Shared GraphQL selection set for the M17 group projection. 6-space
|
|
68
|
+
* continuation indent matches the column every consumer interpolates
|
|
69
|
+
* `${GROUP_FIELDS_FRAGMENT}` at, so rendered query bytes stay stable
|
|
70
|
+
* across consumers. Mirrors `BOARD_FIELDS_FRAGMENT` (R43),
|
|
71
|
+
* `WORKSPACE_FIELDS_FRAGMENT` (R39), and `COLUMN_FIELDS_FRAGMENT`
|
|
72
|
+
* (R45).
|
|
73
|
+
*
|
|
74
|
+
* Field set tracks `boardMetadataSchema.groups[*]` (the read-side
|
|
75
|
+
* cache projection) so a `board describe` after a successful group
|
|
76
|
+
* mutation returns the same JSON shape the mutation envelope did.
|
|
77
|
+
* `items_page` is deliberately excluded — that's the group's items,
|
|
78
|
+
* not group metadata, and is out of scope for the mutation
|
|
79
|
+
* envelope's `data` slot.
|
|
80
|
+
*/
|
|
81
|
+
export declare const GROUP_FIELDS_FRAGMENT = "id\n title\n color\n position\n archived\n deleted";
|
|
82
|
+
/**
|
|
83
|
+
* Strict zod schema for the group projection — the exact shape
|
|
84
|
+
* `GROUP_FIELDS_FRAGMENT` selects from the wire. Shared by all
|
|
85
|
+
* five M17 group verbs; each verb's `CommandModule.outputSchema`
|
|
86
|
+
* aliases this so the schema-export pipeline emits one canonical
|
|
87
|
+
* shape.
|
|
88
|
+
*
|
|
89
|
+
* Mirrors `boardMetadataSchema.groups[*]` in `board-metadata.ts`
|
|
90
|
+
* verbatim — same fields, same nullability — so a `board describe`
|
|
91
|
+
* after a successful group mutation reads the same JSON shape the
|
|
92
|
+
* mutation envelope wrote.
|
|
93
|
+
*/
|
|
94
|
+
export declare const groupProjectionSchema: z.ZodObject<{
|
|
95
|
+
id: z.ZodString;
|
|
96
|
+
title: z.ZodString;
|
|
97
|
+
color: z.ZodNullable<z.ZodString>;
|
|
98
|
+
position: z.ZodNullable<z.ZodString>;
|
|
99
|
+
archived: z.ZodNullable<z.ZodBoolean>;
|
|
100
|
+
deleted: z.ZodNullable<z.ZodBoolean>;
|
|
101
|
+
}, z.core.$strict>;
|
|
102
|
+
export type GroupProjection = z.infer<typeof groupProjectionSchema>;
|
|
103
|
+
/**
|
|
104
|
+
* Group-mutation detail key — varies between create (`name` echo,
|
|
105
|
+
* since the new group id doesn't exist pre-call) and update /
|
|
106
|
+
* archive / duplicate / delete (`group_id`, since all four operate
|
|
107
|
+
* on an existing group). All M17 verbs additionally echo `board_id`
|
|
108
|
+
* because the group-mutation wire signature is two-tuple.
|
|
109
|
+
*/
|
|
110
|
+
export type GroupMutationDetailKey = 'group_id' | 'name';
|
|
111
|
+
export interface ProjectMutationGroupInputs {
|
|
112
|
+
readonly raw: unknown;
|
|
113
|
+
readonly errorCode: ErrorCode;
|
|
114
|
+
/**
|
|
115
|
+
* Full caller-formatted message for the null-payload throw —
|
|
116
|
+
* e.g. `"Monday returned no group payload from delete_group for
|
|
117
|
+
* board 12345 group topics"`. Per-verb phrasing is preserved
|
|
118
|
+
* verbatim because agents key off the message text in error
|
|
119
|
+
* logs.
|
|
120
|
+
*/
|
|
121
|
+
readonly errorMessage: string;
|
|
122
|
+
readonly boardId: string;
|
|
123
|
+
/**
|
|
124
|
+
* Whether the call site identifies the group by its already-
|
|
125
|
+
* known id (`group_id`, used by update / archive / duplicate /
|
|
126
|
+
* delete) or by the agent-supplied name (`name`, used by create
|
|
127
|
+
* — no id exists pre-call). The helper keys `details.<idKey>`
|
|
128
|
+
* accordingly so agents key off the right field without having
|
|
129
|
+
* to switch on the verb.
|
|
130
|
+
*/
|
|
131
|
+
readonly idKey: GroupMutationDetailKey;
|
|
132
|
+
readonly idValue: string;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Parses + projects a live-mutation `Group` payload, throwing the
|
|
136
|
+
* supplied typed error on null/undefined. Caller owns the error
|
|
137
|
+
* code + message so create's `internal_error` / "no group payload
|
|
138
|
+
* from create_group for board <X> name <Y>" and update's /
|
|
139
|
+
* archive's / duplicate's / delete's `not_found` / "no group
|
|
140
|
+
* payload from <op> for board <X> group <Y>" all survive the lift
|
|
141
|
+
* byte-for-byte.
|
|
142
|
+
*
|
|
143
|
+
* `details: { board_id, [idKey]: idValue }` is supplied by the
|
|
144
|
+
* helper so every consumer carries the same envelope shape —
|
|
145
|
+
* agents key off `details.board_id` + `details.group_id` (or
|
|
146
|
+
* `details.name` on create's pre-id path) regardless of which verb
|
|
147
|
+
* threw (cli-design §6.5).
|
|
148
|
+
*/
|
|
149
|
+
export declare const projectMutationGroup: ({ raw, errorCode, errorMessage, boardId, idKey, idValue, }: ProjectMutationGroupInputs) => GroupProjection;
|
|
150
|
+
//# sourceMappingURL=group-mutation-result.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group-mutation-result.d.ts","sourceRoot":"","sources":["../../src/api/group-mutation-result.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG9D;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,qBAAqB,gFAKpB,CAAC;AAEf;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB;;;;;;;kBASvB,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,GAAI,4DAOlC,0BAA0B,KAAG,eAgB/B,CAAC"}
|