@ariacode/cli 0.1.0 → 0.2.2
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 +190 -5
- package/dist/actions/db-ask.d.ts +16 -0
- package/dist/actions/db-ask.js +130 -0
- package/dist/actions/db-ask.js.map +1 -0
- package/dist/actions/db-explain.d.ts +16 -0
- package/dist/actions/db-explain.js +123 -0
- package/dist/actions/db-explain.js.map +1 -0
- package/dist/actions/db-migrate.d.ts +17 -0
- package/dist/actions/db-migrate.js +124 -0
- package/dist/actions/db-migrate.js.map +1 -0
- package/dist/actions/db-schema.d.ts +11 -0
- package/dist/actions/db-schema.js +38 -0
- package/dist/actions/db-schema.js.map +1 -0
- package/dist/actions/upgrade-deps.d.ts +18 -0
- package/dist/actions/upgrade-deps.js +227 -0
- package/dist/actions/upgrade-deps.js.map +1 -0
- package/dist/actions/upgrade-prisma.d.ts +16 -0
- package/dist/actions/upgrade-prisma.js +177 -0
- package/dist/actions/upgrade-prisma.js.map +1 -0
- package/dist/actions.d.ts +20 -0
- package/dist/actions.js +105 -36
- package/dist/actions.js.map +1 -1
- package/dist/agent.js +28 -9
- package/dist/agent.js.map +1 -1
- package/dist/cli.js +102 -0
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +16 -0
- package/dist/config.js +39 -0
- package/dist/config.js.map +1 -1
- package/dist/db/client-usage.d.ts +19 -0
- package/dist/db/client-usage.js +107 -0
- package/dist/db/client-usage.js.map +1 -0
- package/dist/db/migrate.d.ts +26 -0
- package/dist/db/migrate.js +59 -0
- package/dist/db/migrate.js.map +1 -0
- package/dist/db/schema.d.ts +106 -0
- package/dist/db/schema.js +275 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/db/summary.d.ts +12 -0
- package/dist/db/summary.js +133 -0
- package/dist/db/summary.js.map +1 -0
- package/dist/fs-helpers.d.ts +19 -0
- package/dist/fs-helpers.js +92 -0
- package/dist/fs-helpers.js.map +1 -0
- package/dist/parser.d.ts +11 -0
- package/dist/parser.js +102 -0
- package/dist/parser.js.map +1 -1
- package/dist/prompt-loader.d.ts +9 -0
- package/dist/prompt-loader.js +26 -0
- package/dist/prompt-loader.js.map +1 -0
- package/dist/prompts/db_ask.md +39 -0
- package/dist/prompts/db_explain.md +43 -0
- package/dist/prompts/db_migrate.md +48 -0
- package/dist/prompts/upgrade_deps.md +23 -0
- package/dist/prompts/upgrade_prisma.md +28 -0
- package/dist/provider.d.ts +9 -2
- package/dist/provider.js +12 -39
- package/dist/provider.js.map +1 -1
- package/dist/storage.d.ts +11 -0
- package/dist/storage.js +36 -4
- package/dist/storage.js.map +1 -1
- package/dist/tools.d.ts +26 -0
- package/dist/tools.js +256 -8
- package/dist/tools.js.map +1 -1
- package/dist/upgrade/changelog.d.ts +21 -0
- package/dist/upgrade/changelog.js +62 -0
- package/dist/upgrade/changelog.js.map +1 -0
- package/dist/upgrade/classifier.d.ts +25 -0
- package/dist/upgrade/classifier.js +78 -0
- package/dist/upgrade/classifier.js.map +1 -0
- package/dist/upgrade/outdated.d.ts +17 -0
- package/dist/upgrade/outdated.js +138 -0
- package/dist/upgrade/outdated.js.map +1 -0
- package/dist/upgrade/prisma-upgrade.d.ts +20 -0
- package/dist/upgrade/prisma-upgrade.js +66 -0
- package/dist/upgrade/prisma-upgrade.js.map +1 -0
- package/package.json +7 -4
- package/dist/prompts/prompts/ask.md +0 -20
- package/dist/prompts/prompts/explore.md +0 -38
- package/dist/prompts/prompts/patch.md +0 -27
- package/dist/prompts/prompts/plan.md +0 -41
- package/dist/prompts/prompts/review.md +0 -33
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prisma schema parser — wraps @mrleebo/prisma-ast to provide a clean typed interface.
|
|
3
|
+
* Schema-aware only: no database connections, no DATABASE_URL parsing.
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import { getSchema } from '@mrleebo/prisma-ast';
|
|
7
|
+
import * as fs from 'node:fs';
|
|
8
|
+
import * as path from 'node:path';
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
// Zod schemas & types
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
export const PrismaFieldSchema = z.object({
|
|
13
|
+
name: z.string(),
|
|
14
|
+
type: z.string(),
|
|
15
|
+
isList: z.boolean(),
|
|
16
|
+
isOptional: z.boolean(),
|
|
17
|
+
isId: z.boolean(),
|
|
18
|
+
isUnique: z.boolean(),
|
|
19
|
+
isRelation: z.boolean(),
|
|
20
|
+
relationName: z.string().nullable(),
|
|
21
|
+
relationFields: z.array(z.string()).default([]),
|
|
22
|
+
relationReferences: z.array(z.string()).default([]),
|
|
23
|
+
defaultValue: z.string().nullable(),
|
|
24
|
+
attributes: z.array(z.string()).default([]),
|
|
25
|
+
});
|
|
26
|
+
export const PrismaModelSchema = z.object({
|
|
27
|
+
name: z.string(),
|
|
28
|
+
fields: z.array(PrismaFieldSchema),
|
|
29
|
+
indexes: z
|
|
30
|
+
.array(z.object({
|
|
31
|
+
fields: z.array(z.string()),
|
|
32
|
+
type: z.enum(['index', 'unique', 'fulltext']),
|
|
33
|
+
name: z.string().nullable(),
|
|
34
|
+
}))
|
|
35
|
+
.default([]),
|
|
36
|
+
documentation: z.string().nullable(),
|
|
37
|
+
});
|
|
38
|
+
export const PrismaEnumSchema = z.object({
|
|
39
|
+
name: z.string(),
|
|
40
|
+
values: z.array(z.string()),
|
|
41
|
+
documentation: z.string().nullable(),
|
|
42
|
+
});
|
|
43
|
+
export const PrismaSchemaInfoSchema = z.object({
|
|
44
|
+
path: z.string(),
|
|
45
|
+
datasourceProvider: z.string().nullable(),
|
|
46
|
+
models: z.array(PrismaModelSchema),
|
|
47
|
+
enums: z.array(PrismaEnumSchema),
|
|
48
|
+
generators: z
|
|
49
|
+
.array(z.object({
|
|
50
|
+
name: z.string(),
|
|
51
|
+
provider: z.string(),
|
|
52
|
+
}))
|
|
53
|
+
.default([]),
|
|
54
|
+
});
|
|
55
|
+
// ---------------------------------------------------------------------------
|
|
56
|
+
// Schema path resolution
|
|
57
|
+
// ---------------------------------------------------------------------------
|
|
58
|
+
export function findSchemaPath(projectRoot) {
|
|
59
|
+
const resolvedRoot = path.resolve(projectRoot);
|
|
60
|
+
const candidates = [
|
|
61
|
+
path.join(resolvedRoot, 'prisma', 'schema.prisma'),
|
|
62
|
+
path.join(resolvedRoot, 'schema.prisma'),
|
|
63
|
+
];
|
|
64
|
+
// Verify candidates are within project root (defense in depth)
|
|
65
|
+
return candidates.find((p) => p.startsWith(resolvedRoot) && fs.existsSync(p)) ?? null;
|
|
66
|
+
}
|
|
67
|
+
// ---------------------------------------------------------------------------
|
|
68
|
+
// AST extraction helpers
|
|
69
|
+
// ---------------------------------------------------------------------------
|
|
70
|
+
function extractDatasourceProvider(ast) {
|
|
71
|
+
const ds = ast.list.find((n) => n.type === 'datasource');
|
|
72
|
+
if (!ds)
|
|
73
|
+
return null;
|
|
74
|
+
const providerAssignment = ds.assignments?.find((a) => a.key === 'provider');
|
|
75
|
+
if (!providerAssignment)
|
|
76
|
+
return null;
|
|
77
|
+
const raw = providerAssignment.value;
|
|
78
|
+
if (typeof raw === 'string')
|
|
79
|
+
return raw.replace(/^"|"$/g, '');
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
function extractGenerators(ast) {
|
|
83
|
+
return ast.list
|
|
84
|
+
.filter((n) => n.type === 'generator')
|
|
85
|
+
.map((gen) => {
|
|
86
|
+
const providerAssignment = gen.assignments?.find((a) => a.key === 'provider');
|
|
87
|
+
const raw = providerAssignment?.value ?? '';
|
|
88
|
+
const provider = typeof raw === 'string' ? raw.replace(/^"|"$/g, '') : String(raw);
|
|
89
|
+
return { name: gen.name, provider };
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
function extractDefaultValue(attr) {
|
|
93
|
+
if (!attr?.args?.length)
|
|
94
|
+
return null;
|
|
95
|
+
const arg = attr.args[0];
|
|
96
|
+
const val = arg?.value;
|
|
97
|
+
if (!val)
|
|
98
|
+
return null;
|
|
99
|
+
if (typeof val === 'string')
|
|
100
|
+
return val.replace(/^"|"$/g, '');
|
|
101
|
+
if (val.type === 'function') {
|
|
102
|
+
const params = val.params?.map((p) => (typeof p === 'string' ? p.replace(/^"|"$/g, '') : String(p))).join(', ') ?? '';
|
|
103
|
+
return params ? `${val.name}(${params})` : `${val.name}()`;
|
|
104
|
+
}
|
|
105
|
+
return String(val);
|
|
106
|
+
}
|
|
107
|
+
function extractRelationArgs(attr) {
|
|
108
|
+
const result = { fields: [], references: [], name: null };
|
|
109
|
+
if (!attr?.args)
|
|
110
|
+
return result;
|
|
111
|
+
for (const arg of attr.args) {
|
|
112
|
+
const kv = arg?.value;
|
|
113
|
+
if (!kv)
|
|
114
|
+
continue;
|
|
115
|
+
if (kv.type === 'keyValue') {
|
|
116
|
+
if (kv.key === 'fields' && kv.value?.type === 'array') {
|
|
117
|
+
result.fields = (kv.value.args ?? []).map((a) => typeof a === 'string' ? a : String(a));
|
|
118
|
+
}
|
|
119
|
+
else if (kv.key === 'references' && kv.value?.type === 'array') {
|
|
120
|
+
result.references = (kv.value.args ?? []).map((a) => typeof a === 'string' ? a : String(a));
|
|
121
|
+
}
|
|
122
|
+
else if (kv.key === 'name') {
|
|
123
|
+
result.name = typeof kv.value === 'string' ? kv.value.replace(/^"|"$/g, '') : null;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
else if (typeof kv === 'string') {
|
|
127
|
+
// positional name argument
|
|
128
|
+
result.name = kv.replace(/^"|"$/g, '');
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return result;
|
|
132
|
+
}
|
|
133
|
+
function extractField(prop, modelNames) {
|
|
134
|
+
const attrs = [];
|
|
135
|
+
let isId = false;
|
|
136
|
+
let isUnique = false;
|
|
137
|
+
let isRelation = false;
|
|
138
|
+
let relationName = null;
|
|
139
|
+
let relationFields = [];
|
|
140
|
+
let relationReferences = [];
|
|
141
|
+
let defaultValue = null;
|
|
142
|
+
for (const attr of prop.attributes ?? []) {
|
|
143
|
+
if (attr.type !== 'attribute')
|
|
144
|
+
continue;
|
|
145
|
+
const name = attr.name;
|
|
146
|
+
attrs.push(name);
|
|
147
|
+
if (name === 'id')
|
|
148
|
+
isId = true;
|
|
149
|
+
if (name === 'unique')
|
|
150
|
+
isUnique = true;
|
|
151
|
+
if (name === 'default')
|
|
152
|
+
defaultValue = extractDefaultValue(attr);
|
|
153
|
+
if (name === 'relation') {
|
|
154
|
+
const rel = extractRelationArgs(attr);
|
|
155
|
+
relationName = rel.name;
|
|
156
|
+
relationFields = rel.fields;
|
|
157
|
+
relationReferences = rel.references;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// A field is a relation if its type is a known model name
|
|
161
|
+
const fieldType = typeof prop.fieldType === 'string' ? prop.fieldType : String(prop.fieldType ?? '');
|
|
162
|
+
if (modelNames.has(fieldType)) {
|
|
163
|
+
isRelation = true;
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
name: prop.name,
|
|
167
|
+
type: fieldType,
|
|
168
|
+
isList: Boolean(prop.array),
|
|
169
|
+
isOptional: Boolean(prop.optional),
|
|
170
|
+
isId,
|
|
171
|
+
isUnique,
|
|
172
|
+
isRelation,
|
|
173
|
+
relationName,
|
|
174
|
+
relationFields,
|
|
175
|
+
relationReferences,
|
|
176
|
+
defaultValue,
|
|
177
|
+
attributes: attrs,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
function extractIndexes(properties) {
|
|
181
|
+
const indexes = [];
|
|
182
|
+
for (const prop of properties) {
|
|
183
|
+
if (prop.type !== 'attribute' || prop.kind !== 'object')
|
|
184
|
+
continue;
|
|
185
|
+
const name = prop.name;
|
|
186
|
+
if (name !== 'index' && name !== 'unique' && name !== 'fulltext')
|
|
187
|
+
continue;
|
|
188
|
+
let fields = [];
|
|
189
|
+
let indexName = null;
|
|
190
|
+
for (const arg of prop.args ?? []) {
|
|
191
|
+
const val = arg?.value;
|
|
192
|
+
if (!val)
|
|
193
|
+
continue;
|
|
194
|
+
if (val.type === 'array') {
|
|
195
|
+
fields = (val.args ?? []).map((a) => typeof a === 'string' ? a : String(a));
|
|
196
|
+
}
|
|
197
|
+
else if (val.type === 'keyValue') {
|
|
198
|
+
if (val.key === 'fields' && val.value?.type === 'array') {
|
|
199
|
+
fields = (val.value.args ?? []).map((a) => typeof a === 'string' ? a : String(a));
|
|
200
|
+
}
|
|
201
|
+
else if (val.key === 'name') {
|
|
202
|
+
indexName = typeof val.value === 'string' ? val.value.replace(/^"|"$/g, '') : null;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
indexes.push({ fields, type: name, name: indexName });
|
|
207
|
+
}
|
|
208
|
+
return indexes;
|
|
209
|
+
}
|
|
210
|
+
function extractModels(ast) {
|
|
211
|
+
const modelNodes = ast.list.filter((n) => n.type === 'model');
|
|
212
|
+
const modelNames = new Set(modelNodes.map((m) => m.name));
|
|
213
|
+
return modelNodes.map((model) => {
|
|
214
|
+
const properties = model.properties ?? [];
|
|
215
|
+
const fields = properties
|
|
216
|
+
.filter((p) => p.type === 'field')
|
|
217
|
+
.map((p) => extractField(p, modelNames));
|
|
218
|
+
const indexes = extractIndexes(properties);
|
|
219
|
+
// Extract documentation (/// comments stored as comment nodes before the model)
|
|
220
|
+
const docNode = properties.find((p) => p.type === 'comment' && p.text?.startsWith('///'));
|
|
221
|
+
const documentation = docNode ? docNode.text.replace(/^\/\/\/\s?/, '').trim() : null;
|
|
222
|
+
return { name: model.name, fields, indexes, documentation };
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
function extractEnums(ast) {
|
|
226
|
+
return ast.list
|
|
227
|
+
.filter((n) => n.type === 'enum')
|
|
228
|
+
.map((enumNode) => {
|
|
229
|
+
const values = (enumNode.enumerators ?? [])
|
|
230
|
+
.filter((e) => e.type === 'enumerator')
|
|
231
|
+
.map((e) => e.name);
|
|
232
|
+
return { name: enumNode.name, values, documentation: null };
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
// ---------------------------------------------------------------------------
|
|
236
|
+
// Public API
|
|
237
|
+
// ---------------------------------------------------------------------------
|
|
238
|
+
/**
|
|
239
|
+
* Parse schema.prisma file into structured format.
|
|
240
|
+
* Returns null if no schema found.
|
|
241
|
+
* Throws on parse errors so callers can distinguish "no schema" from "bad schema".
|
|
242
|
+
*/
|
|
243
|
+
export function parsePrismaSchema(projectRoot) {
|
|
244
|
+
const schemaPath = findSchemaPath(projectRoot);
|
|
245
|
+
if (!schemaPath)
|
|
246
|
+
return null;
|
|
247
|
+
const content = fs.readFileSync(schemaPath, 'utf-8');
|
|
248
|
+
try {
|
|
249
|
+
const ast = getSchema(content);
|
|
250
|
+
return {
|
|
251
|
+
path: path.relative(projectRoot, schemaPath),
|
|
252
|
+
datasourceProvider: extractDatasourceProvider(ast),
|
|
253
|
+
models: extractModels(ast),
|
|
254
|
+
enums: extractEnums(ast),
|
|
255
|
+
generators: extractGenerators(ast),
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
catch (err) {
|
|
259
|
+
throw new Error(`Failed to parse ${path.relative(projectRoot, schemaPath)}: ${err instanceof Error ? err.message : String(err)}`);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Parse schema.prisma from raw content string (for testing / propose_schema_change).
|
|
264
|
+
*/
|
|
265
|
+
export function parsePrismaSchemaContent(content) {
|
|
266
|
+
const ast = getSchema(content);
|
|
267
|
+
return {
|
|
268
|
+
path: 'schema.prisma',
|
|
269
|
+
datasourceProvider: extractDatasourceProvider(ast),
|
|
270
|
+
models: extractModels(ast),
|
|
271
|
+
enums: extractEnums(ast),
|
|
272
|
+
generators: extractGenerators(ast),
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;IACvB,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;IACjB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;IACrB,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;IACvB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/C,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACnD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC5C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;IAClC,OAAO,EAAE,CAAC;SACP,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC3B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC5B,CAAC,CACH;SACA,OAAO,CAAC,EAAE,CAAC;IACd,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;IAClC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;IAChC,UAAU,EAAE,CAAC;SACV,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;KACrB,CAAC,CACH;SACA,OAAO,CAAC,EAAE,CAAC;CACf,CAAC,CAAC;AAOH,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E,MAAM,UAAU,cAAc,CAAC,WAAmB;IAChD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,eAAe,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC;KACzC,CAAC;IACF,+DAA+D;IAC/D,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACxF,CAAC;AAED,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E,SAAS,yBAAyB,CAAC,GAAiC;IAClE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAQ,CAAC;IACrE,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IACrB,MAAM,kBAAkB,GAAG,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC;IAClF,IAAI,CAAC,kBAAkB;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC;IACrC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC9D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAiC;IAC1D,OAAO,GAAG,CAAC,IAAI;SACZ,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;SAC1C,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE;QAChB,MAAM,kBAAkB,GAAG,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC;QACnF,MAAM,GAAG,GAAG,kBAAkB,EAAE,KAAK,IAAI,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnF,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAc,EAAE,QAAQ,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAS;IACpC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,GAAG,GAAG,GAAG,EAAE,KAAK,CAAC;IACvB,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC9D,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3H,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC;IAC7D,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAS;IACpC,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,EAAc,EAAE,UAAU,EAAE,EAAc,EAAE,IAAI,EAAE,IAAqB,EAAE,CAAC;IACnG,IAAI,CAAC,IAAI,EAAE,IAAI;QAAE,OAAO,MAAM,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,EAAE,GAAG,GAAG,EAAE,KAAK,CAAC;QACtB,IAAI,CAAC,EAAE;YAAE,SAAS;QAClB,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC3B,IAAI,EAAE,CAAC,GAAG,KAAK,QAAQ,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;gBACtD,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/F,CAAC;iBAAM,IAAI,EAAE,CAAC,GAAG,KAAK,YAAY,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;gBACjE,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACnG,CAAC;iBAAM,IAAI,EAAE,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,GAAG,OAAO,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACrF,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;YAClC,2BAA2B;YAC3B,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,IAAS,EAAE,UAAuB;IACtD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,IAAI,cAAc,GAAa,EAAE,CAAC;IAClC,IAAI,kBAAkB,GAAa,EAAE,CAAC;IACtC,IAAI,YAAY,GAAkB,IAAI,CAAC;IAEvC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QACxC,MAAM,IAAI,GAAW,IAAI,CAAC,IAAI,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,IAAI,KAAK,IAAI;YAAE,IAAI,GAAG,IAAI,CAAC;QAC/B,IAAI,IAAI,KAAK,QAAQ;YAAE,QAAQ,GAAG,IAAI,CAAC;QACvC,IAAI,IAAI,KAAK,SAAS;YAAE,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACtC,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC;YACxB,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC;YAC5B,kBAAkB,GAAG,GAAG,CAAC,UAAU,CAAC;QACtC,CAAC;IACH,CAAC;IAED,0DAA0D;IAC1D,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACrG,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAc;QACzB,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3B,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QAClC,IAAI;QACJ,QAAQ;QACR,UAAU;QACV,YAAY;QACZ,cAAc;QACd,kBAAkB;QAClB,YAAY;QACZ,UAAU,EAAE,KAAK;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,UAAiB;IAEjB,MAAM,OAAO,GAA4F,EAAE,CAAC;IAE5G,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAS;QAClE,MAAM,IAAI,GAAW,IAAI,CAAC,IAAI,CAAC;QAC/B,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU;YAAE,SAAS;QAE3E,IAAI,MAAM,GAAa,EAAE,CAAC;QAC1B,IAAI,SAAS,GAAkB,IAAI,CAAC;QAEpC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,GAAG,EAAE,KAAK,CAAC;YACvB,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACzB,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACnC,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;oBACxD,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzF,CAAC;qBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;oBAC9B,SAAS,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACrF,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAuC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,aAAa,CAAC,GAAiC;IACtD,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAU,CAAC;IAC5E,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAc,CAAC,CAAC,CAAC;IAEzE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE;QACnC,MAAM,UAAU,GAAU,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,UAAU;aACtB,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;aACtC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;QAEhD,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QAE3C,gFAAgF;QAChF,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/F,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAE,OAAO,CAAC,IAAe,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAEjG,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAc,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,GAAiC;IACrD,OAAO,GAAG,CAAC,IAAI;SACZ,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;SACrC,GAAG,CAAC,CAAC,QAAa,EAAE,EAAE;QACrB,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC;aACxC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC;aAC3C,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAc,CAAC,CAAC;QACrC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAc,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IACxE,CAAC,CAAC,CAAC;AACP,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAE7B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACrD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAE/B,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;YAC5C,kBAAkB,EAAE,yBAAyB,CAAC,GAAG,CAAC;YAClD,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC;YAC1B,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC;YACxB,UAAU,EAAE,iBAAiB,CAAC,GAAG,CAAC;SACnC,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,mBAAmB,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACjH,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,kBAAkB,EAAE,yBAAyB,CAAC,GAAG,CAAC;QAClD,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC;QAC1B,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC;QACxB,UAAU,EAAE,iBAAiB,CAAC,GAAG,CAAC;KACnC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Human-readable terminal rendering of a parsed Prisma schema.
|
|
3
|
+
*/
|
|
4
|
+
import type { PrismaSchemaInfo, PrismaModel } from './schema.js';
|
|
5
|
+
/**
|
|
6
|
+
* Render a full schema summary to a string for terminal output.
|
|
7
|
+
*/
|
|
8
|
+
export declare function renderSchemaSummary(info: PrismaSchemaInfo, colorEnabled?: boolean): string;
|
|
9
|
+
/**
|
|
10
|
+
* Render a single model summary (for --model filter).
|
|
11
|
+
*/
|
|
12
|
+
export declare function renderModelSummary(model: PrismaModel, colorEnabled?: boolean): string;
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Human-readable terminal rendering of a parsed Prisma schema.
|
|
3
|
+
*/
|
|
4
|
+
import pc from 'picocolors';
|
|
5
|
+
import Table from 'cli-table3';
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
// Field rendering helpers
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
function fieldTypeLabel(field) {
|
|
10
|
+
const base = field.type;
|
|
11
|
+
const suffix = field.isList ? '[]' : field.isOptional ? '?' : '';
|
|
12
|
+
return base + suffix;
|
|
13
|
+
}
|
|
14
|
+
function fieldModifiers(field) {
|
|
15
|
+
const mods = [];
|
|
16
|
+
if (field.isId)
|
|
17
|
+
mods.push('@id');
|
|
18
|
+
if (field.isUnique)
|
|
19
|
+
mods.push('@unique');
|
|
20
|
+
if (field.defaultValue !== null)
|
|
21
|
+
mods.push(`@default(${field.defaultValue})`);
|
|
22
|
+
if (field.isRelation)
|
|
23
|
+
mods.push('relation');
|
|
24
|
+
return mods.join(' ');
|
|
25
|
+
}
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
// Model rendering
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
function renderModel(model, colorEnabled) {
|
|
30
|
+
const lines = [];
|
|
31
|
+
const name = colorEnabled ? pc.bold(pc.cyan(model.name)) : model.name;
|
|
32
|
+
lines.push(` ${name}`);
|
|
33
|
+
if (model.documentation) {
|
|
34
|
+
lines.push(` ${colorEnabled ? pc.dim(model.documentation) : model.documentation}`);
|
|
35
|
+
}
|
|
36
|
+
// Fields table
|
|
37
|
+
const table = new Table({
|
|
38
|
+
head: ['Field', 'Type', 'Modifiers'].map((h) => (colorEnabled ? pc.bold(h) : h)),
|
|
39
|
+
style: { head: [], border: [] },
|
|
40
|
+
chars: {
|
|
41
|
+
top: '─',
|
|
42
|
+
'top-mid': '┬',
|
|
43
|
+
'top-left': '┌',
|
|
44
|
+
'top-right': '┐',
|
|
45
|
+
bottom: '─',
|
|
46
|
+
'bottom-mid': '┴',
|
|
47
|
+
'bottom-left': '└',
|
|
48
|
+
'bottom-right': '┘',
|
|
49
|
+
left: '│',
|
|
50
|
+
'left-mid': '├',
|
|
51
|
+
mid: '─',
|
|
52
|
+
'mid-mid': '┼',
|
|
53
|
+
right: '│',
|
|
54
|
+
'right-mid': '┤',
|
|
55
|
+
middle: '│',
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
for (const field of model.fields) {
|
|
59
|
+
const typeStr = fieldTypeLabel(field);
|
|
60
|
+
const mods = fieldModifiers(field);
|
|
61
|
+
table.push([
|
|
62
|
+
colorEnabled && field.isId ? pc.yellow(field.name) : field.name,
|
|
63
|
+
colorEnabled && field.isRelation ? pc.magenta(typeStr) : typeStr,
|
|
64
|
+
colorEnabled ? pc.dim(mods) : mods,
|
|
65
|
+
]);
|
|
66
|
+
}
|
|
67
|
+
// Indent table lines
|
|
68
|
+
const tableStr = table.toString();
|
|
69
|
+
for (const line of tableStr.split('\n')) {
|
|
70
|
+
lines.push(' ' + line);
|
|
71
|
+
}
|
|
72
|
+
// Indexes
|
|
73
|
+
if (model.indexes.length > 0) {
|
|
74
|
+
const indexStr = model.indexes
|
|
75
|
+
.map((idx) => {
|
|
76
|
+
const label = idx.type === 'unique' ? '@@unique' : idx.type === 'fulltext' ? '@@fulltext' : '@@index';
|
|
77
|
+
return `${label}([${idx.fields.join(', ')}])${idx.name ? ` "${idx.name}"` : ''}`;
|
|
78
|
+
})
|
|
79
|
+
.join(', ');
|
|
80
|
+
const prefix = colorEnabled ? pc.dim('Indexes:') : 'Indexes:';
|
|
81
|
+
lines.push(` ${prefix} ${indexStr}`);
|
|
82
|
+
}
|
|
83
|
+
return lines.join('\n');
|
|
84
|
+
}
|
|
85
|
+
// ---------------------------------------------------------------------------
|
|
86
|
+
// Public API
|
|
87
|
+
// ---------------------------------------------------------------------------
|
|
88
|
+
/**
|
|
89
|
+
* Render a full schema summary to a string for terminal output.
|
|
90
|
+
*/
|
|
91
|
+
export function renderSchemaSummary(info, colorEnabled = true) {
|
|
92
|
+
const lines = [];
|
|
93
|
+
const header = colorEnabled
|
|
94
|
+
? pc.bold(`Prisma Schema: ${info.path}`)
|
|
95
|
+
: `Prisma Schema: ${info.path}`;
|
|
96
|
+
lines.push(header);
|
|
97
|
+
if (info.datasourceProvider) {
|
|
98
|
+
const providerLine = colorEnabled
|
|
99
|
+
? pc.dim(`Provider: ${info.datasourceProvider}`)
|
|
100
|
+
: `Provider: ${info.datasourceProvider}`;
|
|
101
|
+
lines.push(providerLine);
|
|
102
|
+
}
|
|
103
|
+
lines.push('');
|
|
104
|
+
// Models
|
|
105
|
+
const modelsHeader = colorEnabled
|
|
106
|
+
? pc.bold(`Models (${info.models.length})`)
|
|
107
|
+
: `Models (${info.models.length})`;
|
|
108
|
+
lines.push(modelsHeader);
|
|
109
|
+
for (const model of info.models) {
|
|
110
|
+
lines.push('');
|
|
111
|
+
lines.push(renderModel(model, colorEnabled));
|
|
112
|
+
}
|
|
113
|
+
// Enums
|
|
114
|
+
if (info.enums.length > 0) {
|
|
115
|
+
lines.push('');
|
|
116
|
+
const enumsHeader = colorEnabled
|
|
117
|
+
? pc.bold(`Enums (${info.enums.length})`)
|
|
118
|
+
: `Enums (${info.enums.length})`;
|
|
119
|
+
lines.push(enumsHeader);
|
|
120
|
+
for (const enumDef of info.enums) {
|
|
121
|
+
const enumName = colorEnabled ? pc.cyan(enumDef.name) : enumDef.name;
|
|
122
|
+
lines.push(` ${enumName}: ${enumDef.values.join(', ')}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return lines.join('\n');
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Render a single model summary (for --model filter).
|
|
129
|
+
*/
|
|
130
|
+
export function renderModelSummary(model, colorEnabled = true) {
|
|
131
|
+
return renderModel(model, colorEnabled);
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/db/summary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared filesystem helpers — atomic writes, safe JSON parsing.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Atomically write a file by writing to a temp file first, then renaming.
|
|
6
|
+
* - Uses fsync to ensure data is flushed to disk before rename.
|
|
7
|
+
* - Preserves original file permissions (important for 0600 config files).
|
|
8
|
+
* - Temp file is named with the target basename for easy orphan attribution.
|
|
9
|
+
*/
|
|
10
|
+
export declare function writeFileAtomic(filePath: string, content: string): void;
|
|
11
|
+
/**
|
|
12
|
+
* Safely read and parse a JSON file. Throws a descriptive error on failure.
|
|
13
|
+
*/
|
|
14
|
+
export declare function readJsonFile(filePath: string): unknown;
|
|
15
|
+
/**
|
|
16
|
+
* Detect the user's shell rc file based on $SHELL.
|
|
17
|
+
* macOS bash uses .bash_profile (not .bashrc). Linux bash uses .bashrc.
|
|
18
|
+
*/
|
|
19
|
+
export declare function getShellRcPath(): string;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared filesystem helpers — atomic writes, safe JSON parsing.
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from 'node:fs';
|
|
5
|
+
import * as path from 'node:path';
|
|
6
|
+
import * as os from 'node:os';
|
|
7
|
+
import { randomUUID } from 'node:crypto';
|
|
8
|
+
/**
|
|
9
|
+
* Atomically write a file by writing to a temp file first, then renaming.
|
|
10
|
+
* - Uses fsync to ensure data is flushed to disk before rename.
|
|
11
|
+
* - Preserves original file permissions (important for 0600 config files).
|
|
12
|
+
* - Temp file is named with the target basename for easy orphan attribution.
|
|
13
|
+
*/
|
|
14
|
+
export function writeFileAtomic(filePath, content) {
|
|
15
|
+
const dir = path.dirname(filePath);
|
|
16
|
+
const base = path.basename(filePath);
|
|
17
|
+
const tmpPath = path.join(dir, `.${base}.tmp-${randomUUID().slice(0, 8)}`);
|
|
18
|
+
// Capture original permissions before writing (if file exists).
|
|
19
|
+
// Mask off file-type bits (S_IFMT) — we only want the permission bits.
|
|
20
|
+
let originalMode = null;
|
|
21
|
+
try {
|
|
22
|
+
originalMode = fs.statSync(filePath).mode & 0o7777;
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
// File doesn't exist yet — no permissions to preserve
|
|
26
|
+
}
|
|
27
|
+
// For new files, default to 0o644. Callers that need stricter permissions
|
|
28
|
+
// (e.g. 0o600 for config.toml) should chmod after writeFileAtomic returns,
|
|
29
|
+
// or the file should already exist with the desired mode.
|
|
30
|
+
const mode = originalMode ?? 0o644;
|
|
31
|
+
try {
|
|
32
|
+
// Write to temp file
|
|
33
|
+
const fd = fs.openSync(tmpPath, 'w', mode);
|
|
34
|
+
try {
|
|
35
|
+
fs.writeSync(fd, content);
|
|
36
|
+
fs.fsyncSync(fd);
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
fs.closeSync(fd);
|
|
40
|
+
}
|
|
41
|
+
// Ensure permissions match regardless of umask
|
|
42
|
+
fs.chmodSync(tmpPath, mode);
|
|
43
|
+
// Atomic rename
|
|
44
|
+
fs.renameSync(tmpPath, filePath);
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
// Clean up temp file on failure
|
|
48
|
+
try {
|
|
49
|
+
fs.unlinkSync(tmpPath);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// ignore cleanup errors
|
|
53
|
+
}
|
|
54
|
+
throw err;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Safely read and parse a JSON file. Throws a descriptive error on failure.
|
|
59
|
+
*/
|
|
60
|
+
export function readJsonFile(filePath) {
|
|
61
|
+
let raw;
|
|
62
|
+
try {
|
|
63
|
+
raw = fs.readFileSync(filePath, 'utf-8');
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
throw new Error(`Cannot read ${path.basename(filePath)}: ${err instanceof Error ? err.message : String(err)}`);
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
return JSON.parse(raw);
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
throw new Error(`Invalid JSON in ${path.basename(filePath)}: ${err instanceof Error ? err.message : String(err)}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Detect the user's shell rc file based on $SHELL.
|
|
77
|
+
* macOS bash uses .bash_profile (not .bashrc). Linux bash uses .bashrc.
|
|
78
|
+
*/
|
|
79
|
+
export function getShellRcPath() {
|
|
80
|
+
const shell = process.env['SHELL'] ?? '';
|
|
81
|
+
if (shell.endsWith('/zsh'))
|
|
82
|
+
return path.join(os.homedir(), '.zshrc');
|
|
83
|
+
if (shell.endsWith('/bash')) {
|
|
84
|
+
// macOS bash sources .bash_profile, not .bashrc
|
|
85
|
+
return path.join(os.homedir(), process.platform === 'darwin' ? '.bash_profile' : '.bashrc');
|
|
86
|
+
}
|
|
87
|
+
if (shell.endsWith('/fish'))
|
|
88
|
+
return path.join(os.homedir(), '.config', 'fish', 'config.fish');
|
|
89
|
+
// Default: zsh on macOS, bash on Linux
|
|
90
|
+
return path.join(os.homedir(), process.platform === 'darwin' ? '.zshrc' : '.bashrc');
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=fs-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-helpers.js","sourceRoot":"","sources":["../src/fs-helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/parser.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ export interface ParsedArgs {
|
|
|
12
12
|
session?: string;
|
|
13
13
|
quiet: boolean;
|
|
14
14
|
format: "text" | "json";
|
|
15
|
+
provider?: string;
|
|
16
|
+
model?: string;
|
|
15
17
|
maxTokens?: number;
|
|
16
18
|
output?: string;
|
|
17
19
|
unstaged?: boolean;
|
|
@@ -23,6 +25,15 @@ export interface ParsedArgs {
|
|
|
23
25
|
configSubcommand?: "get" | "set" | "path" | "init";
|
|
24
26
|
configKey?: string;
|
|
25
27
|
configValue?: string;
|
|
28
|
+
dbSubcommand?: "schema" | "ask" | "explain" | "migrate";
|
|
29
|
+
dbQuestion?: string;
|
|
30
|
+
dbDescription?: string;
|
|
31
|
+
dbModel?: string;
|
|
32
|
+
dbFile?: string;
|
|
33
|
+
dbJson?: boolean;
|
|
34
|
+
upgradeSubcommand?: "deps" | "prisma";
|
|
35
|
+
upgradeRisk?: "patch" | "minor" | "major" | "all";
|
|
36
|
+
upgradeDev?: boolean;
|
|
26
37
|
}
|
|
27
38
|
export declare const GLOBAL_USAGE: string;
|
|
28
39
|
export declare const COMMAND_USAGE: Record<string, string>;
|