@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,135 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- // E2E réel auth (stack live) — Task 8
3
- //
4
- // Valide en conditions réelles les correctifs des Tasks 3/5/6 contre le
5
- // déploiement Docker local (gateway :8080, control :8090). Le JWKS de ce
6
- // déploiement est vide (`{"keys":[]}`) et les tokens sont HS256 : `getClaims`
7
- // doit donc exercer le chemin FALLBACK `getUser()` (pas la vérif locale
8
- // JWKS/WebCrypto), cf. `AuthService.getClaims` (packages/auth/src/AuthService.ts).
9
- //
10
- // Flux (une seule séquence, en `it` unique) :
11
- // 1. signUp + signInWithPassword (anon key) → token + user.id.
12
- // 2. getClaims() sur le vrai token → fallback getUser → claims.sub === user.id.
13
- // 3. generateLink admin : type 'magic' → { link, token } ; type 'magiclink'
14
- // (invalide) → error.
15
- // 4. updatePassword → ancien token révoqué (401 brut) + store vidé +
16
- // événement SIGNED_OUT émis via onAuthStateChange.
17
- // 5. getUserStats admin → total >= 1.
18
- // 6. Nettoyage en `finally` (authAdmin.deleteUser, best-effort).
19
- //
20
- // Gaté par RUN_E2E + credentials — squelette calqué sur
21
- // `packages/aurabase/tests/db-types-e2e.test.ts` (env-based, describe.runIf,
22
- // cleanup en finally, timeout long).
23
- // ---------------------------------------------------------------------------
24
-
25
- import { describe, it, expect } from 'vitest'
26
- import { createClient, createAdminClient } from '../src/index'
27
- import type { AuraResponse, AuthChangePayload } from '../src/index'
28
-
29
- const URL = process.env.AURA_E2E_URL
30
- const PROJECT = process.env.AURA_E2E_PROJECT
31
- const ANON = process.env.AURA_E2E_ANON_KEY
32
- const SERVICE = process.env.AURA_E2E_SERVICE_KEY
33
- const RUN = Boolean(process.env.RUN_E2E && URL && PROJECT && ANON && SERVICE)
34
-
35
- /** Statuts transitoires observés sur la stack locale (timeout gateway→service sous charge). */
36
- const TRANSIENT_STATUS = new Set([408, 429, 502, 503, 504])
37
-
38
- /** Rejoue une requête tant qu'elle renvoie un statut transitoire (408/429/502/503/504), borné. */
39
- async function retryTransient<T>(fn: () => Promise<AuraResponse<T>>): Promise<AuraResponse<T>> {
40
- let res = await fn()
41
- for (let i = 0; i < 10 && res.error && TRANSIENT_STATUS.has(res.error.status); i++) {
42
- await new Promise((r) => setTimeout(r, 1000))
43
- res = await fn()
44
- }
45
- return res
46
- }
47
-
48
- describe.runIf(RUN)('auth E2E réel — getClaims fallback / generateLink / updatePassword / stats (stack live)', () => {
49
- it(
50
- 'register→login→getClaims(fallback HS256)→generateLink→updatePassword(révocation+SIGNED_OUT)→getUserStats',
51
- async () => {
52
- const client = createClient(URL!, PROJECT!, ANON!)
53
- const admin = createAdminClient(URL!, PROJECT!, SERVICE!)
54
- const suffix = process.env.AURA_E2E_SUFFIX ?? Math.random().toString(36).slice(2, 8)
55
- const email = `auth-e2e-${suffix}@aurabase.dev`
56
- const password = 'EndUserPassword123!'
57
-
58
- let userId: string | null = null
59
- try {
60
- // -- 1. register + login (anon key) -----------------------------------
61
- const signUpRes = await retryTransient(() => client.auth.signUp({ email, password }))
62
- expect(signUpRes.error).toBeNull()
63
-
64
- const loginRes = await retryTransient(() => client.auth.signInWithPassword({ email, password }))
65
- expect(loginRes.error).toBeNull()
66
- const loginData = loginRes.data as { access_token: string; user: { id: string } }
67
- expect(loginData.access_token).toBeTruthy()
68
- userId = loginData.user.id
69
- expect(userId).toBeTruthy()
70
-
71
- const { accessToken: tokenAfterLogin } = await client.auth.getSession()
72
- expect(tokenAfterLogin).toBe(loginData.access_token)
73
-
74
- // -- 2. getClaims — déploiement HS256 / JWKS vide → chemin fallback getUser --
75
- const claimsRes = await client.auth.getClaims()
76
- expect(claimsRes.error).toBeNull()
77
- expect(claimsRes.data?.claims.sub).toBe(userId)
78
- expect(claimsRes.data?.header.alg).toBe('HS256')
79
-
80
- // -- 3. generateLink (admin) -------------------------------------------
81
- const magicRes = await admin.authAdmin.generateLink(userId!, 'magic')
82
- expect(magicRes.error).toBeNull()
83
- expect(magicRes.data).not.toBeNull()
84
- expect(magicRes.data).toHaveProperty('link')
85
- expect(magicRes.data).toHaveProperty('token')
86
-
87
- const invalidRes = await admin.authAdmin.generateLink(
88
- userId!,
89
- // Type invalide volontaire — vérifie le rejet serveur (400), pas le typage TS.
90
- 'magiclink' as unknown as 'magic',
91
- )
92
- expect(invalidRes.error).not.toBeNull()
93
-
94
- // -- 4. updatePassword : ancien token révoqué + SIGNED_OUT émis --------
95
- const events: AuthChangePayload[] = []
96
- const sub = client.auth.onAuthStateChange((payload) => {
97
- events.push(payload)
98
- })
99
-
100
- const oldToken = (await client.auth.getSession()).accessToken
101
- expect(oldToken).toBeTruthy()
102
-
103
- const updateRes = await client.auth.updatePassword('NewPassword456!', password)
104
- expect(updateRes.error).toBeNull()
105
-
106
- const sessionAfterUpdate = await client.auth.getSession()
107
- expect(sessionAfterUpdate.accessToken).toBeNull()
108
- expect(events.some((e) => e.event === 'SIGNED_OUT')).toBe(true)
109
-
110
- sub.unsubscribe()
111
-
112
- // Requête BRUTE avec l'ancien token (le client courant a le store vidé) :
113
- // preuve que le backend a bien révoqué la session, pas seulement le SDK local.
114
- const rawRes = await fetch(`${URL}/v1/auth/${PROJECT}/user`, {
115
- headers: { Authorization: `Bearer ${oldToken}`, apikey: ANON! },
116
- })
117
- expect(rawRes.status).toBe(401)
118
-
119
- // -- 5. getUserStats (admin) -------------------------------------------
120
- const statsRes = await admin.authAdmin.getUserStats()
121
- expect(statsRes.error).toBeNull()
122
- expect(statsRes.data?.total).toBeGreaterThanOrEqual(1)
123
- } finally {
124
- if (userId) {
125
- try {
126
- await admin.authAdmin.deleteUser(userId)
127
- } catch {
128
- // best-effort cleanup
129
- }
130
- }
131
- }
132
- },
133
- 120_000,
134
- )
135
- })
@@ -1,206 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- // Tests des correctifs Lot 4 — durcissement SDK auth (E17/E18/E19/E20/E21)
3
- // ---------------------------------------------------------------------------
4
-
5
- import { describe, it, expect, beforeEach, afterEach } from 'vitest'
6
- import { AuraClient } from '../src/AuraClient'
7
- import { createAdminClient } from '../src/index'
8
- import { isAuraError, AuraError } from '@aurabase/core'
9
- import { FetchMock, fakeTokenPair, fakeUser, validJwt, expiredJwt } from './mocks'
10
-
11
- const BASE = 'http://localhost:8080'
12
- const PROJECT = 'test-project'
13
- const PREFIX = `${BASE}/v1/auth/${PROJECT}`
14
-
15
- function jsonResponse(body: unknown, status: number): Response {
16
- return new Response(body !== undefined ? JSON.stringify(body) : null, {
17
- status,
18
- headers: { 'Content-Type': 'application/json' },
19
- })
20
- }
21
-
22
- // ---------------------------------------------------------------------------
23
- // E18 — le contrat d'erreur retourne de vraies instances AuraError
24
- // ---------------------------------------------------------------------------
25
-
26
- describe('E18 — error est une vraie instance AuraError', () => {
27
- let fetchMock: FetchMock
28
- let client: AuraClient
29
-
30
- beforeEach(() => {
31
- fetchMock = new FetchMock()
32
- fetchMock.init()
33
- client = new AuraClient(BASE, PROJECT, { auth: { persistSession: false } })
34
- })
35
- afterEach(() => {
36
- fetchMock.restore()
37
- fetchMock.clearMocks()
38
- })
39
-
40
- it('expose status / isUnauthorized / isAuraError sur une erreur HTTP', async () => {
41
- fetchMock.on({
42
- method: 'POST',
43
- url: `${PREFIX}/login`,
44
- replyCode: 401,
45
- replyBody: { error: { code: 'invalid', message: 'Identifiants invalides' } },
46
- })
47
- const { error } = await client.auth.signInWithPassword({ email: 'a@b.com', password: 'x' })
48
- expect(error).not.toBeNull()
49
- expect(isAuraError(error)).toBe(true)
50
- expect(error).toBeInstanceOf(AuraError)
51
- expect((error as AuraError).status).toBe(401)
52
- expect((error as AuraError).isUnauthorized).toBe(true)
53
- expect((error as AuraError).code).toBe('invalid')
54
- })
55
-
56
- it('erreur synthétique (no_session) est aussi une vraie instance', async () => {
57
- // pas de refresh token en mémoire → refreshSession renvoie no_session
58
- const { error } = await client.auth.refreshSession()
59
- expect(isAuraError(error)).toBe(true)
60
- expect((error as AuraError).code).toBe('no_session')
61
- expect((error as AuraError).status).toBe(0)
62
- })
63
- })
64
-
65
- // ---------------------------------------------------------------------------
66
- // E17 — single-flight unifié : refresh concurrent = un seul POST /refresh
67
- // ---------------------------------------------------------------------------
68
-
69
- describe('E17 — single-flight du refresh', () => {
70
- let fetchMock: FetchMock
71
- let client: AuraClient
72
-
73
- beforeEach(() => {
74
- fetchMock = new FetchMock()
75
- fetchMock.init()
76
- client = new AuraClient(BASE, PROJECT, { auth: { persistSession: false } })
77
- })
78
- afterEach(() => {
79
- fetchMock.restore()
80
- fetchMock.clearMocks()
81
- })
82
-
83
- it('refreshSession + getUser concurrents → un seul appel /refresh', async () => {
84
- // token EXPIRÉ → getUser déclenche maybeRefresh, en même temps que refreshSession
85
- client.authStore.save(expiredJwt(), 'rt_1', fakeUser())
86
- fetchMock.on({ method: 'POST', url: `${PREFIX}/refresh`, replyCode: 200, replyBody: { data: fakeTokenPair() } })
87
- fetchMock.on({ method: 'GET', url: `${PREFIX}/user`, replyCode: 200, replyBody: { data: fakeUser() } })
88
-
89
- const [r1, r2] = await Promise.all([client.auth.refreshSession(), client.auth.getUser()])
90
-
91
- expect(r1.error).toBeNull()
92
- expect(r2.error).toBeNull()
93
- const refreshCalls = fetchMock.calls.filter((c) => c.url.endsWith('/refresh') && c.method === 'POST')
94
- expect(refreshCalls.length).toBe(1)
95
- })
96
- })
97
-
98
- // ---------------------------------------------------------------------------
99
- // E19 — retry réactif borné sur 401
100
- // ---------------------------------------------------------------------------
101
-
102
- describe('E19 — retry sur 401', () => {
103
- it('un 401 déclenche un refresh + un unique rejeu réussi', async () => {
104
- let userCalls = 0
105
- let refreshCalls = 0
106
- const fetchFn = (async (input: RequestInfo | URL): Promise<Response> => {
107
- const url = input.toString()
108
- if (url.endsWith('/refresh')) {
109
- refreshCalls++
110
- return jsonResponse({ data: fakeTokenPair() }, 200)
111
- }
112
- if (url.endsWith('/user')) {
113
- userCalls++
114
- return userCalls === 1
115
- ? jsonResponse({ error: { code: 'unauthorized', message: 'expired' } }, 401)
116
- : jsonResponse({ data: fakeUser() }, 200)
117
- }
118
- return jsonResponse({}, 200)
119
- }) as typeof globalThis.fetch
120
-
121
- const client = new AuraClient(BASE, PROJECT, { fetch: fetchFn, auth: { persistSession: false } })
122
- client.authStore.save(validJwt(), 'rt_1', fakeUser()) // token valide → pas de refresh proactif
123
-
124
- const res = await client.auth.getUser()
125
- expect(res.error).toBeNull()
126
- expect(res.data).not.toBeNull()
127
- expect(userCalls).toBe(2) // 401 puis rejeu 200
128
- expect(refreshCalls).toBe(1)
129
- })
130
-
131
- it('ne boucle pas si le rejeu échoue encore (borné à un essai)', async () => {
132
- let userCalls = 0
133
- const fetchFn = (async (input: RequestInfo | URL): Promise<Response> => {
134
- const url = input.toString()
135
- if (url.endsWith('/refresh')) return jsonResponse({ data: fakeTokenPair() }, 200)
136
- if (url.endsWith('/user')) {
137
- userCalls++
138
- return jsonResponse({ error: { code: 'unauthorized', message: 'nope' } }, 401)
139
- }
140
- return jsonResponse({}, 200)
141
- }) as typeof globalThis.fetch
142
-
143
- const client = new AuraClient(BASE, PROJECT, { fetch: fetchFn, auth: { persistSession: false } })
144
- client.authStore.save(validJwt(), 'rt_1', fakeUser())
145
-
146
- const res = await client.auth.getUser()
147
- expect((res.error as AuraError).status).toBe(401)
148
- expect(userCalls).toBe(2) // 1 essai + 1 rejeu, pas plus
149
- })
150
- })
151
-
152
- // ---------------------------------------------------------------------------
153
- // E20 — bus d'événements unique : refreshSession émet UN seul TOKEN_REFRESHED
154
- // ---------------------------------------------------------------------------
155
-
156
- describe('E20 — onAuthStateChange sans doublon', () => {
157
- let fetchMock: FetchMock
158
- let client: AuraClient
159
-
160
- beforeEach(() => {
161
- fetchMock = new FetchMock()
162
- fetchMock.init()
163
- client = new AuraClient(BASE, PROJECT, { auth: { persistSession: false } })
164
- })
165
- afterEach(() => {
166
- fetchMock.restore()
167
- fetchMock.clearMocks()
168
- })
169
-
170
- it('refreshSession émet exactement un TOKEN_REFRESHED (pas de SIGNED_IN en doublon)', async () => {
171
- client.authStore.save(validJwt(), 'rt_1', fakeUser())
172
- fetchMock.on({ method: 'POST', url: `${PREFIX}/refresh`, replyCode: 200, replyBody: { data: fakeTokenPair() } })
173
-
174
- const events: string[] = []
175
- const sub = client.auth.onAuthStateChange((p) => events.push(p.event))
176
- await new Promise((r) => queueMicrotask(() => r(null))) // laisser passer INITIAL_SESSION
177
- events.length = 0
178
-
179
- await client.auth.refreshSession()
180
- expect(events).toEqual(['TOKEN_REFRESHED'])
181
- sub.unsubscribe()
182
- })
183
- })
184
-
185
- // ---------------------------------------------------------------------------
186
- // E21 — client admin séparé, interdit côté navigateur
187
- // ---------------------------------------------------------------------------
188
-
189
- describe('E21 — createAdminClient', () => {
190
- it('lève une erreur si appelé dans un contexte navigateur', () => {
191
- const g = globalThis as { window?: unknown }
192
- const had = 'window' in g
193
- g.window = {} // simuler un navigateur
194
- try {
195
- expect(() => createAdminClient(BASE, PROJECT, 'aura_srole_x')).toThrow(/navigateur/)
196
- } finally {
197
- if (!had) delete g.window
198
- }
199
- })
200
-
201
- it("retourne un client en contexte serveur (pas de window)", () => {
202
- const admin = createAdminClient(BASE, PROJECT, 'aura_srole_x')
203
- expect(admin).toBeInstanceOf(AuraClient)
204
- expect(admin.apiKey).toBe('aura_srole_x')
205
- })
206
- })