0x1998 - MANAGER
Düzenlenen Dosya: index.cjs.js.map
{"version":3,"file":"index.cjs.js","sources":["../src/core/version.ts","../src/core/error.ts","../src/cache/EntityDataObject.ts","../src/cache/InMemoryCacheProvider.ts","../src/cache/EntityNode.ts","../src/cache/ResultTree.ts","../src/cache/ImpactedQueryRefsAccumulator.ts","../src/cache/ResultTreeProcessor.ts","../src/cache/Cache.ts","../src/core/AppCheckTokenProvider.ts","../src/logger.ts","../src/core/FirebaseAuthProvider.ts","../src/api/Reference.ts","../src/cache/cacheUtils.ts","../src/util/encoder.ts","../src/core/query/QueryManager.ts","../src/network/transport/index.ts","../src/util/url.ts","../src/network/fetch.ts","../src/network/transport/rest.ts","../src/api/Mutation.ts","../src/api/DataConnect.ts","../src/register.ts","../src/core/query/queryOptions.ts","../src/api/query.ts","../src/util/validateArgs.ts","../src/core/query/subscribe.ts","../src/index.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\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 */\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 | 'unauthorized';\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 UNAUTHORIZED: 'unauthorized' as DataConnectErrorCode\n};\n\n/** An error returned by a DataConnect operation. */\nexport class DataConnectError extends FirebaseError {\n /** @internal */\n readonly name: string = 'DataConnectError';\n\n constructor(code: Code, message: string) {\n super(code, message);\n\n // Ensure the instanceof operator works as expected on subclasses of Error.\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#custom_error_types\n // and https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#support-for-newtarget\n Object.setPrototypeOf(this, DataConnectError.prototype);\n }\n\n /** @internal */\n toString(): string {\n return `${this.name}[code=${this.code}]: ${this.message}`;\n }\n}\n\n/** An error returned by a DataConnect operation. */\nexport class DataConnectOperationError extends DataConnectError {\n /** @internal */\n readonly name: string = 'DataConnectOperationError';\n\n /** The response received from the backend. */\n readonly response: DataConnectOperationFailureResponse;\n\n /** @hideconstructor */\n constructor(message: string, response: DataConnectOperationFailureResponse) {\n super(Code.PARTIAL_ERROR, message);\n this.response = response;\n }\n}\n\nexport interface DataConnectOperationFailureResponse {\n // The \"data\" provided by the backend in the response message.\n //\n // Will be `undefined` if no \"data\" was provided in the response message.\n // Otherwise, will be `null` if `null` was explicitly specified as the \"data\"\n // in the response message. Otherwise, will be the value of the \"data\"\n // specified as the \"data\" in the response message\n readonly data?: Record<string, unknown> | null;\n\n // The list of errors provided by the backend in the response message.\n readonly errors: DataConnectOperationFailureResponseErrorInfo[];\n}\n\n// Information about the error, as provided in the response from the backend.\n// See https://spec.graphql.org/draft/#sec-Errors\nexport interface DataConnectOperationFailureResponseErrorInfo {\n // The error message.\n readonly message: string;\n\n // The path of the field in the response data to which this error relates.\n // String values in this array refer to field names. Numeric values in this\n // array always satisfy `Number.isInteger()` and refer to the index in an\n // array.\n readonly path: Array<string | number>;\n}\n","/**\n * @license\n * Copyright 2025 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 FDCScalarValue =\n | string\n | number\n | boolean\n | undefined\n | null\n | Record<string, unknown>\n | FDCScalarValue[];\n\nexport interface EntityDataObjectJson {\n map: {\n [key: string]: FDCScalarValue;\n };\n referencedFrom: string[];\n globalID: string;\n}\n\nexport class EntityDataObject {\n getServerValue(key: string): unknown {\n return this.serverValues[key];\n }\n private serverValues: { [key: string]: FDCScalarValue } = {};\n private referencedFrom = new Set<string>();\n constructor(public readonly globalID: string) {}\n getServerValues(): { [key: string]: FDCScalarValue } {\n return this.serverValues;\n }\n toJSON(): EntityDataObjectJson {\n return {\n globalID: this.globalID,\n map: this.serverValues,\n referencedFrom: Array.from(this.referencedFrom)\n };\n }\n static fromJSON(json: EntityDataObjectJson): EntityDataObject {\n const edo = new EntityDataObject(json.globalID);\n edo.serverValues = json.map;\n edo.referencedFrom = new Set(json.referencedFrom);\n return edo;\n }\n\n updateServerValue(\n key: string,\n value: FDCScalarValue,\n requestedFrom: string\n ): string[] {\n this.serverValues[key] = value;\n this.referencedFrom.add(requestedFrom);\n return Array.from(this.referencedFrom);\n }\n}\n","/**\n * @license\n * Copyright 2025 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 { InternalCacheProvider } from './CacheProvider';\nimport { EntityDataObject } from './EntityDataObject';\nimport { ResultTree } from './ResultTree';\n\nexport class InMemoryCacheProvider implements InternalCacheProvider {\n private edos = new Map<string, EntityDataObject>();\n private resultTrees = new Map<string, ResultTree>();\n constructor(private _keyId: string) {}\n\n async setResultTree(queryId: string, rt: ResultTree): Promise<void> {\n this.resultTrees.set(queryId, rt);\n }\n async getResultTree(queryId: string): Promise<ResultTree | undefined> {\n return this.resultTrees.get(queryId);\n }\n async updateEntityData(entityData: EntityDataObject): Promise<void> {\n this.edos.set(entityData.globalID, entityData);\n }\n async getEntityData(globalId: string): Promise<EntityDataObject> {\n if (!this.edos.has(globalId)) {\n this.edos.set(globalId, new EntityDataObject(globalId));\n }\n // Because of the above, we can guarantee that there will be an EDO at the globalId.\n return this.edos.get(globalId)!;\n }\n close(): Promise<void> {\n // No-op\n return Promise.resolve();\n }\n}\n","/**\n * @license\n * Copyright 2025 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';\n\nimport { InternalCacheProvider } from './CacheProvider';\nimport {\n EntityDataObject,\n EntityDataObjectJson,\n FDCScalarValue\n} from './EntityDataObject';\nimport { ImpactedQueryRefsAccumulator } from './ImpactedQueryRefsAccumulator';\n\nexport const GLOBAL_ID_KEY = '_id';\nexport const OBJECT_LISTS_KEY = '_objectLists';\nexport const REFERENCES_KEY = '_references';\nexport const SCALARS_KEY = '_scalars';\nexport const ENTITY_DATA_KEYS_KEY = '_entity_data_keys';\nexport class EntityNode {\n entityData?: EntityDataObject;\n scalars: Record<string, FDCScalarValue> = {};\n references: { [key: string]: EntityNode } = {};\n objectLists: {\n [key: string]: EntityNode[];\n } = {};\n globalId?: string;\n entityDataKeys: Set<string> = new Set();\n\n async loadData(\n queryId: string,\n values: FDCScalarValue,\n entityIds: Record<string, unknown> | undefined,\n acc: ImpactedQueryRefsAccumulator,\n cacheProvider: InternalCacheProvider\n ): Promise<void> {\n if (values === undefined) {\n return;\n }\n if (typeof values !== 'object' || Array.isArray(values)) {\n throw new DataConnectError(\n Code.INVALID_ARGUMENT,\n 'EntityNode initialized with non-object value'\n );\n }\n if (values === null) {\n return;\n }\n\n if (\n typeof values === 'object' &&\n entityIds &&\n entityIds[GLOBAL_ID_KEY] &&\n typeof entityIds[GLOBAL_ID_KEY] === 'string'\n ) {\n this.globalId = entityIds[GLOBAL_ID_KEY];\n this.entityData = await cacheProvider.getEntityData(this.globalId);\n }\n for (const key in values) {\n if (values.hasOwnProperty(key)) {\n if (typeof values[key] === 'object') {\n if (Array.isArray(values[key])) {\n const ids: Record<string, unknown> | undefined =\n entityIds && (entityIds[key] as Record<string, unknown>);\n const objArray: EntityNode[] = [];\n const scalarArray: Array<NonNullable<FDCScalarValue>> = [];\n for (const [index, value] of values[key].entries()) {\n if (typeof value === 'object') {\n if (Array.isArray(value)) {\n // Note: we don't support sparse arrays.\n } else {\n const entityNode = new EntityNode();\n await entityNode.loadData(\n queryId,\n value,\n ids && (ids[index] as Record<string, unknown>),\n acc,\n cacheProvider\n );\n objArray.push(entityNode);\n }\n } else {\n scalarArray.push(value);\n }\n }\n if (scalarArray.length > 0 && objArray.length > 0) {\n this.scalars[key] = values[key];\n } else if (scalarArray.length > 0) {\n if (this.entityData) {\n const impactedRefs = this.entityData.updateServerValue(\n key,\n scalarArray,\n queryId\n );\n this.entityDataKeys.add(key);\n acc.add(impactedRefs);\n } else {\n this.scalars[key] = scalarArray;\n }\n } else if (objArray.length > 0) {\n this.objectLists[key] = objArray;\n } else {\n this.scalars[key] = [];\n }\n } else {\n if (values[key] === null) {\n this.scalars[key] = null;\n continue;\n }\n const entityNode = new EntityNode();\n // TODO: Load Data might need to be pushed into ResultTreeProcessor instead.\n await entityNode.loadData(\n queryId,\n (values as Record<string, FDCScalarValue>)[key],\n entityIds && (entityIds[key] as Record<string, unknown>),\n acc,\n cacheProvider\n );\n this.references[key] = entityNode;\n }\n } else {\n if (this.entityData) {\n const impactedRefs = this.entityData.updateServerValue(\n key,\n values[key] as FDCScalarValue,\n queryId\n );\n this.entityDataKeys.add(key);\n acc.add(impactedRefs);\n } else {\n this.scalars[key] = values[key] as FDCScalarValue;\n }\n }\n }\n }\n if (this.entityData) {\n await cacheProvider.updateEntityData(this.entityData);\n }\n }\n\n toJSON(mode: EncodingMode): Record<string, unknown> {\n const resultObject: Record<string, unknown> = {};\n if (mode === EncodingMode.hydrated) {\n if (this.entityData) {\n for (const key of this.entityDataKeys) {\n resultObject[key] = this.entityData.getServerValue(key);\n }\n }\n\n if (this.scalars) {\n Object.assign(resultObject, this.scalars);\n }\n if (this.references) {\n for (const key in this.references) {\n if (this.references.hasOwnProperty(key)) {\n resultObject[key] = this.references[key].toJSON(mode);\n }\n }\n }\n if (this.objectLists) {\n for (const key in this.objectLists) {\n if (this.objectLists.hasOwnProperty(key)) {\n resultObject[key] = this.objectLists[key].map(obj =>\n obj.toJSON(mode)\n );\n }\n }\n }\n return resultObject;\n } else {\n // Get JSON representation of dehydrated list\n if (this.entityData) {\n resultObject[GLOBAL_ID_KEY] = this.entityData.globalID;\n }\n\n resultObject[ENTITY_DATA_KEYS_KEY] = Array.from(this.entityDataKeys);\n\n if (this.scalars) {\n resultObject[SCALARS_KEY] = this.scalars;\n }\n\n if (this.references) {\n const references = {} as Record<string, unknown>;\n for (const key in this.references) {\n if (this.references.hasOwnProperty(key)) {\n references[key] = this.references[key].toJSON(mode);\n }\n }\n resultObject[REFERENCES_KEY] = references;\n }\n if (this.objectLists) {\n const objectLists = {} as Record<string, unknown>;\n for (const key in this.objectLists) {\n if (this.objectLists.hasOwnProperty(key)) {\n objectLists[key] = this.objectLists[key].map(obj =>\n obj.toJSON(mode)\n );\n }\n }\n resultObject[OBJECT_LISTS_KEY] = objectLists;\n }\n }\n\n return resultObject;\n }\n\n static fromJson(obj: DehydratedStubDataObject): EntityNode {\n const sdo = new EntityNode();\n if (obj.backingData) {\n sdo.entityData = EntityDataObject.fromJSON(obj.backingData);\n }\n sdo.globalId = obj.globalID;\n sdo.scalars = obj.scalars;\n if (obj.references) {\n const references: Record<string, unknown> = {};\n for (const key in obj.references) {\n if (obj.references.hasOwnProperty(key)) {\n references[key] = EntityNode.fromJson(obj.references[key]);\n }\n }\n sdo.references = references as typeof sdo.references;\n }\n if (obj.objectLists) {\n const objectLists: Record<string, unknown> = {};\n for (const key in obj.objectLists) {\n if (obj.objectLists.hasOwnProperty(key)) {\n objectLists[key] = obj.objectLists[key].map(obj =>\n EntityNode.fromJson(obj)\n );\n }\n }\n sdo.objectLists = objectLists as typeof sdo.objectLists;\n }\n return sdo;\n }\n}\n\nexport interface DehydratedStubDataObject {\n backingData?: EntityDataObjectJson;\n globalID?: string;\n scalars: { [key: string]: FDCScalarValue };\n references: { [key: string]: DehydratedStubDataObject };\n objectLists: {\n [key: string]: DehydratedStubDataObject[];\n };\n}\n\n// Helpful for storing in persistent cache, which is not available yet.\nexport enum EncodingMode {\n hydrated,\n dehydrated\n}\n","/**\n * @license\n * Copyright 2025 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 { EntityNode, DehydratedStubDataObject } from './EntityNode';\n\nexport class ResultTree {\n /**\n * Create a {@link ResultTree} from a dehydrated JSON object.\n * @param value The dehydrated JSON object.\n * @returns The {@link ResultTree}.\n */\n static fromJson(value: DehydratedResultTreeJson): ResultTree {\n return new ResultTree(\n EntityNode.fromJson(value.rootStub),\n value.maxAge,\n value.cachedAt,\n value.lastAccessed\n );\n }\n constructor(\n private rootStub: EntityNode,\n private maxAge: number = 0,\n public readonly cachedAt: Date,\n private _lastAccessed: Date\n ) {}\n isStale(): boolean {\n return (\n Date.now() - new Date(this.cachedAt.getTime()).getTime() >\n this.maxAge * 1000\n );\n }\n updateMaxAge(maxAgeInSeconds: number): void {\n this.maxAge = maxAgeInSeconds;\n }\n updateAccessed(): void {\n this._lastAccessed = new Date();\n }\n get lastAccessed(): Date {\n return this._lastAccessed;\n }\n getRootStub(): EntityNode {\n return this.rootStub;\n }\n}\n\ninterface DehydratedResultTreeJson {\n rootStub: DehydratedStubDataObject;\n maxAge: number;\n cachedAt: Date;\n lastAccessed: Date;\n}\n","/**\n * @license\n * Copyright 2025 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 class ImpactedQueryRefsAccumulator {\n impacted = new Set<string>();\n constructor(private queryId: string) {}\n add(impacted: string[]): void {\n impacted\n .filter(ref => ref !== this.queryId)\n .forEach(ref => this.impacted.add(ref));\n }\n consumeEvents(): string[] {\n const events = Array.from(this.impacted);\n this.impacted.clear();\n return events;\n }\n}\n","/**\n * @license\n * Copyright 2025 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 { InternalCacheProvider } from './CacheProvider';\nimport { EncodingMode, EntityNode } from './EntityNode';\nimport { ImpactedQueryRefsAccumulator } from './ImpactedQueryRefsAccumulator';\n\ninterface DehydratedResults {\n entityNode: EntityNode;\n impacted: string[];\n}\n\nexport class ResultTreeProcessor {\n /**\n * Hydrate the EntityNode into a JSON object so that it can be returned to the user.\n * @param rootStubObject\n * @returns {string}\n */\n hydrateResults(rootStubObject: EntityNode): Record<string, unknown> {\n return rootStubObject.toJSON(EncodingMode.hydrated);\n }\n /**\n * Dehydrate results so that they can be stored in the cache.\n * @param json\n * @param entityIds\n * @param cacheProvider\n * @param queryId\n * @returns {Promise<DehydratedResults>}\n */\n async dehydrateResults(\n json: Record<string, unknown>,\n entityIds: Record<string, unknown>,\n cacheProvider: InternalCacheProvider,\n queryId: string\n ): Promise<DehydratedResults> {\n const acc = new ImpactedQueryRefsAccumulator(queryId);\n const entityNode = new EntityNode();\n await entityNode.loadData(queryId, json, entityIds, acc, cacheProvider);\n return {\n entityNode,\n impacted: acc.consumeEvents()\n };\n }\n}\n","/**\n * @license\n * Copyright 2025 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 { generateSHA256Hash } from '@firebase/util';\n\nimport {\n CacheProvider,\n CacheSettings,\n type ConnectorConfig\n} from '../api/DataConnect';\nimport { Code, DataConnectError } from '../core/error';\nimport { type AuthTokenProvider } from '../core/FirebaseAuthProvider';\n\nimport { InternalCacheProvider } from './CacheProvider';\nimport { InMemoryCacheProvider } from './InMemoryCacheProvider';\nimport { ResultTree } from './ResultTree';\nimport { ResultTreeProcessor } from './ResultTreeProcessor';\n\nexport const Memory = 'memory';\n\nexport type DataConnectStorage = typeof Memory;\n\n/**\n * ServerValues\n */\nexport interface ServerValues extends Record<string, unknown> {\n maxAge?: number;\n}\n\nexport class DataConnectCache {\n private cacheProvider: InternalCacheProvider | null = null;\n private uid: string | null = null;\n constructor(\n private authProvider: AuthTokenProvider,\n private projectId: string,\n private connectorConfig: ConnectorConfig,\n private host: string,\n public cacheSettings: CacheSettings\n ) {\n this.authProvider.addTokenChangeListener(async _ => {\n const newUid = this.authProvider.getAuth().getUid();\n // We should only close if the token changes and so does the new UID\n if (this.uid !== newUid) {\n this.cacheProvider?.close();\n this.uid = newUid;\n const identifier = await this.getIdentifier(this.uid);\n this.cacheProvider = this.initializeNewProviders(identifier);\n }\n });\n }\n\n async initialize(): Promise<void> {\n if (!this.cacheProvider) {\n const identifier = await this.getIdentifier(this.uid);\n this.cacheProvider = this.initializeNewProviders(identifier);\n }\n }\n\n async getIdentifier(uid: string | null): Promise<string> {\n const identifier = `${\n 'memory' // TODO: replace this with indexeddb when persistence is available.\n }-${this.projectId}-${this.connectorConfig.service}-${\n this.connectorConfig.connector\n }-${this.connectorConfig.location}-${uid}-${this.host}`;\n const sha256 = await generateSHA256Hash(identifier);\n return sha256;\n }\n\n initializeNewProviders(identifier: string): InternalCacheProvider {\n return this.cacheSettings.cacheProvider.initialize(identifier);\n }\n\n async containsResultTree(queryId: string): Promise<boolean> {\n await this.initialize();\n const resultTree = await this.cacheProvider!.getResultTree(queryId);\n return resultTree !== undefined;\n }\n async getResultTree(queryId: string): Promise<ResultTree | undefined> {\n await this.initialize();\n return this.cacheProvider!.getResultTree(queryId);\n }\n async getResultJSON(queryId: string): Promise<Record<string, unknown>> {\n await this.initialize();\n const processor = new ResultTreeProcessor();\n const cacheProvider = this.cacheProvider;\n const resultTree = await cacheProvider!.getResultTree(queryId);\n if (!resultTree) {\n throw new DataConnectError(\n Code.INVALID_ARGUMENT,\n `${queryId} not found in cache. Call \"update()\" first.`\n );\n }\n return processor.hydrateResults(resultTree.getRootStub());\n }\n async update(\n queryId: string,\n serverValues: ServerValues,\n entityIds: Record<string, unknown>\n ): Promise<string[]> {\n await this.initialize();\n const processor = new ResultTreeProcessor();\n const cacheProvider = this.cacheProvider;\n const { entityNode: stubDataObject, impacted } =\n await processor.dehydrateResults(\n serverValues,\n entityIds,\n cacheProvider!,\n queryId\n );\n const now = new Date();\n await cacheProvider!.setResultTree(\n queryId,\n new ResultTree(\n stubDataObject,\n serverValues.maxAge || this.cacheSettings.maxAgeSeconds,\n now,\n now\n )\n );\n return impacted;\n }\n}\n\nexport class MemoryStub implements CacheProvider<'MEMORY'> {\n type: 'MEMORY' = 'MEMORY';\n /**\n * @internal\n */\n initialize(cacheId: string): InMemoryCacheProvider {\n return new InMemoryCacheProvider(cacheId);\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 { FirebaseApp, _isFirebaseServerApp } from '@firebase/app';\nimport {\n AppCheckInternalComponentName,\n AppCheckTokenListener,\n AppCheckTokenResult,\n FirebaseAppCheckInternal\n} from '@firebase/app-check-interop-types';\nimport { Provider } from '@firebase/component';\n\n/**\n * @internal\n * Abstraction around AppCheck's token fetching capabilities.\n */\nexport class AppCheckTokenProvider {\n private appCheck?: FirebaseAppCheckInternal | null;\n private serverAppAppCheckToken?: string;\n constructor(\n app: FirebaseApp,\n private appCheckProvider?: Provider<AppCheckInternalComponentName>\n ) {\n if (_isFirebaseServerApp(app) && app.settings.appCheckToken) {\n this.serverAppAppCheckToken = app.settings.appCheckToken;\n }\n this.appCheck = appCheckProvider?.getImmediate({ optional: true });\n if (!this.appCheck) {\n void appCheckProvider\n ?.get()\n .then(appCheck => (this.appCheck = appCheck))\n .catch();\n }\n }\n\n getToken(): Promise<AppCheckTokenResult | null> {\n if (this.serverAppAppCheckToken) {\n return Promise.resolve({ token: this.serverAppAppCheckToken });\n }\n\n if (!this.appCheck) {\n return new Promise<AppCheckTokenResult | null>((resolve, reject) => {\n // Support delayed initialization of FirebaseAppCheck. This allows our\n // customers to initialize the RTDB SDK before initializing Firebase\n // AppCheck and ensures that all requests are authenticated if a token\n // becomes available before the timoeout below expires.\n setTimeout(() => {\n if (this.appCheck) {\n this.getToken().then(resolve, reject);\n } else {\n resolve(null);\n }\n }, 0);\n });\n }\n return this.appCheck.getToken();\n }\n\n addTokenChangeListener(listener: AppCheckTokenListener): void {\n void this.appCheckProvider\n ?.get()\n .then(appCheck => appCheck.addTokenListener(listener));\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 */\nimport { Logger, LogLevelString } from '@firebase/logger';\n\nimport { SDK_VERSION } from './core/version';\n\nconst logger = new Logger('@firebase/data-connect');\nexport function setLogLevel(logLevel: LogLevelString): void {\n logger.setLogLevel(logLevel);\n}\nexport function logDebug(msg: string): void {\n logger.debug(`DataConnect (${SDK_VERSION}): ${msg}`);\n}\n\nexport function logError(msg: string): void {\n logger.error(`DataConnect (${SDK_VERSION}): ${msg}`);\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-types';\nimport {\n FirebaseAuthInternal,\n FirebaseAuthInternalName,\n FirebaseAuthTokenData\n} from '@firebase/auth-interop-types';\nimport { Provider } from '@firebase/component';\n\nimport { logDebug, logError } from '../logger';\n\n// @internal\nexport interface AuthTokenProvider {\n getToken(forceRefresh: boolean): Promise<FirebaseAuthTokenData | null>;\n addTokenChangeListener(listener: AuthTokenListener): void;\n getAuth(): FirebaseAuthInternal;\n}\nexport type AuthTokenListener = (token: string | null) => void;\n\n// @internal\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 getAuth(): FirebaseAuthInternal {\n return this._auth;\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): void {\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 .catch(err => logError(err));\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 { Extensions } from '../network';\n\nimport { DataConnect, DataConnectOptions } from './DataConnect';\nexport const QUERY_STR = 'query';\nexport const MUTATION_STR = 'mutation';\nexport type ReferenceType = typeof QUERY_STR | typeof MUTATION_STR;\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 extensions?: Extensions;\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\n/**\n * Serialized RefInfo as a result of `QueryResult.toJSON().refInfo`\n */\nexport interface RefInfo<Variables> {\n name: string;\n variables: Variables;\n connectorConfig: DataConnectOptions;\n}\n/**\n * Serialized Ref as a result of `QueryResult.toJSON()`\n */\nexport interface SerializedRef<Data, Variables> extends OpResult<Data> {\n refInfo: RefInfo<Variables>;\n}\n","/**\n * @license\n * Copyright 2026 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 { OpResult } from '../api/Reference';\nimport { DataConnectExtension } from '../network';\nexport function parseEntityIds<T>(\n result: OpResult<T>\n): Record<string, unknown> {\n // Iterate through extensions.dataConnect\n const dataConnectExtensions = result.extensions?.dataConnect;\n const dataCopy = Object.assign(result);\n if (!dataConnectExtensions) {\n return dataCopy;\n }\n const ret: Record<string, unknown> = {};\n for (const extension of dataConnectExtensions) {\n const { path } = extension;\n populatePath(path, ret, extension);\n }\n return ret;\n}\n\n// mutates the object to update the path\nexport function populatePath(\n path: Array<string | number>,\n toUpdate: Record<string | number, unknown>,\n extension: DataConnectExtension\n): void {\n let curObj: Record<string | number, unknown> = toUpdate;\n for (const slice of path) {\n if (typeof curObj[slice] !== 'object') {\n curObj[slice] = {};\n }\n curObj = curObj[slice] as Record<string, unknown>;\n }\n\n if ('entityId' in extension && extension.entityId) {\n curObj['_id'] = extension.entityId;\n } else if ('entityIds' in extension) {\n const entityArr = extension.entityIds;\n for (let i = 0; i < entityArr.length; i++) {\n const entityId = entityArr[i];\n if (typeof curObj[i] === 'undefined') {\n curObj[i] = {};\n }\n (curObj[i] as Record<string, unknown>)._id = entityId;\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\nexport type HmacImpl = (obj: Record<string, unknown>) => string;\nexport let encoderImpl: HmacImpl;\nexport type DecodeHmacImpl = (s: string) => Record<string, unknown>;\nexport let decoderImpl: DecodeHmacImpl;\nexport function setEncoder(encoder: HmacImpl): void {\n encoderImpl = encoder;\n}\nexport function setDecoder(decoder: DecodeHmacImpl): void {\n decoderImpl = decoder;\n}\nfunction sortKeysForObj(o: Record<string, unknown>): Record<string, unknown> {\n return Object.keys(o)\n .sort()\n .reduce((accumulator, currentKey) => {\n accumulator[currentKey] = o[currentKey];\n return accumulator;\n }, {} as Record<string, unknown>);\n}\nsetEncoder((o: Record<string, unknown>) => JSON.stringify(sortKeysForObj(o)));\nsetDecoder(s => sortKeysForObj(JSON.parse(s)));\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 { type DataConnect } from '../../api/DataConnect';\nimport { QueryRef, QueryResult } from '../../api/query';\nimport {\n QUERY_STR,\n SerializedRef,\n SOURCE_SERVER,\n DataSource,\n SOURCE_CACHE\n} from '../../api/Reference';\nimport { DataConnectSubscription } from '../../api.browser';\nimport { DataConnectCache, ServerValues } from '../../cache/Cache';\nimport { parseEntityIds } from '../../cache/cacheUtils';\nimport { EncodingMode } from '../../cache/EntityNode';\nimport { DataConnectTransport, Extensions } from '../../network';\nimport {\n DataConnectExtensionWithMaxAge,\n ExtensionsWithMaxAge\n} from '../../network/transport';\nimport { decoderImpl, encoderImpl } from '../../util/encoder';\nimport { Code, DataConnectError } from '../error';\n\nimport {\n OnCompleteSubscription,\n OnErrorSubscription,\n OnResultSubscription\n} from './subscribe';\n\nexport function getRefSerializer<Data, Variables>(\n queryRef: QueryRef<Data, Variables>,\n data: Data,\n source: DataSource,\n fetchTime: string\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,\n source\n };\n };\n}\n\nexport class QueryManager {\n async preferCacheResults<Data, Variables>(\n queryRef: QueryRef<Data, Variables>,\n allowStale = false\n ): Promise<QueryResult<Data, Variables>> {\n let cacheResult: QueryResult<Data, Variables> | undefined;\n try {\n cacheResult = await this.fetchCacheResults(queryRef, allowStale);\n } catch (e) {\n // Ignore the error and try to fetch from the server.\n }\n if (cacheResult) {\n return cacheResult;\n }\n return this.fetchServerResults(queryRef);\n }\n private callbacks = new Map<\n string,\n Array<DataConnectSubscription<unknown, unknown>>\n >();\n private subscriptionCache = new Map<string, QueryResult<unknown, unknown>>();\n constructor(\n private transport: DataConnectTransport,\n private dc: DataConnect,\n private cache?: DataConnectCache\n ) {}\n private queue: Array<Promise<unknown>> = [];\n async waitForQueuedWrites(): Promise<void> {\n for (const promise of this.queue) {\n await promise;\n }\n this.queue = [];\n }\n\n updateSSR<Data, Variables>(updatedData: QueryResult<Data, Variables>): void {\n this.queue.push(\n this.updateCache(updatedData).then(async result =>\n this.publishCacheResultsToSubscribers(result, updatedData.fetchTime)\n )\n );\n }\n\n async updateCache<Data, Variables>(\n result: QueryResult<Data, Variables>,\n extensions?: DataConnectExtensionWithMaxAge[]\n ): Promise<string[]> {\n await this.waitForQueuedWrites();\n if (this.cache) {\n const entityIds = parseEntityIds(result);\n const updatedMaxAge = getMaxAgeFromExtensions(extensions);\n if (updatedMaxAge !== undefined) {\n this.cache.cacheSettings.maxAgeSeconds = updatedMaxAge;\n }\n return this.cache.update(\n encoderImpl({\n name: result.ref.name,\n variables: result.ref.variables,\n refType: QUERY_STR\n }),\n result.data as ServerValues,\n entityIds\n );\n } else {\n const key = encoderImpl({\n name: result.ref.name,\n variables: result.ref.variables,\n refType: QUERY_STR\n });\n this.subscriptionCache.set(key, result);\n return [key];\n }\n }\n\n addSubscription<Data, Variables>(\n queryRef: QueryRef<Data, Variables>,\n onResultCallback: OnResultSubscription<Data, Variables>,\n onCompleteCallback?: OnCompleteSubscription,\n onErrorCallback?: OnErrorSubscription,\n initialCache?: QueryResult<Data, Variables>\n ): () => void {\n const key = encoderImpl({\n name: queryRef.name,\n variables: queryRef.variables,\n refType: QUERY_STR\n });\n\n const unsubscribe = (): void => {\n if (this.callbacks.has(key)) {\n const callbackList = this.callbacks.get(key)!;\n this.callbacks.set(\n key,\n callbackList.filter(callback => callback !== subscription)\n );\n onCompleteCallback?.();\n }\n };\n const subscription: DataConnectSubscription<Data, Variables> = {\n userCallback: onResultCallback,\n errCallback: onErrorCallback,\n unsubscribe\n };\n\n if (initialCache) {\n this.updateSSR(initialCache);\n }\n\n const promise = this.preferCacheResults(queryRef, /*allowStale=*/ true);\n // We want to ignore the error and let subscriptions handle it\n promise.then(undefined, err => {});\n\n if (!this.callbacks.has(key)) {\n this.callbacks.set(key, []);\n }\n this.callbacks\n .get(key)!\n .push(subscription as DataConnectSubscription<unknown, unknown>);\n\n return unsubscribe;\n }\n\n async fetchServerResults<Data, Variables>(\n queryRef: QueryRef<Data, Variables>\n ): Promise<QueryResult<Data, Variables>> {\n await this.waitForQueuedWrites();\n const key = encoderImpl({\n name: queryRef.name,\n variables: queryRef.variables,\n refType: QUERY_STR\n });\n try {\n const result = await this.transport.invokeQuery<Data, Variables>(\n queryRef.name,\n queryRef.variables\n );\n const fetchTime = Date.now().toString();\n const originalExtensions = result.extensions;\n const queryResult: QueryResult<Data, Variables> = {\n ...result,\n ref: queryRef,\n source: SOURCE_SERVER,\n fetchTime,\n data: result.data,\n extensions: getDataConnectExtensionsWithoutMaxAge(originalExtensions),\n toJSON: getRefSerializer(\n queryRef,\n result.data,\n SOURCE_SERVER,\n fetchTime\n )\n };\n let updatedKeys: string[] = [];\n updatedKeys = await this.updateCache(\n queryResult,\n originalExtensions?.dataConnect\n );\n this.publishDataToSubscribers(key, queryResult);\n if (this.cache) {\n await this.publishCacheResultsToSubscribers(updatedKeys, fetchTime);\n } else {\n this.subscriptionCache.set(key, queryResult);\n }\n return queryResult;\n } catch (e) {\n this.publishErrorToSubscribers(key, e);\n throw e;\n }\n }\n\n async fetchCacheResults<Data, Variables>(\n queryRef: QueryRef<Data, Variables>,\n allowStale = false\n ): Promise<QueryResult<Data, Variables>> {\n await this.waitForQueuedWrites();\n let result: QueryResult<Data, Variables> | undefined | null;\n if (!this.cache) {\n result = await this.getFromSubscriberCache(queryRef);\n } else {\n result = await this.getFromResultTreeCache(queryRef, allowStale);\n }\n if (!result) {\n throw new DataConnectError(\n Code.OTHER,\n 'No cache entry found for query: ' + queryRef.name\n );\n }\n const fetchTime = Date.now().toString();\n const queryResult: QueryResult<Data, Variables> = {\n ...result,\n ref: queryRef,\n source: SOURCE_CACHE,\n fetchTime,\n data: result.data,\n extensions: result.extensions,\n toJSON: getRefSerializer(queryRef, result.data, SOURCE_CACHE, fetchTime)\n };\n if (this.cache) {\n const key = encoderImpl({\n name: queryRef.name,\n variables: queryRef.variables,\n refType: QUERY_STR\n });\n await this.publishCacheResultsToSubscribers([key], fetchTime);\n } else {\n const key = encoderImpl({\n name: queryRef.name,\n variables: queryRef.variables,\n refType: QUERY_STR\n });\n this.subscriptionCache.set(key, queryResult);\n this.publishDataToSubscribers(key, queryResult);\n }\n\n return queryResult;\n }\n\n publishErrorToSubscribers(key: string, err: unknown): void {\n this.callbacks.get(key)?.forEach(subscription => {\n if (subscription.errCallback) {\n subscription.errCallback(err as DataConnectError);\n }\n });\n }\n\n async getFromResultTreeCache<Data, Variables>(\n queryRef: QueryRef<Data, Variables>,\n allowStale = false\n ): Promise<QueryResult<Data, Variables> | null> {\n const key = encoderImpl({\n name: queryRef.name,\n variables: queryRef.variables,\n refType: QUERY_STR\n });\n if (!this.cache || !(await this.cache.containsResultTree(key))) {\n return null;\n }\n const cacheResult: Data = (await this.cache!.getResultJSON(key)) as Data;\n const resultTree = await this.cache!.getResultTree(key);\n if (!allowStale && resultTree!.isStale()) {\n return null;\n }\n const result: QueryResult<Data, Variables> = {\n source: SOURCE_CACHE,\n ref: queryRef,\n data: cacheResult,\n toJSON: getRefSerializer(\n queryRef,\n cacheResult,\n SOURCE_CACHE,\n resultTree!.cachedAt.toString()\n ),\n fetchTime: resultTree!.cachedAt.toString()\n };\n (await this.cache!.getResultTree(key))!.updateAccessed();\n return result;\n }\n async getFromSubscriberCache<Data, Variables>(\n queryRef: QueryRef<Data, Variables>\n ): Promise<QueryResult<Data, Variables> | undefined> {\n const key = encoderImpl({\n name: queryRef.name,\n variables: queryRef.variables,\n refType: QUERY_STR\n });\n if (!this.subscriptionCache.has(key)) {\n return;\n }\n const result = this.subscriptionCache.get(key);\n result!.source = SOURCE_CACHE;\n result!.toJSON = getRefSerializer(\n result!.ref,\n result!.data,\n SOURCE_CACHE,\n result!.fetchTime\n );\n return result as QueryResult<Data, Variables>;\n }\n\n publishDataToSubscribers(\n key: string,\n queryResult: QueryResult<unknown, unknown>\n ): void {\n if (!this.callbacks.has(key)) {\n return;\n }\n const subscribers = this.callbacks.get(key);\n subscribers!.forEach(callback => {\n callback.userCallback(queryResult);\n });\n }\n async publishCacheResultsToSubscribers(\n impactedQueries: string[],\n fetchTime: string\n ): Promise<void> {\n if (!this.cache) {\n return;\n }\n for (const query of impactedQueries) {\n const callbacks = this.callbacks.get(query);\n if (!callbacks) {\n continue;\n }\n const newJson = (await this.cache.getResultTree(query))!\n .getRootStub()\n .toJSON(EncodingMode.hydrated);\n const { name, variables } = decoderImpl(query) as unknown as QueryRef<\n unknown,\n unknown\n >;\n const queryRef: QueryRef<unknown, unknown> = {\n dataConnect: this.dc,\n refType: QUERY_STR,\n name,\n variables\n };\n this.publishDataToSubscribers(query, {\n data: newJson,\n fetchTime,\n ref: queryRef,\n source: SOURCE_CACHE,\n toJSON: getRefSerializer(queryRef, newJson, SOURCE_CACHE, fetchTime)\n });\n }\n }\n enableEmulator(host: string, port: number): void {\n this.transport.useEmulator(host, port);\n }\n}\n\nexport function getMaxAgeFromExtensions(\n extensions: DataConnectExtensionWithMaxAge[] | undefined\n): number | undefined {\n if (!extensions) {\n return;\n }\n for (const extension of extensions) {\n if (\n 'maxAge' in extension &&\n extension.maxAge !== undefined &&\n extension.maxAge !== null\n ) {\n if (extension.maxAge.endsWith('s')) {\n return Number(\n extension.maxAge.substring(0, extension.maxAge.length - 1)\n );\n }\n }\n }\n}\nfunction getDataConnectExtensionsWithoutMaxAge(\n extensions: ExtensionsWithMaxAge\n): Extensions | undefined {\n return {\n dataConnect: extensions.dataConnect?.filter(\n extension => 'entityId' in extension || 'entityIds' in extension\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 { DataConnectOptions, TransportOptions } from '../../api/DataConnect';\nimport { AppCheckTokenProvider } from '../../core/AppCheckTokenProvider';\nimport { AuthTokenProvider } from '../../core/FirebaseAuthProvider';\n\n/**\n * enum representing different flavors of the SDK used by developers\n * use the CallerSdkType for type-checking, and the CallerSdkTypeEnum for value-checking/assigning\n */\nexport type CallerSdkType =\n | 'Base' // Core JS SDK\n | 'Generated' // Generated JS SDK\n | 'TanstackReactCore' // Tanstack non-generated React SDK\n | 'GeneratedReact' // Generated React SDK\n | 'TanstackAngularCore' // Tanstack non-generated Angular SDK\n | 'GeneratedAngular'; // Generated Angular SDK\nexport const CallerSdkTypeEnum = {\n Base: 'Base', // Core JS SDK\n Generated: 'Generated', // Generated JS SDK\n TanstackReactCore: 'TanstackReactCore', // Tanstack non-generated React SDK\n GeneratedReact: 'GeneratedReact', // Tanstack non-generated Angular SDK\n TanstackAngularCore: 'TanstackAngularCore', // Tanstack non-generated Angular SDK\n GeneratedAngular: 'GeneratedAngular' // Generated Angular SDK\n} as const;\n\nexport interface DataConnectEntityArray {\n entityIds: string[];\n}\n\nexport interface DataConnectSingleEntity {\n entityId: string;\n}\n\nexport type DataConnectExtension = {\n path: Array<string | number>;\n} & (DataConnectEntityArray | DataConnectSingleEntity);\n\n/** @internal */\nexport interface DataConnectMaxAge {\n maxAge: string;\n}\n\n/** @internal */\nexport type DataConnectExtensionWithMaxAge = {\n path: Array<string | number>;\n} & (DataConnectEntityArray | DataConnectSingleEntity | DataConnectMaxAge);\n\nexport interface Extensions {\n dataConnect?: DataConnectExtension[];\n}\n\n/** @internal */\nexport interface ExtensionsWithMaxAge {\n dataConnect?: DataConnectExtensionWithMaxAge[];\n}\n\nexport interface DataConnectResponse<T> {\n data: T;\n errors: Error[];\n extensions: Extensions;\n}\n\n/** @internal */\nexport interface DataConnectResponseWithMaxAge<T> {\n data: T;\n errors: Error[];\n extensions: ExtensionsWithMaxAge;\n}\n\n/**\n * @internal\n */\nexport interface DataConnectTransport {\n invokeQuery<T, U>(\n queryName: string,\n body?: U\n ): Promise<DataConnectResponseWithMaxAge<T>>;\n invokeMutation<T, U>(\n queryName: string,\n body?: U\n ): Promise<DataConnectResponse<T>>;\n useEmulator(host: string, port?: number, sslEnabled?: boolean): void;\n onTokenChanged: (token: string | null) => void;\n _setCallerSdkType(callerSdkType: CallerSdkType): void;\n}\n\n/**\n * @internal\n */\nexport type TransportClass = new (\n options: DataConnectOptions,\n apiKey?: string,\n appId?: string,\n authProvider?: AuthTokenProvider,\n appCheckProvider?: AppCheckTokenProvider,\n transportOptions?: TransportOptions,\n _isUsingGen?: boolean,\n _callerSdkType?: CallerSdkType\n) => DataConnectTransport;\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 { DataConnectOptions, TransportOptions } from '../api/DataConnect';\nimport { Code, DataConnectError } from '../core/error';\nimport { logError } from '../logger';\n\nexport const PROD_HOST = 'firebasedataconnect.googleapis.com';\n\nexport function urlBuilder(\n projectConfig: DataConnectOptions,\n transportOptions: TransportOptions\n): string {\n const { connector, location, projectId: project, service } = projectConfig;\n const { host, sslEnabled, port } = transportOptions;\n const protocol = sslEnabled ? 'https' : 'http';\n const realHost = host || PROD_HOST;\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}/v1/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 { isCloudWorkstation } from '@firebase/util';\n\nimport {\n Code,\n DataConnectError,\n DataConnectOperationError,\n DataConnectOperationFailureResponse\n} from '../core/error';\nimport { SDK_VERSION } from '../core/version';\nimport { logError } from '../logger';\n\nimport {\n CallerSdkType,\n CallerSdkTypeEnum,\n Extensions,\n DataConnectResponse\n} from './transport';\n\nlet connectFetch: typeof fetch | null = globalThis.fetch;\nexport function initializeFetch(fetchImpl: typeof fetch): void {\n connectFetch = fetchImpl;\n}\nfunction getGoogApiClientValue(\n _isUsingGen: boolean,\n _callerSdkType: CallerSdkType\n): string {\n let str = 'gl-js/ fire/' + SDK_VERSION;\n if (\n _callerSdkType !== CallerSdkTypeEnum.Base &&\n _callerSdkType !== CallerSdkTypeEnum.Generated\n ) {\n str += ' js/' + _callerSdkType.toLowerCase();\n } else if (_isUsingGen || _callerSdkType === CallerSdkTypeEnum.Generated) {\n str += ' js/gen';\n }\n return str;\n}\nexport interface DataConnectFetchBody<T> {\n name: string;\n operationName: string;\n variables: T;\n}\nexport async function dcFetch<T, U>(\n url: string,\n body: DataConnectFetchBody<U>,\n { signal }: AbortController,\n appId: string | null | undefined,\n accessToken: string | null,\n appCheckToken: string | null | undefined,\n _isUsingGen: boolean,\n _callerSdkType: CallerSdkType,\n _isUsingEmulator: boolean\n): Promise<DataConnectResponse<T>> {\n if (!connectFetch) {\n throw new DataConnectError(Code.OTHER, 'No Fetch Implementation detected!');\n }\n const headers: HeadersInit = {\n 'Content-Type': 'application/json',\n 'X-Goog-Api-Client': getGoogApiClientValue(_isUsingGen, _callerSdkType)\n };\n if (accessToken) {\n headers['X-Firebase-Auth-Token'] = accessToken;\n }\n if (appId) {\n headers['x-firebase-gmpid'] = appId;\n }\n if (appCheckToken) {\n headers['X-Firebase-AppCheck'] = appCheckToken;\n }\n const bodyStr = JSON.stringify(body);\n const fetchOptions: RequestInit = {\n body: bodyStr,\n method: 'POST',\n headers,\n signal\n };\n if (isCloudWorkstation(url) && _isUsingEmulator) {\n fetchOptions.credentials = 'include';\n }\n\n let response: Response;\n try {\n response = await connectFetch(url, fetchOptions);\n } catch (err) {\n throw new DataConnectError(\n Code.OTHER,\n 'Failed to fetch: ' + JSON.stringify(err)\n );\n }\n let jsonResponse: JsonResponse<T>;\n try {\n jsonResponse = await response.json();\n } catch (e) {\n throw new DataConnectError(Code.OTHER, JSON.stringify(e));\n }\n const message = getErrorMessage(jsonResponse);\n if (response.status >= 400) {\n logError('Error while performing request: ' + JSON.stringify(jsonResponse));\n if (response.status === 401) {\n throw new DataConnectError(Code.UNAUTHORIZED, message);\n }\n throw new DataConnectError(Code.OTHER, message);\n }\n if (jsonResponse.errors && jsonResponse.errors.length) {\n const stringified = JSON.stringify(jsonResponse.errors);\n const failureResponse: DataConnectOperationFailureResponse = {\n errors: jsonResponse.errors,\n data: jsonResponse.data as Record<string, unknown>\n };\n throw new DataConnectOperationError(\n 'DataConnect error while performing request: ' + stringified,\n failureResponse\n );\n }\n if (!jsonResponse.extensions) {\n jsonResponse.extensions = {\n dataConnect: []\n };\n }\n return jsonResponse as DataConnectResponse<T>;\n}\ninterface JsonResponse<T> {\n message?: string;\n errors: [];\n data: Record<string, unknown> | T | null;\n extensions?: Extensions;\n}\nfunction getErrorMessage(obj: JsonResponse<unknown>): string {\n if ('message' in obj && obj.message) {\n return obj.message;\n }\n return JSON.stringify(obj);\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 { DataConnectOptions, TransportOptions } from '../../api/DataConnect';\nimport { AppCheckTokenProvider } from '../../core/AppCheckTokenProvider';\nimport { DataConnectError, Code } from '../../core/error';\nimport { AuthTokenProvider } from '../../core/FirebaseAuthProvider';\nimport { logDebug } from '../../logger';\nimport { addToken, urlBuilder } from '../../util/url';\nimport { dcFetch } from '../fetch';\n\nimport {\n CallerSdkType,\n CallerSdkTypeEnum,\n DataConnectResponse,\n DataConnectTransport\n} from '.';\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 _appCheckToken: string | null | undefined = null;\n private _lastToken: string | null = null;\n private _isUsingEmulator = false;\n constructor(\n options: DataConnectOptions,\n private apiKey?: string | undefined,\n private appId?: string | null,\n private authProvider?: AuthTokenProvider | undefined,\n private appCheckProvider?: AppCheckTokenProvider | undefined,\n transportOptions?: TransportOptions | undefined,\n private _isUsingGen = false,\n private _callerSdkType: CallerSdkType = CallerSdkTypeEnum.Base\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 this.authProvider?.addTokenChangeListener(token => {\n logDebug(`New Token Available: ${token}`);\n this._accessToken = token;\n });\n this.appCheckProvider?.addTokenChangeListener(result => {\n const { token } = result;\n logDebug(`New App Check Token Available: ${token}`);\n this._appCheckToken = token;\n });\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 this._isUsingEmulator = true;\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): void {\n this._accessToken = newToken;\n }\n\n async getWithAuth(forceToken = false): Promise<string | null> {\n let starterPromise: Promise<string | null> = new Promise(resolve =>\n resolve(this._accessToken)\n );\n if (this.appCheckProvider) {\n const appCheckToken = await this.appCheckProvider.getToken();\n if (appCheckToken) {\n this._appCheckToken = appCheckToken.token;\n }\n }\n if (this.authProvider) {\n starterPromise = this.authProvider\n .getToken(/*forceToken=*/ forceToken)\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 return starterPromise;\n }\n\n _setLastToken(lastToken: string | null): void {\n this._lastToken = lastToken;\n }\n\n withRetry<T>(\n promiseFactory: () => Promise<DataConnectResponse<T>>,\n retry = false\n ): Promise<DataConnectResponse<T>> {\n let isNewToken = false;\n return this.getWithAuth(retry)\n .then(res => {\n isNewToken = this._lastToken !== res;\n this._lastToken = res;\n return res;\n })\n .then(promiseFactory)\n .catch(err => {\n // Only retry if the result is unauthorized and the last token isn't the same as the new one.\n if (\n 'code' in err &&\n err.code === Code.UNAUTHORIZED &&\n !retry &&\n isNewToken\n ) {\n logDebug('Retrying due to unauthorized');\n return this.withRetry(promiseFactory, true);\n }\n throw err;\n });\n }\n\n // TODO(mtewani): Update U to include shape of body defined in line 13.\n invokeQuery: <T, U>(\n queryName: string,\n body?: U\n ) => Promise<DataConnectResponse<T>> = <T, U = unknown>(\n queryName: string,\n body: U\n ) => {\n const abortController = new AbortController();\n\n // TODO(mtewani): Update to proper value\n const withAuth = this.withRetry(() =>\n 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 },\n abortController,\n this.appId,\n this._accessToken,\n this._appCheckToken,\n this._isUsingGen,\n this._callerSdkType,\n this._isUsingEmulator\n )\n );\n return withAuth;\n };\n invokeMutation: <T, U>(\n queryName: string,\n body?: U\n ) => Promise<DataConnectResponse<T>> = <T, U = unknown>(\n mutationName: string,\n body: U\n ) => {\n const abortController = new AbortController();\n const taskResult = this.withRetry(() => {\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 },\n abortController,\n this.appId,\n this._accessToken,\n this._appCheckToken,\n this._isUsingGen,\n this._callerSdkType,\n this._isUsingEmulator\n );\n });\n return taskResult;\n };\n\n _setCallerSdkType(callerSdkType: CallerSdkType): void {\n this._callerSdkType = callerSdkType;\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 MUTATION_STR,\n OperationRef,\n SOURCE_SERVER\n} from './Reference';\n\nexport interface MutationRef<Data, Variables>\n extends OperationRef<Data, Variables> {\n refType: typeof MUTATION_STR;\n}\n\n/**\n * Creates a `MutationRef`\n * @param dcInstance Data Connect instance\n * @param mutationName name of mutation\n */\nexport function mutationRef<Data>(\n dcInstance: DataConnect,\n mutationName: string\n): MutationRef<Data, undefined>;\n/**\n *\n * @param dcInstance Data Connect instance\n * @param mutationName name of mutation\n * @param variables variables to send with mutation\n */\nexport function mutationRef<Data, Variables>(\n dcInstance: DataConnect,\n mutationName: string,\n variables: Variables\n): MutationRef<Data, Variables>;\n/**\n *\n * @param dcInstance Data Connect instance\n * @param mutationName name of mutation\n * @param variables variables to send with mutation\n * @returns `MutationRef`\n */\nexport function mutationRef<Data, Variables>(\n dcInstance: DataConnect,\n mutationName: string,\n variables?: Variables\n): MutationRef<Data, Variables> {\n dcInstance.setInitialized();\n const ref: MutationRef<Data, Variables> = {\n dataConnect: dcInstance,\n name: mutationName,\n refType: MUTATION_STR,\n variables: variables as Variables\n };\n return ref;\n}\n\n/**\n * @internal\n */\nexport class MutationManager {\n private _inflight: Array<Promise<unknown>> = [];\n constructor(private _transport: DataConnectTransport) {}\n executeMutation<Data, Variables>(\n mutationRef: MutationRef<Data, Variables>\n ): MutationPromise<Data, Variables> {\n const result = this._transport.invokeMutation<Data, Variables>(\n mutationRef.name,\n mutationRef.variables\n );\n const withRefPromise = result.then(res => {\n const obj: MutationResult<Data, 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 = (): Array<Promise<unknown>> =>\n (this._inflight = this._inflight.filter(promise => promise !== result));\n result.then(removePromise, removePromise);\n return withRefPromise;\n }\n}\n\n/**\n * Mutation Result from `executeMutation`\n */\nexport interface MutationResult<Data, Variables>\n extends DataConnectResult<Data, Variables> {\n ref: MutationRef<Data, Variables>;\n}\n/**\n * Mutation return value from `executeMutation`\n */\nexport interface MutationPromise<Data, Variables>\n extends Promise<MutationResult<Data, Variables>> {\n // reserved for special actions like cancellation\n}\n\n/**\n * Execute Mutation\n * @param mutationRef mutation to execute\n * @returns `MutationRef`\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 { AppCheckInternalComponentName } from '@firebase/app-check-interop-types';\nimport { FirebaseAuthInternalName } from '@firebase/auth-interop-types';\nimport { Provider } from '@firebase/component';\nimport {\n isCloudWorkstation,\n pingServer,\n updateEmulatorBanner\n} from '@firebase/util';\n\nimport { DataConnectCache, MemoryStub } from '../cache/Cache';\nimport { InternalCacheProvider } from '../cache/CacheProvider';\nimport { AppCheckTokenProvider } from '../core/AppCheckTokenProvider';\nimport { Code, DataConnectError } from '../core/error';\nimport {\n AuthTokenProvider,\n FirebaseAuthProvider\n} from '../core/FirebaseAuthProvider';\nimport { QueryManager } from '../core/query/QueryManager';\nimport { logDebug, logError } from '../logger';\nimport {\n CallerSdkType,\n CallerSdkTypeEnum,\n DataConnectTransport,\n TransportClass\n} from '../network';\nimport { RESTTransport } from '../network/transport/rest';\nimport { PROD_HOST } from '../util/url';\n\nimport { MutationManager } from './Mutation';\n\n/**\n * Connector Config for calling Data Connect backend.\n */\nexport interface ConnectorConfig {\n location: string;\n connector: string;\n service: string;\n}\n\n/**\n * Options to connect to emulator\n */\nexport interface TransportOptions {\n host: string;\n sslEnabled?: boolean;\n port?: number;\n}\n\nconst 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}\n/**\n * DataConnectOptions including project id\n */\nexport interface DataConnectOptions extends ConnectorConfig {\n projectId: string;\n}\n\n/**\n * Class representing Firebase Data Connect\n */\nexport class DataConnect {\n _queryManager!: QueryManager;\n _mutationManager!: MutationManager;\n isEmulator = false;\n _initialized = false;\n private _transport!: DataConnectTransport;\n private _transportClass: TransportClass | undefined;\n private _transportOptions?: TransportOptions;\n private _authTokenProvider?: AuthTokenProvider;\n _isUsingGeneratedSdk: boolean = false;\n _callerSdkType: CallerSdkType = CallerSdkTypeEnum.Base;\n private _appCheckTokenProvider?: AppCheckTokenProvider;\n private _cacheSettings?: CacheSettings;\n /**\n * @internal\n */\n private cache?: DataConnectCache;\n // @internal\n constructor(\n public readonly app: FirebaseApp,\n // TODO(mtewani): Replace with _dataConnectOptions in the future\n private readonly dataConnectOptions: DataConnectOptions,\n private readonly _authProvider: Provider<FirebaseAuthInternalName>,\n private readonly _appCheckProvider: Provider<AppCheckInternalComponentName>\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 /**\n * @internal\n */\n getCache(): DataConnectCache | undefined {\n return this.cache;\n }\n // @internal\n _useGeneratedSdk(): void {\n if (!this._isUsingGeneratedSdk) {\n this._isUsingGeneratedSdk = true;\n }\n }\n _setCallerSdkType(callerSdkType: CallerSdkType): void {\n this._callerSdkType = callerSdkType;\n if (this._initialized) {\n this._transport._setCallerSdkType(callerSdkType);\n }\n }\n _delete(): Promise<void> {\n _removeServiceInstance(\n this.app,\n 'data-connect',\n JSON.stringify(this.getSettings())\n );\n return Promise.resolve();\n }\n\n // @internal\n getSettings(): ConnectorConfig {\n const copy = JSON.parse(JSON.stringify(this.dataConnectOptions));\n delete copy.projectId;\n return copy;\n }\n\n /**\n * @internal\n */\n setCacheSettings(cacheSettings: CacheSettings): void {\n this._cacheSettings = cacheSettings;\n }\n\n // @internal\n setInitialized(): void {\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 this._authTokenProvider = new FirebaseAuthProvider(\n this.app.name,\n this.app.options,\n this._authProvider\n );\n const connectorConfig: ConnectorConfig = {\n connector: this.dataConnectOptions.connector,\n service: this.dataConnectOptions.service,\n location: this.dataConnectOptions.location\n };\n if (this._cacheSettings) {\n this.cache = new DataConnectCache(\n this._authTokenProvider,\n this.app.options.projectId!,\n connectorConfig,\n this._transportOptions?.host || PROD_HOST,\n this._cacheSettings\n );\n }\n\n if (this._appCheckProvider) {\n this._appCheckTokenProvider = new AppCheckTokenProvider(\n this.app,\n this._appCheckProvider\n );\n }\n\n this._transport = new this._transportClass(\n this.dataConnectOptions,\n this.app.options.apiKey,\n this.app.options.appId,\n this._authTokenProvider,\n this._appCheckTokenProvider,\n undefined,\n this._isUsingGeneratedSdk,\n this._callerSdkType\n );\n if (this._transportOptions) {\n this._transport.useEmulator(\n this._transportOptions.host,\n this._transportOptions.port,\n this._transportOptions.sslEnabled\n );\n }\n\n this._queryManager = new QueryManager(this._transport, this, this.cache);\n this._mutationManager = new MutationManager(this._transport);\n this._initialized = true;\n }\n\n // @internal\n enableEmulator(transportOptions: TransportOptions): void {\n if (\n this._transportOptions &&\n this._initialized &&\n !areTransportOptionsEqual(this._transportOptions, transportOptions)\n ) {\n logError('enableEmulator called after initialization');\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\n/**\n * @internal\n * @param transportOptions1\n * @param transportOptions2\n * @returns\n */\nexport function areTransportOptionsEqual(\n transportOptions1: TransportOptions,\n transportOptions2: TransportOptions\n): boolean {\n return (\n transportOptions1.host === transportOptions2.host &&\n transportOptions1.port === transportOptions2.port &&\n transportOptions1.sslEnabled === transportOptions2.sslEnabled\n );\n}\n\n/**\n * Connect to the DataConnect Emulator\n * @param dc Data Connect instance\n * @param host host of emulator server\n * @param port port of emulator server\n * @param sslEnabled use https\n */\nexport function connectDataConnectEmulator(\n dc: DataConnect,\n host: string,\n port?: number,\n sslEnabled = false\n): void {\n // Workaround to get cookies in Firebase Studio\n if (isCloudWorkstation(host)) {\n void pingServer(`https://${host}${port ? `:${port}` : ''}`);\n updateEmulatorBanner('Data Connect', true);\n }\n dc.enableEmulator({ host, port, sslEnabled });\n}\n\nexport interface DataConnectSettings {\n cacheSettings?: CacheSettings;\n}\n\n/**\n * Initialize DataConnect instance\n * @param options ConnectorConfig\n */\nexport function getDataConnect(\n options: ConnectorConfig,\n settings?: DataConnectSettings\n): DataConnect;\nexport function getDataConnect(options: ConnectorConfig): DataConnect;\n/**\n * Initialize DataConnect instance\n * @param app FirebaseApp to initialize to.\n * @param connectorConfig ConnectorConfig\n */\nexport function getDataConnect(\n app: FirebaseApp,\n connectorConfig: ConnectorConfig\n): DataConnect;\n\n/**\n * Initialize DataConnect instance\n * @param app FirebaseApp to initialize to.\n * @param connectorConfig ConnectorConfig\n */\nexport function getDataConnect(\n app: FirebaseApp,\n connectorConfig: ConnectorConfig,\n settings: DataConnectSettings\n): DataConnect;\n\nexport function getDataConnect(\n appOrConnectorConfig: FirebaseApp | ConnectorConfig,\n settingsOrConnectorConfig?: ConnectorConfig | DataConnectSettings,\n settings?: DataConnectSettings\n): DataConnect {\n let app: FirebaseApp;\n let connectorConfig: ConnectorConfig;\n let realSettings: DataConnectSettings;\n if ('location' in appOrConnectorConfig) {\n connectorConfig = appOrConnectorConfig;\n app = getApp();\n realSettings = settingsOrConnectorConfig as DataConnectSettings;\n } else {\n app = appOrConnectorConfig;\n connectorConfig = settingsOrConnectorConfig as ConnectorConfig;\n realSettings = settings as DataConnectSettings;\n }\n\n if (!app || Object.keys(app).length === 0) {\n app = getApp();\n }\n\n // Options to store in Firebase Component Provider.\n const serializedOptions = {\n ...connectorConfig,\n projectId: app.options.projectId\n };\n\n // We should sort the keys before initialization.\n const sortedSerialized = Object.fromEntries(\n Object.entries(serializedOptions).sort()\n );\n\n const provider = _getProvider(app, 'data-connect');\n const identifier = JSON.stringify(sortedSerialized);\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 validateDCOptions(connectorConfig);\n\n logDebug('Creating new DataConnect instance');\n // Initialize with options.\n const dataConnect = provider.initialize({\n instanceIdentifier: identifier,\n options: Object.fromEntries(\n Object.entries({\n ...sortedSerialized\n }).sort()\n )\n });\n if (realSettings?.cacheSettings) {\n dataConnect.setCacheSettings(realSettings.cacheSettings);\n }\n return dataConnect;\n}\n\n/**\n *\n * @param dcOptions\n * @returns {void}\n * @internal\n */\nexport function validateDCOptions(dcOptions: ConnectorConfig): boolean {\n const fields = ['connector', 'location', 'service'];\n if (!dcOptions) {\n throw new DataConnectError(Code.INVALID_ARGUMENT, 'DC Option Required');\n }\n fields.forEach(field => {\n if (\n dcOptions[field as keyof ConnectorConfig] === null ||\n dcOptions[field as keyof ConnectorConfig] === undefined\n ) {\n throw new DataConnectError(Code.INVALID_ARGUMENT, `${field} Required`);\n }\n });\n return true;\n}\n\n/**\n * Delete DataConnect instance\n * @param dataConnect DataConnect instance\n * @returns\n */\nexport function terminate(dataConnect: DataConnect): Promise<void> {\n return dataConnect._delete();\n // TODO(mtewani): Stop pending tasks\n}\nexport const StorageType = {\n MEMORY: 'MEMORY'\n} as const;\n\nexport type StorageType = (typeof StorageType)[keyof typeof StorageType];\n\nexport interface CacheSettings {\n cacheProvider: CacheProvider<StorageType>;\n maxAgeSeconds?: number;\n}\nexport interface CacheProvider<T extends StorageType> {\n type: T;\n /**\n * @internal\n */\n initialize(cacheId: string): InternalCacheProvider;\n}\n\nexport function makeMemoryCacheProvider(): CacheProvider<'MEMORY'> {\n return new MemoryStub();\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';\nimport { Code, DataConnectError } from './core/error';\n\nexport function registerDataConnect(variant?: string): void {\n setSDKVersion(SDK_VERSION);\n _registerComponent(\n new Component(\n 'data-connect',\n (container, { instanceIdentifier: connectorConfigStr, options }) => {\n const app = container.getProvider('app').getImmediate()!;\n const authProvider = container.getProvider('auth-internal');\n const appCheckProvider = container.getProvider('app-check-internal');\n let newOpts = options as ConnectorConfig;\n if (connectorConfigStr) {\n newOpts = {\n ...JSON.parse(connectorConfigStr),\n ...newOpts\n };\n }\n if (!app.options.projectId) {\n throw new DataConnectError(\n Code.INVALID_ARGUMENT,\n 'Project ID must be provided. Did you pass in a proper projectId to initializeApp?'\n );\n }\n return new DataConnect(\n app,\n { ...newOpts, projectId: app.options.projectId! },\n authProvider,\n appCheckProvider\n );\n },\n ComponentType.PUBLIC\n ).setMultipleInstances(true)\n );\n registerVersion(name, version, variant);\n // BUILD_TARGET will be replaced by values like esm, cjs, etc during the compilation\n registerVersion(name, version, '__BUILD_TARGET__');\n}\n","/**\n * @license\n * Copyright 2025 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 const QueryFetchPolicy = {\n PREFER_CACHE: 'PREFER_CACHE',\n CACHE_ONLY: 'CACHE_ONLY',\n SERVER_ONLY: 'SERVER_ONLY'\n} as const;\n\n/*\n * Represents policy for how executeQuery fetches data\n *\n */\nexport type QueryFetchPolicy =\n (typeof QueryFetchPolicy)[keyof typeof QueryFetchPolicy];\n\nexport interface ExecuteQueryOptions {\n fetchPolicy: QueryFetchPolicy;\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 {\n ExecuteQueryOptions,\n QueryFetchPolicy\n} from '../core/query/queryOptions';\nimport { DataConnectExtensionWithMaxAge } from '../network/transport';\n\nimport { DataConnect, getDataConnect } from './DataConnect';\nimport {\n OperationRef,\n QUERY_STR,\n DataConnectResult,\n SerializedRef\n} from './Reference';\n\n/**\n * QueryRef object\n */\nexport interface QueryRef<Data, Variables>\n extends OperationRef<Data, Variables> {\n refType: typeof QUERY_STR;\n}\n\n/** @internal */\nexport type InternalQueryResult<Data, Variables> = QueryResult<\n Data,\n Variables\n> &\n Omit<DataConnectResult<Data, Variables>, 'extensions'> & {\n extensions?: {\n dataConnect?: DataConnectExtensionWithMaxAge[];\n };\n };\n\n/**\n * Result of `executeQuery`\n */\nexport interface QueryResult<Data, Variables>\n extends DataConnectResult<Data, Variables> {\n ref: QueryRef<Data, Variables>;\n toJSON: () => SerializedRef<Data, Variables>;\n}\n/**\n * Promise returned from `executeQuery`\n */\nexport interface QueryPromise<Data, Variables>\n extends Promise<QueryResult<Data, Variables>> {\n // reserved for special actions like cancellation\n}\n\n/**\n * Execute Query\n * @param queryRef query to execute.\n * @returns `QueryPromise`\n */\nexport function executeQuery<Data, Variables>(\n queryRef: QueryRef<Data, Variables>,\n options?: ExecuteQueryOptions\n): QueryPromise<Data, Variables> {\n if (queryRef.refType !== QUERY_STR) {\n return Promise.reject(\n new DataConnectError(\n Code.INVALID_ARGUMENT,\n `ExecuteQuery can only execute query operations`\n )\n );\n }\n const queryManager = queryRef.dataConnect._queryManager;\n const fetchPolicy = options?.fetchPolicy ?? QueryFetchPolicy.PREFER_CACHE;\n switch (fetchPolicy) {\n case QueryFetchPolicy.SERVER_ONLY:\n return queryManager.fetchServerResults(queryRef);\n case QueryFetchPolicy.CACHE_ONLY:\n return queryManager.fetchCacheResults(queryRef, true);\n case QueryFetchPolicy.PREFER_CACHE:\n return queryManager.preferCacheResults(queryRef, false);\n default:\n throw new DataConnectError(\n Code.INVALID_ARGUMENT,\n `Invalid fetch policy: ${fetchPolicy}`\n );\n }\n}\n\n/**\n * Execute Query\n * @param dcInstance Data Connect instance to use.\n * @param queryName Query to execute\n * @returns `QueryRef`\n */\nexport function queryRef<Data>(\n dcInstance: DataConnect,\n queryName: string\n): QueryRef<Data, undefined>;\n/**\n * Execute Query\n * @param dcInstance Data Connect instance to use.\n * @param queryName Query to execute\n * @param variables Variables to execute with\n * @returns `QueryRef`\n */\nexport function queryRef<Data, Variables>(\n dcInstance: DataConnect,\n queryName: string,\n variables: Variables\n): QueryRef<Data, Variables>;\n/**\n * Execute Query\n * @param dcInstance Data Connect instance to use.\n * @param queryName Query to execute\n * @param variables Variables to execute with\n * @param initialCache initial cache to use for client hydration\n * @returns `QueryRef`\n */\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 if (initialCache !== undefined) {\n dcInstance._queryManager.updateSSR(initialCache);\n }\n return {\n dataConnect: dcInstance,\n refType: QUERY_STR,\n name: queryName,\n variables: variables as Variables\n };\n}\n/**\n * Converts serialized ref to query ref\n * @param serializedRef ref to convert to `QueryRef`\n * @returns `QueryRef`\n */\nexport function toQueryRef<Data, Variables>(\n serializedRef: SerializedRef<Data, Variables>\n): QueryRef<Data, Variables> {\n const {\n refInfo: { name, variables, connectorConfig }\n } = serializedRef;\n return queryRef(getDataConnect(connectorConfig), name, 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\nimport {\n ConnectorConfig,\n DataConnect,\n getDataConnect\n} from '../api/DataConnect';\nimport { Code, DataConnectError } from '../core/error';\ninterface ParsedArgs<Variables> {\n dc: DataConnect;\n vars: Variables;\n}\n\n/**\n * The generated SDK will allow the user to pass in either the variable or the data connect instance with the variable,\n * and this function validates the variables and returns back the DataConnect instance and variables based on the arguments passed in.\n * @param connectorConfig\n * @param dcOrVars\n * @param vars\n * @param validateVars\n * @returns {DataConnect} and {Variables} instance\n * @internal\n */\nexport function validateArgs<Variables extends object>(\n connectorConfig: ConnectorConfig,\n dcOrVars?: DataConnect | Variables,\n vars?: Variables,\n validateVars?: boolean\n): ParsedArgs<Variables> {\n let dcInstance: DataConnect;\n let realVars: Variables;\n if (dcOrVars && 'enableEmulator' in dcOrVars) {\n dcInstance = dcOrVars as DataConnect;\n realVars = vars as Variables;\n } else {\n dcInstance = getDataConnect(connectorConfig);\n realVars = dcOrVars as Variables;\n }\n if (!dcInstance || (!realVars && validateVars)) {\n throw new DataConnectError(Code.INVALID_ARGUMENT, 'Variables required.');\n }\n return { dc: dcInstance, vars: realVars };\n}\n","/**\n * @license\n * Copyright 2025 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 { QueryRef, QueryResult, toQueryRef } from '../../api/query';\nimport { SerializedRef } from '../../api/Reference';\nimport { DataConnectError, Code } from '../error';\n\nimport { getRefSerializer } from './QueryManager';\n\n/**\n * `OnCompleteSubscription`\n */\nexport type OnCompleteSubscription = () => void;\n/**\n * Representation of full observer options in `subscribe`\n */\nexport interface SubscriptionOptions<Data, Variables> {\n onNext?: OnResultSubscription<Data, Variables>;\n onErr?: OnErrorSubscription;\n onComplete?: OnCompleteSubscription;\n}\n\n/**\n * Signature for `OnResultSubscription` for `subscribe`\n */\nexport type OnResultSubscription<Data, Variables> = (\n res: QueryResult<Data, Variables>\n) => void;\n/**\n * Signature for `OnErrorSubscription` for `subscribe`\n */\nexport type OnErrorSubscription = (err?: DataConnectError) => void;\n/**\n * Signature for unsubscribe from `subscribe`\n */\nexport type QueryUnsubscribe = () => void;\n/**\n * Representation of user provided subscription options.\n */\nexport interface DataConnectSubscription<Data, Variables> {\n userCallback: OnResultSubscription<Data, Variables>;\n errCallback?: (e?: DataConnectError) => void;\n unsubscribe: () => void;\n}\n\n/**\n * Subscribe to a `QueryRef`\n * @param queryRefOrSerializedResult query ref or serialized result.\n * @param observer observer object to use for subscribing.\n * @returns `SubscriptionOptions`\n */\nexport function subscribe<Data, Variables>(\n queryRefOrSerializedResult:\n | QueryRef<Data, Variables>\n | SerializedRef<Data, Variables>,\n observer: SubscriptionOptions<Data, Variables>\n): QueryUnsubscribe;\n/**\n * Subscribe to a `QueryRef`\n * @param queryRefOrSerializedResult query ref or serialized result.\n * @param onNext Callback to call when result comes back.\n * @param onError Callback to call when error gets thrown.\n * @param onComplete Called when subscription completes.\n * @returns `SubscriptionOptions`\n */\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;\n/**\n * Subscribe to a `QueryRef`\n * @param queryRefOrSerializedResult query ref or serialized result.\n * @param observerOrOnNext observer object or next function.\n * @param onError Callback to call when error gets thrown.\n * @param onComplete Called when subscription completes.\n * @returns `SubscriptionOptions`\n */\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: QueryResult<Data, Variables> | undefined;\n if ('refInfo' in queryRefOrSerializedResult) {\n const serializedRef: SerializedRef<Data, Variables> =\n queryRefOrSerializedResult;\n const { data, source, fetchTime } = serializedRef;\n\n ref = toQueryRef(serializedRef);\n initialCache = {\n data,\n source,\n fetchTime,\n ref,\n toJSON: getRefSerializer(ref, data, source, fetchTime)\n };\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 onComplete,\n onError,\n initialCache\n );\n}\n","/**\n * Firebase Data Connect\n *\n * @packageDocumentation\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 */\nimport { DataConnect } from './api/DataConnect';\nimport { registerDataConnect } from './register';\n\nexport * from './api';\nexport * from './api.browser';\n\nregisterDataConnect();\n\ndeclare module '@firebase/component' {\n interface NameServiceMapping {\n 'data-connect': DataConnect;\n }\n}\n"],"names":["FirebaseError","generateSHA256Hash","app","_isFirebaseServerApp","Logger","isCloudWorkstation","_removeServiceInstance","pingServer","updateEmulatorBanner","getApp","_getProvider","SDK_VERSION","_registerComponent","Component","registerVersion"],"mappings":"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"}
geri dön