@dbml/parse 6.5.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
@@ -1235,6 +1235,18 @@ var NodeSymbolIdGenerator = class {
1235
1235
  constructor({ declaration: r }, j) {
1236
1236
  this.references = [], this.id = j, this.declaration = r;
1237
1237
  }
1238
+ }, DiagramViewSymbol = class {
1239
+ constructor({ symbolTable: r, declaration: j }, M) {
1240
+ this.references = [], this.id = M, this.symbolTable = r, this.declaration = j;
1241
+ }
1242
+ }, DiagramViewFieldSymbol = class {
1243
+ constructor({ declaration: r }, j) {
1244
+ this.references = [], this.id = j, this.declaration = r;
1245
+ }
1246
+ }, StickyNoteSymbol = class {
1247
+ constructor({ declaration: r }, j) {
1248
+ this.references = [], this.id = j, this.declaration = r;
1249
+ }
1238
1250
  }, TablePartialSymbol = class {
1239
1251
  constructor({ symbolTable: r, declaration: j }, M) {
1240
1252
  this.references = [], this.id = M, this.symbolTable = r, this.declaration = j;
@@ -1249,7 +1261,7 @@ var NodeSymbolIdGenerator = class {
1249
1261
  }
1250
1262
  };
1251
1263
  let CompileErrorCode = /* @__PURE__ */ function(r) {
1252
- return r[r.UNKNOWN_SYMBOL = 1e3] = "UNKNOWN_SYMBOL", r[r.UNEXPECTED_SYMBOL = 1001] = "UNEXPECTED_SYMBOL", r[r.UNEXPECTED_EOF = 1002] = "UNEXPECTED_EOF", r[r.UNEXPECTED_NEWLINE = 1003] = "UNEXPECTED_NEWLINE", r[r.UNKNOWN_TOKEN = 1004] = "UNKNOWN_TOKEN", r[r.UNEXPECTED_TOKEN = 1005] = "UNEXPECTED_TOKEN", r[r.UNEXPECTED_ELEMENT_DECLARATION = 1006] = "UNEXPECTED_ELEMENT_DECLARATION", r[r.MISSING_SPACES = 1007] = "MISSING_SPACES", r[r.UNKNOWN_PREFIX_OP = 1008] = "UNKNOWN_PREFIX_OP", r[r.INVALID_OPERAND = 1009] = "INVALID_OPERAND", r[r.EMPTY_ATTRIBUTE_NAME = 1010] = "EMPTY_ATTRIBUTE_NAME", r[r.INVALID_ESCAPE_SEQUENCE = 1011] = "INVALID_ESCAPE_SEQUENCE", r[r.INVALID_NAME = 3e3] = "INVALID_NAME", r[r.UNEXPECTED_NAME = 3001] = "UNEXPECTED_NAME", r[r.NAME_NOT_FOUND = 3002] = "NAME_NOT_FOUND", r[r.DUPLICATE_NAME = 3003] = "DUPLICATE_NAME", r[r.INVALID_ALIAS = 3004] = "INVALID_ALIAS", r[r.UNEXPECTED_ALIAS = 3005] = "UNEXPECTED_ALIAS", r[r.UNEXPECTED_SETTINGS = 3006] = "UNEXPECTED_SETTINGS", r[r.INVALID_SETTINGS = 3007] = "INVALID_SETTINGS", r[r.UNEXPECTED_SIMPLE_BODY = 3008] = "UNEXPECTED_SIMPLE_BODY", r[r.UNEXPECTED_COMPLEX_BODY = 3009] = "UNEXPECTED_COMPLEX_BODY", r[r.INVALID_TABLE_CONTEXT = 3010] = "INVALID_TABLE_CONTEXT", r[r.UNKNOWN_TABLE_SETTING = 3011] = "UNKNOWN_TABLE_SETTING", r[r.DUPLICATE_TABLE_SETTING = 3012] = "DUPLICATE_TABLE_SETTING", r[r.INVALID_TABLEGROUP_CONTEXT = 3013] = "INVALID_TABLEGROUP_CONTEXT", r[r.INVALID_TABLEGROUP_ELEMENT_NAME = 3014] = "INVALID_TABLEGROUP_ELEMENT_NAME", r[r.DUPLICATE_TABLEGROUP_ELEMENT_NAME = 3015] = "DUPLICATE_TABLEGROUP_ELEMENT_NAME", r[r.DUPLICATE_TABLEGROUP_FIELD_NAME = 3016] = "DUPLICATE_TABLEGROUP_FIELD_NAME", r[r.INVALID_TABLEGROUP_FIELD = 3017] = "INVALID_TABLEGROUP_FIELD", r[r.EMPTY_TABLE = 3018] = "EMPTY_TABLE", r[r.INVALID_COLUMN = 3019] = "INVALID_COLUMN", r[r.INVALID_COLUMN_NAME = 3020] = "INVALID_COLUMN_NAME", r[r.UNKNOWN_COLUMN_SETTING = 3021] = "UNKNOWN_COLUMN_SETTING", r[r.INVALID_COLUMN_TYPE = 3022] = "INVALID_COLUMN_TYPE", r[r.DUPLICATE_COLUMN_NAME = 3023] = "DUPLICATE_COLUMN_NAME", r[r.DUPLICATE_COLUMN_SETTING = 3024] = "DUPLICATE_COLUMN_SETTING", r[r.INVALID_COLUMN_SETTING_VALUE = 3025] = "INVALID_COLUMN_SETTING_VALUE", r[r.INVALID_ENUM_CONTEXT = 3026] = "INVALID_ENUM_CONTEXT", r[r.INVALID_ENUM_ELEMENT_NAME = 3027] = "INVALID_ENUM_ELEMENT_NAME", r[r.INVALID_ENUM_ELEMENT = 3028] = "INVALID_ENUM_ELEMENT", r[r.DUPLICATE_ENUM_ELEMENT_NAME = 3029] = "DUPLICATE_ENUM_ELEMENT_NAME", r[r.UNKNOWN_ENUM_ELEMENT_SETTING = 3030] = "UNKNOWN_ENUM_ELEMENT_SETTING", r[r.DUPLICATE_ENUM_ELEMENT_SETTING = 3031] = "DUPLICATE_ENUM_ELEMENT_SETTING", r[r.INVALID_ENUM_ELEMENT_SETTING = 3032] = "INVALID_ENUM_ELEMENT_SETTING", r[r.EMPTY_ENUM = 3033] = "EMPTY_ENUM", r[r.INVALID_REF_CONTEXT = 3034] = "INVALID_REF_CONTEXT", r[r.UNKNOWN_REF_SETTING = 3035] = "UNKNOWN_REF_SETTING", r[r.DUPLICATE_REF_SETTING = 3036] = "DUPLICATE_REF_SETTING", r[r.INVALID_REF_SETTING_VALUE = 3037] = "INVALID_REF_SETTING_VALUE", r[r.INVALID_REF_RELATIONSHIP = 3038] = "INVALID_REF_RELATIONSHIP", r[r.INVALID_REF_FIELD = 3039] = "INVALID_REF_FIELD", r[r.EMPTY_REF = 3040] = "EMPTY_REF", r[r.REF_REDEFINED = 3041] = "REF_REDEFINED", r[r.INVALID_NOTE_CONTEXT = 3042] = "INVALID_NOTE_CONTEXT", r[r.INVALID_NOTE = 3043] = "INVALID_NOTE", r[r.NOTE_REDEFINED = 3044] = "NOTE_REDEFINED", r[r.NOTE_CONTENT_REDEFINED = 3045] = "NOTE_CONTENT_REDEFINED", r[r.EMPTY_NOTE = 3046] = "EMPTY_NOTE", r[r.INVALID_INDEXES_CONTEXT = 3047] = "INVALID_INDEXES_CONTEXT", r[r.INVALID_INDEXES_FIELD = 3048] = "INVALID_INDEXES_FIELD", r[r.INVALID_INDEX = 3049] = "INVALID_INDEX", r[r.UNKNOWN_INDEX_SETTING = 3050] = "UNKNOWN_INDEX_SETTING", r[r.DUPLICATE_INDEX_SETTING = 3051] = "DUPLICATE_INDEX_SETTING", r[r.UNEXPECTED_INDEX_SETTING_VALUE = 3052] = "UNEXPECTED_INDEX_SETTING_VALUE", r[r.INVALID_INDEX_SETTING_VALUE = 3053] = "INVALID_INDEX_SETTING_VALUE", r[r.INVALID_PROJECT_CONTEXT = 3054] = "INVALID_PROJECT_CONTEXT", r[r.PROJECT_REDEFINED = 3055] = "PROJECT_REDEFINED", r[r.INVALID_PROJECT_FIELD = 3056] = "INVALID_PROJECT_FIELD", r[r.INVALID_CUSTOM_CONTEXT = 3057] = "INVALID_CUSTOM_CONTEXT", r[r.INVALID_CUSTOM_ELEMENT_VALUE = 3058] = "INVALID_CUSTOM_ELEMENT_VALUE", r[r.INVALID_ELEMENT_IN_SIMPLE_BODY = 3059] = "INVALID_ELEMENT_IN_SIMPLE_BODY", r[r.INVALID_TABLE_PARTIAL_CONTEXT = 3060] = "INVALID_TABLE_PARTIAL_CONTEXT", r[r.INVALID_TABLE_PARTIAL_ELEMENT_NAME = 3061] = "INVALID_TABLE_PARTIAL_ELEMENT_NAME", r[r.INVALID_TABLE_PARTIAL_SETTING_VALUE = 3062] = "INVALID_TABLE_PARTIAL_SETTING_VALUE", r[r.DUPLICATE_TABLE_PARTIAL_ELEMENT_NAME = 3063] = "DUPLICATE_TABLE_PARTIAL_ELEMENT_NAME", r[r.DUPLICATE_TABLE_PARTIAL_SETTING = 3064] = "DUPLICATE_TABLE_PARTIAL_SETTING", r[r.INVALID_TABLE_PARTIAL_INJECTION = 3065] = "INVALID_TABLE_PARTIAL_INJECTION", r[r.INVALID_TABLE_PARTIAL_INJECTION_OP = 3066] = "INVALID_TABLE_PARTIAL_INJECTION_OP", r[r.INVALID_TABLE_PARTIAL_INJECTION_NAME = 3067] = "INVALID_TABLE_PARTIAL_INJECTION_NAME", r[r.DUPLICATE_TABLE_PARTIAL_INJECTION_NAME = 3068] = "DUPLICATE_TABLE_PARTIAL_INJECTION_NAME", r[r.UNKNOWN_TABLE_PARTIAL_SETTING = 3069] = "UNKNOWN_TABLE_PARTIAL_SETTING", r[r.INVALID_TABLE_SETTING_VALUE = 3070] = "INVALID_TABLE_SETTING_VALUE", r[r.INVALID_CHECKS_CONTEXT = 3071] = "INVALID_CHECKS_CONTEXT", r[r.INVALID_CHECKS_FIELD = 3072] = "INVALID_CHECKS_FIELD", r[r.INVALID_CHECK = 3073] = "INVALID_CHECK", r[r.UNKNOWN_CHECK_SETTING = 3074] = "UNKNOWN_CHECK_SETTING", r[r.DUPLICATE_CHECK_SETTING = 3075] = "DUPLICATE_CHECK_SETTING", r[r.INVALID_CHECK_SETTING_VALUE = 3076] = "INVALID_CHECK_SETTING_VALUE", r[r.INVALID_RECORDS_CONTEXT = 3077] = "INVALID_RECORDS_CONTEXT", r[r.INVALID_RECORDS_NAME = 3078] = "INVALID_RECORDS_NAME", r[r.INVALID_RECORDS_FIELD = 3079] = "INVALID_RECORDS_FIELD", r[r.DUPLICATE_COLUMN_REFERENCES_IN_RECORDS = 3080] = "DUPLICATE_COLUMN_REFERENCES_IN_RECORDS", r[r.DUPLICATE_RECORDS_FOR_TABLE = 3081] = "DUPLICATE_RECORDS_FOR_TABLE", r[r.BINDING_ERROR = 4e3] = "BINDING_ERROR", r[r.UNSUPPORTED = 5e3] = "UNSUPPORTED", r[r.CIRCULAR_REF = 5001] = "CIRCULAR_REF", r[r.SAME_ENDPOINT = 5002] = "SAME_ENDPOINT", r[r.UNEQUAL_FIELDS_BINARY_REF = 5003] = "UNEQUAL_FIELDS_BINARY_REF", r[r.CONFLICTING_SETTING = 5004] = "CONFLICTING_SETTING", r[r.TABLE_REAPPEAR_IN_TABLEGROUP = 5005] = "TABLE_REAPPEAR_IN_TABLEGROUP", r;
1264
+ return r[r.UNKNOWN_SYMBOL = 1e3] = "UNKNOWN_SYMBOL", r[r.UNEXPECTED_SYMBOL = 1001] = "UNEXPECTED_SYMBOL", r[r.UNEXPECTED_EOF = 1002] = "UNEXPECTED_EOF", r[r.UNEXPECTED_NEWLINE = 1003] = "UNEXPECTED_NEWLINE", r[r.UNKNOWN_TOKEN = 1004] = "UNKNOWN_TOKEN", r[r.UNEXPECTED_TOKEN = 1005] = "UNEXPECTED_TOKEN", r[r.UNEXPECTED_ELEMENT_DECLARATION = 1006] = "UNEXPECTED_ELEMENT_DECLARATION", r[r.MISSING_SPACES = 1007] = "MISSING_SPACES", r[r.UNKNOWN_PREFIX_OP = 1008] = "UNKNOWN_PREFIX_OP", r[r.INVALID_OPERAND = 1009] = "INVALID_OPERAND", r[r.EMPTY_ATTRIBUTE_NAME = 1010] = "EMPTY_ATTRIBUTE_NAME", r[r.INVALID_ESCAPE_SEQUENCE = 1011] = "INVALID_ESCAPE_SEQUENCE", r[r.INVALID_NAME = 3e3] = "INVALID_NAME", r[r.UNEXPECTED_NAME = 3001] = "UNEXPECTED_NAME", r[r.NAME_NOT_FOUND = 3002] = "NAME_NOT_FOUND", r[r.DUPLICATE_NAME = 3003] = "DUPLICATE_NAME", r[r.INVALID_ALIAS = 3004] = "INVALID_ALIAS", r[r.UNEXPECTED_ALIAS = 3005] = "UNEXPECTED_ALIAS", r[r.UNEXPECTED_SETTINGS = 3006] = "UNEXPECTED_SETTINGS", r[r.INVALID_SETTINGS = 3007] = "INVALID_SETTINGS", r[r.UNEXPECTED_SIMPLE_BODY = 3008] = "UNEXPECTED_SIMPLE_BODY", r[r.UNEXPECTED_COMPLEX_BODY = 3009] = "UNEXPECTED_COMPLEX_BODY", r[r.INVALID_TABLE_CONTEXT = 3010] = "INVALID_TABLE_CONTEXT", r[r.UNKNOWN_TABLE_SETTING = 3011] = "UNKNOWN_TABLE_SETTING", r[r.DUPLICATE_TABLE_SETTING = 3012] = "DUPLICATE_TABLE_SETTING", r[r.INVALID_TABLEGROUP_CONTEXT = 3013] = "INVALID_TABLEGROUP_CONTEXT", r[r.INVALID_TABLEGROUP_ELEMENT_NAME = 3014] = "INVALID_TABLEGROUP_ELEMENT_NAME", r[r.DUPLICATE_TABLEGROUP_ELEMENT_NAME = 3015] = "DUPLICATE_TABLEGROUP_ELEMENT_NAME", r[r.DUPLICATE_TABLEGROUP_FIELD_NAME = 3016] = "DUPLICATE_TABLEGROUP_FIELD_NAME", r[r.INVALID_TABLEGROUP_FIELD = 3017] = "INVALID_TABLEGROUP_FIELD", r[r.EMPTY_TABLE = 3018] = "EMPTY_TABLE", r[r.INVALID_COLUMN = 3019] = "INVALID_COLUMN", r[r.INVALID_COLUMN_NAME = 3020] = "INVALID_COLUMN_NAME", r[r.UNKNOWN_COLUMN_SETTING = 3021] = "UNKNOWN_COLUMN_SETTING", r[r.INVALID_COLUMN_TYPE = 3022] = "INVALID_COLUMN_TYPE", r[r.DUPLICATE_COLUMN_NAME = 3023] = "DUPLICATE_COLUMN_NAME", r[r.DUPLICATE_COLUMN_SETTING = 3024] = "DUPLICATE_COLUMN_SETTING", r[r.INVALID_COLUMN_SETTING_VALUE = 3025] = "INVALID_COLUMN_SETTING_VALUE", r[r.INVALID_ENUM_CONTEXT = 3026] = "INVALID_ENUM_CONTEXT", r[r.INVALID_ENUM_ELEMENT_NAME = 3027] = "INVALID_ENUM_ELEMENT_NAME", r[r.INVALID_ENUM_ELEMENT = 3028] = "INVALID_ENUM_ELEMENT", r[r.DUPLICATE_ENUM_ELEMENT_NAME = 3029] = "DUPLICATE_ENUM_ELEMENT_NAME", r[r.UNKNOWN_ENUM_ELEMENT_SETTING = 3030] = "UNKNOWN_ENUM_ELEMENT_SETTING", r[r.DUPLICATE_ENUM_ELEMENT_SETTING = 3031] = "DUPLICATE_ENUM_ELEMENT_SETTING", r[r.INVALID_ENUM_ELEMENT_SETTING = 3032] = "INVALID_ENUM_ELEMENT_SETTING", r[r.EMPTY_ENUM = 3033] = "EMPTY_ENUM", r[r.INVALID_REF_CONTEXT = 3034] = "INVALID_REF_CONTEXT", r[r.UNKNOWN_REF_SETTING = 3035] = "UNKNOWN_REF_SETTING", r[r.DUPLICATE_REF_SETTING = 3036] = "DUPLICATE_REF_SETTING", r[r.INVALID_REF_SETTING_VALUE = 3037] = "INVALID_REF_SETTING_VALUE", r[r.INVALID_REF_RELATIONSHIP = 3038] = "INVALID_REF_RELATIONSHIP", r[r.INVALID_REF_FIELD = 3039] = "INVALID_REF_FIELD", r[r.EMPTY_REF = 3040] = "EMPTY_REF", r[r.REF_REDEFINED = 3041] = "REF_REDEFINED", r[r.INVALID_NOTE_CONTEXT = 3042] = "INVALID_NOTE_CONTEXT", r[r.INVALID_NOTE = 3043] = "INVALID_NOTE", r[r.NOTE_REDEFINED = 3044] = "NOTE_REDEFINED", r[r.NOTE_CONTENT_REDEFINED = 3045] = "NOTE_CONTENT_REDEFINED", r[r.EMPTY_NOTE = 3046] = "EMPTY_NOTE", r[r.INVALID_INDEXES_CONTEXT = 3047] = "INVALID_INDEXES_CONTEXT", r[r.INVALID_INDEXES_FIELD = 3048] = "INVALID_INDEXES_FIELD", r[r.INVALID_INDEX = 3049] = "INVALID_INDEX", r[r.UNKNOWN_INDEX_SETTING = 3050] = "UNKNOWN_INDEX_SETTING", r[r.DUPLICATE_INDEX_SETTING = 3051] = "DUPLICATE_INDEX_SETTING", r[r.UNEXPECTED_INDEX_SETTING_VALUE = 3052] = "UNEXPECTED_INDEX_SETTING_VALUE", r[r.INVALID_INDEX_SETTING_VALUE = 3053] = "INVALID_INDEX_SETTING_VALUE", r[r.INVALID_PROJECT_CONTEXT = 3054] = "INVALID_PROJECT_CONTEXT", r[r.PROJECT_REDEFINED = 3055] = "PROJECT_REDEFINED", r[r.INVALID_PROJECT_FIELD = 3056] = "INVALID_PROJECT_FIELD", r[r.INVALID_CUSTOM_CONTEXT = 3057] = "INVALID_CUSTOM_CONTEXT", r[r.INVALID_CUSTOM_ELEMENT_VALUE = 3058] = "INVALID_CUSTOM_ELEMENT_VALUE", r[r.INVALID_ELEMENT_IN_SIMPLE_BODY = 3059] = "INVALID_ELEMENT_IN_SIMPLE_BODY", r[r.INVALID_TABLE_PARTIAL_CONTEXT = 3060] = "INVALID_TABLE_PARTIAL_CONTEXT", r[r.INVALID_TABLE_PARTIAL_ELEMENT_NAME = 3061] = "INVALID_TABLE_PARTIAL_ELEMENT_NAME", r[r.INVALID_TABLE_PARTIAL_SETTING_VALUE = 3062] = "INVALID_TABLE_PARTIAL_SETTING_VALUE", r[r.DUPLICATE_TABLE_PARTIAL_ELEMENT_NAME = 3063] = "DUPLICATE_TABLE_PARTIAL_ELEMENT_NAME", r[r.DUPLICATE_TABLE_PARTIAL_SETTING = 3064] = "DUPLICATE_TABLE_PARTIAL_SETTING", r[r.INVALID_TABLE_PARTIAL_INJECTION = 3065] = "INVALID_TABLE_PARTIAL_INJECTION", r[r.INVALID_TABLE_PARTIAL_INJECTION_OP = 3066] = "INVALID_TABLE_PARTIAL_INJECTION_OP", r[r.INVALID_TABLE_PARTIAL_INJECTION_NAME = 3067] = "INVALID_TABLE_PARTIAL_INJECTION_NAME", r[r.DUPLICATE_TABLE_PARTIAL_INJECTION_NAME = 3068] = "DUPLICATE_TABLE_PARTIAL_INJECTION_NAME", r[r.UNKNOWN_TABLE_PARTIAL_SETTING = 3069] = "UNKNOWN_TABLE_PARTIAL_SETTING", r[r.INVALID_TABLE_SETTING_VALUE = 3070] = "INVALID_TABLE_SETTING_VALUE", r[r.INVALID_CHECKS_CONTEXT = 3071] = "INVALID_CHECKS_CONTEXT", r[r.INVALID_CHECKS_FIELD = 3072] = "INVALID_CHECKS_FIELD", r[r.INVALID_CHECK = 3073] = "INVALID_CHECK", r[r.UNKNOWN_CHECK_SETTING = 3074] = "UNKNOWN_CHECK_SETTING", r[r.DUPLICATE_CHECK_SETTING = 3075] = "DUPLICATE_CHECK_SETTING", r[r.INVALID_CHECK_SETTING_VALUE = 3076] = "INVALID_CHECK_SETTING_VALUE", r[r.INVALID_RECORDS_CONTEXT = 3077] = "INVALID_RECORDS_CONTEXT", r[r.INVALID_RECORDS_NAME = 3078] = "INVALID_RECORDS_NAME", r[r.INVALID_RECORDS_FIELD = 3079] = "INVALID_RECORDS_FIELD", r[r.DUPLICATE_COLUMN_REFERENCES_IN_RECORDS = 3080] = "DUPLICATE_COLUMN_REFERENCES_IN_RECORDS", r[r.DUPLICATE_RECORDS_FOR_TABLE = 3081] = "DUPLICATE_RECORDS_FOR_TABLE", r[r.INVALID_DIAGRAMVIEW_CONTEXT = 3082] = "INVALID_DIAGRAMVIEW_CONTEXT", r[r.DUPLICATE_DIAGRAMVIEW_NAME = 3083] = "DUPLICATE_DIAGRAMVIEW_NAME", r[r.INVALID_DIAGRAMVIEW_FIELD = 3084] = "INVALID_DIAGRAMVIEW_FIELD", r[r.DUPLICATE_DIAGRAMVIEW_FIELD = 3085] = "DUPLICATE_DIAGRAMVIEW_FIELD", r[r.BINDING_ERROR = 4e3] = "BINDING_ERROR", r[r.UNSUPPORTED = 5e3] = "UNSUPPORTED", r[r.CIRCULAR_REF = 5001] = "CIRCULAR_REF", r[r.SAME_ENDPOINT = 5002] = "SAME_ENDPOINT", r[r.UNEQUAL_FIELDS_BINARY_REF = 5003] = "UNEQUAL_FIELDS_BINARY_REF", r[r.CONFLICTING_SETTING = 5004] = "CONFLICTING_SETTING", r[r.TABLE_REAPPEAR_IN_TABLEGROUP = 5005] = "TABLE_REAPPEAR_IN_TABLEGROUP", r;
1253
1265
  }({});
1254
1266
  var CompileError = class r extends Error {
1255
1267
  constructor(j, M, N) {
@@ -1357,7 +1369,7 @@ const KEYWORDS_OF_DEFAULT_SETTING = [
1357
1369
  "false"
1358
1370
  ], NUMERIC_LITERAL_PREFIX = ["-", "+"], DEFAULT_SCHEMA_NAME = "public";
1359
1371
  let ElementKind = /* @__PURE__ */ function(r) {
1360
- return r.Table = "table", r.Enum = "enum", r.Ref = "ref", r.Note = "note", r.Project = "project", r.Indexes = "indexes", r.TableGroup = "tablegroup", r.TablePartial = "tablepartial", r.Check = "checks", r.Records = "records", r;
1372
+ return r.Table = "table", r.Enum = "enum", r.Ref = "ref", r.Note = "note", r.Project = "project", r.Indexes = "indexes", r.TableGroup = "tablegroup", r.TablePartial = "tablepartial", r.Check = "checks", r.Records = "records", r.DiagramView = "diagramview", r;
1361
1373
  }({}), SettingName = /* @__PURE__ */ function(r) {
1362
1374
  return r.Color = "color", r.HeaderColor = "headercolor", r.Note = "note", r.PK = "pk", r.PrimaryKey = "primary key", r.Unique = "unique", r.Ref = "ref", r.NotNull = "not null", r.Null = "null", r.Increment = "increment", r.Default = "default", r.Name = "name", r.Type = "type", r.Check = "check", r.Update = "update", r.Delete = "delete", r;
1363
1375
  }({});
@@ -1394,7 +1406,7 @@ var CustomValidator = class {
1394
1406
  }
1395
1407
  };
1396
1408
  let SymbolKind = /* @__PURE__ */ function(r) {
1397
- return r.Schema = "Schema", r.Table = "Table", r.Column = "Column", r.TableGroup = "TableGroup", r.TableGroupField = "TableGroup field", r.Enum = "Enum", r.EnumField = "Enum field", r.Note = "Note", r.TablePartial = "TablePartial", r.PartialInjection = "PartialInjection", r;
1409
+ return r.Schema = "Schema", r.Table = "Table", r.Column = "Column", r.TableGroup = "TableGroup", r.TableGroupField = "TableGroup field", r.Enum = "Enum", r.EnumField = "Enum field", r.Note = "Note", r.TablePartial = "TablePartial", r.PartialInjection = "PartialInjection", r.DiagramView = "DiagramView", r.DiagramViewField = "DiagramView field", r;
1398
1410
  }({});
1399
1411
  function createSchemaSymbolIndex(r) {
1400
1412
  return `${SymbolKind.Schema}:${r}`;
@@ -1426,6 +1438,12 @@ function createTablePartialSymbolIndex(r) {
1426
1438
  function createPartialInjectionSymbolIndex(r) {
1427
1439
  return `${SymbolKind.PartialInjection}:${r}`;
1428
1440
  }
1441
+ function createDiagramViewSymbolIndex(r) {
1442
+ return `${SymbolKind.DiagramView}:${r}`;
1443
+ }
1444
+ function createDiagramViewFieldSymbolIndex(r) {
1445
+ return `${SymbolKind.DiagramViewField}:${r}`;
1446
+ }
1429
1447
  function createNodeSymbolIndex(r, j) {
1430
1448
  switch (j) {
1431
1449
  case SymbolKind.Column: return createColumnSymbolIndex(r);
@@ -1435,8 +1453,11 @@ function createNodeSymbolIndex(r, j) {
1435
1453
  case SymbolKind.Table: return createTableSymbolIndex(r);
1436
1454
  case SymbolKind.TableGroup: return createTableGroupSymbolIndex(r);
1437
1455
  case SymbolKind.TableGroupField: return createTableGroupFieldSymbolIndex(r);
1456
+ case SymbolKind.Note: return createStickyNoteSymbolIndex(r);
1438
1457
  case SymbolKind.TablePartial: return createTablePartialSymbolIndex(r);
1439
1458
  case SymbolKind.PartialInjection: return createPartialInjectionSymbolIndex(r);
1459
+ case SymbolKind.DiagramView: return createDiagramViewSymbolIndex(r);
1460
+ case SymbolKind.DiagramViewField: return createDiagramViewFieldSymbolIndex(r);
1440
1461
  default: throw Error("Unreachable");
1441
1462
  }
1442
1463
  }
@@ -1651,7 +1672,7 @@ var SymbolTable = class {
1651
1672
  let j = destructureComplexVariable(r);
1652
1673
  if (!j.isOk()) return [new CompileError(CompileErrorCode.INVALID_NAME, "Invalid name for sticky note ", this.declarationNode)];
1653
1674
  let M = j.unwrap().join("."), N = createStickyNoteSymbolIndex(M);
1654
- return this.publicSymbolTable.has(N) ? [new CompileError(CompileErrorCode.DUPLICATE_NAME, `Sticky note "${M}" has already been defined`, r)] : (this.publicSymbolTable.set(N, this.declarationNode.symbol), []);
1675
+ return this.publicSymbolTable.has(N) ? [new CompileError(CompileErrorCode.DUPLICATE_NAME, `Sticky note "${M}" has already been defined`, r)] : (this.declarationNode.symbol = this.symbolFactory.create(StickyNoteSymbol, { declaration: this.declarationNode }), this.publicSymbolTable.set(N, this.declarationNode.symbol), []);
1655
1676
  }
1656
1677
  validateAlias(r) {
1657
1678
  return r ? [new CompileError(CompileErrorCode.UNEXPECTED_ALIAS, "A Ref shouldn't have an alias", r)] : [];
@@ -2351,6 +2372,108 @@ var TableGroupValidator = class {
2351
2372
  return r.flatMap((r) => (r.parent = this.declarationNode, r.type ? new (pickValidator(r))(r, this.publicSymbolTable, this.symbolFactory).validate() : []));
2352
2373
  }
2353
2374
  };
2375
+ function isWildcardExpression$2(r) {
2376
+ return r && r instanceof PrimaryExpressionNode && r.expression instanceof VariableNode ? r.expression.variable?.value === "*" : !1;
2377
+ }
2378
+ var DiagramViewValidator = class {
2379
+ constructor(r, j, M) {
2380
+ this.declarationNode = r, this.publicSymbolTable = j, this.symbolFactory = M;
2381
+ }
2382
+ validate() {
2383
+ return [
2384
+ ...this.validateContext(),
2385
+ ...this.validateName(this.declarationNode.name),
2386
+ ...this.validateAlias(this.declarationNode.alias),
2387
+ ...this.validateSettingList(this.declarationNode.attributeList),
2388
+ ...this.registerElement(),
2389
+ ...this.validateBody(this.declarationNode.body)
2390
+ ];
2391
+ }
2392
+ validateContext() {
2393
+ return this.declarationNode.parent instanceof ElementDeclarationNode ? [new CompileError(CompileErrorCode.INVALID_DIAGRAMVIEW_CONTEXT, "DiagramView must appear top-level", this.declarationNode)] : [];
2394
+ }
2395
+ validateName(r) {
2396
+ return r ? isSimpleName(r) ? [] : [new CompileError(CompileErrorCode.INVALID_NAME, "A DiagramView name must be a single identifier", r)] : [new CompileError(CompileErrorCode.NAME_NOT_FOUND, "A DiagramView must have a name", this.declarationNode)];
2397
+ }
2398
+ validateAlias(r) {
2399
+ return r ? [new CompileError(CompileErrorCode.UNEXPECTED_ALIAS, "A DiagramView shouldn't have an alias", r)] : [];
2400
+ }
2401
+ registerElement() {
2402
+ let { name: r } = this.declarationNode;
2403
+ this.declarationNode.symbol = this.symbolFactory.create(DiagramViewSymbol, {
2404
+ declaration: this.declarationNode,
2405
+ symbolTable: new SymbolTable()
2406
+ });
2407
+ let j = destructureComplexVariable(r);
2408
+ if (j.isOk()) {
2409
+ let M = j.unwrap(), N = M.pop(), P = registerSchemaStack(M, this.publicSymbolTable, this.symbolFactory), F = createDiagramViewSymbolIndex(N);
2410
+ if (P.has(F)) return [new CompileError(CompileErrorCode.DUPLICATE_DIAGRAMVIEW_NAME, `DiagramView name '${N}' already exists`, r)];
2411
+ P.set(F, this.declarationNode.symbol);
2412
+ }
2413
+ return [];
2414
+ }
2415
+ validateSettingList(r) {
2416
+ let j = aggregateSettingList(r), M = j.getErrors(), N = j.getValue();
2417
+ for (let r of Object.keys(N)) M.push(...N[r].map((j) => new CompileError(CompileErrorCode.UNEXPECTED_SETTINGS, `Unknown '${r}' setting for DiagramView`, j)));
2418
+ return M;
2419
+ }
2420
+ validateBody(r) {
2421
+ if (!r) return [];
2422
+ if (r instanceof FunctionApplicationNode) return [new CompileError(CompileErrorCode.UNEXPECTED_SIMPLE_BODY, "A DiagramView's body must be a block", r)];
2423
+ let [j, M] = partition_default(r.body, (r) => r instanceof FunctionApplicationNode);
2424
+ return [...this.validateFields(j), ...this.validateSubElements(M)];
2425
+ }
2426
+ validateFields(r) {
2427
+ return r.flatMap((r) => {
2428
+ if (isWildcardExpression$2(r.callee)) return [];
2429
+ let j = [];
2430
+ return j.push(new CompileError(CompileErrorCode.INVALID_DIAGRAMVIEW_FIELD, "Fields are not allowed at DiagramView level. Use Tables, Notes, TableGroups, or Schemas blocks instead.", r)), j;
2431
+ });
2432
+ }
2433
+ validateSubElements(r) {
2434
+ let j = [], M = [
2435
+ "tables",
2436
+ "notes",
2437
+ "tablegroups",
2438
+ "schemas"
2439
+ ];
2440
+ for (let N of r) {
2441
+ if (N.parent = this.declarationNode, !N.type) continue;
2442
+ let r = N.type.value.toLowerCase();
2443
+ if (!M.includes(r)) {
2444
+ j.push(new CompileError(CompileErrorCode.INVALID_DIAGRAMVIEW_FIELD, `Unknown block type "${N.type.value}" in DiagramView. Allowed: Tables, Notes, TableGroups, Schemas`, N));
2445
+ continue;
2446
+ }
2447
+ j.push(...this.validateSubBlock(N)), j.push(...this.registerSubBlockFields(N));
2448
+ }
2449
+ return j;
2450
+ }
2451
+ validateSubBlock(r) {
2452
+ let j = [];
2453
+ if (!r.body || !(r.body instanceof BlockExpressionNode)) return j;
2454
+ let M = r.body, N = M.body.some((r) => r instanceof FunctionApplicationNode && isWildcardExpression$2(r.callee)), P = M.body.some((r) => r instanceof FunctionApplicationNode && !isWildcardExpression$2(r.callee));
2455
+ return N && P && j.push(new CompileWarning(CompileErrorCode.INVALID_DIAGRAMVIEW_FIELD, `Wildcard (*) combined with specific items in ${r.type?.value} block. Specific items will be ignored.`, r)), j;
2456
+ }
2457
+ registerSubBlockFields(r) {
2458
+ let j = [];
2459
+ if (!r.body || !(r.body instanceof BlockExpressionNode)) return j;
2460
+ let M = r.body.body.filter((r) => r instanceof FunctionApplicationNode);
2461
+ for (let r of M) {
2462
+ if (r.callee && isExpressionAVariableNode(r.callee)) {
2463
+ if (isWildcardExpression$2(r.callee)) continue;
2464
+ let M = extractVarNameFromPrimaryVariable(r.callee).unwrap(), N = createDiagramViewFieldSymbolIndex(M), P = this.symbolFactory.create(DiagramViewFieldSymbol, { declaration: r });
2465
+ r.symbol = P;
2466
+ let F = this.declarationNode.symbol.symbolTable;
2467
+ if (F.has(N)) {
2468
+ let P = F.get(N);
2469
+ j.push(new CompileError(CompileErrorCode.DUPLICATE_DIAGRAMVIEW_FIELD, `${M} already exists in DiagramView`, r), new CompileError(CompileErrorCode.DUPLICATE_DIAGRAMVIEW_FIELD, `${M} already exists in DiagramView`, P.declaration));
2470
+ } else F.set(N, P);
2471
+ }
2472
+ r.args.length > 0 && j.push(...r.args.map((r) => new CompileError(CompileErrorCode.INVALID_DIAGRAMVIEW_FIELD, "DiagramView field should only have a single name", r)));
2473
+ }
2474
+ return j;
2475
+ }
2476
+ };
2354
2477
  function pickValidator(r) {
2355
2478
  switch (r.type.value.toLowerCase()) {
2356
2479
  case ElementKind.Enum: return EnumValidator;
@@ -2363,6 +2486,7 @@ function pickValidator(r) {
2363
2486
  case ElementKind.TablePartial: return TablePartialValidator;
2364
2487
  case ElementKind.Check: return ChecksValidator;
2365
2488
  case ElementKind.Records: return RecordsValidator;
2489
+ case ElementKind.DiagramView: return DiagramViewValidator;
2366
2490
  default: return CustomValidator;
2367
2491
  }
2368
2492
  }
@@ -2464,7 +2588,8 @@ function getElementKind(r) {
2464
2588
  case ElementKind.TableGroup:
2465
2589
  case ElementKind.TablePartial:
2466
2590
  case ElementKind.Check:
2467
- case ElementKind.Records: return new Some(j);
2591
+ case ElementKind.Records:
2592
+ case ElementKind.DiagramView: return new Some(j);
2468
2593
  default: return new None();
2469
2594
  }
2470
2595
  }
@@ -3406,7 +3531,8 @@ var ParsingContextStack = class {
3406
3531
  }
3407
3532
  leftExpression_bp() {
3408
3533
  let r;
3409
- if (isOpToken(this.peek())) {
3534
+ if (this.check(SyntaxTokenKind.OP) && this.peek().value === "*") this.advance(), r = this.nodeFactory.create(PrimaryExpressionNode, { expression: this.nodeFactory.create(VariableNode, { variable: this.previous() }) });
3535
+ else if (isOpToken(this.peek())) {
3410
3536
  let j = {};
3411
3537
  j.op = this.peek();
3412
3538
  let M = prefixBindingPower(j.op);
@@ -3624,6 +3750,95 @@ var Validator = class {
3624
3750
  bindSubElements(r) {
3625
3751
  return r.flatMap((r) => r.type ? new (pickBinder(r))(r, this.ast, this.symbolFactory).bind() : []);
3626
3752
  }
3753
+ };
3754
+ function isWildcardExpression$1(r) {
3755
+ return r && r instanceof PrimaryExpressionNode && r.expression instanceof VariableNode ? r.expression.variable?.value === "*" : !1;
3756
+ }
3757
+ var DiagramViewBinder = class {
3758
+ constructor(r, j, M) {
3759
+ this.declarationNode = r, this.ast = j, this.symbolFactory = M;
3760
+ }
3761
+ bind() {
3762
+ return this.declarationNode.body instanceof BlockExpressionNode ? this.bindBody(this.declarationNode.body) : [];
3763
+ }
3764
+ bindBody(r) {
3765
+ let [, j] = partition_default(r.body, (r) => r instanceof FunctionApplicationNode);
3766
+ return this.bindSubElements(j);
3767
+ }
3768
+ bindSubElements(r) {
3769
+ return r.flatMap((r) => {
3770
+ if (!r.type) return [];
3771
+ let j = r.type.value.toLowerCase();
3772
+ if (!(r.body instanceof BlockExpressionNode)) return [];
3773
+ let M = [];
3774
+ switch (j) {
3775
+ case "tables":
3776
+ M.push(...this.bindTableReferences(r.body));
3777
+ break;
3778
+ case "notes":
3779
+ M.push(...this.bindNoteReferences(r.body));
3780
+ break;
3781
+ case "tablegroups":
3782
+ M.push(...this.bindTableGroupReferences(r.body));
3783
+ break;
3784
+ case "schemas":
3785
+ M.push(...this.bindSchemaReferences(r.body));
3786
+ break;
3787
+ default: break;
3788
+ }
3789
+ return M;
3790
+ });
3791
+ }
3792
+ bindTableReferences(r) {
3793
+ let [j] = partition_default(r.body, (r) => r instanceof FunctionApplicationNode);
3794
+ return j.flatMap((r) => !r.callee || isWildcardExpression$1(r.callee) ? [] : [r.callee, ...r.args].flatMap(scanNonListNodeForBinding).flatMap((r) => {
3795
+ let j = r.variables.pop();
3796
+ if (!j) return [];
3797
+ let M = r.variables;
3798
+ return lookupAndBindInScope(this.ast, [...M.map((r) => ({
3799
+ node: r,
3800
+ kind: SymbolKind.Schema
3801
+ })), {
3802
+ node: j,
3803
+ kind: SymbolKind.Table
3804
+ }]);
3805
+ }));
3806
+ }
3807
+ bindNoteReferences(r) {
3808
+ let [j] = partition_default(r.body, (r) => r instanceof FunctionApplicationNode);
3809
+ return j.flatMap((r) => !r.callee || isWildcardExpression$1(r.callee) ? [] : scanNonListNodeForBinding(r.callee).flatMap((r) => {
3810
+ let j = r.variables.pop();
3811
+ return j ? lookupAndBindInScope(this.ast, [{
3812
+ node: j,
3813
+ kind: SymbolKind.Note
3814
+ }]) : [];
3815
+ }));
3816
+ }
3817
+ bindTableGroupReferences(r) {
3818
+ let [j] = partition_default(r.body, (r) => r instanceof FunctionApplicationNode);
3819
+ return j.flatMap((r) => !r.callee || isWildcardExpression$1(r.callee) ? [] : scanNonListNodeForBinding(r.callee).flatMap((r) => {
3820
+ let j = r.variables.pop();
3821
+ if (!j) return [];
3822
+ let M = r.variables;
3823
+ return lookupAndBindInScope(this.ast, [...M.map((r) => ({
3824
+ node: r,
3825
+ kind: SymbolKind.Schema
3826
+ })), {
3827
+ node: j,
3828
+ kind: SymbolKind.TableGroup
3829
+ }]);
3830
+ }));
3831
+ }
3832
+ bindSchemaReferences(r) {
3833
+ let [j] = partition_default(r.body, (r) => r instanceof FunctionApplicationNode);
3834
+ return j.flatMap((r) => !r.callee || isWildcardExpression$1(r.callee) ? [] : scanNonListNodeForBinding(r.callee).flatMap((r) => {
3835
+ let j = r.variables.pop();
3836
+ return j ? lookupAndBindInScope(this.ast, [{
3837
+ node: j,
3838
+ kind: SymbolKind.Schema
3839
+ }]) : [];
3840
+ }));
3841
+ }
3627
3842
  }, EnumBinder = class {
3628
3843
  constructor(r, j, M) {
3629
3844
  this.declarationNode = r, this.ast = j, this.symbolFactory = M;
@@ -3967,6 +4182,7 @@ function getSymbolKind(r) {
3967
4182
  if (r instanceof TablePartialSymbol) return SymbolKind.TablePartial;
3968
4183
  if (r instanceof TablePartialInjectedColumnSymbol) return SymbolKind.Column;
3969
4184
  if (r instanceof PartialInjectionSymbol) return SymbolKind.PartialInjection;
4185
+ if (r instanceof StickyNoteSymbol) return SymbolKind.Note;
3970
4186
  throw Error("No other possible symbol kind in getSymbolKind");
3971
4187
  }
3972
4188
  var RecordsBinder = class {
@@ -4070,6 +4286,7 @@ function pickBinder(r) {
4070
4286
  case ElementKind.TablePartial: return TablePartialBinder;
4071
4287
  case ElementKind.Check: return ChecksBinder;
4072
4288
  case ElementKind.Records: return RecordsBinder;
4289
+ case ElementKind.DiagramView: return DiagramViewBinder;
4073
4290
  default: return CustomBinder;
4074
4291
  }
4075
4292
  }
@@ -4910,6 +5127,117 @@ var TableInterpreter = class {
4910
5127
  }
4911
5128
  });
4912
5129
  }
5130
+ };
5131
+ function isWildcardExpression(r) {
5132
+ return r && r instanceof PrimaryExpressionNode && r.expression instanceof VariableNode ? r.expression.variable?.value === "*" : !1;
5133
+ }
5134
+ var DiagramViewInterpreter = class {
5135
+ constructor(r, j) {
5136
+ this.declarationNode = r, this.env = j, this.diagramView = {
5137
+ visibleEntities: {
5138
+ tables: null,
5139
+ stickyNotes: null,
5140
+ tableGroups: null,
5141
+ schemas: null
5142
+ },
5143
+ _explicitWildcards: /* @__PURE__ */ new Set(),
5144
+ _explicitlySet: /* @__PURE__ */ new Set()
5145
+ };
5146
+ }
5147
+ interpret() {
5148
+ let r = [];
5149
+ return this.diagramView.token = getTokenPosition(this.declarationNode), this.env.diagramViews || (this.env.diagramViews = /* @__PURE__ */ new Map()), this.env.diagramViews.set(this.declarationNode, this.diagramView), this.declarationNode.name && r.push(...this.interpretName(this.declarationNode.name)), this.declarationNode.body instanceof BlockExpressionNode && r.push(...this.interpretBody(this.declarationNode.body)), r;
5150
+ }
5151
+ interpretName(r) {
5152
+ let j = destructureComplexVariable(r).unwrap_or([]);
5153
+ return j.length > 0 && (this.diagramView.name = j[j.length - 1], j.length > 1 && (this.diagramView.schemaName = j.slice(0, -1).join("."))), [];
5154
+ }
5155
+ interpretBody(r) {
5156
+ if (r.body.length === 1) {
5157
+ let j = r.body[0];
5158
+ if (j instanceof FunctionApplicationNode && isWildcardExpression(j.callee)) return this.diagramView.visibleEntities = {
5159
+ tables: [],
5160
+ stickyNotes: [],
5161
+ tableGroups: [],
5162
+ schemas: []
5163
+ }, this.diagramView._explicitWildcards = new Set([
5164
+ "tables",
5165
+ "stickyNotes",
5166
+ "tableGroups",
5167
+ "schemas"
5168
+ ]), this.diagramView._explicitlySet = new Set([
5169
+ "tables",
5170
+ "stickyNotes",
5171
+ "tableGroups",
5172
+ "schemas"
5173
+ ]), [];
5174
+ }
5175
+ let [j] = partition_default(r.body, (r) => r instanceof ElementDeclarationNode), M = /* @__PURE__ */ new Set();
5176
+ for (let r of j) {
5177
+ let j = r.type?.value.toLowerCase();
5178
+ j && M.add(j), r.body instanceof BlockExpressionNode && this.interpretSubBlock(r.body, j);
5179
+ }
5180
+ let N = this.diagramView.visibleEntities;
5181
+ return (M.has("tables") && N.tables !== null || M.has("tablegroups") && N.tableGroups !== null || M.has("schemas") && N.schemas !== null) && (M.has("tables") || (N.tables = []), M.has("tablegroups") || (N.tableGroups = []), M.has("schemas") || (N.schemas = [])), M.has("tables") && this.diagramView._explicitlySet.add("tables"), M.has("tablegroups") && this.diagramView._explicitlySet.add("tableGroups"), M.has("schemas") && this.diagramView._explicitlySet.add("schemas"), M.has("notes") && this.diagramView._explicitlySet.add("stickyNotes"), [];
5182
+ }
5183
+ interpretSubBlock(r, j) {
5184
+ if (!j) return;
5185
+ if (r.body.some((r) => r instanceof FunctionApplicationNode && isWildcardExpression(r.callee))) {
5186
+ switch (j) {
5187
+ case "tables":
5188
+ this.diagramView.visibleEntities.tables = [], this.diagramView._explicitWildcards.add("tables");
5189
+ break;
5190
+ case "notes":
5191
+ this.diagramView.visibleEntities.stickyNotes = [], this.diagramView._explicitWildcards.add("stickyNotes");
5192
+ break;
5193
+ case "tablegroups":
5194
+ this.diagramView.visibleEntities.tableGroups = [], this.diagramView._explicitWildcards.add("tableGroups");
5195
+ break;
5196
+ case "schemas":
5197
+ this.diagramView.visibleEntities.schemas = [], this.diagramView._explicitWildcards.add("schemas");
5198
+ break;
5199
+ }
5200
+ return;
5201
+ }
5202
+ if (r.body.length === 0) return;
5203
+ let M = [];
5204
+ for (let j of r.body) {
5205
+ if (!(j instanceof FunctionApplicationNode)) continue;
5206
+ let r = extractReferee(j.callee);
5207
+ if (r?.declaration instanceof ElementDeclarationNode) {
5208
+ let j = destructureComplexVariable(r.declaration.name).unwrap_or([]);
5209
+ if (j.length > 0) {
5210
+ let r = j[j.length - 1], N = j.length > 1 ? j.slice(0, -1).join(".") : DEFAULT_SCHEMA_NAME;
5211
+ M.push({
5212
+ name: r,
5213
+ schemaName: N
5214
+ });
5215
+ continue;
5216
+ }
5217
+ }
5218
+ let N = destructureComplexVariable(j.callee).unwrap_or([]);
5219
+ if (N.length === 0) continue;
5220
+ let P = N[N.length - 1], F = N.length > 1 ? N[0] : DEFAULT_SCHEMA_NAME;
5221
+ M.push({
5222
+ name: P,
5223
+ schemaName: F
5224
+ });
5225
+ }
5226
+ switch (j) {
5227
+ case "tables":
5228
+ this.diagramView.visibleEntities.tables = M.length > 0 ? M : null;
5229
+ break;
5230
+ case "notes":
5231
+ this.diagramView.visibleEntities.stickyNotes = M.length > 0 ? M.map((r) => ({ name: r.name })) : null;
5232
+ break;
5233
+ case "tablegroups":
5234
+ this.diagramView.visibleEntities.tableGroups = M.length > 0 ? M.map((r) => ({ name: r.name })) : null;
5235
+ break;
5236
+ case "schemas":
5237
+ this.diagramView.visibleEntities.schemas = M.length > 0 ? M.map((r) => ({ name: r.name })) : null;
5238
+ break;
5239
+ }
5240
+ }
4913
5241
  }, DIALECT_INTEGER_TYPES = {
4914
5242
  mysql: new Set([
4915
5243
  "int",
@@ -9014,6 +9342,16 @@ function processColumnInDb(r) {
9014
9342
  }))
9015
9343
  };
9016
9344
  }
9345
+ var WILDCARD_EXPAND_ENTITIES = new Set(["tableGroups"]);
9346
+ function expandDiagramViewWildcards(r) {
9347
+ if (r.diagramViews) for (let j of r.diagramViews.values()) {
9348
+ let M = j.visibleEntities, N = j._explicitWildcards, P = j._explicitlySet;
9349
+ !N || !P || (WILDCARD_EXPAND_ENTITIES.has("tables") && N.has("tables") && M.tables && M.tables.length === 0 && (P.has("tableGroups") || P.has("schemas") || (M.tables = Array.from(r.tables.values()).map((r) => ({
9350
+ name: r.name,
9351
+ schemaName: r.schemaName || "public"
9352
+ })))), WILDCARD_EXPAND_ENTITIES.has("tableGroups") && N.has("tableGroups") && M.tableGroups && M.tableGroups.length === 0 && (P.has("tables") || P.has("schemas") || (M.tableGroups = Array.from(r.tableGroups.values()).map((r) => ({ name: r.name })))), WILDCARD_EXPAND_ENTITIES.has("stickyNotes") && N.has("stickyNotes") && M.stickyNotes && M.stickyNotes.length === 0 && (M.stickyNotes = Array.from(r.notes.values()).map((r) => ({ name: r.name }))), WILDCARD_EXPAND_ENTITIES.has("schemas") && N.has("schemas") && M.schemas && M.schemas.length === 0 && (P.has("tables") || P.has("tableGroups") || (M.schemas = [...new Set(Array.from(r.tables.values()).map((r) => r.schemaName || "public"))].map((r) => ({ name: r })))), delete j._explicitWildcards, delete j._explicitlySet);
9353
+ }
9354
+ }
9017
9355
  function convertEnvToDb(r) {
9018
9356
  let j = [];
9019
9357
  for (let [M, N] of r.records) {
@@ -9045,7 +9383,8 @@ function convertEnvToDb(r) {
9045
9383
  aliases: r.aliases,
9046
9384
  project: Array.from(r.project.values())[0] || {},
9047
9385
  tablePartials: Array.from(r.tablePartials.values()).map(processColumnInDb),
9048
- records: j
9386
+ records: j,
9387
+ diagramViews: r.diagramViews ? Array.from(r.diagramViews.values()) : []
9049
9388
  };
9050
9389
  }
9051
9390
  var Interpreter = class {
@@ -9065,7 +9404,8 @@ var Interpreter = class {
9065
9404
  records: /* @__PURE__ */ new Map(),
9066
9405
  recordsElements: [],
9067
9406
  cachedMergedTables: /* @__PURE__ */ new Map(),
9068
- source: r.source
9407
+ source: r.source,
9408
+ diagramViews: /* @__PURE__ */ new Map()
9069
9409
  };
9070
9410
  }
9071
9411
  interpret() {
@@ -9078,6 +9418,7 @@ var Interpreter = class {
9078
9418
  case ElementKind.TablePartial: return new TablePartialInterpreter(r, this.env).interpret();
9079
9419
  case ElementKind.Enum: return new EnumInterpreter(r, this.env).interpret();
9080
9420
  case ElementKind.Project: return new ProjectInterpreter(r, this.env).interpret();
9421
+ case ElementKind.DiagramView: return new DiagramViewInterpreter(r, this.env).interpret();
9081
9422
  case ElementKind.Records: return this.env.recordsElements.push(r), [];
9082
9423
  default: return [];
9083
9424
  }
@@ -9086,7 +9427,7 @@ var Interpreter = class {
9086
9427
  let M = new RecordsInterpreter(this.env).interpret(this.env.recordsElements);
9087
9428
  r.push(...M.getErrors()), j.push(...M.getWarnings());
9088
9429
  }
9089
- return new Report(convertEnvToDb(this.env), r, j);
9430
+ return expandDiagramViewWildcards(this.env), new Report(convertEnvToDb(this.env), r, j);
9090
9431
  }
9091
9432
  };
9092
9433
  let CompletionItemKind = /* @__PURE__ */ function(r) {
@@ -9606,6 +9947,11 @@ function suggestInSubField(r, j, M) {
9606
9947
  return r.container.token(j).token?.kind === SyntaxTokenKind.COLON && shouldPrependSpace(r.container.token(j).token, j) ? prependSpace(M) : M;
9607
9948
  }
9608
9949
  case ScopeKind.TABLEGROUP: return suggestInTableGroupField(r);
9950
+ case ScopeKind.DIAGRAMVIEW: return suggestInDiagramViewField();
9951
+ case ScopeKind.CUSTOM: {
9952
+ let M = r.container.element(j);
9953
+ return M instanceof ElementDeclarationNode && M.parent instanceof ElementDeclarationNode && M.parent.type?.value.toLowerCase() === "diagramview" ? suggestInDiagramViewSubBlock(r, j) : noSuggestions();
9954
+ }
9609
9955
  default: return noSuggestions();
9610
9956
  }
9611
9957
  }
@@ -9617,7 +9963,8 @@ function suggestTopLevelElementType() {
9617
9963
  "Project",
9618
9964
  "Ref",
9619
9965
  "TablePartial",
9620
- "Records"
9966
+ "Records",
9967
+ "DiagramView"
9621
9968
  ].map((r) => ({
9622
9969
  label: r,
9623
9970
  insertText: r,
@@ -9724,6 +10071,82 @@ function suggestInTableGroupField(r) {
9724
10071
  range: void 0
9725
10072
  }))] };
9726
10073
  }
10074
+ function suggestInDiagramViewField() {
10075
+ return { suggestions: [...[
10076
+ "Tables",
10077
+ "TableGroups",
10078
+ "Notes",
10079
+ "Schemas"
10080
+ ].map((r) => ({
10081
+ label: r,
10082
+ insertText: r,
10083
+ insertTextRules: CompletionItemInsertTextRule.KeepWhitespace,
10084
+ kind: CompletionItemKind.Keyword,
10085
+ range: void 0
10086
+ })), {
10087
+ label: "*",
10088
+ insertText: "*",
10089
+ insertTextRules: CompletionItemInsertTextRule.KeepWhitespace,
10090
+ kind: CompletionItemKind.Keyword,
10091
+ range: void 0
10092
+ }] };
10093
+ }
10094
+ function suggestInDiagramViewSubBlock(r, j) {
10095
+ let M = r.container.element(j);
10096
+ if (!(M instanceof ElementDeclarationNode)) return noSuggestions();
10097
+ let N = M.type?.value.toLowerCase(), P = {
10098
+ label: "*",
10099
+ insertText: "*",
10100
+ insertTextRules: CompletionItemInsertTextRule.KeepWhitespace,
10101
+ kind: CompletionItemKind.Keyword,
10102
+ range: void 0
10103
+ };
10104
+ switch (N) {
10105
+ case "tables": return { suggestions: [P, ...addQuoteToSuggestionIfNeeded({ suggestions: [...r.parse.publicSymbolTable().entries()].flatMap(([r]) => {
10106
+ let j = destructureIndex(r).unwrap_or(void 0);
10107
+ if (j === void 0) return [];
10108
+ let { kind: M, name: N } = j;
10109
+ return M !== SymbolKind.Table && M !== SymbolKind.Schema ? [] : {
10110
+ label: N,
10111
+ insertText: N,
10112
+ insertTextRules: CompletionItemInsertTextRule.KeepWhitespace,
10113
+ kind: pickCompletionItemKind(M),
10114
+ range: void 0
10115
+ };
10116
+ }) }).suggestions] };
10117
+ case "tablegroups": return { suggestions: [P, ...addQuoteToSuggestionIfNeeded({ suggestions: [...r.parse.publicSymbolTable().entries()].flatMap(([r]) => {
10118
+ let j = destructureIndex(r).unwrap_or(void 0);
10119
+ if (j === void 0) return [];
10120
+ let { kind: M, name: N } = j;
10121
+ return M === SymbolKind.TableGroup ? {
10122
+ label: N,
10123
+ insertText: N,
10124
+ insertTextRules: CompletionItemInsertTextRule.KeepWhitespace,
10125
+ kind: pickCompletionItemKind(M),
10126
+ range: void 0
10127
+ } : [];
10128
+ }) }).suggestions] };
10129
+ case "schemas": {
10130
+ let j = /* @__PURE__ */ new Set(), M = r.parse.ast();
10131
+ for (let r of M?.body || []) if (r instanceof ElementDeclarationNode && r.name instanceof InfixExpressionNode && r.name.op?.value === ".") {
10132
+ let M = destructureMemberAccessExpression(r.name).unwrap_or([]);
10133
+ if (M.length >= 2) {
10134
+ let r = extractVariableFromExpression(M[0]).unwrap_or("");
10135
+ r && j.add(r);
10136
+ }
10137
+ }
10138
+ return { suggestions: [P, ...[...j].map((r) => ({
10139
+ label: r,
10140
+ insertText: r,
10141
+ insertTextRules: CompletionItemInsertTextRule.KeepWhitespace,
10142
+ kind: CompletionItemKind.Module,
10143
+ range: void 0
10144
+ }))] };
10145
+ }
10146
+ case "notes": return { suggestions: [P] };
10147
+ default: return noSuggestions();
10148
+ }
10149
+ }
9727
10150
  function suggestInIndex(r, j) {
9728
10151
  return suggestColumnNameInIndexes(r, j);
9729
10152
  }
@@ -9854,6 +10277,200 @@ var DBMLDefinitionProvider = class {
9854
10277
  getSeverityValue(r) {
9855
10278
  return r === "error" ? MarkerSeverity.Error : MarkerSeverity.Warning;
9856
10279
  }
10280
+ }, dbmlMonarchTokensProvider = {
10281
+ tokenPostfix: ".dbml",
10282
+ brackets: [
10283
+ {
10284
+ open: "[",
10285
+ close: "]",
10286
+ token: "delimiter.square"
10287
+ },
10288
+ {
10289
+ open: "(",
10290
+ close: ")",
10291
+ token: "delimiter.parenthesis"
10292
+ },
10293
+ {
10294
+ open: "{",
10295
+ close: "}",
10296
+ token: "delimiter.curly"
10297
+ }
10298
+ ],
10299
+ decls: [
10300
+ "project",
10301
+ "tablegroup",
10302
+ "table",
10303
+ "enum",
10304
+ "ref",
10305
+ "note",
10306
+ "tablepartial",
10307
+ "records",
10308
+ "checks",
10309
+ "diagramview"
10310
+ ],
10311
+ dataTypes: /* @__PURE__ */ "TINYINT.SMALLINT.MEDIUMINT.INT.INTEGER.BIGINT.FLOAT.DOUBLE.DECIMAL.DEC.BIT.BOOL.REAL.MONEY.BINARY_FLOAT.BINARY_DOUBLE.smallmoney.ENUM.CHAR.BINARY.VARCHAR.VARBINARY.TINYBLOB.TINYTEXT.BLOB.TEXT.MEDIUMBLOB.MEDIUMTEXT.LONGBLOB.LONGTEXT.SET.INET6.UUID.NVARCHAR.NCHAR.NTEXT.IMAGE.VARCHAR2.NVARCHAR2.DATE.TIME.DATETIME.DATETIME2.TIMESTAMP.YEAR.smalldatetime.datetimeoffset.XML.sql_variant.uniqueidentifier.CURSOR.BFILE.CLOB.NCLOB.RAW".split("."),
10312
+ settings: [
10313
+ "indexes",
10314
+ "ref",
10315
+ "note",
10316
+ "headercolor",
10317
+ "pk",
10318
+ "null",
10319
+ "increment",
10320
+ "unique",
10321
+ "default",
10322
+ "note",
10323
+ "primary",
10324
+ "key",
10325
+ "name",
10326
+ "as",
10327
+ "color",
10328
+ "check",
10329
+ "tables",
10330
+ "tablegroups",
10331
+ "notes",
10332
+ "schemas"
10333
+ ],
10334
+ symbols: /[=><!~?:&|+\-\/\^%]+/,
10335
+ escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
10336
+ newline: /[\r\n]/,
10337
+ digits: /\d+(_+\d+)*/,
10338
+ idtf: /[\p{L}0-9_]+/u,
10339
+ ignoreCase: !0,
10340
+ unicode: !0,
10341
+ tokenizer: {
10342
+ root: [
10343
+ [/[{}\[\]\(\)]/, "@bracket"],
10344
+ [/[,.:]/, "delimiter"],
10345
+ { include: "@numbers" },
10346
+ { include: "common" }
10347
+ ],
10348
+ common: [
10349
+ { include: "@whitespace" },
10350
+ [/[<>-]/, "operators"],
10351
+ [/\*/, "keyword.wildcard"],
10352
+ [/("[^"\\]*(?:\\.[^"\\]*)*")(\s+)(@idtf(?:\.@idtf*)*)/, [
10353
+ "string",
10354
+ "",
10355
+ "keyword"
10356
+ ]],
10357
+ [/"([^"\\]|\\.)*$/, ""],
10358
+ [/'([^'\\]|\\.)*$/, ""],
10359
+ [
10360
+ /"/,
10361
+ "string",
10362
+ "@string_double"
10363
+ ],
10364
+ [
10365
+ /'/,
10366
+ "string",
10367
+ "@string_single"
10368
+ ],
10369
+ [
10370
+ /`/,
10371
+ "string",
10372
+ "@string_backtick"
10373
+ ],
10374
+ [/(@idtf)(\s+)(@idtf(?:\.@idtf)*)/, { cases: {
10375
+ "$1@decls": [
10376
+ "keyword",
10377
+ "",
10378
+ "identifier"
10379
+ ],
10380
+ "$1==not": { cases: {
10381
+ "$3==null": [
10382
+ "keyword",
10383
+ "",
10384
+ "keyword"
10385
+ ],
10386
+ "@default": [
10387
+ "identifier",
10388
+ "",
10389
+ "identifier"
10390
+ ]
10391
+ } },
10392
+ "@default": [
10393
+ "identifier",
10394
+ "",
10395
+ "keyword"
10396
+ ]
10397
+ } }],
10398
+ [/@idtf/, { cases: {
10399
+ "@dataTypes": "keyword",
10400
+ "@decls": "keyword",
10401
+ "@settings": "keyword",
10402
+ "@default": "identifier"
10403
+ } }]
10404
+ ],
10405
+ numbers: [
10406
+ [/0[xX][0-9a-fA-F]*/, "number"],
10407
+ [/[$][+-]*\d*(\.\d*)?/, "number"],
10408
+ [/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/, "number"],
10409
+ [/#([0-9A-F]{3}){1,2}/, "number.hex"]
10410
+ ],
10411
+ string_double: [
10412
+ [/[^\\"]+/, "string"],
10413
+ [/@escapes/, "string.escape"],
10414
+ [/\\./, "string.escape.invalid"],
10415
+ [
10416
+ /"/,
10417
+ "string",
10418
+ "@pop"
10419
+ ]
10420
+ ],
10421
+ string_single: [
10422
+ [/[^\\']+/, "string"],
10423
+ [/@escapes/, "string.escape"],
10424
+ [/\\./, "string.escape.invalid"],
10425
+ [
10426
+ /'/,
10427
+ "string",
10428
+ "@pop"
10429
+ ]
10430
+ ],
10431
+ string_backtick: [
10432
+ [/[^\\`$]+/, "string"],
10433
+ [/@escapes/, "string.escape"],
10434
+ [
10435
+ /`/,
10436
+ "string",
10437
+ "@pop"
10438
+ ]
10439
+ ],
10440
+ endTripleQuotesString: [
10441
+ [/\\'/, "string"],
10442
+ [
10443
+ /(.*[^\\])?(\\\\)*'''/,
10444
+ "string",
10445
+ "@popall"
10446
+ ],
10447
+ [/.*$/, "string"]
10448
+ ],
10449
+ whitespace: [
10450
+ [/[ \t\r\n]+/, ""],
10451
+ [
10452
+ /\/\*/,
10453
+ "comment",
10454
+ "@comment"
10455
+ ],
10456
+ [/\/\/.*$/, "comment"],
10457
+ [/'''(.*[^\\])?(\\\\)*'''/, "string"],
10458
+ [
10459
+ /'''.*$/,
10460
+ "string",
10461
+ "@endTripleQuotesString"
10462
+ ]
10463
+ ],
10464
+ comment: [
10465
+ [/[^\/*]+/, "comment"],
10466
+ [
10467
+ /\*\//,
10468
+ "comment",
10469
+ "@pop"
10470
+ ],
10471
+ [/[\/*]/, "comment"]
10472
+ ]
10473
+ }
9857
10474
  }, services_exports = /* @__PURE__ */ __export({
9858
10475
  CompletionItemInsertTextRule: () => CompletionItemInsertTextRule,
9859
10476
  CompletionItemKind: () => CompletionItemKind,
@@ -9861,7 +10478,8 @@ var DBMLDefinitionProvider = class {
9861
10478
  DBMLDefinitionProvider: () => DBMLDefinitionProvider,
9862
10479
  DBMLDiagnosticsProvider: () => DBMLDiagnosticsProvider,
9863
10480
  DBMLReferencesProvider: () => DBMLReferencesProvider,
9864
- MarkerSeverity: () => MarkerSeverity
10481
+ MarkerSeverity: () => MarkerSeverity,
10482
+ dbmlMonarchTokensProvider: () => dbmlMonarchTokensProvider
9865
10483
  }, 1);
9866
10484
  function ast() {
9867
10485
  return this.parse._().getValue().ast;
@@ -9960,7 +10578,7 @@ function containerScope(r) {
9960
10578
  return this.container.element(r)?.symbol?.symbolTable;
9961
10579
  }
9962
10580
  let ScopeKind = /* @__PURE__ */ function(r) {
9963
- return r[r.TABLE = 0] = "TABLE", r[r.ENUM = 1] = "ENUM", r[r.TABLEGROUP = 2] = "TABLEGROUP", r[r.INDEXES = 3] = "INDEXES", r[r.NOTE = 4] = "NOTE", r[r.REF = 5] = "REF", r[r.PROJECT = 6] = "PROJECT", r[r.CUSTOM = 7] = "CUSTOM", r[r.TOPLEVEL = 8] = "TOPLEVEL", r[r.TABLEPARTIAL = 9] = "TABLEPARTIAL", r[r.CHECKS = 10] = "CHECKS", r[r.RECORDS = 11] = "RECORDS", r;
10581
+ return r[r.TABLE = 0] = "TABLE", r[r.ENUM = 1] = "ENUM", r[r.TABLEGROUP = 2] = "TABLEGROUP", r[r.INDEXES = 3] = "INDEXES", r[r.NOTE = 4] = "NOTE", r[r.REF = 5] = "REF", r[r.PROJECT = 6] = "PROJECT", r[r.CUSTOM = 7] = "CUSTOM", r[r.TOPLEVEL = 8] = "TOPLEVEL", r[r.TABLEPARTIAL = 9] = "TABLEPARTIAL", r[r.CHECKS = 10] = "CHECKS", r[r.RECORDS = 11] = "RECORDS", r[r.DIAGRAMVIEW = 12] = "DIAGRAMVIEW", r;
9964
10582
  }({});
9965
10583
  function containerScopeKind(r) {
9966
10584
  let j = this.container.element(r);
@@ -9976,6 +10594,7 @@ function containerScopeKind(r) {
9976
10594
  case "tablepartial": return ScopeKind.TABLEPARTIAL;
9977
10595
  case "checks": return ScopeKind.CHECKS;
9978
10596
  case "records": return ScopeKind.RECORDS;
10597
+ case "diagramview": return ScopeKind.DIAGRAMVIEW;
9979
10598
  default: return ScopeKind.CUSTOM;
9980
10599
  }
9981
10600
  }
@@ -10170,4 +10789,78 @@ var Compiler = class {
10170
10789
  };
10171
10790
  }
10172
10791
  };
10173
- export { CompileError, CompileErrorCode, Compiler, ElementDeclarationNode, ElementKind, FALSY_VALUES, ProgramNode, ScopeKind, SyntaxNode, SyntaxNodeKind, SyntaxToken, SyntaxTokenKind, TRUTHY_VALUES, addDoubleQuoteIfNeeded, escapeString, extractNumericLiteral, extractSignedNumber, formatRecordValue, getLengthTypeParam, getNumericTypeParams, getRecordValueType, isBinaryType, isBooleanType, isDateTimeType, isEmptyStringLiteral, isFloatType, isFunctionExpression, isIntegerType, isNullish, isNumericType, isSerialType, isStringType, isValidIdentifier, normalizeTypeName, services_exports as services, splitQualifiedIdentifier, tryExtractBoolean, tryExtractDateTime, tryExtractEnum, tryExtractInteger, tryExtractNumeric, tryExtractString, unescapeString, validateForeignKeys, validatePrimaryKey, validateUnique };
10792
+ function findDiagramViewBlocks(r) {
10793
+ let j = [], M = new Lexer(r).lex();
10794
+ if (M.getErrors().length > 0) return j;
10795
+ let N = new Parser(r, M.getValue(), new SyntaxNodeIdGenerator()).parse();
10796
+ if (N.getErrors().length > 0) return j;
10797
+ let P = N.getValue().ast;
10798
+ for (let r of P.body) if (r.type?.value === "DiagramView") {
10799
+ let M = r.name ? destructureComplexVariable(r.name).unwrap_or([]) : [], N = M.length > 0 ? M[M.length - 1] : "";
10800
+ j.push({
10801
+ name: N,
10802
+ startIndex: r.start,
10803
+ endIndex: r.end
10804
+ });
10805
+ }
10806
+ return j;
10807
+ }
10808
+ function needsQuoting(r) {
10809
+ return !/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r);
10810
+ }
10811
+ function quoteName(r) {
10812
+ return needsQuoting(r) ? `"${r.replace(/\\/g, "\\\\").replace(/"/g, "\\\"")}"` : r;
10813
+ }
10814
+ function generateDiagramViewBlock(r, j) {
10815
+ let M = [`DiagramView ${quoteName(r)} {`];
10816
+ if (j?.tables !== void 0 && j.tables !== null) if (j.tables.length === 0) M.push(" Tables { * }");
10817
+ else {
10818
+ let r = j.tables.map((r) => r.schemaName === "public" ? r.name : `${r.schemaName}.${r.name}`);
10819
+ M.push(" Tables {"), r.forEach((r) => M.push(` ${r}`)), M.push(" }");
10820
+ }
10821
+ return j?.stickyNotes !== void 0 && (j.stickyNotes === null || (j.stickyNotes.length === 0 ? M.push(" Notes { * }") : (M.push(" Notes {"), j.stickyNotes.forEach((r) => M.push(` ${r.name}`)), M.push(" }")))), j?.tableGroups !== void 0 && (j.tableGroups === null || (j.tableGroups.length === 0 ? M.push(" TableGroups { * }") : (M.push(" TableGroups {"), j.tableGroups.forEach((r) => M.push(` ${r.name}`)), M.push(" }")))), j?.schemas !== void 0 && (j.schemas === null || (j.schemas.length === 0 ? M.push(" Schemas { * }") : (M.push(" Schemas {"), j.schemas.forEach((r) => M.push(` ${r.name}`)), M.push(" }")))), M.push("}"), M.join("\n");
10822
+ }
10823
+ function syncDiagramView(r, j) {
10824
+ let M = r;
10825
+ for (let r of j) M = applyOperation(M, r);
10826
+ return { newDbml: M };
10827
+ }
10828
+ function applyOperation(r, j) {
10829
+ switch (j.operation) {
10830
+ case "create": return applyCreate(r, j);
10831
+ case "update": return applyUpdate(r, j, findDiagramViewBlocks(r));
10832
+ case "delete": return applyDelete(r, j, findDiagramViewBlocks(r));
10833
+ default: return r;
10834
+ }
10835
+ }
10836
+ function applyCreate(r, j) {
10837
+ let M = findDiagramViewBlocks(r);
10838
+ if (M.find((r) => r.name === j.name)) return applyUpdate(r, j, M);
10839
+ let N = generateDiagramViewBlock(j.name, j.visibleEntities);
10840
+ return r.trimEnd() + "\n\n" + N + "\n";
10841
+ }
10842
+ function applyUpdate(r, j, M) {
10843
+ let N = M.find((r) => r.name === j.name);
10844
+ if (!N) return r;
10845
+ let P = [];
10846
+ if (j.newName || j.visibleEntities) {
10847
+ let r = generateDiagramViewBlock(j.newName || j.name, j.visibleEntities);
10848
+ P.push({
10849
+ start: N.startIndex,
10850
+ end: N.endIndex,
10851
+ newText: r
10852
+ });
10853
+ }
10854
+ return applyTextEdits(r, P);
10855
+ }
10856
+ function applyDelete(r, j, M) {
10857
+ let N = M.find((r) => r.name === j.name);
10858
+ if (!N) return r;
10859
+ let P = r.split("\n"), F = 0, I = P.length - 1, L = 0;
10860
+ for (let r = 0; r < P.length; r++) {
10861
+ let j = L, M = L + P[r].length;
10862
+ j <= N.startIndex && N.startIndex <= M && (F = r), j <= N.endIndex && N.endIndex <= M && (I = r), L = M + 1;
10863
+ }
10864
+ return [...P.slice(0, F), ...P.slice(I + 1)].join("\n");
10865
+ }
10866
+ export { CompileError, CompileErrorCode, Compiler, ElementDeclarationNode, ElementKind, FALSY_VALUES, ProgramNode, ScopeKind, SyntaxNode, SyntaxNodeKind, SyntaxToken, SyntaxTokenKind, TRUTHY_VALUES, addDoubleQuoteIfNeeded, dbmlMonarchTokensProvider, escapeString, extractNumericLiteral, extractSignedNumber, formatRecordValue, getLengthTypeParam, getNumericTypeParams, getRecordValueType, isBinaryType, isBooleanType, isDateTimeType, isEmptyStringLiteral, isFloatType, isFunctionExpression, isIntegerType, isNullish, isNumericType, isSerialType, isStringType, isValidIdentifier, normalizeTypeName, services_exports as services, splitQualifiedIdentifier, syncDiagramView, tryExtractBoolean, tryExtractDateTime, tryExtractEnum, tryExtractInteger, tryExtractNumeric, tryExtractString, unescapeString, validateForeignKeys, validatePrimaryKey, validateUnique };