@dbml/core 7.1.0 → 7.1.1

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/index.cjs CHANGED
@@ -11,7 +11,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
11
11
  `;case`\\`:return`\\`;case`r`:return`\r`;case`'`:return`'`;case`"`:return`"`;case"`":return"`";case`0`:return`\0`;case`b`:return`\b`;case`v`:return`\v`;case`f`:return`\f`;case` `:return`\\ `;case`u`:{let t=``;for(let n=0;n<=3;n+=1){if(this.isAtEnd()||!oh(this.peek()))return this.errors.push(new P(N.INVALID_ESCAPE_SEQUENCE,`Invalid unicode escape sequence '\\u${t}', only unicode escape sequences of the form '\\uHHHH' where H is a hexadecimal number are allowed`,Qp.create(Zp.STRING_LITERAL,this.filepath,e,this.current,`\\u${t}`,!0))),`\\u${t}`;t+=this.advance()}return String.fromCharCode(parseInt(t,16))}default:return this.text[this.current.offset-1]}}},K_=function(e){return e[e.ListExpression=0]=`ListExpression`,e[e.GroupExpression=1]=`GroupExpression`,e[e.BlockExpression=2]=`BlockExpression`,e}({}),pfe=class{constructor(){this.stack=[],this.numberOfNestedLParens=0,this.numberOfNestedLBrackets=0,this.numberOfNestedLBraces=0}push(e){this.stack.push(e),e===K_.ListExpression&&(this.numberOfNestedLBrackets+=1),e===K_.GroupExpression&&(this.numberOfNestedLParens+=1),e===K_.BlockExpression&&(this.numberOfNestedLBraces+=1)}pop(){let e=this.stack.pop();return e===K_.ListExpression&&--this.numberOfNestedLBrackets,e===K_.GroupExpression&&--this.numberOfNestedLParens,e===K_.BlockExpression&&--this.numberOfNestedLBraces,e}top(){return Gp(this.stack)}isWithinGroupExpressionContext(){return this.numberOfNestedLParens>0}isWithinListExpressionContext(){return this.numberOfNestedLBrackets>0}isWithinBlockExpressionContext(){return this.numberOfNestedLBraces>0}withContextDo(e,t){return()=>{this.push(e);try{return t()}finally{this.pop()}}}findHandlerContext(e,t){if(!(this.numberOfNestedLBraces<=0&&this.numberOfNestedLBrackets<=0&&this.numberOfNestedLParens<=0))for(let n=t;n<e.length-1;n+=1)switch(e[n].kind){case Zp.COMMA:if(this.isWithinGroupExpressionContext()||this.isWithinListExpressionContext())return[...this.stack].reverse().find(e=>[K_.GroupExpression,K_.ListExpression].includes(e));break;case Zp.RPAREN:if(this.isWithinGroupExpressionContext())return K_.GroupExpression;break;case Zp.RBRACE:if(this.isWithinBlockExpressionContext())return K_.BlockExpression;break;case Zp.RBRACKET:if(this.isWithinListExpressionContext())return K_.ListExpression;break;default:break}}},mfe=class{constructor(e,t){this.generator=e,this.filepath=t}create(e,t){return new e(t,this.generator.nextId(),this.filepath)}},q_=class{constructor(e,t,n){this.token=e,this.partialNode=t,this.handlerContext=n}},hfe=class{constructor(e,t,n,r){this.current=0,this.errors=[],this.contextStack=new pfe,this.synchronizeProgram=()=>{let e=this.peek();e.kind===Zp.EOF?this.logError(e,N.UNEXPECTED_EOF,`Unexpected EOF`):Dm(this.advance())},this.synchronizeElementDeclarationName=()=>{for(;!this.isAtEnd();){let e=this.peek();if(Em(e)||this.check(Zp.COLON,Zp.LBRACE,Zp.LBRACKET))break;Dm(e),this.advance()}},this.synchronizeElementDeclarationAlias=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(Zp.COLON,Zp.LBRACE,Zp.LBRACKET))break;Dm(e),this.advance()}},this.blockExpression=this.contextStack.withContextDo(K_.BlockExpression,()=>{let e={body:[]},t=()=>this.nodeFactory.create(fm,e);try{this.consume(`Expect an opening brace '{'`,Zp.LBRACE),e.blockOpenBrace=this.previous()}catch(e){if(!(e instanceof q_))throw e;if(!this.canHandle(e))throw new q_(e.token,t(),e.handlerContext);this.synchronizeBlock()}for(;!this.isAtEnd()&&!this.check(Zp.RBRACE);)try{e.body.push(this.canBeField()?this.fieldDeclaration():this.expression())}catch(n){if(!(n instanceof q_))throw n;if(e.body.push(n.partialNode),!this.canHandle(n))throw new q_(n.token,t(),n.handlerContext);this.synchronizeBlock()}try{this.consume(`Expect a closing brace '}'`,Zp.RBRACE),e.blockCloseBrace=this.previous()}catch(e){if(!(e instanceof q_))throw e;if(!this.canHandle(e))throw new q_(e.token,t(),e.handlerContext);this.synchronizeBlock()}return t()}),this.synchronizeBlock=()=>{if(!this.check(Zp.RBRACE))for(Dm(this.advance());!this.isAtEnd();){let e=this.peek();if(this.check(Zp.RBRACE)||Coe(this.previous(),e))break;Dm(e),this.advance()}},this.tupleExpression=this.contextStack.withContextDo(K_.GroupExpression,()=>{let e={elementList:[],commaList:[]},t=()=>this.nodeFactory.create(gm,{groupOpenParen:e.tupleOpenParen,groupCloseParen:e.tupleCloseParen,expression:e.elementList[0]}),n=()=>this.nodeFactory.create(mm,e);try{this.consume(`Expect an opening parenthesis '('`,Zp.LPAREN),e.tupleOpenParen=this.previous()}catch(e){if(!(e instanceof q_))throw e;if(!this.canHandle(e))throw new q_(e.token,n(),e.handlerContext);this.synchronizeTuple()}if(!this.isAtEnd()&&!this.check(Zp.RPAREN))try{e.elementList.push(this.normalExpression())}catch(n){if(!(n instanceof q_))throw n;if(e.elementList.push(n.partialNode),!this.canHandle(n))throw new q_(n.token,t(),n.handlerContext);this.synchronizeTuple()}for(;!this.isAtEnd()&&!this.check(Zp.RPAREN);)try{this.consume(`Expect a comma ','`,Zp.COMMA),e.commaList.push(this.previous()),e.elementList.push(this.normalExpression())}catch(t){if(!(t instanceof q_))throw t;if(t.partialNode instanceof tm&&e.elementList.push(t.partialNode),!this.canHandle(t))throw new q_(t.token,n(),t.handlerContext);this.synchronizeTuple()}try{this.consume(`Expect a closing parenthesis ')'`,Zp.RPAREN),e.tupleCloseParen=this.previous()}catch(e){if(!(e instanceof q_))throw e;if(!this.canHandle(e))throw new q_(e.token,n(),e.handlerContext);this.synchronizeTuple()}return e.elementList.length===1?t():n()}),this.synchronizeTuple=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(Zp.RPAREN,Zp.COMMA))break;Dm(e),this.advance()}},this.listExpression=this.contextStack.withContextDo(K_.ListExpression,()=>{let e={elementList:[],commaList:[]},t=()=>this.nodeFactory.create(pm,e);try{this.consume(`Expect an opening bracket '['`,Zp.LBRACKET),e.listOpenBracket=this.previous()}catch(e){if(!(e instanceof q_))throw e;if(!this.canHandle(e))throw new q_(e.token,t(),e.handlerContext);this.synchronizeList()}if(!this.isAtEnd()&&!this.check(Zp.RBRACKET))try{e.elementList.push(this.attribute())}catch(n){if(!(n instanceof q_))throw n;if(e.elementList.push(n.partialNode),!this.canHandle(n))throw new q_(n.token,t(),n.handlerContext);this.synchronizeList()}for(;!this.isAtEnd()&&!this.check(Zp.RBRACKET);)try{this.consume(`Expect a comma ','`,Zp.COMMA),e.commaList.push(this.previous()),e.elementList.push(this.attribute())}catch(n){if(!(n instanceof q_))throw n;if(n.partialNode instanceof tm&&e.elementList.push(n.partialNode),!this.canHandle(n))throw new q_(n.token,t(),n.handlerContext);this.synchronizeList()}try{this.consume(`Expect a closing bracket ']'`,Zp.RBRACKET),e.listCloseBracket=this.previous()}catch(e){if(!(e instanceof q_))throw e;if(!this.canHandle(e))throw new q_(e.token,t(),e.handlerContext);this.synchronizeList()}return t()}),this.synchronizeList=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(Zp.COMMA,Zp.RBRACKET))break;Dm(e),this.advance()}},this.synchronizeAttributeName=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(Zp.COMMA,Zp.RBRACKET,Zp.COLON))break;Dm(e),this.advance()}},this.synchronizeAttributeValue=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(Zp.COMMA,Zp.RBRACKET))break;Dm(e),this.advance()}},this.source=e,this.tokens=t,this.nodeFactory=new mfe(n,r)}isAtEnd(){return this.current>=this.tokens.length||this.tokens[this.current].kind===Zp.EOF}advance(){return this.isAtEnd()?Gp(this.tokens):this.tokens[this.current++]}peek(e=0){return e+this.current>=this.tokens.length?Gp(this.tokens):this.tokens[this.current+e]}match(...e){let t=this.check(...e);return t&&this.advance(),t}check(...e){let t=this.peek();return e.includes(t.kind)}previous(){return this.tokens[this.current-1]}canHandle(e){return e.handlerContext===void 0||e.handlerContext===this.contextStack.top()}consume(e,...t){if(!this.match(...t))throw this.logError(this.peek(),N.UNEXPECTED_TOKEN,e),new q_(this.peek(),void 0,this.contextStack.findHandlerContext(this.tokens,this.current))}discardUntil(e,...t){if(this.isAtEnd()||!this.check(...t)){for(Dm(this.peek()),this.logError(this.advance(),N.UNEXPECTED_TOKEN,e);!this.isAtEnd()&&!this.check(...t);)Dm(this.advance());return!this.isAtEnd()}return!0}gatherInvalid(){let e=[],t=[],n,r=0;for(;r<this.tokens.length&&this.tokens[r].isInvalid;r+=1)t.push(this.tokens[r]);for(n=this.tokens[r],n.leadingInvalid=[...t,...n.leadingInvalid],e.push(n),r+=1;r<this.tokens.length;r+=1){let t=this.tokens[r];t.isInvalid?n.trailingInvalid.push(t):(n=t,e.push(n))}this.tokens=e}parse(){let e=this.program(),t=this.advance(),n=this.nodeFactory.create(rm,{body:e,eof:t,source:this.source});return this.gatherInvalid(),new zm({ast:n,tokens:this.tokens},this.errors)}program(){let e=[];for(;!this.isAtEnd();)try{let t=this.elementDeclaration();e.push(t)}catch(t){if(!(t instanceof q_))throw t;e.push(t.partialNode),this.synchronizeProgram()}return e}elementDeclaration(){let e={},t=()=>this.nodeFactory.create(im,e);try{this.consume(`Expect an identifier`,Zp.IDENTIFIER),e.type=this.previous()}catch(e){throw e instanceof q_?new q_(e.token,t(),e.handlerContext):e}if(!this.check(Zp.COLON,Zp.LBRACE,Zp.LBRACKET))try{e.name=this.normalExpression()}catch(n){if(!(n instanceof q_))throw n;if(e.name=n.partialNode,!this.canHandle(n))throw new q_(n.token,t(),n.handlerContext);this.synchronizeElementDeclarationName()}if(Em(this.peek()))if(e.as=this.advance(),this.check(Zp.COLON,Zp.LBRACE,Zp.LBRACKET))this.logError(this.peek(),N.UNEXPECTED_TOKEN,`Expect an alias`);else try{e.alias=this.normalExpression()}catch(n){if(!(n instanceof q_))throw n;if(e.alias=n.partialNode,!this.canHandle(n))throw new q_(n.token,t(),n.handlerContext);this.synchronizeElementDeclarationAlias()}try{e.attributeList=this.check(Zp.LBRACKET)?this.listExpression():void 0}catch(n){throw n instanceof q_?(e.attributeList=n.partialNode,new q_(n.token,t(),n.handlerContext)):n}if(!this.discardUntil(`Expect an opening brace '{' or a colon ':'`,Zp.LBRACE,Zp.COLON))return t();try{if(this.match(Zp.COLON)){e.bodyColon=this.previous();let t=this.expression();t instanceof im?(Dm(t),this.logError(t,N.UNEXPECTED_ELEMENT_DECLARATION,`An element's simple body must not be an element declaration`)):e.body=t}else e.body=this.blockExpression()}catch(n){throw n instanceof q_?(e.body=n.partialNode,new q_(n.token,t(),n.handlerContext)):n}return this.nodeFactory.create(im,e)}fieldDeclaration(){let e={},t=()=>this.nodeFactory.create(im,e);try{this.consume(`Expect an identifier`,Zp.IDENTIFIER),e.type=this.previous()}catch(n){throw n instanceof q_?(e.type=n.partialNode,new q_(n.token,t(),n.handlerContext)):n}try{this.consume(`Expect a colon ':'`,Zp.COLON),e.bodyColon=this.previous()}catch(n){throw n instanceof q_?(e.bodyColon=n.partialNode,new q_(n.token,t(),n.handlerContext)):n}try{let t=this.expression();t instanceof im?this.errors.push(new P(N.INVALID_ELEMENT_IN_SIMPLE_BODY,`Simple body cannot be an element declaration`,t)):e.body=t}catch(n){throw n instanceof q_?(e.body=n.partialNode,new q_(n.token,t(),n.handlerContext)):n}return this.nodeFactory.create(im,e)}expression(){let e={args:[]},t=()=>Ooe(e.callee,e.args,this.nodeFactory)??this.nodeFactory.create(dm,e);try{e.callee=this.commaExpression()}catch(n){throw n instanceof q_?(e.callee=n.partialNode,new q_(n.token,t(),n.handlerContext)):n}if(this.shouldStopFunctionApplication())return t();let n=e.callee;for(;!this.shouldStopFunctionApplication();){em(this.previous())||this.logError(n,N.MISSING_SPACES,`Expect a following space`);try{n=this.commaExpression(),e.args.push(n)}catch(r){throw r instanceof q_?(n=r.partialNode,e.args.push(n),new q_(r.token,t(),r.handlerContext)):r}}return t()}shouldStopFunctionApplication(){if(this.isAtEnd()||$p(this.previous()))return!0;let e=this.peek().kind;return[Zp.RBRACE,Zp.RBRACKET,Zp.RPAREN,Zp.COMMA,Zp.COLON].includes(e)}commaExpression(){let e=this.check(Zp.COMMA)?this.nodeFactory.create(Sm,{prevToken:this.previous()}):this.normalExpression();if(!this.check(Zp.COMMA))return e;let t={elementList:[e],commaList:[]};do{if(t.commaList.push(this.advance()),this.shouldStopCommaExpression()){t.elementList.push(this.nodeFactory.create(Sm,{prevToken:this.previous()}));break}if(this.check(Zp.COMMA)){t.elementList.push(this.nodeFactory.create(Sm,{prevToken:this.previous()}));continue}try{let e=this.normalExpression();t.elementList.push(e)}catch(e){throw e instanceof q_?(e.partialNode&&t.elementList.push(e.partialNode),new q_(e.token,this.nodeFactory.create(hm,t),e.handlerContext)):e}}while(!this.shouldStopCommaExpression()&&this.check(Zp.COMMA));return this.nodeFactory.create(hm,t)}shouldStopCommaExpression(){if(this.isAtEnd()||$p(this.previous()))return!0;let e=this.peek().kind;return[Zp.RBRACE,Zp.LBRACE,Zp.RBRACKET,Zp.LBRACKET,Zp.RPAREN,Zp.LPAREN,Zp.COLON].includes(e)}normalExpression(){return this.expression_bp(0)}expression_bp(e){let t=this.leftExpression_bp();for(;!this.isAtEnd();){let n=this.peek();if(n.kind===Zp.LPAREN){let{left:r}=xfe(n);if(r<e||Coe(this.previous(),n)&&!this.contextStack.isWithinGroupExpressionContext()&&!this.contextStack.isWithinListExpressionContext())break;try{t=this.nodeFactory.create(_m,{callee:t,argumentList:this.tupleExpression()})}catch(e){throw e instanceof q_?(t=this.nodeFactory.create(_m,{callee:t,argumentList:e.partialNode}),new q_(e.token,t,e.handlerContext)):e}}else if(n.kind===Zp.LBRACKET){if(em(this.previous()))break;try{t=this.nodeFactory.create(Cm,{expression:t,indexer:this.listExpression()})}catch(e){throw e instanceof q_?(t=this.nodeFactory.create(Cm,{expression:t,indexer:e.partialNode}),new q_(e.token,t,e.handlerContext)):e}}else if(Soe(n)){let r=n,i=xfe(r);if(i.left!==null){if(i.left<=e)break;this.advance(),t=this.nodeFactory.create(lm,{expression:t,op:r})}else{let n=_fe(r);if(n.left===null||n.left<=e)break;this.advance();try{t=this.nodeFactory.create(cm,{leftExpression:t,op:r,rightExpression:r.value===`.`?this.extractOperand():this.expression_bp(n.right)})}catch(e){throw e instanceof q_?(t=this.nodeFactory.create(cm,{leftExpression:t,op:r,rightExpression:e.partialNode}),new q_(e.token,t,e.handlerContext)):e}}}else break}return t}leftExpression_bp(){let e;if(Soe(this.peek())){let t={};t.op=this.peek();let n=yfe(t.op);if(n.right===null)throw this.logError(t.op,N.UNKNOWN_PREFIX_OP,`Unexpected '${t.op.value}' in an expression`),new q_(t.op,this.nodeFactory.create(Sm,{prevToken:t.op}),this.contextStack.findHandlerContext(this.tokens,this.current));this.advance();try{t.expression=this.expression_bp(n.right)}catch(e){throw e instanceof q_?(t.expression=e.partialNode,new q_(e.token,this.nodeFactory.create(sm,t),e.handlerContext)):e}e=this.nodeFactory.create(sm,t)}else if(e=this.extractOperand(),e instanceof Sm)throw new q_(this.peek(),this.nodeFactory.create(Sm,{prevToken:this.peek()}),this.contextStack.findHandlerContext(this.tokens,this.current));return e}extractOperand(){return this.check(Zp.WILDCARD)?(this.advance(),this.nodeFactory.create(ym,{token:this.previous()})):this.check(Zp.NUMERIC_LITERAL,Zp.STRING_LITERAL,Zp.COLOR_LITERAL,Zp.QUOTED_STRING,Zp.IDENTIFIER)?this.primaryExpression():this.check(Zp.FUNCTION_EXPRESSION)?this.functionExpression():this.check(Zp.LBRACKET)?this.listExpression():this.check(Zp.LBRACE)?this.blockExpression():this.check(Zp.LPAREN)?this.tupleExpression():(this.peek().kind===Zp.EOF?this.logError(this.peek(),N.UNEXPECTED_EOF,`Unexpected EOF`):this.logError(this.peek(),N.INVALID_OPERAND,`Invalid start of operand "${this.peek().value}"`),this.nodeFactory.create(Sm,{prevToken:this.previous()}))}functionExpression(){let e={};try{this.consume(`Expect a function expression`,Zp.FUNCTION_EXPRESSION),e.value=this.previous()}catch(t){throw t instanceof q_?new q_(t.token,this.nodeFactory.create(um,e),t.handlerContext):t}return this.nodeFactory.create(um,e)}canBeField(){return this.peek().kind===Zp.IDENTIFIER&&this.peek(1).kind===Zp.COLON}primaryExpression(){if(this.match(Zp.COLOR_LITERAL,Zp.STRING_LITERAL,Zp.NUMERIC_LITERAL))return this.nodeFactory.create(xm,{expression:this.nodeFactory.create(vm,{literal:this.previous()})});if(this.match(Zp.QUOTED_STRING,Zp.IDENTIFIER))return this.nodeFactory.create(xm,{expression:this.nodeFactory.create(bm,{variable:this.previous()})});throw this.logError(this.peek(),N.UNEXPECTED_TOKEN,`Expect a variable or literal`),new q_(this.peek(),void 0,this.contextStack.findHandlerContext(this.tokens,this.current))}attribute(){let e={};if(this.check(Zp.COLON,Zp.RBRACKET,Zp.COMMA)){let t=this.peek();this.logError(t,N.EMPTY_ATTRIBUTE_NAME,`Expect a non-empty attribute name`),e.name=this.nodeFactory.create(am,{identifiers:[]})}else try{e.name=this.attributeName()}catch(t){if(!(t instanceof q_))throw t;if(e.name=t.partialNode,!this.canHandle(t))throw new q_(t.token,this.nodeFactory.create(om,e),t.handlerContext);this.synchronizeAttributeName()}return this.match(Zp.COLON)&&(e.colon=this.previous(),e.value=this.attributeValue()),this.nodeFactory.create(om,e)}attributeValue(){let e;try{e=this.peek().kind===Zp.IDENTIFIER&&this.peek(1).kind===Zp.IDENTIFIER?this.attributeName():this.normalExpression()}catch(t){if(!(t instanceof q_)||!this.canHandle(t))throw t;e=t.partialNode,this.synchronizeAttributeValue()}return e}attributeName(){let e=[];if(this.peek().kind!==Zp.IDENTIFIER)return this.primaryExpression();for(;!this.isAtEnd()&&!this.check(Zp.COLON,Zp.COMMA,Zp.RBRACKET);)try{this.consume(`Expect an identifier`,Zp.IDENTIFIER),e.push(this.previous())}catch(t){throw t instanceof q_?new q_(t.token,this.nodeFactory.create(am,{identifiers:e}),t.handlerContext):t}return this.nodeFactory.create(am,{identifiers:e})}logError(e,t,n){this.errors.push(new P(t,n,e))}},gfe={"+":{left:9,right:10},"-":{left:9,right:10},"/":{left:11,right:12},"%":{left:11,right:12},"<":{left:7,right:8},"<=":{left:7,right:8},">":{left:7,right:8},">=":{left:7,right:8},"<>":{left:7,right:8},"=":{left:2,right:3},"==":{left:4,right:5},"!=":{left:4,right:5},".":{left:16,right:17}};function _fe(e){return gfe[e.value]||{left:null,right:null}}var vfe={"+":{left:null,right:15},"-":{left:null,right:15},"<":{left:null,right:15},">":{left:null,right:15},"<>":{left:null,right:15},"!":{left:null,right:15},"~":{left:null,right:15}};function yfe(e){return vfe[e.value]||{left:null,right:null}}var bfe={"(":{left:14,right:null}};function xfe(e){return bfe[e.value]||{left:null,right:null}}function J_(e,t){return e.getOffsetAt(t)}var Sfe=class{constructor(e){this.compiler=e}provideDefinition(e,t){let{uri:n}=e,r=J_(e,t),i=[...this.compiler.container.stack(r)];for(;i.length!==0;){let e=i.pop();if(!e?.referee)continue;let t;if(e.referee?.declaration&&[nm.PRIMARY_EXPRESSION,nm.VARIABLE].includes(e?.kind)&&({declaration:t}=e.referee),t){let{startPos:e,endPos:r}=t;return[{range:{startColumn:e.column+1,startLineNumber:e.line+1,endColumn:r.column+1,endLineNumber:r.line+1},uri:n}]}}return[]}},Y_=function(e){return e[e.Function=1]=`Function`,e[e.Constructor=2]=`Constructor`,e[e.Field=3]=`Field`,e[e.Variable=4]=`Variable`,e[e.Class=5]=`Class`,e[e.Struct=6]=`Struct`,e[e.Interface=7]=`Interface`,e[e.Module=8]=`Module`,e[e.Property=9]=`Property`,e[e.Event=10]=`Event`,e[e.Operator=11]=`Operator`,e[e.Unit=12]=`Unit`,e[e.Value=13]=`Value`,e[e.Constant=14]=`Constant`,e[e.Enum=15]=`Enum`,e[e.EnumMember=16]=`EnumMember`,e[e.Keyword=17]=`Keyword`,e[e.Text=18]=`Text`,e[e.Color=19]=`Color`,e[e.File=20]=`File`,e[e.Reference=21]=`Reference`,e[e.Customcolor=22]=`Customcolor`,e[e.Folder=23]=`Folder`,e[e.TypeParameter=24]=`TypeParameter`,e[e.User=25]=`User`,e[e.Issue=26]=`Issue`,e[e.Snippet=27]=`Snippet`,e}({}),X_=function(e){return e[e.None=0]=`None`,e[e.KeepWhitespace=1]=`KeepWhitespace`,e[e.InsertAsSnippet=4]=`InsertAsSnippet`,e}({}),Z_=function(e){return e[e.Hint=1]=`Hint`,e[e.Info=2]=`Info`,e[e.Warning=4]=`Warning`,e[e.Error=8]=`Error`,e}({}),Cfe=class{constructor(e){this.compiler=e}provideDiagnostics(){let e=[],t=this.compiler.parse._(),n=t.getErrors();for(let t of n)e.push(this.createDiagnostic(t,`error`));let r=t.getWarnings();for(let t of r)e.push(this.createDiagnostic(t,`warning`));return e}provideErrors(){return this.compiler.parse._().getErrors().map(e=>this.createDiagnostic(e,`error`))}provideWarnings(){return this.compiler.parse._().getWarnings().map(e=>this.createDiagnostic(e,`warning`))}provideMarkers(){return this.provideDiagnostics().map(e=>({severity:this.getSeverityValue(e.type),message:e.text,startLineNumber:e.startRow,startColumn:e.startColumn,endLineNumber:e.endRow,endColumn:e.endColumn,code:e.code?String(e.code):void 0}))}createDiagnostic(e,t){let n=e.nodeOrToken,r=n.startPos,i=n.endPos;return{type:t,text:e.diagnostic,startRow:r.line+1,startColumn:r.column+1,endRow:i.line+1,endColumn:i.column+1,code:e.code}}getSeverityValue(e){return e===`error`?Z_.Error:Z_.Warning}},wfe=class{constructor(e){this.compiler=e}provideReferences(e,t){let{uri:n}=e,r=J_(e,t),i=[...this.compiler.container.stack(r)];for(;i.length!==0;){let e=i.pop();if(e&&[nm.ELEMENT_DECLARATION,nm.FUNCTION_APPLICATION,nm.PRIMARY_EXPRESSION].includes(e?.kind)){let{symbol:t}=e;if(t?.references.length)return t.references.map(({startPos:e,endPos:t})=>({range:{startColumn:e.column+1,startLineNumber:e.line+1,endColumn:t.column+1,endLineNumber:t.line+1},uri:n}))}}return[]}};function Q_(e,t){return e>=t.start&&e<t.end}function Tfe(e){return e?e.split(``).every(e=>ih(e)||ah(e))&&!ah(e[0]):!1}function $_(e){return Tfe(e)?e:`"${ev(e)}"`}function Efe(e){let t=``,n=0,r={n:`
12
12
  `,t:` `,r:`\r`,b:`\b`,f:`\f`,v:`\v`,0:`\0`,"\\":`\\`,'"':`"`,"'":`'`,"`":"`"};for(;n<e.length;)if(e[n]===`\\`&&n+1<e.length){let i=e[n+1];if(i===`u`&&n+5<e.length){let r=e.slice(n+2,n+6);if(/^[0-9a-fA-F]{4}$/.test(r)){t+=String.fromCharCode(parseInt(r,16)),n+=6;continue}}i in r?(t+=r[i],n+=2):(t+=i,n+=2)}else t+=e[n],n++;return t}function ev(e){let t=``;for(let n=0;n<e.length;n++){let r=e[n];switch(r){case`\\`:t+=`\\\\`;break;case`"`:t+=`\\"`;break;case`'`:t+=`\\'`;break;case`
13
13
  `:t+=`\\n`;break;case` `:t+=`\\t`;break;case`\r`:t+=`\\r`;break;case`\b`:t+=`\\b`;break;case`\f`:t+=`\\f`;break;case`\v`:t+=`\\v`;break;case`\0`:t+=`\\0`;break;default:t+=r}}return t}function Dfe(e){if(e==null)return`null`;if(typeof e==`boolean`)return e?`true`:`false`;if(typeof e==`number`)return String(e);if(typeof e==`string`)return`'${ev(e)}'`;let{value:t,type:n}=e;if(t==null||Uh(n)&&typeof t==`string`&&t.toLowerCase()===`null`)return`null`;if(n===`expression`)return typeof t==`string`&&t.toLowerCase().trim()===`null`?`null`:`\`${t}\``;if(Uh(n)){let e=F_(t);return e===null?`\`${t}\``:e?`true`:`false`}if(Hh(n)){let e=P_(t);return e===null?`\`${t}\``:String(e)}if(Kh(n)){let e=L_(t);return e===null?`\`${t}\``:`'${ev(e)}'`}let r=I_(t);return r===null?`\`${t}\``:`'${ev(r)}'`}function Ofe(e){return(e.match(/"(?:[^"\\]|\\.)*"|[^."]+/g)||[]).map(e=>e.startsWith(`"`)&&e.endsWith(`"`)?Efe(e.slice(1,-1)):e.trim()).filter(e=>e.length>0)}function tv(e){switch(e){case Bm.Schema:return Y_.Module;case Bm.Table:case Bm.TablePartial:return Y_.Class;case Bm.Column:case Bm.TableGroupField:return Y_.Field;case Bm.Enum:return Y_.Enum;case Bm.EnumField:return Y_.EnumMember;case Bm.TableGroup:return Y_.Struct;default:return Y_.Text}}function nv(e,t){if(!e||em(e))return!1;for(let n of e.trailingTrivia){if(n.start>t)break;if(n.kind===Zp.NEWLINE&&n.end<=t)return!1}return!0}function rv(){return{suggestions:[]}}function iv(e){return{...e,suggestions:e.suggestions.map(e=>({...e,insertText:` ${e.insertText}`}))}}function av(e){return{...e,suggestions:e.suggestions.map(e=>({...e,insertText:e.quoted?e.insertText:$_(e.insertText??``),quoted:!0}))}}function ov(e,t=`, `){let n=e.suggestions.map(e=>typeof e.label==`string`?e.label:e.label.label).join(t);return n?{...e,suggestions:[{label:`* (all)`,insertText:n,insertTextRules:X_.KeepWhitespace,kind:Y_.Snippet,sortText:`00`,range:void 0},...e.suggestions]}:e}function sv(e,t){return e<t.start||e>t.end?!1:t.body?e<t.body.start||e>t.body.end:!0}function cv(e){return e.commaList.length+e.elementList.length===0}function kfe(e){let t=[];for(let[n,r]of e.symbolTable.entries()){let e=Qm(n);if(e===void 0||e.kind!==Bm.Column||!(r instanceof th||r instanceof nh))continue;let i=lv(r,e.name);i&&t.push(i)}return t}function lv(e,t){let n=Um(t),r=e instanceof nh?e.tablePartialSymbol.symbolTable.get(n)?.declaration:e.declaration;if(!(r instanceof dm))return null;let i=bh(r.callee)??null,a=bh(r.args[0])??null;return i===null||a===null?null:{name:i,type:a}}function Afe(e,t,n,r){let i=e.container.element(r);return!(i instanceof im)||!i.isKind(Ld.Records)||!(i.body instanceof fm)||!i.body||!Q_(r,i.body)||t.getLineContent(n.lineNumber).trim()!==``?null:i.parent instanceof rm?jfe(e,i):Mfe(e,i)}function jfe(e,t){if(!(t.name instanceof _m))return rv();let n=t.name.argumentList?.elementList||[],r=n.map(e=>Th(e));if(!r||r.length===0)return rv();let i=n.map((e,t)=>{let n=r[t];if(!n||!(n instanceof th||n instanceof nh))return null;let i=bh(e);return i?lv(n,i):null}).filter(e=>e!==null);return i.length===0?rv():{suggestions:[{label:`Record row snippet`,insertText:i.map((e,t)=>`\${${t+1}:${e.name} (${e.type})}`).join(`, `),insertTextRules:X_.InsertAsSnippet,kind:Y_.Snippet,range:void 0}]}}function Mfe(e,t){let n=t.parent;if(!(n instanceof im))return rv();let r=n.symbol;if(!(r instanceof eh))return rv();let i;if(t.name instanceof mm){let e=t.name.elementList,n=e.map(e=>Th(e)).filter(e=>e!==void 0);i=e.map((e,t)=>{let r=n[t];if(!r||!(r instanceof th||r instanceof nh))return null;let i=bh(e);return i===void 0?null:lv(r,i)}).filter(e=>e!==null)}else{let e=kfe(r);if(!e)return rv();i=e}return i.length===0?rv():{suggestions:[{label:`Record row snippet`,insertText:i.map((e,t)=>`\${${t+1}:${e.name} (${e.type})}`).join(`, `),insertTextRules:X_.InsertAsSnippet,kind:Y_.Snippet,range:void 0}]}}var Nfe=class{constructor(e,t=[]){this.compiler=e,this.triggerCharacters=t}provideCompletionItems(e,t){let n=J_(e,t),r=Afe(this.compiler,e,t,n);if(r!==null)return r;let i=this.compiler.token.flatStream(),{token:a,index:o}=this.compiler.container.token(n),s=o===void 0?i[0]:i[o+1];if([...a?.trailingTrivia||[],...a?.leadingTrivia||[],...s?.leadingTrivia||[]].find(e=>Eoe(e)&&Q_(n,e)))return rv();if(o===void 0)return Ufe();if([Zp.STRING_LITERAL,Zp.QUOTED_STRING].includes(a.kind)&&Q_(n,a))return rv();let c=this.compiler.container.element(n);if(this.compiler.container.scopeKind(n)===pv.TOPLEVEL||c instanceof im&&c.type&&c.type.start<=n&&c.type.end>=n)return Ufe();let l=[...this.compiler.container.stack(n)].reverse();for(let e of l)if(e instanceof sm)switch(e.op?.value){case`>`:case`<`:case`<>`:case`-`:return Ffe(this.compiler,n,e);case`~`:return Pfe(this.compiler,n);default:}else if(e instanceof cm)switch(e.op?.value){case`>`:case`<`:case`<>`:case`-`:return Ffe(this.compiler,n,e);case`.`:return Vfe(this.compiler,n,e);default:}else if(e instanceof om)return Rfe(this.compiler,n,e);else if(e instanceof pm)return Rfe(this.compiler,n,e);else if(e instanceof mm)return Ife(this.compiler,n,e);else if(e instanceof hm)return Lfe(this.compiler,n);else if(e instanceof _m)return Yfe(this.compiler,n,e);else if(e instanceof dm)return Hfe(this.compiler,n,e);else if(e instanceof im){if(sv(n,e))return Jfe(this.compiler,n,e);if(e.bodyColon&&n>=e.bodyColon.end||e.body&&Q_(n,e.body))return Hfe(this.compiler,n,void 0)}return rv()}};function Pfe(e,t){return dv(e,t,e.parse.ast(),[Bm.TablePartial])}function Ffe(e,t,n){let r=e.container.scopeKind(t);if([pv.REF,pv.TABLE,pv.TABLEPARTIAL].includes(r)){let r=dv(e,t,e.container.element(t),[Bm.Table,Bm.Schema,Bm.Column]);return nv(n.op,t)?iv(r):r}return rv()}function uv(e,t,n){return av({suggestions:e.symbol.members(t).filter(({kind:e})=>n.includes(e)).map(({name:e,kind:t})=>({label:e,insertText:e,insertTextRules:X_.KeepWhitespace,kind:tv(t),sortText:tv(t).toString().padStart(2,`0`),range:void 0}))})}function dv(e,t,n,r){if(n===void 0)return rv();let i=n,a={suggestions:[]};for(;i;){if(i?.symbol?.symbolTable){let{symbol:t}=i;a.suggestions.push(...uv(e,t,r).suggestions)}i=i instanceof im?i.parent:void 0}return av(a)}function Ife(e,t,n){let r=e.container.scopeKind(t),i=e.container.element(t),a=[...e.container.stack(t)];for(let r of a)if(r instanceof _m&&r.argumentList===n)return Yfe(e,t,r);if(i instanceof im&&i.isKind(Ld.Records)&&!(i.name instanceof _m)&&sv(t,i)){let t=i.parent?.symbol||i.name?.referee;if(t){let r=uv(e,t,[Bm.Column]);return cv(n)?ov(r):r}}switch(r){case pv.INDEXES:return tpe(e,t);case pv.REF:for(;a.length>0;){let n=a.pop();if(n instanceof cm&&n.op?.value===`.`)return Vfe(e,t,n)}return qfe(e,t);default:break}return rv()}function Lfe(e,t){return e.container.scopeKind(t)===pv.RECORDS?dv(e,t,e.container.element(t),[Bm.Schema,Bm.Enum,Bm.EnumField]):rv()}function Rfe(e,t,n){let{token:r}=e.container.token(t);if([Zp.COMMA,Zp.LBRACKET].includes(r?.kind)){let n=zfe(e,t);return r?.kind===Zp.COMMA&&nv(r,t)?iv(n):n}if(n.name&&n.name.start<=t&&n.name.end>=t)return zfe(e,t);if(n.name instanceof am){let i=Bfe(e,t,Im(n.name)??``);return r?.kind===Zp.COLON&&nv(r,t)?iv(i):i}return rv()}function zfe(e,t){let n=e.container.element(t);if(n instanceof rm)return rv();let r=e.container.scopeKind(t);if(n.body&&!Q_(t,n.body)){let e;switch(r){case pv.TABLE:case pv.TABLEPARTIAL:e=[Rd.HeaderColor,Rd.Note];break;case pv.TABLEGROUP:e=[Rd.Color,Rd.Note];break;default:e=[]}return{suggestions:e.map(e=>({label:e,insertText:`${e}: `,kind:Y_.Field,insertTextRules:X_.KeepWhitespace,range:void 0}))}}switch(r){case pv.TABLE:case pv.TABLEPARTIAL:return{suggestions:[...[Rd.PK,Rd.PrimaryKey,Rd.Null,Rd.NotNull,Rd.Increment,Rd.Unique].map(e=>({label:e,insertText:e,kind:Y_.Property,insertTextRules:X_.KeepWhitespace,range:void 0})),...[Rd.Ref,Rd.Default,Rd.Note,Rd.Check].map(e=>({label:e,insertText:`${e}: `,kind:Y_.Property,insertTextRules:X_.KeepWhitespace,range:void 0}))]};case pv.ENUM:return{suggestions:[...[Rd.Note].map(e=>({label:e,insertText:`${e}: `,kind:Y_.Property,insertTextRules:X_.KeepWhitespace,range:void 0}))]};case pv.INDEXES:return{suggestions:[...[Rd.Unique,Rd.PK].map(e=>({label:e,insertText:e,insertTextRules:X_.KeepWhitespace,kind:Y_.Property,range:void 0})),...[Rd.Note,Rd.Name,Rd.Type].map(e=>({label:e,insertText:`${e}: `,kind:Y_.Property,insertTextRules:X_.KeepWhitespace,range:void 0}))]};case pv.REF:return{suggestions:[Rd.Update,Rd.Delete,Rd.Color].map(e=>({label:e,insertText:`${e}: `,kind:Y_.Property,insertTextRules:X_.KeepWhitespace,range:void 0}))};case pv.CHECKS:return{suggestions:[Rd.Name].map(e=>({label:e,insertText:`${e}: `,kind:Y_.Property,insertTextRules:X_.KeepWhitespace,range:void 0}))};default:break}return rv()}function Bfe(e,t,n){switch(n?.toLowerCase()){case`update`:case`delete`:return{suggestions:[`cascade`,`set default`,`set null`,`restrict`].map(e=>({label:e,insertText:e,kind:Y_.Value,insertTextRules:X_.KeepWhitespace,range:void 0}))};case`type`:return{suggestions:[`btree`,`hash`].map(e=>({label:e,insertText:`${e}`,kind:Y_.Value,insertTextRules:X_.KeepWhitespace,range:void 0}))};case`default`:return dv(e,t,e.container.element(t),[Bm.Schema,Bm.Enum]);default:break}return rv()}function Vfe(e,t,n){let r=_h(n)??[];if(r.pop(),r.some(e=>!jm(e)))return rv();let i=r.map(e=>bh(e));return av({suggestions:e.symbol.ofName(i,e.container.element(t)).flatMap(({symbol:t})=>e.symbol.members(t)).map(({kind:e,name:t})=>({label:t,insertText:t,kind:tv(e),range:void 0}))})}function Hfe(e,t,n){switch(e.container.scopeKind(t)){case pv.TABLE:case pv.TABLEPARTIAL:return Gfe(e,t,n);case pv.PROJECT:return Kfe(e,t,n);case pv.INDEXES:return $fe(e,t);case pv.ENUM:return Wfe(e,t,n);case pv.REF:{let n=qfe(e,t);return e.container.token(t).token?.kind===Zp.COLON&&nv(e.container.token(t).token,t)?iv(n):n}case pv.TABLEGROUP:return Xfe(e);case pv.DIAGRAMVIEW:return Zfe();case pv.CUSTOM:{let n=e.container.element(t);return n instanceof im&&n.parent instanceof im&&n.parent.isKind(Ld.DiagramView)?Qfe(e,t):rv()}default:return rv()}}function Ufe(){return{suggestions:[`Table`,`TableGroup`,`Enum`,`Project`,`Ref`,`TablePartial`,`Records`,`DiagramView`].map(e=>({label:e,insertText:e,insertTextRules:X_.KeepWhitespace,kind:Y_.Keyword,range:void 0}))}}function Wfe(e,t,n){return n?.callee&&fv(t,n)===1?dv(e,t,e.container.element(t),[Bm.Schema,Bm.Table,Bm.Column]):rv()}function Gfe(e,t,n){let r=[`Note`,`indexes`,`checks`,`Records`];if(!n?.callee)return{suggestions:r.map(e=>({label:e,insertText:e,insertTextRules:X_.KeepWhitespace,kind:Y_.Keyword,range:void 0}))};let i=fv(t,n);return i===0?{suggestions:r.map(e=>({label:e,insertText:e,insertTextRules:X_.KeepWhitespace,kind:Y_.Keyword,range:void 0}))}:i===1?epe(e,t):rv()}function Kfe(e,t,n){return!n?.callee||fv(t,n)===0?{suggestions:[`Table`,`TableGroup`,`Enum`,`Note`,`Ref`,`TablePartial`].map(e=>({label:e,insertText:e,insertTextRules:X_.KeepWhitespace,kind:Y_.Keyword,range:void 0}))}:rv()}function qfe(e,t){return dv(e,t,e.container.element(t),[Bm.Schema,Bm.Table,Bm.Column])}function Jfe(e,t,n){return n.isKind(Ld.Records)?dv(e,t,n.parent,[Bm.Schema,Bm.Table]):rv()}function Yfe(e,t,n){let r=e.container.element(t),i=n.callee&&Q_(t,n.callee),a=n.argumentList&&Q_(t,n.argumentList);if(r instanceof im&&r.isKind(Ld.Records)&&sv(t,r)){if(i)return dv(e,t,r.parent,[Bm.Schema,Bm.Table]);if(!a)return rv();let o=n.callee;if(!o)return rv();let s=_h(o)??[o],c=s[s.length-1]?.referee;if(!c)return rv();let l=uv(e,c,[Bm.Column]),{argumentList:u}=n;return!u||!cv(u)?l:ov(l)}let o=[...e.container.stack(t)];for(let r of o){if(!a||!(r instanceof dm)||r.callee!==n||sh(Ld,bh(n.callee)??``)!==Ld.Records)continue;let i=e.container.element(t).symbol;if(!i)return rv();let o=uv(e,i,[Bm.Column]),{argumentList:s}=n;return!s||!cv(s)?o:ov(o)}return rv()}function Xfe(e){return{suggestions:[...av({suggestions:[...e.parse.publicSymbolTable().entries()].flatMap(([e])=>{let t=Qm(e);if(t===void 0)return[];let{kind:n,name:r}=t;return n!==Bm.Table&&n!==Bm.Schema?[]:{label:r,insertText:r,insertTextRules:X_.KeepWhitespace,kind:tv(n),range:void 0}})}).suggestions,...[`Note`].map(e=>({label:e,insertText:e,insertTextRules:X_.KeepWhitespace,kind:Y_.Keyword,range:void 0}))]}}function Zfe(){return{suggestions:[...[`Tables`,`TableGroups`,`Notes`,`Schemas`].map(e=>({label:e,insertText:e,insertTextRules:X_.KeepWhitespace,kind:Y_.Keyword,range:void 0})),{label:`*`,insertText:`*`,insertTextRules:X_.KeepWhitespace,kind:Y_.Keyword,range:void 0}]}}function Qfe(e,t){let n=e.container.element(t);if(!(n instanceof im))return rv();let r=n.type?.value.toLowerCase(),i={label:`*`,insertText:`*`,insertTextRules:X_.KeepWhitespace,kind:Y_.Keyword,range:void 0};switch(r){case`tables`:return{suggestions:[i,...dv(e,t,e.parse.ast(),[Bm.Table,Bm.Schema]).suggestions]};case`tablegroups`:return{suggestions:[i,...dv(e,t,e.parse.ast(),[Bm.TableGroup]).suggestions]};case`schemas`:return{suggestions:[i,{label:Fd,insertText:Fd,insertTextRules:X_.KeepWhitespace,kind:Y_.Module,range:void 0},...dv(e,t,e.parse.ast(),[Bm.Schema]).suggestions]};case`notes`:return{suggestions:[i,...dv(e,t,e.parse.ast(),[Bm.StickyNote]).suggestions]};default:return rv()}}function $fe(e,t){return tpe(e,t)}function epe(e,t){return{suggestions:[...`integer.int.tinyint.smallint.mediumint.bigint.bit.bool.binary.varbinary.logical.char.nchar.varchar.varchar2.nvarchar.nvarchar2.binary_float.binary_double.float.double.decimal.dec.real.money.smallmoney.enum.tinyblob.tinytext.blob.text.mediumblob.mediumtext.longblob.longtext.ntext.set.inet6.uuid.image.date.time.datetime.datetime2.timestamp.year.smalldatetime.datetimeoffset.XML.sql_variant.uniqueidentifier.CURSOR.BFILE.CLOB.NCLOB.RAW`.split(`.`).map(e=>({label:e,insertText:e,insertTextRules:X_.KeepWhitespace,kind:Y_.TypeParameter,sortText:Y_.TypeParameter.toString().padStart(2,`0`),range:void 0})),...dv(e,t,e.container.element(t),[Bm.Enum,Bm.Schema]).suggestions]}}function tpe(e,t){let n=e.container.element(t)?.parent;if(!(n?.symbol instanceof eh))return rv();let{symbolTable:r}=n.symbol;return av({suggestions:[...r.entries()].flatMap(([e])=>{let t=Qm(e);if(t===void 0)return[];let{name:n}=t;return{label:n,insertText:n,insertTextRules:X_.KeepWhitespace,kind:tv(Bm.Column),range:void 0}})})}function fv(e,t){if(!t.callee)return-1;let n=[t.callee,...t.args],r=n.findIndex(t=>e<=t.end);return r===-1?n.length:r}var npe={tokenPostfix:`.dbml`,brackets:[{open:`[`,close:`]`,token:`delimiter.square`},{open:`(`,close:`)`,token:`delimiter.parenthesis`},{open:`{`,close:`}`,token:`delimiter.curly`}],decls:[`project`,`tablegroup`,`table`,`enum`,`ref`,`note`,`tablepartial`,`records`,`checks`,`diagramview`],dataTypes:`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(`.`),settings:[`indexes`,`ref`,`note`,`headercolor`,`pk`,`null`,`increment`,`unique`,`default`,`note`,`primary`,`key`,`name`,`as`,`color`,`check`,`tables`,`tablegroups`,`notes`,`schemas`],symbols:/[=><!~?:&|+\-/^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,newline:/[\r\n]/,digits:/\d+(_+\d+)*/,idtf:/[\p{L}0-9_]+/u,ignoreCase:!0,unicode:!0,tokenizer:{root:[[/[{}[\]()]/,`@bracket`],[/[,.:]/,`delimiter`],{include:`@numbers`},{include:`common`}],common:[{include:`@whitespace`},[/[<>-]/,`operators`],[/\*/,`keyword.wildcard`],[/("[^"\\]*(?:\\.[^"\\]*)*")(\s+)(@idtf(?:\.@idtf*)*)/,[`string`,``,`keyword`]],[/"([^"\\]|\\.)*$/,``],[/'([^'\\]|\\.)*$/,``],[/"/,`string`,`@string_double`],[/'/,`string`,`@string_single`],[/`/,`string`,`@string_backtick`],[/(@idtf)(\s+)(@idtf(?:\.@idtf)*)/,{cases:{"$1@decls":[`keyword`,``,`identifier`],"$1==not":{cases:{"$3==null":[`keyword`,``,`keyword`],"@default":[`identifier`,``,`identifier`]}},"@default":[`identifier`,``,`keyword`]}}],[/@idtf/,{cases:{"@dataTypes":`keyword`,"@decls":`keyword`,"@settings":`keyword`,"@default":`identifier`}}]],numbers:[[/0[xX][0-9a-fA-F]*/,`number`],[/[$][+-]*\d*(\.\d*)?/,`number`],[/((\d+(\.\d*)?)|(\.\d+))([eE][-+]?\d+)?/,`number`],[/#([0-9A-F]{3}){1,2}/,`number.hex`]],string_double:[[/[^\\"]+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/"/,`string`,`@pop`]],string_single:[[/[^\\']+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/'/,`string`,`@pop`]],string_backtick:[[/[^\\`$]+/,`string`],[/@escapes/,`string.escape`],[/`/,`string`,`@pop`]],endTripleQuotesString:[[/\\'/,`string`],[/(.*[^\\])?(\\\\)*'''/,`string`,`@popall`],[/.*$/,`string`]],whitespace:[[/[ \t\r\n]+/,``],[/\/\*/,`comment`,`@comment`],[/\/\/.*$/,`comment`],[/'''(.*[^\\])?(\\\\)*'''/,`string`],[/'''.*$/,`string`,`@endTripleQuotesString`]],comment:[[/[^/*]+/,`comment`],[/\*\//,`comment`,`@pop`],[/[/*]/,`comment`]]}},rpe=md({CompletionItemInsertTextRule:()=>X_,CompletionItemKind:()=>Y_,DBMLCompletionItemProvider:()=>Nfe,DBMLDefinitionProvider:()=>Sfe,DBMLDiagnosticsProvider:()=>Cfe,DBMLReferencesProvider:()=>wfe,MarkerSeverity:()=>Z_,dbmlMonarchTokensProvider:()=>npe},1);function ipe(e){let t=this.token.flatStream(),{index:n,token:r}=this.container.token(e),i=n===void 0?-1:Xae(t,e=>!e.isInvalid,n);if(i===-1)return[this.parse.ast()];let a=t[i].start,o=this.parse.ast(),s=[o];for(;;){let e=joe(o).find(e=>Q_(a,e));if(e===void 0||e instanceof Qp)break;s.push(e),o=e}if(r?.kind===Zp.COLON)return s;for(;s.length>0;){let t=!1,n=Gp(s);if(n instanceof dm){let r=this.parse.source();for(let i=n.end;i<e;i+=1)r[i]===`
14
- `&&(s.pop(),t=!0)}else n instanceof sm||n instanceof cm?this.container.token(e).token!==n.op&&(s.pop(),t=!0):n instanceof pm?n.listCloseBracket&&n.end<=e&&(s.pop(),t=!0):n instanceof mm?n.tupleCloseParen&&n.end<=e&&(s.pop(),t=!0):n instanceof hm?n.end<=e&&(s.pop(),t=!0):n instanceof fm?n.blockCloseBrace&&n.end<=e&&(s.pop(),t=!0):n instanceof am||n.end<e&&(s.pop(),t=!0);if(t){let t=Gp(s);t instanceof im&&t.end<=e&&s.pop()}if(!t)break}return s}function ape(e){let t=this.token.flatStream().findIndex(t=>t.start>=e);return t===void 0||t<=0?{token:void 0,index:void 0}:{token:this.token.flatStream()[t-1],index:t-1}}function ope(e){let t=this.container.stack(e);for(let e=t.length-1;e>=0;--e)if(t[e]instanceof im)return t[e];return this.parse.ast()}function spe(e){return this.container.element(e)?.symbol?.symbolTable}var pv=function(e){return e[e.TABLE=0]=`TABLE`,e[e.ENUM=1]=`ENUM`,e[e.TABLEGROUP=2]=`TABLEGROUP`,e[e.INDEXES=3]=`INDEXES`,e[e.NOTE=4]=`NOTE`,e[e.REF=5]=`REF`,e[e.PROJECT=6]=`PROJECT`,e[e.CUSTOM=7]=`CUSTOM`,e[e.TOPLEVEL=8]=`TOPLEVEL`,e[e.TABLEPARTIAL=9]=`TABLEPARTIAL`,e[e.CHECKS=10]=`CHECKS`,e[e.RECORDS=11]=`RECORDS`,e[e.DIAGRAMVIEW=12]=`DIAGRAMVIEW`,e}({});function cpe(e){let t=this.container.element(e);if(t instanceof rm)return pv.TOPLEVEL;switch(t.type?.value.toLowerCase()){case`table`:return pv.TABLE;case`enum`:return pv.ENUM;case`ref`:return pv.REF;case`tablegroup`:return pv.TABLEGROUP;case`indexes`:return pv.INDEXES;case`note`:return pv.NOTE;case`project`:return pv.PROJECT;case`tablepartial`:return pv.TABLEPARTIAL;case`checks`:return pv.CHECKS;case`records`:return pv.RECORDS;case`diagramview`:return pv.DIAGRAMVIEW;default:return pv.CUSTOM}}function lpe(){return this.parse._().getValue().ast}function upe(){return this.parse._().getErrors()}function dpe(){return this.parse._().getWarnings()}function fpe(){return this.parse._().getValue().tokens}function ppe(){return this.parse._().getValue().rawDb}function mpe(){return this.parse._().getValue().ast.symbol.symbolTable}function hpe(e){return e.symbolTable?[...e.symbolTable.entries()].map(([e,t])=>({...Qm(e),symbol:t})):[]}function gpe(e,t){if(e.length===0)return[];let n=[];for(let r=t;r;r=r instanceof im?r.parent:void 0){if(!r.symbol?.symbolTable)continue;let{symbolTable:t}=r.symbol,i=[t],a=[];for(let t of e)a=i.flatMap(e=>Koe(t).flatMap(t=>{let n=e.get(t),r=Qm(t);return!n||!r?[]:{...r,symbol:n}})),i=a.flatMap(e=>e.symbol.symbolTable?e.symbol.symbolTable:[]);n.push(...a)}return n}function _pe(e,t){return`${e.join(`.`)}@${t.id}`}function vpe(){return this.parse.tokens().flatMap(e=>[...e.leadingInvalid,e,...e.trailingInvalid])}function ype(){return this.parse.tokens().filter(Om)}function bpe(e,t,n=!1){let r=n?t:[...t].sort((e,t)=>t.start-e.start),i=e;for(let{start:e,end:t,newText:n}of r)i=i.substring(0,e)+n+i.substring(t);return i}function xpe(e){if(typeof e!=`string`)return{schema:e.schema??`public`,table:e.table};let t=Ofe(e);if(t.length===0)return{schema:Fd,table:``};if(t.length===1)return{schema:Fd,table:t[0]};if(t.length===2)return{schema:t[0],table:t[1]};let n=t[t.length-1];return{schema:t.slice(0,-1).join(`.`),table:n}}function Spe(e,t,n){let r=Hm(n);if(t===`public`){let t=e.get(r);return t instanceof eh?t:null}let i=Vm(t),a=e.get(i);if(!a||!a.symbolTable)return null;let o=a.symbolTable.get(r);return o instanceof eh?o:null}function Cpe(e){return e.startsWith(`"`)&&e.endsWith(`"`)&&e.length>=2?e.slice(1,-1):e}function wpe(e){return e?e.split(``).every(e=>ih(e)||ah(e))&&!ah(e[0]):!1}function Tpe(e,t){if(!e.declaration)return!1;let n=e.declaration;if(!n.name)return!1;let r=n.name;return t.substring(r.start,r.end).includes(`"`)}function Epe(e,t,n){let r=!wpe(t),i=!wpe(e),a=n||r,o=n||i;return{schema:e,table:t,formattedSchema:o?`"${e}"`:e,formattedTable:a?`"${t}"`:t,shouldQuoteSchema:o,shouldQuoteTable:a}}function Dpe(e,t,n,r,i){let a=Hm(i),o;if(r===`public`)o=e.get(a);else{let t=Vm(r),n=e.get(t);if(!n||!n.symbolTable)return!1;o=n.symbolTable.get(a)}return!(!o||t===r&&n===i)}function Ope(e,t,n){let r=e.start-1;for(;r>=0&&/\s/.test(n[r]);)r--;if(r<0||n[r]!==`.`)return null;for(r--;r>=0&&/\s/.test(n[r]);)r--;if(r<0)return null;let i,a;if(n[r]===`"`){for(a=r+1,r--;r>=0&&n[r]!==`"`;)r--;if(r<0)return null;i=r}else{for(a=r+1;r>=0&&/[a-zA-Z0-9_]/.test(n[r]);)r--;i=r+1}return Cpe(n.substring(i,a))===t?{start:i,end:e.end}:null}function kpe(e,t,n,r){let i=[],a=new Set;for(let o of e){let e=Ope(o,t,r)??{start:o.start,end:o.end},s=`${e.start}-${e.end}`;if(a.has(s))continue;a.add(s);let c=n.schema===`public`?n.formattedTable:`${n.formattedSchema}.${n.formattedTable}`;i.push({start:e.start,end:e.end,newText:c})}return i}function Ape(e,t){let n=this.parse.source(),r=this.parse.publicSymbolTable(),i=xpe(e),a=xpe(t),o=i.schema,s=i.table,c=a.schema,l=a.table,u=Spe(r,o,s);if(!u||Dpe(r,o,s,c,l))return n;let d=Epe(c,l,Tpe(u,n)),f=[];if(u.declaration){let e=u.declaration;e.name&&f.push(e.name)}for(let e of u.references)n.substring(e.start,e.end).replace(/"/g,``)===s&&f.push(e);return bpe(n,kpe(f,o,d,n))}function jpe(e){let t=[],n=new ffe(e,Id).lex();if(n.getErrors().length>0)return t;let r=new hfe(e,n.getValue(),new Doe,Id).parse();if(r.getErrors().length>0)return t;let i=r.getValue().ast;for(let e of i.body)if(e.isKind(Ld.DiagramView)){let n=e.name?vh(e.name)??[]:[],r=n.length>0?n[n.length-1]:``;t.push({name:r,startIndex:e.start,endIndex:e.end})}return t}function Mpe(e,t){let n=t.map(e=>e.schemaName===`public`?e.name:`${e.schemaName}.${e.name}`);e.push(` Tables {`),n.forEach(t=>e.push(` ${t}`)),e.push(` }`)}function Npe(e,t){e.push(` TableGroups {`),t.forEach(t=>e.push(` ${t.name}`)),e.push(` }`)}function Ppe(e,t){e.push(` Schemas {`),t.forEach(t=>e.push(` ${t.name}`)),e.push(` }`)}function mv(e,t){e.push(` Notes {`),t.forEach(t=>e.push(` ${t.name}`)),e.push(` }`)}function Fpe(e,t){let n=`DiagramView ${$_(e)} {`;if(!t)return`${n}\n}`;let{tables:r,tableGroups:i,schemas:a,stickyNotes:o}=t,s=r===null,c=i===null,l=a===null;if(s&&c&&l&&o===null)return`${n}\n}`;if(s||c||l){let e=!s&&r.length>0,t=!c&&i.length>0,u=!l&&a.length>0;if(!(e||t||u)){if(o&&o.length>0){let e=[n];return mv(e,o),e.push(`}`),e.join(`
14
+ `&&(s.pop(),t=!0)}else n instanceof sm||n instanceof cm?this.container.token(e).token!==n.op&&(s.pop(),t=!0):n instanceof pm?n.listCloseBracket&&n.end<=e&&(s.pop(),t=!0):n instanceof mm?n.tupleCloseParen&&n.end<=e&&(s.pop(),t=!0):n instanceof hm?n.end<=e&&(s.pop(),t=!0):n instanceof fm?n.blockCloseBrace&&n.end<=e&&(s.pop(),t=!0):n instanceof am||n.end<e&&(s.pop(),t=!0);if(t){let t=Gp(s);t instanceof im&&t.end<=e&&s.pop()}if(!t)break}return s}function ape(e){let t=this.token.flatStream().findIndex(t=>t.start>=e);return t===void 0||t<=0?{token:void 0,index:void 0}:{token:this.token.flatStream()[t-1],index:t-1}}function ope(e){let t=this.container.stack(e);for(let e=t.length-1;e>=0;--e)if(t[e]instanceof im)return t[e];return this.parse.ast()}function spe(e){return this.container.element(e)?.symbol?.symbolTable}var pv=function(e){return e[e.TABLE=0]=`TABLE`,e[e.ENUM=1]=`ENUM`,e[e.TABLEGROUP=2]=`TABLEGROUP`,e[e.INDEXES=3]=`INDEXES`,e[e.NOTE=4]=`NOTE`,e[e.REF=5]=`REF`,e[e.PROJECT=6]=`PROJECT`,e[e.CUSTOM=7]=`CUSTOM`,e[e.TOPLEVEL=8]=`TOPLEVEL`,e[e.TABLEPARTIAL=9]=`TABLEPARTIAL`,e[e.CHECKS=10]=`CHECKS`,e[e.RECORDS=11]=`RECORDS`,e[e.DIAGRAMVIEW=12]=`DIAGRAMVIEW`,e}({});function cpe(e){let t=this.container.element(e);if(t instanceof rm)return pv.TOPLEVEL;switch(t.type?.value.toLowerCase()){case`table`:return pv.TABLE;case`enum`:return pv.ENUM;case`ref`:return pv.REF;case`tablegroup`:return pv.TABLEGROUP;case`indexes`:return pv.INDEXES;case`note`:return pv.NOTE;case`project`:return pv.PROJECT;case`tablepartial`:return pv.TABLEPARTIAL;case`checks`:return pv.CHECKS;case`records`:return pv.RECORDS;case`diagramview`:return pv.DIAGRAMVIEW;default:return pv.CUSTOM}}function lpe(){return this.parse._().getValue().ast}function upe(){return this.parse._().getErrors()}function dpe(){return this.parse._().getWarnings()}function fpe(){return this.parse._().getValue().tokens}function ppe(){return this.parse._().getValue().rawDb}function mpe(){return this.parse._().getValue().ast.symbol.symbolTable}function hpe(e){return e.symbolTable?[...e.symbolTable.entries()].map(([e,t])=>({...Qm(e),symbol:t})):[]}function gpe(e,t){if(e.length===0)return[];let n=[];for(let r=t;r;r=r instanceof im?r.parent:void 0){if(!r.symbol?.symbolTable)continue;let{symbolTable:t}=r.symbol,i=[t],a=[];for(let t of e)a=i.flatMap(e=>Koe(t).flatMap(t=>{let n=e.get(t),r=Qm(t);return!n||!r?[]:{...r,symbol:n}})),i=a.flatMap(e=>e.symbol.symbolTable?e.symbol.symbolTable:[]);n.push(...a)}return n}function _pe(e,t){return`${e.join(`.`)}@${t.id}`}function vpe(){return this.parse.tokens().flatMap(e=>[...e.leadingInvalid,e,...e.trailingInvalid])}function ype(){return this.parse.tokens().filter(Om)}function bpe(e,t,n=!1){let r=n?t:[...t].sort((e,t)=>t.start-e.start),i=e;for(let{start:e,end:t,newText:n}of r)i=i.substring(0,e)+n+i.substring(t);return i}function xpe(e){if(typeof e!=`string`)return{schema:e.schema??`public`,table:e.table};let t=Ofe(e);if(t.length===0)return{schema:Fd,table:``};if(t.length===1)return{schema:Fd,table:t[0]};if(t.length===2)return{schema:t[0],table:t[1]};let n=t[t.length-1];return{schema:t.slice(0,-1).join(`.`),table:n}}function Spe(e,t,n){let r=Hm(n);if(t===`public`){let t=e.get(r);return t instanceof eh?t:null}let i=Vm(t),a=e.get(i);if(!a||!a.symbolTable)return null;let o=a.symbolTable.get(r);return o instanceof eh?o:null}function Cpe(e){return e.startsWith(`"`)&&e.endsWith(`"`)&&e.length>=2?e.slice(1,-1):e}function wpe(e){return e?e.split(``).every(e=>ih(e)||ah(e))&&!ah(e[0]):!1}function Tpe(e,t){if(!e.declaration)return!1;let n=e.declaration;if(!n.name)return!1;let r=n.name;return t.substring(r.start,r.end).includes(`"`)}function Epe(e,t,n){let r=!wpe(t),i=!wpe(e),a=n||r,o=n||i;return{schema:e,table:t,formattedSchema:o?`"${e}"`:e,formattedTable:a?`"${t}"`:t,shouldQuoteSchema:o,shouldQuoteTable:a}}function Dpe(e,t,n,r,i){let a=Hm(i),o;if(r===`public`)o=e.get(a);else{let t=Vm(r),n=e.get(t);if(!n||!n.symbolTable)return!1;o=n.symbolTable.get(a)}return!(!o||t===r&&n===i)}function Ope(e,t,n){let r=e.start-1;for(;r>=0&&/\s/.test(n[r]);)r--;if(r<0||n[r]!==`.`)return null;for(r--;r>=0&&/\s/.test(n[r]);)r--;if(r<0)return null;let i,a;if(n[r]===`"`){for(a=r+1,r--;r>=0&&n[r]!==`"`;)r--;if(r<0)return null;i=r}else{for(a=r+1;r>=0&&/[a-zA-Z0-9_]/.test(n[r]);)r--;i=r+1}return Cpe(n.substring(i,a))===t?{start:i,end:e.end}:null}function kpe(e,t,n,r){let i=[],a=new Set;for(let o of e){let e=Ope(o,t,r)??{start:o.start,end:o.end},s=`${e.start}-${e.end}`;if(a.has(s))continue;a.add(s);let c=n.schema===`public`?n.formattedTable:`${n.formattedSchema}.${n.formattedTable}`;i.push({start:e.start,end:e.end,newText:c})}return i}function Ape(e,t){let n=this.parse.source(),r=this.parse.publicSymbolTable(),i=xpe(e),a=xpe(t),o=i.schema,s=i.table,c=a.schema,l=a.table,u=Spe(r,o,s);if(!u||Dpe(r,o,s,c,l))return n;let d=Epe(c,l,Tpe(u,n)),f=[];if(u.declaration){let e=u.declaration;e.name&&f.push(e.name)}for(let e of u.references)n.substring(e.start,e.end).replace(/"/g,``)===s&&f.push(e);return bpe(n,kpe(f,o,d,n))}function jpe(e){let t=[],n=new ffe(e,Id).lex();if(n.getErrors().length>0)return t;let r=new hfe(e,n.getValue(),new Doe,Id).parse();if(r.getErrors().length>0)return t;let i=r.getValue().ast;for(let e of i.body)if(e.isKind(Ld.DiagramView)){let n=e.name?vh(e.name)??[]:[],r=n.length>0?n[n.length-1]:``;t.push({name:r,startIndex:e.start,endIndex:e.end})}return t}function Mpe(e,t){let n=t.map(e=>{let t=$_(e.name);return e.schemaName===`public`?t:`${$_(e.schemaName)}.${t}`});e.push(` Tables {`),n.forEach(t=>e.push(` ${t}`)),e.push(` }`)}function Npe(e,t){e.push(` TableGroups {`),t.forEach(t=>e.push(` ${$_(t.name)}`)),e.push(` }`)}function Ppe(e,t){e.push(` Schemas {`),t.forEach(t=>e.push(` ${$_(t.name)}`)),e.push(` }`)}function mv(e,t){e.push(` Notes {`),t.forEach(t=>e.push(` ${$_(t.name)}`)),e.push(` }`)}function Fpe(e,t){let n=`DiagramView ${$_(e)} {`;if(!t)return`${n}\n}`;let{tables:r,tableGroups:i,schemas:a,stickyNotes:o}=t,s=r===null,c=i===null,l=a===null;if(s&&c&&l&&o===null)return`${n}\n}`;if(s||c||l){let e=!s&&r.length>0,t=!c&&i.length>0,u=!l&&a.length>0;if(!(e||t||u)){if(o&&o.length>0){let e=[n];return mv(e,o),e.push(`}`),e.join(`
15
15
  `)}return`${n}\n Notes { * }\n}`}let d=[n];return e&&Mpe(d,r),t&&Npe(d,i),u&&Ppe(d,a),o&&o.length>0&&mv(d,o),d.push(`}`),d.join(`
16
16
  `)}let u=r,d=i,f=a,p=u.length===0&&d.length===0&&f.length===0,m=o!=null&&o.length>0;if(p){if(m){let e=[n,` Tables { * }`];return mv(e,o),e.push(`}`),e.join(`
17
17
  `)}return`${n}\n *\n}`}let h=[n];return u.length>0&&Mpe(h,u),d.length>0&&Npe(h,d),f.length>0&&Ppe(h,f),m&&mv(h,o),h.push(`}`),h.join(`
@@ -145,4 +145,4 @@ function print() { __p += __j.call(arguments, '') }
145
145
  `,!1),mt=`
146
146
  `,ht=Ot(`
147
147
  `,!1),gt=jt(`whitespace`),_t=/^[ \t\r\n\r]/,vt=kt([` `,` `,`\r`,`
148
- `,`\r`],!1,!1),yt=` `,bt=Ot(` `,!1),x=0,xt=0,St=[{line:1,column:1}],Ct=0,wt=[],Tt=0,Et;if(`startRule`in t){if(!(t.startRule in i))throw Error(`Can't start parsing from rule "`+t.startRule+`".`);a=i[t.startRule]}function Dt(e,t){throw t=t===void 0?Nt(xt,x):t,Ft(e,t)}function Ot(e,t){return{type:`literal`,text:e,ignoreCase:t}}function kt(e,t,n){return{type:`class`,parts:e,inverted:t,ignoreCase:n}}function At(){return{type:`end`}}function jt(e){return{type:`other`,description:e}}function Mt(t){var n=St[t],r;if(n)return n;for(r=t-1;!St[r];)r--;for(n=St[r],n={line:n.line,column:n.column};r<t;)e.charCodeAt(r)===10?(n.line++,n.column=1):n.column++,r++;return St[t]=n,n}function Nt(e,t){var n=Mt(e),r=Mt(t);return{start:{offset:e,line:n.line,column:n.column},end:{offset:t,line:r.line,column:r.column}}}function Pt(e){x<Ct||(x>Ct&&(Ct=x,wt=[]),wt.push(e))}function Ft(e,t){return new r(e,null,null,t)}function It(e,t,n){return new r(r.buildMessage(e,t),e,t,n)}function Lt(){for(var e=x,t=[],r=Rt();r!==n;)t.push(r),r=Rt();return t!==n&&(xt=e,t=o()),e=t,e}function Rt(){for(var e=x,t=[],r=On();r!==n;)t.push(r),r=On();return t===n?(x=e,e=n):(r=zt(),r===n?(x=e,e=n):(t=[t,r],e=t)),e===n&&(e=yn(),e===n&&(e=vn(),e===n&&(e=wn()))),e}function zt(){var e=x,t=Ut();return t!==n&&(xt=e,t=s(t)),e=t,e===n&&(e=x,t=Vt(),t!==n&&(xt=e,t=c(t)),e=t,e===n&&(e=Bt(),e===n&&(e=un()))),e}function Bt(){for(var t=x,r=[],i=kn(),a,o,s,c,f,p,m;i!==n;)r.push(i),i=kn();if(r!==n)if(i=an(),i!==n){for(a=[],o=kn();o!==n;)a.push(o),o=kn();if(a!==n)if(o=mn(),o===n&&(o=dn()),o!==n)if(e.charCodeAt(x)===44?(s=l,x++):(s=n,Tt===0&&Pt(u)),s!==n){for(c=[],f=kn();f!==n;)c.push(f),f=kn();if(c!==n)if(f=dn(),f!==n){for(p=[],m=Qt();m!==n;)p.push(m),m=Qt();p===n?(x=t,t=n):(xt=t,r=d(o,f,p),t=r)}else x=t,t=n;else x=t,t=n}else x=t,t=n;else x=t,t=n;else x=t,t=n}else x=t,t=n;else x=t,t=n;return t}function Vt(){for(var t=x,r=[],i=kn(),a,o,s,c,d,p,m;i!==n;)r.push(i),i=kn();if(r!==n)if(i=on(),i!==n){for(a=[],o=kn();o!==n;)a.push(o),o=kn();if(a!==n)if(o=dn(),o!==n)if(e.charCodeAt(x)===44?(s=l,x++):(s=n,Tt===0&&Pt(u)),s!==n){for(c=[],d=kn();d!==n;)c.push(d),d=kn();if(c!==n)if(d=dn(),d!==n){for(p=[],m=Ht();m!==n;)p.push(m),m=Ht();p===n?(x=t,t=n):(xt=t,r=f(o,d,p),t=r)}else x=t,t=n;else x=t,t=n}else x=t,t=n;else x=t,t=n;else x=t,t=n}else x=t,t=n;else x=t,t=n;return t}function Ht(){var t=x,r,i,a,o,s,c;if(e.charCodeAt(x)===44?(r=l,x++):(r=n,Tt===0&&Pt(u)),r!==n){for(i=[],a=kn();a!==n;)i.push(a),a=kn();if(i!==n)if(a=sn(),a!==n)if(e.charCodeAt(x)===58?(o=p,x++):(o=n,Tt===0&&Pt(m)),o!==n){for(s=[],c=kn();c!==n;)s.push(c),c=kn();s===n?(x=t,t=n):(c=dn(),c===n?(x=t,t=n):(xt=t,r=h(c),t=r))}else x=t,t=n;else x=t,t=n;else x=t,t=n}else x=t,t=n;if(t===n){if(t=x,e.charCodeAt(x)===44?(r=l,x++):(r=n,Tt===0&&Pt(u)),r!==n){for(i=[],a=kn();a!==n;)i.push(a),a=kn();if(i!==n)if(a=cn(),a!==n)if(e.charCodeAt(x)===58?(o=p,x++):(o=n,Tt===0&&Pt(m)),o!==n){for(s=[],c=kn();c!==n;)s.push(c),c=kn();s===n?(x=t,t=n):(c=dn(),c===n?(x=t,t=n):(xt=t,r=g(c),t=r))}else x=t,t=n;else x=t,t=n;else x=t,t=n}else x=t,t=n;if(t===n)if(t=x,e.charCodeAt(x)===44?(r=l,x++):(r=n,Tt===0&&Pt(u)),r!==n){for(i=[],a=kn();a!==n;)i.push(a),a=kn();if(i!==n)if(a=$t(),a!==n)if(e.charCodeAt(x)===58?(o=p,x++):(o=n,Tt===0&&Pt(m)),o!==n){for(s=[],c=kn();c!==n;)s.push(c),c=kn();s===n?(x=t,t=n):(c=mn(),c===n?(x=t,t=n):(xt=t,r=_(a,c),t=r))}else x=t,t=n;else x=t,t=n;else x=t,t=n}else x=t,t=n}return t}function Ut(){var e=x,t=en(),r,i,a,o,s,c;if(t!==n){for(r=[],i=kn();i!==n;)r.push(i),i=kn();r===n?(x=e,e=n):(i=dn(),i===n?(x=e,e=n):(a=bn(),a===n?(x=e,e=n):(o=Tn(),o===n?(x=e,e=n):(s=Wt(),s===n?(x=e,e=n):(c=vn(),c===n?(x=e,e=n):(xt=e,t=ee(i,s),e=t))))))}else x=e,e=n;return e}function Wt(){for(var e=x,t=[],r=Gt();r!==n;)t.push(r),r=Gt();return t!==n&&(xt=e,t=v(t)),e=t,e}function Gt(){for(var e=x,t=[],r=On(),i,a;r!==n;)t.push(r),r=On();if(t!==n)if(r=Kt(),r!==n){for(i=[],a=xn();a!==n;)i.push(a),a=xn();i===n?(x=e,e=n):(a=Tn(),a===n?(x=e,e=n):(xt=e,t=y(r),e=t))}else x=e,e=n;else x=e,e=n;return e}function Kt(){var e=qt(),t;return e===n&&(e=x,t=Jt(),t!==n&&(xt=e,t=b(t)),e=t,e===n&&(e=x,t=Yt(),t!==n&&(xt=e,t=te(t)),e=t,e===n&&(e=x,t=Xt(),t!==n&&(xt=e,t=ne(t)),e=t))),e}function qt(){var e=x,t=tn(),r,i;if(t!==n){if(r=[],i=kn(),i!==n)for(;i!==n;)r.push(i),i=kn();else r=n;r===n?(x=e,e=n):(i=bn(),i===n?(x=e,e=n):(t=[t,r,i],e=t))}else x=e,e=n;return e}function Jt(){var e=x,t=nn(),r,i;if(t!==n){if(r=[],i=kn(),i!==n)for(;i!==n;)r.push(i),i=kn();else r=n;r===n?(x=e,e=n):(i=Zt(),i===n?(x=e,e=n):(xt=e,t=re(i),e=t))}else x=e,e=n;return e}function Yt(){var e=x,t=rn(),r,i,a,o;if(t!==n){if(r=[],i=kn(),i!==n)for(;i!==n;)r.push(i),i=kn();else r=n;if(r!==n)if(i=dn(),i!==n){for(a=[],o=Qt();o!==n;)a.push(o),o=Qt();a===n?(x=e,e=n):(xt=e,t=ie(i,a),e=t)}else x=e,e=n;else x=e,e=n}else x=e,e=n;return e}function Xt(){var e=x,t=gn(),r,i;if(t!==n){if(r=[],i=kn(),i!==n)for(;i!==n;)r.push(i),i=kn();else r=n;r===n?(x=e,e=n):(i=dn(),i===n?(x=e,e=n):(xt=e,t=ae(t,i),e=t))}else x=e,e=n;return e}function Zt(){var t=x,r,i;return e.charCodeAt(x)===58?(r=p,x++):(r=n,Tt===0&&Pt(m)),r===n?(x=t,t=n):(i=hn(),i===n?(x=t,t=n):(xt=t,r=oe(i),t=r)),t===n&&(t=x,r=dn(),r!==n&&(xt=t,r=oe(r)),t=r),t}function Qt(){var t=x,r,i,a,o,s,c;if(e.charCodeAt(x)===44?(r=l,x++):(r=n,Tt===0&&Pt(u)),r!==n){for(i=[],a=kn();a!==n;)i.push(a),a=kn();if(i!==n)if(e.substr(x,4).toLowerCase()===se?(a=e.substr(x,4),x+=4):(a=n,Tt===0&&Pt(ce)),a!==n)if(e.charCodeAt(x)===58?(o=p,x++):(o=n,Tt===0&&Pt(m)),o!==n){for(s=[],c=kn();c!==n;)s.push(c),c=kn();s===n?(x=t,t=n):(c=dn(),c===n?(x=t,t=n):(xt=t,r=le(c),t=r))}else x=t,t=n;else x=t,t=n;else x=t,t=n}else x=t,t=n;return t}function $t(){var t;return e.substr(x,9).toLowerCase()===ue?(t=e.substr(x,9),x+=9):(t=n,Tt===0&&Pt(de)),t===n&&(e.substr(x,9).toLowerCase()===fe?(t=e.substr(x,9),x+=9):(t=n,Tt===0&&Pt(pe))),t}function en(){var t;return Tt++,e.substr(x,12).toLowerCase()===he?(t=e.substr(x,12),x+=12):(t=n,Tt===0&&Pt(ge)),Tt--,t===n&&Tt===0&&Pt(me),t}function tn(){var t,r,i;return Tt++,t=x,r=_n(),r===n?(x=t,t=n):(e.substr(x,6)===ve?(i=ve,x+=6):(i=n,Tt===0&&Pt(ye)),i===n?(x=t,t=n):(r=[r,i],t=r)),Tt--,t===n&&(r=n,Tt===0&&Pt(_e)),t}function nn(){var t,r,i;return Tt++,t=x,r=_n(),r===n?(x=t,t=n):(e.substr(x,11)===xe?(i=xe,x+=11):(i=n,Tt===0&&Pt(Se)),i===n?(x=t,t=n):(r=[r,i],t=r)),Tt--,t===n&&(r=n,Tt===0&&Pt(be)),t}function rn(){var t,r,i;return Tt++,t=x,r=_n(),r===n?(x=t,t=n):(e.substr(x,17)===we?(i=we,x+=17):(i=n,Tt===0&&Pt(Te)),i===n?(x=t,t=n):(r=[r,i],t=r)),Tt--,t===n&&(r=n,Tt===0&&Pt(Ce)),t}function an(){var t;return Tt++,e.substr(x,20).toLowerCase()===De?(t=e.substr(x,20),x+=20):(t=n,Tt===0&&Pt(Oe)),Tt--,t===n&&Tt===0&&Pt(Ee),t}function on(){var t;return Tt++,e.substr(x,15).toLowerCase()===Ae?(t=e.substr(x,15),x+=15):(t=n,Tt===0&&Pt(je)),Tt--,t===n&&Tt===0&&Pt(ke),t}function sn(){var t;return Tt++,e.substr(x,6)===Ne?(t=Ne,x+=6):(t=n,Tt===0&&Pt(Pe)),Tt--,t===n&&Tt===0&&Pt(Me),t}function cn(){var t;return Tt++,e.substr(x,11)===Ie?(t=Ie,x+=11):(t=n,Tt===0&&Pt(Le)),Tt--,t===n&&Tt===0&&Pt(Fe),t}function ln(){var t;return e.substr(x,3)===Re?(t=Re,x+=3):(t=n,Tt===0&&Pt(ze)),t}function un(){var e=x,t=hn(),r,i;return t===n?(x=e,e=n):(r=bn(),r===n?(x=e,e=n):(i=Tn(),i===n&&(i=null),i===n?(x=e,e=n):(t=[t,r,i],e=t))),e}function dn(){var e=fn();return e===n&&(e=pn()),e}function fn(){var t=x,r=Cn(),i,a;if(r!==n){for(i=[],Be.test(e.charAt(x))?(a=e.charAt(x),x++):(a=n,Tt===0&&Pt(Ve));a!==n;)i.push(a),Be.test(e.charAt(x))?(a=e.charAt(x),x++):(a=n,Tt===0&&Pt(Ve));i===n?(x=t,t=n):(a=Cn(),a===n?(x=t,t=n):(xt=t,r=He(i),t=r))}else x=t,t=n;return t}function pn(){var t=x,r=Sn(),i,a;if(r!==n){for(i=[],Ue.test(e.charAt(x))?(a=e.charAt(x),x++):(a=n,Tt===0&&Pt(We));a!==n;)i.push(a),Ue.test(e.charAt(x))?(a=e.charAt(x),x++):(a=n,Tt===0&&Pt(We));i===n?(x=t,t=n):(a=Sn(),a===n?(x=t,t=n):(xt=t,r=He(i),t=r))}else x=t,t=n;return t}function mn(){var t=x,r,i,a;if(e.charCodeAt(x)===58?(r=p,x++):(r=n,Tt===0&&Pt(m)),r!==n){for(i=[],a=_n();a!==n;)i.push(a),a=_n();i===n?(x=t,t=n):(xt=t,r=He(i),t=r)}else x=t,t=n;return t}function hn(){var e=x,t=[],r=_n();if(r!==n)for(;r!==n;)t.push(r),r=_n();else t=n;return t!==n&&(xt=e,t=He(t)),e=t,e}function gn(){var t=x,r=_n(),i,a,o;if(r!==n)if(e.charCodeAt(x)===46?(i=Ge,x++):(i=n,Tt===0&&Pt(Ke)),i!==n){if(a=[],o=_n(),o!==n)for(;o!==n;)a.push(o),o=_n();else a=n;a===n?(x=t,t=n):(xt=t,r=He(a),t=r)}else x=t,t=n;else x=t,t=n;return t}function _n(){var t;return Tt++,Je.test(e.charAt(x))?(t=e.charAt(x),x++):(t=n,Tt===0&&Pt(Ye)),Tt--,t===n&&Tt===0&&Pt(qe),t}function vn(){for(var e=x,t=[],r=On(),i;r!==n;)t.push(r),r=On();return t===n?(x=e,e=n):(r=ln(),r===n?(x=e,e=n):(i=Tn(),i===n&&(i=null),i===n?(x=e,e=n):(t=[t,r,i],e=t))),e}function yn(){var t,r,i,a,o;for(Tt++,t=x,r=[],i=On();i!==n;)r.push(i),i=On();return r===n?(x=t,t=n):(e.charCodeAt(x)===35?(i=Ze,x++):(i=n,Tt===0&&Pt(Qe)),i===n?(x=t,t=n):(a=bn(),a===n?(x=t,t=n):(o=Tn(),o===n&&(o=null),o===n?(x=t,t=n):(r=[r,i,a,o],t=r)))),Tt--,t===n&&(r=n,Tt===0&&Pt(Xe)),t}function bn(){var t,r;for(Tt++,t=[],et.test(e.charAt(x))?(r=e.charAt(x),x++):(r=n,Tt===0&&Pt(tt));r!==n;)t.push(r),et.test(e.charAt(x))?(r=e.charAt(x),x++):(r=n,Tt===0&&Pt(tt));return Tt--,t===n&&(r=n,Tt===0&&Pt($e)),t}function xn(){var t;return et.test(e.charAt(x))?(t=e.charAt(x),x++):(t=n,Tt===0&&Pt(tt)),t}function Sn(){var t;return e.charCodeAt(x)===39?(t=nt,x++):(t=n,Tt===0&&Pt(rt)),t}function Cn(){var t;return e.charCodeAt(x)===34?(t=it,x++):(t=n,Tt===0&&Pt(at)),t}function wn(){var e=[],t=En();if(t===n&&(t=On()),t!==n)for(;t!==n;)e.push(t),t=En(),t===n&&(t=On());else e=n;return e}function Tn(){for(var e=x,t=[],r=kn();r!==n;)t.push(r),r=kn();return t===n?(x=e,e=n):(r=Dn(),r===n?(x=e,e=n):(t=[t,r],e=t)),e}function En(){var t,r,i;return Tt++,t=x,e.substr(x,2)===st?(r=st,x+=2):(r=n,Tt===0&&Pt(ct)),r===n?(x=t,t=n):(lt.test(e.charAt(x))?(i=e.charAt(x),x++):(i=n,Tt===0&&Pt(ut)),i===n&&(i=null),i===n?(x=t,t=n):(r=[r,i],t=r)),Tt--,t===n&&(r=n,Tt===0&&Pt(ot)),t}function Dn(){var t;return Tt++,e.substr(x,2)===ft?(t=ft,x+=2):(t=n,Tt===0&&Pt(pt)),t===n&&(e.charCodeAt(x)===10?(t=mt,x++):(t=n,Tt===0&&Pt(ht))),Tt--,t===n&&Tt===0&&Pt(dt),t}function On(){var t;return Tt++,_t.test(e.charAt(x))?(t=e.charAt(x),x++):(t=n,Tt===0&&Pt(vt)),Tt--,t===n&&Tt===0&&Pt(gt),t}function kn(){var t;return e.charCodeAt(x)===32?(t=yt,x++):(t=n,Tt===0&&Pt(bt)),t}var An=$7(),jn=Q7();let Mn={tables:[],refs:[]};function Nn(e){Mn.tables.find(t=>t.name==e.name)?Dt(`Duplicated table name`):(e.fields.find(e=>e.name===`id`)||e.fields.unshift({name:`id`,type:{type_name:`varchar`}}),Mn.tables.push(e))}function Pn(e,t,n){let r=Mn.tables.find(t=>t.name===e);r||Dt("Table ${tableName} not found"),r.checks||=[];let i={expression:t};n&&(i.name=n),r.checks.push(i)}function Fn(e=[],t=[]){let n=t.find(e=>e.name===`primary_key`);return n?e.find(e=>e.name===n.value)?e.map(({name:e,type:t})=>({name:e,type:t,PK:n.value===field.name})):[{name:n.value,type:{type_name:`varchar`},PK:!0}].concat(e):e}function In(e,t){return e.tableName==t.tableName&&jn.isEqual(jn.sortBy(e.fieldNames),jn.sortBy(t.fieldNames))}function Ln(e,t){return In(e[0],t[0])&&In(e[1],t[1])}function Rn(e,t){return Ln(e.endpoints,t.endpoints)||Ln(e.endpoints,t.endpoints.slice().reverse())}function zn(e){e&&(Mn.refs.find(t=>Rn(t,e))&&Dt(`Duplicated references`),Mn.refs.push(e))}function Bn(e=[]){if(!(!e||e.length===0))for(let t=0;t<e.length;t+=1)zn(e[t])}function Vn(e){let{tables:t}=Mn,{endpoints:n}=e,r=t.find(e=>e.name===n[0].tableName);if(!r||!t.find(e=>e.name===n[1].tableName))return null;if(!n[0].fieldNames){let e=`${An.singular(n[1].tableName)}_id`;if(n[0].fieldNames=[e],!r.fields.find(t=>t.name===e))return null;n[0].fieldNames=[e]}return n[1].fieldNames||(n[1].fieldNames=[`id`]),e}function Hn(e,t,n){let r=[{tableName:e,relation:`1`},{tableName:t,relation:`1`}],i={};for(let e=0;e<n.length;e+=1){let t=n[e];t.columnName&&(r[0].fieldNames=[t.columnName]),t.primaryKey&&(r[1].fieldNames=[t.primaryKey]),t.onDelete&&(i={...i,onDelete:t.onDelete}),t.onUpdate&&(i={...i,onUpdate:t.onUpdate})}return{name:`fk_rails_${e}_${t}`,endpoints:r,...i}}function Un(e,t){if(!t||t.length===0)return[];let n=[];for(let r=0;r<t.length;r+=1){let i=t[r],a=An.plural(i),{tables:o}=Mn,s=o.find(e=>e.name===a);if(!s)continue;let c=`${i}_id`,l=e.fields.find(e=>e.name===c),u=s.fields.find(e=>e.name===`id`);l||e.fields.push({name:c,type:{type_name:u?u.type.type_name:`varchar`}}),n.push({name:`fk_rails_${e.name}_${a}`,endpoints:[{tableName:e.name,fieldNames:[c],relation:`1`},{tableName:a,fieldNames:[`id`],relation:`1`}]})}return n}function Wn(e){let{tables:t,refs:n}=e,r=t.map(e=>{let{name:t}=e;return{name:t,field:`${An.singular(t)}_id`}});for(let e=0;e<t.length;e+=1){let i=t[e],{fields:a}=i;for(let e=0;e<a.length;e+=1){let t=a[e],o=r.find(e=>e.field===t.name);if(o){let e={name:`fk_rails_${i.name}_${o.name}`,endpoints:[{tableName:i.name,fieldNames:[t.name],relation:`1`},{tableName:o.name,fieldNames:[`id`],relation:`1`}]};n.find(t=>Rn(t,e))||n.push(e)}}}return e}if(Et=a(),Et!==n&&x===e.length)return Et;throw Et!==n&&x<e.length&&Pt(At()),It(wt,Ct<e.length?e.charAt(Ct):null,Ct<e.length?Nt(Ct,Ct+1):Nt(Ct,Ct))}t.exports={SyntaxError:r,parse:i}})),Z3e=u(W1e()),Q3e=u(q3e()),$3e=u(J3e()),e6e=u(Y3e()),t6e=u(X3e()),n6e=class e{constructor(e){this.DBMLCompiler=e||new hv}static parseJSONToDatabase(e){return new Iy(e)}static parseMySQLToJSONv2(e){return Z7(e,`mysql`)}static parseMySQLToJSON(e){return $3e.default.parse(e)}static parsePostgresToJSONv2(e){return Z7(e,`postgres`)}static parsePostgresToJSON(e){return e6e.default.parse(e)}static parseDBMLToJSONv2(e,t){let n=t||new hv;n.setSource(e);let r=n.parse.errors().map(e=>({message:e.diagnostic,location:{start:{line:e.nodeOrToken.startPos.line+1,column:e.nodeOrToken.startPos.column+1},end:{line:e.nodeOrToken.endPos.line+1,column:e.nodeOrToken.endPos.column+1}},code:e.code}));if(r.length>0)throw W7.create(r);return n.parse.rawDb()}static parseDBMLToJSON(e){return Z3e.default.parse(e)}static parseSchemaRbToJSON(e){return t6e.default.parse(e)}static parseMSSQLToJSON(e){return Q3e.default.parseWithPegError(e)}static parseMSSQLToJSONv2(e){return Z7(e,`mssql`)}static parseSnowflakeToJSON(e){return Z7(e,`snowflake`)}static parseOracleToJSON(e){return Z7(e,`oracle`)}static parse(t,n){return new e().parse(t,n)}parse(t,n){try{let r={};switch(n){case`mysql`:r=e.parseMySQLToJSONv2(t);break;case`mysqlLegacy`:r=e.parseMySQLToJSON(t);break;case`postgres`:r=e.parsePostgresToJSONv2(t);break;case`snowflake`:r=e.parseSnowflakeToJSON(t);break;case`postgresLegacy`:r=e.parsePostgresToJSON(t);break;case`dbml`:r=e.parseDBMLToJSON(t);break;case`dbmlv2`:r=e.parseDBMLToJSONv2(t,this.DBMLCompiler);break;case`schemarb`:r=e.parseSchemaRbToJSON(t);break;case`mssqlLegacy`:r=e.parseMSSQLToJSON(t);break;case`mssql`:r=e.parseMSSQLToJSONv2(t);break;case`oracle`:r=e.parseOracleToJSON(t);break;case`json`:r=typeof t==`object`?t:JSON.parse(t);break;default:break}return e.parseJSONToDatabase(r)}catch(e){throw W7.create(e)}}},r6e=n6e;function i6e(e,t,n={isNormalized:!0,includeRecords:!0}){let r=a6e(n),i=new r6e().parse(e,`dbmlv2`);return $9.export(i.normalize(),t,r)}function a6e(e={}){if(typeof e==`boolean`)return{isNormalized:e,includeRecords:!0};let{isNormalized:t=!0,includeRecords:n=!0}=e;return{isNormalized:t,includeRecords:n}}var o6e={export:i6e},s6e=class{static export(e,t,n={isNormalized:!0,includeRecords:!0}){let{isNormalized:r,includeRecords:i}=a6e(n),a=e instanceof Iy?e.normalize():e,o=``;switch(t){case`dbml`:o=nve.export(a,{includeRecords:i});break;case`mysql`:o=ive.export(a);break;case`postgres`:o=lve.export(a);break;case`json`:o=Hve.export(e,{isNormalized:r});break;case`mssql`:o=Wve.export(a);break;case`oracle`:o=Kve.export(a);break;default:break}return o}},$9=s6e,c6e=e=>new Iy(e),l6e=e=>e.map(e=>{let{name:t,endpoints:n,onDelete:r,onUpdate:i}=e;return new S1e({name:t,endpoints:n.map(e=>new M7(e)),onDelete:r,onUpdate:i}).toJSON()}),u6e=e=>e.map(e=>{let{name:t,schemaName:n,values:r}=e;return new N7({name:t,schemaName:n,values:r})}),d6e=(e,t)=>e.map(e=>{let n=t[e.name]||{};return new A7({name:e.name,type:e.type,dbdefault:e.dbdefault,not_null:e.not_null,increment:e.increment,pk:n.pk||e.pk,unique:n.unique||e.unique,note:e.note,checks:n.checks})}),f6e=e=>e.map(e=>{let{name:t,unique:n,pk:r,type:i,columns:a}=e;return new k7({name:t,unique:n,pk:r,type:i,columns:a})}),p6e=(e,t,n,r,i)=>e.map(e=>{let{name:a,schemaName:o,note:s}=e,c=o?`${o}.${a}`:`${a}`,l=i[c]||{};return new j7({name:a,schemaName:o,fields:d6e(t[c],l),indexes:f6e(n[c]||[]),note:s,checks:r[c]})}),m6e=e=>{let{tables:t,fields:n,indexes:r,refs:i,enums:a,tableConstraints:o,checks:s}=e;try{let e=p6e(t,n,r,s,o),c=u6e(a);return c6e({schemas:[],tables:e,refs:l6e(i),enums:c,tableGroups:[],aliases:[],project:{}})}catch(e){throw Error(e)}};function h6e(e,t,n={includeRecords:!0}){let{includeRecords:r=!0}=n,i=new r6e().parse(e,t);return $9.export(i.normalize(),`dbml`,{includeRecords:r})}function g6e(e){let t=m6e(e);return $9.export(t.normalize(),`dbml`)}var _6e={import:h6e,generateDbml:g6e};function v6e(e,t,n){let r=new hv;return r.setSource(n),r.renameTable(e,t)}function y6e(e,t,n){let r=new hv;return r.setSource(e),r.syncDiagramView(t,n)}function b6e(e){let t=new hv;return t.setSource(e),t.findDiagramViewBlocks()}const x6e=`7.1.0`,S6e=`7.1.0`;exports.CompilerError=W7,exports.ModelExporter=$9,exports.Parser=r6e,exports.VERSION=`7.1.0`,exports.addDoubleQuoteIfNeeded=$_,exports.dbmlMonarchTokensProvider=npe,exports.exporter=o6e,exports.findDiagramViewBlocks=b6e,exports.formatRecordValue=Dfe,exports.importer=_6e,exports.isBinaryType=Gh,exports.isBooleanType=Uh,exports.isDateTimeType=Kh,exports.isFloatType=Vh,exports.isIntegerType=Bh,exports.isNumericType=Hh,exports.isSerialType=qh,exports.isStringType=Wh,exports.renameTable=v6e,exports.syncDiagramView=y6e,exports.tryExtractBoolean=F_,exports.tryExtractDateTime=L_,exports.tryExtractEnum=Ide,exports.tryExtractInteger=Nde,exports.tryExtractNumeric=P_,exports.tryExtractString=I_;
148
+ `,`\r`],!1,!1),yt=` `,bt=Ot(` `,!1),x=0,xt=0,St=[{line:1,column:1}],Ct=0,wt=[],Tt=0,Et;if(`startRule`in t){if(!(t.startRule in i))throw Error(`Can't start parsing from rule "`+t.startRule+`".`);a=i[t.startRule]}function Dt(e,t){throw t=t===void 0?Nt(xt,x):t,Ft(e,t)}function Ot(e,t){return{type:`literal`,text:e,ignoreCase:t}}function kt(e,t,n){return{type:`class`,parts:e,inverted:t,ignoreCase:n}}function At(){return{type:`end`}}function jt(e){return{type:`other`,description:e}}function Mt(t){var n=St[t],r;if(n)return n;for(r=t-1;!St[r];)r--;for(n=St[r],n={line:n.line,column:n.column};r<t;)e.charCodeAt(r)===10?(n.line++,n.column=1):n.column++,r++;return St[t]=n,n}function Nt(e,t){var n=Mt(e),r=Mt(t);return{start:{offset:e,line:n.line,column:n.column},end:{offset:t,line:r.line,column:r.column}}}function Pt(e){x<Ct||(x>Ct&&(Ct=x,wt=[]),wt.push(e))}function Ft(e,t){return new r(e,null,null,t)}function It(e,t,n){return new r(r.buildMessage(e,t),e,t,n)}function Lt(){for(var e=x,t=[],r=Rt();r!==n;)t.push(r),r=Rt();return t!==n&&(xt=e,t=o()),e=t,e}function Rt(){for(var e=x,t=[],r=On();r!==n;)t.push(r),r=On();return t===n?(x=e,e=n):(r=zt(),r===n?(x=e,e=n):(t=[t,r],e=t)),e===n&&(e=yn(),e===n&&(e=vn(),e===n&&(e=wn()))),e}function zt(){var e=x,t=Ut();return t!==n&&(xt=e,t=s(t)),e=t,e===n&&(e=x,t=Vt(),t!==n&&(xt=e,t=c(t)),e=t,e===n&&(e=Bt(),e===n&&(e=un()))),e}function Bt(){for(var t=x,r=[],i=kn(),a,o,s,c,f,p,m;i!==n;)r.push(i),i=kn();if(r!==n)if(i=an(),i!==n){for(a=[],o=kn();o!==n;)a.push(o),o=kn();if(a!==n)if(o=mn(),o===n&&(o=dn()),o!==n)if(e.charCodeAt(x)===44?(s=l,x++):(s=n,Tt===0&&Pt(u)),s!==n){for(c=[],f=kn();f!==n;)c.push(f),f=kn();if(c!==n)if(f=dn(),f!==n){for(p=[],m=Qt();m!==n;)p.push(m),m=Qt();p===n?(x=t,t=n):(xt=t,r=d(o,f,p),t=r)}else x=t,t=n;else x=t,t=n}else x=t,t=n;else x=t,t=n;else x=t,t=n}else x=t,t=n;else x=t,t=n;return t}function Vt(){for(var t=x,r=[],i=kn(),a,o,s,c,d,p,m;i!==n;)r.push(i),i=kn();if(r!==n)if(i=on(),i!==n){for(a=[],o=kn();o!==n;)a.push(o),o=kn();if(a!==n)if(o=dn(),o!==n)if(e.charCodeAt(x)===44?(s=l,x++):(s=n,Tt===0&&Pt(u)),s!==n){for(c=[],d=kn();d!==n;)c.push(d),d=kn();if(c!==n)if(d=dn(),d!==n){for(p=[],m=Ht();m!==n;)p.push(m),m=Ht();p===n?(x=t,t=n):(xt=t,r=f(o,d,p),t=r)}else x=t,t=n;else x=t,t=n}else x=t,t=n;else x=t,t=n;else x=t,t=n}else x=t,t=n;else x=t,t=n;return t}function Ht(){var t=x,r,i,a,o,s,c;if(e.charCodeAt(x)===44?(r=l,x++):(r=n,Tt===0&&Pt(u)),r!==n){for(i=[],a=kn();a!==n;)i.push(a),a=kn();if(i!==n)if(a=sn(),a!==n)if(e.charCodeAt(x)===58?(o=p,x++):(o=n,Tt===0&&Pt(m)),o!==n){for(s=[],c=kn();c!==n;)s.push(c),c=kn();s===n?(x=t,t=n):(c=dn(),c===n?(x=t,t=n):(xt=t,r=h(c),t=r))}else x=t,t=n;else x=t,t=n;else x=t,t=n}else x=t,t=n;if(t===n){if(t=x,e.charCodeAt(x)===44?(r=l,x++):(r=n,Tt===0&&Pt(u)),r!==n){for(i=[],a=kn();a!==n;)i.push(a),a=kn();if(i!==n)if(a=cn(),a!==n)if(e.charCodeAt(x)===58?(o=p,x++):(o=n,Tt===0&&Pt(m)),o!==n){for(s=[],c=kn();c!==n;)s.push(c),c=kn();s===n?(x=t,t=n):(c=dn(),c===n?(x=t,t=n):(xt=t,r=g(c),t=r))}else x=t,t=n;else x=t,t=n;else x=t,t=n}else x=t,t=n;if(t===n)if(t=x,e.charCodeAt(x)===44?(r=l,x++):(r=n,Tt===0&&Pt(u)),r!==n){for(i=[],a=kn();a!==n;)i.push(a),a=kn();if(i!==n)if(a=$t(),a!==n)if(e.charCodeAt(x)===58?(o=p,x++):(o=n,Tt===0&&Pt(m)),o!==n){for(s=[],c=kn();c!==n;)s.push(c),c=kn();s===n?(x=t,t=n):(c=mn(),c===n?(x=t,t=n):(xt=t,r=_(a,c),t=r))}else x=t,t=n;else x=t,t=n;else x=t,t=n}else x=t,t=n}return t}function Ut(){var e=x,t=en(),r,i,a,o,s,c;if(t!==n){for(r=[],i=kn();i!==n;)r.push(i),i=kn();r===n?(x=e,e=n):(i=dn(),i===n?(x=e,e=n):(a=bn(),a===n?(x=e,e=n):(o=Tn(),o===n?(x=e,e=n):(s=Wt(),s===n?(x=e,e=n):(c=vn(),c===n?(x=e,e=n):(xt=e,t=ee(i,s),e=t))))))}else x=e,e=n;return e}function Wt(){for(var e=x,t=[],r=Gt();r!==n;)t.push(r),r=Gt();return t!==n&&(xt=e,t=v(t)),e=t,e}function Gt(){for(var e=x,t=[],r=On(),i,a;r!==n;)t.push(r),r=On();if(t!==n)if(r=Kt(),r!==n){for(i=[],a=xn();a!==n;)i.push(a),a=xn();i===n?(x=e,e=n):(a=Tn(),a===n?(x=e,e=n):(xt=e,t=y(r),e=t))}else x=e,e=n;else x=e,e=n;return e}function Kt(){var e=qt(),t;return e===n&&(e=x,t=Jt(),t!==n&&(xt=e,t=b(t)),e=t,e===n&&(e=x,t=Yt(),t!==n&&(xt=e,t=te(t)),e=t,e===n&&(e=x,t=Xt(),t!==n&&(xt=e,t=ne(t)),e=t))),e}function qt(){var e=x,t=tn(),r,i;if(t!==n){if(r=[],i=kn(),i!==n)for(;i!==n;)r.push(i),i=kn();else r=n;r===n?(x=e,e=n):(i=bn(),i===n?(x=e,e=n):(t=[t,r,i],e=t))}else x=e,e=n;return e}function Jt(){var e=x,t=nn(),r,i;if(t!==n){if(r=[],i=kn(),i!==n)for(;i!==n;)r.push(i),i=kn();else r=n;r===n?(x=e,e=n):(i=Zt(),i===n?(x=e,e=n):(xt=e,t=re(i),e=t))}else x=e,e=n;return e}function Yt(){var e=x,t=rn(),r,i,a,o;if(t!==n){if(r=[],i=kn(),i!==n)for(;i!==n;)r.push(i),i=kn();else r=n;if(r!==n)if(i=dn(),i!==n){for(a=[],o=Qt();o!==n;)a.push(o),o=Qt();a===n?(x=e,e=n):(xt=e,t=ie(i,a),e=t)}else x=e,e=n;else x=e,e=n}else x=e,e=n;return e}function Xt(){var e=x,t=gn(),r,i;if(t!==n){if(r=[],i=kn(),i!==n)for(;i!==n;)r.push(i),i=kn();else r=n;r===n?(x=e,e=n):(i=dn(),i===n?(x=e,e=n):(xt=e,t=ae(t,i),e=t))}else x=e,e=n;return e}function Zt(){var t=x,r,i;return e.charCodeAt(x)===58?(r=p,x++):(r=n,Tt===0&&Pt(m)),r===n?(x=t,t=n):(i=hn(),i===n?(x=t,t=n):(xt=t,r=oe(i),t=r)),t===n&&(t=x,r=dn(),r!==n&&(xt=t,r=oe(r)),t=r),t}function Qt(){var t=x,r,i,a,o,s,c;if(e.charCodeAt(x)===44?(r=l,x++):(r=n,Tt===0&&Pt(u)),r!==n){for(i=[],a=kn();a!==n;)i.push(a),a=kn();if(i!==n)if(e.substr(x,4).toLowerCase()===se?(a=e.substr(x,4),x+=4):(a=n,Tt===0&&Pt(ce)),a!==n)if(e.charCodeAt(x)===58?(o=p,x++):(o=n,Tt===0&&Pt(m)),o!==n){for(s=[],c=kn();c!==n;)s.push(c),c=kn();s===n?(x=t,t=n):(c=dn(),c===n?(x=t,t=n):(xt=t,r=le(c),t=r))}else x=t,t=n;else x=t,t=n;else x=t,t=n}else x=t,t=n;return t}function $t(){var t;return e.substr(x,9).toLowerCase()===ue?(t=e.substr(x,9),x+=9):(t=n,Tt===0&&Pt(de)),t===n&&(e.substr(x,9).toLowerCase()===fe?(t=e.substr(x,9),x+=9):(t=n,Tt===0&&Pt(pe))),t}function en(){var t;return Tt++,e.substr(x,12).toLowerCase()===he?(t=e.substr(x,12),x+=12):(t=n,Tt===0&&Pt(ge)),Tt--,t===n&&Tt===0&&Pt(me),t}function tn(){var t,r,i;return Tt++,t=x,r=_n(),r===n?(x=t,t=n):(e.substr(x,6)===ve?(i=ve,x+=6):(i=n,Tt===0&&Pt(ye)),i===n?(x=t,t=n):(r=[r,i],t=r)),Tt--,t===n&&(r=n,Tt===0&&Pt(_e)),t}function nn(){var t,r,i;return Tt++,t=x,r=_n(),r===n?(x=t,t=n):(e.substr(x,11)===xe?(i=xe,x+=11):(i=n,Tt===0&&Pt(Se)),i===n?(x=t,t=n):(r=[r,i],t=r)),Tt--,t===n&&(r=n,Tt===0&&Pt(be)),t}function rn(){var t,r,i;return Tt++,t=x,r=_n(),r===n?(x=t,t=n):(e.substr(x,17)===we?(i=we,x+=17):(i=n,Tt===0&&Pt(Te)),i===n?(x=t,t=n):(r=[r,i],t=r)),Tt--,t===n&&(r=n,Tt===0&&Pt(Ce)),t}function an(){var t;return Tt++,e.substr(x,20).toLowerCase()===De?(t=e.substr(x,20),x+=20):(t=n,Tt===0&&Pt(Oe)),Tt--,t===n&&Tt===0&&Pt(Ee),t}function on(){var t;return Tt++,e.substr(x,15).toLowerCase()===Ae?(t=e.substr(x,15),x+=15):(t=n,Tt===0&&Pt(je)),Tt--,t===n&&Tt===0&&Pt(ke),t}function sn(){var t;return Tt++,e.substr(x,6)===Ne?(t=Ne,x+=6):(t=n,Tt===0&&Pt(Pe)),Tt--,t===n&&Tt===0&&Pt(Me),t}function cn(){var t;return Tt++,e.substr(x,11)===Ie?(t=Ie,x+=11):(t=n,Tt===0&&Pt(Le)),Tt--,t===n&&Tt===0&&Pt(Fe),t}function ln(){var t;return e.substr(x,3)===Re?(t=Re,x+=3):(t=n,Tt===0&&Pt(ze)),t}function un(){var e=x,t=hn(),r,i;return t===n?(x=e,e=n):(r=bn(),r===n?(x=e,e=n):(i=Tn(),i===n&&(i=null),i===n?(x=e,e=n):(t=[t,r,i],e=t))),e}function dn(){var e=fn();return e===n&&(e=pn()),e}function fn(){var t=x,r=Cn(),i,a;if(r!==n){for(i=[],Be.test(e.charAt(x))?(a=e.charAt(x),x++):(a=n,Tt===0&&Pt(Ve));a!==n;)i.push(a),Be.test(e.charAt(x))?(a=e.charAt(x),x++):(a=n,Tt===0&&Pt(Ve));i===n?(x=t,t=n):(a=Cn(),a===n?(x=t,t=n):(xt=t,r=He(i),t=r))}else x=t,t=n;return t}function pn(){var t=x,r=Sn(),i,a;if(r!==n){for(i=[],Ue.test(e.charAt(x))?(a=e.charAt(x),x++):(a=n,Tt===0&&Pt(We));a!==n;)i.push(a),Ue.test(e.charAt(x))?(a=e.charAt(x),x++):(a=n,Tt===0&&Pt(We));i===n?(x=t,t=n):(a=Sn(),a===n?(x=t,t=n):(xt=t,r=He(i),t=r))}else x=t,t=n;return t}function mn(){var t=x,r,i,a;if(e.charCodeAt(x)===58?(r=p,x++):(r=n,Tt===0&&Pt(m)),r!==n){for(i=[],a=_n();a!==n;)i.push(a),a=_n();i===n?(x=t,t=n):(xt=t,r=He(i),t=r)}else x=t,t=n;return t}function hn(){var e=x,t=[],r=_n();if(r!==n)for(;r!==n;)t.push(r),r=_n();else t=n;return t!==n&&(xt=e,t=He(t)),e=t,e}function gn(){var t=x,r=_n(),i,a,o;if(r!==n)if(e.charCodeAt(x)===46?(i=Ge,x++):(i=n,Tt===0&&Pt(Ke)),i!==n){if(a=[],o=_n(),o!==n)for(;o!==n;)a.push(o),o=_n();else a=n;a===n?(x=t,t=n):(xt=t,r=He(a),t=r)}else x=t,t=n;else x=t,t=n;return t}function _n(){var t;return Tt++,Je.test(e.charAt(x))?(t=e.charAt(x),x++):(t=n,Tt===0&&Pt(Ye)),Tt--,t===n&&Tt===0&&Pt(qe),t}function vn(){for(var e=x,t=[],r=On(),i;r!==n;)t.push(r),r=On();return t===n?(x=e,e=n):(r=ln(),r===n?(x=e,e=n):(i=Tn(),i===n&&(i=null),i===n?(x=e,e=n):(t=[t,r,i],e=t))),e}function yn(){var t,r,i,a,o;for(Tt++,t=x,r=[],i=On();i!==n;)r.push(i),i=On();return r===n?(x=t,t=n):(e.charCodeAt(x)===35?(i=Ze,x++):(i=n,Tt===0&&Pt(Qe)),i===n?(x=t,t=n):(a=bn(),a===n?(x=t,t=n):(o=Tn(),o===n&&(o=null),o===n?(x=t,t=n):(r=[r,i,a,o],t=r)))),Tt--,t===n&&(r=n,Tt===0&&Pt(Xe)),t}function bn(){var t,r;for(Tt++,t=[],et.test(e.charAt(x))?(r=e.charAt(x),x++):(r=n,Tt===0&&Pt(tt));r!==n;)t.push(r),et.test(e.charAt(x))?(r=e.charAt(x),x++):(r=n,Tt===0&&Pt(tt));return Tt--,t===n&&(r=n,Tt===0&&Pt($e)),t}function xn(){var t;return et.test(e.charAt(x))?(t=e.charAt(x),x++):(t=n,Tt===0&&Pt(tt)),t}function Sn(){var t;return e.charCodeAt(x)===39?(t=nt,x++):(t=n,Tt===0&&Pt(rt)),t}function Cn(){var t;return e.charCodeAt(x)===34?(t=it,x++):(t=n,Tt===0&&Pt(at)),t}function wn(){var e=[],t=En();if(t===n&&(t=On()),t!==n)for(;t!==n;)e.push(t),t=En(),t===n&&(t=On());else e=n;return e}function Tn(){for(var e=x,t=[],r=kn();r!==n;)t.push(r),r=kn();return t===n?(x=e,e=n):(r=Dn(),r===n?(x=e,e=n):(t=[t,r],e=t)),e}function En(){var t,r,i;return Tt++,t=x,e.substr(x,2)===st?(r=st,x+=2):(r=n,Tt===0&&Pt(ct)),r===n?(x=t,t=n):(lt.test(e.charAt(x))?(i=e.charAt(x),x++):(i=n,Tt===0&&Pt(ut)),i===n&&(i=null),i===n?(x=t,t=n):(r=[r,i],t=r)),Tt--,t===n&&(r=n,Tt===0&&Pt(ot)),t}function Dn(){var t;return Tt++,e.substr(x,2)===ft?(t=ft,x+=2):(t=n,Tt===0&&Pt(pt)),t===n&&(e.charCodeAt(x)===10?(t=mt,x++):(t=n,Tt===0&&Pt(ht))),Tt--,t===n&&Tt===0&&Pt(dt),t}function On(){var t;return Tt++,_t.test(e.charAt(x))?(t=e.charAt(x),x++):(t=n,Tt===0&&Pt(vt)),Tt--,t===n&&Tt===0&&Pt(gt),t}function kn(){var t;return e.charCodeAt(x)===32?(t=yt,x++):(t=n,Tt===0&&Pt(bt)),t}var An=$7(),jn=Q7();let Mn={tables:[],refs:[]};function Nn(e){Mn.tables.find(t=>t.name==e.name)?Dt(`Duplicated table name`):(e.fields.find(e=>e.name===`id`)||e.fields.unshift({name:`id`,type:{type_name:`varchar`}}),Mn.tables.push(e))}function Pn(e,t,n){let r=Mn.tables.find(t=>t.name===e);r||Dt("Table ${tableName} not found"),r.checks||=[];let i={expression:t};n&&(i.name=n),r.checks.push(i)}function Fn(e=[],t=[]){let n=t.find(e=>e.name===`primary_key`);return n?e.find(e=>e.name===n.value)?e.map(({name:e,type:t})=>({name:e,type:t,PK:n.value===field.name})):[{name:n.value,type:{type_name:`varchar`},PK:!0}].concat(e):e}function In(e,t){return e.tableName==t.tableName&&jn.isEqual(jn.sortBy(e.fieldNames),jn.sortBy(t.fieldNames))}function Ln(e,t){return In(e[0],t[0])&&In(e[1],t[1])}function Rn(e,t){return Ln(e.endpoints,t.endpoints)||Ln(e.endpoints,t.endpoints.slice().reverse())}function zn(e){e&&(Mn.refs.find(t=>Rn(t,e))&&Dt(`Duplicated references`),Mn.refs.push(e))}function Bn(e=[]){if(!(!e||e.length===0))for(let t=0;t<e.length;t+=1)zn(e[t])}function Vn(e){let{tables:t}=Mn,{endpoints:n}=e,r=t.find(e=>e.name===n[0].tableName);if(!r||!t.find(e=>e.name===n[1].tableName))return null;if(!n[0].fieldNames){let e=`${An.singular(n[1].tableName)}_id`;if(n[0].fieldNames=[e],!r.fields.find(t=>t.name===e))return null;n[0].fieldNames=[e]}return n[1].fieldNames||(n[1].fieldNames=[`id`]),e}function Hn(e,t,n){let r=[{tableName:e,relation:`1`},{tableName:t,relation:`1`}],i={};for(let e=0;e<n.length;e+=1){let t=n[e];t.columnName&&(r[0].fieldNames=[t.columnName]),t.primaryKey&&(r[1].fieldNames=[t.primaryKey]),t.onDelete&&(i={...i,onDelete:t.onDelete}),t.onUpdate&&(i={...i,onUpdate:t.onUpdate})}return{name:`fk_rails_${e}_${t}`,endpoints:r,...i}}function Un(e,t){if(!t||t.length===0)return[];let n=[];for(let r=0;r<t.length;r+=1){let i=t[r],a=An.plural(i),{tables:o}=Mn,s=o.find(e=>e.name===a);if(!s)continue;let c=`${i}_id`,l=e.fields.find(e=>e.name===c),u=s.fields.find(e=>e.name===`id`);l||e.fields.push({name:c,type:{type_name:u?u.type.type_name:`varchar`}}),n.push({name:`fk_rails_${e.name}_${a}`,endpoints:[{tableName:e.name,fieldNames:[c],relation:`1`},{tableName:a,fieldNames:[`id`],relation:`1`}]})}return n}function Wn(e){let{tables:t,refs:n}=e,r=t.map(e=>{let{name:t}=e;return{name:t,field:`${An.singular(t)}_id`}});for(let e=0;e<t.length;e+=1){let i=t[e],{fields:a}=i;for(let e=0;e<a.length;e+=1){let t=a[e],o=r.find(e=>e.field===t.name);if(o){let e={name:`fk_rails_${i.name}_${o.name}`,endpoints:[{tableName:i.name,fieldNames:[t.name],relation:`1`},{tableName:o.name,fieldNames:[`id`],relation:`1`}]};n.find(t=>Rn(t,e))||n.push(e)}}}return e}if(Et=a(),Et!==n&&x===e.length)return Et;throw Et!==n&&x<e.length&&Pt(At()),It(wt,Ct<e.length?e.charAt(Ct):null,Ct<e.length?Nt(Ct,Ct+1):Nt(Ct,Ct))}t.exports={SyntaxError:r,parse:i}})),Z3e=u(W1e()),Q3e=u(q3e()),$3e=u(J3e()),e6e=u(Y3e()),t6e=u(X3e()),n6e=class e{constructor(e){this.DBMLCompiler=e||new hv}static parseJSONToDatabase(e){return new Iy(e)}static parseMySQLToJSONv2(e){return Z7(e,`mysql`)}static parseMySQLToJSON(e){return $3e.default.parse(e)}static parsePostgresToJSONv2(e){return Z7(e,`postgres`)}static parsePostgresToJSON(e){return e6e.default.parse(e)}static parseDBMLToJSONv2(e,t){let n=t||new hv;n.setSource(e);let r=n.parse.errors().map(e=>({message:e.diagnostic,location:{start:{line:e.nodeOrToken.startPos.line+1,column:e.nodeOrToken.startPos.column+1},end:{line:e.nodeOrToken.endPos.line+1,column:e.nodeOrToken.endPos.column+1}},code:e.code}));if(r.length>0)throw W7.create(r);return n.parse.rawDb()}static parseDBMLToJSON(e){return Z3e.default.parse(e)}static parseSchemaRbToJSON(e){return t6e.default.parse(e)}static parseMSSQLToJSON(e){return Q3e.default.parseWithPegError(e)}static parseMSSQLToJSONv2(e){return Z7(e,`mssql`)}static parseSnowflakeToJSON(e){return Z7(e,`snowflake`)}static parseOracleToJSON(e){return Z7(e,`oracle`)}static parse(t,n){return new e().parse(t,n)}parse(t,n){try{let r={};switch(n){case`mysql`:r=e.parseMySQLToJSONv2(t);break;case`mysqlLegacy`:r=e.parseMySQLToJSON(t);break;case`postgres`:r=e.parsePostgresToJSONv2(t);break;case`snowflake`:r=e.parseSnowflakeToJSON(t);break;case`postgresLegacy`:r=e.parsePostgresToJSON(t);break;case`dbml`:r=e.parseDBMLToJSON(t);break;case`dbmlv2`:r=e.parseDBMLToJSONv2(t,this.DBMLCompiler);break;case`schemarb`:r=e.parseSchemaRbToJSON(t);break;case`mssqlLegacy`:r=e.parseMSSQLToJSON(t);break;case`mssql`:r=e.parseMSSQLToJSONv2(t);break;case`oracle`:r=e.parseOracleToJSON(t);break;case`json`:r=typeof t==`object`?t:JSON.parse(t);break;default:break}return e.parseJSONToDatabase(r)}catch(e){throw W7.create(e)}}},r6e=n6e;function i6e(e,t,n={isNormalized:!0,includeRecords:!0}){let r=a6e(n),i=new r6e().parse(e,`dbmlv2`);return $9.export(i.normalize(),t,r)}function a6e(e={}){if(typeof e==`boolean`)return{isNormalized:e,includeRecords:!0};let{isNormalized:t=!0,includeRecords:n=!0}=e;return{isNormalized:t,includeRecords:n}}var o6e={export:i6e},s6e=class{static export(e,t,n={isNormalized:!0,includeRecords:!0}){let{isNormalized:r,includeRecords:i}=a6e(n),a=e instanceof Iy?e.normalize():e,o=``;switch(t){case`dbml`:o=nve.export(a,{includeRecords:i});break;case`mysql`:o=ive.export(a);break;case`postgres`:o=lve.export(a);break;case`json`:o=Hve.export(e,{isNormalized:r});break;case`mssql`:o=Wve.export(a);break;case`oracle`:o=Kve.export(a);break;default:break}return o}},$9=s6e,c6e=e=>new Iy(e),l6e=e=>e.map(e=>{let{name:t,endpoints:n,onDelete:r,onUpdate:i}=e;return new S1e({name:t,endpoints:n.map(e=>new M7(e)),onDelete:r,onUpdate:i}).toJSON()}),u6e=e=>e.map(e=>{let{name:t,schemaName:n,values:r}=e;return new N7({name:t,schemaName:n,values:r})}),d6e=(e,t)=>e.map(e=>{let n=t[e.name]||{};return new A7({name:e.name,type:e.type,dbdefault:e.dbdefault,not_null:e.not_null,increment:e.increment,pk:n.pk||e.pk,unique:n.unique||e.unique,note:e.note,checks:n.checks})}),f6e=e=>e.map(e=>{let{name:t,unique:n,pk:r,type:i,columns:a}=e;return new k7({name:t,unique:n,pk:r,type:i,columns:a})}),p6e=(e,t,n,r,i)=>e.map(e=>{let{name:a,schemaName:o,note:s}=e,c=o?`${o}.${a}`:`${a}`,l=i[c]||{};return new j7({name:a,schemaName:o,fields:d6e(t[c],l),indexes:f6e(n[c]||[]),note:s,checks:r[c]})}),m6e=e=>{let{tables:t,fields:n,indexes:r,refs:i,enums:a,tableConstraints:o,checks:s}=e;try{let e=p6e(t,n,r,s,o),c=u6e(a);return c6e({schemas:[],tables:e,refs:l6e(i),enums:c,tableGroups:[],aliases:[],project:{}})}catch(e){throw Error(e)}};function h6e(e,t,n={includeRecords:!0}){let{includeRecords:r=!0}=n,i=new r6e().parse(e,t);return $9.export(i.normalize(),`dbml`,{includeRecords:r})}function g6e(e){let t=m6e(e);return $9.export(t.normalize(),`dbml`)}var _6e={import:h6e,generateDbml:g6e};function v6e(e,t,n){let r=new hv;return r.setSource(n),r.renameTable(e,t)}function y6e(e,t,n){let r=new hv;return r.setSource(e),r.syncDiagramView(t,n)}function b6e(e){let t=new hv;return t.setSource(e),t.findDiagramViewBlocks()}const x6e=`7.1.1`,S6e=`7.1.1`;exports.CompilerError=W7,exports.ModelExporter=$9,exports.Parser=r6e,exports.VERSION=`7.1.1`,exports.addDoubleQuoteIfNeeded=$_,exports.dbmlMonarchTokensProvider=npe,exports.exporter=o6e,exports.findDiagramViewBlocks=b6e,exports.formatRecordValue=Dfe,exports.importer=_6e,exports.isBinaryType=Gh,exports.isBooleanType=Uh,exports.isDateTimeType=Kh,exports.isFloatType=Vh,exports.isIntegerType=Bh,exports.isNumericType=Hh,exports.isSerialType=qh,exports.isStringType=Wh,exports.renameTable=v6e,exports.syncDiagramView=y6e,exports.tryExtractBoolean=F_,exports.tryExtractDateTime=L_,exports.tryExtractEnum=Ide,exports.tryExtractInteger=Nde,exports.tryExtractNumeric=P_,exports.tryExtractString=I_;
package/lib/index.mjs CHANGED
@@ -12125,17 +12125,20 @@ function findDiagramViewBlocks$1(_) {
12125
12125
  return HY;
12126
12126
  }
12127
12127
  function emitTablesBlock(_, HY) {
12128
- let P = HY.map((_) => _.schemaName === "public" ? _.name : `${_.schemaName}.${_.name}`);
12128
+ let P = HY.map((_) => {
12129
+ let HY = addDoubleQuoteIfNeeded(_.name);
12130
+ return _.schemaName === "public" ? HY : `${addDoubleQuoteIfNeeded(_.schemaName)}.${HY}`;
12131
+ });
12129
12132
  _.push(" Tables {"), P.forEach((HY) => _.push(` ${HY}`)), _.push(" }");
12130
12133
  }
12131
12134
  function emitTableGroupsBlock(_, HY) {
12132
- _.push(" TableGroups {"), HY.forEach((HY) => _.push(` ${HY.name}`)), _.push(" }");
12135
+ _.push(" TableGroups {"), HY.forEach((HY) => _.push(` ${addDoubleQuoteIfNeeded(HY.name)}`)), _.push(" }");
12133
12136
  }
12134
12137
  function emitSchemasBlock(_, HY) {
12135
- _.push(" Schemas {"), HY.forEach((HY) => _.push(` ${HY.name}`)), _.push(" }");
12138
+ _.push(" Schemas {"), HY.forEach((HY) => _.push(` ${addDoubleQuoteIfNeeded(HY.name)}`)), _.push(" }");
12136
12139
  }
12137
12140
  function emitNotesBlock(_, HY) {
12138
- _.push(" Notes {"), HY.forEach((HY) => _.push(` ${HY.name}`)), _.push(" }");
12141
+ _.push(" Notes {"), HY.forEach((HY) => _.push(` ${addDoubleQuoteIfNeeded(HY.name)}`)), _.push(" }");
12139
12142
  }
12140
12143
  function generateDiagramViewBlock(_, HY) {
12141
12144
  let P = `DiagramView ${addDoubleQuoteIfNeeded(_)} {`;
@@ -1822037,5 +1822040,5 @@ function findDiagramViewBlocks(_) {
1822037
1822040
  let HY = new Compiler();
1822038
1822041
  return HY.setSource(_), HY.findDiagramViewBlocks();
1822039
1822042
  }
1822040
- const VERSION = "7.1.0";
1822043
+ const VERSION = "7.1.1";
1822041
1822044
  export { CompilerError, ModelExporter_default as ModelExporter, Parser_default as Parser, VERSION, addDoubleQuoteIfNeeded, dbmlMonarchTokensProvider, export_default as exporter, findDiagramViewBlocks, formatRecordValue, import_default as importer, isBinaryType, isBooleanType, isDateTimeType, isFloatType, isIntegerType, isNumericType, isSerialType, isStringType, renameTable, syncDiagramView, tryExtractBoolean, tryExtractDateTime, tryExtractEnum, tryExtractInteger, tryExtractNumeric, tryExtractString };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package",
3
3
  "name": "@dbml/core",
4
- "version": "7.1.0",
4
+ "version": "7.1.1",
5
5
  "description": "> TODO: description",
6
6
  "author": "Holistics <dev@holistics.io>",
7
7
  "license": "Apache-2.0",
@@ -46,7 +46,7 @@
46
46
  "lint:fix": "eslint --fix ."
47
47
  },
48
48
  "dependencies": {
49
- "@dbml/parse": "^7.1.0",
49
+ "@dbml/parse": "^7.1.1",
50
50
  "antlr4": "^4.13.1",
51
51
  "lodash": "^4.17.15",
52
52
  "lodash-es": "^4.17.15",
@@ -57,7 +57,7 @@
57
57
  "devDependencies": {
58
58
  "bluebird": "^3.5.5"
59
59
  },
60
- "gitHead": "ff4e35e824dfebc5237678dc03c983b409fbddc9",
60
+ "gitHead": "db3691bdada0e754afb76ed4c24c519a80fcddf9",
61
61
  "engines": {
62
62
  "node": ">=16"
63
63
  }
package/types/index.d.ts CHANGED
@@ -21,6 +21,7 @@ export type { DbmlExporterOptions } from './export/DbmlExporter';
21
21
  export type { JsonExporterOptions } from './export/JsonExporter';
22
22
  export type { ImportFormat, ImportOptions } from './import/index';
23
23
  export { CompilerDiagnostic, CompilerError, CompilerError as CompilerDiagnostics, EditorPosition, ErrorCode, WarningLevel } from './parse/error';
24
+ export * from './model_structure';
24
25
 
25
26
  export {
26
27
  isIntegerType,
@@ -40,38 +41,4 @@ export {
40
41
  addDoubleQuoteIfNeeded,
41
42
  formatRecordValue,
42
43
  } from '@dbml/parse';
43
- export type {
44
- Database,
45
- MasterDatabase,
46
- Table,
47
- Note,
48
- Column,
49
- ColumnType,
50
- Index,
51
- Check,
52
- InlineRef,
53
- Ref,
54
- RefEndpointPair,
55
- RefEndpoint,
56
- RelationCardinality,
57
- Enum,
58
- EnumField,
59
- TableGroup,
60
- TableGroupField,
61
- Alias,
62
- AliasKind,
63
- TablePartial,
64
- TablePartialInjection,
65
- RecordValue,
66
- RecordValueType,
67
- TableRecord,
68
- Project,
69
- SchemaElement,
70
- TokenPosition,
71
- ElementRef,
72
- DiagramView,
73
- FilterConfig,
74
- DiagramViewSyncOperation,
75
- DiagramViewBlock,
76
- TextEdit,
77
- } from '@dbml/parse';
44
+ export type { DiagramView, DiagramViewSyncOperation, DiagramViewBlock, FilterConfig, TextEdit } from '@dbml/parse';