@sanity/cli 6.0.0-alpha.3 → 6.0.0-alpha.5

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 (376) hide show
  1. package/dist/actions/auth/login/{index.js → login.js} +1 -1
  2. package/dist/actions/auth/login/{index.js.map → login.js.map} +1 -1
  3. package/dist/actions/dev/startStudioDevServer.js +3 -8
  4. package/dist/actions/dev/startStudioDevServer.js.map +1 -1
  5. package/dist/actions/dev/types.d.ts +1 -3
  6. package/dist/actions/dev/types.js.map +1 -1
  7. package/dist/actions/documents/validate.d.ts +0 -2
  8. package/dist/actions/documents/validate.js +21 -1
  9. package/dist/actions/documents/validate.js.map +1 -1
  10. package/dist/actions/exec/execScript.js +1 -1
  11. package/dist/actions/exec/execScript.js.map +1 -1
  12. package/dist/actions/graphql/__tests__/getGraphQLAPIs.test.js +1 -1
  13. package/dist/actions/graphql/__tests__/getGraphQLAPIs.test.js.map +1 -1
  14. package/dist/actions/graphql/getGraphQLAPIs.js +1 -1
  15. package/dist/actions/graphql/getGraphQLAPIs.js.map +1 -1
  16. package/dist/actions/manifest/extractManifest.js +1 -4
  17. package/dist/actions/manifest/extractManifest.js.map +1 -1
  18. package/dist/actions/organizations/getOrganizationChoices.d.ts +6 -0
  19. package/dist/actions/organizations/getOrganizationChoices.js +23 -0
  20. package/dist/actions/organizations/getOrganizationChoices.js.map +1 -0
  21. package/dist/actions/organizations/getOrganizationsWithAttachGrantInfo.d.ts +2 -0
  22. package/dist/actions/organizations/getOrganizationsWithAttachGrantInfo.js +9 -0
  23. package/dist/actions/organizations/getOrganizationsWithAttachGrantInfo.js.map +1 -0
  24. package/dist/actions/organizations/hasProjectAttachGrant.d.ts +1 -0
  25. package/dist/actions/organizations/hasProjectAttachGrant.js +24 -0
  26. package/dist/actions/organizations/hasProjectAttachGrant.js.map +1 -0
  27. package/dist/actions/schema/deleteSchemaAction.d.ts +13 -5
  28. package/dist/actions/schema/deleteSchemaAction.js +12 -17
  29. package/dist/actions/schema/deleteSchemaAction.js.map +1 -1
  30. package/dist/actions/schema/deploySchemas.d.ts +15 -0
  31. package/dist/actions/schema/deploySchemas.js +98 -0
  32. package/dist/actions/schema/deploySchemas.js.map +1 -0
  33. package/dist/actions/schema/listSchemas.d.ts +12 -0
  34. package/dist/actions/schema/listSchemas.js +119 -0
  35. package/dist/actions/schema/listSchemas.js.map +1 -0
  36. package/dist/actions/schema/schemaStoreTypes.d.ts +0 -11
  37. package/dist/actions/schema/schemaStoreTypes.js.map +1 -1
  38. package/dist/actions/schema/utils/debug.d.ts +2 -0
  39. package/dist/actions/schema/utils/debug.js +5 -0
  40. package/dist/actions/schema/utils/debug.js.map +1 -0
  41. package/dist/actions/schema/utils/manifestExtractor.d.ts +3 -8
  42. package/dist/actions/schema/utils/manifestExtractor.js +12 -17
  43. package/dist/actions/schema/utils/manifestExtractor.js.map +1 -1
  44. package/dist/actions/schema/utils/manifestReader.d.ts +2 -9
  45. package/dist/actions/schema/utils/manifestReader.js +6 -12
  46. package/dist/actions/schema/utils/manifestReader.js.map +1 -1
  47. package/dist/actions/schema/utils/schemaStoreOutStrings.d.ts +0 -1
  48. package/dist/actions/schema/utils/schemaStoreOutStrings.js +1 -1
  49. package/dist/actions/schema/utils/schemaStoreOutStrings.js.map +1 -1
  50. package/dist/actions/schema/utils/schemaStoreValidation.d.ts +10 -62
  51. package/dist/actions/schema/utils/schemaStoreValidation.js +40 -127
  52. package/dist/actions/schema/utils/schemaStoreValidation.js.map +1 -1
  53. package/dist/actions/schema/utils/uniqByProjectIdDataset.d.ts +14 -0
  54. package/dist/actions/schema/utils/uniqByProjectIdDataset.js +9 -0
  55. package/dist/actions/schema/utils/uniqByProjectIdDataset.js.map +1 -0
  56. package/dist/actions/users/getMembersForProject.d.ts +1 -3
  57. package/dist/actions/users/getMembersForProject.js +6 -17
  58. package/dist/actions/users/getMembersForProject.js.map +1 -1
  59. package/dist/actions/users/types.d.ts +0 -11
  60. package/dist/actions/users/types.js.map +1 -1
  61. package/dist/commands/__tests__/debug.test.js +113 -220
  62. package/dist/commands/__tests__/debug.test.js.map +1 -1
  63. package/dist/commands/__tests__/deploy.test.js +325 -293
  64. package/dist/commands/__tests__/deploy.test.js.map +1 -1
  65. package/dist/commands/__tests__/dev.test.js +62 -19
  66. package/dist/commands/__tests__/dev.test.js.map +1 -1
  67. package/dist/commands/__tests__/init/init.authentication.test.js +73 -0
  68. package/dist/commands/__tests__/init/init.authentication.test.js.map +1 -0
  69. package/dist/commands/__tests__/init/init.create-new-project.test.js +195 -0
  70. package/dist/commands/__tests__/init/init.create-new-project.test.js.map +1 -0
  71. package/dist/commands/__tests__/init/init.plan.test.js +279 -0
  72. package/dist/commands/__tests__/init/init.plan.test.js.map +1 -0
  73. package/dist/commands/__tests__/init/init.setup.test.js +335 -0
  74. package/dist/commands/__tests__/init/init.setup.test.js.map +1 -0
  75. package/dist/commands/__tests__/install.test.js +46 -22
  76. package/dist/commands/__tests__/install.test.js.map +1 -1
  77. package/dist/commands/__tests__/logout.test.js +8 -5
  78. package/dist/commands/__tests__/logout.test.js.map +1 -1
  79. package/dist/commands/__tests__/manage.test.js +29 -24
  80. package/dist/commands/__tests__/manage.test.js.map +1 -1
  81. package/dist/commands/__tests__/migration.test.js +119 -0
  82. package/dist/commands/__tests__/migration.test.js.map +1 -0
  83. package/dist/commands/__tests__/versions.test.js +22 -14
  84. package/dist/commands/__tests__/versions.test.js.map +1 -1
  85. package/dist/commands/backup/__tests__/disable.test.js +72 -75
  86. package/dist/commands/backup/__tests__/disable.test.js.map +1 -1
  87. package/dist/commands/backup/__tests__/download.test.js +169 -80
  88. package/dist/commands/backup/__tests__/download.test.js.map +1 -1
  89. package/dist/commands/backup/__tests__/enable.test.js +109 -140
  90. package/dist/commands/backup/__tests__/enable.test.js.map +1 -1
  91. package/dist/commands/backup/__tests__/list.test.js +84 -75
  92. package/dist/commands/backup/__tests__/list.test.js.map +1 -1
  93. package/dist/commands/backup/disable.js +5 -11
  94. package/dist/commands/backup/disable.js.map +1 -1
  95. package/dist/commands/backup/enable.js +5 -11
  96. package/dist/commands/backup/enable.js.map +1 -1
  97. package/dist/commands/backup/list.js +7 -8
  98. package/dist/commands/backup/list.js.map +1 -1
  99. package/dist/commands/cors/__tests__/add.test.js +68 -38
  100. package/dist/commands/cors/__tests__/add.test.js.map +1 -1
  101. package/dist/commands/cors/__tests__/delete.test.js +52 -37
  102. package/dist/commands/cors/__tests__/delete.test.js.map +1 -1
  103. package/dist/commands/cors/__tests__/list.test.js +80 -57
  104. package/dist/commands/cors/__tests__/list.test.js.map +1 -1
  105. package/dist/commands/cors/add.js +5 -13
  106. package/dist/commands/cors/add.js.map +1 -1
  107. package/dist/commands/cors/delete.js +7 -15
  108. package/dist/commands/cors/delete.js.map +1 -1
  109. package/dist/commands/cors/list.js +2 -10
  110. package/dist/commands/cors/list.js.map +1 -1
  111. package/dist/commands/dataset/__tests__/copy.test.js +197 -89
  112. package/dist/commands/dataset/__tests__/copy.test.js.map +1 -1
  113. package/dist/commands/dataset/__tests__/create.test.js +147 -117
  114. package/dist/commands/dataset/__tests__/create.test.js.map +1 -1
  115. package/dist/commands/dataset/__tests__/delete.test.js +75 -68
  116. package/dist/commands/dataset/__tests__/delete.test.js.map +1 -1
  117. package/dist/commands/dataset/__tests__/export.test.js +123 -83
  118. package/dist/commands/dataset/__tests__/export.test.js.map +1 -1
  119. package/dist/commands/dataset/__tests__/import.test.js +2 -2
  120. package/dist/commands/dataset/__tests__/import.test.js.map +1 -1
  121. package/dist/commands/dataset/__tests__/list.test.js +107 -65
  122. package/dist/commands/dataset/__tests__/list.test.js.map +1 -1
  123. package/dist/commands/dataset/alias/__tests__/create.test.js +114 -74
  124. package/dist/commands/dataset/alias/__tests__/create.test.js.map +1 -1
  125. package/dist/commands/dataset/alias/__tests__/delete.test.js +40 -29
  126. package/dist/commands/dataset/alias/__tests__/delete.test.js.map +1 -1
  127. package/dist/commands/dataset/alias/__tests__/link.test.js +114 -74
  128. package/dist/commands/dataset/alias/__tests__/link.test.js.map +1 -1
  129. package/dist/commands/dataset/alias/__tests__/unlink.test.js +44 -29
  130. package/dist/commands/dataset/alias/__tests__/unlink.test.js.map +1 -1
  131. package/dist/commands/dataset/export.js +4 -4
  132. package/dist/commands/dataset/export.js.map +1 -1
  133. package/dist/commands/dataset/visibility/__tests__/get.test.js +48 -67
  134. package/dist/commands/dataset/visibility/__tests__/get.test.js.map +1 -1
  135. package/dist/commands/dataset/visibility/__tests__/set.test.js +76 -123
  136. package/dist/commands/dataset/visibility/__tests__/set.test.js.map +1 -1
  137. package/dist/commands/dev.js +0 -1
  138. package/dist/commands/dev.js.map +1 -1
  139. package/dist/commands/docs/__tests__/search.test.js +8 -7
  140. package/dist/commands/docs/__tests__/search.test.js.map +1 -1
  141. package/dist/commands/documents/__tests__/create.test.js +328 -265
  142. package/dist/commands/documents/__tests__/create.test.js.map +1 -1
  143. package/dist/commands/documents/__tests__/delete.test.js +119 -87
  144. package/dist/commands/documents/__tests__/delete.test.js.map +1 -1
  145. package/dist/commands/documents/__tests__/get.test.js +68 -95
  146. package/dist/commands/documents/__tests__/get.test.js.map +1 -1
  147. package/dist/commands/documents/__tests__/query.test.js +87 -192
  148. package/dist/commands/documents/__tests__/query.test.js.map +1 -1
  149. package/dist/commands/documents/__tests__/validate.test.js +52 -29
  150. package/dist/commands/documents/__tests__/validate.test.js.map +1 -1
  151. package/dist/commands/documents/create.d.ts +1 -0
  152. package/dist/commands/documents/create.js +10 -9
  153. package/dist/commands/documents/create.js.map +1 -1
  154. package/dist/commands/documents/delete.js +2 -3
  155. package/dist/commands/documents/delete.js.map +1 -1
  156. package/dist/commands/documents/get.js +2 -3
  157. package/dist/commands/documents/get.js.map +1 -1
  158. package/dist/commands/documents/query.js +2 -3
  159. package/dist/commands/documents/query.js.map +1 -1
  160. package/dist/commands/documents/validate.js +0 -20
  161. package/dist/commands/documents/validate.js.map +1 -1
  162. package/dist/commands/graphql/__tests__/list.test.js +57 -45
  163. package/dist/commands/graphql/__tests__/list.test.js.map +1 -1
  164. package/dist/commands/graphql/__tests__/undeploy.test.js +85 -59
  165. package/dist/commands/graphql/__tests__/undeploy.test.js.map +1 -1
  166. package/dist/commands/graphql/list.js +2 -2
  167. package/dist/commands/graphql/list.js.map +1 -1
  168. package/dist/commands/graphql/undeploy.js +4 -9
  169. package/dist/commands/graphql/undeploy.js.map +1 -1
  170. package/dist/commands/hook/__tests__/attempt.test.js +48 -33
  171. package/dist/commands/hook/__tests__/attempt.test.js.map +1 -1
  172. package/dist/commands/hook/__tests__/create.test.js +49 -51
  173. package/dist/commands/hook/__tests__/create.test.js.map +1 -1
  174. package/dist/commands/hook/__tests__/delete.test.js +43 -30
  175. package/dist/commands/hook/__tests__/delete.test.js.map +1 -1
  176. package/dist/commands/hook/__tests__/list.test.js +38 -31
  177. package/dist/commands/hook/__tests__/list.test.js.map +1 -1
  178. package/dist/commands/hook/__tests__/logs.test.js +68 -40
  179. package/dist/commands/hook/__tests__/logs.test.js.map +1 -1
  180. package/dist/commands/hook/create.js +2 -6
  181. package/dist/commands/hook/create.js.map +1 -1
  182. package/dist/commands/hook/delete.js +5 -17
  183. package/dist/commands/hook/delete.js.map +1 -1
  184. package/dist/commands/hook/list.js +2 -8
  185. package/dist/commands/hook/list.js.map +1 -1
  186. package/dist/commands/init.d.ts +4 -0
  187. package/dist/commands/init.js +151 -18
  188. package/dist/commands/init.js.map +1 -1
  189. package/dist/commands/login.js +1 -1
  190. package/dist/commands/login.js.map +1 -1
  191. package/dist/commands/manifest/__tests__/extract.test.js +22 -13
  192. package/dist/commands/manifest/__tests__/extract.test.js.map +1 -1
  193. package/dist/commands/media/__tests__/create-aspect.test.js +41 -28
  194. package/dist/commands/media/__tests__/create-aspect.test.js.map +1 -1
  195. package/dist/commands/media/__tests__/delete-aspect.test.js +44 -35
  196. package/dist/commands/media/__tests__/delete-aspect.test.js.map +1 -1
  197. package/dist/commands/media/__tests__/deploy-aspect.test.js +67 -80
  198. package/dist/commands/media/__tests__/deploy-aspect.test.js.map +1 -1
  199. package/dist/commands/media/__tests__/export.test.js +365 -66
  200. package/dist/commands/media/__tests__/export.test.js.map +1 -1
  201. package/dist/commands/media/__tests__/import.test.js +171 -105
  202. package/dist/commands/media/__tests__/import.test.js.map +1 -1
  203. package/dist/commands/media/export.js +2 -2
  204. package/dist/commands/media/export.js.map +1 -1
  205. package/dist/commands/media/import.js +2 -2
  206. package/dist/commands/media/import.js.map +1 -1
  207. package/dist/commands/projects/__tests__/list.test.js +5 -4
  208. package/dist/commands/projects/__tests__/list.test.js.map +1 -1
  209. package/dist/commands/projects/list.js +2 -6
  210. package/dist/commands/projects/list.js.map +1 -1
  211. package/dist/commands/schema/__tests__/delete.test.js +396 -151
  212. package/dist/commands/schema/__tests__/delete.test.js.map +1 -1
  213. package/dist/commands/schema/__tests__/deploy.test.js +348 -0
  214. package/dist/commands/schema/__tests__/deploy.test.js.map +1 -0
  215. package/dist/commands/schema/__tests__/extract.test.js +19 -11
  216. package/dist/commands/schema/__tests__/extract.test.js.map +1 -1
  217. package/dist/commands/schema/__tests__/list.test.js +399 -0
  218. package/dist/commands/schema/__tests__/list.test.js.map +1 -0
  219. package/dist/commands/schema/__tests__/validate.test.js +27 -10
  220. package/dist/commands/schema/__tests__/validate.test.js.map +1 -1
  221. package/dist/commands/schema/delete.d.ts +1 -1
  222. package/dist/commands/schema/delete.js +20 -23
  223. package/dist/commands/schema/delete.js.map +1 -1
  224. package/dist/commands/schema/deploy.d.ts +16 -0
  225. package/dist/commands/schema/deploy.js +98 -0
  226. package/dist/commands/schema/deploy.js.map +1 -0
  227. package/dist/commands/schema/list.d.ts +15 -0
  228. package/dist/commands/schema/list.js +104 -0
  229. package/dist/commands/schema/list.js.map +1 -0
  230. package/dist/commands/telemetry/__tests__/disable.test.js +7 -5
  231. package/dist/commands/telemetry/__tests__/disable.test.js.map +1 -1
  232. package/dist/commands/telemetry/__tests__/enable.test.js +7 -5
  233. package/dist/commands/telemetry/__tests__/enable.test.js.map +1 -1
  234. package/dist/commands/telemetry/__tests__/status.test.js +7 -5
  235. package/dist/commands/telemetry/__tests__/status.test.js.map +1 -1
  236. package/dist/commands/tokens/__tests__/add.test.js +55 -40
  237. package/dist/commands/tokens/__tests__/add.test.js.map +1 -1
  238. package/dist/commands/tokens/__tests__/delete.test.js +72 -42
  239. package/dist/commands/tokens/__tests__/delete.test.js.map +1 -1
  240. package/dist/commands/tokens/__tests__/list.test.js +87 -60
  241. package/dist/commands/tokens/__tests__/list.test.js.map +1 -1
  242. package/dist/commands/tokens/add.js +3 -5
  243. package/dist/commands/tokens/add.js.map +1 -1
  244. package/dist/commands/users/__tests__/invite.test.js +100 -79
  245. package/dist/commands/users/__tests__/invite.test.js.map +1 -1
  246. package/dist/commands/users/__tests__/list.test.js +186 -180
  247. package/dist/commands/users/__tests__/list.test.js.map +1 -1
  248. package/dist/commands/users/invite.js +6 -17
  249. package/dist/commands/users/invite.js.map +1 -1
  250. package/dist/commands/users/list.js +4 -7
  251. package/dist/commands/users/list.js.map +1 -1
  252. package/dist/config/createCliConfig.d.ts +4 -4
  253. package/dist/services/backup.d.ts +8 -0
  254. package/dist/services/backup.js +19 -0
  255. package/dist/services/backup.js.map +1 -1
  256. package/dist/services/cors.d.ts +23 -0
  257. package/dist/services/cors.js +38 -0
  258. package/dist/services/cors.js.map +1 -0
  259. package/dist/services/graphql.d.ts +7 -0
  260. package/dist/services/graphql.js +11 -0
  261. package/dist/services/graphql.js.map +1 -1
  262. package/dist/services/hooks.d.ts +2 -0
  263. package/dist/services/hooks.js +19 -0
  264. package/dist/services/hooks.js.map +1 -1
  265. package/dist/services/organizations.d.ts +40 -0
  266. package/dist/services/organizations.js +41 -0
  267. package/dist/services/organizations.js.map +1 -0
  268. package/dist/services/projects.d.ts +31 -0
  269. package/dist/services/projects.js +71 -1
  270. package/dist/services/projects.js.map +1 -1
  271. package/dist/services/schemas.d.ts +4 -0
  272. package/dist/services/schemas.js +40 -0
  273. package/dist/services/schemas.js.map +1 -0
  274. package/dist/services/user.d.ts +10 -0
  275. package/dist/services/user.js +24 -0
  276. package/dist/services/user.js.map +1 -0
  277. package/dist/util/__tests__/getCliVersion.test.js +2 -2
  278. package/dist/util/__tests__/getCliVersion.test.js.map +1 -1
  279. package/dist/util/errorMessages.d.ts +1 -0
  280. package/dist/util/errorMessages.js +1 -0
  281. package/dist/util/errorMessages.js.map +1 -1
  282. package/dist/util/getCliVersion.js +1 -1
  283. package/dist/util/getCliVersion.js.map +1 -1
  284. package/dist/util/readPackageJson.d.ts +1 -15
  285. package/dist/util/readPackageJson.js +1 -1
  286. package/dist/util/readPackageJson.js.map +1 -1
  287. package/dist/util/uniqBy.d.ts +1 -0
  288. package/dist/util/uniqBy.js +14 -0
  289. package/dist/util/uniqBy.js.map +1 -0
  290. package/oclif.config.js +6 -1
  291. package/oclif.manifest.json +152 -158
  292. package/package.json +30 -31
  293. package/dist/actions/cors/constants.d.ts +0 -1
  294. package/dist/actions/cors/constants.js +0 -3
  295. package/dist/actions/cors/constants.js.map +0 -1
  296. package/dist/actions/cors/types.d.ts +0 -9
  297. package/dist/actions/cors/types.js +0 -3
  298. package/dist/actions/cors/types.js.map +0 -1
  299. package/dist/actions/migration/getMigrationRootDirectory.d.ts +0 -2
  300. package/dist/actions/migration/getMigrationRootDirectory.js +0 -14
  301. package/dist/actions/migration/getMigrationRootDirectory.js.map +0 -1
  302. package/dist/actions/migration/resolveMigrations.d.ts +0 -19
  303. package/dist/actions/migration/resolveMigrations.js +0 -43
  304. package/dist/actions/migration/resolveMigrations.js.map +0 -1
  305. package/dist/actions/migration/templates/__tests__/minimalAdvanced.test.js +0 -65
  306. package/dist/actions/migration/templates/__tests__/minimalAdvanced.test.js.map +0 -1
  307. package/dist/actions/migration/templates/__tests__/minimalSimple.test.js +0 -145
  308. package/dist/actions/migration/templates/__tests__/minimalSimple.test.js.map +0 -1
  309. package/dist/actions/migration/templates/__tests__/renameField.test.js +0 -63
  310. package/dist/actions/migration/templates/__tests__/renameField.test.js.map +0 -1
  311. package/dist/actions/migration/templates/__tests__/renameType.test.js +0 -61
  312. package/dist/actions/migration/templates/__tests__/renameType.test.js.map +0 -1
  313. package/dist/actions/migration/templates/__tests__/stringToPTE.test.js +0 -87
  314. package/dist/actions/migration/templates/__tests__/stringToPTE.test.js.map +0 -1
  315. package/dist/actions/migration/templates/index.d.ts +0 -5
  316. package/dist/actions/migration/templates/index.js +0 -7
  317. package/dist/actions/migration/templates/index.js.map +0 -1
  318. package/dist/actions/migration/templates/minimalAdvanced.d.ts +0 -4
  319. package/dist/actions/migration/templates/minimalAdvanced.js +0 -21
  320. package/dist/actions/migration/templates/minimalAdvanced.js.map +0 -1
  321. package/dist/actions/migration/templates/minimalSimple.d.ts +0 -4
  322. package/dist/actions/migration/templates/minimalSimple.js +0 -61
  323. package/dist/actions/migration/templates/minimalSimple.js.map +0 -1
  324. package/dist/actions/migration/templates/renameField.d.ts +0 -4
  325. package/dist/actions/migration/templates/renameField.js +0 -20
  326. package/dist/actions/migration/templates/renameField.js.map +0 -1
  327. package/dist/actions/migration/templates/renameType.d.ts +0 -4
  328. package/dist/actions/migration/templates/renameType.js +0 -19
  329. package/dist/actions/migration/templates/renameType.js.map +0 -1
  330. package/dist/actions/migration/templates/stringToPTE.d.ts +0 -4
  331. package/dist/actions/migration/templates/stringToPTE.js +0 -32
  332. package/dist/actions/migration/templates/stringToPTE.js.map +0 -1
  333. package/dist/actions/schema/__tests__/deleteSchemaAction.test.js +0 -294
  334. package/dist/actions/schema/__tests__/deleteSchemaAction.test.js.map +0 -1
  335. package/dist/actions/schema/schemaStoreConstants.d.ts +0 -1
  336. package/dist/actions/schema/schemaStoreConstants.js +0 -4
  337. package/dist/actions/schema/schemaStoreConstants.js.map +0 -1
  338. package/dist/actions/schema/utils/schemaActionHelpers.d.ts +0 -1
  339. package/dist/actions/schema/utils/schemaActionHelpers.js +0 -5
  340. package/dist/actions/schema/utils/schemaActionHelpers.js.map +0 -1
  341. package/dist/actions/schema/utils/schemaApiClient.d.ts +0 -6
  342. package/dist/actions/schema/utils/schemaApiClient.js +0 -17
  343. package/dist/actions/schema/utils/schemaApiClient.js.map +0 -1
  344. package/dist/actions/users/apiVersion.d.ts +0 -6
  345. package/dist/actions/users/apiVersion.js +0 -7
  346. package/dist/actions/users/apiVersion.js.map +0 -1
  347. package/dist/commands/__tests__/init.test.js +0 -411
  348. package/dist/commands/__tests__/init.test.js.map +0 -1
  349. package/dist/commands/migration/__tests__/create.test.js +0 -296
  350. package/dist/commands/migration/__tests__/create.test.js.map +0 -1
  351. package/dist/commands/migration/__tests__/list.test.js +0 -166
  352. package/dist/commands/migration/__tests__/list.test.js.map +0 -1
  353. package/dist/commands/migration/__tests__/run.test.js +0 -481
  354. package/dist/commands/migration/__tests__/run.test.js.map +0 -1
  355. package/dist/commands/migration/create.d.ts +0 -17
  356. package/dist/commands/migration/create.js +0 -143
  357. package/dist/commands/migration/create.js.map +0 -1
  358. package/dist/commands/migration/list.d.ts +0 -9
  359. package/dist/commands/migration/list.js +0 -61
  360. package/dist/commands/migration/list.js.map +0 -1
  361. package/dist/commands/migration/run.d.ts +0 -26
  362. package/dist/commands/migration/run.js +0 -271
  363. package/dist/commands/migration/run.js.map +0 -1
  364. package/dist/util/migration/constants.d.ts +0 -3
  365. package/dist/util/migration/constants.js +0 -10
  366. package/dist/util/migration/constants.js.map +0 -1
  367. package/dist/util/migration/ensureApiVersionFormat.d.ts +0 -9
  368. package/dist/util/migration/ensureApiVersionFormat.js +0 -16
  369. package/dist/util/migration/ensureApiVersionFormat.js.map +0 -1
  370. package/dist/util/migration/prettyMutationFormatter.d.ts +0 -8
  371. package/dist/util/migration/prettyMutationFormatter.js +0 -141
  372. package/dist/util/migration/prettyMutationFormatter.js.map +0 -1
  373. package/dist/utils/migration/resolveMigrationScript.d.ts +0 -44
  374. package/dist/utils/migration/resolveMigrationScript.js +0 -74
  375. package/dist/utils/migration/resolveMigrationScript.js.map +0 -1
  376. /package/dist/actions/auth/login/{index.d.ts → login.d.ts} +0 -0
@@ -1,44 +1,81 @@
1
1
  import { runCommand } from '@oclif/test';
2
- import { getCliConfig } from '@sanity/cli-core';
3
- import { testCommand } from '@sanity/cli-test';
2
+ import { mockApi, testCommand } from '@sanity/cli-test';
4
3
  import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest';
5
- import { deleteSchemaAction } from '../../../actions/schema/deleteSchemaAction.js';
4
+ import { extractManifestSafe } from '../../../actions/manifest/extractManifest.js';
5
+ import { createManifestReader } from '../../../actions/schema/utils/manifestReader.js';
6
+ import { SCHEMA_API_VERSION } from '../../../services/schemas.js';
7
+ import { NO_DATASET_ID, NO_PROJECT_ID } from '../../../util/errorMessages.js';
6
8
  import { DeleteSchemaCommand } from '../delete.js';
7
- // Mock the delete schema action
8
- vi.mock('../../../actions/schema/deleteSchemaAction.js', ()=>({
9
- deleteSchemaAction: vi.fn()
10
- }));
11
- // Mock the manifest extractor
12
- vi.mock('../../../actions/schema/utils/manifestExtractor.js', ()=>({
13
- createManifestExtractor: vi.fn(()=>vi.fn())
14
- }));
15
- // Mock the config functions
16
- vi.mock('../../../../../cli-core/src/config/findProjectRoot.js', ()=>({
17
- findProjectRoot: vi.fn().mockResolvedValue({
18
- directory: '/test/path',
19
- root: '/test/path',
20
- type: 'studio'
21
- })
22
- }));
23
- vi.mock('../../../../../cli-core/src/config/cli/getCliConfig.js', ()=>({
24
- getCliConfig: vi.fn().mockResolvedValue({
25
- api: {
26
- dataset: 'production',
27
- projectId: 'test-project'
28
- }
29
- })
30
- }));
31
- vi.mock('../../../../../cli-core/src/services/apiClient.js', ()=>({
32
- getProjectCliClient: vi.fn()
33
- }));
34
- vi.mock('../../../../../cli-core/src/services/getCliToken.js', ()=>({
35
- getCliToken: vi.fn().mockResolvedValue('test-token')
36
- }));
37
- const mockedDeleteSchemaAction = vi.mocked(deleteSchemaAction);
38
- const mockedGetCliConfig = vi.mocked(getCliConfig);
9
+ const mockManifest = {
10
+ createdAt: '2024-01-01T00:00:00.000Z',
11
+ studioVersion: '3.0.0',
12
+ version: 3,
13
+ workspaces: [
14
+ {
15
+ basePath: '/',
16
+ dataset: 'production',
17
+ icon: null,
18
+ name: 'default',
19
+ projectId: 'test-project',
20
+ schema: 'default.create-schema.json',
21
+ tools: 'default.create-tools.json'
22
+ },
23
+ {
24
+ basePath: '/staging',
25
+ dataset: 'staging',
26
+ icon: null,
27
+ name: 'staging',
28
+ projectId: 'test-project',
29
+ schema: 'staging.create-schema.json',
30
+ tools: 'staging.create-tools.json'
31
+ }
32
+ ]
33
+ };
34
+ const mockSchemas = [
35
+ '_.schemas.default',
36
+ '_.schemas.staging'
37
+ ];
38
+ vi.mock('../../../actions/manifest/extractManifest.js');
39
+ vi.mock('../../../actions/schema/utils/manifestReader.js');
40
+ const mockExtractManifestSafe = vi.mocked(extractManifestSafe);
41
+ const mockedCreateManifestReader = vi.mocked(createManifestReader);
42
+ const testProjectId = 'test-project';
43
+ const defaultMocks = {
44
+ cliConfig: {
45
+ api: {
46
+ dataset: 'production',
47
+ projectId: testProjectId
48
+ }
49
+ },
50
+ projectRoot: {
51
+ directory: '/test/path',
52
+ path: '/test/path/sanity.config.ts',
53
+ type: 'studio'
54
+ },
55
+ token: 'test-token'
56
+ };
39
57
  describe('#schema:delete', ()=>{
40
58
  beforeEach(()=>{
41
- mockedDeleteSchemaAction.mockResolvedValue('success');
59
+ vi.clearAllMocks();
60
+ for (const schema of mockSchemas){
61
+ mockApi({
62
+ apiVersion: SCHEMA_API_VERSION,
63
+ uri: `/projects/test-project/datasets/production/schemas/${schema}`
64
+ }).reply(200, [
65
+ {}
66
+ ]);
67
+ mockApi({
68
+ apiVersion: SCHEMA_API_VERSION,
69
+ uri: `/projects/test-project/datasets/staging/schemas/${schema}`
70
+ }).reply(200, [
71
+ {}
72
+ ]);
73
+ }
74
+ mockedCreateManifestReader.mockReturnValue({
75
+ getManifest: vi.fn().mockResolvedValue(mockManifest),
76
+ getWorkspaceSchema: vi.fn()
77
+ });
78
+ mockExtractManifestSafe.mockResolvedValue(undefined);
42
79
  });
43
80
  afterEach(()=>{
44
81
  vi.clearAllMocks();
@@ -55,100 +92,74 @@ describe('#schema:delete', ()=>{
55
92
  expect(stdout).toContain('--manifest-dir');
56
93
  expect(stdout).toContain('--verbose');
57
94
  });
58
- test('deletes a single schema successfully', async ()=>{
59
- mockedDeleteSchemaAction.mockResolvedValue('success');
60
- await testCommand(DeleteSchemaCommand, [
95
+ test('successfully deletes a single schema', async ()=>{
96
+ mockApi({
97
+ apiVersion: SCHEMA_API_VERSION,
98
+ method: 'delete',
99
+ uri: '/projects/test-project/datasets/production/schemas/_.schemas.default'
100
+ }).reply(200, {
101
+ deleted: true
102
+ });
103
+ mockApi({
104
+ apiVersion: SCHEMA_API_VERSION,
105
+ method: 'delete',
106
+ uri: '/projects/test-project/datasets/staging/schemas/_.schemas.default'
107
+ }).reply(200, {
108
+ deleted: true
109
+ });
110
+ const { error, stdout } = await testCommand(DeleteSchemaCommand, [
61
111
  '--ids',
62
- 'sanity.workspace.schema.workspaceName'
63
- ]);
64
- expect(mockedDeleteSchemaAction).toHaveBeenCalledWith(expect.objectContaining({
65
- ids: 'sanity.workspace.schema.workspaceName'
66
- }), expect.any(Object));
112
+ '_.schemas.default'
113
+ ], {
114
+ mocks: defaultMocks
115
+ });
116
+ expect(stdout).toContain('Successfully deleted 1/1 schemas');
117
+ expect(error).toBeUndefined();
67
118
  });
68
- test('deletes multiple schemas successfully', async ()=>{
69
- mockedDeleteSchemaAction.mockResolvedValue('success');
70
- await testCommand(DeleteSchemaCommand, [
119
+ test('successfully deletes multiple schemas', async ()=>{
120
+ for (const schema of mockSchemas){
121
+ mockApi({
122
+ apiVersion: SCHEMA_API_VERSION,
123
+ method: 'delete',
124
+ uri: `/projects/test-project/datasets/production/schemas/${schema}`
125
+ }).reply(200, {
126
+ deleted: true
127
+ });
128
+ mockApi({
129
+ apiVersion: SCHEMA_API_VERSION,
130
+ method: 'delete',
131
+ uri: `/projects/test-project/datasets/staging/schemas/${schema}`
132
+ }).reply(200, {
133
+ deleted: true
134
+ });
135
+ }
136
+ const { error, stdout } = await testCommand(DeleteSchemaCommand, [
71
137
  '--ids',
72
- 'sanity.workspace.schema.workspace1,sanity.workspace.schema.workspace2'
73
- ]);
74
- expect(mockedDeleteSchemaAction).toHaveBeenCalledWith(expect.objectContaining({
75
- ids: 'sanity.workspace.schema.workspace1,sanity.workspace.schema.workspace2'
76
- }), expect.any(Object));
138
+ '_.schemas.default,_.schemas.staging'
139
+ ], {
140
+ mocks: defaultMocks
141
+ });
142
+ expect(stdout).toContain('Successfully deleted 2/2 schemas');
143
+ expect(error).toBeUndefined();
77
144
  });
78
- test('uses custom dataset when --dataset flag is provided', async ()=>{
79
- mockedDeleteSchemaAction.mockResolvedValue('success');
80
- await testCommand(DeleteSchemaCommand, [
145
+ test('filters schemas by dataset when dataset flag is provided', async ()=>{
146
+ mockApi({
147
+ apiVersion: SCHEMA_API_VERSION,
148
+ method: 'delete',
149
+ uri: '/projects/test-project/datasets/production/schemas/_.schemas.default'
150
+ }).reply(200, {
151
+ deleted: true
152
+ });
153
+ const { error, stdout } = await testCommand(DeleteSchemaCommand, [
81
154
  '--ids',
82
- 'sanity.workspace.schema.workspaceName',
155
+ '_.schemas.default',
83
156
  '--dataset',
84
- 'staging'
85
- ]);
86
- expect(mockedDeleteSchemaAction).toHaveBeenCalledWith(expect.objectContaining({
87
- dataset: 'staging',
88
- ids: 'sanity.workspace.schema.workspaceName'
89
- }), expect.any(Object));
90
- });
91
- test('disables manifest extraction with --no-extract-manifest', async ()=>{
92
- mockedDeleteSchemaAction.mockResolvedValue('success');
93
- await testCommand(DeleteSchemaCommand, [
94
- '--ids',
95
- 'sanity.workspace.schema.workspaceName',
96
- '--no-extract-manifest'
97
- ]);
98
- expect(mockedDeleteSchemaAction).toHaveBeenCalledWith(expect.objectContaining({
99
- 'extract-manifest': false,
100
- ids: 'sanity.workspace.schema.workspaceName'
101
- }), expect.any(Object));
102
- });
103
- test('uses custom manifest directory when --manifest-dir is provided', async ()=>{
104
- mockedDeleteSchemaAction.mockResolvedValue('success');
105
- await testCommand(DeleteSchemaCommand, [
106
- '--ids',
107
- 'sanity.workspace.schema.workspaceName',
108
- '--manifest-dir',
109
- './custom/path'
110
- ]);
111
- expect(mockedDeleteSchemaAction).toHaveBeenCalledWith(expect.objectContaining({
112
- ids: 'sanity.workspace.schema.workspaceName',
113
- 'manifest-dir': './custom/path'
114
- }), expect.any(Object));
115
- });
116
- test('enables verbose logging when --verbose is provided', async ()=>{
117
- mockedDeleteSchemaAction.mockResolvedValue('success');
118
- await testCommand(DeleteSchemaCommand, [
119
- '--ids',
120
- 'sanity.workspace.schema.workspaceName',
121
- '--verbose'
122
- ]);
123
- expect(mockedDeleteSchemaAction).toHaveBeenCalledWith(expect.objectContaining({
124
- ids: 'sanity.workspace.schema.workspaceName',
125
- verbose: true
126
- }), expect.any(Object));
127
- });
128
- test('handles action failure', async ()=>{
129
- mockedDeleteSchemaAction.mockResolvedValue('failure');
130
- const { error } = await testCommand(DeleteSchemaCommand, [
131
- '--ids',
132
- 'sanity.workspace.schema.workspaceName'
133
- ]);
134
- expect(error).toBeInstanceOf(Error);
135
- expect(error?.message).toContain('Failed to delete schemas');
136
- expect(error?.oclif?.exit).toBe(1);
137
- });
138
- test('handles action errors gracefully', async ()=>{
139
- mockedDeleteSchemaAction.mockRejectedValue(new Error('Schema delete failed'));
140
- const { error } = await testCommand(DeleteSchemaCommand, [
141
- '--ids',
142
- 'sanity.workspace.schema.workspaceName'
143
- ]);
144
- expect(error).toBeInstanceOf(Error);
145
- expect(error?.message).toContain('Failed to delete schemas: Schema delete failed');
146
- expect(error?.oclif?.exit).toBe(1);
147
- });
148
- test('requires --ids flag', async ()=>{
149
- const { error } = await testCommand(DeleteSchemaCommand, []);
150
- expect(error).toBeInstanceOf(Error);
151
- expect(error?.message).toContain('Missing required flag ids');
157
+ 'production'
158
+ ], {
159
+ mocks: defaultMocks
160
+ });
161
+ expect(stdout).toContain('Successfully deleted 1/1 schemas');
162
+ expect(error).toBeUndefined();
152
163
  });
153
164
  test.each([
154
165
  {
@@ -159,22 +170,22 @@ describe('#schema:delete', ()=>{
159
170
  desc: 'project ID is empty string',
160
171
  projectId: ''
161
172
  }
162
- ])('throws error when $desc', async ({ projectId })=>{
163
- // Mock getCliConfig twice since it's called by both run() and getProjectId()
164
- const mockConfig = {
165
- api: {
166
- dataset: 'production',
167
- projectId
168
- }
169
- };
170
- mockedGetCliConfig.mockResolvedValueOnce(mockConfig).mockResolvedValueOnce(mockConfig);
173
+ ])('throws an error if $desc', async ({ projectId })=>{
171
174
  const { error } = await testCommand(DeleteSchemaCommand, [
172
175
  '--ids',
173
- 'sanity.workspace.schema.workspaceName'
174
- ]);
175
- expect(error).toBeInstanceOf(Error);
176
- expect(error?.message).toContain('No project ID found');
177
- expect(error?.message).toContain('Sanity project directory');
176
+ '_.schemas.default'
177
+ ], {
178
+ mocks: {
179
+ ...defaultMocks,
180
+ cliConfig: {
181
+ api: {
182
+ dataset: 'production',
183
+ projectId
184
+ }
185
+ }
186
+ }
187
+ });
188
+ expect(error?.message).toContain(NO_PROJECT_ID);
178
189
  expect(error?.oclif?.exit).toBe(1);
179
190
  });
180
191
  test.each([
@@ -186,24 +197,258 @@ describe('#schema:delete', ()=>{
186
197
  dataset: '',
187
198
  desc: 'dataset is empty string'
188
199
  }
189
- ])('throws error when $desc', async ({ dataset })=>{
190
- // Mock getCliConfig twice since it's called by both run() and getProjectId()
191
- const mockConfig = {
192
- api: {
193
- dataset,
194
- projectId: 'test-project'
200
+ ])('throws an error if $desc', async ({ dataset })=>{
201
+ const { error } = await testCommand(DeleteSchemaCommand, [
202
+ '--ids',
203
+ '_.schemas.default'
204
+ ], {
205
+ mocks: {
206
+ ...defaultMocks,
207
+ cliConfig: {
208
+ api: {
209
+ dataset,
210
+ projectId: 'test-project'
211
+ }
212
+ }
195
213
  }
196
- };
197
- mockedGetCliConfig.mockResolvedValueOnce(mockConfig).mockResolvedValueOnce(mockConfig);
214
+ });
215
+ expect(error?.message).toContain(NO_DATASET_ID);
216
+ expect(error?.oclif?.exit).toBe(1);
217
+ });
218
+ test('throws an error if ids is an empty string', async ()=>{
219
+ const { error } = await testCommand(DeleteSchemaCommand, [
220
+ '--ids'
221
+ ], {
222
+ mocks: defaultMocks
223
+ });
224
+ expect(error?.message).toContain('Flag --ids expects a value');
225
+ expect(error?.oclif?.exit).toBe(2);
226
+ });
227
+ test.each([
228
+ {
229
+ desc: 'ids with invalid characters (!)',
230
+ expectedError: 'id can only contain characters in [a-zA-Z0-9._-]',
231
+ ids: 'test-id!!'
232
+ },
233
+ {
234
+ desc: 'ids with invalid characters (@)',
235
+ expectedError: 'id can only contain characters in [a-zA-Z0-9._-]',
236
+ ids: '_.schemas.default@tag'
237
+ },
238
+ {
239
+ desc: 'id starts with dash',
240
+ expectedError: 'id cannot start with - (dash)',
241
+ ids: '-_.schemas.default'
242
+ },
243
+ {
244
+ desc: 'id has consecutive periods',
245
+ expectedError: 'id cannot have consecutive . (period) characters',
246
+ ids: '_.schemas..default'
247
+ },
248
+ {
249
+ desc: 'id missing required prefix',
250
+ expectedError: 'id must either match _.schemas.<workspaceName>',
251
+ ids: 'schemas.default'
252
+ },
253
+ {
254
+ desc: 'id has invalid workspace name (space)',
255
+ expectedError: 'id can only contain characters in [a-zA-Z0-9._-]',
256
+ ids: '_.schemas.default workspace'
257
+ },
258
+ {
259
+ desc: 'duplicate ids in comma-separated list',
260
+ expectedError: 'ids contains duplicates',
261
+ ids: '_.schemas.default,_.schemas.default'
262
+ },
263
+ {
264
+ desc: 'comma-separated with one duplicate',
265
+ expectedError: 'ids contains duplicates',
266
+ ids: '_.schemas.production,_.schemas.staging,_.schemas.production'
267
+ },
268
+ {
269
+ desc: 'all entries are empty after trimming',
270
+ expectedError: 'ids contains no valid id strings',
271
+ ids: ' , , '
272
+ }
273
+ ])('throws error when $desc', async ({ expectedError, ids })=>{
198
274
  const { error } = await testCommand(DeleteSchemaCommand, [
199
275
  '--ids',
200
- 'sanity.workspace.schema.workspaceName'
201
- ]);
202
- expect(error).toBeInstanceOf(Error);
203
- expect(error?.message).toContain('No dataset found');
204
- expect(error?.message).toContain('sanity.config.ts');
276
+ ids
277
+ ], {
278
+ mocks: defaultMocks
279
+ });
280
+ expect(error?.message).toContain(expectedError);
281
+ expect(error?.oclif?.exit).toBe(2);
282
+ });
283
+ test('throws error when dataset flag is not provided a value', async ()=>{
284
+ const { error } = await testCommand(DeleteSchemaCommand, [
285
+ '--ids',
286
+ '_.schemas.default',
287
+ '--dataset'
288
+ ], {
289
+ mocks: defaultMocks
290
+ });
291
+ expect(error?.message).toContain('Flag --dataset expects a value');
292
+ expect(error?.oclif?.exit).toBe(2);
293
+ });
294
+ test('throws an error when schema is not found', async ()=>{
295
+ mockApi({
296
+ apiVersion: SCHEMA_API_VERSION,
297
+ uri: `/projects/test-project/datasets/production/schemas/_.schemas.nonexistent`
298
+ }).reply(200, []);
299
+ mockApi({
300
+ apiVersion: SCHEMA_API_VERSION,
301
+ uri: `/projects/test-project/datasets/staging/schemas/_.schemas.nonexistent`
302
+ }).reply(200, []);
303
+ const { error } = await testCommand(DeleteSchemaCommand, [
304
+ '--ids',
305
+ '_.schemas.nonexistent'
306
+ ], {
307
+ mocks: defaultMocks
308
+ });
309
+ expect(error?.message).toContain('Deleted 0/1 schemas');
310
+ expect(error?.message).toContain('not found');
311
+ expect(error?.oclif?.exit).toBe(1);
312
+ });
313
+ test('throws an error when some schemas are not found', async ()=>{
314
+ mockApi({
315
+ apiVersion: SCHEMA_API_VERSION,
316
+ method: 'delete',
317
+ uri: '/projects/test-project/datasets/production/schemas/_.schemas.default'
318
+ }).reply(200, {
319
+ deleted: true
320
+ });
321
+ mockApi({
322
+ apiVersion: SCHEMA_API_VERSION,
323
+ method: 'delete',
324
+ uri: '/projects/test-project/datasets/staging/schemas/_.schemas.default'
325
+ }).reply(200, {
326
+ deleted: true
327
+ });
328
+ mockApi({
329
+ apiVersion: SCHEMA_API_VERSION,
330
+ uri: `/projects/test-project/datasets/production/schemas/_.schemas.nonexistent`
331
+ }).reply(200, []);
332
+ mockApi({
333
+ apiVersion: SCHEMA_API_VERSION,
334
+ uri: `/projects/test-project/datasets/staging/schemas/_.schemas.nonexistent`
335
+ }).reply(200, []);
336
+ const { error } = await testCommand(DeleteSchemaCommand, [
337
+ '--ids',
338
+ '_.schemas.default,_.schemas.nonexistent'
339
+ ], {
340
+ mocks: defaultMocks
341
+ });
342
+ expect(error?.message).toContain('Deleted 1/2 schemas');
343
+ expect(error?.oclif?.exit).toBe(1);
344
+ });
345
+ test('throws an error if delete request fails', async ()=>{
346
+ mockApi({
347
+ apiVersion: SCHEMA_API_VERSION,
348
+ method: 'delete',
349
+ uri: '/projects/test-project/datasets/production/schemas/_.schemas.default'
350
+ }).reply(403, {
351
+ error: 'Delete failed'
352
+ });
353
+ mockApi({
354
+ apiVersion: SCHEMA_API_VERSION,
355
+ method: 'delete',
356
+ uri: '/projects/test-project/datasets/staging/schemas/_.schemas.default'
357
+ }).reply(403, {
358
+ error: 'Delete failed'
359
+ });
360
+ const { error } = await testCommand(DeleteSchemaCommand, [
361
+ '--ids',
362
+ '_.schemas.default'
363
+ ], {
364
+ mocks: defaultMocks
365
+ });
366
+ expect(error?.message).toContain('Failed to delete schema');
367
+ expect(error?.oclif?.exit).toBe(1);
368
+ });
369
+ test('outputs a verbose warning when verbose flag is enabled', async ()=>{
370
+ mockApi({
371
+ apiVersion: SCHEMA_API_VERSION,
372
+ method: 'delete',
373
+ uri: '/projects/test-project/datasets/production/schemas/_.schemas.default'
374
+ }).reply(403, {
375
+ error: 'Delete failed'
376
+ });
377
+ mockApi({
378
+ apiVersion: SCHEMA_API_VERSION,
379
+ method: 'delete',
380
+ uri: '/projects/test-project/datasets/staging/schemas/_.schemas.default'
381
+ }).reply(403, {
382
+ error: 'Delete failed'
383
+ });
384
+ const { error, stderr } = await testCommand(DeleteSchemaCommand, [
385
+ '--ids',
386
+ '_.schemas.default',
387
+ '--verbose'
388
+ ], {
389
+ mocks: defaultMocks
390
+ });
391
+ expect(stderr).toContain('Failed to delete schema "_.schemas.default"');
392
+ expect(stderr).toContain('DeleteIdError: Delete failed');
393
+ expect(error?.message).toContain('Deleted 0/1 schemas');
205
394
  expect(error?.oclif?.exit).toBe(1);
206
395
  });
396
+ test('outputs a warning on projectId mismatch', async ()=>{
397
+ mockApi({
398
+ apiVersion: SCHEMA_API_VERSION,
399
+ method: 'delete',
400
+ uri: '/projects/test-project/datasets/production/schemas/_.schemas.default'
401
+ }).reply(200, {
402
+ deleted: true
403
+ });
404
+ const mismatchManifest = {
405
+ ...mockManifest,
406
+ workspaces: [
407
+ {
408
+ ...mockManifest.workspaces[0],
409
+ projectId: 'test-project'
410
+ },
411
+ {
412
+ ...mockManifest.workspaces[1],
413
+ projectId: 'different-project'
414
+ }
415
+ ]
416
+ };
417
+ mockedCreateManifestReader.mockReturnValue({
418
+ getManifest: vi.fn().mockResolvedValue(mismatchManifest),
419
+ getWorkspaceSchema: vi.fn()
420
+ });
421
+ const { stderr, stdout } = await testCommand(DeleteSchemaCommand, [
422
+ '--ids',
423
+ '_.schemas.default'
424
+ ], {
425
+ mocks: defaultMocks
426
+ });
427
+ expect(stderr).toContain('No permissions to read schema for workspace "staging"');
428
+ expect(stdout).toContain('Successfully deleted 1/1 schemas');
429
+ });
430
+ test('skips manifest extraction with no-extract-manifest flag', async ()=>{
431
+ mockApi({
432
+ apiVersion: SCHEMA_API_VERSION,
433
+ method: 'delete',
434
+ uri: '/projects/test-project/datasets/production/schemas/_.schemas.default'
435
+ }).reply(200, {
436
+ deleted: true
437
+ });
438
+ mockApi({
439
+ apiVersion: SCHEMA_API_VERSION,
440
+ method: 'delete',
441
+ uri: '/projects/test-project/datasets/staging/schemas/_.schemas.default'
442
+ }).reply(200, {
443
+ deleted: true
444
+ });
445
+ await testCommand(DeleteSchemaCommand, [
446
+ '--ids',
447
+ '_.schemas.default',
448
+ '--no-manifest-extract'
449
+ ]);
450
+ expect(mockExtractManifestSafe).not.toHaveBeenCalled();
451
+ });
207
452
  });
208
453
 
209
454
  //# sourceMappingURL=delete.test.js.map