@dbml/parse 7.0.0-alpha.1 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) 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 +0 -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 +0 -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__/examples/wildcard/wildcard.test.d.ts +0 -0
  33. package/dist/__tests__/fuzz/interpreter.test.d.ts +0 -0
  34. package/dist/__tests__/fuzz/parser.test.d.ts +0 -0
  35. package/dist/__tests__/fuzz/services.test.d.ts +0 -0
  36. package/dist/__tests__/properties/lexer.test.d.ts +0 -0
  37. package/dist/__tests__/properties/parser.test.d.ts +0 -0
  38. package/dist/__tests__/snapshots/binder/binder.test.d.ts +0 -0
  39. package/dist/__tests__/snapshots/interpreter/interpreter.test.d.ts +0 -0
  40. package/dist/__tests__/snapshots/lexer/lexer.test.d.ts +0 -0
  41. package/dist/__tests__/snapshots/nan/nan.test.d.ts +0 -0
  42. package/dist/__tests__/snapshots/parser/parser.test.d.ts +0 -0
  43. package/dist/__tests__/snapshots/validator/validator.test.d.ts +0 -0
  44. package/dist/__tests__/utils/arbitraries/grammars.d.ts +0 -0
  45. package/dist/__tests__/utils/arbitraries/index.d.ts +0 -0
  46. package/dist/__tests__/utils/arbitraries/tokens.d.ts +0 -0
  47. package/dist/__tests__/utils/arbitraries/utils.d.ts +0 -0
  48. package/dist/__tests__/utils/compiler.d.ts +0 -0
  49. package/dist/__tests__/utils/index.d.ts +0 -0
  50. package/dist/__tests__/utils/mocks.d.ts +0 -0
  51. package/dist/__tests__/utils/testHelpers.d.ts +0 -0
  52. package/dist/dbml-parse.js +7 -7
  53. package/dist/dbml-parse.mjs +26 -27
  54. package/dist/index.d.ts +0 -0
  55. package/dist/src/compiler/index.d.ts +0 -0
  56. package/dist/src/compiler/queries/container/element.d.ts +0 -0
  57. package/dist/src/compiler/queries/container/index.d.ts +0 -0
  58. package/dist/src/compiler/queries/container/scope.d.ts +0 -0
  59. package/dist/src/compiler/queries/container/scopeKind.d.ts +0 -0
  60. package/dist/src/compiler/queries/container/stack.d.ts +0 -0
  61. package/dist/src/compiler/queries/container/token.d.ts +0 -0
  62. package/dist/src/compiler/queries/parse.d.ts +0 -0
  63. package/dist/src/compiler/queries/symbol.d.ts +0 -0
  64. package/dist/src/compiler/queries/token.d.ts +0 -0
  65. package/dist/src/compiler/queries/transform/applyTextEdits.d.ts +0 -0
  66. package/dist/src/compiler/queries/transform/index.d.ts +0 -0
  67. package/dist/src/compiler/queries/transform/renameTable.d.ts +0 -0
  68. package/dist/src/compiler/queries/transform/syncDiagramView.d.ts +0 -0
  69. package/dist/src/compiler/queries/transform/utils.d.ts +0 -0
  70. package/dist/src/compiler/queries/utils.d.ts +0 -0
  71. package/dist/src/compiler/types.d.ts +0 -0
  72. package/dist/src/constants.d.ts +0 -0
  73. package/dist/src/core/analyzer/analyzer.d.ts +0 -0
  74. package/dist/src/core/analyzer/binder/binder.d.ts +0 -0
  75. package/dist/src/core/analyzer/binder/elementBinder/checks.d.ts +0 -0
  76. package/dist/src/core/analyzer/binder/elementBinder/custom.d.ts +0 -0
  77. package/dist/src/core/analyzer/binder/elementBinder/diagramView.d.ts +0 -0
  78. package/dist/src/core/analyzer/binder/elementBinder/enum.d.ts +0 -0
  79. package/dist/src/core/analyzer/binder/elementBinder/indexes.d.ts +0 -0
  80. package/dist/src/core/analyzer/binder/elementBinder/note.d.ts +0 -0
  81. package/dist/src/core/analyzer/binder/elementBinder/project.d.ts +0 -0
  82. package/dist/src/core/analyzer/binder/elementBinder/records.d.ts +0 -0
  83. package/dist/src/core/analyzer/binder/elementBinder/ref.d.ts +0 -0
  84. package/dist/src/core/analyzer/binder/elementBinder/table.d.ts +0 -0
  85. package/dist/src/core/analyzer/binder/elementBinder/tableGroup.d.ts +0 -0
  86. package/dist/src/core/analyzer/binder/elementBinder/tablePartial.d.ts +0 -0
  87. package/dist/src/core/analyzer/binder/types.d.ts +0 -0
  88. package/dist/src/core/analyzer/binder/utils.d.ts +0 -0
  89. package/dist/src/core/analyzer/symbol/factory.d.ts +0 -0
  90. package/dist/src/core/analyzer/symbol/symbolIndex.d.ts +0 -0
  91. package/dist/src/core/analyzer/symbol/symbolTable.d.ts +0 -0
  92. package/dist/src/core/analyzer/symbol/symbols.d.ts +0 -0
  93. package/dist/src/core/analyzer/symbol/utils.d.ts +0 -0
  94. package/dist/src/core/analyzer/types.d.ts +0 -0
  95. package/dist/src/core/analyzer/utils.d.ts +0 -0
  96. package/dist/src/core/analyzer/validator/elementValidators/checks.d.ts +0 -0
  97. package/dist/src/core/analyzer/validator/elementValidators/custom.d.ts +0 -0
  98. package/dist/src/core/analyzer/validator/elementValidators/diagramView.d.ts +0 -0
  99. package/dist/src/core/analyzer/validator/elementValidators/enum.d.ts +0 -0
  100. package/dist/src/core/analyzer/validator/elementValidators/indexes.d.ts +0 -0
  101. package/dist/src/core/analyzer/validator/elementValidators/note.d.ts +0 -0
  102. package/dist/src/core/analyzer/validator/elementValidators/project.d.ts +0 -0
  103. package/dist/src/core/analyzer/validator/elementValidators/records.d.ts +0 -0
  104. package/dist/src/core/analyzer/validator/elementValidators/ref.d.ts +0 -0
  105. package/dist/src/core/analyzer/validator/elementValidators/table.d.ts +0 -0
  106. package/dist/src/core/analyzer/validator/elementValidators/tableGroup.d.ts +0 -0
  107. package/dist/src/core/analyzer/validator/elementValidators/tablePartial.d.ts +0 -0
  108. package/dist/src/core/analyzer/validator/types.d.ts +0 -0
  109. package/dist/src/core/analyzer/validator/utils.d.ts +0 -0
  110. package/dist/src/core/analyzer/validator/validator.d.ts +0 -0
  111. package/dist/src/core/errors.d.ts +0 -0
  112. package/dist/src/core/interpreter/elementInterpreter/diagramView.d.ts +0 -0
  113. package/dist/src/core/interpreter/elementInterpreter/enum.d.ts +0 -0
  114. package/dist/src/core/interpreter/elementInterpreter/project.d.ts +0 -0
  115. package/dist/src/core/interpreter/elementInterpreter/ref.d.ts +0 -0
  116. package/dist/src/core/interpreter/elementInterpreter/sticky_note.d.ts +0 -0
  117. package/dist/src/core/interpreter/elementInterpreter/table.d.ts +0 -0
  118. package/dist/src/core/interpreter/elementInterpreter/tableGroup.d.ts +0 -0
  119. package/dist/src/core/interpreter/elementInterpreter/tablePartial.d.ts +0 -0
  120. package/dist/src/core/interpreter/interpreter.d.ts +0 -0
  121. package/dist/src/core/interpreter/records/index.d.ts +0 -0
  122. package/dist/src/core/interpreter/records/utils/constraints/fk.d.ts +0 -0
  123. package/dist/src/core/interpreter/records/utils/constraints/helper.d.ts +0 -0
  124. package/dist/src/core/interpreter/records/utils/constraints/index.d.ts +0 -0
  125. package/dist/src/core/interpreter/records/utils/constraints/pk.d.ts +0 -0
  126. package/dist/src/core/interpreter/records/utils/constraints/unique.d.ts +0 -0
  127. package/dist/src/core/interpreter/records/utils/data/index.d.ts +0 -0
  128. package/dist/src/core/interpreter/records/utils/data/sqlTypes.d.ts +0 -0
  129. package/dist/src/core/interpreter/records/utils/data/values.d.ts +0 -0
  130. package/dist/src/core/interpreter/records/utils/index.d.ts +0 -0
  131. package/dist/src/core/interpreter/types.d.ts +5 -1
  132. package/dist/src/core/interpreter/utils.d.ts +0 -0
  133. package/dist/src/core/lexer/lexer.d.ts +0 -0
  134. package/dist/src/core/lexer/tokens.d.ts +0 -0
  135. package/dist/src/core/lexer/utils.d.ts +0 -0
  136. package/dist/src/core/option.d.ts +0 -0
  137. package/dist/src/core/parser/contextStack.d.ts +0 -0
  138. package/dist/src/core/parser/factory.d.ts +0 -0
  139. package/dist/src/core/parser/nodes.d.ts +0 -0
  140. package/dist/src/core/parser/parser.d.ts +0 -0
  141. package/dist/src/core/parser/utils.d.ts +0 -0
  142. package/dist/src/core/report.d.ts +0 -0
  143. package/dist/src/core/types.d.ts +0 -0
  144. package/dist/src/core/utils.d.ts +0 -0
  145. package/dist/src/index.d.ts +0 -0
  146. package/dist/src/services/definition/provider.d.ts +0 -0
  147. package/dist/src/services/diagnostics/provider.d.ts +0 -0
  148. package/dist/src/services/index.d.ts +0 -0
  149. package/dist/src/services/monarch.d.ts +0 -0
  150. package/dist/src/services/references/provider.d.ts +0 -0
  151. package/dist/src/services/suggestions/provider.d.ts +0 -0
  152. package/dist/src/services/suggestions/recordRowSnippet.d.ts +0 -0
  153. package/dist/src/services/suggestions/utils.d.ts +0 -0
  154. package/dist/src/services/types.d.ts +0 -0
  155. package/dist/src/services/utils.d.ts +0 -0
  156. package/package.json +2 -2
@@ -9107,7 +9107,7 @@ function createConstraintErrors(r, j, M) {
9107
9107
  }
9108
9108
  var getConstraintType$1 = (r) => r > 1 ? "Composite PK" : "PK";
9109
9109
  function validatePrimaryKey(r) {
9110
- return flatMap_default(Array.from(r.records), ([j, M]) => {
9110
+ return flatMap_default(Array.from(r.records), ([j, { rows: M }]) => {
9111
9111
  if (isEmpty_default(M)) return [];
9112
9112
  r.cachedMergedTables.has(j) || r.cachedMergedTables.set(j, mergeTableAndPartials(j, r));
9113
9113
  let N = r.cachedMergedTables.get(j), P = collectPkConstraints(N), F = collectAvailableColumns(M), I = keyBy_default(N.fields, "name");
@@ -9150,7 +9150,7 @@ function checkMissingPkColumns(r, j, M, N, P) {
9150
9150
  }
9151
9151
  var getConstraintType = (r) => r > 1 ? "Composite UNIQUE" : "UNIQUE";
9152
9152
  function validateUnique(r) {
9153
- return flatMap_default(Array.from(r.records), ([j, M]) => {
9153
+ return flatMap_default(Array.from(r.records), ([j, { rows: M }]) => {
9154
9154
  r.cachedMergedTables.has(j) || r.cachedMergedTables.set(j, mergeTableAndPartials(j, r));
9155
9155
  let N = r.cachedMergedTables.get(j);
9156
9156
  if (isEmpty_default(M)) return [];
@@ -9174,7 +9174,7 @@ function validateForeignKeys(r) {
9174
9174
  function buildTableInfoMap(r) {
9175
9175
  let j = /* @__PURE__ */ new Map();
9176
9176
  for (let M of r.tables.values()) {
9177
- let N = makeTableKey(M.schemaName, M.name), P = r.records.get(M) || [];
9177
+ let N = makeTableKey(M.schemaName, M.name), P = r.records.get(M)?.rows || [];
9178
9178
  r.cachedMergedTables.has(M) || r.cachedMergedTables.set(M, mergeTableAndPartials(M, r));
9179
9179
  let F = r.cachedMergedTables.get(M);
9180
9180
  j.set(N, {
@@ -9219,16 +9219,20 @@ var RecordsInterpreter = class {
9219
9219
  j.push(new CompileError(CompileErrorCode.DUPLICATE_RECORDS_FOR_TABLE, `Duplicate Records blocks for the same Table '${r.name}' - A Table can only have one Records block`, F)), j.push(new CompileError(CompileErrorCode.DUPLICATE_RECORDS_FOR_TABLE, `Duplicate Records blocks for the same Table '${r.name}' - A Table can only have one Records block`, N));
9220
9220
  continue;
9221
9221
  }
9222
- this.tableToRecordMap.set(r, N);
9223
- for (let F of N.body.body) {
9224
- let N = F, I = extractDataFromRow(N, P, this.env);
9225
- j.push(...I.getErrors()), M.push(...I.getWarnings());
9226
- let L = I.getValue();
9227
- L.row && (this.env.records.has(r) || this.env.records.set(r, []), this.env.records.get(r).push({
9222
+ this.tableToRecordMap.set(r, N), this.env.records.has(r) || this.env.records.set(r, {
9223
+ element: N,
9224
+ rows: []
9225
+ });
9226
+ let I = this.env.records.get(r);
9227
+ for (let r of N.body.body) {
9228
+ let N = r, F = extractDataFromRow(N, P, this.env);
9229
+ j.push(...F.getErrors()), M.push(...F.getWarnings());
9230
+ let L = F.getValue();
9231
+ L.row && I.rows.push({
9228
9232
  values: L.row,
9229
9233
  node: N,
9230
9234
  columnNodes: L.columnNodes
9231
- }));
9235
+ });
9232
9236
  }
9233
9237
  }
9234
9238
  let N = this.validateConstraints();
@@ -9399,14 +9403,15 @@ function expandDiagramViewWildcards(r) {
9399
9403
  }
9400
9404
  function convertEnvToDb(r) {
9401
9405
  let j = [];
9402
- for (let [M, N] of r.records) {
9403
- if (!N.length) continue;
9404
- let r = Object.keys(N[0].columnNodes);
9406
+ for (let [M, { element: N, rows: P }] of r.records) {
9407
+ if (!P.length) continue;
9408
+ let r = Object.keys(P[0].columnNodes);
9405
9409
  j.push({
9406
9410
  schemaName: M.schemaName || void 0,
9407
9411
  tableName: M.name,
9408
9412
  columns: r,
9409
- values: N.map((j) => r.map((r) => {
9413
+ token: getTokenPosition(N),
9414
+ values: P.map((j) => r.map((r) => {
9410
9415
  let M = j.values[r];
9411
9416
  return M ? {
9412
9417
  value: M.value,
@@ -10350,7 +10355,7 @@ var DBMLDefinitionProvider = class {
10350
10355
  "notes",
10351
10356
  "schemas"
10352
10357
  ],
10353
- symbols: /[=><!~?:&|+\-\/\^%]+/,
10358
+ symbols: /[=><!~?:&|+\-/^%]+/,
10354
10359
  escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
10355
10360
  newline: /[\r\n]/,
10356
10361
  digits: /\d+(_+\d+)*/,
@@ -10359,7 +10364,7 @@ var DBMLDefinitionProvider = class {
10359
10364
  unicode: !0,
10360
10365
  tokenizer: {
10361
10366
  root: [
10362
- [/[{}\[\]\(\)]/, "@bracket"],
10367
+ [/[{}[\]()]/, "@bracket"],
10363
10368
  [/[,.:]/, "delimiter"],
10364
10369
  { include: "@numbers" },
10365
10370
  { include: "common" }
@@ -10424,7 +10429,7 @@ var DBMLDefinitionProvider = class {
10424
10429
  numbers: [
10425
10430
  [/0[xX][0-9a-fA-F]*/, "number"],
10426
10431
  [/[$][+-]*\d*(\.\d*)?/, "number"],
10427
- [/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/, "number"],
10432
+ [/((\d+(\.\d*)?)|(\.\d+))([eE][-+]?\d+)?/, "number"],
10428
10433
  [/#([0-9A-F]{3}){1,2}/, "number.hex"]
10429
10434
  ],
10430
10435
  string_double: [
@@ -10481,13 +10486,13 @@ var DBMLDefinitionProvider = class {
10481
10486
  ]
10482
10487
  ],
10483
10488
  comment: [
10484
- [/[^\/*]+/, "comment"],
10489
+ [/[^/*]+/, "comment"],
10485
10490
  [
10486
10491
  /\*\//,
10487
10492
  "comment",
10488
10493
  "@pop"
10489
10494
  ],
10490
- [/[\/*]/, "comment"]
10495
+ [/[/*]/, "comment"]
10491
10496
  ]
10492
10497
  }
10493
10498
  }, services_exports = /* @__PURE__ */ __export({
@@ -10746,7 +10751,7 @@ function findDiagramViewBlocks(r) {
10746
10751
  let N = new Parser(r, M.getValue(), new SyntaxNodeIdGenerator()).parse();
10747
10752
  if (N.getErrors().length > 0) return j;
10748
10753
  let P = N.getValue().ast;
10749
- for (let r of P.body) if (r.type?.value === "DiagramView") {
10754
+ for (let r of P.body) if (r.type?.value.toLowerCase() === ElementKind.DiagramView) {
10750
10755
  let M = r.name ? destructureComplexVariable(r.name).unwrap_or([]) : [], N = M.length > 0 ? M[M.length - 1] : "";
10751
10756
  j.push({
10752
10757
  name: N,
@@ -10756,14 +10761,8 @@ function findDiagramViewBlocks(r) {
10756
10761
  }
10757
10762
  return j;
10758
10763
  }
10759
- function needsQuoting(r) {
10760
- return !/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r);
10761
- }
10762
- function quoteName(r) {
10763
- return needsQuoting(r) ? `"${r.replace(/\\/g, "\\\\").replace(/"/g, "\\\"")}"` : r;
10764
- }
10765
10764
  function generateDiagramViewBlock(r, j) {
10766
- let M = [`DiagramView ${quoteName(r)} {`];
10765
+ let M = [`DiagramView ${addDoubleQuoteIfNeeded(r)} {`];
10767
10766
  if (j?.tables !== void 0 && j.tables !== null) if (j.tables.length === 0) M.push(" Tables { * }");
10768
10767
  else {
10769
10768
  let r = j.tables.map((r) => r.schemaName === "public" ? r.name : `${r.schemaName}.${r.name}`);
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
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -51,7 +51,10 @@ export interface InterpreterDatabase {
51
51
  tablePartials: Map<ElementDeclarationNode, TablePartial>;
52
52
  aliases: Alias[];
53
53
  project: Map<ElementDeclarationNode, Project>;
54
- records: Map<Table, TableRecordRow[]>;
54
+ records: Map<Table, {
55
+ element: ElementDeclarationNode;
56
+ rows: TableRecordRow[];
57
+ }>;
55
58
  recordsElements: ElementDeclarationNode[];
56
59
  cachedMergedTables: Map<Table, Table>;
57
60
  source: string;
@@ -82,6 +85,7 @@ export interface TableRecord {
82
85
  tableName: string;
83
86
  columns: string[];
84
87
  values: RecordValue[][];
88
+ token: TokenPosition;
85
89
  }
86
90
  export interface Database {
87
91
  schemas: [];
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package",
3
3
  "name": "@dbml/parse",
4
- "version": "7.0.0-alpha.1",
4
+ "version": "7.0.0",
5
5
  "description": "DBML parser v2",
6
6
  "author": "Holistics <dev@holistics.io>",
7
7
  "license": "Apache-2.0",
@@ -45,5 +45,5 @@
45
45
  "engines": {
46
46
  "node": ">=18"
47
47
  },
48
- "gitHead": "283f3bcf7373ecab1e808e8a8035ce906ee6a52e"
48
+ "gitHead": "d9579d7cf95b7cafa9f083529393f0206c0acc98"
49
49
  }