@aurabase/aurabase-js 0.3.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.
- package/.changeset/config.json +11 -0
- package/CHANGELOG.md +30 -0
- package/LICENSE +21 -0
- package/README.md +833 -0
- package/package.json +90 -0
- package/packages/ai/LICENSE +21 -0
- package/packages/ai/README.md +106 -0
- package/packages/ai/dist/index.cjs +229 -0
- package/packages/ai/dist/index.d.cts +139 -0
- package/packages/ai/dist/index.d.ts +139 -0
- package/packages/ai/dist/index.js +226 -0
- package/packages/ai/node_modules/.bin/esbuild +19 -0
- package/packages/ai/node_modules/.bin/tsc +22 -0
- package/packages/ai/node_modules/.bin/tsserver +22 -0
- package/packages/ai/node_modules/.bin/tsup +22 -0
- package/packages/ai/node_modules/.bin/tsup-node +22 -0
- package/packages/ai/node_modules/.bin/vite +22 -0
- package/packages/ai/node_modules/.bin/vitest +22 -0
- package/packages/ai/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/packages/ai/package.json +61 -0
- package/packages/ai/src/AiService.ts +226 -0
- package/packages/ai/src/index.ts +18 -0
- package/packages/ai/src/sse.ts +141 -0
- package/packages/ai/src/types.ts +30 -0
- package/packages/ai/tests/chat-stream.test.ts +151 -0
- package/packages/ai/tests/rag-namespaces.test.ts +54 -0
- package/packages/ai/tests/sse.test.ts +69 -0
- package/packages/ai/tsconfig.json +5 -0
- package/packages/ai/tsup.config.ts +11 -0
- package/packages/aurabase/LICENSE +21 -0
- package/packages/aurabase/README.md +64 -0
- package/packages/aurabase/dist/AuraClient-DAtDbfPB.d.cts +77 -0
- package/packages/aurabase/dist/AuraClient-DAtDbfPB.d.ts +77 -0
- package/packages/aurabase/dist/index.cjs +237 -0
- package/packages/aurabase/dist/index.d.cts +46 -0
- package/packages/aurabase/dist/index.d.ts +46 -0
- package/packages/aurabase/dist/index.js +177 -0
- package/packages/aurabase/dist/ssr.cjs +224 -0
- package/packages/aurabase/dist/ssr.d.cts +65 -0
- package/packages/aurabase/dist/ssr.d.ts +65 -0
- package/packages/aurabase/dist/ssr.js +214 -0
- package/packages/aurabase/node_modules/.bin/esbuild +19 -0
- package/packages/aurabase/node_modules/.bin/tsc +22 -0
- package/packages/aurabase/node_modules/.bin/tsserver +22 -0
- package/packages/aurabase/node_modules/.bin/tsup +22 -0
- package/packages/aurabase/node_modules/.bin/tsup-node +22 -0
- package/packages/aurabase/node_modules/.bin/vite +22 -0
- package/packages/aurabase/node_modules/.bin/vitest +22 -0
- package/packages/aurabase/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/packages/aurabase/package.json +80 -0
- package/packages/aurabase/src/AuraClient.ts +237 -0
- package/packages/aurabase/src/index.ts +152 -0
- package/packages/aurabase/src/ssr.ts +156 -0
- package/packages/aurabase/tests/ai-streaming-rag-e2e.test.ts +82 -0
- package/packages/aurabase/tests/ai.test.ts +111 -0
- package/packages/aurabase/tests/auth-admin.test.ts +515 -0
- package/packages/aurabase/tests/auth-e2e.test.ts +135 -0
- package/packages/aurabase/tests/auth-hardening.test.ts +206 -0
- package/packages/aurabase/tests/auth.test.ts +947 -0
- package/packages/aurabase/tests/database.test.ts +230 -0
- package/packages/aurabase/tests/db-types-e2e.test.ts +217 -0
- package/packages/aurabase/tests/dispose.test.ts +23 -0
- package/packages/aurabase/tests/foreign-token.e2e.test.ts +129 -0
- package/packages/aurabase/tests/functions.test.ts +107 -0
- package/packages/aurabase/tests/integration.test.ts +413 -0
- package/packages/aurabase/tests/live-production-validation.js +241 -0
- package/packages/aurabase/tests/live-sdk-production-validation.js +293 -0
- package/packages/aurabase/tests/mocks.ts +139 -0
- package/packages/aurabase/tests/notifications.test.ts +314 -0
- package/packages/aurabase/tests/observability-backup.test.ts +186 -0
- package/packages/aurabase/tests/observability-hook.test.ts +130 -0
- package/packages/aurabase/tests/production-robustness.test.ts +268 -0
- package/packages/aurabase/tests/public-api-surface.test.ts +53 -0
- package/packages/aurabase/tests/query-builder.test.ts +329 -0
- package/packages/aurabase/tests/readme-smoke-e2e.test.ts +231 -0
- package/packages/aurabase/tests/realtime-filter-e2e.test.ts +344 -0
- package/packages/aurabase/tests/refresh-locks.test.ts +210 -0
- package/packages/aurabase/tests/retry-option.test.ts +17 -0
- package/packages/aurabase/tests/rpc-e2e.test.ts +254 -0
- package/packages/aurabase/tests/rs256-local-e2e.test.ts +114 -0
- package/packages/aurabase/tests/rt-alias-public-e2e.test.ts +235 -0
- package/packages/aurabase/tests/rt-http-broadcast-e2e.test.ts +124 -0
- package/packages/aurabase/tests/service-role-guard.test.ts +99 -0
- package/packages/aurabase/tests/ssr.test.ts +91 -0
- package/packages/aurabase/tests/storage-backend-e2e.test.ts +481 -0
- package/packages/aurabase/tests/storage-sdk-parity-e2e.test.ts +104 -0
- package/packages/aurabase/tests/storage-transform-e2e.test.ts +684 -0
- package/packages/aurabase/tests/storage.test.ts +55 -0
- package/packages/aurabase/tests/types/client-generic.test-d.ts +79 -0
- package/packages/aurabase/tests/types/docs-snippets.test-d.ts +571 -0
- package/packages/aurabase/tests/types/error-code.test-d.ts +53 -0
- package/packages/aurabase/tsconfig.json +5 -0
- package/packages/aurabase/tsconfig.test-d.json +5 -0
- package/packages/aurabase/tsup.config.ts +11 -0
- package/packages/aurabase/vitest.config.ts +16 -0
- package/packages/aurabase/vitest.e2e.config.ts +9 -0
- package/packages/auth/LICENSE +21 -0
- package/packages/auth/README.md +215 -0
- package/packages/auth/dist/index.cjs +1175 -0
- package/packages/auth/dist/index.d.cts +397 -0
- package/packages/auth/dist/index.d.ts +397 -0
- package/packages/auth/dist/index.js +1170 -0
- package/packages/auth/node_modules/.bin/esbuild +19 -0
- package/packages/auth/node_modules/.bin/tsc +22 -0
- package/packages/auth/node_modules/.bin/tsserver +22 -0
- package/packages/auth/node_modules/.bin/tsup +22 -0
- package/packages/auth/node_modules/.bin/tsup-node +22 -0
- package/packages/auth/node_modules/.bin/vite +22 -0
- package/packages/auth/node_modules/.bin/vitest +22 -0
- package/packages/auth/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/packages/auth/package.json +61 -0
- package/packages/auth/src/AuthAdminService.ts +149 -0
- package/packages/auth/src/AuthService.ts +1166 -0
- package/packages/auth/src/SessionManager.ts +92 -0
- package/packages/auth/src/index.ts +17 -0
- package/packages/auth/src/jwks.ts +337 -0
- package/packages/auth/src/pkce.ts +27 -0
- package/packages/auth/src/types.ts +89 -0
- package/packages/auth/tests/auth-lifecycle.test.ts +149 -0
- package/packages/auth/tests/detect-session.test.ts +361 -0
- package/packages/auth/tests/getclaims.test.ts +780 -0
- package/packages/auth/tests/is-mfa-challenge.test.ts +27 -0
- package/packages/auth/tests/password-recovery.test.ts +124 -0
- package/packages/auth/tests/pkce.test.ts +192 -0
- package/packages/auth/tests/session-manager.test.ts +103 -0
- package/packages/auth/tests/set-session.test.ts +139 -0
- package/packages/auth/tests/verify-otp.test.ts +153 -0
- package/packages/auth/tsconfig.json +5 -0
- package/packages/auth/tsup.config.ts +11 -0
- package/packages/core/LICENSE +21 -0
- package/packages/core/README.md +132 -0
- package/packages/core/dist/index.cjs +695 -0
- package/packages/core/dist/index.d.cts +1137 -0
- package/packages/core/dist/index.d.ts +1137 -0
- package/packages/core/dist/index.js +673 -0
- package/packages/core/node_modules/.bin/esbuild +22 -0
- package/packages/core/node_modules/.bin/tsc +22 -0
- package/packages/core/node_modules/.bin/tsserver +22 -0
- package/packages/core/node_modules/.bin/tsup +22 -0
- package/packages/core/node_modules/.bin/tsup-node +22 -0
- package/packages/core/node_modules/.bin/vite +22 -0
- package/packages/core/node_modules/.bin/vitest +22 -0
- package/packages/core/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/packages/core/package.json +57 -0
- package/packages/core/src/AuraError.ts +89 -0
- package/packages/core/src/BaseService.ts +44 -0
- package/packages/core/src/client.ts +34 -0
- package/packages/core/src/cookie-utils.ts +42 -0
- package/packages/core/src/fetch.ts +435 -0
- package/packages/core/src/index.ts +22 -0
- package/packages/core/src/retry.ts +63 -0
- package/packages/core/src/serialize.ts +6 -0
- package/packages/core/src/stores/BaseAuthStore.ts +164 -0
- package/packages/core/src/stores/LocalAuthStore.ts +199 -0
- package/packages/core/src/types.ts +1042 -0
- package/packages/core/tests/auth-store.test.ts +300 -0
- package/packages/core/tests/error-code.test.ts +61 -0
- package/packages/core/tests/error.test.ts +24 -0
- package/packages/core/tests/fetch.test.ts +286 -0
- package/packages/core/tests/mocks.ts +139 -0
- package/packages/core/tests/observability.test.ts +86 -0
- package/packages/core/tests/refresh-hardening.test.ts +164 -0
- package/packages/core/tests/refresh-observability.test.ts +111 -0
- package/packages/core/tests/retry.test.ts +106 -0
- package/packages/core/tests/serialize.test.ts +12 -0
- package/packages/core/tests/timeout.test.ts +79 -0
- package/packages/core/tsconfig.json +5 -0
- package/packages/core/tsup.config.ts +11 -0
- package/packages/db/LICENSE +21 -0
- package/packages/db/README.md +152 -0
- package/packages/db/VENDORED.md +93 -0
- package/packages/db/dist/index.cjs +544 -0
- package/packages/db/dist/index.d.cts +1111 -0
- package/packages/db/dist/index.d.ts +1111 -0
- package/packages/db/dist/index.js +541 -0
- package/packages/db/node_modules/.bin/esbuild +19 -0
- package/packages/db/node_modules/.bin/tsc +22 -0
- package/packages/db/node_modules/.bin/tsserver +22 -0
- package/packages/db/node_modules/.bin/tsup +22 -0
- package/packages/db/node_modules/.bin/tsup-node +22 -0
- package/packages/db/node_modules/.bin/vite +22 -0
- package/packages/db/node_modules/.bin/vitest +22 -0
- package/packages/db/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/packages/db/package.json +62 -0
- package/packages/db/src/DatabaseService.ts +170 -0
- package/packages/db/src/QueryBuilder.ts +830 -0
- package/packages/db/src/index.ts +2 -0
- package/packages/db/src/pgrst-types/common/common.ts +86 -0
- package/packages/db/src/pgrst-types/common/rpc.ts +151 -0
- package/packages/db/src/pgrst-types/feature-flags.ts +20 -0
- package/packages/db/src/pgrst-types/types.ts +134 -0
- package/packages/db/src/select-query-parser/parser.ts +479 -0
- package/packages/db/src/select-query-parser/result.ts +553 -0
- package/packages/db/src/select-query-parser/types.ts +132 -0
- package/packages/db/src/select-query-parser/utils.ts +707 -0
- package/packages/db/tests/filters.test.ts +81 -0
- package/packages/db/tests/mutations-filtered.e2e.test.ts +132 -0
- package/packages/db/tests/mutations-filtered.test.ts +188 -0
- package/packages/db/tests/order.test.ts +45 -0
- package/packages/db/tests/rpc.test.ts +41 -0
- package/packages/db/tests/scale/build-large-schema.ts +94 -0
- package/packages/db/tests/scale/scale-compile.test.ts +167 -0
- package/packages/db/tests/schema.test.ts +77 -0
- package/packages/db/tests/single-accept.e2e.test.ts +123 -0
- package/packages/db/tests/single.test.ts +211 -0
- package/packages/db/tests/types/filters.test-d.ts +52 -0
- package/packages/db/tests/types/fixtures.ts +40 -0
- package/packages/db/tests/types/from-views.test-d.ts +18 -0
- package/packages/db/tests/types/mutations.test-d.ts +23 -0
- package/packages/db/tests/types/rpc.test-d.ts +60 -0
- package/packages/db/tests/types/schema-shape.test-d.ts +8 -0
- package/packages/db/tests/types/select-inference.test-d.ts +38 -0
- package/packages/db/tests/vendored/fixtures.ts +83 -0
- package/packages/db/tests/vendored/get-result.test-d.ts +75 -0
- package/packages/db/tsconfig.json +5 -0
- package/packages/db/tsconfig.test-d.json +5 -0
- package/packages/db/tsup.config.ts +11 -0
- package/packages/db/vitest.config.ts +8 -0
- package/packages/functions/LICENSE +21 -0
- package/packages/functions/README.md +96 -0
- package/packages/functions/dist/index.cjs +173 -0
- package/packages/functions/dist/index.d.cts +81 -0
- package/packages/functions/dist/index.d.ts +81 -0
- package/packages/functions/dist/index.js +168 -0
- package/packages/functions/node_modules/.bin/esbuild +19 -0
- package/packages/functions/node_modules/.bin/tsc +22 -0
- package/packages/functions/node_modules/.bin/tsserver +22 -0
- package/packages/functions/node_modules/.bin/tsup +22 -0
- package/packages/functions/node_modules/.bin/tsup-node +22 -0
- package/packages/functions/node_modules/.bin/vite +22 -0
- package/packages/functions/node_modules/.bin/vitest +22 -0
- package/packages/functions/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/packages/functions/package.json +60 -0
- package/packages/functions/src/FunctionsService.ts +188 -0
- package/packages/functions/src/errors.ts +70 -0
- package/packages/functions/src/index.ts +6 -0
- package/packages/functions/tests/invoke.test.ts +97 -0
- package/packages/functions/tests/response-type-errors.test.ts +135 -0
- package/packages/functions/tsconfig.json +5 -0
- package/packages/functions/tsup.config.ts +11 -0
- package/packages/gen/LICENSE +21 -0
- package/packages/gen/README.md +84 -0
- package/packages/gen/dist/cli.cjs +334 -0
- package/packages/gen/dist/cli.d.cts +1 -0
- package/packages/gen/dist/cli.d.ts +1 -0
- package/packages/gen/dist/cli.js +332 -0
- package/packages/gen/dist/index.cjs +257 -0
- package/packages/gen/dist/index.d.cts +12 -0
- package/packages/gen/dist/index.d.ts +12 -0
- package/packages/gen/dist/index.js +255 -0
- package/packages/gen/node_modules/.bin/esbuild +19 -0
- package/packages/gen/node_modules/.bin/tsc +22 -0
- package/packages/gen/node_modules/.bin/tsserver +22 -0
- package/packages/gen/node_modules/.bin/tsup +22 -0
- package/packages/gen/node_modules/.bin/tsup-node +22 -0
- package/packages/gen/node_modules/.bin/vite +22 -0
- package/packages/gen/node_modules/.bin/vitest +22 -0
- package/packages/gen/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/packages/gen/package.json +66 -0
- package/packages/gen/src/cli.ts +67 -0
- package/packages/gen/src/generate.ts +0 -0
- package/packages/gen/src/index.ts +2 -0
- package/packages/gen/tests/compile.test.ts +213 -0
- package/packages/gen/tests/e2e.test.ts +130 -0
- package/packages/gen/tests/generate.test.ts +396 -0
- package/packages/gen/tsconfig.json +5 -0
- package/packages/gen/tsup.config.ts +11 -0
- package/packages/notifications/LICENSE +21 -0
- package/packages/notifications/README.md +134 -0
- package/packages/notifications/dist/index.cjs +128 -0
- package/packages/notifications/dist/index.d.cts +81 -0
- package/packages/notifications/dist/index.d.ts +81 -0
- package/packages/notifications/dist/index.js +125 -0
- package/packages/notifications/node_modules/.bin/esbuild +19 -0
- package/packages/notifications/node_modules/.bin/tsc +22 -0
- package/packages/notifications/node_modules/.bin/tsserver +22 -0
- package/packages/notifications/node_modules/.bin/tsup +22 -0
- package/packages/notifications/node_modules/.bin/tsup-node +22 -0
- package/packages/notifications/node_modules/.bin/vite +22 -0
- package/packages/notifications/node_modules/.bin/vitest +22 -0
- package/packages/notifications/package.json +60 -0
- package/packages/notifications/src/NotificationsService.ts +230 -0
- package/packages/notifications/src/index.ts +19 -0
- package/packages/notifications/tsconfig.json +5 -0
- package/packages/notifications/tsup.config.ts +11 -0
- package/packages/realtime/LICENSE +21 -0
- package/packages/realtime/README.md +183 -0
- package/packages/realtime/dist/index.cjs +977 -0
- package/packages/realtime/dist/index.d.cts +259 -0
- package/packages/realtime/dist/index.d.ts +259 -0
- package/packages/realtime/dist/index.js +973 -0
- package/packages/realtime/node_modules/.bin/esbuild +19 -0
- package/packages/realtime/node_modules/.bin/tsc +22 -0
- package/packages/realtime/node_modules/.bin/tsserver +22 -0
- package/packages/realtime/node_modules/.bin/tsup +22 -0
- package/packages/realtime/node_modules/.bin/tsup-node +22 -0
- package/packages/realtime/node_modules/.bin/vite +22 -0
- package/packages/realtime/node_modules/.bin/vitest +22 -0
- package/packages/realtime/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/packages/realtime/package.json +60 -0
- package/packages/realtime/src/AuraChannel.ts +485 -0
- package/packages/realtime/src/HeartbeatManager.ts +73 -0
- package/packages/realtime/src/RealtimeService.ts +505 -0
- package/packages/realtime/src/columnFilter.ts +301 -0
- package/packages/realtime/src/index.ts +4 -0
- package/packages/realtime/tests/ack-routing.test.ts +81 -0
- package/packages/realtime/tests/column-filter.test.ts +144 -0
- package/packages/realtime/tests/dispatch.test.ts +191 -0
- package/packages/realtime/tests/heartbeat.test.ts +67 -0
- package/packages/realtime/tests/http-broadcast.test.ts +68 -0
- package/packages/realtime/tests/realtime-token.test.ts +43 -0
- package/packages/realtime/tests/reconnect-race.test.ts +149 -0
- package/packages/realtime/tests/ref-id.test.ts +34 -0
- package/packages/realtime/tests/set-auth.test.ts +70 -0
- package/packages/realtime/tsconfig.json +5 -0
- package/packages/realtime/tsup.config.ts +11 -0
- package/packages/storage/LICENSE +21 -0
- package/packages/storage/README.md +141 -0
- package/packages/storage/dist/index.cjs +333 -0
- package/packages/storage/dist/index.d.cts +185 -0
- package/packages/storage/dist/index.d.ts +185 -0
- package/packages/storage/dist/index.js +329 -0
- package/packages/storage/node_modules/.bin/esbuild +19 -0
- package/packages/storage/node_modules/.bin/tsc +22 -0
- package/packages/storage/node_modules/.bin/tsserver +22 -0
- package/packages/storage/node_modules/.bin/tsup +22 -0
- package/packages/storage/node_modules/.bin/tsup-node +22 -0
- package/packages/storage/node_modules/.bin/vite +22 -0
- package/packages/storage/node_modules/.bin/vitest +22 -0
- package/packages/storage/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/packages/storage/package.json +60 -0
- package/packages/storage/src/DownloadBuilder.ts +60 -0
- package/packages/storage/src/StorageService.ts +323 -0
- package/packages/storage/src/index.ts +2 -0
- package/packages/storage/src/path.ts +35 -0
- package/packages/storage/src/transform.ts +15 -0
- package/packages/storage/tests/download.test.ts +64 -0
- package/packages/storage/tests/parity.test.ts +154 -0
- package/packages/storage/tests/path.test.ts +87 -0
- package/packages/storage/tests/transform.test.ts +79 -0
- package/packages/storage/tsconfig.json +5 -0
- package/packages/storage/tsup.config.ts +11 -0
- package/pnpm-workspace.yaml +24 -0
- package/tsconfig.base.json +15 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest'
|
|
2
|
+
import { parseSSE } from '../src/sse'
|
|
3
|
+
|
|
4
|
+
/** Construit un ReadableStream<Uint8Array> à partir de fragments texte arbitraires. */
|
|
5
|
+
function streamOf(chunks: string[]): ReadableStream<Uint8Array> {
|
|
6
|
+
const enc = new TextEncoder()
|
|
7
|
+
let i = 0
|
|
8
|
+
return new ReadableStream<Uint8Array>({
|
|
9
|
+
pull(controller) {
|
|
10
|
+
if (i < chunks.length) controller.enqueue(enc.encode(chunks[i++]))
|
|
11
|
+
else controller.close()
|
|
12
|
+
},
|
|
13
|
+
})
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
async function collect(stream: ReadableStream<Uint8Array>) {
|
|
17
|
+
const out: Array<{ event: string; data: string }> = []
|
|
18
|
+
for await (const msg of parseSSE(stream)) out.push(msg)
|
|
19
|
+
return out
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
describe('parseSSE', () => {
|
|
23
|
+
it('parse un event simple (event + data)', async () => {
|
|
24
|
+
const got = await collect(streamOf(['event: delta\ndata: hello\n\n']))
|
|
25
|
+
expect(got).toEqual([{ event: 'delta', data: 'hello' }])
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
it('event scindé sur deux chunks (trame partielle)', async () => {
|
|
29
|
+
// La coupure tombe au milieu du champ data.
|
|
30
|
+
const got = await collect(streamOf(['event: delta\ndata: hel', 'lo\n\n']))
|
|
31
|
+
expect(got).toEqual([{ event: 'delta', data: 'hello' }])
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
it('plusieurs data: par event → jointes par \\n', async () => {
|
|
35
|
+
const got = await collect(streamOf(['event: delta\ndata: line1\ndata: line2\n\n']))
|
|
36
|
+
expect(got).toEqual([{ event: 'delta', data: 'line1\nline2' }])
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
it('plusieurs events dans un même chunk', async () => {
|
|
40
|
+
const got = await collect(
|
|
41
|
+
streamOf(['event: delta\ndata: a\n\nevent: delta\ndata: b\n\nevent: done\ndata: [DONE]\n\n']),
|
|
42
|
+
)
|
|
43
|
+
expect(got).toEqual([
|
|
44
|
+
{ event: 'delta', data: 'a' },
|
|
45
|
+
{ event: 'delta', data: 'b' },
|
|
46
|
+
{ event: 'done', data: '[DONE]' },
|
|
47
|
+
])
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
it('ignore les lignes keep-alive (commentaires « : … »)', async () => {
|
|
51
|
+
const got = await collect(streamOf([': keep-alive ping\n\nevent: delta\ndata: x\n\n']))
|
|
52
|
+
expect(got).toEqual([{ event: 'delta', data: 'x' }])
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
it('event: done est reconnu et livré', async () => {
|
|
56
|
+
const got = await collect(streamOf(['event: done\ndata: [DONE]\n\n']))
|
|
57
|
+
expect(got.at(-1)).toEqual({ event: 'done', data: '[DONE]' })
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
it('tolère les fins de ligne CRLF', async () => {
|
|
61
|
+
const got = await collect(streamOf(['event: delta\r\ndata: crlf\r\n\r\n']))
|
|
62
|
+
expect(got).toEqual([{ event: 'delta', data: 'crlf' }])
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
it('event final sans ligne vide terminale est tout de même livré', async () => {
|
|
66
|
+
const got = await collect(streamOf(['event: delta\ndata: tail']))
|
|
67
|
+
expect(got).toEqual([{ event: 'delta', data: 'tail' }])
|
|
68
|
+
})
|
|
69
|
+
})
|
|
@@ -0,0 +1,21 @@
|
|
|
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.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# aurabase
|
|
2
|
+
|
|
3
|
+
Client JavaScript/TypeScript officiel d'Aurabase : point d'entrée principal du SDK, agrégeant les 8 packages de service (`@aurabase/*`) derrière `createClient`/`createAdminClient` et l'export `aurabase/ssr`.
|
|
4
|
+
|
|
5
|
+
 
|
|
6
|
+
|
|
7
|
+
> Pre-release — pas encore publié sur npm.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm i aurabase
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Rôle
|
|
16
|
+
|
|
17
|
+
Ce package ne réimplémente aucune logique de service : il compose `AuthService`, `DatabaseService`, `StorageService`, `RealtimeService`, `FunctionsService`, `AiService` et `NotificationsService` (chacun dans son propre package `@aurabase/*`) derrière un seul client.
|
|
18
|
+
|
|
19
|
+
- `createClient(baseUrl, projectId, apiKey, options?)` — client applicatif standard.
|
|
20
|
+
- `createAdminClient(baseUrl, projectId, serviceRoleKey, options?)` — client serveur avec `authAdmin` (clé `service_role`, jamais côté navigateur).
|
|
21
|
+
- `aurabase/ssr` — `createServerClient`/`createBrowserClient` pour Next.js et frameworks SSR (cookies, session partagée serveur/navigateur).
|
|
22
|
+
|
|
23
|
+
## Quick Start
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
import { createClient } from 'aurabase'
|
|
27
|
+
|
|
28
|
+
const aura = createClient(
|
|
29
|
+
'http://localhost:8080',
|
|
30
|
+
'00000000-0000-0000-0000-000000000001',
|
|
31
|
+
'aura_anon_xxx',
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
const { data, error } = await aura.db
|
|
35
|
+
.from('posts')
|
|
36
|
+
.select('id,title,published')
|
|
37
|
+
.eq('published', true)
|
|
38
|
+
.order('created_at', 'desc')
|
|
39
|
+
.limit(10)
|
|
40
|
+
|
|
41
|
+
if (error) {
|
|
42
|
+
console.error(error.code, error.message)
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Sous-packages
|
|
47
|
+
|
|
48
|
+
| Package | Contenu |
|
|
49
|
+
|---|---|
|
|
50
|
+
| [`@aurabase/core`](../core) | fetch, erreurs, types, stores, `BaseService`, interface `AuraClientLike` |
|
|
51
|
+
| [`@aurabase/auth`](../auth) | `AuthService`, `AuthAdminService` |
|
|
52
|
+
| [`@aurabase/db`](../db) | `DatabaseService`, `QueryBuilder` |
|
|
53
|
+
| [`@aurabase/storage`](../storage) | `StorageService` |
|
|
54
|
+
| [`@aurabase/realtime`](../realtime) | `RealtimeService`, `AuraChannel`, `HeartbeatManager` |
|
|
55
|
+
| [`@aurabase/functions`](../functions) | `FunctionsService` |
|
|
56
|
+
| [`@aurabase/ai`](../ai) | `AiService` |
|
|
57
|
+
| [`@aurabase/notifications`](../notifications) | `NotificationsService`, `NotificationsAdminService` |
|
|
58
|
+
| [`@aurabase/gen`](../gen) | générateur CLI de types `Database` (dev-dependency, non inclus dans `aurabase`) |
|
|
59
|
+
|
|
60
|
+
Tous ces packages (hors `@aurabase/gen`) sont des dépendances directes de `aurabase` : les installer séparément n'est utile que pour du tree-shaking ciblé ou pour composer votre propre client.
|
|
61
|
+
|
|
62
|
+
## Documentation
|
|
63
|
+
|
|
64
|
+
Cette page ne couvre que le rôle du package d'agrégation. Documentation de référence complète : voir le [README du dépôt](../../README.md).
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { AuraClientLike, BaseAuthStore, AuraObservabilityEvent, AuraClientOptions, ChannelConfig } from '@aurabase/core';
|
|
2
|
+
import { AuthService, AuthAdminService } from '@aurabase/auth';
|
|
3
|
+
import { DatabaseService } from '@aurabase/db';
|
|
4
|
+
import { StorageService } from '@aurabase/storage';
|
|
5
|
+
import { RealtimeService, AuraChannel } from '@aurabase/realtime';
|
|
6
|
+
import { FunctionsService } from '@aurabase/functions';
|
|
7
|
+
import { AiService } from '@aurabase/ai';
|
|
8
|
+
import { NotificationsService } from '@aurabase/notifications';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Main Aurabase client.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { createClient } from 'aurabase'
|
|
16
|
+
* const aura = createClient('http://localhost:8080', 'my-project-id')
|
|
17
|
+
* const { data } = await aura.db.from('posts').eq('published', true)
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
declare class AuraClient<Database = any> implements AuraClientLike {
|
|
21
|
+
readonly baseUrl: string;
|
|
22
|
+
readonly projectId: string;
|
|
23
|
+
readonly apiKey: string | null;
|
|
24
|
+
readonly fetchFn: typeof globalThis.fetch;
|
|
25
|
+
readonly authStore: BaseAuthStore;
|
|
26
|
+
readonly retryConfig: {
|
|
27
|
+
enabled: boolean;
|
|
28
|
+
maxRetries: number;
|
|
29
|
+
};
|
|
30
|
+
/** Timeout par défaut (ms) des requêtes JSON sans signal. `undefined` → défaut core (30s). */
|
|
31
|
+
readonly requestTimeoutMs?: number;
|
|
32
|
+
/** Hook d'observabilité (LOT 3) — voir `AuraClientOptions.onEvent`. */
|
|
33
|
+
readonly onEvent?: (event: AuraObservabilityEvent) => void;
|
|
34
|
+
/** Journalise chaque `AuraObservabilityEvent` via `console.debug` — voir `AuraClientOptions.debug`. */
|
|
35
|
+
readonly debug?: boolean;
|
|
36
|
+
private _auth;
|
|
37
|
+
private _db;
|
|
38
|
+
private _storage;
|
|
39
|
+
private _realtime;
|
|
40
|
+
private _functions;
|
|
41
|
+
private _ai;
|
|
42
|
+
private _notifications;
|
|
43
|
+
private _authAdmin;
|
|
44
|
+
private _disposed;
|
|
45
|
+
private readonly _persistSession;
|
|
46
|
+
private readonly _autoRefresh;
|
|
47
|
+
private readonly _detectSessionInUrl;
|
|
48
|
+
constructor(baseUrl: string, projectId: string, apiKeyOrOptions?: string | AuraClientOptions, options?: AuraClientOptions);
|
|
49
|
+
/**
|
|
50
|
+
* Démonte le client : arrête le refresh proactif (ticker + visibilité + BroadcastChannel),
|
|
51
|
+
* déconnecte le realtime, vide les listeners d'auth. Idempotent. À appeler en teardown
|
|
52
|
+
* (React Strict Mode / HMR / tests).
|
|
53
|
+
*/
|
|
54
|
+
dispose(): void;
|
|
55
|
+
get auth(): AuthService;
|
|
56
|
+
get authAdmin(): AuthAdminService;
|
|
57
|
+
get db(): DatabaseService<Database>;
|
|
58
|
+
get storage(): StorageService;
|
|
59
|
+
get realtime(): RealtimeService;
|
|
60
|
+
get functions(): FunctionsService;
|
|
61
|
+
get ai(): AiService;
|
|
62
|
+
get notifications(): NotificationsService;
|
|
63
|
+
/**
|
|
64
|
+
* Shortcut: create a realtime channel with Supabase-compatible API.
|
|
65
|
+
* Equivalent to `aura.realtime.channel(name)`.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```ts
|
|
69
|
+
* const channel = aura.channel('room-1')
|
|
70
|
+
* .on('postgres_changes', { event: 'INSERT', schema: 'public', table: 'messages' }, cb)
|
|
71
|
+
* .subscribe()
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
channel(name: string, options?: ChannelConfig): AuraChannel;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export { AuraClient as A };
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { AuraClientLike, BaseAuthStore, AuraObservabilityEvent, AuraClientOptions, ChannelConfig } from '@aurabase/core';
|
|
2
|
+
import { AuthService, AuthAdminService } from '@aurabase/auth';
|
|
3
|
+
import { DatabaseService } from '@aurabase/db';
|
|
4
|
+
import { StorageService } from '@aurabase/storage';
|
|
5
|
+
import { RealtimeService, AuraChannel } from '@aurabase/realtime';
|
|
6
|
+
import { FunctionsService } from '@aurabase/functions';
|
|
7
|
+
import { AiService } from '@aurabase/ai';
|
|
8
|
+
import { NotificationsService } from '@aurabase/notifications';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Main Aurabase client.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { createClient } from 'aurabase'
|
|
16
|
+
* const aura = createClient('http://localhost:8080', 'my-project-id')
|
|
17
|
+
* const { data } = await aura.db.from('posts').eq('published', true)
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
declare class AuraClient<Database = any> implements AuraClientLike {
|
|
21
|
+
readonly baseUrl: string;
|
|
22
|
+
readonly projectId: string;
|
|
23
|
+
readonly apiKey: string | null;
|
|
24
|
+
readonly fetchFn: typeof globalThis.fetch;
|
|
25
|
+
readonly authStore: BaseAuthStore;
|
|
26
|
+
readonly retryConfig: {
|
|
27
|
+
enabled: boolean;
|
|
28
|
+
maxRetries: number;
|
|
29
|
+
};
|
|
30
|
+
/** Timeout par défaut (ms) des requêtes JSON sans signal. `undefined` → défaut core (30s). */
|
|
31
|
+
readonly requestTimeoutMs?: number;
|
|
32
|
+
/** Hook d'observabilité (LOT 3) — voir `AuraClientOptions.onEvent`. */
|
|
33
|
+
readonly onEvent?: (event: AuraObservabilityEvent) => void;
|
|
34
|
+
/** Journalise chaque `AuraObservabilityEvent` via `console.debug` — voir `AuraClientOptions.debug`. */
|
|
35
|
+
readonly debug?: boolean;
|
|
36
|
+
private _auth;
|
|
37
|
+
private _db;
|
|
38
|
+
private _storage;
|
|
39
|
+
private _realtime;
|
|
40
|
+
private _functions;
|
|
41
|
+
private _ai;
|
|
42
|
+
private _notifications;
|
|
43
|
+
private _authAdmin;
|
|
44
|
+
private _disposed;
|
|
45
|
+
private readonly _persistSession;
|
|
46
|
+
private readonly _autoRefresh;
|
|
47
|
+
private readonly _detectSessionInUrl;
|
|
48
|
+
constructor(baseUrl: string, projectId: string, apiKeyOrOptions?: string | AuraClientOptions, options?: AuraClientOptions);
|
|
49
|
+
/**
|
|
50
|
+
* Démonte le client : arrête le refresh proactif (ticker + visibilité + BroadcastChannel),
|
|
51
|
+
* déconnecte le realtime, vide les listeners d'auth. Idempotent. À appeler en teardown
|
|
52
|
+
* (React Strict Mode / HMR / tests).
|
|
53
|
+
*/
|
|
54
|
+
dispose(): void;
|
|
55
|
+
get auth(): AuthService;
|
|
56
|
+
get authAdmin(): AuthAdminService;
|
|
57
|
+
get db(): DatabaseService<Database>;
|
|
58
|
+
get storage(): StorageService;
|
|
59
|
+
get realtime(): RealtimeService;
|
|
60
|
+
get functions(): FunctionsService;
|
|
61
|
+
get ai(): AiService;
|
|
62
|
+
get notifications(): NotificationsService;
|
|
63
|
+
/**
|
|
64
|
+
* Shortcut: create a realtime channel with Supabase-compatible API.
|
|
65
|
+
* Equivalent to `aura.realtime.channel(name)`.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```ts
|
|
69
|
+
* const channel = aura.channel('room-1')
|
|
70
|
+
* .on('postgres_changes', { event: 'INSERT', schema: 'public', table: 'messages' }, cb)
|
|
71
|
+
* .subscribe()
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
channel(name: string, options?: ChannelConfig): AuraChannel;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export { AuraClient as A };
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var core = require('@aurabase/core');
|
|
4
|
+
var auth = require('@aurabase/auth');
|
|
5
|
+
var db = require('@aurabase/db');
|
|
6
|
+
var storage = require('@aurabase/storage');
|
|
7
|
+
var realtime = require('@aurabase/realtime');
|
|
8
|
+
var functions = require('@aurabase/functions');
|
|
9
|
+
var ai = require('@aurabase/ai');
|
|
10
|
+
var notifications = require('@aurabase/notifications');
|
|
11
|
+
|
|
12
|
+
// src/AuraClient.ts
|
|
13
|
+
function isBrowserContext() {
|
|
14
|
+
if (typeof window !== "undefined") return true;
|
|
15
|
+
const g = globalThis;
|
|
16
|
+
if (typeof g.DedicatedWorkerGlobalScope !== "undefined") return true;
|
|
17
|
+
if (typeof g.SharedWorkerGlobalScope !== "undefined") return true;
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
var SERVICE_ROLE_KEY_PREFIX = "aura_sk_";
|
|
21
|
+
var AuraClient = class {
|
|
22
|
+
baseUrl;
|
|
23
|
+
projectId;
|
|
24
|
+
apiKey;
|
|
25
|
+
fetchFn;
|
|
26
|
+
authStore;
|
|
27
|
+
retryConfig;
|
|
28
|
+
/** Timeout par défaut (ms) des requêtes JSON sans signal. `undefined` → défaut core (30s). */
|
|
29
|
+
requestTimeoutMs;
|
|
30
|
+
/** Hook d'observabilité (LOT 3) — voir `AuraClientOptions.onEvent`. */
|
|
31
|
+
onEvent;
|
|
32
|
+
/** Journalise chaque `AuraObservabilityEvent` via `console.debug` — voir `AuraClientOptions.debug`. */
|
|
33
|
+
debug;
|
|
34
|
+
// Lazy-initialised service instances
|
|
35
|
+
_auth = null;
|
|
36
|
+
_db = null;
|
|
37
|
+
_storage = null;
|
|
38
|
+
_realtime = null;
|
|
39
|
+
_functions = null;
|
|
40
|
+
_ai = null;
|
|
41
|
+
_notifications = null;
|
|
42
|
+
_authAdmin = null;
|
|
43
|
+
_disposed = false;
|
|
44
|
+
_persistSession;
|
|
45
|
+
_autoRefresh;
|
|
46
|
+
_detectSessionInUrl;
|
|
47
|
+
constructor(baseUrl, projectId, apiKeyOrOptions, options) {
|
|
48
|
+
this.baseUrl = baseUrl.replace(/\/+$/, "");
|
|
49
|
+
this.projectId = projectId;
|
|
50
|
+
const resolvedOptions = typeof apiKeyOrOptions === "string" ? options : apiKeyOrOptions;
|
|
51
|
+
this.apiKey = typeof apiKeyOrOptions === "string" ? apiKeyOrOptions : apiKeyOrOptions?.apiKey ?? null;
|
|
52
|
+
this.fetchFn = resolvedOptions?.fetch ?? globalThis.fetch.bind(globalThis);
|
|
53
|
+
const r = resolvedOptions?.retry;
|
|
54
|
+
this.retryConfig = r === false ? { enabled: false, maxRetries: 0 } : r === void 0 || r === true ? { enabled: true, maxRetries: core.DEFAULT_MAX_RETRIES } : { enabled: r.enabled ?? true, maxRetries: r.maxRetries ?? core.DEFAULT_MAX_RETRIES };
|
|
55
|
+
this.requestTimeoutMs = resolvedOptions?.requestTimeoutMs;
|
|
56
|
+
this.onEvent = resolvedOptions?.onEvent;
|
|
57
|
+
this.debug = resolvedOptions?.debug;
|
|
58
|
+
if (!this.apiKey && typeof console !== "undefined") {
|
|
59
|
+
console.warn(
|
|
60
|
+
"[aurabase] No API key provided. Most operations require an API key (apikey header). Only public auth routes (register, login, refresh) will work without one."
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
if (this.apiKey?.startsWith(SERVICE_ROLE_KEY_PREFIX) && isBrowserContext()) {
|
|
64
|
+
const refuse = resolvedOptions?.refuseServiceRoleInBrowser ?? true;
|
|
65
|
+
const message = "[aurabase] S\xC9CURIT\xC9 : une cl\xE9 service_role (aura_sk_\u2026) est fournie \xE0 createClient() dans un contexte navigateur. Cette cl\xE9 \xE0 privil\xE8ges \xE9lev\xE9s NE DOIT JAMAIS \xEAtre expos\xE9e c\xF4t\xE9 client (elle fuiterait dans le bundle). Utilisez une cl\xE9 anon (aura_anon_\u2026) c\xF4t\xE9 client, et createAdminClient() c\xF4t\xE9 serveur pour les op\xE9rations d'administration.";
|
|
66
|
+
if (refuse) {
|
|
67
|
+
throw new Error(message);
|
|
68
|
+
} else if (typeof console !== "undefined") {
|
|
69
|
+
console.warn(message);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (resolvedOptions?.auth?.storage) {
|
|
73
|
+
this.authStore = resolvedOptions.auth.storage;
|
|
74
|
+
} else if (resolvedOptions?.auth?.persistSession === false) {
|
|
75
|
+
this.authStore = new core.BaseAuthStore();
|
|
76
|
+
} else if (typeof localStorage !== "undefined") {
|
|
77
|
+
this.authStore = new core.LocalAuthStore();
|
|
78
|
+
} else {
|
|
79
|
+
this.authStore = new core.BaseAuthStore();
|
|
80
|
+
}
|
|
81
|
+
this.authStore.setObservabilityHook(this.onEvent, this.debug);
|
|
82
|
+
this._persistSession = resolvedOptions?.auth?.persistSession !== false;
|
|
83
|
+
this._autoRefresh = resolvedOptions?.auth?.autoRefresh ?? true;
|
|
84
|
+
this._detectSessionInUrl = resolvedOptions?.auth?.detectSessionInUrl;
|
|
85
|
+
if (this._autoRefresh && this._persistSession && typeof window !== "undefined") {
|
|
86
|
+
void this.auth;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Démonte le client : arrête le refresh proactif (ticker + visibilité + BroadcastChannel),
|
|
91
|
+
* déconnecte le realtime, vide les listeners d'auth. Idempotent. À appeler en teardown
|
|
92
|
+
* (React Strict Mode / HMR / tests).
|
|
93
|
+
*/
|
|
94
|
+
dispose() {
|
|
95
|
+
if (this._disposed) return;
|
|
96
|
+
this._disposed = true;
|
|
97
|
+
this._auth?.dispose();
|
|
98
|
+
this._realtime?.disconnect();
|
|
99
|
+
}
|
|
100
|
+
// -- Lazy service getters ---------------------------------------------------
|
|
101
|
+
get auth() {
|
|
102
|
+
if (!this._auth) {
|
|
103
|
+
this._auth = new auth.AuthService(this, {
|
|
104
|
+
autoRefresh: this._autoRefresh,
|
|
105
|
+
persistSession: this._persistSession,
|
|
106
|
+
detectSessionInUrl: this._detectSessionInUrl
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
return this._auth;
|
|
110
|
+
}
|
|
111
|
+
get authAdmin() {
|
|
112
|
+
if (isBrowserContext()) {
|
|
113
|
+
throw new Error(
|
|
114
|
+
"[aurabase] S\xC9CURIT\xC9 : authAdmin est inaccessible dans un contexte navigateur. L'API admin requiert une cl\xE9 service_role qui ne doit JAMAIS \xEAtre expos\xE9e c\xF4t\xE9 client (elle fuiterait dans le bundle). Utilisez createAdminClient() c\xF4t\xE9 serveur uniquement."
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
if (!this._authAdmin) this._authAdmin = new auth.AuthAdminService(this);
|
|
118
|
+
return this._authAdmin;
|
|
119
|
+
}
|
|
120
|
+
get db() {
|
|
121
|
+
if (!this._db) this._db = new db.DatabaseService(this);
|
|
122
|
+
return this._db;
|
|
123
|
+
}
|
|
124
|
+
get storage() {
|
|
125
|
+
if (!this._storage) this._storage = new storage.StorageService(this);
|
|
126
|
+
return this._storage;
|
|
127
|
+
}
|
|
128
|
+
get realtime() {
|
|
129
|
+
if (!this._realtime) this._realtime = new realtime.RealtimeService(this);
|
|
130
|
+
return this._realtime;
|
|
131
|
+
}
|
|
132
|
+
get functions() {
|
|
133
|
+
if (!this._functions) this._functions = new functions.FunctionsService(this);
|
|
134
|
+
return this._functions;
|
|
135
|
+
}
|
|
136
|
+
get ai() {
|
|
137
|
+
if (!this._ai) this._ai = new ai.AiService(this);
|
|
138
|
+
return this._ai;
|
|
139
|
+
}
|
|
140
|
+
get notifications() {
|
|
141
|
+
if (!this._notifications) this._notifications = new notifications.NotificationsService(this);
|
|
142
|
+
return this._notifications;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Shortcut: create a realtime channel with Supabase-compatible API.
|
|
146
|
+
* Equivalent to `aura.realtime.channel(name)`.
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
* ```ts
|
|
150
|
+
* const channel = aura.channel('room-1')
|
|
151
|
+
* .on('postgres_changes', { event: 'INSERT', schema: 'public', table: 'messages' }, cb)
|
|
152
|
+
* .subscribe()
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
155
|
+
channel(name, options) {
|
|
156
|
+
return this.realtime.channel(name, options);
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
function createClient(baseUrl, projectId, apiKeyOrOptions, options) {
|
|
160
|
+
return new AuraClient(baseUrl, projectId, apiKeyOrOptions, options);
|
|
161
|
+
}
|
|
162
|
+
function createAdminClient(baseUrl, projectId, serviceRoleKey, options) {
|
|
163
|
+
if (isBrowserContext()) {
|
|
164
|
+
throw new Error(
|
|
165
|
+
"[aurabase] createAdminClient() ne doit jamais \xEAtre appel\xE9 c\xF4t\xE9 navigateur : la cl\xE9 service_role serait expos\xE9e dans le bundle. \xC0 utiliser uniquement c\xF4t\xE9 serveur."
|
|
166
|
+
);
|
|
167
|
+
}
|
|
168
|
+
return new AuraClient(baseUrl, projectId, serviceRoleKey, options);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
Object.defineProperty(exports, "AuraError", {
|
|
172
|
+
enumerable: true,
|
|
173
|
+
get: function () { return core.AuraError; }
|
|
174
|
+
});
|
|
175
|
+
Object.defineProperty(exports, "BaseAuthStore", {
|
|
176
|
+
enumerable: true,
|
|
177
|
+
get: function () { return core.BaseAuthStore; }
|
|
178
|
+
});
|
|
179
|
+
Object.defineProperty(exports, "LocalAuthStore", {
|
|
180
|
+
enumerable: true,
|
|
181
|
+
get: function () { return core.LocalAuthStore; }
|
|
182
|
+
});
|
|
183
|
+
Object.defineProperty(exports, "isAuraError", {
|
|
184
|
+
enumerable: true,
|
|
185
|
+
get: function () { return core.isAuraError; }
|
|
186
|
+
});
|
|
187
|
+
Object.defineProperty(exports, "AuthAdminService", {
|
|
188
|
+
enumerable: true,
|
|
189
|
+
get: function () { return auth.AuthAdminService; }
|
|
190
|
+
});
|
|
191
|
+
Object.defineProperty(exports, "AuthService", {
|
|
192
|
+
enumerable: true,
|
|
193
|
+
get: function () { return auth.AuthService; }
|
|
194
|
+
});
|
|
195
|
+
Object.defineProperty(exports, "isMfaChallenge", {
|
|
196
|
+
enumerable: true,
|
|
197
|
+
get: function () { return auth.isMfaChallenge; }
|
|
198
|
+
});
|
|
199
|
+
Object.defineProperty(exports, "DatabaseService", {
|
|
200
|
+
enumerable: true,
|
|
201
|
+
get: function () { return db.DatabaseService; }
|
|
202
|
+
});
|
|
203
|
+
Object.defineProperty(exports, "QueryBuilder", {
|
|
204
|
+
enumerable: true,
|
|
205
|
+
get: function () { return db.QueryBuilder; }
|
|
206
|
+
});
|
|
207
|
+
Object.defineProperty(exports, "StorageService", {
|
|
208
|
+
enumerable: true,
|
|
209
|
+
get: function () { return storage.StorageService; }
|
|
210
|
+
});
|
|
211
|
+
Object.defineProperty(exports, "AuraChannel", {
|
|
212
|
+
enumerable: true,
|
|
213
|
+
get: function () { return realtime.AuraChannel; }
|
|
214
|
+
});
|
|
215
|
+
Object.defineProperty(exports, "RealtimeService", {
|
|
216
|
+
enumerable: true,
|
|
217
|
+
get: function () { return realtime.RealtimeService; }
|
|
218
|
+
});
|
|
219
|
+
Object.defineProperty(exports, "FunctionsService", {
|
|
220
|
+
enumerable: true,
|
|
221
|
+
get: function () { return functions.FunctionsService; }
|
|
222
|
+
});
|
|
223
|
+
Object.defineProperty(exports, "AiService", {
|
|
224
|
+
enumerable: true,
|
|
225
|
+
get: function () { return ai.AiService; }
|
|
226
|
+
});
|
|
227
|
+
Object.defineProperty(exports, "NotificationsAdminService", {
|
|
228
|
+
enumerable: true,
|
|
229
|
+
get: function () { return notifications.NotificationsAdminService; }
|
|
230
|
+
});
|
|
231
|
+
Object.defineProperty(exports, "NotificationsService", {
|
|
232
|
+
enumerable: true,
|
|
233
|
+
get: function () { return notifications.NotificationsService; }
|
|
234
|
+
});
|
|
235
|
+
exports.AuraClient = AuraClient;
|
|
236
|
+
exports.createAdminClient = createAdminClient;
|
|
237
|
+
exports.createClient = createClient;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { A as AuraClient } from './AuraClient-DAtDbfPB.cjs';
|
|
2
|
+
import { AuraClientOptions } from '@aurabase/core';
|
|
3
|
+
export { AdminCreateUserRequest, AdminUpdateUserRequest, AdminUser, AuditLogEntry, AuraClientOptions, AuraError, AuraErrorCode, AuraObservabilityEvent, AuraResponse, AuthChangePayload, AuthEvent, AuthSettings, BaseAuthStore, BatchSendResponse, BroadcastFilter, BroadcastPayload, ChannelConfig, ChatMessage, ChatResponse, CountMode, CronJob, EmailTemplateUpdate, EmbedRequest, EmbedResponse, FileEntry, FilterOp, FunctionDef, IdentityInfo, Job, LocalAuthStore, LoginResponse, MagicLinkRequest, Meta, MfaChallenge, MfaEnrollResponse, MfaVerifyRequest, Notification, NotificationAttempt, NotificationDeadLetter, NotificationEvent, NotificationProviderLog, NotificationQueueStats, NotificationRule, NotificationSettings, NotificationStats, NotificationTemplate, NotificationTemplatePreview, OAuthSignInOptions, PasswordResetRequest, PostgresChangesFilter, PresenceFilter, PresenceInfo, PresenceState, QueryFilter, QueryOptions, RagIngestRequest, RagIngestResponse, RagRequest, RagResponse, RealtimeEvent, RealtimeListenType, RealtimeSubscribeStatus, SchemaColumn, SchemaTable, SemanticSearchResult, SendNotificationRequest, SessionInfo, SignInRequest, SignUpRequest, StorageBucket, TokenPair, UpdateUserRequest, UploadResult, User, isAuraError } from '@aurabase/core';
|
|
4
|
+
export { DatabaseService, QueryBuilder } from '@aurabase/db';
|
|
5
|
+
export { AuthAdminService, AuthService, isMfaChallenge } from '@aurabase/auth';
|
|
6
|
+
export { StorageService } from '@aurabase/storage';
|
|
7
|
+
export { AuraChannel, RealtimeService } from '@aurabase/realtime';
|
|
8
|
+
export { FunctionsService } from '@aurabase/functions';
|
|
9
|
+
export { AiService } from '@aurabase/ai';
|
|
10
|
+
export { NotificationsAdminService, NotificationsService } from '@aurabase/notifications';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Create a new Aurabase client instance.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* // With API key (recommended — like Supabase)
|
|
18
|
+
* const aura = createClient('http://localhost:8080', 'project-uuid', 'aura_anon_xxx')
|
|
19
|
+
*
|
|
20
|
+
* // With options
|
|
21
|
+
* const aura = createClient('http://localhost:8080', 'project-uuid', 'aura_anon_xxx', {
|
|
22
|
+
* auth: { persistSession: true }
|
|
23
|
+
* })
|
|
24
|
+
*
|
|
25
|
+
* // Without API key (backward compatible)
|
|
26
|
+
* const aura = createClient('http://localhost:8080', 'project-uuid')
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
declare function createClient<Database = any>(baseUrl: string, projectId: string, apiKeyOrOptions?: string | AuraClientOptions, options?: AuraClientOptions): AuraClient<Database>;
|
|
30
|
+
/**
|
|
31
|
+
* Crée un client à usage **SERVEUR uniquement** pour les opérations d'administration
|
|
32
|
+
* (`client.authAdmin` : lister/créer/bannir des utilisateurs, lire l'audit). Exige une
|
|
33
|
+
* clé `service_role`. Lève une erreur si appelé dans un navigateur — cette clé ne doit
|
|
34
|
+
* jamais être embarquée dans un bundle client (E21). Équivalent du séparateur
|
|
35
|
+
* Admin SDK de Firebase / `service_role` server-side de Supabase.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* // server-side only (API route, edge function, backend)
|
|
40
|
+
* const admin = createAdminClient(url, projectId, process.env.SERVICE_ROLE_KEY!)
|
|
41
|
+
* await admin.authAdmin.listUsers()
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
declare function createAdminClient<Database = any>(baseUrl: string, projectId: string, serviceRoleKey: string, options?: AuraClientOptions): AuraClient<Database>;
|
|
45
|
+
|
|
46
|
+
export { AuraClient, createAdminClient, createClient };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { A as AuraClient } from './AuraClient-DAtDbfPB.js';
|
|
2
|
+
import { AuraClientOptions } from '@aurabase/core';
|
|
3
|
+
export { AdminCreateUserRequest, AdminUpdateUserRequest, AdminUser, AuditLogEntry, AuraClientOptions, AuraError, AuraErrorCode, AuraObservabilityEvent, AuraResponse, AuthChangePayload, AuthEvent, AuthSettings, BaseAuthStore, BatchSendResponse, BroadcastFilter, BroadcastPayload, ChannelConfig, ChatMessage, ChatResponse, CountMode, CronJob, EmailTemplateUpdate, EmbedRequest, EmbedResponse, FileEntry, FilterOp, FunctionDef, IdentityInfo, Job, LocalAuthStore, LoginResponse, MagicLinkRequest, Meta, MfaChallenge, MfaEnrollResponse, MfaVerifyRequest, Notification, NotificationAttempt, NotificationDeadLetter, NotificationEvent, NotificationProviderLog, NotificationQueueStats, NotificationRule, NotificationSettings, NotificationStats, NotificationTemplate, NotificationTemplatePreview, OAuthSignInOptions, PasswordResetRequest, PostgresChangesFilter, PresenceFilter, PresenceInfo, PresenceState, QueryFilter, QueryOptions, RagIngestRequest, RagIngestResponse, RagRequest, RagResponse, RealtimeEvent, RealtimeListenType, RealtimeSubscribeStatus, SchemaColumn, SchemaTable, SemanticSearchResult, SendNotificationRequest, SessionInfo, SignInRequest, SignUpRequest, StorageBucket, TokenPair, UpdateUserRequest, UploadResult, User, isAuraError } from '@aurabase/core';
|
|
4
|
+
export { DatabaseService, QueryBuilder } from '@aurabase/db';
|
|
5
|
+
export { AuthAdminService, AuthService, isMfaChallenge } from '@aurabase/auth';
|
|
6
|
+
export { StorageService } from '@aurabase/storage';
|
|
7
|
+
export { AuraChannel, RealtimeService } from '@aurabase/realtime';
|
|
8
|
+
export { FunctionsService } from '@aurabase/functions';
|
|
9
|
+
export { AiService } from '@aurabase/ai';
|
|
10
|
+
export { NotificationsAdminService, NotificationsService } from '@aurabase/notifications';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Create a new Aurabase client instance.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* // With API key (recommended — like Supabase)
|
|
18
|
+
* const aura = createClient('http://localhost:8080', 'project-uuid', 'aura_anon_xxx')
|
|
19
|
+
*
|
|
20
|
+
* // With options
|
|
21
|
+
* const aura = createClient('http://localhost:8080', 'project-uuid', 'aura_anon_xxx', {
|
|
22
|
+
* auth: { persistSession: true }
|
|
23
|
+
* })
|
|
24
|
+
*
|
|
25
|
+
* // Without API key (backward compatible)
|
|
26
|
+
* const aura = createClient('http://localhost:8080', 'project-uuid')
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
declare function createClient<Database = any>(baseUrl: string, projectId: string, apiKeyOrOptions?: string | AuraClientOptions, options?: AuraClientOptions): AuraClient<Database>;
|
|
30
|
+
/**
|
|
31
|
+
* Crée un client à usage **SERVEUR uniquement** pour les opérations d'administration
|
|
32
|
+
* (`client.authAdmin` : lister/créer/bannir des utilisateurs, lire l'audit). Exige une
|
|
33
|
+
* clé `service_role`. Lève une erreur si appelé dans un navigateur — cette clé ne doit
|
|
34
|
+
* jamais être embarquée dans un bundle client (E21). Équivalent du séparateur
|
|
35
|
+
* Admin SDK de Firebase / `service_role` server-side de Supabase.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* // server-side only (API route, edge function, backend)
|
|
40
|
+
* const admin = createAdminClient(url, projectId, process.env.SERVICE_ROLE_KEY!)
|
|
41
|
+
* await admin.authAdmin.listUsers()
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
declare function createAdminClient<Database = any>(baseUrl: string, projectId: string, serviceRoleKey: string, options?: AuraClientOptions): AuraClient<Database>;
|
|
45
|
+
|
|
46
|
+
export { AuraClient, createAdminClient, createClient };
|