drizzle-docs-generator 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.ja.md +89 -0
- package/README.md +89 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +69 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/generator/common.d.ts +393 -0
- package/dist/generator/common.d.ts.map +1 -0
- package/dist/generator/common.js +699 -0
- package/dist/generator/common.js.map +1 -0
- package/dist/generator/index.d.ts +15 -0
- package/dist/generator/index.d.ts.map +1 -0
- package/dist/generator/mysql.d.ts +36 -0
- package/dist/generator/mysql.d.ts.map +1 -0
- package/dist/generator/mysql.js +16 -0
- package/dist/generator/mysql.js.map +1 -0
- package/dist/generator/pg.d.ts +48 -0
- package/dist/generator/pg.d.ts.map +1 -0
- package/dist/generator/pg.js +52 -0
- package/dist/generator/pg.js.map +1 -0
- package/dist/generator/sqlite.d.ts +36 -0
- package/dist/generator/sqlite.d.ts.map +1 -0
- package/dist/generator/sqlite.js +16 -0
- package/dist/generator/sqlite.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/comments.d.ts +31 -0
- package/dist/parser/comments.d.ts.map +1 -0
- package/dist/parser/comments.js +113 -0
- package/dist/parser/comments.js.map +1 -0
- package/dist/parser/index.d.ts +5 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/relations.d.ts +34 -0
- package/dist/parser/relations.d.ts.map +1 -0
- package/dist/parser/relations.js +111 -0
- package/dist/parser/relations.js.map +1 -0
- package/dist/test-utils/cli-runner.d.ts +35 -0
- package/dist/test-utils/cli-runner.d.ts.map +1 -0
- package/dist/test-utils/dbml-validator.d.ts +70 -0
- package/dist/test-utils/dbml-validator.d.ts.map +1 -0
- package/dist/test-utils/index.d.ts +7 -0
- package/dist/test-utils/index.d.ts.map +1 -0
- package/dist/types.d.ts +53 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
import { AnyColumn, Table } from 'drizzle-orm';
|
|
2
|
+
import { TableRelationalConfig } from 'drizzle-orm/relations';
|
|
3
|
+
import { GeneratedRef, GenerateOptions } from '../types';
|
|
4
|
+
import { SchemaComments } from '../parser/comments';
|
|
5
|
+
import { SchemaRelations } from '../parser/relations';
|
|
6
|
+
/**
|
|
7
|
+
* Legacy v0 Relations type (for backward compatibility with relations())
|
|
8
|
+
* This is a simplified type - the actual structure is more complex
|
|
9
|
+
*/
|
|
10
|
+
type LegacyRelations = {
|
|
11
|
+
table: Table;
|
|
12
|
+
config: Record<string, unknown>;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Simple DBML string builder
|
|
16
|
+
*/
|
|
17
|
+
export declare class DbmlBuilder {
|
|
18
|
+
private lines;
|
|
19
|
+
private indentLevel;
|
|
20
|
+
/**
|
|
21
|
+
* Increase the indentation level by one
|
|
22
|
+
* @returns This instance for method chaining
|
|
23
|
+
*/
|
|
24
|
+
indent(): this;
|
|
25
|
+
/**
|
|
26
|
+
* Decrease the indentation level by one (minimum 0)
|
|
27
|
+
* @returns This instance for method chaining
|
|
28
|
+
*/
|
|
29
|
+
dedent(): this;
|
|
30
|
+
/**
|
|
31
|
+
* Add a line with the current indentation level
|
|
32
|
+
* @param content - The content to add (empty string adds a blank line)
|
|
33
|
+
* @returns This instance for method chaining
|
|
34
|
+
*/
|
|
35
|
+
line(content?: string): this;
|
|
36
|
+
/**
|
|
37
|
+
* Build the final DBML string from all added lines
|
|
38
|
+
* @returns The complete DBML content as a string
|
|
39
|
+
*/
|
|
40
|
+
build(): string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Configuration for different database dialects
|
|
44
|
+
*/
|
|
45
|
+
export interface DialectConfig {
|
|
46
|
+
escapeName: (name: string) => string;
|
|
47
|
+
isIncrement: (column: AnyColumn) => boolean;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Table configuration extracted from Drizzle tables
|
|
51
|
+
* Using 'any' types for dialect-agnostic handling
|
|
52
|
+
*/
|
|
53
|
+
export interface TableConfig {
|
|
54
|
+
indexes: unknown[];
|
|
55
|
+
primaryKeys: unknown[];
|
|
56
|
+
uniqueConstraints: unknown[];
|
|
57
|
+
foreignKeys: unknown[];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Base generator class for DBML generation
|
|
61
|
+
*/
|
|
62
|
+
export declare abstract class BaseGenerator<TSchema extends Record<string, unknown> = Record<string, unknown>> {
|
|
63
|
+
protected schema: TSchema;
|
|
64
|
+
protected relational: boolean;
|
|
65
|
+
protected generatedRefs: GeneratedRef[];
|
|
66
|
+
protected comments: SchemaComments | undefined;
|
|
67
|
+
protected parsedRelations: SchemaRelations | undefined;
|
|
68
|
+
protected source: string | undefined;
|
|
69
|
+
protected abstract dialectConfig: DialectConfig;
|
|
70
|
+
/**
|
|
71
|
+
* Create a new generator instance
|
|
72
|
+
* @param options - Configuration options including schema, relational mode, source code, and comments
|
|
73
|
+
*/
|
|
74
|
+
constructor(options: GenerateOptions<TSchema>);
|
|
75
|
+
/**
|
|
76
|
+
* Generate complete DBML output from the schema
|
|
77
|
+
*
|
|
78
|
+
* Creates DBML representation including:
|
|
79
|
+
* - Table definitions with columns, indexes, and constraints
|
|
80
|
+
* - Foreign key references (from table config or relations)
|
|
81
|
+
* - Comments for tables and columns
|
|
82
|
+
*
|
|
83
|
+
* @returns The complete DBML string
|
|
84
|
+
*/
|
|
85
|
+
generate(): string;
|
|
86
|
+
/**
|
|
87
|
+
* Get all tables from schema
|
|
88
|
+
*
|
|
89
|
+
* Extracts all Drizzle table objects from the schema by checking each value
|
|
90
|
+
* with isTable() method.
|
|
91
|
+
*
|
|
92
|
+
* @returns Array of table objects
|
|
93
|
+
*/
|
|
94
|
+
protected getTables(): Table[];
|
|
95
|
+
/**
|
|
96
|
+
* Check if a value is a Drizzle table
|
|
97
|
+
*
|
|
98
|
+
* Validates whether a value is a table instance from any supported dialect
|
|
99
|
+
* (PostgreSQL, MySQL, or SQLite).
|
|
100
|
+
*
|
|
101
|
+
* @param value - The value to check
|
|
102
|
+
* @returns True if value is a Drizzle table
|
|
103
|
+
*/
|
|
104
|
+
protected isTable(value: unknown): boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Get all v0 relations from schema (legacy relations() API)
|
|
107
|
+
*
|
|
108
|
+
* Extracts legacy relations defined using the old relations() API.
|
|
109
|
+
* These are identified by having 'table' and 'config' properties.
|
|
110
|
+
*
|
|
111
|
+
* @returns Array of legacy relation objects
|
|
112
|
+
*/
|
|
113
|
+
protected getV0Relations(): LegacyRelations[];
|
|
114
|
+
/**
|
|
115
|
+
* Check if a value is a Drizzle v0 relations object (from relations())
|
|
116
|
+
*
|
|
117
|
+
* Validates the legacy relations() format by checking for 'table' and 'config' properties.
|
|
118
|
+
*
|
|
119
|
+
* @param value - The value to check
|
|
120
|
+
* @returns True if value is a legacy relations object
|
|
121
|
+
*/
|
|
122
|
+
protected isV0Relations(value: unknown): boolean;
|
|
123
|
+
/**
|
|
124
|
+
* Check if a value is a v1 relation entry (from defineRelations())
|
|
125
|
+
*
|
|
126
|
+
* Uses official Drizzle v1 types: TableRelationalConfig with Relation instances.
|
|
127
|
+
* Validates the structure has 'table', 'name', and 'relations' properties with valid types.
|
|
128
|
+
*
|
|
129
|
+
* @param value - The value to check
|
|
130
|
+
* @returns True if value is a v1 relation entry
|
|
131
|
+
*/
|
|
132
|
+
protected isV1RelationEntry(value: unknown): value is TableRelationalConfig;
|
|
133
|
+
/**
|
|
134
|
+
* Get all v1 relation entries from schema (defineRelations() API)
|
|
135
|
+
*
|
|
136
|
+
* Handles both individual entries and the full defineRelations() result object.
|
|
137
|
+
* Extracts relation configurations that use the modern v1 API with official types.
|
|
138
|
+
*
|
|
139
|
+
* @returns Array of v1 relation entries
|
|
140
|
+
*/
|
|
141
|
+
protected getV1RelationEntries(): TableRelationalConfig[];
|
|
142
|
+
/**
|
|
143
|
+
* Check if a value is a full v1 defineRelations() result object
|
|
144
|
+
*
|
|
145
|
+
* This is an object where all values are TableRelationalConfig objects.
|
|
146
|
+
* Used to detect the full result of calling defineRelations() in v1.
|
|
147
|
+
*
|
|
148
|
+
* @param value - The value to check
|
|
149
|
+
* @returns True if value is a full defineRelations() result
|
|
150
|
+
*/
|
|
151
|
+
protected isV1DefineRelationsResult(value: unknown): boolean;
|
|
152
|
+
/**
|
|
153
|
+
* Generate a table definition in DBML format
|
|
154
|
+
*
|
|
155
|
+
* Creates the complete table definition including columns, indexes, constraints,
|
|
156
|
+
* and table-level comments. Also collects foreign keys if not in relational mode.
|
|
157
|
+
*
|
|
158
|
+
* @param dbml - The DBML builder to add the table to
|
|
159
|
+
* @param table - The Drizzle table to generate
|
|
160
|
+
*/
|
|
161
|
+
protected generateTable(dbml: DbmlBuilder, table: Table): void;
|
|
162
|
+
/**
|
|
163
|
+
* Get table configuration from a Drizzle table
|
|
164
|
+
*
|
|
165
|
+
* Extracts indexes, primary keys, unique constraints, and foreign keys
|
|
166
|
+
* from the table using the appropriate dialect-specific config getter.
|
|
167
|
+
*
|
|
168
|
+
* @param table - The Drizzle table to get configuration from
|
|
169
|
+
* @returns Table configuration or undefined if dialect is not supported
|
|
170
|
+
*/
|
|
171
|
+
protected getTableConfig(table: Table): TableConfig | undefined;
|
|
172
|
+
/**
|
|
173
|
+
* Generate a column definition in DBML format
|
|
174
|
+
*
|
|
175
|
+
* Creates a column line with type and attributes (primary key, not null, unique, etc.)
|
|
176
|
+
* and includes column-level comments if available.
|
|
177
|
+
*
|
|
178
|
+
* @param dbml - The DBML builder to add the column to
|
|
179
|
+
* @param column - The Drizzle column to generate
|
|
180
|
+
* @param tableName - Optional table name for looking up comments
|
|
181
|
+
*/
|
|
182
|
+
protected generateColumn(dbml: DbmlBuilder, column: AnyColumn, tableName?: string): void;
|
|
183
|
+
/**
|
|
184
|
+
* Get the SQL type for a column
|
|
185
|
+
*
|
|
186
|
+
* @param column - The column to get the SQL type from
|
|
187
|
+
* @returns The SQL type string (e.g., "varchar", "integer")
|
|
188
|
+
*/
|
|
189
|
+
protected getColumnType(column: AnyColumn): string;
|
|
190
|
+
/**
|
|
191
|
+
* Get column attributes for DBML
|
|
192
|
+
*
|
|
193
|
+
* Extracts attributes like primary key, not null, unique, increment, default value,
|
|
194
|
+
* and note from the column. Uses column metadata and comments if available.
|
|
195
|
+
*
|
|
196
|
+
* @param column - The column to get attributes from
|
|
197
|
+
* @param tableName - Optional table name for looking up comments
|
|
198
|
+
* @returns Array of attribute strings for DBML format
|
|
199
|
+
*/
|
|
200
|
+
protected getColumnAttributes(column: AnyColumn, tableName?: string): string[];
|
|
201
|
+
/**
|
|
202
|
+
* Format attributes into a string
|
|
203
|
+
*
|
|
204
|
+
* @param attrs - Array of attribute strings
|
|
205
|
+
* @returns Comma-separated attribute string
|
|
206
|
+
*/
|
|
207
|
+
protected formatAttributes(attrs: string[]): string;
|
|
208
|
+
/**
|
|
209
|
+
* Get the default value for a column
|
|
210
|
+
*
|
|
211
|
+
* Extracts and formats the default value from a column, handling SQL expressions,
|
|
212
|
+
* objects, and primitive values. Returns undefined if no default value exists.
|
|
213
|
+
*
|
|
214
|
+
* @param column - The column to get the default value from
|
|
215
|
+
* @returns Formatted default value string or undefined
|
|
216
|
+
*/
|
|
217
|
+
protected getDefaultValue(column: AnyColumn): string | undefined;
|
|
218
|
+
/**
|
|
219
|
+
* Generate indexes block from table configuration
|
|
220
|
+
*
|
|
221
|
+
* Creates the indexes block containing primary keys, unique constraints,
|
|
222
|
+
* and regular indexes with their respective attributes.
|
|
223
|
+
*
|
|
224
|
+
* @param dbml - The DBML builder to add the indexes block to
|
|
225
|
+
* @param tableConfig - The table configuration containing index information
|
|
226
|
+
*/
|
|
227
|
+
protected generateIndexesBlock(dbml: DbmlBuilder, tableConfig: TableConfig): void;
|
|
228
|
+
/**
|
|
229
|
+
* Collect foreign keys from table configuration
|
|
230
|
+
*
|
|
231
|
+
* Parses all foreign key definitions from the table config and adds them
|
|
232
|
+
* to the generatedRefs collection for later output.
|
|
233
|
+
*
|
|
234
|
+
* @param tableName - The name of the source table
|
|
235
|
+
* @param foreignKeys - Array of foreign key definitions from table config
|
|
236
|
+
*/
|
|
237
|
+
protected collectForeignKeysFromConfig(tableName: string, foreignKeys: unknown[]): void;
|
|
238
|
+
/**
|
|
239
|
+
* Parse a foreign key into a GeneratedRef
|
|
240
|
+
*
|
|
241
|
+
* Extracts foreign key information (source/target tables and columns, actions)
|
|
242
|
+
* and converts it to a GeneratedRef object for DBML output.
|
|
243
|
+
*
|
|
244
|
+
* @param tableName - The name of the source table
|
|
245
|
+
* @param fk - The foreign key definition to parse
|
|
246
|
+
* @returns GeneratedRef object or undefined if parsing fails
|
|
247
|
+
*/
|
|
248
|
+
protected parseForeignKey(tableName: string, fk: unknown): GeneratedRef | undefined;
|
|
249
|
+
/**
|
|
250
|
+
* Get a mapping from variable names to table names in the schema
|
|
251
|
+
*
|
|
252
|
+
* Creates a map from TypeScript variable names (e.g., "usersTable") to
|
|
253
|
+
* actual database table names (e.g., "users").
|
|
254
|
+
*
|
|
255
|
+
* @returns Map of variable names to table names
|
|
256
|
+
*/
|
|
257
|
+
protected getTableNameMapping(): Map<string, string>;
|
|
258
|
+
/**
|
|
259
|
+
* Get a mapping from TypeScript property names to database column names for a table
|
|
260
|
+
*
|
|
261
|
+
* Creates a map from TypeScript property names (e.g., "authorId") to
|
|
262
|
+
* actual database column names (e.g., "author_id").
|
|
263
|
+
*
|
|
264
|
+
* @param tableVarName - The variable name of the table in the schema
|
|
265
|
+
* @returns Map of property names to column names
|
|
266
|
+
*/
|
|
267
|
+
protected getColumnNameMapping(tableVarName: string): Map<string, string>;
|
|
268
|
+
/**
|
|
269
|
+
* Check if there's a reverse one() relation (B->A when we have A->B)
|
|
270
|
+
*
|
|
271
|
+
* Used to detect one-to-one relationships by checking if both tables
|
|
272
|
+
* have one() relations pointing to each other.
|
|
273
|
+
*
|
|
274
|
+
* @param sourceTable - The source table variable name
|
|
275
|
+
* @param targetTable - The target table variable name
|
|
276
|
+
* @param sourceFields - The source table's field names
|
|
277
|
+
* @param targetReferences - The target table's reference column names
|
|
278
|
+
* @returns True if a reverse one() relation exists
|
|
279
|
+
*/
|
|
280
|
+
protected hasReverseOneRelation(sourceTable: string, targetTable: string, sourceFields: string[], targetReferences: string[]): boolean;
|
|
281
|
+
/**
|
|
282
|
+
* Helper to check if two arrays are equal
|
|
283
|
+
*
|
|
284
|
+
* @param a - First array
|
|
285
|
+
* @param b - Second array
|
|
286
|
+
* @returns True if arrays have same length and same elements in order
|
|
287
|
+
*/
|
|
288
|
+
private arraysEqual;
|
|
289
|
+
/**
|
|
290
|
+
* Generate references from v0 relations() API
|
|
291
|
+
*
|
|
292
|
+
* Uses TypeScript Compiler API to parse relations() definitions from source file
|
|
293
|
+
* and extract fields/references to generate DBML Ref lines.
|
|
294
|
+
*
|
|
295
|
+
* Detects one-to-one relationships when bidirectional one() relations exist.
|
|
296
|
+
*/
|
|
297
|
+
protected generateRelationalRefsFromV0(): void;
|
|
298
|
+
/**
|
|
299
|
+
* Generate references from v1 defineRelations() entries
|
|
300
|
+
*
|
|
301
|
+
* Uses official Drizzle v1 types (TableRelationalConfig, Relation, One).
|
|
302
|
+
* Processes One relations to extract foreign key information and generates
|
|
303
|
+
* DBML Ref lines. Detects one-to-one relationships with bidirectional checks.
|
|
304
|
+
*
|
|
305
|
+
* @param entries - Array of v1 relation entries from defineRelations()
|
|
306
|
+
*/
|
|
307
|
+
protected generateRelationalRefsFromV1(entries: TableRelationalConfig[]): void;
|
|
308
|
+
/**
|
|
309
|
+
* Check if there's a reverse One relation in v1 entries
|
|
310
|
+
*
|
|
311
|
+
* Detects one-to-one relationships by checking if the target table
|
|
312
|
+
* has a matching One relation pointing back to the source table.
|
|
313
|
+
*
|
|
314
|
+
* @param entries - All v1 relation entries
|
|
315
|
+
* @param fromTableName - The table to search for reverse relation
|
|
316
|
+
* @param toTableName - The expected target table of the reverse relation
|
|
317
|
+
* @param fromColumns - The expected source columns of the reverse relation
|
|
318
|
+
* @param toColumns - The expected target columns of the reverse relation
|
|
319
|
+
* @returns True if a matching reverse One relation exists
|
|
320
|
+
*/
|
|
321
|
+
protected hasV1ReverseOneRelation(entries: TableRelationalConfig[], fromTableName: string, toTableName: string, fromColumns: string[], toColumns: string[]): boolean;
|
|
322
|
+
/**
|
|
323
|
+
* Get unique key for a relation to avoid duplicates
|
|
324
|
+
*
|
|
325
|
+
* Creates a consistent key by sorting table names alphabetically.
|
|
326
|
+
*
|
|
327
|
+
* @param tableName - The source table name
|
|
328
|
+
* @param relation - The relation object
|
|
329
|
+
* @returns A unique key string for the relation
|
|
330
|
+
*/
|
|
331
|
+
protected getRelationKey(tableName: string, relation: unknown): string;
|
|
332
|
+
/**
|
|
333
|
+
* Parse a relation into a GeneratedRef
|
|
334
|
+
*
|
|
335
|
+
* Extracts relation information from a legacy relation object and converts
|
|
336
|
+
* it to a GeneratedRef for DBML output.
|
|
337
|
+
*
|
|
338
|
+
* @param tableName - The source table name
|
|
339
|
+
* @param relation - The relation object to parse
|
|
340
|
+
* @returns GeneratedRef object or undefined if parsing fails
|
|
341
|
+
*/
|
|
342
|
+
protected parseRelation(tableName: string, relation: unknown): GeneratedRef | undefined;
|
|
343
|
+
/**
|
|
344
|
+
* Generate a reference line in DBML format
|
|
345
|
+
*
|
|
346
|
+
* Creates a Ref line showing the relationship between tables with optional
|
|
347
|
+
* onDelete and onUpdate actions.
|
|
348
|
+
*
|
|
349
|
+
* @param dbml - The DBML builder to add the reference to
|
|
350
|
+
* @param ref - The reference definition to generate
|
|
351
|
+
*/
|
|
352
|
+
protected generateRef(dbml: DbmlBuilder, ref: GeneratedRef): void;
|
|
353
|
+
/**
|
|
354
|
+
* Get column names from an index definition
|
|
355
|
+
*
|
|
356
|
+
* @param idx - The index definition to extract columns from
|
|
357
|
+
* @returns Array of column names in the index
|
|
358
|
+
*/
|
|
359
|
+
protected getIndexColumns(idx: unknown): string[];
|
|
360
|
+
/**
|
|
361
|
+
* Check if an index is unique
|
|
362
|
+
*
|
|
363
|
+
* @param idx - The index definition to check
|
|
364
|
+
* @returns True if the index has the unique flag
|
|
365
|
+
*/
|
|
366
|
+
protected isUniqueIndex(idx: unknown): boolean;
|
|
367
|
+
/**
|
|
368
|
+
* Get column names from a primary key constraint
|
|
369
|
+
*
|
|
370
|
+
* @param pk - The primary key definition to extract columns from
|
|
371
|
+
* @returns Array of column names in the primary key
|
|
372
|
+
*/
|
|
373
|
+
protected getPrimaryKeyColumns(pk: unknown): string[];
|
|
374
|
+
/**
|
|
375
|
+
* Get column names from a unique constraint
|
|
376
|
+
*
|
|
377
|
+
* @param uc - The unique constraint definition to extract columns from
|
|
378
|
+
* @returns Array of column names in the unique constraint
|
|
379
|
+
*/
|
|
380
|
+
protected getUniqueConstraintColumns(uc: unknown): string[];
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Write DBML content to a file
|
|
384
|
+
*
|
|
385
|
+
* Creates the directory if it doesn't exist and writes the DBML content
|
|
386
|
+
* to the specified file path.
|
|
387
|
+
*
|
|
388
|
+
* @param filePath - The path to write the DBML file to
|
|
389
|
+
* @param content - The DBML content to write
|
|
390
|
+
*/
|
|
391
|
+
export declare function writeDbmlFile(filePath: string, content: string): void;
|
|
392
|
+
export {};
|
|
393
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/generator/common.ts"],"names":[],"mappings":"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"}
|