@firebase/functions 0.11.8 → 0.11.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/{index.esm2017.js → esm/index.esm2017.js} +22 -14
  2. package/dist/esm/index.esm2017.js.map +1 -0
  3. package/dist/{esm-node → esm}/src/api.d.ts +1 -0
  4. package/dist/{esm-node → esm}/src/config.d.ts +1 -1
  5. package/dist/{esm-node → esm}/src/error.d.ts +10 -4
  6. package/dist/{esm-node → esm}/src/public-types.d.ts +0 -16
  7. package/dist/{esm-node → esm}/src/service.d.ts +1 -2
  8. package/dist/functions-public.d.ts +15 -4
  9. package/dist/functions.d.ts +15 -4
  10. package/dist/index.cjs.js +22 -13
  11. package/dist/index.cjs.js.map +1 -1
  12. package/dist/src/api.d.ts +1 -0
  13. package/dist/src/config.d.ts +1 -1
  14. package/dist/src/error.d.ts +10 -4
  15. package/dist/src/public-types.d.ts +0 -16
  16. package/dist/src/service.d.ts +1 -2
  17. package/package.json +15 -15
  18. package/dist/esm-node/index.node.esm.js +0 -731
  19. package/dist/esm-node/index.node.esm.js.map +0 -1
  20. package/dist/esm-node/src/index.node.d.ts +0 -1
  21. package/dist/index.esm.js +0 -804
  22. package/dist/index.esm.js.map +0 -1
  23. package/dist/index.esm2017.js.map +0 -1
  24. package/dist/index.node.cjs.js +0 -824
  25. package/dist/index.node.cjs.js.map +0 -1
  26. package/dist/src/index.node.d.ts +0 -1
  27. /package/dist/{esm-node → esm}/package.json +0 -0
  28. /package/dist/{esm-node → esm}/src/callable.test.d.ts +0 -0
  29. /package/dist/{esm-node → esm}/src/constants.d.ts +0 -0
  30. /package/dist/{esm-node → esm}/src/context.d.ts +0 -0
  31. /package/dist/{esm-node → esm}/src/index.d.ts +0 -0
  32. /package/dist/{esm-node → esm}/src/serializer.d.ts +0 -0
  33. /package/dist/{esm-node → esm}/src/serializer.test.d.ts +0 -0
  34. /package/dist/{esm-node → esm}/src/service.test.d.ts +0 -0
  35. /package/dist/{esm-node → esm}/test/utils.d.ts +0 -0
@@ -171,10 +171,16 @@ const errorCodeMap = {
171
171
  DATA_LOSS: 'data-loss'
172
172
  };
173
173
  /**
174
- * An explicit error that can be thrown from a handler to send an error to the
175
- * client that called the function.
174
+ * An error returned by the Firebase Functions client SDK.
175
+ *
176
+ * See {@link FunctionsErrorCode} for full documentation of codes.
177
+ *
178
+ * @public
176
179
  */
177
180
  class FunctionsError extends FirebaseError {
181
+ /**
182
+ * Constructs a new instance of the `FunctionsError` class.
183
+ */
178
184
  constructor(
179
185
  /**
180
186
  * A standard error code that will be returned to the client. This also
@@ -182,11 +188,14 @@ class FunctionsError extends FirebaseError {
182
188
  */
183
189
  code, message,
184
190
  /**
185
- * Extra data to be converted to JSON and included in the error response.
191
+ * Additional details to be converted to JSON and included in the error response.
186
192
  */
187
193
  details) {
188
194
  super(`${FUNCTIONS_TYPE}/${code}`, message || '');
189
195
  this.details = details;
196
+ // Since the FirebaseError constructor sets the prototype of `this` to FirebaseError.prototype,
197
+ // we also have to do it in all subclasses to allow for correct `instanceof` checks.
198
+ Object.setPrototypeOf(this, FunctionsError.prototype);
190
199
  }
191
200
  }
192
201
  /**
@@ -423,9 +432,8 @@ class FunctionsService {
423
432
  * Creates a new Functions service for the given app.
424
433
  * @param app - The FirebaseApp to use.
425
434
  */
426
- constructor(app, authProvider, messagingProvider, appCheckProvider, regionOrCustomDomain = DEFAULT_REGION, fetchImpl) {
435
+ constructor(app, authProvider, messagingProvider, appCheckProvider, regionOrCustomDomain = DEFAULT_REGION) {
427
436
  this.app = app;
428
- this.fetchImpl = fetchImpl;
429
437
  this.emulatorOrigin = null;
430
438
  this.contextProvider = new ContextProvider(authProvider, messagingProvider, appCheckProvider);
431
439
  // Cancels all ongoing requests when resolved.
@@ -505,11 +513,11 @@ function httpsCallableFromURL$1(functionsInstance, url, options) {
505
513
  * @param headers The HTTP headers to include in the request.
506
514
  * @return A Promise that will succeed when the request finishes.
507
515
  */
508
- async function postJSON(url, body, headers, fetchImpl) {
516
+ async function postJSON(url, body, headers) {
509
517
  headers['Content-Type'] = 'application/json';
510
518
  let response;
511
519
  try {
512
- response = await fetchImpl(url, {
520
+ response = await fetch(url, {
513
521
  method: 'POST',
514
522
  body: JSON.stringify(body),
515
523
  headers
@@ -571,7 +579,7 @@ async function callAtURL(functionsInstance, url, data, options) {
571
579
  const timeout = options.timeout || 70000;
572
580
  const failAfterHandle = failAfter(timeout);
573
581
  const response = await Promise.race([
574
- postJSON(url, body, headers, functionsInstance.fetchImpl),
582
+ postJSON(url, body, headers),
575
583
  failAfterHandle.promise,
576
584
  functionsInstance.cancelAllRequests
577
585
  ]);
@@ -605,7 +613,7 @@ async function callAtURL(functionsInstance, url, data, options) {
605
613
  }
606
614
 
607
615
  const name = "@firebase/functions";
608
- const version = "0.11.8";
616
+ const version = "0.11.9";
609
617
 
610
618
  /**
611
619
  * @license
@@ -626,7 +634,7 @@ const version = "0.11.8";
626
634
  const AUTH_INTERNAL_NAME = 'auth-internal';
627
635
  const APP_CHECK_INTERNAL_NAME = 'app-check-internal';
628
636
  const MESSAGING_INTERNAL_NAME = 'messaging-internal';
629
- function registerFunctions(fetchImpl, variant) {
637
+ function registerFunctions(variant) {
630
638
  const factory = (container, { instanceIdentifier: regionOrCustomDomain }) => {
631
639
  // Dependencies
632
640
  const app = container.getProvider('app').getImmediate();
@@ -634,11 +642,11 @@ function registerFunctions(fetchImpl, variant) {
634
642
  const messagingProvider = container.getProvider(MESSAGING_INTERNAL_NAME);
635
643
  const appCheckProvider = container.getProvider(APP_CHECK_INTERNAL_NAME);
636
644
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
637
- return new FunctionsService(app, authProvider, messagingProvider, appCheckProvider, regionOrCustomDomain, fetchImpl);
645
+ return new FunctionsService(app, authProvider, messagingProvider, appCheckProvider, regionOrCustomDomain);
638
646
  };
639
647
  _registerComponent(new Component(FUNCTIONS_TYPE, factory, "PUBLIC" /* ComponentType.PUBLIC */).setMultipleInstances(true));
640
648
  registerVersion(name, version, variant);
641
- // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation
649
+ // BUILD_TARGET will be replaced by values like esm2017, cjs2017, etc during the compilation
642
650
  registerVersion(name, version, 'esm2017');
643
651
  }
644
652
 
@@ -712,7 +720,7 @@ function httpsCallableFromURL(functionsInstance, url, options) {
712
720
  *
713
721
  * @packageDocumentation
714
722
  */
715
- registerFunctions(fetch.bind(self));
723
+ registerFunctions();
716
724
 
717
- export { connectFunctionsEmulator, getFunctions, httpsCallable, httpsCallableFromURL };
725
+ export { FunctionsError, connectFunctionsEmulator, getFunctions, httpsCallable, httpsCallableFromURL };
718
726
  //# sourceMappingURL=index.esm2017.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm2017.js","sources":["../../src/serializer.ts","../../src/constants.ts","../../src/error.ts","../../src/context.ts","../../src/service.ts","../../src/config.ts","../../src/api.ts","../../src/index.ts"],"sourcesContent":["/**\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 {\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 constructor(\n authProvider: Provider<FirebaseAuthInternalName>,\n messagingProvider: Provider<MessagingInternalComponentName>,\n appCheckProvider: Provider<AppCheckInternalComponentName>\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.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 HttpsCallableOptions\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\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 ) {\n this.contextProvider = new ContextProvider(\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>(\n functionsInstance: FunctionsService,\n name: string,\n options?: HttpsCallableOptions\n): HttpsCallable<RequestData, ResponseData> {\n return (data => {\n return call(functionsInstance, name, data, options || {});\n }) as HttpsCallable<RequestData, ResponseData>;\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<RequestData, ResponseData>(\n functionsInstance: FunctionsService,\n url: string,\n options?: HttpsCallableOptions\n): HttpsCallable<RequestData, ResponseData> {\n return (data => {\n return callAtURL(functionsInstance, url, data, options || {});\n }) as HttpsCallable<RequestData, ResponseData>;\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): Promise<HttpResponse> {\n headers['Content-Type'] = 'application/json';\n\n let response: Response;\n try {\n response = await fetch(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 * 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.s\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.s\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: { [key: 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\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),\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 * @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 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<RequestData = unknown, ResponseData = unknown>(\n functionsInstance: Functions,\n name: string,\n options?: HttpsCallableOptions\n): HttpsCallable<RequestData, ResponseData> {\n return _httpsCallable<RequestData, ResponseData>(\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>(\n functionsInstance: Functions,\n url: string,\n options?: HttpsCallableOptions\n): HttpsCallable<RequestData, ResponseData> {\n return _httpsCallableFromURL<RequestData, ResponseData>(\n getModularInstance<FunctionsService>(functionsInstance as FunctionsService),\n url,\n options\n );\n}\n","/**\n * Cloud Functions for Firebase\n *\n * @packageDocumentation\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 */\nimport { registerFunctions } from './config';\n\nexport * from './api';\nexport * from './public-types';\n\nregisterFunctions();\n"],"names":["connectFunctionsEmulator","httpsCallable","httpsCallableFromURL","_connectFunctionsEmulator","_httpsCallable","_httpsCallableFromURL"],"mappings":"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"}
@@ -16,6 +16,7 @@
16
16
  */
17
17
  import { FirebaseApp } from '@firebase/app';
18
18
  import { Functions, HttpsCallableOptions, HttpsCallable } from './public-types';
19
+ export { FunctionsError } from './error';
19
20
  export * from './public-types';
20
21
  /**
21
22
  * Returns a {@link Functions} instance for the given app.
@@ -14,4 +14,4 @@
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
- export declare function registerFunctions(fetchImpl: typeof fetch, variant?: string): void;
17
+ export declare function registerFunctions(variant?: string): void;
@@ -18,14 +18,20 @@ import { FunctionsErrorCodeCore as FunctionsErrorCode } from './public-types';
18
18
  import { HttpResponseBody } from './service';
19
19
  import { FirebaseError } from '@firebase/util';
20
20
  /**
21
- * An explicit error that can be thrown from a handler to send an error to the
22
- * client that called the function.
21
+ * An error returned by the Firebase Functions client SDK.
22
+ *
23
+ * See {@link FunctionsErrorCode} for full documentation of codes.
24
+ *
25
+ * @public
23
26
  */
24
27
  export declare class FunctionsError extends FirebaseError {
25
28
  /**
26
- * Extra data to be converted to JSON and included in the error response.
29
+ * Additional details to be converted to JSON and included in the error response.
27
30
  */
28
31
  readonly details?: unknown;
32
+ /**
33
+ * Constructs a new instance of the `FunctionsError` class.
34
+ */
29
35
  constructor(
30
36
  /**
31
37
  * A standard error code that will be returned to the client. This also
@@ -33,7 +39,7 @@ export declare class FunctionsError extends FirebaseError {
33
39
  */
34
40
  code: FunctionsErrorCode, message?: string,
35
41
  /**
36
- * Extra data to be converted to JSON and included in the error response.
42
+ * Additional details to be converted to JSON and included in the error response.
37
43
  */
38
44
  details?: unknown);
39
45
  }
@@ -15,7 +15,6 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  import { FirebaseApp } from '@firebase/app';
18
- import { FirebaseError } from '@firebase/util';
19
18
  /**
20
19
  * An `HttpsCallableResult` wraps a single result from a function call.
21
20
  * @public
@@ -116,21 +115,6 @@ export declare type FunctionsErrorCodeCore = 'ok' | 'cancelled' | 'unknown' | 'i
116
115
  * @public
117
116
  */
118
117
  export declare type FunctionsErrorCode = `functions/${FunctionsErrorCodeCore}`;
119
- /**
120
- * An error returned by the Firebase Functions client SDK.
121
- * @public
122
- */
123
- export interface FunctionsError extends FirebaseError {
124
- /**
125
- * A standard error code that will be returned to the client. This also
126
- * determines the HTTP status code of the response, as defined in code.proto.
127
- */
128
- readonly code: FunctionsErrorCode;
129
- /**
130
- * Extra data to be converted to JSON and included in the error response.
131
- */
132
- readonly details?: unknown;
133
- }
134
118
  declare module '@firebase/component' {
135
119
  interface NameServiceMapping {
136
120
  'functions': Functions;
@@ -42,7 +42,6 @@ export interface HttpResponseBody {
42
42
  */
43
43
  export declare class FunctionsService implements _FirebaseService {
44
44
  readonly app: FirebaseApp;
45
- readonly fetchImpl: typeof fetch;
46
45
  readonly contextProvider: ContextProvider;
47
46
  emulatorOrigin: string | null;
48
47
  cancelAllRequests: Promise<void>;
@@ -53,7 +52,7 @@ export declare class FunctionsService implements _FirebaseService {
53
52
  * Creates a new Functions service for the given app.
54
53
  * @param app - The FirebaseApp to use.
55
54
  */
56
- constructor(app: FirebaseApp, authProvider: Provider<FirebaseAuthInternalName>, messagingProvider: Provider<MessagingInternalComponentName>, appCheckProvider: Provider<AppCheckInternalComponentName>, regionOrCustomDomain: string | undefined, fetchImpl: typeof fetch);
55
+ constructor(app: FirebaseApp, authProvider: Provider<FirebaseAuthInternalName>, messagingProvider: Provider<MessagingInternalComponentName>, appCheckProvider: Provider<AppCheckInternalComponentName>, regionOrCustomDomain?: string);
57
56
  _delete(): Promise<void>;
58
57
  /**
59
58
  * Returns the URL for a callable with the given name.
@@ -41,18 +41,29 @@ export declare interface Functions {
41
41
 
42
42
  /**
43
43
  * An error returned by the Firebase Functions client SDK.
44
+ *
45
+ * See {@link FunctionsErrorCode} for full documentation of codes.
46
+ *
44
47
  * @public
45
48
  */
46
- export declare interface FunctionsError extends FirebaseError {
49
+ export declare class FunctionsError extends FirebaseError {
50
+ /**
51
+ * Additional details to be converted to JSON and included in the error response.
52
+ */
53
+ readonly details?: unknown;
54
+ /**
55
+ * Constructs a new instance of the `FunctionsError` class.
56
+ */
57
+ constructor(
47
58
  /**
48
59
  * A standard error code that will be returned to the client. This also
49
60
  * determines the HTTP status code of the response, as defined in code.proto.
50
61
  */
51
- readonly code: FunctionsErrorCode;
62
+ code: FunctionsErrorCodeCore, message?: string,
52
63
  /**
53
- * Extra data to be converted to JSON and included in the error response.
64
+ * Additional details to be converted to JSON and included in the error response.
54
65
  */
55
- readonly details?: unknown;
66
+ details?: unknown);
56
67
  }
57
68
 
58
69
  /**
@@ -41,18 +41,29 @@ export declare interface Functions {
41
41
 
42
42
  /**
43
43
  * An error returned by the Firebase Functions client SDK.
44
+ *
45
+ * See {@link FunctionsErrorCode} for full documentation of codes.
46
+ *
44
47
  * @public
45
48
  */
46
- export declare interface FunctionsError extends FirebaseError {
49
+ export declare class FunctionsError extends FirebaseError {
50
+ /**
51
+ * Additional details to be converted to JSON and included in the error response.
52
+ */
53
+ readonly details?: unknown;
54
+ /**
55
+ * Constructs a new instance of the `FunctionsError` class.
56
+ */
57
+ constructor(
47
58
  /**
48
59
  * A standard error code that will be returned to the client. This also
49
60
  * determines the HTTP status code of the response, as defined in code.proto.
50
61
  */
51
- readonly code: FunctionsErrorCode;
62
+ code: FunctionsErrorCodeCore, message?: string,
52
63
  /**
53
- * Extra data to be converted to JSON and included in the error response.
64
+ * Additional details to be converted to JSON and included in the error response.
54
65
  */
55
- readonly details?: unknown;
66
+ details?: unknown);
56
67
  }
57
68
 
58
69
  /**
package/dist/index.cjs.js CHANGED
@@ -175,10 +175,16 @@ const errorCodeMap = {
175
175
  DATA_LOSS: 'data-loss'
176
176
  };
177
177
  /**
178
- * An explicit error that can be thrown from a handler to send an error to the
179
- * client that called the function.
178
+ * An error returned by the Firebase Functions client SDK.
179
+ *
180
+ * See {@link FunctionsErrorCode} for full documentation of codes.
181
+ *
182
+ * @public
180
183
  */
181
184
  class FunctionsError extends util.FirebaseError {
185
+ /**
186
+ * Constructs a new instance of the `FunctionsError` class.
187
+ */
182
188
  constructor(
183
189
  /**
184
190
  * A standard error code that will be returned to the client. This also
@@ -186,11 +192,14 @@ class FunctionsError extends util.FirebaseError {
186
192
  */
187
193
  code, message,
188
194
  /**
189
- * Extra data to be converted to JSON and included in the error response.
195
+ * Additional details to be converted to JSON and included in the error response.
190
196
  */
191
197
  details) {
192
198
  super(`${FUNCTIONS_TYPE}/${code}`, message || '');
193
199
  this.details = details;
200
+ // Since the FirebaseError constructor sets the prototype of `this` to FirebaseError.prototype,
201
+ // we also have to do it in all subclasses to allow for correct `instanceof` checks.
202
+ Object.setPrototypeOf(this, FunctionsError.prototype);
194
203
  }
195
204
  }
196
205
  /**
@@ -427,9 +436,8 @@ class FunctionsService {
427
436
  * Creates a new Functions service for the given app.
428
437
  * @param app - The FirebaseApp to use.
429
438
  */
430
- constructor(app, authProvider, messagingProvider, appCheckProvider, regionOrCustomDomain = DEFAULT_REGION, fetchImpl) {
439
+ constructor(app, authProvider, messagingProvider, appCheckProvider, regionOrCustomDomain = DEFAULT_REGION) {
431
440
  this.app = app;
432
- this.fetchImpl = fetchImpl;
433
441
  this.emulatorOrigin = null;
434
442
  this.contextProvider = new ContextProvider(authProvider, messagingProvider, appCheckProvider);
435
443
  // Cancels all ongoing requests when resolved.
@@ -509,11 +517,11 @@ function httpsCallableFromURL$1(functionsInstance, url, options) {
509
517
  * @param headers The HTTP headers to include in the request.
510
518
  * @return A Promise that will succeed when the request finishes.
511
519
  */
512
- async function postJSON(url, body, headers, fetchImpl) {
520
+ async function postJSON(url, body, headers) {
513
521
  headers['Content-Type'] = 'application/json';
514
522
  let response;
515
523
  try {
516
- response = await fetchImpl(url, {
524
+ response = await fetch(url, {
517
525
  method: 'POST',
518
526
  body: JSON.stringify(body),
519
527
  headers
@@ -575,7 +583,7 @@ async function callAtURL(functionsInstance, url, data, options) {
575
583
  const timeout = options.timeout || 70000;
576
584
  const failAfterHandle = failAfter(timeout);
577
585
  const response = await Promise.race([
578
- postJSON(url, body, headers, functionsInstance.fetchImpl),
586
+ postJSON(url, body, headers),
579
587
  failAfterHandle.promise,
580
588
  functionsInstance.cancelAllRequests
581
589
  ]);
@@ -609,7 +617,7 @@ async function callAtURL(functionsInstance, url, data, options) {
609
617
  }
610
618
 
611
619
  const name = "@firebase/functions";
612
- const version = "0.11.8";
620
+ const version = "0.11.9";
613
621
 
614
622
  /**
615
623
  * @license
@@ -630,7 +638,7 @@ const version = "0.11.8";
630
638
  const AUTH_INTERNAL_NAME = 'auth-internal';
631
639
  const APP_CHECK_INTERNAL_NAME = 'app-check-internal';
632
640
  const MESSAGING_INTERNAL_NAME = 'messaging-internal';
633
- function registerFunctions(fetchImpl, variant) {
641
+ function registerFunctions(variant) {
634
642
  const factory = (container, { instanceIdentifier: regionOrCustomDomain }) => {
635
643
  // Dependencies
636
644
  const app = container.getProvider('app').getImmediate();
@@ -638,11 +646,11 @@ function registerFunctions(fetchImpl, variant) {
638
646
  const messagingProvider = container.getProvider(MESSAGING_INTERNAL_NAME);
639
647
  const appCheckProvider = container.getProvider(APP_CHECK_INTERNAL_NAME);
640
648
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
641
- return new FunctionsService(app, authProvider, messagingProvider, appCheckProvider, regionOrCustomDomain, fetchImpl);
649
+ return new FunctionsService(app, authProvider, messagingProvider, appCheckProvider, regionOrCustomDomain);
642
650
  };
643
651
  app._registerComponent(new component.Component(FUNCTIONS_TYPE, factory, "PUBLIC" /* ComponentType.PUBLIC */).setMultipleInstances(true));
644
652
  app.registerVersion(name, version, variant);
645
- // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation
653
+ // BUILD_TARGET will be replaced by values like esm2017, cjs2017, etc during the compilation
646
654
  app.registerVersion(name, version, 'cjs2017');
647
655
  }
648
656
 
@@ -716,8 +724,9 @@ function httpsCallableFromURL(functionsInstance, url, options) {
716
724
  *
717
725
  * @packageDocumentation
718
726
  */
719
- registerFunctions(fetch.bind(self));
727
+ registerFunctions();
720
728
 
729
+ exports.FunctionsError = FunctionsError;
721
730
  exports.connectFunctionsEmulator = connectFunctionsEmulator;
722
731
  exports.getFunctions = getFunctions;
723
732
  exports.httpsCallable = httpsCallable;