@dbml/core 2.5.2 → 2.5.3
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/export/DbmlExporter.js +9 -64
- package/lib/export/JsonExporter.js +5 -11
- package/lib/export/ModelExporter.js +5 -22
- package/lib/export/MysqlExporter.js +8 -70
- package/lib/export/PostgresExporter.js +11 -80
- package/lib/export/SqlServerExporter.js +10 -71
- package/lib/export/index.js +0 -6
- package/lib/export/utils.js +2 -12
- package/lib/import/index.js +0 -7
- package/lib/index.js +4 -9
- package/lib/model_structure/config.js +1 -1
- package/lib/model_structure/database.js +32 -83
- package/lib/model_structure/dbState.js +5 -10
- package/lib/model_structure/element.js +13 -38
- package/lib/model_structure/endpoint.js +22 -68
- package/lib/model_structure/enum.js +18 -49
- package/lib/model_structure/enumValue.js +17 -44
- package/lib/model_structure/field.js +26 -62
- package/lib/model_structure/indexColumn.js +15 -40
- package/lib/model_structure/indexes.js +22 -50
- package/lib/model_structure/ref.js +24 -56
- package/lib/model_structure/schema.js +27 -65
- package/lib/model_structure/table.js +24 -59
- package/lib/model_structure/tableGroup.js +18 -49
- package/lib/model_structure/utils.js +0 -3
- package/lib/parse/Parser.js +5 -27
- package/lib/parse/buildParser.js +11 -23
- package/lib/parse/dbmlParser.js +863 -2131
- package/lib/parse/mssql/base_parsers.js +2 -11
- package/lib/parse/mssql/column_definition/actions.js +0 -3
- package/lib/parse/mssql/column_definition/index.js +9 -17
- package/lib/parse/mssql/constraint_definition/actions.js +6 -12
- package/lib/parse/mssql/constraint_definition/index.js +10 -18
- package/lib/parse/mssql/expression.js +6 -16
- package/lib/parse/mssql/fk_definition/actions.js +1 -12
- package/lib/parse/mssql/fk_definition/index.js +5 -10
- package/lib/parse/mssql/index.js +2 -4
- package/lib/parse/mssql/index_definition/actions.js +0 -6
- package/lib/parse/mssql/index_definition/index.js +8 -13
- package/lib/parse/mssql/keyword_parsers.js +2 -3
- package/lib/parse/mssql/keyword_utils.js +0 -4
- package/lib/parse/mssql/statements/actions.js +0 -24
- package/lib/parse/mssql/statements/index.js +1 -7
- package/lib/parse/mssql/statements/statement_types/alter_table/actions.js +3 -10
- package/lib/parse/mssql/statements/statement_types/alter_table/add/actions.js +2 -6
- package/lib/parse/mssql/statements/statement_types/alter_table/add/index.js +9 -18
- package/lib/parse/mssql/statements/statement_types/alter_table/index.js +2 -7
- package/lib/parse/mssql/statements/statement_types/comments/actions.js +3 -11
- package/lib/parse/mssql/statements/statement_types/comments/index.js +3 -13
- package/lib/parse/mssql/statements/statement_types/create_index/actions.js +1 -3
- package/lib/parse/mssql/statements/statement_types/create_index/index.js +9 -15
- package/lib/parse/mssql/statements/statement_types/create_table/actions.js +7 -18
- package/lib/parse/mssql/statements/statement_types/create_table/index.js +8 -16
- package/lib/parse/mssql/statements/statement_types/index.js +0 -4
- package/lib/parse/mssql/utils.js +4 -14
- package/lib/parse/mssql/whitespaces.js +0 -1
- package/lib/parse/mssqlParser.js +0 -3
- package/lib/parse/mysqlParser.js +822 -2395
- package/lib/parse/postgresParser.js +3 -3
- package/lib/parse/postgresql/get_parser.js +6 -9
- package/lib/parse/schemarbParser.js +219 -714
- package/package.json +10 -11
- package/types/.DS_Store +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Generated by PEG.js 0.10.0.
|
|
3
3
|
*
|
|
4
4
|
* http://pegjs.org/
|
|
5
|
-
*/"use strict";function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);
|
|
5
|
+
*/"use strict";function _typeof(obj){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj;}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;},_typeof(obj);}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable;})),keys.push.apply(keys,symbols);}return keys;}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?ownKeys(Object(source),!0).forEach(function(key){_defineProperty(target,key,source[key]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(target,Object.getOwnPropertyDescriptors(source)):ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key));});}return target;}function _defineProperty(obj,key,value){key=_toPropertyKey(key);if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}function _toPropertyKey(arg){var key=_toPrimitive(arg,"string");return _typeof(key)==="symbol"?key:String(key);}function _toPrimitive(input,hint){if(_typeof(input)!=="object"||input===null)return input;var prim=input[Symbol.toPrimitive];if(prim!==undefined){var res=prim.call(input,hint||"default");if(_typeof(res)!=="object")return res;throw new TypeError("@@toPrimitive must return a primitive value.");}return(hint==="string"?String:Number)(input);}function _toConsumableArray(arr){return _arrayWithoutHoles(arr)||_iterableToArray(arr)||_unsupportedIterableToArray(arr)||_nonIterableSpread();}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(o);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen);}function _iterableToArray(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter);}function _arrayWithoutHoles(arr){if(Array.isArray(arr))return _arrayLikeToArray(arr);}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2;}var _=require("lodash"),pluralize=require("pluralize");function peg$subclass(child,parent){function ctor(){this.constructor=child;}ctor.prototype=parent.prototype;child.prototype=new ctor();}function peg$SyntaxError(message,expected,found,location){this.message=message;this.expected=expected;this.found=found;this.location=location;this.name="SyntaxError";if(typeof Error.captureStackTrace==="function"){Error.captureStackTrace(this,peg$SyntaxError);}}peg$subclass(peg$SyntaxError,Error);peg$SyntaxError.buildMessage=function(expected,found){var DESCRIBE_EXPECTATION_FNS={literal:function literal(expectation){return"\""+literalEscape(expectation.text)+"\"";},"class":function _class(expectation){var escapedParts="",i;for(i=0;i<expectation.parts.length;i++){escapedParts+=expectation.parts[i]instanceof Array?classEscape(expectation.parts[i][0])+"-"+classEscape(expectation.parts[i][1]):classEscape(expectation.parts[i]);}return"["+(expectation.inverted?"^":"")+escapedParts+"]";},any:function any(expectation){return"any character";},end:function end(expectation){return"end of input";},other:function other(expectation){return expectation.description;}};function hex(ch){return ch.charCodeAt(0).toString(16).toUpperCase();}function literalEscape(s){return s.replace(/\\/g,'\\\\').replace(/"/g,'\\"').replace(/\0/g,'\\0').replace(/\t/g,'\\t').replace(/\n/g,'\\n').replace(/\r/g,'\\r').replace(/[\x00-\x0F]/g,function(ch){return'\\x0'+hex(ch);}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(ch){return'\\x'+hex(ch);});}function classEscape(s){return s.replace(/\\/g,'\\\\').replace(/\]/g,'\\]').replace(/\^/g,'\\^').replace(/-/g,'\\-').replace(/\0/g,'\\0').replace(/\t/g,'\\t').replace(/\n/g,'\\n').replace(/\r/g,'\\r').replace(/[\x00-\x0F]/g,function(ch){return'\\x0'+hex(ch);}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(ch){return'\\x'+hex(ch);});}function describeExpectation(expectation){return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);}function describeExpected(expected){var descriptions=new Array(expected.length),i,j;for(i=0;i<expected.length;i++){descriptions[i]=describeExpectation(expected[i]);}descriptions.sort();if(descriptions.length>0){for(i=1,j=1;i<descriptions.length;i++){if(descriptions[i-1]!==descriptions[i]){descriptions[j]=descriptions[i];j++;}}descriptions.length=j;}switch(descriptions.length){case 1:return descriptions[0];case 2:return descriptions[0]+" or "+descriptions[1];default:return descriptions.slice(0,-1).join(", ")+", or "+descriptions[descriptions.length-1];}}function describeFound(found){return found?"\""+literalEscape(found)+"\"":"end of input";}return"Expected "+describeExpected(expected)+" but "+describeFound(found)+" found.";};function peg$parse(input,options){options=options!==void 0?options:{};var peg$FAILED={},peg$startRuleFunctions={parser:peg$parseparser},peg$startRuleFunction=peg$parseparser,peg$c0=function peg$c0(commands){commands.forEach(function(cmd){var command_name=cmd.command_name,_cmd$value=cmd.value,syntax_name=_cmd$value.syntax_name,value=_cmd$value.value,warning=cmd.warning;switch(command_name.toLowerCase()){case"create_table":var table=value;switch(syntax_name.toLowerCase()){case"create_table_normal":tables.push(table);var pkList=[];table.fields.forEach(function(field){// process inline_refs
|
|
6
6
|
if(field.inline_refs){refs.push.apply(refs,_toConsumableArray(field.inline_refs.map(function(ref){return{name:ref.name,endpoints:[{tableName:table.name,schemaName:table.schemaName,fieldNames:[field.name],relation:"*"},ref.endpoint],onDelete:ref.onDelete,onUpdate:ref.onUpdate};})));}// process composite primary key, if primary key is in composite form, push it into indexes
|
|
7
7
|
if(field.pk){pkList.push(field);}});if(pkList.length>1){table.fields=table.fields.map(function(field){delete field.pk;return field;});var index={columns:pkList.map(function(field){return{value:field.name,type:'column'};}),pk:true};if(table.indexes){table.indexes.push(index);}else{table.indexes=[index];}}break;case"create_table_of":break;case"create_table_partition_of":break;}break;case"create_index":var table_name=value.table_name;delete value.table_name;// remove table_name from column
|
|
8
8
|
var table_index=findTable(table_name.schemaName,table_name.name);if(table_index.indexes){table_index.indexes.push(value);}else{table_index.indexes=[value];}break;case"create_type":switch(syntax_name.toLowerCase()){case"create_type_enum":enums.push(value);break;case"create_type_range":break;}break;case"alter_table":switch(syntax_name.toLowerCase()){case"alter_table_action":value.forEach(function(v){var type=v.type;switch(type.toLowerCase()){case"fk":v.t_value.forEach(function(endpoints){refs.push(endpoints);});}});break;}break;case"comment":switch(syntax_name.toLowerCase()){case"column":{var schemaName=value.schemaName,tableName=value.tableName,columnName=value.columnName;var foundTable=findTable(schemaName,tableName);if(foundTable){var foundField=findField(foundTable,columnName);if(foundField)foundField.note=value.text?{value:value.text}:null;}break;}case"table":{var _value$table_name=value.table_name,_schemaName=_value$table_name.schemaName,_tableName=_value$table_name.name;var _foundTable=findTable(_schemaName,_tableName);if(_foundTable)_foundTable.note=value.text?{value:value.text}:null;break;}}break;case"ignore_syntax":// warnings.push(warning);
|
|
@@ -25,8 +25,8 @@ var field=table.fields.find(function(field){return field.name===fieldNames[0];})
|
|
|
25
25
|
}if(!field.inline_refs){field.inline_refs=[];}field.inline_refs.push({name:ref.name,endpoint:ref.endpoints[1],onDelete:ref.onDelete,onUpdate:ref.onUpdate});});break;}break;case"like":break;}});return{syntax_name:"create_table_normal",value:table};},peg$c355=function peg$c355(first,rest){return[first].concat(_toConsumableArray(rest.map(function(r){return r[3];})));},peg$c356=function peg$c356(table_constraint){return{table_property_name:"table_constraint",value:table_constraint};},peg$c357=function peg$c357(source_table){return{table_property_name:"like",value:source_table};},peg$c358=function peg$c358(column_name,data_type,column_constraints){var column={name:column_name,type:data_type};var columnTypeName=column.type.type_name.toLowerCase();var serialIncrementType=new Set(['serial','smallserial','bigserial']);// process type for increment
|
|
26
26
|
if(serialIncrementType.has(columnTypeName)){column.increment=true;}// map from grammar to right object
|
|
27
27
|
column_constraints=column_constraints.map(function(c){return c[1];});// process column_constraints
|
|
28
|
-
column_constraints.forEach(function(_ref2){var type=_ref2.type,value=_ref2.value;switch(type.toLowerCase()){case"not_null":column.not_null=value;break;case"increment":column.increment=true;break;case"dbdefault":column.dbdefault=value;break;case"unique":column.unique=true;break;case"pk":column.pk=true;break;case"fk":if(!column.inline_refs){column.inline_refs=[];}column.inline_refs.push(value);break;}});return{table_property_name:"column",value:column};},peg$c359=function peg$c359(constraint_name){return constraint_name;},peg$c360=function peg$c360(constraint_name){return{type:"not_null",value:true};},peg$c361=function peg$c361(constraint_name){return{type:"not_null",value:false};},peg$c362=function peg$c362(constraint_name){return{type:"not_supported"};},peg$c363=function peg$c363(constraint_name,default_expr){return{type:"dbdefault",value:default_expr};},peg$c364=function peg$c364(constraint_name){return{type:"increment"};},peg$c365=function peg$c365(constraint_name){return{type:"unique"};},peg$c366=function peg$c366(constraint_name){return{type:"pk"};},peg$c367=function peg$c367(constraint_name,reftable,refcolumn){return refcolumn;},peg$c368=function peg$c368(constraint_name,reftable,refcolumn,fk_actions){var ref_actions={};fk_actions.forEach(function(fkAction){if(fkAction.type==='delete'){ref_actions.onDelete=fkAction.action;return;}ref_actions.onUpdate=fkAction.action;});return{type:"fk",value:_objectSpread({name:constraint_name,endpoint:{tableName:reftable.name,schemaName:reftable.schemaName,fieldNames:refcolumn?[refcolumn]:null,relation:"1"}},ref_actions)};},peg$c369=function peg$c369(constraint_name,column_constraint){return column_constraint;},peg$c370=function peg$c370(constraint_name){return{type:"not_supported"};},peg$c371=function peg$c371(constraint_name,column_names){return{type:"unique",t_value:column_names};},peg$c372=function peg$c372(constraint_name,column_names){return{type:"pk",t_value:column_names};},peg$c373=function peg$c373(constraint_name){return{type:"not_supported"};},peg$c374=function peg$c374(constraint_name,column_names,reftable,refcolumn){return refcolumn;},peg$c375=function peg$c375(constraint_name,column_names,reftable,refcolumn,fk_actions){var value=[];if(refcolumn&&refcolumn.length>column_names.length){
|
|
29
|
-
//if(refcolumn && key >= refcolumn.length) {
|
|
28
|
+
column_constraints.forEach(function(_ref2){var type=_ref2.type,value=_ref2.value;switch(type.toLowerCase()){case"not_null":column.not_null=value;break;case"increment":column.increment=true;break;case"dbdefault":column.dbdefault=value;break;case"unique":column.unique=true;break;case"pk":column.pk=true;break;case"fk":if(!column.inline_refs){column.inline_refs=[];}column.inline_refs.push(value);break;}});return{table_property_name:"column",value:column};},peg$c359=function peg$c359(constraint_name){return constraint_name;},peg$c360=function peg$c360(constraint_name){return{type:"not_null",value:true};},peg$c361=function peg$c361(constraint_name){return{type:"not_null",value:false};},peg$c362=function peg$c362(constraint_name){return{type:"not_supported"};},peg$c363=function peg$c363(constraint_name,default_expr){return{type:"dbdefault",value:default_expr};},peg$c364=function peg$c364(constraint_name){return{type:"increment"};},peg$c365=function peg$c365(constraint_name){return{type:"unique"};},peg$c366=function peg$c366(constraint_name){return{type:"pk"};},peg$c367=function peg$c367(constraint_name,reftable,refcolumn){return refcolumn;},peg$c368=function peg$c368(constraint_name,reftable,refcolumn,fk_actions){var ref_actions={};fk_actions.forEach(function(fkAction){if(fkAction.type==='delete'){ref_actions.onDelete=fkAction.action;return;}ref_actions.onUpdate=fkAction.action;});return{type:"fk",value:_objectSpread({name:constraint_name,endpoint:{tableName:reftable.name,schemaName:reftable.schemaName,fieldNames:refcolumn?[refcolumn]:null,relation:"1"}},ref_actions)};},peg$c369=function peg$c369(constraint_name,column_constraint){return column_constraint;},peg$c370=function peg$c370(constraint_name){return{type:"not_supported"};},peg$c371=function peg$c371(constraint_name,column_names){return{type:"unique",t_value:column_names};},peg$c372=function peg$c372(constraint_name,column_names){return{type:"pk",t_value:column_names};},peg$c373=function peg$c373(constraint_name){return{type:"not_supported"};},peg$c374=function peg$c374(constraint_name,column_names,reftable,refcolumn){return refcolumn;},peg$c375=function peg$c375(constraint_name,column_names,reftable,refcolumn,fk_actions){var value=[];if(refcolumn&&refcolumn.length>column_names.length){//throw Error(`Line ${location().start.line}: There are extra ${refcolumn.length - column_names.length} refer column(s) not matched.`);
|
|
29
|
+
}//if(refcolumn && key >= refcolumn.length) {
|
|
30
30
|
//throw Error(`Line ${location().start.line}: ${column_name} do not have referenced column.`)
|
|
31
31
|
//}
|
|
32
32
|
var v={name:constraint_name,endpoints:[{tableName:null,fieldNames:column_names,relation:"*"},{tableName:reftable.name,schemaName:reftable.schemaName,fieldNames:refcolumn,// ? refcolumn[key] : null,
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _pegjsRequireImport = _interopRequireDefault(require("pegjs-require-import"));
|
|
4
|
-
|
|
5
4
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
6
|
-
|
|
7
5
|
var _pegjsRequire = (0, _pegjsRequireImport["default"])('./parser.pegjs', {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}),
|
|
13
|
-
|
|
14
|
-
|
|
6
|
+
format: 'commonjs',
|
|
7
|
+
dependencies: {
|
|
8
|
+
_: 'lodash'
|
|
9
|
+
}
|
|
10
|
+
}),
|
|
11
|
+
sourceCode = _pegjsRequire.sourceCode;
|
|
15
12
|
console.log(sourceCode);
|