@dbml/parse 9.0.0-alpha.3 → 9.0.0-optional-ref.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 (172) hide show
  1. package/LICENSE +0 -0
  2. package/dist/__benchmarks__/compiler.benchmark.d.ts +0 -0
  3. package/dist/__benchmarks__/compiler.profile.d.ts +0 -0
  4. package/dist/dbml-parse.js +19 -22
  5. package/dist/dbml-parse.mjs +4017 -4524
  6. package/dist/index.d.ts +0 -0
  7. package/dist/src/compiler/index.d.ts +3 -8
  8. package/dist/src/compiler/projectLayout/index.d.ts +0 -0
  9. package/dist/src/compiler/projectLayout/layout.d.ts +0 -0
  10. package/dist/src/compiler/queries/canonicalName.d.ts +0 -0
  11. package/dist/src/compiler/queries/container/element.d.ts +0 -0
  12. package/dist/src/compiler/queries/container/index.d.ts +0 -0
  13. package/dist/src/compiler/queries/container/scope.d.ts +0 -0
  14. package/dist/src/compiler/queries/container/scopeKind.d.ts +0 -0
  15. package/dist/src/compiler/queries/container/stack.d.ts +0 -0
  16. package/dist/src/compiler/queries/container/token.d.ts +0 -0
  17. package/dist/src/compiler/queries/files/fileDependencies.d.ts +0 -0
  18. package/dist/src/compiler/queries/files/reachableFiles.d.ts +0 -0
  19. package/dist/src/compiler/queries/files/usableMembers.d.ts +0 -0
  20. package/dist/src/compiler/queries/legacy/parse.d.ts +0 -0
  21. package/dist/src/compiler/queries/legacy/symbol.d.ts +0 -0
  22. package/dist/src/compiler/queries/legacy/token.d.ts +0 -0
  23. package/dist/src/compiler/queries/nodeAtPosition.d.ts +0 -0
  24. package/dist/src/compiler/queries/pipeline/bind.d.ts +0 -0
  25. package/dist/src/compiler/queries/pipeline/index.d.ts +0 -0
  26. package/dist/src/compiler/queries/pipeline/interpret.d.ts +0 -0
  27. package/dist/src/compiler/queries/pipeline/parse.d.ts +0 -0
  28. package/dist/src/compiler/queries/pipeline/validate.d.ts +0 -0
  29. package/dist/src/compiler/queries/resolutionIndex.d.ts +0 -0
  30. package/dist/src/compiler/queries/symbol/lookupMembers.d.ts +0 -0
  31. package/dist/src/compiler/queries/symbol/symbolAliases.d.ts +0 -0
  32. package/dist/src/compiler/queries/symbol/symbolUses.d.ts +0 -0
  33. package/dist/src/compiler/queries/transform/applyTextEdits.d.ts +0 -0
  34. package/dist/src/compiler/queries/transform/index.d.ts +0 -1
  35. package/dist/src/compiler/queries/transform/renameTable.d.ts +0 -0
  36. package/dist/src/compiler/queries/transform/syncDiagramView.d.ts +0 -0
  37. package/dist/src/compiler/queries/transform/utils.d.ts +0 -0
  38. package/dist/src/compiler/queries/utils.d.ts +0 -0
  39. package/dist/src/compiler/types.d.ts +7 -8
  40. package/dist/src/constants.d.ts +0 -0
  41. package/dist/src/core/global_modules/checks/bind.d.ts +0 -0
  42. package/dist/src/core/global_modules/checks/index.d.ts +0 -0
  43. package/dist/src/core/global_modules/checks/interpret.d.ts +0 -0
  44. package/dist/src/core/global_modules/diagramView/bind.d.ts +0 -0
  45. package/dist/src/core/global_modules/diagramView/index.d.ts +0 -0
  46. package/dist/src/core/global_modules/diagramView/interpret.d.ts +0 -0
  47. package/dist/src/core/global_modules/enum/bind.d.ts +0 -0
  48. package/dist/src/core/global_modules/enum/index.d.ts +0 -0
  49. package/dist/src/core/global_modules/enum/interpret.d.ts +0 -0
  50. package/dist/src/core/global_modules/index.d.ts +0 -0
  51. package/dist/src/core/global_modules/indexes/bind.d.ts +0 -0
  52. package/dist/src/core/global_modules/indexes/index.d.ts +0 -0
  53. package/dist/src/core/global_modules/indexes/interpret.d.ts +0 -0
  54. package/dist/src/core/global_modules/note/bind.d.ts +0 -0
  55. package/dist/src/core/global_modules/note/index.d.ts +0 -0
  56. package/dist/src/core/global_modules/note/interpret.d.ts +0 -0
  57. package/dist/src/core/global_modules/program/bind.d.ts +0 -0
  58. package/dist/src/core/global_modules/program/index.d.ts +0 -0
  59. package/dist/src/core/global_modules/program/interpret.d.ts +0 -0
  60. package/dist/src/core/global_modules/program/utils.d.ts +0 -0
  61. package/dist/src/core/global_modules/project/bind.d.ts +0 -0
  62. package/dist/src/core/global_modules/project/index.d.ts +0 -0
  63. package/dist/src/core/global_modules/project/interpret.d.ts +0 -0
  64. package/dist/src/core/global_modules/records/bind.d.ts +0 -0
  65. package/dist/src/core/global_modules/records/index.d.ts +0 -0
  66. package/dist/src/core/global_modules/records/interpret.d.ts +0 -0
  67. package/dist/src/core/global_modules/records/utils/constraints/fk.d.ts +0 -0
  68. package/dist/src/core/global_modules/records/utils/constraints/helper.d.ts +0 -0
  69. package/dist/src/core/global_modules/records/utils/constraints/index.d.ts +0 -0
  70. package/dist/src/core/global_modules/records/utils/constraints/pk.d.ts +0 -0
  71. package/dist/src/core/global_modules/records/utils/constraints/unique.d.ts +0 -0
  72. package/dist/src/core/global_modules/records/utils/data/index.d.ts +0 -0
  73. package/dist/src/core/global_modules/records/utils/data/sqlTypes.d.ts +0 -0
  74. package/dist/src/core/global_modules/records/utils/data/values.d.ts +0 -0
  75. package/dist/src/core/global_modules/records/utils/index.d.ts +0 -0
  76. package/dist/src/core/global_modules/ref/bind.d.ts +0 -0
  77. package/dist/src/core/global_modules/ref/index.d.ts +0 -1
  78. package/dist/src/core/global_modules/ref/interpret.d.ts +2 -0
  79. package/dist/src/core/global_modules/schema/index.d.ts +0 -0
  80. package/dist/src/core/global_modules/table/bind.d.ts +0 -2
  81. package/dist/src/core/global_modules/table/index.d.ts +0 -0
  82. package/dist/src/core/global_modules/table/interpret.d.ts +0 -0
  83. package/dist/src/core/global_modules/table/utils.d.ts +0 -0
  84. package/dist/src/core/global_modules/tableGroup/bind.d.ts +0 -0
  85. package/dist/src/core/global_modules/tableGroup/index.d.ts +0 -0
  86. package/dist/src/core/global_modules/tableGroup/interpret.d.ts +0 -0
  87. package/dist/src/core/global_modules/tablePartial/bind.d.ts +0 -0
  88. package/dist/src/core/global_modules/tablePartial/index.d.ts +0 -0
  89. package/dist/src/core/global_modules/tablePartial/interpret.d.ts +0 -0
  90. package/dist/src/core/global_modules/types.d.ts +0 -0
  91. package/dist/src/core/global_modules/use/index.d.ts +0 -0
  92. package/dist/src/core/global_modules/utils.d.ts +0 -2
  93. package/dist/src/core/lexer/lexer.d.ts +0 -0
  94. package/dist/src/core/lexer/utils.d.ts +0 -0
  95. package/dist/src/core/local_modules/checks/index.d.ts +0 -0
  96. package/dist/src/core/local_modules/checks/validate.d.ts +0 -0
  97. package/dist/src/core/local_modules/custom/index.d.ts +0 -0
  98. package/dist/src/core/local_modules/custom/validate.d.ts +0 -0
  99. package/dist/src/core/local_modules/diagramView/index.d.ts +0 -0
  100. package/dist/src/core/local_modules/diagramView/validate.d.ts +0 -0
  101. package/dist/src/core/local_modules/enum/index.d.ts +0 -0
  102. package/dist/src/core/local_modules/enum/validate.d.ts +0 -0
  103. package/dist/src/core/local_modules/index.d.ts +0 -0
  104. package/dist/src/core/local_modules/indexes/index.d.ts +0 -0
  105. package/dist/src/core/local_modules/indexes/validate.d.ts +0 -0
  106. package/dist/src/core/local_modules/note/index.d.ts +0 -0
  107. package/dist/src/core/local_modules/note/validate.d.ts +0 -0
  108. package/dist/src/core/local_modules/program/index.d.ts +0 -0
  109. package/dist/src/core/local_modules/program/validate.d.ts +0 -0
  110. package/dist/src/core/local_modules/project/index.d.ts +0 -0
  111. package/dist/src/core/local_modules/project/validate.d.ts +0 -0
  112. package/dist/src/core/local_modules/records/index.d.ts +0 -0
  113. package/dist/src/core/local_modules/records/validate.d.ts +0 -0
  114. package/dist/src/core/local_modules/ref/index.d.ts +0 -0
  115. package/dist/src/core/local_modules/ref/validate.d.ts +0 -0
  116. package/dist/src/core/local_modules/table/index.d.ts +0 -0
  117. package/dist/src/core/local_modules/table/validate.d.ts +0 -0
  118. package/dist/src/core/local_modules/tableGroup/index.d.ts +0 -0
  119. package/dist/src/core/local_modules/tableGroup/validate.d.ts +0 -0
  120. package/dist/src/core/local_modules/tablePartial/index.d.ts +0 -0
  121. package/dist/src/core/local_modules/tablePartial/validate.d.ts +0 -0
  122. package/dist/src/core/local_modules/types.d.ts +0 -0
  123. package/dist/src/core/local_modules/use/index.d.ts +0 -0
  124. package/dist/src/core/local_modules/use/validate.d.ts +0 -0
  125. package/dist/src/core/parser/contextStack.d.ts +0 -0
  126. package/dist/src/core/parser/factory.d.ts +0 -0
  127. package/dist/src/core/parser/parser.d.ts +0 -0
  128. package/dist/src/core/parser/utils.d.ts +0 -0
  129. package/dist/src/core/types/errors.d.ts +50 -52
  130. package/dist/src/core/types/filepath.d.ts +0 -0
  131. package/dist/src/core/types/index.d.ts +0 -0
  132. package/dist/src/core/types/internable.d.ts +0 -0
  133. package/dist/src/core/types/keywords.d.ts +0 -2
  134. package/dist/src/core/types/module.d.ts +0 -0
  135. package/dist/src/core/types/nodes.d.ts +0 -0
  136. package/dist/src/core/types/position.d.ts +0 -0
  137. package/dist/src/core/types/relation.d.ts +16 -0
  138. package/dist/src/core/types/report.d.ts +0 -0
  139. package/dist/src/core/types/schemaJson.d.ts +3 -35
  140. package/dist/src/core/types/symbol/factory.d.ts +0 -0
  141. package/dist/src/core/types/symbol/index.d.ts +0 -0
  142. package/dist/src/core/types/symbol/metadata.d.ts +22 -17
  143. package/dist/src/core/types/symbol/symbols.d.ts +0 -0
  144. package/dist/src/core/types/tokens.d.ts +0 -0
  145. package/dist/src/core/utils/chars.d.ts +0 -0
  146. package/dist/src/core/utils/expression.d.ts +0 -0
  147. package/dist/src/core/utils/interpret.d.ts +0 -0
  148. package/dist/src/core/utils/numbers.d.ts +0 -0
  149. package/dist/src/core/utils/span.d.ts +0 -0
  150. package/dist/src/core/utils/tokens.d.ts +0 -0
  151. package/dist/src/core/utils/validate.d.ts +0 -0
  152. package/dist/src/index.d.ts +2 -2
  153. package/dist/src/services/definition/provider.d.ts +0 -0
  154. package/dist/src/services/diagnostics/provider.d.ts +0 -0
  155. package/dist/src/services/index.d.ts +0 -0
  156. package/dist/src/services/monarch.d.ts +0 -0
  157. package/dist/src/services/references/provider.d.ts +0 -0
  158. package/dist/src/services/suggestions/crossFile.d.ts +0 -0
  159. package/dist/src/services/suggestions/provider.d.ts +0 -0
  160. package/dist/src/services/suggestions/recordRowSnippet.d.ts +0 -0
  161. package/dist/src/services/suggestions/use.d.ts +0 -0
  162. package/dist/src/services/suggestions/utils/index.d.ts +0 -0
  163. package/dist/src/services/suggestions/utils/useMerger.d.ts +0 -0
  164. package/dist/src/services/types.d.ts +0 -0
  165. package/dist/src/services/utils.d.ts +0 -0
  166. package/package.json +2 -2
  167. package/dist/src/compiler/queries/transform/syncDep.d.ts +0 -98
  168. package/dist/src/core/global_modules/dep/bind.d.ts +0 -15
  169. package/dist/src/core/global_modules/dep/index.d.ts +0 -2
  170. package/dist/src/core/global_modules/dep/interpret.d.ts +0 -34
  171. package/dist/src/core/local_modules/dep/index.d.ts +0 -2
  172. package/dist/src/core/local_modules/dep/validate.d.ts +0 -18
@@ -1,6 +1,7 @@
1
1
  import { NONE_COLOR } from '../../constants';
2
2
  import { Filepath } from './filepath';
3
3
  import { Position } from './position';
4
+ import { RelationshipOp, RelationCardinality } from './relation';
4
5
  export type Color = `#${string}` | typeof NONE_COLOR;
5
6
  export declare enum AliasKind {
6
7
  Table = "table"
@@ -58,7 +59,6 @@ export interface Database {
58
59
  tables: Table[];
59
60
  notes: Note[];
60
61
  refs: Ref[];
61
- deps: Dep[];
62
62
  enums: Enum[];
63
63
  tableGroups: TableGroup[];
64
64
  aliases: Alias[];
@@ -111,7 +111,6 @@ export interface Column {
111
111
  type: ColumnType;
112
112
  token: TokenPosition;
113
113
  inline_refs: InlineRef[];
114
- inline_deps: InlineDep[];
115
114
  checks: Check[];
116
115
  pk?: boolean;
117
116
  dbdefault?: {
@@ -151,7 +150,7 @@ export interface InlineRef {
151
150
  schemaName: string | null;
152
151
  tableName: string;
153
152
  fieldNames: string[];
154
- relation: '>' | '<' | '-' | '<>';
153
+ relation: RelationshipOp;
155
154
  token: TokenPosition;
156
155
  }
157
156
  export interface Ref {
@@ -172,37 +171,6 @@ export interface RefEndpoint {
172
171
  relation: RelationCardinality;
173
172
  token: TokenPosition;
174
173
  }
175
- export type RelationCardinality = '1' | '*';
176
- export interface Dep {
177
- schemaName: string | null;
178
- name: string | null;
179
- edges: DepEdge[];
180
- color?: Color;
181
- note?: {
182
- value: string;
183
- token: TokenPosition;
184
- };
185
- custom?: Record<string, string | number | boolean | null>;
186
- token: TokenPosition;
187
- }
188
- export interface DepEdge {
189
- upstream: DepEndpoint;
190
- downstream: DepEndpoint;
191
- token: TokenPosition;
192
- }
193
- export interface DepEndpoint {
194
- schemaName: string | null;
195
- tableName: string;
196
- fieldNames: string[];
197
- token: TokenPosition;
198
- }
199
- export interface InlineDep {
200
- schemaName: string | null;
201
- tableName: string;
202
- fieldNames: string[];
203
- direction: '->' | '<-';
204
- token: TokenPosition;
205
- }
206
174
  export interface Enum {
207
175
  name: string;
208
176
  schemaName: string | null;
@@ -284,4 +252,4 @@ export type Project = Record<string, never> | {
284
252
  token: TokenPosition;
285
253
  [index: string & Omit<any, 'name' | 'tables' | 'refs' | 'enums' | 'tableGroups' | 'note' | 'tablePartials' | 'records'>]: string;
286
254
  };
287
- export type SchemaElement = Database | Project | Table | Note | Column | ColumnType | Index | Check | InlineRef | InlineDep | Ref | RefEndpoint | Dep | DepEdge | DepEndpoint | Enum | EnumField | TableGroup | TableGroupField | Alias | TablePartial | TablePartialInjection | TableRecord | RecordValue;
255
+ export type SchemaElement = Database | Project | Table | Note | Column | ColumnType | Index | Check | InlineRef | Ref | RefEndpoint | Enum | EnumField | TableGroup | TableGroupField | Alias | TablePartial | TablePartialInjection | TableRecord | RecordValue;
File without changes
File without changes
@@ -1,10 +1,10 @@
1
1
  import { default as Compiler } from '../../../compiler';
2
- import { AttributeNode, ElementDeclarationNode, InfixExpressionNode, SyntaxNode } from '../nodes';
2
+ import { AttributeNode, ElementDeclarationNode, SyntaxNode } from '../nodes';
3
3
  import { ColumnSymbol, NodeSymbol, TablePartialSymbol, TableSymbol } from '../symbol';
4
4
  import { Internable } from '../internable';
5
+ import { RelationshipOp, RelationCardinality } from '../relation';
5
6
  export declare enum MetadataKind {
6
7
  Ref = "ref",
7
- Dep = "dep",
8
8
  PartialRef = "partial ref",
9
9
  TableChecks = "table checks",
10
10
  Indexes = "indexes",
@@ -37,25 +37,21 @@ export declare class RefMetadata extends NodeMetadata {
37
37
  rightColumns(compiler: Compiler): ColumnSymbol[];
38
38
  leftTable(compiler: Compiler): TableSymbol | undefined;
39
39
  rightTable(compiler: Compiler): TableSymbol | undefined;
40
- op(_compiler: Compiler): '>' | '<' | '-' | '<>' | undefined;
40
+ op(_compiler: Compiler): RelationshipOp | undefined;
41
+ cardinalities(compiler: Compiler): [RelationCardinality, RelationCardinality] | undefined;
42
+ leftCardinality(compiler: Compiler): {
43
+ min: number;
44
+ max: number | '*';
45
+ } | undefined;
46
+ rightCardinality(compiler: Compiler): {
47
+ min: number;
48
+ max: number | '*';
49
+ } | undefined;
41
50
  active(compiler: Compiler): boolean;
42
51
  leftToken(): SyntaxNode;
43
52
  rightToken(): SyntaxNode;
44
53
  owners(compiler: Compiler): NodeSymbol[];
45
54
  }
46
- export declare class DepMetadata extends NodeMetadata {
47
- declaration: ElementDeclarationNode | AttributeNode;
48
- readonly kind = MetadataKind.Dep;
49
- constructor(declaration: ElementDeclarationNode | AttributeNode);
50
- container(compiler: Compiler): TableSymbol | undefined;
51
- edgeExpressions(): InfixExpressionNode[];
52
- upstreamColumns(compiler: Compiler): ColumnSymbol[][];
53
- downstreamColumns(compiler: Compiler): ColumnSymbol[][];
54
- upstreamTables(compiler: Compiler): (TableSymbol | undefined)[];
55
- downstreamTables(compiler: Compiler): (TableSymbol | undefined)[];
56
- private hostColumn;
57
- owners(compiler: Compiler): NodeSymbol[];
58
- }
59
55
  export declare class PartialRefMetadata extends NodeMetadata {
60
56
  readonly kind = MetadataKind.PartialRef;
61
57
  constructor(declaration: SyntaxNode);
@@ -64,7 +60,16 @@ export declare class PartialRefMetadata extends NodeMetadata {
64
60
  rightColumns(compiler: Compiler): ColumnSymbol[];
65
61
  leftTablePartial(compiler: Compiler): TablePartialSymbol | undefined;
66
62
  rightTable(compiler: Compiler): TableSymbol | TablePartialSymbol | undefined;
67
- op(_compiler: Compiler): '>' | '<' | '-' | '<>' | undefined;
63
+ op(_compiler: Compiler): RelationshipOp | undefined;
64
+ cardinalities(compiler: Compiler): [RelationCardinality, RelationCardinality] | undefined;
65
+ leftCardinality(compiler: Compiler): {
66
+ min: number;
67
+ max: number | '*';
68
+ } | undefined;
69
+ rightCardinality(compiler: Compiler): {
70
+ min: number;
71
+ max: number | '*';
72
+ } | undefined;
68
73
  leftToken(): SyntaxNode;
69
74
  rightToken(): SyntaxNode;
70
75
  owners(compiler: Compiler): NodeSymbol[];
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -10,9 +10,9 @@ export { SyntaxToken, SyntaxTokenKind, isTriviaToken, isOp, isOpToken, } from '.
10
10
  export { CompileError, CompileErrorCode, } from './core/types/errors';
11
11
  export type { Position, } from './core/types';
12
12
  export { ScopeKind, splitQualifiedIdentifier, unescapeString, escapeString, formatRecordValue, isValidIdentifier, addDoubleQuoteIfNeeded, } from './compiler/index';
13
- export { type Database, type MasterDatabase, type Table, type Note, type Column, type ColumnType, type Index, type Check, type InlineRef, type Ref, type RefEndpointPair, type RefEndpoint, type RelationCardinality, type Enum, type EnumField, type TableGroup, type TableGroupField, type Alias, type AliasKind, type TablePartial, type TablePartialInjection, type RecordValue, type RecordValueType, type TableRecord, type Project, type SchemaElement, type TokenPosition, type ElementRef, type FilterConfig, type DiagramView, } from './core/types/schemaJson';
13
+ export { type Database, type MasterDatabase, type Table, type Note, type Column, type ColumnType, type Index, type Check, type InlineRef, type Ref, type RefEndpointPair, type RefEndpoint, type Enum, type EnumField, type TableGroup, type TableGroupField, type Alias, type AliasKind, type TablePartial, type TablePartialInjection, type RecordValue, type RecordValueType, type TableRecord, type Project, type SchemaElement, type TokenPosition, type ElementRef, type FilterConfig, type DiagramView, } from './core/types/schemaJson';
14
+ export { type RelationCardinality, type RelationshipOp, getRelationshipOp, getMultiplicities, parseCardinality, CARDINALITY_ONE, CARDINALITY_MAYBE, CARDINALITY_SOME, CARDINALITY_MANY, } from './core/types/relation';
14
15
  export type { DiagramViewSyncOperation, DiagramViewBlock, TextEdit, } from './compiler/queries/transform';
15
- export type { DepSyncOperation, DepSyncEdge, DepEndpointRef, DepBlock, } from './compiler/queries/transform';
16
16
  export { dbmlLanguageConfig, dbmlMonarchTokensProvider, } from './services/monarch';
17
17
  export * from './compiler/projectLayout/layout';
18
18
  export { Compiler };
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package",
3
3
  "name": "@dbml/parse",
4
- "version": "9.0.0-alpha.3",
4
+ "version": "9.0.0-optional-ref.0",
5
5
  "description": "DBML parser v2",
6
6
  "author": "Holistics <dev@holistics.io>",
7
7
  "license": "Apache-2.0",
@@ -50,5 +50,5 @@
50
50
  "engines": {
51
51
  "node": ">=18"
52
52
  },
53
- "gitHead": "c25a2e99a38fdfabf87161919e6ba50e93a9bcf1"
53
+ "gitHead": "01feeb4d524ff11d6cfaad16730a27c73e0d3b1f"
54
54
  }
@@ -1,98 +0,0 @@
1
- import { Filepath } from '../../../core/types/filepath';
2
- import { default as Compiler } from '../../index';
3
- import { TextEdit } from './applyTextEdits';
4
- /** One endpoint of a dep edge. `fieldNames` is empty for a table-level edge. */
5
- export interface DepEndpointRef {
6
- schemaName?: string | null;
7
- tableName: string;
8
- fieldNames?: string[];
9
- }
10
- export interface DepSyncEdge {
11
- upstream: DepEndpointRef;
12
- downstream: DepEndpointRef;
13
- }
14
- export interface DepSyncOperation {
15
- operation: 'create' | 'update' | 'remove';
16
- /** The edge that identifies the target block (table-level: empty fieldNames). */
17
- edge: DepSyncEdge;
18
- color?: string;
19
- }
20
- /**
21
- * A `color` setting found on a block.
22
- *
23
- * `kind` says how to overwrite it:
24
- * - `attribute` -> replace just the `color: <hex>` attribute at `start..end`
25
- * (inside a `[...]` list that may hold other settings).
26
- * - `subDeclaration` -> replace the whole `color: <hex>` body line at
27
- * `start..end`.
28
- */
29
- interface ColorSetting {
30
- kind: 'attribute' | 'subDeclaration';
31
- start: number;
32
- end: number;
33
- /**
34
- * Range to delete when removing the color (revert to default). Wider than
35
- * `start..end`: for an attribute it swallows the whole enclosing `[...]` when
36
- * color is the sole setting, otherwise one adjacent comma; for a
37
- * sub-declaration it is the same as `start..end` (the whole body line).
38
- */
39
- stripStart: number;
40
- stripEnd: number;
41
- }
42
- export interface DepBlock {
43
- startIndex: number;
44
- endIndex: number;
45
- edges: DepSyncEdge[];
46
- /**
47
- * An existing header `[...]` attribute list (without a color setting), so a
48
- * color can be inserted into it instead of adding a second `[...]`.
49
- * Records the offset just before the list's closing `]`.
50
- */
51
- attributeListInsertAt?: number;
52
- attributeListIsEmpty?: boolean;
53
- /**
54
- * Offset of the block body `{` - where to add a header `[color: ...]` for a
55
- * block-form Dep that has no attribute list.
56
- */
57
- bodyOpenAt?: number;
58
- /**
59
- * End offset of a short-form (`Dep: a -> b`) body that has no setting list -
60
- * where to append ` [color: ...]`.
61
- */
62
- shortFormEnd?: number;
63
- /** The existing color setting (header list, inline list, or sub-declaration), if any. */
64
- color?: ColorSetting;
65
- }
66
- /**
67
- * Returns every `Dep` block in `source`.
68
- * On any lex or parse error, returns [] - there is no reliable way to read
69
- * dep blocks from malformed DBML (mirrors findDiagramViewBlocks).
70
- */
71
- export declare function findDepBlocks(source: string): DepBlock[];
72
- export interface InlineDep {
73
- edge: DepSyncEdge;
74
- stripStart: number;
75
- stripEnd: number;
76
- }
77
- export declare function findInlineDeps(source: string): InlineDep[];
78
- /**
79
- * Emit a `Dep` block for one edge with a `[color]` setting:
80
- *
81
- * Dep [color: <hex>] {
82
- * <upstream> -> <downstream>
83
- * }
84
- */
85
- export declare function generateDepBlock(edge: DepSyncEdge, color: string): string;
86
- /**
87
- * Synchronizes `Dep` blocks in the DBML source at `filepath`.
88
- *
89
- * @param filepath The file whose source should be rewritten.
90
- * @param operations Array of create/update operations to apply.
91
- * @param blocks Optional pre-parsed blocks from findDepBlocks.
92
- * @returns The new DBML source and the text edits applied.
93
- */
94
- export declare function syncDep(this: Compiler, filepath: Filepath, operations: DepSyncOperation[], blocks?: DepBlock[]): {
95
- newDbml: string;
96
- edits: TextEdit[];
97
- };
98
- export {};
@@ -1,15 +0,0 @@
1
- import { default as Compiler } from '../../../compiler';
2
- import { CompileError } from '../../types/errors';
3
- import { ElementDeclarationNode } from '../../types/nodes';
4
- import { SyntaxToken } from '../../types/tokens';
5
- export default class DepBinder {
6
- private compiler;
7
- private declarationNode;
8
- constructor(compiler: Compiler, declarationNode: ElementDeclarationNode & {
9
- type: SyntaxToken;
10
- });
11
- bind(): CompileError[];
12
- private bindBody;
13
- private bindFields;
14
- private bindSubElements;
15
- }
@@ -1,2 +0,0 @@
1
- import { GlobalModule } from '../types';
2
- export declare const depModule: GlobalModule;
@@ -1,34 +0,0 @@
1
- import { Dep } from '../../types/schemaJson';
2
- import { DepMetadata, Filepath } from '../../types';
3
- import { default as Compiler } from '../../../compiler';
4
- import { default as Report } from '../../types/report';
5
- export declare class DepInterpreter {
6
- private compiler;
7
- private metadata;
8
- private declarationNode;
9
- private filepath;
10
- private dep;
11
- constructor(compiler: Compiler, metadata: DepMetadata, filepath: Filepath);
12
- interpret(): Report<Dep>;
13
- private interpretName;
14
- private interpretEdges;
15
- /**
16
- * Read settings into `dep.note` and `dep.custom`.
17
- *
18
- * Settings come from THREE sources, in this order:
19
- * 1. The top-level attribute list on the Dep header
20
- * (e.g. `Dep my_block [color: 'blue'] { ... }`).
21
- * 2. Per-field setting lists inside the body
22
- * (e.g. `Dep { a -> b [note: 'x'] }`).
23
- * 3. Sub-element declarations inside the body
24
- * (e.g. `Dep { a -> b; note: 'x'; materialized: 'view' }`).
25
- *
26
- * All three sources write into the same `custom` object (with `note`
27
- * routed to the typed slot instead). Precedence is last-write-wins by
28
- * virtue of plain object assignment — settings later in the source
29
- * file overwrite earlier ones with the same key.
30
- */
31
- private interpretSettings;
32
- private consumeSettings;
33
- private extractAttrValue;
34
- }
@@ -1,2 +0,0 @@
1
- import { LocalModule } from '../types';
2
- export declare const depModule: LocalModule;
@@ -1,18 +0,0 @@
1
- import { default as Compiler } from '../../../compiler';
2
- import { CompileError } from '../../types/errors';
3
- import { BlockExpressionNode, ElementDeclarationNode, FunctionApplicationNode, ListExpressionNode } from '../../types/nodes';
4
- import { default as Report } from '../../types/report';
5
- import { Settings } from '../../utils/validate';
6
- export default class DepValidator {
7
- private declarationNode;
8
- private compiler;
9
- constructor(compiler: Compiler, declarationNode: ElementDeclarationNode);
10
- validate(): CompileError[];
11
- private validateContext;
12
- private validateName;
13
- private validateAlias;
14
- validateBody(body?: FunctionApplicationNode | BlockExpressionNode): CompileError[];
15
- validateFields(fields: FunctionApplicationNode[]): CompileError[];
16
- private validateSubElements;
17
- }
18
- export declare function validateDepSettings(settings: ListExpressionNode): Report<Settings>;