@dbml/parse 6.4.0 → 7.0.0-alpha.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 (155) hide show
  1. package/LICENSE +0 -0
  2. package/dist/__tests__/examples/binder/binder.test.d.ts +0 -0
  3. package/dist/__tests__/examples/binder/records.test.d.ts +0 -0
  4. package/dist/__tests__/examples/compiler/applyTextEdits.test.d.ts +0 -0
  5. package/dist/__tests__/examples/compiler/identifierUtils.test.d.ts +0 -0
  6. package/dist/__tests__/examples/compiler/renameTable.test.d.ts +0 -0
  7. package/dist/__tests__/examples/compiler/splitQualifiedIdentifier.test.d.ts +0 -0
  8. package/dist/__tests__/examples/compiler/stringUtils.test.d.ts +0 -0
  9. package/dist/__tests__/examples/compiler/syncDiagramView.test.d.ts +1 -0
  10. package/dist/__tests__/examples/interpreter/interpreter.test.d.ts +0 -0
  11. package/dist/__tests__/examples/interpreter/record/data.test.d.ts +0 -0
  12. package/dist/__tests__/examples/interpreter/record/fk.test.d.ts +0 -0
  13. package/dist/__tests__/examples/interpreter/record/increment.test.d.ts +0 -0
  14. package/dist/__tests__/examples/interpreter/record/multi_records.test.d.ts +0 -0
  15. package/dist/__tests__/examples/interpreter/record/pk.test.d.ts +0 -0
  16. package/dist/__tests__/examples/interpreter/record/table_partial.test.d.ts +0 -0
  17. package/dist/__tests__/examples/interpreter/record/type_compatibility.test.d.ts +0 -0
  18. package/dist/__tests__/examples/interpreter/record/unique.test.d.ts +0 -0
  19. package/dist/__tests__/examples/lexer/lexer.test.d.ts +0 -0
  20. package/dist/__tests__/examples/lexer/scientific-notation.test.d.ts +0 -0
  21. package/dist/__tests__/examples/parser/parser.test.d.ts +0 -0
  22. package/dist/__tests__/examples/services/definition/general.test.d.ts +0 -0
  23. package/dist/__tests__/examples/services/definition/records.test.d.ts +0 -0
  24. package/dist/__tests__/examples/services/references/general.test.d.ts +0 -0
  25. package/dist/__tests__/examples/services/references/records.test.d.ts +0 -0
  26. package/dist/__tests__/examples/services/service_utils.test.d.ts +0 -0
  27. package/dist/__tests__/examples/services/suggestions/general.test.d.ts +0 -0
  28. package/dist/__tests__/examples/services/suggestions/suggestions_diagramview.test.d.ts +1 -0
  29. package/dist/__tests__/examples/services/suggestions/suggestions_records.test.d.ts +0 -0
  30. package/dist/__tests__/examples/validator/records.test.d.ts +0 -0
  31. package/dist/__tests__/examples/validator/validator.test.d.ts +0 -0
  32. package/dist/__tests__/fuzz/interpreter.test.d.ts +0 -0
  33. package/dist/__tests__/fuzz/parser.test.d.ts +0 -0
  34. package/dist/__tests__/fuzz/services.test.d.ts +0 -0
  35. package/dist/__tests__/properties/lexer.test.d.ts +0 -0
  36. package/dist/__tests__/properties/parser.test.d.ts +0 -0
  37. package/dist/__tests__/snapshots/binder/binder.test.d.ts +0 -0
  38. package/dist/__tests__/snapshots/interpreter/interpreter.test.d.ts +0 -0
  39. package/dist/__tests__/snapshots/lexer/lexer.test.d.ts +0 -0
  40. package/dist/__tests__/snapshots/nan/nan.test.d.ts +0 -0
  41. package/dist/__tests__/snapshots/parser/parser.test.d.ts +0 -0
  42. package/dist/__tests__/snapshots/validator/validator.test.d.ts +0 -0
  43. package/dist/__tests__/utils/arbitraries/grammars.d.ts +1 -1
  44. package/dist/__tests__/utils/arbitraries/index.d.ts +0 -0
  45. package/dist/__tests__/utils/arbitraries/tokens.d.ts +0 -0
  46. package/dist/__tests__/utils/arbitraries/utils.d.ts +0 -0
  47. package/dist/__tests__/utils/compiler.d.ts +0 -0
  48. package/dist/__tests__/utils/index.d.ts +0 -0
  49. package/dist/__tests__/utils/mocks.d.ts +0 -0
  50. package/dist/__tests__/utils/testHelpers.d.ts +0 -0
  51. package/dist/dbml-parse.js +17 -11
  52. package/dist/dbml-parse.mjs +706 -13
  53. package/dist/index.d.ts +0 -0
  54. package/dist/src/compiler/index.d.ts +0 -0
  55. package/dist/src/compiler/queries/container/element.d.ts +0 -0
  56. package/dist/src/compiler/queries/container/index.d.ts +0 -0
  57. package/dist/src/compiler/queries/container/scope.d.ts +0 -0
  58. package/dist/src/compiler/queries/container/scopeKind.d.ts +0 -0
  59. package/dist/src/compiler/queries/container/stack.d.ts +0 -0
  60. package/dist/src/compiler/queries/container/token.d.ts +0 -0
  61. package/dist/src/compiler/queries/parse.d.ts +0 -0
  62. package/dist/src/compiler/queries/symbol.d.ts +0 -0
  63. package/dist/src/compiler/queries/token.d.ts +0 -0
  64. package/dist/src/compiler/queries/transform/applyTextEdits.d.ts +0 -0
  65. package/dist/src/compiler/queries/transform/index.d.ts +0 -0
  66. package/dist/src/compiler/queries/transform/renameTable.d.ts +0 -0
  67. package/dist/src/compiler/queries/transform/syncDiagramView.d.ts +30 -0
  68. package/dist/src/compiler/queries/transform/utils.d.ts +0 -0
  69. package/dist/src/compiler/queries/utils.d.ts +0 -0
  70. package/dist/src/compiler/types.d.ts +2 -1
  71. package/dist/src/constants.d.ts +0 -0
  72. package/dist/src/core/analyzer/analyzer.d.ts +0 -0
  73. package/dist/src/core/analyzer/binder/binder.d.ts +0 -0
  74. package/dist/src/core/analyzer/binder/elementBinder/checks.d.ts +0 -0
  75. package/dist/src/core/analyzer/binder/elementBinder/custom.d.ts +0 -0
  76. package/dist/src/core/analyzer/binder/elementBinder/diagramView.d.ts +20 -0
  77. package/dist/src/core/analyzer/binder/elementBinder/enum.d.ts +0 -0
  78. package/dist/src/core/analyzer/binder/elementBinder/indexes.d.ts +0 -0
  79. package/dist/src/core/analyzer/binder/elementBinder/note.d.ts +0 -0
  80. package/dist/src/core/analyzer/binder/elementBinder/project.d.ts +0 -0
  81. package/dist/src/core/analyzer/binder/elementBinder/records.d.ts +0 -0
  82. package/dist/src/core/analyzer/binder/elementBinder/ref.d.ts +0 -0
  83. package/dist/src/core/analyzer/binder/elementBinder/table.d.ts +0 -0
  84. package/dist/src/core/analyzer/binder/elementBinder/tableGroup.d.ts +0 -0
  85. package/dist/src/core/analyzer/binder/elementBinder/tablePartial.d.ts +0 -0
  86. package/dist/src/core/analyzer/binder/types.d.ts +0 -0
  87. package/dist/src/core/analyzer/binder/utils.d.ts +2 -1
  88. package/dist/src/core/analyzer/symbol/factory.d.ts +0 -0
  89. package/dist/src/core/analyzer/symbol/symbolIndex.d.ts +5 -1
  90. package/dist/src/core/analyzer/symbol/symbolTable.d.ts +0 -0
  91. package/dist/src/core/analyzer/symbol/symbols.d.ts +26 -0
  92. package/dist/src/core/analyzer/symbol/utils.d.ts +0 -0
  93. package/dist/src/core/analyzer/types.d.ts +2 -1
  94. package/dist/src/core/analyzer/utils.d.ts +0 -0
  95. package/dist/src/core/analyzer/validator/elementValidators/checks.d.ts +0 -0
  96. package/dist/src/core/analyzer/validator/elementValidators/custom.d.ts +0 -0
  97. package/dist/src/core/analyzer/validator/elementValidators/diagramView.d.ts +25 -0
  98. package/dist/src/core/analyzer/validator/elementValidators/enum.d.ts +0 -0
  99. package/dist/src/core/analyzer/validator/elementValidators/indexes.d.ts +0 -0
  100. package/dist/src/core/analyzer/validator/elementValidators/note.d.ts +0 -0
  101. package/dist/src/core/analyzer/validator/elementValidators/project.d.ts +0 -0
  102. package/dist/src/core/analyzer/validator/elementValidators/records.d.ts +0 -0
  103. package/dist/src/core/analyzer/validator/elementValidators/ref.d.ts +0 -0
  104. package/dist/src/core/analyzer/validator/elementValidators/table.d.ts +0 -0
  105. package/dist/src/core/analyzer/validator/elementValidators/tableGroup.d.ts +0 -0
  106. package/dist/src/core/analyzer/validator/elementValidators/tablePartial.d.ts +0 -0
  107. package/dist/src/core/analyzer/validator/types.d.ts +0 -0
  108. package/dist/src/core/analyzer/validator/utils.d.ts +2 -1
  109. package/dist/src/core/analyzer/validator/validator.d.ts +0 -0
  110. package/dist/src/core/errors.d.ts +4 -0
  111. package/dist/src/core/interpreter/elementInterpreter/diagramView.d.ts +13 -0
  112. package/dist/src/core/interpreter/elementInterpreter/enum.d.ts +0 -0
  113. package/dist/src/core/interpreter/elementInterpreter/project.d.ts +0 -0
  114. package/dist/src/core/interpreter/elementInterpreter/ref.d.ts +0 -0
  115. package/dist/src/core/interpreter/elementInterpreter/sticky_note.d.ts +0 -0
  116. package/dist/src/core/interpreter/elementInterpreter/table.d.ts +0 -0
  117. package/dist/src/core/interpreter/elementInterpreter/tableGroup.d.ts +0 -0
  118. package/dist/src/core/interpreter/elementInterpreter/tablePartial.d.ts +0 -0
  119. package/dist/src/core/interpreter/interpreter.d.ts +0 -0
  120. package/dist/src/core/interpreter/records/index.d.ts +0 -0
  121. package/dist/src/core/interpreter/records/utils/constraints/fk.d.ts +0 -0
  122. package/dist/src/core/interpreter/records/utils/constraints/helper.d.ts +0 -0
  123. package/dist/src/core/interpreter/records/utils/constraints/index.d.ts +0 -0
  124. package/dist/src/core/interpreter/records/utils/constraints/pk.d.ts +0 -0
  125. package/dist/src/core/interpreter/records/utils/constraints/unique.d.ts +0 -0
  126. package/dist/src/core/interpreter/records/utils/data/index.d.ts +0 -0
  127. package/dist/src/core/interpreter/records/utils/data/sqlTypes.d.ts +0 -0
  128. package/dist/src/core/interpreter/records/utils/data/values.d.ts +0 -0
  129. package/dist/src/core/interpreter/records/utils/index.d.ts +0 -0
  130. package/dist/src/core/interpreter/types.d.ts +33 -0
  131. package/dist/src/core/interpreter/utils.d.ts +0 -0
  132. package/dist/src/core/lexer/lexer.d.ts +0 -0
  133. package/dist/src/core/lexer/tokens.d.ts +0 -0
  134. package/dist/src/core/lexer/utils.d.ts +0 -0
  135. package/dist/src/core/option.d.ts +0 -0
  136. package/dist/src/core/parser/contextStack.d.ts +0 -0
  137. package/dist/src/core/parser/factory.d.ts +0 -0
  138. package/dist/src/core/parser/nodes.d.ts +0 -0
  139. package/dist/src/core/parser/parser.d.ts +0 -0
  140. package/dist/src/core/parser/utils.d.ts +0 -0
  141. package/dist/src/core/report.d.ts +0 -0
  142. package/dist/src/core/types.d.ts +0 -0
  143. package/dist/src/core/utils.d.ts +0 -0
  144. package/dist/src/index.d.ts +4 -1
  145. package/dist/src/services/definition/provider.d.ts +0 -0
  146. package/dist/src/services/diagnostics/provider.d.ts +0 -0
  147. package/dist/src/services/index.d.ts +1 -0
  148. package/dist/src/services/monarch.d.ts +3 -0
  149. package/dist/src/services/references/provider.d.ts +0 -0
  150. package/dist/src/services/suggestions/provider.d.ts +0 -0
  151. package/dist/src/services/suggestions/recordRowSnippet.d.ts +0 -0
  152. package/dist/src/services/suggestions/utils.d.ts +0 -0
  153. package/dist/src/services/types.d.ts +0 -0
  154. package/dist/src/services/utils.d.ts +0 -0
  155. package/package.json +2 -3
package/dist/index.d.ts CHANGED
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
@@ -0,0 +1,30 @@
1
+ export interface DiagramViewSyncOperation {
2
+ operation: 'create' | 'update' | 'delete';
3
+ name: string;
4
+ newName?: string;
5
+ visibleEntities?: {
6
+ tables?: Array<{
7
+ name: string;
8
+ schemaName: string;
9
+ }> | null;
10
+ stickyNotes?: Array<{
11
+ name: string;
12
+ }> | null;
13
+ tableGroups?: Array<{
14
+ name: string;
15
+ }> | null;
16
+ schemas?: Array<{
17
+ name: string;
18
+ }> | null;
19
+ };
20
+ }
21
+ /**
22
+ * Synchronizes DiagramView blocks in DBML source code.
23
+ *
24
+ * @param dbml - The original DBML source code
25
+ * @param operations - Array of operations to apply (create, update, delete)
26
+ * @returns Object containing the new DBML source code
27
+ */
28
+ export declare function syncDiagramView(dbml: string, operations: DiagramViewSyncOperation[]): {
29
+ newDbml: string;
30
+ };
File without changes
File without changes
@@ -10,5 +10,6 @@ export declare const enum ScopeKind {
10
10
  TOPLEVEL = 8,
11
11
  TABLEPARTIAL = 9,
12
12
  CHECKS = 10,
13
- RECORDS = 11
13
+ RECORDS = 11,
14
+ DIAGRAMVIEW = 12
14
15
  }
File without changes
File without changes
File without changes
@@ -0,0 +1,20 @@
1
+ import { ElementDeclarationNode, ProgramNode } from '../../../parser/nodes';
2
+ import { ElementBinder } from '../types';
3
+ import { SyntaxToken } from '../../../lexer/tokens';
4
+ import { CompileError } from '../../../errors';
5
+ import { default as SymbolFactory } from '../../symbol/factory';
6
+ export default class DiagramViewBinder implements ElementBinder {
7
+ private symbolFactory;
8
+ private declarationNode;
9
+ private ast;
10
+ constructor(declarationNode: ElementDeclarationNode & {
11
+ type: SyntaxToken;
12
+ }, ast: ProgramNode, symbolFactory: SymbolFactory);
13
+ bind(): CompileError[];
14
+ private bindBody;
15
+ private bindSubElements;
16
+ private bindTableReferences;
17
+ private bindNoteReferences;
18
+ private bindTableGroupReferences;
19
+ private bindSchemaReferences;
20
+ }
File without changes
@@ -2,6 +2,7 @@ import { SyntaxToken } from '../../lexer/tokens';
2
2
  import { ElementDeclarationNode, PrimaryExpressionNode, ProgramNode, SyntaxNode, VariableNode } from '../../parser/nodes';
3
3
  import { default as ChecksBinder } from './elementBinder/checks';
4
4
  import { default as CustomBinder } from './elementBinder/custom';
5
+ import { default as DiagramViewBinder } from './elementBinder/diagramView';
5
6
  import { default as EnumBinder } from './elementBinder/enum';
6
7
  import { default as IndexesBinder } from './elementBinder/indexes';
7
8
  import { default as NoteBinder } from './elementBinder/note';
@@ -15,7 +16,7 @@ import { CompileError } from '../../errors';
15
16
  import { default as RecordsBinder } from './elementBinder/records';
16
17
  export declare function pickBinder(element: ElementDeclarationNode & {
17
18
  type: SyntaxToken;
18
- }): typeof ChecksBinder | typeof CustomBinder | typeof EnumBinder | typeof TableBinder | typeof TableGroupBinder | typeof ProjectBinder | typeof RefBinder | typeof NoteBinder | typeof IndexesBinder | typeof TablePartialBinder | typeof RecordsBinder;
19
+ }): typeof ChecksBinder | typeof CustomBinder | typeof EnumBinder | typeof TableBinder | typeof TableGroupBinder | typeof ProjectBinder | typeof RefBinder | typeof NoteBinder | typeof IndexesBinder | typeof TablePartialBinder | typeof RecordsBinder | typeof DiagramViewBinder;
19
20
  export declare function scanNonListNodeForBinding(node?: SyntaxNode): {
20
21
  variables: (PrimaryExpressionNode & {
21
22
  expression: VariableNode;
File without changes
@@ -10,7 +10,9 @@ export declare enum SymbolKind {
10
10
  EnumField = "Enum field",
11
11
  Note = "Note",
12
12
  TablePartial = "TablePartial",
13
- PartialInjection = "PartialInjection"
13
+ PartialInjection = "PartialInjection",
14
+ DiagramView = "DiagramView",
15
+ DiagramViewField = "DiagramView field"
14
16
  }
15
17
  export declare function createSchemaSymbolIndex(key: string): NodeSymbolIndex;
16
18
  export declare function createTableSymbolIndex(key: string): NodeSymbolIndex;
@@ -22,6 +24,8 @@ export declare function createTableGroupFieldSymbolIndex(key: string): NodeSymbo
22
24
  export declare function createStickyNoteSymbolIndex(key: string): NodeSymbolIndex;
23
25
  export declare function createTablePartialSymbolIndex(key: string): NodeSymbolIndex;
24
26
  export declare function createPartialInjectionSymbolIndex(key: string): NodeSymbolIndex;
27
+ export declare function createDiagramViewSymbolIndex(key: string): NodeSymbolIndex;
28
+ export declare function createDiagramViewFieldSymbolIndex(key: string): NodeSymbolIndex;
25
29
  export declare function createNodeSymbolIndex(key: string, symbolKind: SymbolKind): NodeSymbolIndex;
26
30
  export declare function destructureIndex(id: NodeSymbolIndex): Option<{
27
31
  name: string;
File without changes
@@ -74,6 +74,32 @@ export declare class TableGroupFieldSymbol implements NodeSymbol {
74
74
  declaration: SyntaxNode;
75
75
  }, id: NodeSymbolId);
76
76
  }
77
+ export declare class DiagramViewSymbol implements NodeSymbol {
78
+ id: NodeSymbolId;
79
+ symbolTable: SymbolTable;
80
+ declaration: SyntaxNode;
81
+ references: SyntaxNode[];
82
+ constructor({ symbolTable, declaration }: {
83
+ symbolTable: SymbolTable;
84
+ declaration: SyntaxNode;
85
+ }, id: NodeSymbolId);
86
+ }
87
+ export declare class DiagramViewFieldSymbol implements NodeSymbol {
88
+ id: NodeSymbolId;
89
+ declaration: SyntaxNode;
90
+ references: SyntaxNode[];
91
+ constructor({ declaration }: {
92
+ declaration: SyntaxNode;
93
+ }, id: NodeSymbolId);
94
+ }
95
+ export declare class StickyNoteSymbol implements NodeSymbol {
96
+ id: NodeSymbolId;
97
+ declaration: SyntaxNode;
98
+ references: SyntaxNode[];
99
+ constructor({ declaration }: {
100
+ declaration: SyntaxNode;
101
+ }, id: NodeSymbolId);
102
+ }
77
103
  export declare class TablePartialSymbol implements NodeSymbol {
78
104
  id: NodeSymbolId;
79
105
  symbolTable: SymbolTable;
File without changes
@@ -8,7 +8,8 @@ export declare enum ElementKind {
8
8
  TableGroup = "tablegroup",
9
9
  TablePartial = "tablepartial",
10
10
  Check = "checks",
11
- Records = "records"
11
+ Records = "records",
12
+ DiagramView = "diagramview"
12
13
  }
13
14
  export declare enum SettingName {
14
15
  Color = "color",
File without changes
@@ -0,0 +1,25 @@
1
+ import { CompileError, CompileWarning } from '../../../errors';
2
+ import { ElementValidator } from '../types';
3
+ import { default as SymbolTable } from '../../symbol/symbolTable';
4
+ import { SyntaxToken } from '../../../lexer/tokens';
5
+ import { BlockExpressionNode, ElementDeclarationNode, FunctionApplicationNode } from '../../../parser/nodes';
6
+ import { default as SymbolFactory } from '../../symbol/factory';
7
+ export default class DiagramViewValidator implements ElementValidator {
8
+ private declarationNode;
9
+ private publicSymbolTable;
10
+ private symbolFactory;
11
+ constructor(declarationNode: ElementDeclarationNode & {
12
+ type: SyntaxToken;
13
+ }, publicSymbolTable: SymbolTable, symbolFactory: SymbolFactory);
14
+ validate(): CompileError[];
15
+ private validateContext;
16
+ private validateName;
17
+ private validateAlias;
18
+ registerElement(): CompileError[];
19
+ private validateSettingList;
20
+ validateBody(body?: FunctionApplicationNode | BlockExpressionNode): (CompileError | CompileWarning)[];
21
+ validateFields(fields: FunctionApplicationNode[]): (CompileError | CompileWarning)[];
22
+ private validateSubElements;
23
+ private validateSubBlock;
24
+ registerSubBlockFields(sub: ElementDeclarationNode): CompileError[];
25
+ }
File without changes
@@ -14,9 +14,10 @@ import { default as Report } from '../../report';
14
14
  import { default as TablePartialValidator } from './elementValidators/tablePartial';
15
15
  import { default as ChecksValidator } from './elementValidators/checks';
16
16
  import { default as RecordsValidator } from './elementValidators/records';
17
+ import { default as DiagramViewValidator } from './elementValidators/diagramView';
17
18
  export declare function pickValidator(element: ElementDeclarationNode & {
18
19
  type: SyntaxToken;
19
- }): typeof CustomValidator | typeof EnumValidator | typeof TableValidator | typeof TableGroupValidator | typeof ProjectValidator | typeof RefValidator | typeof NoteValidator | typeof IndexesValidator | typeof TablePartialValidator | typeof ChecksValidator | typeof RecordsValidator;
20
+ }): typeof CustomValidator | typeof EnumValidator | typeof TableValidator | typeof TableGroupValidator | typeof ProjectValidator | typeof RefValidator | typeof NoteValidator | typeof IndexesValidator | typeof TablePartialValidator | typeof ChecksValidator | typeof RecordsValidator | typeof DiagramViewValidator;
20
21
  export declare function isValidName(nameNode: SyntaxNode): boolean;
21
22
  export declare function isValidAlias(aliasNode: SyntaxNode): aliasNode is PrimaryExpressionNode & {
22
23
  expression: VariableNode;
File without changes
@@ -95,6 +95,10 @@ export declare enum CompileErrorCode {
95
95
  INVALID_RECORDS_FIELD = 3079,
96
96
  DUPLICATE_COLUMN_REFERENCES_IN_RECORDS = 3080,
97
97
  DUPLICATE_RECORDS_FOR_TABLE = 3081,
98
+ INVALID_DIAGRAMVIEW_CONTEXT = 3082,
99
+ DUPLICATE_DIAGRAMVIEW_NAME = 3083,
100
+ INVALID_DIAGRAMVIEW_FIELD = 3084,
101
+ DUPLICATE_DIAGRAMVIEW_FIELD = 3085,
98
102
  BINDING_ERROR = 4000,
99
103
  UNSUPPORTED = 5000,
100
104
  CIRCULAR_REF = 5001,
@@ -0,0 +1,13 @@
1
+ import { CompileError } from '../../errors';
2
+ import { ElementDeclarationNode } from '../../parser/nodes';
3
+ import { ElementInterpreter, InterpreterDatabase } from '../types';
4
+ export declare class DiagramViewInterpreter implements ElementInterpreter {
5
+ private declarationNode;
6
+ private env;
7
+ private diagramView;
8
+ constructor(declarationNode: ElementDeclarationNode, env: InterpreterDatabase);
9
+ interpret(): CompileError[];
10
+ private interpretName;
11
+ private interpretBody;
12
+ private interpretSubBlock;
13
+ }
File without changes
File without changes
@@ -8,6 +8,37 @@ export interface TokenPosition {
8
8
  export interface ElementInterpreter {
9
9
  interpret(): CompileError[];
10
10
  }
11
+ /**
12
+ * FilterConfig is a tri-state filter:
13
+ * - [] (empty array) = show all
14
+ * - [...] (array with items) = show only these specific items
15
+ * - null = hide all
16
+ */
17
+ export interface FilterConfig {
18
+ tables: Array<{
19
+ name: string;
20
+ schemaName: string;
21
+ }> | null;
22
+ stickyNotes: Array<{
23
+ name: string;
24
+ }> | null;
25
+ tableGroups: Array<{
26
+ name: string;
27
+ }> | null;
28
+ schemas: Array<{
29
+ name: string;
30
+ }> | null;
31
+ }
32
+ export interface DiagramView {
33
+ name: string;
34
+ schemaName: string | null;
35
+ visibleEntities: FilterConfig;
36
+ token: TokenPosition;
37
+ /** Internal: tracks which dims used explicit wildcard (*). Stripped before output. */
38
+ _explicitWildcards?: Set<string>;
39
+ /** Internal: tracks which dims were explicitly declared in the DBML. Stripped before output. */
40
+ _explicitlySet?: Set<string>;
41
+ }
11
42
  export interface InterpreterDatabase {
12
43
  schema: [];
13
44
  tables: Map<ElementDeclarationNode, Table>;
@@ -28,6 +59,7 @@ export interface InterpreterDatabase {
28
59
  recordsElements: ElementDeclarationNode[];
29
60
  cachedMergedTables: Map<Table, Table>;
30
61
  source: string;
62
+ diagramViews?: Map<ElementDeclarationNode, DiagramView>;
31
63
  }
32
64
  export type RecordValueType = 'string' | 'bool' | 'integer' | 'real' | 'date' | 'time' | 'datetime' | string;
33
65
  export interface RecordValue {
@@ -64,6 +96,7 @@ export interface Database {
64
96
  project: Project;
65
97
  tablePartials: TablePartial[];
66
98
  records: TableRecord[];
99
+ diagramViews: DiagramView[];
67
100
  }
68
101
  export interface Table {
69
102
  name: string;
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
File without changes
File without changes
@@ -7,5 +7,8 @@ export { SyntaxToken, SyntaxTokenKind, } from './core/lexer/tokens';
7
7
  export { CompileError, CompileErrorCode, } from './core/errors';
8
8
  export { type Position, } from './core/types';
9
9
  export { ScopeKind, splitQualifiedIdentifier, unescapeString, escapeString, formatRecordValue, isValidIdentifier, addDoubleQuoteIfNeeded, } from './compiler/index';
10
- export { type Database, type Table, type Column, type Enum, type Ref, type Project, type TableGroup, type TablePartial, } from './core/interpreter/types';
10
+ export { type Database, type Table, type Column, type Enum, type Ref, type Project, type TableGroup, type TablePartial, type DiagramView, type FilterConfig, } from './core/interpreter/types';
11
+ export { syncDiagramView } from './compiler/queries/transform/syncDiagramView';
12
+ export type { DiagramViewSyncOperation } from './compiler/queries/transform/syncDiagramView';
13
+ export { dbmlMonarchTokensProvider } from './services/monarch';
11
14
  export { Compiler, services };
File without changes
File without changes
@@ -4,3 +4,4 @@ import { default as DBMLReferencesProvider } from './references/provider';
4
4
  import { default as DBMLDiagnosticsProvider } from './diagnostics/provider';
5
5
  export * from './types';
6
6
  export { DBMLCompletionItemProvider, DBMLDefinitionProvider, DBMLReferencesProvider, DBMLDiagnosticsProvider, };
7
+ export { dbmlMonarchTokensProvider } from './monarch';
@@ -0,0 +1,3 @@
1
+ import { languages } from 'monaco-editor-core';
2
+ declare const dbmlMonarchTokensProvider: languages.IMonarchLanguage;
3
+ export { dbmlMonarchTokensProvider };
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": "6.4.0",
4
+ "version": "7.0.0-alpha.0",
5
5
  "description": "DBML parser v2",
6
6
  "author": "Holistics <dev@holistics.io>",
7
7
  "license": "Apache-2.0",
@@ -30,7 +30,6 @@
30
30
  "test": "vitest run",
31
31
  "test:watch": "vitest watch",
32
32
  "coverage": "vitest run --coverage",
33
- "prepublish": "npm run build",
34
33
  "prepare": "npm run build",
35
34
  "lint": "eslint .",
36
35
  "lint:fix": "eslint --fix ."
@@ -46,5 +45,5 @@
46
45
  "engines": {
47
46
  "node": ">=18"
48
47
  },
49
- "gitHead": "e365a1165ce3610f2bc9563b9eefac206d2f5c35"
48
+ "gitHead": "cb925c52bc255aa63688dc04db48f2ad5d7129c9"
50
49
  }