@firebase/data-connect 0.0.1-dataconnect-preview.f2ddc3d7b

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 (66) hide show
  1. package/dist/index.cjs.js +965 -0
  2. package/dist/index.cjs.js.map +1 -0
  3. package/dist/index.esm2017.js +942 -0
  4. package/dist/index.esm2017.js.map +1 -0
  5. package/dist/index.esm5.js +966 -0
  6. package/dist/index.esm5.js.map +1 -0
  7. package/dist/index.node.cjs.js +984 -0
  8. package/dist/index.node.cjs.js.map +1 -0
  9. package/dist/internal.d.ts +297 -0
  10. package/dist/node-esm/index.node.esm.js +937 -0
  11. package/dist/node-esm/index.node.esm.js.map +1 -0
  12. package/dist/node-esm/package.json +1 -0
  13. package/dist/node-esm/src/api/DataConnect.d.ts +70 -0
  14. package/dist/node-esm/src/api/Mutation.d.ts +36 -0
  15. package/dist/node-esm/src/api/Reference.d.ts +45 -0
  16. package/dist/node-esm/src/api/index.d.ts +22 -0
  17. package/dist/node-esm/src/api/query.d.ts +46 -0
  18. package/dist/node-esm/src/api.browser.d.ts +29 -0
  19. package/dist/node-esm/src/api.node.d.ts +17 -0
  20. package/dist/node-esm/src/core/FirebaseAuthProvider.d.ts +44 -0
  21. package/dist/node-esm/src/core/QueryManager.d.ts +36 -0
  22. package/dist/node-esm/src/core/error.d.ts +50 -0
  23. package/dist/node-esm/src/core/version.d.ts +23 -0
  24. package/dist/node-esm/src/index.d.ts +29 -0
  25. package/dist/node-esm/src/index.node.d.ts +18 -0
  26. package/dist/node-esm/src/logger.d.ts +20 -0
  27. package/dist/node-esm/src/network/fetch.d.ts +21 -0
  28. package/dist/node-esm/src/network/index.d.ts +17 -0
  29. package/dist/node-esm/src/network/transport/index.d.ts +45 -0
  30. package/dist/node-esm/src/network/transport/rest.d.ts +56 -0
  31. package/dist/node-esm/src/register.d.ts +1 -0
  32. package/dist/node-esm/src/util/encoder.d.ts +19 -0
  33. package/dist/node-esm/src/util/map.d.ts +17 -0
  34. package/dist/node-esm/src/util/url.d.ts +19 -0
  35. package/dist/node-esm/test/emulatorSeeder.d.ts +22 -0
  36. package/dist/node-esm/test/queries.test.d.ts +17 -0
  37. package/dist/node-esm/test/util.d.ts +26 -0
  38. package/dist/private.d.ts +291 -0
  39. package/dist/public.d.ts +187 -0
  40. package/dist/src/api/DataConnect.d.ts +70 -0
  41. package/dist/src/api/Mutation.d.ts +36 -0
  42. package/dist/src/api/Reference.d.ts +45 -0
  43. package/dist/src/api/index.d.ts +22 -0
  44. package/dist/src/api/query.d.ts +46 -0
  45. package/dist/src/api.browser.d.ts +29 -0
  46. package/dist/src/api.node.d.ts +17 -0
  47. package/dist/src/core/FirebaseAuthProvider.d.ts +44 -0
  48. package/dist/src/core/QueryManager.d.ts +36 -0
  49. package/dist/src/core/error.d.ts +50 -0
  50. package/dist/src/core/version.d.ts +23 -0
  51. package/dist/src/index.d.ts +29 -0
  52. package/dist/src/index.node.d.ts +18 -0
  53. package/dist/src/logger.d.ts +20 -0
  54. package/dist/src/network/fetch.d.ts +21 -0
  55. package/dist/src/network/index.d.ts +17 -0
  56. package/dist/src/network/transport/index.d.ts +45 -0
  57. package/dist/src/network/transport/rest.d.ts +56 -0
  58. package/dist/src/register.d.ts +1 -0
  59. package/dist/src/tsdoc-metadata.json +11 -0
  60. package/dist/src/util/encoder.d.ts +19 -0
  61. package/dist/src/util/map.d.ts +17 -0
  62. package/dist/src/util/url.d.ts +19 -0
  63. package/dist/test/emulatorSeeder.d.ts +22 -0
  64. package/dist/test/queries.test.d.ts +17 -0
  65. package/dist/test/util.d.ts +26 -0
  66. package/package.json +76 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.node.esm.js","sources":["../../src/core/error.ts","../../src/core/version.ts","../../src/logger.ts","../../src/network/fetch.ts","../../src/core/FirebaseAuthProvider.ts","../../src/api/Reference.ts","../../src/util/encoder.ts","../../src/util/map.ts","../../src/core/QueryManager.ts","../../src/util/url.ts","../../src/network/transport/rest.ts","../../src/api/Mutation.ts","../../src/api/DataConnect.ts","../../src/register.ts","../../src/api/query.ts","../../src/api.browser.ts","../../src/index.node.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2024 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 { FirebaseError } from '@firebase/util';\n\nexport type DataConnectErrorCode =\n | 'other'\n | 'already-initialized'\n | 'not-initialized'\n | 'not-supported'\n | 'invalid-argument'\n | 'partial-error';\n\nexport type Code = DataConnectErrorCode;\n\nexport const Code = {\n OTHER: 'other' as DataConnectErrorCode,\n ALREADY_INITIALIZED: 'already-initialized' as DataConnectErrorCode,\n NOT_INITIALIZED: 'not-initialized' as DataConnectErrorCode,\n NOT_SUPPORTED: 'not-supported' as DataConnectErrorCode,\n INVALID_ARGUMENT: 'invalid-argument' as DataConnectErrorCode,\n PARTIAL_ERROR: 'partial-error' as DataConnectErrorCode\n};\n\n/** An error returned by a DataConnect operation. */\nexport class DataConnectError extends FirebaseError {\n /** The stack of the error. */\n readonly stack?: string;\n\n /** @hideconstructor */\n constructor(\n /**\n * The backend error code associated with this error.\n */\n readonly code: DataConnectErrorCode,\n /**\n * A custom error description.\n */\n readonly message: string\n ) {\n super(code, message);\n\n // HACK: We write a toString property directly because Error is not a real\n // class and so inheritance does not work correctly. We could alternatively\n // do the same \"back-door inheritance\" trick that FirebaseError does.\n this.toString = () => `${this.name}: [code=${this.code}]: ${this.message}`;\n }\n}\n","/**\n * @license\n * Copyright 2024 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/** The semver (www.semver.org) version of the SDK. */\nexport let SDK_VERSION = '';\n\n/**\n * SDK_VERSION should be set before any database instance is created\n * @internal\n */\nexport function setSDKVersion(version: string): void {\n SDK_VERSION = version;\n}\n","/**\n * @license\n * Copyright 2024 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 { Logger, LogLevel, LogLevelString } from \"@firebase/logger\";\nimport { SDK_VERSION } from \"./core/version\";\n\nconst logger = new Logger('@firebase/data-connect');\nexport function setLogLevel(logLevel: LogLevelString) {\n logger.setLogLevel(logLevel);\n}\nexport function logDebug(msg: string): void {\n // if (logger.logLevel <= LogLevel.DEBUG) {\n logger.debug(`DataConnect (${SDK_VERSION}): ${msg}`);\n // }\n}\n\nexport function logError(msg: string): void {\n // if (logger.logLevel <= LogLevel.ERROR) {\n logger.error(`DataConnect (${SDK_VERSION}): ${msg}`);\n // }\n}\n","/**\n * @license\n * Copyright 2024 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 { Code, DataConnectError } from '../core/error';\nimport { logDebug, logError } from '../logger';\n\nlet connectFetch: typeof fetch | null = globalThis.fetch;\nexport function initializeFetch(fetchImpl: typeof fetch) {\n connectFetch = fetchImpl;\n}\nexport function dcFetch<T, U>(\n url: string,\n body: U,\n { signal }: AbortController,\n accessToken: string | null\n) {\n if (!connectFetch) {\n throw new DataConnectError(Code.OTHER, 'No Fetch Implementation detected!');\n }\n const headers: HeadersInit = {\n 'Content-Type': 'application/json'\n };\n if (accessToken) {\n headers['X-Firebase-Auth-Token'] = accessToken;\n }\n const bodyStr = JSON.stringify(body);\n logDebug(`Making request out to ${url} with body: ${bodyStr}`);\n return connectFetch(url, {\n body: bodyStr,\n method: 'POST',\n headers,\n signal\n })\n .then(async response => {\n let jsonResponse = null;\n try {\n jsonResponse = await response.json();\n } catch (e) {\n throw new DataConnectError(Code.OTHER, JSON.stringify(e));\n }\n if (response.status >= 400) {\n logError(\n 'Error while performing request: ' + JSON.stringify(jsonResponse)\n );\n throw new DataConnectError(Code.OTHER, JSON.stringify(jsonResponse));\n }\n return jsonResponse;\n })\n .then(res => {\n if (res.errors && res.errors.length) {\n const stringified = JSON.stringify(res.errors);\n logError(\n 'DataConnect error while performing request: ' + stringified\n );\n throw new DataConnectError(Code.OTHER, stringified);\n }\n return res as { data: T; errors: Error[] };\n });\n}\n","/**\n * @license\n * Copyright 2024 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 { FirebaseOptions } from '@firebase/app';\nimport {\n FirebaseAuthInternal,\n FirebaseAuthInternalName,\n FirebaseAuthTokenData\n} from '@firebase/auth-interop-types';\nimport { Provider } from '@firebase/component';\nimport { logDebug, logError } from '../logger';\n\nexport interface AuthTokenProvider {\n getToken(forceRefresh: boolean): Promise<FirebaseAuthTokenData | null>;\n addTokenChangeListener(listener: AuthTokenListener): void;\n}\nexport type AuthTokenListener = (token: string | null) => void;\n\nexport class FirebaseAuthProvider implements AuthTokenProvider {\n private auth_: FirebaseAuthInternal;\n constructor(\n private appName: string,\n private options: FirebaseOptions,\n private authProvider_: Provider<FirebaseAuthInternalName>\n ) {\n this.auth_ = authProvider_.getImmediate({ optional: true })!;\n if (!this.auth_) {\n authProvider_.onInit(auth => (this.auth_ = auth));\n }\n }\n getToken(forceRefresh: boolean): Promise<FirebaseAuthTokenData | null> {\n if (!this.auth_) {\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n if (this.auth_) {\n this.getToken(forceRefresh).then(resolve, reject);\n } else {\n resolve(null);\n }\n }, 0);\n });\n }\n return this.auth_.getToken(forceRefresh).catch(error => {\n if (error && error.code === 'auth/token-not-initialized') {\n logDebug(\n 'Got auth/token-not-initialized error. Treating as null token.'\n );\n return null;\n } else {\n logError(\n 'Error received when attempting to retrieve token: ' +\n JSON.stringify(error)\n );\n return Promise.reject(error);\n }\n });\n }\n addTokenChangeListener(listener: AuthTokenListener) {\n this.auth_?.addAuthTokenListener(listener);\n }\n removeTokenChangeListener(listener: (token: string | null) => void): void {\n this.authProvider_\n .get()\n .then(auth => auth.removeAuthTokenListener(listener));\n }\n}\nexport class EmulatorTokenProvider implements AuthTokenProvider {\n /** A string that is treated as an admin access token by the RTDB emulator. Used by Admin SDK. */\n static OWNER = 'owner';\n\n constructor(private accessToken: string) {}\n\n getToken(forceRefresh: boolean): Promise<FirebaseAuthTokenData> {\n return Promise.resolve({\n accessToken: this.accessToken\n });\n }\n\n addTokenChangeListener(listener: AuthTokenListener): void {\n // Invoke the listener immediately to match the behavior in Firebase Auth\n // (see packages/auth/src/auth.js#L1807)\n listener(this.accessToken);\n }\n\n removeTokenChangeListener(listener: (token: string | null) => void): void {}\n\n notifyForInvalidToken(): void {}\n}\n","/**\n * @license\n * Copyright 2024 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 { DataConnect, DataConnectOptions } from './DataConnect';\nexport const QueryStr = 'query';\nexport const MutationStr = 'mutation';\nexport type ReferenceType = typeof QueryStr | typeof MutationStr;\n\nexport const SOURCE_SERVER = 'SERVER';\nexport const SOURCE_CACHE = 'CACHE';\nexport type DataSource = typeof SOURCE_CACHE | typeof SOURCE_SERVER;\n\nexport interface OpResult<Data> {\n data: Data;\n source: DataSource;\n fetchTime: string;\n}\n\nexport interface OperationRef<_Data, Variables> {\n name: string;\n variables: Variables;\n refType: ReferenceType;\n dataConnect: DataConnect;\n}\n\nexport interface DataConnectResult<Data, Variables> extends OpResult<Data> {\n ref: OperationRef<Data, Variables>;\n // future metadata\n}\n\nexport interface RefInfo<Variables> {\n name: string;\n variables: Variables;\n connectorConfig: DataConnectOptions;\n}\nexport interface SerializedRef<Data, Variables> extends OpResult<Data> {\n refInfo: RefInfo<Variables>;\n}\n","/**\n * @license\n * Copyright 2024 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 type HmacImpl = (obj: unknown) => string;\nexport let encoderImpl: HmacImpl;\nexport function setEncoder(encoder: HmacImpl) {\n encoderImpl = encoder;\n}\nsetEncoder(o => JSON.stringify(o));\n","/**\n * @license\n * Copyright 2024 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 function setIfNotExists<T>(map: Map<string, T>, key: string, val: T) {\n if (!map.has(key)) {\n map.set(key, val);\n }\n}\n","/**\n * @license\n * Copyright 2024 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 {\n DataConnectSubscription,\n OnErrorSubscription,\n OnResultSubscription,\n QueryPromise,\n QueryRef,\n QueryResult\n} from '../api/query';\nimport {\n OperationRef,\n QueryStr,\n OpResult,\n SerializedRef,\n SOURCE_SERVER,\n DataSource,\n SOURCE_CACHE\n} from '../api/Reference';\nimport { logDebug } from '../logger';\nimport { DataConnectTransport } from '../network';\nimport { encoderImpl } from '../util/encoder';\nimport { setIfNotExists } from '../util/map';\nimport { DataConnectError } from './error';\n\ninterface TrackedQuery<Response, Variables> {\n ref: Omit<OperationRef<Response, Variables>, 'dataConnect'>;\n subscriptions: Array<DataConnectSubscription<Response, Variables>>;\n currentCache: OpResult<Response> | null;\n lastError: DataConnectError | null;\n}\n\nfunction getRefSerializer<Data, Variables>(\n queryRef: QueryRef<Data, Variables>,\n data: Data,\n source: DataSource\n) {\n return function toJSON(): SerializedRef<Data, Variables> {\n return {\n data,\n refInfo: {\n name: queryRef.name,\n variables: queryRef.variables,\n connectorConfig: {\n projectId: queryRef.dataConnect.app.options.projectId!,\n ...queryRef.dataConnect.getSettings()\n }\n },\n fetchTime: Date.now().toLocaleString(),\n source\n };\n };\n}\n\nexport class QueryManager {\n _queries: Map<string, TrackedQuery<unknown, unknown>>;\n constructor(private transport: DataConnectTransport) {\n this._queries = new Map();\n }\n track<Response, Variables>(\n queryName: string,\n variables: Variables,\n initialCache?: OpResult<Response>\n ) {\n const ref: TrackedQuery<Response, Variables>['ref'] = {\n name: queryName,\n variables,\n refType: QueryStr\n };\n const key = encoderImpl(ref);\n const newTrackedQuery: TrackedQuery<Response, Variables> = {\n ref,\n subscriptions: [],\n currentCache: initialCache || null,\n lastError: null\n };\n // @ts-ignore\n setIfNotExists(this._queries, key, newTrackedQuery);\n return this._queries.get(key);\n }\n addSubscription<Response, Variables>(\n queryRef: OperationRef<Response, Variables>,\n onResultCallback: OnResultSubscription<Response, Variables>,\n onErrorCallback?: OnErrorSubscription,\n initialCache?: OpResult<Response>\n ) {\n const key = encoderImpl({\n name: queryRef.name,\n variables: queryRef.variables,\n refType: QueryStr\n });\n const trackedQuery = this._queries.get(key) as TrackedQuery<\n Response,\n Variables\n >;\n const subscription = {\n userCallback: onResultCallback,\n errCallback: onErrorCallback\n };\n const unsubscribe = () => {\n const trackedQuery = this._queries.get(key)!;\n trackedQuery.subscriptions = trackedQuery.subscriptions.filter(\n sub => sub !== subscription\n );\n };\n if (initialCache && trackedQuery.currentCache !== initialCache) {\n logDebug('Initial cache found. Comparing dates.');\n if (\n !trackedQuery.currentCache ||\n (trackedQuery.currentCache &&\n compareDates(\n trackedQuery.currentCache.fetchTime,\n initialCache.fetchTime\n ))\n ) {\n trackedQuery.currentCache = initialCache;\n }\n }\n if (trackedQuery.currentCache !== null) {\n const cachedData = trackedQuery.currentCache.data;\n onResultCallback({\n data: cachedData,\n source: SOURCE_CACHE,\n ref: queryRef as QueryRef<Response, Variables>,\n toJSON: getRefSerializer(\n queryRef as QueryRef<Response, Variables>,\n trackedQuery.currentCache.data,\n SOURCE_CACHE\n ),\n fetchTime: trackedQuery.currentCache.fetchTime\n });\n if (trackedQuery.lastError !== null && onErrorCallback) {\n onErrorCallback(undefined);\n }\n }\n\n trackedQuery.subscriptions.push({\n userCallback: onResultCallback,\n errCallback: onErrorCallback,\n unsubscribe\n });\n if (!trackedQuery.currentCache) {\n logDebug(\n `No cache available for query ${\n queryRef.name\n } with variables ${JSON.stringify(\n queryRef.variables\n )}. Calling executeQuery.`\n );\n const promise = this.executeQuery(\n queryRef as QueryRef<Response, Variables>\n );\n // We want to ignore the error and let subscriptions handle it\n promise.then(undefined, err => {});\n }\n return unsubscribe;\n }\n executeQuery<Response, Variables>(\n queryRef: QueryRef<Response, Variables>\n ): QueryPromise<Response, Variables> {\n const key = encoderImpl({\n name: queryRef.name,\n variables: queryRef.variables,\n refType: QueryStr\n });\n const trackedQuery = this._queries.get(key)!;\n const result = this.transport.invokeQuery<Response, Variables>(\n queryRef.name,\n queryRef.variables\n );\n const newR = result.then(\n res => {\n const fetchTime = new Date().toString();\n const result: QueryResult<Response, Variables> = {\n ...res,\n source: SOURCE_SERVER,\n ref: queryRef,\n toJSON: getRefSerializer(queryRef, res.data, SOURCE_SERVER),\n fetchTime\n };\n trackedQuery.subscriptions.forEach(subscription => {\n subscription.userCallback(result);\n });\n trackedQuery.currentCache = {\n data: res.data,\n source: SOURCE_CACHE,\n fetchTime\n };\n return result;\n },\n err => {\n trackedQuery.lastError = err;\n trackedQuery.subscriptions.forEach(subscription => {\n if (subscription.errCallback) {\n subscription.errCallback(err);\n }\n });\n throw err;\n }\n );\n\n return newR;\n }\n enableEmulator(host: string, port: number) {\n this.transport.useEmulator(host, port);\n }\n}\nfunction compareDates(str1: string, str2: string) {\n const date1 = new Date(str1);\n const date2 = new Date(str2);\n return date1.getTime() < date2.getTime();\n}\n","/**\n * @license\n * Copyright 2024 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 { ProjectOptions, TransportOptions } from '../api/DataConnect';\nimport { Code, DataConnectError } from '../core/error';\nimport { logError } from '../logger';\n\nexport function urlBuilder(\n projectConfig: ProjectOptions,\n transportOptions: TransportOptions\n) {\n const { connector, location, projectId: project, service } = projectConfig;\n const { host, sslEnabled, port } = transportOptions;\n const protocol = sslEnabled ? 'https' : 'http';\n const realHost = host || `firebasedataconnect.googleapis.com`;\n let baseUrl = `${protocol}://${realHost}`;\n if (typeof port === 'number') {\n baseUrl += `:${port}`;\n } else if (typeof port !== 'undefined') {\n logError('Port type is of an invalid type');\n throw new DataConnectError(\n Code.INVALID_ARGUMENT,\n 'Incorrect type for port passed in!'\n );\n }\n return `${baseUrl}/v1alpha/projects/${project}/locations/${location}/services/${service}/connectors/${connector}`;\n}\nexport function addToken(url: string, apiKey?: string): string {\n if (!apiKey) {\n return url;\n }\n const newUrl = new URL(url);\n newUrl.searchParams.append('key', apiKey);\n return newUrl.toString();\n}\n","/**\n * @license\n * Copyright 2024 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 { DataConnectTransport } from '.';\nimport { DataConnectOptions, TransportOptions } from '../../api/DataConnect';\nimport { DataConnectError, Code } from '../../core/error';\nimport { AuthTokenProvider } from '../../core/FirebaseAuthProvider';\nimport { addToken, urlBuilder } from '../../util/url';\nimport { dcFetch } from '../fetch';\n\nexport class RESTTransport implements DataConnectTransport {\n private host = '';\n private port: number | undefined;\n private location = 'l';\n private connectorName = '';\n private secure = true;\n private project = 'p';\n private serviceName: string;\n private accessToken: string | null = null;\n private authInitialized_ = false;\n constructor(\n options: DataConnectOptions,\n private apiKey?: string | undefined,\n private authProvider?: AuthTokenProvider | undefined,\n transportOptions?: TransportOptions | undefined\n ) {\n if (transportOptions) {\n if (typeof transportOptions.port === 'number') {\n this.port = transportOptions.port;\n }\n if (typeof transportOptions.sslEnabled !== 'undefined') {\n this.secure = transportOptions.sslEnabled;\n }\n this.host = transportOptions.host;\n }\n const { location, projectId: project, connector, service } = options;\n if (location) {\n this.location = location;\n }\n if (project) {\n this.project = project;\n }\n this.serviceName = service;\n if (!connector) {\n throw new DataConnectError(\n Code.INVALID_ARGUMENT,\n 'Connector Name required!'\n );\n }\n this.connectorName = connector;\n }\n get endpointUrl(): string {\n return urlBuilder(\n {\n connector: this.connectorName,\n location: this.location,\n projectId: this.project,\n service: this.serviceName\n },\n { host: this.host, sslEnabled: this.secure, port: this.port }\n );\n }\n useEmulator(host: string, port?: number, isSecure?: boolean): void {\n this.host = host;\n if (typeof port === 'number') {\n this.port = port;\n }\n if (typeof isSecure !== 'undefined') {\n this.secure = isSecure;\n }\n }\n onTokenChanged(newToken: string | null) {\n this.accessToken = newToken;\n }\n\n getWithAuth() {\n let starterPromise: Promise<string | null> = new Promise(resolve =>\n resolve(this.accessToken)\n );\n if (!this.authInitialized_) {\n if (this.authProvider) {\n starterPromise = this.authProvider\n .getToken(/*forceToken=*/ false)\n .then(data => {\n if (!data) {\n return null;\n }\n this.accessToken = data.accessToken;\n return this.accessToken;\n });\n } else {\n starterPromise = new Promise(resolve => resolve(''));\n }\n }\n return starterPromise;\n }\n\n // TODO(mtewani): Update U to include shape of body defined in line 13.\n invokeQuery = <T, U = unknown>(queryName: string, body: U) => {\n const abortController = new AbortController();\n\n // TODO(mtewani): Update to proper value\n const withAuth = this.getWithAuth().then(() => {\n return dcFetch<T, U>(\n addToken(`${this.endpointUrl}:executeQuery`, this.apiKey),\n {\n name: `projects/${this.project}/locations/${this.location}/services/${this.serviceName}/connectors/${this.connectorName}`,\n operationName: queryName,\n variables: body\n } as unknown as U, // TODO(mtewani): This is a patch, fix this.\n abortController,\n this.accessToken\n );\n });\n\n return {\n then: withAuth.then.bind(withAuth)\n };\n };\n invokeMutation = <T, U = unknown>(mutationName: string, body: U) => {\n const abortController = new AbortController();\n const taskResult = this.getWithAuth().then(() => {\n return dcFetch<T, U>(\n addToken(`${this.endpointUrl}:executeMutation`, this.apiKey),\n {\n name: `projects/${this.project}/locations/${this.location}/services/${this.serviceName}/connectors/${this.connectorName}`,\n operationName: mutationName,\n variables: body\n } as unknown as U,\n abortController,\n this.accessToken\n );\n });\n\n return {\n then: taskResult.then.bind(taskResult),\n // catch: taskResult.catch.bind(taskResult),\n // finally: taskResult.finally.bind(taskResult),\n cancel: () => abortController.abort()\n };\n };\n}\n","/**\n * @license\n * Copyright 2024 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 { DataConnectTransport } from '../network/transport';\n\nimport { DataConnect } from './DataConnect';\nimport {\n DataConnectResult,\n MutationStr,\n OperationRef,\n SOURCE_SERVER\n} from './Reference';\n\nexport interface MutationRef<Response, Variables>\n extends OperationRef<Response, Variables> {\n refType: typeof MutationStr;\n}\n\nexport function mutationRef<Response>(\n dcInstance: DataConnect,\n queryName: string\n): MutationRef<Response, undefined>;\nexport function mutationRef<Response, Variables>(\n dcInstance: DataConnect,\n queryName: string,\n variables: Variables\n): MutationRef<Response, Variables>;\nexport function mutationRef<Response, Variables>(\n dcInstance: DataConnect,\n queryName: string,\n variables?: Variables\n): MutationRef<Response, Variables> {\n dcInstance.setInitialized();\n const ref: MutationRef<Response, Variables> = {\n dataConnect: dcInstance,\n name: queryName,\n refType: MutationStr,\n variables: variables as Variables\n };\n return ref;\n}\n\nexport class MutationManager {\n private _inflight: Array<PromiseLike<unknown>> = [];\n constructor(private transport: DataConnectTransport) {}\n executeMutation<Response, Variables>(\n mutationRef: MutationRef<Response, Variables>\n ): MutationPromise<Response, Variables> {\n const result = this.transport.invokeMutation<Response, Variables>(\n mutationRef.name,\n mutationRef.variables\n );\n const withRefPromise = result.then(res => {\n const obj: MutationResult<Response, Variables> = {\n ...res, // Double check that the result is result.data, not just result\n source: SOURCE_SERVER,\n ref: mutationRef,\n fetchTime: Date.now().toLocaleString()\n };\n return obj;\n });\n this._inflight.push(result);\n const removePromise = () =>\n (this._inflight = this._inflight.filter(promise => promise !== result));\n result.then(removePromise, removePromise);\n return withRefPromise;\n }\n}\n\nexport interface MutationResult<Data, Variables>\n extends DataConnectResult<Data, Variables> {\n ref: MutationRef<Data, Variables>;\n}\nexport interface MutationPromise<Data, Variables>\n extends PromiseLike<MutationResult<Data, Variables>> {\n // reserved for special actions like cancellation\n}\n\nexport function executeMutation<Data, Variables>(\n mutationRef: MutationRef<Data, Variables>\n): MutationPromise<Data, Variables> {\n return mutationRef.dataConnect._mutationManager.executeMutation(mutationRef);\n}\n","/**\n * @license\n * Copyright 2024 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 {\n FirebaseApp,\n _getProvider,\n _removeServiceInstance,\n getApp\n} from '@firebase/app';\nimport { FirebaseAuthInternalName } from '@firebase/auth-interop-types';\nimport { Provider } from '@firebase/component';\n\nimport {\n AuthTokenProvider,\n EmulatorTokenProvider,\n FirebaseAuthProvider\n} from '../core/FirebaseAuthProvider';\nimport { QueryManager } from '../core/QueryManager';\nimport { DataConnectTransport, TransportClass } from '../network';\nimport { RESTTransport } from '../network/transport/rest';\n\nimport { MutationManager } from './Mutation';\nimport { Code, DataConnectError } from '../core/error';\nimport { logDebug, logError } from '../logger';\n\nexport interface ProjectOptions {\n location: string;\n connector: string;\n service: string;\n projectId: string;\n}\n\nexport interface ConnectorConfig {\n location: string;\n connector: string;\n service: string;\n}\n\nexport interface TransportOptions {\n host: string;\n sslEnabled?: boolean;\n port?: number;\n}\n\nexport const FIREBASE_DATA_CONNECT_EMULATOR_HOST_VAR =\n 'FIREBASE_DATA_CONNECT_EMULATOR_HOST';\n\n/**\n * \n * @param fullHost \n * @returns TransportOptions\n * @internal\n */\nexport function parseOptions(fullHost: string): TransportOptions {\n const [protocol, hostName] = fullHost.split('://');\n const isSecure = protocol === 'https';\n const [host, portAsString] = hostName.split(':');\n const port = Number(portAsString);\n return { host, port, sslEnabled: isSecure };\n}\nexport interface DataConnectOptions extends ConnectorConfig {\n projectId: string;\n}\n\nexport class DataConnect {\n _queryManager!: QueryManager;\n _mutationManager!: MutationManager;\n public isEmulator = false;\n initialized = false;\n private _transport!: DataConnectTransport;\n private transportClass: TransportClass | undefined;\n private transportOptions?: TransportOptions;\n private authTokenProvider?: AuthTokenProvider;\n constructor(\n public readonly app: FirebaseApp,\n private readonly dataConnectOptions: DataConnectOptions,\n private readonly authProvider: Provider<FirebaseAuthInternalName>\n ) {\n if (typeof process !== 'undefined' && process.env) {\n const host = process.env[FIREBASE_DATA_CONNECT_EMULATOR_HOST_VAR];\n if (host) {\n logDebug('Found custom host. Using emulator');\n this.isEmulator = true;\n this.transportOptions = parseOptions(host);\n }\n }\n }\n _delete() {\n _removeServiceInstance(\n this.app,\n 'data-connect',\n JSON.stringify(this.getSettings())\n );\n return Promise.resolve();\n }\n\n getSettings(): ConnectorConfig {\n const copy = JSON.parse(JSON.stringify(this.dataConnectOptions));\n delete copy.projectId;\n return copy;\n }\n\n setInitialized() {\n if (this.initialized) {\n return;\n }\n if (this.transportClass === undefined) {\n logDebug('transportClass not provided. Defaulting to RESTTransport.');\n this.transportClass = RESTTransport;\n }\n\n if (this.authProvider) {\n this.authTokenProvider = this.isEmulator\n ? new EmulatorTokenProvider(EmulatorTokenProvider.OWNER)\n : new FirebaseAuthProvider(\n this.app.name,\n this.app.options,\n this.authProvider\n );\n this.authTokenProvider.addTokenChangeListener(token => {\n logDebug(`New Token Available: ${token}`);\n this._transport.onTokenChanged(token);\n });\n }\n\n this.initialized = true;\n this._transport = new this.transportClass(\n this.dataConnectOptions,\n this.app.options.apiKey,\n this.authTokenProvider\n );\n if (this.transportOptions) {\n this._transport.useEmulator(\n this.transportOptions.host,\n this.transportOptions.port,\n this.transportOptions.sslEnabled\n );\n }\n this._queryManager = new QueryManager(this._transport);\n this._mutationManager = new MutationManager(this._transport);\n }\n\n enableEmulator(transportOptions: TransportOptions) {\n if (this.initialized) {\n logError('enableEmulator called without initializing');\n throw new DataConnectError(\n Code.ALREADY_INITIALIZED,\n 'DataConnect instance already initialized!'\n );\n }\n this.transportOptions = transportOptions;\n this.isEmulator = true;\n }\n}\n\nexport function connectDataConnectEmulator(\n dc: DataConnect,\n host: string,\n port?: number,\n sslEnabled = false\n) {\n dc.enableEmulator({ host, port, sslEnabled });\n}\n\nexport function getDataConnect(options: ConnectorConfig): DataConnect;\nexport function getDataConnect(\n app: FirebaseApp,\n options: ConnectorConfig\n): DataConnect;\nexport function getDataConnect(\n appOrOptions: FirebaseApp | ConnectorConfig,\n optionalOptions?: ConnectorConfig\n): DataConnect {\n let app: FirebaseApp;\n let dcOptions: ConnectorConfig;\n if ('location' in appOrOptions) {\n dcOptions = appOrOptions;\n app = getApp();\n } else {\n dcOptions = optionalOptions!;\n app = appOrOptions;\n }\n\n if (!app) {\n app = getApp();\n }\n const provider = _getProvider(app, 'data-connect');\n const identifier = JSON.stringify(dcOptions);\n if (provider.isInitialized(identifier)) {\n const dcInstance = provider.getImmediate({ identifier });\n const options = provider.getOptions(identifier);\n const optionsValid = Object.keys(options).length > 0;\n if (optionsValid) {\n logDebug('Re-using cached instance');\n return dcInstance;\n }\n }\n if (!dcOptions) {\n throw new DataConnectError(Code.INVALID_ARGUMENT, 'DC Option Required');\n }\n logDebug('Creating new DataConnect instance');\n // Initialize with options.\n return provider.initialize({\n instanceIdentifier: identifier,\n options: dcOptions\n });\n}\n\nexport function terminate(dataConnect: DataConnect) {\n dataConnect._delete();\n // TODO(mtewani): Stop pending tasks\n}\n","/**\n * @license\n * Copyright 2024 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// eslint-disable-next-line import/no-extraneous-dependencies\nimport {\n _registerComponent,\n registerVersion,\n SDK_VERSION\n} from '@firebase/app';\nimport { Component, ComponentType } from '@firebase/component';\n\nimport { name, version } from '../package.json';\nimport { setSDKVersion } from '../src/core/version';\n\nimport { DataConnect, ConnectorConfig } from './api/DataConnect';\n\nexport function registerDataConnect(variant?: string): void {\n setSDKVersion(SDK_VERSION);\n _registerComponent(\n new Component(\n 'data-connect',\n (container, { instanceIdentifier: settings, options }) => {\n const app = container.getProvider('app').getImmediate()!;\n const authProvider = container.getProvider('auth-internal');\n let newOpts = options as ConnectorConfig;\n if (settings) {\n newOpts = JSON.parse(settings);\n }\n return new DataConnect(\n app,\n { ...newOpts, projectId: app.options.projectId! },\n authProvider\n );\n },\n ComponentType.PUBLIC\n ).setMultipleInstances(true)\n );\n registerVersion(name, version, variant);\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\n registerVersion(name, version, '__BUILD_TARGET__');\n}\n","/**\n * @license\n * Copyright 2024 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 { DataConnectError } from '../core/error';\nimport { DataConnect, getDataConnect } from './DataConnect';\nimport {\n OperationRef,\n QueryStr,\n DataConnectResult,\n SerializedRef\n} from './Reference';\n\nexport type OnResultSubscription<Data, Variables> = (\n res: QueryResult<Data, Variables>\n) => void;\nexport type OnErrorSubscription = (err?: DataConnectError) => void;\nexport type QueryUnsubscribe = () => void;\nexport interface DataConnectSubscription<Data, Variables> {\n userCallback: OnResultSubscription<Data, Variables>;\n errCallback?: (e?: DataConnectError) => void;\n unsubscribe: () => void;\n}\nexport interface QueryRef<Data, Variables>\n extends OperationRef<Data, Variables> {\n refType: typeof QueryStr;\n}\nexport interface QueryResult<Data, Variables>\n extends DataConnectResult<Data, Variables> {\n ref: QueryRef<Data, Variables>;\n toJSON: () => SerializedRef<Data, Variables>;\n}\nexport interface QueryPromise<Data, Variables>\n extends PromiseLike<QueryResult<Data, Variables>> {\n // reserved for special actions like cancellation\n}\n\nexport function executeQuery<Data, Variables>(\n queryRef: QueryRef<Data, Variables>\n): QueryPromise<Data, Variables> {\n return queryRef.dataConnect._queryManager.executeQuery(queryRef);\n}\n\nexport function queryRef<Data>(\n dcInstance: DataConnect,\n queryName: string\n): QueryRef<Data, undefined>;\nexport function queryRef<Data, Variables>(\n dcInstance: DataConnect,\n queryName: string,\n variables: Variables\n): QueryRef<Data, Variables>;\nexport function queryRef<Data, Variables>(\n dcInstance: DataConnect,\n queryName: string,\n variables?: Variables,\n initialCache?: QueryResult<Data, Variables>\n): QueryRef<Data, Variables> {\n dcInstance.setInitialized();\n dcInstance._queryManager.track(queryName, variables, initialCache);\n return {\n dataConnect: dcInstance,\n refType: QueryStr,\n name: queryName,\n variables: variables as Variables\n };\n}\nexport function toQueryRef<Data, Variables>(\n serializedRef: SerializedRef<Data, Variables>\n) {\n const {\n refInfo: { name, variables, connectorConfig }\n } = serializedRef;\n return queryRef(getDataConnect(connectorConfig), name, variables);\n}\nexport type OnCompleteSubscription = () => void;\nexport interface SubscriptionOptions<Data, Variables> {\n onNext?: OnResultSubscription<Data, Variables>;\n onErr?: OnErrorSubscription;\n onComplete?: OnCompleteSubscription;\n}\n","/**\n * @license\n * Copyright 2024 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 {\n OnCompleteSubscription,\n OnErrorSubscription,\n OnResultSubscription,\n QueryRef,\n QueryUnsubscribe,\n SubscriptionOptions,\n toQueryRef\n} from './api/query';\nimport { OpResult, SerializedRef } from './api/Reference';\nimport { DataConnectError, Code } from './core/error';\n\n/**\n *\n * @public\n * @param queryRef\n * @param onResult\n * @param onErr\n * @param initialCache\n * @returns\n */\nexport function subscribe<Data, Variables>(\n queryRefOrSerializedResult:\n | QueryRef<Data, Variables>\n | SerializedRef<Data, Variables>,\n observer: SubscriptionOptions<Data, Variables>\n): QueryUnsubscribe;\nexport function subscribe<Data, Variables>(\n queryRefOrSerializedResult:\n | QueryRef<Data, Variables>\n | SerializedRef<Data, Variables>,\n onNext: OnResultSubscription<Data, Variables>,\n onError?: OnErrorSubscription,\n onComplete?: OnCompleteSubscription\n): QueryUnsubscribe;\nexport function subscribe<Data, Variables>(\n queryRefOrSerializedResult:\n | QueryRef<Data, Variables>\n | SerializedRef<Data, Variables>,\n observerOrOnNext:\n | SubscriptionOptions<Data, Variables>\n | OnResultSubscription<Data, Variables>,\n onError?: OnErrorSubscription,\n onComplete?: OnCompleteSubscription\n): QueryUnsubscribe {\n let ref: QueryRef<Data, Variables>;\n let initialCache: OpResult<Data> | undefined;\n if ('refInfo' in queryRefOrSerializedResult) {\n let serializedRef: SerializedRef<Data, Variables> =\n queryRefOrSerializedResult;\n const { data, source, fetchTime } = serializedRef;\n initialCache = {\n data,\n source,\n fetchTime\n };\n ref = toQueryRef(serializedRef);\n } else {\n ref = queryRefOrSerializedResult;\n }\n let onResult: OnResultSubscription<Data, Variables> | undefined = undefined;\n if (typeof observerOrOnNext === 'function') {\n onResult = observerOrOnNext;\n } else {\n onResult = observerOrOnNext.onNext;\n onError = observerOrOnNext.onErr;\n onComplete = observerOrOnNext.onComplete;\n }\n if (!onResult) {\n throw new DataConnectError(Code.INVALID_ARGUMENT, 'Must provide onNext');\n }\n return ref.dataConnect._queryManager.addSubscription(\n ref,\n onResult,\n onError,\n initialCache\n );\n}\n","/**\n * @license\n * Copyright 2024 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 { initializeFetch } from './network/fetch';\nimport { registerDataConnect } from './register';\n\nexport * from './api';\nexport * from './api.node';\ninitializeFetch(fetch);\n\nregisterDataConnect('node');\n"],"names":["SDK_VERSION"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Google LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { FirebaseApp } from '@firebase/app';
18
+ import { FirebaseAuthInternalName } from '@firebase/auth-interop-types';
19
+ import { Provider } from '@firebase/component';
20
+ import { QueryManager } from '../core/QueryManager';
21
+ import { MutationManager } from './Mutation';
22
+ export interface ProjectOptions {
23
+ location: string;
24
+ connector: string;
25
+ service: string;
26
+ projectId: string;
27
+ }
28
+ export interface ConnectorConfig {
29
+ location: string;
30
+ connector: string;
31
+ service: string;
32
+ }
33
+ export interface TransportOptions {
34
+ host: string;
35
+ sslEnabled?: boolean;
36
+ port?: number;
37
+ }
38
+ export declare const FIREBASE_DATA_CONNECT_EMULATOR_HOST_VAR = "FIREBASE_DATA_CONNECT_EMULATOR_HOST";
39
+ /**
40
+ *
41
+ * @param fullHost
42
+ * @returns TransportOptions
43
+ * @internal
44
+ */
45
+ export declare function parseOptions(fullHost: string): TransportOptions;
46
+ export interface DataConnectOptions extends ConnectorConfig {
47
+ projectId: string;
48
+ }
49
+ export declare class DataConnect {
50
+ readonly app: FirebaseApp;
51
+ private readonly dataConnectOptions;
52
+ private readonly authProvider;
53
+ _queryManager: QueryManager;
54
+ _mutationManager: MutationManager;
55
+ isEmulator: boolean;
56
+ initialized: boolean;
57
+ private _transport;
58
+ private transportClass;
59
+ private transportOptions?;
60
+ private authTokenProvider?;
61
+ constructor(app: FirebaseApp, dataConnectOptions: DataConnectOptions, authProvider: Provider<FirebaseAuthInternalName>);
62
+ _delete(): Promise<void>;
63
+ getSettings(): ConnectorConfig;
64
+ setInitialized(): void;
65
+ enableEmulator(transportOptions: TransportOptions): void;
66
+ }
67
+ export declare function connectDataConnectEmulator(dc: DataConnect, host: string, port?: number, sslEnabled?: boolean): void;
68
+ export declare function getDataConnect(options: ConnectorConfig): DataConnect;
69
+ export declare function getDataConnect(app: FirebaseApp, options: ConnectorConfig): DataConnect;
70
+ export declare function terminate(dataConnect: DataConnect): void;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Google LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { DataConnectTransport } from '../network/transport';
18
+ import { DataConnect } from './DataConnect';
19
+ import { DataConnectResult, MutationStr, OperationRef } from './Reference';
20
+ export interface MutationRef<Response, Variables> extends OperationRef<Response, Variables> {
21
+ refType: typeof MutationStr;
22
+ }
23
+ export declare function mutationRef<Response>(dcInstance: DataConnect, queryName: string): MutationRef<Response, undefined>;
24
+ export declare function mutationRef<Response, Variables>(dcInstance: DataConnect, queryName: string, variables: Variables): MutationRef<Response, Variables>;
25
+ export declare class MutationManager {
26
+ private transport;
27
+ private _inflight;
28
+ constructor(transport: DataConnectTransport);
29
+ executeMutation<Response, Variables>(mutationRef: MutationRef<Response, Variables>): MutationPromise<Response, Variables>;
30
+ }
31
+ export interface MutationResult<Data, Variables> extends DataConnectResult<Data, Variables> {
32
+ ref: MutationRef<Data, Variables>;
33
+ }
34
+ export interface MutationPromise<Data, Variables> extends PromiseLike<MutationResult<Data, Variables>> {
35
+ }
36
+ export declare function executeMutation<Data, Variables>(mutationRef: MutationRef<Data, Variables>): MutationPromise<Data, Variables>;
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Google LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { DataConnect, DataConnectOptions } from './DataConnect';
18
+ export declare const QueryStr = "query";
19
+ export declare const MutationStr = "mutation";
20
+ export declare type ReferenceType = typeof QueryStr | typeof MutationStr;
21
+ export declare const SOURCE_SERVER = "SERVER";
22
+ export declare const SOURCE_CACHE = "CACHE";
23
+ export declare type DataSource = typeof SOURCE_CACHE | typeof SOURCE_SERVER;
24
+ export interface OpResult<Data> {
25
+ data: Data;
26
+ source: DataSource;
27
+ fetchTime: string;
28
+ }
29
+ export interface OperationRef<_Data, Variables> {
30
+ name: string;
31
+ variables: Variables;
32
+ refType: ReferenceType;
33
+ dataConnect: DataConnect;
34
+ }
35
+ export interface DataConnectResult<Data, Variables> extends OpResult<Data> {
36
+ ref: OperationRef<Data, Variables>;
37
+ }
38
+ export interface RefInfo<Variables> {
39
+ name: string;
40
+ variables: Variables;
41
+ connectorConfig: DataConnectOptions;
42
+ }
43
+ export interface SerializedRef<Data, Variables> extends OpResult<Data> {
44
+ refInfo: RefInfo<Variables>;
45
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Google LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ export * from '../network';
18
+ export * from './DataConnect';
19
+ export * from './Reference';
20
+ export * from './Mutation';
21
+ export * from './query';
22
+ export { setLogLevel } from '../logger';
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Google LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { DataConnectError } from '../core/error';
18
+ import { DataConnect } from './DataConnect';
19
+ import { OperationRef, QueryStr, DataConnectResult, SerializedRef } from './Reference';
20
+ export declare type OnResultSubscription<Data, Variables> = (res: QueryResult<Data, Variables>) => void;
21
+ export declare type OnErrorSubscription = (err?: DataConnectError) => void;
22
+ export declare type QueryUnsubscribe = () => void;
23
+ export interface DataConnectSubscription<Data, Variables> {
24
+ userCallback: OnResultSubscription<Data, Variables>;
25
+ errCallback?: (e?: DataConnectError) => void;
26
+ unsubscribe: () => void;
27
+ }
28
+ export interface QueryRef<Data, Variables> extends OperationRef<Data, Variables> {
29
+ refType: typeof QueryStr;
30
+ }
31
+ export interface QueryResult<Data, Variables> extends DataConnectResult<Data, Variables> {
32
+ ref: QueryRef<Data, Variables>;
33
+ toJSON: () => SerializedRef<Data, Variables>;
34
+ }
35
+ export interface QueryPromise<Data, Variables> extends PromiseLike<QueryResult<Data, Variables>> {
36
+ }
37
+ export declare function executeQuery<Data, Variables>(queryRef: QueryRef<Data, Variables>): QueryPromise<Data, Variables>;
38
+ export declare function queryRef<Data>(dcInstance: DataConnect, queryName: string): QueryRef<Data, undefined>;
39
+ export declare function queryRef<Data, Variables>(dcInstance: DataConnect, queryName: string, variables: Variables): QueryRef<Data, Variables>;
40
+ export declare function toQueryRef<Data, Variables>(serializedRef: SerializedRef<Data, Variables>): QueryRef<unknown, Variables>;
41
+ export declare type OnCompleteSubscription = () => void;
42
+ export interface SubscriptionOptions<Data, Variables> {
43
+ onNext?: OnResultSubscription<Data, Variables>;
44
+ onErr?: OnErrorSubscription;
45
+ onComplete?: OnCompleteSubscription;
46
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Google LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { OnCompleteSubscription, OnErrorSubscription, OnResultSubscription, QueryRef, QueryUnsubscribe, SubscriptionOptions } from './api/query';
18
+ import { SerializedRef } from './api/Reference';
19
+ /**
20
+ *
21
+ * @public
22
+ * @param queryRef
23
+ * @param onResult
24
+ * @param onErr
25
+ * @param initialCache
26
+ * @returns
27
+ */
28
+ export declare function subscribe<Data, Variables>(queryRefOrSerializedResult: QueryRef<Data, Variables> | SerializedRef<Data, Variables>, observer: SubscriptionOptions<Data, Variables>): QueryUnsubscribe;
29
+ export declare function subscribe<Data, Variables>(queryRefOrSerializedResult: QueryRef<Data, Variables> | SerializedRef<Data, Variables>, onNext: OnResultSubscription<Data, Variables>, onError?: OnErrorSubscription, onComplete?: OnCompleteSubscription): QueryUnsubscribe;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Google LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ export { subscribe } from './api.browser';
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Google LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { FirebaseOptions } from '@firebase/app';
18
+ import { FirebaseAuthInternalName, FirebaseAuthTokenData } from '@firebase/auth-interop-types';
19
+ import { Provider } from '@firebase/component';
20
+ export interface AuthTokenProvider {
21
+ getToken(forceRefresh: boolean): Promise<FirebaseAuthTokenData | null>;
22
+ addTokenChangeListener(listener: AuthTokenListener): void;
23
+ }
24
+ export declare type AuthTokenListener = (token: string | null) => void;
25
+ export declare class FirebaseAuthProvider implements AuthTokenProvider {
26
+ private appName;
27
+ private options;
28
+ private authProvider_;
29
+ private auth_;
30
+ constructor(appName: string, options: FirebaseOptions, authProvider_: Provider<FirebaseAuthInternalName>);
31
+ getToken(forceRefresh: boolean): Promise<FirebaseAuthTokenData | null>;
32
+ addTokenChangeListener(listener: AuthTokenListener): void;
33
+ removeTokenChangeListener(listener: (token: string | null) => void): void;
34
+ }
35
+ export declare class EmulatorTokenProvider implements AuthTokenProvider {
36
+ private accessToken;
37
+ /** A string that is treated as an admin access token by the RTDB emulator. Used by Admin SDK. */
38
+ static OWNER: string;
39
+ constructor(accessToken: string);
40
+ getToken(forceRefresh: boolean): Promise<FirebaseAuthTokenData>;
41
+ addTokenChangeListener(listener: AuthTokenListener): void;
42
+ removeTokenChangeListener(listener: (token: string | null) => void): void;
43
+ notifyForInvalidToken(): void;
44
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Google LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { DataConnectSubscription, OnErrorSubscription, OnResultSubscription, QueryPromise, QueryRef } from '../api/query';
18
+ import { OperationRef, OpResult } from '../api/Reference';
19
+ import { DataConnectTransport } from '../network';
20
+ import { DataConnectError } from './error';
21
+ interface TrackedQuery<Response, Variables> {
22
+ ref: Omit<OperationRef<Response, Variables>, 'dataConnect'>;
23
+ subscriptions: Array<DataConnectSubscription<Response, Variables>>;
24
+ currentCache: OpResult<Response> | null;
25
+ lastError: DataConnectError | null;
26
+ }
27
+ export declare class QueryManager {
28
+ private transport;
29
+ _queries: Map<string, TrackedQuery<unknown, unknown>>;
30
+ constructor(transport: DataConnectTransport);
31
+ track<Response, Variables>(queryName: string, variables: Variables, initialCache?: OpResult<Response>): TrackedQuery<unknown, unknown> | undefined;
32
+ addSubscription<Response, Variables>(queryRef: OperationRef<Response, Variables>, onResultCallback: OnResultSubscription<Response, Variables>, onErrorCallback?: OnErrorSubscription, initialCache?: OpResult<Response>): () => void;
33
+ executeQuery<Response, Variables>(queryRef: QueryRef<Response, Variables>): QueryPromise<Response, Variables>;
34
+ enableEmulator(host: string, port: number): void;
35
+ }
36
+ export {};
@@ -0,0 +1,50 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Google LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { FirebaseError } from '@firebase/util';
18
+ export declare type DataConnectErrorCode = 'other' | 'already-initialized' | 'not-initialized' | 'not-supported' | 'invalid-argument' | 'partial-error';
19
+ export declare type Code = DataConnectErrorCode;
20
+ export declare const Code: {
21
+ OTHER: DataConnectErrorCode;
22
+ ALREADY_INITIALIZED: DataConnectErrorCode;
23
+ NOT_INITIALIZED: DataConnectErrorCode;
24
+ NOT_SUPPORTED: DataConnectErrorCode;
25
+ INVALID_ARGUMENT: DataConnectErrorCode;
26
+ PARTIAL_ERROR: DataConnectErrorCode;
27
+ };
28
+ /** An error returned by a DataConnect operation. */
29
+ export declare class DataConnectError extends FirebaseError {
30
+ /**
31
+ * The backend error code associated with this error.
32
+ */
33
+ readonly code: DataConnectErrorCode;
34
+ /**
35
+ * A custom error description.
36
+ */
37
+ readonly message: string;
38
+ /** The stack of the error. */
39
+ readonly stack?: string;
40
+ /** @hideconstructor */
41
+ constructor(
42
+ /**
43
+ * The backend error code associated with this error.
44
+ */
45
+ code: DataConnectErrorCode,
46
+ /**
47
+ * A custom error description.
48
+ */
49
+ message: string);
50
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Google LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ /** The semver (www.semver.org) version of the SDK. */
18
+ export declare let SDK_VERSION: string;
19
+ /**
20
+ * SDK_VERSION should be set before any database instance is created
21
+ * @internal
22
+ */
23
+ export declare function setSDKVersion(version: string): void;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Firebase Data Connect
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ /**
7
+ * @license
8
+ * Copyright 2024 Google LLC
9
+ *
10
+ * Licensed under the Apache License, Version 2.0 (the "License");
11
+ * you may not use this file except in compliance with the License.
12
+ * You may obtain a copy of the License at
13
+ *
14
+ * http://www.apache.org/licenses/LICENSE-2.0
15
+ *
16
+ * Unless required by applicable law or agreed to in writing, software
17
+ * distributed under the License is distributed on an "AS IS" BASIS,
18
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
+ * See the License for the specific language governing permissions and
20
+ * limitations under the License.
21
+ */
22
+ import { DataConnect } from './api/DataConnect';
23
+ export * from './api';
24
+ export * from './api.browser';
25
+ declare module '@firebase/component' {
26
+ interface NameServiceMapping {
27
+ 'data-connect': DataConnect;
28
+ }
29
+ }