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,256 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `items_page` GraphQL helper — single-page fetcher pair
|
|
3
|
+
* (`v0.2-plan.md` §18 R34).
|
|
4
|
+
*
|
|
5
|
+
* Lifted from five sites that all hand-rolled the same
|
|
6
|
+
* `query Foo($boardId: ID!, $limit: Int!, $queryParams: ItemsQuery)
|
|
7
|
+
* { boards(ids: [$boardId]) { items_page(...) { cursor items {...} } } }`
|
|
8
|
+
* shape with per-site item-field projection + per-site
|
|
9
|
+
* `unwrapOrThrow`-wrapped malformed-response handling. The shared
|
|
10
|
+
* surface is:
|
|
11
|
+
*
|
|
12
|
+
* - GraphQL string assembly (operation name + optional group-filter
|
|
13
|
+
* wrapper + caller-supplied item-fields fragment).
|
|
14
|
+
* - Response parse boundary — `boards[0]` (and `groups[0]` for the
|
|
15
|
+
* group-filtered variant) → `items_page.{cursor, items[]}` with
|
|
16
|
+
* the matching malformed-response context message.
|
|
17
|
+
*
|
|
18
|
+
* **Operation name as a parameter**, not a constant. The SDK threads
|
|
19
|
+
* `operationName` to Monday's request-log telemetry so a `bulk item
|
|
20
|
+
* update --where` walk is distinguishable from a `bulk item clear
|
|
21
|
+
* --where` walk in Monday's logs. Same reason §18 R33 stays deferred:
|
|
22
|
+
* collapsing operations under one name breaks attribution.
|
|
23
|
+
*
|
|
24
|
+
* **Item-fields fragment as a string**, not a typed projection. Three
|
|
25
|
+
* projections in scope today: `id` (clear / update bulk walkers),
|
|
26
|
+
* `id\n name` (upsert lookup), `${ITEM_FIELDS_FRAGMENT}`
|
|
27
|
+
* (item list). Projections are inlined verbatim into the query
|
|
28
|
+
* source — the per-call response zod schema validates that the rows
|
|
29
|
+
* Monday returned actually match.
|
|
30
|
+
*
|
|
31
|
+
* **Group-filter variant** (`item list --group <gid>`) wraps an extra
|
|
32
|
+
* `groups(ids: [$groupId])` selection between `boards` and
|
|
33
|
+
* `items_page`. The helper switches the query shape and the response
|
|
34
|
+
* schema based on the optional `groupId` input — both the wire shape
|
|
35
|
+
* and Monday's accepted variable set diverge between the two queries
|
|
36
|
+
* (the top-level `items_page` doesn't accept `group_id` inside
|
|
37
|
+
* `query_params`, so the group-aware path is structurally distinct).
|
|
38
|
+
*
|
|
39
|
+
* **The cursor walker stays in `pagination.ts`.** All bulk consumers
|
|
40
|
+
* (item list, item update --where, item clear --where) thread these
|
|
41
|
+
* single-page fetchers through `paginate.ts`'s `fetchInitial` /
|
|
42
|
+
* `fetchNext` closures. That preserves the §3.1 #8 per-page
|
|
43
|
+
* ascending-by-ID sort and the §5.6 `stale_cursor` enrichment
|
|
44
|
+
* (`cursor_age_seconds` / `items_returned_so_far` / `last_item_id`)
|
|
45
|
+
* across every site post-lift. Codex round-1 F1 + F2 caught the
|
|
46
|
+
* variant where a thin generator dropped both — pure refactor must
|
|
47
|
+
* match pre-lift behavior, not just pre-lift error code.
|
|
48
|
+
*
|
|
49
|
+
* **stale_cursor fail-fast.** `cli-design.md` §5.6 — Monday's cursor
|
|
50
|
+
* lifetime is 60 min, expired cursors return `INVALID_CURSOR_EXCEPTION`
|
|
51
|
+
* which `api/errors.ts` maps to `error.code === 'stale_cursor'`. The
|
|
52
|
+
* helper bubbles the error unchanged so `paginate.ts` can layer its
|
|
53
|
+
* §5.6 details enrichment on top.
|
|
54
|
+
*/
|
|
55
|
+
import { z } from 'zod';
|
|
56
|
+
import { ApiError } from '../utils/errors.js';
|
|
57
|
+
import { unwrapOrThrow } from '../utils/parse-boundary.js';
|
|
58
|
+
const buildItemsPageQuery = (inputs) => {
|
|
59
|
+
const itemsPage = `items_page(limit: $limit, query_params: $queryParams) {
|
|
60
|
+
cursor
|
|
61
|
+
items {
|
|
62
|
+
${inputs.itemFields}
|
|
63
|
+
}
|
|
64
|
+
}`;
|
|
65
|
+
if (inputs.hasGroup) {
|
|
66
|
+
return `
|
|
67
|
+
query ${inputs.operationName}(
|
|
68
|
+
$boardId: ID!
|
|
69
|
+
$groupId: String!
|
|
70
|
+
$limit: Int!
|
|
71
|
+
$queryParams: ItemsQuery
|
|
72
|
+
) {
|
|
73
|
+
boards(ids: [$boardId]) {
|
|
74
|
+
groups(ids: [$groupId]) {
|
|
75
|
+
${itemsPage}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
`;
|
|
80
|
+
}
|
|
81
|
+
return `
|
|
82
|
+
query ${inputs.operationName}(
|
|
83
|
+
$boardId: ID!
|
|
84
|
+
$limit: Int!
|
|
85
|
+
$queryParams: ItemsQuery
|
|
86
|
+
) {
|
|
87
|
+
boards(ids: [$boardId]) {
|
|
88
|
+
${itemsPage}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
`;
|
|
92
|
+
};
|
|
93
|
+
const buildNextItemsPageQuery = (inputs) => `
|
|
94
|
+
query ${inputs.operationName}($cursor: String!, $limit: Int!) {
|
|
95
|
+
next_items_page(limit: $limit, cursor: $cursor) {
|
|
96
|
+
cursor
|
|
97
|
+
items {
|
|
98
|
+
${inputs.itemFields}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
`;
|
|
103
|
+
// Schema builders are inlined per call site so the generic-instance
|
|
104
|
+
// types stay narrow per fetcher (the lint
|
|
105
|
+
// `explicit-function-return-type` rule combined with zod's deeply
|
|
106
|
+
// nested ZodObject<...> inferred return type makes a top-level
|
|
107
|
+
// builder ergonomically infeasible without massive annotations —
|
|
108
|
+
// the inlined versions infer cleanly from each call site's `T`).
|
|
109
|
+
/**
|
|
110
|
+
* Fires one `items_page(query_params:)` query and returns the parsed
|
|
111
|
+
* `{items, cursor}` payload as `MondayResponse.data`. The wider
|
|
112
|
+
* `MondayResponse` shape (complexity, stats) passes through untouched
|
|
113
|
+
* so callers can spread it into `toEmit(response)` for `meta`.
|
|
114
|
+
*
|
|
115
|
+
* Malformed responses surface as typed `internal_error` carrying
|
|
116
|
+
* `details.issues` (per-field zod failure path) — same parse-boundary
|
|
117
|
+
* contract as the standalone `unwrapOrThrow` helper.
|
|
118
|
+
*/
|
|
119
|
+
export const fetchItemsPage = async (inputs) => {
|
|
120
|
+
const hasGroup = inputs.groupId !== undefined;
|
|
121
|
+
const query = buildItemsPageQuery({
|
|
122
|
+
operationName: inputs.operationName,
|
|
123
|
+
hasGroup,
|
|
124
|
+
itemFields: inputs.itemFields,
|
|
125
|
+
});
|
|
126
|
+
const variables = {
|
|
127
|
+
boardId: inputs.boardId,
|
|
128
|
+
limit: inputs.limit,
|
|
129
|
+
};
|
|
130
|
+
if (hasGroup) {
|
|
131
|
+
variables.groupId = inputs.groupId;
|
|
132
|
+
}
|
|
133
|
+
if (inputs.queryParams !== undefined) {
|
|
134
|
+
variables.queryParams = inputs.queryParams;
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
variables.queryParams = null;
|
|
138
|
+
}
|
|
139
|
+
const response = await inputs.client.raw(query, variables, {
|
|
140
|
+
operationName: inputs.operationName,
|
|
141
|
+
});
|
|
142
|
+
const context = `Monday returned a malformed ${inputs.operationName} response for board ${inputs.boardId}`;
|
|
143
|
+
const details = { board_id: inputs.boardId };
|
|
144
|
+
const itemsPage = hasGroup
|
|
145
|
+
? extractGroupedItemsPage(response.data, inputs.itemSchema, {
|
|
146
|
+
context,
|
|
147
|
+
details,
|
|
148
|
+
operationName: inputs.operationName,
|
|
149
|
+
})
|
|
150
|
+
: extractTopLevelItemsPage(response.data, inputs.itemSchema, {
|
|
151
|
+
context,
|
|
152
|
+
details,
|
|
153
|
+
operationName: inputs.operationName,
|
|
154
|
+
});
|
|
155
|
+
return {
|
|
156
|
+
...response,
|
|
157
|
+
data: { items: itemsPage.items, cursor: itemsPage.cursor },
|
|
158
|
+
};
|
|
159
|
+
};
|
|
160
|
+
const extractTopLevelItemsPage = (data, itemSchema, ctx) => {
|
|
161
|
+
const schema = z
|
|
162
|
+
.object({
|
|
163
|
+
boards: z
|
|
164
|
+
.array(z
|
|
165
|
+
.object({
|
|
166
|
+
items_page: z.object({
|
|
167
|
+
cursor: z.string().nullable(),
|
|
168
|
+
items: z.array(itemSchema),
|
|
169
|
+
}),
|
|
170
|
+
})
|
|
171
|
+
.loose())
|
|
172
|
+
.min(1),
|
|
173
|
+
})
|
|
174
|
+
.loose();
|
|
175
|
+
const parsed = unwrapOrThrow(schema.safeParse(data), {
|
|
176
|
+
context: ctx.context,
|
|
177
|
+
details: ctx.details,
|
|
178
|
+
});
|
|
179
|
+
// Schema's `.min(1)` already rejected empty boards arrays; the
|
|
180
|
+
// guard satisfies `noUncheckedIndexedAccess`.
|
|
181
|
+
const board = parsed.boards[0];
|
|
182
|
+
/* c8 ignore next 6 */
|
|
183
|
+
if (board === undefined) {
|
|
184
|
+
throw new ApiError('internal_error', `${ctx.operationName}: empty boards array`);
|
|
185
|
+
}
|
|
186
|
+
return board.items_page;
|
|
187
|
+
};
|
|
188
|
+
const extractGroupedItemsPage = (data, itemSchema, ctx) => {
|
|
189
|
+
const schema = z
|
|
190
|
+
.object({
|
|
191
|
+
boards: z
|
|
192
|
+
.array(z
|
|
193
|
+
.object({
|
|
194
|
+
groups: z
|
|
195
|
+
.array(z
|
|
196
|
+
.object({
|
|
197
|
+
items_page: z.object({
|
|
198
|
+
cursor: z.string().nullable(),
|
|
199
|
+
items: z.array(itemSchema),
|
|
200
|
+
}),
|
|
201
|
+
})
|
|
202
|
+
.loose())
|
|
203
|
+
.min(1),
|
|
204
|
+
})
|
|
205
|
+
.loose())
|
|
206
|
+
.min(1),
|
|
207
|
+
})
|
|
208
|
+
.loose();
|
|
209
|
+
const parsed = unwrapOrThrow(schema.safeParse(data), {
|
|
210
|
+
context: ctx.context,
|
|
211
|
+
details: ctx.details,
|
|
212
|
+
});
|
|
213
|
+
const board = parsed.boards[0];
|
|
214
|
+
/* c8 ignore next 6 */
|
|
215
|
+
if (board === undefined) {
|
|
216
|
+
throw new ApiError('internal_error', `${ctx.operationName}: empty boards array`);
|
|
217
|
+
}
|
|
218
|
+
const group = board.groups[0];
|
|
219
|
+
/* c8 ignore next 6 */
|
|
220
|
+
if (group === undefined) {
|
|
221
|
+
throw new ApiError('internal_error', `${ctx.operationName}: empty groups array`);
|
|
222
|
+
}
|
|
223
|
+
return group.items_page;
|
|
224
|
+
};
|
|
225
|
+
/**
|
|
226
|
+
* Fires one `next_items_page(cursor:)` continuation and returns the
|
|
227
|
+
* parsed `{items, cursor}` payload. Same parse-boundary contract as
|
|
228
|
+
* {@link fetchItemsPage}.
|
|
229
|
+
*/
|
|
230
|
+
export const fetchNextItemsPage = async (inputs) => {
|
|
231
|
+
const query = buildNextItemsPageQuery({
|
|
232
|
+
operationName: inputs.operationName,
|
|
233
|
+
itemFields: inputs.itemFields,
|
|
234
|
+
});
|
|
235
|
+
const response = await inputs.client.raw(query, { cursor: inputs.cursor, limit: inputs.limit }, { operationName: inputs.operationName });
|
|
236
|
+
const schema = z
|
|
237
|
+
.object({
|
|
238
|
+
next_items_page: z.object({
|
|
239
|
+
cursor: z.string().nullable(),
|
|
240
|
+
items: z.array(inputs.itemSchema),
|
|
241
|
+
}),
|
|
242
|
+
})
|
|
243
|
+
.loose();
|
|
244
|
+
const data = unwrapOrThrow(schema.safeParse(response.data), {
|
|
245
|
+
context: `Monday returned a malformed ${inputs.operationName} response`,
|
|
246
|
+
details: { cursor: inputs.cursor },
|
|
247
|
+
});
|
|
248
|
+
return {
|
|
249
|
+
...response,
|
|
250
|
+
data: {
|
|
251
|
+
items: data.next_items_page.items,
|
|
252
|
+
cursor: data.next_items_page.cursor,
|
|
253
|
+
},
|
|
254
|
+
};
|
|
255
|
+
};
|
|
256
|
+
//# sourceMappingURL=items-page-walker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"items-page-walker.js","sourceRoot":"","sources":["../../src/api/items-page-walker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure link-resolution helpers for the `link` column-value translator
|
|
3
|
+
* (`cli-design.md` §5.3 step 3 v0.2 expansion, `v0.2-plan.md` §3 M8).
|
|
4
|
+
*
|
|
5
|
+
* Surface:
|
|
6
|
+
* - `parseLinkInput` — accepts the two pipe-form shapes cli-design
|
|
7
|
+
* §5.3 enumerates: `<url>` (text defaults to the URL) and
|
|
8
|
+
* `<url>|<text>` (both segments trimmed; pipe-split max 1 split).
|
|
9
|
+
* URL validated via `z.string().url()`.
|
|
10
|
+
*
|
|
11
|
+
* **Why a separate module.** Same template `dates.ts` / `people.ts`
|
|
12
|
+
* follow — column-values.ts owns translator dispatch; the per-type
|
|
13
|
+
* grammar machinery + zod boundary lives one module deeper. Split
|
|
14
|
+
* keeps column-values.ts at one screen of dispatch logic and each
|
|
15
|
+
* translator's tests + corner-case coverage isolated.
|
|
16
|
+
*
|
|
17
|
+
* **Pipe-form max 1 split.** `<url>|<text>` allows `|` inside the
|
|
18
|
+
* `<text>` segment because `splitOnFirstPipe` only splits on the
|
|
19
|
+
* first `|`. So `https://example.com|foo|bar` parses as
|
|
20
|
+
* `{url: "https://example.com", text: "foo|bar"}`. Cli-design
|
|
21
|
+
* doesn't pin this — but pinning here means agents who want a `|`
|
|
22
|
+
* literal in their link text get it without reaching for `--set-raw`.
|
|
23
|
+
*
|
|
24
|
+
* **Empty trailer rejected.** `<url>|` (pipe with empty trailer) is
|
|
25
|
+
* rejected with `usage_error`. Cli-design §5.3 line 810-811: "Pipe-
|
|
26
|
+
* form with empty trailer rejected (usage_error); use --set-raw
|
|
27
|
+
* (below) to write a link with empty text." A user who wants empty
|
|
28
|
+
* text takes the escape hatch.
|
|
29
|
+
*/
|
|
30
|
+
/**
|
|
31
|
+
* Wire payload shape for a `link` column. Matches Monday's
|
|
32
|
+
* `change_column_value(value: JSON!)` JSON scalar:
|
|
33
|
+
* `{url: <url>, text: <text>}`
|
|
34
|
+
*
|
|
35
|
+
* cli-design.md §5.3 step 3 v0.2 expansion line 806-811 pins the
|
|
36
|
+
* shape. `text` defaults to the URL when the pipe form is absent —
|
|
37
|
+
* Monday's link-column UI shows the `text` segment as the visible
|
|
38
|
+
* label, so a missing text would render as an empty hyperlink.
|
|
39
|
+
*/
|
|
40
|
+
export interface LinkPayload {
|
|
41
|
+
readonly url: string;
|
|
42
|
+
readonly text: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Parses a `link` column input per cli-design.md §5.3 step 3 v0.2
|
|
46
|
+
* expansion.
|
|
47
|
+
*
|
|
48
|
+
* Accepted inputs:
|
|
49
|
+
* - **Single URL** `https://example.com` → `{url, text: <url>}`.
|
|
50
|
+
* The URL doubles as the visible text — Monday's link UI shows
|
|
51
|
+
* `text` as the hyperlink label.
|
|
52
|
+
* - **Pipe form** `https://example.com|Site` → `{url, text}`.
|
|
53
|
+
* Both segments trimmed; pipe-split max 1 (so `text` may
|
|
54
|
+
* contain literal `|` characters).
|
|
55
|
+
*
|
|
56
|
+
* Throws `UsageError(usage_error)`:
|
|
57
|
+
* - URL fails `z.string().url()` validation. The error names the
|
|
58
|
+
* failing URL so the agent can see what they sent.
|
|
59
|
+
* - Pipe form with empty trailer (`https://x|` or `https://x| `).
|
|
60
|
+
* Cli-design §5.3 line 810-811 names this rule explicitly: "use
|
|
61
|
+
* --set-raw to write a link with empty text".
|
|
62
|
+
* - Empty input after trim.
|
|
63
|
+
* - Pipe form with empty leader (`|Site` after trim). Same shape
|
|
64
|
+
* as the empty-input branch — there's no URL to validate.
|
|
65
|
+
*
|
|
66
|
+
* @param raw - The raw user-supplied value (post-`--set` parsing).
|
|
67
|
+
* @param columnId - Column ID for error messages.
|
|
68
|
+
*/
|
|
69
|
+
export declare const parseLinkInput: (raw: string, columnId: string) => LinkPayload;
|
|
70
|
+
//# sourceMappingURL=links.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/api/links.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAKH;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAID;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,cAAc,GACzB,KAAK,MAAM,EACX,UAAU,MAAM,KACf,WAmEF,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure link-resolution helpers for the `link` column-value translator
|
|
3
|
+
* (`cli-design.md` §5.3 step 3 v0.2 expansion, `v0.2-plan.md` §3 M8).
|
|
4
|
+
*
|
|
5
|
+
* Surface:
|
|
6
|
+
* - `parseLinkInput` — accepts the two pipe-form shapes cli-design
|
|
7
|
+
* §5.3 enumerates: `<url>` (text defaults to the URL) and
|
|
8
|
+
* `<url>|<text>` (both segments trimmed; pipe-split max 1 split).
|
|
9
|
+
* URL validated via `z.string().url()`.
|
|
10
|
+
*
|
|
11
|
+
* **Why a separate module.** Same template `dates.ts` / `people.ts`
|
|
12
|
+
* follow — column-values.ts owns translator dispatch; the per-type
|
|
13
|
+
* grammar machinery + zod boundary lives one module deeper. Split
|
|
14
|
+
* keeps column-values.ts at one screen of dispatch logic and each
|
|
15
|
+
* translator's tests + corner-case coverage isolated.
|
|
16
|
+
*
|
|
17
|
+
* **Pipe-form max 1 split.** `<url>|<text>` allows `|` inside the
|
|
18
|
+
* `<text>` segment because `splitOnFirstPipe` only splits on the
|
|
19
|
+
* first `|`. So `https://example.com|foo|bar` parses as
|
|
20
|
+
* `{url: "https://example.com", text: "foo|bar"}`. Cli-design
|
|
21
|
+
* doesn't pin this — but pinning here means agents who want a `|`
|
|
22
|
+
* literal in their link text get it without reaching for `--set-raw`.
|
|
23
|
+
*
|
|
24
|
+
* **Empty trailer rejected.** `<url>|` (pipe with empty trailer) is
|
|
25
|
+
* rejected with `usage_error`. Cli-design §5.3 line 810-811: "Pipe-
|
|
26
|
+
* form with empty trailer rejected (usage_error); use --set-raw
|
|
27
|
+
* (below) to write a link with empty text." A user who wants empty
|
|
28
|
+
* text takes the escape hatch.
|
|
29
|
+
*/
|
|
30
|
+
import { z } from 'zod';
|
|
31
|
+
import { UsageError } from '../utils/errors.js';
|
|
32
|
+
const URL_SCHEMA = z.url();
|
|
33
|
+
/**
|
|
34
|
+
* Parses a `link` column input per cli-design.md §5.3 step 3 v0.2
|
|
35
|
+
* expansion.
|
|
36
|
+
*
|
|
37
|
+
* Accepted inputs:
|
|
38
|
+
* - **Single URL** `https://example.com` → `{url, text: <url>}`.
|
|
39
|
+
* The URL doubles as the visible text — Monday's link UI shows
|
|
40
|
+
* `text` as the hyperlink label.
|
|
41
|
+
* - **Pipe form** `https://example.com|Site` → `{url, text}`.
|
|
42
|
+
* Both segments trimmed; pipe-split max 1 (so `text` may
|
|
43
|
+
* contain literal `|` characters).
|
|
44
|
+
*
|
|
45
|
+
* Throws `UsageError(usage_error)`:
|
|
46
|
+
* - URL fails `z.string().url()` validation. The error names the
|
|
47
|
+
* failing URL so the agent can see what they sent.
|
|
48
|
+
* - Pipe form with empty trailer (`https://x|` or `https://x| `).
|
|
49
|
+
* Cli-design §5.3 line 810-811 names this rule explicitly: "use
|
|
50
|
+
* --set-raw to write a link with empty text".
|
|
51
|
+
* - Empty input after trim.
|
|
52
|
+
* - Pipe form with empty leader (`|Site` after trim). Same shape
|
|
53
|
+
* as the empty-input branch — there's no URL to validate.
|
|
54
|
+
*
|
|
55
|
+
* @param raw - The raw user-supplied value (post-`--set` parsing).
|
|
56
|
+
* @param columnId - Column ID for error messages.
|
|
57
|
+
*/
|
|
58
|
+
export const parseLinkInput = (raw, columnId) => {
|
|
59
|
+
const trimmedRaw = raw.trim();
|
|
60
|
+
if (trimmedRaw.length === 0) {
|
|
61
|
+
throw emptyLinkInputError(columnId, raw);
|
|
62
|
+
}
|
|
63
|
+
const pipeIdx = trimmedRaw.indexOf('|');
|
|
64
|
+
let urlSegment;
|
|
65
|
+
let textSegment;
|
|
66
|
+
if (pipeIdx === -1) {
|
|
67
|
+
// Single-segment form: text defaults to URL.
|
|
68
|
+
urlSegment = trimmedRaw;
|
|
69
|
+
textSegment = trimmedRaw;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
urlSegment = trimmedRaw.slice(0, pipeIdx).trim();
|
|
73
|
+
textSegment = trimmedRaw.slice(pipeIdx + 1).trim();
|
|
74
|
+
if (urlSegment.length === 0) {
|
|
75
|
+
throw emptyLinkInputError(columnId, raw);
|
|
76
|
+
}
|
|
77
|
+
if (textSegment.length === 0) {
|
|
78
|
+
// Cli-design §5.3 line 810-811: "Pipe-form with empty trailer
|
|
79
|
+
// rejected (usage_error); use --set-raw to write a link with
|
|
80
|
+
// empty text." Agents who genuinely want an empty visible label
|
|
81
|
+
// take the escape hatch.
|
|
82
|
+
throw new UsageError(`Link column "${columnId}" got pipe-form input with an empty ` +
|
|
83
|
+
`text segment ("${raw}"). The friendly translator requires ` +
|
|
84
|
+
`non-empty text after "|"; pass a single URL (text defaults ` +
|
|
85
|
+
`to the URL) or use --set-raw to write a link with empty text.`, {
|
|
86
|
+
details: {
|
|
87
|
+
column_id: columnId,
|
|
88
|
+
column_type: 'link',
|
|
89
|
+
raw_input: raw,
|
|
90
|
+
hint: `pass a single URL (--set ${columnId}=https://example.com) ` +
|
|
91
|
+
`or pipe-form (--set ${columnId}='https://example.com|Site'). ` +
|
|
92
|
+
`For empty text, use --set-raw ${columnId}=` +
|
|
93
|
+
`'{"url":"https://example.com","text":""}'.`,
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const urlResult = URL_SCHEMA.safeParse(urlSegment);
|
|
99
|
+
if (!urlResult.success) {
|
|
100
|
+
throw new UsageError(`Link column "${columnId}" got invalid URL "${urlSegment}". ` +
|
|
101
|
+
`Monday's link column requires a well-formed absolute URL ` +
|
|
102
|
+
`(e.g. https://example.com).`, {
|
|
103
|
+
details: {
|
|
104
|
+
column_id: columnId,
|
|
105
|
+
column_type: 'link',
|
|
106
|
+
raw_input: raw,
|
|
107
|
+
url_segment: urlSegment,
|
|
108
|
+
hint: `pass an absolute URL (e.g. --set ${columnId}=` +
|
|
109
|
+
`https://example.com). The pipe form (--set ${columnId}=` +
|
|
110
|
+
`'https://example.com|Site') sets a custom visible label.`,
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
return { url: urlResult.data, text: textSegment };
|
|
115
|
+
};
|
|
116
|
+
const emptyLinkInputError = (columnId, raw) => new UsageError(`Link column "${columnId}" needs a URL. Got "${raw}". To clear a ` +
|
|
117
|
+
`link column, use \`monday item clear <iid> ${columnId} ` +
|
|
118
|
+
`[--board <bid>]\` instead.`, {
|
|
119
|
+
details: {
|
|
120
|
+
column_id: columnId,
|
|
121
|
+
column_type: 'link',
|
|
122
|
+
raw_input: raw,
|
|
123
|
+
hint: `pass an absolute URL (--set ${columnId}=https://example.com) ` +
|
|
124
|
+
`or pipe-form with a visible label (--set ${columnId}=` +
|
|
125
|
+
`'https://example.com|Site').`,
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
//# sourceMappingURL=links.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/api/links.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared `me`-token detection (`cli-design.md` §5.3 step 3 line
|
|
3
|
+
* 704-707).
|
|
4
|
+
*
|
|
5
|
+
* Three CLI surfaces resolve `me` to the connected user's ID, all
|
|
6
|
+
* with the same case-insensitive matching rule:
|
|
7
|
+
*
|
|
8
|
+
* 1. **`--where Owner=me`** (read filter) — `src/api/filters.ts`.
|
|
9
|
+
* 2. **`item search --where Owner=me`** (search filter) —
|
|
10
|
+
* `src/commands/item/search.ts`.
|
|
11
|
+
* 3. **`--set Owner=me`** (write translator) — `src/api/people.ts`.
|
|
12
|
+
*
|
|
13
|
+
* Pre-extraction, all three sites carried a verbatim copy of the
|
|
14
|
+
* same expression (`value.trim().toLowerCase() === 'me'`) — added
|
|
15
|
+
* one-by-one across the people-session Codex passes as the parity
|
|
16
|
+
* gap between the three was discovered. A single helper here
|
|
17
|
+
* prevents the next drift outright; if v0.2 extends the grammar
|
|
18
|
+
* (e.g. `i` / `@me` aliases) the change lands in one place.
|
|
19
|
+
*
|
|
20
|
+
* **Why a separate module.** The helper has no dependencies and
|
|
21
|
+
* three structurally-distinct consumers; folding it into
|
|
22
|
+
* `people.ts` would bind the read-side filter modules to the
|
|
23
|
+
* write-side translator's import graph, which is the wrong
|
|
24
|
+
* ordering. Keeping it standalone matches the seam every
|
|
25
|
+
* resolver-shaped helper in `src/api/` already follows.
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* The set of tokens that resolve to the connected user. Exposed as
|
|
29
|
+
* a frozen array so a future v0.2 extension (e.g. `i`, `@me`) lands
|
|
30
|
+
* by adding one entry; the type-guard contract is unchanged.
|
|
31
|
+
*
|
|
32
|
+
* Lowercase canonical forms — callers lowercase the input via
|
|
33
|
+
* `isMeToken` before checking, so adding a token in mixed case
|
|
34
|
+
* here would silently drop matching for the lowercase form. Pin
|
|
35
|
+
* via test (`me-token.test.ts`).
|
|
36
|
+
*/
|
|
37
|
+
export declare const ME_TOKENS: readonly string[];
|
|
38
|
+
/**
|
|
39
|
+
* Returns `true` if the given token is one of the recognised `me`
|
|
40
|
+
* aliases. Case-insensitive after trim — `me` / `ME` / `Me` /
|
|
41
|
+
* `mE` / `" me "` all match. cli-design.md §5.3 step 3 line
|
|
42
|
+
* 704-707 doesn't pin case-sensitivity explicitly, but the people
|
|
43
|
+
* session's Codex passes settled on case-insensitive across all
|
|
44
|
+
* three surfaces (logged as a v0.1-plan §3 M5a spec gap for
|
|
45
|
+
* cli-design backfill).
|
|
46
|
+
*
|
|
47
|
+
* Returns `false` for any other input — including empty strings
|
|
48
|
+
* (`""` doesn't trim to a `me` token; the empty-input branch in
|
|
49
|
+
* each call site handles that path before reaching the helper).
|
|
50
|
+
*/
|
|
51
|
+
export declare const isMeToken: (token: string) => boolean;
|
|
52
|
+
//# sourceMappingURL=me-token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"me-token.d.ts","sourceRoot":"","sources":["../../src/api/me-token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS,EAAE,SAAS,MAAM,EAAW,CAAC;AAEnD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,OAGzC,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared `me`-token detection (`cli-design.md` §5.3 step 3 line
|
|
3
|
+
* 704-707).
|
|
4
|
+
*
|
|
5
|
+
* Three CLI surfaces resolve `me` to the connected user's ID, all
|
|
6
|
+
* with the same case-insensitive matching rule:
|
|
7
|
+
*
|
|
8
|
+
* 1. **`--where Owner=me`** (read filter) — `src/api/filters.ts`.
|
|
9
|
+
* 2. **`item search --where Owner=me`** (search filter) —
|
|
10
|
+
* `src/commands/item/search.ts`.
|
|
11
|
+
* 3. **`--set Owner=me`** (write translator) — `src/api/people.ts`.
|
|
12
|
+
*
|
|
13
|
+
* Pre-extraction, all three sites carried a verbatim copy of the
|
|
14
|
+
* same expression (`value.trim().toLowerCase() === 'me'`) — added
|
|
15
|
+
* one-by-one across the people-session Codex passes as the parity
|
|
16
|
+
* gap between the three was discovered. A single helper here
|
|
17
|
+
* prevents the next drift outright; if v0.2 extends the grammar
|
|
18
|
+
* (e.g. `i` / `@me` aliases) the change lands in one place.
|
|
19
|
+
*
|
|
20
|
+
* **Why a separate module.** The helper has no dependencies and
|
|
21
|
+
* three structurally-distinct consumers; folding it into
|
|
22
|
+
* `people.ts` would bind the read-side filter modules to the
|
|
23
|
+
* write-side translator's import graph, which is the wrong
|
|
24
|
+
* ordering. Keeping it standalone matches the seam every
|
|
25
|
+
* resolver-shaped helper in `src/api/` already follows.
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* The set of tokens that resolve to the connected user. Exposed as
|
|
29
|
+
* a frozen array so a future v0.2 extension (e.g. `i`, `@me`) lands
|
|
30
|
+
* by adding one entry; the type-guard contract is unchanged.
|
|
31
|
+
*
|
|
32
|
+
* Lowercase canonical forms — callers lowercase the input via
|
|
33
|
+
* `isMeToken` before checking, so adding a token in mixed case
|
|
34
|
+
* here would silently drop matching for the lowercase form. Pin
|
|
35
|
+
* via test (`me-token.test.ts`).
|
|
36
|
+
*/
|
|
37
|
+
export const ME_TOKENS = ['me'];
|
|
38
|
+
/**
|
|
39
|
+
* Returns `true` if the given token is one of the recognised `me`
|
|
40
|
+
* aliases. Case-insensitive after trim — `me` / `ME` / `Me` /
|
|
41
|
+
* `mE` / `" me "` all match. cli-design.md §5.3 step 3 line
|
|
42
|
+
* 704-707 doesn't pin case-sensitivity explicitly, but the people
|
|
43
|
+
* session's Codex passes settled on case-insensitive across all
|
|
44
|
+
* three surfaces (logged as a v0.1-plan §3 M5a spec gap for
|
|
45
|
+
* cli-design backfill).
|
|
46
|
+
*
|
|
47
|
+
* Returns `false` for any other input — including empty strings
|
|
48
|
+
* (`""` doesn't trim to a `me` token; the empty-input branch in
|
|
49
|
+
* each call site handles that path before reaching the helper).
|
|
50
|
+
*/
|
|
51
|
+
export const isMeToken = (token) => {
|
|
52
|
+
const normalised = token.trim().toLowerCase();
|
|
53
|
+
return ME_TOKENS.includes(normalised);
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=me-token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"me-token.js","sourceRoot":"","sources":["../../src/api/me-token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,SAAS,GAAsB,CAAC,IAAI,CAAC,CAAC;AAEnD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAW,EAAE;IAClD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,OAAO,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACxC,CAAC,CAAC"}
|