drizzle-docs-generator 0.2.0 → 0.3.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.
Files changed (61) hide show
  1. package/README.ja.md +50 -13
  2. package/README.md +45 -8
  3. package/dist/adapter/index.d.ts +10 -0
  4. package/dist/adapter/index.d.ts.map +1 -0
  5. package/dist/adapter/types.d.ts +40 -0
  6. package/dist/adapter/types.d.ts.map +1 -0
  7. package/dist/adapter/v0-adapter.d.ts +73 -0
  8. package/dist/adapter/v0-adapter.d.ts.map +1 -0
  9. package/dist/adapter/v0-adapter.js +136 -0
  10. package/dist/adapter/v0-adapter.js.map +1 -0
  11. package/dist/adapter/v1-adapter.d.ts +40 -0
  12. package/dist/adapter/v1-adapter.d.ts.map +1 -0
  13. package/dist/adapter/v1-adapter.js +83 -0
  14. package/dist/adapter/v1-adapter.js.map +1 -0
  15. package/dist/cli/index.js +198 -66
  16. package/dist/cli/index.js.map +1 -1
  17. package/dist/cli/integration-test-utils.d.ts +19 -0
  18. package/dist/cli/integration-test-utils.d.ts.map +1 -0
  19. package/dist/formatter/dbml-builder.d.ts +29 -0
  20. package/dist/formatter/dbml-builder.d.ts.map +1 -0
  21. package/dist/formatter/dbml-builder.js +39 -0
  22. package/dist/formatter/dbml-builder.js.map +1 -0
  23. package/dist/formatter/dbml.d.ts +81 -0
  24. package/dist/formatter/dbml.d.ts.map +1 -0
  25. package/dist/formatter/dbml.js +163 -0
  26. package/dist/formatter/dbml.js.map +1 -0
  27. package/dist/formatter/index.d.ts +7 -0
  28. package/dist/formatter/index.d.ts.map +1 -0
  29. package/dist/formatter/markdown.d.ts +125 -0
  30. package/dist/formatter/markdown.d.ts.map +1 -0
  31. package/dist/formatter/markdown.js +235 -0
  32. package/dist/formatter/markdown.js.map +1 -0
  33. package/dist/formatter/mermaid.d.ts +102 -0
  34. package/dist/formatter/mermaid.d.ts.map +1 -0
  35. package/dist/formatter/mermaid.js +177 -0
  36. package/dist/formatter/mermaid.js.map +1 -0
  37. package/dist/formatter/types.d.ts +37 -0
  38. package/dist/formatter/types.d.ts.map +1 -0
  39. package/dist/generator/common.d.ts +109 -211
  40. package/dist/generator/common.d.ts.map +1 -1
  41. package/dist/generator/common.js +252 -481
  42. package/dist/generator/common.js.map +1 -1
  43. package/dist/generator/index.d.ts +2 -1
  44. package/dist/generator/index.d.ts.map +1 -1
  45. package/dist/generator/mysql.js +3 -3
  46. package/dist/generator/pg.d.ts +8 -7
  47. package/dist/generator/pg.d.ts.map +1 -1
  48. package/dist/generator/pg.js +29 -31
  49. package/dist/generator/pg.js.map +1 -1
  50. package/dist/generator/sqlite.js +3 -3
  51. package/dist/index.d.ts +3 -0
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +16 -9
  54. package/dist/index.js.map +1 -1
  55. package/dist/test-utils/cli-runner.d.ts +4 -0
  56. package/dist/test-utils/cli-runner.d.ts.map +1 -1
  57. package/dist/test-utils/dbml-validator.d.ts +37 -0
  58. package/dist/test-utils/dbml-validator.d.ts.map +1 -1
  59. package/dist/types.d.ts +132 -0
  60. package/dist/types.d.ts.map +1 -1
  61. package/package.json +3 -2
package/dist/types.d.ts CHANGED
@@ -50,4 +50,136 @@ export interface ColumnAttributes {
50
50
  default?: string;
51
51
  note?: string;
52
52
  }
53
+ /**
54
+ * Supported database types
55
+ *
56
+ * @remarks
57
+ * TODO: Unify with `Dialect` type in `src/cli/index.ts` when implementing CLI --format option (#59)
58
+ */
59
+ export type DatabaseType = "postgresql" | "mysql" | "sqlite";
60
+ /**
61
+ * Column definition in the intermediate schema
62
+ */
63
+ export interface ColumnDefinition {
64
+ /** Column name */
65
+ name: string;
66
+ /** SQL data type (e.g., "varchar(255)", "integer", "timestamp") */
67
+ type: string;
68
+ /** Whether the column allows NULL values */
69
+ nullable: boolean;
70
+ /** Default value expression (e.g., "now()", "'active'") */
71
+ defaultValue?: string;
72
+ /** Whether this column is a primary key */
73
+ primaryKey: boolean;
74
+ /** Whether this column has a unique constraint */
75
+ unique: boolean;
76
+ /** Whether this column auto-increments */
77
+ autoIncrement?: boolean;
78
+ /** JSDoc comment or description for this column */
79
+ comment?: string;
80
+ }
81
+ /**
82
+ * Index definition in the intermediate schema
83
+ */
84
+ export interface IndexDefinition {
85
+ /** Index name */
86
+ name: string;
87
+ /** Columns included in the index */
88
+ columns: string[];
89
+ /** Whether this is a unique index */
90
+ unique: boolean;
91
+ /** Index type (e.g., "btree", "hash", "gin") - database specific */
92
+ type?: string;
93
+ }
94
+ /**
95
+ * Constraint types
96
+ */
97
+ export type ConstraintType = "primary_key" | "foreign_key" | "unique" | "check" | "not_null";
98
+ /**
99
+ * Constraint definition in the intermediate schema
100
+ */
101
+ export interface ConstraintDefinition {
102
+ /** Constraint name */
103
+ name: string;
104
+ /** Type of constraint */
105
+ type: ConstraintType;
106
+ /** Columns involved in the constraint */
107
+ columns: string[];
108
+ /** SQL definition or expression (for CHECK constraints) */
109
+ definition?: string;
110
+ /** Referenced table (for foreign keys) */
111
+ referencedTable?: string;
112
+ /** Referenced columns (for foreign keys) */
113
+ referencedColumns?: string[];
114
+ }
115
+ /**
116
+ * Table definition in the intermediate schema
117
+ */
118
+ export interface TableDefinition {
119
+ /** Table name */
120
+ name: string;
121
+ /** Schema name (e.g., "public" for PostgreSQL) */
122
+ schema?: string;
123
+ /** JSDoc comment or description for this table */
124
+ comment?: string;
125
+ /** Column definitions */
126
+ columns: ColumnDefinition[];
127
+ /** Index definitions */
128
+ indexes: IndexDefinition[];
129
+ /** Constraint definitions */
130
+ constraints: ConstraintDefinition[];
131
+ }
132
+ /**
133
+ * Relation types for intermediate schema
134
+ * Note: This is more detailed than RelationType used for DBML output
135
+ */
136
+ export type IntermediateRelationType = "one-to-one" | "one-to-many" | "many-to-one" | "many-to-many";
137
+ /**
138
+ * Relation/Reference definition in the intermediate schema
139
+ */
140
+ export interface RelationDefinition {
141
+ /** Optional relation name */
142
+ name?: string;
143
+ /** Source table name */
144
+ fromTable: string;
145
+ /** Source column names */
146
+ fromColumns: string[];
147
+ /** Target table name */
148
+ toTable: string;
149
+ /** Target column names */
150
+ toColumns: string[];
151
+ /** Relation cardinality */
152
+ type: IntermediateRelationType;
153
+ /** ON DELETE action */
154
+ onDelete?: string;
155
+ /** ON UPDATE action */
156
+ onUpdate?: string;
157
+ }
158
+ /**
159
+ * Enum definition in the intermediate schema (PostgreSQL specific)
160
+ */
161
+ export interface EnumDefinition {
162
+ /** Enum type name */
163
+ name: string;
164
+ /** Schema name (e.g., "public" for PostgreSQL) */
165
+ schema?: string;
166
+ /** Enum values */
167
+ values: string[];
168
+ }
169
+ /**
170
+ * The complete intermediate schema representation
171
+ *
172
+ * This is a database-agnostic representation of a schema that can be
173
+ * used to generate various output formats (DBML, Markdown, JSON, etc.)
174
+ */
175
+ export interface IntermediateSchema {
176
+ /** Database type that this schema was extracted from */
177
+ databaseType: DatabaseType;
178
+ /** Table definitions */
179
+ tables: TableDefinition[];
180
+ /** Relation/Reference definitions */
181
+ relations: RelationDefinition[];
182
+ /** Enum definitions (PostgreSQL specific) */
183
+ enums: EnumDefinition[];
184
+ }
53
185
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAEjC;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtE,2EAA2E;IAC3E,MAAM,EAAE,OAAO,CAAC;IAChB,uEAAuE;IACvE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,aAAa,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drizzle-docs-generator",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "A CLI tool that generates DBML files from Drizzle ORM schema definitions.",
5
5
  "keywords": [
6
6
  "cli",
@@ -65,6 +65,7 @@
65
65
  "lint": "oxlint",
66
66
  "format": "oxfmt --write",
67
67
  "format:check": "oxfmt --check",
68
- "typecheck": "tsc --noEmit"
68
+ "typecheck": "tsc --noEmit",
69
+ "generate:examples": "node dist/cli/index.js generate examples/pg/schema.ts -d postgresql -f dbml -o examples/pg/schema.dbml --force && node dist/cli/index.js generate examples/pg/schema.ts -d postgresql -f markdown -o examples/pg/markdown --force && node dist/cli/index.js generate examples/mysql/schema.ts -d mysql -f dbml -o examples/mysql/schema.dbml --force && node dist/cli/index.js generate examples/mysql/schema.ts -d mysql -f markdown -o examples/mysql/markdown --force && node dist/cli/index.js generate examples/sqlite/schema.ts -d sqlite -f dbml -o examples/sqlite/schema.dbml --force && node dist/cli/index.js generate examples/sqlite/schema.ts -d sqlite -f markdown -o examples/sqlite/markdown --force"
69
70
  }
70
71
  }