@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
package/packages/gen/README.md
DELETED
|
@@ -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
|
-
 
|
|
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
|