{"version":3,"sources":["../src/index.ts","../src/client.ts","../src/response.ts","../src/request.ts"],"sourcesContent":["import * as grpc from '@grpc/grpc-js'\nimport _ from 'lodash'\nimport gi from 'grpc-inspect'\nimport create from 'grpc-create-metadata'\nimport * as protoLoader from '@grpc/proto-loader'\n\nimport { createClient, GRPCCallerCtor, GRPCCallerInstance } from './client'\nimport { Request as BaseRequest } from './request'\nimport { Response } from './response'\n\nexport { Request } from './request'\nexport { Response } from './response'\n\nexport interface ProtoFileOptions {\n  file: string\n  load?: protoLoader.Options\n}\n\nexport interface CallerDefaults {\n  metadata?: Record<string, unknown>\n  options?: Record<string, unknown>\n}\n\nexport type CallerOptions = Record<string, unknown> & {\n  retry?: unknown\n  interceptors?: unknown[]\n}\n\nexport interface CallerClient extends GRPCCallerInstance {\n  Request: typeof BaseRequest\n  Response: typeof Response\n}\n\nexport interface Caller {\n  (\n    host: string,\n    proto: string | ProtoFileOptions | (new (...args: unknown[]) => grpc.Client),\n    name?: string,\n    credentials?: grpc.ChannelCredentials | false | null,\n    options?: CallerOptions,\n    defaults?: CallerDefaults\n  ): CallerClient\n  metadata: typeof create\n  wrap: typeof wrap\n}\n\nconst callerImpl = function caller (\n  host: string,\n  proto: string | ProtoFileOptions | (new (...args: unknown[]) => grpc.Client),\n  name?: string,\n  credentials?: grpc.ChannelCredentials | false | null,\n  options?: CallerOptions,\n  defaults?: CallerDefaults\n): CallerClient {\n  let Ctor: (new (host: string, credentials: grpc.ChannelCredentials, options?: object) => grpc.Client) | undefined\n\n  if (_.isString(proto) || (_.isObject(proto) && (proto as ProtoFileOptions).file)) {\n    let protoFilePath: string = proto as string\n    let loadOptions: protoLoader.Options = {}\n\n    if (_.isObject(proto) && (proto as ProtoFileOptions).file) {\n      protoFilePath = (proto as ProtoFileOptions).file\n      loadOptions = (proto as ProtoFileOptions).load ?? {}\n    }\n\n    const packageDefinition = protoLoader.loadSync(protoFilePath, loadOptions)\n    const loaded = grpc.loadPackageDefinition(packageDefinition)\n    const descriptor = gi(loaded)\n    if (!descriptor) {\n      throw new Error('Error parsing protocol buffer')\n    }\n\n    Ctor = descriptor.client(name as string) as typeof Ctor\n    if (!Ctor) {\n      throw new Error(`Service name ${name} not found in protocol buffer definition`)\n    }\n  } else if (_.isObject(proto)) {\n    Ctor = proto as typeof Ctor\n    // legacy positional shifting kept for backwards compatibility\n    options = credentials as unknown as CallerOptions\n    defaults = options as unknown as CallerDefaults\n    credentials = name as unknown as grpc.ChannelCredentials\n  }\n\n  if (!Ctor) {\n    throw new Error('Could not resolve gRPC client constructor')\n  }\n\n  const client = new Ctor(host, (credentials as grpc.ChannelCredentials) || grpc.credentials.createInsecure(), options)\n  const { metadata: defaultMetadata, options: defaultOptions } = Object.assign({}, defaults)\n\n  return wrap(client, defaultMetadata, defaultOptions)\n} as Caller\n\n/**\n * Wrap an existing gRPC client instance.\n */\nexport function wrap (client: grpc.Client, metadata?: Record<string, unknown>, options?: Record<string, unknown>): CallerClient {\n  const GRPCCaller: GRPCCallerCtor = createClient(Object.getPrototypeOf(client))\n\n  class Request<P = unknown, R = unknown> extends BaseRequest<P, R> {}\n\n  const instance = new GRPCCaller(client as never, metadata, options) as CallerClient\n\n  instance.Request = Request\n  ;(instance.Request.prototype as { client?: unknown }).client = instance\n  instance.Response = Response\n\n  return instance\n}\n\n/**\n * Utility helper function to create a `Metadata` object from a plain object.\n * Re-exported from `grpc-create-metadata`.\n */\nexport const metadata = create\n\ncallerImpl.metadata = create\ncallerImpl.wrap = wrap\n\n// Allow `require('grpc-caller')` to receive the function itself (CJS interop).\n;(callerImpl as unknown as { default: Caller }).default = callerImpl\n\nexport default callerImpl\n","import * as grpc from \"@grpc/grpc-js\";\nimport _ from \"lodash\";\nimport async from \"async\";\nimport create from \"grpc-create-metadata\";\nimport pc from \"promisify-call\";\nimport maybe from \"call-me-maybe\";\n\nimport { Response } from \"./response\";\nimport type { Request as BaseRequest } from \"./request\";\n\ntype AnyMethod = ((...args: unknown[]) => unknown) & {\n\trequestStream?: boolean;\n\tresponseStream?: boolean;\n};\n\ntype ClientLike = grpc.Client & Record<string, AnyMethod>;\n\ninterface Defaults {\n\tmetadata: Record<string, unknown>;\n\toptions: Record<string, unknown>;\n}\n\nexport interface GRPCCallerInstance extends Record<string, unknown> {\n\tclient: ClientLike;\n\tdefaults: Defaults;\n\tcreateOptions(options?: Record<string, unknown>): Record<string, unknown>;\n\tcreateMetadata(\n\t\tmetadata?: grpc.Metadata | Record<string, unknown>,\n\t): grpc.Metadata;\n\texec(\n\t\trequest: BaseRequest,\n\t\tfn?: (err: Error | null, res?: unknown) => void,\n\t): unknown;\n}\n\nexport type GRPCCallerCtor = new (\n\tclient: ClientLike,\n\tmetadata?: Record<string, unknown>,\n\toptions?: Record<string, unknown>,\n) => GRPCCallerInstance;\n\nfunction isGRPCMetadata(obj: unknown): obj is grpc.Metadata {\n\tif (obj instanceof grpc.Metadata) {\n\t\treturn true;\n\t}\n\tif (!obj || typeof obj !== \"object\") {\n\t\treturn false;\n\t}\n\tconst proto = Object.getPrototypeOf(obj) as { getMap?: unknown } | null;\n\treturn !!proto && typeof proto.getMap === \"function\";\n}\n\nfunction createClient(clientProto: object): GRPCCallerCtor {\n\tclass GRPCCaller {\n\t\tclient: ClientLike;\n\t\tdefaults: Defaults;\n\n\t\tconstructor(\n\t\t\tclient: ClientLike,\n\t\t\tmetadata: Record<string, unknown> = {},\n\t\t\toptions: Record<string, unknown> = {},\n\t\t) {\n\t\t\tthis.client = client;\n\t\t\tthis.defaults = { metadata, options };\n\t\t}\n\n\t\tcreateOptions(options?: Record<string, unknown>): Record<string, unknown> {\n\t\t\treturn _.merge({}, this.defaults.options, options);\n\t\t}\n\n\t\tcreateMetadata(\n\t\t\tmetadata?: grpc.Metadata | Record<string, unknown>,\n\t\t): grpc.Metadata {\n\t\t\tif (metadata && isGRPCMetadata(metadata)) {\n\t\t\t\tconst metadataClone = metadata.clone();\n\t\t\t\tfor (const key of Object.keys(this.defaults.metadata)) {\n\t\t\t\t\tif (metadataClone.get(key).length === 0) {\n\t\t\t\t\t\tmetadataClone.set(\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tthis.defaults.metadata[key] as grpc.MetadataValue,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn metadataClone;\n\t\t\t}\n\t\t\treturn create(_.merge({}, this.defaults.metadata, metadata));\n\t\t}\n\t}\n\n\tpromisifyClientProto(GRPCCaller.prototype, clientProto);\n\tcreateExec(GRPCCaller.prototype);\n\n\treturn GRPCCaller as unknown as GRPCCallerCtor;\n}\n\nfunction promisifyClientProto(targetProto: object, clientProto: object): void {\n\t_.forOwn(clientProto, (v: AnyMethod, k: string) => {\n\t\tif (k === \"constructor\") {\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof (clientProto as Record<string, unknown>)[k] !== \"function\") {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!v.requestStream && !v.responseStream) {\n\t\t\t(targetProto as Record<string, unknown>)[k] = function (\n\t\t\t\tthis: GRPCCallerInstance,\n\t\t\t\targ: unknown,\n\t\t\t\tmetadata?: unknown,\n\t\t\t\toptions?: unknown,\n\t\t\t\tfn?: unknown,\n\t\t\t) {\n\t\t\t\tif (_.isFunction(options)) {\n\t\t\t\t\tfn = options;\n\t\t\t\t\toptions = null;\n\t\t\t\t}\n\t\t\t\tif (_.isFunction(metadata)) {\n\t\t\t\t\tfn = metadata;\n\t\t\t\t\tmetadata = null;\n\t\t\t\t\toptions = null;\n\t\t\t\t}\n\n\t\t\t\tconst callOptions = this.createOptions(\n\t\t\t\t\toptions as Record<string, unknown>,\n\t\t\t\t);\n\t\t\t\tconst callMetadata = this.createMetadata(\n\t\t\t\t\tmetadata as grpc.Metadata | Record<string, unknown>,\n\t\t\t\t);\n\n\t\t\t\tif (_.has(callOptions, \"retry\")) {\n\t\t\t\t\tconst retryOpts = (callOptions as { retry: unknown }).retry;\n\t\t\t\t\tconst cleanCallOpts = _.omit(callOptions, \"retry\");\n\n\t\t\t\t\tif (_.isFunction(fn)) {\n\t\t\t\t\t\tasync.retry(\n\t\t\t\t\t\t\tretryOpts as never,\n\t\t\t\t\t\t\t(rCb: (err: Error | null, res?: unknown) => void) => {\n\t\t\t\t\t\t\t\tv.call(this.client, arg, callMetadata, cleanCallOpts, rCb);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfn as (err: Error | null | undefined, res?: unknown) => void,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\t\tasync.retry(\n\t\t\t\t\t\t\tretryOpts as never,\n\t\t\t\t\t\t\t(rCb: (err: Error | null, res?: unknown) => void) => {\n\t\t\t\t\t\t\t\tv.call(this.client, arg, callMetadata, cleanCallOpts, rCb);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t(err, res) => {\n\t\t\t\t\t\t\t\tif (err) reject(err);\n\t\t\t\t\t\t\t\telse resolve(res);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst args = _.compact([\n\t\t\t\t\targ,\n\t\t\t\t\tcallMetadata,\n\t\t\t\t\tcallOptions,\n\t\t\t\t\tfn,\n\t\t\t\t]) as unknown[];\n\t\t\t\treturn pc(this.client, v as unknown as Function, ...args);\n\t\t\t};\n\t\t} else if (!v.requestStream && v.responseStream) {\n\t\t\t(targetProto as Record<string, unknown>)[k] = function (\n\t\t\t\tthis: GRPCCallerInstance,\n\t\t\t\targ: unknown,\n\t\t\t\tmetadata?: unknown,\n\t\t\t\toptions?: unknown,\n\t\t\t) {\n\t\t\t\tconst callOptions = this.createOptions(\n\t\t\t\t\toptions as Record<string, unknown>,\n\t\t\t\t);\n\t\t\t\tconst callMetadata = this.createMetadata(\n\t\t\t\t\tmetadata as grpc.Metadata | Record<string, unknown>,\n\t\t\t\t);\n\t\t\t\tconst args = _.compact([arg, callMetadata, callOptions]) as unknown[];\n\t\t\t\treturn v.call(this.client, ...args);\n\t\t\t};\n\t\t} else if (v.requestStream && !v.responseStream) {\n\t\t\t(targetProto as Record<string, unknown>)[k] = function (\n\t\t\t\tthis: GRPCCallerInstance,\n\t\t\t\tmetadata?: unknown,\n\t\t\t\toptions?: unknown,\n\t\t\t\tfn?: unknown,\n\t\t\t) {\n\t\t\t\tif (_.isFunction(options)) {\n\t\t\t\t\tfn = options;\n\t\t\t\t\toptions = undefined;\n\t\t\t\t}\n\t\t\t\tif (_.isFunction(metadata)) {\n\t\t\t\t\tfn = metadata;\n\t\t\t\t\tmetadata = undefined;\n\t\t\t\t}\n\n\t\t\t\tconst callOptions = this.createOptions(\n\t\t\t\t\toptions as Record<string, unknown>,\n\t\t\t\t);\n\t\t\t\tconst callMetadata = this.createMetadata(\n\t\t\t\t\tmetadata as grpc.Metadata | Record<string, unknown>,\n\t\t\t\t);\n\n\t\t\t\tif (fn) {\n\t\t\t\t\tconst args = _.compact([callMetadata, callOptions, fn]) as unknown[];\n\t\t\t\t\treturn v.call(this.client, ...args);\n\t\t\t\t}\n\n\t\t\t\tconst r: { call?: unknown; res?: Promise<unknown> } = {};\n\t\t\t\tconst p = new Promise((resolve, reject) => {\n\t\t\t\t\tconst args = _.compact([callMetadata, callOptions]) as unknown[];\n\t\t\t\t\targs.push((err: Error | null, result?: unknown) => {\n\t\t\t\t\t\tif (err) reject(err);\n\t\t\t\t\t\telse resolve(result);\n\t\t\t\t\t});\n\t\t\t\t\tr.call = v.call(this.client, ...args);\n\t\t\t\t});\n\t\t\t\tr.res = p;\n\t\t\t\treturn r;\n\t\t\t};\n\t\t} else if (v.requestStream && v.responseStream) {\n\t\t\t(targetProto as Record<string, unknown>)[k] = function (\n\t\t\t\tthis: GRPCCallerInstance,\n\t\t\t\tmetadata?: unknown,\n\t\t\t\toptions?: unknown,\n\t\t\t) {\n\t\t\t\tconst callOptions = this.createOptions(\n\t\t\t\t\toptions as Record<string, unknown>,\n\t\t\t\t);\n\t\t\t\tconst callMetadata = this.createMetadata(\n\t\t\t\t\tmetadata as grpc.Metadata | Record<string, unknown>,\n\t\t\t\t);\n\t\t\t\tconst args = _.compact([callMetadata, callOptions]) as unknown[];\n\t\t\t\treturn v.call(this.client, ...args);\n\t\t\t};\n\t\t}\n\t});\n}\n\nfunction createExec(clientProto: object): void {\n\t(clientProto as Record<string, unknown>).exec = function exec(\n\t\tthis: GRPCCallerInstance,\n\t\trequest: BaseRequest,\n\t\tfn?: (err: Error | null, res?: unknown) => void,\n\t) {\n\t\tconst methodName = request.methodName;\n\n\t\tconst implFn = this.client[methodName] as AnyMethod | undefined;\n\t\tif (typeof implFn !== \"function\") {\n\t\t\tthrow new Error(`Invalid method: ${methodName}`);\n\t\t}\n\n\t\tif (\n\t\t\t(implFn.responseStream && !implFn.requestStream) ||\n\t\t\t(implFn.responseStream && implFn.requestStream)\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t`Invalid call: ${methodName} cannot be called using Request API`,\n\t\t\t);\n\t\t}\n\n\t\tconst { param, retry, responseMetadata, responseStatus } = request;\n\n\t\tconst options = this.createOptions(request.options);\n\t\tconst metadata = this.createMetadata(request.metadata);\n\n\t\tif (!implFn.responseStream && !implFn.requestStream) {\n\t\t\treturn maybe(\n\t\t\t\tfn as never,\n\t\t\t\tnew Promise((resolve, reject) => {\n\t\t\t\t\tconst response = new Response();\n\t\t\t\t\tconst r = retry ?? 0;\n\n\t\t\t\t\tasync.retry(\n\t\t\t\t\t\tr as never,\n\t\t\t\t\t\t(rCb: (err: Error | null, res?: unknown) => void) => {\n\t\t\t\t\t\t\tconst call = (this as Record<string, unknown>)[\n\t\t\t\t\t\t\t\tmethodName\n\t\t\t\t\t\t\t] as Function;\n\t\t\t\t\t\t\tconst callRet = call.call(this, param, metadata, options, rCb);\n\t\t\t\t\t\t\tresponse.call = callRet;\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tresponseMetadata &&\n\t\t\t\t\t\t\t\tcallRet &&\n\t\t\t\t\t\t\t\ttypeof (callRet as { on?: unknown }).on === \"function\"\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t(callRet as { on: Function }).on(\n\t\t\t\t\t\t\t\t\t\"metadata\",\n\t\t\t\t\t\t\t\t\t(md: grpc.Metadata) => {\n\t\t\t\t\t\t\t\t\t\tresponse.metadata = md;\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tresponseStatus &&\n\t\t\t\t\t\t\t\tcallRet &&\n\t\t\t\t\t\t\t\ttypeof (callRet as { on?: unknown }).on === \"function\"\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t(callRet as { on: Function }).on(\n\t\t\t\t\t\t\t\t\t\"status\",\n\t\t\t\t\t\t\t\t\t(status: grpc.StatusObject) => {\n\t\t\t\t\t\t\t\t\t\tresponse.status = status;\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t(err, res) => {\n\t\t\t\t\t\t\tresponse.response = res;\n\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\treturn reject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn resolve(response);\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tif (implFn.requestStream && !implFn.responseStream) {\n\t\t\tconst r: { call?: unknown; res?: Promise<unknown> } = {};\n\t\t\tconst response = new Response();\n\n\t\t\tconst callMethod = (this as Record<string, unknown>)[\n\t\t\t\tmethodName\n\t\t\t] as Function;\n\t\t\tconst { call, res } = callMethod.call(this, metadata, options) as {\n\t\t\t\tcall: unknown;\n\t\t\t\tres: Promise<unknown>;\n\t\t\t};\n\t\t\tr.call = call;\n\t\t\tresponse.call = call;\n\n\t\t\tif (\n\t\t\t\tresponseMetadata &&\n\t\t\t\tcall &&\n\t\t\t\ttypeof (call as { on?: unknown }).on === \"function\"\n\t\t\t) {\n\t\t\t\t(call as { on: Function }).on(\"metadata\", (md: grpc.Metadata) => {\n\t\t\t\t\tresponse.metadata = md;\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (\n\t\t\t\tresponseStatus &&\n\t\t\t\tcall &&\n\t\t\t\ttypeof (call as { on?: unknown }).on === \"function\"\n\t\t\t) {\n\t\t\t\t(call as { on: Function }).on(\"status\", (status: grpc.StatusObject) => {\n\t\t\t\t\tresponse.status = status;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tr.res = new Promise((resolve, reject) => {\n\t\t\t\tres\n\t\t\t\t\t.then((result) => {\n\t\t\t\t\t\tresponse.response = result;\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t})\n\t\t\t\t\t.catch(reject);\n\t\t\t});\n\n\t\t\tif (fn) {\n\t\t\t\tr.res\n\t\t\t\t\t.then((result) => fn(null, result))\n\t\t\t\t\t.catch(fn as (err: Error) => void);\n\t\t\t}\n\n\t\t\treturn fn ? call : r;\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`Invalid call: ${methodName} cannot be called using Request API`,\n\t\t);\n\t};\n}\n\nexport default createClient;\nexport { createClient };\n","import type { Metadata, StatusObject } from '@grpc/grpc-js'\n\n/**\n * A Response class that encapsulates the response of a call using the `Request` API.\n */\nexport class Response<T = unknown> {\n  call?: unknown\n  response?: T\n  metadata?: Metadata\n  status?: StatusObject\n\n  constructor (call?: unknown, response?: T, metadata?: Metadata, status?: StatusObject) {\n    this.call = call\n    this.response = response\n    this.metadata = metadata\n    this.status = status\n  }\n}\n\nexport default Response\n","import type { Metadata } from '@grpc/grpc-js'\n\nexport type RetryOption = number | { times?: number; interval?: number | ((retryCount: number) => number); errorFilter?: (err: Error) => boolean }\n\n/**\n * A Request class that encapsulates the request of a call.\n */\nexport class Request<P = unknown, R = unknown> {\n  methodName: string\n  param?: P\n  responseMetadata = false\n  responseStatus = false\n  retry: RetryOption | null = null\n  options?: Record<string, unknown>\n  metadata?: Metadata | Record<string, unknown>\n  // Set by the caller wrapper at runtime\n  client!: { exec: (req: Request<P, R>, fn?: (err: Error | null, res?: unknown) => void) => unknown }\n\n  /**\n   * Creates a Request instance.\n   * @param methodName the method name.\n   * @param param the call argument in case of `UNARY` calls.\n   */\n  constructor (methodName: string, param?: P) {\n    if (!methodName) {\n      throw new Error('Request method name required')\n    }\n\n    this.methodName = methodName\n    this.param = param\n  }\n\n  /**\n   * Create a request with call options.\n   */\n  withGrpcOptions (opts: Record<string, unknown>): this {\n    this.options = opts\n    return this\n  }\n\n  /**\n   * Create a request with call metadata.\n   * Can either be a plain object or an instance of `grpc.Metadata`.\n   */\n  withMetadata (metadata: Metadata | Record<string, unknown>): this {\n    this.metadata = metadata\n    return this\n  }\n\n  /**\n   * Create a request with retry options.\n   * The retry option is identical to `async.retry`.\n   */\n  withRetry (retry: RetryOption): this {\n    this.retry = retry\n    return this\n  }\n\n  /**\n   * Create a request indicating whether we want to collect the response metadata.\n   */\n  withResponseMetadata (value: boolean): this {\n    this.responseMetadata = value\n    return this\n  }\n\n  /**\n   * Create a request indicating whether we want to collect the response status metadata.\n   */\n  withResponseStatus (value: boolean): this {\n    this.responseStatus = value\n    return this\n  }\n\n  /**\n   * Execute the request.\n   * @param fn Optional callback. If no callback is provided in case of `UNARY`\n   *           call a Promise is returned. If no callback is provided in case\n   *           of `REQUEST_STREAMING` call an object is returned with `call`\n   *           property being the call stream and `res` property being a\n   *           Promise fulfilled when the call is completed.\n   */\n  exec (fn?: (err: Error | null, res?: unknown) => void): unknown {\n    return this.client.exec(this, fn)\n  }\n}\n\nexport default Request\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAA,QAAsB;AACtB,IAAAC,iBAAc;AACd,0BAAe;AACf,IAAAC,+BAAmB;AACnB,kBAA6B;;;ACJ7B,WAAsB;AACtB,oBAAc;AACd,mBAAkB;AAClB,kCAAmB;AACnB,4BAAe;AACf,2BAAkB;;;ACAX,IAAM,WAAN,MAA4B;AAAA,EAMjC,YAAa,MAAgB,UAAcC,WAAqB,QAAuB;AACrF,SAAK,OAAO;AACZ,SAAK,WAAW;AAChB,SAAK,WAAWA;AAChB,SAAK,SAAS;AAAA,EAChB;AACF;;;ADwBA,SAAS,eAAe,KAAoC;AAC3D,MAAI,eAAoB,eAAU;AACjC,WAAO;AAAA,EACR;AACA,MAAI,CAAC,OAAO,OAAO,QAAQ,UAAU;AACpC,WAAO;AAAA,EACR;AACA,QAAM,QAAQ,OAAO,eAAe,GAAG;AACvC,SAAO,CAAC,CAAC,SAAS,OAAO,MAAM,WAAW;AAC3C;AAEA,SAAS,aAAa,aAAqC;AAAA,EAC1D,MAAM,WAAW;AAAA,IAIhB,YACC,QACAC,YAAoC,CAAC,GACrC,UAAmC,CAAC,GACnC;AACD,WAAK,SAAS;AACd,WAAK,WAAW,EAAE,UAAAA,WAAU,QAAQ;AAAA,IACrC;AAAA,IAEA,cAAc,SAA4D;AACzE,aAAO,cAAAC,QAAE,MAAM,CAAC,GAAG,KAAK,SAAS,SAAS,OAAO;AAAA,IAClD;AAAA,IAEA,eACCD,WACgB;AAChB,UAAIA,aAAY,eAAeA,SAAQ,GAAG;AACzC,cAAM,gBAAgBA,UAAS,MAAM;AACrC,mBAAW,OAAO,OAAO,KAAK,KAAK,SAAS,QAAQ,GAAG;AACtD,cAAI,cAAc,IAAI,GAAG,EAAE,WAAW,GAAG;AACxC,0BAAc;AAAA,cACb;AAAA,cACA,KAAK,SAAS,SAAS,GAAG;AAAA,YAC3B;AAAA,UACD;AAAA,QACD;AACA,eAAO;AAAA,MACR;AACA,iBAAO,4BAAAE,SAAO,cAAAD,QAAE,MAAM,CAAC,GAAG,KAAK,SAAS,UAAUD,SAAQ,CAAC;AAAA,IAC5D;AAAA,EACD;AAEA,uBAAqB,WAAW,WAAW,WAAW;AACtD,aAAW,WAAW,SAAS;AAE/B,SAAO;AACR;AAEA,SAAS,qBAAqB,aAAqB,aAA2B;AAC7E,gBAAAC,QAAE,OAAO,aAAa,CAAC,GAAc,MAAc;AAClD,QAAI,MAAM,eAAe;AACxB;AAAA,IACD;AAEA,QAAI,OAAQ,YAAwC,CAAC,MAAM,YAAY;AACtE;AAAA,IACD;AAEA,QAAI,CAAC,EAAE,iBAAiB,CAAC,EAAE,gBAAgB;AAC1C,MAAC,YAAwC,CAAC,IAAI,SAE7C,KACAD,WACA,SACA,IACC;AACD,YAAI,cAAAC,QAAE,WAAW,OAAO,GAAG;AAC1B,eAAK;AACL,oBAAU;AAAA,QACX;AACA,YAAI,cAAAA,QAAE,WAAWD,SAAQ,GAAG;AAC3B,eAAKA;AACL,UAAAA,YAAW;AACX,oBAAU;AAAA,QACX;AAEA,cAAM,cAAc,KAAK;AAAA,UACxB;AAAA,QACD;AACA,cAAM,eAAe,KAAK;AAAA,UACzBA;AAAA,QACD;AAEA,YAAI,cAAAC,QAAE,IAAI,aAAa,OAAO,GAAG;AAChC,gBAAM,YAAa,YAAmC;AACtD,gBAAM,gBAAgB,cAAAA,QAAE,KAAK,aAAa,OAAO;AAEjD,cAAI,cAAAA,QAAE,WAAW,EAAE,GAAG;AACrB,yBAAAE,QAAM;AAAA,cACL;AAAA,cACA,CAAC,QAAoD;AACpD,kBAAE,KAAK,KAAK,QAAQ,KAAK,cAAc,eAAe,GAAG;AAAA,cAC1D;AAAA,cACA;AAAA,YACD;AACA;AAAA,UACD;AACA,iBAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACvC,yBAAAA,QAAM;AAAA,cACL;AAAA,cACA,CAAC,QAAoD;AACpD,kBAAE,KAAK,KAAK,QAAQ,KAAK,cAAc,eAAe,GAAG;AAAA,cAC1D;AAAA,cACA,CAAC,KAAK,QAAQ;AACb,oBAAI,IAAK,QAAO,GAAG;AAAA,oBACd,SAAQ,GAAG;AAAA,cACjB;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAEA,cAAM,OAAO,cAAAF,QAAE,QAAQ;AAAA,UACtB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD,CAAC;AACD,mBAAO,sBAAAG,SAAG,KAAK,QAAQ,GAA0B,GAAG,IAAI;AAAA,MACzD;AAAA,IACD,WAAW,CAAC,EAAE,iBAAiB,EAAE,gBAAgB;AAChD,MAAC,YAAwC,CAAC,IAAI,SAE7C,KACAJ,WACA,SACC;AACD,cAAM,cAAc,KAAK;AAAA,UACxB;AAAA,QACD;AACA,cAAM,eAAe,KAAK;AAAA,UACzBA;AAAA,QACD;AACA,cAAM,OAAO,cAAAC,QAAE,QAAQ,CAAC,KAAK,cAAc,WAAW,CAAC;AACvD,eAAO,EAAE,KAAK,KAAK,QAAQ,GAAG,IAAI;AAAA,MACnC;AAAA,IACD,WAAW,EAAE,iBAAiB,CAAC,EAAE,gBAAgB;AAChD,MAAC,YAAwC,CAAC,IAAI,SAE7CD,WACA,SACA,IACC;AACD,YAAI,cAAAC,QAAE,WAAW,OAAO,GAAG;AAC1B,eAAK;AACL,oBAAU;AAAA,QACX;AACA,YAAI,cAAAA,QAAE,WAAWD,SAAQ,GAAG;AAC3B,eAAKA;AACL,UAAAA,YAAW;AAAA,QACZ;AAEA,cAAM,cAAc,KAAK;AAAA,UACxB;AAAA,QACD;AACA,cAAM,eAAe,KAAK;AAAA,UACzBA;AAAA,QACD;AAEA,YAAI,IAAI;AACP,gBAAM,OAAO,cAAAC,QAAE,QAAQ,CAAC,cAAc,aAAa,EAAE,CAAC;AACtD,iBAAO,EAAE,KAAK,KAAK,QAAQ,GAAG,IAAI;AAAA,QACnC;AAEA,cAAM,IAAgD,CAAC;AACvD,cAAM,IAAI,IAAI,QAAQ,CAAC,SAAS,WAAW;AAC1C,gBAAM,OAAO,cAAAA,QAAE,QAAQ,CAAC,cAAc,WAAW,CAAC;AAClD,eAAK,KAAK,CAAC,KAAmB,WAAqB;AAClD,gBAAI,IAAK,QAAO,GAAG;AAAA,gBACd,SAAQ,MAAM;AAAA,UACpB,CAAC;AACD,YAAE,OAAO,EAAE,KAAK,KAAK,QAAQ,GAAG,IAAI;AAAA,QACrC,CAAC;AACD,UAAE,MAAM;AACR,eAAO;AAAA,MACR;AAAA,IACD,WAAW,EAAE,iBAAiB,EAAE,gBAAgB;AAC/C,MAAC,YAAwC,CAAC,IAAI,SAE7CD,WACA,SACC;AACD,cAAM,cAAc,KAAK;AAAA,UACxB;AAAA,QACD;AACA,cAAM,eAAe,KAAK;AAAA,UACzBA;AAAA,QACD;AACA,cAAM,OAAO,cAAAC,QAAE,QAAQ,CAAC,cAAc,WAAW,CAAC;AAClD,eAAO,EAAE,KAAK,KAAK,QAAQ,GAAG,IAAI;AAAA,MACnC;AAAA,IACD;AAAA,EACD,CAAC;AACF;AAEA,SAAS,WAAW,aAA2B;AAC9C,EAAC,YAAwC,OAAO,SAAS,KAExD,SACA,IACC;AACD,UAAM,aAAa,QAAQ;AAE3B,UAAM,SAAS,KAAK,OAAO,UAAU;AACrC,QAAI,OAAO,WAAW,YAAY;AACjC,YAAM,IAAI,MAAM,mBAAmB,UAAU,EAAE;AAAA,IAChD;AAEA,QACE,OAAO,kBAAkB,CAAC,OAAO,iBACjC,OAAO,kBAAkB,OAAO,eAChC;AACD,YAAM,IAAI;AAAA,QACT,iBAAiB,UAAU;AAAA,MAC5B;AAAA,IACD;AAEA,UAAM,EAAE,OAAO,OAAO,kBAAkB,eAAe,IAAI;AAE3D,UAAM,UAAU,KAAK,cAAc,QAAQ,OAAO;AAClD,UAAMD,YAAW,KAAK,eAAe,QAAQ,QAAQ;AAErD,QAAI,CAAC,OAAO,kBAAkB,CAAC,OAAO,eAAe;AACpD,iBAAO,qBAAAK;AAAA,QACN;AAAA,QACA,IAAI,QAAQ,CAAC,SAAS,WAAW;AAChC,gBAAM,WAAW,IAAI,SAAS;AAC9B,gBAAM,IAAI,SAAS;AAEnB,uBAAAF,QAAM;AAAA,YACL;AAAA,YACA,CAAC,QAAoD;AACpD,oBAAM,OAAQ,KACb,UACD;AACA,oBAAM,UAAU,KAAK,KAAK,MAAM,OAAOH,WAAU,SAAS,GAAG;AAC7D,uBAAS,OAAO;AAEhB,kBACC,oBACA,WACA,OAAQ,QAA6B,OAAO,YAC3C;AACD,gBAAC,QAA6B;AAAA,kBAC7B;AAAA,kBACA,CAAC,OAAsB;AACtB,6BAAS,WAAW;AAAA,kBACrB;AAAA,gBACD;AAAA,cACD;AACA,kBACC,kBACA,WACA,OAAQ,QAA6B,OAAO,YAC3C;AACD,gBAAC,QAA6B;AAAA,kBAC7B;AAAA,kBACA,CAAC,WAA8B;AAC9B,6BAAS,SAAS;AAAA,kBACnB;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,YACA,CAAC,KAAK,QAAQ;AACb,uBAAS,WAAW;AACpB,kBAAI,KAAK;AACR,uBAAO,OAAO,GAAG;AAAA,cAClB;AACA,qBAAO,QAAQ,QAAQ;AAAA,YACxB;AAAA,UACD;AAAA,QACD,CAAC;AAAA,MACF;AAAA,IACD;AAEA,QAAI,OAAO,iBAAiB,CAAC,OAAO,gBAAgB;AACnD,YAAM,IAAgD,CAAC;AACvD,YAAM,WAAW,IAAI,SAAS;AAE9B,YAAM,aAAc,KACnB,UACD;AACA,YAAM,EAAE,MAAM,IAAI,IAAI,WAAW,KAAK,MAAMA,WAAU,OAAO;AAI7D,QAAE,OAAO;AACT,eAAS,OAAO;AAEhB,UACC,oBACA,QACA,OAAQ,KAA0B,OAAO,YACxC;AACD,QAAC,KAA0B,GAAG,YAAY,CAAC,OAAsB;AAChE,mBAAS,WAAW;AAAA,QACrB,CAAC;AAAA,MACF;AACA,UACC,kBACA,QACA,OAAQ,KAA0B,OAAO,YACxC;AACD,QAAC,KAA0B,GAAG,UAAU,CAAC,WAA8B;AACtE,mBAAS,SAAS;AAAA,QACnB,CAAC;AAAA,MACF;AAEA,QAAE,MAAM,IAAI,QAAQ,CAAC,SAAS,WAAW;AACxC,YACE,KAAK,CAAC,WAAW;AACjB,mBAAS,WAAW;AACpB,kBAAQ,QAAQ;AAAA,QACjB,CAAC,EACA,MAAM,MAAM;AAAA,MACf,CAAC;AAED,UAAI,IAAI;AACP,UAAE,IACA,KAAK,CAAC,WAAW,GAAG,MAAM,MAAM,CAAC,EACjC,MAAM,EAA0B;AAAA,MACnC;AAEA,aAAO,KAAK,OAAO;AAAA,IACpB;AAEA,UAAM,IAAI;AAAA,MACT,iBAAiB,UAAU;AAAA,IAC5B;AAAA,EACD;AACD;;;AEjXO,IAAM,UAAN,MAAwC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgB7C,YAAa,YAAoB,OAAW;AAb5C,4BAAmB;AACnB,0BAAiB;AACjB,iBAA4B;AAY1B,QAAI,CAAC,YAAY;AACf,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAChD;AAEA,SAAK,aAAa;AAClB,SAAK,QAAQ;AAAA,EACf;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAiB,MAAqC;AACpD,SAAK,UAAU;AACf,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAcM,WAAoD;AAChE,SAAK,WAAWA;AAChB,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAW,OAA0B;AACnC,SAAK,QAAQ;AACb,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,qBAAsB,OAAsB;AAC1C,SAAK,mBAAmB;AACxB,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,mBAAoB,OAAsB;AACxC,SAAK,iBAAiB;AACtB,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,KAAM,IAA0D;AAC9D,WAAO,KAAK,OAAO,KAAK,MAAM,EAAE;AAAA,EAClC;AACF;;;AHvCA,IAAM,aAAa,SAAS,OAC1B,MACA,OACA,MACAC,cACA,SACA,UACc;AACd,MAAI;AAEJ,MAAI,eAAAC,QAAE,SAAS,KAAK,KAAM,eAAAA,QAAE,SAAS,KAAK,KAAM,MAA2B,MAAO;AAChF,QAAI,gBAAwB;AAC5B,QAAI,cAAmC,CAAC;AAExC,QAAI,eAAAA,QAAE,SAAS,KAAK,KAAM,MAA2B,MAAM;AACzD,sBAAiB,MAA2B;AAC5C,oBAAe,MAA2B,QAAQ,CAAC;AAAA,IACrD;AAEA,UAAM,oBAAgC,qBAAS,eAAe,WAAW;AACzE,UAAM,SAAc,4BAAsB,iBAAiB;AAC3D,UAAM,iBAAa,oBAAAC,SAAG,MAAM;AAC5B,QAAI,CAAC,YAAY;AACf,YAAM,IAAI,MAAM,+BAA+B;AAAA,IACjD;AAEA,WAAO,WAAW,OAAO,IAAc;AACvC,QAAI,CAAC,MAAM;AACT,YAAM,IAAI,MAAM,gBAAgB,IAAI,0CAA0C;AAAA,IAChF;AAAA,EACF,WAAW,eAAAD,QAAE,SAAS,KAAK,GAAG;AAC5B,WAAO;AAEP,cAAUD;AACV,eAAW;AACX,IAAAA,eAAc;AAAA,EAChB;AAEA,MAAI,CAAC,MAAM;AACT,UAAM,IAAI,MAAM,2CAA2C;AAAA,EAC7D;AAEA,QAAM,SAAS,IAAI,KAAK,MAAOA,gBAAgD,kBAAY,eAAe,GAAG,OAAO;AACpH,QAAM,EAAE,UAAU,iBAAiB,SAAS,eAAe,IAAI,OAAO,OAAO,CAAC,GAAG,QAAQ;AAEzF,SAAO,KAAK,QAAQ,iBAAiB,cAAc;AACrD;AAKO,SAAS,KAAM,QAAqBG,WAAoC,SAAiD;AAC9H,QAAM,aAA6B,aAAa,OAAO,eAAe,MAAM,CAAC;AAAA,EAE7E,MAAMC,iBAA0C,QAAkB;AAAA,EAAC;AAEnE,QAAM,WAAW,IAAI,WAAW,QAAiBD,WAAU,OAAO;AAElE,WAAS,UAAUC;AAClB,EAAC,SAAS,QAAQ,UAAmC,SAAS;AAC/D,WAAS,WAAW;AAEpB,SAAO;AACT;AAMO,IAAM,WAAW,6BAAAC;AAExB,WAAW,WAAW,6BAAAA;AACtB,WAAW,OAAO;AAGhB,WAA8C,UAAU;AAE1D,IAAO,gBAAQ;","names":["grpc","import_lodash","import_grpc_create_metadata","metadata","metadata","_","create","async","pc","maybe","metadata","credentials","_","gi","metadata","Request","create"]}