ts-prorm-orm 1.2.2 → 2.0.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 (129) hide show
  1. package/CHANGELOG.md +209 -0
  2. package/README.md +32 -24
  3. package/dist/compliance/index.d.ts +2 -0
  4. package/dist/compliance/index.js +13 -1
  5. package/dist/connection-manager.js +13 -1
  6. package/dist/core/expressions.d.ts +58 -0
  7. package/dist/core/expressions.js +83 -0
  8. package/dist/core/hooks-manager.d.ts +179 -0
  9. package/dist/core/hooks-manager.js +291 -0
  10. package/dist/core/types.d.ts +235 -0
  11. package/dist/core/types.js +9 -0
  12. package/dist/decorators/index.d.ts +2 -0
  13. package/dist/decorators/index.js +11 -1
  14. package/dist/diagrams/chen-diagram.d.ts +15 -12
  15. package/dist/diagrams/chen-diagram.js +76 -85
  16. package/dist/diagrams/class-diagram.d.ts +9 -8
  17. package/dist/diagrams/class-diagram.js +60 -82
  18. package/dist/diagrams/core/index.d.ts +13 -0
  19. package/dist/diagrams/core/index.js +33 -0
  20. package/dist/diagrams/core/layout.d.ts +104 -0
  21. package/dist/diagrams/core/layout.js +223 -0
  22. package/dist/diagrams/{svg-dom.d.ts → core/svg.d.ts} +8 -20
  23. package/dist/diagrams/{svg-dom.js → core/svg.js} +21 -29
  24. package/dist/diagrams/core/theme.d.ts +84 -0
  25. package/dist/diagrams/core/theme.js +62 -0
  26. package/dist/diagrams/dependency-diagram.d.ts +15 -14
  27. package/dist/diagrams/dependency-diagram.js +71 -105
  28. package/dist/diagrams/er-diagram.d.ts +13 -26
  29. package/dist/diagrams/er-diagram.js +180 -259
  30. package/dist/diagrams/flow-diagram.d.ts +16 -11
  31. package/dist/diagrams/flow-diagram.js +96 -91
  32. package/dist/diagrams/gantt-diagram.d.ts +10 -5
  33. package/dist/diagrams/gantt-diagram.js +77 -103
  34. package/dist/diagrams/index-diagram.d.ts +10 -10
  35. package/dist/diagrams/index-diagram.js +106 -116
  36. package/dist/diagrams/index.d.ts +6 -9
  37. package/dist/diagrams/index.js +9 -24
  38. package/dist/diagrams/migration-diagram.d.ts +8 -4
  39. package/dist/diagrams/migration-diagram.js +189 -161
  40. package/dist/diagrams/model-diagram.d.ts +34 -34
  41. package/dist/diagrams/model-diagram.js +106 -485
  42. package/dist/diagrams/package-diagram.d.ts +9 -6
  43. package/dist/diagrams/package-diagram.js +64 -101
  44. package/dist/diagrams/relational-diagram.d.ts +12 -10
  45. package/dist/diagrams/relational-diagram.js +87 -114
  46. package/dist/diagrams/schemadoc-diagram.d.ts +8 -8
  47. package/dist/diagrams/schemadoc-diagram.js +71 -93
  48. package/dist/diagrams/sequence-diagram.d.ts +10 -10
  49. package/dist/diagrams/sequence-diagram.js +64 -89
  50. package/dist/diagrams/state-diagram.d.ts +10 -9
  51. package/dist/diagrams/state-diagram.js +69 -92
  52. package/dist/diagrams/tree-diagram.d.ts +11 -5
  53. package/dist/diagrams/tree-diagram.js +41 -65
  54. package/dist/dialects/clickhouse/index.js +15 -0
  55. package/dist/dialects/cockroachdb/index.d.ts +1 -1
  56. package/dist/dialects/cockroachdb/index.js +32 -63
  57. package/dist/dialects/db2/index.js +23 -8
  58. package/dist/dialects/dialect.d.ts +29 -5
  59. package/dist/dialects/duckdb/index.js +9 -2
  60. package/dist/dialects/hana/index.js +22 -5
  61. package/dist/dialects/lock-clause-helper.d.ts +167 -0
  62. package/dist/dialects/lock-clause-helper.js +316 -0
  63. package/dist/dialects/mariadb/index.d.ts +7 -4
  64. package/dist/dialects/mariadb/index.js +36 -60
  65. package/dist/dialects/mssql/index.js +34 -3
  66. package/dist/dialects/mysql/index.d.ts +1 -1
  67. package/dist/dialects/mysql/index.js +17 -45
  68. package/dist/dialects/oracle/index.d.ts +14 -3
  69. package/dist/dialects/oracle/index.js +66 -36
  70. package/dist/dialects/order-expression-helper.d.ts +72 -0
  71. package/dist/dialects/order-expression-helper.js +154 -0
  72. package/dist/dialects/partial-index.d.ts +52 -0
  73. package/dist/dialects/partial-index.js +251 -0
  74. package/dist/dialects/postgres/index.d.ts +1 -1
  75. package/dist/dialects/postgres/index.js +43 -68
  76. package/dist/dialects/redshift/index.js +9 -2
  77. package/dist/dialects/snowflake/index.js +17 -0
  78. package/dist/dialects/spanner/index.js +7 -2
  79. package/dist/dialects/sqlite/driver.d.ts +55 -0
  80. package/dist/dialects/sqlite/driver.js +102 -0
  81. package/dist/dialects/sqlite/index.d.ts +1 -1
  82. package/dist/dialects/sqlite/index.js +49 -27
  83. package/dist/graph/base-graph-dialect.d.ts +24 -3
  84. package/dist/graph/base-graph-dialect.js +43 -2
  85. package/dist/graph/dgraph/index.js +6 -0
  86. package/dist/graph/gremlin/index.d.ts +6 -0
  87. package/dist/graph/gremlin/index.js +12 -1
  88. package/dist/graph/index.d.ts +1 -1
  89. package/dist/graph/neo4j/index.d.ts +2 -0
  90. package/dist/graph/neo4j/index.js +6 -1
  91. package/dist/graph/types.d.ts +12 -1
  92. package/dist/index.d.ts +13 -4
  93. package/dist/index.js +54 -7
  94. package/dist/logging/index.d.ts +10 -0
  95. package/dist/logging/index.js +23 -0
  96. package/dist/logging/query-logging.d.ts +82 -0
  97. package/dist/logging/query-logging.js +102 -0
  98. package/dist/models/decorators.d.ts +39 -3
  99. package/dist/models/decorators.js +74 -0
  100. package/dist/models/eager-load.d.ts +99 -0
  101. package/dist/models/eager-load.js +348 -5
  102. package/dist/models/indexes.d.ts +3 -2
  103. package/dist/models/indexes.js +7 -1
  104. package/dist/models/model.js +69 -43
  105. package/dist/prorm.d.ts +175 -409
  106. package/dist/prorm.js +1142 -557
  107. package/dist/query-builders/order-limit-builder.js +12 -10
  108. package/dist/query-builders/sql-compiler.d.ts +10 -3
  109. package/dist/query-builders/sql-compiler.js +14 -43
  110. package/dist/query-interface.d.ts +2 -1
  111. package/dist/sql-constants.d.ts +44 -0
  112. package/dist/sql-constants.js +138 -1
  113. package/dist/types/index.d.ts +53 -17
  114. package/dist/types/index.js +10 -15
  115. package/dist/types/query-types.d.ts +26 -0
  116. package/dist/types/query-types.js +30 -0
  117. package/package.json +32 -5
  118. package/dist/decorators/belongs-to-many.js +0 -115
  119. package/dist/decorators/belongs-to.js +0 -115
  120. package/dist/decorators/has-many.js +0 -127
  121. package/dist/decorators/has-one.js +0 -116
  122. package/dist/diagrams/palette.d.ts +0 -138
  123. package/dist/diagrams/palette.js +0 -194
  124. package/dist/hooks/hooks-manager.d.ts +0 -189
  125. package/dist/hooks/hooks-manager.js +0 -350
  126. package/dist/hooks/index.d.ts +0 -8
  127. package/dist/hooks/index.js +0 -37
  128. /package/dist/{logging.d.ts → logging/logger.d.ts} +0 -0
  129. /package/dist/{logging.js → logging/logger.js} +0 -0
@@ -1,16 +1,14 @@
1
1
  "use strict";
2
2
  /**
3
- * PackageDiagram a UML package / namespace grouping diagram.
3
+ * PackageDiagram - a UML package / namespace grouping diagram.
4
4
  *
5
5
  * Groups models/tables into packages (schemas, modules, bounded-contexts).
6
6
  * Each package is drawn as the classic UML "folder" shape: a small tab rect
7
7
  * on the top-left plus a body rect beneath it. Package members are laid out
8
8
  * as small labeled boxes in a grid inside the body. Dashed dependency arrows
9
- * (e.g. «import») connect packages.
9
+ * (e.g. <<import>>) connect packages.
10
10
  *
11
- * Each package receives a distinct accent from `rotatedPalettes`; the theme
12
- * drives the canvas/text colors. Both `color` and `theme` options genuinely
13
- * change fill/stroke values in the produced SVG, and the viewBox is auto-sized.
11
+ * The viewBox is auto-sized to the laid-out geometry.
14
12
  *
15
13
  * Usage:
16
14
  * const diag = new PackageDiagram({ packages: [...], dependencies: [...] });
@@ -55,18 +53,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
55
53
  exports.PackageDiagram = void 0;
56
54
  const fs = __importStar(require("fs"));
57
55
  const path = __importStar(require("path"));
58
- const palette_1 = require("./palette");
59
- const svg_dom_1 = require("./svg-dom");
60
- // ─── Industry design system ────────────────────────────────────────────────
61
- // Barlow / JetBrains Mono typography, hairline borders and square "blueprint"
62
- // corners are fixed by the Industry spec; accent + surface colours still route
63
- // through resolveAccent / resolveTheme so --color / --theme keep working.
64
- const IND_FONT_HEAD = '"Barlow Condensed", system-ui, sans-serif';
65
- const IND_FONT_BODY = '"Barlow", system-ui, sans-serif';
66
- const IND_FONT_MONO = 'ui-monospace, "JetBrains Mono", "SF Mono", Menlo, monospace';
67
- const IND_HAIRLINE = 'rgba(29,31,32,0.16)';
68
- const IND_FONT_IMPORT = "@import url('https://fonts.googleapis.com/css2?family=Barlow:wght@400;500;700&family=Barlow+Condensed:wght@400;600&family=JetBrains+Mono&display=swap');";
69
- // ─── Main class ─────────────────────────────────────────────────────────────
56
+ const svg_1 = require("./core/svg");
57
+ const theme_1 = require("./core/theme");
58
+ const layout_1 = require("./core/layout");
70
59
  class PackageDiagram {
71
60
  constructor(options) {
72
61
  this.opts = {
@@ -90,12 +79,10 @@ class PackageDiagram {
90
79
  const h = P.HDR_H + innerH + 2 * P.BODY_PAD;
91
80
  return { w, h };
92
81
  }
93
- generate() {
82
+ build() {
94
83
  const P = PackageDiagram;
95
- const { packages, dependencies, title, theme, color, columns } = this.opts;
96
- const t = (0, palette_1.resolveTheme)(theme);
97
- const palettes = (0, palette_1.rotatedPalettes)(color);
98
- // ── Grid layout of package folders ───────────────────────────────────
84
+ const { packages, dependencies, title, columns } = this.opts;
85
+ // Grid layout of package folders.
99
86
  const gridCols = columns > 0 ? columns : Math.ceil(Math.sqrt(Math.max(packages.length, 1)));
100
87
  // Measure every package first.
101
88
  const sizes = packages.map((p) => this.packageSize(p));
@@ -123,7 +110,7 @@ class PackageDiagram {
123
110
  rowY[r] = accY;
124
111
  accY += rowHeights[r] + P.GAP_Y;
125
112
  }
126
- // Place packages, assigning each a rotated accent.
113
+ // Place packages.
127
114
  const placed = packages.map((pkg, i) => {
128
115
  const c = i % gridCols;
129
116
  const r = Math.floor(i / gridCols);
@@ -135,51 +122,32 @@ class PackageDiagram {
135
122
  w,
136
123
  h,
137
124
  bodyY: rowY[r] + P.TAB_H,
138
- accent: palettes[i % palettes.length],
139
125
  };
140
126
  });
141
127
  const byName = new Map();
142
128
  for (const pl of placed)
143
129
  byName.set(pl.pkg.name, pl);
144
- // ── Canvas size ──────────────────────────────────────────────────────
130
+ // Canvas size.
145
131
  const totalW = colX[gridCols - 1] + colWidths[gridCols - 1] + P.PAD;
146
132
  const totalH = rowY[rowCount - 1] + rowHeights[rowCount - 1] + P.PAD;
147
- const doc = new svg_dom_1.SvgDocument(totalW, totalH);
133
+ const doc = new svg_1.SvgDocument(totalW, totalH);
148
134
  const svg = doc.root;
149
- // ── Background + embedded Industry web-fonts ──────────────────────────
150
- svg.child('rect', { class: 'canvas', width: totalW, height: totalH, fill: t.canvasBg });
151
- svg.child('style').text(IND_FONT_IMPORT);
152
- // ── Arrow marker (in defs) ───────────────────────────────────────────
153
- const marker = doc.defs().child('marker', {
154
- id: 'pkgArrow',
155
- markerWidth: 12,
156
- markerHeight: 12,
157
- refX: 9,
158
- refY: 4,
159
- orient: 'auto',
160
- markerUnits: 'userSpaceOnUse',
161
- });
162
- marker.child('path', {
163
- d: 'M0,0 L9,4 L0,8',
164
- fill: 'none',
165
- stroke: t.textSecondary,
166
- 'stroke-width': 1.4,
167
- });
168
- // ── Title ────────────────────────────────────────────────────────────
135
+ svg.child('rect', { class: 'canvas', width: totalW, height: totalH, fill: theme_1.INK.ground });
136
+ (0, layout_1.defineArrowhead)(doc.defs(), 'pkgArrow');
169
137
  if (title) {
170
138
  svg
171
139
  .child('text', {
172
140
  class: 'title',
173
141
  x: P.PAD,
174
142
  y: P.PAD + 26,
175
- 'font-family': IND_FONT_HEAD,
176
- 'font-size': 22,
177
- 'font-weight': 600,
178
- fill: t.textPrimary,
143
+ 'font-family': theme_1.FONT.family,
144
+ 'font-size': theme_1.FONT.title + 9,
145
+ 'font-weight': 'bold',
146
+ fill: theme_1.INK.line,
179
147
  })
180
148
  .text(title);
181
149
  }
182
- // ── Dependency arrows (drawn under packages) ─────────────────────────
150
+ // Dependency arrows, drawn under packages.
183
151
  for (const dep of dependencies) {
184
152
  const a = byName.get(dep.from);
185
153
  const b = byName.get(dep.to);
@@ -192,37 +160,39 @@ class PackageDiagram {
192
160
  y1: start.y,
193
161
  x2: end.x,
194
162
  y2: end.y,
195
- stroke: t.textSecondary,
196
- 'stroke-width': 1.6,
163
+ stroke: theme_1.INK.line,
164
+ 'stroke-width': theme_1.STROKE.hair,
197
165
  'stroke-dasharray': '7 5',
198
166
  'marker-end': 'url(#pkgArrow)',
199
167
  });
200
168
  const mx = (start.x + end.x) / 2;
201
169
  const my = (start.y + end.y) / 2;
202
- const label = dep.label ?? '«import»';
170
+ const label = dep.label ?? '<<import>>';
203
171
  svg
204
172
  .child('text', {
205
173
  class: 'dependency-label',
206
174
  x: mx,
207
175
  y: my - 6,
208
- 'font-family': IND_FONT_BODY,
209
- 'font-size': 11,
176
+ 'font-family': theme_1.FONT.family,
177
+ 'font-size': theme_1.FONT.small + 2,
210
178
  'font-style': 'italic',
211
- fill: t.textSecondary,
179
+ fill: theme_1.INK.muted,
212
180
  'text-anchor': 'middle',
213
181
  })
214
182
  .text(label);
215
183
  }
216
- // ── Package folders ──────────────────────────────────────────────────
217
184
  for (const pl of placed) {
218
- this.drawPackage(svg, pl, t);
185
+ this.drawPackage(svg, pl);
219
186
  }
220
- return doc.toString('Generated by ts-prorm-orm PackageDiagram');
187
+ return doc;
188
+ }
189
+ generate() {
190
+ return this.build().toString('Generated by ts-prorm-orm PackageDiagram');
221
191
  }
222
192
  /** Compute connection points on the borders of two package boxes. */
223
193
  edgePoints(a, b) {
224
- const ac = { x: a.x + a.w / 2, y: a.bodyY + (a.h) / 2 };
225
- const bc = { x: b.x + b.w / 2, y: b.bodyY + (b.h) / 2 };
194
+ const ac = { x: a.x + a.w / 2, y: a.bodyY + a.h / 2 };
195
+ const bc = { x: b.x + b.w / 2, y: b.bodyY + b.h / 2 };
226
196
  const clamp = (c, box, toward) => {
227
197
  const dx = toward.x - c.x;
228
198
  const dy = toward.y - c.y;
@@ -238,59 +208,53 @@ class PackageDiagram {
238
208
  return [clamp(ac, a, bc), clamp(bc, b, ac)];
239
209
  }
240
210
  /** Draw one UML folder-shaped package with its member grid. */
241
- drawPackage(svg, pl, t) {
211
+ drawPackage(svg, pl) {
242
212
  const P = PackageDiagram;
243
- const { pkg, x, y, w, bodyY, accent } = pl;
213
+ const { pkg, x, y, w, bodyY } = pl;
244
214
  const bodyH = pl.h;
245
- // Folder tab (top-left small rect — square, solid accent).
215
+ // Folder tab (top-left small rect).
246
216
  svg.child('rect', {
247
217
  class: 'package-tab',
248
218
  x,
249
219
  y,
250
220
  width: P.TAB_W,
251
221
  height: P.TAB_H,
252
- fill: accent.mid,
253
- stroke: accent.from,
254
- 'stroke-width': 1,
222
+ fill: theme_1.INK.wash,
223
+ stroke: theme_1.INK.line,
224
+ 'stroke-width': theme_1.STROKE.hair,
255
225
  });
256
- // Body rect (white interior, hairline border).
226
+ // Body rect.
257
227
  svg.child('rect', {
258
228
  class: 'package-body',
259
229
  x,
260
230
  y: bodyY,
261
231
  width: w,
262
232
  height: bodyH,
263
- fill: t.cardBg,
264
- stroke: IND_HAIRLINE,
265
- 'stroke-width': 1,
233
+ fill: theme_1.INK.ground,
234
+ stroke: theme_1.INK.line,
235
+ 'stroke-width': theme_1.STROKE.hair,
266
236
  });
267
- // Header strip inside body (solid accent — blueprint label bar).
237
+ // Header strip inside body.
268
238
  svg.child('rect', {
269
239
  class: 'package-header',
270
240
  x,
271
241
  y: bodyY,
272
242
  width: w,
273
243
  height: P.HDR_H,
274
- fill: accent.mid,
275
- });
276
- svg.child('line', {
277
- x1: x,
278
- y1: bodyY + P.HDR_H,
279
- x2: x + w,
280
- y2: bodyY + P.HDR_H,
281
- stroke: IND_HAIRLINE,
282
- 'stroke-width': 1,
244
+ fill: theme_1.INK.wash,
245
+ stroke: theme_1.INK.line,
246
+ 'stroke-width': theme_1.STROKE.hair,
283
247
  });
284
- // Package name (white on the accent header bar).
248
+ // Package name.
285
249
  svg
286
250
  .child('text', {
287
251
  class: 'package-name',
288
252
  x: x + P.BODY_PAD,
289
253
  y: bodyY + 26,
290
- 'font-family': IND_FONT_HEAD,
291
- 'font-size': 15,
292
- 'font-weight': 600,
293
- fill: '#FFFFFF',
254
+ 'font-family': theme_1.FONT.family,
255
+ 'font-size': theme_1.FONT.body + 4,
256
+ 'font-weight': 'bold',
257
+ fill: theme_1.INK.line,
294
258
  })
295
259
  .text(pkg.name);
296
260
  // Member boxes in a grid.
@@ -307,40 +271,39 @@ class PackageDiagram {
307
271
  y: my,
308
272
  width: P.MEMBER_W,
309
273
  height: P.MEMBER_H,
310
- fill: t.cardBg,
311
- stroke: IND_HAIRLINE,
312
- 'stroke-width': 1,
274
+ fill: theme_1.INK.ground,
275
+ stroke: theme_1.INK.line,
276
+ 'stroke-width': theme_1.STROKE.hair,
313
277
  });
314
- // Left accent stripe.
278
+ // Left stripe.
315
279
  svg.child('rect', {
316
280
  class: 'member-stripe',
317
281
  x: mx,
318
282
  y: my,
319
283
  width: 4,
320
284
  height: P.MEMBER_H,
321
- fill: accent.mid,
285
+ fill: theme_1.INK.line,
322
286
  });
323
- const nameDisp = m.name.length > 18 ? m.name.slice(0, 17) + '…' : m.name;
324
287
  svg
325
288
  .child('text', {
326
289
  class: 'member-name',
327
290
  x: mx + 14,
328
291
  y: m.kind ? my + 18 : my + 25,
329
- 'font-family': IND_FONT_MONO,
330
- 'font-size': 12,
331
- 'font-weight': 700,
332
- fill: t.textPrimary,
292
+ 'font-family': theme_1.FONT.mono,
293
+ 'font-size': theme_1.FONT.body + 1,
294
+ 'font-weight': 'bold',
295
+ fill: theme_1.INK.line,
333
296
  })
334
- .text(nameDisp);
297
+ .text((0, layout_1.truncate)(m.name, P.MEMBER_W - 20, theme_1.FONT.body + 1, true));
335
298
  if (m.kind) {
336
299
  svg
337
300
  .child('text', {
338
301
  class: 'member-kind',
339
302
  x: mx + 14,
340
303
  y: my + 32,
341
- 'font-family': IND_FONT_BODY,
342
- 'font-size': 9,
343
- fill: t.textSecondary,
304
+ 'font-family': theme_1.FONT.family,
305
+ 'font-size': theme_1.FONT.small - 1,
306
+ fill: theme_1.INK.muted,
344
307
  })
345
308
  .text(m.kind);
346
309
  }
@@ -1,29 +1,25 @@
1
1
  /**
2
- * RelationalDiagram renders a relational schema as entity boxes with their
2
+ * RelationalDiagram - renders a relational schema as entity boxes with their
3
3
  * columns and draws connectors between related tables using proper crow's-foot
4
4
  * cardinality notation.
5
5
  *
6
6
  * Each entity is a box listing its columns; primary-key columns are marked and
7
7
  * underlined, foreign-key columns are marked. Relationship connectors terminate
8
8
  * with crow's-foot endpoints:
9
- * - "one" a small perpendicular tick (single bar)
10
- * - "many" the three-pronged crow's foot
11
- * - "optional" → a small circle just outside the endpoint (zero cardinality)
9
+ * - "one" -> a small perpendicular tick (single bar)
10
+ * - "many" -> the three-pronged crow's foot
12
11
  *
13
12
  * Supported relationship types: one-to-one, one-to-many, many-to-one,
14
13
  * many-to-many. Entities are laid out on a grid and connectors are routed
15
14
  * between the nearest entity edges.
16
15
  *
17
- * Everything is built against a real DOM document via the shared `SvgDocument`
18
- * / `El` builder — never by concatenating markup strings — and the viewBox is
19
- * auto-sized to the content. Both `theme` and `color` change real fill/stroke
20
- * values in the output (via `resolveTheme` / `resolveAccent`).
16
+ * The viewBox is auto-sized to the content.
21
17
  *
22
18
  * Usage:
23
19
  * const rel = new RelationalDiagram({
24
20
  * title: 'Shop Schema',
25
- * entities: [ RelEntity ],
26
- * relationships: [ RelRelationship ],
21
+ * entities: [ ...RelEntity ],
22
+ * relationships: [ ...RelRelationship ],
27
23
  * });
28
24
  * rel.save('./diagrams/schema.svg');
29
25
  * // or: const svg = rel.generate();
@@ -49,7 +45,12 @@ export interface RelationalDiagramOptions {
49
45
  entities: RelEntity[];
50
46
  relationships?: RelRelationship[];
51
47
  title?: string;
48
+ /**
49
+ * Accepted for backward compatibility and ignored: diagrams render in a
50
+ * single monochrome theme.
51
+ */
52
52
  theme?: 'light' | 'dark';
53
+ /** Accepted for backward compatibility and ignored. */
53
54
  color?: string;
54
55
  /** Number of entity columns in the layout grid. @default 3 */
55
56
  columns?: number;
@@ -73,6 +74,7 @@ export declare class RelationalDiagram {
73
74
  private crowFoot;
74
75
  private oneBar;
75
76
  private renderRelationship;
77
+ private build;
76
78
  generate(): string;
77
79
  /**
78
80
  * Write the SVG to a file, creating parent directories as needed.