@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,230 +0,0 @@
1
- import { BaseService } from '@aurabase/core'
2
- import type {
3
- AuraResponse,
4
- BatchSendResponse,
5
- Notification,
6
- NotificationAttempt,
7
- NotificationDeadLetter,
8
- NotificationEvent,
9
- NotificationProviderLog,
10
- NotificationQueueStats,
11
- NotificationRule,
12
- NotificationSettings,
13
- NotificationStats,
14
- NotificationTemplate,
15
- NotificationTemplatePreview,
16
- SendNotificationRequest,
17
- } from '@aurabase/core'
18
- import type { AuraClientLike } from '@aurabase/core'
19
-
20
- type NotificationChannel = 'email' | 'sms' | 'push' | 'webhook'
21
- type NotificationStatus = 'queued' | 'processing' | 'sent' | 'failed' | 'delivered' | 'expired' | 'dead_lettered'
22
- type CreateNotificationRuleRequest = {
23
- name: string
24
- trigger_type: string
25
- condition?: Record<string, unknown>
26
- template_id?: string | null
27
- channel: NotificationChannel
28
- recipient_expr: string
29
- delay_seconds?: number
30
- }
31
-
32
- export class NotificationsService extends BaseService {
33
- readonly admin: NotificationsAdminService
34
-
35
- constructor(client: AuraClientLike) {
36
- super(client)
37
- this.admin = new NotificationsAdminService(client)
38
- }
39
-
40
- private get prefix(): string {
41
- return `/v1/notifications/${this.client.projectId}`
42
- }
43
-
44
- // -- Send -------------------------------------------------------------------
45
-
46
- async send(
47
- channel: NotificationChannel,
48
- recipient: string,
49
- body: string,
50
- options?: {
51
- subject?: string
52
- templateId?: string
53
- variables?: Record<string, unknown>
54
- metadata?: Record<string, unknown>
55
- idempotencyKey?: string
56
- },
57
- ): Promise<AuraResponse<Notification>> {
58
- return this.request('POST', `${this.prefix}/send`, {
59
- channel,
60
- recipient,
61
- body,
62
- subject: options?.subject,
63
- template_id: options?.templateId,
64
- variables: options?.variables,
65
- metadata: options?.metadata,
66
- idempotency_key: options?.idempotencyKey,
67
- })
68
- }
69
-
70
- async sendBatch(items: SendNotificationRequest[]): Promise<AuraResponse<BatchSendResponse>> {
71
- return this.request('POST', `${this.prefix}/send/batch`, { items })
72
- }
73
-
74
- // -- Notification history ---------------------------------------------------
75
-
76
- async list(options?: {
77
- channel?: NotificationChannel
78
- status?: NotificationStatus
79
- search?: string
80
- sort?: 'created_at' | 'updated_at' | 'status'
81
- order?: 'asc' | 'desc'
82
- limit?: number
83
- offset?: number
84
- }): Promise<AuraResponse<Notification[]>> {
85
- const params = new URLSearchParams()
86
- if (options?.channel !== undefined) params.set('channel', options.channel)
87
- if (options?.status !== undefined) params.set('status', options.status)
88
- if (options?.search !== undefined) params.set('search', options.search)
89
- if (options?.sort !== undefined) params.set('sort', options.sort)
90
- if (options?.order !== undefined) params.set('order', options.order)
91
- if (options?.limit !== undefined) params.set('limit', String(options.limit))
92
- if (options?.offset !== undefined) params.set('offset', String(options.offset))
93
- const qs = params.toString()
94
- const sep = qs ? '?' : ''
95
- return this.request('GET', `${this.prefix}${sep}${qs}`)
96
- }
97
-
98
- async get(id: string): Promise<AuraResponse<Notification>> {
99
- return this.request('GET', `${this.prefix}/${id}`)
100
- }
101
-
102
- // -- Templates --------------------------------------------------------------
103
-
104
- async listTemplates(): Promise<AuraResponse<NotificationTemplate[]>> {
105
- return this.request('GET', `${this.prefix}/templates`)
106
- }
107
-
108
- async getTemplate(id: string): Promise<AuraResponse<NotificationTemplate>> {
109
- return this.request('GET', `${this.prefix}/templates/${id}`)
110
- }
111
-
112
- async createTemplate(
113
- template: Omit<NotificationTemplate, 'id' | 'created_at' | 'updated_at'>,
114
- ): Promise<AuraResponse<NotificationTemplate>> {
115
- return this.request('POST', `${this.prefix}/templates`, template)
116
- }
117
-
118
- async updateTemplate(
119
- id: string,
120
- updates: Partial<Omit<NotificationTemplate, 'id' | 'created_at' | 'updated_at'>>,
121
- ): Promise<AuraResponse<NotificationTemplate>> {
122
- return this.request('PATCH', `${this.prefix}/templates/${id}`, updates)
123
- }
124
-
125
- async deleteTemplate(id: string): Promise<AuraResponse<null>> {
126
- return this.request('DELETE', `${this.prefix}/templates/${id}`)
127
- }
128
- }
129
-
130
- export class NotificationsAdminService extends BaseService {
131
- constructor(client: AuraClientLike) {
132
- super(client)
133
- }
134
-
135
- private get prefix(): string {
136
- return `/v1/notifications/${this.client.projectId}`
137
- }
138
-
139
- private query(options?: Record<string, string | number | boolean | null | undefined>): string {
140
- const params = new URLSearchParams()
141
- for (const [key, value] of Object.entries(options ?? {})) {
142
- if (value !== undefined && value !== null && value !== '') params.set(key, String(value))
143
- }
144
- const qs = params.toString()
145
- return qs ? `?${qs}` : ''
146
- }
147
-
148
- async getSettings(): Promise<AuraResponse<NotificationSettings>> {
149
- return this.request('GET', `${this.prefix}/settings`)
150
- }
151
-
152
- async updateSettings(settings: Partial<NotificationSettings>): Promise<AuraResponse<NotificationSettings>> {
153
- return this.request('PATCH', `${this.prefix}/settings`, settings)
154
- }
155
-
156
- async getStats(options?: {
157
- window?: string
158
- channel?: NotificationChannel
159
- }): Promise<AuraResponse<NotificationStats>> {
160
- return this.request('GET', `${this.prefix}/stats${this.query(options)}`)
161
- }
162
-
163
- async getQueue(): Promise<AuraResponse<NotificationQueueStats>> {
164
- return this.request('GET', `${this.prefix}/queue`)
165
- }
166
-
167
- async listAttempts(notificationId: string): Promise<AuraResponse<NotificationAttempt[]>> {
168
- return this.request('GET', `${this.prefix}/${notificationId}/attempts`)
169
- }
170
-
171
- async listDeadLetters(options?: {
172
- channel?: NotificationChannel
173
- search?: string
174
- limit?: number
175
- offset?: number
176
- }): Promise<AuraResponse<NotificationDeadLetter[]>> {
177
- return this.request('GET', `${this.prefix}/dead-letters${this.query(options)}`)
178
- }
179
-
180
- async retryDeadLetter(id: string): Promise<AuraResponse<Notification>> {
181
- return this.request('POST', `${this.prefix}/dead-letters/${id}/retry`)
182
- }
183
-
184
- async listEvents(options?: {
185
- status?: 'received' | 'matched' | 'ignored' | 'failed' | 'enqueued'
186
- limit?: number
187
- offset?: number
188
- }): Promise<AuraResponse<NotificationEvent[]>> {
189
- return this.request('GET', `${this.prefix}/events${this.query(options)}`)
190
- }
191
-
192
- async listProviderLogs(options?: {
193
- channel?: NotificationChannel
194
- status?: string
195
- limit?: number
196
- offset?: number
197
- }): Promise<AuraResponse<NotificationProviderLog[]>> {
198
- return this.request('GET', `${this.prefix}/providers/logs${this.query(options)}`)
199
- }
200
-
201
- async previewTemplate(
202
- id: string,
203
- variables: Record<string, unknown>,
204
- ): Promise<AuraResponse<NotificationTemplatePreview>> {
205
- return this.request('POST', `${this.prefix}/templates/${id}/preview`, variables)
206
- }
207
-
208
- async listRules(): Promise<AuraResponse<NotificationRule[]>> {
209
- return this.request('GET', `${this.prefix}/rules`)
210
- }
211
-
212
- async createRule(rule: CreateNotificationRuleRequest): Promise<AuraResponse<NotificationRule>> {
213
- return this.request('POST', `${this.prefix}/rules`, rule)
214
- }
215
-
216
- async getRule(id: string): Promise<AuraResponse<NotificationRule>> {
217
- return this.request('GET', `${this.prefix}/rules/${id}`)
218
- }
219
-
220
- async updateRule(
221
- id: string,
222
- updates: Partial<Omit<NotificationRule, 'id' | 'project_id' | 'created_at' | 'updated_at'>>,
223
- ): Promise<AuraResponse<NotificationRule>> {
224
- return this.request('PATCH', `${this.prefix}/rules/${id}`, updates)
225
- }
226
-
227
- async deleteRule(id: string): Promise<AuraResponse<null>> {
228
- return this.request('DELETE', `${this.prefix}/rules/${id}`)
229
- }
230
- }
@@ -1,19 +0,0 @@
1
- export { NotificationsService, NotificationsAdminService } from './NotificationsService'
2
-
3
- // Types publics (utilisables en consommant `@aurabase/notifications` seul).
4
- export type {
5
- AuraResponse,
6
- Notification,
7
- NotificationTemplate,
8
- SendNotificationRequest,
9
- BatchSendResponse,
10
- NotificationAttempt,
11
- NotificationDeadLetter,
12
- NotificationEvent,
13
- NotificationProviderLog,
14
- NotificationQueueStats,
15
- NotificationRule,
16
- NotificationSettings,
17
- NotificationStats,
18
- NotificationTemplatePreview,
19
- } from '@aurabase/core'
@@ -1,5 +0,0 @@
1
- {
2
- "extends": "../../tsconfig.base.json",
3
- "compilerOptions": { "outDir": "dist", "rootDir": "src" },
4
- "include": ["src"]
5
- }
@@ -1,11 +0,0 @@
1
- import { defineConfig } from 'tsup'
2
-
3
- export default defineConfig({
4
- entry: ['src/index.ts'],
5
- format: ['cjs', 'esm'],
6
- dts: true,
7
- splitting: false,
8
- clean: true,
9
- treeshake: true,
10
- minify: false,
11
- })
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Aurabase
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,183 +0,0 @@
1
- # @aurabase/realtime
2
-
3
- Service temps réel du SDK Aurabase : une connexion WebSocket multiplexée sur des channels (`postgres_changes`, `broadcast`, `presence`).
4
-
5
- ![npm](https://img.shields.io/npm/v/@aurabase/realtime) ![license](https://img.shields.io/badge/license-MIT-blue)
6
-
7
- > Pre-release — pas encore publié sur npm.
8
-
9
- Fait partie du SDK **[aurabase](../aurabase)**. Installé automatiquement avec `aurabase` ; ce package est publié séparément pour un usage ciblé / tree-shaking.
10
-
11
- ## Installation
12
-
13
- ```bash
14
- npm i @aurabase/realtime
15
- ```
16
-
17
- > Dépend de `@aurabase/core`. Déjà inclus si vous utilisez le package `aurabase` — cette installation ciblée sert à composer votre propre client ou à limiter la taille du bundle. Nécessite un runtime avec `WebSocket` global (navigateur, ou Node avec un polyfill).
18
-
19
- ## Usage
20
-
21
- `RealtimeService` est exposé par le client principal sous `aura.realtime`, et `aura.channel(name)` est un raccourci pour `aura.realtime.channel(name)`.
22
-
23
- ```ts
24
- import { createClient } from 'aurabase'
25
-
26
- const aura = createClient('http://localhost:8080', 'my-project', 'aura_anon_xxx')
27
- ```
28
-
29
- ### Connexion
30
-
31
- ```ts
32
- const unsubscribe = aura.realtime.onStateChange((state) => {
33
- console.log('realtime state:', state) // 'disconnected' | 'connecting' | 'connected' | 'reconnecting'
34
- })
35
-
36
- aura.realtime.connect()
37
- console.log(aura.realtime.connectionState)
38
-
39
- // Désactive la reconnexion auto (backoff + jitter), ou borne le nombre de tentatives.
40
- aura.realtime.setAutoReconnect(true, 5)
41
-
42
- // Pousse un nouveau token sur la connexion existante (sans reconnexion).
43
- aura.realtime.refreshToken('new-access-token')
44
- ```
45
-
46
- Un heartbeat applicatif (`ping`) est envoyé toutes les **25 secondes** via un Worker dédié, pour éviter le throttling des timers par les navigateurs en arrière-plan. La reconnexion automatique utilise un backoff exponentiel avec jitter.
47
-
48
- ### `postgres_changes`
49
-
50
- ```ts
51
- const channel = aura.channel('db:public.posts')
52
- .on('postgres_changes', { event: 'INSERT', schema: 'public', table: 'posts' }, (payload) => {
53
- console.log('insert:', payload)
54
- })
55
- .subscribe((status, err) => {
56
- console.log(status, err) // 'SUBSCRIBED' | 'CLOSED' | 'CHANNEL_ERROR' | 'TIMED_OUT'
57
- })
58
- ```
59
-
60
- ## Filtres de colonne (`postgres_changes`)
61
-
62
- `postgres_changes` accepte un champ `filter` (syntaxe PostgREST/Supabase : `"column=operator.value"`) pour ne recevoir que les events dont la ligne matche la condition :
63
-
64
- ```ts
65
- aura.channel('room')
66
- .on('postgres_changes', {
67
- event: 'INSERT',
68
- schema: 'public',
69
- table: 'messages',
70
- filter: 'room_id=eq.42',
71
- }, (e) => console.log(e))
72
- .subscribe()
73
- ```
74
-
75
- Opérateurs supportés : `eq, neq, lt, lte, gt, gte, in, like, ilike, is, match, imatch, isdistinct`.
76
-
77
- ```ts
78
- // Comparaison numérique.
79
- { event: '*', schema: 'public', table: 'items', filter: 'qty=gt.5' }
80
-
81
- // Appartenance à un ensemble — les virgules internes à `in.(...)` ne
82
- // séparent PAS des conditions AND (voir plus bas).
83
- { event: '*', schema: 'public', table: 'orders', filter: 'status=in.(open,pending)' }
84
-
85
- // Motif SQL LIKE (% / _).
86
- { event: '*', schema: 'public', table: 'users', filter: 'name=like.jo%' }
87
-
88
- // Négation — préfixe `not.` devant l'opérateur.
89
- { event: '*', schema: 'public', table: 'orders', filter: 'status=not.eq.done' }
90
-
91
- // AND par virgules — chaque condition séparée par `,` (hors `in.(...)`).
92
- { event: '*', schema: 'public', table: 'items', filter: 'room_id=eq.42,qty=gt.5' }
93
- ```
94
-
95
- À savoir :
96
-
97
- - **Le serveur `aura-realtime` est autoritaire** : il applique déjà le filtre avant d'envoyer l'event sur le socket. Le client réapplique la même logique en second rideau (defense-in-depth) — il ne peut que sur-filtrer, jamais laisser passer un event que le serveur aurait dû exclure.
98
- - **Fail-closed** : une condition non parsable (syntaxe invalide, opérateur inconnu, trop de valeurs `in`, pattern `match`/`imatch` trop long) exclut l'event plutôt que de le laisser passer.
99
- - **DELETE** : le filtre est évalué sur **l'ancienne ligne** (`old_record`), pas sur la nouvelle (qui n'existe plus). Les colonnes disponibles dans `old_record` dépendent du `REPLICA IDENTITY` de la table (`DEFAULT` : seule la clé primaire ; `FULL` : toutes les colonnes) — un filtre sur une colonne absente de `old_record` échoue à matcher (résultat non évaluable ⇒ exclusion, jamais inversée par `not.`), **sauf `is.null` et `isdistinct`** qui traitent une colonne absente comme `NULL` et peuvent donc matcher même si la colonne n'est pas présente dans `old_record`.
100
- - `schema` (et `table`) doivent correspondre exactement au schéma/table réels tels qu'envoyés par le serveur dans l'event — un `schema` incorrect exclut silencieusement tous les events de ce channel.
101
-
102
- ### Broadcast
103
-
104
- ```ts
105
- const room = aura.realtime.channel('room-1', { broadcast: { ack: true, self: true } })
106
-
107
- room
108
- .on('broadcast', { event: 'cursor-pos' }, (payload) => {
109
- console.log(payload)
110
- })
111
- .subscribe()
112
-
113
- // 'ok' | 'timeout' | 'error' — résout à l'ACK serveur si broadcast.ack est activé sur le channel.
114
- const status = await room.send({ type: 'broadcast', event: 'cursor-pos', payload: { x: 100, y: 200 } })
115
- ```
116
-
117
- #### Broadcast HTTP (sans WebSocket)
118
-
119
- Émet un broadcast via REST, sans connexion WebSocket ouverte — utile côté serveur/edge.
120
-
121
- ```ts
122
- // POST /v1/realtime/{projectId}/broadcast — pas besoin de connect().
123
- const { error } = await aura.realtime.httpBroadcast('room-1', 'cursor-pos', { x: 10, y: 20 })
124
- if (error) console.error(error) // 4xx / rate-limit surfacés proprement
125
- ```
126
-
127
- Le nom de canal est préfixé par le projet automatiquement s'il ne l'est pas déjà.
128
-
129
- ### Canaux privés (`setAuth`)
130
-
131
- Les canaux privés (`{ private: true }`) sont autorisés par les policies RLS côté serveur à
132
- partir du JWT courant. Fixez/rafraîchissez ce token via `setAuth()` **avant** de vous abonner :
133
-
134
- ```ts
135
- // Utilise le token fourni (ou, sans argument, reprend client.authStore.token).
136
- aura.realtime.setAuth(session.access_token)
137
-
138
- const secret = aura.realtime
139
- .channel('secret-room', { private: true })
140
- .on('broadcast', { event: 'msg' }, console.log)
141
- .subscribe((status, err) => {
142
- if (status === 'CHANNEL_ERROR') console.error('Refusé par la policy RLS', err)
143
- })
144
- ```
145
-
146
- `setAuth()` propage `{ type: 'access_token' }` sur une connexion ouverte (dédupliqué, sans
147
- reconnexion). Un token non autorisé par la policy provoque un `CHANNEL_ERROR` à la souscription.
148
-
149
- ### Presence
150
-
151
- ```ts
152
- const lobby = aura.channel('room-1', { config: { presence: { key: 'user-1' } } })
153
-
154
- lobby
155
- .on('presence', { event: 'sync' }, () => {
156
- console.log(lobby.presenceState())
157
- })
158
- .on('presence', { event: 'join' }, console.log)
159
- .on('presence', { event: 'leave' }, console.log)
160
- .subscribe()
161
-
162
- await lobby.track({ online_at: new Date().toISOString() })
163
- await lobby.untrack()
164
- ```
165
-
166
- ### Nettoyage
167
-
168
- ```ts
169
- aura.realtime.getChannels()
170
- aura.realtime.removeChannel('room-1')
171
- aura.realtime.removeAllChannels()
172
- aura.realtime.disconnect()
173
- unsubscribe()
174
- ```
175
-
176
- ## Limitations
177
-
178
- - Pas de limitation de débit configurable (`eventsPerSecond`) sur le broadcast (côté client).
179
- - La reconnexion réabonne les channels existants mais ne garantit pas la livraison des événements manqués pendant la coupure (au-delà du rejeu par `since_id` quand le serveur le supporte).
180
-
181
- ## Documentation
182
-
183
- Référence complète du SDK (tous les services, types partagés, SSR) : [README racine](../../README.md).