@dbml/parse 8.2.2 → 8.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/dbml-parse.js
CHANGED
|
@@ -17,7 +17,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=Symbo
|
|
|
17
17
|
`,{allowNewline:!0,allowEof:!0,raw:!0,consumeStopSequence:!1})}multilineComment(){this.consumeUntil(y.MULTILINE_COMMENT,`*/`,{allowNewline:!0,allowEof:!1,raw:!0})}identifier(){for(;!this.isAtEnd()&&Bl(this.peek());)this.advance();this.addToken(y.IDENTIFIER)}operator(e){switch(e){case`<`:[`>`,`=`].includes(this.peek())&&this.advance();break;case`>`:this.peek()===`=`&&this.advance();break;case`=`:this.peek()===`=`&&this.advance();break;case`!`:this.peek()===`=`&&this.advance();break;default:break}this.addToken(y.OP)}numericLiteralOrIdentifier(){let e=0;if(this.isAtEnd())return this.addToken(y.NUMERIC_LITERAL);for(;!this.isAtEnd();){let t=this.check(`.`);if(e+=t?1:0,e>1)break;if(this.check(`e`)||this.check(`E`)){let e=this.peek(1),t=e===`+`||e===`-`,n=t?this.peek(2):e;if(n&&Rl(n)){for(this.advance(),t&&this.advance();!this.isAtEnd()&&Rl(this.peek());)this.advance();if(this.isAtEnd()||!Bl(this.peek()))return this.addToken(y.NUMERIC_LITERAL);break}break}if(!t&&this.current.offset===this.text.length-1)return this.advance(),this.addToken(y.NUMERIC_LITERAL);if(!t&&!Bl(this.peek()))return this.addToken(y.NUMERIC_LITERAL);if(!t&&!Rl(this.peek()))break;this.advance()}if(e>0){for(;!this.isAtEnd()&&(this.check(`.`)||Bl(this.peek()));)this.advance();let e=this.createToken(y.NUMERIC_LITERAL,!0);this.tokens.push(e),this.errors.push(new x(b.UNKNOWN_TOKEN,`Invalid number`,e))}else{for(;!this.isAtEnd()&&Bl(this.peek());)this.advance();let e=this.createToken(y.IDENTIFIER,!1);this.tokens.push(e)}}colorLiteral(){for(;!this.isAtEnd()&&Bl(this.peek());)this.advance();this.addToken(y.COLOR_LITERAL)}escapedString(){let e={column:this.current.column-1,offset:this.current.offset-1,line:this.current.line};if(this.isAtEnd())return`\\`;switch(this.advance()){case`\r`:return this.check(`
|
|
18
18
|
`)&&this.advance(),``;case`
|
|
19
19
|
`:return``;case`t`:return` `;case`n`:return`
|
|
20
|
-
`;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()||!Bl(this.peek()))return this.errors.push(new x(b.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`,Qc.create(y.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]}}};let QC=function(e){return e[e.ListExpression=0]=`ListExpression`,e[e.GroupExpression=1]=`GroupExpression`,e[e.BlockExpression=2]=`BlockExpression`,e}({});var $C=class{constructor(){this.stack=[],this.numberOfNestedLParens=0,this.numberOfNestedLBrackets=0,this.numberOfNestedLBraces=0}push(e){this.stack.push(e),e===QC.ListExpression&&(this.numberOfNestedLBrackets+=1),e===QC.GroupExpression&&(this.numberOfNestedLParens+=1),e===QC.BlockExpression&&(this.numberOfNestedLBraces+=1)}pop(){let e=this.stack.pop();return e===QC.ListExpression&&--this.numberOfNestedLBrackets,e===QC.GroupExpression&&--this.numberOfNestedLParens,e===QC.BlockExpression&&--this.numberOfNestedLBraces,e}top(){return _(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 y.COMMA:if(this.isWithinGroupExpressionContext()||this.isWithinListExpressionContext())return[...this.stack].reverse().find(e=>[QC.GroupExpression,QC.ListExpression].includes(e));break;case y.RPAREN:if(this.isWithinGroupExpressionContext())return QC.GroupExpression;break;case y.RBRACE:if(this.isWithinBlockExpressionContext())return QC.BlockExpression;break;case y.RBRACKET:if(this.isWithinListExpressionContext())return QC.ListExpression;break;default:break}}},ew=class{constructor(e,t){this.generator=e,this.filepath=t}create(e,t){return new e(t,this.generator.nextId(),this.filepath)}},$=class{constructor(e,t,n){this.token=e,this.partialNode=t,this.handlerContext=n}},tw=class{constructor(e,t,n,r){this.current=0,this.errors=[],this.contextStack=new $C,this.useSpecifierList=this.contextStack.withContextDo(QC.BlockExpression,()=>{let e={specifiers:[]},t=()=>this.nodeFactory.create(ad,e);try{this.consume(`Expect an opening brace '{'`,y.LBRACE),e.openBrace=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeUseSpecifierList()}for(;!this.isAtEnd()&&!this.check(y.RBRACE);){try{e.specifiers.push(this.useSpecifier())}catch(n){if(!(n instanceof $))throw n;if(n.partialNode instanceof id&&e.specifiers.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeUseSpecifierList()}if(this.check(y.IDENTIFIER)&&sl(this.peek()))break;!$c(this.previous())&&!this.check(y.RBRACE)&&this.logError(this.peek(),b.MISSING_SPACES,`Expect a newline between use specifiers`)}try{this.consume(`Expect a closing brace '}'`,y.RBRACE),e.closeBrace=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeUseSpecifierList()}return t()}),this.synchronizeUseSpecifierList=()=>{if(!this.check(y.RBRACE))for(H(this.advance());!this.isAtEnd();){let e=this.peek();if(this.check(y.RBRACE)||this.check(y.STRING_LITERAL)||this.check(y.IDENTIFIER)&&sl(e)||el(this.previous(),e))break;H(e),this.advance()}},this.synchronizeUseSpecifier=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(y.RBRACE)||el(this.previous(),e))break;H(e),this.advance()}},this.synchronizeProgram=()=>{let e=this.peek();e.kind===y.EOF?this.logError(e,b.UNEXPECTED_EOF,`Unexpected EOF`):H(this.advance())},this.synchronizeElementDeclarationName=()=>{for(;!this.isAtEnd();){let e=this.peek();if(al(e)||this.check(y.COLON,y.LBRACE,y.LBRACKET))break;H(e),this.advance()}},this.synchronizeElementDeclarationAlias=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(y.COLON,y.LBRACE,y.LBRACKET))break;H(e),this.advance()}},this.blockExpression=this.contextStack.withContextDo(QC.BlockExpression,()=>{let e={body:[]},t=()=>this.nodeFactory.create(z,e);try{this.consume(`Expect an opening brace '{'`,y.LBRACE),e.blockOpenBrace=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeBlock()}for(;!this.isAtEnd()&&!this.check(y.RBRACE);)try{e.body.push(this.canBeField()?this.fieldDeclaration():this.expression())}catch(n){if(!(n instanceof $))throw n;if(e.body.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeBlock()}try{this.consume(`Expect a closing brace '}'`,y.RBRACE),e.blockCloseBrace=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeBlock()}return t()}),this.synchronizeBlock=()=>{if(!this.check(y.RBRACE))for(H(this.advance());!this.isAtEnd();){let e=this.peek();if(this.check(y.RBRACE)||el(this.previous(),e))break;H(e),this.advance()}},this.tupleExpression=this.contextStack.withContextDo(QC.GroupExpression,()=>{let e={elementList:[],commaList:[]},t=()=>this.nodeFactory.create(fd,{groupOpenParen:e.tupleOpenParen,groupCloseParen:e.tupleCloseParen,expression:e.elementList[0]}),n=()=>this.nodeFactory.create(ud,e);try{this.consume(`Expect an opening parenthesis '('`,y.LPAREN),e.tupleOpenParen=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,n(),e.handlerContext);this.synchronizeTuple()}if(!this.isAtEnd()&&!this.check(y.RPAREN))try{e.elementList.push(this.normalExpression())}catch(n){if(!(n instanceof $))throw n;if(e.elementList.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeTuple()}for(;!this.isAtEnd()&&!this.check(y.RPAREN);)try{this.consume(`Expect a comma ','`,y.COMMA),e.commaList.push(this.previous()),e.elementList.push(this.normalExpression())}catch(t){if(!(t instanceof $))throw t;if(t.partialNode instanceof N&&e.elementList.push(t.partialNode),!this.canHandle(t))throw new $(t.token,n(),t.handlerContext);this.synchronizeTuple()}try{this.consume(`Expect a closing parenthesis ')'`,y.RPAREN),e.tupleCloseParen=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(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(y.RPAREN,y.COMMA))break;H(e),this.advance()}},this.listExpression=this.contextStack.withContextDo(QC.ListExpression,()=>{let e={elementList:[],commaList:[]},t=()=>this.nodeFactory.create(B,e);try{this.consume(`Expect an opening bracket '['`,y.LBRACKET),e.listOpenBracket=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeList()}if(!this.isAtEnd()&&!this.check(y.RBRACKET))try{e.elementList.push(this.attribute())}catch(n){if(!(n instanceof $))throw n;if(e.elementList.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeList()}for(;!this.isAtEnd()&&!this.check(y.RBRACKET);)try{this.consume(`Expect a comma ','`,y.COMMA),e.commaList.push(this.previous()),e.elementList.push(this.attribute())}catch(n){if(!(n instanceof $))throw n;if(n.partialNode instanceof N&&e.elementList.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeList()}try{this.consume(`Expect a closing bracket ']'`,y.RBRACKET),e.listCloseBracket=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeList()}return t()}),this.synchronizeList=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(y.COMMA,y.RBRACKET))break;H(e),this.advance()}},this.synchronizeAttributeName=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(y.COMMA,y.RBRACKET,y.COLON))break;H(e),this.advance()}},this.synchronizeAttributeValue=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(y.COMMA,y.RBRACKET))break;H(e),this.advance()}},this.source=e,this.tokens=t,this.nodeFactory=new ew(n,r),this.filepath=r}isAtEnd(){return this.current>=this.tokens.length||this.tokens[this.current].kind===y.EOF}advance(){return this.isAtEnd()?_(this.tokens):this.tokens[this.current++]}peek(e=0){return e+this.current>=this.tokens.length?_(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(),b.UNEXPECTED_TOKEN,e),new $(this.peek(),void 0,this.contextStack.findHandlerContext(this.tokens,this.current))}discardUntil(e,...t){if(this.isAtEnd()||!this.check(...t)){for(H(this.peek()),this.logError(this.advance(),b.UNEXPECTED_TOKEN,e);!this.isAtEnd()&&!this.check(...t);)H(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(),r=this.nodeFactory.create(nd,{body:e,eof:t,source:this.source});return this.gatherInvalid(),this.assignParents(r),new n({ast:r,tokens:this.tokens},this.errors)}assignParents(e){Ld(e).forEach(t=>{t instanceof N&&(t.parentNode=e,this.assignParents(t))})}program(){let e=[];for(;!this.isAtEnd();)if(ol(this.peek())||cl(this.peek()))try{e.push(this.useDeclaration())}catch(t){if(!(t instanceof $))throw t;t.partialNode instanceof rd&&e.push(t.partialNode),this.synchronizeProgram()}else try{e.push(this.elementDeclaration())}catch(t){if(!(t instanceof $))throw t;e.push(t.partialNode),this.synchronizeProgram()}return e}useDeclaration(){let e={},t=()=>this.nodeFactory.create(rd,e);if(this.advance(),e.useKeyword=this.previous(),this.peek().kind===y.WILDCARD)this.advance(),e.specifiers=this.nodeFactory.create(md,{token:this.previous()});else try{e.specifiers=this.useSpecifierList()}catch(t){if(!(t instanceof $))throw t;t.partialNode instanceof ad&&(e.specifiers=t.partialNode)}let n=e.specifiers instanceof md?`'*'`:`specifier list`;return sl(this.peek())?e.fromKeyword=this.advance():this.logError(this.peek(),b.UNEXPECTED_TOKEN,`Expect 'from' after ${n}`),this.match(y.STRING_LITERAL)?e.importPath=this.previous():this.logError(this.peek(),b.UNEXPECTED_TOKEN,`Expect a string literal path`),t()}useSpecifier(){let e={},t=()=>this.nodeFactory.create(id,e);try{this.consume(`Expect an import kind specifier (e.g. table, enum)`,y.IDENTIFIER),e.importKind=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeUseSpecifier()}if(this.check(y.IDENTIFIER,y.QUOTED_STRING))try{e.name=this.normalExpression()}catch(n){if(!(n instanceof $))throw n;if(n.partialNode instanceof N&&(e.name=n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeUseSpecifier()}else e.importKind&&this.logError(this.peek(),b.UNEXPECTED_TOKEN,`Expect an element name`);if(al(this.peek())){e.asKeyword=this.advance();try{if(!this.check(y.IDENTIFIER,y.QUOTED_STRING))throw this.logError(this.peek(),b.UNEXPECTED_TOKEN,`Expect an alias name after 'as'`),new $(this.peek(),t(),this.contextStack.findHandlerContext(this.tokens,this.current));e.alias=this.normalExpression()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeUseSpecifier()}}return t()}elementDeclaration(){let e={},t=()=>this.nodeFactory.create(F,e);try{this.consume(`Expect an identifier`,y.IDENTIFIER),e.type=this.previous()}catch(e){throw e instanceof $?new $(e.token,t(),e.handlerContext):e}if(!this.check(y.COLON,y.LBRACE,y.LBRACKET))try{e.name=this.normalExpression()}catch(n){if(!(n instanceof $))throw n;if(e.name=n.partialNode,!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeElementDeclarationName()}if(al(this.peek()))if(e.as=this.advance(),this.check(y.COLON,y.LBRACE,y.LBRACKET))this.logError(this.peek(),b.UNEXPECTED_TOKEN,`Expect an alias`);else try{e.alias=this.normalExpression()}catch(n){if(!(n instanceof $))throw n;if(e.alias=n.partialNode,!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeElementDeclarationAlias()}try{e.attributeList=this.check(y.LBRACKET)?this.listExpression():void 0}catch(n){throw n instanceof $?(e.attributeList=n.partialNode,new $(n.token,t(),n.handlerContext)):n}if(!this.discardUntil(`Expect an opening brace '{' or a colon ':'`,y.LBRACE,y.COLON))return t();try{if(this.match(y.COLON)){e.bodyColon=this.previous();let t=this.expression();t instanceof F?(H(t),this.logError(t,b.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 $?(e.body=n.partialNode,new $(n.token,t(),n.handlerContext)):n}return this.nodeFactory.create(F,e)}fieldDeclaration(){let e={},t=()=>this.nodeFactory.create(F,e);try{this.consume(`Expect an identifier`,y.IDENTIFIER),e.type=this.previous()}catch(n){throw n instanceof $?(e.type=n.partialNode,new $(n.token,t(),n.handlerContext)):n}try{this.consume(`Expect a colon ':'`,y.COLON),e.bodyColon=this.previous()}catch(n){throw n instanceof $?(e.bodyColon=n.partialNode,new $(n.token,t(),n.handlerContext)):n}try{let t=this.expression();t instanceof F?this.errors.push(new x(b.INVALID_ELEMENT_IN_SIMPLE_BODY,`Simple body cannot be an element declaration`,t)):e.body=t}catch(n){throw n instanceof $?(e.body=n.partialNode,new $(n.token,t(),n.handlerContext)):n}return this.nodeFactory.create(F,e)}expression(){let e={args:[]},t=()=>Nd(e.callee,e.args,this.nodeFactory)??this.nodeFactory.create(R,e);try{e.callee=this.commaExpression()}catch(n){throw n instanceof $?(e.callee=n.partialNode,new $(n.token,t(),n.handlerContext)):n}if(this.shouldStopFunctionApplication())return t();let n=e.callee;for(;!this.shouldStopFunctionApplication();){tl(this.previous())||this.logError(n,b.MISSING_SPACES,`Expect a following space`);try{n=this.commaExpression(),e.args.push(n)}catch(r){throw r instanceof $?(n=r.partialNode,e.args.push(n),new $(r.token,t(),r.handlerContext)):r}}return t()}shouldStopFunctionApplication(){if(this.isAtEnd()||$c(this.previous()))return!0;let e=this.peek().kind;return[y.RBRACE,y.RBRACKET,y.RPAREN,y.COMMA,y.COLON].includes(e)}commaExpression(){let e=this.check(y.COMMA)?this.nodeFactory.create(_d,{prevToken:this.previous()}):this.normalExpression();if(!this.check(y.COMMA))return e;let t={elementList:[e],commaList:[]};do{if(t.commaList.push(this.advance()),this.shouldStopCommaExpression()){t.elementList.push(this.nodeFactory.create(_d,{prevToken:this.previous()}));break}if(this.check(y.COMMA)){t.elementList.push(this.nodeFactory.create(_d,{prevToken:this.previous()}));continue}try{let e=this.normalExpression();t.elementList.push(e)}catch(e){throw e instanceof $?(e.partialNode&&t.elementList.push(e.partialNode),new $(e.token,this.nodeFactory.create(dd,t),e.handlerContext)):e}}while(!this.shouldStopCommaExpression()&&this.check(y.COMMA));return this.nodeFactory.create(dd,t)}shouldStopCommaExpression(){if(this.isAtEnd()||$c(this.previous()))return!0;let e=this.peek().kind;return[y.RBRACE,y.LBRACE,y.RBRACKET,y.LBRACKET,y.RPAREN,y.LPAREN,y.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===y.LPAREN){let{left:r}=sw(n);if(r<e||el(this.previous(),n)&&!this.contextStack.isWithinGroupExpressionContext()&&!this.contextStack.isWithinListExpressionContext())break;try{t=this.nodeFactory.create(V,{callee:t,argumentList:this.tupleExpression()})}catch(e){throw e instanceof $?(t=this.nodeFactory.create(V,{callee:t,argumentList:e.partialNode}),new $(e.token,t,e.handlerContext)):e}}else if(n.kind===y.LBRACKET){if(tl(this.previous()))break;try{t=this.nodeFactory.create(vd,{expression:t,indexer:this.listExpression()})}catch(e){throw e instanceof $?(t=this.nodeFactory.create(vd,{expression:t,indexer:e.partialNode}),new $(e.token,t,e.handlerContext)):e}}else if(Zc(n)){let r=n,i=sw(r);if(i.left!==null){if(i.left<=e)break;this.advance(),t=this.nodeFactory.create(cd,{expression:t,op:r})}else{let n=rw(r);if(n.left===null||n.left<=e)break;this.advance();try{t=this.nodeFactory.create(sd,{leftExpression:t,op:r,rightExpression:r.value===`.`?this.extractOperand():this.expression_bp(n.right)})}catch(e){throw e instanceof $?(t=this.nodeFactory.create(sd,{leftExpression:t,op:r,rightExpression:e.partialNode}),new $(e.token,t,e.handlerContext)):e}}}else break}return t}leftExpression_bp(){let e;if(Zc(this.peek())){let t={};t.op=this.peek();let n=aw(t.op);if(n.right===null)throw this.logError(t.op,b.UNKNOWN_PREFIX_OP,`Unexpected '${t.op.value}' in an expression`),new $(t.op,this.nodeFactory.create(_d,{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 $?(t.expression=e.partialNode,new $(e.token,this.nodeFactory.create(L,t),e.handlerContext)):e}e=this.nodeFactory.create(L,t)}else if(e=this.extractOperand(),e instanceof _d)throw new $(this.peek(),this.nodeFactory.create(_d,{prevToken:this.peek()}),this.contextStack.findHandlerContext(this.tokens,this.current));return e}extractOperand(){return this.check(y.WILDCARD)?this.wildcardExpression():this.check(y.NUMERIC_LITERAL,y.STRING_LITERAL,y.COLOR_LITERAL,y.QUOTED_STRING,y.IDENTIFIER)?this.primaryExpression():this.check(y.FUNCTION_EXPRESSION)?this.functionExpression():this.check(y.LBRACKET)?this.listExpression():this.check(y.LBRACE)?this.blockExpression():this.check(y.LPAREN)?this.tupleExpression():(this.peek().kind===y.EOF?this.logError(this.peek(),b.UNEXPECTED_EOF,`Unexpected EOF`):this.logError(this.peek(),b.INVALID_OPERAND,`Invalid start of operand "${this.peek().value}"`),this.nodeFactory.create(_d,{prevToken:this.previous()}))}functionExpression(){let e={};try{this.consume(`Expect a function expression`,y.FUNCTION_EXPRESSION),e.value=this.previous()}catch(t){throw t instanceof $?new $(t.token,this.nodeFactory.create(ld,e),t.handlerContext):t}return this.nodeFactory.create(ld,e)}wildcardExpression(){return this.advance(),this.nodeFactory.create(md,{token:this.previous()})}canBeField(){return this.peek().kind===y.IDENTIFIER&&this.peek(1).kind===y.COLON}primaryExpression(){if(this.match(y.COLOR_LITERAL,y.STRING_LITERAL,y.NUMERIC_LITERAL))return this.nodeFactory.create(gd,{expression:this.nodeFactory.create(pd,{literal:this.previous()})});if(this.match(y.QUOTED_STRING,y.IDENTIFIER))return this.nodeFactory.create(gd,{expression:this.nodeFactory.create(hd,{variable:this.previous()})});throw this.logError(this.peek(),b.UNEXPECTED_TOKEN,`Expect a variable or literal`),new $(this.peek(),void 0,this.contextStack.findHandlerContext(this.tokens,this.current))}attribute(){let e={};if(this.check(y.COLON,y.RBRACKET,y.COMMA)){let t=this.peek();this.logError(t,b.EMPTY_ATTRIBUTE_NAME,`Expect a non-empty attribute name`),e.name=this.nodeFactory.create(od,{identifiers:[]})}else try{e.name=this.attributeName()}catch(t){if(!(t instanceof $))throw t;if(e.name=t.partialNode,!this.canHandle(t))throw new $(t.token,this.nodeFactory.create(I,e),t.handlerContext);this.synchronizeAttributeName()}return this.match(y.COLON)&&(e.colon=this.previous(),e.value=this.attributeValue()),this.nodeFactory.create(I,e)}attributeValue(){let e;try{e=this.peek().kind===y.IDENTIFIER&&this.peek(1).kind===y.IDENTIFIER?this.attributeName():this.normalExpression()}catch(t){if(!(t instanceof $)||!this.canHandle(t))throw t;e=t.partialNode,this.synchronizeAttributeValue()}return e}attributeName(){let e=[];if(this.peek().kind!==y.IDENTIFIER)return this.primaryExpression();for(;!this.isAtEnd()&&!this.check(y.COLON,y.COMMA,y.RBRACKET);)try{this.consume(`Expect an identifier`,y.IDENTIFIER),e.push(this.previous())}catch(t){throw t instanceof $?new $(t.token,this.nodeFactory.create(od,{identifiers:e}),t.handlerContext):t}return this.nodeFactory.create(od,{identifiers:e})}logError(e,t,n){this.errors.push(new x(t,n,e))}},nw={"+":{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 rw(e){return nw[e.value]||{left:null,right:null}}var iw={"+":{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 aw(e){return iw[e.value]||{left:null,right:null}}var ow={"(":{left:14,right:null}};function sw(e){return ow[e.value]||{left:null,right:null}}function cw(e){let t=this.getSource(e);return new ZC(t??``,e).lex().chain(n=>new tw(t??``,n,this.nodeIdGenerator,e).parse()).map(({ast:t,tokens:n})=>({ast:t,tokens:n,path:e}))}function lw(){let e=Sy(this,this.layout.getEntrypoints()),t=new Map;for(let n of e){let e=this.parseFile(n);t.set(n.absolute,e)}return t}function uw(e,n,r){let i;if(e instanceof Pu)i=e;else{let n=this.nodeSymbol(e).getFiltered(t);if(!(n instanceof Pu))return;i=n}let a=Array.isArray(n)?n:[n],o=this.symbolMembers(i).getFiltered(t);if(o)return o.find(e=>a.length&&!e.isKind(...a)?!1:e instanceof $u?Xv.visibleName(this,e)?.at(-1)===r:e.name===r)}function dw(e){let t=e.originalSymbol;return Cy(this).map(n=>n.filter(n=>n instanceof Qu&&n.originalSymbol===t&&n!==e))}function fw(){let e=new Map,n=new Map,r=this.parseProject();this.bindProject();let i=new Set,a=(t,n)=>{if(i.has(n))return;i.add(n);let r=t.intern(),a=e.get(r);a||(a=[],e.set(r,a)),a.push(n);let o=t.originalSymbol;if(o!==t){let t=o.intern(),r=e.get(t);r||(r=[],e.set(t,r)),r.push(n)}},o=e=>{for(let t of e.owners(this)){let r=t.intern(),i=n.get(r);i||(i=[],n.set(r,i)),i.push(e)}};for(let e of r.values()){let n=e.getValue().ast,r=e=>{if(w(e)){let n=Qy.call(this,e).getFiltered(t);n&&a(n,e);return}if(e instanceof ud&&T(e.parentNode)&&e.parentNode.rightExpression===e){let n=e.parentNode.leftExpression;if(n){let e=fu(n);if(e){let n=Qy.call(this,e).getFiltered(t);n&&a(n,e)}}}let n=this.nodeMetadata(e).getFiltered(t);n&&o(n);for(let t of Ld(e))t instanceof N&&r(t)};r(n)}let s=new Map,c=new Set;function l(e,n){let r=n.intern();if(c.has(r))return;c.add(r);let i=e.symbolMembers(n).getFiltered(t);if(i)for(let t of i){let r=t.intern(),i=s.get(r);i||(i=[],s.set(r,i)),i.push(n),t instanceof Fu&&t.isKind(M.Schema)&&l(e,t)}}for(let e of r.values()){let n=e.getValue().ast,r=this.nodeSymbol(n).getFiltered(t);r&&l(this,r)}return{references:e,metadata:n,parents:s}}function pw(e){return this.resolutionIndex().parents.get(e.intern())??[]}function mw(e){return this.resolutionIndex().references.get(e.intern())??[]}function hw(e){return this.resolutionIndex().metadata.get(e.intern())??[]}function gw(e){let t=e.originalSymbol;return Cy(this).map(n=>n.filter(n=>n instanceof $u&&n.originalSymbol===t&&n!==e))}function _w(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 vw(e){if(typeof e!=`string`)return{schema:e.schema??`public`,table:e.table};let t=xy(e);if(t.length===0)return{schema:Pl,table:``};if(t.length===1)return{schema:Pl,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 yw(e,n,r,i){let a=e.parseFile(n).getValue().ast,o=e.nodeSymbol(a).getFiltered(t);if(!o)return null;if(r===`public`)return e.lookupMembers(o,M.Table,i)??null;let s=e.lookupMembers(o,M.Schema,r);return s?e.lookupMembers(s,M.Table,i)??null:null}function bw(e){return e.startsWith(`"`)&&e.endsWith(`"`)&&e.length>=2?e.slice(1,-1):e}function xw(e,t){if(!e||!(e instanceof F))return!1;let n=e.name;return n?t.substring(n.start,n.end).includes(`"`):!1}function Sw(e,t,n){let r=!gy(t),i=!gy(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 Cw(e,t,n,r,i,a){return n===i&&r===a?!1:yw(e,t,i,a)!==null}function ww(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 bw(n.substring(i,a))===t?{start:i,end:e.end}:null}function Tw(e){return e.schema===`public`?e.formattedTable:`${e.formattedSchema}.${e.formattedTable}`}function Ew(e,t,n,r,i){let a=[],o=new Set,s=Tw(r);for(let r of e){if(bw(i.substring(r.start,r.end))!==n)continue;let e=ww(r,t,i)??{start:r.start,end:r.end},c=`${e.start}-${e.end}`;o.has(c)||(o.add(c),a.push({start:e.start,end:e.end,newText:s}))}return a}function Dw(e,n,r){let i=vw(n),a=vw(r),o=i.schema,s=i.table,c=a.schema,l=a.table,u=yw(this,e,o,s);if(!u||u instanceof Qu||Cw(this,e,o,s,c,l))return new Map;if(u instanceof $u&&u.useSpecifierDeclaration instanceof id&&u.useSpecifierDeclaration.alias){let n=u.useSpecifierDeclaration;if(this.nodeAlias(n).getFiltered(t)===s)return Ow(this,e,n,u,c,l)}return kw(this,u,o,s,c,l)}function Ow(e,t,n,r,i,a){let o=e.getSource(t)??``;if(!n.alias)return new Map;let s=Sw(i,a,o.substring(n.alias.start,n.alias.end).includes(`"`)),c=[];c.push({start:n.alias.start,end:n.alias.end,newText:s.formattedTable});let l=e.symbolReferences(r);for(let e of l)e.filepath.absolute===t.absolute&&e!==n.alias&&c.push({start:e.start,end:e.end,newText:s.formattedTable});return new Map([[t.absolute,_w(o,c)]])}function kw(e,t,n,r,i,a){let o=t.originalSymbol,s=o.declaration;if(!s||!(s instanceof F))return new Map;let c=s.filepath;if(!c)return new Map;let l=Sw(i,a,xw(s,e.getSource(c)??``)),u=new Map,d=(e,t)=>{let n=e.absolute,r=u.get(n);r||(r={fp:e,edits:[]},u.set(n,r)),r.edits.push(t)},f=s.name;f&&d(c,{start:f.start,end:f.end,newText:Tw(l)});let p=e.symbolReferences(o);for(let t of p){if(t===f)continue;let i=t.filepath,a=e.getSource(i)??``;for(let e of Ew([t],n,r,l,a))d(i,e)}let m=new Map;for(let{fp:t,edits:n}of u.values()){let r=e.getSource(t)??``;m.set(t.absolute,_w(r,n))}return m}function Aw(e){let t=[],n=new ZC(e,Fl).lex();if(n.getErrors().length>0)return t;let i=new tw(e,n.getValue(),new td,Fl).parse();if(i.getErrors().length>0)return t;let a=i.getValue().ast;for(let e of a.declarations)if(e.isKind(r.DiagramView)){let n=e.name?O(e.name)??[]:[],r=n.length>0?n[n.length-1]:``;t.push({name:r,startIndex:e.start,endIndex:e.end})}return t}function jw(e,t){let n=t.map(e=>{let t=_y(e.name);return e.schemaName===`public`?t:`${_y(e.schemaName)}.${t}`});e.push(` Tables {`),n.forEach(t=>e.push(` ${t}`)),e.push(` }`)}function Mw(e,t){e.push(` TableGroups {`),t.forEach(t=>e.push(` ${_y(t.name)}`)),e.push(` }`)}function Nw(e,t){e.push(` Schemas {`),t.forEach(t=>e.push(` ${_y(t.name)}`)),e.push(` }`)}function Pw(e,t){e.push(` Notes {`),t.forEach(t=>e.push(` ${_y(t.name)}`)),e.push(` }`)}function Fw(e,t){let n=`DiagramView ${_y(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 Pw(e,o),e.push(`}`),e.join(`
|
|
20
|
+
`;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()||!Bl(this.peek()))return this.errors.push(new x(b.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`,Qc.create(y.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]}}};let QC=function(e){return e[e.ListExpression=0]=`ListExpression`,e[e.GroupExpression=1]=`GroupExpression`,e[e.BlockExpression=2]=`BlockExpression`,e}({});var $C=class{constructor(){this.stack=[],this.numberOfNestedLParens=0,this.numberOfNestedLBrackets=0,this.numberOfNestedLBraces=0}push(e){this.stack.push(e),e===QC.ListExpression&&(this.numberOfNestedLBrackets+=1),e===QC.GroupExpression&&(this.numberOfNestedLParens+=1),e===QC.BlockExpression&&(this.numberOfNestedLBraces+=1)}pop(){let e=this.stack.pop();return e===QC.ListExpression&&--this.numberOfNestedLBrackets,e===QC.GroupExpression&&--this.numberOfNestedLParens,e===QC.BlockExpression&&--this.numberOfNestedLBraces,e}top(){return _(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 y.COMMA:if(this.isWithinGroupExpressionContext()||this.isWithinListExpressionContext())return[...this.stack].reverse().find(e=>[QC.GroupExpression,QC.ListExpression].includes(e));break;case y.RPAREN:if(this.isWithinGroupExpressionContext())return QC.GroupExpression;break;case y.RBRACE:if(this.isWithinBlockExpressionContext())return QC.BlockExpression;break;case y.RBRACKET:if(this.isWithinListExpressionContext())return QC.ListExpression;break;default:break}}},ew=class{constructor(e,t){this.generator=e,this.filepath=t}create(e,t){return new e(t,this.generator.nextId(),this.filepath)}},$=class{constructor(e,t,n){this.token=e,this.partialNode=t,this.handlerContext=n}},tw=class{constructor(e,t,n,r){this.current=0,this.errors=[],this.contextStack=new $C,this.useSpecifierList=this.contextStack.withContextDo(QC.BlockExpression,()=>{let e={specifiers:[]},t=()=>this.nodeFactory.create(ad,e);try{this.consume(`Expect an opening brace '{'`,y.LBRACE),e.openBrace=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeUseSpecifierList()}for(;!this.isAtEnd()&&!this.check(y.RBRACE);){try{e.specifiers.push(this.useSpecifier())}catch(n){if(!(n instanceof $))throw n;if(n.partialNode instanceof id&&e.specifiers.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeUseSpecifierList()}if(this.check(y.IDENTIFIER)&&sl(this.peek()))break;!$c(this.previous())&&!this.check(y.RBRACE)&&this.logError(this.peek(),b.MISSING_SPACES,`Expect a newline between use specifiers`)}try{this.consume(`Expect a closing brace '}'`,y.RBRACE),e.closeBrace=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeUseSpecifierList()}return t()}),this.synchronizeUseSpecifierList=()=>{if(!this.check(y.RBRACE))for(H(this.advance());!this.isAtEnd();){let e=this.peek();if(this.check(y.RBRACE)||this.check(y.STRING_LITERAL)||this.check(y.IDENTIFIER)&&sl(e)||el(this.previous(),e))break;H(e),this.advance()}},this.synchronizeProgram=()=>{let e=this.peek();e.kind===y.EOF?this.logError(e,b.UNEXPECTED_EOF,`Unexpected EOF`):H(this.advance())},this.synchronizeElementDeclarationName=()=>{for(;!this.isAtEnd();){let e=this.peek();if(al(e)||this.check(y.COLON,y.LBRACE,y.LBRACKET))break;H(e),this.advance()}},this.synchronizeElementDeclarationAlias=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(y.COLON,y.LBRACE,y.LBRACKET))break;H(e),this.advance()}},this.blockExpression=this.contextStack.withContextDo(QC.BlockExpression,()=>{let e={body:[]},t=()=>this.nodeFactory.create(z,e);try{this.consume(`Expect an opening brace '{'`,y.LBRACE),e.blockOpenBrace=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeBlock()}for(;!this.isAtEnd()&&!this.check(y.RBRACE);)try{e.body.push(this.canBeField()?this.fieldDeclaration():this.expression())}catch(n){if(!(n instanceof $))throw n;if(e.body.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeBlock()}try{this.consume(`Expect a closing brace '}'`,y.RBRACE),e.blockCloseBrace=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeBlock()}return t()}),this.synchronizeBlock=()=>{if(!this.check(y.RBRACE))for(H(this.advance());!this.isAtEnd();){let e=this.peek();if(this.check(y.RBRACE)||el(this.previous(),e))break;H(e),this.advance()}},this.tupleExpression=this.contextStack.withContextDo(QC.GroupExpression,()=>{let e={elementList:[],commaList:[]},t=()=>this.nodeFactory.create(fd,{groupOpenParen:e.tupleOpenParen,groupCloseParen:e.tupleCloseParen,expression:e.elementList[0]}),n=()=>this.nodeFactory.create(ud,e);try{this.consume(`Expect an opening parenthesis '('`,y.LPAREN),e.tupleOpenParen=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,n(),e.handlerContext);this.synchronizeTuple()}if(!this.isAtEnd()&&!this.check(y.RPAREN))try{e.elementList.push(this.normalExpression())}catch(n){if(!(n instanceof $))throw n;if(e.elementList.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeTuple()}for(;!this.isAtEnd()&&!this.check(y.RPAREN);)try{this.consume(`Expect a comma ','`,y.COMMA),e.commaList.push(this.previous()),e.elementList.push(this.normalExpression())}catch(t){if(!(t instanceof $))throw t;if(t.partialNode instanceof N&&e.elementList.push(t.partialNode),!this.canHandle(t))throw new $(t.token,n(),t.handlerContext);this.synchronizeTuple()}try{this.consume(`Expect a closing parenthesis ')'`,y.RPAREN),e.tupleCloseParen=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(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(y.RPAREN,y.COMMA))break;H(e),this.advance()}},this.listExpression=this.contextStack.withContextDo(QC.ListExpression,()=>{let e={elementList:[],commaList:[]},t=()=>this.nodeFactory.create(B,e);try{this.consume(`Expect an opening bracket '['`,y.LBRACKET),e.listOpenBracket=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeList()}if(!this.isAtEnd()&&!this.check(y.RBRACKET))try{e.elementList.push(this.attribute())}catch(n){if(!(n instanceof $))throw n;if(e.elementList.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeList()}for(;!this.isAtEnd()&&!this.check(y.RBRACKET);)try{this.consume(`Expect a comma ','`,y.COMMA),e.commaList.push(this.previous()),e.elementList.push(this.attribute())}catch(n){if(!(n instanceof $))throw n;if(n.partialNode instanceof N&&e.elementList.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeList()}try{this.consume(`Expect a closing bracket ']'`,y.RBRACKET),e.listCloseBracket=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeList()}return t()}),this.synchronizeList=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(y.COMMA,y.RBRACKET))break;H(e),this.advance()}},this.synchronizeAttributeName=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(y.COMMA,y.RBRACKET,y.COLON))break;H(e),this.advance()}},this.synchronizeAttributeValue=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(y.COMMA,y.RBRACKET))break;H(e),this.advance()}},this.source=e,this.tokens=t,this.nodeFactory=new ew(n,r),this.filepath=r}isAtEnd(){return this.current>=this.tokens.length||this.tokens[this.current].kind===y.EOF}advance(){return this.isAtEnd()?_(this.tokens):this.tokens[this.current++]}peek(e=0){return e+this.current>=this.tokens.length?_(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(),b.UNEXPECTED_TOKEN,e),new $(this.peek(),void 0,this.contextStack.findHandlerContext(this.tokens,this.current))}discardUntil(e,...t){if(this.isAtEnd()||!this.check(...t)){for(H(this.peek()),this.logError(this.advance(),b.UNEXPECTED_TOKEN,e);!this.isAtEnd()&&!this.check(...t);)H(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(),r=this.nodeFactory.create(nd,{body:e,eof:t,source:this.source});return this.gatherInvalid(),this.assignParents(r),new n({ast:r,tokens:this.tokens},this.errors)}assignParents(e){Ld(e).forEach(t=>{t instanceof N&&(t.parentNode=e,this.assignParents(t))})}program(){let e=[];for(;!this.isAtEnd();)if(ol(this.peek())||cl(this.peek()))try{e.push(this.useDeclaration())}catch(t){if(!(t instanceof $))throw t;t.partialNode instanceof rd&&e.push(t.partialNode),this.synchronizeProgram()}else try{e.push(this.elementDeclaration())}catch(t){if(!(t instanceof $))throw t;e.push(t.partialNode),this.synchronizeProgram()}return e}useDeclaration(){let e={},t=()=>this.nodeFactory.create(rd,e);if(this.advance(),e.useKeyword=this.previous(),this.peek().kind===y.WILDCARD)this.advance(),e.specifiers=this.nodeFactory.create(md,{token:this.previous()});else try{e.specifiers=this.useSpecifierList()}catch(t){if(!(t instanceof $))throw t;t.partialNode instanceof ad&&(e.specifiers=t.partialNode)}let n=e.specifiers instanceof md?`'*'`:`specifier list`;return sl(this.peek())?e.fromKeyword=this.advance():this.logError(this.peek(),b.UNEXPECTED_TOKEN,`Expect 'from' after ${n}`),this.match(y.STRING_LITERAL)?e.importPath=this.previous():this.logError(this.peek(),b.UNEXPECTED_TOKEN,`Expect a string literal path`),t()}useSpecifier(){let e={},t=()=>this.nodeFactory.create(id,e);try{this.consume(`Expect an import kind specifier (e.g. table, enum)`,y.IDENTIFIER),e.importKind=this.previous()}catch(e){throw e instanceof $?new $(e.token,t(),e.handlerContext):e}if(this.check(y.IDENTIFIER,y.QUOTED_STRING))try{e.name=this.normalExpression()}catch(n){throw n instanceof $?(n.partialNode instanceof N&&(e.name=n.partialNode),new $(n.token,t(),n.handlerContext)):n}else e.importKind&&this.logError(this.peek(),b.UNEXPECTED_TOKEN,`Expect an element name`);if(al(this.peek())){e.asKeyword=this.advance();try{if(!this.check(y.IDENTIFIER,y.QUOTED_STRING))throw this.logError(this.peek(),b.UNEXPECTED_TOKEN,`Expect an alias name after 'as'`),new $(this.peek(),t(),this.contextStack.findHandlerContext(this.tokens,this.current));e.alias=this.normalExpression()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext)}}return t()}elementDeclaration(){let e={},t=()=>this.nodeFactory.create(F,e);try{this.consume(`Expect an identifier`,y.IDENTIFIER),e.type=this.previous()}catch(e){throw e instanceof $?new $(e.token,t(),e.handlerContext):e}if(!this.check(y.COLON,y.LBRACE,y.LBRACKET))try{e.name=this.normalExpression()}catch(n){if(!(n instanceof $))throw n;if(e.name=n.partialNode,!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeElementDeclarationName()}if(al(this.peek()))if(e.as=this.advance(),this.check(y.COLON,y.LBRACE,y.LBRACKET))this.logError(this.peek(),b.UNEXPECTED_TOKEN,`Expect an alias`);else try{e.alias=this.normalExpression()}catch(n){if(!(n instanceof $))throw n;if(e.alias=n.partialNode,!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeElementDeclarationAlias()}try{e.attributeList=this.check(y.LBRACKET)?this.listExpression():void 0}catch(n){throw n instanceof $?(e.attributeList=n.partialNode,new $(n.token,t(),n.handlerContext)):n}if(!this.discardUntil(`Expect an opening brace '{' or a colon ':'`,y.LBRACE,y.COLON))return t();try{if(this.match(y.COLON)){e.bodyColon=this.previous();let t=this.expression();t instanceof F?(H(t),this.logError(t,b.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 $?(e.body=n.partialNode,new $(n.token,t(),n.handlerContext)):n}return this.nodeFactory.create(F,e)}fieldDeclaration(){let e={},t=()=>this.nodeFactory.create(F,e);try{this.consume(`Expect an identifier`,y.IDENTIFIER),e.type=this.previous()}catch(n){throw n instanceof $?(e.type=n.partialNode,new $(n.token,t(),n.handlerContext)):n}try{this.consume(`Expect a colon ':'`,y.COLON),e.bodyColon=this.previous()}catch(n){throw n instanceof $?(e.bodyColon=n.partialNode,new $(n.token,t(),n.handlerContext)):n}try{let t=this.expression();t instanceof F?this.errors.push(new x(b.INVALID_ELEMENT_IN_SIMPLE_BODY,`Simple body cannot be an element declaration`,t)):e.body=t}catch(n){throw n instanceof $?(e.body=n.partialNode,new $(n.token,t(),n.handlerContext)):n}return this.nodeFactory.create(F,e)}expression(){let e={args:[]},t=()=>Nd(e.callee,e.args,this.nodeFactory)??this.nodeFactory.create(R,e);try{e.callee=this.commaExpression()}catch(n){throw n instanceof $?(e.callee=n.partialNode,new $(n.token,t(),n.handlerContext)):n}if(this.shouldStopFunctionApplication())return t();let n=e.callee;for(;!this.shouldStopFunctionApplication();){tl(this.previous())||this.logError(n,b.MISSING_SPACES,`Expect a following space`);try{n=this.commaExpression(),e.args.push(n)}catch(r){throw r instanceof $?(n=r.partialNode,e.args.push(n),new $(r.token,t(),r.handlerContext)):r}}return t()}shouldStopFunctionApplication(){if(this.isAtEnd()||$c(this.previous()))return!0;let e=this.peek().kind;return[y.RBRACE,y.RBRACKET,y.RPAREN,y.COMMA,y.COLON].includes(e)}commaExpression(){let e=this.check(y.COMMA)?this.nodeFactory.create(_d,{prevToken:this.previous()}):this.normalExpression();if(!this.check(y.COMMA))return e;let t={elementList:[e],commaList:[]};do{if(t.commaList.push(this.advance()),this.shouldStopCommaExpression()){t.elementList.push(this.nodeFactory.create(_d,{prevToken:this.previous()}));break}if(this.check(y.COMMA)){t.elementList.push(this.nodeFactory.create(_d,{prevToken:this.previous()}));continue}try{let e=this.normalExpression();t.elementList.push(e)}catch(e){throw e instanceof $?(e.partialNode&&t.elementList.push(e.partialNode),new $(e.token,this.nodeFactory.create(dd,t),e.handlerContext)):e}}while(!this.shouldStopCommaExpression()&&this.check(y.COMMA));return this.nodeFactory.create(dd,t)}shouldStopCommaExpression(){if(this.isAtEnd()||$c(this.previous()))return!0;let e=this.peek().kind;return[y.RBRACE,y.LBRACE,y.RBRACKET,y.LBRACKET,y.RPAREN,y.LPAREN,y.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===y.LPAREN){let{left:r}=sw(n);if(r<e||el(this.previous(),n)&&!this.contextStack.isWithinGroupExpressionContext()&&!this.contextStack.isWithinListExpressionContext())break;try{t=this.nodeFactory.create(V,{callee:t,argumentList:this.tupleExpression()})}catch(e){throw e instanceof $?(t=this.nodeFactory.create(V,{callee:t,argumentList:e.partialNode}),new $(e.token,t,e.handlerContext)):e}}else if(n.kind===y.LBRACKET){if(tl(this.previous()))break;try{t=this.nodeFactory.create(vd,{expression:t,indexer:this.listExpression()})}catch(e){throw e instanceof $?(t=this.nodeFactory.create(vd,{expression:t,indexer:e.partialNode}),new $(e.token,t,e.handlerContext)):e}}else if(Zc(n)){let r=n,i=sw(r);if(i.left!==null){if(i.left<=e)break;this.advance(),t=this.nodeFactory.create(cd,{expression:t,op:r})}else{let n=rw(r);if(n.left===null||n.left<=e)break;this.advance();try{t=this.nodeFactory.create(sd,{leftExpression:t,op:r,rightExpression:r.value===`.`?this.extractOperand():this.expression_bp(n.right)})}catch(e){throw e instanceof $?(t=this.nodeFactory.create(sd,{leftExpression:t,op:r,rightExpression:e.partialNode}),new $(e.token,t,e.handlerContext)):e}}}else break}return t}leftExpression_bp(){let e;if(Zc(this.peek())){let t={};t.op=this.peek();let n=aw(t.op);if(n.right===null)throw this.logError(t.op,b.UNKNOWN_PREFIX_OP,`Unexpected '${t.op.value}' in an expression`),new $(t.op,this.nodeFactory.create(_d,{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 $?(t.expression=e.partialNode,new $(e.token,this.nodeFactory.create(L,t),e.handlerContext)):e}e=this.nodeFactory.create(L,t)}else if(e=this.extractOperand(),e instanceof _d)throw new $(this.peek(),this.nodeFactory.create(_d,{prevToken:this.peek()}),this.contextStack.findHandlerContext(this.tokens,this.current));return e}extractOperand(){return this.check(y.WILDCARD)?this.wildcardExpression():this.check(y.NUMERIC_LITERAL,y.STRING_LITERAL,y.COLOR_LITERAL,y.QUOTED_STRING,y.IDENTIFIER)?this.primaryExpression():this.check(y.FUNCTION_EXPRESSION)?this.functionExpression():this.check(y.LBRACKET)?this.listExpression():this.check(y.LBRACE)?this.blockExpression():this.check(y.LPAREN)?this.tupleExpression():(this.peek().kind===y.EOF?this.logError(this.peek(),b.UNEXPECTED_EOF,`Unexpected EOF`):this.logError(this.peek(),b.INVALID_OPERAND,`Invalid start of operand "${this.peek().value}"`),this.nodeFactory.create(_d,{prevToken:this.previous()}))}functionExpression(){let e={};try{this.consume(`Expect a function expression`,y.FUNCTION_EXPRESSION),e.value=this.previous()}catch(t){throw t instanceof $?new $(t.token,this.nodeFactory.create(ld,e),t.handlerContext):t}return this.nodeFactory.create(ld,e)}wildcardExpression(){return this.advance(),this.nodeFactory.create(md,{token:this.previous()})}canBeField(){return this.peek().kind===y.IDENTIFIER&&this.peek(1).kind===y.COLON}primaryExpression(){if(this.match(y.COLOR_LITERAL,y.STRING_LITERAL,y.NUMERIC_LITERAL))return this.nodeFactory.create(gd,{expression:this.nodeFactory.create(pd,{literal:this.previous()})});if(this.match(y.QUOTED_STRING,y.IDENTIFIER))return this.nodeFactory.create(gd,{expression:this.nodeFactory.create(hd,{variable:this.previous()})});throw this.logError(this.peek(),b.UNEXPECTED_TOKEN,`Expect a variable or literal`),new $(this.peek(),void 0,this.contextStack.findHandlerContext(this.tokens,this.current))}attribute(){let e={};if(this.check(y.COLON,y.RBRACKET,y.COMMA)){let t=this.peek();this.logError(t,b.EMPTY_ATTRIBUTE_NAME,`Expect a non-empty attribute name`),e.name=this.nodeFactory.create(od,{identifiers:[]})}else try{e.name=this.attributeName()}catch(t){if(!(t instanceof $))throw t;if(e.name=t.partialNode,!this.canHandle(t))throw new $(t.token,this.nodeFactory.create(I,e),t.handlerContext);this.synchronizeAttributeName()}return this.match(y.COLON)&&(e.colon=this.previous(),e.value=this.attributeValue()),this.nodeFactory.create(I,e)}attributeValue(){let e;try{e=this.peek().kind===y.IDENTIFIER&&this.peek(1).kind===y.IDENTIFIER?this.attributeName():this.normalExpression()}catch(t){if(!(t instanceof $)||!this.canHandle(t))throw t;e=t.partialNode,this.synchronizeAttributeValue()}return e}attributeName(){let e=[];if(this.peek().kind!==y.IDENTIFIER)return this.primaryExpression();for(;!this.isAtEnd()&&!this.check(y.COLON,y.COMMA,y.RBRACKET);)try{this.consume(`Expect an identifier`,y.IDENTIFIER),e.push(this.previous())}catch(t){throw t instanceof $?new $(t.token,this.nodeFactory.create(od,{identifiers:e}),t.handlerContext):t}return this.nodeFactory.create(od,{identifiers:e})}logError(e,t,n){this.errors.push(new x(t,n,e))}},nw={"+":{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 rw(e){return nw[e.value]||{left:null,right:null}}var iw={"+":{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 aw(e){return iw[e.value]||{left:null,right:null}}var ow={"(":{left:14,right:null}};function sw(e){return ow[e.value]||{left:null,right:null}}function cw(e){let t=this.getSource(e);return new ZC(t??``,e).lex().chain(n=>new tw(t??``,n,this.nodeIdGenerator,e).parse()).map(({ast:t,tokens:n})=>({ast:t,tokens:n,path:e}))}function lw(){let e=Sy(this,this.layout.getEntrypoints()),t=new Map;for(let n of e){let e=this.parseFile(n);t.set(n.absolute,e)}return t}function uw(e,n,r){let i;if(e instanceof Pu)i=e;else{let n=this.nodeSymbol(e).getFiltered(t);if(!(n instanceof Pu))return;i=n}let a=Array.isArray(n)?n:[n],o=this.symbolMembers(i).getFiltered(t);if(o)return o.find(e=>a.length&&!e.isKind(...a)?!1:e instanceof $u?Xv.visibleName(this,e)?.at(-1)===r:e.name===r)}function dw(e){let t=e.originalSymbol;return Cy(this).map(n=>n.filter(n=>n instanceof Qu&&n.originalSymbol===t&&n!==e))}function fw(){let e=new Map,n=new Map,r=this.parseProject();this.bindProject();let i=new Set,a=(t,n)=>{if(i.has(n))return;i.add(n);let r=t.intern(),a=e.get(r);a||(a=[],e.set(r,a)),a.push(n);let o=t.originalSymbol;if(o!==t){let t=o.intern(),r=e.get(t);r||(r=[],e.set(t,r)),r.push(n)}},o=e=>{for(let t of e.owners(this)){let r=t.intern(),i=n.get(r);i||(i=[],n.set(r,i)),i.push(e)}};for(let e of r.values()){let n=e.getValue().ast,r=e=>{if(w(e)){let n=Qy.call(this,e).getFiltered(t);n&&a(n,e);return}if(e instanceof ud&&T(e.parentNode)&&e.parentNode.rightExpression===e){let n=e.parentNode.leftExpression;if(n){let e=fu(n);if(e){let n=Qy.call(this,e).getFiltered(t);n&&a(n,e)}}}let n=this.nodeMetadata(e).getFiltered(t);n&&o(n);for(let t of Ld(e))t instanceof N&&r(t)};r(n)}let s=new Map,c=new Set;function l(e,n){let r=n.intern();if(c.has(r))return;c.add(r);let i=e.symbolMembers(n).getFiltered(t);if(i)for(let t of i){let r=t.intern(),i=s.get(r);i||(i=[],s.set(r,i)),i.push(n),t instanceof Fu&&t.isKind(M.Schema)&&l(e,t)}}for(let e of r.values()){let n=e.getValue().ast,r=this.nodeSymbol(n).getFiltered(t);r&&l(this,r)}return{references:e,metadata:n,parents:s}}function pw(e){return this.resolutionIndex().parents.get(e.intern())??[]}function mw(e){return this.resolutionIndex().references.get(e.intern())??[]}function hw(e){return this.resolutionIndex().metadata.get(e.intern())??[]}function gw(e){let t=e.originalSymbol;return Cy(this).map(n=>n.filter(n=>n instanceof $u&&n.originalSymbol===t&&n!==e))}function _w(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 vw(e){if(typeof e!=`string`)return{schema:e.schema??`public`,table:e.table};let t=xy(e);if(t.length===0)return{schema:Pl,table:``};if(t.length===1)return{schema:Pl,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 yw(e,n,r,i){let a=e.parseFile(n).getValue().ast,o=e.nodeSymbol(a).getFiltered(t);if(!o)return null;if(r===`public`)return e.lookupMembers(o,M.Table,i)??null;let s=e.lookupMembers(o,M.Schema,r);return s?e.lookupMembers(s,M.Table,i)??null:null}function bw(e){return e.startsWith(`"`)&&e.endsWith(`"`)&&e.length>=2?e.slice(1,-1):e}function xw(e,t){if(!e||!(e instanceof F))return!1;let n=e.name;return n?t.substring(n.start,n.end).includes(`"`):!1}function Sw(e,t,n){let r=!gy(t),i=!gy(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 Cw(e,t,n,r,i,a){return n===i&&r===a?!1:yw(e,t,i,a)!==null}function ww(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 bw(n.substring(i,a))===t?{start:i,end:e.end}:null}function Tw(e){return e.schema===`public`?e.formattedTable:`${e.formattedSchema}.${e.formattedTable}`}function Ew(e,t,n,r,i){let a=[],o=new Set,s=Tw(r);for(let r of e){if(bw(i.substring(r.start,r.end))!==n)continue;let e=ww(r,t,i)??{start:r.start,end:r.end},c=`${e.start}-${e.end}`;o.has(c)||(o.add(c),a.push({start:e.start,end:e.end,newText:s}))}return a}function Dw(e,n,r){let i=vw(n),a=vw(r),o=i.schema,s=i.table,c=a.schema,l=a.table,u=yw(this,e,o,s);if(!u||u instanceof Qu||Cw(this,e,o,s,c,l))return new Map;if(u instanceof $u&&u.useSpecifierDeclaration instanceof id&&u.useSpecifierDeclaration.alias){let n=u.useSpecifierDeclaration;if(this.nodeAlias(n).getFiltered(t)===s)return Ow(this,e,n,u,c,l)}return kw(this,u,o,s,c,l)}function Ow(e,t,n,r,i,a){let o=e.getSource(t)??``;if(!n.alias)return new Map;let s=Sw(i,a,o.substring(n.alias.start,n.alias.end).includes(`"`)),c=[];c.push({start:n.alias.start,end:n.alias.end,newText:s.formattedTable});let l=e.symbolReferences(r);for(let e of l)e.filepath.absolute===t.absolute&&e!==n.alias&&c.push({start:e.start,end:e.end,newText:s.formattedTable});return new Map([[t.absolute,_w(o,c)]])}function kw(e,t,n,r,i,a){let o=t.originalSymbol,s=o.declaration;if(!s||!(s instanceof F))return new Map;let c=s.filepath;if(!c)return new Map;let l=Sw(i,a,xw(s,e.getSource(c)??``)),u=new Map,d=(e,t)=>{let n=e.absolute,r=u.get(n);r||(r={fp:e,edits:[]},u.set(n,r)),r.edits.push(t)},f=s.name;f&&d(c,{start:f.start,end:f.end,newText:Tw(l)});let p=e.symbolReferences(o);for(let t of p){if(t===f)continue;let i=t.filepath,a=e.getSource(i)??``;for(let e of Ew([t],n,r,l,a))d(i,e)}let m=new Map;for(let{fp:t,edits:n}of u.values()){let r=e.getSource(t)??``;m.set(t.absolute,_w(r,n))}return m}function Aw(e){let t=[],n=new ZC(e,Fl).lex();if(n.getErrors().length>0)return t;let i=new tw(e,n.getValue(),new td,Fl).parse();if(i.getErrors().length>0)return t;let a=i.getValue().ast;for(let e of a.declarations)if(e.isKind(r.DiagramView)){let n=e.name?O(e.name)??[]:[],r=n.length>0?n[n.length-1]:``;t.push({name:r,startIndex:e.start,endIndex:e.end})}return t}function jw(e,t){let n=t.map(e=>{let t=_y(e.name);return e.schemaName===`public`?t:`${_y(e.schemaName)}.${t}`});e.push(` Tables {`),n.forEach(t=>e.push(` ${t}`)),e.push(` }`)}function Mw(e,t){e.push(` TableGroups {`),t.forEach(t=>e.push(` ${_y(t.name)}`)),e.push(` }`)}function Nw(e,t){e.push(` Schemas {`),t.forEach(t=>e.push(` ${_y(t.name)}`)),e.push(` }`)}function Pw(e,t){e.push(` Notes {`),t.forEach(t=>e.push(` ${_y(t.name)}`)),e.push(` }`)}function Fw(e,t){let n=`DiagramView ${_y(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 Pw(e,o),e.push(`}`),e.join(`
|
|
21
21
|
`)}return`${n}\n Notes { * }\n}`}let d=[n];return e&&jw(d,r),t&&Mw(d,i),u&&Nw(d,a),o&&o.length>0&&Pw(d,o),d.push(`}`),d.join(`
|
|
22
22
|
`)}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 Pw(e,o),e.push(`}`),e.join(`
|
|
23
23
|
`)}return`${n}\n *\n}`}let h=[n];return u.length>0&&jw(h,u),d.length>0&&Mw(h,d),f.length>0&&Nw(h,f),m&&Pw(h,o),h.push(`}`),h.join(`
|
package/dist/dbml-parse.mjs
CHANGED
|
@@ -13798,12 +13798,6 @@ var ParsingContextStack = class {
|
|
|
13798
13798
|
if (this.check(SyntaxTokenKind.RBRACE) || this.check(SyntaxTokenKind.STRING_LITERAL) || this.check(SyntaxTokenKind.IDENTIFIER) && isFromKeyword(r) || isAtStartOfLine(this.previous(), r)) break;
|
|
13799
13799
|
markInvalid(r), this.advance();
|
|
13800
13800
|
}
|
|
13801
|
-
}, this.synchronizeUseSpecifier = () => {
|
|
13802
|
-
for (; !this.isAtEnd();) {
|
|
13803
|
-
let r = this.peek();
|
|
13804
|
-
if (this.check(SyntaxTokenKind.RBRACE) || isAtStartOfLine(this.previous(), r)) break;
|
|
13805
|
-
markInvalid(r), this.advance();
|
|
13806
|
-
}
|
|
13807
13801
|
}, this.synchronizeProgram = () => {
|
|
13808
13802
|
let r = this.peek();
|
|
13809
13803
|
r.kind === SyntaxTokenKind.EOF ? this.logError(r, CompileErrorCode.UNEXPECTED_EOF, "Unexpected EOF") : markInvalid(this.advance());
|
|
@@ -14038,16 +14032,12 @@ var ParsingContextStack = class {
|
|
|
14038
14032
|
try {
|
|
14039
14033
|
this.consume("Expect an import kind specifier (e.g. table, enum)", SyntaxTokenKind.IDENTIFIER), r.importKind = this.previous();
|
|
14040
14034
|
} catch (r) {
|
|
14041
|
-
|
|
14042
|
-
if (!this.canHandle(r)) throw new PartialParsingError(r.token, j(), r.handlerContext);
|
|
14043
|
-
this.synchronizeUseSpecifier();
|
|
14035
|
+
throw r instanceof PartialParsingError ? new PartialParsingError(r.token, j(), r.handlerContext) : r;
|
|
14044
14036
|
}
|
|
14045
14037
|
if (this.check(SyntaxTokenKind.IDENTIFIER, SyntaxTokenKind.QUOTED_STRING)) try {
|
|
14046
14038
|
r.name = this.normalExpression();
|
|
14047
14039
|
} catch (M) {
|
|
14048
|
-
|
|
14049
|
-
if (M.partialNode instanceof SyntaxNode && (r.name = M.partialNode), !this.canHandle(M)) throw new PartialParsingError(M.token, j(), M.handlerContext);
|
|
14050
|
-
this.synchronizeUseSpecifier();
|
|
14040
|
+
throw M instanceof PartialParsingError ? (M.partialNode instanceof SyntaxNode && (r.name = M.partialNode), new PartialParsingError(M.token, j(), M.handlerContext)) : M;
|
|
14051
14041
|
}
|
|
14052
14042
|
else r.importKind && this.logError(this.peek(), CompileErrorCode.UNEXPECTED_TOKEN, "Expect an element name");
|
|
14053
14043
|
if (isAsKeyword(this.peek())) {
|
|
@@ -14058,7 +14048,6 @@ var ParsingContextStack = class {
|
|
|
14058
14048
|
} catch (r) {
|
|
14059
14049
|
if (!(r instanceof PartialParsingError)) throw r;
|
|
14060
14050
|
if (!this.canHandle(r)) throw new PartialParsingError(r.token, j(), r.handlerContext);
|
|
14061
|
-
this.synchronizeUseSpecifier();
|
|
14062
14051
|
}
|
|
14063
14052
|
}
|
|
14064
14053
|
return j();
|
|
@@ -31,7 +31,6 @@ export default class Parser {
|
|
|
31
31
|
private useSpecifierList;
|
|
32
32
|
private synchronizeUseSpecifierList;
|
|
33
33
|
private useSpecifier;
|
|
34
|
-
private synchronizeUseSpecifier;
|
|
35
34
|
private synchronizeProgram;
|
|
36
35
|
private elementDeclaration;
|
|
37
36
|
private synchronizeElementDeclarationName;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package",
|
|
3
3
|
"name": "@dbml/parse",
|
|
4
|
-
"version": "8.2.
|
|
4
|
+
"version": "8.2.3",
|
|
5
5
|
"description": "DBML parser v2",
|
|
6
6
|
"author": "Holistics <dev@holistics.io>",
|
|
7
7
|
"license": "Apache-2.0",
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"engines": {
|
|
47
47
|
"node": ">=18"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "8f21d6ac8a8f9a3715e825afca97d8c79e55d2de"
|
|
50
50
|
}
|