firebase-admin 13.2.0 → 13.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/app/core.d.ts +1 -1
- package/lib/app/core.js +1 -1
- package/lib/app/credential-factory.d.ts +1 -1
- package/lib/app/credential-factory.js +1 -1
- package/lib/app/credential-internal.d.ts +1 -1
- package/lib/app/credential-internal.js +1 -1
- package/lib/app/credential.d.ts +1 -1
- package/lib/app/credential.js +1 -1
- package/lib/app/firebase-app.d.ts +1 -1
- package/lib/app/firebase-app.js +1 -1
- package/lib/app/firebase-namespace.d.ts +1 -1
- package/lib/app/firebase-namespace.js +1 -1
- package/lib/app/index.d.ts +1 -1
- package/lib/app/index.js +1 -1
- package/lib/app/lifecycle.d.ts +1 -1
- package/lib/app/lifecycle.js +1 -1
- package/lib/app-check/app-check-api-client-internal.d.ts +1 -1
- package/lib/app-check/app-check-api-client-internal.js +1 -1
- package/lib/app-check/app-check-api.d.ts +1 -1
- package/lib/app-check/app-check-api.js +1 -1
- package/lib/app-check/app-check-namespace.d.ts +1 -1
- package/lib/app-check/app-check-namespace.js +1 -1
- package/lib/app-check/app-check.d.ts +1 -1
- package/lib/app-check/app-check.js +1 -1
- package/lib/app-check/index.d.ts +1 -1
- package/lib/app-check/index.js +1 -1
- package/lib/app-check/token-generator.d.ts +1 -1
- package/lib/app-check/token-generator.js +1 -1
- package/lib/app-check/token-verifier.d.ts +1 -1
- package/lib/app-check/token-verifier.js +1 -1
- package/lib/auth/action-code-settings-builder.d.ts +1 -1
- package/lib/auth/action-code-settings-builder.js +1 -1
- package/lib/auth/auth-api-request.d.ts +1 -1
- package/lib/auth/auth-api-request.js +1 -1
- package/lib/auth/auth-config.d.ts +1 -1
- package/lib/auth/auth-config.js +1 -1
- package/lib/auth/auth-namespace.d.ts +1 -1
- package/lib/auth/auth-namespace.js +1 -1
- package/lib/auth/auth.d.ts +1 -1
- package/lib/auth/auth.js +1 -1
- package/lib/auth/base-auth.d.ts +1 -1
- package/lib/auth/base-auth.js +1 -1
- package/lib/auth/identifier.d.ts +1 -1
- package/lib/auth/identifier.js +1 -1
- package/lib/auth/index.d.ts +1 -1
- package/lib/auth/index.js +1 -1
- package/lib/auth/project-config-manager.d.ts +1 -1
- package/lib/auth/project-config-manager.js +1 -1
- package/lib/auth/project-config.d.ts +1 -1
- package/lib/auth/project-config.js +1 -1
- package/lib/auth/tenant-manager.d.ts +1 -1
- package/lib/auth/tenant-manager.js +1 -1
- package/lib/auth/tenant.d.ts +1 -1
- package/lib/auth/tenant.js +1 -1
- package/lib/auth/token-generator.d.ts +1 -1
- package/lib/auth/token-generator.js +1 -1
- package/lib/auth/token-verifier.d.ts +1 -1
- package/lib/auth/token-verifier.js +1 -1
- package/lib/auth/user-import-builder.d.ts +1 -1
- package/lib/auth/user-import-builder.js +1 -1
- package/lib/auth/user-record.d.ts +1 -1
- package/lib/auth/user-record.js +1 -1
- package/lib/credential/index.d.ts +1 -1
- package/lib/credential/index.js +1 -1
- package/lib/data-connect/data-connect-api-client-internal.d.ts +1 -1
- package/lib/data-connect/data-connect-api-client-internal.js +147 -1
- package/lib/data-connect/data-connect-api.d.ts +1 -1
- package/lib/data-connect/data-connect-api.js +1 -1
- package/lib/data-connect/data-connect.d.ts +44 -14
- package/lib/data-connect/data-connect.js +57 -19
- package/lib/data-connect/index.d.ts +1 -1
- package/lib/data-connect/index.js +1 -1
- package/lib/database/database-namespace.d.ts +1 -1
- package/lib/database/database-namespace.js +1 -1
- package/lib/database/database.d.ts +1 -1
- package/lib/database/database.js +1 -1
- package/lib/database/index.d.ts +1 -1
- package/lib/database/index.js +1 -1
- package/lib/default-namespace.d.ts +1 -1
- package/lib/default-namespace.js +1 -1
- package/lib/eventarc/cloudevent.d.ts +1 -1
- package/lib/eventarc/cloudevent.js +1 -1
- package/lib/eventarc/eventarc-client-internal.d.ts +1 -1
- package/lib/eventarc/eventarc-client-internal.js +1 -1
- package/lib/eventarc/eventarc-utils.d.ts +1 -1
- package/lib/eventarc/eventarc-utils.js +1 -1
- package/lib/eventarc/eventarc.d.ts +1 -1
- package/lib/eventarc/eventarc.js +1 -1
- package/lib/eventarc/index.d.ts +1 -1
- package/lib/eventarc/index.js +1 -1
- package/lib/extensions/extensions-api-client-internal.d.ts +1 -1
- package/lib/extensions/extensions-api-client-internal.js +1 -1
- package/lib/extensions/extensions-api.d.ts +1 -1
- package/lib/extensions/extensions-api.js +1 -1
- package/lib/extensions/extensions.d.ts +1 -1
- package/lib/extensions/extensions.js +1 -1
- package/lib/extensions/index.d.ts +1 -1
- package/lib/extensions/index.js +1 -1
- package/lib/firebase-namespace-api.d.ts +1 -1
- package/lib/firebase-namespace-api.js +1 -1
- package/lib/firestore/firestore-internal.d.ts +1 -1
- package/lib/firestore/firestore-internal.js +1 -1
- package/lib/firestore/firestore-namespace.d.ts +1 -1
- package/lib/firestore/firestore-namespace.js +1 -1
- package/lib/firestore/index.d.ts +1 -1
- package/lib/firestore/index.js +1 -1
- package/lib/functions/functions-api-client-internal.d.ts +1 -1
- package/lib/functions/functions-api-client-internal.js +1 -1
- package/lib/functions/functions-api.d.ts +1 -1
- package/lib/functions/functions-api.js +1 -1
- package/lib/functions/functions.d.ts +1 -1
- package/lib/functions/functions.js +1 -1
- package/lib/functions/index.d.ts +1 -1
- package/lib/functions/index.js +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/installations/index.d.ts +1 -1
- package/lib/installations/index.js +1 -1
- package/lib/installations/installations-namespace.d.ts +1 -1
- package/lib/installations/installations-namespace.js +1 -1
- package/lib/installations/installations-request-handler.d.ts +1 -1
- package/lib/installations/installations-request-handler.js +1 -1
- package/lib/installations/installations.d.ts +1 -1
- package/lib/installations/installations.js +1 -1
- package/lib/instance-id/index.d.ts +1 -1
- package/lib/instance-id/index.js +1 -1
- package/lib/instance-id/instance-id-namespace.d.ts +1 -1
- package/lib/instance-id/instance-id-namespace.js +1 -1
- package/lib/instance-id/instance-id.d.ts +1 -1
- package/lib/instance-id/instance-id.js +1 -1
- package/lib/machine-learning/index.d.ts +1 -1
- package/lib/machine-learning/index.js +1 -1
- package/lib/machine-learning/machine-learning-api-client.d.ts +1 -1
- package/lib/machine-learning/machine-learning-api-client.js +1 -1
- package/lib/machine-learning/machine-learning-namespace.d.ts +1 -1
- package/lib/machine-learning/machine-learning-namespace.js +1 -1
- package/lib/machine-learning/machine-learning-utils.d.ts +1 -1
- package/lib/machine-learning/machine-learning-utils.js +1 -1
- package/lib/machine-learning/machine-learning.d.ts +1 -1
- package/lib/machine-learning/machine-learning.js +1 -1
- package/lib/messaging/index.d.ts +1 -1
- package/lib/messaging/index.js +1 -1
- package/lib/messaging/messaging-api-request-internal.d.ts +1 -1
- package/lib/messaging/messaging-api-request-internal.js +1 -1
- package/lib/messaging/messaging-api.d.ts +9 -2
- package/lib/messaging/messaging-api.js +1 -1
- package/lib/messaging/messaging-errors-internal.d.ts +1 -1
- package/lib/messaging/messaging-errors-internal.js +1 -1
- package/lib/messaging/messaging-internal.d.ts +1 -1
- package/lib/messaging/messaging-internal.js +5 -1
- package/lib/messaging/messaging-namespace.d.ts +1 -1
- package/lib/messaging/messaging-namespace.js +1 -1
- package/lib/messaging/messaging.d.ts +2 -1
- package/lib/messaging/messaging.js +52 -32
- package/lib/project-management/android-app.d.ts +1 -1
- package/lib/project-management/android-app.js +1 -1
- package/lib/project-management/app-metadata.d.ts +1 -1
- package/lib/project-management/app-metadata.js +1 -1
- package/lib/project-management/index.d.ts +1 -1
- package/lib/project-management/index.js +1 -1
- package/lib/project-management/ios-app.d.ts +1 -1
- package/lib/project-management/ios-app.js +1 -1
- package/lib/project-management/project-management-api-request-internal.d.ts +1 -1
- package/lib/project-management/project-management-api-request-internal.js +1 -1
- package/lib/project-management/project-management-namespace.d.ts +1 -1
- package/lib/project-management/project-management-namespace.js +1 -1
- package/lib/project-management/project-management.d.ts +1 -1
- package/lib/project-management/project-management.js +1 -1
- package/lib/remote-config/condition-evaluator-internal.d.ts +1 -1
- package/lib/remote-config/condition-evaluator-internal.js +1 -1
- package/lib/remote-config/index.d.ts +1 -1
- package/lib/remote-config/index.js +1 -1
- package/lib/remote-config/internal/value-impl.d.ts +1 -1
- package/lib/remote-config/internal/value-impl.js +1 -1
- package/lib/remote-config/remote-config-api-client-internal.d.ts +1 -1
- package/lib/remote-config/remote-config-api-client-internal.js +1 -1
- package/lib/remote-config/remote-config-api.d.ts +1 -1
- package/lib/remote-config/remote-config-api.js +1 -1
- package/lib/remote-config/remote-config-namespace.d.ts +1 -1
- package/lib/remote-config/remote-config-namespace.js +1 -1
- package/lib/remote-config/remote-config.d.ts +1 -1
- package/lib/remote-config/remote-config.js +1 -1
- package/lib/security-rules/index.d.ts +1 -1
- package/lib/security-rules/index.js +1 -1
- package/lib/security-rules/security-rules-api-client-internal.d.ts +1 -1
- package/lib/security-rules/security-rules-api-client-internal.js +1 -1
- package/lib/security-rules/security-rules-internal.d.ts +1 -1
- package/lib/security-rules/security-rules-internal.js +1 -1
- package/lib/security-rules/security-rules-namespace.d.ts +1 -1
- package/lib/security-rules/security-rules-namespace.js +1 -1
- package/lib/security-rules/security-rules.d.ts +1 -1
- package/lib/security-rules/security-rules.js +1 -1
- package/lib/storage/index.d.ts +1 -1
- package/lib/storage/index.js +1 -1
- package/lib/storage/storage-namespace.d.ts +1 -1
- package/lib/storage/storage-namespace.js +1 -1
- package/lib/storage/storage.d.ts +1 -1
- package/lib/storage/storage.js +1 -1
- package/lib/storage/utils.d.ts +1 -1
- package/lib/storage/utils.js +1 -1
- package/lib/utils/api-request.d.ts +5 -1
- package/lib/utils/api-request.js +24 -4
- package/lib/utils/crypto-signer.d.ts +1 -1
- package/lib/utils/crypto-signer.js +1 -1
- package/lib/utils/deep-copy.d.ts +1 -1
- package/lib/utils/deep-copy.js +1 -1
- package/lib/utils/error.d.ts +7 -1
- package/lib/utils/error.js +31 -2
- package/lib/utils/index.d.ts +1 -1
- package/lib/utils/index.js +1 -1
- package/lib/utils/jwt.d.ts +1 -1
- package/lib/utils/jwt.js +1 -1
- package/lib/utils/validator.d.ts +1 -1
- package/lib/utils/validator.js +1 -1
- package/package.json +1 -1
package/lib/app/core.d.ts
CHANGED
package/lib/app/core.js
CHANGED
package/lib/app/credential.d.ts
CHANGED
package/lib/app/credential.js
CHANGED
package/lib/app/firebase-app.js
CHANGED
package/lib/app/index.d.ts
CHANGED
package/lib/app/index.js
CHANGED
package/lib/app/lifecycle.d.ts
CHANGED
package/lib/app/lifecycle.js
CHANGED
package/lib/app-check/index.d.ts
CHANGED
package/lib/app-check/index.js
CHANGED
package/lib/auth/auth-config.js
CHANGED
package/lib/auth/auth.d.ts
CHANGED
package/lib/auth/auth.js
CHANGED
package/lib/auth/base-auth.d.ts
CHANGED
package/lib/auth/base-auth.js
CHANGED
package/lib/auth/identifier.d.ts
CHANGED
package/lib/auth/identifier.js
CHANGED
package/lib/auth/index.d.ts
CHANGED
package/lib/auth/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! firebase-admin v13.
|
|
1
|
+
/*! firebase-admin v13.4.0 */
|
|
2
2
|
import { SmsRegionConfig, MultiFactorConfig, MultiFactorAuthServerConfig, RecaptchaConfig, RecaptchaAuthServerConfig, PasswordPolicyAuthServerConfig, PasswordPolicyConfig, EmailPrivacyConfig, MobileLinksConfig } from './auth-config';
|
|
3
3
|
/**
|
|
4
4
|
* Interface representing the properties to update on the provided project config.
|
package/lib/auth/tenant.d.ts
CHANGED
package/lib/auth/tenant.js
CHANGED
package/lib/auth/user-record.js
CHANGED
package/lib/credential/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! firebase-admin v13.
|
|
1
|
+
/*! firebase-admin v13.4.0 */
|
|
2
2
|
"use strict";
|
|
3
3
|
/*!
|
|
4
4
|
* @license
|
|
@@ -160,6 +160,152 @@ class DataConnectApiClient {
|
|
|
160
160
|
const message = error.message || `Unknown server error: ${response.text}`;
|
|
161
161
|
return new FirebaseDataConnectError(code, message);
|
|
162
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* Converts JSON data into a GraphQL literal string.
|
|
165
|
+
* Handles nested objects, arrays, strings, numbers, and booleans.
|
|
166
|
+
* Ensures strings are properly escaped.
|
|
167
|
+
*/
|
|
168
|
+
objectToString(data) {
|
|
169
|
+
if (typeof data === 'string') {
|
|
170
|
+
const escapedString = data
|
|
171
|
+
.replace(/\\/g, '\\\\') // Replace \ with \\
|
|
172
|
+
.replace(/"/g, '\\"'); // Replace " with \"
|
|
173
|
+
return `"${escapedString}"`;
|
|
174
|
+
}
|
|
175
|
+
if (typeof data === 'number' || typeof data === 'boolean' || data === null) {
|
|
176
|
+
return String(data);
|
|
177
|
+
}
|
|
178
|
+
if (validator.isArray(data)) {
|
|
179
|
+
const elements = data.map(item => this.objectToString(item)).join(', ');
|
|
180
|
+
return `[${elements}]`;
|
|
181
|
+
}
|
|
182
|
+
if (typeof data === 'object' && data !== null) {
|
|
183
|
+
// Filter out properties where the value is undefined BEFORE mapping
|
|
184
|
+
const kvPairs = Object.entries(data)
|
|
185
|
+
.filter(([, val]) => val !== undefined)
|
|
186
|
+
.map(([key, val]) => {
|
|
187
|
+
// GraphQL object keys are typically unquoted.
|
|
188
|
+
return `${key}: ${this.objectToString(val)}`;
|
|
189
|
+
});
|
|
190
|
+
if (kvPairs.length === 0) {
|
|
191
|
+
return '{}'; // Represent an object with no defined properties as {}
|
|
192
|
+
}
|
|
193
|
+
return `{ ${kvPairs.join(', ')} }`;
|
|
194
|
+
}
|
|
195
|
+
// If value is undefined (and not an object property, which is handled above,
|
|
196
|
+
// e.g., if objectToString(undefined) is called directly or for an array element)
|
|
197
|
+
// it should be represented as 'null'.
|
|
198
|
+
if (typeof data === 'undefined') {
|
|
199
|
+
return 'null';
|
|
200
|
+
}
|
|
201
|
+
// Fallback for any other types (e.g., Symbol, BigInt - though less common in GQL contexts)
|
|
202
|
+
// Consider how these should be handled or if an error should be thrown.
|
|
203
|
+
// For now, simple string conversion.
|
|
204
|
+
return String(data);
|
|
205
|
+
}
|
|
206
|
+
formatTableName(tableName) {
|
|
207
|
+
// Format tableName: first character to lowercase
|
|
208
|
+
if (tableName && tableName.length > 0) {
|
|
209
|
+
return tableName.charAt(0).toLowerCase() + tableName.slice(1);
|
|
210
|
+
}
|
|
211
|
+
return tableName;
|
|
212
|
+
}
|
|
213
|
+
handleBulkImportErrors(err) {
|
|
214
|
+
if (err.code === `data-connect/${exports.DATA_CONNECT_ERROR_CODE_MAPPING.QUERY_ERROR}`) {
|
|
215
|
+
throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.QUERY_ERROR, `${err.message}. Make sure that your table name passed in matches the type name in your GraphQL schema file.`);
|
|
216
|
+
}
|
|
217
|
+
throw err;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Insert a single row into the specified table.
|
|
221
|
+
*/
|
|
222
|
+
async insert(tableName, data) {
|
|
223
|
+
if (!validator.isNonEmptyString(tableName)) {
|
|
224
|
+
throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, '`tableName` must be a non-empty string.');
|
|
225
|
+
}
|
|
226
|
+
if (validator.isArray(data)) {
|
|
227
|
+
throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, '`data` must be an object, not an array, for single insert. For arrays, please use `insertMany` function.');
|
|
228
|
+
}
|
|
229
|
+
if (!validator.isNonNullObject(data)) {
|
|
230
|
+
throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, '`data` must be a non-null object.');
|
|
231
|
+
}
|
|
232
|
+
try {
|
|
233
|
+
tableName = this.formatTableName(tableName);
|
|
234
|
+
const gqlDataString = this.objectToString(data);
|
|
235
|
+
const mutation = `mutation { ${tableName}_insert(data: ${gqlDataString}) }`;
|
|
236
|
+
// Use internal executeGraphql
|
|
237
|
+
return this.executeGraphql(mutation).catch(this.handleBulkImportErrors);
|
|
238
|
+
}
|
|
239
|
+
catch (e) {
|
|
240
|
+
throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INTERNAL, `Failed to construct insert mutation: ${e.message}`);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Insert multiple rows into the specified table.
|
|
245
|
+
*/
|
|
246
|
+
async insertMany(tableName, data) {
|
|
247
|
+
if (!validator.isNonEmptyString(tableName)) {
|
|
248
|
+
throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, '`tableName` must be a non-empty string.');
|
|
249
|
+
}
|
|
250
|
+
if (!validator.isNonEmptyArray(data)) {
|
|
251
|
+
throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, '`data` must be a non-empty array for insertMany.');
|
|
252
|
+
}
|
|
253
|
+
try {
|
|
254
|
+
tableName = this.formatTableName(tableName);
|
|
255
|
+
const gqlDataString = this.objectToString(data);
|
|
256
|
+
const mutation = `mutation { ${tableName}_insertMany(data: ${gqlDataString}) }`;
|
|
257
|
+
// Use internal executeGraphql
|
|
258
|
+
return this.executeGraphql(mutation).catch(this.handleBulkImportErrors);
|
|
259
|
+
}
|
|
260
|
+
catch (e) {
|
|
261
|
+
throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INTERNAL, `Failed to construct insertMany mutation: ${e.message}`);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Insert a single row into the specified table, or update it if it already exists.
|
|
266
|
+
*/
|
|
267
|
+
async upsert(tableName, data) {
|
|
268
|
+
if (!validator.isNonEmptyString(tableName)) {
|
|
269
|
+
throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, '`tableName` must be a non-empty string.');
|
|
270
|
+
}
|
|
271
|
+
if (validator.isArray(data)) {
|
|
272
|
+
throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, '`data` must be an object, not an array, for single upsert. For arrays, please use `upsertMany` function.');
|
|
273
|
+
}
|
|
274
|
+
if (!validator.isNonNullObject(data)) {
|
|
275
|
+
throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, '`data` must be a non-null object.');
|
|
276
|
+
}
|
|
277
|
+
try {
|
|
278
|
+
tableName = this.formatTableName(tableName);
|
|
279
|
+
const gqlDataString = this.objectToString(data);
|
|
280
|
+
const mutation = `mutation { ${tableName}_upsert(data: ${gqlDataString}) }`;
|
|
281
|
+
// Use internal executeGraphql
|
|
282
|
+
return this.executeGraphql(mutation).catch(this.handleBulkImportErrors);
|
|
283
|
+
}
|
|
284
|
+
catch (e) {
|
|
285
|
+
throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INTERNAL, `Failed to construct upsert mutation: ${e.message}`);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Insert multiple rows into the specified table, or update them if they already exist.
|
|
290
|
+
*/
|
|
291
|
+
async upsertMany(tableName, data) {
|
|
292
|
+
if (!validator.isNonEmptyString(tableName)) {
|
|
293
|
+
throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, '`tableName` must be a non-empty string.');
|
|
294
|
+
}
|
|
295
|
+
if (!validator.isNonEmptyArray(data)) {
|
|
296
|
+
throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, '`data` must be a non-empty array for upsertMany.');
|
|
297
|
+
}
|
|
298
|
+
try {
|
|
299
|
+
tableName = this.formatTableName(tableName);
|
|
300
|
+
const gqlDataString = this.objectToString(data);
|
|
301
|
+
const mutation = `mutation { ${tableName}_upsertMany(data: ${gqlDataString}) }`;
|
|
302
|
+
// Use internal executeGraphql
|
|
303
|
+
return this.executeGraphql(mutation).catch(this.handleBulkImportErrors);
|
|
304
|
+
}
|
|
305
|
+
catch (e) {
|
|
306
|
+
throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INTERNAL, `Failed to construct upsertMany mutation: ${e.message}`);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
163
309
|
}
|
|
164
310
|
exports.DataConnectApiClient = DataConnectApiClient;
|
|
165
311
|
/**
|