@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,707 +0,0 @@
1
- // Vendored from @supabase/postgrest-js (MIT, Copyright (c) Supabase).
2
- // Provenance précise (version amont, SHA, procédure de resync) : voir packages/db/VENDORED.md
3
- // Adapté pour aurabase — ne pas modifier la logique du parser/résolveur.
4
- import { Ast } from './parser'
5
- import {
6
- AggregateFunctions,
7
- ContainsNull,
8
- GenericRelationship,
9
- GenericSchema,
10
- GenericTable,
11
- IsNonEmptyArray,
12
- TablesAndViews,
13
- UnionToArray,
14
- GenericFunction,
15
- GenericSetofOption,
16
- } from './types'
17
-
18
- export type IsAny<T> = 0 extends 1 & T ? true : false
19
-
20
- export type SelectQueryError<Message extends string> = { error: true } & Message
21
-
22
- /*
23
- ** Because of pg-meta types generation there is some cases where a same relationship can be duplicated
24
- ** if the relation is across schemas and views this ensure that we dedup those relations and treat them
25
- ** as postgrest would.
26
- ** This is no longer the case and has been patched here: https://github.com/supabase/postgres-meta/pull/809
27
- ** But we still need this for retro-compatibilty with older generated types
28
- ** TODO: Remove this in next major version
29
- */
30
- export type DeduplicateRelationships<T extends readonly unknown[]> = T extends readonly [
31
- infer First,
32
- ...infer Rest,
33
- ]
34
- ? First extends Rest[number]
35
- ? DeduplicateRelationships<Rest extends readonly unknown[] ? Rest : []>
36
- : [First, ...DeduplicateRelationships<Rest extends readonly unknown[] ? Rest : []>]
37
- : T
38
-
39
- export type GetFieldNodeResultName<Field extends Ast.FieldNode> = Field['alias'] extends string
40
- ? Field['alias']
41
- : Field['aggregateFunction'] extends AggregateFunctions
42
- ? Field['aggregateFunction']
43
- : Field['name']
44
-
45
- type FilterRelationNodes<Nodes extends Ast.Node[]> = UnionToArray<
46
- {
47
- [K in keyof Nodes]: Nodes[K] extends Ast.SpreadNode
48
- ? Nodes[K]['target']
49
- : Nodes[K] extends Ast.FieldNode
50
- ? IsNonEmptyArray<Nodes[K]['children']> extends true
51
- ? Nodes[K]
52
- : never
53
- : never
54
- }[number]
55
- >
56
-
57
- type ResolveRelationships<
58
- Schema extends GenericSchema,
59
- RelationName extends string,
60
- Relationships extends GenericRelationship[],
61
- Nodes extends Ast.FieldNode[],
62
- > = UnionToArray<{
63
- [K in keyof Nodes]: Nodes[K] extends Ast.FieldNode
64
- ? ResolveRelationship<Schema, Relationships, Nodes[K], RelationName> extends infer Relation
65
- ? Relation extends {
66
- relation: {
67
- referencedRelation: string
68
- foreignKeyName: string
69
- match: string
70
- }
71
- from: string
72
- }
73
- ? {
74
- referencedTable: Relation['relation']['referencedRelation']
75
- fkName: Relation['relation']['foreignKeyName']
76
- from: Relation['from']
77
- match: Relation['relation']['match']
78
- fieldName: GetFieldNodeResultName<Nodes[K]>
79
- }
80
- : Relation
81
- : never
82
- : never
83
- }>[0]
84
-
85
- /**
86
- * Checks if a relation is implicitly referenced twice, requiring disambiguation
87
- */
88
- type IsDoubleReference<T, U> = T extends {
89
- referencedTable: infer RT
90
- fieldName: infer FN
91
- match: infer M
92
- }
93
- ? M extends 'col' | 'refrel'
94
- ? U extends { referencedTable: RT; fieldName: FN; match: M }
95
- ? true
96
- : false
97
- : false
98
- : false
99
-
100
- /**
101
- * Compares one element with all other elements in the array to find duplicates
102
- */
103
- type CheckDuplicates<Arr extends any[], Current> = Arr extends [infer Head, ...infer Tail]
104
- ? IsDoubleReference<Current, Head> extends true
105
- ? Head | CheckDuplicates<Tail, Current> // Return the Head if duplicate
106
- : CheckDuplicates<Tail, Current> // Otherwise, continue checking
107
- : never
108
-
109
- /**
110
- * Iterates over the elements of the array to find duplicates
111
- */
112
- type FindDuplicatesWithinDeduplicated<Arr extends any[]> = Arr extends [infer Head, ...infer Tail]
113
- ? CheckDuplicates<Tail, Head> | FindDuplicatesWithinDeduplicated<Tail>
114
- : never
115
-
116
- type FindDuplicates<Arr extends any[]> = FindDuplicatesWithinDeduplicated<
117
- DeduplicateRelationships<Arr>
118
- >
119
-
120
- export type CheckDuplicateEmbededReference<
121
- Schema extends GenericSchema,
122
- RelationName extends string,
123
- Relationships extends GenericRelationship[],
124
- Nodes extends Ast.Node[],
125
- > =
126
- FilterRelationNodes<Nodes> extends infer RelationsNodes
127
- ? RelationsNodes extends Ast.FieldNode[]
128
- ? ResolveRelationships<
129
- Schema,
130
- RelationName,
131
- Relationships,
132
- RelationsNodes
133
- > extends infer ResolvedRels
134
- ? ResolvedRels extends unknown[]
135
- ? FindDuplicates<ResolvedRels> extends infer Duplicates
136
- ? Duplicates extends never
137
- ? false
138
- : Duplicates extends { fieldName: infer FieldName }
139
- ? FieldName extends string
140
- ? {
141
- [K in FieldName]: SelectQueryError<`table "${RelationName}" specified more than once use hinting for desambiguation`>
142
- }
143
- : false
144
- : false
145
- : false
146
- : false
147
- : false
148
- : false
149
- : false
150
-
151
- /**
152
- * Returns a boolean representing whether there is a foreign key referencing
153
- * a given relation.
154
- */
155
- type HasFKeyToFRel<FRelName, Relationships> = Relationships extends [infer R]
156
- ? R extends { referencedRelation: FRelName }
157
- ? true
158
- : false
159
- : Relationships extends [infer R, ...infer Rest]
160
- ? HasFKeyToFRel<FRelName, [R]> extends true
161
- ? true
162
- : HasFKeyToFRel<FRelName, Rest>
163
- : false
164
- /**
165
- * Checks if there is more than one relation to a given foreign relation name in the Relationships.
166
- */
167
- type HasMultipleFKeysToFRelDeduplicated<FRelName, Relationships> = Relationships extends [
168
- infer R,
169
- ...infer Rest,
170
- ]
171
- ? R extends { referencedRelation: FRelName }
172
- ? HasFKeyToFRel<FRelName, Rest> extends true
173
- ? true
174
- : HasMultipleFKeysToFRelDeduplicated<FRelName, Rest>
175
- : HasMultipleFKeysToFRelDeduplicated<FRelName, Rest>
176
- : false
177
-
178
- type HasMultipleFKeysToFRel<
179
- FRelName,
180
- Relationships extends unknown[],
181
- > = HasMultipleFKeysToFRelDeduplicated<FRelName, DeduplicateRelationships<Relationships>>
182
-
183
- type CheckRelationshipError<
184
- Schema extends GenericSchema,
185
- Relationships extends GenericRelationship[],
186
- CurrentTableOrView extends keyof TablesAndViews<Schema> & string,
187
- FoundRelation,
188
- > =
189
- FoundRelation extends SelectQueryError<string>
190
- ? FoundRelation
191
- : // If the relation is a reverse relation with no hint (matching by name)
192
- FoundRelation extends {
193
- relation: {
194
- referencedRelation: infer RelatedRelationName
195
- name: string
196
- }
197
- direction: 'reverse'
198
- }
199
- ? RelatedRelationName extends string
200
- ? // We check if there is possible confusion with other relations with this table
201
- HasMultipleFKeysToFRel<RelatedRelationName, Relationships> extends true
202
- ? // If there is, postgrest will fail at runtime, and require desambiguation via hinting
203
- SelectQueryError<`Could not embed because more than one relationship was found for '${RelatedRelationName}' and '${CurrentTableOrView}' you need to hint the column with ${RelatedRelationName}!<columnName> ?`>
204
- : FoundRelation
205
- : never
206
- : // Same check for forward relationships, but we must gather the relationships from the found relation
207
- FoundRelation extends {
208
- relation: {
209
- referencedRelation: infer RelatedRelationName
210
- name: string
211
- }
212
- direction: 'forward'
213
- from: infer From
214
- }
215
- ? RelatedRelationName extends string
216
- ? From extends keyof TablesAndViews<Schema> & string
217
- ? HasMultipleFKeysToFRel<
218
- RelatedRelationName,
219
- TablesAndViews<Schema>[From]['Relationships']
220
- > extends true
221
- ? SelectQueryError<`Could not embed because more than one relationship was found for '${From}' and '${RelatedRelationName}' you need to hint the column with ${From}!<columnName> ?`>
222
- : FoundRelation
223
- : never
224
- : never
225
- : FoundRelation
226
- /**
227
- * Resolves relationships for embedded resources and retrieves the referenced Table
228
- */
229
- export type ResolveRelationship<
230
- Schema extends GenericSchema,
231
- Relationships extends GenericRelationship[],
232
- Field extends Ast.FieldNode,
233
- CurrentTableOrView extends keyof TablesAndViews<Schema> & string,
234
- > =
235
- ResolveReverseRelationship<
236
- Schema,
237
- Relationships,
238
- Field,
239
- CurrentTableOrView
240
- > extends infer ReverseRelationship
241
- ? ReverseRelationship extends false
242
- ? CheckRelationshipError<
243
- Schema,
244
- Relationships,
245
- CurrentTableOrView,
246
- ResolveForwardRelationship<Schema, Field, CurrentTableOrView>
247
- >
248
- : CheckRelationshipError<Schema, Relationships, CurrentTableOrView, ReverseRelationship>
249
- : never
250
-
251
- /**
252
- * Resolves reverse relationships (from children to parent)
253
- */
254
- type ResolveReverseRelationship<
255
- Schema extends GenericSchema,
256
- Relationships extends GenericRelationship[],
257
- Field extends Ast.FieldNode,
258
- CurrentTableOrView extends keyof TablesAndViews<Schema> & string,
259
- > =
260
- FindFieldMatchingRelationships<Schema, Relationships, Field> extends infer FoundRelation
261
- ? FoundRelation extends never
262
- ? false
263
- : FoundRelation extends { referencedRelation: infer RelatedRelationName }
264
- ? RelatedRelationName extends string
265
- ? RelatedRelationName extends keyof TablesAndViews<Schema>
266
- ? // If the relation was found via hinting we just return it without any more checks
267
- FoundRelation extends { hint: string }
268
- ? {
269
- referencedTable: TablesAndViews<Schema>[RelatedRelationName]
270
- relation: FoundRelation
271
- direction: 'reverse'
272
- from: CurrentTableOrView
273
- }
274
- : // If the relation was found via implicit relation naming, we must ensure there is no conflicting matches
275
- HasMultipleFKeysToFRel<RelatedRelationName, Relationships> extends true
276
- ? SelectQueryError<`Could not embed because more than one relationship was found for '${RelatedRelationName}' and '${CurrentTableOrView}' you need to hint the column with ${RelatedRelationName}!<columnName> ?`>
277
- : {
278
- referencedTable: TablesAndViews<Schema>[RelatedRelationName]
279
- relation: FoundRelation
280
- direction: 'reverse'
281
- from: CurrentTableOrView
282
- }
283
- : SelectQueryError<`Relation '${RelatedRelationName}' not found in schema.`>
284
- : false
285
- : false
286
- : false
287
-
288
- export type FindMatchingTableRelationships<
289
- Schema extends GenericSchema,
290
- Relationships extends GenericRelationship[],
291
- value extends string,
292
- > = Relationships extends [infer R, ...infer Rest]
293
- ? Rest extends GenericRelationship[]
294
- ? R extends { referencedRelation: infer ReferencedRelation }
295
- ? ReferencedRelation extends keyof Schema['Tables']
296
- ? R extends { foreignKeyName: value }
297
- ? R & { match: 'fkname' }
298
- : R extends { referencedRelation: value }
299
- ? R & { match: 'refrel' }
300
- : R extends { columns: [value] }
301
- ? R & { match: 'col' }
302
- : FindMatchingTableRelationships<Schema, Rest, value>
303
- : FindMatchingTableRelationships<Schema, Rest, value>
304
- : false
305
- : false
306
- : false
307
-
308
- export type FindMatchingViewRelationships<
309
- Schema extends GenericSchema,
310
- Relationships extends GenericRelationship[],
311
- value extends string,
312
- > = Relationships extends [infer R, ...infer Rest]
313
- ? Rest extends GenericRelationship[]
314
- ? R extends { referencedRelation: infer ReferencedRelation }
315
- ? ReferencedRelation extends keyof Schema['Views']
316
- ? R extends { foreignKeyName: value }
317
- ? R & { match: 'fkname' }
318
- : R extends { referencedRelation: value }
319
- ? R & { match: 'refrel' }
320
- : R extends { columns: [value] }
321
- ? R & { match: 'col' }
322
- : FindMatchingViewRelationships<Schema, Rest, value>
323
- : FindMatchingViewRelationships<Schema, Rest, value>
324
- : false
325
- : false
326
- : false
327
-
328
- export type FindMatchingHintTableRelationships<
329
- Schema extends GenericSchema,
330
- Relationships extends GenericRelationship[],
331
- hint extends string,
332
- name extends string,
333
- > = Relationships extends [infer R, ...infer Rest]
334
- ? Rest extends GenericRelationship[]
335
- ? R extends { referencedRelation: infer ReferencedRelation }
336
- ? ReferencedRelation extends name
337
- ? R extends { foreignKeyName: hint }
338
- ? R & { match: 'fkname' }
339
- : R extends { referencedRelation: hint }
340
- ? R & { match: 'refrel' }
341
- : R extends { columns: [hint] }
342
- ? R & { match: 'col' }
343
- : FindMatchingHintTableRelationships<Schema, Rest, hint, name>
344
- : FindMatchingHintTableRelationships<Schema, Rest, hint, name>
345
- : false
346
- : false
347
- : false
348
- export type FindMatchingHintViewRelationships<
349
- Schema extends GenericSchema,
350
- Relationships extends GenericRelationship[],
351
- hint extends string,
352
- name extends string,
353
- > = Relationships extends [infer R, ...infer Rest]
354
- ? Rest extends GenericRelationship[]
355
- ? R extends { referencedRelation: infer ReferencedRelation }
356
- ? ReferencedRelation extends name
357
- ? R extends { foreignKeyName: hint }
358
- ? R & { match: 'fkname' }
359
- : R extends { referencedRelation: hint }
360
- ? R & { match: 'refrel' }
361
- : R extends { columns: [hint] }
362
- ? R & { match: 'col' }
363
- : FindMatchingHintViewRelationships<Schema, Rest, hint, name>
364
- : FindMatchingHintViewRelationships<Schema, Rest, hint, name>
365
- : false
366
- : false
367
- : false
368
-
369
- type IsColumnsNullable<
370
- Table extends Pick<GenericTable, 'Row'>,
371
- Columns extends (keyof Table['Row'])[],
372
- > = Columns extends [infer Column, ...infer Rest]
373
- ? Column extends keyof Table['Row']
374
- ? ContainsNull<Table['Row'][Column]> extends true
375
- ? true
376
- : IsColumnsNullable<Table, Rest extends (keyof Table['Row'])[] ? Rest : []>
377
- : false
378
- : false
379
-
380
- // Check weither or not a 1-1 relation is nullable by checking against the type of the columns
381
- export type IsRelationNullable<
382
- Table extends GenericTable,
383
- Relation extends GenericRelationship,
384
- > = IsColumnsNullable<Table, Relation['columns']>
385
-
386
- type TableForwardRelationships<
387
- Schema extends GenericSchema,
388
- TName,
389
- > = TName extends keyof TablesAndViews<Schema>
390
- ? UnionToArray<
391
- RecursivelyFindRelationships<Schema, TName, keyof TablesAndViews<Schema>>
392
- > extends infer R
393
- ? R extends (GenericRelationship & { from: keyof TablesAndViews<Schema> })[]
394
- ? R
395
- : []
396
- : []
397
- : []
398
-
399
- type RecursivelyFindRelationships<
400
- Schema extends GenericSchema,
401
- TName,
402
- Keys extends keyof TablesAndViews<Schema>,
403
- > = Keys extends infer K
404
- ? K extends keyof TablesAndViews<Schema>
405
- ? FilterRelationships<TablesAndViews<Schema>[K]['Relationships'], TName, K> extends never
406
- ? RecursivelyFindRelationships<Schema, TName, Exclude<Keys, K>>
407
- :
408
- | FilterRelationships<TablesAndViews<Schema>[K]['Relationships'], TName, K>
409
- | RecursivelyFindRelationships<Schema, TName, Exclude<Keys, K>>
410
- : false
411
- : false
412
-
413
- type FilterRelationships<R, TName, From> = R extends readonly (infer Rel)[]
414
- ? Rel extends { referencedRelation: TName }
415
- ? Rel & { from: From }
416
- : never
417
- : never
418
-
419
- export type ResolveForwardRelationship<
420
- Schema extends GenericSchema,
421
- Field extends Ast.FieldNode,
422
- CurrentTableOrView extends keyof TablesAndViews<Schema> & string,
423
- > =
424
- FindFieldMatchingRelationships<
425
- Schema,
426
- TablesAndViews<Schema>[Field['name']]['Relationships'],
427
- Ast.FieldNode & { name: CurrentTableOrView; hint: Field['hint'] }
428
- > extends infer FoundByName
429
- ? FoundByName extends GenericRelationship
430
- ? {
431
- referencedTable: TablesAndViews<Schema>[Field['name']]
432
- relation: FoundByName
433
- direction: 'forward'
434
- from: Field['name']
435
- type: 'found-by-name'
436
- }
437
- : FindFieldMatchingRelationships<
438
- Schema,
439
- TableForwardRelationships<Schema, CurrentTableOrView>,
440
- Field
441
- > extends infer FoundByMatch
442
- ? FoundByMatch extends GenericRelationship & {
443
- from: keyof TablesAndViews<Schema>
444
- }
445
- ? {
446
- referencedTable: TablesAndViews<Schema>[FoundByMatch['from']]
447
- relation: FoundByMatch
448
- direction: 'forward'
449
- from: CurrentTableOrView
450
- type: 'found-by-match'
451
- }
452
- : FindJoinTableRelationship<
453
- Schema,
454
- CurrentTableOrView,
455
- Field['name']
456
- > extends infer FoundByJoinTable
457
- ? FoundByJoinTable extends GenericRelationship
458
- ? {
459
- referencedTable: TablesAndViews<Schema>[FoundByJoinTable['referencedRelation']]
460
- relation: FoundByJoinTable & { match: 'refrel' }
461
- direction: 'forward'
462
- from: CurrentTableOrView
463
- type: 'found-by-join-table'
464
- }
465
- : ResolveEmbededFunctionJoinTableRelationship<
466
- Schema,
467
- CurrentTableOrView,
468
- Field['name']
469
- > extends infer FoundEmbededFunctionJoinTableRelation
470
- ? FoundEmbededFunctionJoinTableRelation extends GenericFunction
471
- ? FoundEmbededFunctionJoinTableRelation['SetofOptions'] extends GenericSetofOption
472
- ? FoundEmbededFunctionJoinTableRelation['SetofOptions']['to'] extends ''
473
- ? // Scalar computed column: function returns a primitive (not a table row).
474
- // `to` is '' because there is no target table — the value is returned directly.
475
- {
476
- referencedTable: { Row: Record<string, never>; Relationships: [] }
477
- relation: {
478
- foreignKeyName: `${Field['name']}_${CurrentTableOrView}_scalar_forward`
479
- columns: []
480
- isOneToOne: false
481
- referencedColumns: []
482
- referencedRelation: ''
483
- } & {
484
- match: 'func'
485
- isNotNullable: FoundEmbededFunctionJoinTableRelation['SetofOptions']['isNotNullable'] extends true
486
- ? true
487
- : FoundEmbededFunctionJoinTableRelation['SetofOptions']['isSetofReturn'] extends true
488
- ? false
489
- : true
490
- isSetofReturn: FoundEmbededFunctionJoinTableRelation['SetofOptions']['isSetofReturn']
491
- }
492
- scalarType: FoundEmbededFunctionJoinTableRelation['Returns']
493
- direction: 'forward'
494
- from: CurrentTableOrView
495
- type: 'found-by-embeded-scalar-function'
496
- }
497
- : // Table-valued function: `to` names the target table/view.
498
- {
499
- referencedTable: TablesAndViews<Schema>[FoundEmbededFunctionJoinTableRelation['SetofOptions']['to']]
500
- relation: {
501
- foreignKeyName: `${Field['name']}_${CurrentTableOrView}_${FoundEmbededFunctionJoinTableRelation['SetofOptions']['to']}_forward`
502
- columns: []
503
- isOneToOne: FoundEmbededFunctionJoinTableRelation['SetofOptions']['isOneToOne'] extends true
504
- ? true
505
- : false
506
- referencedColumns: []
507
- referencedRelation: FoundEmbededFunctionJoinTableRelation['SetofOptions']['to']
508
- } & {
509
- match: 'func'
510
- isNotNullable: FoundEmbededFunctionJoinTableRelation['SetofOptions']['isNotNullable'] extends true
511
- ? true
512
- : FoundEmbededFunctionJoinTableRelation['SetofOptions']['isSetofReturn'] extends true
513
- ? false
514
- : true
515
- isSetofReturn: FoundEmbededFunctionJoinTableRelation['SetofOptions']['isSetofReturn']
516
- }
517
- direction: 'forward'
518
- from: CurrentTableOrView
519
- type: 'found-by-embeded-function'
520
- }
521
- : SelectQueryError<`could not find the relation between ${CurrentTableOrView} and ${Field['name']}`>
522
- : SelectQueryError<`could not find the relation between ${CurrentTableOrView} and ${Field['name']}`>
523
- : SelectQueryError<`could not find the relation between ${CurrentTableOrView} and ${Field['name']}`>
524
- : SelectQueryError<`could not find the relation between ${CurrentTableOrView} and ${Field['name']}`>
525
- : SelectQueryError<`could not find the relation between ${CurrentTableOrView} and ${Field['name']}`>
526
- : SelectQueryError<`could not find the relation between ${CurrentTableOrView} and ${Field['name']}`>
527
-
528
- /**
529
- * Given a CurrentTableOrView, finds all join tables to this relation.
530
- * For example, if products and categories are linked via product_categories table:
531
- *
532
- * @example Find join table relationship
533
- * Given:
534
- * - CurrentTableView = 'products'
535
- * - FieldName = "categories"
536
- *
537
- * It should return this relationship from product_categories:
538
- * {
539
- * foreignKeyName: "product_categories_category_id_fkey",
540
- * columns: ["category_id"],
541
- * isOneToOne: false,
542
- * referencedRelation: "categories",
543
- * referencedColumns: ["id"]
544
- * }
545
- */
546
- type ResolveJoinTableRelationship<
547
- Schema extends GenericSchema,
548
- CurrentTableOrView extends keyof TablesAndViews<Schema> & string,
549
- FieldName extends string,
550
- > = {
551
- [TableName in keyof TablesAndViews<Schema>]: DeduplicateRelationships<
552
- TablesAndViews<Schema>[TableName]['Relationships']
553
- > extends readonly (infer Rel)[]
554
- ? Rel extends { referencedRelation: CurrentTableOrView }
555
- ? DeduplicateRelationships<
556
- TablesAndViews<Schema>[TableName]['Relationships']
557
- > extends readonly (infer OtherRel)[]
558
- ? OtherRel extends { referencedRelation: FieldName }
559
- ? OtherRel
560
- : never
561
- : never
562
- : never
563
- : never
564
- }[keyof TablesAndViews<Schema>]
565
-
566
- type ResolveEmbededFunctionJoinTableRelationship<
567
- Schema extends GenericSchema,
568
- CurrentTableOrView extends keyof TablesAndViews<Schema> & string,
569
- FieldName extends string,
570
- > =
571
- FindMatchingFunctionBySetofFrom<
572
- Schema['Functions'][FieldName],
573
- CurrentTableOrView
574
- > extends infer Fn
575
- ? Fn extends GenericFunction
576
- ? Fn
577
- : false
578
- : false
579
-
580
- export type FindJoinTableRelationship<
581
- Schema extends GenericSchema,
582
- CurrentTableOrView extends keyof TablesAndViews<Schema> & string,
583
- FieldName extends string,
584
- > =
585
- ResolveJoinTableRelationship<Schema, CurrentTableOrView, FieldName> extends infer Result
586
- ? [Result] extends [never]
587
- ? false
588
- : Result
589
- : never
590
- /**
591
- * Finds a matching relationship based on the FieldNode's name and optional hint.
592
- */
593
- export type FindFieldMatchingRelationships<
594
- Schema extends GenericSchema,
595
- Relationships extends GenericRelationship[],
596
- Field extends Ast.FieldNode,
597
- > = Field extends { hint: string }
598
- ? FindMatchingHintTableRelationships<
599
- Schema,
600
- Relationships,
601
- Field['hint'],
602
- Field['name']
603
- > extends GenericRelationship
604
- ? FindMatchingHintTableRelationships<Schema, Relationships, Field['hint'], Field['name']> & {
605
- branch: 'found-in-table-via-hint'
606
- hint: Field['hint']
607
- }
608
- : FindMatchingHintViewRelationships<
609
- Schema,
610
- Relationships,
611
- Field['hint'],
612
- Field['name']
613
- > extends GenericRelationship
614
- ? FindMatchingHintViewRelationships<Schema, Relationships, Field['hint'], Field['name']> & {
615
- branch: 'found-in-view-via-hint'
616
- hint: Field['hint']
617
- }
618
- : SelectQueryError<'Failed to find matching relation via hint'>
619
- : FindMatchingTableRelationships<Schema, Relationships, Field['name']> extends GenericRelationship
620
- ? FindMatchingTableRelationships<Schema, Relationships, Field['name']> & {
621
- branch: 'found-in-table-via-name'
622
- name: Field['name']
623
- }
624
- : FindMatchingViewRelationships<
625
- Schema,
626
- Relationships,
627
- Field['name']
628
- > extends GenericRelationship
629
- ? FindMatchingViewRelationships<Schema, Relationships, Field['name']> & {
630
- branch: 'found-in-view-via-name'
631
- name: Field['name']
632
- }
633
- : SelectQueryError<'Failed to find matching relation via name'>
634
-
635
- export type JsonPathToAccessor<Path extends string> = Path extends `${infer P1}->${infer P2}`
636
- ? P2 extends `>${infer Rest}` // Handle ->> operator
637
- ? JsonPathToAccessor<`${P1}.${Rest}`>
638
- : P2 extends string // Handle -> operator
639
- ? JsonPathToAccessor<`${P1}.${P2}`>
640
- : Path
641
- : Path extends `>${infer Rest}` // Clean up any remaining > characters
642
- ? JsonPathToAccessor<Rest>
643
- : Path extends `${infer P1}::${infer _}` // Handle type casting
644
- ? JsonPathToAccessor<P1>
645
- : Path extends `${infer P1}${')' | ','}${infer _}` // Handle closing parenthesis and comma
646
- ? P1
647
- : Path
648
-
649
- export type JsonPathToType<T, Path extends string> = Path extends ''
650
- ? T
651
- : ContainsNull<T> extends true
652
- ? JsonPathToType<Exclude<T, null>, Path>
653
- : Path extends `${infer Key}.${infer Rest}`
654
- ? Key extends keyof T
655
- ? JsonPathToType<T[Key], Rest>
656
- : never
657
- : Path extends keyof T
658
- ? T[Path]
659
- : never
660
-
661
- export type IsStringUnion<T> = string extends T
662
- ? false
663
- : T extends string
664
- ? [T] extends [never]
665
- ? false
666
- : true
667
- : false
668
-
669
- type MatchingFunctionBySetofFrom<
670
- Fn extends GenericFunction,
671
- TableName extends string,
672
- > = Fn['SetofOptions'] extends GenericSetofOption
673
- ? TableName extends Fn['SetofOptions']['from']
674
- ? Fn
675
- : never
676
- : false
677
-
678
- type FindMatchingFunctionBySetofFrom<
679
- FnUnion,
680
- TableName extends string,
681
- > = FnUnion extends infer Fn extends GenericFunction
682
- ? MatchingFunctionBySetofFrom<Fn, TableName>
683
- : false
684
-
685
- type ComputedField<
686
- Schema extends GenericSchema,
687
- RelationName extends keyof TablesAndViews<Schema>,
688
- FieldName extends keyof TablesAndViews<Schema>[RelationName]['Row'],
689
- > = FieldName extends keyof Schema['Functions']
690
- ? [Schema['Functions'][FieldName]['Args']] extends [never]
691
- ? never
692
- : Schema['Functions'][FieldName] extends {
693
- Args: { '': TablesAndViews<Schema>[RelationName]['Row'] }
694
- Returns: any
695
- }
696
- ? FieldName
697
- : never
698
- : never
699
-
700
- // Given a relation name (Table or View) extract all the "computed fields" based on the Row
701
- // object, and the schema functions definitions
702
- export type GetComputedFields<
703
- Schema extends GenericSchema,
704
- RelationName extends keyof TablesAndViews<Schema>,
705
- > = {
706
- [K in keyof TablesAndViews<Schema>[RelationName]['Row']]: ComputedField<Schema, RelationName, K>
707
- }[keyof TablesAndViews<Schema>[RelationName]['Row']]