diff --git a/packages/dbml-parse/src/lib/option.ts b/packages/dbml-parse/src/lib/option.ts index 60d443f54..ed088caa9 100644 --- a/packages/dbml-parse/src/lib/option.ts +++ b/packages/dbml-parse/src/lib/option.ts @@ -26,6 +26,10 @@ export class Some { return new Some(callback(this.value)); } + is_some_and(callback: (_: T) => boolean): boolean { + return callback(this.value); + } + // eslint-disable-next-line class-methods-use-this isOk(): boolean { return true; @@ -53,6 +57,11 @@ export class None { return new None(); } + // eslint-disable-next-line class-methods-use-this + is_some_and(callback: (_: T) => boolean): boolean { + return false; + } + // eslint-disable-next-line class-methods-use-this isOk(): boolean { return false; diff --git a/packages/dbml-parse/src/lib/parser/utils.ts b/packages/dbml-parse/src/lib/parser/utils.ts index 5c80284f2..595fa3246 100644 --- a/packages/dbml-parse/src/lib/parser/utils.ts +++ b/packages/dbml-parse/src/lib/parser/utils.ts @@ -48,7 +48,7 @@ export function convertFuncAppToElem( const attributeList = _.last(cpArgs) instanceof ListExpressionNode ? (cpArgs.pop() as ListExpressionNode) : undefined; - if (cpArgs.length === 3 && extractVariableNode(cpArgs[1]).unwrap().value === 'as') { + if (cpArgs.length === 3 && extractVariableNode(cpArgs[1]).is_some_and((token) => token.value === 'as')) { return new Some( factory.create(ElementDeclarationNode, { type,