@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.
Files changed (86) 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 +74 -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/package.json +0 -61
  18. package/packages/aurabase/LICENSE +0 -21
  19. package/packages/aurabase/README.md +0 -64
  20. package/packages/aurabase/package.json +0 -80
  21. package/packages/aurabase/vitest.e2e.config.ts +0 -9
  22. package/packages/auth/LICENSE +0 -21
  23. package/packages/auth/README.md +0 -215
  24. package/packages/auth/dist/index.cjs +0 -1175
  25. package/packages/auth/dist/index.d.cts +0 -397
  26. package/packages/auth/dist/index.d.ts +0 -397
  27. package/packages/auth/dist/index.js +0 -1170
  28. package/packages/auth/package.json +0 -61
  29. package/packages/core/LICENSE +0 -21
  30. package/packages/core/README.md +0 -132
  31. package/packages/core/dist/index.cjs +0 -695
  32. package/packages/core/dist/index.d.cts +0 -1137
  33. package/packages/core/dist/index.d.ts +0 -1137
  34. package/packages/core/dist/index.js +0 -673
  35. package/packages/core/package.json +0 -57
  36. package/packages/db/LICENSE +0 -21
  37. package/packages/db/README.md +0 -152
  38. package/packages/db/VENDORED.md +0 -93
  39. package/packages/db/dist/index.cjs +0 -544
  40. package/packages/db/dist/index.d.cts +0 -1111
  41. package/packages/db/dist/index.d.ts +0 -1111
  42. package/packages/db/dist/index.js +0 -541
  43. package/packages/db/package.json +0 -62
  44. package/packages/functions/LICENSE +0 -21
  45. package/packages/functions/README.md +0 -96
  46. package/packages/functions/dist/index.cjs +0 -173
  47. package/packages/functions/dist/index.d.cts +0 -81
  48. package/packages/functions/dist/index.d.ts +0 -81
  49. package/packages/functions/dist/index.js +0 -168
  50. package/packages/functions/package.json +0 -60
  51. package/packages/gen/LICENSE +0 -21
  52. package/packages/gen/README.md +0 -84
  53. package/packages/gen/dist/cli.cjs +0 -334
  54. package/packages/gen/dist/cli.d.cts +0 -1
  55. package/packages/gen/dist/cli.d.ts +0 -1
  56. package/packages/gen/dist/cli.js +0 -332
  57. package/packages/gen/dist/index.cjs +0 -257
  58. package/packages/gen/dist/index.d.cts +0 -12
  59. package/packages/gen/dist/index.d.ts +0 -12
  60. package/packages/gen/dist/index.js +0 -255
  61. package/packages/gen/package.json +0 -66
  62. package/packages/notifications/LICENSE +0 -21
  63. package/packages/notifications/README.md +0 -134
  64. package/packages/notifications/dist/index.cjs +0 -128
  65. package/packages/notifications/dist/index.d.cts +0 -81
  66. package/packages/notifications/dist/index.d.ts +0 -81
  67. package/packages/notifications/dist/index.js +0 -125
  68. package/packages/notifications/package.json +0 -60
  69. package/packages/realtime/LICENSE +0 -21
  70. package/packages/realtime/README.md +0 -183
  71. package/packages/realtime/dist/index.cjs +0 -977
  72. package/packages/realtime/dist/index.d.cts +0 -259
  73. package/packages/realtime/dist/index.d.ts +0 -259
  74. package/packages/realtime/dist/index.js +0 -973
  75. package/packages/realtime/package.json +0 -60
  76. package/packages/storage/LICENSE +0 -21
  77. package/packages/storage/README.md +0 -141
  78. package/packages/storage/dist/index.cjs +0 -333
  79. package/packages/storage/dist/index.d.cts +0 -185
  80. package/packages/storage/dist/index.d.ts +0 -185
  81. package/packages/storage/dist/index.js +0 -329
  82. package/packages/storage/package.json +0 -60
  83. /package/{packages/aurabase/dist → dist}/index.cjs +0 -0
  84. /package/{packages/aurabase/dist → dist}/index.js +0 -0
  85. /package/{packages/aurabase/dist → dist}/ssr.cjs +0 -0
  86. /package/{packages/aurabase/dist → dist}/ssr.js +0 -0
@@ -1,84 +0,0 @@
1
- # @aurabase/gen
2
-
3
- Générateur de types TypeScript `Database` pour le SDK Aurabase : introspecte le schéma d'un projet et produit un fichier de types compatible avec l'inférence de `@aurabase/db` (parité `Database` façon Supabase).
4
-
5
- ![npm](https://img.shields.io/npm/v/@aurabase/gen) ![license](https://img.shields.io/badge/license-MIT-blue)
6
-
7
- > Pre-release — pas encore publié sur npm.
8
-
9
- Fait partie de l'écosystème du SDK **[aurabase](../aurabase)**, mais publié et installé **séparément** : contrairement aux autres packages `@aurabase/*`, le méta-package `aurabase` ne dépend pas de `@aurabase/gen` — c'est un outil de développement (CLI de génération de types), pas une dépendance runtime de votre application.
10
-
11
- ## Installation
12
-
13
- ```bash
14
- npm i -D @aurabase/gen
15
- ```
16
-
17
- > S'installe typiquement en devDependency (ou s'exécute via `npx` sans installation) : c'est un outil exécuté ponctuellement (local ou CI) pour régénérer un fichier `.ts`, pas un module importé par votre application en production.
18
-
19
- ## Usage
20
-
21
- ### CLI `aurabase-gen`
22
-
23
- ```bash
24
- npx aurabase-gen --url http://localhost:8080 --project my-project --key aura_anon_xxx --out database.types.ts
25
- ```
26
-
27
- Options complètes :
28
-
29
- ```
30
- aurabase-gen --url <baseUrl> --project <id> [--key <apiKey>] [--out database.types.ts] [--schema public] [--type-name Database]
31
- ```
32
-
33
- Sans `--out`, la sortie est écrite sur `stdout` plutôt que dans un fichier.
34
-
35
- ### Utilisation programmatique
36
-
37
- ```ts
38
- import { generateDatabaseTypes } from '@aurabase/gen'
39
- import type { SchemaTable } from '@aurabase/core'
40
-
41
- const tables: SchemaTable[] = [
42
- {
43
- name: 'posts',
44
- primary_key: 'id',
45
- columns: [
46
- { name: 'id', col_type: 'uuid', nullable: false, unique: true, default_val: 'gen_random_uuid()', references: null },
47
- { name: 'title', col_type: 'text', nullable: false, unique: false, default_val: null, references: null },
48
- ],
49
- indexes: [],
50
- rls_enabled: false,
51
- realtime_enabled: false,
52
- },
53
- ]
54
-
55
- const source = generateDatabaseTypes(tables, { schemaName: 'public', typeName: 'Database' })
56
- ```
57
-
58
- ### Workflow complet (typage bout-en-bout avec `@aurabase/db`)
59
-
60
- ```bash
61
- npx aurabase-gen --url http://localhost:8080 --project my-project --key aura_anon_xxx --out database.types.ts
62
- ```
63
-
64
- ```ts
65
- import { createClient } from 'aurabase'
66
- import type { Database } from './database.types' // fichier généré à l'étape précédente
67
-
68
- const aura = createClient<Database>('http://localhost:8080', 'my-project', 'aura_anon_xxx')
69
-
70
- // select()/insert()/update() sont désormais inférés depuis les colonnes réelles de `posts`.
71
- const { data } = await aura.db.from('posts').select('id,title').eq('id', 'post-id').single()
72
- ```
73
-
74
- ## Limitations
75
-
76
- - `Views`, `Functions`, `Enums` et `CompositeTypes` sont toujours générés vides (`Record<string, never>`) — seules les `Tables` sont introspectées et typées.
77
- - Un seul schéma à la fois (`--schema`, défaut `public`) : pas de génération multi-schémas en une seule invocation.
78
- - Dépend de l'endpoint `/schema` exposé par `aura.db.schema()` côté backend — un projet ou une clé sans droit de lecture du schéma ne peut pas générer de types (erreur explicite, pas de repli silencieux).
79
- - Pas de détection de types enum Postgres dédiés : un `col_type` non reconnu retombe sur `unknown`.
80
- - Le fichier généré est un instantané : il ne se met pas à jour automatiquement quand le schéma change côté backend (pas de mode watch).
81
-
82
- ## Documentation
83
-
84
- Référence complète du SDK (tous les services, types partagés, SSR) : [README racine](../../README.md).
@@ -1,334 +0,0 @@
1
- #!/usr/bin/env node
2
- 'use strict';
3
-
4
- var fs = require('fs');
5
- var aurabase = require('aurabase');
6
-
7
- // src/generate.ts
8
- function enumRef(name, ctx) {
9
- return ctx.enumNames.has(name) ? `${ctx.typeName}['${ctx.schemaName}']['Enums']['${name}']` : (
10
- // Enum inconnu du bloc Enums → auto-référence non résoluble → repli textuel.
11
- "string"
12
- );
13
- }
14
- function mapColType(colType, ctx) {
15
- if (typeof colType === "string") {
16
- switch (colType) {
17
- case "text":
18
- case "varchar":
19
- case "bpchar":
20
- case "uuid":
21
- case "timestamp":
22
- case "timestamptz":
23
- case "date":
24
- case "time":
25
- case "bytea":
26
- case "numeric":
27
- return "string";
28
- case "int":
29
- case "int2":
30
- case "int4":
31
- case "int8":
32
- case "bigint":
33
- case "float":
34
- case "float4":
35
- case "float8":
36
- return "number";
37
- case "bool":
38
- return "boolean";
39
- case "json":
40
- case "jsonb":
41
- return "Json";
42
- default:
43
- return "unknown";
44
- }
45
- }
46
- if (colType && typeof colType === "object") {
47
- if ("array" in colType) return `${mapColType(colType.array, ctx)}[]`;
48
- if ("vector" in colType) return "number[]";
49
- if ("enum" in colType) return enumRef(String(colType.enum), ctx);
50
- }
51
- return "unknown";
52
- }
53
- function mapPgType(raw, ctx) {
54
- if (raw.startsWith("_")) return `${mapPgType(raw.slice(1), ctx)}[]`;
55
- switch (raw) {
56
- case "int2":
57
- case "int4":
58
- case "int8":
59
- case "float4":
60
- case "float8":
61
- return "number";
62
- case "numeric":
63
- return "string";
64
- case "bool":
65
- return "boolean";
66
- case "text":
67
- case "varchar":
68
- case "bpchar":
69
- case "citext":
70
- case "uuid":
71
- case "date":
72
- case "time":
73
- case "timetz":
74
- case "timestamp":
75
- case "timestamptz":
76
- case "bytea":
77
- return "string";
78
- case "json":
79
- case "jsonb":
80
- return "Json";
81
- case "void":
82
- return "undefined";
83
- case "record":
84
- return "unknown";
85
- default:
86
- return ctx.enumNames.has(raw) ? enumRef(raw, ctx) : "unknown";
87
- }
88
- }
89
- function tsType(col, ctx) {
90
- const base = mapColType(col.col_type, ctx);
91
- return col.nullable ? `${base} | null` : base;
92
- }
93
- function genRow(cols, ctx) {
94
- return cols.map((c) => ` ${c.name}: ${tsType(c, ctx)}`).join("\n");
95
- }
96
- var AUTO_COLS = /* @__PURE__ */ new Set(["id", "created_at", "updated_at"]);
97
- function isInsertOptional(col) {
98
- return col.nullable || col.default_val != null || AUTO_COLS.has(col.name);
99
- }
100
- function genInsert(cols, ctx) {
101
- return cols.map((c) => ` ${c.name}${isInsertOptional(c) ? "?" : ""}: ${tsType(c, ctx)}`).join("\n");
102
- }
103
- function genUpdate(cols, ctx) {
104
- return cols.map((c) => ` ${c.name}?: ${tsType(c, ctx)}`).join("\n");
105
- }
106
- function genRelationships(t) {
107
- const fks = t.columns.filter((c) => c.references);
108
- if (fks.length === 0) return "[]";
109
- const groups = /* @__PURE__ */ new Map();
110
- for (const c of fks) {
111
- const ref = c.references;
112
- const name = ref.constraint_name ?? `${t.name}_${c.name}_fkey`;
113
- const key = ref.constraint_name ?? `\0synthetic\0${c.name}`;
114
- let g = groups.get(key);
115
- if (!g) {
116
- g = { name, columns: [], refTable: ref.table, refColumns: [], cols: [] };
117
- groups.set(key, g);
118
- }
119
- g.columns.push(c.name);
120
- g.refColumns.push(ref.column);
121
- g.cols.push(c);
122
- }
123
- const entries = [...groups.values()].map((g) => {
124
- const isOneToOne = g.cols.every((c) => c.unique || t.primary_key === c.name);
125
- const cols = g.columns.map((c) => `'${c}'`).join(", ");
126
- const refCols = g.refColumns.map((c) => `'${c}'`).join(", ");
127
- return ` {
128
- foreignKeyName: '${g.name}'
129
- columns: [${cols}]
130
- isOneToOne: ${isOneToOne}
131
- referencedRelation: '${g.refTable}'
132
- referencedColumns: [${refCols}]
133
- }`;
134
- });
135
- return `[
136
- ${entries.join(",\n")}
137
- ]`;
138
- }
139
- function genFunctionArgs(fn, ctx) {
140
- const inputArgs = fn.args.filter((a) => a.mode.toUpperCase() !== "OUT");
141
- if (inputArgs.length === 0) return "Record<string, never>";
142
- const entries = inputArgs.map((a) => `${a.name}: ${mapPgType(a.data_type, ctx)}`).join("; ");
143
- return `{ ${entries} }`;
144
- }
145
- function mapReturnType(fn, ctx) {
146
- const base = mapPgType(fn.returns, ctx);
147
- if (!fn.is_set_returning) return base;
148
- return base === "unknown" ? "Record<string, unknown>[]" : `${base}[]`;
149
- }
150
- function genSetofOptions(fn, ctx) {
151
- if (!fn.is_set_returning) return null;
152
- const to = ctx.relationNames.has(fn.returns) ? fn.returns : fn.name;
153
- return `{ isSetofReturn: true; isOneToOne: false; to: '${to}'; from: '*' }`;
154
- }
155
- function genFunctionsBody(functions, ctx) {
156
- if (functions.length === 0) return "Record<string, never>";
157
- const groups = /* @__PURE__ */ new Map();
158
- for (const fn of functions) {
159
- const g = groups.get(fn.name);
160
- if (g) g.push(fn);
161
- else groups.set(fn.name, [fn]);
162
- }
163
- const entries = [...groups.values()].map((overloads) => {
164
- const argsUnion = uniq(overloads.map((fn) => genFunctionArgs(fn, ctx))).join(" | ");
165
- const returnsUnion = uniq(overloads.map((fn) => mapReturnType(fn, ctx))).join(" | ");
166
- const lines = [
167
- ` ${overloads[0].name}: {`,
168
- ` Args: ${argsUnion}`,
169
- ` Returns: ${returnsUnion}`
170
- ];
171
- if (overloads.length === 1) {
172
- const setofOptions = genSetofOptions(overloads[0], ctx);
173
- if (setofOptions) lines.push(` SetofOptions: ${setofOptions}`);
174
- }
175
- lines.push(" }");
176
- return lines.join("\n");
177
- });
178
- return `{
179
- ${entries.join("\n")}
180
- }`;
181
- }
182
- function uniq(items) {
183
- return [...new Set(items)];
184
- }
185
- function genEnumsBody(enums) {
186
- if (enums.length === 0) return "Record<string, never>";
187
- const entries = enums.map((e) => {
188
- const union = e.values.length === 0 ? "never" : e.values.map((v) => `'${v}'`).join(" | ");
189
- return ` ${e.name}: ${union}`;
190
- });
191
- return `{
192
- ${entries.join("\n")}
193
- }`;
194
- }
195
- function genViewsBody(views, ctx) {
196
- if (views.length === 0) return "Record<string, never>";
197
- const entries = views.map(
198
- (v) => ` ${v.name}: {
199
- Row: {
200
- ${genRow(v.columns, ctx)}
201
- }
202
- Relationships: []
203
- }`
204
- );
205
- return `{
206
- ${entries.join("\n")}
207
- }`;
208
- }
209
- var HEADER = `// ============================================================
210
- // Types TypeScript auto-g\xE9n\xE9r\xE9s par Aurabase (@aurabase/gen)
211
- // NE PAS MODIFIER \u2014 r\xE9g\xE9n\xE9rer avec \`npx @aurabase/gen\`
212
- // ============================================================
213
- `;
214
- function generateDatabaseTypes(tables, options = {}) {
215
- const schemaName = options.schemaName ?? "public";
216
- const typeName = options.typeName ?? "Database";
217
- const enums = options.enums ?? [];
218
- const views = options.views ?? [];
219
- const relationNames = new Set([...tables, ...views].map((r) => r.name));
220
- const ctx = { typeName, schemaName, enumNames: new Set(enums.map((e) => e.name)), relationNames };
221
- const functionsBody = genFunctionsBody(options.functions ?? [], ctx);
222
- const enumsBody = genEnumsBody(enums);
223
- const viewsBody = genViewsBody(views, ctx);
224
- const tablesBody = tables.length === 0 ? "Record<string, never>" : `{
225
- ${tables.map(
226
- (t) => ` ${t.name}: {
227
- Row: {
228
- ${genRow(t.columns, ctx)}
229
- }
230
- Insert: {
231
- ${genInsert(t.columns, ctx)}
232
- }
233
- Update: {
234
- ${genUpdate(t.columns, ctx)}
235
- }
236
- Relationships: ${genRelationships(t)}
237
- }`
238
- ).join("\n")}
239
- }`;
240
- return `${HEADER}
241
- export type Json =
242
- | string
243
- | number
244
- | boolean
245
- | null
246
- | { [key: string]: Json | undefined }
247
- | Json[]
248
-
249
- export interface ${typeName} {
250
- ${schemaName}: {
251
- Tables: ${tablesBody}
252
- Views: ${viewsBody}
253
- Functions: ${functionsBody}
254
- Enums: ${enumsBody}
255
- CompositeTypes: Record<string, never>
256
- }
257
- }
258
- `;
259
- }
260
-
261
- // src/cli.ts
262
- function parseArgs(argv) {
263
- const a = {};
264
- for (let i = 0; i < argv.length; i++) {
265
- const v = argv[i + 1];
266
- switch (argv[i]) {
267
- case "--url":
268
- a.url = v;
269
- i++;
270
- break;
271
- case "--project":
272
- a.project = v;
273
- i++;
274
- break;
275
- case "--key":
276
- a.key = v;
277
- i++;
278
- break;
279
- case "--out":
280
- a.out = v;
281
- i++;
282
- break;
283
- case "--schema":
284
- a.schema = v;
285
- i++;
286
- break;
287
- case "--type-name":
288
- a.typeName = v;
289
- i++;
290
- break;
291
- }
292
- }
293
- return a;
294
- }
295
- var USAGE = `Usage: aurabase-gen --url <baseUrl> --project <id> [--key <apiKey>] [--out database.types.ts] [--schema public] [--type-name Database]`;
296
- async function main() {
297
- const args = parseArgs(process.argv.slice(2));
298
- if (!args.url || !args.project) {
299
- console.error(USAGE);
300
- process.exit(1);
301
- }
302
- const client = aurabase.createClient(args.url, args.project, args.key);
303
- const { data, error } = await client.db.schema();
304
- if (error) {
305
- console.error(`[aurabase-gen] Erreur de r\xE9cup\xE9ration du sch\xE9ma : ${error.message}`);
306
- process.exit(1);
307
- }
308
- const tables = data?.tables ?? [];
309
- const functions = data?.functions ?? [];
310
- const enums = data?.enums ?? [];
311
- const views = data?.views ?? [];
312
- if (tables.length === 0) {
313
- console.error("[aurabase-gen] Avertissement : sch\xE9ma vide (aucune table).");
314
- }
315
- const output = generateDatabaseTypes(tables, {
316
- schemaName: args.schema,
317
- typeName: args.typeName,
318
- functions,
319
- enums,
320
- views
321
- });
322
- if (args.out) {
323
- fs.writeFileSync(args.out, output);
324
- console.error(
325
- `[aurabase-gen] \u2713 Types \xE9crits dans ${args.out} (${tables.length} table(s), ${functions.length} fonction(s), ${enums.length} enum(s), ${views.length} vue(s)).`
326
- );
327
- } else {
328
- process.stdout.write(output);
329
- }
330
- }
331
- main().catch((e) => {
332
- console.error("[aurabase-gen]", e instanceof Error ? e.message : e);
333
- process.exit(1);
334
- });
@@ -1 +0,0 @@
1
- #!/usr/bin/env node
@@ -1 +0,0 @@
1
- #!/usr/bin/env node