@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,153 +0,0 @@
1
- import { describe, it, expect, afterEach, vi } from 'vitest'
2
- import { AuthService } from '../src/AuthService'
3
- import { BaseAuthStore } from '@aurabase/core'
4
- import type { AuraClientLike, TokenPair, User, AuthEvent } from '@aurabase/core'
5
-
6
- function fakeUser(id = 'u1'): User {
7
- return { id, email: 't@e.com', phone: null, role: 'authenticated', email_verified: true, is_banned: false, is_anonymous: false, mfa_enabled: false, user_metadata: {}, app_metadata: {}, created_at: '2025-01-01T00:00:00Z' }
8
- }
9
- function tokenPair(): TokenPair {
10
- return { access_token: 'AT', refresh_token: 'RT', token_type: 'bearer', expires_in: 3600, user: fakeUser() }
11
- }
12
-
13
- afterEach(() => { vi.restoreAllMocks() })
14
-
15
- function make() {
16
- const seen: Array<{ url: string; method: string; body: unknown }> = []
17
- const responders: Record<string, (body: unknown) => Response> = {}
18
- const client: AuraClientLike = {
19
- baseUrl: 'http://x', projectId: 'p', apiKey: 'k', authStore: new BaseAuthStore(),
20
- fetchFn: (async (url: string, init: RequestInit) => {
21
- const u = String(url)
22
- let body: unknown = undefined
23
- try { body = init.body ? JSON.parse(String(init.body)) : undefined } catch { /* FormData etc. */ }
24
- seen.push({ url: u, method: String(init.method), body })
25
- const key = Object.keys(responders).find((k) => u.includes(k))
26
- if (key) return responders[key]!(body)
27
- return new Response(JSON.stringify({ data: tokenPair() }), { status: 200, headers: { 'Content-Type': 'application/json' } })
28
- }) as unknown as typeof globalThis.fetch,
29
- auth: null as unknown as AuraClientLike['auth'],
30
- }
31
- const svc = new AuthService(client, { autoRefresh: false, persistSession: false })
32
- ;(client as { auth: unknown }).auth = svc
33
- const events: AuthEvent[] = []
34
- svc.onAuthStateChange((p) => events.push(p.event))
35
- return { svc, client, seen, responders, events }
36
- }
37
- const okUser = () => new Response(JSON.stringify({ data: fakeUser() }), { status: 200, headers: { 'Content-Type': 'application/json' } })
38
-
39
- describe('auth.verifyOtp — façade unifiée', () => {
40
- it('signup → POST /verify-email {token}, save session + SIGNED_IN', async () => {
41
- const { svc, seen, client, events } = make()
42
- const { data } = await svc.verifyOtp({ type: 'signup', token: 'TK' })
43
- expect((data as TokenPair).access_token).toBe('AT')
44
- const c = seen.find((s) => s.url.includes('/verify-email'))!
45
- expect(c.method).toBe('POST')
46
- expect(c.body).toEqual({ token: 'TK' })
47
- expect(client.authStore.token).toBe('AT')
48
- expect(events).toContain('SIGNED_IN')
49
- })
50
-
51
- it('magiclink → POST /magic-link/verify {token}', async () => {
52
- const { svc, seen } = make()
53
- await svc.verifyOtp({ type: 'magiclink', token: 'ML' })
54
- const c = seen.find((s) => s.url.includes('/magic-link/verify'))!
55
- expect(c.body).toEqual({ token: 'ML' })
56
- })
57
-
58
- it('email → POST /email-otp/verify {email, code}', async () => {
59
- const { svc, seen } = make()
60
- await svc.verifyOtp({ type: 'email', email: 'a@b.c', token: '123456' })
61
- const c = seen.find((s) => s.url.includes('/email-otp/verify'))!
62
- expect(c.body).toEqual({ email: 'a@b.c', code: '123456' })
63
- })
64
-
65
- it('sms → POST /sms/verify {phone, code}', async () => {
66
- const { svc, seen } = make()
67
- await svc.verifyOtp({ type: 'sms', phone: '+33600', token: '999' })
68
- const c = seen.find((s) => s.url.includes('/sms/verify'))!
69
- expect(c.body).toEqual({ phone: '+33600', code: '999' })
70
- })
71
-
72
- it('recovery → POST /reset-password {token, password}, SIGNED_IN', async () => {
73
- const { svc, seen, events } = make()
74
- await svc.verifyOtp({ type: 'recovery', token: 'RCV', password: 'newpass' })
75
- const c = seen.find((s) => s.url.includes('/reset-password'))!
76
- expect(c.body).toEqual({ token: 'RCV', password: 'newpass' })
77
- expect(events).toContain('SIGNED_IN')
78
- })
79
-
80
- it('email_change → POST /user/confirm-email-change {token}, émet USER_UPDATED', async () => {
81
- const { svc, seen, responders, events } = make()
82
- responders['/user/confirm-email-change'] = okUser
83
- const { data } = await svc.verifyOtp({ type: 'email_change', token: 'EC' })
84
- expect((data as User).id).toBe('u1')
85
- const c = seen.find((s) => s.url.includes('/user/confirm-email-change'))!
86
- expect(c.body).toEqual({ token: 'EC' })
87
- expect(events).toContain('USER_UPDATED')
88
- expect(events).not.toContain('SIGNED_IN')
89
- })
90
-
91
- it('recovery sans password → missing_password SANS appel réseau', async () => {
92
- const { svc, seen } = make()
93
- // Cast : on simule un appelant JS qui omet le password (le type l'exige).
94
- const { error } = await svc.verifyOtp({ type: 'recovery', token: 'RCV' } as unknown as { type: 'recovery'; token: string; password: string })
95
- expect(error?.code).toBe('missing_password')
96
- expect(seen.length).toBe(0)
97
- })
98
-
99
- it('invite → otp_type_unsupported SANS appel réseau', async () => {
100
- const { svc, seen } = make()
101
- const { error } = await svc.verifyOtp({ type: 'invite', token: 'X' })
102
- expect(error?.code).toBe('otp_type_unsupported')
103
- expect(seen.length).toBe(0)
104
- })
105
-
106
- it('phone_change → otp_type_unsupported SANS appel réseau', async () => {
107
- const { svc, seen } = make()
108
- const { error } = await svc.verifyOtp({ type: 'phone_change', phone: '+1', token: 'X' })
109
- expect(error?.code).toBe('otp_type_unsupported')
110
- expect(seen.length).toBe(0)
111
- })
112
- })
113
-
114
- describe('auth — rétrocompat des méthodes historiques (délégation à verifyOtp)', () => {
115
- it('verifyEmail(token) → POST /verify-email {token} (inchangé)', async () => {
116
- const { svc, seen } = make()
117
- await svc.verifyEmail('TK')
118
- const c = seen.find((s) => s.url.includes('/verify-email'))!
119
- expect(c.method).toBe('POST')
120
- expect(c.body).toEqual({ token: 'TK' })
121
- })
122
- it('verifyEmailOtp(email, code) → POST /email-otp/verify {email, code}', async () => {
123
- const { svc, seen } = make()
124
- await svc.verifyEmailOtp('a@b.c', '111')
125
- const c = seen.find((s) => s.url.includes('/email-otp/verify'))!
126
- expect(c.body).toEqual({ email: 'a@b.c', code: '111' })
127
- })
128
- it('verifySmsOtp(phone, code) → POST /sms/verify {phone, code}', async () => {
129
- const { svc, seen } = make()
130
- await svc.verifySmsOtp('+33', '222')
131
- const c = seen.find((s) => s.url.includes('/sms/verify'))!
132
- expect(c.body).toEqual({ phone: '+33', code: '222' })
133
- })
134
- it('verifyMagicLink(token) → POST /magic-link/verify {token}', async () => {
135
- const { svc, seen } = make()
136
- await svc.verifyMagicLink('ML')
137
- const c = seen.find((s) => s.url.includes('/magic-link/verify'))!
138
- expect(c.body).toEqual({ token: 'ML' })
139
- })
140
- it('resetPassword(token, pass) → POST /reset-password {token, password}', async () => {
141
- const { svc, seen } = make()
142
- await svc.resetPassword('RCV', 'np')
143
- const c = seen.find((s) => s.url.includes('/reset-password'))!
144
- expect(c.body).toEqual({ token: 'RCV', password: 'np' })
145
- })
146
- it('confirmEmailChange(token) → POST /user/confirm-email-change {token}', async () => {
147
- const { svc, seen, responders } = make()
148
- responders['/user/confirm-email-change'] = okUser
149
- await svc.confirmEmailChange('EC')
150
- const c = seen.find((s) => s.url.includes('/user/confirm-email-change'))!
151
- expect(c.body).toEqual({ token: 'EC' })
152
- })
153
- })
@@ -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,132 +0,0 @@
1
- # @aurabase/core
2
-
3
- Cœur d'infrastructure du SDK Aurabase : type de réponse (`AuraResponse`), erreurs structurées (`AuraError`), stores d'authentification, couche fetch résiliente et le contrat `AuraClientLike`/`BaseService` pour composer un service ou un client alternatif.
4
-
5
- ![npm](https://img.shields.io/npm/v/@aurabase/core) ![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 comme dépendance transitive de tous les autres packages `@aurabase/*` ; ce package n'est utile en installation directe que pour écrire une extension ou un client alternatif (voir Usage).
10
-
11
- Ce README s'adresse aux **auteurs d'extensions** (service additionnel, client SSR maison) — pas aux utilisateurs finaux d'une application, qui doivent passer par le méta-package [`aurabase`](../aurabase).
12
-
13
- ## Installation
14
-
15
- ```bash
16
- npm i @aurabase/core
17
- ```
18
-
19
- > `@aurabase/core` n'a aucune dépendance runtime Aurabase — c'est la fondation. Si vous utilisez `aurabase` ou n'importe quel package `@aurabase/*` (auth, db, storage, realtime, functions, ai, notifications), il est déjà présent en tant que dépendance transitive.
20
-
21
- ## Usage
22
-
23
- ### `AuraResponse` / `AuraError`
24
-
25
- Toutes les méthodes de service renvoient une `Promise<AuraResponse<T>>` — jamais un throw sur une erreur métier/HTTP.
26
-
27
- ```ts
28
- import type { AuraResponse } from '@aurabase/core'
29
-
30
- interface Widget {
31
- id: string
32
- name: string
33
- }
34
-
35
- function handle(res: AuraResponse<Widget>) {
36
- if (res.error) {
37
- if (res.error.isNotFound) console.warn('introuvable')
38
- else if (res.error.isRateLimited) console.warn('rate limited')
39
- else console.error(res.error.status, res.error.code, res.error.message)
40
- return
41
- }
42
- console.log(res.data!.name)
43
- }
44
- ```
45
-
46
- `isAuraError()` détecte une instance `AuraError` même à travers une frontière de bundle/realm différente (deux copies de `@aurabase/core` chargées séparément) :
47
-
48
- ```ts
49
- import { isAuraError } from '@aurabase/core'
50
-
51
- function report(err: unknown) {
52
- if (isAuraError(err)) {
53
- console.error(err.code, err.status)
54
- }
55
- }
56
- ```
57
-
58
- ### Construire un service (`BaseService` + `AuraClientLike`)
59
-
60
- `BaseService` est la classe de base utilisée par tous les services officiels (`AuthService`, `DatabaseService`, `FunctionsService`, ...). `AuraClientLike` est un contrat structurel : n'importe quel objet qui le satisfait (le `AuraClient` concret du méta-package, ou un client maison) peut être passé à un service.
61
-
62
- ```ts
63
- import { BaseService } from '@aurabase/core'
64
- import type { AuraClientLike, AuraResponse } from '@aurabase/core'
65
-
66
- interface Widget {
67
- id: string
68
- name: string
69
- }
70
-
71
- class WidgetsService extends BaseService {
72
- constructor(client: AuraClientLike) {
73
- super(client)
74
- }
75
-
76
- private get prefix(): string {
77
- return `/v1/widgets/${this.client.projectId}`
78
- }
79
-
80
- async list(): Promise<AuraResponse<Widget[]>> {
81
- return this.request('GET', this.prefix)
82
- }
83
-
84
- async get(id: string): Promise<AuraResponse<Widget>> {
85
- return this.request('GET', `${this.prefix}/${id}`)
86
- }
87
- }
88
- ```
89
-
90
- `this.request(method, path, body?, options?)` délègue à la couche fetch partagée (`fetchWithAuth`) : injection `apikey`/`Authorization`, refresh proactif du token, retry transitoire et dé-wrapping `{data, meta}` — un service maison en bénéficie gratuitement sans en réimplémenter la logique.
91
-
92
- ### Stores d'authentification (dont SSR)
93
-
94
- `BaseAuthStore` est en mémoire (event-emitter `onChange`, stockage clé/valeur générique pour le PKCE `code_verifier`). `LocalAuthStore` l'étend avec persistance `localStorage` et des helpers cookie pour le rendu serveur.
95
-
96
- ```ts
97
- import { LocalAuthStore } from '@aurabase/core'
98
-
99
- function hydrateFromCookieHeader(cookieHeader: string) {
100
- const store = new LocalAuthStore('aurabase_auth')
101
- store.loadFromCookie(cookieHeader) // hydrate depuis l'en-tête Cookie de la requête entrante
102
- return store
103
- }
104
-
105
- const store = hydrateFromCookieHeader('aurabase_auth=%7B%22token%22%3Anull%7D')
106
-
107
- // Après une mutation de session, sérialiser l'état courant en Set-Cookie.
108
- const setCookieValue = store.exportToCookie({ path: '/', secure: true, sameSite: 'Lax', httpOnly: true })
109
- ```
110
-
111
- `store.persistent` indique si le store survit à un redirect pleine page (`false` pour `BaseAuthStore`, `true` pour `LocalAuthStore`) — c'est ce flag que le flux OAuth PKCE utilise pour décider s'il peut stocker un `code_verifier` de façon fiable.
112
-
113
- ### Résilience de la couche fetch (interne, consommée automatiquement)
114
-
115
- `BaseService.request()` passe par un pipeline de fetch partagé qui gère, sans configuration de votre part :
116
-
117
- - retry transitoire (full-jitter) sur `GET`/`HEAD` pour les statuts `408/429/502/503/504`, avec respect d'un `Retry-After` plafonné ;
118
- - timeout par tentative (chaque rejeu repart avec un budget neuf) ;
119
- - refresh de token single-flight (une seule requête de refresh en vol par client, dédupliquée) avec un commit-guard anti-race si une déconnexion/reconnexion s'intercale pendant l'attente.
120
-
121
- Cette couche (`fetchWithAuth`, `refreshOnce`) est exportée mais reste un détail d'implémentation consommé par `BaseService` : son usage direct n'est pas le chemin recommandé et son contrat n'est pas garanti stable entre versions mineures.
122
-
123
- ## Limitations
124
-
125
- - Package d'infrastructure : pas d'API « produit ». Pour construire une application, utilisez le méta-package [`aurabase`](../aurabase), qui assemble tous les services derrière un seul client.
126
- - `BaseAuthStore` est en mémoire — l'état est perdu au reload ; `LocalAuthStore` nécessite un `localStorage` disponible (sinon retombe silencieusement sur le comportement en mémoire, sauf via les helpers cookie explicites).
127
- - `AuraClientLike` est un contrat minimal (`baseUrl`, `projectId`, `apiKey`, `fetchFn`, `authStore`, `auth.refreshSession`, `retryConfig?`, `requestTimeoutMs?`) : un client maison doit l'implémenter intégralement pour rester compatible avec `BaseService`.
128
- - La couche fetch bas niveau (`fetchWithAuth`/`refreshOnce`) est un détail d'implémentation interne, pas une API publique stabilisée.
129
-
130
- ## Documentation
131
-
132
- Référence complète du SDK (tous les services, types partagés, SSR) : [README racine](../../README.md).