HEX
Server: nginx/1.28.3
System: Linux lightweb-s1 5.15.0-173-generic #183-Ubuntu SMP Fri Mar 6 13:29:34 UTC 2026 x86_64
User: dawonefr-98 (1071)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: /home/dnlightw-124/dn.lightweb.kr/node_modules/firebase/firebase-functions-compat.js.map
{"version":3,"file":"firebase-functions-compat.js","sources":["../functions/src/config.ts","../util/src/errors.ts","../util/src/compat.ts","../component/src/component.ts","../functions/src/serializer.ts","../functions/src/constants.ts","../functions/src/error.ts","../functions/src/context.ts","../functions/src/service.ts","../functions/src/api.ts","../functions-compat/src/register.ts","../functions-compat/src/service.ts","../functions-compat/src/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _registerComponent, registerVersion } from '@firebase/app';\nimport { FunctionsService } from './service';\nimport {\n  Component,\n  ComponentType,\n  ComponentContainer,\n  InstanceFactory\n} from '@firebase/component';\nimport { FUNCTIONS_TYPE } from './constants';\nimport { FirebaseAuthInternalName } from '@firebase/auth-interop-types';\nimport { AppCheckInternalComponentName } from '@firebase/app-check-interop-types';\nimport { MessagingInternalComponentName } from '@firebase/messaging-interop-types';\nimport { name, version } from '../package.json';\n\nconst AUTH_INTERNAL_NAME: FirebaseAuthInternalName = 'auth-internal';\nconst APP_CHECK_INTERNAL_NAME: AppCheckInternalComponentName =\n  'app-check-internal';\nconst MESSAGING_INTERNAL_NAME: MessagingInternalComponentName =\n  'messaging-internal';\n\nexport function registerFunctions(variant?: string): void {\n  const factory: InstanceFactory<'functions'> = (\n    container: ComponentContainer,\n    { instanceIdentifier: regionOrCustomDomain }\n  ) => {\n    // Dependencies\n    const app = container.getProvider('app').getImmediate();\n    const authProvider = container.getProvider(AUTH_INTERNAL_NAME);\n    const messagingProvider = container.getProvider(MESSAGING_INTERNAL_NAME);\n    const appCheckProvider = container.getProvider(APP_CHECK_INTERNAL_NAME);\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    return new FunctionsService(\n      app,\n      authProvider,\n      messagingProvider,\n      appCheckProvider,\n      regionOrCustomDomain\n    );\n  };\n\n  _registerComponent(\n    new Component(\n      FUNCTIONS_TYPE,\n      factory,\n      ComponentType.PUBLIC\n    ).setMultipleInstances(true)\n  );\n\n  registerVersion(name, version, variant);\n  // BUILD_TARGET will be replaced by values like esm2017, cjs2017, etc during the compilation\n  registerVersion(name, version, '__BUILD_TARGET__');\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Standardized Firebase Error.\n *\n * Usage:\n *\n *   // TypeScript string literals for type-safe codes\n *   type Err =\n *     'unknown' |\n *     'object-not-found'\n *     ;\n *\n *   // Closure enum for type-safe error codes\n *   // at-enum {string}\n *   var Err = {\n *     UNKNOWN: 'unknown',\n *     OBJECT_NOT_FOUND: 'object-not-found',\n *   }\n *\n *   let errors: Map<Err, string> = {\n *     'generic-error': \"Unknown error\",\n *     'file-not-found': \"Could not find file: {$file}\",\n *   };\n *\n *   // Type-safe function - must pass a valid error code as param.\n *   let error = new ErrorFactory<Err>('service', 'Service', errors);\n *\n *   ...\n *   throw error.create(Err.GENERIC);\n *   ...\n *   throw error.create(Err.FILE_NOT_FOUND, {'file': fileName});\n *   ...\n *   // Service: Could not file file: foo.txt (service/file-not-found).\n *\n *   catch (e) {\n *     assert(e.message === \"Could not find file: foo.txt.\");\n *     if ((e as FirebaseError)?.code === 'service/file-not-found') {\n *       console.log(\"Could not read file: \" + e['file']);\n *     }\n *   }\n */\n\nexport type ErrorMap<ErrorCode extends string> = {\n  readonly [K in ErrorCode]: string;\n};\n\nconst ERROR_NAME = 'FirebaseError';\n\nexport interface StringLike {\n  toString(): string;\n}\n\nexport interface ErrorData {\n  [key: string]: unknown;\n}\n\n// Based on code from:\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types\nexport class FirebaseError extends Error {\n  /** The custom name for all FirebaseErrors. */\n  readonly name: string = ERROR_NAME;\n\n  constructor(\n    /** The error code for this error. */\n    readonly code: string,\n    message: string,\n    /** Custom data for this error. */\n    public customData?: Record<string, unknown>\n  ) {\n    super(message);\n\n    // Fix For ES5\n    // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n    // TODO(dlarocque): Replace this with `new.target`: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#support-for-newtarget\n    //                   which we can now use since we no longer target ES5.\n    Object.setPrototypeOf(this, FirebaseError.prototype);\n\n    // Maintains proper stack trace for where our error was thrown.\n    // Only available on V8.\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, ErrorFactory.prototype.create);\n    }\n  }\n}\n\nexport class ErrorFactory<\n  ErrorCode extends string,\n  ErrorParams extends { readonly [K in ErrorCode]?: ErrorData } = {}\n> {\n  constructor(\n    private readonly service: string,\n    private readonly serviceName: string,\n    private readonly errors: ErrorMap<ErrorCode>\n  ) {}\n\n  create<K extends ErrorCode>(\n    code: K,\n    ...data: K extends keyof ErrorParams ? [ErrorParams[K]] : []\n  ): FirebaseError {\n    const customData = (data[0] as ErrorData) || {};\n    const fullCode = `${this.service}/${code}`;\n    const template = this.errors[code];\n\n    const message = template ? replaceTemplate(template, customData) : 'Error';\n    // Service Name: Error message (service/code).\n    const fullMessage = `${this.serviceName}: ${message} (${fullCode}).`;\n\n    const error = new FirebaseError(fullCode, fullMessage, customData);\n\n    return error;\n  }\n}\n\nfunction replaceTemplate(template: string, data: ErrorData): string {\n  return template.replace(PATTERN, (_, key) => {\n    const value = data[key];\n    return value != null ? String(value) : `<${key}?>`;\n  });\n}\n\nconst PATTERN = /\\{\\$([^}]+)}/g;\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface Compat<T> {\n  _delegate: T;\n}\n\nexport function getModularInstance<ExpService>(\n  service: Compat<ExpService> | ExpService\n): ExpService {\n  if (service && (service as Compat<ExpService>)._delegate) {\n    return (service as Compat<ExpService>)._delegate;\n  } else {\n    return service as ExpService;\n  }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n  InstantiationMode,\n  InstanceFactory,\n  ComponentType,\n  Dictionary,\n  Name,\n  onInstanceCreatedCallback\n} from './types';\n\n/**\n * Component for service name T, e.g. `auth`, `auth-internal`\n */\nexport class Component<T extends Name = Name> {\n  multipleInstances = false;\n  /**\n   * Properties to be added to the service namespace\n   */\n  serviceProps: Dictionary = {};\n\n  instantiationMode = InstantiationMode.LAZY;\n\n  onInstanceCreated: onInstanceCreatedCallback<T> | null = null;\n\n  /**\n   *\n   * @param name The public service name, e.g. app, auth, firestore, database\n   * @param instanceFactory Service factory responsible for creating the public interface\n   * @param type whether the service provided by the component is public or private\n   */\n  constructor(\n    readonly name: T,\n    readonly instanceFactory: InstanceFactory<T>,\n    readonly type: ComponentType\n  ) {}\n\n  setInstantiationMode(mode: InstantiationMode): this {\n    this.instantiationMode = mode;\n    return this;\n  }\n\n  setMultipleInstances(multipleInstances: boolean): this {\n    this.multipleInstances = multipleInstances;\n    return this;\n  }\n\n  setServiceProps(props: Dictionary): this {\n    this.serviceProps = props;\n    return this;\n  }\n\n  setInstanceCreatedCallback(callback: onInstanceCreatedCallback<T>): this {\n    this.onInstanceCreated = callback;\n    return this;\n  }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst LONG_TYPE = 'type.googleapis.com/google.protobuf.Int64Value';\nconst UNSIGNED_LONG_TYPE = 'type.googleapis.com/google.protobuf.UInt64Value';\n\nfunction mapValues(\n  // { [k: string]: unknown } is no longer a wildcard assignment target after typescript 3.5\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  o: { [key: string]: any },\n  f: (arg0: unknown) => unknown\n): object {\n  const result: { [key: string]: unknown } = {};\n  for (const key in o) {\n    if (o.hasOwnProperty(key)) {\n      result[key] = f(o[key]);\n    }\n  }\n  return result;\n}\n\n/**\n * Takes data and encodes it in a JSON-friendly way, such that types such as\n * Date are preserved.\n * @internal\n * @param data - Data to encode.\n */\nexport function encode(data: unknown): unknown {\n  if (data == null) {\n    return null;\n  }\n  if (data instanceof Number) {\n    data = data.valueOf();\n  }\n  if (typeof data === 'number' && isFinite(data)) {\n    // Any number in JS is safe to put directly in JSON and parse as a double\n    // without any loss of precision.\n    return data;\n  }\n  if (data === true || data === false) {\n    return data;\n  }\n  if (Object.prototype.toString.call(data) === '[object String]') {\n    return data;\n  }\n  if (data instanceof Date) {\n    return data.toISOString();\n  }\n  if (Array.isArray(data)) {\n    return data.map(x => encode(x));\n  }\n  if (typeof data === 'function' || typeof data === 'object') {\n    return mapValues(data!, x => encode(x));\n  }\n  // If we got this far, the data is not encodable.\n  throw new Error('Data cannot be encoded in JSON: ' + data);\n}\n\n/**\n * Takes data that's been encoded in a JSON-friendly form and returns a form\n * with richer datatypes, such as Dates, etc.\n * @internal\n * @param json - JSON to convert.\n */\nexport function decode(json: unknown): unknown {\n  if (json == null) {\n    return json;\n  }\n  if ((json as { [key: string]: unknown })['@type']) {\n    switch ((json as { [key: string]: unknown })['@type']) {\n      case LONG_TYPE:\n      // Fall through and handle this the same as unsigned.\n      case UNSIGNED_LONG_TYPE: {\n        // Technically, this could work return a valid number for malformed\n        // data if there was a number followed by garbage. But it's just not\n        // worth all the extra code to detect that case.\n        const value = Number((json as { [key: string]: unknown })['value']);\n        if (isNaN(value)) {\n          throw new Error('Data cannot be decoded from JSON: ' + json);\n        }\n        return value;\n      }\n      default: {\n        throw new Error('Data cannot be decoded from JSON: ' + json);\n      }\n    }\n  }\n  if (Array.isArray(json)) {\n    return json.map(x => decode(x));\n  }\n  if (typeof json === 'function' || typeof json === 'object') {\n    return mapValues(json!, x => decode(x));\n  }\n  // Anything else is safe to return.\n  return json;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Type constant for Firebase Functions.\n */\nexport const FUNCTIONS_TYPE = 'functions';\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FunctionsErrorCodeCore as FunctionsErrorCode } from './public-types';\nimport { decode } from './serializer';\nimport { HttpResponseBody } from './service';\nimport { FirebaseError } from '@firebase/util';\nimport { FUNCTIONS_TYPE } from './constants';\n\n/**\n * Standard error codes for different ways a request can fail, as defined by:\n * https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto\n *\n * This map is used primarily to convert from a backend error code string to\n * a client SDK error code string, and make sure it's in the supported set.\n */\nconst errorCodeMap: { [name: string]: FunctionsErrorCode } = {\n  OK: 'ok',\n  CANCELLED: 'cancelled',\n  UNKNOWN: 'unknown',\n  INVALID_ARGUMENT: 'invalid-argument',\n  DEADLINE_EXCEEDED: 'deadline-exceeded',\n  NOT_FOUND: 'not-found',\n  ALREADY_EXISTS: 'already-exists',\n  PERMISSION_DENIED: 'permission-denied',\n  UNAUTHENTICATED: 'unauthenticated',\n  RESOURCE_EXHAUSTED: 'resource-exhausted',\n  FAILED_PRECONDITION: 'failed-precondition',\n  ABORTED: 'aborted',\n  OUT_OF_RANGE: 'out-of-range',\n  UNIMPLEMENTED: 'unimplemented',\n  INTERNAL: 'internal',\n  UNAVAILABLE: 'unavailable',\n  DATA_LOSS: 'data-loss'\n};\n\n/**\n * An error returned by the Firebase Functions client SDK.\n *\n * See {@link FunctionsErrorCode} for full documentation of codes.\n *\n * @public\n */\nexport class FunctionsError extends FirebaseError {\n  /**\n   * Constructs a new instance of the `FunctionsError` class.\n   */\n  constructor(\n    /**\n     * A standard error code that will be returned to the client. This also\n     * determines the HTTP status code of the response, as defined in code.proto.\n     */\n    code: FunctionsErrorCode,\n    message?: string,\n    /**\n     * Additional details to be converted to JSON and included in the error response.\n     */\n    readonly details?: unknown\n  ) {\n    super(`${FUNCTIONS_TYPE}/${code}`, message || '');\n\n    // Since the FirebaseError constructor sets the prototype of `this` to FirebaseError.prototype,\n    // we also have to do it in all subclasses to allow for correct `instanceof` checks.\n    Object.setPrototypeOf(this, FunctionsError.prototype);\n  }\n}\n\n/**\n * Takes an HTTP status code and returns the corresponding ErrorCode.\n * This is the standard HTTP status code -> error mapping defined in:\n * https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto\n *\n * @param status An HTTP status code.\n * @return The corresponding ErrorCode, or ErrorCode.UNKNOWN if none.\n */\nfunction codeForHTTPStatus(status: number): FunctionsErrorCode {\n  // Make sure any successful status is OK.\n  if (status >= 200 && status < 300) {\n    return 'ok';\n  }\n  switch (status) {\n    case 0:\n      // This can happen if the server returns 500.\n      return 'internal';\n    case 400:\n      return 'invalid-argument';\n    case 401:\n      return 'unauthenticated';\n    case 403:\n      return 'permission-denied';\n    case 404:\n      return 'not-found';\n    case 409:\n      return 'aborted';\n    case 429:\n      return 'resource-exhausted';\n    case 499:\n      return 'cancelled';\n    case 500:\n      return 'internal';\n    case 501:\n      return 'unimplemented';\n    case 503:\n      return 'unavailable';\n    case 504:\n      return 'deadline-exceeded';\n    default: // ignore\n  }\n  return 'unknown';\n}\n\n/**\n * Takes an HTTP response and returns the corresponding Error, if any.\n */\nexport function _errorForResponse(\n  status: number,\n  bodyJSON: HttpResponseBody | null\n): Error | null {\n  let code = codeForHTTPStatus(status);\n\n  // Start with reasonable defaults from the status code.\n  let description: string = code;\n\n  let details: unknown = undefined;\n\n  // Then look through the body for explicit details.\n  try {\n    const errorJSON = bodyJSON && bodyJSON.error;\n    if (errorJSON) {\n      const status = errorJSON.status;\n      if (typeof status === 'string') {\n        if (!errorCodeMap[status]) {\n          // They must've included an unknown error code in the body.\n          return new FunctionsError('internal', 'internal');\n        }\n        code = errorCodeMap[status];\n\n        // TODO(klimt): Add better default descriptions for error enums.\n        // The default description needs to be updated for the new code.\n        description = status;\n      }\n\n      const message = errorJSON.message;\n      if (typeof message === 'string') {\n        description = message;\n      }\n\n      details = errorJSON.details;\n      if (details !== undefined) {\n        details = decode(details);\n      }\n    }\n  } catch (e) {\n    // If we couldn't parse explicit error data, that's fine.\n  }\n\n  if (code === 'ok') {\n    // Technically, there's an edge case where a developer could explicitly\n    // return an error code of OK, and we will treat it as success, but that\n    // seems reasonable.\n    return null;\n  }\n\n  return new FunctionsError(code, description, details);\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Provider } from '@firebase/component';\nimport { _isFirebaseServerApp, FirebaseApp } from '@firebase/app';\nimport {\n  AppCheckInternalComponentName,\n  FirebaseAppCheckInternal\n} from '@firebase/app-check-interop-types';\nimport {\n  MessagingInternal,\n  MessagingInternalComponentName\n} from '@firebase/messaging-interop-types';\nimport {\n  FirebaseAuthInternal,\n  FirebaseAuthInternalName\n} from '@firebase/auth-interop-types';\n\n/**\n * The metadata that should be supplied with function calls.\n * @internal\n */\nexport interface Context {\n  authToken?: string;\n  messagingToken?: string;\n  appCheckToken: string | null;\n}\n\n/**\n * Helper class to get metadata that should be included with a function call.\n * @internal\n */\nexport class ContextProvider {\n  private auth: FirebaseAuthInternal | null = null;\n  private messaging: MessagingInternal | null = null;\n  private appCheck: FirebaseAppCheckInternal | null = null;\n  private serverAppAppCheckToken: string | null = null;\n  constructor(\n    readonly app: FirebaseApp,\n    authProvider: Provider<FirebaseAuthInternalName>,\n    messagingProvider: Provider<MessagingInternalComponentName>,\n    appCheckProvider: Provider<AppCheckInternalComponentName>\n  ) {\n    if (_isFirebaseServerApp(app) && app.settings.appCheckToken) {\n      this.serverAppAppCheckToken = app.settings.appCheckToken;\n    }\n    this.auth = authProvider.getImmediate({ optional: true });\n    this.messaging = messagingProvider.getImmediate({\n      optional: true\n    });\n\n    if (!this.auth) {\n      authProvider.get().then(\n        auth => (this.auth = auth),\n        () => {\n          /* get() never rejects */\n        }\n      );\n    }\n\n    if (!this.messaging) {\n      messagingProvider.get().then(\n        messaging => (this.messaging = messaging),\n        () => {\n          /* get() never rejects */\n        }\n      );\n    }\n\n    if (!this.appCheck) {\n      appCheckProvider?.get().then(\n        appCheck => (this.appCheck = appCheck),\n        () => {\n          /* get() never rejects */\n        }\n      );\n    }\n  }\n\n  async getAuthToken(): Promise<string | undefined> {\n    if (!this.auth) {\n      return undefined;\n    }\n\n    try {\n      const token = await this.auth.getToken();\n      return token?.accessToken;\n    } catch (e) {\n      // If there's any error when trying to get the auth token, leave it off.\n      return undefined;\n    }\n  }\n\n  async getMessagingToken(): Promise<string | undefined> {\n    if (\n      !this.messaging ||\n      !('Notification' in self) ||\n      Notification.permission !== 'granted'\n    ) {\n      return undefined;\n    }\n\n    try {\n      return await this.messaging.getToken();\n    } catch (e) {\n      // We don't warn on this, because it usually means messaging isn't set up.\n      // console.warn('Failed to retrieve instance id token.', e);\n\n      // If there's any error when trying to get the token, leave it off.\n      return undefined;\n    }\n  }\n\n  async getAppCheckToken(\n    limitedUseAppCheckTokens?: boolean\n  ): Promise<string | null> {\n    if (this.serverAppAppCheckToken) {\n      return this.serverAppAppCheckToken;\n    }\n    if (this.appCheck) {\n      const result = limitedUseAppCheckTokens\n        ? await this.appCheck.getLimitedUseToken()\n        : await this.appCheck.getToken();\n      if (result.error) {\n        // Do not send the App Check header to the functions endpoint if\n        // there was an error from the App Check exchange endpoint. The App\n        // Check SDK will already have logged the error to console.\n        return null;\n      }\n      return result.token;\n    }\n    return null;\n  }\n\n  async getContext(limitedUseAppCheckTokens?: boolean): Promise<Context> {\n    const authToken = await this.getAuthToken();\n    const messagingToken = await this.getMessagingToken();\n    const appCheckToken = await this.getAppCheckToken(limitedUseAppCheckTokens);\n    return { authToken, messagingToken, appCheckToken };\n  }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirebaseApp, _FirebaseService } from '@firebase/app';\nimport {\n  HttpsCallable,\n  HttpsCallableResult,\n  HttpsCallableStreamResult,\n  HttpsCallableOptions,\n  HttpsCallableStreamOptions\n} from './public-types';\nimport { _errorForResponse, FunctionsError } from './error';\nimport { ContextProvider } from './context';\nimport { encode, decode } from './serializer';\nimport { Provider } from '@firebase/component';\nimport { FirebaseAuthInternalName } from '@firebase/auth-interop-types';\nimport { MessagingInternalComponentName } from '@firebase/messaging-interop-types';\nimport { AppCheckInternalComponentName } from '@firebase/app-check-interop-types';\n\nexport const DEFAULT_REGION = 'us-central1';\n\nconst responseLineRE = /^data: (.*?)(?:\\n|$)/;\n\n/**\n * The response to an http request.\n */\ninterface HttpResponse {\n  status: number;\n  json: HttpResponseBody | null;\n}\n/**\n * Describes the shape of the HttpResponse body.\n * It makes functions that would otherwise take {} able to access the\n * possible elements in the body more easily\n */\nexport interface HttpResponseBody {\n  data?: unknown;\n  result?: unknown;\n  error?: {\n    message?: unknown;\n    status?: unknown;\n    details?: unknown;\n  };\n}\n\ninterface CancellablePromise<T> {\n  promise: Promise<T>;\n  cancel: () => void;\n}\n\n/**\n * Returns a Promise that will be rejected after the given duration.\n * The error will be of type FunctionsError.\n *\n * @param millis Number of milliseconds to wait before rejecting.\n */\nfunction failAfter(millis: number): CancellablePromise<never> {\n  // Node timers and browser timers are fundamentally incompatible, but we\n  // don't care about the value here\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  let timer: any | null = null;\n  return {\n    promise: new Promise((_, reject) => {\n      timer = setTimeout(() => {\n        reject(new FunctionsError('deadline-exceeded', 'deadline-exceeded'));\n      }, millis);\n    }),\n    cancel: () => {\n      if (timer) {\n        clearTimeout(timer);\n      }\n    }\n  };\n}\n\n/**\n * The main class for the Firebase Functions SDK.\n * @internal\n */\nexport class FunctionsService implements _FirebaseService {\n  readonly contextProvider: ContextProvider;\n  emulatorOrigin: string | null = null;\n  cancelAllRequests: Promise<void>;\n  deleteService!: () => Promise<void>;\n  region: string;\n  customDomain: string | null;\n\n  /**\n   * Creates a new Functions service for the given app.\n   * @param app - The FirebaseApp to use.\n   */\n  constructor(\n    readonly app: FirebaseApp,\n    authProvider: Provider<FirebaseAuthInternalName>,\n    messagingProvider: Provider<MessagingInternalComponentName>,\n    appCheckProvider: Provider<AppCheckInternalComponentName>,\n    regionOrCustomDomain: string = DEFAULT_REGION,\n    readonly fetchImpl: typeof fetch = (...args) => fetch(...args)\n  ) {\n    this.contextProvider = new ContextProvider(\n      app,\n      authProvider,\n      messagingProvider,\n      appCheckProvider\n    );\n    // Cancels all ongoing requests when resolved.\n    this.cancelAllRequests = new Promise(resolve => {\n      this.deleteService = () => {\n        return Promise.resolve(resolve());\n      };\n    });\n\n    // Resolve the region or custom domain overload by attempting to parse it.\n    try {\n      const url = new URL(regionOrCustomDomain);\n      this.customDomain =\n        url.origin + (url.pathname === '/' ? '' : url.pathname);\n      this.region = DEFAULT_REGION;\n    } catch (e) {\n      this.customDomain = null;\n      this.region = regionOrCustomDomain;\n    }\n  }\n\n  _delete(): Promise<void> {\n    return this.deleteService();\n  }\n\n  /**\n   * Returns the URL for a callable with the given name.\n   * @param name - The name of the callable.\n   * @internal\n   */\n  _url(name: string): string {\n    const projectId = this.app.options.projectId;\n    if (this.emulatorOrigin !== null) {\n      const origin = this.emulatorOrigin;\n      return `${origin}/${projectId}/${this.region}/${name}`;\n    }\n\n    if (this.customDomain !== null) {\n      return `${this.customDomain}/${name}`;\n    }\n\n    return `https://${this.region}-${projectId}.cloudfunctions.net/${name}`;\n  }\n}\n\n/**\n * Modify this instance to communicate with the Cloud Functions emulator.\n *\n * Note: this must be called before this instance has been used to do any operations.\n *\n * @param host The emulator host (ex: localhost)\n * @param port The emulator port (ex: 5001)\n * @public\n */\nexport function connectFunctionsEmulator(\n  functionsInstance: FunctionsService,\n  host: string,\n  port: number\n): void {\n  functionsInstance.emulatorOrigin = `http://${host}:${port}`;\n}\n\n/**\n * Returns a reference to the callable https trigger with the given name.\n * @param name - The name of the trigger.\n * @public\n */\nexport function httpsCallable<RequestData, ResponseData, StreamData = unknown>(\n  functionsInstance: FunctionsService,\n  name: string,\n  options?: HttpsCallableOptions\n): HttpsCallable<RequestData, ResponseData, StreamData> {\n  const callable = (\n    data?: RequestData | null\n  ): Promise<HttpsCallableResult> => {\n    return call(functionsInstance, name, data, options || {});\n  };\n\n  callable.stream = (\n    data?: RequestData | null,\n    options?: HttpsCallableStreamOptions\n  ) => {\n    return stream(functionsInstance, name, data, options);\n  };\n\n  return callable as HttpsCallable<RequestData, ResponseData, StreamData>;\n}\n\n/**\n * Returns a reference to the callable https trigger with the given url.\n * @param url - The url of the trigger.\n * @public\n */\nexport function httpsCallableFromURL<\n  RequestData,\n  ResponseData,\n  StreamData = unknown\n>(\n  functionsInstance: FunctionsService,\n  url: string,\n  options?: HttpsCallableOptions\n): HttpsCallable<RequestData, ResponseData, StreamData> {\n  const callable = (\n    data?: RequestData | null\n  ): Promise<HttpsCallableResult> => {\n    return callAtURL(functionsInstance, url, data, options || {});\n  };\n\n  callable.stream = (\n    data?: RequestData | null,\n    options?: HttpsCallableStreamOptions\n  ) => {\n    return streamAtURL(functionsInstance, url, data, options || {});\n  };\n  return callable as HttpsCallable<RequestData, ResponseData, StreamData>;\n}\n\n/**\n * Does an HTTP POST and returns the completed response.\n * @param url The url to post to.\n * @param body The JSON body of the post.\n * @param headers The HTTP headers to include in the request.\n * @return A Promise that will succeed when the request finishes.\n */\nasync function postJSON(\n  url: string,\n  body: unknown,\n  headers: { [key: string]: string },\n  fetchImpl: typeof fetch\n): Promise<HttpResponse> {\n  headers['Content-Type'] = 'application/json';\n\n  let response: Response;\n  try {\n    response = await fetchImpl(url, {\n      method: 'POST',\n      body: JSON.stringify(body),\n      headers\n    });\n  } catch (e) {\n    // This could be an unhandled error on the backend, or it could be a\n    // network error. There's no way to know, since an unhandled error on the\n    // backend will fail to set the proper CORS header, and thus will be\n    // treated as a network error by fetch.\n    return {\n      status: 0,\n      json: null\n    };\n  }\n  let json: HttpResponseBody | null = null;\n  try {\n    json = await response.json();\n  } catch (e) {\n    // If we fail to parse JSON, it will fail the same as an empty body.\n  }\n  return {\n    status: response.status,\n    json\n  };\n}\n\n/**\n * Creates authorization headers for Firebase Functions requests.\n * @param functionsInstance The Firebase Functions service instance.\n * @param options Options for the callable function, including AppCheck token settings.\n * @return A Promise that resolves a headers map to include in outgoing fetch request.\n */\nasync function makeAuthHeaders(\n  functionsInstance: FunctionsService,\n  options: HttpsCallableOptions\n): Promise<Record<string, string>> {\n  const headers: Record<string, string> = {};\n  const context = await functionsInstance.contextProvider.getContext(\n    options.limitedUseAppCheckTokens\n  );\n  if (context.authToken) {\n    headers['Authorization'] = 'Bearer ' + context.authToken;\n  }\n  if (context.messagingToken) {\n    headers['Firebase-Instance-ID-Token'] = context.messagingToken;\n  }\n  if (context.appCheckToken !== null) {\n    headers['X-Firebase-AppCheck'] = context.appCheckToken;\n  }\n  return headers;\n}\n\n/**\n * Calls a callable function asynchronously and returns the result.\n * @param name The name of the callable trigger.\n * @param data The data to pass as params to the function.\n */\nfunction call(\n  functionsInstance: FunctionsService,\n  name: string,\n  data: unknown,\n  options: HttpsCallableOptions\n): Promise<HttpsCallableResult> {\n  const url = functionsInstance._url(name);\n  return callAtURL(functionsInstance, url, data, options);\n}\n\n/**\n * Calls a callable function asynchronously and returns the result.\n * @param url The url of the callable trigger.\n * @param data The data to pass as params to the function.\n */\nasync function callAtURL(\n  functionsInstance: FunctionsService,\n  url: string,\n  data: unknown,\n  options: HttpsCallableOptions\n): Promise<HttpsCallableResult> {\n  // Encode any special types, such as dates, in the input data.\n  data = encode(data);\n  const body = { data };\n\n  // Add a header for the authToken.\n  const headers = await makeAuthHeaders(functionsInstance, options);\n\n  // Default timeout to 70s, but let the options override it.\n  const timeout = options.timeout || 70000;\n\n  const failAfterHandle = failAfter(timeout);\n  const response = await Promise.race([\n    postJSON(url, body, headers, functionsInstance.fetchImpl),\n    failAfterHandle.promise,\n    functionsInstance.cancelAllRequests\n  ]);\n\n  // Always clear the failAfter timeout\n  failAfterHandle.cancel();\n\n  // If service was deleted, interrupted response throws an error.\n  if (!response) {\n    throw new FunctionsError(\n      'cancelled',\n      'Firebase Functions instance was deleted.'\n    );\n  }\n\n  // Check for an error status, regardless of http status.\n  const error = _errorForResponse(response.status, response.json);\n  if (error) {\n    throw error;\n  }\n\n  if (!response.json) {\n    throw new FunctionsError('internal', 'Response is not valid JSON object.');\n  }\n\n  let responseData = response.json.data;\n  // TODO(klimt): For right now, allow \"result\" instead of \"data\", for\n  // backwards compatibility.\n  if (typeof responseData === 'undefined') {\n    responseData = response.json.result;\n  }\n  if (typeof responseData === 'undefined') {\n    // Consider the response malformed.\n    throw new FunctionsError('internal', 'Response is missing data field.');\n  }\n\n  // Decode any special types, such as dates, in the returned data.\n  const decodedData = decode(responseData);\n\n  return { data: decodedData };\n}\n\n/**\n * Calls a callable function asynchronously and returns a streaming result.\n * @param name The name of the callable trigger.\n * @param data The data to pass as params to the function.\n * @param options Streaming request options.\n */\nfunction stream(\n  functionsInstance: FunctionsService,\n  name: string,\n  data: unknown,\n  options?: HttpsCallableStreamOptions\n): Promise<HttpsCallableStreamResult> {\n  const url = functionsInstance._url(name);\n  return streamAtURL(functionsInstance, url, data, options || {});\n}\n\n/**\n * Calls a callable function asynchronously and return a streaming result.\n * @param url The url of the callable trigger.\n * @param data The data to pass as params to the function.\n * @param options Streaming request options.\n */\nasync function streamAtURL(\n  functionsInstance: FunctionsService,\n  url: string,\n  data: unknown,\n  options: HttpsCallableStreamOptions\n): Promise<HttpsCallableStreamResult> {\n  // Encode any special types, such as dates, in the input data.\n  data = encode(data);\n  const body = { data };\n  //\n  // Add a header for the authToken.\n  const headers = await makeAuthHeaders(functionsInstance, options);\n  headers['Content-Type'] = 'application/json';\n  headers['Accept'] = 'text/event-stream';\n\n  let response: Response;\n  try {\n    response = await functionsInstance.fetchImpl(url, {\n      method: 'POST',\n      body: JSON.stringify(body),\n      headers,\n      signal: options?.signal\n    });\n  } catch (e) {\n    if (e instanceof Error && e.name === 'AbortError') {\n      const error = new FunctionsError('cancelled', 'Request was cancelled.');\n      return {\n        data: Promise.reject(error),\n        stream: {\n          [Symbol.asyncIterator]() {\n            return {\n              next() {\n                return Promise.reject(error);\n              }\n            };\n          }\n        }\n      };\n    }\n    // This could be an unhandled error on the backend, or it could be a\n    // network error. There's no way to know, since an unhandled error on the\n    // backend will fail to set the proper CORS header, and thus will be\n    // treated as a network error by fetch.\n    const error = _errorForResponse(0, null);\n    return {\n      data: Promise.reject(error),\n      // Return an empty async iterator\n      stream: {\n        [Symbol.asyncIterator]() {\n          return {\n            next() {\n              return Promise.reject(error);\n            }\n          };\n        }\n      }\n    };\n  }\n  let resultResolver: (value: unknown) => void;\n  let resultRejecter: (reason: unknown) => void;\n  const resultPromise = new Promise<unknown>((resolve, reject) => {\n    resultResolver = resolve;\n    resultRejecter = reject;\n  });\n  options?.signal?.addEventListener('abort', () => {\n    const error = new FunctionsError('cancelled', 'Request was cancelled.');\n    resultRejecter(error);\n  });\n  const reader = response.body!.getReader();\n  const rstream = createResponseStream(\n    reader,\n    resultResolver!,\n    resultRejecter!,\n    options?.signal\n  );\n  return {\n    stream: {\n      [Symbol.asyncIterator]() {\n        const rreader = rstream.getReader();\n        return {\n          async next() {\n            const { value, done } = await rreader.read();\n            return { value: value as unknown, done };\n          },\n          async return() {\n            await rreader.cancel();\n            return { done: true, value: undefined };\n          }\n        };\n      }\n    },\n    data: resultPromise\n  };\n}\n\n/**\n * Creates a ReadableStream that processes a streaming response from a streaming\n * callable function that returns data in server-sent event format.\n *\n * @param reader The underlying reader providing raw response data\n * @param resultResolver Callback to resolve the final result when received\n * @param resultRejecter Callback to reject with an error if encountered\n * @param signal Optional AbortSignal to cancel the stream processing\n * @returns A ReadableStream that emits decoded messages from the response\n *\n * The returned ReadableStream:\n *   1. Emits individual messages when \"message\" data is received\n *   2. Resolves with the final result when a \"result\" message is received\n *   3. Rejects with an error if an \"error\" message is received\n */\nfunction createResponseStream(\n  reader: ReadableStreamDefaultReader<Uint8Array>,\n  resultResolver: (value: unknown) => void,\n  resultRejecter: (reason: unknown) => void,\n  signal?: AbortSignal\n): ReadableStream<unknown> {\n  const processLine = (\n    line: string,\n    controller: ReadableStreamDefaultController\n  ): void => {\n    const match = line.match(responseLineRE);\n    // ignore all other lines (newline, comments, etc.)\n    if (!match) {\n      return;\n    }\n    const data = match[1];\n    try {\n      const jsonData = JSON.parse(data);\n      if ('result' in jsonData) {\n        resultResolver(decode(jsonData.result));\n        return;\n      }\n      if ('message' in jsonData) {\n        controller.enqueue(decode(jsonData.message));\n        return;\n      }\n      if ('error' in jsonData) {\n        const error = _errorForResponse(0, jsonData);\n        controller.error(error);\n        resultRejecter(error);\n        return;\n      }\n    } catch (error) {\n      if (error instanceof FunctionsError) {\n        controller.error(error);\n        resultRejecter(error);\n        return;\n      }\n      // ignore other parsing errors\n    }\n  };\n\n  const decoder = new TextDecoder();\n  return new ReadableStream({\n    start(controller) {\n      let currentText = '';\n      return pump();\n      async function pump(): Promise<void> {\n        if (signal?.aborted) {\n          const error = new FunctionsError(\n            'cancelled',\n            'Request was cancelled'\n          );\n          controller.error(error);\n          resultRejecter(error);\n          return Promise.resolve();\n        }\n        try {\n          const { value, done } = await reader.read();\n          if (done) {\n            if (currentText.trim()) {\n              processLine(currentText.trim(), controller);\n            }\n            controller.close();\n            return;\n          }\n          if (signal?.aborted) {\n            const error = new FunctionsError(\n              'cancelled',\n              'Request was cancelled'\n            );\n            controller.error(error);\n            resultRejecter(error);\n            await reader.cancel();\n            return;\n          }\n          currentText += decoder.decode(value, { stream: true });\n          const lines = currentText.split('\\n');\n          currentText = lines.pop() || '';\n          for (const line of lines) {\n            if (line.trim()) {\n              processLine(line.trim(), controller);\n            }\n          }\n          return pump();\n        } catch (error) {\n          const functionsError =\n            error instanceof FunctionsError\n              ? error\n              : _errorForResponse(0, null);\n          controller.error(functionsError);\n          resultRejecter(functionsError);\n        }\n      }\n    },\n    cancel() {\n      return reader.cancel();\n    }\n  });\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _getProvider, FirebaseApp, getApp } from '@firebase/app';\nimport { FUNCTIONS_TYPE } from './constants';\n\nimport { Provider } from '@firebase/component';\nimport { Functions, HttpsCallableOptions, HttpsCallable } from './public-types';\nimport {\n  FunctionsService,\n  DEFAULT_REGION,\n  connectFunctionsEmulator as _connectFunctionsEmulator,\n  httpsCallable as _httpsCallable,\n  httpsCallableFromURL as _httpsCallableFromURL\n} from './service';\nimport {\n  getModularInstance,\n  getDefaultEmulatorHostnameAndPort\n} from '@firebase/util';\n\nexport { FunctionsError } from './error';\nexport * from './public-types';\n\n/**\n * Returns a {@link Functions} instance for the given app.\n * @param app - The {@link @firebase/app#FirebaseApp} to use.\n * @param regionOrCustomDomain - one of:\n *   a) The region the callable functions are located in (ex: us-central1)\n *   b) A custom domain hosting the callable functions (ex: https://mydomain.com)\n * @public\n */\nexport function getFunctions(\n  app: FirebaseApp = getApp(),\n  regionOrCustomDomain: string = DEFAULT_REGION\n): Functions {\n  // Dependencies\n  const functionsProvider: Provider<'functions'> = _getProvider(\n    getModularInstance(app),\n    FUNCTIONS_TYPE\n  );\n  const functionsInstance = functionsProvider.getImmediate({\n    identifier: regionOrCustomDomain\n  });\n  const emulator = getDefaultEmulatorHostnameAndPort('functions');\n  if (emulator) {\n    connectFunctionsEmulator(functionsInstance, ...emulator);\n  }\n  return functionsInstance;\n}\n\n/**\n * Modify this instance to communicate with the Cloud Functions emulator.\n *\n * Note: this must be called before this instance has been used to do any operations.\n *\n * @param host - The emulator host (ex: localhost)\n * @param port - The emulator port (ex: 5001)\n * @public\n */\nexport function connectFunctionsEmulator(\n  functionsInstance: Functions,\n  host: string,\n  port: number\n): void {\n  _connectFunctionsEmulator(\n    getModularInstance<FunctionsService>(functionsInstance as FunctionsService),\n    host,\n    port\n  );\n}\n\n/**\n * Returns a reference to the callable HTTPS trigger with the given name.\n * @param name - The name of the trigger.\n * @public\n */\nexport function httpsCallable<\n  RequestData = unknown,\n  ResponseData = unknown,\n  StreamData = unknown\n>(\n  functionsInstance: Functions,\n  name: string,\n  options?: HttpsCallableOptions\n): HttpsCallable<RequestData, ResponseData, StreamData> {\n  return _httpsCallable<RequestData, ResponseData, StreamData>(\n    getModularInstance<FunctionsService>(functionsInstance as FunctionsService),\n    name,\n    options\n  );\n}\n\n/**\n * Returns a reference to the callable HTTPS trigger with the specified url.\n * @param url - The url of the trigger.\n * @public\n */\nexport function httpsCallableFromURL<\n  RequestData = unknown,\n  ResponseData = unknown,\n  StreamData = unknown\n>(\n  functionsInstance: Functions,\n  url: string,\n  options?: HttpsCallableOptions\n): HttpsCallable<RequestData, ResponseData, StreamData> {\n  return _httpsCallableFromURL<RequestData, ResponseData, StreamData>(\n    getModularInstance<FunctionsService>(functionsInstance as FunctionsService),\n    url,\n    options\n  );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport firebase, { _FirebaseNamespace } from '@firebase/app-compat';\nimport { FunctionsService } from './service';\nimport {\n  Component,\n  ComponentType,\n  InstanceFactory,\n  ComponentContainer,\n  InstanceFactoryOptions\n} from '@firebase/component';\n\nconst DEFAULT_REGION = 'us-central1';\n\nconst factory: InstanceFactory<'functions-compat'> = (\n  container: ComponentContainer,\n  { instanceIdentifier: regionOrCustomDomain }: InstanceFactoryOptions\n) => {\n  // Dependencies\n  const app = container.getProvider('app-compat').getImmediate();\n  const functionsServiceExp = container.getProvider('functions').getImmediate({\n    identifier: regionOrCustomDomain ?? DEFAULT_REGION\n  });\n\n  return new FunctionsService(app, functionsServiceExp);\n};\n\nexport function registerFunctions(): void {\n  const namespaceExports = {\n    Functions: FunctionsService\n  };\n  (firebase as _FirebaseNamespace).INTERNAL.registerComponent(\n    new Component('functions-compat', factory, ComponentType.PUBLIC)\n      .setServiceProps(namespaceExports)\n      .setMultipleInstances(true)\n  );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirebaseFunctions, HttpsCallable } from '@firebase/functions-types';\nimport {\n  httpsCallable as httpsCallableExp,\n  httpsCallableFromURL as httpsCallableFromURLExp,\n  connectFunctionsEmulator as useFunctionsEmulatorExp,\n  HttpsCallableOptions,\n  Functions as FunctionsServiceExp\n} from '@firebase/functions';\nimport { FirebaseApp, _FirebaseService } from '@firebase/app-compat';\nimport { FirebaseError } from '@firebase/util';\n\nexport class FunctionsService implements FirebaseFunctions, _FirebaseService {\n  /**\n   * For testing.\n   * @internal\n   */\n  _region: string;\n  /**\n   * For testing.\n   * @internal\n   */\n  _customDomain: string | null;\n\n  constructor(\n    public app: FirebaseApp,\n    readonly _delegate: FunctionsServiceExp\n  ) {\n    this._region = this._delegate.region;\n    this._customDomain = this._delegate.customDomain;\n  }\n  httpsCallable(name: string, options?: HttpsCallableOptions): HttpsCallable {\n    return httpsCallableExp(this._delegate, name, options);\n  }\n  httpsCallableFromURL(\n    url: string,\n    options?: HttpsCallableOptions\n  ): HttpsCallable {\n    return httpsCallableFromURLExp(this._delegate, url, options);\n  }\n  /**\n   * Deprecated in pre-modularized repo, does not exist in modularized\n   * functions package, need to convert to \"host\" and \"port\" args that\n   * `useFunctionsEmulatorExp` takes.\n   * @deprecated\n   */\n  useFunctionsEmulator(origin: string): void {\n    const match = origin.match('[a-zA-Z]+://([a-zA-Z0-9.-]+)(?::([0-9]+))?');\n    if (match == null) {\n      throw new FirebaseError(\n        'functions',\n        'No origin provided to useFunctionsEmulator()'\n      );\n    }\n    if (match[2] == null) {\n      throw new FirebaseError(\n        'functions',\n        'Port missing in origin provided to useFunctionsEmulator()'\n      );\n    }\n    return useFunctionsEmulatorExp(this._delegate, match[1], Number(match[2]));\n  }\n  useEmulator(host: string, port: number): void {\n    return useFunctionsEmulatorExp(this._delegate, host, port);\n  }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport firebase from '@firebase/app-compat';\nimport { name, version } from '../package.json';\nimport { registerFunctions } from './register';\nimport * as types from '@firebase/functions-types';\n\nregisterFunctions();\nfirebase.registerVersion(name, version);\n\ndeclare module '@firebase/app-compat' {\n  interface FirebaseNamespace {\n    functions: {\n      (app?: FirebaseApp): types.FirebaseFunctions;\n      Functions: typeof types.FirebaseFunctions;\n    };\n  }\n  interface FirebaseApp {\n    functions(regionOrCustomDomain?: string): types.FirebaseFunctions;\n  }\n}\n"],"names":["variant","FirebaseError","Error","constructor","code","message","customData","super","this","name","Object","setPrototypeOf","prototype","captureStackTrace","ErrorFactory","create","service","serviceName","errors","data","fullCode","template","replace","PATTERN","_","key","value","String","fullMessage","getModularInstance","_delegate","Component","instanceFactory","type","multipleInstances","serviceProps","instantiationMode","onInstanceCreated","setInstantiationMode","mode","setMultipleInstances","setServiceProps","props","setInstanceCreatedCallback","callback","LONG_TYPE","UNSIGNED_LONG_TYPE","mapValues","o","f","result","hasOwnProperty","encode","Number","valueOf","isFinite","toString","call","Date","toISOString","Array","isArray","map","x","decode","json","isNaN","FUNCTIONS_TYPE","errorCodeMap","OK","CANCELLED","UNKNOWN","INVALID_ARGUMENT","DEADLINE_EXCEEDED","NOT_FOUND","ALREADY_EXISTS","PERMISSION_DENIED","UNAUTHENTICATED","RESOURCE_EXHAUSTED","FAILED_PRECONDITION","ABORTED","OUT_OF_RANGE","UNIMPLEMENTED","INTERNAL","UNAVAILABLE","DATA_LOSS","FunctionsError","details","_errorForResponse","status","bodyJSON","let","description","undefined","errorJSON","error","e","ContextProvider","app","authProvider","messagingProvider","appCheckProvider","auth","messaging","appCheck","serverAppAppCheckToken","_isFirebaseServerApp","settings","appCheckToken","getImmediate","optional","get","then","getAuthToken","token","await","getToken","accessToken","getMessagingToken","self","Notification","permission","getAppCheckToken","limitedUseAppCheckTokens","getLimitedUseToken","getContext","authToken","messagingToken","DEFAULT_REGION","responseLineRE","FunctionsService","regionOrCustomDomain","fetchImpl","args","fetch","emulatorOrigin","contextProvider","cancelAllRequests","Promise","resolve","deleteService","url","URL","customDomain","origin","pathname","region","_delete","_url","projectId","options","httpsCallable","functionsInstance","callable","callAtURL","stream","streamAtURL","async","makeAuthHeaders","headers","context","body","failAfterHandle","millis","timer","promise","reject","setTimeout","cancel","clearTimeout","timeout","response","race","method","JSON","stringify","responseData","signal","Symbol","asyncIterator","next","resultResolver","resultRejecter","resultPromise","_a","addEventListener","reader","getReader","rstream","processLine","line","controller","match","jsonData","parse","enqueue","decoder","TextDecoder","ReadableStream","start","currentText","pump","aborted","done","read","trim","close","lines","split","pop","functionsError","rreader","return","connectFunctionsEmulator","host","port","httpsCallableFromURL","_registerComponent","container","instanceIdentifier","getProvider","registerVersion","version","namespaceExports","_region","_customDomain","_httpsCallable","httpsCallableFromURLExp","useFunctionsEmulator","useFunctionsEmulatorExp","useEmulator","factory","functionsServiceExp","identifier","Functions","firebase","registerComponent"],"mappings":"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"}