@prisma/orm-toolchain 8.0.0-rc.11-dev.28 → 8.0.0-rc.11-dev.30

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/cli.mjs CHANGED
@@ -5144,7 +5144,7 @@ const lspCommand = defineServerCommand({
5144
5144
  } },
5145
5145
  handler: async (args, io) => {
5146
5146
  const exitCode = await withoutClientProcessIdInArgv(async () => {
5147
- const { startServer } = await import("./exports-DMDyYe3P.mjs");
5147
+ const { startServer } = await import("./exports-D3ZkBOTs.mjs");
5148
5148
  return startServer({
5149
5149
  stdin: io.stdin,
5150
5150
  stdout: io.stdout,
@@ -9,7 +9,7 @@ import { fileURLToPath, pathToFileURL } from "node:url";
9
9
  import { format } from "@prisma/orm-framework/psl-parser/format";
10
10
  import { CompletionItemKind, ConnectionError, ConnectionErrors, DiagnosticSeverity, DidChangeWatchedFilesNotification, DocumentDiagnosticReportKind, FoldingRangeKind, InsertTextFormat, LSPErrorCodes, MarkupKind, ProposedFeatures, RegistrationRequest, ResponseError, SemanticTokenModifiers, SemanticTokenTypes, TextDocumentSyncKind, TextDocuments, createConnection } from "vscode-languageserver";
11
11
  import { TextDocument } from "vscode-languageserver-textdocument";
12
- import { ArrayLiteralAst, AttributeArgAst, AttributeArgListAst, BooleanLiteralExprAst, CompositeTypeDeclarationAst, FieldAttributeAst, FieldDeclarationAst, FunctionCallAst, GenericBlockDeclarationAst, IdentifierAst, KeyValuePairAst, ModelAttributeAst, ModelDeclarationAst, NamespaceDeclarationAst, NumberLiteralExprAst, ObjectLiteralExprAst, StringLiteralExprAst, SyntaxNode, TypesBlockAst, any, filterChildren, findChildToken, isTrivia, nonTriviaSibling, parse, skipTriviaToken } from "@prisma/orm-framework/psl-parser/syntax";
12
+ import { ArrayLiteralAst, AttributeArgAst, AttributeArgListAst, BooleanLiteralExprAst, CompositeTypeDeclarationAst, FieldAttributeAst, FieldDeclarationAst, FunctionCallAst, GenericBlockDeclarationAst, IdentifierAst, KeyValuePairAst, ModelAttributeAst, ModelDeclarationAst, NamespaceDeclarationAst, NumberLiteralExprAst, ObjectLiteralExprAst, StringLiteralExprAst, SyntaxNode, TaggedLiteralExprAst, TypesBlockAst, any, filterChildren, findChildToken, isTrivia, nonTriviaSibling, parse, skipTriviaToken } from "@prisma/orm-framework/psl-parser/syntax";
13
13
  import { isAuthoringPslBlockDescriptor, isAuthoringTypeConstructorDescriptor } from "@prisma/orm-framework/components/authoring";
14
14
  import { assembleAttributeSpecs, buildSymbolTable, findBlockDescriptor } from "@prisma/orm-framework/psl-parser";
15
15
  import { hasPslInterpreter } from "@prisma/orm-framework/psl-parser/interpret";
@@ -648,7 +648,7 @@ function attributeSpecResolver(context, source) {
648
648
  const specContext = {
649
649
  symbols: source.symbolTable,
650
650
  model,
651
- controlMutationDefaults: source.controlMutationDefaults.defaultFunctionRegistry
651
+ controlMutationDefaults: source.controlMutationDefaults
652
652
  };
653
653
  return (name) => specs.model[name]?.(specContext);
654
654
  }
@@ -662,7 +662,7 @@ function attributeSpecResolver(context, source) {
662
662
  const specContext = {
663
663
  symbols: source.symbolTable,
664
664
  model,
665
- controlMutationDefaults: source.controlMutationDefaults.defaultFunctionRegistry
665
+ controlMutationDefaults: source.controlMutationDefaults
666
666
  };
667
667
  return (name) => specs.field[name]?.({
668
668
  ...specContext,
@@ -771,6 +771,10 @@ function valueItems(input, param, syntax) {
771
771
  }];
772
772
  }
773
773
  if (syntax === "functionName") return [];
774
+ if (type.kind === "taggedLiteral") return type.tags.map((tag) => ({
775
+ ...completionItem(input, tag, input.clientSupportsSnippets ? `${tag}\`$1\`` : tag, CompletionItemKind.Value, input.clientSupportsSnippets),
776
+ detail: type.documentation
777
+ }));
774
778
  switch (type.kind) {
775
779
  case "identifier": return scalarItems(input, [type.name], type.documentation);
776
780
  case "str": return scalarItems(input, type.value === void 0 ? [] : [JSON.stringify(type.value)]);
@@ -1689,6 +1693,7 @@ function collectExpression(expression, source, tokens, namespace, context = {})
1689
1693
  }
1690
1694
  return;
1691
1695
  }
1696
+ if (expression instanceof TaggedLiteralExprAst) return;
1692
1697
  collectIdentifierExpression(expression, source, tokens, namespace, context);
1693
1698
  }
1694
1699
  function collectIdentifierExpression(identifier, source, tokens, namespace, context) {
@@ -2729,4 +2734,4 @@ function startServer(streams) {
2729
2734
  //#endregion
2730
2735
  export { startServer };
2731
2736
 
2732
- //# sourceMappingURL=exports-DMDyYe3P.mjs.map
2737
+ //# sourceMappingURL=exports-D3ZkBOTs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports-D3ZkBOTs.mjs","names":["normalize","#sourceFile","#rangeOffsets","#intersectsRange","#addMultilineSplitToken","#encode","#data","#first","#previousLine","#previousCharacter"],"sources":["../../../../1-framework/3-tooling/language-server/dist/exports/index.mjs"],"sourcesContent":["import { fileURLToPath, pathToFileURL } from \"node:url\";\nimport { findNearestConfigPathForFile, loadConfig, requireConfigSections } from \"@internal/config-loader\";\nimport { CliStructuredError } from \"@internal/errors/control\";\nimport { format } from \"@internal/psl-parser/format\";\nimport { join } from \"pathe\";\nimport { CompletionItemKind, ConnectionError, ConnectionErrors, DiagnosticSeverity, DidChangeWatchedFilesNotification, DocumentDiagnosticReportKind, FoldingRangeKind, InsertTextFormat, LSPErrorCodes, MarkupKind, ProposedFeatures, RegistrationRequest, ResponseError, SemanticTokenModifiers, SemanticTokenTypes, TextDocumentSyncKind, TextDocuments, createConnection } from \"vscode-languageserver\";\nimport { TextDocument } from \"vscode-languageserver-textdocument\";\nimport { ArrayLiteralAst, AttributeArgAst, AttributeArgListAst, BooleanLiteralExprAst, CompositeTypeDeclarationAst, FieldAttributeAst, FieldDeclarationAst, FunctionCallAst, GenericBlockDeclarationAst, IdentifierAst, KeyValuePairAst, ModelAttributeAst, ModelDeclarationAst, NamespaceDeclarationAst, NumberLiteralExprAst, ObjectLiteralExprAst, StringLiteralExprAst, SyntaxNode, TaggedLiteralExprAst, TypesBlockAst, any, filterChildren, findChildToken, isTrivia, nonTriviaSibling, parse, skipTriviaToken } from \"@internal/psl-parser/syntax\";\nimport { isAuthoringPslBlockDescriptor, isAuthoringTypeConstructorDescriptor } from \"@internal/framework-components/authoring\";\nimport { assembleAttributeSpecs, buildSymbolTable, findBlockDescriptor } from \"@internal/psl-parser\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { createControlStack } from \"@internal/framework-components/control\";\nimport { hasPslInterpreter } from \"@internal/psl-parser/interpret\";\nimport { normalize } from \"node:path\";\nimport { InternalError } from \"@internal/utils/internal-error\";\nimport { ProposedFeatures as ProposedFeatures$1, StreamMessageReader, StreamMessageWriter, createConnection as createConnection$1, createProtocolConnection } from \"vscode-languageserver/node\";\nimport { Console } from \"node:console\";\nimport { Readable, Writable } from \"node:stream\";\nimport { StringDecoder } from \"node:string_decoder\";\n//#region src/diagnostic-mapping.ts\nconst ParseDiagnosticSeverity = {\n\tError: 1,\n\tWarning: 2,\n\tInformation: 3,\n\tHint: 4\n};\nfunction mapParseDiagnostics(diagnostics) {\n\treturn diagnostics.map((diagnostic) => ({\n\t\trange: diagnostic.range,\n\t\tmessage: diagnostic.message,\n\t\tcode: diagnostic.code,\n\t\tseverity: ParseDiagnosticSeverity.Error\n\t}));\n}\nconst documentStartRange = {\n\tstart: {\n\t\tline: 0,\n\t\tcharacter: 0\n\t},\n\tend: {\n\t\tline: 0,\n\t\tcharacter: 1\n\t}\n};\nfunction mapInterpreterDiagnostics(diagnostics, sourceFile) {\n\treturn diagnostics.map((diagnostic) => ({\n\t\trange: diagnostic.span === void 0 ? documentStartRange : pslSpanToRange(diagnostic.span, sourceFile),\n\t\tmessage: diagnostic.message,\n\t\tcode: diagnostic.code,\n\t\tseverity: ParseDiagnosticSeverity.Error\n\t}));\n}\nfunction pslSpanToRange(span, sourceFile) {\n\treturn {\n\t\tstart: sourceFile.positionAt(span.start.offset),\n\t\tend: sourceFile.positionAt(span.end.offset)\n\t};\n}\n//#endregion\n//#region src/attribute-syntax-context.ts\nfunction locateAttributeSyntax(input) {\n\tconst offset = input.sourceFile.offsetAt(input.position);\n\tconst at = input.document.syntax.tokenAtOffset(offset);\n\tif (at.leftBiased()?.kind === \"Comment\") return void 0;\n\tconst token = at.leftBiased() ?? at.rightBiased();\n\tconst attribute = token === void 0 ? void 0 : skipTriviaToken(token, \"prev\")?.parent.findAncestor(any(FieldAttributeAst.cast, ModelAttributeAst.cast));\n\tif (attribute === void 0 || !isWithinAttributeOrOpenArguments(attribute, offset)) return void 0;\n\treturn {\n\t\tattribute,\n\t\t...attributeCursor(attribute, offset)\n\t};\n}\nfunction isWithinAttributeOrOpenArguments(attribute, offset) {\n\tif (attribute.syntax.isInside(offset)) return true;\n\tconst args = attribute.argList();\n\treturn args !== void 0 && args.rparen() === void 0 && offset >= args.syntax.endOffset;\n}\nfunction attributeCursor(attribute, offset) {\n\tconst anchor = attribute.syntax.tokenAtOffset(offset).leftBiased() ?? attribute.syntax.lastToken;\n\treturn {\n\t\toffset,\n\t\tpreceding: anchor === void 0 ? void 0 : skipTriviaToken(anchor, \"prev\")\n\t};\n}\nfunction argumentSiblings(node, selected, offset) {\n\tlet precedingPositionalCount = 0;\n\tconst otherNamedKeys = [];\n\tlet beforeSelected = true;\n\tfor (const arg of node.args()) {\n\t\tif (arg.syntax.offset === selected?.syntax.offset) {\n\t\t\tbeforeSelected = false;\n\t\t\tcontinue;\n\t\t}\n\t\tconst name = arg.name()?.name();\n\t\tif (name !== void 0) otherNamedKeys.push(name);\n\t\telse if (beforeSelected && arg.syntax.offset <= offset) precedingPositionalCount += 1;\n\t}\n\treturn {\n\t\tprecedingPositionalCount,\n\t\totherNamedKeys\n\t};\n}\nfunction argumentAtCursor(cursor, node) {\n\tfor (const arg of node.args()) if (arg.syntax.offset <= cursor.offset && (containsCursor(arg.syntax, cursor) || recoveredContainerContainsCursor(arg.value(), cursor.offset))) return arg;\n}\nfunction listElementAtCursor(cursor, node) {\n\tfor (const element of node.elements()) if (containsCursor(element.syntax, cursor) || recoveredContainerContainsCursor(element, cursor.offset)) return element;\n}\nfunction recordFieldAtCursor(cursor, node) {\n\tfor (const field of node.fields()) {\n\t\tconst colon = field.colon();\n\t\tif (colon !== void 0 && cursor.offset > colon.offset && (containsCursor(field.syntax, cursor) || recoveredContainerContainsCursor(field.value(), cursor.offset))) return field;\n\t}\n}\nfunction betweenDelimiters(offset, opening, closing) {\n\treturn opening !== void 0 && offset > opening.offset && (closing === void 0 || offset < closing.endOffset);\n}\nfunction recoveredContainerContainsCursor(expression, offset) {\n\tif (expression === void 0 || expression.syntax.endOffset > offset) return false;\n\tif (!(expression instanceof ArrayLiteralAst ? expression.rbracket() === void 0 : expression instanceof ObjectLiteralExprAst ? expression.rbrace() === void 0 : expression instanceof FunctionCallAst && expression.rparen() === void 0)) return false;\n\tfor (let token = expression.syntax.lastToken?.nextToken; token !== void 0; token = token.nextToken) {\n\t\tif (token.offset >= offset) return true;\n\t\tif (!isTrivia(token) && token.kind !== \"Comma\") return false;\n\t}\n\treturn true;\n}\nfunction containsCursor(node, cursor) {\n\tif (node.isInside(cursor.offset)) return true;\n\tconst preceding = cursor.preceding;\n\treturn preceding !== void 0 && preceding.endOffset <= cursor.offset && preceding.offset >= node.offset && preceding.offset < node.endOffset;\n}\n//#endregion\n//#region src/completion-context.ts\nconst UNSUPPORTED = { kind: \"unsupported\" };\nfunction classifyPslCompletionContext(input) {\n\tconst root = input.document.syntax;\n\tconst offset = input.sourceFile.offsetAt(input.position);\n\tconst at = root.tokenAtOffset(offset);\n\tif (at.leftBiased()?.kind === \"Comment\") return UNSUPPORTED;\n\tconst edit = cursorIdentifier(at, offset);\n\tconst preceding = precedingToken(at, edit);\n\tconst precedingNode = preceding?.parent;\n\tconst replacementStartOffset = edit?.offset ?? offset;\n\tconst attributeClassifierInput = {\n\t\toffset,\n\t\tnode: attributeAnchor(at),\n\t\treplacementStartOffset\n\t};\n\tconst attributeContext = classifyFieldAttribute(attributeClassifierInput) ?? classifyGenericBlockAttribute(attributeClassifierInput) ?? classifyModelAttribute(attributeClassifierInput);\n\tif (attributeContext !== void 0) return attributeContext;\n\tconst declarationKeywordContext = classifyDeclarationKeyword({\n\t\tnode: precedingNode,\n\t\toffset,\n\t\treplacementStartOffset\n\t});\n\tif (declarationKeywordContext !== void 0) return declarationKeywordContext;\n\tconst genericBlockContext = classifyGenericBlockParameter({\n\t\toffset,\n\t\tat,\n\t\tprecedingToken: preceding,\n\t\treplacementStartOffset\n\t});\n\tif (genericBlockContext !== void 0) return genericBlockContext;\n\tconst field = fieldForTypeSlot(precedingNode);\n\tif (field === void 0) return UNSUPPORTED;\n\tif (field.syntax.findAncestor(any(ModelDeclarationAst.cast, CompositeTypeDeclarationAst.cast)) === void 0) return UNSUPPORTED;\n\treturn classifyModelFieldType({\n\t\tfield,\n\t\toffset,\n\t\treplacementStartOffset,\n\t\tprecedingToken: preceding\n\t});\n}\n/**\n* Locates the field whose type position the cursor occupies. The preceding token\n* climbs to the field whether the cursor sits inside a present type (the type\n* identifier's predecessor still belongs to the field) or in the empty type slot\n* of a typeless field (whose trailing trivia lives in the enclosing block, so\n* the nearest significant token to the left is the field's own name).\n*/\nfunction fieldForTypeSlot(precedingNode) {\n\treturn precedingNode?.findAncestor(FieldDeclarationAst.cast);\n}\nfunction classifyModelFieldType(input) {\n\tconst fieldName = input.field.name();\n\tif (fieldName === void 0) return UNSUPPORTED;\n\tconst fieldNameText = fieldName.name();\n\tif (fieldNameText === void 0) return UNSUPPORTED;\n\tif (fieldName.syntax.isInside(input.offset)) return UNSUPPORTED;\n\tconst typeAnnotation = input.field.typeAnnotation();\n\tif (typeAnnotation === void 0) {\n\t\tif (input.precedingToken !== void 0 && fieldName.syntax.isInside(input.precedingToken.offset)) return {\n\t\t\tkind: \"modelType\",\n\t\t\toffset: input.offset,\n\t\t\tfieldName: fieldNameText,\n\t\t\treplacementStartOffset: input.offset\n\t\t};\n\t\treturn UNSUPPORTED;\n\t}\n\tif (typeAnnotation.syntax.isOutside(input.offset)) return UNSUPPORTED;\n\tif (typeAnnotation.argList()?.syntax.isInside(input.offset)) return UNSUPPORTED;\n\tconst name = typeAnnotation.name();\n\tif (name === void 0) return UNSUPPORTED;\n\tif (name.syntax.isOutside(input.offset)) return UNSUPPORTED;\n\tif (name.isOverQualified()) return UNSUPPORTED;\n\treturn classifyTypePosition(name, input.offset, fieldNameText, input.replacementStartOffset);\n}\n/**\n* Builds the type-completion context for a qualified name. Roles are read\n* straight off the separator-positional accessors: a populated namespace\n* segment is a `.`-qualified name, a populated space segment is a `:`-qualified\n* name, and the absence of both is a bare model type.\n*\n* Behaviour change: a `:`-qualified name with no `.` (e.g. `supabase:`,\n* `supabase:U`) is a `spaceMember` position rather than falling through to bare\n* model-type completions. A malformed leading-separator name (`:User`, `.User`)\n* carries no populated segment and resolves to `modelType` rather than\n* `unsupported`.\n*/\nfunction classifyTypePosition(name, offset, fieldName, replacementStartOffset) {\n\tconst namespace = name.namespace()?.name();\n\tif (namespace !== void 0 && namespace.length > 0) {\n\t\tconst namespaceSpace = name.space()?.name();\n\t\treturn {\n\t\t\tkind: \"namespaceMember\",\n\t\t\toffset,\n\t\t\tfieldName,\n\t\t\treplacementStartOffset,\n\t\t\tnamespace,\n\t\t\t...namespaceSpace !== void 0 && namespaceSpace.length > 0 ? { space: namespaceSpace } : {}\n\t\t};\n\t}\n\tconst space = name.space()?.name();\n\tif (space !== void 0 && space.length > 0) return {\n\t\tkind: \"spaceMember\",\n\t\toffset,\n\t\tfieldName,\n\t\treplacementStartOffset,\n\t\tspace\n\t};\n\treturn {\n\t\tkind: \"modelType\",\n\t\toffset,\n\t\tfieldName,\n\t\treplacementStartOffset\n\t};\n}\nconst declarationCast = any(ModelDeclarationAst.cast, CompositeTypeDeclarationAst.cast, TypesBlockAst.cast, GenericBlockDeclarationAst.cast, NamespaceDeclarationAst.cast);\nfunction classifyDeclarationKeyword(input) {\n\tconst precedingDeclaration = input.node?.findAncestor(declarationCast);\n\tconst namespace = input.node?.findAncestor(NamespaceDeclarationAst.cast);\n\tconst inNamespaceBody = blockBodyContainsOffset(namespace, input.offset);\n\tif (precedingDeclaration !== void 0 && !canCompleteDeclaration(precedingDeclaration, input.offset, inNamespaceBody)) return;\n\treturn {\n\t\tkind: \"declarationKeyword\",\n\t\toffset: input.offset,\n\t\tscope: inNamespaceBody ? \"namespace\" : \"document\",\n\t\treplacementStartOffset: input.replacementStartOffset\n\t};\n}\n/**\n* Whether a new declaration can begin at the cursor, given the nearest enclosing\n* declaration. Allowed when that declaration is still nascent (only its keyword\n* typed, no name or body yet), when it is a namespace whose body holds further\n* declarations, or when the cursor sits past its closing `}`.\n*/\nfunction canCompleteDeclaration(precedingDeclaration, offset, inNamespaceBody) {\n\tif (precedingDeclaration.lbrace() === void 0 && (precedingDeclaration instanceof TypesBlockAst || precedingDeclaration.name() === void 0)) return true;\n\tif (precedingDeclaration instanceof NamespaceDeclarationAst && inNamespaceBody) return true;\n\tconst rbrace = precedingDeclaration.rbrace();\n\treturn rbrace !== void 0 && offset >= rbrace.endOffset;\n}\nfunction blockBodyContainsOffset(block, offset) {\n\tif (block === void 0) return false;\n\tconst lbrace = block.lbrace();\n\tif (lbrace === void 0) return false;\n\tconst bodyStart = lbrace.endOffset;\n\tconst bodyEnd = block.rbrace()?.offset ?? block.syntax.endOffset;\n\treturn offset >= bodyStart && offset <= bodyEnd;\n}\nfunction classifyFieldAttribute(input) {\n\tconst attribute = input.node?.findAncestor(FieldAttributeAst.cast);\n\tif (attribute === void 0 || !isWithinAttributeOrOpenArguments(attribute, input.offset)) return;\n\tconst field = attribute.syntax.findAncestor(FieldDeclarationAst.cast);\n\tconst model = attribute.syntax.findAncestor(ModelDeclarationAst.cast);\n\tif (field === void 0 || model === void 0) return UNSUPPORTED;\n\tconst owner = {\n\t\townerKind: \"field\",\n\t\tfield,\n\t\tmodel\n\t};\n\treturn classifyAttributePosition(attribute, input, {\n\t\tname: (position) => ({\n\t\t\tkind: \"fieldAttributeName\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t}),\n\t\tnamedKey: (position) => ({\n\t\t\tkind: \"fieldAttributeNamedKey\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t}),\n\t\targumentSlot: (position) => ({\n\t\t\tkind: \"fieldAttributeArgumentSlot\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t}),\n\t\tvalue: (position) => ({\n\t\t\tkind: \"fieldAttributeValue\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t})\n\t});\n}\nfunction classifyGenericBlockAttribute(input) {\n\tconst attribute = activeModelAttribute(input);\n\tconst block = attribute?.syntax.findAncestor(GenericBlockDeclarationAst.cast);\n\tif (attribute === void 0 || block === void 0) return;\n\tconst blockKeyword = block.keyword()?.text;\n\tif (blockKeyword === void 0 || blockKeyword.length === 0) return UNSUPPORTED;\n\tconst owner = {\n\t\townerKind: \"block\",\n\t\tblock,\n\t\tblockKeyword\n\t};\n\treturn classifyAttributePosition(attribute, input, {\n\t\tname: (position) => ({\n\t\t\tkind: \"blockAttributeName\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t}),\n\t\tnamedKey: (position) => ({\n\t\t\tkind: \"blockAttributeNamedKey\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t}),\n\t\targumentSlot: (position) => ({\n\t\t\tkind: \"blockAttributeArgumentSlot\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t}),\n\t\tvalue: (position) => ({\n\t\t\tkind: \"blockAttributeValue\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t})\n\t});\n}\nfunction classifyModelAttribute(input) {\n\tconst attribute = activeModelAttribute(input);\n\tif (attribute === void 0) return;\n\tconst model = attribute.syntax.findAncestor(ModelDeclarationAst.cast);\n\tif (model === void 0) return;\n\tconst owner = {\n\t\townerKind: \"model\",\n\t\tmodel\n\t};\n\treturn classifyAttributePosition(attribute, input, {\n\t\tname: (position) => ({\n\t\t\tkind: \"modelAttributeName\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t}),\n\t\tnamedKey: (position) => ({\n\t\t\tkind: \"modelAttributeNamedKey\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t}),\n\t\targumentSlot: (position) => ({\n\t\t\tkind: \"modelAttributeArgumentSlot\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t}),\n\t\tvalue: (position) => ({\n\t\t\tkind: \"modelAttributeValue\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t})\n\t});\n}\nfunction activeModelAttribute(input) {\n\tconst attribute = input.node?.findAncestor(ModelAttributeAst.cast);\n\tif (attribute === void 0 || !isWithinAttributeOrOpenArguments(attribute, input.offset)) return;\n\treturn attribute;\n}\nfunction attributeAnchor(at) {\n\tconst token = at.leftBiased() ?? at.rightBiased();\n\treturn token === void 0 ? void 0 : skipTriviaToken(token, \"prev\")?.parent;\n}\nfunction classifyAttributePosition(attribute, input, factory) {\n\tconst args = attribute.argList();\n\tif (args === void 0 || input.offset < args.syntax.offset) return factory.name({\n\t\toffset: input.offset,\n\t\treplacementStartOffset: input.replacementStartOffset,\n\t\treplacementEndOffset: attribute.name()?.syntax.endOffset ?? input.offset,\n\t\thasArgumentList: args !== void 0\n\t});\n\tconst attributeName = attribute.name()?.identifier()?.name();\n\tif (attributeName === void 0) return UNSUPPORTED;\n\tconst at = attribute.syntax.tokenAtOffset(input.offset);\n\tconst right = at.rightBiased();\n\tconst token = isValueToken(right) ? right : at.leftBiased();\n\tconst replaceToken = isValueToken(token);\n\treturn classifyAttributeArguments({\n\t\toffset: input.offset,\n\t\treplacementStartOffset: replaceToken ? token.offset : input.offset,\n\t\treplacementEndOffset: replaceToken ? token.endOffset : input.offset,\n\t\tattributeName,\n\t\tpreceding: attributeCursor(attribute, input.offset).preceding,\n\t\tfactory\n\t}, args, []);\n}\nfunction argumentPosition(cursor, path) {\n\treturn {\n\t\toffset: cursor.offset,\n\t\treplacementStartOffset: cursor.replacementStartOffset,\n\t\treplacementEndOffset: cursor.replacementEndOffset,\n\t\tattributeName: cursor.attributeName,\n\t\tpath\n\t};\n}\nfunction classifyAttributeArguments(cursor, args, path) {\n\tif (!betweenDelimiters(cursor.offset, args.lparen(), args.rparen())) return UNSUPPORTED;\n\tconst active = argumentAtCursor(cursor, args);\n\tconst { precedingPositionalCount: positionalIndex, otherNamedKeys: existingNamedKeys } = argumentSiblings(args, active, cursor.offset);\n\tconst position = argumentPosition(cursor, path);\n\tif (active === void 0) return followsSeparator(cursor, [\"LParen\", \"Comma\"]) ? cursor.factory.argumentSlot({\n\t\t...position,\n\t\tpositionalIndex,\n\t\texistingNamedKeys,\n\t\thasColon: false\n\t}) : UNSUPPORTED;\n\tconst colon = active.colon();\n\tif (colon !== void 0) {\n\t\tif (cursor.offset <= colon.offset) return cursor.factory.namedKey({\n\t\t\t...position,\n\t\t\texistingNamedKeys,\n\t\t\thasColon: true\n\t\t});\n\t\tconst name = active.name()?.name();\n\t\treturn name === void 0 ? UNSUPPORTED : classifyAttributeExpression(cursor, active.value(), [...path, {\n\t\t\tkind: \"namedArgument\",\n\t\t\tname\n\t\t}]);\n\t}\n\tconst value = active.value();\n\tif (value === void 0 || value instanceof IdentifierAst && value.syntax.isInside(cursor.offset)) return cursor.factory.argumentSlot({\n\t\t...position,\n\t\tpositionalIndex,\n\t\texistingNamedKeys,\n\t\thasColon: false\n\t});\n\treturn classifyAttributeExpression(cursor, value, [...path, {\n\t\tkind: \"positionalArgument\",\n\t\tindex: positionalIndex\n\t}]);\n}\nfunction classifyAttributeExpression(cursor, expression, path) {\n\tif (expression === void 0) return cursor.factory.value({\n\t\t...argumentPosition(cursor, path),\n\t\tsyntax: \"scalar\"\n\t});\n\tif (expression instanceof ArrayLiteralAst) {\n\t\tif (!betweenDelimiters(cursor.offset, expression.lbracket(), expression.rbracket())) return UNSUPPORTED;\n\t\tconst element = listElementAtCursor(cursor, expression);\n\t\treturn element !== void 0 || followsSeparator(cursor, [\"LBracket\", \"Comma\"]) ? classifyAttributeExpression(cursor, element, [...path, { kind: \"listElement\" }]) : UNSUPPORTED;\n\t}\n\tif (expression instanceof ObjectLiteralExprAst) {\n\t\tconst closing = expression.rbrace();\n\t\tif (closing !== void 0 && cursor.offset >= closing.endOffset) return UNSUPPORTED;\n\t\tconst field = recordFieldAtCursor(cursor, expression);\n\t\treturn field !== void 0 ? classifyAttributeExpression(cursor, field.value(), [...path, { kind: \"recordValue\" }]) : UNSUPPORTED;\n\t}\n\tif (expression instanceof FunctionCallAst) {\n\t\tconst opening = expression.lparen();\n\t\tif (opening !== void 0 && cursor.offset > opening.offset) {\n\t\t\tconst name = expression.name();\n\t\t\tconst identifier = name?.identifier()?.name();\n\t\t\treturn identifier !== void 0 && name?.isSimpleName(identifier) === true ? classifyAttributeArguments(cursor, expression, [...path, {\n\t\t\t\tkind: \"functionCall\",\n\t\t\t\tname: identifier\n\t\t\t}]) : UNSUPPORTED;\n\t\t}\n\t\treturn expression.name()?.syntax.isInside(cursor.offset) === true ? cursor.factory.value({\n\t\t\t...argumentPosition(cursor, path),\n\t\t\tsyntax: \"functionName\"\n\t\t}) : UNSUPPORTED;\n\t}\n\treturn expression.syntax.isOutside(cursor.offset) ? UNSUPPORTED : cursor.factory.value({\n\t\t...argumentPosition(cursor, path),\n\t\tsyntax: \"scalar\"\n\t});\n}\nfunction isValueToken(token) {\n\treturn token !== void 0 && (token.kind === \"Ident\" || token.kind === \"StringLiteral\" || token.kind === \"NumberLiteral\");\n}\nfunction followsSeparator(cursor, kinds) {\n\treturn kinds.includes(cursor.preceding?.kind ?? \"\");\n}\nfunction classifyGenericBlockParameter(input) {\n\tconst node = input.at.leftBiased()?.parent;\n\tconst block = node?.findAncestor(GenericBlockDeclarationAst.cast);\n\tif (block === void 0) return;\n\tif (hasUnsupportedAncestor(node)) return UNSUPPORTED;\n\tif (!blockBodyContainsOffset(block, input.offset)) return UNSUPPORTED;\n\tif ((node?.findAncestor(FieldDeclarationAst.cast))?.syntax.isInside(input.offset)) return UNSUPPORTED;\n\tconst keyword = block.keyword()?.text;\n\tif (keyword === void 0 || keyword.length === 0) return UNSUPPORTED;\n\tif (input.precedingToken?.kind === \"Equals\") return {\n\t\tkind: \"genericBlockValue\",\n\t\toffset: input.offset,\n\t\tblockKeyword: keyword,\n\t\treplacementStartOffset: input.replacementStartOffset\n\t};\n\tconst activePair = activeKeyValuePair(node, input.offset);\n\tif (activePair !== void 0 && isAfterEquals(activePair, input.offset)) return UNSUPPORTED;\n\treturn {\n\t\tkind: \"genericBlockKey\",\n\t\toffset: input.offset,\n\t\tblockKeyword: keyword,\n\t\treplacementStartOffset: input.replacementStartOffset,\n\t\tblock\n\t};\n}\nfunction activeKeyValuePair(node, offset) {\n\tconst pair = node?.findAncestor(KeyValuePairAst.cast);\n\tif (pair === void 0 || pair.syntax.isOutside(offset)) return;\n\treturn pair;\n}\nfunction isAfterEquals(pair, offset) {\n\tconst equals = pair.equals();\n\treturn equals !== void 0 && offset > equals.offset;\n}\nfunction hasUnsupportedAncestor(node) {\n\treturn node?.findAncestor(any(AttributeArgListAst.cast, FieldAttributeAst.cast, ModelAttributeAst.cast)) !== void 0;\n}\n/** The significant token preceding the cursor — the in-progress edit identifier\n* is skipped, so the result is the token the classifier anchors on. */\nfunction precedingToken(at, edit) {\n\tconst start = edit !== void 0 ? edit.prevToken : at.leftBiased();\n\treturn start === void 0 ? void 0 : skipTriviaToken(start, \"prev\");\n}\n/** The identifier token the cursor is editing, if any. */\nfunction cursorIdentifier(at, offset) {\n\tconst right = at.rightBiased();\n\tif (right?.kind === \"Ident\" && offset < right.endOffset) return right;\n\tconst left = at.leftBiased();\n\tif (left?.kind === \"Ident\" && left.endOffset === offset) return left;\n}\n//#endregion\n//#region src/named-type-classification.ts\n/**\n* Presentation-level classification of a `types {}` binding: a\n* non-constructor binding whose base is a configured scalar type refines that\n* scalar (rendered as a default-library type); everything else reads as a\n* plain alias. The authoritative scalar-or-not pronouncement lives in the\n* interpreter's named-type resolution — this mirrors it for display only.\n*/\nfunction refinesScalarType(symbol, scalarTypes) {\n\treturn !symbol.isConstructor && symbol.baseType !== void 0 && scalarTypes.includes(symbol.baseType);\n}\n//#endregion\n//#region src/completion-symbols.ts\nfunction modelSymbolForNode(symbolTable, node) {\n\tconst topLevelMatch = Object.values(symbolTable.topLevel.models).find((model) => sameSyntax(model.node.syntax, node.syntax));\n\tif (topLevelMatch !== void 0) return topLevelMatch;\n\tfor (const namespace of Object.values(symbolTable.topLevel.namespaces)) {\n\t\tconst namespaceMatch = Object.values(namespace.models).find((model) => sameSyntax(model.node.syntax, node.syntax));\n\t\tif (namespaceMatch !== void 0) return namespaceMatch;\n\t}\n}\nfunction fieldSymbolForNode(model, node) {\n\treturn Object.values(model.fields).find((field) => sameSyntax(field.node.syntax, node.syntax));\n}\nfunction localFieldNames(context, symbols, scalarTypes, typeConstructors = {}) {\n\tswitch (context.kind) {\n\t\tcase \"blockAttributeNamedKey\":\n\t\tcase \"blockAttributeArgumentSlot\":\n\t\tcase \"blockAttributeValue\": return [];\n\t\tcase \"fieldAttributeNamedKey\":\n\t\tcase \"fieldAttributeArgumentSlot\":\n\t\tcase \"fieldAttributeValue\":\n\t\tcase \"modelAttributeNamedKey\":\n\t\tcase \"modelAttributeArgumentSlot\":\n\t\tcase \"modelAttributeValue\": return scalarFieldNames(symbols, modelSymbolForNode(symbols, context.model), scalarTypes, typeConstructors);\n\t}\n}\nfunction referencedFieldNames(context, symbols, scalarTypes, typeConstructors = {}) {\n\tswitch (context.kind) {\n\t\tcase \"blockAttributeNamedKey\":\n\t\tcase \"blockAttributeArgumentSlot\":\n\t\tcase \"blockAttributeValue\":\n\t\tcase \"modelAttributeNamedKey\":\n\t\tcase \"modelAttributeArgumentSlot\":\n\t\tcase \"modelAttributeValue\": return [];\n\t\tcase \"fieldAttributeNamedKey\":\n\t\tcase \"fieldAttributeArgumentSlot\":\n\t\tcase \"fieldAttributeValue\": {\n\t\t\tconst model = modelSymbolForNode(symbols, context.model);\n\t\t\tif (model === void 0) return [];\n\t\t\tconst field = fieldSymbolForNode(model, context.field);\n\t\t\tif (field === void 0) return [];\n\t\t\treturn scalarFieldNames(symbols, referencedModel(symbols, model, field), scalarTypes, typeConstructors);\n\t\t}\n\t}\n}\nfunction scalarFieldNames(symbols, model, scalarTypes, typeConstructors) {\n\tif (model === void 0) return [];\n\tconst namespaceName = model.node.syntax.findAncestor(NamespaceDeclarationAst.cast)?.name()?.name();\n\tconst namespace = namespaceName === void 0 ? void 0 : symbols.topLevel.namespaces[namespaceName];\n\treturn Object.values(model.fields).filter((field) => {\n\t\tif (field.malformedType === true || field.typeContractSpaceId !== void 0) return false;\n\t\tif (field.typeConstructor !== void 0) return isScalarConstructor(field.typeConstructor.path, typeConstructors);\n\t\tif (field.typeNamespaceId !== void 0) return false;\n\t\tconst name = field.typeName;\n\t\tif (namespace?.models[name] !== void 0 || namespace?.compositeTypes[name] !== void 0 || namespace?.blocks[name] !== void 0 || symbols.topLevel.models[name] !== void 0 || symbols.topLevel.compositeTypes[name] !== void 0 || symbols.topLevel.blocks[name] !== void 0) return false;\n\t\tconst namedType = symbols.topLevel.namedTypes[name];\n\t\tif (namedType === void 0) return scalarTypes.includes(name);\n\t\treturn namedType.typeConstructor === void 0 ? refinesScalarType(namedType, scalarTypes) : isScalarConstructor(namedType.typeConstructor.path, typeConstructors);\n\t}).map((field) => field.name);\n}\nfunction isScalarConstructor(path, typeConstructors) {\n\tlet current = typeConstructors;\n\tfor (const [index, segment] of path.entries()) {\n\t\tconst value = Object.hasOwn(current, segment) ? current[segment] : void 0;\n\t\tif (value === void 0) return false;\n\t\tif (isAuthoringTypeConstructorDescriptor(value)) return index === path.length - 1;\n\t\tcurrent = value;\n\t}\n\treturn false;\n}\nfunction referencedModel(symbols, model, field) {\n\tif (field.malformedType === true || field.typeContractSpaceId !== void 0) return void 0;\n\tif (field.typeNamespaceId !== void 0) return symbols.topLevel.namespaces[field.typeNamespaceId]?.models[field.typeName];\n\tconst namespace = model.node.syntax.findAncestor(NamespaceDeclarationAst.cast)?.name()?.name();\n\treturn (namespace === void 0 ? void 0 : symbols.topLevel.namespaces[namespace]?.models[field.typeName]) ?? symbols.topLevel.models[field.typeName];\n}\nfunction sameSyntax(left, right) {\n\treturn left.offset === right.offset && left.endOffset === right.endOffset;\n}\n//#endregion\n//#region src/attribute-spec-resolution.ts\nfunction attributeSpecResolver(context, source) {\n\tswitch (context.ownerKind) {\n\t\tcase \"block\": {\n\t\t\tconst descriptor = findBlockDescriptor(source.pslBlockDescriptors, context.blockKeyword);\n\t\t\treturn (name) => {\n\t\t\t\tconst factory = descriptor?.attributes?.[name];\n\t\t\t\tif (factory === void 0) return void 0;\n\t\t\t\treturn blindCast(factory)();\n\t\t\t};\n\t\t}\n\t\tcase \"model\": {\n\t\t\tif (source.authoringContributions === void 0) return () => void 0;\n\t\t\tconst model = modelSymbolForNode(source.symbolTable, context.model);\n\t\t\tif (model === void 0 || source.controlMutationDefaults === void 0) return () => void 0;\n\t\t\tconst specs = assembleAttributeSpecs(source.authoringContributions);\n\t\t\tconst specContext = {\n\t\t\t\tsymbols: source.symbolTable,\n\t\t\t\tmodel,\n\t\t\t\tcontrolMutationDefaults: source.controlMutationDefaults\n\t\t\t};\n\t\t\treturn (name) => specs.model[name]?.(specContext);\n\t\t}\n\t\tcase \"field\": {\n\t\t\tif (source.authoringContributions === void 0) return () => void 0;\n\t\t\tconst model = modelSymbolForNode(source.symbolTable, context.model);\n\t\t\tif (model === void 0 || source.controlMutationDefaults === void 0) return () => void 0;\n\t\t\tconst field = fieldSymbolForNode(model, context.field);\n\t\t\tif (field === void 0) return () => void 0;\n\t\t\tconst specs = assembleAttributeSpecs(source.authoringContributions);\n\t\t\tconst specContext = {\n\t\t\t\tsymbols: source.symbolTable,\n\t\t\t\tmodel,\n\t\t\t\tcontrolMutationDefaults: source.controlMutationDefaults\n\t\t\t};\n\t\t\treturn (name) => specs.field[name]?.({\n\t\t\t\t...specContext,\n\t\t\t\tfield\n\t\t\t});\n\t\t}\n\t}\n}\n//#endregion\n//#region src/completion-snippets.ts\nfunction requiredArgumentsSnippet(signature) {\n\treturn requiredArguments(signature).map((argument, index) => requiredArgumentSnippet(argument, index + 1)).join(\", \");\n}\nfunction requiredArguments(signature) {\n\tconst positional = signature.positional ?? [];\n\tconst positionalKeys = new Set(positional.map((argument) => argument.key));\n\treturn [...positional.flatMap((argument) => isOptionalParam(argument.type) ? [] : [{\n\t\tkind: \"positional\",\n\t\targument\n\t}]), ...Object.entries(signature.named ?? {}).flatMap(([key, { type }]) => positionalKeys.has(key) || isOptionalParam(type) ? [] : [{\n\t\tkind: \"named\",\n\t\tkey,\n\t\ttype\n\t}])];\n}\nfunction requiredArgumentSnippet(argument, tabStop) {\n\tif (argument.kind === \"positional\") return argSnippetPlaceholder(argument.argument.type, tabStop, argument.argument.key);\n\treturn `${argument.key}: ${argSnippetPlaceholder(argument.type, tabStop, argument.key)}`;\n}\nfunction argSnippetPlaceholder(param, tabStop, key) {\n\tconst placeholder = `\\${${tabStop.toString()}:${key}}`;\n\tif (param.kind === \"str\") return `\"${placeholder}\"`;\n\tif (param.kind === \"list\") return `[${placeholder}]`;\n\tif (param.kind === \"record\") return `{ ${placeholder} }`;\n\treturn placeholder;\n}\nfunction isOptionalParam(param) {\n\treturn \"optional\" in param && param.optional === true;\n}\n//#endregion\n//#region src/attribute-argument-grammar.ts\nfunction directArgType(param) {\n\treturn blindCast(param);\n}\nfunction resolveGrammar(signature, path) {\n\tlet grammars = [signature];\n\tfor (const step of path) grammars = grammars.flatMap((grammar) => advanceGrammar(grammar, step));\n\treturn grammars;\n}\nfunction advanceGrammar(grammar, step) {\n\tconst type = \"kind\" in grammar ? directArgType(grammar) : void 0;\n\tif (type?.kind === \"oneOf\") return type.alternatives.flatMap((alternative) => advanceGrammar(alternative, step));\n\tswitch (step.kind) {\n\t\tcase \"positionalArgument\": {\n\t\t\tif (\"kind\" in grammar) return [];\n\t\t\tconst param = grammar.positional?.[step.index]?.type;\n\t\t\treturn param === void 0 ? [] : [param];\n\t\t}\n\t\tcase \"namedArgument\": {\n\t\t\tif (\"kind\" in grammar) return [];\n\t\t\tconst param = grammar.named?.[step.name]?.type;\n\t\t\treturn param === void 0 ? [] : [param];\n\t\t}\n\t\tcase \"listElement\": return type?.kind === \"list\" ? [type.of] : [];\n\t\tcase \"recordValue\": return type?.kind === \"record\" ? [type.of] : [];\n\t\tcase \"functionCall\": return type?.kind === \"funcCall\" && type.name === step.name ? [type.signature] : [];\n\t}\n}\n//#endregion\n//#region src/completion-values.ts\nfunction provideAttributeNamedKeyCompletionItems(input, spec) {\n\treturn orderedItems(resolveGrammar(spec, input.context.path).flatMap((grammar) => \"kind\" in grammar ? [] : namedKeyItems(input, grammar)));\n}\nfunction provideAttributeArgumentSlotCompletionItems(input, spec) {\n\treturn orderedItems(resolveGrammar(spec, input.context.path).flatMap((grammar) => {\n\t\tif (\"kind\" in grammar) return [];\n\t\tconst param = grammar.positional?.[input.context.positionalIndex]?.type;\n\t\treturn [...valueItems(input, param, \"scalar\"), ...namedKeyItems(input, grammar)];\n\t}));\n}\nfunction provideAttributeValueCompletionItems(input, spec) {\n\treturn orderedItems(resolveGrammar(spec, input.context.path).flatMap((grammar) => \"kind\" in grammar ? valueItems(input, grammar, input.context.syntax) : []));\n}\nfunction namedKeyItems(input, signature) {\n\treturn Object.entries(signature.named ?? {}).filter(([name]) => !input.context.existingNamedKeys.includes(name)).map(([name, param]) => {\n\t\tconst snippet = input.clientSupportsSnippets && !input.context.hasColon;\n\t\tconst value = snippet ? `\\${1:${name}}` : \"\";\n\t\treturn {\n\t\t\t...completionItem(input, name, input.context.hasColon ? name : `${name}: ${value}`, CompletionItemKind.Property, snippet, param.documentation),\n\t\t\t...!input.context.hasColon && input.clientSupportsTriggerSuggestCommand === true ? { command: {\n\t\t\t\ttitle: \"Suggest argument values\",\n\t\t\t\tcommand: \"editor.action.triggerSuggest\"\n\t\t\t} } : {}\n\t\t};\n\t});\n}\nfunction valueItems(input, param, syntax) {\n\tif (param === void 0) return [];\n\tconst type = directArgType(param);\n\tif (type.kind === \"oneOf\") return type.alternatives.flatMap((alternative) => valueItems(input, alternative, syntax));\n\tif (type.kind === \"funcCall\") {\n\t\tconst snippet = input.clientSupportsSnippets && syntax !== \"functionName\";\n\t\tconst hasParameters = (type.signature.positional?.length ?? 0) > 0 || Object.keys(type.signature.named ?? {}).length > 0;\n\t\tconst args = requiredArgumentsSnippet(type.signature) || (hasParameters ? \"${1:}\" : \"\");\n\t\tconst text = snippet ? `${type.name}(${args})` : type.name;\n\t\treturn [{\n\t\t\t...completionItem(input, type.name, text, CompletionItemKind.Function, snippet, type.signature.documentation),\n\t\t\t...snippet && input.clientSupportsTriggerParameterHintsCommand === true && hasParameters ? { command: {\n\t\t\t\ttitle: \"Show argument hints\",\n\t\t\t\tcommand: \"editor.action.triggerParameterHints\"\n\t\t\t} } : {}\n\t\t}];\n\t}\n\tif (syntax === \"functionName\") return [];\n\tif (type.kind === \"taggedLiteral\") return type.tags.map((tag) => ({\n\t\t...completionItem(input, tag, input.clientSupportsSnippets ? `${tag}\\`$1\\`` : tag, CompletionItemKind.Value, input.clientSupportsSnippets),\n\t\tdetail: type.documentation\n\t}));\n\tswitch (type.kind) {\n\t\tcase \"identifier\": return scalarItems(input, [type.name], type.documentation);\n\t\tcase \"str\": return scalarItems(input, type.value === void 0 ? [] : [JSON.stringify(type.value)]);\n\t\tcase \"num\": return scalarItems(input, type.value === void 0 ? [] : [String(type.value)]);\n\t\tcase \"bool\": return scalarItems(input, [\"true\", \"false\"]);\n\t\tcase \"fieldRef\":\n\t\tcase \"referencedFieldRef\": return scalarItems(input, input.fieldNames(type.kind));\n\t\tcase \"list\":\n\t\tcase \"record\":\n\t\tcase \"entityRef\":\n\t\tcase \"int\":\n\t\tcase \"json\":\n\t\tcase \"rejecting\": return [];\n\t}\n}\nfunction scalarItems(input, labels, documentation) {\n\treturn labels.map((label) => completionItem(input, label, label, CompletionItemKind.Value, false, documentation));\n}\nfunction completionItem(input, label, newText, kind, snippet = false, documentation) {\n\treturn {\n\t\tlabel,\n\t\tkind,\n\t\tdetail: documentation ?? (kind === CompletionItemKind.Property ? \"Attribute argument\" : \"PSL argument value\"),\n\t\tfilterText: label,\n\t\ttextEdit: {\n\t\t\trange: {\n\t\t\t\tstart: input.sourceFile.positionAt(input.context.replacementStartOffset),\n\t\t\t\tend: input.sourceFile.positionAt(input.context.replacementEndOffset)\n\t\t\t},\n\t\t\tnewText\n\t\t},\n\t\t...snippet ? { insertTextFormat: InsertTextFormat.Snippet } : {}\n\t};\n}\nfunction orderedItems(items) {\n\tconst seen = /* @__PURE__ */ new Set();\n\treturn items.filter((item) => {\n\t\tconst key = JSON.stringify([\n\t\t\titem.label,\n\t\t\titem.textEdit,\n\t\t\titem.insertTextFormat\n\t\t]);\n\t\tif (seen.has(key)) return false;\n\t\tseen.add(key);\n\t\treturn true;\n\t}).map((item, index) => ({\n\t\t...item,\n\t\tsortText: index.toString().padStart(4, \"0\")\n\t}));\n}\n//#endregion\n//#region src/completion-provider.ts\nconst categoryOrder = {\n\tconfiguredScalar: 0,\n\ttopLevelModel: 1,\n\ttopLevelCompositeType: 2,\n\tscalar: 3,\n\ttypeAlias: 4,\n\tnamespace: 5,\n\tnamespaceModel: 6,\n\tnamespaceCompositeType: 7\n};\nconst declarationKeywordCategoryOrder = {\n\tnative: 0,\n\tgenericBlock: 1\n};\nconst nameSnippetPlaceholder = \"${1:Name}\";\nconst namespaceSnippetPlaceholder = \"${1:name}\";\nconst namespaceNativeDeclarationKeywords = [nativeDeclarationKeyword(\"model\", \"model \", `model ${nameSnippetPlaceholder} {\\n \\${0:// Fields}\\n}`, \"Defines a data model.\"), nativeDeclarationKeyword(\"type\", \"type \", `type ${nameSnippetPlaceholder} {\\n \\${0:// Fields}\\n}`, \"Defines a reusable composite type.\")];\nconst documentNativeDeclarationKeywords = [\n\t...namespaceNativeDeclarationKeywords,\n\tnativeDeclarationKeyword(\"types\", \"types \", \"types {\\n ${0:// Type aliases}\\n}\", \"Defines reusable named types.\"),\n\tnativeDeclarationKeyword(\"namespace\", \"namespace \", `namespace ${namespaceSnippetPlaceholder} {\\n \\${0:// Models and types}\\n}`, \"Groups declarations belonging to the same database schema or database.\")\n];\nfunction providePslCompletionItems(input) {\n\tconst { context } = input;\n\tswitch (context.kind) {\n\t\tcase \"unsupported\": return [];\n\t\tcase \"spaceMember\": return [];\n\t\tcase \"genericBlockValue\": return [];\n\t\tcase \"fieldAttributeName\":\n\t\tcase \"modelAttributeName\":\n\t\tcase \"blockAttributeName\": return provideAttributeNameCompletionItems(context, input.sourceFile, input.candidates, input.clientSupportsSnippets, input.clientSupportsTriggerParameterHintsCommand === true);\n\t\tcase \"fieldAttributeNamedKey\":\n\t\tcase \"modelAttributeNamedKey\":\n\t\tcase \"blockAttributeNamedKey\": {\n\t\t\tconst spec = attributeSpecResolver(context, input.candidates)(context.attributeName);\n\t\t\treturn spec === void 0 ? [] : provideAttributeNamedKeyCompletionItems({\n\t\t\t\tcontext,\n\t\t\t\tsourceFile: input.sourceFile,\n\t\t\t\tclientSupportsSnippets: input.clientSupportsSnippets,\n\t\t\t\tclientSupportsTriggerSuggestCommand: input.clientSupportsTriggerSuggestCommand === true\n\t\t\t}, spec);\n\t\t}\n\t\tcase \"fieldAttributeArgumentSlot\":\n\t\tcase \"modelAttributeArgumentSlot\":\n\t\tcase \"blockAttributeArgumentSlot\": {\n\t\t\tconst spec = attributeSpecResolver(context, input.candidates)(context.attributeName);\n\t\t\treturn spec === void 0 ? [] : provideAttributeArgumentSlotCompletionItems({\n\t\t\t\tcontext,\n\t\t\t\tsourceFile: input.sourceFile,\n\t\t\t\tclientSupportsSnippets: input.clientSupportsSnippets,\n\t\t\t\tclientSupportsTriggerSuggestCommand: input.clientSupportsTriggerSuggestCommand === true,\n\t\t\t\tclientSupportsTriggerParameterHintsCommand: input.clientSupportsTriggerParameterHintsCommand === true,\n\t\t\t\tfieldNames: (kind) => kind === \"fieldRef\" ? localFieldNames(context, input.candidates.symbolTable, input.candidates.scalarTypes, input.candidates.authoringContributions?.type) : referencedFieldNames(context, input.candidates.symbolTable, input.candidates.scalarTypes, input.candidates.authoringContributions?.type)\n\t\t\t}, spec);\n\t\t}\n\t\tcase \"fieldAttributeValue\":\n\t\tcase \"modelAttributeValue\":\n\t\tcase \"blockAttributeValue\": {\n\t\t\tconst spec = attributeSpecResolver(context, input.candidates)(context.attributeName);\n\t\t\treturn spec === void 0 ? [] : provideAttributeValueCompletionItems({\n\t\t\t\tcontext,\n\t\t\t\tsourceFile: input.sourceFile,\n\t\t\t\tclientSupportsSnippets: input.clientSupportsSnippets,\n\t\t\t\tclientSupportsTriggerParameterHintsCommand: input.clientSupportsTriggerParameterHintsCommand === true,\n\t\t\t\tfieldNames: (kind) => kind === \"fieldRef\" ? localFieldNames(context, input.candidates.symbolTable, input.candidates.scalarTypes, input.candidates.authoringContributions?.type) : referencedFieldNames(context, input.candidates.symbolTable, input.candidates.scalarTypes, input.candidates.authoringContributions?.type)\n\t\t\t}, spec);\n\t\t}\n\t\tcase \"declarationKeyword\": return provideDeclarationKeywordCompletionItems(context, input.sourceFile, input.candidates, input.clientSupportsSnippets);\n\t\tcase \"genericBlockKey\": return provideGenericBlockKeyCompletionItems(context, input.sourceFile, input.candidates);\n\t\tcase \"modelType\": return provideModelTypeCompletionItems(context, input.sourceFile, input.candidates);\n\t\tcase \"namespaceMember\": return provideNamespaceMemberCompletionItems(context, input.sourceFile, input.candidates);\n\t}\n}\nfunction provideAttributeNameCompletionItems(context, sourceFile, source, clientSupportsSnippets, clientSupportsTriggerParameterHintsCommand) {\n\tconst names = attributeNames(context, source);\n\tconst replacementRange = {\n\t\tstart: sourceFile.positionAt(context.replacementStartOffset),\n\t\tend: sourceFile.positionAt(context.replacementEndOffset)\n\t};\n\tconst resolveSpec = attributeSpecResolver(context, source);\n\treturn names.map((name) => {\n\t\tconst spec = resolveSpec(name);\n\t\tconst newText = attributeNameEditText({\n\t\t\tname,\n\t\t\tspec,\n\t\t\thasArgumentList: context.hasArgumentList,\n\t\t\tclientSupportsSnippets\n\t\t});\n\t\treturn {\n\t\t\tlabel: name,\n\t\t\tkind: CompletionItemKind.Function,\n\t\t\tdetail: spec?.documentation || \"PSL attribute\",\n\t\t\tsortText: name,\n\t\t\tfilterText: name,\n\t\t\ttextEdit: {\n\t\t\t\trange: replacementRange,\n\t\t\t\tnewText\n\t\t\t},\n\t\t\t...newText !== name ? { insertTextFormat: InsertTextFormat.Snippet } : {},\n\t\t\t...newText !== name && clientSupportsTriggerParameterHintsCommand ? { command: {\n\t\t\t\ttitle: \"Show argument hints\",\n\t\t\t\tcommand: \"editor.action.triggerParameterHints\"\n\t\t\t} } : {}\n\t\t};\n\t});\n}\nfunction attributeNames(context, source) {\n\tswitch (context.kind) {\n\t\tcase \"blockAttributeName\": {\n\t\t\tconst descriptor = findBlockDescriptor(source.pslBlockDescriptors, context.blockKeyword);\n\t\t\treturn sortedUnique(Object.keys(descriptor?.attributes ?? {}));\n\t\t}\n\t\tcase \"fieldAttributeName\":\n\t\t\tif (source.authoringContributions === void 0) return [];\n\t\t\treturn sortedUnique(Object.keys(assembleAttributeSpecs(source.authoringContributions).field));\n\t\tcase \"modelAttributeName\":\n\t\t\tif (source.authoringContributions === void 0) return [];\n\t\t\treturn sortedUnique(Object.keys(assembleAttributeSpecs(source.authoringContributions).model));\n\t}\n}\nfunction attributeNameEditText(input) {\n\tif (!input.clientSupportsSnippets || input.spec === void 0 || input.hasArgumentList) return input.name;\n\tconst required = requiredArgumentsSnippet(input.spec);\n\treturn required.length === 0 ? input.name : `${input.name}(${required})`;\n}\nfunction provideDeclarationKeywordCompletionItems(context, sourceFile, source, clientSupportsSnippets) {\n\tconst replacementRange = {\n\t\tstart: sourceFile.positionAt(context.replacementStartOffset),\n\t\tend: sourceFile.positionAt(context.offset)\n\t};\n\treturn declarationKeywordCandidates(context.scope, source).map((candidate) => ({\n\t\tlabel: candidate.label,\n\t\tkind: candidate.kind,\n\t\tdetail: candidate.detail,\n\t\tsortText: declarationKeywordSortText(candidate),\n\t\tfilterText: candidate.label,\n\t\t...clientSupportsSnippets ? { insertTextFormat: InsertTextFormat.Snippet } : {},\n\t\ttextEdit: {\n\t\t\trange: replacementRange,\n\t\t\tnewText: clientSupportsSnippets ? candidate.snippetText : candidate.insertText\n\t\t}\n\t}));\n}\nfunction declarationKeywordCandidates(scope, source) {\n\treturn [...scope === \"namespace\" ? namespaceNativeDeclarationKeywords : documentNativeDeclarationKeywords, ...genericBlockDeclarationKeywordCandidates(source.pslBlockDescriptors)];\n}\nfunction nativeDeclarationKeyword(label, insertText, snippetText, documentation) {\n\treturn {\n\t\tcategory: \"native\",\n\t\tlabel,\n\t\tinsertText,\n\t\tsnippetText,\n\t\tdetail: documentation,\n\t\tkind: CompletionItemKind.Keyword\n\t};\n}\nfunction genericBlockDeclarationKeywordCandidates(descriptors) {\n\treturn descriptorBlockKeywords(descriptors).map((keyword) => {\n\t\tconst descriptor = findBlockDescriptor(descriptors, keyword);\n\t\treturn {\n\t\t\tcategory: \"genericBlock\",\n\t\t\tlabel: keyword,\n\t\t\tinsertText: `${keyword} `,\n\t\t\tsnippetText: genericBlockSnippet(keyword, descriptor),\n\t\t\tdetail: descriptor?.documentation || \"Generic block keyword\",\n\t\t\tkind: CompletionItemKind.Keyword\n\t\t};\n\t});\n}\nfunction genericBlockSnippet(keyword, descriptor) {\n\tconst parameters = Object.entries(descriptor?.parameters ?? {}).filter(([, parameter]) => parameter.required === true).map(([name, parameter], index) => {\n\t\tconst placeholder = `\\${${index + 2}:${name}}`;\n\t\treturn ` ${name} = ${parameter.kind === \"list\" ? `[${placeholder}]` : placeholder}`;\n\t});\n\tconst cursor = parameters.length === 0 ? \"${0:// Block parameters and attributes}\" : \"$0\";\n\treturn [\n\t\t`${keyword} ${nameSnippetPlaceholder} {`,\n\t\t...parameters,\n\t\t` ${cursor}`,\n\t\t\"}\"\n\t].join(\"\\n\");\n}\nfunction descriptorBlockKeywords(descriptors) {\n\tconst keywords = [];\n\tcollectDescriptorBlockKeywords(descriptors, keywords);\n\treturn sortedUnique(keywords);\n}\nfunction collectDescriptorBlockKeywords(descriptors, keywords) {\n\tfor (const value of Object.values(descriptors)) {\n\t\tif (isAuthoringPslBlockDescriptor(value)) {\n\t\t\tkeywords.push(value.keyword);\n\t\t\tcontinue;\n\t\t}\n\t\tcollectDescriptorBlockKeywords(value, keywords);\n\t}\n}\nfunction declarationKeywordSortText(candidate) {\n\treturn `${declarationKeywordCategoryOrder[candidate.category]}:${candidate.label}`;\n}\nfunction provideGenericBlockKeyCompletionItems(context, sourceFile, source) {\n\tconst descriptor = findBlockDescriptor(source.pslBlockDescriptors, context.blockKeyword);\n\tif (descriptor === void 0) return [];\n\tconst existing = existingGenericBlockParameterNames(context.block, context.offset);\n\tconst replacementRange = {\n\t\tstart: sourceFile.positionAt(context.replacementStartOffset),\n\t\tend: sourceFile.positionAt(context.offset)\n\t};\n\treturn Object.keys(descriptor.parameters).filter((parameterName) => !existing.has(parameterName)).map((parameterName, index) => ({\n\t\tlabel: parameterName,\n\t\tkind: CompletionItemKind.Property,\n\t\tdetail: descriptor.parameters[parameterName]?.documentation || \"Generic block parameter\",\n\t\tsortText: genericBlockParameterSortText(index, parameterName),\n\t\tfilterText: parameterName,\n\t\ttextEdit: {\n\t\t\trange: replacementRange,\n\t\t\tnewText: parameterName\n\t\t}\n\t}));\n}\nfunction existingGenericBlockParameterNames(block, cursorOffset) {\n\tconst names = /* @__PURE__ */ new Set();\n\tfor (const entry of block.entries()) {\n\t\tif (!entry.syntax.isOutside(cursorOffset)) continue;\n\t\tconst name = entry.key()?.name();\n\t\tif (name !== void 0) names.add(name);\n\t}\n\treturn names;\n}\nfunction provideModelTypeCompletionItems(context, sourceFile, source) {\n\treturn modelTypeCompletionItems(context, sourceFile, [\n\t\t...configuredScalarCandidates(source),\n\t\t...topLevelSymbolCandidates(source.symbolTable, source.scalarTypes),\n\t\t...allNamespaceCandidates(source.symbolTable)\n\t]);\n}\nfunction provideNamespaceMemberCompletionItems(context, sourceFile, source) {\n\tif (context.space !== void 0) return [];\n\treturn modelTypeCompletionItems(context, sourceFile, namespaceCandidates(source.symbolTable.topLevel.namespaces[context.namespace]));\n}\nfunction modelTypeCompletionItems(context, sourceFile, candidates) {\n\tconst replacementRange = {\n\t\tstart: sourceFile.positionAt(context.replacementStartOffset),\n\t\tend: sourceFile.positionAt(context.offset)\n\t};\n\treturn candidates.map((candidate) => ({\n\t\tlabel: candidate.label,\n\t\tkind: candidate.kind,\n\t\tdetail: candidate.detail,\n\t\tsortText: sortText(candidate),\n\t\tfilterText: candidate.filterText,\n\t\ttextEdit: {\n\t\t\trange: replacementRange,\n\t\t\tnewText: candidate.insertText\n\t\t}\n\t}));\n}\nfunction configuredScalarCandidates(source) {\n\tconst constructors = source.authoringContributions?.type ?? {};\n\treturn sortedUnique(source.scalarTypes).map((name) => ({\n\t\tcategory: \"configuredScalar\",\n\t\tlabel: name,\n\t\tinsertText: name,\n\t\tfilterText: name,\n\t\tdetail: constructors[name] !== void 0 && isAuthoringTypeConstructorDescriptor(constructors[name]) ? constructors[name].documentation || \"Configured scalar type\" : \"Configured scalar type\",\n\t\tkind: CompletionItemKind.Keyword\n\t}));\n}\nfunction topLevelSymbolCandidates(symbolTable, scalarTypes) {\n\tconst { topLevel } = symbolTable;\n\tconst namedTypes = Object.values(topLevel.namedTypes);\n\tconst scalarRefinementNames = namedTypes.filter((symbol) => refinesScalarType(symbol, scalarTypes)).map((symbol) => symbol.name).sort(compareNames);\n\tconst aliasNames = namedTypes.filter((symbol) => !refinesScalarType(symbol, scalarTypes)).map((symbol) => symbol.name).sort(compareNames);\n\treturn [\n\t\t...symbolCandidates(recordNames(topLevel.models), \"topLevelModel\", \"Model\", CompletionItemKind.Class),\n\t\t...symbolCandidates(recordNames(topLevel.compositeTypes), \"topLevelCompositeType\", \"Composite type\", CompletionItemKind.Struct),\n\t\t...symbolCandidates(scalarRefinementNames, \"scalar\", \"Scalar type\", CompletionItemKind.Unit),\n\t\t...symbolCandidates(aliasNames, \"typeAlias\", \"Type alias\", CompletionItemKind.Reference)\n\t];\n}\nfunction allNamespaceCandidates(symbolTable) {\n\treturn Object.values(symbolTable.topLevel.namespaces).sort((left, right) => compareNames(left.name, right.name)).map(namespaceQualifierCandidate);\n}\nfunction namespaceCandidates(namespace) {\n\tif (namespace === void 0) return [];\n\treturn [...symbolCandidates(recordNames(namespace.models), \"namespaceModel\", `Model in namespace ${namespace.name}`, CompletionItemKind.Class), ...symbolCandidates(recordNames(namespace.compositeTypes), \"namespaceCompositeType\", `Composite type in namespace ${namespace.name}`, CompletionItemKind.Struct)];\n}\nfunction namespaceQualifierCandidate(namespace) {\n\treturn {\n\t\tcategory: \"namespace\",\n\t\tlabel: namespace.name,\n\t\tinsertText: namespace.name,\n\t\tfilterText: namespace.name,\n\t\tdetail: \"Namespace\",\n\t\tkind: CompletionItemKind.Module\n\t};\n}\nfunction symbolCandidates(names, category, detail, kind) {\n\treturn names.map((name) => ({\n\t\tcategory,\n\t\tlabel: name,\n\t\tinsertText: name,\n\t\tfilterText: name,\n\t\tdetail,\n\t\tkind\n\t}));\n}\nfunction recordNames(record) {\n\treturn Object.values(record).map((symbol) => symbol.name).sort(compareNames);\n}\nfunction sortedUnique(names) {\n\treturn [...new Set(names)].sort(compareNames);\n}\nfunction sortText(candidate) {\n\treturn `${categoryOrder[candidate.category]}:${candidate.label}`;\n}\nfunction genericBlockParameterSortText(index, label) {\n\treturn `${index.toString().padStart(4, \"0\")}:${label}`;\n}\nfunction compareNames(left, right) {\n\tif (left < right) return -1;\n\tif (left > right) return 1;\n\treturn 0;\n}\n//#endregion\n//#region src/schema-inputs.ts\nfunction hasPslInputs(config) {\n\tconst source = config.contract?.source;\n\treturn source?.format === \"psl\" && source.inputs !== void 0;\n}\nfunction resolveSchemaInputs(config) {\n\tconst uris = (hasPslInputs(config) ? config.contract?.source.inputs : void 0)?.map(configuredInputUri) ?? [];\n\tconst identities = new Set(uris.map(canonicalFileIdentity));\n\treturn {\n\t\tincludes: (uri) => identities.has(canonicalFileIdentity(uri)),\n\t\turis: () => uris\n\t};\n}\nfunction configuredInputUri(input) {\n\tif (isFileUri(input)) return input;\n\treturn pathToFileURL(input, { windows: isWindowsPlatform() }).toString();\n}\nfunction isFileUri(input) {\n\ttry {\n\t\treturn new URL(input).protocol === \"file:\";\n\t} catch {\n\t\treturn false;\n\t}\n}\nfunction canonicalFileIdentity(uri) {\n\tlet url;\n\ttry {\n\t\turl = new URL(uri);\n\t} catch {\n\t\treturn uri;\n\t}\n\tif (url.protocol !== \"file:\") return uri;\n\ttry {\n\t\tconst windows = isWindowsPlatform();\n\t\tconst filePath = normalize(fileURLToPath(url, { windows }));\n\t\treturn windows ? filePath.toLowerCase() : filePath;\n\t} catch {\n\t\treturn uri;\n\t}\n}\nfunction isWindowsPlatform() {\n\treturn process.platform === \"win32\";\n}\n//#endregion\n//#region src/config-resolution.ts\nconst CONFIG_FILENAME = \"prisma.config.ts\";\nconst emptyPipelineInputs = {\n\tscalarTypes: [],\n\tpslBlockDescriptors: {}\n};\nasync function resolveConfigInputs(configPath) {\n\tconst loaded = await loadConfig(configPath);\n\tif (!loaded.ok) throw loaded.failure;\n\tconst projectSections = requireConfigSections(loaded.value, [\"contract\", \"formatter\"]);\n\tif (!projectSections.ok) throw projectSections.failure;\n\tconst config = projectSections.value;\n\tconst inputs = resolveSchemaInputs(config);\n\tif (!hasPslInputs(config)) return {\n\t\tinputs,\n\t\tcontrolStack: emptyPipelineInputs,\n\t\t...config.formatter === void 0 ? {} : { formatter: config.formatter }\n\t};\n\tconst controlSections = requireConfigSections(loaded.value, [\n\t\t\"family\",\n\t\t\"target\",\n\t\t\"adapter\",\n\t\t\"driver\",\n\t\t\"extensions\"\n\t]);\n\tif (!controlSections.ok) throw controlSections.failure;\n\tconst stack = createControlStack(config);\n\tconst interpretation = resolveInterpretation(config, stack, inputs);\n\treturn {\n\t\tinputs,\n\t\tcontrolStack: pipelineInputsFromStack(stack),\n\t\t...config.formatter === void 0 ? {} : { formatter: config.formatter },\n\t\t...interpretation === void 0 ? {} : { interpretation }\n\t};\n}\nfunction pipelineInputsFromStack(stack) {\n\treturn {\n\t\tscalarTypes: [...stack.scalarTypes],\n\t\tpslBlockDescriptors: stack.authoringContributions.pslBlockDescriptors,\n\t\tauthoringContributions: stack.authoringContributions,\n\t\t...stack.controlMutationDefaults === void 0 ? {} : { controlMutationDefaults: stack.controlMutationDefaults }\n\t};\n}\nfunction resolveInterpretation(config, stack, inputs) {\n\tconst source = config.contract?.source;\n\tif (source === void 0 || !hasPslInterpreter(source)) return;\n\treturn {\n\t\tsource,\n\t\tcontext: {\n\t\t\tcomposedExtensions: stack.extensions.map((p) => p.id),\n\t\t\tcomposedExtensionContracts: stack.extensionContracts,\n\t\t\tauthoringContributions: stack.authoringContributions,\n\t\t\tcodecLookup: stack.codecLookup,\n\t\t\tcontrolMutationDefaults: stack.controlMutationDefaults,\n\t\t\tresolvedInputs: [...inputs.uris()],\n\t\t\tcapabilities: stack.capabilities\n\t\t}\n\t};\n}\n//#endregion\n//#region src/folding-ranges.ts\n/**\n* Computes folding ranges for block declarations in a PSL document.\n*\n* Block types that produce folding ranges:\n* - model (e.g., `model User { ... }`)\n* - composite type (e.g., `type Address { ... }`)\n* - namespace (e.g., `namespace billing { ... }`)\n* - generic blocks (generator, datasource, extension blocks)\n* - types block (e.g., `types { ... }`)\n*\n* The range spans from the line containing `{` to the line containing `}`.\n*/\nfunction computeFoldingRanges(document, sourceFile) {\n\tconst ranges = [];\n\tcollectFoldingRanges(document, sourceFile, ranges);\n\treturn ranges;\n}\nfunction collectFoldingRanges(document, sourceFile, ranges) {\n\tfor (const declaration of document.declarations()) {\n\t\taddFoldingRange(declaration, sourceFile, ranges);\n\t\tconst namespace = NamespaceDeclarationAst.cast(declaration.syntax);\n\t\tif (namespace !== void 0) for (const nested of namespace.declarations()) addFoldingRange(nested, sourceFile, ranges);\n\t}\n}\nfunction addFoldingRange(declaration, sourceFile, ranges) {\n\tconst lbrace = declaration.lbrace();\n\tconst rbrace = declaration.rbrace();\n\tif (lbrace === void 0 || rbrace === void 0) return;\n\tconst startLine = sourceFile.positionAt(lbrace.offset).line;\n\tconst endLine = sourceFile.positionAt(rbrace.offset).line;\n\tranges.push({\n\t\tstartLine,\n\t\tendLine,\n\t\tkind: FoldingRangeKind.Region\n\t});\n}\n//#endregion\n//#region src/guarded-connection.ts\n/**\n* Wraps a connection so that an outbound call the client is no longer there to\n* receive does nothing, instead of throwing at whoever made it.\n*\n* `vscode-jsonrpc` marks the connection closed the moment the input stream\n* ends, and every send after that throws synchronously. A throw that escapes a\n* notification handler ends the process: jsonrpc reports it through its logger,\n* which is the connection's own remote console, so the report is another send —\n* it throws again inside a `.catch()`, and the unhandled rejection is fatal.\n*\n* The wrapper carries the check so no individual send site has to: reads walk\n* the connection's features (`console`, `languages`, …) and hand back guarded\n* functions, so a send added later is guarded by construction. Only the\n* connection's departure is swallowed — any other synchronous failure is a bug\n* in the caller and still reaches it.\n*/\nfunction guardedConnection(connection) {\n\treturn guardCalls(connection);\n}\nfunction guardCalls(target) {\n\tconst guarded = /* @__PURE__ */ new Map();\n\treturn new Proxy(target, { get: (source, property) => {\n\t\tconst cached = guarded.get(property);\n\t\tif (cached !== void 0) return cached;\n\t\tconst value = Reflect.get(source, property);\n\t\tif (typeof value === \"function\") {\n\t\t\tconst call = (...args) => whileConnected(() => Reflect.apply(value, source, args));\n\t\t\tguarded.set(property, call);\n\t\t\treturn call;\n\t\t}\n\t\tif (typeof value === \"object\" && value !== null) {\n\t\t\tconst feature = guardCalls(value);\n\t\t\tguarded.set(property, feature);\n\t\t\treturn feature;\n\t\t}\n\t\treturn value;\n\t} });\n}\n/**\n* Whether an error says the connection is gone.\n*\n* The identity check is the fast path. It misses when the error comes from a\n* second copy of `vscode-jsonrpc` in the dependency tree, whose\n* `ConnectionError` is a different class carrying the same shape, so the code\n* is what decides: `Closed`, `Disposed` and `AlreadyListening` are the whole\n* range, and no other error jsonrpc throws carries a numeric `code` in it.\n*/\nfunction isConnectionGone(error) {\n\tif (error instanceof ConnectionError) return true;\n\tif (!(error instanceof Error) || !(\"code\" in error)) return false;\n\tconst { code } = error;\n\treturn code === ConnectionErrors.Closed || code === ConnectionErrors.Disposed || code === ConnectionErrors.AlreadyListening;\n}\nfunction whileConnected(send) {\n\tlet sent;\n\ttry {\n\t\tsent = send();\n\t} catch (error) {\n\t\tif (isConnectionGone(error)) return Promise.resolve(void 0);\n\t\tthrow error;\n\t}\n\treturn isThenable(sent) ? sent.then(void 0, () => void 0) : sent;\n}\nfunction isThenable(value) {\n\treturn typeof value === \"object\" && value !== null && \"then\" in value && typeof Reflect.get(value, \"then\") === \"function\";\n}\n//#endregion\n//#region src/pipeline.ts\n/**\n* Composes the stages exactly as the contract-psl provider does, so the editor\n* and the build agree: `parse` then `buildSymbolTable`, parse diagnostics ahead\n* of symbol-table diagnostics. Never throws on malformed input — `parse`\n* recovers and `buildSymbolTable` is documented not to throw.\n*/\nfunction runPipeline(text, inputs) {\n\tconst { document, sourceFile, diagnostics: parseDiagnostics } = parse(text);\n\tconst { table: symbolTable, diagnostics: symbolTableDiagnostics } = buildSymbolTable({\n\t\tdocument,\n\t\tsourceFile,\n\t\tpslBlockDescriptors: inputs.pslBlockDescriptors\n\t});\n\treturn {\n\t\tdocument,\n\t\tsourceFile,\n\t\tsymbolTable,\n\t\tdiagnostics: mapParseDiagnostics([...parseDiagnostics, ...symbolTableDiagnostics])\n\t};\n}\n//#endregion\n//#region src/schema-directive.ts\nconst DIRECTIVE = /^(\\s*\\/\\/ *use +)(prisma-8|prisma-next)( *)(?!\\S)/;\nconst LEGACY_NAME = \"prisma-next\";\nfunction isPrismaNextSchema(text) {\n\treturn DIRECTIVE.test(text);\n}\n/** The document with the directive earlier releases wrote replaced by the current one. */\nfunction renameLegacyDirective(text) {\n\treturn text.replace(DIRECTIVE, (whole, lead, name, trail) => name === LEGACY_NAME ? `${lead}prisma-8${trail}` : whole);\n}\n//#endregion\n//#region src/document-diagnostics.ts\n/**\n* `null` (not a configured input) is distinct from a `DocumentDiagnostics` whose\n* `diagnostics` are `[]` (an input that parsed clean): the caller treats both as\n* \"publish no diagnostics\", but only the latter is a document we own and keep\n* diagnosing.\n*/\nfunction computeDocumentDiagnostics(uri, text, inputs, controlStack) {\n\tif (!inputs.includes(uri) || !isPrismaNextSchema(text)) return null;\n\tconst { document, sourceFile, symbolTable, diagnostics } = runPipeline(text, controlStack);\n\treturn {\n\t\tdiagnostics,\n\t\tdocument,\n\t\tsourceFile,\n\t\tsymbolTable\n\t};\n}\n//#endregion\n//#region src/project-artifacts.ts\nfunction createProjectArtifacts(options) {\n\tconst { inputs, controlStack, getText, interpretation } = options;\n\tconst documents = /* @__PURE__ */ new Map();\n\tlet symbolTable;\n\tfunction createInterpretSlot(uri, computed) {\n\t\tif (interpretation === void 0) return () => [];\n\t\tlet memo;\n\t\tconst interpretDiagnostics = () => {\n\t\t\tif (memo === void 0) {\n\t\t\t\tconst result = interpretation.source.interpret({\n\t\t\t\t\tdocument: computed.document,\n\t\t\t\t\tsourceFile: computed.sourceFile,\n\t\t\t\t\tsymbolTable: computed.symbolTable,\n\t\t\t\t\tsourceId: uri\n\t\t\t\t}, interpretation.context);\n\t\t\t\tmemo = mapInterpreterDiagnostics(result.ok ? [] : result.failure.diagnostics, computed.sourceFile);\n\t\t\t}\n\t\t\treturn memo;\n\t\t};\n\t\treturn () => {\n\t\t\ttry {\n\t\t\t\treturn interpretDiagnostics();\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof ResponseError && (error.code === LSPErrorCodes.RequestCancelled || error.code === LSPErrorCodes.ServerCancelled || error.code === LSPErrorCodes.ContentModified)) throw error;\n\t\t\t\toptions.onInterpretationError(uri, error);\n\t\t\t\treturn [{\n\t\t\t\t\trange: {\n\t\t\t\t\t\tstart: {\n\t\t\t\t\t\t\tline: 0,\n\t\t\t\t\t\t\tcharacter: 0\n\t\t\t\t\t\t},\n\t\t\t\t\t\tend: {\n\t\t\t\t\t\t\tline: 0,\n\t\t\t\t\t\t\tcharacter: 1\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tcode: \"PRISMA_NEXT_INTERPRETATION_FAILED\",\n\t\t\t\t\tmessage: \"Semantic diagnostics are unavailable because of an internal error. A subsequent diagnostic request or edit will retry.\",\n\t\t\t\t\tseverity: ParseDiagnosticSeverity.Error\n\t\t\t\t}];\n\t\t\t}\n\t\t};\n\t}\n\tfunction drop(uri) {\n\t\tif (documents.delete(uri)) symbolTable = void 0;\n\t}\n\tfunction readDocument(uri) {\n\t\tconst existing = documents.get(uri);\n\t\tif (existing !== void 0) return existing;\n\t\tconst text = getText(uri);\n\t\tif (text === void 0) return;\n\t\tconst computed = computeDocumentDiagnostics(uri, text, inputs, controlStack);\n\t\tif (computed === null) return;\n\t\tconst artifacts = {\n\t\t\tdocument: computed.document,\n\t\t\tsourceFile: computed.sourceFile,\n\t\t\tdiagnostics: computed.diagnostics,\n\t\t\tinterpretDiagnostics: createInterpretSlot(uri, computed)\n\t\t};\n\t\tdocuments.set(uri, artifacts);\n\t\tsymbolTable = computed.symbolTable;\n\t\treturn artifacts;\n\t}\n\treturn {\n\t\tdocument: readDocument,\n\t\tsymbolTable: () => {\n\t\t\tif (symbolTable !== void 0) return symbolTable;\n\t\t\tfor (const uri of inputs.uris()) {\n\t\t\t\tconst artifacts = readDocument(uri);\n\t\t\t\tif (artifacts === void 0) continue;\n\t\t\t\tsymbolTable ??= buildSymbolTable({\n\t\t\t\t\tdocument: artifacts.document,\n\t\t\t\t\tsourceFile: artifacts.sourceFile,\n\t\t\t\t\tpslBlockDescriptors: controlStack.pslBlockDescriptors\n\t\t\t\t}).table;\n\t\t\t\treturn symbolTable;\n\t\t\t}\n\t\t\tthrow new InternalError(\"invariant violated: project has no readable configured input — callers must check document artifacts first\");\n\t\t},\n\t\tdocumentChanged: drop,\n\t\tdocumentClosed: drop\n\t};\n}\n//#endregion\n//#region src/semantic-tokens.ts\nconst semanticTokenTypes = [\n\tSemanticTokenTypes.keyword,\n\tSemanticTokenTypes.namespace,\n\tSemanticTokenTypes.class,\n\tSemanticTokenTypes.struct,\n\tSemanticTokenTypes.type,\n\tSemanticTokenTypes.property,\n\tSemanticTokenTypes.decorator,\n\tSemanticTokenTypes.string,\n\tSemanticTokenTypes.number,\n\tSemanticTokenTypes.comment\n];\nconst semanticTokenModifiers = [SemanticTokenModifiers.declaration, SemanticTokenModifiers.defaultLibrary];\nconst semanticTokenModifierIndexes = {\n\tdeclaration: 0,\n\tdefaultLibrary: 1\n};\nconst semanticTokenModifierBits = {\n\tdeclaration: 1 << semanticTokenModifierIndexes.declaration,\n\tdefaultLibrary: 1 << semanticTokenModifierIndexes.defaultLibrary\n};\nconst semanticTokensLegend = {\n\ttokenTypes: [...semanticTokenTypes],\n\ttokenModifiers: [...semanticTokenModifiers]\n};\nfunction buildSemanticTokens(source, range) {\n\tconst builder = new SemanticTokensBuilder(source.sourceFile, range);\n\tfor (const token of collectSemanticTokenEvents(source)) builder.add(token);\n\treturn builder.build();\n}\nfunction collectSemanticTokenEvents(source) {\n\tconst comments = collectCommentTokens(source.document);\n\tconst tokens = [];\n\tcollectDeclarations(source, tokens);\n\treturn mergeSourceOrderedTokens(comments, tokens);\n}\nvar SemanticTokensBuilder = class {\n\t#data = [];\n\t#sourceFile;\n\t#rangeOffsets;\n\t#previousLine = 0;\n\t#previousCharacter = 0;\n\t#first = true;\n\tconstructor(sourceFile, range) {\n\t\tthis.#sourceFile = sourceFile;\n\t\tif (range !== void 0) {\n\t\t\tconst startOffset = sourceFile.offsetAt(range.start);\n\t\t\tconst endOffset = sourceFile.offsetAt(range.end);\n\t\t\tthis.#rangeOffsets = {\n\t\t\t\tlower: Math.min(startOffset, endOffset),\n\t\t\t\tupper: Math.max(startOffset, endOffset)\n\t\t\t};\n\t\t}\n\t}\n\tadd(token) {\n\t\tif (!this.#intersectsRange(token.startOffset, token.endOffset)) return;\n\t\tif (token.splitMultiline) {\n\t\t\tthis.#addMultilineSplitToken(token);\n\t\t\treturn;\n\t\t}\n\t\tthis.#encode(token.startOffset, token.endOffset, token.tokenTypeIndex, token.modifierBitset);\n\t}\n\tbuild() {\n\t\treturn { data: this.#data };\n\t}\n\t#intersectsRange(startOffset, endOffset) {\n\t\tconst rangeOffsets = this.#rangeOffsets;\n\t\treturn rangeOffsets === void 0 || startOffset < rangeOffsets.upper && endOffset > rangeOffsets.lower;\n\t}\n\t#addMultilineSplitToken(token) {\n\t\tconst start = this.#sourceFile.positionAt(token.startOffset);\n\t\tconst end = this.#sourceFile.positionAt(token.endOffset);\n\t\tif (start.line === end.line) {\n\t\t\tthis.#encode(token.startOffset, token.endOffset, token.tokenTypeIndex, token.modifierBitset);\n\t\t\treturn;\n\t\t}\n\t\tfor (let line = start.line; line <= end.line; line++) {\n\t\t\tconst startOffset = line === start.line ? token.startOffset : this.#sourceFile.lineStartOffset(line);\n\t\t\tconst endOffset = line === end.line ? token.endOffset : this.#sourceFile.lineEndOffset(line);\n\t\t\tif (endOffset > startOffset && this.#intersectsRange(startOffset, endOffset)) this.#encode(startOffset, endOffset, token.tokenTypeIndex, token.modifierBitset);\n\t\t}\n\t}\n\t#encode(startOffset, endOffset, tokenTypeIndex, modifierBitset) {\n\t\tconst start = this.#sourceFile.positionAt(startOffset);\n\t\tconst deltaLine = this.#first ? start.line : start.line - this.#previousLine;\n\t\tconst deltaStart = this.#first || deltaLine !== 0 ? start.character : start.character - this.#previousCharacter;\n\t\tthis.#data.push(deltaLine, deltaStart, endOffset - startOffset, tokenTypeIndex, modifierBitset);\n\t\tthis.#previousLine = start.line;\n\t\tthis.#previousCharacter = start.character;\n\t\tthis.#first = false;\n\t}\n};\nfunction collectCommentTokens(document) {\n\tconst tokens = [];\n\tfor (const token of document.syntax.tokens()) if (token.kind === \"Comment\") tokens.push(pendingTokenForToken(token, \"comment\"));\n\treturn tokens;\n}\nfunction collectDeclarations(source, tokens) {\n\tfor (const declaration of source.document.declarations()) collectDeclaration(declaration, source, tokens, void 0);\n}\nfunction collectDeclaration(declaration, source, tokens, namespace) {\n\tif (declaration instanceof ModelDeclarationAst) {\n\t\taddToken(declaration.keyword(), \"keyword\", tokens);\n\t\taddIdentifier(declaration.name(), \"class\", tokens, semanticTokenModifierBits.declaration);\n\t\tcollectBlockMembers(declaration.members(), source, tokens, namespace);\n\t\treturn;\n\t}\n\tif (declaration instanceof CompositeTypeDeclarationAst) {\n\t\taddToken(declaration.keyword(), \"keyword\", tokens);\n\t\taddIdentifier(declaration.name(), \"struct\", tokens, semanticTokenModifierBits.declaration);\n\t\tcollectBlockMembers(declaration.members(), source, tokens, namespace);\n\t\treturn;\n\t}\n\tif (declaration instanceof NamespaceDeclarationAst) {\n\t\taddToken(declaration.keyword(), \"keyword\", tokens);\n\t\taddIdentifier(declaration.name(), \"namespace\", tokens, semanticTokenModifierBits.declaration);\n\t\tconst nestedNamespace = declaration.name()?.name();\n\t\tfor (const nested of declaration.declarations()) collectDeclaration(nested, source, tokens, nestedNamespace);\n\t\treturn;\n\t}\n\tif (declaration instanceof TypesBlockAst) {\n\t\taddToken(declaration.keyword(), \"keyword\", tokens);\n\t\tfor (const namedType of declaration.declarations()) collectNamedTypeDeclaration(namedType, source, tokens, namespace);\n\t\treturn;\n\t}\n\taddToken(declaration.keyword(), \"keyword\", tokens);\n\taddIdentifier(declaration.name(), \"type\", tokens, semanticTokenModifierBits.declaration);\n\tcollectGenericBlockMembers(declaration.members(), source, tokens, namespace);\n}\nfunction collectNamedTypeDeclaration(declaration, source, tokens, namespace) {\n\taddIdentifier(declaration.name(), \"type\", tokens, semanticTokenModifierBits.declaration);\n\tcollectTypeAnnotation(declaration.typeAnnotation(), source, tokens, namespace);\n\tcollectAttributes(declaration.attributes(), source, tokens, namespace);\n}\nfunction collectGenericBlockMembers(members, source, tokens, namespace) {\n\tfor (const member of members) {\n\t\tif (\"key\" in member) {\n\t\t\taddIdentifier(member.key(), \"property\", tokens);\n\t\t\tcollectExpression(member.value(), source, tokens, namespace);\n\t\t\tcontinue;\n\t\t}\n\t\tcollectAttribute(member, source, tokens, namespace);\n\t}\n}\nfunction collectBlockMembers(members, source, tokens, namespace) {\n\tfor (const member of members) {\n\t\tif (member instanceof FieldDeclarationAst) {\n\t\t\tcollectField(member, source, tokens, namespace);\n\t\t\tcontinue;\n\t\t}\n\t\tcollectAttribute(member, source, tokens, namespace);\n\t}\n}\nfunction collectField(field, source, tokens, namespace) {\n\taddIdentifier(field.name(), \"property\", tokens, semanticTokenModifierBits.declaration);\n\tcollectTypeAnnotation(field.typeAnnotation(), source, tokens, namespace);\n\tcollectAttributes(field.attributes(), source, tokens, namespace);\n}\nfunction collectTypeAnnotation(annotation, source, tokens, namespace) {\n\tif (annotation === void 0) return;\n\tcollectTypeReference(annotation.name(), source, tokens, namespace);\n\tcollectAttributeArgList(annotation.argList(), source, tokens, namespace);\n}\nfunction collectAttributes(attributes, source, tokens, namespace) {\n\tfor (const attribute of attributes) collectAttribute(attribute, source, tokens, namespace);\n}\nfunction collectAttribute(attribute, source, tokens, namespace) {\n\tconst marker = findChildToken(attribute.syntax, \"At\") ?? findChildToken(attribute.syntax, \"DoubleAt\");\n\tcollectDecoratorName(attribute.name(), marker, tokens);\n\tcollectAttributeArgList(attribute.argList(), source, tokens, namespace);\n}\nfunction collectDecoratorName(name, marker, tokens) {\n\tif (name === void 0) return;\n\tconst segments = identifierSegments(name);\n\tfor (const [index, segment] of segments.entries()) tokens.push(rangeForDecoratorIdentifier(segment.identifier, index === 0 ? marker : void 0));\n}\nfunction collectAttributeArgList(argList, source, tokens, namespace) {\n\tif (argList === void 0) return;\n\tfor (const arg of argList.args()) collectAttributeArg(arg, source, tokens, namespace);\n}\nfunction collectAttributeArg(arg, source, tokens, namespace) {\n\tconst name = arg.name();\n\taddIdentifier(name, \"property\", tokens);\n\tcollectExpression(arg.value(), source, tokens, namespace, expressionContextForAttributeArg(name));\n}\nfunction collectExpression(expression, source, tokens, namespace, context = {}) {\n\tif (expression === void 0) return;\n\tif (expression instanceof StringLiteralExprAst) {\n\t\taddToken(expression.token(), \"string\", tokens);\n\t\treturn;\n\t}\n\tif (expression instanceof NumberLiteralExprAst) {\n\t\taddToken(expression.token(), \"number\", tokens);\n\t\treturn;\n\t}\n\tif (expression instanceof BooleanLiteralExprAst) {\n\t\taddToken(expression.token(), \"keyword\", tokens);\n\t\treturn;\n\t}\n\tif (expression instanceof FunctionCallAst) {\n\t\tcollectTypeReference(expression.name(), source, tokens, namespace);\n\t\tfor (const arg of expression.args()) collectAttributeArg(arg, source, tokens, namespace);\n\t\treturn;\n\t}\n\tif (expression instanceof ArrayLiteralAst) {\n\t\tfor (const element of expression.elements()) collectExpression(element, source, tokens, namespace, context);\n\t\treturn;\n\t}\n\tif (expression instanceof ObjectLiteralExprAst) {\n\t\tfor (const field of expression.fields()) {\n\t\t\taddIdentifier(field.key(), \"property\", tokens);\n\t\t\tcollectExpression(field.value(), source, tokens, namespace);\n\t\t}\n\t\treturn;\n\t}\n\tif (expression instanceof TaggedLiteralExprAst) return;\n\tcollectIdentifierExpression(expression, source, tokens, namespace, context);\n}\nfunction collectIdentifierExpression(identifier, source, tokens, namespace, context) {\n\tconst text = identifier.name();\n\tif (text === void 0) return;\n\tconst bareIdentifierTokenType = context.bareIdentifierTokenType;\n\tif (bareIdentifierTokenType !== void 0) {\n\t\ttokens.push(rangeForIdentifier(identifier, bareIdentifierTokenType));\n\t\treturn;\n\t}\n\tconst classification = classifyTypeReference([text], source, namespace);\n\ttokens.push(rangeForIdentifier(identifier, classification.tokenType, classification.modifierBitset));\n}\nfunction expressionContextForAttributeArg(name) {\n\tconst argName = name?.name();\n\treturn argName === \"fields\" || argName === \"references\" ? { bareIdentifierTokenType: \"property\" } : {};\n}\nfunction collectTypeReference(name, source, tokens, namespace) {\n\tif (name === void 0) return;\n\tconst segments = identifierSegments(name);\n\tif (segments.length === 0) return;\n\tconst path = segments.map((segment) => segment.text);\n\tfor (const segment of segments.slice(0, -1)) if (isKnownNamespace(segment.text, source.symbolTable)) tokens.push(rangeForIdentifier(segment.identifier, \"namespace\"));\n\tconst finalSegment = segments[segments.length - 1];\n\tif (finalSegment === void 0) return;\n\tconst classification = classifyTypeReference(path, source, namespace);\n\ttokens.push(rangeForIdentifier(finalSegment.identifier, classification.tokenType, classification.modifierBitset));\n}\nfunction classifyTypeReference(path, source, namespace) {\n\tconst name = path[path.length - 1];\n\tif (name === void 0) return { tokenType: \"type\" };\n\tconst table = source.symbolTable;\n\tconst namespaceName = path.length > 1 ? path[path.length - 2] : namespace;\n\tconst namespaceScope = namespaceName !== void 0 ? table.topLevel.namespaces[namespaceName] : void 0;\n\tif (namespaceScope !== void 0) {\n\t\tif (Object.hasOwn(namespaceScope.models, name)) return { tokenType: \"class\" };\n\t\tif (Object.hasOwn(namespaceScope.compositeTypes, name)) return { tokenType: \"struct\" };\n\t\tif (Object.hasOwn(namespaceScope.blocks, name)) return { tokenType: \"type\" };\n\t}\n\tif (Object.hasOwn(table.topLevel.models, name)) return { tokenType: \"class\" };\n\tif (Object.hasOwn(table.topLevel.compositeTypes, name)) return { tokenType: \"struct\" };\n\tconst namedType = table.topLevel.namedTypes[name];\n\tif (namedType !== void 0) return refinesScalarType(namedType, source.scalarTypes) ? {\n\t\ttokenType: \"type\",\n\t\tmodifierBitset: semanticTokenModifierBits.defaultLibrary\n\t} : { tokenType: \"type\" };\n\tif (Object.hasOwn(table.topLevel.blocks, name)) return { tokenType: \"type\" };\n\tif (source.scalarTypes.includes(name)) return {\n\t\ttokenType: \"type\",\n\t\tmodifierBitset: semanticTokenModifierBits.defaultLibrary\n\t};\n\treturn { tokenType: \"type\" };\n}\nfunction isKnownNamespace(name, table) {\n\treturn Object.hasOwn(table.topLevel.namespaces, name);\n}\nfunction identifierSegments(name) {\n\tconst segments = [];\n\tfor (const identifier of filterChildren(name.syntax, IdentifierAst.cast)) {\n\t\tconst text = identifier.name();\n\t\tif (text !== void 0) segments.push({\n\t\t\tidentifier,\n\t\t\ttext\n\t\t});\n\t}\n\treturn segments;\n}\nfunction addIdentifier(identifier, tokenType, tokens, modifierBitset = 0) {\n\tif (identifier === void 0) return;\n\ttokens.push(rangeForIdentifier(identifier, tokenType, modifierBitset));\n}\nfunction addToken(token, tokenType, tokens, modifierBitset = 0) {\n\tif (token === void 0) return;\n\ttokens.push(pendingTokenForToken(token, tokenType, modifierBitset));\n}\nfunction rangeForIdentifier(identifier, tokenType, modifierBitset = 0) {\n\tconst token = identifier.token();\n\tif (token === void 0) return createPendingSemanticToken(identifier.syntax.offset, identifier.syntax.offset, tokenType, modifierBitset);\n\treturn pendingTokenForToken(token, tokenType, modifierBitset);\n}\nfunction rangeForDecoratorIdentifier(identifier, marker) {\n\tconst range = rangeForIdentifier(identifier, \"decorator\");\n\tif (marker === void 0 || marker.offset >= range.startOffset) return range;\n\treturn createPendingSemanticToken(marker.offset, range.endOffset, \"decorator\", range.modifierBitset);\n}\nfunction pendingTokenForToken(token, tokenType, modifierBitset = 0) {\n\treturn createPendingSemanticToken(token.offset, token.offset + token.text.length, tokenType, modifierBitset);\n}\nfunction mergeSourceOrderedTokens(left, right) {\n\tconst result = [];\n\tlet leftIndex = 0;\n\tlet rightIndex = 0;\n\twhile (leftIndex < left.length || rightIndex < right.length) {\n\t\tconst leftToken = left[leftIndex];\n\t\tconst rightToken = right[rightIndex];\n\t\tif (leftToken !== void 0 && (rightToken === void 0 || leftToken.startOffset <= rightToken.startOffset)) {\n\t\t\tresult.push(leftToken);\n\t\t\tleftIndex++;\n\t\t} else if (rightToken !== void 0) {\n\t\t\tresult.push(rightToken);\n\t\t\trightIndex++;\n\t\t}\n\t}\n\treturn result;\n}\nfunction createPendingSemanticToken(startOffset, endOffset, tokenType, modifierBitset = 0) {\n\treturn {\n\t\tstartOffset,\n\t\tendOffset,\n\t\ttokenTypeIndex: tokenTypeIndex(tokenType),\n\t\tmodifierBitset,\n\t\tsplitMultiline: tokenType === \"string\" || tokenType === \"comment\"\n\t};\n}\nfunction tokenTypeIndex(tokenType) {\n\treturn semanticTokenTypes.indexOf(tokenType);\n}\n//#endregion\n//#region src/signature-context.ts\nfunction classifyPslSignatureContext(input) {\n\tconst syntax = locateAttributeSyntax(input);\n\tif (syntax === void 0) return void 0;\n\tconst attributeName = syntax.attribute.name()?.identifier()?.name();\n\tconst args = syntax.attribute.argList();\n\tconst position = args === void 0 ? void 0 : signatureArguments(syntax, args, []);\n\tconst owner = signatureOwner(syntax.attribute);\n\treturn attributeName === void 0 || position === void 0 || owner === void 0 ? void 0 : {\n\t\t...owner,\n\t\t...position,\n\t\tattributeName\n\t};\n}\nfunction signatureOwner(attribute) {\n\tif (attribute instanceof FieldAttributeAst) {\n\t\tconst field = attribute.syntax.findAncestor(FieldDeclarationAst.cast);\n\t\tconst model = attribute.syntax.findAncestor(ModelDeclarationAst.cast);\n\t\treturn field === void 0 || model === void 0 ? void 0 : {\n\t\t\townerKind: \"field\",\n\t\t\tfield,\n\t\t\tmodel\n\t\t};\n\t}\n\tconst block = attribute.syntax.findAncestor(GenericBlockDeclarationAst.cast);\n\tif (block !== void 0) {\n\t\tconst blockKeyword = block.keyword()?.text;\n\t\treturn blockKeyword === void 0 || blockKeyword.length === 0 ? void 0 : {\n\t\t\townerKind: \"block\",\n\t\t\tblock,\n\t\t\tblockKeyword\n\t\t};\n\t}\n\tconst model = attribute.syntax.findAncestor(ModelDeclarationAst.cast);\n\treturn model === void 0 ? void 0 : {\n\t\townerKind: \"model\",\n\t\tmodel\n\t};\n}\nfunction signatureArguments(context, args, path) {\n\tif (!betweenDelimiters(context.offset, args.lparen(), args.rparen())) return void 0;\n\tconst containing = argumentAtCursor(context, args);\n\tconst next = context.preceding?.kind === \"Comma\" ? nonTriviaSibling(context.preceding, \"next\") : void 0;\n\tconst following = next instanceof SyntaxNode && next.parent?.offset === args.syntax.offset ? AttributeArgAst.cast(next) : void 0;\n\tconst active = containing ?? following;\n\tconst { precedingPositionalCount: positionalIndex, otherNamedKeys: existingNamedKeys } = argumentSiblings(args, active, context.offset);\n\tif (active === void 0) return [\"LParen\", \"Comma\"].includes(context.preceding?.kind ?? \"\") ? {\n\t\tpath,\n\t\targumentSlot: {\n\t\t\tpositionalIndex,\n\t\t\texistingNamedKeys\n\t\t}\n\t} : void 0;\n\tif (active.colon() !== void 0) {\n\t\tconst name = active.name()?.name();\n\t\tif (name === void 0) return void 0;\n\t\tconst valuePath = [...path, {\n\t\t\tkind: \"namedArgument\",\n\t\t\tname\n\t\t}];\n\t\treturn active === containing ? signatureExpression(context, active.value(), valuePath) : {\n\t\t\tpath: valuePath,\n\t\t\targumentSlot: void 0\n\t\t};\n\t}\n\tconst value = active.value();\n\tif (value === void 0 || value instanceof IdentifierAst && value.syntax.isInside(context.offset)) return {\n\t\tpath,\n\t\targumentSlot: {\n\t\t\tpositionalIndex,\n\t\t\texistingNamedKeys\n\t\t}\n\t};\n\tconst valuePath = [...path, {\n\t\tkind: \"positionalArgument\",\n\t\tindex: positionalIndex\n\t}];\n\treturn active === containing ? signatureExpression(context, value, valuePath) : {\n\t\tpath: valuePath,\n\t\targumentSlot: void 0\n\t};\n}\nfunction signatureExpression(context, expression, path) {\n\tconst position = {\n\t\tpath,\n\t\targumentSlot: void 0\n\t};\n\tif (expression === void 0 || context.offset <= expression.syntax.offset || context.offset >= expression.syntax.endOffset && !recoveredContainerContainsCursor(expression, context.offset)) return position;\n\tif (expression instanceof ArrayLiteralAst) return betweenDelimiters(context.offset, expression.lbracket(), expression.rbracket()) ? signatureExpression(context, listElementAtCursor(context, expression), [...path, { kind: \"listElement\" }]) : void 0;\n\tif (expression instanceof ObjectLiteralExprAst) {\n\t\tconst closing = expression.rbrace();\n\t\tif (closing !== void 0 && context.offset >= closing.endOffset) return void 0;\n\t\tconst field = recordFieldAtCursor(context, expression);\n\t\treturn field !== void 0 ? signatureExpression(context, field.value(), [...path, { kind: \"recordValue\" }]) : position;\n\t}\n\tif (expression instanceof FunctionCallAst) {\n\t\tconst opening = expression.lparen();\n\t\tif (opening !== void 0 && context.offset > opening.offset) {\n\t\t\tconst name = expression.name();\n\t\t\tconst identifier = name?.identifier()?.name();\n\t\t\treturn identifier !== void 0 && name?.isSimpleName(identifier) === true ? signatureArguments(context, expression, [...path, {\n\t\t\t\tkind: \"functionCall\",\n\t\t\t\tname: identifier\n\t\t\t}]) : void 0;\n\t\t}\n\t\treturn expression.name()?.syntax.isInside(context.offset) === true ? position : void 0;\n\t}\n\treturn position;\n}\n//#endregion\n//#region src/signature-help.ts\nfunction providePslSignatureHelp(input) {\n\tconst context = classifyPslSignatureContext(input);\n\tif (context === void 0) return null;\n\tconst spec = attributeSpecResolver(context, input.candidates)(context.attributeName);\n\tif (spec === void 0) return null;\n\treturn signatureHelp(context, spec, input.clientSupportsLabelOffsets === true);\n}\nfunction signatureHelp(context, spec, labelOffsets) {\n\tconst callIndex = context.path.reduce((last, step, index) => step.kind === \"functionCall\" ? index : last, -1);\n\tconst call = context.path[callIndex];\n\tconst signaturePath = context.path.slice(0, callIndex + 1);\n\tconst name = call?.kind === \"functionCall\" ? call.name : `${spec.level === \"field\" ? \"@\" : \"@@\"}${spec.name}`;\n\tconst signatures = resolveGrammar(spec, signaturePath).flatMap((grammar) => {\n\t\tif (\"kind\" in grammar) return [];\n\t\tconst active = context.path[callIndex + 1];\n\t\tconst params = parameters(grammar, active?.kind === \"namedArgument\" ? active.name : void 0);\n\t\tconst index = parameterIndex(context, active, params);\n\t\treturn [{\n\t\t\tsignature: renderSignature(name, grammar, params, labelOffsets),\n\t\t\tindex\n\t\t}];\n\t});\n\tif (signatures.length === 0) return null;\n\tconst matched = signatures.findIndex(({ signature, index }) => index >= 0 && index < (signature.parameters?.length ?? 0));\n\tconst activeSignature = matched < 0 ? 0 : matched;\n\tconst activeParameter = signatures[activeSignature]?.index;\n\treturn {\n\t\tsignatures: signatures.map(({ signature }) => signature),\n\t\tactiveSignature,\n\t\t...matched >= 0 && activeParameter !== void 0 ? { activeParameter } : {}\n\t};\n}\nfunction parameterIndex(context, active, params) {\n\tif (active?.kind === \"namedArgument\") return params.findIndex((param) => param.key === active.name);\n\tif (active?.kind === \"positionalArgument\") return active.index;\n\tconst slot = context.argumentSlot;\n\tif (slot !== void 0) return params.findIndex((param, index) => index >= slot.positionalIndex && !slot.existingNamedKeys.includes(param.key));\n\treturn -1;\n}\nfunction parameters(signature, activeName) {\n\tconst positional = signature.positional ?? [];\n\tconst keys = new Set(positional.map((param) => param.key));\n\tconst namedAlias = activeName === void 0 ? void 0 : signature.named?.[activeName];\n\treturn [...positional.map((param) => param.key === activeName && namedAlias !== void 0 ? {\n\t\tkey: param.key,\n\t\t...namedAlias\n\t} : param), ...Object.entries(signature.named ?? {}).flatMap(([key, param]) => keys.has(key) ? [] : [{\n\t\tkey,\n\t\t...param\n\t}])];\n}\nfunction renderSignature(name, signature, params, labelOffsets) {\n\tlet label = `${name}(`;\n\tconst rendered = params.map((param, index) => {\n\t\tif (index > 0) label += \", \";\n\t\tconst positional = index < (signature.positional?.length ?? 0);\n\t\tconst optional = \"optional\" in param.type && param.type.optional === true;\n\t\tconst typeLabel = optional && param.type.label.includes(\" | \") ? `(${param.type.label})` : param.type.label;\n\t\tconst text = positional ? `${typeLabel}${optional ? \"?\" : \"\"}` : `${param.key}${optional ? \"?\" : \"\"}: ${param.type.label}`;\n\t\tconst start = label.length;\n\t\tlabel += text;\n\t\tconst documentation = positional ? `**${param.key}**\\n\\n${param.documentation}${signature.named?.[param.key] === void 0 ? \"\" : `\\n\\nAccepted positionally or by \\`${param.key}:\\`.`}` : param.documentation;\n\t\treturn {\n\t\t\tlabel: positional && labelOffsets ? [start, label.length] : text,\n\t\t\tdocumentation: {\n\t\t\t\tkind: MarkupKind.Markdown,\n\t\t\t\tvalue: documentation\n\t\t\t}\n\t\t};\n\t});\n\treturn {\n\t\tlabel: `${label})`,\n\t\tdocumentation: {\n\t\t\tkind: MarkupKind.Markdown,\n\t\t\tvalue: signature.documentation\n\t\t},\n\t\tparameters: rendered\n\t};\n}\n//#endregion\n//#region src/server.ts\n/** The project a new load of this config could fall back to. */\nfunction lastGoodProject(entry) {\n\tif (entry === void 0 || entry.status === \"failed\") return;\n\treturn entry.status === \"loaded\" ? entry.project : entry.lastGood;\n}\nconst CONFIG_LOAD_FAILED_CODE = \"PRISMA_CONFIG_LOAD_FAILED\";\nconst semanticTokenSourceLimit = 1e5;\nfunction createServer(connection) {\n\treturn createServerOn(guardedConnection(connection));\n}\nfunction createServerOn(connection) {\n\tconst documents = new TextDocuments(TextDocument);\n\tconst managedProjects = /* @__PURE__ */ new Map();\n\tconst documentConfigPaths = /* @__PURE__ */ new Map();\n\tlet rootPath = process.cwd();\n\tlet watchedConfigGlob = join(rootPath, \"**\", CONFIG_FILENAME);\n\tlet clientCapabilities = noClientCapabilities;\n\tfunction sendDiagnostics(params) {\n\t\tconnection.sendDiagnostics(params);\n\t}\n\tfunction logWarn(message) {\n\t\tconnection.console.warn(message);\n\t}\n\tasync function publish(uri) {\n\t\tconst project = await resolveProjectForDocument(uri);\n\t\tif (project === void 0) return;\n\t\tif (documents.get(uri) === void 0) {\n\t\t\tdocumentConfigPaths.delete(uri);\n\t\t\treturn;\n\t\t}\n\t\tconst artifacts = project.artifacts.document(uri);\n\t\tif (artifacts === void 0) {\n\t\t\tsendDiagnostics({\n\t\t\t\turi,\n\t\t\t\tdiagnostics: []\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tsendDiagnostics({\n\t\t\turi,\n\t\t\tdiagnostics: combinedDiagnostics(artifacts)\n\t\t});\n\t}\n\tfunction combinedDiagnostics(artifacts) {\n\t\treturn toDiagnostics([...artifacts.diagnostics, ...artifacts.interpretDiagnostics()]);\n\t}\n\t/**\n\t* Project-scoped so a future multi-input symbol table can attach\n\t* `relatedDocuments` for cross-file effects.\n\t*/\n\tfunction buildDocumentDiagnosticReport(project, uri) {\n\t\tconst artifacts = project.artifacts.document(uri);\n\t\treturn {\n\t\t\tkind: DocumentDiagnosticReportKind.Full,\n\t\t\titems: artifacts === void 0 ? [] : combinedDiagnostics(artifacts)\n\t\t};\n\t}\n\tasync function resolveProjectForDocument(uri) {\n\t\tconst project = await projectForNearestConfig(uri);\n\t\tif (project === void 0 || project.inputs.includes(uri)) return project;\n\t\tdocumentConfigPaths.delete(uri);\n\t\tdropProjectWithoutManagedDocuments(project.configPath);\n\t}\n\tasync function projectForNearestConfig(uri) {\n\t\tconst knownConfigPath = documentConfigPaths.get(uri);\n\t\tif (knownConfigPath !== void 0) return resolveProjectIfLoadable(knownConfigPath);\n\t\tconst filePath = filePathFromUri(uri);\n\t\tif (filePath === void 0) return;\n\t\tlet configPath;\n\t\ttry {\n\t\t\tconfigPath = await findNearestConfigPathForFile(filePath);\n\t\t} catch {\n\t\t\treturn;\n\t\t}\n\t\tif (configPath === void 0) return;\n\t\tdocumentConfigPaths.set(uri, configPath);\n\t\treturn resolveProjectIfLoadable(configPath);\n\t}\n\tasync function resolveProjectIfLoadable(configPath) {\n\t\ttry {\n\t\t\treturn await resolveProject(configPath);\n\t\t} catch {\n\t\t\treturn;\n\t\t}\n\t}\n\tasync function resolveProject(configPath) {\n\t\tconst entry = managedProjects.get(configPath);\n\t\tif (entry === void 0 || entry.status === \"failed\") return startProjectLoad(configPath);\n\t\treturn entry.status === \"loaded\" ? entry.project : entry.load;\n\t}\n\tfunction refreshProject(configPath) {\n\t\treturn startProjectLoad(configPath);\n\t}\n\tfunction startProjectLoad(configPath) {\n\t\tconst existing = managedProjects.get(configPath);\n\t\tconst previousLoad = existing?.status === \"loading\" ? existing.load : void 0;\n\t\tconst lastGood = lastGoodProject(existing);\n\t\tconst load = (previousLoad ?? Promise.resolve(void 0)).catch(() => void 0).then(() => loadProject(configPath)).then((project) => {\n\t\t\tif (isCurrentLoad(configPath, load)) {\n\t\t\t\tif (hasManagedDocuments(configPath)) managedProjects.set(configPath, {\n\t\t\t\t\tstatus: \"loaded\",\n\t\t\t\t\tproject\n\t\t\t\t});\n\t\t\t\telse managedProjects.delete(configPath);\n\t\t\t\tclearConfigFailure(configPath);\n\t\t\t}\n\t\t\treturn project;\n\t\t}, (error) => {\n\t\t\tif (isCurrentLoad(configPath, load)) if (!hasManagedDocuments(configPath)) {\n\t\t\t\tmanagedProjects.delete(configPath);\n\t\t\t\tclearConfigFailure(configPath);\n\t\t\t} else {\n\t\t\t\tpublishConfigFailure(configPath, error);\n\t\t\t\tif (lastGood !== void 0) {\n\t\t\t\t\tmanagedProjects.set(configPath, {\n\t\t\t\t\t\tstatus: \"loaded\",\n\t\t\t\t\t\tproject: lastGood\n\t\t\t\t\t});\n\t\t\t\t\treturn lastGood;\n\t\t\t\t}\n\t\t\t\tmanagedProjects.set(configPath, { status: \"failed\" });\n\t\t\t\tunmanageDocuments(configPath);\n\t\t\t}\n\t\t\tthrow error;\n\t\t});\n\t\tmanagedProjects.set(configPath, {\n\t\t\tstatus: \"loading\",\n\t\t\tload,\n\t\t\tlastGood\n\t\t});\n\t\treturn load;\n\t}\n\tfunction publishConfigFailure(configPath, error) {\n\t\tsendDiagnostics({\n\t\t\turi: pathToFileURL(configPath).toString(),\n\t\t\tdiagnostics: [{\n\t\t\t\trange: {\n\t\t\t\t\tstart: {\n\t\t\t\t\t\tline: 0,\n\t\t\t\t\t\tcharacter: 0\n\t\t\t\t\t},\n\t\t\t\t\tend: {\n\t\t\t\t\t\tline: 0,\n\t\t\t\t\t\tcharacter: 1\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmessage: configFailureMessage(error),\n\t\t\t\tcode: CONFIG_LOAD_FAILED_CODE,\n\t\t\t\tseverity: DiagnosticSeverity.Error,\n\t\t\t\tsource: \"prisma\"\n\t\t\t}]\n\t\t});\n\t}\n\tfunction configFailureMessage(error) {\n\t\tif (CliStructuredError.is(error)) return error.why ?? error.message;\n\t\treturn error instanceof Error ? error.message : String(error);\n\t}\n\tfunction clearConfigFailure(configPath) {\n\t\tsendDiagnostics({\n\t\t\turi: pathToFileURL(configPath).toString(),\n\t\t\tdiagnostics: []\n\t\t});\n\t}\n\tfunction isCurrentLoad(configPath, load) {\n\t\tconst entry = managedProjects.get(configPath);\n\t\treturn entry?.status === \"loading\" && entry.load === load;\n\t}\n\tasync function loadProject(configPath) {\n\t\tconst resolution = await resolveConfigInputs(configPath);\n\t\tconst artifacts = createProjectArtifacts({\n\t\t\tinputs: resolution.inputs,\n\t\t\tcontrolStack: resolution.controlStack,\n\t\t\tgetText: (uri) => documents.get(uri)?.getText(),\n\t\t\tonInterpretationError: (uri, error) => {\n\t\t\t\tconst detail = error instanceof Error ? error.stack ?? error.message : String(error);\n\t\t\t\tconnection.console.error(`PSL interpretation failed for ${uri}: ${detail}`);\n\t\t\t},\n\t\t\t...resolution.interpretation === void 0 ? {} : { interpretation: resolution.interpretation }\n\t\t});\n\t\treturn {\n\t\t\tconfigPath,\n\t\t\tinputs: resolution.inputs,\n\t\t\tcontrolStack: resolution.controlStack,\n\t\t\tartifacts,\n\t\t\t...resolution.formatter === void 0 ? {} : { formatter: resolution.formatter },\n\t\t\t...resolution.interpretation === void 0 ? {} : { interpretation: resolution.interpretation }\n\t\t};\n\t}\n\tfunction unmanageDocuments(configPath) {\n\t\tfor (const document of documents.all()) if (documentConfigPaths.get(document.uri) === configPath) documentConfigPaths.delete(document.uri);\n\t}\n\tasync function republishOpenDocumentsForConfig(configPath) {\n\t\tfor (const document of documents.all()) {\n\t\t\tif (documentConfigPaths.get(document.uri) === configPath) {\n\t\t\t\tif (await resolveProjectForDocument(document.uri) === void 0) {\n\t\t\t\t\tsendDiagnostics({\n\t\t\t\t\t\turi: document.uri,\n\t\t\t\t\t\tdiagnostics: []\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tawait publish(document.uri);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst filePath = filePathFromUri(document.uri);\n\t\t\tif (filePath === void 0) continue;\n\t\t\tif (await findNearestConfigPathForFile(filePath) === configPath) {\n\t\t\t\tdocumentConfigPaths.set(document.uri, configPath);\n\t\t\t\tawait publish(document.uri);\n\t\t\t}\n\t\t}\n\t}\n\tfunction publishSafely(uri) {\n\t\tpublish(uri).catch((error) => {\n\t\t\tconnection.console.error(error instanceof Error ? error.message : String(error));\n\t\t});\n\t}\n\tasync function formatDocument(uri) {\n\t\tconst document = documents.get(uri);\n\t\tif (document === void 0) return [];\n\t\tconst source = document.getText();\n\t\tif (!isPrismaNextSchema(source)) return [];\n\t\tconst project = await resolveProjectForDocument(uri);\n\t\tif (project === void 0) return [];\n\t\tlet formatted;\n\t\ttry {\n\t\t\tformatted = renameLegacyDirective(format(source, project.formatter));\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t\tif (formatted === source) return [];\n\t\treturn [{\n\t\t\trange: {\n\t\t\t\tstart: {\n\t\t\t\t\tline: 0,\n\t\t\t\t\tcharacter: 0\n\t\t\t\t},\n\t\t\t\tend: document.positionAt(source.length)\n\t\t\t},\n\t\t\tnewText: formatted\n\t\t}];\n\t}\n\tasync function semanticTokensForDocument(uri, range) {\n\t\tconst document = documents.get(uri);\n\t\tif (document === void 0) return emptySemanticTokens();\n\t\tif (document.getText().length > semanticTokenSourceLimit) return emptySemanticTokens();\n\t\tconst project = await resolveProjectForDocument(uri);\n\t\tif (project === void 0) return emptySemanticTokens();\n\t\tconst artifacts = project.artifacts.document(uri);\n\t\tif (artifacts === void 0) return emptySemanticTokens();\n\t\treturn buildSemanticTokens({\n\t\t\tdocument: artifacts.document,\n\t\t\tsourceFile: artifacts.sourceFile,\n\t\t\tsymbolTable: project.artifacts.symbolTable(),\n\t\t\tscalarTypes: project.controlStack.scalarTypes\n\t\t}, range);\n\t}\n\tasync function completeDocument(uri, position) {\n\t\tif (documents.get(uri) === void 0) return [];\n\t\tconst project = await resolveProjectForDocument(uri);\n\t\tif (project === void 0) return [];\n\t\tconst artifacts = project.artifacts.document(uri);\n\t\tif (artifacts === void 0) return [];\n\t\ttry {\n\t\t\treturn [...providePslCompletionItems({\n\t\t\t\tcontext: classifyPslCompletionContext({\n\t\t\t\t\tdocument: artifacts.document,\n\t\t\t\t\tsourceFile: artifacts.sourceFile,\n\t\t\t\t\tposition\n\t\t\t\t}),\n\t\t\t\tsourceFile: artifacts.sourceFile,\n\t\t\t\tcandidates: {\n\t\t\t\t\tscalarTypes: project.controlStack.scalarTypes,\n\t\t\t\t\tpslBlockDescriptors: project.controlStack.pslBlockDescriptors,\n\t\t\t\t\tsymbolTable: project.artifacts.symbolTable(),\n\t\t\t\t\t...project.controlStack.authoringContributions === void 0 ? {} : { authoringContributions: project.controlStack.authoringContributions },\n\t\t\t\t\t...project.controlStack.controlMutationDefaults === void 0 ? {} : { controlMutationDefaults: project.controlStack.controlMutationDefaults }\n\t\t\t\t},\n\t\t\t\tclientSupportsSnippets: clientCapabilities.completionSnippets,\n\t\t\t\tclientSupportsTriggerSuggestCommand: clientCapabilities.completionTriggerSuggestCommand,\n\t\t\t\tclientSupportsTriggerParameterHintsCommand: clientCapabilities.completionTriggerParameterHintsCommand\n\t\t\t})];\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t}\n\tasync function signatureHelpForDocument(uri, position) {\n\t\tif (documents.get(uri) === void 0) return null;\n\t\tconst project = await resolveProjectForDocument(uri);\n\t\tif (project === void 0) return null;\n\t\tconst artifacts = project.artifacts.document(uri);\n\t\tif (artifacts === void 0) return null;\n\t\ttry {\n\t\t\treturn providePslSignatureHelp({\n\t\t\t\tclientSupportsLabelOffsets: clientCapabilities.signatureLabelOffsets,\n\t\t\t\tdocument: artifacts.document,\n\t\t\t\tsourceFile: artifacts.sourceFile,\n\t\t\t\tposition,\n\t\t\t\tcandidates: {\n\t\t\t\t\tpslBlockDescriptors: project.controlStack.pslBlockDescriptors,\n\t\t\t\t\tsymbolTable: project.artifacts.symbolTable(),\n\t\t\t\t\t...project.controlStack.authoringContributions === void 0 ? {} : { authoringContributions: project.controlStack.authoringContributions },\n\t\t\t\t\t...project.controlStack.controlMutationDefaults === void 0 ? {} : { controlMutationDefaults: project.controlStack.controlMutationDefaults }\n\t\t\t\t}\n\t\t\t});\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\tconnection.onInitialize(async (params) => {\n\t\trootPath = resolveRootPath(params);\n\t\twatchedConfigGlob = join(rootPath, \"**\", CONFIG_FILENAME);\n\t\tclientCapabilities = resolveClientCapabilities(params);\n\t\treturn { capabilities: {\n\t\t\ttextDocumentSync: TextDocumentSyncKind.Incremental,\n\t\t\tdocumentFormattingProvider: true,\n\t\t\tfoldingRangeProvider: true,\n\t\t\tsemanticTokensProvider: {\n\t\t\t\tlegend: semanticTokensLegend,\n\t\t\t\tfull: true,\n\t\t\t\trange: true\n\t\t\t},\n\t\t\tcompletionProvider: { triggerCharacters: [\n\t\t\t\t\".\",\n\t\t\t\t\"@\",\n\t\t\t\t\"[\",\n\t\t\t\t\"(\",\n\t\t\t\t\"{\",\n\t\t\t\t\":\",\n\t\t\t\t\",\"\n\t\t\t] },\n\t\t\tsignatureHelpProvider: { triggerCharacters: [\"(\", \",\"] },\n\t\t\t...clientCapabilities.pullDiagnostics ? { diagnosticProvider: {\n\t\t\t\tinterFileDependencies: false,\n\t\t\t\tworkspaceDiagnostics: false\n\t\t\t} } : {}\n\t\t} };\n\t});\n\tconnection.onInitialized(() => {\n\t\tif (clientCapabilities.watchedFilesRegistration) connection.sendRequest(RegistrationRequest.type, { registrations: [{\n\t\t\tid: \"prisma-8-config-watcher\",\n\t\t\tmethod: DidChangeWatchedFilesNotification.type.method,\n\t\t\tregisterOptions: { watchers: [{ globPattern: watchedConfigGlob }] }\n\t\t}] });\n\t\telse logWarn(\"Client does not support dynamic file-watcher registration; Prisma 8 config changes will not be picked up without a restart.\");\n\t});\n\tconnection.onDidChangeWatchedFiles(async (params) => {\n\t\tconst changedConfigPaths = configPathsFromWatchedChanges(params.changes.map((change) => filePathFromUri(change.uri)));\n\t\tfor (const configPath of changedConfigPaths) {\n\t\t\tif (managedProjects.has(configPath)) try {\n\t\t\t\tawait refreshProject(configPath);\n\t\t\t} catch {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!clientCapabilities.pullDiagnostics) await republishOpenDocumentsForConfig(configPath);\n\t\t}\n\t\tif (clientCapabilities.pullDiagnostics && clientCapabilities.diagnosticsRefresh && changedConfigPaths.size > 0) connection.languages.diagnostics.refresh();\n\t});\n\tconnection.onDocumentFormatting((params) => formatDocument(params.textDocument.uri));\n\tconnection.onCompletion((params) => completeDocument(params.textDocument.uri, params.position));\n\tconnection.onSignatureHelp((params) => signatureHelpForDocument(params.textDocument.uri, params.position));\n\tconnection.languages.semanticTokens.on((params) => semanticTokensForDocument(params.textDocument.uri));\n\tconnection.languages.semanticTokens.onRange((params) => semanticTokensForDocument(params.textDocument.uri, params.range));\n\tconnection.languages.diagnostics.on(async (params) => {\n\t\tconst project = await resolveProjectForDocument(params.textDocument.uri);\n\t\tif (project === void 0) return {\n\t\t\tkind: DocumentDiagnosticReportKind.Full,\n\t\t\titems: []\n\t\t};\n\t\treturn buildDocumentDiagnosticReport(project, params.textDocument.uri);\n\t});\n\tconnection.onFoldingRanges(async (params) => {\n\t\tconst project = await resolveProjectForDocument(params.textDocument.uri);\n\t\tif (project === void 0) return [];\n\t\tconst artifacts = project.artifacts.document(params.textDocument.uri);\n\t\tif (artifacts === void 0) return [];\n\t\treturn computeFoldingRanges(artifacts.document, artifacts.sourceFile);\n\t});\n\tdocuments.onDidOpen((event) => {\n\t\tartifactsForDocument(event.document.uri)?.documentChanged(event.document.uri);\n\t\tif (clientCapabilities.pullDiagnostics) return;\n\t\tpublishSafely(event.document.uri);\n\t});\n\tdocuments.onDidChangeContent((event) => {\n\t\tartifactsForDocument(event.document.uri)?.documentChanged(event.document.uri);\n\t\tif (clientCapabilities.pullDiagnostics) return;\n\t\tpublishSafely(event.document.uri);\n\t});\n\tdocuments.onDidClose((event) => {\n\t\tconst uri = event.document.uri;\n\t\tconst configPath = documentConfigPaths.get(uri);\n\t\tartifactsForDocument(uri)?.documentClosed(uri);\n\t\tdocumentConfigPaths.delete(uri);\n\t\tif (configPath !== void 0) dropProjectWithoutManagedDocuments(configPath);\n\t\tif (!clientCapabilities.pullDiagnostics) sendDiagnostics({\n\t\t\turi,\n\t\t\tdiagnostics: []\n\t\t});\n\t});\n\tdocuments.listen(connection);\n\tconnection.listen();\n\tfunction artifactsForDocument(uri) {\n\t\tconst configPath = documentConfigPaths.get(uri);\n\t\tif (configPath === void 0) return;\n\t\tconst entry = managedProjects.get(configPath);\n\t\treturn entry?.status === \"loaded\" ? entry.project.artifacts : void 0;\n\t}\n\tfunction hasManagedDocuments(configPath) {\n\t\tfor (const managedConfigPath of documentConfigPaths.values()) if (managedConfigPath === configPath) return true;\n\t\treturn false;\n\t}\n\tfunction dropProjectWithoutManagedDocuments(configPath) {\n\t\tif (hasManagedDocuments(configPath)) return;\n\t\tconst entry = managedProjects.get(configPath);\n\t\tif (entry === void 0 || entry.status === \"loading\") return;\n\t\tmanagedProjects.delete(configPath);\n\t\tclearConfigFailure(configPath);\n\t}\n\treturn {\n\t\tdispose: () => connection.dispose(),\n\t\tgetDocumentAst: (uri) => artifactsForDocument(uri)?.document(uri),\n\t\tgetProjectSymbolTable: (uri) => {\n\t\t\tconst artifacts = artifactsForDocument(uri);\n\t\t\tif (artifacts?.document(uri) === void 0) return;\n\t\t\treturn artifacts.symbolTable();\n\t\t}\n\t};\n}\nfunction emptySemanticTokens() {\n\treturn { data: [] };\n}\nfunction toDiagnostics(computed) {\n\treturn computed.map((diagnostic) => ({\n\t\trange: diagnostic.range,\n\t\tmessage: diagnostic.message,\n\t\tcode: diagnostic.code,\n\t\tseverity: toLspSeverity(diagnostic.severity),\n\t\tsource: \"prisma\"\n\t}));\n}\nfunction toLspSeverity(severity) {\n\tswitch (severity) {\n\t\tcase ParseDiagnosticSeverity.Warning: return DiagnosticSeverity.Warning;\n\t\tcase ParseDiagnosticSeverity.Information: return DiagnosticSeverity.Information;\n\t\tcase ParseDiagnosticSeverity.Hint: return DiagnosticSeverity.Hint;\n\t\tdefault: return DiagnosticSeverity.Error;\n\t}\n}\nconst noClientCapabilities = {\n\twatchedFilesRegistration: false,\n\tcompletionSnippets: false,\n\tsignatureLabelOffsets: false,\n\tcompletionTriggerSuggestCommand: false,\n\tcompletionTriggerParameterHintsCommand: false,\n\tpullDiagnostics: false,\n\tdiagnosticsRefresh: false\n};\nfunction resolveClientCapabilities(params) {\n\treturn {\n\t\twatchedFilesRegistration: params.capabilities.workspace?.didChangeWatchedFiles?.dynamicRegistration === true,\n\t\tcompletionSnippets: params.capabilities.textDocument?.completion?.completionItem?.snippetSupport === true,\n\t\tsignatureLabelOffsets: params.capabilities.textDocument?.signatureHelp?.signatureInformation?.parameterInformation?.labelOffsetSupport === true,\n\t\tcompletionTriggerSuggestCommand: supportsCompletionCommand(params.initializationOptions, \"supportsTriggerSuggestCommand\"),\n\t\tcompletionTriggerParameterHintsCommand: supportsCompletionCommand(params.initializationOptions, \"supportsTriggerParameterHintsCommand\"),\n\t\tpullDiagnostics: params.capabilities.textDocument?.diagnostic !== void 0,\n\t\tdiagnosticsRefresh: params.capabilities.workspace?.diagnostics?.refreshSupport === true\n\t};\n}\nfunction supportsCompletionCommand(options, capability) {\n\tif (typeof options !== \"object\" || options === null || !(\"completion\" in options)) return false;\n\tconst completion = options.completion;\n\treturn typeof completion === \"object\" && completion !== null && capability in completion && Reflect.get(completion, capability) === true;\n}\nfunction resolveRootPath(params) {\n\tconst workspaceFolder = params.workspaceFolders?.[0];\n\tif (workspaceFolder !== void 0) return fileURLToPath(workspaceFolder.uri);\n\tif (params.rootUri) return fileURLToPath(params.rootUri);\n\tif (params.rootPath) return params.rootPath;\n\treturn process.cwd();\n}\nfunction filePathFromUri(uri) {\n\ttry {\n\t\treturn fileURLToPath(uri);\n\t} catch {\n\t\treturn;\n\t}\n}\nfunction configPathsFromWatchedChanges(paths) {\n\tconst configPaths = /* @__PURE__ */ new Set();\n\tfor (const path of paths) if (path?.endsWith(\"prisma.config.ts\")) configPaths.add(path);\n\treturn configPaths;\n}\n//#endregion\n//#region src/stdio-transport.ts\n/**\n* `objectMode: false` is what makes this a byte stream rather than a stream of\n* whatever objects the host yielded: it converts each chunk to a `Buffer`.\n* `vscode-jsonrpc` needs that — it slices header blocks with\n* `Buffer.from(chunk, 0, length)`, and on a plain `Uint8Array` those arguments\n* are ignored, so it reads the whole chunk as one header block and rejects the\n* message.\n*/\nfunction byteInputStream(stdin) {\n\treturn Readable.from(stdin, { objectMode: false });\n}\n/**\n* Bridges the byte stream `vscode-jsonrpc` writes to the text sink a host\n* hands over.\n*\n* LSP declares each message's `Content-Length` in bytes, so a UTF-8 sequence\n* that arrives split across two writes has to be held back until it is whole:\n* decoding half of one yields a replacement character, which is a different\n* number of bytes than the header promised. `StreamMessageWriter` writes each\n* body in one call and Node never splits a chunk given to `_write`, so the\n* decoder holds nothing back in practice — it is here because the contract\n* this satisfies is \"bytes in, text out\", and a writer that chunks its bodies\n* would otherwise corrupt every multi-byte message silently.\n*\n* Back-pressure is dropped: `TextSink.write` returns nothing to wait on, so\n* every write reports flushed the moment the sink has taken it. A client that\n* stops reading grows the host's own output queue instead of slowing the\n* server down, and the diagnostics for a large schema are not small. Fixing it\n* needs a sink that reports when it drained.\n*/\nfunction textOutputStream(stdout) {\n\tconst decoder = new StringDecoder(\"utf8\");\n\treturn new Writable({\n\t\twrite(chunk, _encoding, callback) {\n\t\t\tstdout.write(decoder.write(chunk));\n\t\t\tcallback();\n\t\t},\n\t\tfinal(callback) {\n\t\t\tconst pending = decoder.end();\n\t\t\tif (pending !== \"\") stdout.write(pending);\n\t\t\tcallback();\n\t\t}\n\t});\n}\n//#endregion\n//#region src/console-capture.ts\n/**\n* Sends everything written through the global `console` to the host's stderr\n* for the length of the run, and returns the undo.\n*\n* The client owns stdout: anything on it that is not a `Content-Length` frame\n* desynchronises the client for good. `console.log` and friends write straight\n* to the process's own stdout, so one call from anywhere in the dependency\n* graph — resolving a project's config reaches c12 and jiti — corrupts the\n* protocol. `vscode-languageserver/node` redirects the console for exactly\n* this reason when it takes stdio off `process.argv`; over injected streams\n* that never runs, so the redirect happens here.\n*\n* A dependency that writes to `process.stdout` directly still reaches the\n* client. Nothing short of replacing the process's own descriptor covers that,\n* and only the host owns the process.\n*/\nfunction captureConsole(stderr) {\n\tconst host = globalThis.console;\n\tconst sink = textOutputStream(stderr);\n\tglobalThis.console = new Console({\n\t\tstdout: sink,\n\t\tstderr: sink\n\t});\n\treturn () => {\n\t\tglobalThis.console = host;\n\t};\n}\n//#endregion\n//#region src/stream-server.ts\n/**\n* How long the conversation may stand completely still before a message the\n* connection took off the reader but never dispatched is written off. It\n* answers a cancellation itself without telling anyone, so the count of\n* messages awaiting dispatch can be left standing; every other route decrements\n* it. Any activity restarts the clock, so this delays the exit rather than\n* cutting a reply short.\n*/\nconst stalledDispatchGraceMs = 50;\n/**\n* How long a host abort lets in-flight work drain before the run settles\n* regardless. The host has already decided to stop, so a handler that never\n* settles — or work that never goes idle — must not hold the exit code back\n* forever; it only gets this long to finish cleanly.\n*/\nconst abortDrainDeadlineMs = 2e3;\n/**\n* How often the client's process id is polled when the host handed one over.\n* The same cadence `vscode-languageserver/node` uses for its own watch.\n*/\nconst clientProcessPollMs = 3e3;\nfunction processAlive(pid) {\n\ttry {\n\t\tprocess.kill(pid, 0);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n/**\n* Runs the server over the host's streams and resolves with the exit code the\n* client's departure implies. The host owns the process, so nothing here ends\n* it; every route out settles the promise instead.\n*/\nfunction runServerOverStreams(streams) {\n\tconst input = byteInputStream(streams.stdin);\n\tconst inputMessages = new StreamMessageReader(input);\n\tconst outputMessages = new StreamMessageWriter(textOutputStream(streams.stdout));\n\tconst releaseConsole = captureConsole(streams.stderr);\n\treturn new Promise((resolve) => {\n\t\tlet settled = false;\n\t\t/**\n\t\t* Messages the connection is handling and replies it is writing. A request\n\t\t* handler's dispatch covers everything it awaits and the write of its\n\t\t* reply, so this stays above zero for as long as the client is owed\n\t\t* anything.\n\t\t*/\n\t\tlet inFlight = 0;\n\t\t/** Messages decoded off the stream that the connection has not started. */\n\t\tlet awaitingDispatch = 0;\n\t\tlet lastActivity = Date.now();\n\t\tlet departure;\n\t\tlet idleCheck;\n\t\tlet abortDeadline;\n\t\tlet clientWatch;\n\t\tfunction settle(code) {\n\t\t\tif (settled) return;\n\t\t\tsettled = true;\n\t\t\tif (idleCheck !== void 0) clearTimeout(idleCheck);\n\t\t\tif (abortDeadline !== void 0) clearTimeout(abortDeadline);\n\t\t\tif (clientWatch !== void 0) clearInterval(clientWatch);\n\t\t\treleaseConsole();\n\t\t\tserver.dispose();\n\t\t\tinput.destroy();\n\t\t\tresolve(code);\n\t\t}\n\t\tfunction moved() {\n\t\t\tlastActivity = Date.now();\n\t\t\tcheckIdle();\n\t\t}\n\t\t/**\n\t\t* Settles once nothing is left in flight. The client's departure is not the\n\t\t* end of the work: everything already read is queued, and a handler that\n\t\t* awaits — resolving a project reads the filesystem — has its reply written\n\t\t* turns later.\n\t\t*/\n\t\tfunction settleOnceIdle(code) {\n\t\t\tdeparture ??= code;\n\t\t\tcheckIdle();\n\t\t}\n\t\tfunction checkIdle() {\n\t\t\tif (settled || departure === void 0 || idleCheck !== void 0) return;\n\t\t\tidleCheck = setTimeout(() => {\n\t\t\t\tidleCheck = void 0;\n\t\t\t\tif (settled || departure === void 0) return;\n\t\t\t\tif (inFlight > 0) return;\n\t\t\t\tif (awaitingDispatch === 0 || Date.now() - lastActivity >= stalledDispatchGraceMs) {\n\t\t\t\t\tsettle(departure());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcheckIdle();\n\t\t\t}, 1);\n\t\t}\n\t\t/** LSP reserves 0 for a client that asked to shut down before leaving. */\n\t\tfunction departureCode() {\n\t\t\treturn watchDog.shutdownReceived ? 0 : 1;\n\t\t}\n\t\tconst reader = {\n\t\t\tonError: inputMessages.onError,\n\t\t\tonClose: inputMessages.onClose,\n\t\t\tonPartialMessage: inputMessages.onPartialMessage,\n\t\t\tlisten: (callback) => inputMessages.listen((message) => {\n\t\t\t\tawaitingDispatch += 1;\n\t\t\t\tmoved();\n\t\t\t\tcallback(message);\n\t\t\t}),\n\t\t\tdispose: () => inputMessages.dispose()\n\t\t};\n\t\tconst writer = {\n\t\t\tonError: outputMessages.onError,\n\t\t\tonClose: outputMessages.onClose,\n\t\t\twrite: (message) => {\n\t\t\t\tinFlight += 1;\n\t\t\t\tmoved();\n\t\t\t\treturn outputMessages.write(message).finally(() => {\n\t\t\t\t\tinFlight -= 1;\n\t\t\t\t\tmoved();\n\t\t\t\t});\n\t\t\t},\n\t\t\tend: () => outputMessages.end(),\n\t\t\tdispose: () => outputMessages.dispose()\n\t\t};\n\t\tconst watchDog = {\n\t\t\tshutdownReceived: false,\n\t\t\tinitialize: () => void 0,\n\t\t\texit: (code) => settleOnceIdle(() => code)\n\t\t};\n\t\tconst server = createServer(createConnection((logger) => createProtocolConnection(reader, writer, logger, { messageStrategy: { handleMessage: (message, next) => {\n\t\t\tawaitingDispatch -= 1;\n\t\t\tinFlight += 1;\n\t\t\tmoved();\n\t\t\treturn Promise.resolve(next(message)).finally(() => {\n\t\t\t\tinFlight -= 1;\n\t\t\t\tmoved();\n\t\t\t});\n\t\t} } }), watchDog, ProposedFeatures.all));\n\t\tinputMessages.onClose(() => settleOnceIdle(departureCode));\n\t\tinputMessages.onError((error) => {\n\t\t\tstreams.stderr.write(`Language server transport error: ${messageOf(error)}\\n`);\n\t\t\tsettleOnceIdle(() => 1);\n\t\t});\n\t\tconst clientProcessId = streams.clientProcessId;\n\t\tif (clientProcessId !== void 0) {\n\t\t\tconst settleIfClientGone = () => {\n\t\t\t\tif (!processAlive(clientProcessId)) settle(departureCode());\n\t\t\t};\n\t\t\tclientWatch = setInterval(settleIfClientGone, clientProcessPollMs);\n\t\t\tclientWatch.unref();\n\t\t\tsettleIfClientGone();\n\t\t}\n\t\tfunction settleOnAbort() {\n\t\t\tsettleOnceIdle(departureCode);\n\t\t\tabortDeadline ??= setTimeout(() => settle(departureCode()), abortDrainDeadlineMs);\n\t\t\tabortDeadline.unref();\n\t\t}\n\t\tconst hostShutdown = streams.signal;\n\t\tif (hostShutdown?.aborted === true) settleOnAbort();\n\t\telse hostShutdown?.addEventListener(\"abort\", settleOnAbort, { once: true });\n\t});\n}\nfunction messageOf(error) {\n\treturn error instanceof Error ? error.message : String(error);\n}\n//#endregion\n//#region src/start-server.ts\nfunction startServer(streams) {\n\tif (streams === void 0) {\n\t\tcreateServer(createConnection$1(ProposedFeatures$1.all));\n\t\treturn;\n\t}\n\treturn runServerOverStreams(streams);\n}\n//#endregion\nexport { ParseDiagnosticSeverity, createServer, mapParseDiagnostics, startServer };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prisma/orm-toolchain",
3
- "version": "8.0.0-rc.11-dev.28",
3
+ "version": "8.0.0-rc.11-dev.30",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -9,7 +9,7 @@
9
9
  "dist"
10
10
  ],
11
11
  "dependencies": {
12
- "@prisma/orm-framework": "8.0.0-rc.11-dev.28",
12
+ "@prisma/orm-framework": "8.0.0-rc.11-dev.30",
13
13
  "@vercel/detect-agent": "^1.2.4",
14
14
  "arktype": "^2.2.2",
15
15
  "c12": "^3.3.4",
@@ -29,16 +29,16 @@
29
29
  "wrap-ansi": "^10.0.0"
30
30
  },
31
31
  "devDependencies": {
32
- "@internal/cli": "8.0.0-rc.11-dev.28",
33
- "@internal/cli-telemetry": "8.0.0-rc.11-dev.28",
34
- "@internal/config-loader": "8.0.0-rc.11-dev.28",
35
- "@internal/emitter": "8.0.0-rc.11-dev.28",
36
- "@internal/language-server": "8.0.0-rc.11-dev.28",
37
- "@internal/migration-tools": "8.0.0-rc.11-dev.28",
38
- "@internal/publish-surface": "8.0.0-rc.11-dev.28",
39
- "@repo/tsconfig": "8.0.0-rc.11-dev.28",
40
- "@repo/tsdown": "8.0.0-rc.11-dev.28",
41
- "@internal/vite-plugin-contract-emit": "8.0.0-rc.11-dev.28",
32
+ "@internal/cli": "8.0.0-rc.11-dev.30",
33
+ "@internal/cli-telemetry": "8.0.0-rc.11-dev.30",
34
+ "@internal/config-loader": "8.0.0-rc.11-dev.30",
35
+ "@internal/emitter": "8.0.0-rc.11-dev.30",
36
+ "@internal/language-server": "8.0.0-rc.11-dev.30",
37
+ "@internal/migration-tools": "8.0.0-rc.11-dev.30",
38
+ "@internal/publish-surface": "8.0.0-rc.11-dev.30",
39
+ "@repo/tsconfig": "8.0.0-rc.11-dev.30",
40
+ "@repo/tsdown": "8.0.0-rc.11-dev.30",
41
+ "@internal/vite-plugin-contract-emit": "8.0.0-rc.11-dev.30",
42
42
  "tsdown": "0.22.14",
43
43
  "typescript": "5.9.3"
44
44
  },
@@ -1 +0,0 @@
1
- {"version":3,"file":"exports-DMDyYe3P.mjs","names":["normalize","#sourceFile","#rangeOffsets","#intersectsRange","#addMultilineSplitToken","#encode","#data","#first","#previousLine","#previousCharacter"],"sources":["../../../../1-framework/3-tooling/language-server/dist/exports/index.mjs"],"sourcesContent":["import { fileURLToPath, pathToFileURL } from \"node:url\";\nimport { findNearestConfigPathForFile, loadConfig, requireConfigSections } from \"@internal/config-loader\";\nimport { CliStructuredError } from \"@internal/errors/control\";\nimport { format } from \"@internal/psl-parser/format\";\nimport { join } from \"pathe\";\nimport { CompletionItemKind, ConnectionError, ConnectionErrors, DiagnosticSeverity, DidChangeWatchedFilesNotification, DocumentDiagnosticReportKind, FoldingRangeKind, InsertTextFormat, LSPErrorCodes, MarkupKind, ProposedFeatures, RegistrationRequest, ResponseError, SemanticTokenModifiers, SemanticTokenTypes, TextDocumentSyncKind, TextDocuments, createConnection } from \"vscode-languageserver\";\nimport { TextDocument } from \"vscode-languageserver-textdocument\";\nimport { ArrayLiteralAst, AttributeArgAst, AttributeArgListAst, BooleanLiteralExprAst, CompositeTypeDeclarationAst, FieldAttributeAst, FieldDeclarationAst, FunctionCallAst, GenericBlockDeclarationAst, IdentifierAst, KeyValuePairAst, ModelAttributeAst, ModelDeclarationAst, NamespaceDeclarationAst, NumberLiteralExprAst, ObjectLiteralExprAst, StringLiteralExprAst, SyntaxNode, TypesBlockAst, any, filterChildren, findChildToken, isTrivia, nonTriviaSibling, parse, skipTriviaToken } from \"@internal/psl-parser/syntax\";\nimport { isAuthoringPslBlockDescriptor, isAuthoringTypeConstructorDescriptor } from \"@internal/framework-components/authoring\";\nimport { assembleAttributeSpecs, buildSymbolTable, findBlockDescriptor } from \"@internal/psl-parser\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { createControlStack } from \"@internal/framework-components/control\";\nimport { hasPslInterpreter } from \"@internal/psl-parser/interpret\";\nimport { normalize } from \"node:path\";\nimport { InternalError } from \"@internal/utils/internal-error\";\nimport { ProposedFeatures as ProposedFeatures$1, StreamMessageReader, StreamMessageWriter, createConnection as createConnection$1, createProtocolConnection } from \"vscode-languageserver/node\";\nimport { Console } from \"node:console\";\nimport { Readable, Writable } from \"node:stream\";\nimport { StringDecoder } from \"node:string_decoder\";\n//#region src/diagnostic-mapping.ts\nconst ParseDiagnosticSeverity = {\n\tError: 1,\n\tWarning: 2,\n\tInformation: 3,\n\tHint: 4\n};\nfunction mapParseDiagnostics(diagnostics) {\n\treturn diagnostics.map((diagnostic) => ({\n\t\trange: diagnostic.range,\n\t\tmessage: diagnostic.message,\n\t\tcode: diagnostic.code,\n\t\tseverity: ParseDiagnosticSeverity.Error\n\t}));\n}\nconst documentStartRange = {\n\tstart: {\n\t\tline: 0,\n\t\tcharacter: 0\n\t},\n\tend: {\n\t\tline: 0,\n\t\tcharacter: 1\n\t}\n};\nfunction mapInterpreterDiagnostics(diagnostics, sourceFile) {\n\treturn diagnostics.map((diagnostic) => ({\n\t\trange: diagnostic.span === void 0 ? documentStartRange : pslSpanToRange(diagnostic.span, sourceFile),\n\t\tmessage: diagnostic.message,\n\t\tcode: diagnostic.code,\n\t\tseverity: ParseDiagnosticSeverity.Error\n\t}));\n}\nfunction pslSpanToRange(span, sourceFile) {\n\treturn {\n\t\tstart: sourceFile.positionAt(span.start.offset),\n\t\tend: sourceFile.positionAt(span.end.offset)\n\t};\n}\n//#endregion\n//#region src/attribute-syntax-context.ts\nfunction locateAttributeSyntax(input) {\n\tconst offset = input.sourceFile.offsetAt(input.position);\n\tconst at = input.document.syntax.tokenAtOffset(offset);\n\tif (at.leftBiased()?.kind === \"Comment\") return void 0;\n\tconst token = at.leftBiased() ?? at.rightBiased();\n\tconst attribute = token === void 0 ? void 0 : skipTriviaToken(token, \"prev\")?.parent.findAncestor(any(FieldAttributeAst.cast, ModelAttributeAst.cast));\n\tif (attribute === void 0 || !isWithinAttributeOrOpenArguments(attribute, offset)) return void 0;\n\treturn {\n\t\tattribute,\n\t\t...attributeCursor(attribute, offset)\n\t};\n}\nfunction isWithinAttributeOrOpenArguments(attribute, offset) {\n\tif (attribute.syntax.isInside(offset)) return true;\n\tconst args = attribute.argList();\n\treturn args !== void 0 && args.rparen() === void 0 && offset >= args.syntax.endOffset;\n}\nfunction attributeCursor(attribute, offset) {\n\tconst anchor = attribute.syntax.tokenAtOffset(offset).leftBiased() ?? attribute.syntax.lastToken;\n\treturn {\n\t\toffset,\n\t\tpreceding: anchor === void 0 ? void 0 : skipTriviaToken(anchor, \"prev\")\n\t};\n}\nfunction argumentSiblings(node, selected, offset) {\n\tlet precedingPositionalCount = 0;\n\tconst otherNamedKeys = [];\n\tlet beforeSelected = true;\n\tfor (const arg of node.args()) {\n\t\tif (arg.syntax.offset === selected?.syntax.offset) {\n\t\t\tbeforeSelected = false;\n\t\t\tcontinue;\n\t\t}\n\t\tconst name = arg.name()?.name();\n\t\tif (name !== void 0) otherNamedKeys.push(name);\n\t\telse if (beforeSelected && arg.syntax.offset <= offset) precedingPositionalCount += 1;\n\t}\n\treturn {\n\t\tprecedingPositionalCount,\n\t\totherNamedKeys\n\t};\n}\nfunction argumentAtCursor(cursor, node) {\n\tfor (const arg of node.args()) if (arg.syntax.offset <= cursor.offset && (containsCursor(arg.syntax, cursor) || recoveredContainerContainsCursor(arg.value(), cursor.offset))) return arg;\n}\nfunction listElementAtCursor(cursor, node) {\n\tfor (const element of node.elements()) if (containsCursor(element.syntax, cursor) || recoveredContainerContainsCursor(element, cursor.offset)) return element;\n}\nfunction recordFieldAtCursor(cursor, node) {\n\tfor (const field of node.fields()) {\n\t\tconst colon = field.colon();\n\t\tif (colon !== void 0 && cursor.offset > colon.offset && (containsCursor(field.syntax, cursor) || recoveredContainerContainsCursor(field.value(), cursor.offset))) return field;\n\t}\n}\nfunction betweenDelimiters(offset, opening, closing) {\n\treturn opening !== void 0 && offset > opening.offset && (closing === void 0 || offset < closing.endOffset);\n}\nfunction recoveredContainerContainsCursor(expression, offset) {\n\tif (expression === void 0 || expression.syntax.endOffset > offset) return false;\n\tif (!(expression instanceof ArrayLiteralAst ? expression.rbracket() === void 0 : expression instanceof ObjectLiteralExprAst ? expression.rbrace() === void 0 : expression instanceof FunctionCallAst && expression.rparen() === void 0)) return false;\n\tfor (let token = expression.syntax.lastToken?.nextToken; token !== void 0; token = token.nextToken) {\n\t\tif (token.offset >= offset) return true;\n\t\tif (!isTrivia(token) && token.kind !== \"Comma\") return false;\n\t}\n\treturn true;\n}\nfunction containsCursor(node, cursor) {\n\tif (node.isInside(cursor.offset)) return true;\n\tconst preceding = cursor.preceding;\n\treturn preceding !== void 0 && preceding.endOffset <= cursor.offset && preceding.offset >= node.offset && preceding.offset < node.endOffset;\n}\n//#endregion\n//#region src/completion-context.ts\nconst UNSUPPORTED = { kind: \"unsupported\" };\nfunction classifyPslCompletionContext(input) {\n\tconst root = input.document.syntax;\n\tconst offset = input.sourceFile.offsetAt(input.position);\n\tconst at = root.tokenAtOffset(offset);\n\tif (at.leftBiased()?.kind === \"Comment\") return UNSUPPORTED;\n\tconst edit = cursorIdentifier(at, offset);\n\tconst preceding = precedingToken(at, edit);\n\tconst precedingNode = preceding?.parent;\n\tconst replacementStartOffset = edit?.offset ?? offset;\n\tconst attributeClassifierInput = {\n\t\toffset,\n\t\tnode: attributeAnchor(at),\n\t\treplacementStartOffset\n\t};\n\tconst attributeContext = classifyFieldAttribute(attributeClassifierInput) ?? classifyGenericBlockAttribute(attributeClassifierInput) ?? classifyModelAttribute(attributeClassifierInput);\n\tif (attributeContext !== void 0) return attributeContext;\n\tconst declarationKeywordContext = classifyDeclarationKeyword({\n\t\tnode: precedingNode,\n\t\toffset,\n\t\treplacementStartOffset\n\t});\n\tif (declarationKeywordContext !== void 0) return declarationKeywordContext;\n\tconst genericBlockContext = classifyGenericBlockParameter({\n\t\toffset,\n\t\tat,\n\t\tprecedingToken: preceding,\n\t\treplacementStartOffset\n\t});\n\tif (genericBlockContext !== void 0) return genericBlockContext;\n\tconst field = fieldForTypeSlot(precedingNode);\n\tif (field === void 0) return UNSUPPORTED;\n\tif (field.syntax.findAncestor(any(ModelDeclarationAst.cast, CompositeTypeDeclarationAst.cast)) === void 0) return UNSUPPORTED;\n\treturn classifyModelFieldType({\n\t\tfield,\n\t\toffset,\n\t\treplacementStartOffset,\n\t\tprecedingToken: preceding\n\t});\n}\n/**\n* Locates the field whose type position the cursor occupies. The preceding token\n* climbs to the field whether the cursor sits inside a present type (the type\n* identifier's predecessor still belongs to the field) or in the empty type slot\n* of a typeless field (whose trailing trivia lives in the enclosing block, so\n* the nearest significant token to the left is the field's own name).\n*/\nfunction fieldForTypeSlot(precedingNode) {\n\treturn precedingNode?.findAncestor(FieldDeclarationAst.cast);\n}\nfunction classifyModelFieldType(input) {\n\tconst fieldName = input.field.name();\n\tif (fieldName === void 0) return UNSUPPORTED;\n\tconst fieldNameText = fieldName.name();\n\tif (fieldNameText === void 0) return UNSUPPORTED;\n\tif (fieldName.syntax.isInside(input.offset)) return UNSUPPORTED;\n\tconst typeAnnotation = input.field.typeAnnotation();\n\tif (typeAnnotation === void 0) {\n\t\tif (input.precedingToken !== void 0 && fieldName.syntax.isInside(input.precedingToken.offset)) return {\n\t\t\tkind: \"modelType\",\n\t\t\toffset: input.offset,\n\t\t\tfieldName: fieldNameText,\n\t\t\treplacementStartOffset: input.offset\n\t\t};\n\t\treturn UNSUPPORTED;\n\t}\n\tif (typeAnnotation.syntax.isOutside(input.offset)) return UNSUPPORTED;\n\tif (typeAnnotation.argList()?.syntax.isInside(input.offset)) return UNSUPPORTED;\n\tconst name = typeAnnotation.name();\n\tif (name === void 0) return UNSUPPORTED;\n\tif (name.syntax.isOutside(input.offset)) return UNSUPPORTED;\n\tif (name.isOverQualified()) return UNSUPPORTED;\n\treturn classifyTypePosition(name, input.offset, fieldNameText, input.replacementStartOffset);\n}\n/**\n* Builds the type-completion context for a qualified name. Roles are read\n* straight off the separator-positional accessors: a populated namespace\n* segment is a `.`-qualified name, a populated space segment is a `:`-qualified\n* name, and the absence of both is a bare model type.\n*\n* Behaviour change: a `:`-qualified name with no `.` (e.g. `supabase:`,\n* `supabase:U`) is a `spaceMember` position rather than falling through to bare\n* model-type completions. A malformed leading-separator name (`:User`, `.User`)\n* carries no populated segment and resolves to `modelType` rather than\n* `unsupported`.\n*/\nfunction classifyTypePosition(name, offset, fieldName, replacementStartOffset) {\n\tconst namespace = name.namespace()?.name();\n\tif (namespace !== void 0 && namespace.length > 0) {\n\t\tconst namespaceSpace = name.space()?.name();\n\t\treturn {\n\t\t\tkind: \"namespaceMember\",\n\t\t\toffset,\n\t\t\tfieldName,\n\t\t\treplacementStartOffset,\n\t\t\tnamespace,\n\t\t\t...namespaceSpace !== void 0 && namespaceSpace.length > 0 ? { space: namespaceSpace } : {}\n\t\t};\n\t}\n\tconst space = name.space()?.name();\n\tif (space !== void 0 && space.length > 0) return {\n\t\tkind: \"spaceMember\",\n\t\toffset,\n\t\tfieldName,\n\t\treplacementStartOffset,\n\t\tspace\n\t};\n\treturn {\n\t\tkind: \"modelType\",\n\t\toffset,\n\t\tfieldName,\n\t\treplacementStartOffset\n\t};\n}\nconst declarationCast = any(ModelDeclarationAst.cast, CompositeTypeDeclarationAst.cast, TypesBlockAst.cast, GenericBlockDeclarationAst.cast, NamespaceDeclarationAst.cast);\nfunction classifyDeclarationKeyword(input) {\n\tconst precedingDeclaration = input.node?.findAncestor(declarationCast);\n\tconst namespace = input.node?.findAncestor(NamespaceDeclarationAst.cast);\n\tconst inNamespaceBody = blockBodyContainsOffset(namespace, input.offset);\n\tif (precedingDeclaration !== void 0 && !canCompleteDeclaration(precedingDeclaration, input.offset, inNamespaceBody)) return;\n\treturn {\n\t\tkind: \"declarationKeyword\",\n\t\toffset: input.offset,\n\t\tscope: inNamespaceBody ? \"namespace\" : \"document\",\n\t\treplacementStartOffset: input.replacementStartOffset\n\t};\n}\n/**\n* Whether a new declaration can begin at the cursor, given the nearest enclosing\n* declaration. Allowed when that declaration is still nascent (only its keyword\n* typed, no name or body yet), when it is a namespace whose body holds further\n* declarations, or when the cursor sits past its closing `}`.\n*/\nfunction canCompleteDeclaration(precedingDeclaration, offset, inNamespaceBody) {\n\tif (precedingDeclaration.lbrace() === void 0 && (precedingDeclaration instanceof TypesBlockAst || precedingDeclaration.name() === void 0)) return true;\n\tif (precedingDeclaration instanceof NamespaceDeclarationAst && inNamespaceBody) return true;\n\tconst rbrace = precedingDeclaration.rbrace();\n\treturn rbrace !== void 0 && offset >= rbrace.endOffset;\n}\nfunction blockBodyContainsOffset(block, offset) {\n\tif (block === void 0) return false;\n\tconst lbrace = block.lbrace();\n\tif (lbrace === void 0) return false;\n\tconst bodyStart = lbrace.endOffset;\n\tconst bodyEnd = block.rbrace()?.offset ?? block.syntax.endOffset;\n\treturn offset >= bodyStart && offset <= bodyEnd;\n}\nfunction classifyFieldAttribute(input) {\n\tconst attribute = input.node?.findAncestor(FieldAttributeAst.cast);\n\tif (attribute === void 0 || !isWithinAttributeOrOpenArguments(attribute, input.offset)) return;\n\tconst field = attribute.syntax.findAncestor(FieldDeclarationAst.cast);\n\tconst model = attribute.syntax.findAncestor(ModelDeclarationAst.cast);\n\tif (field === void 0 || model === void 0) return UNSUPPORTED;\n\tconst owner = {\n\t\townerKind: \"field\",\n\t\tfield,\n\t\tmodel\n\t};\n\treturn classifyAttributePosition(attribute, input, {\n\t\tname: (position) => ({\n\t\t\tkind: \"fieldAttributeName\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t}),\n\t\tnamedKey: (position) => ({\n\t\t\tkind: \"fieldAttributeNamedKey\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t}),\n\t\targumentSlot: (position) => ({\n\t\t\tkind: \"fieldAttributeArgumentSlot\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t}),\n\t\tvalue: (position) => ({\n\t\t\tkind: \"fieldAttributeValue\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t})\n\t});\n}\nfunction classifyGenericBlockAttribute(input) {\n\tconst attribute = activeModelAttribute(input);\n\tconst block = attribute?.syntax.findAncestor(GenericBlockDeclarationAst.cast);\n\tif (attribute === void 0 || block === void 0) return;\n\tconst blockKeyword = block.keyword()?.text;\n\tif (blockKeyword === void 0 || blockKeyword.length === 0) return UNSUPPORTED;\n\tconst owner = {\n\t\townerKind: \"block\",\n\t\tblock,\n\t\tblockKeyword\n\t};\n\treturn classifyAttributePosition(attribute, input, {\n\t\tname: (position) => ({\n\t\t\tkind: \"blockAttributeName\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t}),\n\t\tnamedKey: (position) => ({\n\t\t\tkind: \"blockAttributeNamedKey\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t}),\n\t\targumentSlot: (position) => ({\n\t\t\tkind: \"blockAttributeArgumentSlot\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t}),\n\t\tvalue: (position) => ({\n\t\t\tkind: \"blockAttributeValue\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t})\n\t});\n}\nfunction classifyModelAttribute(input) {\n\tconst attribute = activeModelAttribute(input);\n\tif (attribute === void 0) return;\n\tconst model = attribute.syntax.findAncestor(ModelDeclarationAst.cast);\n\tif (model === void 0) return;\n\tconst owner = {\n\t\townerKind: \"model\",\n\t\tmodel\n\t};\n\treturn classifyAttributePosition(attribute, input, {\n\t\tname: (position) => ({\n\t\t\tkind: \"modelAttributeName\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t}),\n\t\tnamedKey: (position) => ({\n\t\t\tkind: \"modelAttributeNamedKey\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t}),\n\t\targumentSlot: (position) => ({\n\t\t\tkind: \"modelAttributeArgumentSlot\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t}),\n\t\tvalue: (position) => ({\n\t\t\tkind: \"modelAttributeValue\",\n\t\t\t...position,\n\t\t\t...owner\n\t\t})\n\t});\n}\nfunction activeModelAttribute(input) {\n\tconst attribute = input.node?.findAncestor(ModelAttributeAst.cast);\n\tif (attribute === void 0 || !isWithinAttributeOrOpenArguments(attribute, input.offset)) return;\n\treturn attribute;\n}\nfunction attributeAnchor(at) {\n\tconst token = at.leftBiased() ?? at.rightBiased();\n\treturn token === void 0 ? void 0 : skipTriviaToken(token, \"prev\")?.parent;\n}\nfunction classifyAttributePosition(attribute, input, factory) {\n\tconst args = attribute.argList();\n\tif (args === void 0 || input.offset < args.syntax.offset) return factory.name({\n\t\toffset: input.offset,\n\t\treplacementStartOffset: input.replacementStartOffset,\n\t\treplacementEndOffset: attribute.name()?.syntax.endOffset ?? input.offset,\n\t\thasArgumentList: args !== void 0\n\t});\n\tconst attributeName = attribute.name()?.identifier()?.name();\n\tif (attributeName === void 0) return UNSUPPORTED;\n\tconst at = attribute.syntax.tokenAtOffset(input.offset);\n\tconst right = at.rightBiased();\n\tconst token = isValueToken(right) ? right : at.leftBiased();\n\tconst replaceToken = isValueToken(token);\n\treturn classifyAttributeArguments({\n\t\toffset: input.offset,\n\t\treplacementStartOffset: replaceToken ? token.offset : input.offset,\n\t\treplacementEndOffset: replaceToken ? token.endOffset : input.offset,\n\t\tattributeName,\n\t\tpreceding: attributeCursor(attribute, input.offset).preceding,\n\t\tfactory\n\t}, args, []);\n}\nfunction argumentPosition(cursor, path) {\n\treturn {\n\t\toffset: cursor.offset,\n\t\treplacementStartOffset: cursor.replacementStartOffset,\n\t\treplacementEndOffset: cursor.replacementEndOffset,\n\t\tattributeName: cursor.attributeName,\n\t\tpath\n\t};\n}\nfunction classifyAttributeArguments(cursor, args, path) {\n\tif (!betweenDelimiters(cursor.offset, args.lparen(), args.rparen())) return UNSUPPORTED;\n\tconst active = argumentAtCursor(cursor, args);\n\tconst { precedingPositionalCount: positionalIndex, otherNamedKeys: existingNamedKeys } = argumentSiblings(args, active, cursor.offset);\n\tconst position = argumentPosition(cursor, path);\n\tif (active === void 0) return followsSeparator(cursor, [\"LParen\", \"Comma\"]) ? cursor.factory.argumentSlot({\n\t\t...position,\n\t\tpositionalIndex,\n\t\texistingNamedKeys,\n\t\thasColon: false\n\t}) : UNSUPPORTED;\n\tconst colon = active.colon();\n\tif (colon !== void 0) {\n\t\tif (cursor.offset <= colon.offset) return cursor.factory.namedKey({\n\t\t\t...position,\n\t\t\texistingNamedKeys,\n\t\t\thasColon: true\n\t\t});\n\t\tconst name = active.name()?.name();\n\t\treturn name === void 0 ? UNSUPPORTED : classifyAttributeExpression(cursor, active.value(), [...path, {\n\t\t\tkind: \"namedArgument\",\n\t\t\tname\n\t\t}]);\n\t}\n\tconst value = active.value();\n\tif (value === void 0 || value instanceof IdentifierAst && value.syntax.isInside(cursor.offset)) return cursor.factory.argumentSlot({\n\t\t...position,\n\t\tpositionalIndex,\n\t\texistingNamedKeys,\n\t\thasColon: false\n\t});\n\treturn classifyAttributeExpression(cursor, value, [...path, {\n\t\tkind: \"positionalArgument\",\n\t\tindex: positionalIndex\n\t}]);\n}\nfunction classifyAttributeExpression(cursor, expression, path) {\n\tif (expression === void 0) return cursor.factory.value({\n\t\t...argumentPosition(cursor, path),\n\t\tsyntax: \"scalar\"\n\t});\n\tif (expression instanceof ArrayLiteralAst) {\n\t\tif (!betweenDelimiters(cursor.offset, expression.lbracket(), expression.rbracket())) return UNSUPPORTED;\n\t\tconst element = listElementAtCursor(cursor, expression);\n\t\treturn element !== void 0 || followsSeparator(cursor, [\"LBracket\", \"Comma\"]) ? classifyAttributeExpression(cursor, element, [...path, { kind: \"listElement\" }]) : UNSUPPORTED;\n\t}\n\tif (expression instanceof ObjectLiteralExprAst) {\n\t\tconst closing = expression.rbrace();\n\t\tif (closing !== void 0 && cursor.offset >= closing.endOffset) return UNSUPPORTED;\n\t\tconst field = recordFieldAtCursor(cursor, expression);\n\t\treturn field !== void 0 ? classifyAttributeExpression(cursor, field.value(), [...path, { kind: \"recordValue\" }]) : UNSUPPORTED;\n\t}\n\tif (expression instanceof FunctionCallAst) {\n\t\tconst opening = expression.lparen();\n\t\tif (opening !== void 0 && cursor.offset > opening.offset) {\n\t\t\tconst name = expression.name();\n\t\t\tconst identifier = name?.identifier()?.name();\n\t\t\treturn identifier !== void 0 && name?.isSimpleName(identifier) === true ? classifyAttributeArguments(cursor, expression, [...path, {\n\t\t\t\tkind: \"functionCall\",\n\t\t\t\tname: identifier\n\t\t\t}]) : UNSUPPORTED;\n\t\t}\n\t\treturn expression.name()?.syntax.isInside(cursor.offset) === true ? cursor.factory.value({\n\t\t\t...argumentPosition(cursor, path),\n\t\t\tsyntax: \"functionName\"\n\t\t}) : UNSUPPORTED;\n\t}\n\treturn expression.syntax.isOutside(cursor.offset) ? UNSUPPORTED : cursor.factory.value({\n\t\t...argumentPosition(cursor, path),\n\t\tsyntax: \"scalar\"\n\t});\n}\nfunction isValueToken(token) {\n\treturn token !== void 0 && (token.kind === \"Ident\" || token.kind === \"StringLiteral\" || token.kind === \"NumberLiteral\");\n}\nfunction followsSeparator(cursor, kinds) {\n\treturn kinds.includes(cursor.preceding?.kind ?? \"\");\n}\nfunction classifyGenericBlockParameter(input) {\n\tconst node = input.at.leftBiased()?.parent;\n\tconst block = node?.findAncestor(GenericBlockDeclarationAst.cast);\n\tif (block === void 0) return;\n\tif (hasUnsupportedAncestor(node)) return UNSUPPORTED;\n\tif (!blockBodyContainsOffset(block, input.offset)) return UNSUPPORTED;\n\tif ((node?.findAncestor(FieldDeclarationAst.cast))?.syntax.isInside(input.offset)) return UNSUPPORTED;\n\tconst keyword = block.keyword()?.text;\n\tif (keyword === void 0 || keyword.length === 0) return UNSUPPORTED;\n\tif (input.precedingToken?.kind === \"Equals\") return {\n\t\tkind: \"genericBlockValue\",\n\t\toffset: input.offset,\n\t\tblockKeyword: keyword,\n\t\treplacementStartOffset: input.replacementStartOffset\n\t};\n\tconst activePair = activeKeyValuePair(node, input.offset);\n\tif (activePair !== void 0 && isAfterEquals(activePair, input.offset)) return UNSUPPORTED;\n\treturn {\n\t\tkind: \"genericBlockKey\",\n\t\toffset: input.offset,\n\t\tblockKeyword: keyword,\n\t\treplacementStartOffset: input.replacementStartOffset,\n\t\tblock\n\t};\n}\nfunction activeKeyValuePair(node, offset) {\n\tconst pair = node?.findAncestor(KeyValuePairAst.cast);\n\tif (pair === void 0 || pair.syntax.isOutside(offset)) return;\n\treturn pair;\n}\nfunction isAfterEquals(pair, offset) {\n\tconst equals = pair.equals();\n\treturn equals !== void 0 && offset > equals.offset;\n}\nfunction hasUnsupportedAncestor(node) {\n\treturn node?.findAncestor(any(AttributeArgListAst.cast, FieldAttributeAst.cast, ModelAttributeAst.cast)) !== void 0;\n}\n/** The significant token preceding the cursor — the in-progress edit identifier\n* is skipped, so the result is the token the classifier anchors on. */\nfunction precedingToken(at, edit) {\n\tconst start = edit !== void 0 ? edit.prevToken : at.leftBiased();\n\treturn start === void 0 ? void 0 : skipTriviaToken(start, \"prev\");\n}\n/** The identifier token the cursor is editing, if any. */\nfunction cursorIdentifier(at, offset) {\n\tconst right = at.rightBiased();\n\tif (right?.kind === \"Ident\" && offset < right.endOffset) return right;\n\tconst left = at.leftBiased();\n\tif (left?.kind === \"Ident\" && left.endOffset === offset) return left;\n}\n//#endregion\n//#region src/named-type-classification.ts\n/**\n* Presentation-level classification of a `types {}` binding: a\n* non-constructor binding whose base is a configured scalar type refines that\n* scalar (rendered as a default-library type); everything else reads as a\n* plain alias. The authoritative scalar-or-not pronouncement lives in the\n* interpreter's named-type resolution — this mirrors it for display only.\n*/\nfunction refinesScalarType(symbol, scalarTypes) {\n\treturn !symbol.isConstructor && symbol.baseType !== void 0 && scalarTypes.includes(symbol.baseType);\n}\n//#endregion\n//#region src/completion-symbols.ts\nfunction modelSymbolForNode(symbolTable, node) {\n\tconst topLevelMatch = Object.values(symbolTable.topLevel.models).find((model) => sameSyntax(model.node.syntax, node.syntax));\n\tif (topLevelMatch !== void 0) return topLevelMatch;\n\tfor (const namespace of Object.values(symbolTable.topLevel.namespaces)) {\n\t\tconst namespaceMatch = Object.values(namespace.models).find((model) => sameSyntax(model.node.syntax, node.syntax));\n\t\tif (namespaceMatch !== void 0) return namespaceMatch;\n\t}\n}\nfunction fieldSymbolForNode(model, node) {\n\treturn Object.values(model.fields).find((field) => sameSyntax(field.node.syntax, node.syntax));\n}\nfunction localFieldNames(context, symbols, scalarTypes, typeConstructors = {}) {\n\tswitch (context.kind) {\n\t\tcase \"blockAttributeNamedKey\":\n\t\tcase \"blockAttributeArgumentSlot\":\n\t\tcase \"blockAttributeValue\": return [];\n\t\tcase \"fieldAttributeNamedKey\":\n\t\tcase \"fieldAttributeArgumentSlot\":\n\t\tcase \"fieldAttributeValue\":\n\t\tcase \"modelAttributeNamedKey\":\n\t\tcase \"modelAttributeArgumentSlot\":\n\t\tcase \"modelAttributeValue\": return scalarFieldNames(symbols, modelSymbolForNode(symbols, context.model), scalarTypes, typeConstructors);\n\t}\n}\nfunction referencedFieldNames(context, symbols, scalarTypes, typeConstructors = {}) {\n\tswitch (context.kind) {\n\t\tcase \"blockAttributeNamedKey\":\n\t\tcase \"blockAttributeArgumentSlot\":\n\t\tcase \"blockAttributeValue\":\n\t\tcase \"modelAttributeNamedKey\":\n\t\tcase \"modelAttributeArgumentSlot\":\n\t\tcase \"modelAttributeValue\": return [];\n\t\tcase \"fieldAttributeNamedKey\":\n\t\tcase \"fieldAttributeArgumentSlot\":\n\t\tcase \"fieldAttributeValue\": {\n\t\t\tconst model = modelSymbolForNode(symbols, context.model);\n\t\t\tif (model === void 0) return [];\n\t\t\tconst field = fieldSymbolForNode(model, context.field);\n\t\t\tif (field === void 0) return [];\n\t\t\treturn scalarFieldNames(symbols, referencedModel(symbols, model, field), scalarTypes, typeConstructors);\n\t\t}\n\t}\n}\nfunction scalarFieldNames(symbols, model, scalarTypes, typeConstructors) {\n\tif (model === void 0) return [];\n\tconst namespaceName = model.node.syntax.findAncestor(NamespaceDeclarationAst.cast)?.name()?.name();\n\tconst namespace = namespaceName === void 0 ? void 0 : symbols.topLevel.namespaces[namespaceName];\n\treturn Object.values(model.fields).filter((field) => {\n\t\tif (field.malformedType === true || field.typeContractSpaceId !== void 0) return false;\n\t\tif (field.typeConstructor !== void 0) return isScalarConstructor(field.typeConstructor.path, typeConstructors);\n\t\tif (field.typeNamespaceId !== void 0) return false;\n\t\tconst name = field.typeName;\n\t\tif (namespace?.models[name] !== void 0 || namespace?.compositeTypes[name] !== void 0 || namespace?.blocks[name] !== void 0 || symbols.topLevel.models[name] !== void 0 || symbols.topLevel.compositeTypes[name] !== void 0 || symbols.topLevel.blocks[name] !== void 0) return false;\n\t\tconst namedType = symbols.topLevel.namedTypes[name];\n\t\tif (namedType === void 0) return scalarTypes.includes(name);\n\t\treturn namedType.typeConstructor === void 0 ? refinesScalarType(namedType, scalarTypes) : isScalarConstructor(namedType.typeConstructor.path, typeConstructors);\n\t}).map((field) => field.name);\n}\nfunction isScalarConstructor(path, typeConstructors) {\n\tlet current = typeConstructors;\n\tfor (const [index, segment] of path.entries()) {\n\t\tconst value = Object.hasOwn(current, segment) ? current[segment] : void 0;\n\t\tif (value === void 0) return false;\n\t\tif (isAuthoringTypeConstructorDescriptor(value)) return index === path.length - 1;\n\t\tcurrent = value;\n\t}\n\treturn false;\n}\nfunction referencedModel(symbols, model, field) {\n\tif (field.malformedType === true || field.typeContractSpaceId !== void 0) return void 0;\n\tif (field.typeNamespaceId !== void 0) return symbols.topLevel.namespaces[field.typeNamespaceId]?.models[field.typeName];\n\tconst namespace = model.node.syntax.findAncestor(NamespaceDeclarationAst.cast)?.name()?.name();\n\treturn (namespace === void 0 ? void 0 : symbols.topLevel.namespaces[namespace]?.models[field.typeName]) ?? symbols.topLevel.models[field.typeName];\n}\nfunction sameSyntax(left, right) {\n\treturn left.offset === right.offset && left.endOffset === right.endOffset;\n}\n//#endregion\n//#region src/attribute-spec-resolution.ts\nfunction attributeSpecResolver(context, source) {\n\tswitch (context.ownerKind) {\n\t\tcase \"block\": {\n\t\t\tconst descriptor = findBlockDescriptor(source.pslBlockDescriptors, context.blockKeyword);\n\t\t\treturn (name) => {\n\t\t\t\tconst factory = descriptor?.attributes?.[name];\n\t\t\t\tif (factory === void 0) return void 0;\n\t\t\t\treturn blindCast(factory)();\n\t\t\t};\n\t\t}\n\t\tcase \"model\": {\n\t\t\tif (source.authoringContributions === void 0) return () => void 0;\n\t\t\tconst model = modelSymbolForNode(source.symbolTable, context.model);\n\t\t\tif (model === void 0 || source.controlMutationDefaults === void 0) return () => void 0;\n\t\t\tconst specs = assembleAttributeSpecs(source.authoringContributions);\n\t\t\tconst specContext = {\n\t\t\t\tsymbols: source.symbolTable,\n\t\t\t\tmodel,\n\t\t\t\tcontrolMutationDefaults: source.controlMutationDefaults.defaultFunctionRegistry\n\t\t\t};\n\t\t\treturn (name) => specs.model[name]?.(specContext);\n\t\t}\n\t\tcase \"field\": {\n\t\t\tif (source.authoringContributions === void 0) return () => void 0;\n\t\t\tconst model = modelSymbolForNode(source.symbolTable, context.model);\n\t\t\tif (model === void 0 || source.controlMutationDefaults === void 0) return () => void 0;\n\t\t\tconst field = fieldSymbolForNode(model, context.field);\n\t\t\tif (field === void 0) return () => void 0;\n\t\t\tconst specs = assembleAttributeSpecs(source.authoringContributions);\n\t\t\tconst specContext = {\n\t\t\t\tsymbols: source.symbolTable,\n\t\t\t\tmodel,\n\t\t\t\tcontrolMutationDefaults: source.controlMutationDefaults.defaultFunctionRegistry\n\t\t\t};\n\t\t\treturn (name) => specs.field[name]?.({\n\t\t\t\t...specContext,\n\t\t\t\tfield\n\t\t\t});\n\t\t}\n\t}\n}\n//#endregion\n//#region src/completion-snippets.ts\nfunction requiredArgumentsSnippet(signature) {\n\treturn requiredArguments(signature).map((argument, index) => requiredArgumentSnippet(argument, index + 1)).join(\", \");\n}\nfunction requiredArguments(signature) {\n\tconst positional = signature.positional ?? [];\n\tconst positionalKeys = new Set(positional.map((argument) => argument.key));\n\treturn [...positional.flatMap((argument) => isOptionalParam(argument.type) ? [] : [{\n\t\tkind: \"positional\",\n\t\targument\n\t}]), ...Object.entries(signature.named ?? {}).flatMap(([key, { type }]) => positionalKeys.has(key) || isOptionalParam(type) ? [] : [{\n\t\tkind: \"named\",\n\t\tkey,\n\t\ttype\n\t}])];\n}\nfunction requiredArgumentSnippet(argument, tabStop) {\n\tif (argument.kind === \"positional\") return argSnippetPlaceholder(argument.argument.type, tabStop, argument.argument.key);\n\treturn `${argument.key}: ${argSnippetPlaceholder(argument.type, tabStop, argument.key)}`;\n}\nfunction argSnippetPlaceholder(param, tabStop, key) {\n\tconst placeholder = `\\${${tabStop.toString()}:${key}}`;\n\tif (param.kind === \"str\") return `\"${placeholder}\"`;\n\tif (param.kind === \"list\") return `[${placeholder}]`;\n\tif (param.kind === \"record\") return `{ ${placeholder} }`;\n\treturn placeholder;\n}\nfunction isOptionalParam(param) {\n\treturn \"optional\" in param && param.optional === true;\n}\n//#endregion\n//#region src/attribute-argument-grammar.ts\nfunction directArgType(param) {\n\treturn blindCast(param);\n}\nfunction resolveGrammar(signature, path) {\n\tlet grammars = [signature];\n\tfor (const step of path) grammars = grammars.flatMap((grammar) => advanceGrammar(grammar, step));\n\treturn grammars;\n}\nfunction advanceGrammar(grammar, step) {\n\tconst type = \"kind\" in grammar ? directArgType(grammar) : void 0;\n\tif (type?.kind === \"oneOf\") return type.alternatives.flatMap((alternative) => advanceGrammar(alternative, step));\n\tswitch (step.kind) {\n\t\tcase \"positionalArgument\": {\n\t\t\tif (\"kind\" in grammar) return [];\n\t\t\tconst param = grammar.positional?.[step.index]?.type;\n\t\t\treturn param === void 0 ? [] : [param];\n\t\t}\n\t\tcase \"namedArgument\": {\n\t\t\tif (\"kind\" in grammar) return [];\n\t\t\tconst param = grammar.named?.[step.name]?.type;\n\t\t\treturn param === void 0 ? [] : [param];\n\t\t}\n\t\tcase \"listElement\": return type?.kind === \"list\" ? [type.of] : [];\n\t\tcase \"recordValue\": return type?.kind === \"record\" ? [type.of] : [];\n\t\tcase \"functionCall\": return type?.kind === \"funcCall\" && type.name === step.name ? [type.signature] : [];\n\t}\n}\n//#endregion\n//#region src/completion-values.ts\nfunction provideAttributeNamedKeyCompletionItems(input, spec) {\n\treturn orderedItems(resolveGrammar(spec, input.context.path).flatMap((grammar) => \"kind\" in grammar ? [] : namedKeyItems(input, grammar)));\n}\nfunction provideAttributeArgumentSlotCompletionItems(input, spec) {\n\treturn orderedItems(resolveGrammar(spec, input.context.path).flatMap((grammar) => {\n\t\tif (\"kind\" in grammar) return [];\n\t\tconst param = grammar.positional?.[input.context.positionalIndex]?.type;\n\t\treturn [...valueItems(input, param, \"scalar\"), ...namedKeyItems(input, grammar)];\n\t}));\n}\nfunction provideAttributeValueCompletionItems(input, spec) {\n\treturn orderedItems(resolveGrammar(spec, input.context.path).flatMap((grammar) => \"kind\" in grammar ? valueItems(input, grammar, input.context.syntax) : []));\n}\nfunction namedKeyItems(input, signature) {\n\treturn Object.entries(signature.named ?? {}).filter(([name]) => !input.context.existingNamedKeys.includes(name)).map(([name, param]) => {\n\t\tconst snippet = input.clientSupportsSnippets && !input.context.hasColon;\n\t\tconst value = snippet ? `\\${1:${name}}` : \"\";\n\t\treturn {\n\t\t\t...completionItem(input, name, input.context.hasColon ? name : `${name}: ${value}`, CompletionItemKind.Property, snippet, param.documentation),\n\t\t\t...!input.context.hasColon && input.clientSupportsTriggerSuggestCommand === true ? { command: {\n\t\t\t\ttitle: \"Suggest argument values\",\n\t\t\t\tcommand: \"editor.action.triggerSuggest\"\n\t\t\t} } : {}\n\t\t};\n\t});\n}\nfunction valueItems(input, param, syntax) {\n\tif (param === void 0) return [];\n\tconst type = directArgType(param);\n\tif (type.kind === \"oneOf\") return type.alternatives.flatMap((alternative) => valueItems(input, alternative, syntax));\n\tif (type.kind === \"funcCall\") {\n\t\tconst snippet = input.clientSupportsSnippets && syntax !== \"functionName\";\n\t\tconst hasParameters = (type.signature.positional?.length ?? 0) > 0 || Object.keys(type.signature.named ?? {}).length > 0;\n\t\tconst args = requiredArgumentsSnippet(type.signature) || (hasParameters ? \"${1:}\" : \"\");\n\t\tconst text = snippet ? `${type.name}(${args})` : type.name;\n\t\treturn [{\n\t\t\t...completionItem(input, type.name, text, CompletionItemKind.Function, snippet, type.signature.documentation),\n\t\t\t...snippet && input.clientSupportsTriggerParameterHintsCommand === true && hasParameters ? { command: {\n\t\t\t\ttitle: \"Show argument hints\",\n\t\t\t\tcommand: \"editor.action.triggerParameterHints\"\n\t\t\t} } : {}\n\t\t}];\n\t}\n\tif (syntax === \"functionName\") return [];\n\tswitch (type.kind) {\n\t\tcase \"identifier\": return scalarItems(input, [type.name], type.documentation);\n\t\tcase \"str\": return scalarItems(input, type.value === void 0 ? [] : [JSON.stringify(type.value)]);\n\t\tcase \"num\": return scalarItems(input, type.value === void 0 ? [] : [String(type.value)]);\n\t\tcase \"bool\": return scalarItems(input, [\"true\", \"false\"]);\n\t\tcase \"fieldRef\":\n\t\tcase \"referencedFieldRef\": return scalarItems(input, input.fieldNames(type.kind));\n\t\tcase \"list\":\n\t\tcase \"record\":\n\t\tcase \"entityRef\":\n\t\tcase \"int\":\n\t\tcase \"json\":\n\t\tcase \"rejecting\": return [];\n\t}\n}\nfunction scalarItems(input, labels, documentation) {\n\treturn labels.map((label) => completionItem(input, label, label, CompletionItemKind.Value, false, documentation));\n}\nfunction completionItem(input, label, newText, kind, snippet = false, documentation) {\n\treturn {\n\t\tlabel,\n\t\tkind,\n\t\tdetail: documentation ?? (kind === CompletionItemKind.Property ? \"Attribute argument\" : \"PSL argument value\"),\n\t\tfilterText: label,\n\t\ttextEdit: {\n\t\t\trange: {\n\t\t\t\tstart: input.sourceFile.positionAt(input.context.replacementStartOffset),\n\t\t\t\tend: input.sourceFile.positionAt(input.context.replacementEndOffset)\n\t\t\t},\n\t\t\tnewText\n\t\t},\n\t\t...snippet ? { insertTextFormat: InsertTextFormat.Snippet } : {}\n\t};\n}\nfunction orderedItems(items) {\n\tconst seen = /* @__PURE__ */ new Set();\n\treturn items.filter((item) => {\n\t\tconst key = JSON.stringify([\n\t\t\titem.label,\n\t\t\titem.textEdit,\n\t\t\titem.insertTextFormat\n\t\t]);\n\t\tif (seen.has(key)) return false;\n\t\tseen.add(key);\n\t\treturn true;\n\t}).map((item, index) => ({\n\t\t...item,\n\t\tsortText: index.toString().padStart(4, \"0\")\n\t}));\n}\n//#endregion\n//#region src/completion-provider.ts\nconst categoryOrder = {\n\tconfiguredScalar: 0,\n\ttopLevelModel: 1,\n\ttopLevelCompositeType: 2,\n\tscalar: 3,\n\ttypeAlias: 4,\n\tnamespace: 5,\n\tnamespaceModel: 6,\n\tnamespaceCompositeType: 7\n};\nconst declarationKeywordCategoryOrder = {\n\tnative: 0,\n\tgenericBlock: 1\n};\nconst nameSnippetPlaceholder = \"${1:Name}\";\nconst namespaceSnippetPlaceholder = \"${1:name}\";\nconst namespaceNativeDeclarationKeywords = [nativeDeclarationKeyword(\"model\", \"model \", `model ${nameSnippetPlaceholder} {\\n \\${0:// Fields}\\n}`, \"Defines a data model.\"), nativeDeclarationKeyword(\"type\", \"type \", `type ${nameSnippetPlaceholder} {\\n \\${0:// Fields}\\n}`, \"Defines a reusable composite type.\")];\nconst documentNativeDeclarationKeywords = [\n\t...namespaceNativeDeclarationKeywords,\n\tnativeDeclarationKeyword(\"types\", \"types \", \"types {\\n ${0:// Type aliases}\\n}\", \"Defines reusable named types.\"),\n\tnativeDeclarationKeyword(\"namespace\", \"namespace \", `namespace ${namespaceSnippetPlaceholder} {\\n \\${0:// Models and types}\\n}`, \"Groups declarations belonging to the same database schema or database.\")\n];\nfunction providePslCompletionItems(input) {\n\tconst { context } = input;\n\tswitch (context.kind) {\n\t\tcase \"unsupported\": return [];\n\t\tcase \"spaceMember\": return [];\n\t\tcase \"genericBlockValue\": return [];\n\t\tcase \"fieldAttributeName\":\n\t\tcase \"modelAttributeName\":\n\t\tcase \"blockAttributeName\": return provideAttributeNameCompletionItems(context, input.sourceFile, input.candidates, input.clientSupportsSnippets, input.clientSupportsTriggerParameterHintsCommand === true);\n\t\tcase \"fieldAttributeNamedKey\":\n\t\tcase \"modelAttributeNamedKey\":\n\t\tcase \"blockAttributeNamedKey\": {\n\t\t\tconst spec = attributeSpecResolver(context, input.candidates)(context.attributeName);\n\t\t\treturn spec === void 0 ? [] : provideAttributeNamedKeyCompletionItems({\n\t\t\t\tcontext,\n\t\t\t\tsourceFile: input.sourceFile,\n\t\t\t\tclientSupportsSnippets: input.clientSupportsSnippets,\n\t\t\t\tclientSupportsTriggerSuggestCommand: input.clientSupportsTriggerSuggestCommand === true\n\t\t\t}, spec);\n\t\t}\n\t\tcase \"fieldAttributeArgumentSlot\":\n\t\tcase \"modelAttributeArgumentSlot\":\n\t\tcase \"blockAttributeArgumentSlot\": {\n\t\t\tconst spec = attributeSpecResolver(context, input.candidates)(context.attributeName);\n\t\t\treturn spec === void 0 ? [] : provideAttributeArgumentSlotCompletionItems({\n\t\t\t\tcontext,\n\t\t\t\tsourceFile: input.sourceFile,\n\t\t\t\tclientSupportsSnippets: input.clientSupportsSnippets,\n\t\t\t\tclientSupportsTriggerSuggestCommand: input.clientSupportsTriggerSuggestCommand === true,\n\t\t\t\tclientSupportsTriggerParameterHintsCommand: input.clientSupportsTriggerParameterHintsCommand === true,\n\t\t\t\tfieldNames: (kind) => kind === \"fieldRef\" ? localFieldNames(context, input.candidates.symbolTable, input.candidates.scalarTypes, input.candidates.authoringContributions?.type) : referencedFieldNames(context, input.candidates.symbolTable, input.candidates.scalarTypes, input.candidates.authoringContributions?.type)\n\t\t\t}, spec);\n\t\t}\n\t\tcase \"fieldAttributeValue\":\n\t\tcase \"modelAttributeValue\":\n\t\tcase \"blockAttributeValue\": {\n\t\t\tconst spec = attributeSpecResolver(context, input.candidates)(context.attributeName);\n\t\t\treturn spec === void 0 ? [] : provideAttributeValueCompletionItems({\n\t\t\t\tcontext,\n\t\t\t\tsourceFile: input.sourceFile,\n\t\t\t\tclientSupportsSnippets: input.clientSupportsSnippets,\n\t\t\t\tclientSupportsTriggerParameterHintsCommand: input.clientSupportsTriggerParameterHintsCommand === true,\n\t\t\t\tfieldNames: (kind) => kind === \"fieldRef\" ? localFieldNames(context, input.candidates.symbolTable, input.candidates.scalarTypes, input.candidates.authoringContributions?.type) : referencedFieldNames(context, input.candidates.symbolTable, input.candidates.scalarTypes, input.candidates.authoringContributions?.type)\n\t\t\t}, spec);\n\t\t}\n\t\tcase \"declarationKeyword\": return provideDeclarationKeywordCompletionItems(context, input.sourceFile, input.candidates, input.clientSupportsSnippets);\n\t\tcase \"genericBlockKey\": return provideGenericBlockKeyCompletionItems(context, input.sourceFile, input.candidates);\n\t\tcase \"modelType\": return provideModelTypeCompletionItems(context, input.sourceFile, input.candidates);\n\t\tcase \"namespaceMember\": return provideNamespaceMemberCompletionItems(context, input.sourceFile, input.candidates);\n\t}\n}\nfunction provideAttributeNameCompletionItems(context, sourceFile, source, clientSupportsSnippets, clientSupportsTriggerParameterHintsCommand) {\n\tconst names = attributeNames(context, source);\n\tconst replacementRange = {\n\t\tstart: sourceFile.positionAt(context.replacementStartOffset),\n\t\tend: sourceFile.positionAt(context.replacementEndOffset)\n\t};\n\tconst resolveSpec = attributeSpecResolver(context, source);\n\treturn names.map((name) => {\n\t\tconst spec = resolveSpec(name);\n\t\tconst newText = attributeNameEditText({\n\t\t\tname,\n\t\t\tspec,\n\t\t\thasArgumentList: context.hasArgumentList,\n\t\t\tclientSupportsSnippets\n\t\t});\n\t\treturn {\n\t\t\tlabel: name,\n\t\t\tkind: CompletionItemKind.Function,\n\t\t\tdetail: spec?.documentation || \"PSL attribute\",\n\t\t\tsortText: name,\n\t\t\tfilterText: name,\n\t\t\ttextEdit: {\n\t\t\t\trange: replacementRange,\n\t\t\t\tnewText\n\t\t\t},\n\t\t\t...newText !== name ? { insertTextFormat: InsertTextFormat.Snippet } : {},\n\t\t\t...newText !== name && clientSupportsTriggerParameterHintsCommand ? { command: {\n\t\t\t\ttitle: \"Show argument hints\",\n\t\t\t\tcommand: \"editor.action.triggerParameterHints\"\n\t\t\t} } : {}\n\t\t};\n\t});\n}\nfunction attributeNames(context, source) {\n\tswitch (context.kind) {\n\t\tcase \"blockAttributeName\": {\n\t\t\tconst descriptor = findBlockDescriptor(source.pslBlockDescriptors, context.blockKeyword);\n\t\t\treturn sortedUnique(Object.keys(descriptor?.attributes ?? {}));\n\t\t}\n\t\tcase \"fieldAttributeName\":\n\t\t\tif (source.authoringContributions === void 0) return [];\n\t\t\treturn sortedUnique(Object.keys(assembleAttributeSpecs(source.authoringContributions).field));\n\t\tcase \"modelAttributeName\":\n\t\t\tif (source.authoringContributions === void 0) return [];\n\t\t\treturn sortedUnique(Object.keys(assembleAttributeSpecs(source.authoringContributions).model));\n\t}\n}\nfunction attributeNameEditText(input) {\n\tif (!input.clientSupportsSnippets || input.spec === void 0 || input.hasArgumentList) return input.name;\n\tconst required = requiredArgumentsSnippet(input.spec);\n\treturn required.length === 0 ? input.name : `${input.name}(${required})`;\n}\nfunction provideDeclarationKeywordCompletionItems(context, sourceFile, source, clientSupportsSnippets) {\n\tconst replacementRange = {\n\t\tstart: sourceFile.positionAt(context.replacementStartOffset),\n\t\tend: sourceFile.positionAt(context.offset)\n\t};\n\treturn declarationKeywordCandidates(context.scope, source).map((candidate) => ({\n\t\tlabel: candidate.label,\n\t\tkind: candidate.kind,\n\t\tdetail: candidate.detail,\n\t\tsortText: declarationKeywordSortText(candidate),\n\t\tfilterText: candidate.label,\n\t\t...clientSupportsSnippets ? { insertTextFormat: InsertTextFormat.Snippet } : {},\n\t\ttextEdit: {\n\t\t\trange: replacementRange,\n\t\t\tnewText: clientSupportsSnippets ? candidate.snippetText : candidate.insertText\n\t\t}\n\t}));\n}\nfunction declarationKeywordCandidates(scope, source) {\n\treturn [...scope === \"namespace\" ? namespaceNativeDeclarationKeywords : documentNativeDeclarationKeywords, ...genericBlockDeclarationKeywordCandidates(source.pslBlockDescriptors)];\n}\nfunction nativeDeclarationKeyword(label, insertText, snippetText, documentation) {\n\treturn {\n\t\tcategory: \"native\",\n\t\tlabel,\n\t\tinsertText,\n\t\tsnippetText,\n\t\tdetail: documentation,\n\t\tkind: CompletionItemKind.Keyword\n\t};\n}\nfunction genericBlockDeclarationKeywordCandidates(descriptors) {\n\treturn descriptorBlockKeywords(descriptors).map((keyword) => {\n\t\tconst descriptor = findBlockDescriptor(descriptors, keyword);\n\t\treturn {\n\t\t\tcategory: \"genericBlock\",\n\t\t\tlabel: keyword,\n\t\t\tinsertText: `${keyword} `,\n\t\t\tsnippetText: genericBlockSnippet(keyword, descriptor),\n\t\t\tdetail: descriptor?.documentation || \"Generic block keyword\",\n\t\t\tkind: CompletionItemKind.Keyword\n\t\t};\n\t});\n}\nfunction genericBlockSnippet(keyword, descriptor) {\n\tconst parameters = Object.entries(descriptor?.parameters ?? {}).filter(([, parameter]) => parameter.required === true).map(([name, parameter], index) => {\n\t\tconst placeholder = `\\${${index + 2}:${name}}`;\n\t\treturn ` ${name} = ${parameter.kind === \"list\" ? `[${placeholder}]` : placeholder}`;\n\t});\n\tconst cursor = parameters.length === 0 ? \"${0:// Block parameters and attributes}\" : \"$0\";\n\treturn [\n\t\t`${keyword} ${nameSnippetPlaceholder} {`,\n\t\t...parameters,\n\t\t` ${cursor}`,\n\t\t\"}\"\n\t].join(\"\\n\");\n}\nfunction descriptorBlockKeywords(descriptors) {\n\tconst keywords = [];\n\tcollectDescriptorBlockKeywords(descriptors, keywords);\n\treturn sortedUnique(keywords);\n}\nfunction collectDescriptorBlockKeywords(descriptors, keywords) {\n\tfor (const value of Object.values(descriptors)) {\n\t\tif (isAuthoringPslBlockDescriptor(value)) {\n\t\t\tkeywords.push(value.keyword);\n\t\t\tcontinue;\n\t\t}\n\t\tcollectDescriptorBlockKeywords(value, keywords);\n\t}\n}\nfunction declarationKeywordSortText(candidate) {\n\treturn `${declarationKeywordCategoryOrder[candidate.category]}:${candidate.label}`;\n}\nfunction provideGenericBlockKeyCompletionItems(context, sourceFile, source) {\n\tconst descriptor = findBlockDescriptor(source.pslBlockDescriptors, context.blockKeyword);\n\tif (descriptor === void 0) return [];\n\tconst existing = existingGenericBlockParameterNames(context.block, context.offset);\n\tconst replacementRange = {\n\t\tstart: sourceFile.positionAt(context.replacementStartOffset),\n\t\tend: sourceFile.positionAt(context.offset)\n\t};\n\treturn Object.keys(descriptor.parameters).filter((parameterName) => !existing.has(parameterName)).map((parameterName, index) => ({\n\t\tlabel: parameterName,\n\t\tkind: CompletionItemKind.Property,\n\t\tdetail: descriptor.parameters[parameterName]?.documentation || \"Generic block parameter\",\n\t\tsortText: genericBlockParameterSortText(index, parameterName),\n\t\tfilterText: parameterName,\n\t\ttextEdit: {\n\t\t\trange: replacementRange,\n\t\t\tnewText: parameterName\n\t\t}\n\t}));\n}\nfunction existingGenericBlockParameterNames(block, cursorOffset) {\n\tconst names = /* @__PURE__ */ new Set();\n\tfor (const entry of block.entries()) {\n\t\tif (!entry.syntax.isOutside(cursorOffset)) continue;\n\t\tconst name = entry.key()?.name();\n\t\tif (name !== void 0) names.add(name);\n\t}\n\treturn names;\n}\nfunction provideModelTypeCompletionItems(context, sourceFile, source) {\n\treturn modelTypeCompletionItems(context, sourceFile, [\n\t\t...configuredScalarCandidates(source),\n\t\t...topLevelSymbolCandidates(source.symbolTable, source.scalarTypes),\n\t\t...allNamespaceCandidates(source.symbolTable)\n\t]);\n}\nfunction provideNamespaceMemberCompletionItems(context, sourceFile, source) {\n\tif (context.space !== void 0) return [];\n\treturn modelTypeCompletionItems(context, sourceFile, namespaceCandidates(source.symbolTable.topLevel.namespaces[context.namespace]));\n}\nfunction modelTypeCompletionItems(context, sourceFile, candidates) {\n\tconst replacementRange = {\n\t\tstart: sourceFile.positionAt(context.replacementStartOffset),\n\t\tend: sourceFile.positionAt(context.offset)\n\t};\n\treturn candidates.map((candidate) => ({\n\t\tlabel: candidate.label,\n\t\tkind: candidate.kind,\n\t\tdetail: candidate.detail,\n\t\tsortText: sortText(candidate),\n\t\tfilterText: candidate.filterText,\n\t\ttextEdit: {\n\t\t\trange: replacementRange,\n\t\t\tnewText: candidate.insertText\n\t\t}\n\t}));\n}\nfunction configuredScalarCandidates(source) {\n\tconst constructors = source.authoringContributions?.type ?? {};\n\treturn sortedUnique(source.scalarTypes).map((name) => ({\n\t\tcategory: \"configuredScalar\",\n\t\tlabel: name,\n\t\tinsertText: name,\n\t\tfilterText: name,\n\t\tdetail: constructors[name] !== void 0 && isAuthoringTypeConstructorDescriptor(constructors[name]) ? constructors[name].documentation || \"Configured scalar type\" : \"Configured scalar type\",\n\t\tkind: CompletionItemKind.Keyword\n\t}));\n}\nfunction topLevelSymbolCandidates(symbolTable, scalarTypes) {\n\tconst { topLevel } = symbolTable;\n\tconst namedTypes = Object.values(topLevel.namedTypes);\n\tconst scalarRefinementNames = namedTypes.filter((symbol) => refinesScalarType(symbol, scalarTypes)).map((symbol) => symbol.name).sort(compareNames);\n\tconst aliasNames = namedTypes.filter((symbol) => !refinesScalarType(symbol, scalarTypes)).map((symbol) => symbol.name).sort(compareNames);\n\treturn [\n\t\t...symbolCandidates(recordNames(topLevel.models), \"topLevelModel\", \"Model\", CompletionItemKind.Class),\n\t\t...symbolCandidates(recordNames(topLevel.compositeTypes), \"topLevelCompositeType\", \"Composite type\", CompletionItemKind.Struct),\n\t\t...symbolCandidates(scalarRefinementNames, \"scalar\", \"Scalar type\", CompletionItemKind.Unit),\n\t\t...symbolCandidates(aliasNames, \"typeAlias\", \"Type alias\", CompletionItemKind.Reference)\n\t];\n}\nfunction allNamespaceCandidates(symbolTable) {\n\treturn Object.values(symbolTable.topLevel.namespaces).sort((left, right) => compareNames(left.name, right.name)).map(namespaceQualifierCandidate);\n}\nfunction namespaceCandidates(namespace) {\n\tif (namespace === void 0) return [];\n\treturn [...symbolCandidates(recordNames(namespace.models), \"namespaceModel\", `Model in namespace ${namespace.name}`, CompletionItemKind.Class), ...symbolCandidates(recordNames(namespace.compositeTypes), \"namespaceCompositeType\", `Composite type in namespace ${namespace.name}`, CompletionItemKind.Struct)];\n}\nfunction namespaceQualifierCandidate(namespace) {\n\treturn {\n\t\tcategory: \"namespace\",\n\t\tlabel: namespace.name,\n\t\tinsertText: namespace.name,\n\t\tfilterText: namespace.name,\n\t\tdetail: \"Namespace\",\n\t\tkind: CompletionItemKind.Module\n\t};\n}\nfunction symbolCandidates(names, category, detail, kind) {\n\treturn names.map((name) => ({\n\t\tcategory,\n\t\tlabel: name,\n\t\tinsertText: name,\n\t\tfilterText: name,\n\t\tdetail,\n\t\tkind\n\t}));\n}\nfunction recordNames(record) {\n\treturn Object.values(record).map((symbol) => symbol.name).sort(compareNames);\n}\nfunction sortedUnique(names) {\n\treturn [...new Set(names)].sort(compareNames);\n}\nfunction sortText(candidate) {\n\treturn `${categoryOrder[candidate.category]}:${candidate.label}`;\n}\nfunction genericBlockParameterSortText(index, label) {\n\treturn `${index.toString().padStart(4, \"0\")}:${label}`;\n}\nfunction compareNames(left, right) {\n\tif (left < right) return -1;\n\tif (left > right) return 1;\n\treturn 0;\n}\n//#endregion\n//#region src/schema-inputs.ts\nfunction hasPslInputs(config) {\n\tconst source = config.contract?.source;\n\treturn source?.format === \"psl\" && source.inputs !== void 0;\n}\nfunction resolveSchemaInputs(config) {\n\tconst uris = (hasPslInputs(config) ? config.contract?.source.inputs : void 0)?.map(configuredInputUri) ?? [];\n\tconst identities = new Set(uris.map(canonicalFileIdentity));\n\treturn {\n\t\tincludes: (uri) => identities.has(canonicalFileIdentity(uri)),\n\t\turis: () => uris\n\t};\n}\nfunction configuredInputUri(input) {\n\tif (isFileUri(input)) return input;\n\treturn pathToFileURL(input, { windows: isWindowsPlatform() }).toString();\n}\nfunction isFileUri(input) {\n\ttry {\n\t\treturn new URL(input).protocol === \"file:\";\n\t} catch {\n\t\treturn false;\n\t}\n}\nfunction canonicalFileIdentity(uri) {\n\tlet url;\n\ttry {\n\t\turl = new URL(uri);\n\t} catch {\n\t\treturn uri;\n\t}\n\tif (url.protocol !== \"file:\") return uri;\n\ttry {\n\t\tconst windows = isWindowsPlatform();\n\t\tconst filePath = normalize(fileURLToPath(url, { windows }));\n\t\treturn windows ? filePath.toLowerCase() : filePath;\n\t} catch {\n\t\treturn uri;\n\t}\n}\nfunction isWindowsPlatform() {\n\treturn process.platform === \"win32\";\n}\n//#endregion\n//#region src/config-resolution.ts\nconst CONFIG_FILENAME = \"prisma.config.ts\";\nconst emptyPipelineInputs = {\n\tscalarTypes: [],\n\tpslBlockDescriptors: {}\n};\nasync function resolveConfigInputs(configPath) {\n\tconst loaded = await loadConfig(configPath);\n\tif (!loaded.ok) throw loaded.failure;\n\tconst projectSections = requireConfigSections(loaded.value, [\"contract\", \"formatter\"]);\n\tif (!projectSections.ok) throw projectSections.failure;\n\tconst config = projectSections.value;\n\tconst inputs = resolveSchemaInputs(config);\n\tif (!hasPslInputs(config)) return {\n\t\tinputs,\n\t\tcontrolStack: emptyPipelineInputs,\n\t\t...config.formatter === void 0 ? {} : { formatter: config.formatter }\n\t};\n\tconst controlSections = requireConfigSections(loaded.value, [\n\t\t\"family\",\n\t\t\"target\",\n\t\t\"adapter\",\n\t\t\"driver\",\n\t\t\"extensions\"\n\t]);\n\tif (!controlSections.ok) throw controlSections.failure;\n\tconst stack = createControlStack(config);\n\tconst interpretation = resolveInterpretation(config, stack, inputs);\n\treturn {\n\t\tinputs,\n\t\tcontrolStack: pipelineInputsFromStack(stack),\n\t\t...config.formatter === void 0 ? {} : { formatter: config.formatter },\n\t\t...interpretation === void 0 ? {} : { interpretation }\n\t};\n}\nfunction pipelineInputsFromStack(stack) {\n\treturn {\n\t\tscalarTypes: [...stack.scalarTypes],\n\t\tpslBlockDescriptors: stack.authoringContributions.pslBlockDescriptors,\n\t\tauthoringContributions: stack.authoringContributions,\n\t\t...stack.controlMutationDefaults === void 0 ? {} : { controlMutationDefaults: stack.controlMutationDefaults }\n\t};\n}\nfunction resolveInterpretation(config, stack, inputs) {\n\tconst source = config.contract?.source;\n\tif (source === void 0 || !hasPslInterpreter(source)) return;\n\treturn {\n\t\tsource,\n\t\tcontext: {\n\t\t\tcomposedExtensions: stack.extensions.map((p) => p.id),\n\t\t\tcomposedExtensionContracts: stack.extensionContracts,\n\t\t\tauthoringContributions: stack.authoringContributions,\n\t\t\tcodecLookup: stack.codecLookup,\n\t\t\tcontrolMutationDefaults: stack.controlMutationDefaults,\n\t\t\tresolvedInputs: [...inputs.uris()],\n\t\t\tcapabilities: stack.capabilities\n\t\t}\n\t};\n}\n//#endregion\n//#region src/folding-ranges.ts\n/**\n* Computes folding ranges for block declarations in a PSL document.\n*\n* Block types that produce folding ranges:\n* - model (e.g., `model User { ... }`)\n* - composite type (e.g., `type Address { ... }`)\n* - namespace (e.g., `namespace billing { ... }`)\n* - generic blocks (generator, datasource, extension blocks)\n* - types block (e.g., `types { ... }`)\n*\n* The range spans from the line containing `{` to the line containing `}`.\n*/\nfunction computeFoldingRanges(document, sourceFile) {\n\tconst ranges = [];\n\tcollectFoldingRanges(document, sourceFile, ranges);\n\treturn ranges;\n}\nfunction collectFoldingRanges(document, sourceFile, ranges) {\n\tfor (const declaration of document.declarations()) {\n\t\taddFoldingRange(declaration, sourceFile, ranges);\n\t\tconst namespace = NamespaceDeclarationAst.cast(declaration.syntax);\n\t\tif (namespace !== void 0) for (const nested of namespace.declarations()) addFoldingRange(nested, sourceFile, ranges);\n\t}\n}\nfunction addFoldingRange(declaration, sourceFile, ranges) {\n\tconst lbrace = declaration.lbrace();\n\tconst rbrace = declaration.rbrace();\n\tif (lbrace === void 0 || rbrace === void 0) return;\n\tconst startLine = sourceFile.positionAt(lbrace.offset).line;\n\tconst endLine = sourceFile.positionAt(rbrace.offset).line;\n\tranges.push({\n\t\tstartLine,\n\t\tendLine,\n\t\tkind: FoldingRangeKind.Region\n\t});\n}\n//#endregion\n//#region src/guarded-connection.ts\n/**\n* Wraps a connection so that an outbound call the client is no longer there to\n* receive does nothing, instead of throwing at whoever made it.\n*\n* `vscode-jsonrpc` marks the connection closed the moment the input stream\n* ends, and every send after that throws synchronously. A throw that escapes a\n* notification handler ends the process: jsonrpc reports it through its logger,\n* which is the connection's own remote console, so the report is another send —\n* it throws again inside a `.catch()`, and the unhandled rejection is fatal.\n*\n* The wrapper carries the check so no individual send site has to: reads walk\n* the connection's features (`console`, `languages`, …) and hand back guarded\n* functions, so a send added later is guarded by construction. Only the\n* connection's departure is swallowed — any other synchronous failure is a bug\n* in the caller and still reaches it.\n*/\nfunction guardedConnection(connection) {\n\treturn guardCalls(connection);\n}\nfunction guardCalls(target) {\n\tconst guarded = /* @__PURE__ */ new Map();\n\treturn new Proxy(target, { get: (source, property) => {\n\t\tconst cached = guarded.get(property);\n\t\tif (cached !== void 0) return cached;\n\t\tconst value = Reflect.get(source, property);\n\t\tif (typeof value === \"function\") {\n\t\t\tconst call = (...args) => whileConnected(() => Reflect.apply(value, source, args));\n\t\t\tguarded.set(property, call);\n\t\t\treturn call;\n\t\t}\n\t\tif (typeof value === \"object\" && value !== null) {\n\t\t\tconst feature = guardCalls(value);\n\t\t\tguarded.set(property, feature);\n\t\t\treturn feature;\n\t\t}\n\t\treturn value;\n\t} });\n}\n/**\n* Whether an error says the connection is gone.\n*\n* The identity check is the fast path. It misses when the error comes from a\n* second copy of `vscode-jsonrpc` in the dependency tree, whose\n* `ConnectionError` is a different class carrying the same shape, so the code\n* is what decides: `Closed`, `Disposed` and `AlreadyListening` are the whole\n* range, and no other error jsonrpc throws carries a numeric `code` in it.\n*/\nfunction isConnectionGone(error) {\n\tif (error instanceof ConnectionError) return true;\n\tif (!(error instanceof Error) || !(\"code\" in error)) return false;\n\tconst { code } = error;\n\treturn code === ConnectionErrors.Closed || code === ConnectionErrors.Disposed || code === ConnectionErrors.AlreadyListening;\n}\nfunction whileConnected(send) {\n\tlet sent;\n\ttry {\n\t\tsent = send();\n\t} catch (error) {\n\t\tif (isConnectionGone(error)) return Promise.resolve(void 0);\n\t\tthrow error;\n\t}\n\treturn isThenable(sent) ? sent.then(void 0, () => void 0) : sent;\n}\nfunction isThenable(value) {\n\treturn typeof value === \"object\" && value !== null && \"then\" in value && typeof Reflect.get(value, \"then\") === \"function\";\n}\n//#endregion\n//#region src/pipeline.ts\n/**\n* Composes the stages exactly as the contract-psl provider does, so the editor\n* and the build agree: `parse` then `buildSymbolTable`, parse diagnostics ahead\n* of symbol-table diagnostics. Never throws on malformed input — `parse`\n* recovers and `buildSymbolTable` is documented not to throw.\n*/\nfunction runPipeline(text, inputs) {\n\tconst { document, sourceFile, diagnostics: parseDiagnostics } = parse(text);\n\tconst { table: symbolTable, diagnostics: symbolTableDiagnostics } = buildSymbolTable({\n\t\tdocument,\n\t\tsourceFile,\n\t\tpslBlockDescriptors: inputs.pslBlockDescriptors\n\t});\n\treturn {\n\t\tdocument,\n\t\tsourceFile,\n\t\tsymbolTable,\n\t\tdiagnostics: mapParseDiagnostics([...parseDiagnostics, ...symbolTableDiagnostics])\n\t};\n}\n//#endregion\n//#region src/schema-directive.ts\nconst DIRECTIVE = /^(\\s*\\/\\/ *use +)(prisma-8|prisma-next)( *)(?!\\S)/;\nconst LEGACY_NAME = \"prisma-next\";\nfunction isPrismaNextSchema(text) {\n\treturn DIRECTIVE.test(text);\n}\n/** The document with the directive earlier releases wrote replaced by the current one. */\nfunction renameLegacyDirective(text) {\n\treturn text.replace(DIRECTIVE, (whole, lead, name, trail) => name === LEGACY_NAME ? `${lead}prisma-8${trail}` : whole);\n}\n//#endregion\n//#region src/document-diagnostics.ts\n/**\n* `null` (not a configured input) is distinct from a `DocumentDiagnostics` whose\n* `diagnostics` are `[]` (an input that parsed clean): the caller treats both as\n* \"publish no diagnostics\", but only the latter is a document we own and keep\n* diagnosing.\n*/\nfunction computeDocumentDiagnostics(uri, text, inputs, controlStack) {\n\tif (!inputs.includes(uri) || !isPrismaNextSchema(text)) return null;\n\tconst { document, sourceFile, symbolTable, diagnostics } = runPipeline(text, controlStack);\n\treturn {\n\t\tdiagnostics,\n\t\tdocument,\n\t\tsourceFile,\n\t\tsymbolTable\n\t};\n}\n//#endregion\n//#region src/project-artifacts.ts\nfunction createProjectArtifacts(options) {\n\tconst { inputs, controlStack, getText, interpretation } = options;\n\tconst documents = /* @__PURE__ */ new Map();\n\tlet symbolTable;\n\tfunction createInterpretSlot(uri, computed) {\n\t\tif (interpretation === void 0) return () => [];\n\t\tlet memo;\n\t\tconst interpretDiagnostics = () => {\n\t\t\tif (memo === void 0) {\n\t\t\t\tconst result = interpretation.source.interpret({\n\t\t\t\t\tdocument: computed.document,\n\t\t\t\t\tsourceFile: computed.sourceFile,\n\t\t\t\t\tsymbolTable: computed.symbolTable,\n\t\t\t\t\tsourceId: uri\n\t\t\t\t}, interpretation.context);\n\t\t\t\tmemo = mapInterpreterDiagnostics(result.ok ? [] : result.failure.diagnostics, computed.sourceFile);\n\t\t\t}\n\t\t\treturn memo;\n\t\t};\n\t\treturn () => {\n\t\t\ttry {\n\t\t\t\treturn interpretDiagnostics();\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof ResponseError && (error.code === LSPErrorCodes.RequestCancelled || error.code === LSPErrorCodes.ServerCancelled || error.code === LSPErrorCodes.ContentModified)) throw error;\n\t\t\t\toptions.onInterpretationError(uri, error);\n\t\t\t\treturn [{\n\t\t\t\t\trange: {\n\t\t\t\t\t\tstart: {\n\t\t\t\t\t\t\tline: 0,\n\t\t\t\t\t\t\tcharacter: 0\n\t\t\t\t\t\t},\n\t\t\t\t\t\tend: {\n\t\t\t\t\t\t\tline: 0,\n\t\t\t\t\t\t\tcharacter: 1\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tcode: \"PRISMA_NEXT_INTERPRETATION_FAILED\",\n\t\t\t\t\tmessage: \"Semantic diagnostics are unavailable because of an internal error. A subsequent diagnostic request or edit will retry.\",\n\t\t\t\t\tseverity: ParseDiagnosticSeverity.Error\n\t\t\t\t}];\n\t\t\t}\n\t\t};\n\t}\n\tfunction drop(uri) {\n\t\tif (documents.delete(uri)) symbolTable = void 0;\n\t}\n\tfunction readDocument(uri) {\n\t\tconst existing = documents.get(uri);\n\t\tif (existing !== void 0) return existing;\n\t\tconst text = getText(uri);\n\t\tif (text === void 0) return;\n\t\tconst computed = computeDocumentDiagnostics(uri, text, inputs, controlStack);\n\t\tif (computed === null) return;\n\t\tconst artifacts = {\n\t\t\tdocument: computed.document,\n\t\t\tsourceFile: computed.sourceFile,\n\t\t\tdiagnostics: computed.diagnostics,\n\t\t\tinterpretDiagnostics: createInterpretSlot(uri, computed)\n\t\t};\n\t\tdocuments.set(uri, artifacts);\n\t\tsymbolTable = computed.symbolTable;\n\t\treturn artifacts;\n\t}\n\treturn {\n\t\tdocument: readDocument,\n\t\tsymbolTable: () => {\n\t\t\tif (symbolTable !== void 0) return symbolTable;\n\t\t\tfor (const uri of inputs.uris()) {\n\t\t\t\tconst artifacts = readDocument(uri);\n\t\t\t\tif (artifacts === void 0) continue;\n\t\t\t\tsymbolTable ??= buildSymbolTable({\n\t\t\t\t\tdocument: artifacts.document,\n\t\t\t\t\tsourceFile: artifacts.sourceFile,\n\t\t\t\t\tpslBlockDescriptors: controlStack.pslBlockDescriptors\n\t\t\t\t}).table;\n\t\t\t\treturn symbolTable;\n\t\t\t}\n\t\t\tthrow new InternalError(\"invariant violated: project has no readable configured input — callers must check document artifacts first\");\n\t\t},\n\t\tdocumentChanged: drop,\n\t\tdocumentClosed: drop\n\t};\n}\n//#endregion\n//#region src/semantic-tokens.ts\nconst semanticTokenTypes = [\n\tSemanticTokenTypes.keyword,\n\tSemanticTokenTypes.namespace,\n\tSemanticTokenTypes.class,\n\tSemanticTokenTypes.struct,\n\tSemanticTokenTypes.type,\n\tSemanticTokenTypes.property,\n\tSemanticTokenTypes.decorator,\n\tSemanticTokenTypes.string,\n\tSemanticTokenTypes.number,\n\tSemanticTokenTypes.comment\n];\nconst semanticTokenModifiers = [SemanticTokenModifiers.declaration, SemanticTokenModifiers.defaultLibrary];\nconst semanticTokenModifierIndexes = {\n\tdeclaration: 0,\n\tdefaultLibrary: 1\n};\nconst semanticTokenModifierBits = {\n\tdeclaration: 1 << semanticTokenModifierIndexes.declaration,\n\tdefaultLibrary: 1 << semanticTokenModifierIndexes.defaultLibrary\n};\nconst semanticTokensLegend = {\n\ttokenTypes: [...semanticTokenTypes],\n\ttokenModifiers: [...semanticTokenModifiers]\n};\nfunction buildSemanticTokens(source, range) {\n\tconst builder = new SemanticTokensBuilder(source.sourceFile, range);\n\tfor (const token of collectSemanticTokenEvents(source)) builder.add(token);\n\treturn builder.build();\n}\nfunction collectSemanticTokenEvents(source) {\n\tconst comments = collectCommentTokens(source.document);\n\tconst tokens = [];\n\tcollectDeclarations(source, tokens);\n\treturn mergeSourceOrderedTokens(comments, tokens);\n}\nvar SemanticTokensBuilder = class {\n\t#data = [];\n\t#sourceFile;\n\t#rangeOffsets;\n\t#previousLine = 0;\n\t#previousCharacter = 0;\n\t#first = true;\n\tconstructor(sourceFile, range) {\n\t\tthis.#sourceFile = sourceFile;\n\t\tif (range !== void 0) {\n\t\t\tconst startOffset = sourceFile.offsetAt(range.start);\n\t\t\tconst endOffset = sourceFile.offsetAt(range.end);\n\t\t\tthis.#rangeOffsets = {\n\t\t\t\tlower: Math.min(startOffset, endOffset),\n\t\t\t\tupper: Math.max(startOffset, endOffset)\n\t\t\t};\n\t\t}\n\t}\n\tadd(token) {\n\t\tif (!this.#intersectsRange(token.startOffset, token.endOffset)) return;\n\t\tif (token.splitMultiline) {\n\t\t\tthis.#addMultilineSplitToken(token);\n\t\t\treturn;\n\t\t}\n\t\tthis.#encode(token.startOffset, token.endOffset, token.tokenTypeIndex, token.modifierBitset);\n\t}\n\tbuild() {\n\t\treturn { data: this.#data };\n\t}\n\t#intersectsRange(startOffset, endOffset) {\n\t\tconst rangeOffsets = this.#rangeOffsets;\n\t\treturn rangeOffsets === void 0 || startOffset < rangeOffsets.upper && endOffset > rangeOffsets.lower;\n\t}\n\t#addMultilineSplitToken(token) {\n\t\tconst start = this.#sourceFile.positionAt(token.startOffset);\n\t\tconst end = this.#sourceFile.positionAt(token.endOffset);\n\t\tif (start.line === end.line) {\n\t\t\tthis.#encode(token.startOffset, token.endOffset, token.tokenTypeIndex, token.modifierBitset);\n\t\t\treturn;\n\t\t}\n\t\tfor (let line = start.line; line <= end.line; line++) {\n\t\t\tconst startOffset = line === start.line ? token.startOffset : this.#sourceFile.lineStartOffset(line);\n\t\t\tconst endOffset = line === end.line ? token.endOffset : this.#sourceFile.lineEndOffset(line);\n\t\t\tif (endOffset > startOffset && this.#intersectsRange(startOffset, endOffset)) this.#encode(startOffset, endOffset, token.tokenTypeIndex, token.modifierBitset);\n\t\t}\n\t}\n\t#encode(startOffset, endOffset, tokenTypeIndex, modifierBitset) {\n\t\tconst start = this.#sourceFile.positionAt(startOffset);\n\t\tconst deltaLine = this.#first ? start.line : start.line - this.#previousLine;\n\t\tconst deltaStart = this.#first || deltaLine !== 0 ? start.character : start.character - this.#previousCharacter;\n\t\tthis.#data.push(deltaLine, deltaStart, endOffset - startOffset, tokenTypeIndex, modifierBitset);\n\t\tthis.#previousLine = start.line;\n\t\tthis.#previousCharacter = start.character;\n\t\tthis.#first = false;\n\t}\n};\nfunction collectCommentTokens(document) {\n\tconst tokens = [];\n\tfor (const token of document.syntax.tokens()) if (token.kind === \"Comment\") tokens.push(pendingTokenForToken(token, \"comment\"));\n\treturn tokens;\n}\nfunction collectDeclarations(source, tokens) {\n\tfor (const declaration of source.document.declarations()) collectDeclaration(declaration, source, tokens, void 0);\n}\nfunction collectDeclaration(declaration, source, tokens, namespace) {\n\tif (declaration instanceof ModelDeclarationAst) {\n\t\taddToken(declaration.keyword(), \"keyword\", tokens);\n\t\taddIdentifier(declaration.name(), \"class\", tokens, semanticTokenModifierBits.declaration);\n\t\tcollectBlockMembers(declaration.members(), source, tokens, namespace);\n\t\treturn;\n\t}\n\tif (declaration instanceof CompositeTypeDeclarationAst) {\n\t\taddToken(declaration.keyword(), \"keyword\", tokens);\n\t\taddIdentifier(declaration.name(), \"struct\", tokens, semanticTokenModifierBits.declaration);\n\t\tcollectBlockMembers(declaration.members(), source, tokens, namespace);\n\t\treturn;\n\t}\n\tif (declaration instanceof NamespaceDeclarationAst) {\n\t\taddToken(declaration.keyword(), \"keyword\", tokens);\n\t\taddIdentifier(declaration.name(), \"namespace\", tokens, semanticTokenModifierBits.declaration);\n\t\tconst nestedNamespace = declaration.name()?.name();\n\t\tfor (const nested of declaration.declarations()) collectDeclaration(nested, source, tokens, nestedNamespace);\n\t\treturn;\n\t}\n\tif (declaration instanceof TypesBlockAst) {\n\t\taddToken(declaration.keyword(), \"keyword\", tokens);\n\t\tfor (const namedType of declaration.declarations()) collectNamedTypeDeclaration(namedType, source, tokens, namespace);\n\t\treturn;\n\t}\n\taddToken(declaration.keyword(), \"keyword\", tokens);\n\taddIdentifier(declaration.name(), \"type\", tokens, semanticTokenModifierBits.declaration);\n\tcollectGenericBlockMembers(declaration.members(), source, tokens, namespace);\n}\nfunction collectNamedTypeDeclaration(declaration, source, tokens, namespace) {\n\taddIdentifier(declaration.name(), \"type\", tokens, semanticTokenModifierBits.declaration);\n\tcollectTypeAnnotation(declaration.typeAnnotation(), source, tokens, namespace);\n\tcollectAttributes(declaration.attributes(), source, tokens, namespace);\n}\nfunction collectGenericBlockMembers(members, source, tokens, namespace) {\n\tfor (const member of members) {\n\t\tif (\"key\" in member) {\n\t\t\taddIdentifier(member.key(), \"property\", tokens);\n\t\t\tcollectExpression(member.value(), source, tokens, namespace);\n\t\t\tcontinue;\n\t\t}\n\t\tcollectAttribute(member, source, tokens, namespace);\n\t}\n}\nfunction collectBlockMembers(members, source, tokens, namespace) {\n\tfor (const member of members) {\n\t\tif (member instanceof FieldDeclarationAst) {\n\t\t\tcollectField(member, source, tokens, namespace);\n\t\t\tcontinue;\n\t\t}\n\t\tcollectAttribute(member, source, tokens, namespace);\n\t}\n}\nfunction collectField(field, source, tokens, namespace) {\n\taddIdentifier(field.name(), \"property\", tokens, semanticTokenModifierBits.declaration);\n\tcollectTypeAnnotation(field.typeAnnotation(), source, tokens, namespace);\n\tcollectAttributes(field.attributes(), source, tokens, namespace);\n}\nfunction collectTypeAnnotation(annotation, source, tokens, namespace) {\n\tif (annotation === void 0) return;\n\tcollectTypeReference(annotation.name(), source, tokens, namespace);\n\tcollectAttributeArgList(annotation.argList(), source, tokens, namespace);\n}\nfunction collectAttributes(attributes, source, tokens, namespace) {\n\tfor (const attribute of attributes) collectAttribute(attribute, source, tokens, namespace);\n}\nfunction collectAttribute(attribute, source, tokens, namespace) {\n\tconst marker = findChildToken(attribute.syntax, \"At\") ?? findChildToken(attribute.syntax, \"DoubleAt\");\n\tcollectDecoratorName(attribute.name(), marker, tokens);\n\tcollectAttributeArgList(attribute.argList(), source, tokens, namespace);\n}\nfunction collectDecoratorName(name, marker, tokens) {\n\tif (name === void 0) return;\n\tconst segments = identifierSegments(name);\n\tfor (const [index, segment] of segments.entries()) tokens.push(rangeForDecoratorIdentifier(segment.identifier, index === 0 ? marker : void 0));\n}\nfunction collectAttributeArgList(argList, source, tokens, namespace) {\n\tif (argList === void 0) return;\n\tfor (const arg of argList.args()) collectAttributeArg(arg, source, tokens, namespace);\n}\nfunction collectAttributeArg(arg, source, tokens, namespace) {\n\tconst name = arg.name();\n\taddIdentifier(name, \"property\", tokens);\n\tcollectExpression(arg.value(), source, tokens, namespace, expressionContextForAttributeArg(name));\n}\nfunction collectExpression(expression, source, tokens, namespace, context = {}) {\n\tif (expression === void 0) return;\n\tif (expression instanceof StringLiteralExprAst) {\n\t\taddToken(expression.token(), \"string\", tokens);\n\t\treturn;\n\t}\n\tif (expression instanceof NumberLiteralExprAst) {\n\t\taddToken(expression.token(), \"number\", tokens);\n\t\treturn;\n\t}\n\tif (expression instanceof BooleanLiteralExprAst) {\n\t\taddToken(expression.token(), \"keyword\", tokens);\n\t\treturn;\n\t}\n\tif (expression instanceof FunctionCallAst) {\n\t\tcollectTypeReference(expression.name(), source, tokens, namespace);\n\t\tfor (const arg of expression.args()) collectAttributeArg(arg, source, tokens, namespace);\n\t\treturn;\n\t}\n\tif (expression instanceof ArrayLiteralAst) {\n\t\tfor (const element of expression.elements()) collectExpression(element, source, tokens, namespace, context);\n\t\treturn;\n\t}\n\tif (expression instanceof ObjectLiteralExprAst) {\n\t\tfor (const field of expression.fields()) {\n\t\t\taddIdentifier(field.key(), \"property\", tokens);\n\t\t\tcollectExpression(field.value(), source, tokens, namespace);\n\t\t}\n\t\treturn;\n\t}\n\tcollectIdentifierExpression(expression, source, tokens, namespace, context);\n}\nfunction collectIdentifierExpression(identifier, source, tokens, namespace, context) {\n\tconst text = identifier.name();\n\tif (text === void 0) return;\n\tconst bareIdentifierTokenType = context.bareIdentifierTokenType;\n\tif (bareIdentifierTokenType !== void 0) {\n\t\ttokens.push(rangeForIdentifier(identifier, bareIdentifierTokenType));\n\t\treturn;\n\t}\n\tconst classification = classifyTypeReference([text], source, namespace);\n\ttokens.push(rangeForIdentifier(identifier, classification.tokenType, classification.modifierBitset));\n}\nfunction expressionContextForAttributeArg(name) {\n\tconst argName = name?.name();\n\treturn argName === \"fields\" || argName === \"references\" ? { bareIdentifierTokenType: \"property\" } : {};\n}\nfunction collectTypeReference(name, source, tokens, namespace) {\n\tif (name === void 0) return;\n\tconst segments = identifierSegments(name);\n\tif (segments.length === 0) return;\n\tconst path = segments.map((segment) => segment.text);\n\tfor (const segment of segments.slice(0, -1)) if (isKnownNamespace(segment.text, source.symbolTable)) tokens.push(rangeForIdentifier(segment.identifier, \"namespace\"));\n\tconst finalSegment = segments[segments.length - 1];\n\tif (finalSegment === void 0) return;\n\tconst classification = classifyTypeReference(path, source, namespace);\n\ttokens.push(rangeForIdentifier(finalSegment.identifier, classification.tokenType, classification.modifierBitset));\n}\nfunction classifyTypeReference(path, source, namespace) {\n\tconst name = path[path.length - 1];\n\tif (name === void 0) return { tokenType: \"type\" };\n\tconst table = source.symbolTable;\n\tconst namespaceName = path.length > 1 ? path[path.length - 2] : namespace;\n\tconst namespaceScope = namespaceName !== void 0 ? table.topLevel.namespaces[namespaceName] : void 0;\n\tif (namespaceScope !== void 0) {\n\t\tif (Object.hasOwn(namespaceScope.models, name)) return { tokenType: \"class\" };\n\t\tif (Object.hasOwn(namespaceScope.compositeTypes, name)) return { tokenType: \"struct\" };\n\t\tif (Object.hasOwn(namespaceScope.blocks, name)) return { tokenType: \"type\" };\n\t}\n\tif (Object.hasOwn(table.topLevel.models, name)) return { tokenType: \"class\" };\n\tif (Object.hasOwn(table.topLevel.compositeTypes, name)) return { tokenType: \"struct\" };\n\tconst namedType = table.topLevel.namedTypes[name];\n\tif (namedType !== void 0) return refinesScalarType(namedType, source.scalarTypes) ? {\n\t\ttokenType: \"type\",\n\t\tmodifierBitset: semanticTokenModifierBits.defaultLibrary\n\t} : { tokenType: \"type\" };\n\tif (Object.hasOwn(table.topLevel.blocks, name)) return { tokenType: \"type\" };\n\tif (source.scalarTypes.includes(name)) return {\n\t\ttokenType: \"type\",\n\t\tmodifierBitset: semanticTokenModifierBits.defaultLibrary\n\t};\n\treturn { tokenType: \"type\" };\n}\nfunction isKnownNamespace(name, table) {\n\treturn Object.hasOwn(table.topLevel.namespaces, name);\n}\nfunction identifierSegments(name) {\n\tconst segments = [];\n\tfor (const identifier of filterChildren(name.syntax, IdentifierAst.cast)) {\n\t\tconst text = identifier.name();\n\t\tif (text !== void 0) segments.push({\n\t\t\tidentifier,\n\t\t\ttext\n\t\t});\n\t}\n\treturn segments;\n}\nfunction addIdentifier(identifier, tokenType, tokens, modifierBitset = 0) {\n\tif (identifier === void 0) return;\n\ttokens.push(rangeForIdentifier(identifier, tokenType, modifierBitset));\n}\nfunction addToken(token, tokenType, tokens, modifierBitset = 0) {\n\tif (token === void 0) return;\n\ttokens.push(pendingTokenForToken(token, tokenType, modifierBitset));\n}\nfunction rangeForIdentifier(identifier, tokenType, modifierBitset = 0) {\n\tconst token = identifier.token();\n\tif (token === void 0) return createPendingSemanticToken(identifier.syntax.offset, identifier.syntax.offset, tokenType, modifierBitset);\n\treturn pendingTokenForToken(token, tokenType, modifierBitset);\n}\nfunction rangeForDecoratorIdentifier(identifier, marker) {\n\tconst range = rangeForIdentifier(identifier, \"decorator\");\n\tif (marker === void 0 || marker.offset >= range.startOffset) return range;\n\treturn createPendingSemanticToken(marker.offset, range.endOffset, \"decorator\", range.modifierBitset);\n}\nfunction pendingTokenForToken(token, tokenType, modifierBitset = 0) {\n\treturn createPendingSemanticToken(token.offset, token.offset + token.text.length, tokenType, modifierBitset);\n}\nfunction mergeSourceOrderedTokens(left, right) {\n\tconst result = [];\n\tlet leftIndex = 0;\n\tlet rightIndex = 0;\n\twhile (leftIndex < left.length || rightIndex < right.length) {\n\t\tconst leftToken = left[leftIndex];\n\t\tconst rightToken = right[rightIndex];\n\t\tif (leftToken !== void 0 && (rightToken === void 0 || leftToken.startOffset <= rightToken.startOffset)) {\n\t\t\tresult.push(leftToken);\n\t\t\tleftIndex++;\n\t\t} else if (rightToken !== void 0) {\n\t\t\tresult.push(rightToken);\n\t\t\trightIndex++;\n\t\t}\n\t}\n\treturn result;\n}\nfunction createPendingSemanticToken(startOffset, endOffset, tokenType, modifierBitset = 0) {\n\treturn {\n\t\tstartOffset,\n\t\tendOffset,\n\t\ttokenTypeIndex: tokenTypeIndex(tokenType),\n\t\tmodifierBitset,\n\t\tsplitMultiline: tokenType === \"string\" || tokenType === \"comment\"\n\t};\n}\nfunction tokenTypeIndex(tokenType) {\n\treturn semanticTokenTypes.indexOf(tokenType);\n}\n//#endregion\n//#region src/signature-context.ts\nfunction classifyPslSignatureContext(input) {\n\tconst syntax = locateAttributeSyntax(input);\n\tif (syntax === void 0) return void 0;\n\tconst attributeName = syntax.attribute.name()?.identifier()?.name();\n\tconst args = syntax.attribute.argList();\n\tconst position = args === void 0 ? void 0 : signatureArguments(syntax, args, []);\n\tconst owner = signatureOwner(syntax.attribute);\n\treturn attributeName === void 0 || position === void 0 || owner === void 0 ? void 0 : {\n\t\t...owner,\n\t\t...position,\n\t\tattributeName\n\t};\n}\nfunction signatureOwner(attribute) {\n\tif (attribute instanceof FieldAttributeAst) {\n\t\tconst field = attribute.syntax.findAncestor(FieldDeclarationAst.cast);\n\t\tconst model = attribute.syntax.findAncestor(ModelDeclarationAst.cast);\n\t\treturn field === void 0 || model === void 0 ? void 0 : {\n\t\t\townerKind: \"field\",\n\t\t\tfield,\n\t\t\tmodel\n\t\t};\n\t}\n\tconst block = attribute.syntax.findAncestor(GenericBlockDeclarationAst.cast);\n\tif (block !== void 0) {\n\t\tconst blockKeyword = block.keyword()?.text;\n\t\treturn blockKeyword === void 0 || blockKeyword.length === 0 ? void 0 : {\n\t\t\townerKind: \"block\",\n\t\t\tblock,\n\t\t\tblockKeyword\n\t\t};\n\t}\n\tconst model = attribute.syntax.findAncestor(ModelDeclarationAst.cast);\n\treturn model === void 0 ? void 0 : {\n\t\townerKind: \"model\",\n\t\tmodel\n\t};\n}\nfunction signatureArguments(context, args, path) {\n\tif (!betweenDelimiters(context.offset, args.lparen(), args.rparen())) return void 0;\n\tconst containing = argumentAtCursor(context, args);\n\tconst next = context.preceding?.kind === \"Comma\" ? nonTriviaSibling(context.preceding, \"next\") : void 0;\n\tconst following = next instanceof SyntaxNode && next.parent?.offset === args.syntax.offset ? AttributeArgAst.cast(next) : void 0;\n\tconst active = containing ?? following;\n\tconst { precedingPositionalCount: positionalIndex, otherNamedKeys: existingNamedKeys } = argumentSiblings(args, active, context.offset);\n\tif (active === void 0) return [\"LParen\", \"Comma\"].includes(context.preceding?.kind ?? \"\") ? {\n\t\tpath,\n\t\targumentSlot: {\n\t\t\tpositionalIndex,\n\t\t\texistingNamedKeys\n\t\t}\n\t} : void 0;\n\tif (active.colon() !== void 0) {\n\t\tconst name = active.name()?.name();\n\t\tif (name === void 0) return void 0;\n\t\tconst valuePath = [...path, {\n\t\t\tkind: \"namedArgument\",\n\t\t\tname\n\t\t}];\n\t\treturn active === containing ? signatureExpression(context, active.value(), valuePath) : {\n\t\t\tpath: valuePath,\n\t\t\targumentSlot: void 0\n\t\t};\n\t}\n\tconst value = active.value();\n\tif (value === void 0 || value instanceof IdentifierAst && value.syntax.isInside(context.offset)) return {\n\t\tpath,\n\t\targumentSlot: {\n\t\t\tpositionalIndex,\n\t\t\texistingNamedKeys\n\t\t}\n\t};\n\tconst valuePath = [...path, {\n\t\tkind: \"positionalArgument\",\n\t\tindex: positionalIndex\n\t}];\n\treturn active === containing ? signatureExpression(context, value, valuePath) : {\n\t\tpath: valuePath,\n\t\targumentSlot: void 0\n\t};\n}\nfunction signatureExpression(context, expression, path) {\n\tconst position = {\n\t\tpath,\n\t\targumentSlot: void 0\n\t};\n\tif (expression === void 0 || context.offset <= expression.syntax.offset || context.offset >= expression.syntax.endOffset && !recoveredContainerContainsCursor(expression, context.offset)) return position;\n\tif (expression instanceof ArrayLiteralAst) return betweenDelimiters(context.offset, expression.lbracket(), expression.rbracket()) ? signatureExpression(context, listElementAtCursor(context, expression), [...path, { kind: \"listElement\" }]) : void 0;\n\tif (expression instanceof ObjectLiteralExprAst) {\n\t\tconst closing = expression.rbrace();\n\t\tif (closing !== void 0 && context.offset >= closing.endOffset) return void 0;\n\t\tconst field = recordFieldAtCursor(context, expression);\n\t\treturn field !== void 0 ? signatureExpression(context, field.value(), [...path, { kind: \"recordValue\" }]) : position;\n\t}\n\tif (expression instanceof FunctionCallAst) {\n\t\tconst opening = expression.lparen();\n\t\tif (opening !== void 0 && context.offset > opening.offset) {\n\t\t\tconst name = expression.name();\n\t\t\tconst identifier = name?.identifier()?.name();\n\t\t\treturn identifier !== void 0 && name?.isSimpleName(identifier) === true ? signatureArguments(context, expression, [...path, {\n\t\t\t\tkind: \"functionCall\",\n\t\t\t\tname: identifier\n\t\t\t}]) : void 0;\n\t\t}\n\t\treturn expression.name()?.syntax.isInside(context.offset) === true ? position : void 0;\n\t}\n\treturn position;\n}\n//#endregion\n//#region src/signature-help.ts\nfunction providePslSignatureHelp(input) {\n\tconst context = classifyPslSignatureContext(input);\n\tif (context === void 0) return null;\n\tconst spec = attributeSpecResolver(context, input.candidates)(context.attributeName);\n\tif (spec === void 0) return null;\n\treturn signatureHelp(context, spec, input.clientSupportsLabelOffsets === true);\n}\nfunction signatureHelp(context, spec, labelOffsets) {\n\tconst callIndex = context.path.reduce((last, step, index) => step.kind === \"functionCall\" ? index : last, -1);\n\tconst call = context.path[callIndex];\n\tconst signaturePath = context.path.slice(0, callIndex + 1);\n\tconst name = call?.kind === \"functionCall\" ? call.name : `${spec.level === \"field\" ? \"@\" : \"@@\"}${spec.name}`;\n\tconst signatures = resolveGrammar(spec, signaturePath).flatMap((grammar) => {\n\t\tif (\"kind\" in grammar) return [];\n\t\tconst active = context.path[callIndex + 1];\n\t\tconst params = parameters(grammar, active?.kind === \"namedArgument\" ? active.name : void 0);\n\t\tconst index = parameterIndex(context, active, params);\n\t\treturn [{\n\t\t\tsignature: renderSignature(name, grammar, params, labelOffsets),\n\t\t\tindex\n\t\t}];\n\t});\n\tif (signatures.length === 0) return null;\n\tconst matched = signatures.findIndex(({ signature, index }) => index >= 0 && index < (signature.parameters?.length ?? 0));\n\tconst activeSignature = matched < 0 ? 0 : matched;\n\tconst activeParameter = signatures[activeSignature]?.index;\n\treturn {\n\t\tsignatures: signatures.map(({ signature }) => signature),\n\t\tactiveSignature,\n\t\t...matched >= 0 && activeParameter !== void 0 ? { activeParameter } : {}\n\t};\n}\nfunction parameterIndex(context, active, params) {\n\tif (active?.kind === \"namedArgument\") return params.findIndex((param) => param.key === active.name);\n\tif (active?.kind === \"positionalArgument\") return active.index;\n\tconst slot = context.argumentSlot;\n\tif (slot !== void 0) return params.findIndex((param, index) => index >= slot.positionalIndex && !slot.existingNamedKeys.includes(param.key));\n\treturn -1;\n}\nfunction parameters(signature, activeName) {\n\tconst positional = signature.positional ?? [];\n\tconst keys = new Set(positional.map((param) => param.key));\n\tconst namedAlias = activeName === void 0 ? void 0 : signature.named?.[activeName];\n\treturn [...positional.map((param) => param.key === activeName && namedAlias !== void 0 ? {\n\t\tkey: param.key,\n\t\t...namedAlias\n\t} : param), ...Object.entries(signature.named ?? {}).flatMap(([key, param]) => keys.has(key) ? [] : [{\n\t\tkey,\n\t\t...param\n\t}])];\n}\nfunction renderSignature(name, signature, params, labelOffsets) {\n\tlet label = `${name}(`;\n\tconst rendered = params.map((param, index) => {\n\t\tif (index > 0) label += \", \";\n\t\tconst positional = index < (signature.positional?.length ?? 0);\n\t\tconst optional = \"optional\" in param.type && param.type.optional === true;\n\t\tconst typeLabel = optional && param.type.label.includes(\" | \") ? `(${param.type.label})` : param.type.label;\n\t\tconst text = positional ? `${typeLabel}${optional ? \"?\" : \"\"}` : `${param.key}${optional ? \"?\" : \"\"}: ${param.type.label}`;\n\t\tconst start = label.length;\n\t\tlabel += text;\n\t\tconst documentation = positional ? `**${param.key}**\\n\\n${param.documentation}${signature.named?.[param.key] === void 0 ? \"\" : `\\n\\nAccepted positionally or by \\`${param.key}:\\`.`}` : param.documentation;\n\t\treturn {\n\t\t\tlabel: positional && labelOffsets ? [start, label.length] : text,\n\t\t\tdocumentation: {\n\t\t\t\tkind: MarkupKind.Markdown,\n\t\t\t\tvalue: documentation\n\t\t\t}\n\t\t};\n\t});\n\treturn {\n\t\tlabel: `${label})`,\n\t\tdocumentation: {\n\t\t\tkind: MarkupKind.Markdown,\n\t\t\tvalue: signature.documentation\n\t\t},\n\t\tparameters: rendered\n\t};\n}\n//#endregion\n//#region src/server.ts\n/** The project a new load of this config could fall back to. */\nfunction lastGoodProject(entry) {\n\tif (entry === void 0 || entry.status === \"failed\") return;\n\treturn entry.status === \"loaded\" ? entry.project : entry.lastGood;\n}\nconst CONFIG_LOAD_FAILED_CODE = \"PRISMA_CONFIG_LOAD_FAILED\";\nconst semanticTokenSourceLimit = 1e5;\nfunction createServer(connection) {\n\treturn createServerOn(guardedConnection(connection));\n}\nfunction createServerOn(connection) {\n\tconst documents = new TextDocuments(TextDocument);\n\tconst managedProjects = /* @__PURE__ */ new Map();\n\tconst documentConfigPaths = /* @__PURE__ */ new Map();\n\tlet rootPath = process.cwd();\n\tlet watchedConfigGlob = join(rootPath, \"**\", CONFIG_FILENAME);\n\tlet clientCapabilities = noClientCapabilities;\n\tfunction sendDiagnostics(params) {\n\t\tconnection.sendDiagnostics(params);\n\t}\n\tfunction logWarn(message) {\n\t\tconnection.console.warn(message);\n\t}\n\tasync function publish(uri) {\n\t\tconst project = await resolveProjectForDocument(uri);\n\t\tif (project === void 0) return;\n\t\tif (documents.get(uri) === void 0) {\n\t\t\tdocumentConfigPaths.delete(uri);\n\t\t\treturn;\n\t\t}\n\t\tconst artifacts = project.artifacts.document(uri);\n\t\tif (artifacts === void 0) {\n\t\t\tsendDiagnostics({\n\t\t\t\turi,\n\t\t\t\tdiagnostics: []\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tsendDiagnostics({\n\t\t\turi,\n\t\t\tdiagnostics: combinedDiagnostics(artifacts)\n\t\t});\n\t}\n\tfunction combinedDiagnostics(artifacts) {\n\t\treturn toDiagnostics([...artifacts.diagnostics, ...artifacts.interpretDiagnostics()]);\n\t}\n\t/**\n\t* Project-scoped so a future multi-input symbol table can attach\n\t* `relatedDocuments` for cross-file effects.\n\t*/\n\tfunction buildDocumentDiagnosticReport(project, uri) {\n\t\tconst artifacts = project.artifacts.document(uri);\n\t\treturn {\n\t\t\tkind: DocumentDiagnosticReportKind.Full,\n\t\t\titems: artifacts === void 0 ? [] : combinedDiagnostics(artifacts)\n\t\t};\n\t}\n\tasync function resolveProjectForDocument(uri) {\n\t\tconst project = await projectForNearestConfig(uri);\n\t\tif (project === void 0 || project.inputs.includes(uri)) return project;\n\t\tdocumentConfigPaths.delete(uri);\n\t\tdropProjectWithoutManagedDocuments(project.configPath);\n\t}\n\tasync function projectForNearestConfig(uri) {\n\t\tconst knownConfigPath = documentConfigPaths.get(uri);\n\t\tif (knownConfigPath !== void 0) return resolveProjectIfLoadable(knownConfigPath);\n\t\tconst filePath = filePathFromUri(uri);\n\t\tif (filePath === void 0) return;\n\t\tlet configPath;\n\t\ttry {\n\t\t\tconfigPath = await findNearestConfigPathForFile(filePath);\n\t\t} catch {\n\t\t\treturn;\n\t\t}\n\t\tif (configPath === void 0) return;\n\t\tdocumentConfigPaths.set(uri, configPath);\n\t\treturn resolveProjectIfLoadable(configPath);\n\t}\n\tasync function resolveProjectIfLoadable(configPath) {\n\t\ttry {\n\t\t\treturn await resolveProject(configPath);\n\t\t} catch {\n\t\t\treturn;\n\t\t}\n\t}\n\tasync function resolveProject(configPath) {\n\t\tconst entry = managedProjects.get(configPath);\n\t\tif (entry === void 0 || entry.status === \"failed\") return startProjectLoad(configPath);\n\t\treturn entry.status === \"loaded\" ? entry.project : entry.load;\n\t}\n\tfunction refreshProject(configPath) {\n\t\treturn startProjectLoad(configPath);\n\t}\n\tfunction startProjectLoad(configPath) {\n\t\tconst existing = managedProjects.get(configPath);\n\t\tconst previousLoad = existing?.status === \"loading\" ? existing.load : void 0;\n\t\tconst lastGood = lastGoodProject(existing);\n\t\tconst load = (previousLoad ?? Promise.resolve(void 0)).catch(() => void 0).then(() => loadProject(configPath)).then((project) => {\n\t\t\tif (isCurrentLoad(configPath, load)) {\n\t\t\t\tif (hasManagedDocuments(configPath)) managedProjects.set(configPath, {\n\t\t\t\t\tstatus: \"loaded\",\n\t\t\t\t\tproject\n\t\t\t\t});\n\t\t\t\telse managedProjects.delete(configPath);\n\t\t\t\tclearConfigFailure(configPath);\n\t\t\t}\n\t\t\treturn project;\n\t\t}, (error) => {\n\t\t\tif (isCurrentLoad(configPath, load)) if (!hasManagedDocuments(configPath)) {\n\t\t\t\tmanagedProjects.delete(configPath);\n\t\t\t\tclearConfigFailure(configPath);\n\t\t\t} else {\n\t\t\t\tpublishConfigFailure(configPath, error);\n\t\t\t\tif (lastGood !== void 0) {\n\t\t\t\t\tmanagedProjects.set(configPath, {\n\t\t\t\t\t\tstatus: \"loaded\",\n\t\t\t\t\t\tproject: lastGood\n\t\t\t\t\t});\n\t\t\t\t\treturn lastGood;\n\t\t\t\t}\n\t\t\t\tmanagedProjects.set(configPath, { status: \"failed\" });\n\t\t\t\tunmanageDocuments(configPath);\n\t\t\t}\n\t\t\tthrow error;\n\t\t});\n\t\tmanagedProjects.set(configPath, {\n\t\t\tstatus: \"loading\",\n\t\t\tload,\n\t\t\tlastGood\n\t\t});\n\t\treturn load;\n\t}\n\tfunction publishConfigFailure(configPath, error) {\n\t\tsendDiagnostics({\n\t\t\turi: pathToFileURL(configPath).toString(),\n\t\t\tdiagnostics: [{\n\t\t\t\trange: {\n\t\t\t\t\tstart: {\n\t\t\t\t\t\tline: 0,\n\t\t\t\t\t\tcharacter: 0\n\t\t\t\t\t},\n\t\t\t\t\tend: {\n\t\t\t\t\t\tline: 0,\n\t\t\t\t\t\tcharacter: 1\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmessage: configFailureMessage(error),\n\t\t\t\tcode: CONFIG_LOAD_FAILED_CODE,\n\t\t\t\tseverity: DiagnosticSeverity.Error,\n\t\t\t\tsource: \"prisma\"\n\t\t\t}]\n\t\t});\n\t}\n\tfunction configFailureMessage(error) {\n\t\tif (CliStructuredError.is(error)) return error.why ?? error.message;\n\t\treturn error instanceof Error ? error.message : String(error);\n\t}\n\tfunction clearConfigFailure(configPath) {\n\t\tsendDiagnostics({\n\t\t\turi: pathToFileURL(configPath).toString(),\n\t\t\tdiagnostics: []\n\t\t});\n\t}\n\tfunction isCurrentLoad(configPath, load) {\n\t\tconst entry = managedProjects.get(configPath);\n\t\treturn entry?.status === \"loading\" && entry.load === load;\n\t}\n\tasync function loadProject(configPath) {\n\t\tconst resolution = await resolveConfigInputs(configPath);\n\t\tconst artifacts = createProjectArtifacts({\n\t\t\tinputs: resolution.inputs,\n\t\t\tcontrolStack: resolution.controlStack,\n\t\t\tgetText: (uri) => documents.get(uri)?.getText(),\n\t\t\tonInterpretationError: (uri, error) => {\n\t\t\t\tconst detail = error instanceof Error ? error.stack ?? error.message : String(error);\n\t\t\t\tconnection.console.error(`PSL interpretation failed for ${uri}: ${detail}`);\n\t\t\t},\n\t\t\t...resolution.interpretation === void 0 ? {} : { interpretation: resolution.interpretation }\n\t\t});\n\t\treturn {\n\t\t\tconfigPath,\n\t\t\tinputs: resolution.inputs,\n\t\t\tcontrolStack: resolution.controlStack,\n\t\t\tartifacts,\n\t\t\t...resolution.formatter === void 0 ? {} : { formatter: resolution.formatter },\n\t\t\t...resolution.interpretation === void 0 ? {} : { interpretation: resolution.interpretation }\n\t\t};\n\t}\n\tfunction unmanageDocuments(configPath) {\n\t\tfor (const document of documents.all()) if (documentConfigPaths.get(document.uri) === configPath) documentConfigPaths.delete(document.uri);\n\t}\n\tasync function republishOpenDocumentsForConfig(configPath) {\n\t\tfor (const document of documents.all()) {\n\t\t\tif (documentConfigPaths.get(document.uri) === configPath) {\n\t\t\t\tif (await resolveProjectForDocument(document.uri) === void 0) {\n\t\t\t\t\tsendDiagnostics({\n\t\t\t\t\t\turi: document.uri,\n\t\t\t\t\t\tdiagnostics: []\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tawait publish(document.uri);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst filePath = filePathFromUri(document.uri);\n\t\t\tif (filePath === void 0) continue;\n\t\t\tif (await findNearestConfigPathForFile(filePath) === configPath) {\n\t\t\t\tdocumentConfigPaths.set(document.uri, configPath);\n\t\t\t\tawait publish(document.uri);\n\t\t\t}\n\t\t}\n\t}\n\tfunction publishSafely(uri) {\n\t\tpublish(uri).catch((error) => {\n\t\t\tconnection.console.error(error instanceof Error ? error.message : String(error));\n\t\t});\n\t}\n\tasync function formatDocument(uri) {\n\t\tconst document = documents.get(uri);\n\t\tif (document === void 0) return [];\n\t\tconst source = document.getText();\n\t\tif (!isPrismaNextSchema(source)) return [];\n\t\tconst project = await resolveProjectForDocument(uri);\n\t\tif (project === void 0) return [];\n\t\tlet formatted;\n\t\ttry {\n\t\t\tformatted = renameLegacyDirective(format(source, project.formatter));\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t\tif (formatted === source) return [];\n\t\treturn [{\n\t\t\trange: {\n\t\t\t\tstart: {\n\t\t\t\t\tline: 0,\n\t\t\t\t\tcharacter: 0\n\t\t\t\t},\n\t\t\t\tend: document.positionAt(source.length)\n\t\t\t},\n\t\t\tnewText: formatted\n\t\t}];\n\t}\n\tasync function semanticTokensForDocument(uri, range) {\n\t\tconst document = documents.get(uri);\n\t\tif (document === void 0) return emptySemanticTokens();\n\t\tif (document.getText().length > semanticTokenSourceLimit) return emptySemanticTokens();\n\t\tconst project = await resolveProjectForDocument(uri);\n\t\tif (project === void 0) return emptySemanticTokens();\n\t\tconst artifacts = project.artifacts.document(uri);\n\t\tif (artifacts === void 0) return emptySemanticTokens();\n\t\treturn buildSemanticTokens({\n\t\t\tdocument: artifacts.document,\n\t\t\tsourceFile: artifacts.sourceFile,\n\t\t\tsymbolTable: project.artifacts.symbolTable(),\n\t\t\tscalarTypes: project.controlStack.scalarTypes\n\t\t}, range);\n\t}\n\tasync function completeDocument(uri, position) {\n\t\tif (documents.get(uri) === void 0) return [];\n\t\tconst project = await resolveProjectForDocument(uri);\n\t\tif (project === void 0) return [];\n\t\tconst artifacts = project.artifacts.document(uri);\n\t\tif (artifacts === void 0) return [];\n\t\ttry {\n\t\t\treturn [...providePslCompletionItems({\n\t\t\t\tcontext: classifyPslCompletionContext({\n\t\t\t\t\tdocument: artifacts.document,\n\t\t\t\t\tsourceFile: artifacts.sourceFile,\n\t\t\t\t\tposition\n\t\t\t\t}),\n\t\t\t\tsourceFile: artifacts.sourceFile,\n\t\t\t\tcandidates: {\n\t\t\t\t\tscalarTypes: project.controlStack.scalarTypes,\n\t\t\t\t\tpslBlockDescriptors: project.controlStack.pslBlockDescriptors,\n\t\t\t\t\tsymbolTable: project.artifacts.symbolTable(),\n\t\t\t\t\t...project.controlStack.authoringContributions === void 0 ? {} : { authoringContributions: project.controlStack.authoringContributions },\n\t\t\t\t\t...project.controlStack.controlMutationDefaults === void 0 ? {} : { controlMutationDefaults: project.controlStack.controlMutationDefaults }\n\t\t\t\t},\n\t\t\t\tclientSupportsSnippets: clientCapabilities.completionSnippets,\n\t\t\t\tclientSupportsTriggerSuggestCommand: clientCapabilities.completionTriggerSuggestCommand,\n\t\t\t\tclientSupportsTriggerParameterHintsCommand: clientCapabilities.completionTriggerParameterHintsCommand\n\t\t\t})];\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t}\n\tasync function signatureHelpForDocument(uri, position) {\n\t\tif (documents.get(uri) === void 0) return null;\n\t\tconst project = await resolveProjectForDocument(uri);\n\t\tif (project === void 0) return null;\n\t\tconst artifacts = project.artifacts.document(uri);\n\t\tif (artifacts === void 0) return null;\n\t\ttry {\n\t\t\treturn providePslSignatureHelp({\n\t\t\t\tclientSupportsLabelOffsets: clientCapabilities.signatureLabelOffsets,\n\t\t\t\tdocument: artifacts.document,\n\t\t\t\tsourceFile: artifacts.sourceFile,\n\t\t\t\tposition,\n\t\t\t\tcandidates: {\n\t\t\t\t\tpslBlockDescriptors: project.controlStack.pslBlockDescriptors,\n\t\t\t\t\tsymbolTable: project.artifacts.symbolTable(),\n\t\t\t\t\t...project.controlStack.authoringContributions === void 0 ? {} : { authoringContributions: project.controlStack.authoringContributions },\n\t\t\t\t\t...project.controlStack.controlMutationDefaults === void 0 ? {} : { controlMutationDefaults: project.controlStack.controlMutationDefaults }\n\t\t\t\t}\n\t\t\t});\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\tconnection.onInitialize(async (params) => {\n\t\trootPath = resolveRootPath(params);\n\t\twatchedConfigGlob = join(rootPath, \"**\", CONFIG_FILENAME);\n\t\tclientCapabilities = resolveClientCapabilities(params);\n\t\treturn { capabilities: {\n\t\t\ttextDocumentSync: TextDocumentSyncKind.Incremental,\n\t\t\tdocumentFormattingProvider: true,\n\t\t\tfoldingRangeProvider: true,\n\t\t\tsemanticTokensProvider: {\n\t\t\t\tlegend: semanticTokensLegend,\n\t\t\t\tfull: true,\n\t\t\t\trange: true\n\t\t\t},\n\t\t\tcompletionProvider: { triggerCharacters: [\n\t\t\t\t\".\",\n\t\t\t\t\"@\",\n\t\t\t\t\"[\",\n\t\t\t\t\"(\",\n\t\t\t\t\"{\",\n\t\t\t\t\":\",\n\t\t\t\t\",\"\n\t\t\t] },\n\t\t\tsignatureHelpProvider: { triggerCharacters: [\"(\", \",\"] },\n\t\t\t...clientCapabilities.pullDiagnostics ? { diagnosticProvider: {\n\t\t\t\tinterFileDependencies: false,\n\t\t\t\tworkspaceDiagnostics: false\n\t\t\t} } : {}\n\t\t} };\n\t});\n\tconnection.onInitialized(() => {\n\t\tif (clientCapabilities.watchedFilesRegistration) connection.sendRequest(RegistrationRequest.type, { registrations: [{\n\t\t\tid: \"prisma-8-config-watcher\",\n\t\t\tmethod: DidChangeWatchedFilesNotification.type.method,\n\t\t\tregisterOptions: { watchers: [{ globPattern: watchedConfigGlob }] }\n\t\t}] });\n\t\telse logWarn(\"Client does not support dynamic file-watcher registration; Prisma 8 config changes will not be picked up without a restart.\");\n\t});\n\tconnection.onDidChangeWatchedFiles(async (params) => {\n\t\tconst changedConfigPaths = configPathsFromWatchedChanges(params.changes.map((change) => filePathFromUri(change.uri)));\n\t\tfor (const configPath of changedConfigPaths) {\n\t\t\tif (managedProjects.has(configPath)) try {\n\t\t\t\tawait refreshProject(configPath);\n\t\t\t} catch {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!clientCapabilities.pullDiagnostics) await republishOpenDocumentsForConfig(configPath);\n\t\t}\n\t\tif (clientCapabilities.pullDiagnostics && clientCapabilities.diagnosticsRefresh && changedConfigPaths.size > 0) connection.languages.diagnostics.refresh();\n\t});\n\tconnection.onDocumentFormatting((params) => formatDocument(params.textDocument.uri));\n\tconnection.onCompletion((params) => completeDocument(params.textDocument.uri, params.position));\n\tconnection.onSignatureHelp((params) => signatureHelpForDocument(params.textDocument.uri, params.position));\n\tconnection.languages.semanticTokens.on((params) => semanticTokensForDocument(params.textDocument.uri));\n\tconnection.languages.semanticTokens.onRange((params) => semanticTokensForDocument(params.textDocument.uri, params.range));\n\tconnection.languages.diagnostics.on(async (params) => {\n\t\tconst project = await resolveProjectForDocument(params.textDocument.uri);\n\t\tif (project === void 0) return {\n\t\t\tkind: DocumentDiagnosticReportKind.Full,\n\t\t\titems: []\n\t\t};\n\t\treturn buildDocumentDiagnosticReport(project, params.textDocument.uri);\n\t});\n\tconnection.onFoldingRanges(async (params) => {\n\t\tconst project = await resolveProjectForDocument(params.textDocument.uri);\n\t\tif (project === void 0) return [];\n\t\tconst artifacts = project.artifacts.document(params.textDocument.uri);\n\t\tif (artifacts === void 0) return [];\n\t\treturn computeFoldingRanges(artifacts.document, artifacts.sourceFile);\n\t});\n\tdocuments.onDidOpen((event) => {\n\t\tartifactsForDocument(event.document.uri)?.documentChanged(event.document.uri);\n\t\tif (clientCapabilities.pullDiagnostics) return;\n\t\tpublishSafely(event.document.uri);\n\t});\n\tdocuments.onDidChangeContent((event) => {\n\t\tartifactsForDocument(event.document.uri)?.documentChanged(event.document.uri);\n\t\tif (clientCapabilities.pullDiagnostics) return;\n\t\tpublishSafely(event.document.uri);\n\t});\n\tdocuments.onDidClose((event) => {\n\t\tconst uri = event.document.uri;\n\t\tconst configPath = documentConfigPaths.get(uri);\n\t\tartifactsForDocument(uri)?.documentClosed(uri);\n\t\tdocumentConfigPaths.delete(uri);\n\t\tif (configPath !== void 0) dropProjectWithoutManagedDocuments(configPath);\n\t\tif (!clientCapabilities.pullDiagnostics) sendDiagnostics({\n\t\t\turi,\n\t\t\tdiagnostics: []\n\t\t});\n\t});\n\tdocuments.listen(connection);\n\tconnection.listen();\n\tfunction artifactsForDocument(uri) {\n\t\tconst configPath = documentConfigPaths.get(uri);\n\t\tif (configPath === void 0) return;\n\t\tconst entry = managedProjects.get(configPath);\n\t\treturn entry?.status === \"loaded\" ? entry.project.artifacts : void 0;\n\t}\n\tfunction hasManagedDocuments(configPath) {\n\t\tfor (const managedConfigPath of documentConfigPaths.values()) if (managedConfigPath === configPath) return true;\n\t\treturn false;\n\t}\n\tfunction dropProjectWithoutManagedDocuments(configPath) {\n\t\tif (hasManagedDocuments(configPath)) return;\n\t\tconst entry = managedProjects.get(configPath);\n\t\tif (entry === void 0 || entry.status === \"loading\") return;\n\t\tmanagedProjects.delete(configPath);\n\t\tclearConfigFailure(configPath);\n\t}\n\treturn {\n\t\tdispose: () => connection.dispose(),\n\t\tgetDocumentAst: (uri) => artifactsForDocument(uri)?.document(uri),\n\t\tgetProjectSymbolTable: (uri) => {\n\t\t\tconst artifacts = artifactsForDocument(uri);\n\t\t\tif (artifacts?.document(uri) === void 0) return;\n\t\t\treturn artifacts.symbolTable();\n\t\t}\n\t};\n}\nfunction emptySemanticTokens() {\n\treturn { data: [] };\n}\nfunction toDiagnostics(computed) {\n\treturn computed.map((diagnostic) => ({\n\t\trange: diagnostic.range,\n\t\tmessage: diagnostic.message,\n\t\tcode: diagnostic.code,\n\t\tseverity: toLspSeverity(diagnostic.severity),\n\t\tsource: \"prisma\"\n\t}));\n}\nfunction toLspSeverity(severity) {\n\tswitch (severity) {\n\t\tcase ParseDiagnosticSeverity.Warning: return DiagnosticSeverity.Warning;\n\t\tcase ParseDiagnosticSeverity.Information: return DiagnosticSeverity.Information;\n\t\tcase ParseDiagnosticSeverity.Hint: return DiagnosticSeverity.Hint;\n\t\tdefault: return DiagnosticSeverity.Error;\n\t}\n}\nconst noClientCapabilities = {\n\twatchedFilesRegistration: false,\n\tcompletionSnippets: false,\n\tsignatureLabelOffsets: false,\n\tcompletionTriggerSuggestCommand: false,\n\tcompletionTriggerParameterHintsCommand: false,\n\tpullDiagnostics: false,\n\tdiagnosticsRefresh: false\n};\nfunction resolveClientCapabilities(params) {\n\treturn {\n\t\twatchedFilesRegistration: params.capabilities.workspace?.didChangeWatchedFiles?.dynamicRegistration === true,\n\t\tcompletionSnippets: params.capabilities.textDocument?.completion?.completionItem?.snippetSupport === true,\n\t\tsignatureLabelOffsets: params.capabilities.textDocument?.signatureHelp?.signatureInformation?.parameterInformation?.labelOffsetSupport === true,\n\t\tcompletionTriggerSuggestCommand: supportsCompletionCommand(params.initializationOptions, \"supportsTriggerSuggestCommand\"),\n\t\tcompletionTriggerParameterHintsCommand: supportsCompletionCommand(params.initializationOptions, \"supportsTriggerParameterHintsCommand\"),\n\t\tpullDiagnostics: params.capabilities.textDocument?.diagnostic !== void 0,\n\t\tdiagnosticsRefresh: params.capabilities.workspace?.diagnostics?.refreshSupport === true\n\t};\n}\nfunction supportsCompletionCommand(options, capability) {\n\tif (typeof options !== \"object\" || options === null || !(\"completion\" in options)) return false;\n\tconst completion = options.completion;\n\treturn typeof completion === \"object\" && completion !== null && capability in completion && Reflect.get(completion, capability) === true;\n}\nfunction resolveRootPath(params) {\n\tconst workspaceFolder = params.workspaceFolders?.[0];\n\tif (workspaceFolder !== void 0) return fileURLToPath(workspaceFolder.uri);\n\tif (params.rootUri) return fileURLToPath(params.rootUri);\n\tif (params.rootPath) return params.rootPath;\n\treturn process.cwd();\n}\nfunction filePathFromUri(uri) {\n\ttry {\n\t\treturn fileURLToPath(uri);\n\t} catch {\n\t\treturn;\n\t}\n}\nfunction configPathsFromWatchedChanges(paths) {\n\tconst configPaths = /* @__PURE__ */ new Set();\n\tfor (const path of paths) if (path?.endsWith(\"prisma.config.ts\")) configPaths.add(path);\n\treturn configPaths;\n}\n//#endregion\n//#region src/stdio-transport.ts\n/**\n* `objectMode: false` is what makes this a byte stream rather than a stream of\n* whatever objects the host yielded: it converts each chunk to a `Buffer`.\n* `vscode-jsonrpc` needs that — it slices header blocks with\n* `Buffer.from(chunk, 0, length)`, and on a plain `Uint8Array` those arguments\n* are ignored, so it reads the whole chunk as one header block and rejects the\n* message.\n*/\nfunction byteInputStream(stdin) {\n\treturn Readable.from(stdin, { objectMode: false });\n}\n/**\n* Bridges the byte stream `vscode-jsonrpc` writes to the text sink a host\n* hands over.\n*\n* LSP declares each message's `Content-Length` in bytes, so a UTF-8 sequence\n* that arrives split across two writes has to be held back until it is whole:\n* decoding half of one yields a replacement character, which is a different\n* number of bytes than the header promised. `StreamMessageWriter` writes each\n* body in one call and Node never splits a chunk given to `_write`, so the\n* decoder holds nothing back in practice — it is here because the contract\n* this satisfies is \"bytes in, text out\", and a writer that chunks its bodies\n* would otherwise corrupt every multi-byte message silently.\n*\n* Back-pressure is dropped: `TextSink.write` returns nothing to wait on, so\n* every write reports flushed the moment the sink has taken it. A client that\n* stops reading grows the host's own output queue instead of slowing the\n* server down, and the diagnostics for a large schema are not small. Fixing it\n* needs a sink that reports when it drained.\n*/\nfunction textOutputStream(stdout) {\n\tconst decoder = new StringDecoder(\"utf8\");\n\treturn new Writable({\n\t\twrite(chunk, _encoding, callback) {\n\t\t\tstdout.write(decoder.write(chunk));\n\t\t\tcallback();\n\t\t},\n\t\tfinal(callback) {\n\t\t\tconst pending = decoder.end();\n\t\t\tif (pending !== \"\") stdout.write(pending);\n\t\t\tcallback();\n\t\t}\n\t});\n}\n//#endregion\n//#region src/console-capture.ts\n/**\n* Sends everything written through the global `console` to the host's stderr\n* for the length of the run, and returns the undo.\n*\n* The client owns stdout: anything on it that is not a `Content-Length` frame\n* desynchronises the client for good. `console.log` and friends write straight\n* to the process's own stdout, so one call from anywhere in the dependency\n* graph — resolving a project's config reaches c12 and jiti — corrupts the\n* protocol. `vscode-languageserver/node` redirects the console for exactly\n* this reason when it takes stdio off `process.argv`; over injected streams\n* that never runs, so the redirect happens here.\n*\n* A dependency that writes to `process.stdout` directly still reaches the\n* client. Nothing short of replacing the process's own descriptor covers that,\n* and only the host owns the process.\n*/\nfunction captureConsole(stderr) {\n\tconst host = globalThis.console;\n\tconst sink = textOutputStream(stderr);\n\tglobalThis.console = new Console({\n\t\tstdout: sink,\n\t\tstderr: sink\n\t});\n\treturn () => {\n\t\tglobalThis.console = host;\n\t};\n}\n//#endregion\n//#region src/stream-server.ts\n/**\n* How long the conversation may stand completely still before a message the\n* connection took off the reader but never dispatched is written off. It\n* answers a cancellation itself without telling anyone, so the count of\n* messages awaiting dispatch can be left standing; every other route decrements\n* it. Any activity restarts the clock, so this delays the exit rather than\n* cutting a reply short.\n*/\nconst stalledDispatchGraceMs = 50;\n/**\n* How long a host abort lets in-flight work drain before the run settles\n* regardless. The host has already decided to stop, so a handler that never\n* settles — or work that never goes idle — must not hold the exit code back\n* forever; it only gets this long to finish cleanly.\n*/\nconst abortDrainDeadlineMs = 2e3;\n/**\n* How often the client's process id is polled when the host handed one over.\n* The same cadence `vscode-languageserver/node` uses for its own watch.\n*/\nconst clientProcessPollMs = 3e3;\nfunction processAlive(pid) {\n\ttry {\n\t\tprocess.kill(pid, 0);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n/**\n* Runs the server over the host's streams and resolves with the exit code the\n* client's departure implies. The host owns the process, so nothing here ends\n* it; every route out settles the promise instead.\n*/\nfunction runServerOverStreams(streams) {\n\tconst input = byteInputStream(streams.stdin);\n\tconst inputMessages = new StreamMessageReader(input);\n\tconst outputMessages = new StreamMessageWriter(textOutputStream(streams.stdout));\n\tconst releaseConsole = captureConsole(streams.stderr);\n\treturn new Promise((resolve) => {\n\t\tlet settled = false;\n\t\t/**\n\t\t* Messages the connection is handling and replies it is writing. A request\n\t\t* handler's dispatch covers everything it awaits and the write of its\n\t\t* reply, so this stays above zero for as long as the client is owed\n\t\t* anything.\n\t\t*/\n\t\tlet inFlight = 0;\n\t\t/** Messages decoded off the stream that the connection has not started. */\n\t\tlet awaitingDispatch = 0;\n\t\tlet lastActivity = Date.now();\n\t\tlet departure;\n\t\tlet idleCheck;\n\t\tlet abortDeadline;\n\t\tlet clientWatch;\n\t\tfunction settle(code) {\n\t\t\tif (settled) return;\n\t\t\tsettled = true;\n\t\t\tif (idleCheck !== void 0) clearTimeout(idleCheck);\n\t\t\tif (abortDeadline !== void 0) clearTimeout(abortDeadline);\n\t\t\tif (clientWatch !== void 0) clearInterval(clientWatch);\n\t\t\treleaseConsole();\n\t\t\tserver.dispose();\n\t\t\tinput.destroy();\n\t\t\tresolve(code);\n\t\t}\n\t\tfunction moved() {\n\t\t\tlastActivity = Date.now();\n\t\t\tcheckIdle();\n\t\t}\n\t\t/**\n\t\t* Settles once nothing is left in flight. The client's departure is not the\n\t\t* end of the work: everything already read is queued, and a handler that\n\t\t* awaits — resolving a project reads the filesystem — has its reply written\n\t\t* turns later.\n\t\t*/\n\t\tfunction settleOnceIdle(code) {\n\t\t\tdeparture ??= code;\n\t\t\tcheckIdle();\n\t\t}\n\t\tfunction checkIdle() {\n\t\t\tif (settled || departure === void 0 || idleCheck !== void 0) return;\n\t\t\tidleCheck = setTimeout(() => {\n\t\t\t\tidleCheck = void 0;\n\t\t\t\tif (settled || departure === void 0) return;\n\t\t\t\tif (inFlight > 0) return;\n\t\t\t\tif (awaitingDispatch === 0 || Date.now() - lastActivity >= stalledDispatchGraceMs) {\n\t\t\t\t\tsettle(departure());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcheckIdle();\n\t\t\t}, 1);\n\t\t}\n\t\t/** LSP reserves 0 for a client that asked to shut down before leaving. */\n\t\tfunction departureCode() {\n\t\t\treturn watchDog.shutdownReceived ? 0 : 1;\n\t\t}\n\t\tconst reader = {\n\t\t\tonError: inputMessages.onError,\n\t\t\tonClose: inputMessages.onClose,\n\t\t\tonPartialMessage: inputMessages.onPartialMessage,\n\t\t\tlisten: (callback) => inputMessages.listen((message) => {\n\t\t\t\tawaitingDispatch += 1;\n\t\t\t\tmoved();\n\t\t\t\tcallback(message);\n\t\t\t}),\n\t\t\tdispose: () => inputMessages.dispose()\n\t\t};\n\t\tconst writer = {\n\t\t\tonError: outputMessages.onError,\n\t\t\tonClose: outputMessages.onClose,\n\t\t\twrite: (message) => {\n\t\t\t\tinFlight += 1;\n\t\t\t\tmoved();\n\t\t\t\treturn outputMessages.write(message).finally(() => {\n\t\t\t\t\tinFlight -= 1;\n\t\t\t\t\tmoved();\n\t\t\t\t});\n\t\t\t},\n\t\t\tend: () => outputMessages.end(),\n\t\t\tdispose: () => outputMessages.dispose()\n\t\t};\n\t\tconst watchDog = {\n\t\t\tshutdownReceived: false,\n\t\t\tinitialize: () => void 0,\n\t\t\texit: (code) => settleOnceIdle(() => code)\n\t\t};\n\t\tconst server = createServer(createConnection((logger) => createProtocolConnection(reader, writer, logger, { messageStrategy: { handleMessage: (message, next) => {\n\t\t\tawaitingDispatch -= 1;\n\t\t\tinFlight += 1;\n\t\t\tmoved();\n\t\t\treturn Promise.resolve(next(message)).finally(() => {\n\t\t\t\tinFlight -= 1;\n\t\t\t\tmoved();\n\t\t\t});\n\t\t} } }), watchDog, ProposedFeatures.all));\n\t\tinputMessages.onClose(() => settleOnceIdle(departureCode));\n\t\tinputMessages.onError((error) => {\n\t\t\tstreams.stderr.write(`Language server transport error: ${messageOf(error)}\\n`);\n\t\t\tsettleOnceIdle(() => 1);\n\t\t});\n\t\tconst clientProcessId = streams.clientProcessId;\n\t\tif (clientProcessId !== void 0) {\n\t\t\tconst settleIfClientGone = () => {\n\t\t\t\tif (!processAlive(clientProcessId)) settle(departureCode());\n\t\t\t};\n\t\t\tclientWatch = setInterval(settleIfClientGone, clientProcessPollMs);\n\t\t\tclientWatch.unref();\n\t\t\tsettleIfClientGone();\n\t\t}\n\t\tfunction settleOnAbort() {\n\t\t\tsettleOnceIdle(departureCode);\n\t\t\tabortDeadline ??= setTimeout(() => settle(departureCode()), abortDrainDeadlineMs);\n\t\t\tabortDeadline.unref();\n\t\t}\n\t\tconst hostShutdown = streams.signal;\n\t\tif (hostShutdown?.aborted === true) settleOnAbort();\n\t\telse hostShutdown?.addEventListener(\"abort\", settleOnAbort, { once: true });\n\t});\n}\nfunction messageOf(error) {\n\treturn error instanceof Error ? error.message : String(error);\n}\n//#endregion\n//#region src/start-server.ts\nfunction startServer(streams) {\n\tif (streams === void 0) {\n\t\tcreateServer(createConnection$1(ProposedFeatures$1.all));\n\t\treturn;\n\t}\n\treturn runServerOverStreams(streams);\n}\n//#endregion\nexport { ParseDiagnosticSeverity, createServer, mapParseDiagnostics, startServer };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}