{"version":3,"sources":["jsdelivr-header.js","/npm/nice-grpc-server-reflection@3.0.2/lib/index.js"],"names":[],"mappings":"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","file":"/npm/nice-grpc-server-reflection@3.0.2/lib/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/nice-grpc-server-reflection@3.0.2/lib/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ServerReflectionService = void 0;\nexports.ServerReflection = ServerReflection;\nconst nice_grpc_1 = require(\"nice-grpc\");\nconst descriptor_pb_1 = require(\"google-protobuf/google/protobuf/descriptor_pb\");\nconst reflection_pb_1 = require(\"./proto/grpc/reflection/v1/reflection_pb\");\nconst google_protobuf_1 = require(\"google-protobuf\");\nvar reflection_grpc_pb_1 = require(\"./proto/grpc/reflection/v1/reflection_grpc_pb\");\nObject.defineProperty(exports, \"ServerReflectionService\", { enumerable: true, get: function () { return reflection_grpc_pb_1.ServerReflectionService; } });\n/**\n * Deserialization implementation of `google.protobuf.FileDescriptorSet` able\n * to track the source slice for each file.\n *\n * The deserialization logic is based on the protobuf definitions and the code\n * generated in the `google-protobuf` package.\n *\n * For each deserialized file descriptor, the source slice is attached to it\n * in the `fileSource` weakmap.\n */\nfunction deserializeFileDescriptorSetWithFileSource(bytes, fileSource) {\n    const reader = new google_protobuf_1.BinaryReader(bytes);\n    const msg = new descriptor_pb_1.FileDescriptorSet();\n    while (reader.nextField()) {\n        if (reader.isEndGroup()) {\n            break;\n        }\n        const field = reader.getFieldNumber();\n        switch (field) {\n            case 1: {\n                const value = new descriptor_pb_1.FileDescriptorProto();\n                // offset of the message start, null if the reader is never called\n                let start = null;\n                reader.readMessage(value, (msg, binaryReader) => {\n                    if (start === null) {\n                        start = binaryReader.getCursor();\n                    }\n                    return descriptor_pb_1.FileDescriptorProto.deserializeBinaryFromReader(msg, binaryReader);\n                });\n                const end = reader.getCursor();\n                msg.addFile(value);\n                if (start !== null && start <= end) {\n                    fileSource.set(value, bytes.slice(start, end));\n                }\n                else {\n                    throw new Error('Failed to retrieve file descriptor source slice: reader callback not called');\n                }\n                break;\n            }\n            default: {\n                reader.skipField();\n                break;\n            }\n        }\n    }\n    return msg;\n}\n/**\n * Implement the [`grpc.reflection.v1.ServerReflection`](https://github.com/grpc/grpc-proto/blob/master/grpc/reflection/v1/reflection.proto)\n * service for the provided file descriptor set.\n *\n * @param protoset Protobuf-encoded file descriptor set. This is a\n *   protobuf-encoded [google.protobuf.FileDescriptorSet](https://github.com/protocolbuffers/protobuf/blob/89c585602af7d28646ce92cd3abba07cfdad7fa6/src/google/protobuf/descriptor.proto#L56)\n *   value. It is usually generated by the protobuf compiler using the\n *   flag `--descriptor_set_out`. If using the option `fdProtoMode: \"slice\"`\n *   (default), this value is assumed to be an immutable `Uint8Array` value.\n *   If you can't guarantee immutability, clone the `protoset` value before\n *   passing it to this function (for example, using\n *   `Uint8Array.from(protoset)`).\n * @param serviceNames Allowlist specifying the full name of services to expose.\n *   An empty list means that no service will be exposed.\n */\nfunction ServerReflection(protoset, serviceNames) {\n    // Map from file descriptor values to their protobuf-encoded representation\n    const fdBytes = new WeakMap();\n    const fileDescriptorSet = deserializeFileDescriptorSetWithFileSource(protoset, fdBytes);\n    function findSymbol(symbol, descriptor, prefix = '') {\n        if (descriptor instanceof descriptor_pb_1.FileDescriptorProto) {\n            const packageName = descriptor.getPackage();\n            const packagePrefix = packageName == null ? '' : `${packageName}.`;\n            return (descriptor\n                .getMessageTypeList()\n                .find(type => findSymbol(symbol, type, packagePrefix)) ||\n                descriptor\n                    .getEnumTypeList()\n                    .find(type => findSymbol(symbol, type, packagePrefix)) ||\n                descriptor\n                    .getServiceList()\n                    .find(type => findSymbol(symbol, type, packagePrefix)));\n        }\n        const fullName = prefix + descriptor.getName();\n        if (symbol === fullName) {\n            return descriptor;\n        }\n        if (descriptor instanceof descriptor_pb_1.DescriptorProto) {\n            const messagePrefix = `${fullName}.`;\n            return (descriptor\n                .getNestedTypeList()\n                .find(type => findSymbol(symbol, type, messagePrefix)) ||\n                descriptor\n                    .getEnumTypeList()\n                    .find(type => findSymbol(symbol, type, messagePrefix)));\n        }\n        if (descriptor instanceof descriptor_pb_1.ServiceDescriptorProto) {\n            const servicePrefix = `${fullName}.`;\n            return descriptor\n                .getMethodList()\n                .find(method => findSymbol(symbol, method, servicePrefix));\n        }\n        return undefined;\n    }\n    function handleRequest(request) {\n        switch (request.getMessageRequestCase()) {\n            case reflection_pb_1.ServerReflectionRequest.MessageRequestCase.FILE_BY_FILENAME: {\n                const filename = request.getFileByFilename();\n                const fileDescriptorProto = fileDescriptorSet\n                    .getFileList()\n                    .find(file => file.getName() === filename);\n                const fileDescriptorBytes = fileDescriptorProto !== undefined\n                    ? fdBytes.get(fileDescriptorProto)\n                    : undefined;\n                if (fileDescriptorBytes == null) {\n                    return new reflection_pb_1.ServerReflectionResponse().setErrorResponse(new reflection_pb_1.ErrorResponse()\n                        .setErrorCode(nice_grpc_1.Status.NOT_FOUND)\n                        .setErrorMessage(`File not found: ${filename}`));\n                }\n                return new reflection_pb_1.ServerReflectionResponse()\n                    .setOriginalRequest(request)\n                    .setFileDescriptorResponse(new reflection_pb_1.FileDescriptorResponse().setFileDescriptorProtoList([\n                    fileDescriptorBytes,\n                ]));\n            }\n            case reflection_pb_1.ServerReflectionRequest.MessageRequestCase.FILE_CONTAINING_SYMBOL: {\n                const symbol = request.getFileContainingSymbol();\n                const fileDescriptorProto = fileDescriptorSet\n                    .getFileList()\n                    .find(file => findSymbol(symbol, file) != null);\n                const fileDescriptorBytes = fileDescriptorProto !== undefined\n                    ? fdBytes.get(fileDescriptorProto)\n                    : undefined;\n                if (fileDescriptorBytes == null) {\n                    return new reflection_pb_1.ServerReflectionResponse().setErrorResponse(new reflection_pb_1.ErrorResponse()\n                        .setErrorCode(nice_grpc_1.Status.NOT_FOUND)\n                        .setErrorMessage(`Symbol not found: ${symbol}`));\n                }\n                return new reflection_pb_1.ServerReflectionResponse()\n                    .setOriginalRequest(request)\n                    .setFileDescriptorResponse(new reflection_pb_1.FileDescriptorResponse().setFileDescriptorProtoList([\n                    fileDescriptorBytes,\n                ]));\n            }\n            case reflection_pb_1.ServerReflectionRequest.MessageRequestCase\n                .FILE_CONTAINING_EXTENSION:\n                {\n                    const extensionRequest = request.getFileContainingExtension();\n                    const containingType = extensionRequest.getContainingType();\n                    const extensionNumber = extensionRequest.getExtensionNumber();\n                    const fileDescriptorProto = fileDescriptorSet\n                        .getFileList()\n                        .find(file => {\n                        const descriptor = findSymbol(containingType, file);\n                        return (descriptor instanceof descriptor_pb_1.DescriptorProto &&\n                            descriptor\n                                .getExtensionList()\n                                .some(extension => extensionNumber === extension.getNumber()));\n                    });\n                    const fileDescriptorBytes = fileDescriptorProto !== undefined\n                        ? fdBytes.get(fileDescriptorProto)\n                        : undefined;\n                    if (fileDescriptorBytes == null) {\n                        return new reflection_pb_1.ServerReflectionResponse().setErrorResponse(new reflection_pb_1.ErrorResponse()\n                            .setErrorCode(nice_grpc_1.Status.NOT_FOUND)\n                            .setErrorMessage(`Extension not found: ${containingType}(${extensionNumber})`));\n                    }\n                    return new reflection_pb_1.ServerReflectionResponse()\n                        .setOriginalRequest(request)\n                        .setFileDescriptorResponse(new reflection_pb_1.FileDescriptorResponse().setFileDescriptorProtoList([\n                        fileDescriptorBytes,\n                    ]));\n                }\n            case reflection_pb_1.ServerReflectionRequest.MessageRequestCase.LIST_SERVICES: {\n                return new reflection_pb_1.ServerReflectionResponse()\n                    .setOriginalRequest(request)\n                    .setListServicesResponse(new reflection_pb_1.ListServiceResponse().setServiceList(serviceNames.map(serviceName => new reflection_pb_1.ServiceResponse().setName(serviceName))));\n            }\n            case reflection_pb_1.ServerReflectionRequest.MessageRequestCase\n                .ALL_EXTENSION_NUMBERS_OF_TYPE:\n                {\n                    const type = request.getAllExtensionNumbersOfType();\n                    return new reflection_pb_1.ServerReflectionResponse().setAllExtensionNumbersResponse(new reflection_pb_1.ExtensionNumberResponse().setBaseTypeName(type));\n                }\n        }\n        return new reflection_pb_1.ServerReflectionResponse().setErrorResponse(new reflection_pb_1.ErrorResponse()\n            .setErrorCode(nice_grpc_1.Status.UNIMPLEMENTED)\n            .setErrorMessage('Not implemented'));\n    }\n    return {\n        async *serverReflectionInfo(requests) {\n            for await (const request of requests) {\n                yield handleRequest(request);\n            }\n        },\n    };\n}\n"]}