@dbml/core 3.13.0-alpha.3 → 3.13.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.
- package/lib/model_structure/database.js +3 -0
- package/lib/model_structure/endpoint.js +1 -3
- package/lib/model_structure/indexes.js +3 -1
- package/lib/model_structure/table.js +1 -0
- package/lib/parse/ANTLR/ASTGeneration/postgres/PostgreSQLLexerBase.js +3 -1
- package/lib/parse/ANTLR/ASTGeneration/postgres/PostgresASTGen.js +40 -31
- package/lib/parse/ANTLR/parsers/postgresql/PostgreSQLLexer.js +1 -1
- package/package.json +3 -3
- package/types/model_structure/indexes.d.ts +4 -0
- package/types/tablePartial.d.ts +0 -38
|
@@ -74,6 +74,9 @@ var Database = /*#__PURE__*/function (_Element) {
|
|
|
74
74
|
_this.aliases = aliases;
|
|
75
75
|
_this.records = [];
|
|
76
76
|
_this.tablePartials = [];
|
|
77
|
+
|
|
78
|
+
// The global array containing references with 1 endpoint being a field injected from a partial to a table
|
|
79
|
+
// These refs are add to this array when resolving partials in tables (`Table.processPartials()`)
|
|
77
80
|
_this.injectedRawRefs = [];
|
|
78
81
|
|
|
79
82
|
// The process order is important. Do not change !
|
|
@@ -104,13 +104,11 @@ var Endpoint = /*#__PURE__*/function (_Element) {
|
|
|
104
104
|
}, {
|
|
105
105
|
key: "shallowExport",
|
|
106
106
|
value: function shallowExport() {
|
|
107
|
-
var _this$injectedPartial;
|
|
108
107
|
return {
|
|
109
108
|
schemaName: this.schemaName,
|
|
110
109
|
tableName: this.tableName,
|
|
111
110
|
fieldNames: this.fieldNames,
|
|
112
|
-
relation: this.relation
|
|
113
|
-
injectedPartialId: (_this$injectedPartial = this.injectedPartial) === null || _this$injectedPartial === void 0 ? void 0 : _this$injectedPartial.id
|
|
111
|
+
relation: this.relation
|
|
114
112
|
};
|
|
115
113
|
}
|
|
116
114
|
}, {
|
|
@@ -119,12 +119,14 @@ var Index = /*#__PURE__*/function (_Element) {
|
|
|
119
119
|
}, {
|
|
120
120
|
key: "shallowExport",
|
|
121
121
|
value: function shallowExport() {
|
|
122
|
+
var _this$injectedPartial;
|
|
122
123
|
return {
|
|
123
124
|
name: this.name,
|
|
124
125
|
type: this.type,
|
|
125
126
|
unique: this.unique,
|
|
126
127
|
pk: this.pk,
|
|
127
|
-
note: this.note
|
|
128
|
+
note: this.note,
|
|
129
|
+
injectedPartialId: (_this$injectedPartial = this.injectedPartial) === null || _this$injectedPartial === void 0 ? void 0 : _this$injectedPartial.id
|
|
128
130
|
};
|
|
129
131
|
}
|
|
130
132
|
}, {
|
|
@@ -214,6 +214,7 @@ var Table = /*#__PURE__*/function (_Element) {
|
|
|
214
214
|
}],
|
|
215
215
|
injectedPartial: tablePartial
|
|
216
216
|
};
|
|
217
|
+
// The global array containing references with 1 endpoint being a field injected from a partial to a table
|
|
217
218
|
_this5.schema.database.injectedRawRefs.push(ref);
|
|
218
219
|
});
|
|
219
220
|
}
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.HandleLessLessGreaterGreater = HandleLessLessGreaterGreater;
|
|
8
|
+
exports.charIsLetter = charIsLetter;
|
|
8
9
|
exports.checkLA = checkLA;
|
|
9
10
|
exports["default"] = void 0;
|
|
10
11
|
exports.isTag = isTag;
|
|
@@ -40,4 +41,5 @@ exports["default"] = PostgreSQLLexerBase;
|
|
|
40
41
|
function checkLA() {}
|
|
41
42
|
function HandleLessLessGreaterGreater() {}
|
|
42
43
|
function pushTag() {}
|
|
43
|
-
function isTag() {}
|
|
44
|
+
function isTag() {}
|
|
45
|
+
function charIsLetter() {}
|
|
@@ -34,7 +34,7 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
|
|
|
34
34
|
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
|
|
35
35
|
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
36
36
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
37
|
-
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } /* eslint-disable class-methods-use-this */
|
|
37
|
+
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } /* eslint-disable no-param-reassign */ /* eslint-disable consistent-return */ /* eslint-disable class-methods-use-this */
|
|
38
38
|
var COMMAND_KIND = {
|
|
39
39
|
REF: 'ref'
|
|
40
40
|
};
|
|
@@ -106,7 +106,10 @@ var PostgresASTGen = /*#__PURE__*/function (_PostgreSQLParserVisi) {
|
|
|
106
106
|
value: function visitStmt(ctx) {
|
|
107
107
|
if (ctx.createstmt()) {
|
|
108
108
|
var table = ctx.createstmt().accept(this);
|
|
109
|
-
|
|
109
|
+
|
|
110
|
+
// filter out null table that can cause error in model_structure stage
|
|
111
|
+
if (table) this.data.tables.push(table);
|
|
112
|
+
return;
|
|
110
113
|
}
|
|
111
114
|
if (ctx.indexstmt()) {
|
|
112
115
|
/** @type {Index} */
|
|
@@ -115,8 +118,8 @@ var PostgresASTGen = /*#__PURE__*/function (_PostgreSQLParserVisi) {
|
|
|
115
118
|
tableName = _indexStmt$pathName.tableName,
|
|
116
119
|
schemaName = _indexStmt$pathName.schemaName;
|
|
117
120
|
var _table = findTable(this.data.tables, schemaName, tableName);
|
|
118
|
-
if (
|
|
119
|
-
return
|
|
121
|
+
if (_table) _table.indexes.push(indexStmt.index);
|
|
122
|
+
return;
|
|
120
123
|
}
|
|
121
124
|
if (ctx.altertablestmt()) {
|
|
122
125
|
ctx.altertablestmt().accept(this);
|
|
@@ -132,7 +135,6 @@ var PostgresASTGen = /*#__PURE__*/function (_PostgreSQLParserVisi) {
|
|
|
132
135
|
}
|
|
133
136
|
if (ctx.insertstmt()) {
|
|
134
137
|
ctx.insertstmt().accept(this);
|
|
135
|
-
return;
|
|
136
138
|
}
|
|
137
139
|
}
|
|
138
140
|
|
|
@@ -465,10 +467,12 @@ var PostgresASTGen = /*#__PURE__*/function (_PostgreSQLParserVisi) {
|
|
|
465
467
|
key: "visitC_expr_expr",
|
|
466
468
|
value: function visitC_expr_expr(ctx) {
|
|
467
469
|
if (ctx.aexprconst()) return ctx.aexprconst().accept(this);
|
|
468
|
-
if (ctx.a_expr())
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
470
|
+
if (ctx.a_expr()) {
|
|
471
|
+
return {
|
|
472
|
+
value: ctx.a_expr().getText(),
|
|
473
|
+
type: _constants.DATA_TYPE.EXPRESSION
|
|
474
|
+
};
|
|
475
|
+
}
|
|
472
476
|
return {
|
|
473
477
|
value: ctx.getText(),
|
|
474
478
|
type: _constants.DATA_TYPE.EXPRESSION
|
|
@@ -589,11 +593,9 @@ var PostgresASTGen = /*#__PURE__*/function (_PostgreSQLParserVisi) {
|
|
|
589
593
|
}, {
|
|
590
594
|
key: "visitUnreserved_keyword",
|
|
591
595
|
value: function visitUnreserved_keyword(ctx) {
|
|
592
|
-
return ctx.
|
|
596
|
+
return ctx.getText();
|
|
593
597
|
}
|
|
594
|
-
|
|
595
|
-
key: "visitIdentifier",
|
|
596
|
-
value:
|
|
598
|
+
|
|
597
599
|
/*
|
|
598
600
|
Identifier opt_uescape
|
|
599
601
|
| QuotedIdentifier
|
|
@@ -602,7 +604,9 @@ var PostgresASTGen = /*#__PURE__*/function (_PostgreSQLParserVisi) {
|
|
|
602
604
|
| plsqlidentifier
|
|
603
605
|
| plsql_unreserved_keyword
|
|
604
606
|
*/
|
|
605
|
-
|
|
607
|
+
}, {
|
|
608
|
+
key: "visitIdentifier",
|
|
609
|
+
value: function visitIdentifier(ctx) {
|
|
606
610
|
if (ctx.Identifier()) {
|
|
607
611
|
return ctx.Identifier().getText();
|
|
608
612
|
}
|
|
@@ -705,18 +709,24 @@ var PostgresASTGen = /*#__PURE__*/function (_PostgreSQLParserVisi) {
|
|
|
705
709
|
key: "visitSimpletypename",
|
|
706
710
|
value: function visitSimpletypename(ctx) {
|
|
707
711
|
if (ctx.generictype()) return ctx.generictype().accept(this);
|
|
708
|
-
if (ctx.character())
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
}
|
|
712
|
+
if (ctx.character()) {
|
|
713
|
+
return {
|
|
714
|
+
type: ctx.character().accept(this),
|
|
715
|
+
schemaName: null
|
|
716
|
+
};
|
|
717
|
+
}
|
|
718
|
+
if (ctx.numeric()) {
|
|
719
|
+
return {
|
|
720
|
+
type: ctx.numeric().accept(this),
|
|
721
|
+
schemaName: null
|
|
722
|
+
};
|
|
723
|
+
}
|
|
724
|
+
if (ctx.constdatetime()) {
|
|
725
|
+
return {
|
|
726
|
+
type: ctx.constdatetime().accept(this),
|
|
727
|
+
schemaName: null
|
|
728
|
+
};
|
|
729
|
+
}
|
|
720
730
|
return {
|
|
721
731
|
type: ctx.getText(),
|
|
722
732
|
schemaName: null
|
|
@@ -1023,7 +1033,6 @@ var PostgresASTGen = /*#__PURE__*/function (_PostgreSQLParserVisi) {
|
|
|
1023
1033
|
}, {
|
|
1024
1034
|
key: "visitCommentstmt",
|
|
1025
1035
|
value: function visitCommentstmt(ctx) {
|
|
1026
|
-
var note = ctx.comment_text().accept(this);
|
|
1027
1036
|
if (ctx.object_type_any_name()) {
|
|
1028
1037
|
var objectType = ctx.object_type_any_name().accept(this);
|
|
1029
1038
|
if (!objectType) return;
|
|
@@ -1033,9 +1042,9 @@ var PostgresASTGen = /*#__PURE__*/function (_PostgreSQLParserVisi) {
|
|
|
1033
1042
|
var schemaName = names.length > 1 ? names[names.length - 2] : undefined;
|
|
1034
1043
|
var table = findTable(this.data.tables, schemaName, tableName);
|
|
1035
1044
|
if (!table) return;
|
|
1036
|
-
var
|
|
1045
|
+
var note = ctx.comment_text().accept(this);
|
|
1037
1046
|
table.note = {
|
|
1038
|
-
value: escapeStr(
|
|
1047
|
+
value: escapeStr(note)
|
|
1039
1048
|
};
|
|
1040
1049
|
}
|
|
1041
1050
|
}
|
|
@@ -1049,9 +1058,9 @@ var PostgresASTGen = /*#__PURE__*/function (_PostgreSQLParserVisi) {
|
|
|
1049
1058
|
return field.name === fieldName;
|
|
1050
1059
|
});
|
|
1051
1060
|
if (!field) return;
|
|
1052
|
-
var
|
|
1061
|
+
var _note = ctx.comment_text().accept(this);
|
|
1053
1062
|
field.note = {
|
|
1054
|
-
value: escapeStr(
|
|
1063
|
+
value: escapeStr(_note)
|
|
1055
1064
|
};
|
|
1056
1065
|
}
|
|
1057
1066
|
}
|
|
@@ -864,7 +864,7 @@ PostgreSQLLexer.prototype.OperatorEndingWithPlusMinus_sempred = function (localc
|
|
|
864
864
|
PostgreSQLLexer.prototype.IdentifierStartChar_sempred = function (localctx, predIndex) {
|
|
865
865
|
switch (predIndex) {
|
|
866
866
|
case 6:
|
|
867
|
-
return charIsLetter();
|
|
867
|
+
return (0, _PostgreSQLLexerBase2.charIsLetter)();
|
|
868
868
|
case 7:
|
|
869
869
|
return;
|
|
870
870
|
CheckIfUtf32Letter();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dbml/core",
|
|
3
|
-
"version": "3.13.0
|
|
3
|
+
"version": "3.13.0",
|
|
4
4
|
"description": "> TODO: description",
|
|
5
5
|
"author": "Holistics <dev@holistics.io>",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"prepublish": "npm run build"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@dbml/parse": "^3.13.0
|
|
35
|
+
"@dbml/parse": "^3.13.0",
|
|
36
36
|
"antlr4": "^4.13.1",
|
|
37
37
|
"lodash": "^4.17.15",
|
|
38
38
|
"parsimmon": "^1.13.0",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"\\.(?!json$)[^.]*$": "@glen/jest-raw-loader"
|
|
60
60
|
}
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "4b705ec829db097bbeb21cf06b2b989cd16173b4",
|
|
63
63
|
"engines": {
|
|
64
64
|
"node": ">=16"
|
|
65
65
|
}
|
|
@@ -3,6 +3,7 @@ import DbState from './dbState';
|
|
|
3
3
|
import Element, { RawNote, Token } from './element';
|
|
4
4
|
import IndexColumn from './indexColumn';
|
|
5
5
|
import Table from './table';
|
|
6
|
+
import TablePartial from './tablePartial';
|
|
6
7
|
interface RawIndex {
|
|
7
8
|
columns: IndexColumn;
|
|
8
9
|
type: any;
|
|
@@ -23,6 +24,7 @@ declare class Index extends Element {
|
|
|
23
24
|
noteToken: Token;
|
|
24
25
|
table: Table;
|
|
25
26
|
dbState: DbState;
|
|
27
|
+
injectedPartial: TablePartial;
|
|
26
28
|
constructor({ columns, type, unique, pk, token, name, note, table }: RawIndex);
|
|
27
29
|
generateId(): void;
|
|
28
30
|
processIndexColumns(rawColumns: any): void;
|
|
@@ -38,6 +40,7 @@ declare class Index extends Element {
|
|
|
38
40
|
unique: boolean;
|
|
39
41
|
pk: string;
|
|
40
42
|
note: string;
|
|
43
|
+
injectedPartialId?: number;
|
|
41
44
|
};
|
|
42
45
|
exportChild(): {
|
|
43
46
|
columns: {
|
|
@@ -57,6 +60,7 @@ declare class Index extends Element {
|
|
|
57
60
|
unique: boolean;
|
|
58
61
|
pk: string;
|
|
59
62
|
note: string;
|
|
63
|
+
injectedPartialId?: number;
|
|
60
64
|
};
|
|
61
65
|
normalize(model: NormalizedDatabase): void;
|
|
62
66
|
}
|
package/types/tablePartial.d.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
export default TablePartial;
|
|
2
|
-
declare class TablePartial extends Element {
|
|
3
|
-
constructor({ name, note, fields, indexes, token, headerColor, noteToken, dbState, }?: {
|
|
4
|
-
name: any;
|
|
5
|
-
note: any;
|
|
6
|
-
fields?: any[];
|
|
7
|
-
indexes?: any[];
|
|
8
|
-
token: any;
|
|
9
|
-
headerColor: any;
|
|
10
|
-
noteToken?: any;
|
|
11
|
-
dbState: any;
|
|
12
|
-
});
|
|
13
|
-
name: any;
|
|
14
|
-
note: any;
|
|
15
|
-
noteToken: any;
|
|
16
|
-
headerColor: any;
|
|
17
|
-
fields: any[];
|
|
18
|
-
indexes: any[];
|
|
19
|
-
dbState: any;
|
|
20
|
-
generateId(): void;
|
|
21
|
-
id: any;
|
|
22
|
-
export(): {
|
|
23
|
-
name: any;
|
|
24
|
-
note: any;
|
|
25
|
-
headerColor: any;
|
|
26
|
-
fields: any[];
|
|
27
|
-
indexes: any[];
|
|
28
|
-
};
|
|
29
|
-
shallowExport(): {
|
|
30
|
-
name: any;
|
|
31
|
-
note: any;
|
|
32
|
-
headerColor: any;
|
|
33
|
-
fields: any[];
|
|
34
|
-
indexes: any[];
|
|
35
|
-
};
|
|
36
|
-
normalize(model: any): void;
|
|
37
|
-
}
|
|
38
|
-
import Element from './element';
|