@dbml/core 2.2.0 → 2.4.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 (93) hide show
  1. package/lib/export/DbmlExporter.js +15 -4
  2. package/lib/export/JsonExporter.js +1 -3
  3. package/lib/export/ModelExporter.js +1 -3
  4. package/lib/export/MysqlExporter.js +50 -42
  5. package/lib/export/PostgresExporter.js +64 -49
  6. package/lib/export/SqlServerExporter.js +52 -46
  7. package/lib/model_structure/database.js +73 -28
  8. package/lib/model_structure/dbState.js +1 -3
  9. package/lib/model_structure/element.js +13 -13
  10. package/lib/model_structure/endpoint.js +18 -14
  11. package/lib/model_structure/enum.js +18 -14
  12. package/lib/model_structure/enumValue.js +16 -12
  13. package/lib/model_structure/field.js +47 -13
  14. package/lib/model_structure/indexColumn.js +16 -12
  15. package/lib/model_structure/indexes.js +18 -14
  16. package/lib/model_structure/ref.js +19 -16
  17. package/lib/model_structure/schema.js +24 -36
  18. package/lib/model_structure/table.js +19 -15
  19. package/lib/model_structure/tableGroup.js +18 -14
  20. package/lib/model_structure/utils.js +5 -0
  21. package/lib/parse/Parser.js +2 -4
  22. package/lib/parse/buildParser.js +1 -3
  23. package/lib/parse/dbml/parser.pegjs +64 -20
  24. package/lib/parse/dbmlParser.js +1401 -899
  25. package/lib/parse/mssql/constraint_definition/actions.js +2 -2
  26. package/lib/parse/mssql/fk_definition/actions.js +10 -3
  27. package/lib/parse/mssql/keyword_parsers.js +0 -1
  28. package/lib/parse/mssql/statements/actions.js +9 -6
  29. package/lib/parse/mssql/statements/statement_types/alter_table/actions.js +11 -5
  30. package/lib/parse/mssql/statements/statement_types/create_index/actions.js +6 -1
  31. package/lib/parse/mssql/statements/statement_types/create_table/actions.js +12 -10
  32. package/lib/parse/mssql/utils.js +16 -1
  33. package/lib/parse/mysql/parser.pegjs +57 -34
  34. package/lib/parse/mysqlParser.js +270 -218
  35. package/lib/parse/postgresParser.js +12 -10
  36. package/lib/parse/postgresql/Base_rules.pegjs +45 -10
  37. package/lib/parse/postgresql/Commands/Alter_table/Alter_table.pegjs +2 -1
  38. package/lib/parse/postgresql/Commands/Create_table/Create_table_normal.pegjs +5 -3
  39. package/lib/parse/postgresql/Commands/Create_table/Create_table_of.pegjs +1 -1
  40. package/lib/parse/postgresql/Commands/Create_table/Create_table_partition_of.pegjs +1 -1
  41. package/lib/parse/postgresql/Commands/Create_type/Create_type_enum.pegjs +2 -2
  42. package/lib/parse/postgresql/InitializerUtils.pegjs +10 -0
  43. package/lib/parse/postgresql/parser.pegjs +2 -1
  44. package/lib/parse/schemarbParser.js +3 -3
  45. package/package.json +5 -3
  46. package/types/export/ModelExporter.d.ts +5 -0
  47. package/types/export/index.d.ts +5 -0
  48. package/types/import/index.d.ts +5 -0
  49. package/types/index.d.ts +5 -0
  50. package/types/model_structure/database.d.ts +195 -0
  51. package/types/model_structure/dbState.d.ts +14 -0
  52. package/types/model_structure/element.d.ts +21 -0
  53. package/types/model_structure/endpoint.d.ts +55 -0
  54. package/types/model_structure/enum.d.ts +67 -0
  55. package/types/model_structure/enumValue.d.ts +39 -0
  56. package/types/model_structure/field.d.ts +77 -0
  57. package/types/model_structure/indexColumn.d.ts +37 -0
  58. package/types/model_structure/indexes.d.ts +74 -0
  59. package/types/model_structure/ref.d.ts +66 -0
  60. package/types/model_structure/schema.d.ts +188 -0
  61. package/types/model_structure/table.d.ts +118 -0
  62. package/types/model_structure/tableGroup.d.ts +54 -0
  63. package/types/parse/Parser.d.ts +11 -0
  64. package/lib/export/Exporter.js +0 -80
  65. package/lib/export/SchemaExporter.js +0 -99
  66. package/lib/parse/dbml/multiline_content.txt +0 -7
  67. package/lib/parse/dbml/multiline_string.pegjs +0 -17
  68. package/lib/parse/dbml/parser1.json +0 -219
  69. package/lib/parse/dbml/parser1.pegjs +0 -702
  70. package/lib/parse/dbml/parser1_content.txt +0 -29
  71. package/lib/parse/dbml/test_multiline.js +0 -53
  72. package/lib/parse/dbml/test_parser1.js +0 -16
  73. package/lib/parse/mssql/base_utils.js +0 -28
  74. package/lib/parse/mssql/composite_parsers.js +0 -109
  75. package/lib/parse/mssql/statement_types/alter_table/actions.js +0 -29
  76. package/lib/parse/mssql/statement_types/alter_table/add/actions.js +0 -8
  77. package/lib/parse/mssql/statement_types/alter_table/add/index.js +0 -58
  78. package/lib/parse/mssql/statement_types/alter_table/index.js +0 -32
  79. package/lib/parse/mssql/statement_types/create_index/actions.js +0 -25
  80. package/lib/parse/mssql/statement_types/create_index/index.js +0 -50
  81. package/lib/parse/mssql/statement_types/create_table/actions.js +0 -95
  82. package/lib/parse/mssql/statement_types/create_table/index.js +0 -50
  83. package/lib/parse/mssql/statement_types/index.js +0 -13
  84. package/lib/schema/element.js +0 -84
  85. package/lib/schema/endpoint.js +0 -102
  86. package/lib/schema/enum.js +0 -102
  87. package/lib/schema/enumValue.js +0 -70
  88. package/lib/schema/field.js +0 -104
  89. package/lib/schema/indexes.js +0 -74
  90. package/lib/schema/ref.js +0 -93
  91. package/lib/schema/schema.js +0 -245
  92. package/lib/schema/table.js +0 -163
  93. package/lib/schema/tableGroup.js +0 -93
@@ -1,80 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports["default"] = void 0;
7
-
8
- var _lodash = _interopRequireDefault(require("lodash"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
-
12
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
13
-
14
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
15
-
16
- function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
17
-
18
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
19
-
20
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
21
-
22
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
23
-
24
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
25
-
26
- var Exporter =
27
- /*#__PURE__*/
28
- function () {
29
- function Exporter() {
30
- var schema = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
31
-
32
- _classCallCheck(this, Exporter);
33
-
34
- this.schema = schema;
35
- }
36
-
37
- _createClass(Exporter, null, [{
38
- key: "getIndexesFromSchema",
39
- value: function getIndexesFromSchema(schema) {
40
- var indexes = [];
41
- schema.tables.forEach(function (table) {
42
- if (!_lodash["default"].isEmpty(table.indexes)) {
43
- // primary composite key is not included here
44
- var tableIndexes = table.indexes.filter(function (index) {
45
- return !index.pk;
46
- });
47
- indexes.push.apply(indexes, _toConsumableArray(tableIndexes));
48
- }
49
- });
50
- return indexes;
51
- }
52
- }, {
53
- key: "getCommentsFromSchema",
54
- value: function getCommentsFromSchema(schema) {
55
- var comments = [];
56
- schema.tables.forEach(function (table) {
57
- table.fields.forEach(function (field) {
58
- if (field.note) {
59
- comments.push({
60
- type: 'column',
61
- table: table,
62
- field: field
63
- });
64
- }
65
- });
66
- });
67
- return comments;
68
- }
69
- }, {
70
- key: "hasWhiteSpace",
71
- value: function hasWhiteSpace(s) {
72
- return /\s/g.test(s);
73
- }
74
- }]);
75
-
76
- return Exporter;
77
- }();
78
-
79
- var _default = Exporter;
80
- exports["default"] = _default;
@@ -1,99 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports["default"] = void 0;
7
-
8
- var _DbmlExporter = _interopRequireDefault(require("./DbmlExporter"));
9
-
10
- var _MysqlExporter = _interopRequireDefault(require("./MysqlExporter"));
11
-
12
- var _PostgresExporter = _interopRequireDefault(require("./PostgresExporter"));
13
-
14
- var _JsonExporter = _interopRequireDefault(require("./JsonExporter"));
15
-
16
- var _SqlServerExporter = _interopRequireDefault(require("./SqlServerExporter"));
17
-
18
- var _Exporter2 = _interopRequireDefault(require("./Exporter"));
19
-
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
21
-
22
- function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
23
-
24
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
25
-
26
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
27
-
28
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
29
-
30
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
31
-
32
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
33
-
34
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
35
-
36
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
37
-
38
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
39
-
40
- var SchemaExporter =
41
- /*#__PURE__*/
42
- function (_Exporter) {
43
- _inherits(SchemaExporter, _Exporter);
44
-
45
- function SchemaExporter() {
46
- var _this;
47
-
48
- var schema = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
49
-
50
- _classCallCheck(this, SchemaExporter);
51
-
52
- _this = _possibleConstructorReturn(this, _getPrototypeOf(SchemaExporter).call(this, schema));
53
- _this.dbmlExporter = new _DbmlExporter["default"](schema);
54
- _this.mysqlExporter = new _MysqlExporter["default"](schema);
55
- _this.postgresExporter = new _PostgresExporter["default"](schema);
56
- _this.jsonExporter = new _JsonExporter["default"](schema);
57
- _this.sqlServerExporter = new _SqlServerExporter["default"](schema);
58
- return _this;
59
- }
60
-
61
- _createClass(SchemaExporter, [{
62
- key: "export",
63
- value: function _export(format) {
64
- var res = '';
65
-
66
- switch (format) {
67
- case 'dbml':
68
- res = this.dbmlExporter["export"]();
69
- break;
70
-
71
- case 'mysql':
72
- res = this.mysqlExporter["export"]();
73
- break;
74
-
75
- case 'postgres':
76
- res = this.postgresExporter["export"]();
77
- break;
78
-
79
- case 'json':
80
- res = this.jsonExporter["export"]();
81
- break;
82
-
83
- case 'mssql':
84
- res = this.sqlServerExporter["export"]();
85
- break;
86
-
87
- default:
88
- break;
89
- }
90
-
91
- return res;
92
- }
93
- }]);
94
-
95
- return SchemaExporter;
96
- }(_Exporter2["default"]);
97
-
98
- var _default = SchemaExporter;
99
- exports["default"] = _default;
@@ -1,7 +0,0 @@
1
- '
2
- # Objective
3
- * Support writing long string that can ''span'' over multiple lines
4
- * Support writing markdown for DBML Note
5
-
6
- # Syntax
7
- '
@@ -1,17 +0,0 @@
1
- StringLiteral "string"
2
- = '"' chars:DoubleStringCharacter* '"' {
3
- return chars.join('');
4
- }
5
- / "'" chars:SingleStringCharacter* "'" {
6
- return chars.join('');
7
- }
8
- DoubleStringCharacter
9
- = '\\' '"' { return '"'; }
10
- / !'"' SourceCharacter { return text(); }
11
-
12
- SingleStringCharacter
13
- = "''" { return "'"; }
14
- / !"'" SourceCharacter { return text(); }
15
-
16
- SourceCharacter
17
- = .
@@ -1,219 +0,0 @@
1
- {
2
- "schemas": [],
3
- "tables": [
4
- {
5
- "name": "users",
6
- "alias": null,
7
- "fields": [
8
- {
9
- "name": "id",
10
- "type": {
11
- "type_name": "int",
12
- "args": null
13
- },
14
- "token": {
15
- "start": {
16
- "offset": 49,
17
- "line": 2,
18
- "column": 3
19
- },
20
- "end": {
21
- "offset": 61,
22
- "line": 3,
23
- "column": 1
24
- }
25
- },
26
- "inline_refs": []
27
- },
28
- {
29
- "name": "name",
30
- "type": {
31
- "type_name": "varchar",
32
- "args": null
33
- },
34
- "token": {
35
- "start": {
36
- "offset": 61,
37
- "line": 3,
38
- "column": 1
39
- },
40
- "end": {
41
- "offset": 81,
42
- "line": 4,
43
- "column": 1
44
- }
45
- },
46
- "inline_refs": []
47
- },
48
- {
49
- "name": "gender",
50
- "type": {
51
- "type_name": "varchar",
52
- "args": null
53
- },
54
- "token": {
55
- "start": {
56
- "offset": 81,
57
- "line": 4,
58
- "column": 1
59
- },
60
- "end": {
61
- "offset": 98,
62
- "line": 5,
63
- "column": 1
64
- }
65
- },
66
- "inline_refs": []
67
- },
68
- {
69
- "name": "created_at",
70
- "type": {
71
- "type_name": "datetime",
72
- "args": null
73
- },
74
- "token": {
75
- "start": {
76
- "offset": 98,
77
- "line": 5,
78
- "column": 1
79
- },
80
- "end": {
81
- "offset": 120,
82
- "line": 6,
83
- "column": 1
84
- }
85
- },
86
- "inline_refs": []
87
- }
88
- ],
89
- "token": {
90
- "start": {
91
- "offset": 0,
92
- "line": 1,
93
- "column": 1
94
- },
95
- "end": {
96
- "offset": 410,
97
- "line": 29,
98
- "column": 2
99
- }
100
- },
101
- "indexes": [
102
- {
103
- "columns": [
104
- {
105
- "value": "id",
106
- "type": "column"
107
- }
108
- ],
109
- "token": {
110
- "start": {
111
- "offset": 159,
112
- "line": 10,
113
- "column": 5
114
- },
115
- "end": {
116
- "offset": 161,
117
- "line": 10,
118
- "column": 7
119
- }
120
- }
121
- },
122
- {
123
- "columns": [
124
- {
125
- "value": "id",
126
- "type": "column"
127
- },
128
- {
129
- "value": "name",
130
- "type": "column"
131
- }
132
- ],
133
- "token": {
134
- "start": {
135
- "offset": 166,
136
- "line": 11,
137
- "column": 5
138
- },
139
- "end": {
140
- "offset": 176,
141
- "line": 11,
142
- "column": 15
143
- }
144
- }
145
- },
146
- {
147
- "columns": [
148
- {
149
- "value": "gender",
150
- "type": "column"
151
- }
152
- ],
153
- "token": {
154
- "start": {
155
- "offset": 198,
156
- "line": 15,
157
- "column": 5
158
- },
159
- "end": {
160
- "offset": 204,
161
- "line": 15,
162
- "column": 11
163
- }
164
- }
165
- },
166
- {
167
- "columns": [
168
- {
169
- "value": "created_at",
170
- "type": "column"
171
- }
172
- ],
173
- "token": {
174
- "start": {
175
- "offset": 209,
176
- "line": 16,
177
- "column": 5
178
- },
179
- "end": {
180
- "offset": 219,
181
- "line": 16,
182
- "column": 15
183
- }
184
- }
185
- },
186
- {
187
- "columns": [
188
- {
189
- "value": "id",
190
- "type": "column"
191
- },
192
- {
193
- "value": "name",
194
- "type": "column"
195
- }
196
- ],
197
- "token": {
198
- "start": {
199
- "offset": 49,
200
- "line": 2,
201
- "column": 3
202
- },
203
- "end": {
204
- "offset": 61,
205
- "line": 3,
206
- "column": 1
207
- }
208
- },
209
- "pk": true
210
- }
211
- ],
212
- "note": "# Note\n\n## Objective\n * Support define element's note inside element body\n * Make writing long note easier with the new syntax /"
213
- }
214
- ],
215
- "refs": [],
216
- "enums": [],
217
- "tableGroups": [],
218
- "project": {}
219
- }