@aurabase/aurabase-js 0.3.1 → 0.4.1
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/README.md +26 -795
- package/{packages/aurabase/dist/AuraClient-DAtDbfPB.d.ts → dist/AuraClient-BcFE8u1v.d.cts} +1 -1
- package/{packages/aurabase/dist/AuraClient-DAtDbfPB.d.cts → dist/AuraClient-BcFE8u1v.d.ts} +1 -1
- package/{packages/aurabase/dist → dist}/index.d.cts +1 -1
- package/{packages/aurabase/dist → dist}/index.d.ts +1 -1
- package/{packages/aurabase/dist → dist}/ssr.d.cts +1 -1
- package/{packages/aurabase/dist → dist}/ssr.d.ts +1 -1
- package/package.json +74 -82
- package/.changeset/config.json +0 -11
- package/CHANGELOG.md +0 -30
- package/packages/ai/LICENSE +0 -21
- package/packages/ai/README.md +0 -106
- package/packages/ai/dist/index.cjs +0 -229
- package/packages/ai/dist/index.d.cts +0 -139
- package/packages/ai/dist/index.d.ts +0 -139
- package/packages/ai/dist/index.js +0 -226
- package/packages/ai/package.json +0 -61
- package/packages/aurabase/LICENSE +0 -21
- package/packages/aurabase/README.md +0 -64
- package/packages/aurabase/package.json +0 -80
- package/packages/aurabase/vitest.e2e.config.ts +0 -9
- package/packages/auth/LICENSE +0 -21
- package/packages/auth/README.md +0 -215
- package/packages/auth/dist/index.cjs +0 -1175
- package/packages/auth/dist/index.d.cts +0 -397
- package/packages/auth/dist/index.d.ts +0 -397
- package/packages/auth/dist/index.js +0 -1170
- package/packages/auth/package.json +0 -61
- package/packages/core/LICENSE +0 -21
- package/packages/core/README.md +0 -132
- package/packages/core/dist/index.cjs +0 -695
- package/packages/core/dist/index.d.cts +0 -1137
- package/packages/core/dist/index.d.ts +0 -1137
- package/packages/core/dist/index.js +0 -673
- package/packages/core/package.json +0 -57
- package/packages/db/LICENSE +0 -21
- package/packages/db/README.md +0 -152
- package/packages/db/VENDORED.md +0 -93
- package/packages/db/dist/index.cjs +0 -544
- package/packages/db/dist/index.d.cts +0 -1111
- package/packages/db/dist/index.d.ts +0 -1111
- package/packages/db/dist/index.js +0 -541
- package/packages/db/package.json +0 -62
- package/packages/functions/LICENSE +0 -21
- package/packages/functions/README.md +0 -96
- package/packages/functions/dist/index.cjs +0 -173
- package/packages/functions/dist/index.d.cts +0 -81
- package/packages/functions/dist/index.d.ts +0 -81
- package/packages/functions/dist/index.js +0 -168
- package/packages/functions/package.json +0 -60
- package/packages/gen/LICENSE +0 -21
- package/packages/gen/README.md +0 -84
- package/packages/gen/dist/cli.cjs +0 -334
- package/packages/gen/dist/cli.d.cts +0 -1
- package/packages/gen/dist/cli.d.ts +0 -1
- package/packages/gen/dist/cli.js +0 -332
- package/packages/gen/dist/index.cjs +0 -257
- package/packages/gen/dist/index.d.cts +0 -12
- package/packages/gen/dist/index.d.ts +0 -12
- package/packages/gen/dist/index.js +0 -255
- package/packages/gen/package.json +0 -66
- package/packages/notifications/LICENSE +0 -21
- package/packages/notifications/README.md +0 -134
- package/packages/notifications/dist/index.cjs +0 -128
- package/packages/notifications/dist/index.d.cts +0 -81
- package/packages/notifications/dist/index.d.ts +0 -81
- package/packages/notifications/dist/index.js +0 -125
- package/packages/notifications/package.json +0 -60
- package/packages/realtime/LICENSE +0 -21
- package/packages/realtime/README.md +0 -183
- package/packages/realtime/dist/index.cjs +0 -977
- package/packages/realtime/dist/index.d.cts +0 -259
- package/packages/realtime/dist/index.d.ts +0 -259
- package/packages/realtime/dist/index.js +0 -973
- package/packages/realtime/package.json +0 -60
- package/packages/storage/LICENSE +0 -21
- package/packages/storage/README.md +0 -141
- package/packages/storage/dist/index.cjs +0 -333
- package/packages/storage/dist/index.d.cts +0 -185
- package/packages/storage/dist/index.d.ts +0 -185
- package/packages/storage/dist/index.js +0 -329
- package/packages/storage/package.json +0 -60
- /package/{packages/aurabase/dist → dist}/index.cjs +0 -0
- /package/{packages/aurabase/dist → dist}/index.js +0 -0
- /package/{packages/aurabase/dist → dist}/ssr.cjs +0 -0
- /package/{packages/aurabase/dist → dist}/ssr.js +0 -0
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@aurabase/core",
|
|
3
|
-
"version": "0.3.0",
|
|
4
|
-
"description": "Cœur du SDK Aurabase : fetch résilient, erreurs, stores auth, types de réponse (infrastructure interne)",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "dist/index.cjs",
|
|
7
|
-
"module": "dist/index.js",
|
|
8
|
-
"types": "dist/index.d.ts",
|
|
9
|
-
"exports": {
|
|
10
|
-
".": {
|
|
11
|
-
"import": {
|
|
12
|
-
"types": "./dist/index.d.ts",
|
|
13
|
-
"default": "./dist/index.js"
|
|
14
|
-
},
|
|
15
|
-
"require": {
|
|
16
|
-
"types": "./dist/index.d.cts",
|
|
17
|
-
"default": "./dist/index.cjs"
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
},
|
|
21
|
-
"sideEffects": false,
|
|
22
|
-
"files": [
|
|
23
|
-
"dist",
|
|
24
|
-
"README.md",
|
|
25
|
-
"LICENSE"
|
|
26
|
-
],
|
|
27
|
-
"engines": {
|
|
28
|
-
"node": ">=20.0.0"
|
|
29
|
-
},
|
|
30
|
-
"license": "MIT",
|
|
31
|
-
"author": "Aurabase",
|
|
32
|
-
"repository": {
|
|
33
|
-
"type": "git",
|
|
34
|
-
"url": "git+https://github.com/daylami555/aurabase.git",
|
|
35
|
-
"directory": "aurabase-js/packages/core"
|
|
36
|
-
},
|
|
37
|
-
"homepage": "https://github.com/daylami555/aurabase/tree/main/aurabase-js/packages/core#readme",
|
|
38
|
-
"bugs": {
|
|
39
|
-
"url": "https://github.com/daylami555/aurabase/issues"
|
|
40
|
-
},
|
|
41
|
-
"keywords": [
|
|
42
|
-
"aurabase",
|
|
43
|
-
"baas",
|
|
44
|
-
"sdk",
|
|
45
|
-
"core"
|
|
46
|
-
],
|
|
47
|
-
"scripts": {
|
|
48
|
-
"build": "tsup",
|
|
49
|
-
"test": "vitest run",
|
|
50
|
-
"typecheck": "tsc --noEmit"
|
|
51
|
-
},
|
|
52
|
-
"devDependencies": {
|
|
53
|
-
"tsup": "catalog:",
|
|
54
|
-
"typescript": "catalog:",
|
|
55
|
-
"vitest": "catalog:"
|
|
56
|
-
}
|
|
57
|
-
}
|
package/packages/db/LICENSE
DELETED
|
@@ -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.
|
package/packages/db/README.md
DELETED
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
# @aurabase/db
|
|
2
|
-
|
|
3
|
-
Service base de données du SDK Aurabase : query builder typé, style PostgREST, avec inférence de types sur `select()`/`insert()`/`update()`.
|
|
4
|
-
|
|
5
|
-
 
|
|
6
|
-
|
|
7
|
-
> Pre-release — pas encore publié sur npm.
|
|
8
|
-
|
|
9
|
-
Fait partie du SDK **[aurabase](../aurabase)**. Installé automatiquement avec `aurabase` ; ce package est publié séparément pour un usage ciblé / tree-shaking.
|
|
10
|
-
|
|
11
|
-
## Installation
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
npm i @aurabase/db
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
> Dépend de `@aurabase/core`. Déjà inclus si vous utilisez le package `aurabase` — cette installation ciblée sert à composer votre propre client ou à limiter la taille du bundle.
|
|
18
|
-
|
|
19
|
-
## Usage
|
|
20
|
-
|
|
21
|
-
`DatabaseService` est exposé par le client principal sous `aura.db`. Pour l'inférence de types (colonnes, embeds, `Insert`/`Update`), passez un type `Database` généré à `createClient<Database>(...)` (voir [`@aurabase/gen`](../gen)).
|
|
22
|
-
|
|
23
|
-
```ts
|
|
24
|
-
import { createClient } from 'aurabase'
|
|
25
|
-
import type { Database } from './database.types' // généré par @aurabase/gen, optionnel
|
|
26
|
-
|
|
27
|
-
const aura = createClient<Database>('http://localhost:8080', 'my-project', 'aura_anon_xxx')
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
### Select, filtres, embeds
|
|
31
|
-
|
|
32
|
-
```ts
|
|
33
|
-
const { data, error } = await aura.db
|
|
34
|
-
.from('posts')
|
|
35
|
-
.select('id,title,author:authors(*)') // embed PostgREST-like (alias:table(*)) — typé si Database est fourni
|
|
36
|
-
.eq('published', true)
|
|
37
|
-
.order('created_at', 'desc')
|
|
38
|
-
.limit(10)
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
Filtres disponibles : `eq`, `neq`, `gt`, `gte`, `lt`, `lte`, `like`, `ilike`, `is('null' | 'not.null' | 'true' | 'false' | 'unknown')`, `in`, `notIn`, `or([{ column, op, value }])`, `contains`, `containedBy`, `overlaps`, `rangeGt`/`rangeGte`/`rangeLt`/`rangeLte`/`rangeAdjacent`, `isDistinct`, `not(column, op, value)`, `filter(column, op, value)`, `match(obj)`, `textSearch(column, query, { type, config })`, `likeAllOf`/`likeAnyOf`/`ilikeAllOf`/`ilikeAnyOf`.
|
|
42
|
-
|
|
43
|
-
```ts
|
|
44
|
-
await aura.db
|
|
45
|
-
.from('posts')
|
|
46
|
-
.or([
|
|
47
|
-
{ column: 'published', op: 'eq', value: true },
|
|
48
|
-
{ column: 'author_id', op: 'eq', value: 'user-id' },
|
|
49
|
-
])
|
|
50
|
-
.textSearch('title', 'aurabase', { type: 'websearch' })
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
Modificateurs : `order(column, 'asc' | 'desc')`, `limit(n)`, `offset(n)`, `cursor(nextCursor)`, `count('exact' | ...)`, `single()`, `maybeSingle()`, `throwOnError()`.
|
|
54
|
-
|
|
55
|
-
```ts
|
|
56
|
-
const postId = 'post-id'
|
|
57
|
-
const { data: post } = await aura.db.from('posts').eq('id', postId).single()
|
|
58
|
-
|
|
59
|
-
const { data: maybePost } = await aura.db.from('posts').eq('slug', 'unknown').maybeSingle()
|
|
60
|
-
|
|
61
|
-
const firstPage = await aura.db.from('posts').order('id').limit(20)
|
|
62
|
-
const secondPage = await aura.db.from('posts').order('id').cursor(firstPage.meta?.next_cursor ?? '')
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### Mutations — `update`/`delete` ciblent par `id`
|
|
66
|
-
|
|
67
|
-
```ts
|
|
68
|
-
await aura.db.from('posts').insert({ title: 'Hello', published: false })
|
|
69
|
-
await aura.db.from('posts').insert([{ title: 'A' }, { title: 'B' }])
|
|
70
|
-
|
|
71
|
-
// Pas de .eq(...) : update()/delete() prennent l'id directement en premier argument.
|
|
72
|
-
const postId = 'post-id'
|
|
73
|
-
await aura.db.from('posts').update(postId, { published: true })
|
|
74
|
-
await aura.db.from('posts').delete(postId)
|
|
75
|
-
|
|
76
|
-
await aura.db.from('posts').upsert({ id: postId, title: 'Updated' }, { onConflict: 'id' })
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### SQL brut et schéma
|
|
80
|
-
|
|
81
|
-
```ts
|
|
82
|
-
// Passthrough direct vers Postgres — PAS en lecture seule (voir Limitations).
|
|
83
|
-
const rows = await aura.db.sql('SELECT count(*) FROM posts WHERE published = $1', [true])
|
|
84
|
-
|
|
85
|
-
const schema = await aura.db.schema() // schema.data: { tables: SchemaTable[]; functions: SchemaFunction[] } du projet courant
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
## Fonctions Postgres (rpc)
|
|
89
|
-
|
|
90
|
-
`aura.db.rpc(fnName, args?, options?)` appelle une fonction Postgres exposée par PostgREST (`POST|GET|HEAD /rpc/{fn}`) et retourne un builder filtrable (mêmes modificateurs que `from()` : `.eq()`, `.select()`, `.single()`, `.order()`, …).
|
|
91
|
-
|
|
92
|
-
```ts
|
|
93
|
-
// Appel scalaire (POST par défaut, args en body).
|
|
94
|
-
const { data: sum } = await aura.db.rpc('add', { a: 1, b: 2 })
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
```ts
|
|
98
|
-
// Fonction SETOF : le résultat est filtrable comme une table.
|
|
99
|
-
const { data: thing } = await aura.db
|
|
100
|
-
.rpc('list_things', {})
|
|
101
|
-
.eq('id', 2)
|
|
102
|
-
.select('id,name')
|
|
103
|
-
.single()
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
Options (3e argument) :
|
|
107
|
-
|
|
108
|
-
```ts
|
|
109
|
-
// count: 'exact' | 'planned' | 'estimated' → total exposé dans meta.total.
|
|
110
|
-
const { data, meta } = await aura.db.rpc('list_things', {}, { count: 'exact' })
|
|
111
|
-
console.log(meta?.total)
|
|
112
|
-
|
|
113
|
-
// get: true → GET (args sérialisés en query string, pas de body).
|
|
114
|
-
await aura.db.rpc('now', undefined, { get: true })
|
|
115
|
-
|
|
116
|
-
// head: true → HEAD (args en query, aucun corps de réponse — utile avec count).
|
|
117
|
-
await aura.db.rpc('list_things', {}, { head: true, count: 'exact' })
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
Typage : si `Database['public']['Functions'][fn]` est connu, `args` est typé strictement et le résultat infère `Row`/`Result` à partir de `Returns` (scalaire pour une fonction scalaire, tableau pour un SETOF) — sans double-emballage : `rpc('add', …)` type `number | null`, `rpc('list_things', …)` sans `.select()` type `{ id; name }[] | null`. Une colonne précise après `.select()` sur un SETOF (ex. `.select('id,name').single()` → `{ id: number; name: string } | null`) nécessite que `SetofOptions.to` pointe une **vraie table** du bloc `Tables` du `Database` — ce qui suppose un `Database` écrit à la main. **Généré par [`@aurabase/gen`](../gen) :** seuls les `Args` (et le retour scalaire) sont typés strictement ; `@aurabase/gen` ne résout pas la table réellement ciblée par un `SETOF`, donc `SetofOptions.to` y est un placeholder qui ne matche jamais une table — un SETOF `.select()` retombe alors sur `Record<string, unknown>[]` (voir [limitations de `@aurabase/gen`](../gen/README.md)). Sans `Database` typé (ou fonction absente du bloc `Functions`), `rpc()` reste permissif (`args?: Record<string, unknown>`, résultat `any`) — aucune régression pour les appels non typés.
|
|
121
|
-
|
|
122
|
-
```ts
|
|
123
|
-
import { createClient } from 'aurabase'
|
|
124
|
-
|
|
125
|
-
type Database = {
|
|
126
|
-
public: {
|
|
127
|
-
Tables: Record<string, never>
|
|
128
|
-
Views: Record<string, never>
|
|
129
|
-
Functions: {
|
|
130
|
-
add: { Args: { a: number; b: number }; Returns: number }
|
|
131
|
-
}
|
|
132
|
-
Enums: Record<string, never>
|
|
133
|
-
CompositeTypes: Record<string, never>
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
const aura = createClient<Database>('http://localhost:8080', 'my-project', 'aura_anon_xxx')
|
|
138
|
-
await aura.db.rpc('add', { a: 1, b: 2 }) // args vérifiés à la compilation
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
## Limitations
|
|
142
|
-
|
|
143
|
-
- `rpc()` est Postgres-only : non disponible si le projet utilise MongoDB comme moteur (`aura.db.schema()` renvoie alors `functions: []`).
|
|
144
|
-
- `update(id, body)` et `delete(id)` ciblent toujours une ligne par `id` : pas d'équivalent `.update(values).eq('col', v)` filtrant sur un critère arbitraire.
|
|
145
|
-
- Pas de `range()`, `csv()`, `geojson()`, `explain()`, `abortSignal()`, `returns()` (parité postgrest-js partielle).
|
|
146
|
-
- `or()` prend un tableau d'objets `{ column, op, value }`, pas la chaîne PostgREST `"col.eq.val,col2.gt.val2"`.
|
|
147
|
-
- `sql()` n'a aucun filtre applicatif par type d'instruction (SELECT/INSERT/UPDATE/DELETE/DDL s'exécutent tous réellement, dans la limite des GRANTs du rôle Postgres du projet) — à ne pas exposer sans restriction à des clients non fiables.
|
|
148
|
-
- Format de câblage (wire format) propre à Aurabase : non interopérable avec un serveur PostgREST tiers.
|
|
149
|
-
|
|
150
|
-
## Documentation
|
|
151
|
-
|
|
152
|
-
Référence complète du SDK (tous les services, types partagés, SSR) : [README racine](../../README.md).
|
package/packages/db/VENDORED.md
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
# Code vendoré — `@supabase/postgrest-js`
|
|
2
|
-
|
|
3
|
-
`@aurabase/db` embarque, sous licence MIT, une copie adaptée de la couche
|
|
4
|
-
type-level de [`@supabase/postgrest-js`](https://github.com/supabase/postgrest-js)
|
|
5
|
-
(parseur de `select()` + résolveur de types `GetResult`). Ce document fige la
|
|
6
|
-
provenance et la procédure de resync — introduit par LOT 6 (audit SDK,
|
|
7
|
-
2026-07-12, finding I7 : « vendoré sans provenance »).
|
|
8
|
-
|
|
9
|
-
## Fichiers vendorés
|
|
10
|
-
|
|
11
|
-
| Fichier | Rôle |
|
|
12
|
-
|---|---|
|
|
13
|
-
| `src/select-query-parser/parser.ts` | Parseur de la string `select()` en AST (`Ast.Node[]`) |
|
|
14
|
-
| `src/select-query-parser/result.ts` | `GetResult<...>` — résolution du type de retour d'un `select()` (point d'entrée) |
|
|
15
|
-
| `src/select-query-parser/types.ts` | Types utilitaires partagés du parseur/résolveur |
|
|
16
|
-
| `src/select-query-parser/utils.ts` | `ResolveRelationship` et le reste de la logique de résolution des embeds |
|
|
17
|
-
| `src/pgrst-types/feature-flags.ts` | Feature flags par version de PostgREST (`MaxAffectedEnabled`, `SpreadOnManyEnabled`) |
|
|
18
|
-
| `src/pgrst-types/types.ts` | Types PostgREST génériques (`GenericTable`, `TypeScriptTypes`, `PostgreSQLTypes`, ...) |
|
|
19
|
-
| `src/pgrst-types/common/common.ts` | Types partagés supabase-js/postgrest-js (`Fetch`, `ClientServerOptions`, ...) |
|
|
20
|
-
| `src/pgrst-types/common/rpc.ts` | Typage des appels `.rpc()` (`GenericFunction`, matching des `Args`) |
|
|
21
|
-
|
|
22
|
-
Chaque fichier porte un en-tête `// Vendored from @supabase/postgrest-js (MIT,
|
|
23
|
-
Copyright (c) Supabase).` renvoyant vers ce document. **Ne pas modifier la
|
|
24
|
-
logique de ces fichiers** hors resync délibéré (voir plus bas) — les
|
|
25
|
-
adaptations aurabase (renommages, ajustements d'import) sont volontairement
|
|
26
|
-
minimales pour garder un diff resync-friendly avec l'amont.
|
|
27
|
-
|
|
28
|
-
## Version d'origine
|
|
29
|
-
|
|
30
|
-
Vendoré initialement dans le commit `414d9f60` (« feat(db): vendore la couche
|
|
31
|
-
type-level de postgrest-js (MIT) pour l'inférence de select », 2026-07-12).
|
|
32
|
-
**La version exacte / le SHA amont de `@supabase/postgrest-js` au moment du
|
|
33
|
-
vendoring n'a pas été consigné à l'époque — à confirmer et à figer ici au
|
|
34
|
-
prochain resync.** Tant que cette ligne n'est pas mise à jour, considérer la
|
|
35
|
-
provenance comme « non pinnée » : en cas de bug suspecté dans cette couche,
|
|
36
|
-
comparer manuellement avec la version courante de `@supabase/postgrest-js` sur
|
|
37
|
-
npm/GitHub plutôt que de supposer une version précise.
|
|
38
|
-
|
|
39
|
-
```
|
|
40
|
-
Source amont : @supabase/postgrest-js (https://github.com/supabase/postgrest-js)
|
|
41
|
-
Licence : MIT (Copyright (c) Supabase)
|
|
42
|
-
SHA / version amont au vendoring : NON CONSIGNÉ — à figer ici au prochain resync
|
|
43
|
-
Vendoré le : 2026-07-12 (commit 414d9f60)
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## `PostgrestVersion` figé à `'12'`
|
|
47
|
-
|
|
48
|
-
`AuraClientOptionsT` (`src/QueryBuilder.ts`) fixe
|
|
49
|
-
`PostgrestVersion: '12'` de façon codée en dur — le SDK Aurabase ne négocie
|
|
50
|
-
pas de version PostgREST avec le backend. Conséquence directe sur le code
|
|
51
|
-
vendoré : les feature flags `MaxAffectedEnabled` / `SpreadOnManyEnabled`
|
|
52
|
-
(`src/pgrst-types/feature-flags.ts`), conçus en amont pour activer des
|
|
53
|
-
comportements PostgREST 13/14, sont **présents mais structurellement inertes**
|
|
54
|
-
dans aurabase-js (`IsPostgrestVersionGreaterThan12<'12'>` est toujours
|
|
55
|
-
`false`). Ce n'est pas un bug — c'est un vendoring volontairement fidèle à
|
|
56
|
-
l'amont (pas de fork de la logique) doublé d'un pin explicite de version côté
|
|
57
|
-
aurabase. Si le backend `aura-db`/PostgREST venait à monter en version 13+,
|
|
58
|
-
ce pin devra être révisé de concert avec le générateur de schéma (LOT 4) et
|
|
59
|
-
les tests type-level du vendoré (`packages/db/tests/vendored/`).
|
|
60
|
-
|
|
61
|
-
## Procédure de resync manuelle
|
|
62
|
-
|
|
63
|
-
Ce vendoring n'est pas automatisé (pas de sous-module, pas de script de sync).
|
|
64
|
-
Pour rapatrier une version plus récente de `@supabase/postgrest-js` :
|
|
65
|
-
|
|
66
|
-
1. Récupérer la version cible du paquet npm `@supabase/postgrest-js` (choisir
|
|
67
|
-
un tag/SHA précis — ne jamais resync sur un HEAD flottant).
|
|
68
|
-
2. Comparer fichier par fichier avec la liste ci-dessus (`src/select-query-parser/*`,
|
|
69
|
-
`src/pgrst-types/*`) — l'amont peut avoir renommé/déplacé des fichiers
|
|
70
|
-
entre deux versions, vérifier la table de correspondance à cette occasion.
|
|
71
|
-
3. Réappliquer les adaptations aurabase minimales (renommages de types
|
|
72
|
-
`Aura*` le cas échéant, ajustements d'import relatifs — actuellement
|
|
73
|
-
aucune divergence de logique volontaire n'est connue ; si une divergence
|
|
74
|
-
est découverte pendant le resync, la documenter ici avant de l'écraser).
|
|
75
|
-
4. Mettre à jour la ligne « SHA / version amont » de ce document.
|
|
76
|
-
5. Faire tourner :
|
|
77
|
-
- `pnpm --filter @aurabase/db test` (suite unitaire + `tsc -p tsconfig.test-d.json`)
|
|
78
|
-
- `pnpm --filter @aurabase/db test tests/scale/scale-compile.test.ts` (garde
|
|
79
|
-
TS2589 à l'échelle — LOT 6, voir `tests/scale/`)
|
|
80
|
-
- `pnpm --filter @aurabase/db test tests/vendored/` (régression de forme sur
|
|
81
|
-
le vendoré — LOT 6, voir `tests/vendored/`)
|
|
82
|
-
6. Si `PostgrestVersion` amont introduit un nouveau feature flag pertinent
|
|
83
|
-
pour aurabase (ex. passage à PostgREST 13+ côté backend), le câbler
|
|
84
|
-
explicitement plutôt que de le laisser inerte silencieusement.
|
|
85
|
-
|
|
86
|
-
## Pourquoi vendorer plutôt que dépendre de `@supabase/postgrest-js`
|
|
87
|
-
|
|
88
|
-
Décision déjà actée au moment du vendoring (commit `414d9f60`) : le SDK
|
|
89
|
-
Aurabase a son propre `AuraQueryBuilder`/`DatabaseService` (pas le client
|
|
90
|
-
`postgrest-js`), seule la couche de résolution de types (`GetResult` et son
|
|
91
|
-
parseur) est réutilisée. Vendorer évite une dépendance runtime/type sur un
|
|
92
|
-
paquet dont l'API cliente n'est pas utilisée telle quelle, au prix du coût de
|
|
93
|
-
maintenance documenté ci-dessus (resync manuel).
|