| | "use strict"; |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | Object.defineProperty(exports, "__esModule", { value: true }); |
| | exports.addCommonProtos = exports.loadProtosWithOptionsSync = exports.loadProtosWithOptions = void 0; |
| | const fs = require("fs"); |
| | const path = require("path"); |
| | const Protobuf = require("protobufjs"); |
| | function addIncludePathResolver(root, includePaths) { |
| | const originalResolvePath = root.resolvePath; |
| | root.resolvePath = (origin, target) => { |
| | if (path.isAbsolute(target)) { |
| | return target; |
| | } |
| | for (const directory of includePaths) { |
| | const fullPath = path.join(directory, target); |
| | try { |
| | fs.accessSync(fullPath, fs.constants.R_OK); |
| | return fullPath; |
| | } |
| | catch (err) { |
| | continue; |
| | } |
| | } |
| | process.emitWarning(`${target} not found in any of the include paths ${includePaths}`); |
| | return originalResolvePath(origin, target); |
| | }; |
| | } |
| | async function loadProtosWithOptions(filename, options) { |
| | const root = new Protobuf.Root(); |
| | options = options || {}; |
| | if (!!options.includeDirs) { |
| | if (!Array.isArray(options.includeDirs)) { |
| | return Promise.reject(new Error('The includeDirs option must be an array')); |
| | } |
| | addIncludePathResolver(root, options.includeDirs); |
| | } |
| | const loadedRoot = await root.load(filename, options); |
| | loadedRoot.resolveAll(); |
| | return loadedRoot; |
| | } |
| | exports.loadProtosWithOptions = loadProtosWithOptions; |
| | function loadProtosWithOptionsSync(filename, options) { |
| | const root = new Protobuf.Root(); |
| | options = options || {}; |
| | if (!!options.includeDirs) { |
| | if (!Array.isArray(options.includeDirs)) { |
| | throw new Error('The includeDirs option must be an array'); |
| | } |
| | addIncludePathResolver(root, options.includeDirs); |
| | } |
| | const loadedRoot = root.loadSync(filename, options); |
| | loadedRoot.resolveAll(); |
| | return loadedRoot; |
| | } |
| | exports.loadProtosWithOptionsSync = loadProtosWithOptionsSync; |
| | |
| | |
| | |
| | function addCommonProtos() { |
| | |
| | |
| | |
| | const apiDescriptor = require('protobufjs/google/protobuf/api.json'); |
| | const descriptorDescriptor = require('protobufjs/google/protobuf/descriptor.json'); |
| | const sourceContextDescriptor = require('protobufjs/google/protobuf/source_context.json'); |
| | const typeDescriptor = require('protobufjs/google/protobuf/type.json'); |
| | Protobuf.common('api', apiDescriptor.nested.google.nested.protobuf.nested); |
| | Protobuf.common('descriptor', descriptorDescriptor.nested.google.nested.protobuf.nested); |
| | Protobuf.common('source_context', sourceContextDescriptor.nested.google.nested.protobuf.nested); |
| | Protobuf.common('type', typeDescriptor.nested.google.nested.protobuf.nested); |
| | } |
| | exports.addCommonProtos = addCommonProtos; |
| | |