shop-cli 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +392 -0
  3. package/bin/shop-cli.js +17 -0
  4. package/bin/shop.js +16 -0
  5. package/dist/adminClient.d.ts +34 -0
  6. package/dist/adminClient.js +144 -0
  7. package/dist/cli/client.d.ts +10 -0
  8. package/dist/cli/client.js +56 -0
  9. package/dist/cli/command.d.ts +5 -0
  10. package/dist/cli/command.js +62 -0
  11. package/dist/cli/errors.d.ts +4 -0
  12. package/dist/cli/errors.js +35 -0
  13. package/dist/cli/gid.d.ts +3 -0
  14. package/dist/cli/gid.js +42 -0
  15. package/dist/cli/globalFlags.d.ts +15 -0
  16. package/dist/cli/globalFlags.js +100 -0
  17. package/dist/cli/headers.d.ts +2 -0
  18. package/dist/cli/headers.js +79 -0
  19. package/dist/cli/help/format.d.ts +8 -0
  20. package/dist/cli/help/format.js +78 -0
  21. package/dist/cli/help/registry.d.ts +5 -0
  22. package/dist/cli/help/registry.js +6443 -0
  23. package/dist/cli/help/render.d.ts +8 -0
  24. package/dist/cli/help/render.js +399 -0
  25. package/dist/cli/help/spec.d.ts +39 -0
  26. package/dist/cli/help/spec.js +17 -0
  27. package/dist/cli/input.d.ts +9 -0
  28. package/dist/cli/input.js +104 -0
  29. package/dist/cli/introspection/deprecations.d.ts +1 -0
  30. package/dist/cli/introspection/deprecations.js +83 -0
  31. package/dist/cli/introspection/format.d.ts +6 -0
  32. package/dist/cli/introspection/format.js +63 -0
  33. package/dist/cli/introspection/index.d.ts +14 -0
  34. package/dist/cli/introspection/index.js +89 -0
  35. package/dist/cli/introspection/resources.d.ts +1 -0
  36. package/dist/cli/introspection/resources.js +127 -0
  37. package/dist/cli/output/computedFields.d.ts +39 -0
  38. package/dist/cli/output/computedFields.js +104 -0
  39. package/dist/cli/output.d.ts +37 -0
  40. package/dist/cli/output.js +332 -0
  41. package/dist/cli/parse-command.d.ts +18 -0
  42. package/dist/cli/parse-command.js +109 -0
  43. package/dist/cli/router.d.ts +29 -0
  44. package/dist/cli/router.js +480 -0
  45. package/dist/cli/selection/buildAllSelection.d.ts +13 -0
  46. package/dist/cli/selection/buildAllSelection.js +108 -0
  47. package/dist/cli/selection/graphqlSelection.d.ts +5 -0
  48. package/dist/cli/selection/graphqlSelection.js +301 -0
  49. package/dist/cli/selection/select.d.ts +13 -0
  50. package/dist/cli/selection/select.js +136 -0
  51. package/dist/cli/selection/stripDeprecated.d.ts +2 -0
  52. package/dist/cli/selection/stripDeprecated.js +63 -0
  53. package/dist/cli/suggest.d.ts +5 -0
  54. package/dist/cli/suggest.js +88 -0
  55. package/dist/cli/userErrors.d.ts +4 -0
  56. package/dist/cli/userErrors.js +41 -0
  57. package/dist/cli/verbs/_shared.d.ts +38 -0
  58. package/dist/cli/verbs/_shared.js +181 -0
  59. package/dist/cli/verbs/abandoned-checkouts.d.ts +6 -0
  60. package/dist/cli/verbs/abandoned-checkouts.js +259 -0
  61. package/dist/cli/verbs/app-billing.d.ts +6 -0
  62. package/dist/cli/verbs/app-billing.js +452 -0
  63. package/dist/cli/verbs/apps.d.ts +6 -0
  64. package/dist/cli/verbs/apps.js +296 -0
  65. package/dist/cli/verbs/articles.d.ts +6 -0
  66. package/dist/cli/verbs/articles.js +251 -0
  67. package/dist/cli/verbs/backup.d.ts +6 -0
  68. package/dist/cli/verbs/backup.js +94 -0
  69. package/dist/cli/verbs/blogs.d.ts +6 -0
  70. package/dist/cli/verbs/blogs.js +273 -0
  71. package/dist/cli/verbs/bulk-operations.d.ts +6 -0
  72. package/dist/cli/verbs/bulk-operations.js +272 -0
  73. package/dist/cli/verbs/business-entities.d.ts +6 -0
  74. package/dist/cli/verbs/business-entities.js +102 -0
  75. package/dist/cli/verbs/carrier-services.d.ts +6 -0
  76. package/dist/cli/verbs/carrier-services.js +195 -0
  77. package/dist/cli/verbs/cart-transforms.d.ts +6 -0
  78. package/dist/cli/verbs/cart-transforms.js +141 -0
  79. package/dist/cli/verbs/cash-tracking.d.ts +6 -0
  80. package/dist/cli/verbs/cash-tracking.js +118 -0
  81. package/dist/cli/verbs/catalogs.d.ts +6 -0
  82. package/dist/cli/verbs/catalogs.js +267 -0
  83. package/dist/cli/verbs/channels.d.ts +6 -0
  84. package/dist/cli/verbs/channels.js +120 -0
  85. package/dist/cli/verbs/checkout-branding.d.ts +6 -0
  86. package/dist/cli/verbs/checkout-branding.js +144 -0
  87. package/dist/cli/verbs/checkout-profiles.d.ts +6 -0
  88. package/dist/cli/verbs/checkout-profiles.js +124 -0
  89. package/dist/cli/verbs/collections.d.ts +6 -0
  90. package/dist/cli/verbs/collections.js +620 -0
  91. package/dist/cli/verbs/comments.d.ts +6 -0
  92. package/dist/cli/verbs/comments.js +160 -0
  93. package/dist/cli/verbs/companies.d.ts +6 -0
  94. package/dist/cli/verbs/companies.js +313 -0
  95. package/dist/cli/verbs/company-contacts.d.ts +6 -0
  96. package/dist/cli/verbs/company-contacts.js +318 -0
  97. package/dist/cli/verbs/company-locations.d.ts +6 -0
  98. package/dist/cli/verbs/company-locations.js +467 -0
  99. package/dist/cli/verbs/customer-account-pages.d.ts +6 -0
  100. package/dist/cli/verbs/customer-account-pages.js +97 -0
  101. package/dist/cli/verbs/customer-payment-methods.d.ts +6 -0
  102. package/dist/cli/verbs/customer-payment-methods.js +358 -0
  103. package/dist/cli/verbs/customer-privacy.d.ts +6 -0
  104. package/dist/cli/verbs/customer-privacy.js +167 -0
  105. package/dist/cli/verbs/customer-segments.d.ts +6 -0
  106. package/dist/cli/verbs/customer-segments.js +193 -0
  107. package/dist/cli/verbs/customers.d.ts +6 -0
  108. package/dist/cli/verbs/customers.js +793 -0
  109. package/dist/cli/verbs/delegate-tokens.d.ts +6 -0
  110. package/dist/cli/verbs/delegate-tokens.js +95 -0
  111. package/dist/cli/verbs/delivery-customizations.d.ts +6 -0
  112. package/dist/cli/verbs/delivery-customizations.js +205 -0
  113. package/dist/cli/verbs/delivery-profile-locations.d.ts +6 -0
  114. package/dist/cli/verbs/delivery-profile-locations.js +90 -0
  115. package/dist/cli/verbs/delivery-profiles.d.ts +6 -0
  116. package/dist/cli/verbs/delivery-profiles.js +207 -0
  117. package/dist/cli/verbs/delivery-promises.d.ts +6 -0
  118. package/dist/cli/verbs/delivery-promises.js +262 -0
  119. package/dist/cli/verbs/delivery-settings.d.ts +6 -0
  120. package/dist/cli/verbs/delivery-settings.js +85 -0
  121. package/dist/cli/verbs/discount-nodes.d.ts +6 -0
  122. package/dist/cli/verbs/discount-nodes.js +169 -0
  123. package/dist/cli/verbs/discount-redeem-codes.d.ts +6 -0
  124. package/dist/cli/verbs/discount-redeem-codes.js +102 -0
  125. package/dist/cli/verbs/discount-saved-searches.d.ts +6 -0
  126. package/dist/cli/verbs/discount-saved-searches.js +113 -0
  127. package/dist/cli/verbs/discounts-automatic.d.ts +6 -0
  128. package/dist/cli/verbs/discounts-automatic.js +501 -0
  129. package/dist/cli/verbs/discounts-code.d.ts +6 -0
  130. package/dist/cli/verbs/discounts-code.js +540 -0
  131. package/dist/cli/verbs/disputes.d.ts +6 -0
  132. package/dist/cli/verbs/disputes.js +154 -0
  133. package/dist/cli/verbs/draft-orders.d.ts +6 -0
  134. package/dist/cli/verbs/draft-orders.js +475 -0
  135. package/dist/cli/verbs/events.d.ts +6 -0
  136. package/dist/cli/verbs/events.js +182 -0
  137. package/dist/cli/verbs/file-saved-searches.d.ts +6 -0
  138. package/dist/cli/verbs/file-saved-searches.js +83 -0
  139. package/dist/cli/verbs/files.d.ts +6 -0
  140. package/dist/cli/verbs/files.js +329 -0
  141. package/dist/cli/verbs/finance.d.ts +6 -0
  142. package/dist/cli/verbs/finance.js +115 -0
  143. package/dist/cli/verbs/flow.d.ts +6 -0
  144. package/dist/cli/verbs/flow.js +94 -0
  145. package/dist/cli/verbs/fulfillment-constraint-rules.d.ts +6 -0
  146. package/dist/cli/verbs/fulfillment-constraint-rules.js +139 -0
  147. package/dist/cli/verbs/fulfillment-orders.d.ts +6 -0
  148. package/dist/cli/verbs/fulfillment-orders.js +689 -0
  149. package/dist/cli/verbs/fulfillment-services.d.ts +6 -0
  150. package/dist/cli/verbs/fulfillment-services.js +212 -0
  151. package/dist/cli/verbs/fulfillments.d.ts +6 -0
  152. package/dist/cli/verbs/fulfillments.js +279 -0
  153. package/dist/cli/verbs/gift-cards.d.ts +6 -0
  154. package/dist/cli/verbs/gift-cards.js +359 -0
  155. package/dist/cli/verbs/graphql.d.ts +14 -0
  156. package/dist/cli/verbs/graphql.js +285 -0
  157. package/dist/cli/verbs/inventory-items.d.ts +6 -0
  158. package/dist/cli/verbs/inventory-items.js +164 -0
  159. package/dist/cli/verbs/inventory-shipments.d.ts +6 -0
  160. package/dist/cli/verbs/inventory-shipments.js +276 -0
  161. package/dist/cli/verbs/inventory-transfers.d.ts +6 -0
  162. package/dist/cli/verbs/inventory-transfers.js +396 -0
  163. package/dist/cli/verbs/inventory.d.ts +6 -0
  164. package/dist/cli/verbs/inventory.js +557 -0
  165. package/dist/cli/verbs/locales.d.ts +6 -0
  166. package/dist/cli/verbs/locales.js +61 -0
  167. package/dist/cli/verbs/locations.d.ts +6 -0
  168. package/dist/cli/verbs/locations.js +385 -0
  169. package/dist/cli/verbs/market-localizations.d.ts +6 -0
  170. package/dist/cli/verbs/market-localizations.js +291 -0
  171. package/dist/cli/verbs/market-web-presences.d.ts +6 -0
  172. package/dist/cli/verbs/market-web-presences.js +139 -0
  173. package/dist/cli/verbs/marketing-activities.d.ts +6 -0
  174. package/dist/cli/verbs/marketing-activities.js +353 -0
  175. package/dist/cli/verbs/marketing-events.d.ts +6 -0
  176. package/dist/cli/verbs/marketing-events.js +132 -0
  177. package/dist/cli/verbs/markets.d.ts +6 -0
  178. package/dist/cli/verbs/markets.js +357 -0
  179. package/dist/cli/verbs/menus.d.ts +6 -0
  180. package/dist/cli/verbs/menus.js +251 -0
  181. package/dist/cli/verbs/metafield-definition-tools.d.ts +6 -0
  182. package/dist/cli/verbs/metafield-definition-tools.js +289 -0
  183. package/dist/cli/verbs/metafield-definitions.d.ts +6 -0
  184. package/dist/cli/verbs/metafield-definitions.js +240 -0
  185. package/dist/cli/verbs/metafields.d.ts +6 -0
  186. package/dist/cli/verbs/metafields.js +112 -0
  187. package/dist/cli/verbs/metaobject-definition-tools.d.ts +6 -0
  188. package/dist/cli/verbs/metaobject-definition-tools.js +83 -0
  189. package/dist/cli/verbs/metaobject-definitions.d.ts +6 -0
  190. package/dist/cli/verbs/metaobject-definitions.js +176 -0
  191. package/dist/cli/verbs/metaobjects.d.ts +6 -0
  192. package/dist/cli/verbs/metaobjects.js +306 -0
  193. package/dist/cli/verbs/mobile-platform-applications.d.ts +6 -0
  194. package/dist/cli/verbs/mobile-platform-applications.js +247 -0
  195. package/dist/cli/verbs/order-edit.d.ts +6 -0
  196. package/dist/cli/verbs/order-edit.js +596 -0
  197. package/dist/cli/verbs/orders.d.ts +6 -0
  198. package/dist/cli/verbs/orders.js +853 -0
  199. package/dist/cli/verbs/pages.d.ts +6 -0
  200. package/dist/cli/verbs/pages.js +234 -0
  201. package/dist/cli/verbs/payment-customizations.d.ts +6 -0
  202. package/dist/cli/verbs/payment-customizations.js +193 -0
  203. package/dist/cli/verbs/payment-terms.d.ts +6 -0
  204. package/dist/cli/verbs/payment-terms.js +228 -0
  205. package/dist/cli/verbs/point-of-sale.d.ts +6 -0
  206. package/dist/cli/verbs/point-of-sale.js +57 -0
  207. package/dist/cli/verbs/price-lists.d.ts +6 -0
  208. package/dist/cli/verbs/price-lists.js +426 -0
  209. package/dist/cli/verbs/product-feeds.d.ts +6 -0
  210. package/dist/cli/verbs/product-feeds.js +187 -0
  211. package/dist/cli/verbs/product-variants.d.ts +6 -0
  212. package/dist/cli/verbs/product-variants.js +439 -0
  213. package/dist/cli/verbs/products.d.ts +6 -0
  214. package/dist/cli/verbs/products.js +2309 -0
  215. package/dist/cli/verbs/publications.d.ts +6 -0
  216. package/dist/cli/verbs/publications.js +256 -0
  217. package/dist/cli/verbs/publishables.d.ts +6 -0
  218. package/dist/cli/verbs/publishables.js +73 -0
  219. package/dist/cli/verbs/refunds.d.ts +6 -0
  220. package/dist/cli/verbs/refunds.js +226 -0
  221. package/dist/cli/verbs/resource-feedback.d.ts +6 -0
  222. package/dist/cli/verbs/resource-feedback.js +119 -0
  223. package/dist/cli/verbs/returnable-fulfillments.d.ts +6 -0
  224. package/dist/cli/verbs/returnable-fulfillments.js +102 -0
  225. package/dist/cli/verbs/returns.d.ts +6 -0
  226. package/dist/cli/verbs/returns.js +506 -0
  227. package/dist/cli/verbs/reverse-deliveries.d.ts +6 -0
  228. package/dist/cli/verbs/reverse-deliveries.js +203 -0
  229. package/dist/cli/verbs/reverse-fulfillment-orders.d.ts +6 -0
  230. package/dist/cli/verbs/reverse-fulfillment-orders.js +157 -0
  231. package/dist/cli/verbs/saved-searches.d.ts +6 -0
  232. package/dist/cli/verbs/saved-searches.js +150 -0
  233. package/dist/cli/verbs/script-tags.d.ts +6 -0
  234. package/dist/cli/verbs/script-tags.js +179 -0
  235. package/dist/cli/verbs/segments.d.ts +6 -0
  236. package/dist/cli/verbs/segments.js +343 -0
  237. package/dist/cli/verbs/selling-plan-group-products.d.ts +6 -0
  238. package/dist/cli/verbs/selling-plan-group-products.js +115 -0
  239. package/dist/cli/verbs/selling-plan-groups.d.ts +6 -0
  240. package/dist/cli/verbs/selling-plan-groups.js +230 -0
  241. package/dist/cli/verbs/server-pixels.d.ts +6 -0
  242. package/dist/cli/verbs/server-pixels.js +172 -0
  243. package/dist/cli/verbs/shipping-packages.d.ts +6 -0
  244. package/dist/cli/verbs/shipping-packages.js +107 -0
  245. package/dist/cli/verbs/shop-policies.d.ts +6 -0
  246. package/dist/cli/verbs/shop-policies.js +91 -0
  247. package/dist/cli/verbs/shop-utils.d.ts +6 -0
  248. package/dist/cli/verbs/shop-utils.js +147 -0
  249. package/dist/cli/verbs/shop.d.ts +6 -0
  250. package/dist/cli/verbs/shop.js +177 -0
  251. package/dist/cli/verbs/shopify-functions.d.ts +6 -0
  252. package/dist/cli/verbs/shopify-functions.js +127 -0
  253. package/dist/cli/verbs/shopify-payments.d.ts +6 -0
  254. package/dist/cli/verbs/shopify-payments.js +111 -0
  255. package/dist/cli/verbs/staff.d.ts +6 -0
  256. package/dist/cli/verbs/staff.js +127 -0
  257. package/dist/cli/verbs/staged-uploads.d.ts +6 -0
  258. package/dist/cli/verbs/staged-uploads.js +128 -0
  259. package/dist/cli/verbs/store-credit.d.ts +6 -0
  260. package/dist/cli/verbs/store-credit.js +209 -0
  261. package/dist/cli/verbs/storefront-access-tokens.d.ts +6 -0
  262. package/dist/cli/verbs/storefront-access-tokens.js +183 -0
  263. package/dist/cli/verbs/subscription-billing-cycles.d.ts +6 -0
  264. package/dist/cli/verbs/subscription-billing-cycles.js +391 -0
  265. package/dist/cli/verbs/subscription-billing.d.ts +6 -0
  266. package/dist/cli/verbs/subscription-billing.js +391 -0
  267. package/dist/cli/verbs/subscription-contracts.d.ts +6 -0
  268. package/dist/cli/verbs/subscription-contracts.js +392 -0
  269. package/dist/cli/verbs/subscription-drafts.d.ts +6 -0
  270. package/dist/cli/verbs/subscription-drafts.js +315 -0
  271. package/dist/cli/verbs/tags.d.ts +6 -0
  272. package/dist/cli/verbs/tags.js +73 -0
  273. package/dist/cli/verbs/tax.d.ts +6 -0
  274. package/dist/cli/verbs/tax.js +114 -0
  275. package/dist/cli/verbs/taxonomy.d.ts +6 -0
  276. package/dist/cli/verbs/taxonomy.js +99 -0
  277. package/dist/cli/verbs/tender-transactions.d.ts +6 -0
  278. package/dist/cli/verbs/tender-transactions.js +105 -0
  279. package/dist/cli/verbs/themes.d.ts +6 -0
  280. package/dist/cli/verbs/themes.js +315 -0
  281. package/dist/cli/verbs/translations.d.ts +6 -0
  282. package/dist/cli/verbs/translations.js +221 -0
  283. package/dist/cli/verbs/types.d.ts +4 -0
  284. package/dist/cli/verbs/types.js +224 -0
  285. package/dist/cli/verbs/url-redirects.d.ts +6 -0
  286. package/dist/cli/verbs/url-redirects.js +465 -0
  287. package/dist/cli/verbs/validations.d.ts +6 -0
  288. package/dist/cli/verbs/validations.js +181 -0
  289. package/dist/cli/verbs/web-pixels.d.ts +6 -0
  290. package/dist/cli/verbs/web-pixels.js +145 -0
  291. package/dist/cli/verbs/web-presences.d.ts +6 -0
  292. package/dist/cli/verbs/web-presences.js +186 -0
  293. package/dist/cli/verbs/webhooks.d.ts +6 -0
  294. package/dist/cli/verbs/webhooks.js +336 -0
  295. package/dist/cli/workflows/files/stagedUploads.d.ts +28 -0
  296. package/dist/cli/workflows/files/stagedUploads.js +227 -0
  297. package/dist/cli/workflows/files/stdinFile.d.ts +7 -0
  298. package/dist/cli/workflows/files/stdinFile.js +65 -0
  299. package/dist/cli/workflows/files/urlDownloads.d.ts +14 -0
  300. package/dist/cli/workflows/files/urlDownloads.js +114 -0
  301. package/dist/cli/workflows/files/waitForReady.d.ts +20 -0
  302. package/dist/cli/workflows/files/waitForReady.js +114 -0
  303. package/dist/cli/workflows/inventory/resolveInventoryItemId.d.ts +6 -0
  304. package/dist/cli/workflows/inventory/resolveInventoryItemId.js +59 -0
  305. package/dist/cli/workflows/productVariants/upsert.d.ts +8 -0
  306. package/dist/cli/workflows/productVariants/upsert.js +110 -0
  307. package/dist/cli/workflows/products/metafieldsUpsert.d.ts +6 -0
  308. package/dist/cli/workflows/products/metafieldsUpsert.js +94 -0
  309. package/dist/cli/workflows/products/publishablePublish.d.ts +21 -0
  310. package/dist/cli/workflows/products/publishablePublish.js +131 -0
  311. package/dist/cli/workflows/publications/resolvePublicationId.d.ts +17 -0
  312. package/dist/cli/workflows/publications/resolvePublicationId.js +93 -0
  313. package/dist/cli.d.ts +1 -0
  314. package/dist/cli.js +238 -0
  315. package/dist/defaults.d.ts +2 -0
  316. package/dist/defaults.js +38 -0
  317. package/dist/generated/admin-2026-04/index.d.ts +25 -0
  318. package/dist/generated/admin-2026-04/index.js +70 -0
  319. package/dist/generated/admin-2026-04/runtime/batcher.d.ts +105 -0
  320. package/dist/generated/admin-2026-04/runtime/batcher.js +203 -0
  321. package/dist/generated/admin-2026-04/runtime/createClient.d.ts +17 -0
  322. package/dist/generated/admin-2026-04/runtime/createClient.js +59 -0
  323. package/dist/generated/admin-2026-04/runtime/error.d.ts +18 -0
  324. package/dist/generated/admin-2026-04/runtime/error.js +44 -0
  325. package/dist/generated/admin-2026-04/runtime/fetcher.d.ts +10 -0
  326. package/dist/generated/admin-2026-04/runtime/fetcher.js +104 -0
  327. package/dist/generated/admin-2026-04/runtime/generateGraphqlOperation.d.ts +30 -0
  328. package/dist/generated/admin-2026-04/runtime/generateGraphqlOperation.js +191 -0
  329. package/dist/generated/admin-2026-04/runtime/index.d.ts +11 -0
  330. package/dist/generated/admin-2026-04/runtime/index.js +46 -0
  331. package/dist/generated/admin-2026-04/runtime/linkTypeMap.d.ts +9 -0
  332. package/dist/generated/admin-2026-04/runtime/linkTypeMap.js +142 -0
  333. package/dist/generated/admin-2026-04/runtime/typeSelection.d.ts +28 -0
  334. package/dist/generated/admin-2026-04/runtime/typeSelection.js +17 -0
  335. package/dist/generated/admin-2026-04/runtime/types.d.ts +55 -0
  336. package/dist/generated/admin-2026-04/runtime/types.js +17 -0
  337. package/dist/generated/admin-2026-04/schema.d.ts +102240 -0
  338. package/dist/generated/admin-2026-04/schema.graphql +91596 -0
  339. package/dist/generated/admin-2026-04/schema.js +20322 -0
  340. package/dist/generated/admin-2026-04/types.d.ts +24224 -0
  341. package/dist/generated/admin-2026-04/types.js +62299 -0
  342. package/dist/generated/help/schema-help.d.ts +30 -0
  343. package/dist/generated/help/schema-help.js +61833 -0
  344. package/dist/graphqlValidator.d.ts +17 -0
  345. package/dist/graphqlValidator.js +84 -0
  346. package/dist/index.d.ts +1 -0
  347. package/dist/index.js +23 -0
  348. package/package.json +66 -0
  349. package/schema/2026-04.graphql +61256 -0
  350. package/schema/2026-04.introspection.json +1 -0
@@ -0,0 +1,620 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var collections_exports = {};
20
+ __export(collections_exports, {
21
+ runCollections: () => runCollections
22
+ });
23
+ module.exports = __toCommonJS(collections_exports);
24
+ var import_errors = require("../errors");
25
+ var import_gid = require("../gid");
26
+ var import_input = require("../input");
27
+ var import_output = require("../output");
28
+ var import_computedFields = require("../output/computedFields");
29
+ var import_router = require("../router");
30
+ var import_select = require("../selection/select");
31
+ var import_userErrors = require("../userErrors");
32
+ var import_publishablePublish = require("../workflows/products/publishablePublish");
33
+ var import_shared = require("./_shared");
34
+ const collectionSummarySelection = {
35
+ id: true,
36
+ title: true,
37
+ handle: true,
38
+ updatedAt: true
39
+ };
40
+ const productSummarySelection = {
41
+ id: true,
42
+ title: true,
43
+ handle: true,
44
+ status: true,
45
+ updatedAt: true
46
+ };
47
+ const productFullSelection = {
48
+ ...productSummarySelection,
49
+ createdAt: true,
50
+ tags: true
51
+ };
52
+ const collectionFullSelection = {
53
+ ...collectionSummarySelection,
54
+ description: true,
55
+ sortOrder: true,
56
+ templateSuffix: true
57
+ };
58
+ const collectionSummarySelectionForGet = {
59
+ ...collectionSummarySelection,
60
+ ...import_computedFields.computedPublicationsSelection
61
+ };
62
+ const collectionFullSelectionForGet = {
63
+ ...collectionFullSelection,
64
+ ...import_computedFields.computedPublicationsSelection
65
+ };
66
+ const getCollectionSelection = (view) => {
67
+ if (view === "ids") return { id: true };
68
+ if (view === "full") return collectionFullSelection;
69
+ if (view === "raw") return {};
70
+ return collectionSummarySelection;
71
+ };
72
+ const getCollectionSelectionForGet = (view) => {
73
+ if (view === "ids") return { id: true };
74
+ if (view === "full") return collectionFullSelectionForGet;
75
+ if (view === "raw") return {};
76
+ return collectionSummarySelectionForGet;
77
+ };
78
+ const getProductSelection = (view) => {
79
+ if (view === "ids") return { id: true };
80
+ if (view === "full") return productFullSelection;
81
+ if (view === "raw") return {};
82
+ return productSummarySelection;
83
+ };
84
+ const getListNodeSelection = (view) => getCollectionSelection(view);
85
+ const runCollections = async ({
86
+ ctx,
87
+ verb,
88
+ argv
89
+ }) => {
90
+ if (argv.includes("--help") || argv.includes("-h")) {
91
+ console.log(
92
+ [
93
+ "Usage:",
94
+ " shop collections <verb> [flags]",
95
+ "",
96
+ "Verbs:",
97
+ " create|get|by-handle|by-identifier|list|count|update|delete|duplicate",
98
+ " rules-conditions",
99
+ " add-products|remove-products|reorder-products|list-products",
100
+ " publish|unpublish",
101
+ "",
102
+ "Common output flags:",
103
+ " --view summary|ids|full|raw",
104
+ " --select <path> (repeatable; dot paths; adds to base view selection)",
105
+ " --selection <graphql> (selection override; can be @file.gql)"
106
+ ].join("\n")
107
+ );
108
+ return;
109
+ }
110
+ if (verb === "by-handle") {
111
+ const args = (0, import_router.parseStandardArgs)({ argv, extraOptions: { handle: { type: "string" } } });
112
+ const handle = args.handle;
113
+ if (!handle) throw new import_errors.CliError("Missing --handle", 2);
114
+ const selectValues = Array.isArray(args.select) ? args.select : args.select ? [args.select] : [];
115
+ const selectionOverride = typeof args.selection === "string" && args.selection.length > 0;
116
+ const select = !selectionOverride && ctx.view !== "raw" && ctx.view !== "ids" ? Array.from(/* @__PURE__ */ new Set([...selectValues, "resourcePublicationsV2.nodes.publication.name"])) : args.select;
117
+ const includeValues = Array.isArray(args.include) ? args.include : args.include ? [args.include] : [];
118
+ const include = ctx.view === "all" ? Array.from(/* @__PURE__ */ new Set([...includeValues, "resourcePublicationsV2"])) : args.include;
119
+ const selection = (0, import_select.resolveSelection)({
120
+ resource: "collections",
121
+ view: ctx.view,
122
+ baseSelection: getCollectionSelectionForGet(ctx.view),
123
+ select,
124
+ selection: args.selection,
125
+ include,
126
+ ensureId: ctx.quiet,
127
+ defaultConnectionFirst: ctx.view === "all" ? 50 : 10
128
+ });
129
+ const result = await (0, import_router.runQuery)(ctx, {
130
+ collectionByHandle: { __args: { handle }, ...selection }
131
+ });
132
+ if (result === void 0) return;
133
+ const wantsResourcePublicationsV2 = Array.isArray(args.select) && args.select.some((p) => typeof p === "string" && p.startsWith("resourcePublicationsV2"));
134
+ const wantsResourcePublicationsV2ViaSelection = typeof args.selection === "string" && args.selection.includes("resourcePublicationsV2");
135
+ const stripResourcePublicationsV2 = !(wantsResourcePublicationsV2 || wantsResourcePublicationsV2ViaSelection);
136
+ const withComputed = (0, import_computedFields.applyComputedFieldsToNode)(result.collectionByHandle, {
137
+ view: ctx.view,
138
+ stripResourcePublicationsV2
139
+ });
140
+ (0, import_output.printNode)({ node: withComputed, format: ctx.format, quiet: ctx.quiet });
141
+ return;
142
+ }
143
+ if (verb === "by-identifier") {
144
+ const args = (0, import_router.parseStandardArgs)({ argv, extraOptions: { identifier: { type: "string" } } });
145
+ const identifier = (0, import_shared.parseJsonArg)(args.identifier, "--identifier");
146
+ const selectValues = Array.isArray(args.select) ? args.select : args.select ? [args.select] : [];
147
+ const selectionOverride = typeof args.selection === "string" && args.selection.length > 0;
148
+ const select = !selectionOverride && ctx.view !== "raw" && ctx.view !== "ids" ? Array.from(/* @__PURE__ */ new Set([...selectValues, "resourcePublicationsV2.nodes.publication.name"])) : args.select;
149
+ const includeValues = Array.isArray(args.include) ? args.include : args.include ? [args.include] : [];
150
+ const include = ctx.view === "all" ? Array.from(/* @__PURE__ */ new Set([...includeValues, "resourcePublicationsV2"])) : args.include;
151
+ const selection = (0, import_select.resolveSelection)({
152
+ resource: "collections",
153
+ view: ctx.view,
154
+ baseSelection: getCollectionSelectionForGet(ctx.view),
155
+ select,
156
+ selection: args.selection,
157
+ include,
158
+ ensureId: ctx.quiet,
159
+ defaultConnectionFirst: ctx.view === "all" ? 50 : 10
160
+ });
161
+ const result = await (0, import_router.runQuery)(ctx, {
162
+ collectionByIdentifier: { __args: { identifier }, ...selection }
163
+ });
164
+ if (result === void 0) return;
165
+ const wantsResourcePublicationsV2 = Array.isArray(args.select) && args.select.some((p) => typeof p === "string" && p.startsWith("resourcePublicationsV2"));
166
+ const wantsResourcePublicationsV2ViaSelection = typeof args.selection === "string" && args.selection.includes("resourcePublicationsV2");
167
+ const stripResourcePublicationsV2 = !(wantsResourcePublicationsV2 || wantsResourcePublicationsV2ViaSelection);
168
+ const withComputed = (0, import_computedFields.applyComputedFieldsToNode)(result.collectionByIdentifier, {
169
+ view: ctx.view,
170
+ stripResourcePublicationsV2
171
+ });
172
+ (0, import_output.printNode)({ node: withComputed, format: ctx.format, quiet: ctx.quiet });
173
+ return;
174
+ }
175
+ if (verb === "rules-conditions") {
176
+ const args = (0, import_router.parseStandardArgs)({ argv, extraOptions: {} });
177
+ const selection = (0, import_select.resolveSelection)({
178
+ typeName: "CollectionRuleConditions",
179
+ view: ctx.view,
180
+ baseSelection: {
181
+ ruleType: true,
182
+ defaultRelation: true,
183
+ allowedRelations: true,
184
+ ruleObject: {
185
+ __typename: true,
186
+ on_CollectionRuleMetafieldCondition: {
187
+ metafieldDefinition: { id: true, name: true, namespace: true, key: true }
188
+ }
189
+ },
190
+ __typename: true
191
+ },
192
+ select: args.select,
193
+ selection: args.selection,
194
+ include: args.include,
195
+ ensureId: false
196
+ });
197
+ const result = await (0, import_router.runQuery)(ctx, { collectionRulesConditions: selection });
198
+ if (result === void 0) return;
199
+ (0, import_output.printJson)(result.collectionRulesConditions, ctx.format !== "raw");
200
+ return;
201
+ }
202
+ if (verb === "get") {
203
+ const args = (0, import_router.parseStandardArgs)({ argv, extraOptions: {} });
204
+ const id = (0, import_shared.requireId)(args.id, "Collection");
205
+ const selectValues = Array.isArray(args.select) ? args.select : args.select ? [args.select] : [];
206
+ const selectionOverride = typeof args.selection === "string" && args.selection.length > 0;
207
+ const select = !selectionOverride && ctx.view !== "raw" && ctx.view !== "ids" ? Array.from(/* @__PURE__ */ new Set([...selectValues, "resourcePublicationsV2.nodes.publication.name"])) : args.select;
208
+ const includeValues = Array.isArray(args.include) ? args.include : args.include ? [args.include] : [];
209
+ const include = ctx.view === "all" ? Array.from(/* @__PURE__ */ new Set([...includeValues, "resourcePublicationsV2"])) : args.include;
210
+ const selection = (0, import_select.resolveSelection)({
211
+ resource: "collections",
212
+ view: ctx.view,
213
+ baseSelection: getCollectionSelectionForGet(ctx.view),
214
+ select,
215
+ selection: args.selection,
216
+ include,
217
+ ensureId: ctx.quiet,
218
+ defaultConnectionFirst: ctx.view === "all" ? 50 : 10
219
+ });
220
+ const result = await (0, import_router.runQuery)(ctx, {
221
+ collection: { __args: { id }, ...selection }
222
+ });
223
+ if (result === void 0) return;
224
+ const wantsResourcePublicationsV2 = Array.isArray(args.select) && args.select.some((p) => typeof p === "string" && p.startsWith("resourcePublicationsV2"));
225
+ const wantsResourcePublicationsV2ViaSelection = typeof args.selection === "string" && args.selection.includes("resourcePublicationsV2");
226
+ const stripResourcePublicationsV2 = !(wantsResourcePublicationsV2 || wantsResourcePublicationsV2ViaSelection);
227
+ const withComputed = (0, import_computedFields.applyComputedFieldsToNode)(result.collection, {
228
+ view: ctx.view,
229
+ stripResourcePublicationsV2
230
+ });
231
+ (0, import_output.printNode)({ node: withComputed, format: ctx.format, quiet: ctx.quiet });
232
+ return;
233
+ }
234
+ if (verb === "list") {
235
+ const args = (0, import_router.parseStandardArgs)({ argv, extraOptions: {} });
236
+ const first = (0, import_shared.parseFirst)(args.first);
237
+ const after = args.after;
238
+ const query = args.query;
239
+ const reverse = args.reverse;
240
+ const sortKey = args.sort;
241
+ const nodeSelection = (0, import_select.resolveSelection)({
242
+ resource: "collections",
243
+ view: ctx.view,
244
+ baseSelection: getListNodeSelection(ctx.view),
245
+ select: args.select,
246
+ selection: args.selection,
247
+ include: args.include,
248
+ ensureId: ctx.quiet
249
+ });
250
+ const result = await (0, import_router.runQuery)(ctx, {
251
+ collections: {
252
+ __args: { first, after, query, reverse, sortKey },
253
+ pageInfo: { hasNextPage: true, endCursor: true },
254
+ nodes: nodeSelection
255
+ }
256
+ });
257
+ if (result === void 0) return;
258
+ (0, import_output.printConnection)({
259
+ connection: result.collections,
260
+ format: ctx.format,
261
+ quiet: ctx.quiet,
262
+ nextPageArgs: (0, import_shared.buildListNextPageArgs)("collections", { first, query, sort: sortKey, reverse })
263
+ });
264
+ return;
265
+ }
266
+ if (verb === "list-products") {
267
+ const args = (0, import_router.parseStandardArgs)({
268
+ argv,
269
+ extraOptions: {
270
+ handle: { type: "string" },
271
+ published: { type: "boolean" }
272
+ }
273
+ });
274
+ const rawId = args.id;
275
+ const rawHandle = args.handle;
276
+ const handle = typeof rawHandle === "string" && rawHandle.trim() ? rawHandle.trim() : void 0;
277
+ if (typeof rawId === "string" && rawId && handle) {
278
+ throw new import_errors.CliError("Pass exactly one of --id or --handle", 2);
279
+ }
280
+ if (!(typeof rawId === "string" && rawId) && !handle) {
281
+ throw new import_errors.CliError("Missing --id or --handle", 2);
282
+ }
283
+ const id = typeof rawId === "string" && rawId ? (0, import_shared.requireId)(rawId, "Collection") : void 0;
284
+ const toNumericId = (gid, typeLabel) => {
285
+ const match = /\/(\d+)$/.exec(gid);
286
+ if (!match) throw new import_errors.CliError(`Invalid ${typeLabel} ID`, 2);
287
+ return match[1];
288
+ };
289
+ const first = (0, import_shared.parseFirst)(args.first);
290
+ const after = args.after;
291
+ const userQuery = typeof args.query === "string" && args.query.trim() ? args.query.trim() : void 0;
292
+ const published = args.published === true;
293
+ const publishedFilter = "published_status:published";
294
+ const reverse = args.reverse;
295
+ const sortKey = args.sort;
296
+ const nodeSelection = (0, import_select.resolveSelection)({
297
+ resource: "products",
298
+ view: ctx.view,
299
+ baseSelection: getProductSelection(ctx.view),
300
+ select: args.select,
301
+ selection: args.selection,
302
+ include: args.include,
303
+ ensureId: ctx.quiet
304
+ });
305
+ let numericId = typeof id === "string" && id ? toNumericId(id, "Collection") : void 0;
306
+ if (!numericId && handle) {
307
+ const resolveResult = await (0, import_router.runQuery)(ctx, {
308
+ collectionByHandle: { __args: { handle }, id: true }
309
+ });
310
+ if (resolveResult === void 0) return;
311
+ const resolvedId = resolveResult?.collectionByHandle?.id;
312
+ if (typeof resolvedId !== "string" || !resolvedId) throw new import_errors.CliError("Collection not found", 2);
313
+ numericId = toNumericId(resolvedId, "Collection");
314
+ }
315
+ if (!numericId) throw new import_errors.CliError("Collection not found", 2);
316
+ const collectionFilter = `collection_id:${numericId}`;
317
+ const parts = [];
318
+ if (typeof userQuery === "string" && userQuery) parts.push(userQuery);
319
+ if (published && !(typeof userQuery === "string" && userQuery.includes(publishedFilter))) {
320
+ parts.push(publishedFilter);
321
+ }
322
+ if (!(typeof userQuery === "string" && userQuery.includes(collectionFilter))) {
323
+ parts.push(collectionFilter);
324
+ }
325
+ const query = parts.length > 0 ? parts.join(" ") : void 0;
326
+ const base = id ? `shop collections list-products --id ${id}` : `shop collections list-products --handle ${handle}`;
327
+ const result = await (0, import_router.runQuery)(ctx, {
328
+ products: {
329
+ __args: { first, after, query, reverse, sortKey },
330
+ pageInfo: { hasNextPage: true, endCursor: true },
331
+ nodes: nodeSelection
332
+ }
333
+ });
334
+ if (result === void 0) return;
335
+ (0, import_output.printConnection)({
336
+ connection: result.products,
337
+ format: ctx.format,
338
+ quiet: ctx.quiet,
339
+ nextPageArgs: {
340
+ base,
341
+ first,
342
+ query: typeof userQuery === "string" ? userQuery : void 0,
343
+ sort: typeof sortKey === "string" ? sortKey : void 0,
344
+ reverse: reverse === true,
345
+ extraFlags: published ? [{ flag: "--published", value: true }] : void 0
346
+ }
347
+ });
348
+ return;
349
+ }
350
+ if (verb === "count") {
351
+ const args = (0, import_router.parseStandardArgs)({ argv, extraOptions: { limit: { type: "string" } } });
352
+ const query = args.query;
353
+ const limitRaw = args.limit;
354
+ const limit = limitRaw === void 0 || limitRaw === null || limitRaw === "" ? void 0 : Number(limitRaw);
355
+ if (limit !== void 0 && (!Number.isFinite(limit) || limit <= 0)) {
356
+ throw new import_errors.CliError("--limit must be a positive number", 2);
357
+ }
358
+ const result = await (0, import_router.runQuery)(ctx, {
359
+ collectionsCount: {
360
+ __args: {
361
+ ...query ? { query } : {},
362
+ ...limit !== void 0 ? { limit: Math.floor(limit) } : {}
363
+ },
364
+ count: true,
365
+ precision: true
366
+ }
367
+ });
368
+ if (result === void 0) return;
369
+ if (ctx.quiet) return console.log(result.collectionsCount?.count ?? "");
370
+ (0, import_output.printJson)(result.collectionsCount, ctx.format !== "raw");
371
+ return;
372
+ }
373
+ if (verb === "create") {
374
+ const args = (0, import_router.parseStandardArgs)({ argv, extraOptions: {} });
375
+ const built = (0, import_input.buildInput)({
376
+ inputArg: args.input,
377
+ setArgs: args.set,
378
+ setJsonArgs: args["set-json"]
379
+ });
380
+ if (!built.used) throw new import_errors.CliError("Missing --input or --set/--set-json", 2);
381
+ const result = await (0, import_router.runMutation)(ctx, {
382
+ collectionCreate: {
383
+ __args: { input: built.input },
384
+ collection: collectionSummarySelection,
385
+ userErrors: { field: true, message: true }
386
+ }
387
+ });
388
+ if (result === void 0) return;
389
+ (0, import_userErrors.maybeFailOnUserErrors)({ payload: result.collectionCreate, failOnUserErrors: ctx.failOnUserErrors });
390
+ if (ctx.quiet) return console.log(result.collectionCreate?.collection?.id ?? "");
391
+ (0, import_output.printJson)(result.collectionCreate, ctx.format !== "raw");
392
+ return;
393
+ }
394
+ if (verb === "add-products" || verb === "remove-products") {
395
+ const args = (0, import_router.parseStandardArgs)({
396
+ argv,
397
+ extraOptions: {
398
+ "product-id": { type: "string", multiple: true }
399
+ }
400
+ });
401
+ const id = (0, import_shared.requireId)(args.id, "Collection");
402
+ const rawProducts = (0, import_shared.parseStringList)(args["product-id"], "--product-id");
403
+ const productIds = rawProducts.map((pid) => (0, import_gid.coerceGid)(pid, "Product"));
404
+ const mutation = verb === "add-products" ? "collectionAddProductsV2" : "collectionRemoveProducts";
405
+ const result = await (0, import_router.runMutation)(ctx, {
406
+ [mutation]: {
407
+ __args: { id, productIds },
408
+ job: { id: true, done: true },
409
+ userErrors: { field: true, message: true }
410
+ }
411
+ });
412
+ if (result === void 0) return;
413
+ const payload = result[mutation];
414
+ (0, import_userErrors.maybeFailOnUserErrors)({ payload, failOnUserErrors: ctx.failOnUserErrors });
415
+ if (ctx.quiet) {
416
+ process.stdout.write(`${payload?.job?.id ?? ""}
417
+ `);
418
+ return;
419
+ }
420
+ (0, import_output.printNode)({
421
+ node: { job: payload?.job, collectionId: id, productIds, userErrors: payload?.userErrors },
422
+ format: ctx.format,
423
+ quiet: false
424
+ });
425
+ return;
426
+ }
427
+ if (verb === "reorder-products") {
428
+ const args = (0, import_router.parseStandardArgs)({
429
+ argv,
430
+ extraOptions: {
431
+ moves: { type: "string" },
432
+ move: { type: "string", multiple: true }
433
+ }
434
+ });
435
+ const id = (0, import_shared.requireId)(args.id, "Collection");
436
+ let moves = [];
437
+ if (args.moves) {
438
+ moves = (0, import_shared.parseJsonArg)(args.moves, "--moves");
439
+ if (!Array.isArray(moves)) throw new import_errors.CliError("--moves must be a JSON array", 2);
440
+ } else if (args.move) {
441
+ const raw = args.move;
442
+ const parsedMoves = [];
443
+ for (const item of raw) {
444
+ const idx = item.lastIndexOf(":");
445
+ if (idx <= 0 || idx === item.length - 1) throw new import_errors.CliError("--move must be <productId>:<newPosition>", 2);
446
+ const productId = item.slice(0, idx).trim();
447
+ const pos = Number(item.slice(idx + 1).trim());
448
+ if (!productId) throw new import_errors.CliError("--move productId cannot be empty", 2);
449
+ if (!Number.isFinite(pos) || pos < 0) throw new import_errors.CliError("--move newPosition must be a non-negative number", 2);
450
+ parsedMoves.push({ id: (0, import_gid.coerceGid)(productId, "Product"), newPosition: Math.floor(pos) });
451
+ }
452
+ moves = parsedMoves;
453
+ }
454
+ if (moves.length === 0) {
455
+ throw new import_errors.CliError("Missing moves: pass either --moves <json|@file> or --move <productId>:<newPosition> (repeatable)", 2);
456
+ }
457
+ const normalizedMoves = moves.map((move, i) => {
458
+ const mid = move?.id;
459
+ const newPosition = move?.newPosition;
460
+ if (typeof mid !== "string" || !mid.trim()) throw new import_errors.CliError(`moves[${i}].id is required`, 2);
461
+ const pos = Number(newPosition);
462
+ if (!Number.isFinite(pos) || pos < 0) throw new import_errors.CliError(`moves[${i}].newPosition must be a non-negative number`, 2);
463
+ return { id: mid.startsWith("gid://") ? mid : (0, import_gid.coerceGid)(mid, "Product"), newPosition: Math.floor(pos) };
464
+ });
465
+ const result = await (0, import_router.runMutation)(ctx, {
466
+ collectionReorderProducts: {
467
+ __args: { id, moves: normalizedMoves },
468
+ job: { id: true, done: true },
469
+ userErrors: { field: true, message: true }
470
+ }
471
+ });
472
+ if (result === void 0) return;
473
+ (0, import_userErrors.maybeFailOnUserErrors)({ payload: result.collectionReorderProducts, failOnUserErrors: ctx.failOnUserErrors });
474
+ if (ctx.quiet) {
475
+ process.stdout.write(`${result.collectionReorderProducts?.job?.id ?? ""}
476
+ `);
477
+ return;
478
+ }
479
+ (0, import_output.printNode)({
480
+ node: {
481
+ job: result.collectionReorderProducts?.job,
482
+ collectionId: id,
483
+ moves: normalizedMoves,
484
+ userErrors: result.collectionReorderProducts?.userErrors
485
+ },
486
+ format: ctx.format,
487
+ quiet: false
488
+ });
489
+ return;
490
+ }
491
+ if (verb === "publish" || verb === "unpublish") {
492
+ const args = (0, import_router.parseStandardArgs)({
493
+ argv,
494
+ extraOptions: {
495
+ "publication-id": { type: "string", multiple: true },
496
+ publication: { type: "string", multiple: true }
497
+ }
498
+ });
499
+ const id = (0, import_shared.requireId)(args.id, "Collection");
500
+ const publicationIds = args["publication-id"] ?? [];
501
+ const publicationNames = args.publication ?? [];
502
+ const resolvedPublicationIds = await (0, import_publishablePublish.resolvePublicationIds)({
503
+ ctx,
504
+ publicationIds,
505
+ publicationNames
506
+ });
507
+ const collectionPublications = resolvedPublicationIds.map((publicationId) => ({ publicationId }));
508
+ const mutation = verb === "publish" ? "collectionPublish" : "collectionUnpublish";
509
+ const result = await (0, import_router.runMutation)(ctx, {
510
+ [mutation]: {
511
+ __args: { input: { id, collectionPublications } },
512
+ collection: { id: true, title: true },
513
+ userErrors: { field: true, message: true }
514
+ }
515
+ });
516
+ if (result === void 0) return;
517
+ const payload = result[mutation];
518
+ (0, import_userErrors.maybeFailOnUserErrors)({ payload, failOnUserErrors: ctx.failOnUserErrors });
519
+ if (ctx.quiet) return console.log(payload?.collection?.id ?? "");
520
+ (0, import_output.printJson)(payload, ctx.format !== "raw");
521
+ return;
522
+ }
523
+ if (verb === "update") {
524
+ const args = (0, import_router.parseStandardArgs)({ argv, extraOptions: {} });
525
+ const id = (0, import_shared.requireId)(args.id, "Collection");
526
+ const built = (0, import_input.buildInput)({
527
+ inputArg: args.input,
528
+ setArgs: args.set,
529
+ setJsonArgs: args["set-json"]
530
+ });
531
+ if (!built.used) throw new import_errors.CliError("Missing --input or --set/--set-json", 2);
532
+ const input = { ...built.input, id };
533
+ const result = await (0, import_router.runMutation)(ctx, {
534
+ collectionUpdate: {
535
+ __args: { input },
536
+ collection: collectionSummarySelection,
537
+ userErrors: { field: true, message: true }
538
+ }
539
+ });
540
+ if (result === void 0) return;
541
+ (0, import_userErrors.maybeFailOnUserErrors)({ payload: result.collectionUpdate, failOnUserErrors: ctx.failOnUserErrors });
542
+ if (ctx.quiet) return console.log(result.collectionUpdate?.collection?.id ?? "");
543
+ (0, import_output.printJson)(result.collectionUpdate, ctx.format !== "raw");
544
+ return;
545
+ }
546
+ if (verb === "delete") {
547
+ const args = (0, import_router.parseStandardArgs)({ argv, extraOptions: {} });
548
+ const id = (0, import_shared.requireId)(args.id, "Collection");
549
+ if (!args.yes) throw new import_errors.CliError("Refusing to delete without --yes", 2);
550
+ const result = await (0, import_router.runMutation)(ctx, {
551
+ collectionDelete: {
552
+ __args: { input: { id } },
553
+ deletedCollectionId: true,
554
+ userErrors: { field: true, message: true }
555
+ }
556
+ });
557
+ if (result === void 0) return;
558
+ (0, import_userErrors.maybeFailOnUserErrors)({ payload: result.collectionDelete, failOnUserErrors: ctx.failOnUserErrors });
559
+ if (ctx.quiet) return console.log(result.collectionDelete?.deletedCollectionId ?? "");
560
+ (0, import_output.printJson)(result.collectionDelete, ctx.format !== "raw");
561
+ return;
562
+ }
563
+ if (verb === "duplicate") {
564
+ const args = (0, import_router.parseStandardArgs)({ argv, extraOptions: { "copy-publications": { type: "boolean" } } });
565
+ const id = (0, import_shared.requireId)(args.id, "Collection");
566
+ const built = (0, import_input.buildInput)({
567
+ inputArg: void 0,
568
+ setArgs: args.set,
569
+ setJsonArgs: args["set-json"]
570
+ });
571
+ let newTitle = args["new-title"] ?? (built.used ? built.input?.newTitle : void 0);
572
+ if (!newTitle) {
573
+ const original = await (0, import_router.runQuery)(ctx, {
574
+ collection: { __args: { id }, title: true }
575
+ });
576
+ if (original === void 0) return;
577
+ const title = original.collection?.title;
578
+ if (!title) throw new import_errors.CliError("Could not resolve original collection title to auto-generate newTitle", 2);
579
+ newTitle = `${title} (Copy)`;
580
+ }
581
+ const copyPublications = args["copy-publications"];
582
+ const input = {
583
+ collectionId: id,
584
+ newTitle,
585
+ ...copyPublications === void 0 ? {} : { copyPublications },
586
+ ...built.used ? built.input : {}
587
+ };
588
+ const result = await (0, import_router.runMutation)(ctx, {
589
+ collectionDuplicate: {
590
+ __args: { input },
591
+ collection: { id: true },
592
+ job: { id: true, done: true },
593
+ userErrors: { field: true, message: true, code: true }
594
+ }
595
+ });
596
+ if (result === void 0) return;
597
+ (0, import_userErrors.maybeFailOnUserErrors)({ payload: result.collectionDuplicate, failOnUserErrors: ctx.failOnUserErrors });
598
+ if (ctx.quiet) {
599
+ process.stdout.write(`${result.collectionDuplicate?.job?.id ?? result.collectionDuplicate?.collection?.id ?? ""}
600
+ `);
601
+ return;
602
+ }
603
+ (0, import_output.printNode)({
604
+ node: {
605
+ job: result.collectionDuplicate?.job,
606
+ collectionId: result.collectionDuplicate?.collection?.id,
607
+ userErrors: result.collectionDuplicate?.userErrors
608
+ },
609
+ format: ctx.format,
610
+ quiet: false
611
+ });
612
+ return;
613
+ }
614
+ throw new import_errors.CliError(`Unknown verb for collections: ${verb}`, 2);
615
+ };
616
+ // Annotate the CommonJS export names for ESM import in node:
617
+ 0 && (module.exports = {
618
+ runCollections
619
+ });
620
+ //# sourceMappingURL=collections.js.map
@@ -0,0 +1,6 @@
1
+ import { type CommandContext } from '../router';
2
+ export declare const runComments: ({ ctx, verb, argv, }: {
3
+ ctx: CommandContext;
4
+ verb: string;
5
+ argv: string[];
6
+ }) => Promise<void>;