convex 1.44.0 → 1.45.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 (594) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/browser.bundle.js +1 -1
  3. package/dist/browser.bundle.js.map +1 -1
  4. package/dist/cjs/cli/convexExport.js +1 -1
  5. package/dist/cjs/cli/convexExport.js.map +1 -1
  6. package/dist/cjs/cli/index.js +2 -32
  7. package/dist/cjs/cli/index.js.map +2 -2
  8. package/dist/cjs/cli/lib/api.js +11 -5
  9. package/dist/cjs/cli/lib/api.js.map +2 -2
  10. package/dist/cjs/cli/lib/convexExport.js +12 -1
  11. package/dist/cjs/cli/lib/convexExport.js.map +2 -2
  12. package/dist/cjs/cli/lib/dashboard.js.map +2 -2
  13. package/dist/cjs/cli/lib/generatedFunctionLogsApi.js.map +1 -1
  14. package/dist/cjs/cli/lib/indexes.js +1 -1
  15. package/dist/cjs/cli/lib/indexes.js.map +1 -1
  16. package/dist/cjs/cli/lib/localDeployment/upgrade.js +23 -188
  17. package/dist/cjs/cli/lib/localDeployment/upgrade.js.map +3 -3
  18. package/dist/cjs/cli/lib/mcp/tools/index.js.map +1 -1
  19. package/dist/cjs/cli/mcp.js +76 -69
  20. package/dist/cjs/cli/mcp.js.map +2 -2
  21. package/dist/cjs/index.js +1 -1
  22. package/dist/cjs/index.js.map +1 -1
  23. package/dist/cjs/server/impl/actions_impl.js.map +2 -2
  24. package/dist/cjs/server/index.js.map +2 -2
  25. package/dist/cjs-types/cli/lib/api.d.ts.map +1 -1
  26. package/dist/cjs-types/cli/lib/convexExport.d.ts +1 -0
  27. package/dist/cjs-types/cli/lib/convexExport.d.ts.map +1 -1
  28. package/dist/cjs-types/cli/lib/dashboard.d.ts.map +1 -1
  29. package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts +2 -0
  30. package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
  31. package/dist/cjs-types/cli/lib/localDeployment/upgrade.d.ts +2 -0
  32. package/dist/cjs-types/cli/lib/localDeployment/upgrade.d.ts.map +1 -1
  33. package/dist/cjs-types/cli/lib/mcp/tools/index.d.ts +1 -1
  34. package/dist/cjs-types/cli/lib/mcp/tools/index.d.ts.map +1 -1
  35. package/dist/cjs-types/cli/mcp.d.ts +3 -0
  36. package/dist/cjs-types/cli/mcp.d.ts.map +1 -1
  37. package/dist/cjs-types/index.d.ts +1 -1
  38. package/dist/cjs-types/server/impl/actions_impl.d.ts +14 -0
  39. package/dist/cjs-types/server/impl/actions_impl.d.ts.map +1 -1
  40. package/dist/cjs-types/server/index.d.ts +1 -0
  41. package/dist/cjs-types/server/index.d.ts.map +1 -1
  42. package/dist/cli.bundle.cjs +31210 -25495
  43. package/dist/cli.bundle.cjs.map +4 -4
  44. package/dist/esm/cli/convexExport.js +1 -1
  45. package/dist/esm/cli/convexExport.js.map +1 -1
  46. package/dist/esm/cli/index.js +2 -32
  47. package/dist/esm/cli/index.js.map +2 -2
  48. package/dist/esm/cli/lib/api.js +11 -5
  49. package/dist/esm/cli/lib/api.js.map +2 -2
  50. package/dist/esm/cli/lib/convexExport.js +16 -3
  51. package/dist/esm/cli/lib/convexExport.js.map +2 -2
  52. package/dist/esm/cli/lib/dashboard.js.map +2 -2
  53. package/dist/esm/cli/lib/indexes.js +1 -1
  54. package/dist/esm/cli/lib/indexes.js.map +1 -1
  55. package/dist/esm/cli/lib/localDeployment/upgrade.js +22 -190
  56. package/dist/esm/cli/lib/localDeployment/upgrade.js.map +2 -2
  57. package/dist/esm/cli/lib/mcp/tools/index.js.map +1 -1
  58. package/dist/esm/cli/mcp.js +75 -72
  59. package/dist/esm/cli/mcp.js.map +2 -2
  60. package/dist/esm/index.js +1 -1
  61. package/dist/esm/index.js.map +1 -1
  62. package/dist/esm/server/impl/actions_impl.js.map +2 -2
  63. package/dist/esm/server/index.js.map +2 -2
  64. package/dist/esm-types/cli/lib/api.d.ts.map +1 -1
  65. package/dist/esm-types/cli/lib/convexExport.d.ts +1 -0
  66. package/dist/esm-types/cli/lib/convexExport.d.ts.map +1 -1
  67. package/dist/esm-types/cli/lib/dashboard.d.ts.map +1 -1
  68. package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts +2 -0
  69. package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
  70. package/dist/esm-types/cli/lib/localDeployment/upgrade.d.ts +2 -0
  71. package/dist/esm-types/cli/lib/localDeployment/upgrade.d.ts.map +1 -1
  72. package/dist/esm-types/cli/lib/mcp/tools/index.d.ts +1 -1
  73. package/dist/esm-types/cli/lib/mcp/tools/index.d.ts.map +1 -1
  74. package/dist/esm-types/cli/mcp.d.ts +3 -0
  75. package/dist/esm-types/cli/mcp.d.ts.map +1 -1
  76. package/dist/esm-types/index.d.ts +1 -1
  77. package/dist/esm-types/server/impl/actions_impl.d.ts +14 -0
  78. package/dist/esm-types/server/impl/actions_impl.d.ts.map +1 -1
  79. package/dist/esm-types/server/index.d.ts +1 -0
  80. package/dist/esm-types/server/index.d.ts.map +1 -1
  81. package/dist/react.bundle.js +1 -1
  82. package/dist/react.bundle.js.map +1 -1
  83. package/package.json +3 -3
  84. package/src/cli/convexExport.ts +1 -1
  85. package/src/cli/index.ts +2 -35
  86. package/src/cli/lib/api.ts +11 -5
  87. package/src/cli/lib/convexExport.ts +21 -0
  88. package/src/cli/lib/dashboard.ts +2 -0
  89. package/src/cli/lib/generatedFunctionLogsApi.ts +2 -0
  90. package/src/cli/lib/indexes.ts +1 -1
  91. package/src/cli/lib/localDeployment/upgrade.ts +34 -207
  92. package/src/cli/lib/mcp/tools/index.ts +1 -1
  93. package/src/cli/mcp.ts +91 -77
  94. package/src/index.ts +1 -1
  95. package/src/server/impl/actions_impl.ts +3 -1
  96. package/src/server/index.ts +0 -3
  97. package/dist/cjs-types/browser/http_client.test.d.ts +0 -2
  98. package/dist/cjs-types/browser/http_client.test.d.ts.map +0 -1
  99. package/dist/cjs-types/browser/query_options.test.d.ts +0 -2
  100. package/dist/cjs-types/browser/query_options.test.d.ts.map +0 -1
  101. package/dist/cjs-types/browser/simple_client.test.d.ts +0 -2
  102. package/dist/cjs-types/browser/simple_client.test.d.ts.map +0 -1
  103. package/dist/cjs-types/browser/sync/client.test.d.ts +0 -5
  104. package/dist/cjs-types/browser/sync/client.test.d.ts.map +0 -1
  105. package/dist/cjs-types/browser/sync/client_node.test.d.ts +0 -2
  106. package/dist/cjs-types/browser/sync/client_node.test.d.ts.map +0 -1
  107. package/dist/cjs-types/browser/sync/client_node_test_helpers.d.ts +0 -44
  108. package/dist/cjs-types/browser/sync/client_node_test_helpers.d.ts.map +0 -1
  109. package/dist/cjs-types/browser/sync/local_state.test.d.ts +0 -2
  110. package/dist/cjs-types/browser/sync/local_state.test.d.ts.map +0 -1
  111. package/dist/cjs-types/browser/sync/optimistic_query_set.test.d.ts +0 -2
  112. package/dist/cjs-types/browser/sync/optimistic_query_set.test.d.ts.map +0 -1
  113. package/dist/cjs-types/browser/sync/paginated_query_client.test.d.ts +0 -2
  114. package/dist/cjs-types/browser/sync/paginated_query_client.test.d.ts.map +0 -1
  115. package/dist/cjs-types/browser/sync/protocol.test.d.ts +0 -5
  116. package/dist/cjs-types/browser/sync/protocol.test.d.ts.map +0 -1
  117. package/dist/cjs-types/browser/sync/request_manager.test.d.ts +0 -2
  118. package/dist/cjs-types/browser/sync/request_manager.test.d.ts.map +0 -1
  119. package/dist/cjs-types/bundler/fs.test.d.ts +0 -2
  120. package/dist/cjs-types/bundler/fs.test.d.ts.map +0 -1
  121. package/dist/cjs-types/bundler/index.test.d.ts +0 -2
  122. package/dist/cjs-types/bundler/index.test.d.ts.map +0 -1
  123. package/dist/cjs-types/cli/codegen_templates/api.test.d.ts +0 -2
  124. package/dist/cjs-types/cli/codegen_templates/api.test.d.ts.map +0 -1
  125. package/dist/cjs-types/cli/codegen_templates/common.test.d.ts +0 -2
  126. package/dist/cjs-types/cli/codegen_templates/common.test.d.ts.map +0 -1
  127. package/dist/cjs-types/cli/codegen_templates/templates.test.d.ts +0 -2
  128. package/dist/cjs-types/cli/codegen_templates/templates.test.d.ts.map +0 -1
  129. package/dist/cjs-types/cli/codegen_templates/validator_helpers.test.d.ts +0 -2
  130. package/dist/cjs-types/cli/codegen_templates/validator_helpers.test.d.ts.map +0 -1
  131. package/dist/cjs-types/cli/configure.test.d.ts +0 -2
  132. package/dist/cjs-types/cli/configure.test.d.ts.map +0 -1
  133. package/dist/cjs-types/cli/deploymentCreate.test.d.ts +0 -2
  134. package/dist/cjs-types/cli/deploymentCreate.test.d.ts.map +0 -1
  135. package/dist/cjs-types/cli/deploymentSelect.test.d.ts +0 -2
  136. package/dist/cjs-types/cli/deploymentSelect.test.d.ts.map +0 -1
  137. package/dist/cjs-types/cli/deploymentSelection.test.d.ts +0 -2
  138. package/dist/cjs-types/cli/deploymentSelection.test.d.ts.map +0 -1
  139. package/dist/cjs-types/cli/deploymentToken.test.d.ts +0 -2
  140. package/dist/cjs-types/cli/deploymentToken.test.d.ts.map +0 -1
  141. package/dist/cjs-types/cli/dev.test.d.ts +0 -2
  142. package/dist/cjs-types/cli/dev.test.d.ts.map +0 -1
  143. package/dist/cjs-types/cli/envDefault.test.d.ts +0 -2
  144. package/dist/cjs-types/cli/envDefault.test.d.ts.map +0 -1
  145. package/dist/cjs-types/cli/lib/aiFiles/agentsmd.test.d.ts +0 -2
  146. package/dist/cjs-types/cli/lib/aiFiles/agentsmd.test.d.ts.map +0 -1
  147. package/dist/cjs-types/cli/lib/aiFiles/claudemd.test.d.ts +0 -2
  148. package/dist/cjs-types/cli/lib/aiFiles/claudemd.test.d.ts.map +0 -1
  149. package/dist/cjs-types/cli/lib/aiFiles/guidelinesmd.test.d.ts +0 -2
  150. package/dist/cjs-types/cli/lib/aiFiles/guidelinesmd.test.d.ts.map +0 -1
  151. package/dist/cjs-types/cli/lib/aiFiles/index.test.d.ts +0 -2
  152. package/dist/cjs-types/cli/lib/aiFiles/index.test.d.ts.map +0 -1
  153. package/dist/cjs-types/cli/lib/aiFiles/integration.test.d.ts +0 -2
  154. package/dist/cjs-types/cli/lib/aiFiles/integration.test.d.ts.map +0 -1
  155. package/dist/cjs-types/cli/lib/aiFiles/prompt.test.d.ts +0 -2
  156. package/dist/cjs-types/cli/lib/aiFiles/prompt.test.d.ts.map +0 -1
  157. package/dist/cjs-types/cli/lib/aiFiles/state.test.d.ts +0 -2
  158. package/dist/cjs-types/cli/lib/aiFiles/state.test.d.ts.map +0 -1
  159. package/dist/cjs-types/cli/lib/aiFiles/utils.test.d.ts +0 -2
  160. package/dist/cjs-types/cli/lib/aiFiles/utils.test.d.ts.map +0 -1
  161. package/dist/cjs-types/cli/lib/codegen.test.d.ts +0 -2
  162. package/dist/cjs-types/cli/lib/codegen.test.d.ts.map +0 -1
  163. package/dist/cjs-types/cli/lib/components.test.d.ts +0 -2
  164. package/dist/cjs-types/cli/lib/components.test.d.ts.map +0 -1
  165. package/dist/cjs-types/cli/lib/config.test.d.ts +0 -2
  166. package/dist/cjs-types/cli/lib/config.test.d.ts.map +0 -1
  167. package/dist/cjs-types/cli/lib/deployment.test.d.ts +0 -2
  168. package/dist/cjs-types/cli/lib/deployment.test.d.ts.map +0 -1
  169. package/dist/cjs-types/cli/lib/deploymentSelector.test.d.ts +0 -2
  170. package/dist/cjs-types/cli/lib/deploymentSelector.test.d.ts.map +0 -1
  171. package/dist/cjs-types/cli/lib/env.test.d.ts +0 -2
  172. package/dist/cjs-types/cli/lib/env.test.d.ts.map +0 -1
  173. package/dist/cjs-types/cli/lib/expiration.test.d.ts +0 -2
  174. package/dist/cjs-types/cli/lib/expiration.test.d.ts.map +0 -1
  175. package/dist/cjs-types/cli/lib/extractDeploymentNameForWorkOS.test.d.ts +0 -2
  176. package/dist/cjs-types/cli/lib/extractDeploymentNameForWorkOS.test.d.ts.map +0 -1
  177. package/dist/cjs-types/cli/lib/formatEnvValueForDotfile.test.d.ts +0 -2
  178. package/dist/cjs-types/cli/lib/formatEnvValueForDotfile.test.d.ts.map +0 -1
  179. package/dist/cjs-types/cli/lib/formatTargetedDeployment.test.d.ts +0 -2
  180. package/dist/cjs-types/cli/lib/formatTargetedDeployment.test.d.ts.map +0 -1
  181. package/dist/cjs-types/cli/lib/fsUtils.test.d.ts +0 -2
  182. package/dist/cjs-types/cli/lib/fsUtils.test.d.ts.map +0 -1
  183. package/dist/cjs-types/cli/lib/generateDocs.test.d.ts +0 -2
  184. package/dist/cjs-types/cli/lib/generateDocs.test.d.ts.map +0 -1
  185. package/dist/cjs-types/cli/lib/indexes.test.d.ts +0 -2
  186. package/dist/cjs-types/cli/lib/indexes.test.d.ts.map +0 -1
  187. package/dist/cjs-types/cli/lib/localDeployment/run.test.d.ts +0 -2
  188. package/dist/cjs-types/cli/lib/localDeployment/run.test.d.ts.map +0 -1
  189. package/dist/cjs-types/cli/lib/localDeployment/secrets.test.d.ts +0 -2
  190. package/dist/cjs-types/cli/lib/localDeployment/secrets.test.d.ts.map +0 -1
  191. package/dist/cjs-types/cli/lib/run.test.d.ts +0 -2
  192. package/dist/cjs-types/cli/lib/run.test.d.ts.map +0 -1
  193. package/dist/cjs-types/cli/lib/runTestFunction.test.d.ts +0 -2
  194. package/dist/cjs-types/cli/lib/runTestFunction.test.d.ts.map +0 -1
  195. package/dist/cjs-types/cli/lib/typecheck.test.d.ts +0 -2
  196. package/dist/cjs-types/cli/lib/typecheck.test.d.ts.map +0 -1
  197. package/dist/cjs-types/cli/lib/updates.test.d.ts +0 -2
  198. package/dist/cjs-types/cli/lib/updates.test.d.ts.map +0 -1
  199. package/dist/cjs-types/cli/lib/utils/hash.test.d.ts +0 -2
  200. package/dist/cjs-types/cli/lib/utils/hash.test.d.ts.map +0 -1
  201. package/dist/cjs-types/cli/lib/utils/utils.test.d.ts +0 -2
  202. package/dist/cjs-types/cli/lib/utils/utils.test.d.ts.map +0 -1
  203. package/dist/cjs-types/cli/lib/versionApi.test.d.ts +0 -2
  204. package/dist/cjs-types/cli/lib/versionApi.test.d.ts.map +0 -1
  205. package/dist/cjs-types/cli/lib/workos/environmentApi.test.d.ts +0 -2
  206. package/dist/cjs-types/cli/lib/workos/environmentApi.test.d.ts.map +0 -1
  207. package/dist/cjs-types/cli/lib/workos/workos.test.d.ts +0 -2
  208. package/dist/cjs-types/cli/lib/workos/workos.test.d.ts.map +0 -1
  209. package/dist/cjs-types/cli/login.test.d.ts +0 -2
  210. package/dist/cjs-types/cli/login.test.d.ts.map +0 -1
  211. package/dist/cjs-types/common/index.test.d.ts +0 -2
  212. package/dist/cjs-types/common/index.test.d.ts.map +0 -1
  213. package/dist/cjs-types/nextjs/nextjs.test.d.ts +0 -2
  214. package/dist/cjs-types/nextjs/nextjs.test.d.ts.map +0 -1
  215. package/dist/cjs-types/react/ConvexAuthState.test.d.ts +0 -2
  216. package/dist/cjs-types/react/ConvexAuthState.test.d.ts.map +0 -1
  217. package/dist/cjs-types/react/auth_helpers.test.d.ts +0 -2
  218. package/dist/cjs-types/react/auth_helpers.test.d.ts.map +0 -1
  219. package/dist/cjs-types/react/auth_websocket.test.d.ts +0 -2
  220. package/dist/cjs-types/react/auth_websocket.test.d.ts.map +0 -1
  221. package/dist/cjs-types/react/client.test.d.ts +0 -2
  222. package/dist/cjs-types/react/client.test.d.ts.map +0 -1
  223. package/dist/cjs-types/react/client_provided_base_client.test.d.ts +0 -2
  224. package/dist/cjs-types/react/client_provided_base_client.test.d.ts.map +0 -1
  225. package/dist/cjs-types/react/queries_observer.test.d.ts +0 -2
  226. package/dist/cjs-types/react/queries_observer.test.d.ts.map +0 -1
  227. package/dist/cjs-types/react/react_node.test.d.ts +0 -2
  228. package/dist/cjs-types/react/react_node.test.d.ts.map +0 -1
  229. package/dist/cjs-types/react/use_paginated_query.test.d.ts +0 -2
  230. package/dist/cjs-types/react/use_paginated_query.test.d.ts.map +0 -1
  231. package/dist/cjs-types/react/use_queries.test.d.ts +0 -5
  232. package/dist/cjs-types/react/use_queries.test.d.ts.map +0 -1
  233. package/dist/cjs-types/react/use_query.test.d.ts +0 -5
  234. package/dist/cjs-types/react/use_query.test.d.ts.map +0 -1
  235. package/dist/cjs-types/react/use_query_object_options.test.d.ts +0 -5
  236. package/dist/cjs-types/react/use_query_object_options.test.d.ts.map +0 -1
  237. package/dist/cjs-types/react/use_query_result.test.d.ts +0 -5
  238. package/dist/cjs-types/react/use_query_result.test.d.ts.map +0 -1
  239. package/dist/cjs-types/react-auth0/ConvexProviderWithAuth0.test.d.ts +0 -2
  240. package/dist/cjs-types/react-auth0/ConvexProviderWithAuth0.test.d.ts.map +0 -1
  241. package/dist/cjs-types/react-clerk/ConvexProviderWithClerk.test.d.ts +0 -2
  242. package/dist/cjs-types/react-clerk/ConvexProviderWithClerk.test.d.ts.map +0 -1
  243. package/dist/cjs-types/server/api.intersect.test.d.ts +0 -2
  244. package/dist/cjs-types/server/api.intersect.test.d.ts.map +0 -1
  245. package/dist/cjs-types/server/api.test.d.ts +0 -2
  246. package/dist/cjs-types/server/api.test.d.ts.map +0 -1
  247. package/dist/cjs-types/server/audit_logging.test.d.ts +0 -2
  248. package/dist/cjs-types/server/audit_logging.test.d.ts.map +0 -1
  249. package/dist/cjs-types/server/components/index.test.d.ts +0 -2
  250. package/dist/cjs-types/server/components/index.test.d.ts.map +0 -1
  251. package/dist/cjs-types/server/cron.test.d.ts +0 -2
  252. package/dist/cjs-types/server/cron.test.d.ts.map +0 -1
  253. package/dist/cjs-types/server/data_model.test.d.ts +0 -2
  254. package/dist/cjs-types/server/data_model.test.d.ts.map +0 -1
  255. package/dist/cjs-types/server/database.test.d.ts +0 -2
  256. package/dist/cjs-types/server/database.test.d.ts.map +0 -1
  257. package/dist/cjs-types/server/database_api.test.d.ts +0 -2
  258. package/dist/cjs-types/server/database_api.test.d.ts.map +0 -1
  259. package/dist/cjs-types/server/filter_builder.test.d.ts +0 -2
  260. package/dist/cjs-types/server/filter_builder.test.d.ts.map +0 -1
  261. package/dist/cjs-types/server/impl/actions_impl.test.d.ts +0 -2
  262. package/dist/cjs-types/server/impl/actions_impl.test.d.ts.map +0 -1
  263. package/dist/cjs-types/server/impl/filter_builder_impl.test.d.ts +0 -2
  264. package/dist/cjs-types/server/impl/filter_builder_impl.test.d.ts.map +0 -1
  265. package/dist/cjs-types/server/impl/query_impl.test.d.ts +0 -2
  266. package/dist/cjs-types/server/impl/query_impl.test.d.ts.map +0 -1
  267. package/dist/cjs-types/server/pagination.test.d.ts +0 -2
  268. package/dist/cjs-types/server/pagination.test.d.ts.map +0 -1
  269. package/dist/cjs-types/server/query.test.d.ts +0 -2
  270. package/dist/cjs-types/server/query.test.d.ts.map +0 -1
  271. package/dist/cjs-types/server/registration.test.d.ts +0 -2
  272. package/dist/cjs-types/server/registration.test.d.ts.map +0 -1
  273. package/dist/cjs-types/server/router.test.d.ts +0 -2
  274. package/dist/cjs-types/server/router.test.d.ts.map +0 -1
  275. package/dist/cjs-types/server/scheduler.test.d.ts +0 -2
  276. package/dist/cjs-types/server/scheduler.test.d.ts.map +0 -1
  277. package/dist/cjs-types/server/schema.test.d.ts +0 -2
  278. package/dist/cjs-types/server/schema.test.d.ts.map +0 -1
  279. package/dist/cjs-types/test/fake_watch.d.ts +0 -16
  280. package/dist/cjs-types/test/fake_watch.d.ts.map +0 -1
  281. package/dist/cjs-types/test/type_testing.d.ts +0 -9
  282. package/dist/cjs-types/test/type_testing.d.ts.map +0 -1
  283. package/dist/cjs-types/type_utils.test.d.ts +0 -2
  284. package/dist/cjs-types/type_utils.test.d.ts.map +0 -1
  285. package/dist/cjs-types/values/size.test.d.ts +0 -2
  286. package/dist/cjs-types/values/size.test.d.ts.map +0 -1
  287. package/dist/cjs-types/values/validator.test.d.ts +0 -2
  288. package/dist/cjs-types/values/validator.test.d.ts.map +0 -1
  289. package/dist/cjs-types/values/value.test.d.ts +0 -2
  290. package/dist/cjs-types/values/value.test.d.ts.map +0 -1
  291. package/dist/esm-types/browser/http_client.test.d.ts +0 -2
  292. package/dist/esm-types/browser/http_client.test.d.ts.map +0 -1
  293. package/dist/esm-types/browser/query_options.test.d.ts +0 -2
  294. package/dist/esm-types/browser/query_options.test.d.ts.map +0 -1
  295. package/dist/esm-types/browser/simple_client.test.d.ts +0 -2
  296. package/dist/esm-types/browser/simple_client.test.d.ts.map +0 -1
  297. package/dist/esm-types/browser/sync/client.test.d.ts +0 -5
  298. package/dist/esm-types/browser/sync/client.test.d.ts.map +0 -1
  299. package/dist/esm-types/browser/sync/client_node.test.d.ts +0 -2
  300. package/dist/esm-types/browser/sync/client_node.test.d.ts.map +0 -1
  301. package/dist/esm-types/browser/sync/client_node_test_helpers.d.ts +0 -44
  302. package/dist/esm-types/browser/sync/client_node_test_helpers.d.ts.map +0 -1
  303. package/dist/esm-types/browser/sync/local_state.test.d.ts +0 -2
  304. package/dist/esm-types/browser/sync/local_state.test.d.ts.map +0 -1
  305. package/dist/esm-types/browser/sync/optimistic_query_set.test.d.ts +0 -2
  306. package/dist/esm-types/browser/sync/optimistic_query_set.test.d.ts.map +0 -1
  307. package/dist/esm-types/browser/sync/paginated_query_client.test.d.ts +0 -2
  308. package/dist/esm-types/browser/sync/paginated_query_client.test.d.ts.map +0 -1
  309. package/dist/esm-types/browser/sync/protocol.test.d.ts +0 -5
  310. package/dist/esm-types/browser/sync/protocol.test.d.ts.map +0 -1
  311. package/dist/esm-types/browser/sync/request_manager.test.d.ts +0 -2
  312. package/dist/esm-types/browser/sync/request_manager.test.d.ts.map +0 -1
  313. package/dist/esm-types/bundler/fs.test.d.ts +0 -2
  314. package/dist/esm-types/bundler/fs.test.d.ts.map +0 -1
  315. package/dist/esm-types/bundler/index.test.d.ts +0 -2
  316. package/dist/esm-types/bundler/index.test.d.ts.map +0 -1
  317. package/dist/esm-types/cli/codegen_templates/api.test.d.ts +0 -2
  318. package/dist/esm-types/cli/codegen_templates/api.test.d.ts.map +0 -1
  319. package/dist/esm-types/cli/codegen_templates/common.test.d.ts +0 -2
  320. package/dist/esm-types/cli/codegen_templates/common.test.d.ts.map +0 -1
  321. package/dist/esm-types/cli/codegen_templates/templates.test.d.ts +0 -2
  322. package/dist/esm-types/cli/codegen_templates/templates.test.d.ts.map +0 -1
  323. package/dist/esm-types/cli/codegen_templates/validator_helpers.test.d.ts +0 -2
  324. package/dist/esm-types/cli/codegen_templates/validator_helpers.test.d.ts.map +0 -1
  325. package/dist/esm-types/cli/configure.test.d.ts +0 -2
  326. package/dist/esm-types/cli/configure.test.d.ts.map +0 -1
  327. package/dist/esm-types/cli/deploymentCreate.test.d.ts +0 -2
  328. package/dist/esm-types/cli/deploymentCreate.test.d.ts.map +0 -1
  329. package/dist/esm-types/cli/deploymentSelect.test.d.ts +0 -2
  330. package/dist/esm-types/cli/deploymentSelect.test.d.ts.map +0 -1
  331. package/dist/esm-types/cli/deploymentSelection.test.d.ts +0 -2
  332. package/dist/esm-types/cli/deploymentSelection.test.d.ts.map +0 -1
  333. package/dist/esm-types/cli/deploymentToken.test.d.ts +0 -2
  334. package/dist/esm-types/cli/deploymentToken.test.d.ts.map +0 -1
  335. package/dist/esm-types/cli/dev.test.d.ts +0 -2
  336. package/dist/esm-types/cli/dev.test.d.ts.map +0 -1
  337. package/dist/esm-types/cli/envDefault.test.d.ts +0 -2
  338. package/dist/esm-types/cli/envDefault.test.d.ts.map +0 -1
  339. package/dist/esm-types/cli/lib/aiFiles/agentsmd.test.d.ts +0 -2
  340. package/dist/esm-types/cli/lib/aiFiles/agentsmd.test.d.ts.map +0 -1
  341. package/dist/esm-types/cli/lib/aiFiles/claudemd.test.d.ts +0 -2
  342. package/dist/esm-types/cli/lib/aiFiles/claudemd.test.d.ts.map +0 -1
  343. package/dist/esm-types/cli/lib/aiFiles/guidelinesmd.test.d.ts +0 -2
  344. package/dist/esm-types/cli/lib/aiFiles/guidelinesmd.test.d.ts.map +0 -1
  345. package/dist/esm-types/cli/lib/aiFiles/index.test.d.ts +0 -2
  346. package/dist/esm-types/cli/lib/aiFiles/index.test.d.ts.map +0 -1
  347. package/dist/esm-types/cli/lib/aiFiles/integration.test.d.ts +0 -2
  348. package/dist/esm-types/cli/lib/aiFiles/integration.test.d.ts.map +0 -1
  349. package/dist/esm-types/cli/lib/aiFiles/prompt.test.d.ts +0 -2
  350. package/dist/esm-types/cli/lib/aiFiles/prompt.test.d.ts.map +0 -1
  351. package/dist/esm-types/cli/lib/aiFiles/state.test.d.ts +0 -2
  352. package/dist/esm-types/cli/lib/aiFiles/state.test.d.ts.map +0 -1
  353. package/dist/esm-types/cli/lib/aiFiles/utils.test.d.ts +0 -2
  354. package/dist/esm-types/cli/lib/aiFiles/utils.test.d.ts.map +0 -1
  355. package/dist/esm-types/cli/lib/codegen.test.d.ts +0 -2
  356. package/dist/esm-types/cli/lib/codegen.test.d.ts.map +0 -1
  357. package/dist/esm-types/cli/lib/components.test.d.ts +0 -2
  358. package/dist/esm-types/cli/lib/components.test.d.ts.map +0 -1
  359. package/dist/esm-types/cli/lib/config.test.d.ts +0 -2
  360. package/dist/esm-types/cli/lib/config.test.d.ts.map +0 -1
  361. package/dist/esm-types/cli/lib/deployment.test.d.ts +0 -2
  362. package/dist/esm-types/cli/lib/deployment.test.d.ts.map +0 -1
  363. package/dist/esm-types/cli/lib/deploymentSelector.test.d.ts +0 -2
  364. package/dist/esm-types/cli/lib/deploymentSelector.test.d.ts.map +0 -1
  365. package/dist/esm-types/cli/lib/env.test.d.ts +0 -2
  366. package/dist/esm-types/cli/lib/env.test.d.ts.map +0 -1
  367. package/dist/esm-types/cli/lib/expiration.test.d.ts +0 -2
  368. package/dist/esm-types/cli/lib/expiration.test.d.ts.map +0 -1
  369. package/dist/esm-types/cli/lib/extractDeploymentNameForWorkOS.test.d.ts +0 -2
  370. package/dist/esm-types/cli/lib/extractDeploymentNameForWorkOS.test.d.ts.map +0 -1
  371. package/dist/esm-types/cli/lib/formatEnvValueForDotfile.test.d.ts +0 -2
  372. package/dist/esm-types/cli/lib/formatEnvValueForDotfile.test.d.ts.map +0 -1
  373. package/dist/esm-types/cli/lib/formatTargetedDeployment.test.d.ts +0 -2
  374. package/dist/esm-types/cli/lib/formatTargetedDeployment.test.d.ts.map +0 -1
  375. package/dist/esm-types/cli/lib/fsUtils.test.d.ts +0 -2
  376. package/dist/esm-types/cli/lib/fsUtils.test.d.ts.map +0 -1
  377. package/dist/esm-types/cli/lib/generateDocs.test.d.ts +0 -2
  378. package/dist/esm-types/cli/lib/generateDocs.test.d.ts.map +0 -1
  379. package/dist/esm-types/cli/lib/indexes.test.d.ts +0 -2
  380. package/dist/esm-types/cli/lib/indexes.test.d.ts.map +0 -1
  381. package/dist/esm-types/cli/lib/localDeployment/run.test.d.ts +0 -2
  382. package/dist/esm-types/cli/lib/localDeployment/run.test.d.ts.map +0 -1
  383. package/dist/esm-types/cli/lib/localDeployment/secrets.test.d.ts +0 -2
  384. package/dist/esm-types/cli/lib/localDeployment/secrets.test.d.ts.map +0 -1
  385. package/dist/esm-types/cli/lib/run.test.d.ts +0 -2
  386. package/dist/esm-types/cli/lib/run.test.d.ts.map +0 -1
  387. package/dist/esm-types/cli/lib/runTestFunction.test.d.ts +0 -2
  388. package/dist/esm-types/cli/lib/runTestFunction.test.d.ts.map +0 -1
  389. package/dist/esm-types/cli/lib/typecheck.test.d.ts +0 -2
  390. package/dist/esm-types/cli/lib/typecheck.test.d.ts.map +0 -1
  391. package/dist/esm-types/cli/lib/updates.test.d.ts +0 -2
  392. package/dist/esm-types/cli/lib/updates.test.d.ts.map +0 -1
  393. package/dist/esm-types/cli/lib/utils/hash.test.d.ts +0 -2
  394. package/dist/esm-types/cli/lib/utils/hash.test.d.ts.map +0 -1
  395. package/dist/esm-types/cli/lib/utils/utils.test.d.ts +0 -2
  396. package/dist/esm-types/cli/lib/utils/utils.test.d.ts.map +0 -1
  397. package/dist/esm-types/cli/lib/versionApi.test.d.ts +0 -2
  398. package/dist/esm-types/cli/lib/versionApi.test.d.ts.map +0 -1
  399. package/dist/esm-types/cli/lib/workos/environmentApi.test.d.ts +0 -2
  400. package/dist/esm-types/cli/lib/workos/environmentApi.test.d.ts.map +0 -1
  401. package/dist/esm-types/cli/lib/workos/workos.test.d.ts +0 -2
  402. package/dist/esm-types/cli/lib/workos/workos.test.d.ts.map +0 -1
  403. package/dist/esm-types/cli/login.test.d.ts +0 -2
  404. package/dist/esm-types/cli/login.test.d.ts.map +0 -1
  405. package/dist/esm-types/common/index.test.d.ts +0 -2
  406. package/dist/esm-types/common/index.test.d.ts.map +0 -1
  407. package/dist/esm-types/nextjs/nextjs.test.d.ts +0 -2
  408. package/dist/esm-types/nextjs/nextjs.test.d.ts.map +0 -1
  409. package/dist/esm-types/react/ConvexAuthState.test.d.ts +0 -2
  410. package/dist/esm-types/react/ConvexAuthState.test.d.ts.map +0 -1
  411. package/dist/esm-types/react/auth_helpers.test.d.ts +0 -2
  412. package/dist/esm-types/react/auth_helpers.test.d.ts.map +0 -1
  413. package/dist/esm-types/react/auth_websocket.test.d.ts +0 -2
  414. package/dist/esm-types/react/auth_websocket.test.d.ts.map +0 -1
  415. package/dist/esm-types/react/client.test.d.ts +0 -2
  416. package/dist/esm-types/react/client.test.d.ts.map +0 -1
  417. package/dist/esm-types/react/client_provided_base_client.test.d.ts +0 -2
  418. package/dist/esm-types/react/client_provided_base_client.test.d.ts.map +0 -1
  419. package/dist/esm-types/react/queries_observer.test.d.ts +0 -2
  420. package/dist/esm-types/react/queries_observer.test.d.ts.map +0 -1
  421. package/dist/esm-types/react/react_node.test.d.ts +0 -2
  422. package/dist/esm-types/react/react_node.test.d.ts.map +0 -1
  423. package/dist/esm-types/react/use_paginated_query.test.d.ts +0 -2
  424. package/dist/esm-types/react/use_paginated_query.test.d.ts.map +0 -1
  425. package/dist/esm-types/react/use_queries.test.d.ts +0 -5
  426. package/dist/esm-types/react/use_queries.test.d.ts.map +0 -1
  427. package/dist/esm-types/react/use_query.test.d.ts +0 -5
  428. package/dist/esm-types/react/use_query.test.d.ts.map +0 -1
  429. package/dist/esm-types/react/use_query_object_options.test.d.ts +0 -5
  430. package/dist/esm-types/react/use_query_object_options.test.d.ts.map +0 -1
  431. package/dist/esm-types/react/use_query_result.test.d.ts +0 -5
  432. package/dist/esm-types/react/use_query_result.test.d.ts.map +0 -1
  433. package/dist/esm-types/react-auth0/ConvexProviderWithAuth0.test.d.ts +0 -2
  434. package/dist/esm-types/react-auth0/ConvexProviderWithAuth0.test.d.ts.map +0 -1
  435. package/dist/esm-types/react-clerk/ConvexProviderWithClerk.test.d.ts +0 -2
  436. package/dist/esm-types/react-clerk/ConvexProviderWithClerk.test.d.ts.map +0 -1
  437. package/dist/esm-types/server/api.intersect.test.d.ts +0 -2
  438. package/dist/esm-types/server/api.intersect.test.d.ts.map +0 -1
  439. package/dist/esm-types/server/api.test.d.ts +0 -2
  440. package/dist/esm-types/server/api.test.d.ts.map +0 -1
  441. package/dist/esm-types/server/audit_logging.test.d.ts +0 -2
  442. package/dist/esm-types/server/audit_logging.test.d.ts.map +0 -1
  443. package/dist/esm-types/server/components/index.test.d.ts +0 -2
  444. package/dist/esm-types/server/components/index.test.d.ts.map +0 -1
  445. package/dist/esm-types/server/cron.test.d.ts +0 -2
  446. package/dist/esm-types/server/cron.test.d.ts.map +0 -1
  447. package/dist/esm-types/server/data_model.test.d.ts +0 -2
  448. package/dist/esm-types/server/data_model.test.d.ts.map +0 -1
  449. package/dist/esm-types/server/database.test.d.ts +0 -2
  450. package/dist/esm-types/server/database.test.d.ts.map +0 -1
  451. package/dist/esm-types/server/database_api.test.d.ts +0 -2
  452. package/dist/esm-types/server/database_api.test.d.ts.map +0 -1
  453. package/dist/esm-types/server/filter_builder.test.d.ts +0 -2
  454. package/dist/esm-types/server/filter_builder.test.d.ts.map +0 -1
  455. package/dist/esm-types/server/impl/actions_impl.test.d.ts +0 -2
  456. package/dist/esm-types/server/impl/actions_impl.test.d.ts.map +0 -1
  457. package/dist/esm-types/server/impl/filter_builder_impl.test.d.ts +0 -2
  458. package/dist/esm-types/server/impl/filter_builder_impl.test.d.ts.map +0 -1
  459. package/dist/esm-types/server/impl/query_impl.test.d.ts +0 -2
  460. package/dist/esm-types/server/impl/query_impl.test.d.ts.map +0 -1
  461. package/dist/esm-types/server/pagination.test.d.ts +0 -2
  462. package/dist/esm-types/server/pagination.test.d.ts.map +0 -1
  463. package/dist/esm-types/server/query.test.d.ts +0 -2
  464. package/dist/esm-types/server/query.test.d.ts.map +0 -1
  465. package/dist/esm-types/server/registration.test.d.ts +0 -2
  466. package/dist/esm-types/server/registration.test.d.ts.map +0 -1
  467. package/dist/esm-types/server/router.test.d.ts +0 -2
  468. package/dist/esm-types/server/router.test.d.ts.map +0 -1
  469. package/dist/esm-types/server/scheduler.test.d.ts +0 -2
  470. package/dist/esm-types/server/scheduler.test.d.ts.map +0 -1
  471. package/dist/esm-types/server/schema.test.d.ts +0 -2
  472. package/dist/esm-types/server/schema.test.d.ts.map +0 -1
  473. package/dist/esm-types/test/fake_watch.d.ts +0 -16
  474. package/dist/esm-types/test/fake_watch.d.ts.map +0 -1
  475. package/dist/esm-types/test/type_testing.d.ts +0 -9
  476. package/dist/esm-types/test/type_testing.d.ts.map +0 -1
  477. package/dist/esm-types/type_utils.test.d.ts +0 -2
  478. package/dist/esm-types/type_utils.test.d.ts.map +0 -1
  479. package/dist/esm-types/values/size.test.d.ts +0 -2
  480. package/dist/esm-types/values/size.test.d.ts.map +0 -1
  481. package/dist/esm-types/values/validator.test.d.ts +0 -2
  482. package/dist/esm-types/values/validator.test.d.ts.map +0 -1
  483. package/dist/esm-types/values/value.test.d.ts +0 -2
  484. package/dist/esm-types/values/value.test.d.ts.map +0 -1
  485. package/src/browser/http_client.test.ts +0 -202
  486. package/src/browser/query_options.test.ts +0 -43
  487. package/src/browser/simple_client.test.ts +0 -104
  488. package/src/browser/sync/client.test.ts +0 -44
  489. package/src/browser/sync/client_node.test.ts +0 -1207
  490. package/src/browser/sync/client_node_test_helpers.ts +0 -200
  491. package/src/browser/sync/local_state.test.ts +0 -128
  492. package/src/browser/sync/optimistic_query_set.test.ts +0 -253
  493. package/src/browser/sync/paginated_query_client.test.ts +0 -597
  494. package/src/browser/sync/protocol.test.ts +0 -14
  495. package/src/browser/sync/request_manager.test.ts +0 -273
  496. package/src/bundler/fs.test.ts +0 -86
  497. package/src/bundler/index.test.ts +0 -210
  498. package/src/bundler/test_fixtures/js/project01/bar.js +0 -4
  499. package/src/bundler/test_fixtures/js/project01/file with spaces.js +0 -1
  500. package/src/bundler/test_fixtures/js/project01/foo.js +0 -9
  501. package/src/bundler/test_fixtures/js/project_with_https/https.js +0 -9
  502. package/src/bundler/test_fixtures/js/project_with_https_not_at_top_level/default.js +0 -3
  503. package/src/bundler/test_fixtures/js/project_with_https_not_at_top_level/more_code/https.js +0 -5
  504. package/src/bundler/test_fixtures/js/project_with_https_without_router/https.js +0 -1
  505. package/src/bundler/test_fixtures/js/project_with_node_shims/uses_node_shims.js +0 -4
  506. package/src/cli/codegen_templates/api.test.ts +0 -18
  507. package/src/cli/codegen_templates/common.test.ts +0 -52
  508. package/src/cli/codegen_templates/templates.test.ts +0 -16
  509. package/src/cli/codegen_templates/validator_helpers.test.ts +0 -31
  510. package/src/cli/configure.test.ts +0 -138
  511. package/src/cli/deploymentCreate.test.ts +0 -1376
  512. package/src/cli/deploymentSelect.test.ts +0 -1291
  513. package/src/cli/deploymentSelection.test.ts +0 -2546
  514. package/src/cli/deploymentToken.test.ts +0 -397
  515. package/src/cli/dev.test.ts +0 -157
  516. package/src/cli/envDefault.test.ts +0 -495
  517. package/src/cli/lib/__snapshots__/formatTargetedDeployment.test.ts.snap +0 -94
  518. package/src/cli/lib/aiFiles/agentsmd.test.ts +0 -133
  519. package/src/cli/lib/aiFiles/claudemd.test.ts +0 -92
  520. package/src/cli/lib/aiFiles/guidelinesmd.test.ts +0 -50
  521. package/src/cli/lib/aiFiles/index.test.ts +0 -986
  522. package/src/cli/lib/aiFiles/integration.test.ts +0 -692
  523. package/src/cli/lib/aiFiles/prompt.test.ts +0 -202
  524. package/src/cli/lib/aiFiles/state.test.ts +0 -305
  525. package/src/cli/lib/aiFiles/utils.test.ts +0 -50
  526. package/src/cli/lib/codegen.test.ts +0 -49
  527. package/src/cli/lib/components.test.ts +0 -227
  528. package/src/cli/lib/config.test.ts +0 -1026
  529. package/src/cli/lib/deployment.test.ts +0 -85
  530. package/src/cli/lib/deploymentSelector.test.ts +0 -107
  531. package/src/cli/lib/env.test.ts +0 -60
  532. package/src/cli/lib/expiration.test.ts +0 -159
  533. package/src/cli/lib/extractDeploymentNameForWorkOS.test.ts +0 -30
  534. package/src/cli/lib/formatEnvValueForDotfile.test.ts +0 -294
  535. package/src/cli/lib/formatTargetedDeployment.test.ts +0 -281
  536. package/src/cli/lib/fsUtils.test.ts +0 -67
  537. package/src/cli/lib/generateDocs.test.ts +0 -326
  538. package/src/cli/lib/indexes.test.ts +0 -77
  539. package/src/cli/lib/localDeployment/run.test.ts +0 -104
  540. package/src/cli/lib/localDeployment/secrets.test.ts +0 -53
  541. package/src/cli/lib/run.test.ts +0 -54
  542. package/src/cli/lib/runTestFunction.test.ts +0 -84
  543. package/src/cli/lib/typecheck.test.ts +0 -71
  544. package/src/cli/lib/updates.test.ts +0 -157
  545. package/src/cli/lib/utils/hash.test.ts +0 -25
  546. package/src/cli/lib/utils/utils.test.ts +0 -340
  547. package/src/cli/lib/versionApi.test.ts +0 -471
  548. package/src/cli/lib/workos/environmentApi.test.ts +0 -107
  549. package/src/cli/lib/workos/workos.test.ts +0 -242
  550. package/src/cli/login.test.ts +0 -261
  551. package/src/common/README.md +0 -2
  552. package/src/common/index.test.ts +0 -35
  553. package/src/nextjs/nextjs.test.tsx +0 -94
  554. package/src/react/ConvexAuthState.test.tsx +0 -702
  555. package/src/react/auth_helpers.test.tsx +0 -45
  556. package/src/react/auth_websocket.test.tsx +0 -1177
  557. package/src/react/client.test.tsx +0 -261
  558. package/src/react/client_provided_base_client.test.tsx +0 -174
  559. package/src/react/queries_observer.test.ts +0 -176
  560. package/src/react/react_node.test.ts +0 -78
  561. package/src/react/use_paginated_query.test.tsx +0 -1420
  562. package/src/react/use_queries.test.ts +0 -140
  563. package/src/react/use_query.test.ts +0 -71
  564. package/src/react/use_query_object_options.test.ts +0 -51
  565. package/src/react/use_query_result.test.ts +0 -75
  566. package/src/react-auth0/ConvexProviderWithAuth0.test.tsx +0 -17
  567. package/src/react-clerk/ConvexProviderWithClerk.test.tsx +0 -18
  568. package/src/server/README.md +0 -15
  569. package/src/server/api.intersect.test.ts +0 -109
  570. package/src/server/api.test.ts +0 -447
  571. package/src/server/audit_logging.test.ts +0 -131
  572. package/src/server/components/index.test.ts +0 -48
  573. package/src/server/cron.test.ts +0 -58
  574. package/src/server/data_model.test.ts +0 -221
  575. package/src/server/database.test.ts +0 -184
  576. package/src/server/database_api.test.ts +0 -439
  577. package/src/server/filter_builder.test.ts +0 -102
  578. package/src/server/impl/actions_impl.test.ts +0 -59
  579. package/src/server/impl/filter_builder_impl.test.ts +0 -13
  580. package/src/server/impl/query_impl.test.ts +0 -46
  581. package/src/server/pagination.test.ts +0 -49
  582. package/src/server/query.test.ts +0 -112
  583. package/src/server/registration.test.ts +0 -589
  584. package/src/server/router.test.ts +0 -148
  585. package/src/server/scheduler.test.ts +0 -31
  586. package/src/server/schema.test.ts +0 -1081
  587. package/src/test/fake_watch.ts +0 -54
  588. package/src/test/type_testing.ts +0 -21
  589. package/src/type_utils.test.ts +0 -62
  590. package/src/values/size.test.ts +0 -95
  591. package/src/values/validator.test.ts +0 -619
  592. package/src/values/value.test.ts +0 -232
  593. package/src/vendor/README.md +0 -18
  594. package/src/vendor/jwt-decode/README.md +0 -1
@@ -1,1026 +0,0 @@
1
- import {
2
- vi,
3
- test,
4
- expect,
5
- beforeEach,
6
- afterEach,
7
- describe,
8
- MockInstance,
9
- beforeAll,
10
- } from "vitest";
11
- import fs from "fs";
12
- import os from "os";
13
- import path from "path";
14
- import {
15
- parseProjectConfig,
16
- type ProjectConfig,
17
- ensureConvexFunctionsDir,
18
- readProjectConfig,
19
- resetUnknownKeyWarnings,
20
- writeAiFilesConfig,
21
- } from "./config.js";
22
- import { Context, oneoffContext } from "../../bundler/context.js";
23
- import { logFailure } from "../../bundler/log.js";
24
- import { stripVTControlCharacters } from "util";
25
-
26
- let ctx: Context;
27
- let stderrSpy: MockInstance;
28
-
29
- beforeAll(async () => {
30
- stderrSpy = vi.spyOn(process.stderr, "write").mockImplementation(() => true);
31
- });
32
-
33
- beforeEach(async () => {
34
- const originalContext = await oneoffContext({
35
- url: undefined,
36
- adminKey: undefined,
37
- envFile: undefined,
38
- });
39
- ctx = {
40
- ...originalContext,
41
- crash: (args: { printedMessage: string | null }) => {
42
- if (args.printedMessage !== null) {
43
- logFailure(args.printedMessage);
44
- }
45
- throw new Error();
46
- },
47
- };
48
- stderrSpy.mockClear();
49
- resetUnknownKeyWarnings(); // Reset warning state between tests
50
- });
51
-
52
- const assertParses = async (
53
- inp: Record<string, any>,
54
- expected?: ProjectConfig,
55
- ) => {
56
- const result = await parseProjectConfig(ctx, inp);
57
- expect(result).toEqual(expected ?? inp);
58
- };
59
-
60
- const assertParseError = async (inp: any, err: string) => {
61
- stderrSpy.mockClear();
62
- await expect(parseProjectConfig(ctx, inp)).rejects.toThrow();
63
- const calledWith = stderrSpy.mock.calls as string[][];
64
- expect(stripVTControlCharacters(calledWith[0][0])).toEqual(err);
65
- };
66
-
67
- test("parseProjectConfig basic valid configs", async () => {
68
- await assertParses(
69
- {
70
- functions: "functions/",
71
- },
72
- {
73
- functions: "functions/",
74
- // default values (note that node version *has no default*
75
- node: { externalPackages: [] },
76
- generateCommonJSApi: false,
77
- codegen: { staticApi: false, staticDataModel: false },
78
- },
79
- );
80
-
81
- await assertParses(
82
- {
83
- functions: "functions/",
84
-
85
- // unknown property
86
- futureFeature: 123,
87
-
88
- // deprecated
89
- team: "team",
90
- project: "proj",
91
- prodUrl: "prodUrl",
92
- authInfo: [
93
- {
94
- applicationID: "hello",
95
- domain: "world",
96
- },
97
- ],
98
- },
99
- {
100
- functions: "functions/",
101
- // default values
102
- node: { externalPackages: [] },
103
- generateCommonJSApi: false,
104
- codegen: { staticApi: false, staticDataModel: false },
105
-
106
- // unknown properties are preserved
107
- ...({ futureFeature: 123 } as any),
108
-
109
- // deprecated
110
- team: "team",
111
- project: "proj",
112
- prodUrl: "prodUrl",
113
- authInfo: [
114
- {
115
- applicationID: "hello",
116
- domain: "world",
117
- },
118
- ],
119
- },
120
- );
121
- });
122
-
123
- test("parseProjectConfig - node defaults", async () => {
124
- // No node field -> gets defaulted
125
- await assertParses(
126
- {},
127
- {
128
- functions: "convex/",
129
- node: { externalPackages: [] },
130
- generateCommonJSApi: false,
131
- codegen: { staticApi: false, staticDataModel: false },
132
- },
133
- );
134
-
135
- // node exists but externalPackages missing -> gets defaulted
136
- await assertParses(
137
- { node: { extraField: 123 } },
138
- {
139
- functions: "convex/",
140
- node: { externalPackages: [], ...{ extraField: 123 } },
141
- generateCommonJSApi: false,
142
- codegen: { staticApi: false, staticDataModel: false },
143
- },
144
- );
145
-
146
- // node with nodeVersion but no externalPackages
147
- await assertParses(
148
- { node: { nodeVersion: "18", extraField: 123 } },
149
- {
150
- functions: "convex/",
151
- node: { externalPackages: [], nodeVersion: "18", ...{ extraField: 123 } },
152
- generateCommonJSApi: false,
153
- codegen: { staticApi: false, staticDataModel: false },
154
- },
155
- );
156
- });
157
-
158
- test("parseProjectConfig - node validation errors", async () => {
159
- await assertParseError(
160
- { node: { externalPackages: "not-an-array" } },
161
- "✖ `node.externalPackages` in `convex.json`: Expected array, received string\n",
162
- );
163
-
164
- await assertParseError(
165
- { node: { externalPackages: [123] } },
166
- "✖ `node.externalPackages.0` in `convex.json`: Expected string, received number\n",
167
- );
168
-
169
- await assertParseError(
170
- { node: { nodeVersion: 18 } },
171
- "✖ `node.nodeVersion` in `convex.json`: Expected string, received number\n",
172
- );
173
- });
174
-
175
- test("parseProjectConfig - codegen fields", async () => {
176
- // fileType with valid values
177
- await assertParses(
178
- { codegen: { fileType: "ts" } },
179
- {
180
- functions: "convex/",
181
- node: { externalPackages: [] },
182
- generateCommonJSApi: false,
183
- codegen: { staticApi: false, staticDataModel: false, fileType: "ts" },
184
- },
185
- );
186
-
187
- await assertParses(
188
- { codegen: { fileType: "js/dts" } },
189
- {
190
- functions: "convex/",
191
- node: { externalPackages: [] },
192
- generateCommonJSApi: false,
193
- codegen: { staticApi: false, staticDataModel: false, fileType: "js/dts" },
194
- },
195
- );
196
-
197
- // legacyComponentApi
198
- await assertParses(
199
- { codegen: { legacyComponentApi: false } },
200
- {
201
- functions: "convex/",
202
- node: { externalPackages: [] },
203
- generateCommonJSApi: false,
204
- codegen: {
205
- staticApi: false,
206
- staticDataModel: false,
207
- legacyComponentApi: false,
208
- },
209
- },
210
- );
211
-
212
- await assertParses(
213
- { codegen: { legacyComponentApi: true } },
214
- {
215
- functions: "convex/",
216
- node: { externalPackages: [] },
217
- generateCommonJSApi: false,
218
- codegen: {
219
- staticApi: false,
220
- staticDataModel: false,
221
- legacyComponentApi: true,
222
- },
223
- },
224
- );
225
- });
226
-
227
- test("parseProjectConfig - codegen validation errors", async () => {
228
- // Invalid fileType value
229
- await assertParseError(
230
- { codegen: { fileType: "invalid" } },
231
- "✖ `codegen.fileType` in `convex.json`: Invalid enum value. Expected 'ts' | 'js/dts', received 'invalid'\n",
232
- );
233
-
234
- // Invalid legacyComponentApi type
235
- await assertParseError(
236
- { codegen: { legacyComponentApi: "yes" } },
237
- "✖ `codegen.legacyComponentApi` in `convex.json`: Expected boolean, received string\n",
238
- );
239
-
240
- // Cross-field validation: generateCommonJSApi: true with fileType: "ts" should fail
241
- await assertParseError(
242
- { generateCommonJSApi: true, codegen: { fileType: "ts" } },
243
- '✖ `generateCommonJSApi` in `convex.json`: Cannot use `generateCommonJSApi: true` with `codegen.fileType: "ts"`. CommonJS modules require JavaScript generation. Either set `codegen.fileType: "js/dts"` or remove `generateCommonJSApi`.\n',
244
- );
245
- });
246
-
247
- test("parseProjectConfig - top-level validation", async () => {
248
- await assertParseError(
249
- "not-an-object",
250
- "✖ Expected `convex.json` to contain an object\n",
251
- );
252
- await assertParseError(
253
- 123,
254
- "✖ Expected `convex.json` to contain an object\n",
255
- );
256
- await assertParseError(
257
- null,
258
- "✖ Expected `convex.json` to contain an object\n",
259
- );
260
- await assertParseError([], "✖ Expected `convex.json` to contain an object\n");
261
- });
262
-
263
- test("ensureConvexFunctionsDir - creates functions directory", async () => {
264
- let mkdirCalled = false;
265
- let mkdirPath = "";
266
- const testCtx = {
267
- ...ctx,
268
- fs: {
269
- ...ctx.fs,
270
- exists: () => false,
271
- mkdir: (path: string) => {
272
- mkdirCalled = true;
273
- mkdirPath = path;
274
- },
275
- },
276
- };
277
-
278
- const config: ProjectConfig = {
279
- functions: "my-functions/",
280
- node: { externalPackages: [] },
281
- generateCommonJSApi: false,
282
- codegen: { staticApi: false, staticDataModel: false },
283
- };
284
-
285
- await ensureConvexFunctionsDir(testCtx, config);
286
- expect(mkdirCalled).toBe(true);
287
- expect(mkdirPath).toMatch(/^my-functions[\\/]$/);
288
- });
289
-
290
- test("ensureConvexFunctionsDir - does not write to convex.json", async () => {
291
- let writeUtf8FileCalled = false;
292
- const testCtx = {
293
- ...ctx,
294
- fs: {
295
- ...ctx.fs,
296
- exists: () => false,
297
- writeUtf8File: () => {
298
- writeUtf8FileCalled = true;
299
- },
300
- mkdir: () => {},
301
- },
302
- };
303
-
304
- // Even with non-default config, should NOT write to convex.json
305
- const config: ProjectConfig = {
306
- functions: "my-functions/",
307
- node: { externalPackages: ["axios"] },
308
- generateCommonJSApi: true,
309
- codegen: { staticApi: true, staticDataModel: true },
310
- };
311
-
312
- await ensureConvexFunctionsDir(testCtx, config);
313
- expect(writeUtf8FileCalled).toBe(false);
314
- });
315
-
316
- test("readProjectConfig - returns defaults when file doesn't exist", async () => {
317
- const testCtx = {
318
- ...ctx,
319
- fs: {
320
- ...ctx.fs,
321
- exists: () => false,
322
- readUtf8File: (path: string) => {
323
- // Mock package.json without react-scripts
324
- if (path === "package.json") {
325
- return JSON.stringify({ name: "test-app" });
326
- }
327
- throw new Error(`Unexpected read: ${path}`);
328
- },
329
- },
330
- };
331
-
332
- const { projectConfig, configPath } = await readProjectConfig(testCtx);
333
-
334
- expect(configPath).toBe("convex.json");
335
- expect(projectConfig).toEqual({
336
- functions: "convex/",
337
- node: { externalPackages: [] },
338
- generateCommonJSApi: false,
339
- codegen: { staticApi: false, staticDataModel: false },
340
- aiFiles: {},
341
- });
342
- });
343
-
344
- test("parseProjectConfig - preserves unknown properties", async () => {
345
- // Unknown properties should be preserved for forward/backward compatibility
346
- await assertParses(
347
- {
348
- functions: "convex/",
349
- unknownField: "some-value",
350
- futureFeature: {
351
- nested: "data",
352
- count: 42,
353
- },
354
- },
355
- {
356
- functions: "convex/",
357
- node: { externalPackages: [] },
358
- generateCommonJSApi: false,
359
- codegen: { staticApi: false, staticDataModel: false },
360
- unknownField: "some-value",
361
- futureFeature: {
362
- nested: "data",
363
- count: 42,
364
- },
365
- } as any,
366
- );
367
-
368
- // Unknown properties alongside known ones
369
- await assertParses(
370
- {
371
- functions: "my-functions/",
372
- generateCommonJSApi: true,
373
- customMetadata: {
374
- version: "1.0.0",
375
- author: "test",
376
- },
377
- experimentalFlag: true,
378
- },
379
- {
380
- functions: "my-functions/",
381
- node: { externalPackages: [] },
382
- generateCommonJSApi: true,
383
- codegen: { staticApi: false, staticDataModel: false },
384
- customMetadata: {
385
- version: "1.0.0",
386
- author: "test",
387
- },
388
- experimentalFlag: true,
389
- } as any,
390
- );
391
- });
392
-
393
- test("parseProjectConfig - warns about unknown properties", async () => {
394
- // Single unknown property
395
- stderrSpy.mockClear();
396
- const config1 = await parseProjectConfig(ctx, {
397
- functions: "convex/",
398
- unknownField: "value",
399
- });
400
- expect(config1.functions).toBe("convex/");
401
- expect((config1 as any).unknownField).toBe("value");
402
-
403
- // Check that warning was logged
404
- const stderr1 = stderrSpy.mock.calls.map((call) => call[0]).join("");
405
- expect(stripVTControlCharacters(stderr1)).toContain(
406
- "Warning: Unknown property in `convex.json`: `unknownField`",
407
- );
408
- expect(stripVTControlCharacters(stderr1)).toContain(
409
- "These properties will be preserved but are not recognized by this version of Convex",
410
- );
411
-
412
- // Multiple unknown properties
413
- stderrSpy.mockClear();
414
- const config2 = await parseProjectConfig(ctx, {
415
- functions: "my-functions/",
416
- customField1: "value1",
417
- customField2: 42,
418
- futureFeature: { nested: true },
419
- });
420
- expect((config2 as any).customField1).toBe("value1");
421
- expect((config2 as any).customField2).toBe(42);
422
-
423
- // No warning for known fields only
424
- stderrSpy.mockClear();
425
- await parseProjectConfig(ctx, {
426
- functions: "convex/",
427
- generateCommonJSApi: true,
428
- });
429
- const stderr3 = stderrSpy.mock.calls.map((call) => call[0]).join("");
430
- expect(stripVTControlCharacters(stderr3)).not.toContain("Warning");
431
- expect(stripVTControlCharacters(stderr3)).not.toContain("Unknown");
432
-
433
- // No warning for $schema field (used by JSON schema validation)
434
- stderrSpy.mockClear();
435
- await parseProjectConfig(ctx, {
436
- functions: "convex/",
437
- $schema: "../../../convex/schemas/convex.schema.json",
438
- });
439
- const stderr5 = stderrSpy.mock.calls.map((call) => call[0]).join("");
440
- expect(stripVTControlCharacters(stderr5)).not.toContain("Warning");
441
- expect(stripVTControlCharacters(stderr5)).not.toContain("Unknown");
442
- });
443
-
444
- test("parseProjectConfig - aiFiles fields", async () => {
445
- await assertParses(
446
- {
447
- functions: "convex/",
448
- aiFiles: {
449
- enabled: false,
450
- disableStalenessMessage: true,
451
- skills: {
452
- agents: ["cursor", "windsurf"],
453
- },
454
- },
455
- },
456
- {
457
- functions: "convex/",
458
- aiFiles: {
459
- enabled: false,
460
- disableStalenessMessage: true,
461
- skills: {
462
- agents: ["cursor", "windsurf"],
463
- },
464
- },
465
- codegen: {
466
- staticApi: false,
467
- staticDataModel: false,
468
- },
469
- generateCommonJSApi: false,
470
- node: {
471
- externalPackages: [],
472
- },
473
- },
474
- );
475
- });
476
-
477
- // AuthKit configuration tests
478
- test("parseProjectConfig - authKit basic valid configs", async () => {
479
- // Basic config with no settings
480
- await assertParses(
481
- {
482
- functions: "convex/",
483
- authKit: {
484
- dev: {},
485
- },
486
- },
487
- {
488
- functions: "convex/",
489
- authKit: {
490
- dev: {},
491
- },
492
- codegen: {
493
- staticApi: false,
494
- staticDataModel: false,
495
- },
496
- generateCommonJSApi: false,
497
- node: {
498
- externalPackages: [],
499
- },
500
- },
501
- );
502
-
503
- // Absence of environment config means manual setup
504
- // No authKit config at all is valid
505
- await assertParses(
506
- {
507
- functions: "convex/",
508
- },
509
- {
510
- functions: "convex/",
511
- codegen: {
512
- staticApi: false,
513
- staticDataModel: false,
514
- },
515
- generateCommonJSApi: false,
516
- node: {
517
- externalPackages: [],
518
- },
519
- },
520
- );
521
-
522
- // Config with configure settings
523
- await assertParses(
524
- {
525
- functions: "convex/",
526
- authKit: {
527
- prod: {
528
- configure: {
529
- redirectUris: ["https://example.com/callback"],
530
- corsOrigins: ["https://example.com"],
531
- },
532
- },
533
- },
534
- },
535
- {
536
- functions: "convex/",
537
- authKit: {
538
- prod: {
539
- configure: {
540
- redirectUris: ["https://example.com/callback"],
541
- corsOrigins: ["https://example.com"],
542
- },
543
- },
544
- },
545
- codegen: {
546
- staticApi: false,
547
- staticDataModel: false,
548
- },
549
- generateCommonJSApi: false,
550
- node: {
551
- externalPackages: [],
552
- },
553
- },
554
- );
555
-
556
- // Full config with all deployment types
557
- await assertParses(
558
- {
559
- functions: "convex/",
560
- authKit: {
561
- dev: {
562
- configure: {
563
- redirectUris: ["http://localhost:5173/callback"],
564
- corsOrigins: ["http://localhost:5173"],
565
- },
566
- localEnvVars: {
567
- VITE_WORKOS_CLIENT_ID: "${authEnv.WORKOS_CLIENT_ID}",
568
- },
569
- },
570
- preview: {
571
- configure: {
572
- redirectUris: ["${buildEnv.VERCEL_BRANCH_URL}/callback"],
573
- corsOrigins: ["${buildEnv.VERCEL_BRANCH_URL}"],
574
- },
575
- },
576
- prod: {
577
- environmentType: "production",
578
- configure: {
579
- redirectUris: ["https://example.com/callback"],
580
- corsOrigins: ["https://example.com"],
581
- },
582
- },
583
- },
584
- },
585
- {
586
- functions: "convex/",
587
- authKit: {
588
- dev: {
589
- configure: {
590
- redirectUris: ["http://localhost:5173/callback"],
591
- corsOrigins: ["http://localhost:5173"],
592
- },
593
- localEnvVars: {
594
- VITE_WORKOS_CLIENT_ID: "${authEnv.WORKOS_CLIENT_ID}",
595
- },
596
- },
597
- preview: {
598
- configure: {
599
- redirectUris: ["${buildEnv.VERCEL_BRANCH_URL}/callback"],
600
- corsOrigins: ["${buildEnv.VERCEL_BRANCH_URL}"],
601
- },
602
- },
603
- prod: {
604
- environmentType: "production",
605
- configure: {
606
- redirectUris: ["https://example.com/callback"],
607
- corsOrigins: ["https://example.com"],
608
- },
609
- },
610
- },
611
- codegen: {
612
- staticApi: false,
613
- staticDataModel: false,
614
- },
615
- generateCommonJSApi: false,
616
- node: {
617
- externalPackages: [],
618
- },
619
- },
620
- );
621
- });
622
-
623
- test("parseProjectConfig - authKit validation errors", async () => {
624
- // environmentType only allowed in prod
625
- await assertParseError(
626
- {
627
- functions: "convex/",
628
- authKit: {
629
- dev: {
630
- environmentType: "development",
631
- },
632
- },
633
- },
634
- "✖ `authKit.environmentType` in `convex.json`: authKit.environmentType is only allowed in the prod section\n",
635
- );
636
-
637
- // Invalid environmentType value
638
- await assertParseError(
639
- {
640
- functions: "convex/",
641
- authKit: {
642
- prod: {
643
- environmentType: "invalid" as any,
644
- },
645
- },
646
- },
647
- "✖ `authKit.prod.environmentType` in `convex.json`: Invalid enum value. Expected 'development' | 'staging' | 'production', received 'invalid'\n",
648
- );
649
-
650
- // authEnv references are allowed in localEnvVars
651
- await assertParses(
652
- {
653
- functions: "convex/",
654
- authKit: {
655
- dev: {
656
- localEnvVars: {
657
- WORKOS_CLIENT_ID: "${authEnv.WORKOS_CLIENT_ID}",
658
- },
659
- },
660
- },
661
- },
662
- {
663
- functions: "convex/",
664
- authKit: {
665
- dev: {
666
- localEnvVars: {
667
- WORKOS_CLIENT_ID: "${authEnv.WORKOS_CLIENT_ID}",
668
- },
669
- },
670
- },
671
- codegen: {
672
- staticApi: false,
673
- staticDataModel: false,
674
- },
675
- generateCommonJSApi: false,
676
- node: {
677
- externalPackages: [],
678
- },
679
- },
680
- );
681
-
682
- // buildEnv references are also allowed in localEnvVars
683
- await assertParses(
684
- {
685
- functions: "convex/",
686
- authKit: {
687
- dev: {
688
- localEnvVars: {
689
- WORKOS_CLIENT_ID: "${buildEnv.MY_WORKOS_CLIENT_ID}",
690
- },
691
- },
692
- },
693
- },
694
- {
695
- functions: "convex/",
696
- authKit: {
697
- dev: {
698
- localEnvVars: {
699
- WORKOS_CLIENT_ID: "${buildEnv.MY_WORKOS_CLIENT_ID}",
700
- },
701
- },
702
- },
703
- codegen: {
704
- staticApi: false,
705
- staticDataModel: false,
706
- },
707
- generateCommonJSApi: false,
708
- node: {
709
- externalPackages: [],
710
- },
711
- },
712
- );
713
-
714
- // authEnv references are allowed in configure
715
- await assertParses(
716
- {
717
- functions: "convex/",
718
- authKit: {
719
- dev: {
720
- configure: {
721
- redirectUris: ["${authEnv.WORKOS_CLIENT_ID}/callback"],
722
- },
723
- },
724
- },
725
- },
726
- {
727
- functions: "convex/",
728
- authKit: {
729
- dev: {
730
- configure: {
731
- redirectUris: ["${authEnv.WORKOS_CLIENT_ID}/callback"],
732
- },
733
- },
734
- },
735
- codegen: {
736
- staticApi: false,
737
- staticDataModel: false,
738
- },
739
- generateCommonJSApi: false,
740
- node: {
741
- externalPackages: [],
742
- },
743
- },
744
- );
745
-
746
- // Mixed buildEnv and authEnv references are allowed
747
- await assertParses(
748
- {
749
- functions: "convex/",
750
- authKit: {
751
- dev: {
752
- localEnvVars: {
753
- WORKOS_CLIENT_ID: "${authEnv.WORKOS_CLIENT_ID}",
754
- WORKOS_API_KEY: "${authEnv.WORKOS_API_KEY}",
755
- },
756
- configure: {
757
- redirectUris: ["${buildEnv.VERCEL_URL}/callback"],
758
- },
759
- },
760
- },
761
- },
762
- {
763
- functions: "convex/",
764
- authKit: {
765
- dev: {
766
- localEnvVars: {
767
- WORKOS_CLIENT_ID: "${authEnv.WORKOS_CLIENT_ID}",
768
- WORKOS_API_KEY: "${authEnv.WORKOS_API_KEY}",
769
- },
770
- configure: {
771
- redirectUris: ["${buildEnv.VERCEL_URL}/callback"],
772
- },
773
- },
774
- },
775
- codegen: {
776
- staticApi: false,
777
- staticDataModel: false,
778
- },
779
- generateCommonJSApi: false,
780
- node: {
781
- externalPackages: [],
782
- },
783
- },
784
- );
785
- });
786
-
787
- test("parseProjectConfig - authKit preview and prod restrictions", async () => {
788
- // Preview with localEnvVars should fail
789
- await assertParseError(
790
- {
791
- authKit: {
792
- preview: {
793
- localEnvVars: {
794
- WORKOS_CLIENT_ID: "${buildEnv.WORKOS_CLIENT_ID}",
795
- },
796
- },
797
- },
798
- },
799
- "✖ `authKit.localEnvVars` in `convex.json`: authKit.localEnvVars is only supported for dev deployments. Preview and prod deployments must configure environment variables directly in the deployment platform.\n",
800
- );
801
-
802
- // Prod with localEnvVars should fail
803
- await assertParseError(
804
- {
805
- authKit: {
806
- prod: {
807
- localEnvVars: {
808
- WORKOS_CLIENT_ID: "${buildEnv.WORKOS_CLIENT_ID}",
809
- },
810
- },
811
- },
812
- },
813
- "✖ `authKit.localEnvVars` in `convex.json`: authKit.localEnvVars is only supported for dev deployments. Preview and prod deployments must configure environment variables directly in the deployment platform.\n",
814
- );
815
-
816
- // Dev with localEnvVars should still work
817
- await assertParses({
818
- functions: "convex/",
819
- authKit: {
820
- dev: {
821
- localEnvVars: {
822
- WORKOS_CLIENT_ID: "${authEnv.WORKOS_CLIENT_ID}",
823
- },
824
- },
825
- },
826
- codegen: {
827
- staticApi: false,
828
- staticDataModel: false,
829
- },
830
- generateCommonJSApi: false,
831
- node: {
832
- externalPackages: [],
833
- },
834
- });
835
-
836
- // Preview with just configure should work (will use env vars)
837
- await assertParses(
838
- {
839
- functions: "convex/",
840
- authKit: {
841
- preview: {
842
- configure: {
843
- redirectUris: ["https://preview.example.com/callback"],
844
- },
845
- },
846
- },
847
- },
848
- {
849
- functions: "convex/",
850
- authKit: {
851
- preview: {
852
- configure: {
853
- redirectUris: ["https://preview.example.com/callback"],
854
- },
855
- },
856
- },
857
- codegen: {
858
- staticApi: false,
859
- staticDataModel: false,
860
- },
861
- generateCommonJSApi: false,
862
- node: {
863
- externalPackages: [],
864
- },
865
- },
866
- );
867
-
868
- // Prod without localEnvVars should work
869
- await assertParses(
870
- {
871
- functions: "convex/",
872
- authKit: {
873
- prod: {
874
- environmentType: "production",
875
- },
876
- },
877
- },
878
- {
879
- functions: "convex/",
880
- authKit: {
881
- prod: {
882
- environmentType: "production",
883
- },
884
- },
885
- codegen: {
886
- staticApi: false,
887
- staticDataModel: false,
888
- },
889
- generateCommonJSApi: false,
890
- node: {
891
- externalPackages: [],
892
- },
893
- },
894
- );
895
- });
896
-
897
- // ---------------------------------------------------------------------------
898
- // writeAiFilesConfig
899
- // ---------------------------------------------------------------------------
900
-
901
- describe("writeAiFilesConfig", () => {
902
- let tmpDir: string;
903
-
904
- beforeEach(() => {
905
- tmpDir = fs.mkdtempSync(`${os.tmpdir()}${path.sep}`);
906
- });
907
-
908
- afterEach(() => {
909
- fs.rmSync(tmpDir, { recursive: true, force: true });
910
- });
911
-
912
- test("creates convex.json with $schema when file does not exist", async () => {
913
- await writeAiFilesConfig({
914
- projectDir: tmpDir,
915
- aiFiles: { enabled: false },
916
- });
917
-
918
- const written = JSON.parse(
919
- fs.readFileSync(path.join(tmpDir, "convex.json"), "utf8"),
920
- );
921
- expect(written.$schema).toBe(
922
- "node_modules/convex/schemas/convex.schema.json",
923
- );
924
- expect(written.aiFiles).toEqual({ enabled: false });
925
- });
926
-
927
- test("writes aiFiles as-is without merging sub-keys", async () => {
928
- fs.writeFileSync(
929
- path.join(tmpDir, "convex.json"),
930
- JSON.stringify({ aiFiles: { disableStalenessMessage: true } }, null, 2),
931
- "utf8",
932
- );
933
-
934
- await writeAiFilesConfig({
935
- projectDir: tmpDir,
936
- aiFiles: { enabled: false },
937
- });
938
-
939
- const written = JSON.parse(
940
- fs.readFileSync(path.join(tmpDir, "convex.json"), "utf8"),
941
- );
942
- expect(written.aiFiles).toEqual({ enabled: false });
943
- });
944
-
945
- test("preserves other existing fields in convex.json", async () => {
946
- fs.writeFileSync(
947
- path.join(tmpDir, "convex.json"),
948
- JSON.stringify(
949
- {
950
- functions: "src/convex/",
951
- customKey: "preserved",
952
- aiFiles: { skills: { agents: ["cursor"] } },
953
- },
954
- null,
955
- 2,
956
- ),
957
- "utf8",
958
- );
959
-
960
- await writeAiFilesConfig({
961
- projectDir: tmpDir,
962
- aiFiles: { enabled: false },
963
- });
964
-
965
- const written = JSON.parse(
966
- fs.readFileSync(path.join(tmpDir, "convex.json"), "utf8"),
967
- );
968
- expect(written.functions).toBe("src/convex/");
969
- expect(written.customKey).toBe("preserved");
970
- expect(written.aiFiles).toEqual({ enabled: false });
971
- });
972
-
973
- test("removes aiFiles key when undefined", async () => {
974
- fs.writeFileSync(
975
- path.join(tmpDir, "convex.json"),
976
- JSON.stringify({ aiFiles: { enabled: false } }, null, 2),
977
- "utf8",
978
- );
979
-
980
- await writeAiFilesConfig({
981
- projectDir: tmpDir,
982
- aiFiles: undefined,
983
- });
984
-
985
- const written = JSON.parse(
986
- fs.readFileSync(path.join(tmpDir, "convex.json"), "utf8"),
987
- );
988
- expect(written.aiFiles).toBeUndefined();
989
- });
990
-
991
- test("preserves existing $schema when file already has one", async () => {
992
- fs.writeFileSync(
993
- path.join(tmpDir, "convex.json"),
994
- JSON.stringify({ $schema: "./custom-schema.json" }, null, 2),
995
- "utf8",
996
- );
997
-
998
- await writeAiFilesConfig({
999
- projectDir: tmpDir,
1000
- aiFiles: undefined,
1001
- });
1002
-
1003
- const written = JSON.parse(
1004
- fs.readFileSync(path.join(tmpDir, "convex.json"), "utf8"),
1005
- );
1006
- expect(written.$schema).toBe("./custom-schema.json");
1007
- });
1008
-
1009
- test("handles invalid JSON in existing convex.json gracefully", async () => {
1010
- fs.writeFileSync(
1011
- path.join(tmpDir, "convex.json"),
1012
- "not valid json",
1013
- "utf8",
1014
- );
1015
-
1016
- await writeAiFilesConfig({
1017
- projectDir: tmpDir,
1018
- aiFiles: { enabled: false },
1019
- });
1020
-
1021
- const written = JSON.parse(
1022
- fs.readFileSync(path.join(tmpDir, "convex.json"), "utf8"),
1023
- );
1024
- expect(written.aiFiles).toEqual({ enabled: false });
1025
- });
1026
- });