@aurabase/aurabase-js 0.3.0 → 0.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 (343) hide show
  1. package/README.md +26 -795
  2. package/{packages/aurabase/dist/AuraClient-DAtDbfPB.d.ts → dist/AuraClient-BcFE8u1v.d.cts} +1 -1
  3. package/{packages/aurabase/dist/AuraClient-DAtDbfPB.d.cts → dist/AuraClient-BcFE8u1v.d.ts} +1 -1
  4. package/{packages/aurabase/dist → dist}/index.d.cts +1 -1
  5. package/{packages/aurabase/dist → dist}/index.d.ts +1 -1
  6. package/{packages/aurabase/dist → dist}/ssr.d.cts +1 -1
  7. package/{packages/aurabase/dist → dist}/ssr.d.ts +1 -1
  8. package/package.json +72 -82
  9. package/.changeset/config.json +0 -11
  10. package/CHANGELOG.md +0 -30
  11. package/packages/ai/LICENSE +0 -21
  12. package/packages/ai/README.md +0 -106
  13. package/packages/ai/dist/index.cjs +0 -229
  14. package/packages/ai/dist/index.d.cts +0 -139
  15. package/packages/ai/dist/index.d.ts +0 -139
  16. package/packages/ai/dist/index.js +0 -226
  17. package/packages/ai/node_modules/.bin/esbuild +0 -19
  18. package/packages/ai/node_modules/.bin/tsc +0 -22
  19. package/packages/ai/node_modules/.bin/tsserver +0 -22
  20. package/packages/ai/node_modules/.bin/tsup +0 -22
  21. package/packages/ai/node_modules/.bin/tsup-node +0 -22
  22. package/packages/ai/node_modules/.bin/vite +0 -22
  23. package/packages/ai/node_modules/.bin/vitest +0 -22
  24. package/packages/ai/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +0 -1
  25. package/packages/ai/package.json +0 -61
  26. package/packages/ai/src/AiService.ts +0 -226
  27. package/packages/ai/src/index.ts +0 -18
  28. package/packages/ai/src/sse.ts +0 -141
  29. package/packages/ai/src/types.ts +0 -30
  30. package/packages/ai/tests/chat-stream.test.ts +0 -151
  31. package/packages/ai/tests/rag-namespaces.test.ts +0 -54
  32. package/packages/ai/tests/sse.test.ts +0 -69
  33. package/packages/ai/tsconfig.json +0 -5
  34. package/packages/ai/tsup.config.ts +0 -11
  35. package/packages/aurabase/LICENSE +0 -21
  36. package/packages/aurabase/README.md +0 -64
  37. package/packages/aurabase/node_modules/.bin/esbuild +0 -19
  38. package/packages/aurabase/node_modules/.bin/tsc +0 -22
  39. package/packages/aurabase/node_modules/.bin/tsserver +0 -22
  40. package/packages/aurabase/node_modules/.bin/tsup +0 -22
  41. package/packages/aurabase/node_modules/.bin/tsup-node +0 -22
  42. package/packages/aurabase/node_modules/.bin/vite +0 -22
  43. package/packages/aurabase/node_modules/.bin/vitest +0 -22
  44. package/packages/aurabase/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +0 -1
  45. package/packages/aurabase/package.json +0 -80
  46. package/packages/aurabase/src/AuraClient.ts +0 -237
  47. package/packages/aurabase/src/index.ts +0 -152
  48. package/packages/aurabase/src/ssr.ts +0 -156
  49. package/packages/aurabase/tests/ai-streaming-rag-e2e.test.ts +0 -82
  50. package/packages/aurabase/tests/ai.test.ts +0 -111
  51. package/packages/aurabase/tests/auth-admin.test.ts +0 -515
  52. package/packages/aurabase/tests/auth-e2e.test.ts +0 -135
  53. package/packages/aurabase/tests/auth-hardening.test.ts +0 -206
  54. package/packages/aurabase/tests/auth.test.ts +0 -947
  55. package/packages/aurabase/tests/database.test.ts +0 -230
  56. package/packages/aurabase/tests/db-types-e2e.test.ts +0 -217
  57. package/packages/aurabase/tests/dispose.test.ts +0 -23
  58. package/packages/aurabase/tests/foreign-token.e2e.test.ts +0 -129
  59. package/packages/aurabase/tests/functions.test.ts +0 -107
  60. package/packages/aurabase/tests/integration.test.ts +0 -413
  61. package/packages/aurabase/tests/live-production-validation.js +0 -241
  62. package/packages/aurabase/tests/live-sdk-production-validation.js +0 -293
  63. package/packages/aurabase/tests/mocks.ts +0 -139
  64. package/packages/aurabase/tests/notifications.test.ts +0 -314
  65. package/packages/aurabase/tests/observability-backup.test.ts +0 -186
  66. package/packages/aurabase/tests/observability-hook.test.ts +0 -130
  67. package/packages/aurabase/tests/production-robustness.test.ts +0 -268
  68. package/packages/aurabase/tests/public-api-surface.test.ts +0 -53
  69. package/packages/aurabase/tests/query-builder.test.ts +0 -329
  70. package/packages/aurabase/tests/readme-smoke-e2e.test.ts +0 -231
  71. package/packages/aurabase/tests/realtime-filter-e2e.test.ts +0 -344
  72. package/packages/aurabase/tests/refresh-locks.test.ts +0 -210
  73. package/packages/aurabase/tests/retry-option.test.ts +0 -17
  74. package/packages/aurabase/tests/rpc-e2e.test.ts +0 -254
  75. package/packages/aurabase/tests/rs256-local-e2e.test.ts +0 -114
  76. package/packages/aurabase/tests/rt-alias-public-e2e.test.ts +0 -235
  77. package/packages/aurabase/tests/rt-http-broadcast-e2e.test.ts +0 -124
  78. package/packages/aurabase/tests/service-role-guard.test.ts +0 -99
  79. package/packages/aurabase/tests/ssr.test.ts +0 -91
  80. package/packages/aurabase/tests/storage-backend-e2e.test.ts +0 -481
  81. package/packages/aurabase/tests/storage-sdk-parity-e2e.test.ts +0 -104
  82. package/packages/aurabase/tests/storage-transform-e2e.test.ts +0 -684
  83. package/packages/aurabase/tests/storage.test.ts +0 -55
  84. package/packages/aurabase/tests/types/client-generic.test-d.ts +0 -79
  85. package/packages/aurabase/tests/types/docs-snippets.test-d.ts +0 -571
  86. package/packages/aurabase/tests/types/error-code.test-d.ts +0 -53
  87. package/packages/aurabase/tsconfig.json +0 -5
  88. package/packages/aurabase/tsconfig.test-d.json +0 -5
  89. package/packages/aurabase/tsup.config.ts +0 -11
  90. package/packages/aurabase/vitest.config.ts +0 -16
  91. package/packages/aurabase/vitest.e2e.config.ts +0 -9
  92. package/packages/auth/LICENSE +0 -21
  93. package/packages/auth/README.md +0 -215
  94. package/packages/auth/dist/index.cjs +0 -1175
  95. package/packages/auth/dist/index.d.cts +0 -397
  96. package/packages/auth/dist/index.d.ts +0 -397
  97. package/packages/auth/dist/index.js +0 -1170
  98. package/packages/auth/node_modules/.bin/esbuild +0 -19
  99. package/packages/auth/node_modules/.bin/tsc +0 -22
  100. package/packages/auth/node_modules/.bin/tsserver +0 -22
  101. package/packages/auth/node_modules/.bin/tsup +0 -22
  102. package/packages/auth/node_modules/.bin/tsup-node +0 -22
  103. package/packages/auth/node_modules/.bin/vite +0 -22
  104. package/packages/auth/node_modules/.bin/vitest +0 -22
  105. package/packages/auth/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +0 -1
  106. package/packages/auth/package.json +0 -61
  107. package/packages/auth/src/AuthAdminService.ts +0 -149
  108. package/packages/auth/src/AuthService.ts +0 -1166
  109. package/packages/auth/src/SessionManager.ts +0 -92
  110. package/packages/auth/src/index.ts +0 -17
  111. package/packages/auth/src/jwks.ts +0 -337
  112. package/packages/auth/src/pkce.ts +0 -27
  113. package/packages/auth/src/types.ts +0 -89
  114. package/packages/auth/tests/auth-lifecycle.test.ts +0 -149
  115. package/packages/auth/tests/detect-session.test.ts +0 -361
  116. package/packages/auth/tests/getclaims.test.ts +0 -780
  117. package/packages/auth/tests/is-mfa-challenge.test.ts +0 -27
  118. package/packages/auth/tests/password-recovery.test.ts +0 -124
  119. package/packages/auth/tests/pkce.test.ts +0 -192
  120. package/packages/auth/tests/session-manager.test.ts +0 -103
  121. package/packages/auth/tests/set-session.test.ts +0 -139
  122. package/packages/auth/tests/verify-otp.test.ts +0 -153
  123. package/packages/auth/tsconfig.json +0 -5
  124. package/packages/auth/tsup.config.ts +0 -11
  125. package/packages/core/LICENSE +0 -21
  126. package/packages/core/README.md +0 -132
  127. package/packages/core/dist/index.cjs +0 -695
  128. package/packages/core/dist/index.d.cts +0 -1137
  129. package/packages/core/dist/index.d.ts +0 -1137
  130. package/packages/core/dist/index.js +0 -673
  131. package/packages/core/node_modules/.bin/esbuild +0 -22
  132. package/packages/core/node_modules/.bin/tsc +0 -22
  133. package/packages/core/node_modules/.bin/tsserver +0 -22
  134. package/packages/core/node_modules/.bin/tsup +0 -22
  135. package/packages/core/node_modules/.bin/tsup-node +0 -22
  136. package/packages/core/node_modules/.bin/vite +0 -22
  137. package/packages/core/node_modules/.bin/vitest +0 -22
  138. package/packages/core/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +0 -1
  139. package/packages/core/package.json +0 -57
  140. package/packages/core/src/AuraError.ts +0 -89
  141. package/packages/core/src/BaseService.ts +0 -44
  142. package/packages/core/src/client.ts +0 -34
  143. package/packages/core/src/cookie-utils.ts +0 -42
  144. package/packages/core/src/fetch.ts +0 -435
  145. package/packages/core/src/index.ts +0 -22
  146. package/packages/core/src/retry.ts +0 -63
  147. package/packages/core/src/serialize.ts +0 -6
  148. package/packages/core/src/stores/BaseAuthStore.ts +0 -164
  149. package/packages/core/src/stores/LocalAuthStore.ts +0 -199
  150. package/packages/core/src/types.ts +0 -1042
  151. package/packages/core/tests/auth-store.test.ts +0 -300
  152. package/packages/core/tests/error-code.test.ts +0 -61
  153. package/packages/core/tests/error.test.ts +0 -24
  154. package/packages/core/tests/fetch.test.ts +0 -286
  155. package/packages/core/tests/mocks.ts +0 -139
  156. package/packages/core/tests/observability.test.ts +0 -86
  157. package/packages/core/tests/refresh-hardening.test.ts +0 -164
  158. package/packages/core/tests/refresh-observability.test.ts +0 -111
  159. package/packages/core/tests/retry.test.ts +0 -106
  160. package/packages/core/tests/serialize.test.ts +0 -12
  161. package/packages/core/tests/timeout.test.ts +0 -79
  162. package/packages/core/tsconfig.json +0 -5
  163. package/packages/core/tsup.config.ts +0 -11
  164. package/packages/db/LICENSE +0 -21
  165. package/packages/db/README.md +0 -152
  166. package/packages/db/VENDORED.md +0 -93
  167. package/packages/db/dist/index.cjs +0 -544
  168. package/packages/db/dist/index.d.cts +0 -1111
  169. package/packages/db/dist/index.d.ts +0 -1111
  170. package/packages/db/dist/index.js +0 -541
  171. package/packages/db/node_modules/.bin/esbuild +0 -19
  172. package/packages/db/node_modules/.bin/tsc +0 -22
  173. package/packages/db/node_modules/.bin/tsserver +0 -22
  174. package/packages/db/node_modules/.bin/tsup +0 -22
  175. package/packages/db/node_modules/.bin/tsup-node +0 -22
  176. package/packages/db/node_modules/.bin/vite +0 -22
  177. package/packages/db/node_modules/.bin/vitest +0 -22
  178. package/packages/db/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +0 -1
  179. package/packages/db/package.json +0 -62
  180. package/packages/db/src/DatabaseService.ts +0 -170
  181. package/packages/db/src/QueryBuilder.ts +0 -830
  182. package/packages/db/src/index.ts +0 -2
  183. package/packages/db/src/pgrst-types/common/common.ts +0 -86
  184. package/packages/db/src/pgrst-types/common/rpc.ts +0 -151
  185. package/packages/db/src/pgrst-types/feature-flags.ts +0 -20
  186. package/packages/db/src/pgrst-types/types.ts +0 -134
  187. package/packages/db/src/select-query-parser/parser.ts +0 -479
  188. package/packages/db/src/select-query-parser/result.ts +0 -553
  189. package/packages/db/src/select-query-parser/types.ts +0 -132
  190. package/packages/db/src/select-query-parser/utils.ts +0 -707
  191. package/packages/db/tests/filters.test.ts +0 -81
  192. package/packages/db/tests/mutations-filtered.e2e.test.ts +0 -132
  193. package/packages/db/tests/mutations-filtered.test.ts +0 -188
  194. package/packages/db/tests/order.test.ts +0 -45
  195. package/packages/db/tests/rpc.test.ts +0 -41
  196. package/packages/db/tests/scale/build-large-schema.ts +0 -94
  197. package/packages/db/tests/scale/scale-compile.test.ts +0 -167
  198. package/packages/db/tests/schema.test.ts +0 -77
  199. package/packages/db/tests/single-accept.e2e.test.ts +0 -123
  200. package/packages/db/tests/single.test.ts +0 -211
  201. package/packages/db/tests/types/filters.test-d.ts +0 -52
  202. package/packages/db/tests/types/fixtures.ts +0 -40
  203. package/packages/db/tests/types/from-views.test-d.ts +0 -18
  204. package/packages/db/tests/types/mutations.test-d.ts +0 -23
  205. package/packages/db/tests/types/rpc.test-d.ts +0 -60
  206. package/packages/db/tests/types/schema-shape.test-d.ts +0 -8
  207. package/packages/db/tests/types/select-inference.test-d.ts +0 -38
  208. package/packages/db/tests/vendored/fixtures.ts +0 -83
  209. package/packages/db/tests/vendored/get-result.test-d.ts +0 -75
  210. package/packages/db/tsconfig.json +0 -5
  211. package/packages/db/tsconfig.test-d.json +0 -5
  212. package/packages/db/tsup.config.ts +0 -11
  213. package/packages/db/vitest.config.ts +0 -8
  214. package/packages/functions/LICENSE +0 -21
  215. package/packages/functions/README.md +0 -96
  216. package/packages/functions/dist/index.cjs +0 -173
  217. package/packages/functions/dist/index.d.cts +0 -81
  218. package/packages/functions/dist/index.d.ts +0 -81
  219. package/packages/functions/dist/index.js +0 -168
  220. package/packages/functions/node_modules/.bin/esbuild +0 -19
  221. package/packages/functions/node_modules/.bin/tsc +0 -22
  222. package/packages/functions/node_modules/.bin/tsserver +0 -22
  223. package/packages/functions/node_modules/.bin/tsup +0 -22
  224. package/packages/functions/node_modules/.bin/tsup-node +0 -22
  225. package/packages/functions/node_modules/.bin/vite +0 -22
  226. package/packages/functions/node_modules/.bin/vitest +0 -22
  227. package/packages/functions/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +0 -1
  228. package/packages/functions/package.json +0 -60
  229. package/packages/functions/src/FunctionsService.ts +0 -188
  230. package/packages/functions/src/errors.ts +0 -70
  231. package/packages/functions/src/index.ts +0 -6
  232. package/packages/functions/tests/invoke.test.ts +0 -97
  233. package/packages/functions/tests/response-type-errors.test.ts +0 -135
  234. package/packages/functions/tsconfig.json +0 -5
  235. package/packages/functions/tsup.config.ts +0 -11
  236. package/packages/gen/LICENSE +0 -21
  237. package/packages/gen/README.md +0 -84
  238. package/packages/gen/dist/cli.cjs +0 -334
  239. package/packages/gen/dist/cli.d.cts +0 -1
  240. package/packages/gen/dist/cli.d.ts +0 -1
  241. package/packages/gen/dist/cli.js +0 -332
  242. package/packages/gen/dist/index.cjs +0 -257
  243. package/packages/gen/dist/index.d.cts +0 -12
  244. package/packages/gen/dist/index.d.ts +0 -12
  245. package/packages/gen/dist/index.js +0 -255
  246. package/packages/gen/node_modules/.bin/esbuild +0 -19
  247. package/packages/gen/node_modules/.bin/tsc +0 -22
  248. package/packages/gen/node_modules/.bin/tsserver +0 -22
  249. package/packages/gen/node_modules/.bin/tsup +0 -22
  250. package/packages/gen/node_modules/.bin/tsup-node +0 -22
  251. package/packages/gen/node_modules/.bin/vite +0 -22
  252. package/packages/gen/node_modules/.bin/vitest +0 -22
  253. package/packages/gen/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +0 -1
  254. package/packages/gen/package.json +0 -66
  255. package/packages/gen/src/cli.ts +0 -67
  256. package/packages/gen/src/generate.ts +0 -0
  257. package/packages/gen/src/index.ts +0 -2
  258. package/packages/gen/tests/compile.test.ts +0 -213
  259. package/packages/gen/tests/e2e.test.ts +0 -130
  260. package/packages/gen/tests/generate.test.ts +0 -396
  261. package/packages/gen/tsconfig.json +0 -5
  262. package/packages/gen/tsup.config.ts +0 -11
  263. package/packages/notifications/LICENSE +0 -21
  264. package/packages/notifications/README.md +0 -134
  265. package/packages/notifications/dist/index.cjs +0 -128
  266. package/packages/notifications/dist/index.d.cts +0 -81
  267. package/packages/notifications/dist/index.d.ts +0 -81
  268. package/packages/notifications/dist/index.js +0 -125
  269. package/packages/notifications/node_modules/.bin/esbuild +0 -19
  270. package/packages/notifications/node_modules/.bin/tsc +0 -22
  271. package/packages/notifications/node_modules/.bin/tsserver +0 -22
  272. package/packages/notifications/node_modules/.bin/tsup +0 -22
  273. package/packages/notifications/node_modules/.bin/tsup-node +0 -22
  274. package/packages/notifications/node_modules/.bin/vite +0 -22
  275. package/packages/notifications/node_modules/.bin/vitest +0 -22
  276. package/packages/notifications/package.json +0 -60
  277. package/packages/notifications/src/NotificationsService.ts +0 -230
  278. package/packages/notifications/src/index.ts +0 -19
  279. package/packages/notifications/tsconfig.json +0 -5
  280. package/packages/notifications/tsup.config.ts +0 -11
  281. package/packages/realtime/LICENSE +0 -21
  282. package/packages/realtime/README.md +0 -183
  283. package/packages/realtime/dist/index.cjs +0 -977
  284. package/packages/realtime/dist/index.d.cts +0 -259
  285. package/packages/realtime/dist/index.d.ts +0 -259
  286. package/packages/realtime/dist/index.js +0 -973
  287. package/packages/realtime/node_modules/.bin/esbuild +0 -19
  288. package/packages/realtime/node_modules/.bin/tsc +0 -22
  289. package/packages/realtime/node_modules/.bin/tsserver +0 -22
  290. package/packages/realtime/node_modules/.bin/tsup +0 -22
  291. package/packages/realtime/node_modules/.bin/tsup-node +0 -22
  292. package/packages/realtime/node_modules/.bin/vite +0 -22
  293. package/packages/realtime/node_modules/.bin/vitest +0 -22
  294. package/packages/realtime/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +0 -1
  295. package/packages/realtime/package.json +0 -60
  296. package/packages/realtime/src/AuraChannel.ts +0 -485
  297. package/packages/realtime/src/HeartbeatManager.ts +0 -73
  298. package/packages/realtime/src/RealtimeService.ts +0 -505
  299. package/packages/realtime/src/columnFilter.ts +0 -301
  300. package/packages/realtime/src/index.ts +0 -4
  301. package/packages/realtime/tests/ack-routing.test.ts +0 -81
  302. package/packages/realtime/tests/column-filter.test.ts +0 -144
  303. package/packages/realtime/tests/dispatch.test.ts +0 -191
  304. package/packages/realtime/tests/heartbeat.test.ts +0 -67
  305. package/packages/realtime/tests/http-broadcast.test.ts +0 -68
  306. package/packages/realtime/tests/realtime-token.test.ts +0 -43
  307. package/packages/realtime/tests/reconnect-race.test.ts +0 -149
  308. package/packages/realtime/tests/ref-id.test.ts +0 -34
  309. package/packages/realtime/tests/set-auth.test.ts +0 -70
  310. package/packages/realtime/tsconfig.json +0 -5
  311. package/packages/realtime/tsup.config.ts +0 -11
  312. package/packages/storage/LICENSE +0 -21
  313. package/packages/storage/README.md +0 -141
  314. package/packages/storage/dist/index.cjs +0 -333
  315. package/packages/storage/dist/index.d.cts +0 -185
  316. package/packages/storage/dist/index.d.ts +0 -185
  317. package/packages/storage/dist/index.js +0 -329
  318. package/packages/storage/node_modules/.bin/esbuild +0 -19
  319. package/packages/storage/node_modules/.bin/tsc +0 -22
  320. package/packages/storage/node_modules/.bin/tsserver +0 -22
  321. package/packages/storage/node_modules/.bin/tsup +0 -22
  322. package/packages/storage/node_modules/.bin/tsup-node +0 -22
  323. package/packages/storage/node_modules/.bin/vite +0 -22
  324. package/packages/storage/node_modules/.bin/vitest +0 -22
  325. package/packages/storage/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +0 -1
  326. package/packages/storage/package.json +0 -60
  327. package/packages/storage/src/DownloadBuilder.ts +0 -60
  328. package/packages/storage/src/StorageService.ts +0 -323
  329. package/packages/storage/src/index.ts +0 -2
  330. package/packages/storage/src/path.ts +0 -35
  331. package/packages/storage/src/transform.ts +0 -15
  332. package/packages/storage/tests/download.test.ts +0 -64
  333. package/packages/storage/tests/parity.test.ts +0 -154
  334. package/packages/storage/tests/path.test.ts +0 -87
  335. package/packages/storage/tests/transform.test.ts +0 -79
  336. package/packages/storage/tsconfig.json +0 -5
  337. package/packages/storage/tsup.config.ts +0 -11
  338. package/pnpm-workspace.yaml +0 -24
  339. package/tsconfig.base.json +0 -15
  340. /package/{packages/aurabase/dist → dist}/index.cjs +0 -0
  341. /package/{packages/aurabase/dist → dist}/index.js +0 -0
  342. /package/{packages/aurabase/dist → dist}/ssr.cjs +0 -0
  343. /package/{packages/aurabase/dist → dist}/ssr.js +0 -0
@@ -1,22 +0,0 @@
1
- #!/bin/sh
2
- basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
-
4
- case `uname` in
5
- *CYGWIN*|*MINGW*|*MSYS*)
6
- if command -v cygpath > /dev/null 2>&1; then
7
- basedir=`cygpath -w "$basedir"`
8
- fi
9
- ;;
10
- esac
11
-
12
- if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/vitest@4.1.9_@types+node@20.14.15_vite@8.1.3_@types+node@20.14.15_esbuild@0.27.7_/node_modules/vitest/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/vitest@4.1.9_@types+node@20.14.15_vite@8.1.3_@types+node@20.14.15_esbuild@0.27.7_/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/node_modules"
14
- else
15
- export NODE_PATH="/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/vitest@4.1.9_@types+node@20.14.15_vite@8.1.3_@types+node@20.14.15_esbuild@0.27.7_/node_modules/vitest/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/vitest@4.1.9_@types+node@20.14.15_vite@8.1.3_@types+node@20.14.15_esbuild@0.27.7_/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/node_modules:$NODE_PATH"
16
- fi
17
- if [ -x "$basedir/node" ]; then
18
- exec "$basedir/node" "$basedir/../vitest/vitest.mjs" "$@"
19
- else
20
- exec node "$basedir/../vitest/vitest.mjs" "$@"
21
- fi
22
- # cmd-shim-target=/Users/affanedaylami/aurabase/aurabase-js/packages/gen/node_modules/vitest/vitest.mjs
@@ -1 +0,0 @@
1
- {"version":"4.1.9","results":[[":tests/generate.test.ts",{"duration":284.61229099999946,"failed":false}],[":tests/compile.test.ts",{"duration":86465.322083,"failed":false}],[":tests/e2e.test.ts",{"duration":0,"failed":false}]]}
@@ -1,66 +0,0 @@
1
- {
2
- "name": "@aurabase/gen",
3
- "version": "0.3.0",
4
- "description": "Générateur de types TypeScript Database pour le SDK Aurabase (CLI aurabase-gen)",
5
- "type": "module",
6
- "main": "dist/index.cjs",
7
- "module": "dist/index.js",
8
- "types": "dist/index.d.ts",
9
- "bin": {
10
- "aurabase-gen": "./dist/cli.js"
11
- },
12
- "exports": {
13
- ".": {
14
- "import": {
15
- "types": "./dist/index.d.ts",
16
- "default": "./dist/index.js"
17
- },
18
- "require": {
19
- "types": "./dist/index.d.cts",
20
- "default": "./dist/index.cjs"
21
- }
22
- }
23
- },
24
- "sideEffects": false,
25
- "files": [
26
- "dist",
27
- "README.md",
28
- "LICENSE"
29
- ],
30
- "engines": {
31
- "node": ">=20.0.0"
32
- },
33
- "license": "MIT",
34
- "author": "Aurabase",
35
- "repository": {
36
- "type": "git",
37
- "url": "git+https://github.com/daylami555/aurabase.git",
38
- "directory": "aurabase-js/packages/gen"
39
- },
40
- "homepage": "https://github.com/daylami555/aurabase/tree/main/aurabase-js/packages/gen#readme",
41
- "bugs": {
42
- "url": "https://github.com/daylami555/aurabase/issues"
43
- },
44
- "keywords": [
45
- "aurabase",
46
- "baas",
47
- "sdk",
48
- "generator",
49
- "types"
50
- ],
51
- "scripts": {
52
- "build": "tsup",
53
- "test": "vitest run --passWithNoTests",
54
- "typecheck": "tsc --noEmit"
55
- },
56
- "dependencies": {
57
- "@aurabase/core": "workspace:*",
58
- "aurabase": "workspace:*"
59
- },
60
- "devDependencies": {
61
- "tsup": "catalog:",
62
- "typescript": "catalog:",
63
- "vitest": "catalog:",
64
- "@types/node": "catalog:"
65
- }
66
- }
@@ -1,67 +0,0 @@
1
- #!/usr/bin/env node
2
- import { writeFileSync } from 'node:fs'
3
- import { createClient } from 'aurabase'
4
- import { generateDatabaseTypes } from './generate'
5
-
6
- interface Args { url?: string; project?: string; key?: string; out?: string; schema?: string; typeName?: string }
7
-
8
- function parseArgs(argv: string[]): Args {
9
- const a: Args = {}
10
- for (let i = 0; i < argv.length; i++) {
11
- const v = argv[i + 1]
12
- switch (argv[i]) {
13
- case '--url': a.url = v; i++; break
14
- case '--project': a.project = v; i++; break
15
- case '--key': a.key = v; i++; break
16
- case '--out': a.out = v; i++; break
17
- case '--schema': a.schema = v; i++; break
18
- case '--type-name': a.typeName = v; i++; break
19
- }
20
- }
21
- return a
22
- }
23
-
24
- const USAGE = `Usage: aurabase-gen --url <baseUrl> --project <id> [--key <apiKey>] [--out database.types.ts] [--schema public] [--type-name Database]`
25
-
26
- async function main(): Promise<void> {
27
- const args = parseArgs(process.argv.slice(2))
28
- if (!args.url || !args.project) {
29
- console.error(USAGE)
30
- process.exit(1)
31
- }
32
- const client = createClient(args.url, args.project, args.key)
33
- const { data, error } = await client.db.schema()
34
- if (error) {
35
- console.error(`[aurabase-gen] Erreur de récupération du schéma : ${error.message}`)
36
- process.exit(1)
37
- }
38
- // `schema()` renvoie `{ tables, functions, enums, views }`. Le typage généré
39
- // sérialise Functions (Args/Returns/SetofOptions), Enums (unions) et Views (Row).
40
- const tables = data?.tables ?? []
41
- const functions = data?.functions ?? []
42
- const enums = data?.enums ?? []
43
- const views = data?.views ?? []
44
- if (tables.length === 0) {
45
- console.error('[aurabase-gen] Avertissement : schéma vide (aucune table).')
46
- }
47
- const output = generateDatabaseTypes(tables, {
48
- schemaName: args.schema,
49
- typeName: args.typeName,
50
- functions,
51
- enums,
52
- views,
53
- })
54
- if (args.out) {
55
- writeFileSync(args.out, output)
56
- console.error(
57
- `[aurabase-gen] ✓ Types écrits dans ${args.out} (${tables.length} table(s), ${functions.length} fonction(s), ${enums.length} enum(s), ${views.length} vue(s)).`,
58
- )
59
- } else {
60
- process.stdout.write(output)
61
- }
62
- }
63
-
64
- main().catch((e) => {
65
- console.error('[aurabase-gen]', e instanceof Error ? e.message : e)
66
- process.exit(1)
67
- })
Binary file
@@ -1,2 +0,0 @@
1
- export { generateDatabaseTypes } from './generate'
2
- export type { GenerateOptions } from './generate'
@@ -1,213 +0,0 @@
1
- import { describe, it, expect } from 'vitest'
2
- import { execFileSync } from 'node:child_process'
3
- import { mkdtempSync, writeFileSync } from 'node:fs'
4
- import { tmpdir } from 'node:os'
5
- import { join } from 'node:path'
6
- import { generateDatabaseTypes } from '../src/generate'
7
- import type { SchemaTable, SchemaFunction, SchemaEnum } from '@aurabase/core'
8
-
9
- const tables: SchemaTable[] = [
10
- { name: 'users', columns: [
11
- { name: 'id', col_type: 'uuid', nullable: false, unique: true, default_val: 'gen_random_uuid()', references: null },
12
- { name: 'email', col_type: 'text', nullable: false, unique: true, default_val: null, references: null },
13
- ], indexes: [], rls_enabled: false, realtime_enabled: false, primary_key: 'id' },
14
- { name: 'posts', columns: [
15
- { name: 'id', col_type: 'uuid', nullable: false, unique: true, default_val: 'gen_random_uuid()', references: null },
16
- { name: 'author_id', col_type: 'uuid', nullable: false, unique: false, default_val: null, references: { table: 'users', column: 'id' } },
17
- { name: 'meta', col_type: 'jsonb', nullable: true, unique: false, default_val: null, references: null },
18
- ], indexes: [], rls_enabled: false, realtime_enabled: false, primary_key: 'id' },
19
- ]
20
-
21
- describe('generateDatabaseTypes — la sortie compile', () => {
22
- it('tsc --noEmit --strict sans erreur', () => {
23
- const out = generateDatabaseTypes(tables)
24
- const dir = mkdtempSync(join(tmpdir(), 'aura-gen-'))
25
- const file = join(dir, 'database.types.ts')
26
- writeFileSync(file, out)
27
- // Compile le fichier isolé (aucun import externe → autonome).
28
- expect(() =>
29
- execFileSync('npx', ['tsc', '--noEmit', '--strict', '--skipLibCheck', file], { stdio: 'pipe' }),
30
- ).not.toThrow()
31
- }, 30000)
32
- })
33
-
34
- const functions: SchemaFunction[] = [
35
- { name: 'add', args: [
36
- { name: 'a', data_type: 'int4', mode: 'IN' },
37
- { name: 'b', data_type: 'int4', mode: 'IN' },
38
- ], returns: 'int4', is_set_returning: false },
39
- { name: 'list_things', args: [], returns: 'record', is_set_returning: true },
40
- ]
41
-
42
- // Forme minimale de `GenericSchema['Functions']` (packages/db/src/pgrst-types/common/common.ts),
43
- // dupliquée ici pour garder ce test autonome (le fichier généré compile isolément).
44
- const GENERIC_SCHEMA_SHAPE = `
45
- type GenericFunction = {
46
- Args: Record<string, unknown> | never
47
- Returns: unknown
48
- SetofOptions?: {
49
- isSetofReturn?: boolean
50
- isOneToOne?: boolean
51
- isNotNullable?: boolean
52
- to: string
53
- from: string
54
- }
55
- }
56
- type AssertFunctionsShape<T extends Record<string, GenericFunction>> = T
57
- type _assertFunctions = AssertFunctionsShape<Database['public']['Functions']>
58
- `
59
-
60
- describe('generateDatabaseTypes — le bloc Functions compile et satisfait GenericSchema', () => {
61
- it('tsc --noEmit --strict : Args/Returns/SetofOptions valides pour une fonction scalaire + une SETOF', () => {
62
- const out = generateDatabaseTypes(tables, { functions })
63
- const dir = mkdtempSync(join(tmpdir(), 'aura-gen-fn-'))
64
- const file = join(dir, 'database.types.ts')
65
- writeFileSync(file, `${out}\n${GENERIC_SCHEMA_SHAPE}`)
66
- expect(() =>
67
- execFileSync('npx', ['tsc', '--noEmit', '--strict', '--skipLibCheck', file], { stdio: 'pipe' }),
68
- ).not.toThrow()
69
- }, 30000)
70
- })
71
-
72
- // C5/C6 : preuve que l'auto-référence `Database['public']['Enums']['mood']` (colonnes
73
- // enum + args de fonction enum) et le bloc Views compilent réellement.
74
- const enums: SchemaEnum[] = [{ name: 'mood', values: ['happy', 'sad'] }]
75
- const enumTables: SchemaTable[] = [
76
- { name: 'people', columns: [
77
- { name: 'id', col_type: 'uuid', nullable: false, unique: true, default_val: 'gen_random_uuid()', references: null },
78
- { name: 'mood', col_type: { enum: 'mood' } as unknown as string, nullable: false, unique: false, default_val: null, references: null },
79
- { name: 'tags', col_type: { array: 'text' } as unknown as string, nullable: true, unique: false, default_val: null, references: null },
80
- { name: 'moods', col_type: { array: { enum: 'mood' } } as unknown as string, nullable: true, unique: false, default_val: null, references: null },
81
- ], indexes: [], rls_enabled: false, realtime_enabled: false, primary_key: 'id' },
82
- ]
83
- const enumViews: SchemaTable[] = [
84
- { name: 'v_happy_people', columns: [
85
- { name: 'id', col_type: 'uuid', nullable: true, unique: false, default_val: null, references: null },
86
- { name: 'mood', col_type: { enum: 'mood' } as unknown as string, nullable: true, unique: false, default_val: null, references: null },
87
- ], indexes: [], rls_enabled: false, realtime_enabled: false },
88
- ]
89
- const enumFunctions: SchemaFunction[] = [
90
- { name: 'set_mood', args: [{ name: 'm', data_type: 'mood', mode: 'IN' }], returns: 'mood', is_set_returning: false },
91
- { name: 'tags_of', args: [{ name: 'ids', data_type: '_int4', mode: 'IN' }], returns: '_text', is_set_returning: false },
92
- ]
93
-
94
- // GEN-M1 : deux overloads de même nom NE DOIVENT PAS produire deux clés dupliquées
95
- // (TS2300, fichier non compilable). Ils sont fusionnés en union `Args`/`Returns`.
96
- const overloads: SchemaFunction[] = [
97
- { name: 'add', args: [
98
- { name: 'a', data_type: 'int4', mode: 'IN' },
99
- { name: 'b', data_type: 'int4', mode: 'IN' },
100
- ], returns: 'int4', is_set_returning: false },
101
- { name: 'add', args: [
102
- { name: 'a', data_type: 'text', mode: 'IN' },
103
- { name: 'b', data_type: 'text', mode: 'IN' },
104
- ], returns: 'text', is_set_returning: false },
105
- ]
106
-
107
- describe('generateDatabaseTypes — GEN-M1 : overloads fusionnés (compile, pas de TS2300)', () => {
108
- it('deux add(...) → UNE clé add, Args/Returns en union, tsc --strict OK', () => {
109
- const out = generateDatabaseTypes(tables, { functions: overloads })
110
- // Une seule clé `add:` dans le bloc Functions (pas de duplicate identifier).
111
- const fnBlock = out.slice(out.indexOf('Functions:'), out.indexOf('Enums:'))
112
- expect(fnBlock.match(/add: {/g)).toHaveLength(1)
113
- // Union des signatures (les deux formes d'Args + les deux Returns).
114
- expect(fnBlock).toContain('{ a: number; b: number } | { a: string; b: string }')
115
- expect(fnBlock).toContain('Returns: number | string')
116
- // Et surtout : le fichier compile réellement.
117
- const dir = mkdtempSync(join(tmpdir(), 'aura-gen-ovl-'))
118
- const file = join(dir, 'database.types.ts')
119
- writeFileSync(file, `${out}\n${GENERIC_SCHEMA_SHAPE}`)
120
- expect(() =>
121
- execFileSync('npx', ['tsc', '--noEmit', '--strict', '--skipLibCheck', file], { stdio: 'pipe' }),
122
- ).not.toThrow()
123
- }, 30000)
124
- })
125
-
126
- // Probe type-level (P4) : mirroir FIDÈLE des branches `Row` et `Result` du résolveur RPC
127
- // vendoré (`packages/db/src/pgrst-types/common/rpc.ts:110-135`), dupliqué ici pour rester
128
- // autonome (le fichier généré compile isolément, sans importer @aurabase/db). Prouve que la
129
- // sortie de `@aurabase/gen` alimente CORRECTEMENT le narrowing SETOF :
130
- // - `.select()` (Row) sur une fonction `SETOF <table>` narrown les colonnes de la table cible
131
- // (`SetofOptions.to` = table réelle) — c'est le fix P4 ;
132
- // - une fonction `SETOF record` (placeholder) garde un `.rpc()` Result = `Fn['Returns']` =
133
- // `Record<string, unknown>[]` (non-régression, comportement identique avant/après le fix).
134
- const SETOF_NARROWING_PROBE = `
135
- type Schema = Database['public']
136
- type TablesAndViews = Schema['Tables'] & Exclude<Schema['Views'], ''>
137
-
138
- // Branche Row du résolveur (post-.select) : rpc.ts:111-113 pour le cas table connue.
139
- type RpcRow<FnName extends keyof Schema['Functions']> =
140
- Schema['Functions'][FnName] extends infer Fn
141
- ? Fn extends { SetofOptions: { to: infer To } }
142
- ? To extends keyof TablesAndViews
143
- ? TablesAndViews[To] extends { Row: infer R } ? R : never
144
- : never
145
- : never
146
- : never
147
-
148
- // Branche Result du résolveur (.rpc sans .select) : rpc.ts:129-135.
149
- type RpcResult<FnName extends keyof Schema['Functions']> =
150
- Schema['Functions'][FnName] extends infer Fn
151
- ? Fn extends { SetofOptions: { isSetofReturn: infer S; isOneToOne: infer O }; Returns: infer R }
152
- ? S extends true ? (O extends true ? R[] : R) : R
153
- : Fn extends { Returns: infer R2 } ? R2 : never
154
- : never
155
-
156
- type Assert<T extends true> = T
157
- type Extends<A, B> = [A] extends [B] ? true : false
158
- type Equals<A, B> =
159
- (<T>() => T extends A ? 1 : 2) extends (<T>() => T extends B ? 1 : 2) ? true : false
160
-
161
- // SETOF users → Row de la table users (id/email typés, PAS Record<string, unknown>).
162
- type _P1 = Assert<Extends<RpcRow<'list_users'>, { id: string; email: string }>>
163
- // La colonne 'id' est bien une clé narrowée.
164
- type _P2 = Assert<Extends<'id', keyof RpcRow<'list_users'>>>
165
- // Colonne inexistante NON présente (prouve le narrowing réel, pas un index signature).
166
- type _P3 = Assert<Extends<'not_a_col', keyof RpcRow<'list_users'>> extends true ? false : true>
167
- // SETOF record (placeholder) → .rpc() Result reste Record<string, unknown>[] (non-régression).
168
- type _P4 = Assert<Equals<RpcResult<'list_things'>, Record<string, unknown>[]>>
169
- `
170
-
171
- describe('generateDatabaseTypes — P4 : narrowing SETOF <table> (probe tsc type-level)', () => {
172
- it('tsc --strict : SETOF users narrown les colonnes, SETOF record reste Record<string, unknown>', () => {
173
- const out = generateDatabaseTypes(
174
- [
175
- { name: 'users', columns: [
176
- { name: 'id', col_type: 'uuid', nullable: false, unique: true, default_val: null, references: null },
177
- { name: 'email', col_type: 'text', nullable: false, unique: false, default_val: null, references: null },
178
- ], indexes: [], rls_enabled: false, realtime_enabled: false, primary_key: 'id' },
179
- ],
180
- {
181
- functions: [
182
- { name: 'list_users', args: [], returns: 'users', is_set_returning: true },
183
- { name: 'list_things', args: [], returns: 'record', is_set_returning: true },
184
- ],
185
- },
186
- )
187
- // La cible SETOF est bien résolue à la table dans la sortie textuelle.
188
- expect(out).toContain("to: 'users'")
189
- expect(out).toContain("to: 'list_things'")
190
- const dir = mkdtempSync(join(tmpdir(), 'aura-gen-setof-'))
191
- const file = join(dir, 'database.types.ts')
192
- writeFileSync(file, `${out}\n${SETOF_NARROWING_PROBE}`)
193
- expect(() =>
194
- execFileSync('npx', ['tsc', '--noEmit', '--strict', '--skipLibCheck', file], { stdio: 'pipe' }),
195
- ).not.toThrow()
196
- }, 30000)
197
- })
198
-
199
- describe('generateDatabaseTypes — Enums/Views/colonnes enum compilent (C5/C6)', () => {
200
- it('tsc --noEmit --strict : auto-référence Enums, array d’enum, view, function enum/array', () => {
201
- const out = generateDatabaseTypes(enumTables, {
202
- enums,
203
- views: enumViews,
204
- functions: enumFunctions,
205
- })
206
- const dir = mkdtempSync(join(tmpdir(), 'aura-gen-enum-'))
207
- const file = join(dir, 'database.types.ts')
208
- writeFileSync(file, `${out}\n${GENERIC_SCHEMA_SHAPE}`)
209
- expect(() =>
210
- execFileSync('npx', ['tsc', '--noEmit', '--strict', '--skipLibCheck', file], { stdio: 'pipe' }),
211
- ).not.toThrow()
212
- }, 30000)
213
- })
@@ -1,130 +0,0 @@
1
- import { describe, it, expect } from 'vitest'
2
- import { execFileSync } from 'node:child_process'
3
- import { mkdtempSync, writeFileSync } from 'node:fs'
4
- import { tmpdir } from 'node:os'
5
- import { join } from 'node:path'
6
- import { createClient } from 'aurabase'
7
- import { generateDatabaseTypes } from '../src/generate'
8
-
9
- const URL = process.env.AURA_E2E_URL
10
- const PROJECT = process.env.AURA_E2E_PROJECT
11
- const KEY = process.env.AURA_E2E_KEY
12
- const RUN = Boolean(process.env.RUN_E2E && URL && PROJECT && KEY)
13
-
14
- // Suffixe UNIQUE par run : évite les collisions « already exists » sur reruns
15
- // (l'endpoint /raw interdit les DROP → impossible de nettoyer par SQL brut ; on ne
16
- // tente donc plus de DROP, on isole chaque run par un suffixe distinct).
17
- function uniqueSuffix(): string {
18
- return (process.env.AURA_E2E_SUFFIX ?? '') + Math.random().toString(36).slice(2, 8)
19
- }
20
-
21
- // Exécute un SQL brut en RETENTANT sur les statuts transitoires — notamment 429
22
- // (l'endpoint /raw est rate-limité : burst 10 / 30 req/min) et 404/503 (cache
23
- // PostgREST). ASSERTE le succès : un CREATE avalé silencieusement (429) ne doit
24
- // plus faire échouer le test plus loin sur « 0 table ».
25
- async function sqlOk(
26
- client: ReturnType<typeof createClient>,
27
- query: string,
28
- ): Promise<void> {
29
- let res = await client.db.sql(query)
30
- for (let i = 0; i < 20 && res.error && [429, 404, 503].includes(res.error.status ?? 0); i++) {
31
- await new Promise((r) => setTimeout(r, 1000))
32
- res = await client.db.sql(query)
33
- }
34
- expect(res.error, `SQL a échoué: ${query.slice(0, 60)}… → ${JSON.stringify(res.error)}`).toBeNull()
35
- }
36
-
37
- async function schemaWithRetry<T extends { error: { status?: number } | null }>(
38
- fn: () => Promise<T>,
39
- ): Promise<T> {
40
- let res = await fn()
41
- for (let i = 0; i < 20 && res.error && [429, 404, 503].includes(res.error.status ?? 0); i++) {
42
- await new Promise((r) => setTimeout(r, 1000))
43
- res = await fn()
44
- }
45
- return res
46
- }
47
-
48
- describe.runIf(RUN)('gen E2E — schéma réel → génère → compile', () => {
49
- it('crée 2 tables liées par FK, génère les types, et ils compilent', async () => {
50
- const client = createClient(URL!, PROJECT!, KEY!)
51
- const suffix = uniqueSuffix()
52
- const authors = `e2e_authors_${suffix}`
53
- const books = `e2e_books_${suffix}`
54
-
55
- // Création via SQL brut (service_role). Pas de DROP préalable : /raw les rejette
56
- // (blocklist DDL) et ils consommeraient inutilement le budget rate-limit.
57
- await sqlOk(client, `CREATE TABLE ${authors} (id uuid PRIMARY KEY DEFAULT gen_random_uuid(), name text NOT NULL)`)
58
- await sqlOk(client, `CREATE TABLE ${books} (id uuid PRIMARY KEY DEFAULT gen_random_uuid(), author_id uuid NOT NULL REFERENCES ${authors}(id), title text NOT NULL)`)
59
-
60
- const { data, error } = await schemaWithRetry(() => client.db.schema())
61
- expect(error).toBeNull()
62
- const tables = (data?.tables ?? []).filter((t) => t.name === authors || t.name === books)
63
- expect(tables.length).toBe(2)
64
-
65
- const out = generateDatabaseTypes(tables)
66
- expect(out).toContain(`referencedRelation: '${authors}'`)
67
- expect(out).toContain(`columns: ['author_id']`)
68
-
69
- const dir = mkdtempSync(join(tmpdir(), 'aura-gen-e2e-'))
70
- const file = join(dir, 'database.types.ts')
71
- writeFileSync(file, out)
72
- expect(() =>
73
- execFileSync('npx', ['tsc', '--noEmit', '--strict', '--skipLibCheck', file], { stdio: 'pipe' }),
74
- ).not.toThrow()
75
- }, 60_000)
76
-
77
- // LOT C — enum + array typé + FK composite + view + function scalaire.
78
- it('enum + array + FK composite + view + function → génère blocs Enums/Views/Functions typés et compile', async () => {
79
- const client = createClient(URL!, PROJECT!, KEY!)
80
- const suffix = uniqueSuffix()
81
- const moodEnum = `e2e_mood_${suffix}`
82
- const orders = `e2e_orders_${suffix}`
83
- const items = `e2e_items_${suffix}`
84
- const view = `e2e_v_items_${suffix}`
85
- const addFn = `e2e_add_${suffix}`
86
-
87
- // Pas de DROP (voir cas 1). Chaque CREATE est asserté + retenté sur 429/404/503.
88
- await sqlOk(client, `CREATE TYPE ${moodEnum} AS ENUM ('happy', 'sad', 'ok')`)
89
- await sqlOk(
90
- client,
91
- `CREATE TABLE ${orders} (tenant uuid NOT NULL, id uuid NOT NULL, mood ${moodEnum} NOT NULL, tags text[] NOT NULL DEFAULT '{}', PRIMARY KEY (tenant, id))`,
92
- )
93
- await sqlOk(
94
- client,
95
- `CREATE TABLE ${items} (id uuid PRIMARY KEY DEFAULT gen_random_uuid(), order_tenant uuid NOT NULL, order_id uuid NOT NULL, CONSTRAINT fk_order FOREIGN KEY (order_tenant, order_id) REFERENCES ${orders}(tenant, id))`,
96
- )
97
- await sqlOk(client, `CREATE VIEW ${view} AS SELECT id, order_id FROM ${items}`)
98
- await sqlOk(client, `CREATE FUNCTION ${addFn}(a int, b int) RETURNS int LANGUAGE sql AS 'SELECT a + b'`)
99
- await sqlOk(client, `SELECT pg_notify('pgrst', 'reload schema')`)
100
-
101
- const { data, error } = await schemaWithRetry(() => client.db.schema())
102
- expect(error).toBeNull()
103
- const tables = (data?.tables ?? []).filter((t) => t.name === orders || t.name === items)
104
- const enums = (data?.enums ?? []).filter((e) => e.name === moodEnum)
105
- const views = (data?.views ?? []).filter((v) => v.name === view)
106
- const functions = (data?.functions ?? []).filter((f) => f.name === addFn)
107
- expect(tables.length).toBe(2)
108
- expect(enums.length).toBe(1)
109
- expect(views.length).toBe(1)
110
- expect(functions.length).toBe(1)
111
-
112
- const out = generateDatabaseTypes(tables, { enums, views, functions })
113
- expect(out).toContain(`${moodEnum}: 'happy' | 'sad' | 'ok'`)
114
- expect(out).toContain(`mood: Database['public']['Enums']['${moodEnum}']`)
115
- expect(out).toContain('tags: string[]')
116
- expect(out).toContain("columns: ['order_tenant', 'order_id']")
117
- expect(out).toContain(`${view}: {`)
118
- const fnBlock = out.slice(out.indexOf(`${addFn}: {`), out.indexOf(`${addFn}: {`) + 300)
119
- expect(fnBlock).toContain('a: number')
120
- expect(fnBlock).toContain('Returns: number')
121
- expect(fnBlock).not.toContain('unknown')
122
-
123
- const dir = mkdtempSync(join(tmpdir(), 'aura-gen-e2e-c-'))
124
- const file = join(dir, 'database.types.ts')
125
- writeFileSync(file, out)
126
- expect(() =>
127
- execFileSync('npx', ['tsc', '--noEmit', '--strict', '--skipLibCheck', file], { stdio: 'pipe' }),
128
- ).not.toThrow()
129
- }, 60_000)
130
- })