@sanity/cli 6.3.1 → 6.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/README.md +311 -452
  2. package/dist/actions/build/decorateIndexWithStagingScript.js +16 -0
  3. package/dist/actions/build/decorateIndexWithStagingScript.js.map +1 -0
  4. package/dist/actions/build/writeSanityRuntime.js +3 -2
  5. package/dist/actions/build/writeSanityRuntime.js.map +1 -1
  6. package/dist/actions/dataset/create.js +4 -0
  7. package/dist/actions/dataset/create.js.map +1 -1
  8. package/dist/actions/deploy/findUserApplicationForApp.js +1 -0
  9. package/dist/actions/deploy/findUserApplicationForApp.js.map +1 -1
  10. package/dist/actions/deploy/types.js +1 -1
  11. package/dist/actions/deploy/types.js.map +1 -1
  12. package/dist/actions/init/bootstrapLocalTemplate.js +16 -1
  13. package/dist/actions/init/bootstrapLocalTemplate.js.map +1 -1
  14. package/dist/actions/init/initApp.js +72 -0
  15. package/dist/actions/init/initApp.js.map +1 -0
  16. package/dist/actions/init/initHelpers.js +37 -0
  17. package/dist/actions/init/initHelpers.js.map +1 -0
  18. package/dist/actions/init/initNextJs.js +246 -0
  19. package/dist/actions/init/initNextJs.js.map +1 -0
  20. package/dist/actions/init/initStudio.js +127 -0
  21. package/dist/actions/init/initStudio.js.map +1 -0
  22. package/dist/actions/init/scaffoldTemplate.js +114 -0
  23. package/dist/actions/init/scaffoldTemplate.js.map +1 -0
  24. package/dist/actions/init/templates/appQuickstart.js +2 -1
  25. package/dist/actions/init/templates/appQuickstart.js.map +1 -1
  26. package/dist/actions/init/templates/appSanityUi.js +2 -1
  27. package/dist/actions/init/templates/appSanityUi.js.map +1 -1
  28. package/dist/actions/init/templates/nextjs/index.js +1 -2
  29. package/dist/actions/init/templates/nextjs/index.js.map +1 -1
  30. package/dist/actions/init/templates/shopify.js +6 -6
  31. package/dist/actions/init/templates/shopify.js.map +1 -1
  32. package/dist/actions/init/templates/shopifyOnline.js +2 -2
  33. package/dist/actions/init/templates/shopifyOnline.js.map +1 -1
  34. package/dist/actions/manifest/types.js +1 -1
  35. package/dist/actions/manifest/types.js.map +1 -1
  36. package/dist/actions/mcp/detectAvailableEditors.js +16 -3
  37. package/dist/actions/mcp/detectAvailableEditors.js.map +1 -1
  38. package/dist/actions/mcp/editorConfigs.js +192 -132
  39. package/dist/actions/mcp/editorConfigs.js.map +1 -1
  40. package/dist/actions/mcp/setupMCP.js +4 -1
  41. package/dist/actions/mcp/setupMCP.js.map +1 -1
  42. package/dist/actions/mcp/writeMCPConfig.js +2 -2
  43. package/dist/actions/mcp/writeMCPConfig.js.map +1 -1
  44. package/dist/actions/schema/extractSchema.js +5 -7
  45. package/dist/actions/schema/extractSchema.js.map +1 -1
  46. package/dist/actions/schema/types.js +3 -3
  47. package/dist/actions/schema/types.js.map +1 -1
  48. package/dist/actions/users/validateEmail.js +2 -2
  49. package/dist/actions/users/validateEmail.js.map +1 -1
  50. package/dist/commands/backups/disable.js +1 -1
  51. package/dist/commands/backups/disable.js.map +1 -1
  52. package/dist/commands/backups/download.js +1 -1
  53. package/dist/commands/backups/download.js.map +1 -1
  54. package/dist/commands/backups/enable.js +1 -1
  55. package/dist/commands/backups/enable.js.map +1 -1
  56. package/dist/commands/backups/list.js +1 -1
  57. package/dist/commands/backups/list.js.map +1 -1
  58. package/dist/commands/build.js +1 -1
  59. package/dist/commands/build.js.map +1 -1
  60. package/dist/commands/cors/add.js +1 -1
  61. package/dist/commands/cors/add.js.map +1 -1
  62. package/dist/commands/cors/delete.js +1 -1
  63. package/dist/commands/cors/delete.js.map +1 -1
  64. package/dist/commands/cors/list.js +2 -2
  65. package/dist/commands/cors/list.js.map +1 -1
  66. package/dist/commands/datasets/alias/create.js +1 -1
  67. package/dist/commands/datasets/alias/create.js.map +1 -1
  68. package/dist/commands/datasets/alias/delete.js +1 -1
  69. package/dist/commands/datasets/alias/delete.js.map +1 -1
  70. package/dist/commands/datasets/alias/link.js +1 -1
  71. package/dist/commands/datasets/alias/link.js.map +1 -1
  72. package/dist/commands/datasets/alias/unlink.js +1 -1
  73. package/dist/commands/datasets/alias/unlink.js.map +1 -1
  74. package/dist/commands/datasets/copy.js +15 -1
  75. package/dist/commands/datasets/copy.js.map +1 -1
  76. package/dist/commands/datasets/create.js +1 -1
  77. package/dist/commands/datasets/create.js.map +1 -1
  78. package/dist/commands/datasets/delete.js +1 -1
  79. package/dist/commands/datasets/delete.js.map +1 -1
  80. package/dist/commands/datasets/embeddings/enable.js +11 -0
  81. package/dist/commands/datasets/embeddings/enable.js.map +1 -1
  82. package/dist/commands/datasets/export.js +2 -2
  83. package/dist/commands/datasets/export.js.map +1 -1
  84. package/dist/commands/datasets/list.js +2 -2
  85. package/dist/commands/datasets/list.js.map +1 -1
  86. package/dist/commands/debug.js +1 -1
  87. package/dist/commands/debug.js.map +1 -1
  88. package/dist/commands/deploy.js +3 -3
  89. package/dist/commands/deploy.js.map +1 -1
  90. package/dist/commands/dev.js +5 -5
  91. package/dist/commands/dev.js.map +1 -1
  92. package/dist/commands/docs/browse.js +1 -1
  93. package/dist/commands/docs/browse.js.map +1 -1
  94. package/dist/commands/documents/delete.js +1 -1
  95. package/dist/commands/documents/delete.js.map +1 -1
  96. package/dist/commands/exec.js +2 -2
  97. package/dist/commands/exec.js.map +1 -1
  98. package/dist/commands/graphql/deploy.js +2 -2
  99. package/dist/commands/graphql/deploy.js.map +1 -1
  100. package/dist/commands/graphql/list.js +2 -2
  101. package/dist/commands/graphql/list.js.map +1 -1
  102. package/dist/commands/hooks/create.js +2 -2
  103. package/dist/commands/hooks/create.js.map +1 -1
  104. package/dist/commands/hooks/delete.js +5 -5
  105. package/dist/commands/hooks/delete.js.map +1 -1
  106. package/dist/commands/hooks/list.js +3 -3
  107. package/dist/commands/hooks/list.js.map +1 -1
  108. package/dist/commands/hooks/logs.js +5 -5
  109. package/dist/commands/hooks/logs.js.map +1 -1
  110. package/dist/commands/init.js +175 -490
  111. package/dist/commands/init.js.map +1 -1
  112. package/dist/commands/install.js +1 -1
  113. package/dist/commands/install.js.map +1 -1
  114. package/dist/commands/learn.js +1 -1
  115. package/dist/commands/learn.js.map +1 -1
  116. package/dist/commands/login.js +1 -1
  117. package/dist/commands/login.js.map +1 -1
  118. package/dist/commands/logout.js +1 -1
  119. package/dist/commands/logout.js.map +1 -1
  120. package/dist/commands/manage.js +1 -1
  121. package/dist/commands/manage.js.map +1 -1
  122. package/dist/commands/manifest/extract.js +2 -2
  123. package/dist/commands/manifest/extract.js.map +1 -1
  124. package/dist/commands/mcp/configure.js +1 -1
  125. package/dist/commands/mcp/configure.js.map +1 -1
  126. package/dist/commands/media/delete-aspect.js +1 -1
  127. package/dist/commands/media/delete-aspect.js.map +1 -1
  128. package/dist/commands/media/export.js +1 -1
  129. package/dist/commands/media/export.js.map +1 -1
  130. package/dist/commands/preview.js +3 -3
  131. package/dist/commands/preview.js.map +1 -1
  132. package/dist/commands/projects/list.js +4 -2
  133. package/dist/commands/projects/list.js.map +1 -1
  134. package/dist/commands/schemas/deploy.js +3 -4
  135. package/dist/commands/schemas/deploy.js.map +1 -1
  136. package/dist/commands/schemas/extract.js +3 -3
  137. package/dist/commands/schemas/extract.js.map +1 -1
  138. package/dist/commands/schemas/list.js +4 -5
  139. package/dist/commands/schemas/list.js.map +1 -1
  140. package/dist/commands/telemetry/disable.js +2 -2
  141. package/dist/commands/telemetry/disable.js.map +1 -1
  142. package/dist/commands/telemetry/enable.js +2 -2
  143. package/dist/commands/telemetry/enable.js.map +1 -1
  144. package/dist/commands/telemetry/status.js +2 -2
  145. package/dist/commands/telemetry/status.js.map +1 -1
  146. package/dist/commands/tokens/add.js +1 -1
  147. package/dist/commands/tokens/add.js.map +1 -1
  148. package/dist/commands/tokens/delete.js +1 -1
  149. package/dist/commands/tokens/delete.js.map +1 -1
  150. package/dist/commands/tokens/list.js +2 -2
  151. package/dist/commands/tokens/list.js.map +1 -1
  152. package/dist/commands/users/list.js +1 -1
  153. package/dist/commands/users/list.js.map +1 -1
  154. package/dist/commands/versions.js +1 -1
  155. package/dist/commands/versions.js.map +1 -1
  156. package/dist/hooks/prerun/injectEnvVariables.js +3 -5
  157. package/dist/hooks/prerun/injectEnvVariables.js.map +1 -1
  158. package/dist/server/vite/plugin-sanity-build-entries.js +3 -2
  159. package/dist/server/vite/plugin-sanity-build-entries.js.map +1 -1
  160. package/dist/services/datasets.js +2 -1
  161. package/dist/services/datasets.js.map +1 -1
  162. package/dist/telemetry/init.telemetry.js.map +1 -1
  163. package/dist/util/packageManager/installationInfo/detectPackages.js +13 -7
  164. package/dist/util/packageManager/installationInfo/detectPackages.js.map +1 -1
  165. package/dist/util/telemetry/createTelemetryStore.js +27 -12
  166. package/dist/util/telemetry/createTelemetryStore.js.map +1 -1
  167. package/dist/util/update/fetchUpdateInfo.js +40 -0
  168. package/dist/util/update/fetchUpdateInfo.js.map +1 -0
  169. package/dist/util/update/fetchUpdateInfo.worker.js +19 -0
  170. package/dist/util/update/fetchUpdateInfo.worker.js.map +1 -0
  171. package/dist/util/update/getRunnerUpdateCommand.js +33 -0
  172. package/dist/util/update/getRunnerUpdateCommand.js.map +1 -0
  173. package/dist/util/update/getUpdateCommand.js +6 -7
  174. package/dist/util/update/getUpdateCommand.js.map +1 -1
  175. package/dist/util/update/packageRunner.js +10 -0
  176. package/dist/util/update/packageRunner.js.map +1 -0
  177. package/dist/util/update/resolveRunnerPackage.js +45 -0
  178. package/dist/util/update/resolveRunnerPackage.js.map +1 -0
  179. package/dist/util/update/resolveUpdateTarget.js +31 -0
  180. package/dist/util/update/resolveUpdateTarget.js.map +1 -0
  181. package/dist/util/update/showNotificationUpdate.js +8 -6
  182. package/dist/util/update/showNotificationUpdate.js.map +1 -1
  183. package/dist/util/update/updateChecker.js +73 -38
  184. package/dist/util/update/updateChecker.js.map +1 -1
  185. package/dist/util/validateProjection.js +121 -0
  186. package/dist/util/validateProjection.js.map +1 -0
  187. package/oclif.manifest.json +698 -681
  188. package/package.json +24 -23
  189. package/templates/app-quickstart/src/App.tsx +2 -2
  190. package/templates/app-sanity-ui/src/App.tsx +2 -2
  191. package/templates/shopify/schemaTypes/objects/hotspot/imageWithProductHotspotsType.ts +1 -1
  192. package/dist/util/update/fetchLatestVersion.js +0 -21
  193. package/dist/util/update/fetchLatestVersion.js.map +0 -1
@@ -0,0 +1,121 @@
1
+ import { parse } from 'groq-js';
2
+ /**
3
+ * Validates that a string is a syntactically valid GROQ object projection
4
+ * suitable for embeddings indexing.
5
+ *
6
+ * Rejects:
7
+ * - Invalid GROQ syntax
8
+ * - Non-object expressions (filters, function calls, literals, etc.)
9
+ * - Dereferences (`->`) -- the indexer cannot resolve cross-document references
10
+ * - Full queries (`*[...]`) -- dataset scans are not supported
11
+ * - `user::` namespace functions -- user-defined functions are not available
12
+ */ export function validateProjection(projection) {
13
+ const tree = parse(projection);
14
+ if (tree.type !== 'Object') {
15
+ throw new Error(`Expected a GROQ projection (e.g. "{ title, body }"), but received a ${tree.type} expression`);
16
+ }
17
+ walk(tree);
18
+ }
19
+ function walk(node) {
20
+ if (!node) return;
21
+ switch(node.type){
22
+ case 'AccessAttribute':
23
+ case 'AccessElement':
24
+ case 'ArrayCoerce':
25
+ case 'Asc':
26
+ case 'Desc':
27
+ case 'Group':
28
+ case 'Neg':
29
+ case 'Not':
30
+ case 'Pos':
31
+ case 'Slice':
32
+ {
33
+ walk(node.base);
34
+ break;
35
+ }
36
+ case 'And':
37
+ case 'OpCall':
38
+ case 'Or':
39
+ {
40
+ walk(node.left);
41
+ walk(node.right);
42
+ break;
43
+ }
44
+ case 'Array':
45
+ {
46
+ for (const el of node.elements)walk(el.value);
47
+ break;
48
+ }
49
+ case 'Everything':
50
+ {
51
+ throw new Error('Projection must not contain full queries (*[...])');
52
+ }
53
+ case 'Deref':
54
+ {
55
+ throw new Error('Projection must not contain dereferences (->)');
56
+ }
57
+ case 'FuncCall':
58
+ {
59
+ if (node.namespace === 'user') {
60
+ throw new Error('Projection must not contain user:: functions');
61
+ }
62
+ for (const arg of node.args)walk(arg);
63
+ break;
64
+ }
65
+ case 'Filter':
66
+ case 'FlatMap':
67
+ case 'Map':
68
+ case 'Projection':
69
+ {
70
+ walk(node.base);
71
+ walk(node.expr);
72
+ break;
73
+ }
74
+ case 'InRange':
75
+ {
76
+ walk(node.base);
77
+ walk(node.left);
78
+ walk(node.right);
79
+ break;
80
+ }
81
+ case 'Object':
82
+ {
83
+ for (const attr of node.attributes){
84
+ switch(attr.type){
85
+ case 'ObjectAttributeValue':
86
+ case 'ObjectSplat':
87
+ {
88
+ walk(attr.value);
89
+ break;
90
+ }
91
+ case 'ObjectConditionalSplat':
92
+ {
93
+ walk(attr.condition);
94
+ walk(attr.value);
95
+ break;
96
+ }
97
+ default:
98
+ }
99
+ }
100
+ break;
101
+ }
102
+ case 'PipeFuncCall':
103
+ {
104
+ walk(node.base);
105
+ for (const arg of node.args)walk(arg);
106
+ break;
107
+ }
108
+ case 'Select':
109
+ {
110
+ for (const alt of node.alternatives){
111
+ walk(alt.condition);
112
+ walk(alt.value);
113
+ }
114
+ walk(node.fallback);
115
+ break;
116
+ }
117
+ default:
118
+ }
119
+ }
120
+
121
+ //# sourceMappingURL=validateProjection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/util/validateProjection.ts"],"sourcesContent":["import {type ExprNode, parse} from 'groq-js'\n\n/**\n * Validates that a string is a syntactically valid GROQ object projection\n * suitable for embeddings indexing.\n *\n * Rejects:\n * - Invalid GROQ syntax\n * - Non-object expressions (filters, function calls, literals, etc.)\n * - Dereferences (`->`) -- the indexer cannot resolve cross-document references\n * - Full queries (`*[...]`) -- dataset scans are not supported\n * - `user::` namespace functions -- user-defined functions are not available\n */\nexport function validateProjection(projection: string): void {\n const tree = parse(projection)\n if (tree.type !== 'Object') {\n throw new Error(\n `Expected a GROQ projection (e.g. \"{ title, body }\"), but received a ${tree.type} expression`,\n )\n }\n walk(tree)\n}\n\nfunction walk(node: ExprNode | undefined): void {\n if (!node) return\n\n switch (node.type) {\n case 'AccessAttribute':\n case 'AccessElement':\n case 'ArrayCoerce':\n case 'Asc':\n case 'Desc':\n case 'Group':\n case 'Neg':\n case 'Not':\n case 'Pos':\n case 'Slice': {\n walk(node.base)\n break\n }\n case 'And':\n case 'OpCall':\n case 'Or': {\n walk(node.left)\n walk(node.right)\n break\n }\n case 'Array': {\n for (const el of node.elements) walk(el.value)\n break\n }\n case 'Everything': {\n throw new Error('Projection must not contain full queries (*[...])')\n }\n case 'Deref': {\n throw new Error('Projection must not contain dereferences (->)')\n }\n case 'FuncCall': {\n if (node.namespace === 'user') {\n throw new Error('Projection must not contain user:: functions')\n }\n for (const arg of node.args) walk(arg)\n break\n }\n case 'Filter':\n case 'FlatMap':\n case 'Map':\n case 'Projection': {\n walk(node.base)\n walk(node.expr)\n break\n }\n case 'InRange': {\n walk(node.base)\n walk(node.left)\n walk(node.right)\n break\n }\n case 'Object': {\n for (const attr of node.attributes) {\n switch (attr.type) {\n case 'ObjectAttributeValue':\n case 'ObjectSplat': {\n walk(attr.value)\n break\n }\n case 'ObjectConditionalSplat': {\n walk(attr.condition)\n walk(attr.value)\n break\n }\n default:\n }\n }\n break\n }\n case 'PipeFuncCall': {\n walk(node.base)\n for (const arg of node.args) walk(arg)\n break\n }\n case 'Select': {\n for (const alt of node.alternatives) {\n walk(alt.condition)\n walk(alt.value)\n }\n walk(node.fallback)\n break\n }\n default:\n }\n}\n"],"names":["parse","validateProjection","projection","tree","type","Error","walk","node","base","left","right","el","elements","value","namespace","arg","args","expr","attr","attributes","condition","alt","alternatives","fallback"],"mappings":"AAAA,SAAuBA,KAAK,QAAO,UAAS;AAE5C;;;;;;;;;;CAUC,GACD,OAAO,SAASC,mBAAmBC,UAAkB;IACnD,MAAMC,OAAOH,MAAME;IACnB,IAAIC,KAAKC,IAAI,KAAK,UAAU;QAC1B,MAAM,IAAIC,MACR,CAAC,oEAAoE,EAAEF,KAAKC,IAAI,CAAC,WAAW,CAAC;IAEjG;IACAE,KAAKH;AACP;AAEA,SAASG,KAAKC,IAA0B;IACtC,IAAI,CAACA,MAAM;IAEX,OAAQA,KAAKH,IAAI;QACf,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YAAS;gBACZE,KAAKC,KAAKC,IAAI;gBACd;YACF;QACA,KAAK;QACL,KAAK;QACL,KAAK;YAAM;gBACTF,KAAKC,KAAKE,IAAI;gBACdH,KAAKC,KAAKG,KAAK;gBACf;YACF;QACA,KAAK;YAAS;gBACZ,KAAK,MAAMC,MAAMJ,KAAKK,QAAQ,CAAEN,KAAKK,GAAGE,KAAK;gBAC7C;YACF;QACA,KAAK;YAAc;gBACjB,MAAM,IAAIR,MAAM;YAClB;QACA,KAAK;YAAS;gBACZ,MAAM,IAAIA,MAAM;YAClB;QACA,KAAK;YAAY;gBACf,IAAIE,KAAKO,SAAS,KAAK,QAAQ;oBAC7B,MAAM,IAAIT,MAAM;gBAClB;gBACA,KAAK,MAAMU,OAAOR,KAAKS,IAAI,CAAEV,KAAKS;gBAClC;YACF;QACA,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YAAc;gBACjBT,KAAKC,KAAKC,IAAI;gBACdF,KAAKC,KAAKU,IAAI;gBACd;YACF;QACA,KAAK;YAAW;gBACdX,KAAKC,KAAKC,IAAI;gBACdF,KAAKC,KAAKE,IAAI;gBACdH,KAAKC,KAAKG,KAAK;gBACf;YACF;QACA,KAAK;YAAU;gBACb,KAAK,MAAMQ,QAAQX,KAAKY,UAAU,CAAE;oBAClC,OAAQD,KAAKd,IAAI;wBACf,KAAK;wBACL,KAAK;4BAAe;gCAClBE,KAAKY,KAAKL,KAAK;gCACf;4BACF;wBACA,KAAK;4BAA0B;gCAC7BP,KAAKY,KAAKE,SAAS;gCACnBd,KAAKY,KAAKL,KAAK;gCACf;4BACF;wBACA;oBACF;gBACF;gBACA;YACF;QACA,KAAK;YAAgB;gBACnBP,KAAKC,KAAKC,IAAI;gBACd,KAAK,MAAMO,OAAOR,KAAKS,IAAI,CAAEV,KAAKS;gBAClC;YACF;QACA,KAAK;YAAU;gBACb,KAAK,MAAMM,OAAOd,KAAKe,YAAY,CAAE;oBACnChB,KAAKe,IAAID,SAAS;oBAClBd,KAAKe,IAAIR,KAAK;gBAChB;gBACAP,KAAKC,KAAKgB,QAAQ;gBAClB;YACF;QACA;IACF;AACF"}