@nestbridge/webpack 2.0.2 → 2.0.4
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/README.md +94 -0
- package/build/nestbridge.webpack.d.ts +19 -0
- package/build/nestbridge.webpack.js +1116 -0
- package/build/nestbridge.webpack.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nestbridge.webpack.js","names":[],"sources":["../../unplugin/build/nestbridge.unplugin.js","../package.json","../src/version.ts","../src/main.ts"],"sourcesContent":["import { SyntaxKind, isArrayLiteralExpression, isArrayTypeNode, isArrowFunction, isBlock, isCallExpression, isClassDeclaration, isDecorator, isExportDeclaration, isFunctionExpression, isIdentifier, isImportDeclaration, isMethodDeclaration, isNamedExports, isNamedImports, isObjectLiteralExpression, isPropertyAssignment, isPropertyDeclaration, isReturnStatement, isStringLiteralLikeNode, isTypeReferenceNode, isUnionTypeNode } from \"typescript/unstable/ast\";\nimport { API } from \"typescript/unstable/sync\";\nimport { existsSync, globSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, extname, join, posix, relative, resolve } from \"node:path\";\nimport { createUnplugin } from \"unplugin\";\n//#region ../core/build/nestbridge.core.js\nvar getDecorators = (node) => {\n\tconst decorators = node.modifiers?.filter(isDecorator);\n\treturn decorators === void 0 || decorators.length === 0 ? void 0 : decorators;\n};\nvar findDecorator = (node, decoratorName) => {\n\tconst decorators = getDecorators(node);\n\tif (decorators === void 0) return;\n\treturn decorators.find((decorator) => decoratorNameOf(decorator) === decoratorName);\n};\nvar findAnyDecorator = (node, decoratorNames) => {\n\tconst decorators = getDecorators(node);\n\tif (decorators === void 0) return;\n\treturn decorators.find((decorator) => decoratorNames.includes(decoratorNameOf(decorator) ?? \"\"));\n};\nvar decoratorNameOf = (decorator) => {\n\tconst expression = decorator.expression;\n\tif (isCallExpression(expression) && isIdentifier(expression.expression)) return expression.expression.text;\n\tif (isIdentifier(expression)) return expression.text;\n};\nvar readStaticStringArgument = (decorator) => {\n\tconst expression = decorator.expression;\n\tif (!isCallExpression(expression)) return {\n\t\tok: true,\n\t\tvalue: void 0\n\t};\n\tconst [firstArgument] = expression.arguments;\n\tif (firstArgument === void 0) return {\n\t\tok: true,\n\t\tvalue: void 0\n\t};\n\tif (isStringLiteralLikeNode(firstArgument)) return {\n\t\tok: true,\n\t\tvalue: firstArgument.text\n\t};\n\treturn {\n\t\tok: false,\n\t\targumentText: firstArgument.getText()\n\t};\n};\nvar HTTP_METHOD_DECORATOR_NAMES = {\n\tGet: \"GET\",\n\tPost: \"POST\",\n\tPut: \"PUT\",\n\tPatch: \"PATCH\",\n\tDelete: \"DELETE\"\n};\nvar locationOf = (sourceFile, node) => {\n\tconst { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile));\n\treturn {\n\t\tline: line + 1,\n\t\tcolumn: character + 1\n\t};\n};\nvar SUPPORTED_PARAMETER_DECORATORS = [\n\t\"Param\",\n\t\"Query\",\n\t\"Body\",\n\t\"Headers\"\n];\nvar KNOWN_UNSUPPORTED_PARAMETER_DECORATORS = [\n\t\"Req\",\n\t\"Res\",\n\t\"Request\",\n\t\"Response\"\n];\nvar extractParameterDefinition = (parameter, index, context) => {\n\tconst decorator = findAnyDecorator(parameter, [...SUPPORTED_PARAMETER_DECORATORS, ...KNOWN_UNSUPPORTED_PARAMETER_DECORATORS]);\n\tconst location = locationOf(context.sourceFile, parameter);\n\tif (decorator === void 0) {\n\t\tcontext.diagnostics.push({\n\t\t\tcode: \"unsupported-parameter\",\n\t\t\ttitle: \"Unsupported parameter.\",\n\t\t\tcontrollerName: context.controllerName,\n\t\t\tmemberName: context.methodName,\n\t\t\tdetail: `Parameter \"${parameter.name.getText()}\" must be decorated with one of @Param, @Query, @Body, or @Headers to be transported through a NestBridge HTTP client.`,\n\t\t\tfilePath: context.filePath,\n\t\t\tline: location.line,\n\t\t\tcolumn: location.column\n\t\t});\n\t\treturn;\n\t}\n\tconst decoratorName = decoratorNameOf(decorator);\n\tif (decoratorName !== void 0 && KNOWN_UNSUPPORTED_PARAMETER_DECORATORS.includes(decoratorName)) {\n\t\tcontext.diagnostics.push({\n\t\t\tcode: \"unsupported-parameter\",\n\t\t\ttitle: \"Unsupported parameter.\",\n\t\t\tcontrollerName: context.controllerName,\n\t\t\tmemberName: context.methodName,\n\t\t\tdetail: `@${decoratorName}() cannot be transported through a NestBridge HTTP client.`,\n\t\t\tfilePath: context.filePath,\n\t\t\tline: location.line,\n\t\t\tcolumn: location.column\n\t\t});\n\t\treturn;\n\t}\n\tif (!isIdentifier(parameter.name)) {\n\t\tcontext.diagnostics.push({\n\t\t\tcode: \"unsupported-parameter\",\n\t\t\ttitle: \"Unsupported parameter.\",\n\t\t\tcontrollerName: context.controllerName,\n\t\t\tmemberName: context.methodName,\n\t\t\tdetail: \"Destructured parameters cannot be transported through a NestBridge HTTP client.\",\n\t\t\tfilePath: context.filePath,\n\t\t\tline: location.line,\n\t\t\tcolumn: location.column\n\t\t});\n\t\treturn;\n\t}\n\tconst argument = readStaticStringArgument(decorator);\n\tif (!argument.ok) {\n\t\tcontext.diagnostics.push({\n\t\t\tcode: \"unsupported-parameter\",\n\t\t\ttitle: \"Unsupported parameter.\",\n\t\t\tcontrollerName: context.controllerName,\n\t\t\tmemberName: context.methodName,\n\t\t\tdetail: `@${decoratorName}() arguments must be statically analyzable string literals.`,\n\t\t\tfound: `@${decoratorName}(${argument.argumentText})`,\n\t\t\tfilePath: context.filePath,\n\t\t\tline: location.line,\n\t\t\tcolumn: location.column\n\t\t});\n\t\treturn;\n\t}\n\tconst base = {\n\t\tindex,\n\t\tparameterName: parameter.name.text\n\t};\n\tif (decoratorName === \"Param\") {\n\t\tif (argument.value === void 0) {\n\t\t\tcontext.diagnostics.push({\n\t\t\t\tcode: \"unsupported-parameter\",\n\t\t\t\ttitle: \"Unsupported parameter.\",\n\t\t\t\tcontrollerName: context.controllerName,\n\t\t\t\tmemberName: context.methodName,\n\t\t\t\tdetail: \"A whole @Param() is not supported; provide a route parameter name such as @Param('id').\",\n\t\t\t\tfilePath: context.filePath,\n\t\t\t\tline: location.line,\n\t\t\t\tcolumn: location.column\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\treturn {\n\t\t\t...base,\n\t\t\tkind: \"param\",\n\t\t\tname: argument.value\n\t\t};\n\t}\n\tif (decoratorName === \"Headers\") {\n\t\tif (argument.value === void 0) {\n\t\t\tcontext.diagnostics.push({\n\t\t\t\tcode: \"unsupported-parameter\",\n\t\t\t\ttitle: \"Unsupported parameter.\",\n\t\t\t\tcontrollerName: context.controllerName,\n\t\t\t\tmemberName: context.methodName,\n\t\t\t\tdetail: \"A whole @Headers() is not supported; provide a header name such as @Headers('x-example').\",\n\t\t\t\tfilePath: context.filePath,\n\t\t\t\tline: location.line,\n\t\t\t\tcolumn: location.column\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\treturn {\n\t\t\t...base,\n\t\t\tkind: \"header\",\n\t\t\tname: argument.value\n\t\t};\n\t}\n\tif (decoratorName === \"Query\") return {\n\t\t...base,\n\t\tkind: \"query\",\n\t\tname: argument.value\n\t};\n\treturn {\n\t\t...base,\n\t\tkind: \"body\",\n\t\tname: argument.value\n\t};\n};\nvar PRIMITIVE_SCALAR_TYPES = {\n\tstring: \"String\",\n\tnumber: \"Float\",\n\tboolean: \"Boolean\"\n};\nvar unwrapPromise = (typeNode) => {\n\tif (isTypeReferenceNode(typeNode) && isIdentifier(typeNode.typeName) && typeNode.typeName.text === \"Promise\" && typeNode.typeArguments?.[0] !== void 0) return unwrapPromise(typeNode.typeArguments[0]);\n\treturn typeNode;\n};\nvar unwrapNullable = (typeNode) => {\n\tif (!isUnionTypeNode(typeNode)) return {\n\t\tinner: typeNode,\n\t\tisNullable: false\n\t};\n\tconst nonNullMembers = typeNode.types.filter((member) => member.kind !== SyntaxKind.NullKeyword && member.kind !== SyntaxKind.UndefinedKeyword);\n\tconst [onlyMember] = nonNullMembers;\n\tif (nonNullMembers.length !== 1 || onlyMember === void 0) return {\n\t\tinner: typeNode,\n\t\tisNullable: nonNullMembers.length !== typeNode.types.length\n\t};\n\treturn {\n\t\tinner: onlyMember,\n\t\tisNullable: true\n\t};\n};\nvar unwrapArrayElement = (typeNode) => {\n\tif (isArrayTypeNode(typeNode)) return typeNode.elementType;\n\tif (isTypeReferenceNode(typeNode) && isIdentifier(typeNode.typeName) && typeNode.typeName.text === \"Array\" && typeNode.typeArguments?.[0] !== void 0) return typeNode.typeArguments[0];\n};\nvar identifierTextOf = (typeNode) => {\n\tif (isTypeReferenceNode(typeNode) && isIdentifier(typeNode.typeName)) return typeNode.typeName.text;\n\tswitch (typeNode.kind) {\n\t\tcase SyntaxKind.StringKeyword: return \"string\";\n\t\tcase SyntaxKind.NumberKeyword: return \"number\";\n\t\tcase SyntaxKind.BooleanKeyword: return \"boolean\";\n\t\tdefault: return;\n\t}\n};\nvar unwrapTypeNode = (typeNode) => {\n\tconst { inner: withoutNullable, isNullable } = unwrapNullable(unwrapPromise(typeNode));\n\tconst arrayElement = unwrapArrayElement(withoutNullable);\n\tconst identifierText = identifierTextOf(arrayElement === void 0 ? withoutNullable : unwrapNullable(arrayElement).inner);\n\tif (identifierText === void 0) return;\n\treturn {\n\t\tidentifierText,\n\t\tisArray: arrayElement !== void 0,\n\t\tisNullable\n\t};\n};\nvar graphqlScalarNameFor = (identifierText) => PRIMITIVE_SCALAR_TYPES[identifierText] ?? identifierText;\nvar graphqlTypeStringFor = (unwrapped, explicitTypeName) => {\n\tconst baseName = explicitTypeName ?? graphqlScalarNameFor(unwrapped.identifierText);\n\tconst wrapped = unwrapped.isArray ? `[${baseName}!]` : baseName;\n\treturn unwrapped.isNullable ? wrapped : `${wrapped}!`;\n};\nvar OBSERVABLE_TYPE_NAME = \"Observable\";\nvar STREAMABLE_FILE_TYPE_NAME = \"StreamableFile\";\nvar readResponseKind = (returnType) => {\n\tif (returnType === void 0) return \"json\";\n\tconst unwrapped = unwrapPromise(returnType);\n\tif (!isTypeReferenceNode(unwrapped) || !isIdentifier(unwrapped.typeName)) return \"json\";\n\tif (unwrapped.typeName.text === OBSERVABLE_TYPE_NAME) return \"observable\";\n\tif (unwrapped.typeName.text === STREAMABLE_FILE_TYPE_NAME) return \"stream\";\n\treturn \"json\";\n};\nvar trimSlashes = (segment) => segment.replace(/^\\/+/, \"\").replace(/\\/+$/, \"\");\nvar joinRoutePath = (controllerPath, methodPath) => {\n\treturn `/${[trimSlashes(controllerPath), trimSlashes(methodPath ?? \"\")].filter((segment) => segment.length > 0).join(\"/\")}`;\n};\nvar extractMethodDefinition = (method, context) => {\n\tconst decorator = findAnyDecorator(method, Object.keys(HTTP_METHOD_DECORATOR_NAMES));\n\tif (decorator === void 0) return;\n\tconst methodName = method.name.getText();\n\tconst decoratorName = decoratorNameOf(decorator);\n\tconst location = locationOf(context.sourceFile, method);\n\tif (decoratorName === void 0) return;\n\tconst httpMethod = HTTP_METHOD_DECORATOR_NAMES[decoratorName];\n\tif (httpMethod === void 0) return;\n\tconst routeArgument = readStaticStringArgument(decorator);\n\tif (!routeArgument.ok) {\n\t\tcontext.diagnostics.push({\n\t\t\tcode: \"unsupported-route\",\n\t\t\ttitle: \"Unsupported route.\",\n\t\t\tcontrollerName: context.controllerName,\n\t\t\tmemberName: methodName,\n\t\t\tdetail: \"Route paths must be statically analyzable.\",\n\t\t\tfound: `@${decoratorName}(${routeArgument.argumentText})`,\n\t\t\tfilePath: context.filePath,\n\t\t\tline: location.line,\n\t\t\tcolumn: location.column\n\t\t});\n\t\treturn;\n\t}\n\tconst parameters = method.parameters.map((parameter, index) => extractParameterDefinition(parameter, index, {\n\t\tsourceFile: context.sourceFile,\n\t\tfilePath: context.filePath,\n\t\tcontrollerName: context.controllerName,\n\t\tmethodName,\n\t\tdiagnostics: context.diagnostics\n\t}));\n\tif (parameters.some((parameter) => parameter === void 0)) return;\n\treturn {\n\t\tname: methodName,\n\t\thttpMethod,\n\t\tpath: joinRoutePath(context.controllerPath, routeArgument.value),\n\t\tparameters: parameters.filter((parameter) => parameter !== void 0),\n\t\tresponseKind: readResponseKind(method.type),\n\t\tline: location.line,\n\t\tcolumn: location.column\n\t};\n};\nvar extractControllerDefinition = (classDeclaration, sourceFile, filePath, diagnostics) => {\n\tconst controllerName = classDeclaration.name?.text ?? \"(anonymous controller)\";\n\tconst decorator = findDecorator(classDeclaration, \"Controller\");\n\tif (decorator === void 0) return;\n\tconst location = locationOf(sourceFile, classDeclaration);\n\tconst argument = readStaticStringArgument(decorator);\n\tif (!argument.ok) {\n\t\tdiagnostics.push({\n\t\t\tcode: \"unsupported-route\",\n\t\t\ttitle: \"Unsupported route.\",\n\t\t\tcontrollerName,\n\t\t\tmemberName: \"\",\n\t\t\tdetail: \"Controller paths must be statically analyzable.\",\n\t\t\tfound: `@Controller(${argument.argumentText})`,\n\t\t\tfilePath,\n\t\t\tline: location.line,\n\t\t\tcolumn: location.column\n\t\t});\n\t\treturn;\n\t}\n\tconst methods = classDeclaration.members.filter((member) => isMethodDeclaration(member)).map((method) => extractMethodDefinition(method, {\n\t\tsourceFile,\n\t\tfilePath,\n\t\tcontrollerName,\n\t\tcontrollerPath: argument.value ?? \"\",\n\t\tdiagnostics\n\t})).filter((method) => method !== void 0);\n\treturn {\n\t\tname: controllerName,\n\t\tpath: argument.value ?? \"\",\n\t\tsourceFile: filePath,\n\t\tmethods\n\t};\n};\nvar findControllerClasses = (sourceFile) => {\n\treturn sourceFile.statements.filter((statement) => isClassDeclaration(statement) && findDecorator(statement, \"Controller\") !== void 0);\n};\nvar sharedApi;\nvar parseSourceFile = (filePath) => {\n\tsharedApi ??= new API();\n\tconst sourceFile = sharedApi.updateSnapshot({ openFiles: [filePath] }).getDefaultProjectForFile(filePath)?.program.getSourceFile(filePath);\n\tif (sourceFile === void 0) throw new Error(`Unable to parse source file: ${filePath}`);\n\treturn sourceFile;\n};\nvar analyzeControllers = (filePaths) => {\n\tconst diagnostics = [];\n\tconst controllers = [];\n\tfor (const filePath of filePaths) {\n\t\tconst sourceFile = parseSourceFile(filePath);\n\t\tfor (const classDeclaration of findControllerClasses(sourceFile)) {\n\t\t\tconst controller = extractControllerDefinition(classDeclaration, sourceFile, filePath, diagnostics);\n\t\t\tif (controller !== void 0) controllers.push(controller);\n\t\t}\n\t}\n\treturn {\n\t\tcontrollers,\n\t\tdiagnostics\n\t};\n};\nvar GRAPHQL_OPERATION_DECORATOR_NAMES = {\n\tQuery: \"query\",\n\tMutation: \"mutation\"\n};\nvar readTypeThunkExpression = (thunk) => {\n\tif (!isBlock(thunk.body)) return thunk.body;\n\treturn thunk.body.statements.find(isReturnStatement)?.expression;\n};\nvar readArgsTypeOption = (decorator) => {\n\tif (!isCallExpression(decorator.expression)) return;\n\tconst optionsArgument = decorator.expression.arguments.find(isObjectLiteralExpression);\n\tif (optionsArgument === void 0) return;\n\tconst typeProperty = optionsArgument.properties.find((property) => isPropertyAssignment(property) && isIdentifier(property.name) && property.name.text === \"type\");\n\tif (typeProperty === void 0) return;\n\tconst thunk = typeProperty.initializer;\n\tif (!isArrowFunction(thunk) && !isFunctionExpression(thunk)) return;\n\tconst returnedExpression = readTypeThunkExpression(thunk);\n\tif (returnedExpression === void 0) return;\n\tif (isArrayLiteralExpression(returnedExpression)) {\n\t\tconst element = returnedExpression.elements[0];\n\t\treturn element !== void 0 && isIdentifier(element) ? {\n\t\t\ttypeName: element.text,\n\t\t\tisArray: true\n\t\t} : void 0;\n\t}\n\treturn isIdentifier(returnedExpression) ? {\n\t\ttypeName: returnedExpression.text,\n\t\tisArray: false\n\t} : void 0;\n};\nvar extractResolverArgumentDefinition = (parameter, index, context) => {\n\tconst decorator = findAnyDecorator(parameter, [\"Args\"]);\n\tconst location = locationOf(context.sourceFile, parameter);\n\tif (decorator === void 0) {\n\t\tcontext.diagnostics.push({\n\t\t\tcode: \"unsupported-argument\",\n\t\t\ttitle: \"Unsupported argument.\",\n\t\t\tcontrollerName: context.resolverName,\n\t\t\tmemberName: context.methodName,\n\t\t\tdetail: `Parameter \"${parameter.name.getText()}\" must be decorated with @Args to be transported through a NestBridge GraphQL client.`,\n\t\t\tfilePath: context.filePath,\n\t\t\tline: location.line,\n\t\t\tcolumn: location.column\n\t\t});\n\t\treturn;\n\t}\n\tif (!isIdentifier(parameter.name)) {\n\t\tcontext.diagnostics.push({\n\t\t\tcode: \"unsupported-argument\",\n\t\t\ttitle: \"Unsupported argument.\",\n\t\t\tcontrollerName: context.resolverName,\n\t\t\tmemberName: context.methodName,\n\t\t\tdetail: \"Destructured parameters cannot be transported through a NestBridge GraphQL client.\",\n\t\t\tfilePath: context.filePath,\n\t\t\tline: location.line,\n\t\t\tcolumn: location.column\n\t\t});\n\t\treturn;\n\t}\n\tconst nameArgument = readStaticStringArgument(decorator);\n\tif (!nameArgument.ok) {\n\t\tcontext.diagnostics.push({\n\t\t\tcode: \"unsupported-argument\",\n\t\t\ttitle: \"Unsupported argument.\",\n\t\t\tcontrollerName: context.resolverName,\n\t\t\tmemberName: context.methodName,\n\t\t\tdetail: \"@Args() name must be a statically analyzable string literal.\",\n\t\t\tfound: `@Args(${nameArgument.argumentText})`,\n\t\t\tfilePath: context.filePath,\n\t\t\tline: location.line,\n\t\t\tcolumn: location.column\n\t\t});\n\t\treturn;\n\t}\n\tif (nameArgument.value === void 0) {\n\t\tcontext.diagnostics.push({\n\t\t\tcode: \"unsupported-argument\",\n\t\t\ttitle: \"Unsupported argument.\",\n\t\t\tcontrollerName: context.resolverName,\n\t\t\tmemberName: context.methodName,\n\t\t\tdetail: \"A whole @Args() is not supported; provide an argument name such as @Args('id').\",\n\t\t\tfilePath: context.filePath,\n\t\t\tline: location.line,\n\t\t\tcolumn: location.column\n\t\t});\n\t\treturn;\n\t}\n\tif (parameter.type === void 0) {\n\t\tcontext.diagnostics.push({\n\t\t\tcode: \"unsupported-argument\",\n\t\t\ttitle: \"Unsupported argument.\",\n\t\t\tcontrollerName: context.resolverName,\n\t\t\tmemberName: context.methodName,\n\t\t\tdetail: `@Args() parameter \"${parameter.name.text}\" needs an explicit type annotation.`,\n\t\t\tfilePath: context.filePath,\n\t\t\tline: location.line,\n\t\t\tcolumn: location.column\n\t\t});\n\t\treturn;\n\t}\n\tconst unwrapped = unwrapTypeNode(parameter.type);\n\tif (unwrapped === void 0) {\n\t\tcontext.diagnostics.push({\n\t\t\tcode: \"unsupported-argument\",\n\t\t\ttitle: \"Unsupported argument.\",\n\t\t\tcontrollerName: context.resolverName,\n\t\t\tmemberName: context.methodName,\n\t\t\tdetail: `@Args() parameter \"${parameter.name.text}\" has a type NestBridge cannot statically resolve to a GraphQL type.`,\n\t\t\tfound: parameter.type.getText(),\n\t\t\tfilePath: context.filePath,\n\t\t\tline: location.line,\n\t\t\tcolumn: location.column\n\t\t});\n\t\treturn;\n\t}\n\tconst explicitType = readArgsTypeOption(decorator);\n\treturn {\n\t\tindex,\n\t\tparameterName: parameter.name.text,\n\t\tname: nameArgument.value,\n\t\tgraphqlType: graphqlTypeStringFor(unwrapped, explicitType?.typeName)\n\t};\n};\nvar parsedFilesByPath = /* @__PURE__ */ new Map();\nvar parseFile = (filePath) => {\n\tconst cached = parsedFilesByPath.get(filePath);\n\tif (cached !== void 0) return cached;\n\tconst sourceFile = parseSourceFile(filePath);\n\tparsedFilesByPath.set(filePath, sourceFile);\n\treturn sourceFile;\n};\nvar resolveModuleFile = (fromFilePath, moduleSpecifierText) => {\n\tif (!moduleSpecifierText.startsWith(\".\")) return;\n\tconst base = resolve(dirname(fromFilePath), moduleSpecifierText);\n\treturn [\n\t\t`${base}.ts`,\n\t\t`${base}.tsx`,\n\t\tresolve(base, \"index.ts\")\n\t].find((candidate) => existsSync(candidate));\n};\nvar findExportedDeclaration = (sourceFile, name) => sourceFile.statements.find((statement) => isClassDeclaration(statement) && statement.name?.text === name);\nvar findImportSource = (sourceFile, localName) => {\n\tfor (const statement of sourceFile.statements) {\n\t\tif (!isImportDeclaration(statement) || !isStringLiteralLikeNode(statement.moduleSpecifier)) continue;\n\t\tconst namedBindings = statement.importClause?.namedBindings;\n\t\tif (namedBindings === void 0 || !isNamedImports(namedBindings)) continue;\n\t\tconst element = namedBindings.elements.find((candidate) => candidate.name.text === localName);\n\t\tif (element !== void 0) return {\n\t\t\tmoduleSpecifierText: statement.moduleSpecifier.text,\n\t\t\timportedName: element.propertyName?.text ?? element.name.text\n\t\t};\n\t}\n};\nvar findReExportSource = (sourceFile, name) => {\n\tfor (const statement of sourceFile.statements) {\n\t\tif (!isExportDeclaration(statement) || statement.moduleSpecifier === void 0 || !isStringLiteralLikeNode(statement.moduleSpecifier)) continue;\n\t\tif (statement.exportClause === void 0) return statement.moduleSpecifier.text;\n\t\tif (isNamedExports(statement.exportClause) && statement.exportClause.elements.some((element) => (element.propertyName?.text ?? element.name.text) === name)) return statement.moduleSpecifier.text;\n\t}\n};\nvar resolveClassDeclaration = (name, fromSourceFile, fromFilePath, visited = /* @__PURE__ */ new Set()) => {\n\tif (visited.has(fromFilePath)) return;\n\tvisited.add(fromFilePath);\n\tconst direct = findExportedDeclaration(fromSourceFile, name);\n\tif (direct !== void 0) return {\n\t\tclassDeclaration: direct,\n\t\tsourceFile: fromSourceFile,\n\t\tfilePath: fromFilePath\n\t};\n\tconst importSource = findImportSource(fromSourceFile, name);\n\tif (importSource !== void 0) {\n\t\tconst resolvedPath = resolveModuleFile(fromFilePath, importSource.moduleSpecifierText);\n\t\tif (resolvedPath !== void 0) {\n\t\t\tconst nextSourceFile = parseFile(resolvedPath);\n\t\t\tconst result = resolveClassDeclaration(importSource.importedName, nextSourceFile, resolvedPath, visited);\n\t\t\tif (result !== void 0) return result;\n\t\t}\n\t}\n\tconst reExportModuleSpecifierText = findReExportSource(fromSourceFile, name);\n\tif (reExportModuleSpecifierText !== void 0) {\n\t\tconst resolvedPath = resolveModuleFile(fromFilePath, reExportModuleSpecifierText);\n\t\tif (resolvedPath !== void 0) return resolveClassDeclaration(name, parseFile(resolvedPath), resolvedPath, visited);\n\t}\n};\nvar PRIMITIVE_SCALAR_NAMES$1 = /* @__PURE__ */ new Set([\n\t\"string\",\n\t\"number\",\n\t\"boolean\"\n]);\nvar extractSelectionFields = (classDeclaration, sourceFile, filePath, context) => {\n\tconst typeName = classDeclaration.name?.text ?? \"(anonymous type)\";\n\tconst location = locationOf(sourceFile, classDeclaration);\n\tif (context.visitedTypeNames.has(typeName)) {\n\t\tcontext.diagnostics.push({\n\t\t\tcode: \"circular-type\",\n\t\t\ttitle: \"Circular type.\",\n\t\t\tcontrollerName: context.resolverName,\n\t\t\tmemberName: context.methodName,\n\t\t\tdetail: `Type \"${typeName}\" references itself, directly or indirectly. NestBridge cannot build a finite GraphQL selection set for it.`,\n\t\t\tfilePath,\n\t\t\tline: location.line,\n\t\t\tcolumn: location.column\n\t\t});\n\t\treturn;\n\t}\n\tconst nextVisited = new Set(context.visitedTypeNames).add(typeName);\n\tconst properties = classDeclaration.members.filter((member) => isPropertyDeclaration(member) && findDecorator(member, \"Field\") !== void 0);\n\tconst fields = [];\n\tfor (const property of properties) {\n\t\tif (!isIdentifier(property.name)) continue;\n\t\tconst fieldName = property.name.text;\n\t\tconst fieldLocation = locationOf(sourceFile, property);\n\t\tif (property.type === void 0) {\n\t\t\tcontext.diagnostics.push({\n\t\t\t\tcode: \"unsupported-return-type\",\n\t\t\t\ttitle: \"Unsupported field type.\",\n\t\t\t\tcontrollerName: context.resolverName,\n\t\t\t\tmemberName: context.methodName,\n\t\t\t\tdetail: `Field \"${fieldName}\" on \"${typeName}\" needs an explicit type annotation.`,\n\t\t\t\tfilePath,\n\t\t\t\tline: fieldLocation.line,\n\t\t\t\tcolumn: fieldLocation.column\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst unwrapped = unwrapTypeNode(property.type);\n\t\tif (unwrapped === void 0) {\n\t\t\tcontext.diagnostics.push({\n\t\t\t\tcode: \"unsupported-return-type\",\n\t\t\t\ttitle: \"Unsupported field type.\",\n\t\t\t\tcontrollerName: context.resolverName,\n\t\t\t\tmemberName: context.methodName,\n\t\t\t\tdetail: `Field \"${fieldName}\" on \"${typeName}\" has a type NestBridge cannot statically resolve.`,\n\t\t\t\tfound: property.type.getText(),\n\t\t\t\tfilePath,\n\t\t\t\tline: fieldLocation.line,\n\t\t\t\tcolumn: fieldLocation.column\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tif (PRIMITIVE_SCALAR_NAMES$1.has(unwrapped.identifierText)) {\n\t\t\tfields.push({ name: fieldName });\n\t\t\tcontinue;\n\t\t}\n\t\tconst resolved = resolveClassDeclaration(unwrapped.identifierText, sourceFile, filePath);\n\t\tif (resolved === void 0) {\n\t\t\tfields.push({ name: fieldName });\n\t\t\tcontinue;\n\t\t}\n\t\tif (findDecorator(resolved.classDeclaration, \"ObjectType\") === void 0) {\n\t\t\tcontext.diagnostics.push({\n\t\t\t\tcode: \"unsupported-return-type\",\n\t\t\t\ttitle: \"Unsupported field type.\",\n\t\t\t\tcontrollerName: context.resolverName,\n\t\t\t\tmemberName: context.methodName,\n\t\t\t\tdetail: `Field \"${fieldName}\" on \"${typeName}\" resolves to class \"${unwrapped.identifierText}\", which is not decorated with @ObjectType(). NestBridge cannot build a GraphQL selection set for it.`,\n\t\t\t\tfilePath,\n\t\t\t\tline: fieldLocation.line,\n\t\t\t\tcolumn: fieldLocation.column\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst children = extractSelectionFields(resolved.classDeclaration, resolved.sourceFile, resolved.filePath, {\n\t\t\t...context,\n\t\t\tvisitedTypeNames: nextVisited\n\t\t});\n\t\tif (children === void 0) return;\n\t\tfields.push({\n\t\t\tname: fieldName,\n\t\t\tchildren\n\t\t});\n\t}\n\treturn fields;\n};\nvar readNameFromOptions = (optionsArgument) => {\n\tconst nameProperty = optionsArgument.properties.find((property) => isPropertyAssignment(property) && isIdentifier(property.name) && property.name.text === \"name\");\n\tif (nameProperty === void 0 || !isStringLiteralLikeNode(nameProperty.initializer)) return;\n\treturn nameProperty.initializer.text;\n};\nvar readGraphqlOperationName = (decorator) => {\n\tconst expression = decorator.expression;\n\tif (!isCallExpression(expression)) return {\n\t\tok: true,\n\t\tvalue: void 0\n\t};\n\tlet value;\n\tfor (const argument of expression.arguments) {\n\t\tif (isArrowFunction(argument) || isFunctionExpression(argument)) continue;\n\t\tif (isStringLiteralLikeNode(argument)) {\n\t\t\tvalue = argument.text;\n\t\t\tcontinue;\n\t\t}\n\t\tif (isObjectLiteralExpression(argument)) {\n\t\t\tvalue = readNameFromOptions(argument) ?? value;\n\t\t\tcontinue;\n\t\t}\n\t\treturn {\n\t\t\tok: false,\n\t\t\targumentText: argument.getText()\n\t\t};\n\t}\n\treturn {\n\t\tok: true,\n\t\tvalue\n\t};\n};\nvar readGraphqlReturnTypeOption = (decorator) => {\n\tif (!isCallExpression(decorator.expression)) return;\n\tconst thunk = decorator.expression.arguments.find((argument) => isArrowFunction(argument) || isFunctionExpression(argument));\n\tif (thunk === void 0) return;\n\tconst returnedExpression = readTypeThunkExpression(thunk);\n\tif (returnedExpression === void 0) return;\n\tif (isArrayLiteralExpression(returnedExpression)) {\n\t\tconst element = returnedExpression.elements[0];\n\t\treturn element !== void 0 && isIdentifier(element) ? element.text : void 0;\n\t}\n\treturn isIdentifier(returnedExpression) ? returnedExpression.text : void 0;\n};\nvar PRIMITIVE_SCALAR_NAMES = /* @__PURE__ */ new Set([\n\t\"string\",\n\t\"number\",\n\t\"boolean\"\n]);\nvar extractResolverMethodDefinition = (method, context) => {\n\tconst decorator = findAnyDecorator(method, Object.keys(GRAPHQL_OPERATION_DECORATOR_NAMES));\n\tif (decorator === void 0) return;\n\tconst methodName = method.name.getText();\n\tconst decoratorName = decoratorNameOf(decorator);\n\tconst location = locationOf(context.sourceFile, method);\n\tif (decoratorName === void 0) return;\n\tconst operationKind = GRAPHQL_OPERATION_DECORATOR_NAMES[decoratorName];\n\tif (operationKind === void 0) return;\n\tconst nameArgument = readGraphqlOperationName(decorator);\n\tif (!nameArgument.ok) {\n\t\tcontext.diagnostics.push({\n\t\t\tcode: \"unsupported-route\",\n\t\t\ttitle: \"Unsupported operation name.\",\n\t\t\tcontrollerName: context.resolverName,\n\t\t\tmemberName: methodName,\n\t\t\tdetail: \"GraphQL operation names must be statically analyzable string literals.\",\n\t\t\tfound: `@${decoratorName}(${nameArgument.argumentText})`,\n\t\t\tfilePath: context.filePath,\n\t\t\tline: location.line,\n\t\t\tcolumn: location.column\n\t\t});\n\t\treturn;\n\t}\n\tconst decoratorReturnType = readGraphqlReturnTypeOption(decorator);\n\tconst identifierText = decoratorReturnType ?? (method.type === void 0 ? void 0 : unwrapTypeNode(method.type)?.identifierText);\n\tif (identifierText === void 0) {\n\t\tcontext.diagnostics.push({\n\t\t\tcode: \"unsupported-return-type\",\n\t\t\ttitle: \"Unsupported return type.\",\n\t\t\tcontrollerName: context.resolverName,\n\t\t\tmemberName: methodName,\n\t\t\tdetail: \"GraphQL resolver methods need a type thunk on @Query()/@Mutation() (e.g. \\\"() => UserType\\\") or an explicit return type annotation so NestBridge can build a selection set.\",\n\t\t\tfilePath: context.filePath,\n\t\t\tline: location.line,\n\t\t\tcolumn: location.column\n\t\t});\n\t\treturn;\n\t}\n\tlet selection = [];\n\tif (!PRIMITIVE_SCALAR_NAMES.has(identifierText.toLowerCase())) {\n\t\tconst resolved = resolveClassDeclaration(identifierText, context.sourceFile, context.filePath);\n\t\tif (resolved === void 0 && decoratorReturnType === void 0) {\n\t\t\tcontext.diagnostics.push({\n\t\t\t\tcode: \"unsupported-return-type\",\n\t\t\t\ttitle: \"Unsupported return type.\",\n\t\t\t\tcontrollerName: context.resolverName,\n\t\t\t\tmemberName: methodName,\n\t\t\t\tdetail: `NestBridge could not locate the declaration of type \"${identifierText}\".`,\n\t\t\t\tfilePath: context.filePath,\n\t\t\t\tline: location.line,\n\t\t\t\tcolumn: location.column\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tif (resolved !== void 0) {\n\t\t\tconst fields = extractSelectionFields(resolved.classDeclaration, resolved.sourceFile, resolved.filePath, {\n\t\t\t\tresolverName: context.resolverName,\n\t\t\t\tmethodName,\n\t\t\t\tdiagnostics: context.diagnostics,\n\t\t\t\tvisitedTypeNames: /* @__PURE__ */ new Set()\n\t\t\t});\n\t\t\tif (fields === void 0) return;\n\t\t\tselection = fields;\n\t\t}\n\t}\n\tconst args = method.parameters.map((parameter, index) => extractResolverArgumentDefinition(parameter, index, {\n\t\tsourceFile: context.sourceFile,\n\t\tfilePath: context.filePath,\n\t\tresolverName: context.resolverName,\n\t\tmethodName,\n\t\tdiagnostics: context.diagnostics\n\t}));\n\tif (args.some((argument) => argument === void 0)) return;\n\treturn {\n\t\tname: methodName,\n\t\toperationKind,\n\t\toperationName: nameArgument.value ?? methodName,\n\t\targuments: args.filter((argument) => argument !== void 0),\n\t\tselection,\n\t\tline: location.line,\n\t\tcolumn: location.column\n\t};\n};\nvar extractResolverDefinition = (classDeclaration, sourceFile, filePath, diagnostics) => {\n\tconst resolverName = classDeclaration.name?.text ?? \"(anonymous resolver)\";\n\treturn {\n\t\tname: resolverName,\n\t\tsourceFile: filePath,\n\t\tmethods: classDeclaration.members.filter((member) => isMethodDeclaration(member)).map((method) => extractResolverMethodDefinition(method, {\n\t\t\tsourceFile,\n\t\t\tfilePath,\n\t\t\tresolverName,\n\t\t\tdiagnostics\n\t\t})).filter((method) => method !== void 0)\n\t};\n};\nvar findResolverClasses = (sourceFile) => {\n\treturn sourceFile.statements.filter((statement) => isClassDeclaration(statement) && findDecorator(statement, \"Resolver\") !== void 0);\n};\nvar analyzeResolvers = (filePaths) => {\n\tconst diagnostics = [];\n\tconst resolvers = [];\n\tfor (const filePath of filePaths) {\n\t\tconst sourceFile = parseSourceFile(filePath);\n\t\tfor (const classDeclaration of findResolverClasses(sourceFile)) {\n\t\t\tconst resolver = extractResolverDefinition(classDeclaration, sourceFile, filePath, diagnostics);\n\t\t\tif (resolver !== void 0) resolvers.push(resolver);\n\t\t}\n\t}\n\treturn {\n\t\tresolvers,\n\t\tdiagnostics\n\t};\n};\nvar REMOTE_RESULT_HELPERS = {\n\tjson: \"RemoteResult\",\n\tobservable: \"RemoteObservableResult\",\n\tstream: \"RemoteStreamResult\"\n};\nvar toPosixPath = (filePath) => filePath.replace(/\\\\/g, \"/\");\nvar importSpecifierFor = (sourceFile, outputFilePath) => {\n\tif (!sourceFile.startsWith(\".\") && !/^[A-Za-z]:[\\\\/]/.test(sourceFile) && !sourceFile.startsWith(\"/\")) return sourceFile;\n\tconst relativePath = toPosixPath(relative(dirname(outputFilePath), sourceFile));\n\treturn relativePath.startsWith(\".\") ? relativePath : `./${relativePath}`;\n};\nvar stripExtension = (filePath) => {\n\tconst extension = extname(filePath);\n\treturn extension.length > 0 ? filePath.slice(0, -extension.length) : filePath;\n};\nvar generateControllerDeclaration = (controller, outputFilePath) => {\n\tconst sourceFileSpecifier = importSpecifierFor(controller.sourceFile, outputFilePath);\n\tconst importSpecifier = stripExtension(sourceFileSpecifier);\n\tconst serverAlias = `__Server${controller.name}`;\n\tconst classBody = [\n\t\t\" constructor();\",\n\t\t\"\",\n\t\t...controller.methods.map((method) => {\n\t\t\tconst helperName = REMOTE_RESULT_HELPERS[method.responseKind ?? \"json\"];\n\t\t\treturn ` ${method.name}(...args: Parameters<${serverAlias}['${method.name}']>): ${helperName}<${serverAlias}['${method.name}']>;`;\n\t\t})\n\t].join(\"\\n\");\n\tconst usedHelperNames = new Set(controller.methods.map((method) => REMOTE_RESULT_HELPERS[method.responseKind ?? \"json\"]));\n\tconst helperImports = Array.from(usedHelperNames.size > 0 ? usedHelperNames : [\"RemoteResult\"]).sort();\n\treturn [\n\t\t`import type { ${controller.name} as ${serverAlias} } from '${importSpecifier}';`,\n\t\t`import type { ${helperImports.join(\", \")} } from 'nestbridge';`,\n\t\t\"\",\n\t\t\"/**\",\n\t\t\" * Generated by NestBridge — client-facing methods only.\",\n\t\t` * @see {@link ${sourceFileSpecifier}} for the real controller implementation.`,\n\t\t\" */\",\n\t\t`export declare class ${controller.name} {`,\n\t\tclassBody,\n\t\t\"}\",\n\t\t\"\"\n\t].join(\"\\n\");\n};\nvar formatDiagnostic = (diagnostic) => {\n\tconst subject = diagnostic.memberName.length > 0 ? `${diagnostic.controllerName}.${diagnostic.memberName}` : diagnostic.controllerName;\n\tconst lines = [\n\t\t`[NestBridge] ${diagnostic.title}`,\n\t\t\"\",\n\t\tsubject,\n\t\t\"\",\n\t\tdiagnostic.detail\n\t];\n\tif (diagnostic.found !== void 0) lines.push(\"\", \"Found:\", diagnostic.found);\n\tif (diagnostic.expected !== void 0) lines.push(\"\", \"Expected:\", diagnostic.expected);\n\tlines.push(\"\", `${diagnostic.filePath}:${diagnostic.line}:${diagnostic.column}`);\n\treturn lines.join(\"\\n\");\n};\n//#endregion\n//#region src/codegen/generate-config-module.ts\nvar generateConfigModule = (options) => {\n\tif (options.baseURL === void 0) return \"\";\n\treturn [\n\t\t\"import { setNestBridgeBaseURL } from 'nestbridge';\",\n\t\t\"\",\n\t\t`setNestBridgeBaseURL(${JSON.stringify(options.baseURL)});`,\n\t\t\"\"\n\t].join(\"\\n\");\n};\n//#endregion\n//#region src/virtual-modules/config-virtual-id.ts\n/**\n* Must not contain a colon: webpack treats any `letter+:` prefix as a URL\n* scheme and routes the request past its filesystem resolver entirely,\n* bypassing the resolveId hook this virtual module relies on.\n*/\nvar CONFIG_VIRTUAL_MODULE_ID = \"virtual-nestbridge-config\";\nvar RESOLVED_CONFIG_VIRTUAL_MODULE_ID = `\\0${CONFIG_VIRTUAL_MODULE_ID}`;\n//#endregion\n//#region src/codegen/merge-named-parameters-expression.ts\nvar mergeNamedParametersExpression = (parameters) => {\n\tif (parameters.length === 0) return;\n\tconst whole = parameters.find((parameter) => parameter.name === void 0);\n\tconst named = parameters.filter((parameter) => parameter.name !== void 0);\n\tconst namedEntries = named.map((parameter) => `${JSON.stringify(parameter.name)}: ${parameter.parameterName}`);\n\tif (whole === void 0) return `{ ${namedEntries.join(\", \")} }`;\n\tif (named.length === 0) return whole.parameterName;\n\treturn `{ ...${whole.parameterName}, ${namedEntries.join(\", \")} }`;\n};\n//#endregion\n//#region src/codegen/generate-body-expression.ts\nvar generateBodyExpression = (parameters) => mergeNamedParametersExpression(parameters.filter((parameter) => parameter.kind === \"body\"));\n//#endregion\n//#region src/codegen/generate-headers-expression.ts\nvar generateHeadersExpression = (parameters) => {\n\tconst headerParameters = parameters.filter((parameter) => parameter.kind === \"header\");\n\tif (headerParameters.length === 0) return;\n\treturn `{ ${headerParameters.map((parameter) => `${JSON.stringify(parameter.name)}: ${parameter.parameterName}`).join(\", \")} }`;\n};\n//#endregion\n//#region src/codegen/generate-parameter-list.ts\nvar generateParameterList = (parameters) => [...parameters].sort((a, b) => a.index - b.index).map((parameter) => parameter.parameterName).join(\", \");\n//#endregion\n//#region src/codegen/generate-path-expression.ts\nvar PARAM_TOKEN_PATTERN = /:([A-Za-z0-9_]+)/;\nvar generatePathExpression = (method) => {\n\tconst paramParameters = method.parameters.filter((parameter) => parameter.kind === \"param\");\n\tconst parts = method.path.split(PARAM_TOKEN_PATTERN);\n\tconst expressionParts = [];\n\tparts.forEach((part, index) => {\n\t\tif (!(index % 2 === 1)) {\n\t\t\tif (part.length > 0) expressionParts.push(JSON.stringify(part));\n\t\t\treturn;\n\t\t}\n\t\tconst match = paramParameters.find((parameter) => parameter.name === part);\n\t\texpressionParts.push(match !== void 0 ? `encodeURIComponent(${match.parameterName})` : JSON.stringify(`:${part}`));\n\t});\n\treturn expressionParts.length > 0 ? expressionParts.join(\" + \") : \"''\";\n};\n//#endregion\n//#region src/codegen/generate-query-expression.ts\nvar generateQueryExpression = (parameters) => mergeNamedParametersExpression(parameters.filter((parameter) => parameter.kind === \"query\"));\n//#endregion\n//#region src/codegen/generate-controller-module.ts\nvar generateMethod$1 = (method) => {\n\tconst requestProperties = [`method: ${JSON.stringify(method.httpMethod)}`, `path: ${generatePathExpression(method)}`];\n\tconst queryExpression = generateQueryExpression(method.parameters);\n\tif (queryExpression !== void 0) requestProperties.push(`query: ${queryExpression}`);\n\tconst bodyExpression = generateBodyExpression(method.parameters);\n\tif (bodyExpression !== void 0) requestProperties.push(`body: ${bodyExpression}`);\n\tconst headersExpression = generateHeadersExpression(method.parameters);\n\tif (headersExpression !== void 0) requestProperties.push(`headers: ${headersExpression}`);\n\tif (method.responseKind === \"stream\") requestProperties.push(`responseType: \"blob\"`);\n\treturn [\n\t\t` ${method.name}(${generateParameterList(method.parameters)}) {`,\n\t\t\" return request({\",\n\t\t...requestProperties.map((property) => ` ${property},`),\n\t\t\" });\",\n\t\t\" }\"\n\t].join(\"\\n\");\n};\nvar generateControllerModule = (controller) => {\n\tconst methods = controller.methods.map(generateMethod$1).join(\"\\n\\n\");\n\treturn [\n\t\t`import '${CONFIG_VIRTUAL_MODULE_ID}';`,\n\t\t\"import { request } from 'nestbridge';\",\n\t\t\"\",\n\t\t`export class ${controller.name} {`,\n\t\t\" constructor() {}\",\n\t\t\"\",\n\t\tmethods,\n\t\t\"}\",\n\t\t\"\"\n\t].join(\"\\n\");\n};\n//#endregion\n//#region src/codegen/generate-graphql-document.ts\nvar capitalize = (value) => `${value.charAt(0).toUpperCase()}${value.slice(1)}`;\nvar renderSelectionSet = (fields) => {\n\treturn `{ ${fields.map((field) => field.children === void 0 ? field.name : `${field.name} ${renderSelectionSet(field.children)}`).join(\" \")} }`;\n};\nvar generateGraphqlDocument = (method) => {\n\tconst variableDeclarations = method.arguments.map((argument) => `$${argument.name}: ${argument.graphqlType}`).join(\", \");\n\tconst fieldArguments = method.arguments.map((argument) => `${argument.name}: $${argument.name}`).join(\", \");\n\tconst variablesClause = variableDeclarations.length > 0 ? `(${variableDeclarations})` : \"\";\n\tconst fieldArgumentsClause = fieldArguments.length > 0 ? `(${fieldArguments})` : \"\";\n\tconst fieldSelection = method.selection.length > 0 ? ` ${renderSelectionSet(method.selection)}` : \"\";\n\treturn `${method.operationKind} ${capitalize(method.name)}${variablesClause} { ${method.operationName}${fieldArgumentsClause}${fieldSelection} }`;\n};\n//#endregion\n//#region src/codegen/generate-resolver-argument-list.ts\nvar generateResolverArgumentList = (resolverArguments) => [...resolverArguments].sort((a, b) => a.index - b.index).map((argument) => argument.parameterName).join(\", \");\n//#endregion\n//#region src/codegen/generate-resolver-module.ts\nvar generateVariablesExpression = (resolverArguments) => {\n\tif (resolverArguments.length === 0) return;\n\treturn `{ ${resolverArguments.map((argument) => `${JSON.stringify(argument.name)}: ${argument.parameterName}`).join(\", \")} }`;\n};\nvar generateMethod = (method) => {\n\tconst requestProperties = [`document: ${JSON.stringify(generateGraphqlDocument(method))}`];\n\tconst variablesExpression = generateVariablesExpression(method.arguments);\n\tif (variablesExpression !== void 0) requestProperties.push(`variables: ${variablesExpression}`);\n\treturn [\n\t\t` async ${method.name}(${generateResolverArgumentList(method.arguments)}) {`,\n\t\t\" const result = await graphqlRequest({\",\n\t\t...requestProperties.map((property) => ` ${property},`),\n\t\t\" });\",\n\t\t\"\",\n\t\t` return result.${method.operationName};`,\n\t\t\" }\"\n\t].join(\"\\n\");\n};\nvar generateResolverModule = (resolver) => {\n\tconst methods = resolver.methods.map(generateMethod).join(\"\\n\\n\");\n\treturn [\n\t\t`import '${CONFIG_VIRTUAL_MODULE_ID}';`,\n\t\t\"import { graphqlRequest } from 'nestbridge';\",\n\t\t\"\",\n\t\t`export class ${resolver.name} {`,\n\t\t\" constructor() {}\",\n\t\t\"\",\n\t\tmethods,\n\t\t\"}\",\n\t\t\"\"\n\t].join(\"\\n\");\n};\n//#endregion\n//#region src/declarations/mirror-declaration-path.ts\nvar stripLeadingParentSegments = (relativePath) => {\n\tconst segments = relativePath.split(/[\\\\/]/);\n\tconst firstOwnedIndex = segments.findIndex((segment) => segment !== \"..\");\n\treturn segments.slice(firstOwnedIndex === -1 ? segments.length : firstOwnedIndex).join(\"/\");\n};\nvar mirroredDeclarationPath = (root, outputDir, controllerFilePath) => {\n\tconst mirroredPath = stripLeadingParentSegments(relative(root, controllerFilePath)).replace(/\\.ts$/, \".d.ts\");\n\treturn join(root, outputDir, mirroredPath);\n};\n//#endregion\n//#region src/declarations/write-controller-declarations.ts\nvar writeControllerDeclarations = (controllers, root, outputDir) => {\n\tfor (const controller of controllers) {\n\t\tconst outputFilePath = mirroredDeclarationPath(root, outputDir, controller.sourceFile);\n\t\tmkdirSync(dirname(outputFilePath), { recursive: true });\n\t\twriteFileSync(outputFilePath, generateControllerDeclaration(controller, outputFilePath), \"utf-8\");\n\t}\n};\n//#endregion\n//#region src/declarations/write-resolver-declarations.ts\nvar writeResolverDeclarations = (resolvers, root, outputDir) => {\n\tfor (const resolver of resolvers) {\n\t\tconst outputFilePath = mirroredDeclarationPath(root, outputDir, resolver.sourceFile);\n\t\tmkdirSync(dirname(outputFilePath), { recursive: true });\n\t\twriteFileSync(outputFilePath, generateControllerDeclaration(resolver, outputFilePath), \"utf-8\");\n\t}\n};\n//#endregion\n//#region src/discovery/discover-files.ts\nvar discoverFiles = (patterns, root) => {\n\tconst matches = globSync([...patterns], { cwd: root });\n\treturn [...new Set(matches.map((match) => resolve(root, match)))].sort();\n};\n//#endregion\n//#region src/options/nestbridge-options.ts\nvar resolveNestBridgeOptions = (options) => ({\n\tcontrollers: Array.isArray(options.controllers) ? options.controllers : [options.controllers],\n\tresolvers: options.resolvers === void 0 ? [] : Array.isArray(options.resolvers) ? options.resolvers : [options.resolvers],\n\tbaseURL: options.baseURL,\n\tdebug: options.debug ?? false,\n\toutputDir: options.outputDir ?? \".nestbridge\",\n\troot: options.root\n});\n//#endregion\n//#region src/plugin/normalize-path.ts\nvar isWindows = process.platform === \"win32\";\nvar normalizePath = (filePath) => posix.normalize(isWindows ? filePath.replaceAll(\"\\\\\", \"/\") : filePath);\n//#endregion\n//#region src/plugin/controller-registry.ts\nvar createControllerRegistry = (patterns, root) => {\n\tconst controllersByFile = /* @__PURE__ */ new Map();\n\tconst refresh = () => {\n\t\tcontrollersByFile.clear();\n\t\tconst { controllers, diagnostics } = analyzeControllers(discoverFiles(patterns, root));\n\t\tfor (const controller of controllers) controllersByFile.set(normalizePath(controller.sourceFile), controller);\n\t\treturn {\n\t\t\tcontrollers,\n\t\t\tdiagnostics\n\t\t};\n\t};\n\treturn {\n\t\trefresh,\n\t\tget: (filePath) => controllersByFile.get(filePath),\n\t\thas: (filePath) => controllersByFile.has(filePath),\n\t\tall: () => [...controllersByFile.values()]\n\t};\n};\n//#endregion\n//#region src/plugin/resolver-registry.ts\nvar createResolverRegistry = (patterns, root) => {\n\tconst resolversByFile = /* @__PURE__ */ new Map();\n\tconst refresh = () => {\n\t\tresolversByFile.clear();\n\t\tconst { resolvers, diagnostics } = analyzeResolvers(discoverFiles(patterns, root));\n\t\tfor (const resolver of resolvers) resolversByFile.set(normalizePath(resolver.sourceFile), resolver);\n\t\treturn {\n\t\t\tresolvers,\n\t\t\tdiagnostics\n\t\t};\n\t};\n\treturn {\n\t\trefresh,\n\t\tget: (filePath) => resolversByFile.get(filePath),\n\t\thas: (filePath) => resolversByFile.has(filePath),\n\t\tall: () => [...resolversByFile.values()]\n\t};\n};\n//#endregion\n//#region src/plugin/nestbridge-unplugin-factory.ts\nvar reportDiagnostics = (diagnostics, watchMode) => {\n\tfor (const diagnostic of diagnostics) {\n\t\tconst message = formatDiagnostic(diagnostic);\n\t\tif (watchMode === false) throw new Error(message);\n\t\tconsole.warn(message);\n\t}\n};\nvar nestBridgeUnplugin = createUnplugin((options, meta) => {\n\tconst resolvedOptions = resolveNestBridgeOptions(options);\n\tlet root = resolvedOptions.root ?? process.cwd();\n\tlet controllerRegistry;\n\tlet resolverRegistry;\n\tconst log = (message) => {\n\t\tif (resolvedOptions.debug) console.log(`[nestbridge] ${message}`);\n\t};\n\tconst runAnalysis = () => {\n\t\tconst { controllers, diagnostics: controllerDiagnostics } = controllerRegistry.refresh();\n\t\tconst { resolvers, diagnostics: resolverDiagnostics } = resolverRegistry.refresh();\n\t\treportDiagnostics([...controllerDiagnostics, ...resolverDiagnostics], meta.watchMode);\n\t\twriteControllerDeclarations(controllers, root, resolvedOptions.outputDir);\n\t\twriteResolverDeclarations(resolvers, root, resolvedOptions.outputDir);\n\t\tlog(`analyzed ${controllers.length} controller(s), ${resolvers.length} resolver(s), ${controllerDiagnostics.length + resolverDiagnostics.length} diagnostic(s)`);\n\t};\n\treturn {\n\t\tname: \"nestbridge\",\n\t\tenforce: \"pre\",\n\t\tbuildStart() {\n\t\t\tcontrollerRegistry = createControllerRegistry(resolvedOptions.controllers, root);\n\t\t\tresolverRegistry = createResolverRegistry(resolvedOptions.resolvers, root);\n\t\t\trunAnalysis();\n\t\t},\n\t\tresolveId(source) {\n\t\t\tif (source === \"virtual-nestbridge-config\") return RESOLVED_CONFIG_VIRTUAL_MODULE_ID;\n\t\t\treturn null;\n\t\t},\n\t\tload(id) {\n\t\t\tif (id === RESOLVED_CONFIG_VIRTUAL_MODULE_ID) return generateConfigModule(resolvedOptions);\n\t\t\treturn null;\n\t\t},\n\t\ttransform(_code, id) {\n\t\t\tconst absolutePath = normalizePath(id);\n\t\t\tconst controller = controllerRegistry.get(absolutePath);\n\t\t\tif (controller !== void 0) return generateControllerModule(controller);\n\t\t\tconst resolver = resolverRegistry.get(absolutePath);\n\t\t\tif (resolver !== void 0) return generateResolverModule(resolver);\n\t\t\treturn null;\n\t\t},\n\t\twatchChange(id) {\n\t\t\tconst changedFile = normalizePath(id);\n\t\t\tconst wasTracked = controllerRegistry.has(changedFile) || resolverRegistry.has(changedFile);\n\t\t\tconst isTrackedNow = discoverFiles(resolvedOptions.controllers, root).map(normalizePath).includes(changedFile) || discoverFiles(resolvedOptions.resolvers, root).map(normalizePath).includes(changedFile);\n\t\t\tif (!wasTracked && !isTrackedNow) return;\n\t\t\trunAnalysis();\n\t\t\tlog(`nestbridge source changed: ${changedFile}`);\n\t\t},\n\t\tvite: { configResolved(config) {\n\t\t\tif (resolvedOptions.root === void 0) root = config.root;\n\t\t} }\n\t};\n});\n//#endregion\n//#region src/version.ts\nvar VERSION = \"2.0.4\";\n//#endregion\nexport { VERSION, nestBridgeUnplugin };\n\n//# sourceMappingURL=nestbridge.unplugin.js.map","{\n \"name\": \"@nestbridge/webpack\",\n \"version\": \"2.0.4\",\n \"type\": \"module\",\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/MDReal32/nestbridge.git\",\n \"directory\": \"packages/webpack\"\n },\n \"main\": \"./build/nestbridge.webpack.js\",\n \"types\": \"./build/nestbridge.webpack.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./build/nestbridge.webpack.d.ts\",\n \"import\": \"./build/nestbridge.webpack.js\"\n }\n },\n \"files\": [\n \"build\"\n ],\n \"scripts\": {\n \"build\": \"vite build\",\n \"test\": \"vitest run\",\n \"typecheck\": \"tsc -p tsconfig.json --noEmit\",\n \"lint\": \"biome check .\"\n },\n \"dependencies\": {\n \"@nestbridge/unplugin\": \"workspace:*\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^26.4.1\",\n \"esbuild-loader\": \"^4.5.0\",\n \"rolldown-plugin-dts\": \"^0.28.5\",\n \"typescript\": \"^7.0.2\",\n \"vite\": \"^8.2.2\",\n \"vitest\": \"^5.0.0\",\n \"webpack\": \"^5.110.3\"\n },\n \"peerDependencies\": {\n \"webpack\": \"^5.110.3\"\n }\n}\n","import { version } from '../package.json';\n\nexport const VERSION: string = version;\n","import { type NestBridgeOptions, nestBridgeUnplugin } from '@nestbridge/unplugin';\nimport type { WebpackPluginInstance } from 'webpack';\n\nexport type { NestBridgeOptions } from '@nestbridge/unplugin';\nexport const nestBridge: (options: NestBridgeOptions) => WebpackPluginInstance =\n nestBridgeUnplugin.webpack;\nexport { VERSION } from './version';\n"],"mappings":"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"}
|