@dereekb/firebase 14.0.0 → 14.1.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/eslint/package.json +3 -3
- package/index.esm.js +268 -5
- package/package.json +5 -5
- package/src/lib/model/userexternalconnection/index.d.ts +1 -0
- package/src/lib/model/userexternalconnection/userexternalconnection.api.d.ts +41 -1
- package/src/lib/model/userexternalconnection/userexternalconnection.d.ts +115 -5
- package/src/lib/model/userexternalconnection/userexternalconnection.error.d.ts +41 -0
- package/src/lib/model/userexternalconnection/userexternalconnection.id.d.ts +34 -0
- package/src/lib/model/userexternalconnection/userexternalconnection.query.d.ts +22 -1
- package/src/lib/model/userexternalconnection/userexternalconnection.util.d.ts +138 -3
- package/test/package.json +6 -6
package/eslint/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase/eslint",
|
|
3
|
-
"version": "14.
|
|
3
|
+
"version": "14.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"peerDependencies": {
|
|
6
|
-
"@dereekb/util": "14.
|
|
6
|
+
"@dereekb/util": "14.1.0",
|
|
7
7
|
"@marcbachmann/cel-js": "^8.0.0",
|
|
8
8
|
"@typescript-eslint/parser": "8.69.0",
|
|
9
9
|
"@typescript-eslint/utils": "8.69.0",
|
|
10
10
|
"typescript": "6.0.3"
|
|
11
11
|
},
|
|
12
12
|
"devDependencies": {
|
|
13
|
-
"@dereekb/firebase": "14.
|
|
13
|
+
"@dereekb/firebase": "14.1.0",
|
|
14
14
|
"eslint": "10.9.1",
|
|
15
15
|
"firebase": "^12.18.0"
|
|
16
16
|
},
|
package/index.esm.js
CHANGED
|
@@ -26853,6 +26853,20 @@ var UserExternalConnectionDocument = /*#__PURE__*/ function(AbstractFirestoreDoc
|
|
|
26853
26853
|
}),
|
|
26854
26854
|
er: optionalFirestoreEnum()
|
|
26855
26855
|
};
|
|
26856
|
+
/**
|
|
26857
|
+
* Field conversions for a {@link UserExternalConnectionLogin}.
|
|
26858
|
+
*/ var userExternalConnectionLoginFields = {
|
|
26859
|
+
ea: firestoreString(),
|
|
26860
|
+
l: optionalFirestoreString(),
|
|
26861
|
+
em: optionalFirestoreString(),
|
|
26862
|
+
emv: optionalFirestoreBoolean(),
|
|
26863
|
+
lat: firestoreDate({
|
|
26864
|
+
saveDefaultAsNow: true
|
|
26865
|
+
}),
|
|
26866
|
+
uat: firestoreDate({
|
|
26867
|
+
saveDefaultAsNow: true
|
|
26868
|
+
})
|
|
26869
|
+
};
|
|
26856
26870
|
var userExternalConnectionConverter = snapshotConverterFunctions({
|
|
26857
26871
|
fields: {
|
|
26858
26872
|
uid: firestoreUID(),
|
|
@@ -26861,7 +26875,15 @@ var userExternalConnectionConverter = snapshotConverterFunctions({
|
|
|
26861
26875
|
fields: userExternalConnectionEntryFields
|
|
26862
26876
|
}
|
|
26863
26877
|
}),
|
|
26878
|
+
// an absent map decodes as {}, so every document written before `li` existed reads back as
|
|
26879
|
+
// "no login links" without a migration
|
|
26880
|
+
li: firestoreObjectMap({
|
|
26881
|
+
objectField: {
|
|
26882
|
+
fields: userExternalConnectionLoginFields
|
|
26883
|
+
}
|
|
26884
|
+
}),
|
|
26864
26885
|
c: firestoreEnumArray(),
|
|
26886
|
+
ec: optionalFirestoreArray(),
|
|
26865
26887
|
uat: firestoreDate({
|
|
26866
26888
|
saveDefaultAsNow: true
|
|
26867
26889
|
})
|
|
@@ -26912,6 +26934,29 @@ var userExternalConnectionConverter = snapshotConverterFunctions({
|
|
|
26912
26934
|
/**
|
|
26913
26935
|
* Provider type for Zoho.
|
|
26914
26936
|
*/ var ZOHO_USER_EXTERNAL_CONNECTION_PROVIDER_TYPE = 'zoho';
|
|
26937
|
+
/**
|
|
26938
|
+
* The delimiter joining a provider type to an external account id in a
|
|
26939
|
+
* {@link UserExternalConnectionExternalAccountKey}.
|
|
26940
|
+
*
|
|
26941
|
+
* A colon is safe on both sides: {@link UserExternalConnectionProviderType} must already be a valid
|
|
26942
|
+
* Firestore map key (no dots or slashes), and the key is only ever a stored/queried string VALUE,
|
|
26943
|
+
* never a document id or field path.
|
|
26944
|
+
*/ var USER_EXTERNAL_CONNECTION_EXTERNAL_ACCOUNT_KEY_DELIMITER = ':';
|
|
26945
|
+
/**
|
|
26946
|
+
* Builds the {@link UserExternalConnectionExternalAccountKey} for a provider/account pair.
|
|
26947
|
+
*
|
|
26948
|
+
* The SOLE producer of the key format: the derivation that stores it and the query that reads it
|
|
26949
|
+
* both go through here, so the two can never disagree about the delimiter.
|
|
26950
|
+
*
|
|
26951
|
+
* @param input - The provider type and external account id to join.
|
|
26952
|
+
* @param input.providerType - The provider the account belongs to.
|
|
26953
|
+
* @param input.externalAccountId - The provider's stable id for the account.
|
|
26954
|
+
* @returns The external account key.
|
|
26955
|
+
*
|
|
26956
|
+
* @__NO_SIDE_EFFECTS__
|
|
26957
|
+
*/ function userExternalConnectionExternalAccountKey(input) {
|
|
26958
|
+
return "".concat(input.providerType).concat(USER_EXTERNAL_CONNECTION_EXTERNAL_ACCOUNT_KEY_DELIMITER).concat(input.externalAccountId);
|
|
26959
|
+
}
|
|
26915
26960
|
|
|
26916
26961
|
function _define_property(obj, key, value) {
|
|
26917
26962
|
if (key in obj) {
|
|
@@ -26957,6 +27002,53 @@ function _object_spread(target) {
|
|
|
26957
27002
|
result.sort();
|
|
26958
27003
|
return result;
|
|
26959
27004
|
}
|
|
27005
|
+
/**
|
|
27006
|
+
* The SOLE producer of a {@link UserExternalConnection}'s `ec` array.
|
|
27007
|
+
*
|
|
27008
|
+
* Membership is every ENTRY carrying an `ea`, at ANY status, UNION every LOGIN LINK's `ea` —
|
|
27009
|
+
* deliberately unlike {@link userExternalConnectionConnectedProviderTypes}, which is `connected`-only.
|
|
27010
|
+
* `c` answers "whose credentials can I use?", a question about the credentials; `ec` answers "who IS
|
|
27011
|
+
* this account?", a question about identity, which survives an expired token. Filtering it by status
|
|
27012
|
+
* would make a returning user with `error` credentials look like a stranger, and a sign-in would
|
|
27013
|
+
* mint them a second Firebase user.
|
|
27014
|
+
*
|
|
27015
|
+
* The union is what makes the two lifecycles independent. Disconnecting a data connection removes its
|
|
27016
|
+
* entry, and if `ec` came from `e` alone that would take the sign-in binding with it — the next
|
|
27017
|
+
* sign-in would find no match and mint a second Firebase user for the same person.
|
|
27018
|
+
*
|
|
27019
|
+
* @param input - The entry map and the login map to derive from.
|
|
27020
|
+
* @returns The external account keys, deduped and sorted for a stable stored value.
|
|
27021
|
+
*/ function userExternalConnectionExternalAccountKeys(input) {
|
|
27022
|
+
var entries = input.entries, logins = input.logins;
|
|
27023
|
+
var keys = new Set();
|
|
27024
|
+
if (entries) {
|
|
27025
|
+
Object.keys(entries).forEach(function(providerType) {
|
|
27026
|
+
var _entries_providerType;
|
|
27027
|
+
var externalAccountId = (_entries_providerType = entries[providerType]) === null || _entries_providerType === void 0 ? void 0 : _entries_providerType.ea;
|
|
27028
|
+
if (externalAccountId != null) {
|
|
27029
|
+
keys.add(userExternalConnectionExternalAccountKey({
|
|
27030
|
+
providerType: providerType,
|
|
27031
|
+
externalAccountId: externalAccountId
|
|
27032
|
+
}));
|
|
27033
|
+
}
|
|
27034
|
+
});
|
|
27035
|
+
}
|
|
27036
|
+
if (logins) {
|
|
27037
|
+
Object.keys(logins).forEach(function(providerType) {
|
|
27038
|
+
var _logins_providerType;
|
|
27039
|
+
var externalAccountId = (_logins_providerType = logins[providerType]) === null || _logins_providerType === void 0 ? void 0 : _logins_providerType.ea;
|
|
27040
|
+
if (externalAccountId != null) {
|
|
27041
|
+
keys.add(userExternalConnectionExternalAccountKey({
|
|
27042
|
+
providerType: providerType,
|
|
27043
|
+
externalAccountId: externalAccountId
|
|
27044
|
+
}));
|
|
27045
|
+
}
|
|
27046
|
+
});
|
|
27047
|
+
}
|
|
27048
|
+
var result = Array.from(keys);
|
|
27049
|
+
result.sort();
|
|
27050
|
+
return result;
|
|
27051
|
+
}
|
|
26960
27052
|
/**
|
|
26961
27053
|
* Derives the {@link UserExternalConnectionEntry} for an operation's outcome.
|
|
26962
27054
|
*
|
|
@@ -27009,6 +27101,32 @@ function _object_spread(target) {
|
|
|
27009
27101
|
}
|
|
27010
27102
|
return result;
|
|
27011
27103
|
}
|
|
27104
|
+
/**
|
|
27105
|
+
* Assembles the COMPLETE document value from both maps.
|
|
27106
|
+
*
|
|
27107
|
+
* Extracted so the two appliers cannot diverge on how the derived arrays are produced: `ec` is the
|
|
27108
|
+
* union of `e` and `li`, and either applier computing it from only the map it happened to change
|
|
27109
|
+
* would drop the other map's keys out of the sign-in lookup.
|
|
27110
|
+
*
|
|
27111
|
+
* Exported for the one caller that legitimately replaces a whole map rather than one provider's key —
|
|
27112
|
+
* the login backfill. Ordinary writes go through the two appliers.
|
|
27113
|
+
*
|
|
27114
|
+
* @param input - The uid, both maps, and the instant to stamp.
|
|
27115
|
+
* @returns The next UserExternalConnection value to write.
|
|
27116
|
+
*/ function userExternalConnectionValue(input) {
|
|
27117
|
+
var uid = input.uid, entries = input.entries, logins = input.logins, now = input.now;
|
|
27118
|
+
return {
|
|
27119
|
+
uid: uid,
|
|
27120
|
+
e: entries,
|
|
27121
|
+
li: logins,
|
|
27122
|
+
c: userExternalConnectionConnectedProviderTypes(entries),
|
|
27123
|
+
ec: userExternalConnectionExternalAccountKeys({
|
|
27124
|
+
entries: entries,
|
|
27125
|
+
logins: logins
|
|
27126
|
+
}),
|
|
27127
|
+
uat: now
|
|
27128
|
+
};
|
|
27129
|
+
}
|
|
27012
27130
|
/**
|
|
27013
27131
|
* Applies a single provider's entry and returns the COMPLETE next document.
|
|
27014
27132
|
*
|
|
@@ -27016,6 +27134,9 @@ function _object_spread(target) {
|
|
|
27016
27134
|
* exported way to change `e`, and it always recomputes `c` from the resulting map. There is no
|
|
27017
27135
|
* exported path that touches one without the other.
|
|
27018
27136
|
*
|
|
27137
|
+
* The login map is carried through UNCHANGED. A data connection's lifecycle says nothing about
|
|
27138
|
+
* whether the provider is still a way to sign in, so a disconnect must not remove the link.
|
|
27139
|
+
*
|
|
27019
27140
|
* @param input - The current document plus the provider entry to apply.
|
|
27020
27141
|
* @returns The next UserExternalConnection value to write.
|
|
27021
27142
|
*/ function applyUserExternalConnectionEntry(input) {
|
|
@@ -27026,10 +27147,56 @@ function _object_spread(target) {
|
|
|
27026
27147
|
} else {
|
|
27027
27148
|
delete entries[providerType];
|
|
27028
27149
|
}
|
|
27029
|
-
return {
|
|
27150
|
+
return userExternalConnectionValue({
|
|
27030
27151
|
uid: uid,
|
|
27031
|
-
|
|
27032
|
-
|
|
27152
|
+
entries: entries,
|
|
27153
|
+
logins: _object_spread({}, current === null || current === void 0 ? void 0 : current.li),
|
|
27154
|
+
now: now
|
|
27155
|
+
});
|
|
27156
|
+
}
|
|
27157
|
+
/**
|
|
27158
|
+
* Applies a single provider's LOGIN LINK and returns the COMPLETE next document.
|
|
27159
|
+
*
|
|
27160
|
+
* The mirror of {@link applyUserExternalConnectionEntry}, and the only exported way to change `li`.
|
|
27161
|
+
* The entry map is carried through unchanged: linking a provider as a login method grants nothing
|
|
27162
|
+
* about its data connection, because the identity scopes and the data scopes are not guaranteed to
|
|
27163
|
+
* be the same set.
|
|
27164
|
+
*
|
|
27165
|
+
* @param input - The current document plus the login link to apply.
|
|
27166
|
+
* @returns The next UserExternalConnection value to write.
|
|
27167
|
+
*/ function applyUserExternalConnectionLogin(input) {
|
|
27168
|
+
var current = input.current, uid = input.uid, providerType = input.providerType, login = input.login, now = input.now;
|
|
27169
|
+
var logins = _object_spread({}, current === null || current === void 0 ? void 0 : current.li);
|
|
27170
|
+
if (login) {
|
|
27171
|
+
logins[providerType] = login;
|
|
27172
|
+
} else {
|
|
27173
|
+
delete logins[providerType];
|
|
27174
|
+
}
|
|
27175
|
+
return userExternalConnectionValue({
|
|
27176
|
+
uid: uid,
|
|
27177
|
+
entries: _object_spread({}, current === null || current === void 0 ? void 0 : current.e),
|
|
27178
|
+
logins: logins,
|
|
27179
|
+
now: now
|
|
27180
|
+
});
|
|
27181
|
+
}
|
|
27182
|
+
/**
|
|
27183
|
+
* Derives the {@link UserExternalConnectionLogin} for an identity a link round trip resolved.
|
|
27184
|
+
*
|
|
27185
|
+
* `lat` survives a relink, the mirror of how {@link userExternalConnectionEntryForOutcome} preserves
|
|
27186
|
+
* `coa`: relinking the same provider is a re-consent, not a new relationship, so the date the account
|
|
27187
|
+
* first became a login method stays what it was.
|
|
27188
|
+
*
|
|
27189
|
+
* @param input - The resolved identity, the stored link, and the instant to stamp.
|
|
27190
|
+
* @returns The next login link.
|
|
27191
|
+
*/ function userExternalConnectionLoginForIdentity(input) {
|
|
27192
|
+
var _identity_label, _identity_email, _identity_emailVerified, _ref;
|
|
27193
|
+
var identity = input.identity, previous = input.previous, now = input.now;
|
|
27194
|
+
return {
|
|
27195
|
+
ea: identity.externalAccountId,
|
|
27196
|
+
l: (_identity_label = identity.label) !== null && _identity_label !== void 0 ? _identity_label : previous === null || previous === void 0 ? void 0 : previous.l,
|
|
27197
|
+
em: (_identity_email = identity.email) !== null && _identity_email !== void 0 ? _identity_email : previous === null || previous === void 0 ? void 0 : previous.em,
|
|
27198
|
+
emv: (_identity_emailVerified = identity.emailVerified) !== null && _identity_emailVerified !== void 0 ? _identity_emailVerified : previous === null || previous === void 0 ? void 0 : previous.emv,
|
|
27199
|
+
lat: (_ref = previous === null || previous === void 0 ? void 0 : previous.lat) !== null && _ref !== void 0 ? _ref : now,
|
|
27033
27200
|
uat: now
|
|
27034
27201
|
};
|
|
27035
27202
|
}
|
|
@@ -27047,7 +27214,9 @@ function _object_spread(target) {
|
|
|
27047
27214
|
return {
|
|
27048
27215
|
uid: uid,
|
|
27049
27216
|
e: {},
|
|
27217
|
+
li: {},
|
|
27050
27218
|
c: [],
|
|
27219
|
+
ec: [],
|
|
27051
27220
|
uat: now
|
|
27052
27221
|
};
|
|
27053
27222
|
}
|
|
@@ -27089,6 +27258,26 @@ function _object_spread(target) {
|
|
|
27089
27258
|
*/ function userExternalConnectionIsConnectedToProvider(connection, providerType) {
|
|
27090
27259
|
return userExternalConnectionEntryIsConnected(userExternalConnectionEntryForProvider(connection, providerType));
|
|
27091
27260
|
}
|
|
27261
|
+
/**
|
|
27262
|
+
* Returns the login link for the given provider, if any.
|
|
27263
|
+
*
|
|
27264
|
+
* @param connection - The loaded connection document.
|
|
27265
|
+
* @param providerType - The provider to read.
|
|
27266
|
+
* @returns The provider's login link, or null when the provider is not a login method for this user.
|
|
27267
|
+
*/ function userExternalConnectionLoginForProvider(connection, providerType) {
|
|
27268
|
+
var _connection_li;
|
|
27269
|
+
return connection === null || connection === void 0 ? void 0 : (_connection_li = connection.li) === null || _connection_li === void 0 ? void 0 : _connection_li[providerType];
|
|
27270
|
+
}
|
|
27271
|
+
/**
|
|
27272
|
+
* Returns every provider type that is a login method for this user.
|
|
27273
|
+
*
|
|
27274
|
+
* @param connection - The loaded connection document.
|
|
27275
|
+
* @returns The linked provider types, sorted for a stable render order.
|
|
27276
|
+
*/ function userExternalConnectionLinkedLoginProviderTypes(connection) {
|
|
27277
|
+
var result = (connection === null || connection === void 0 ? void 0 : connection.li) ? Object.keys(connection.li) : [];
|
|
27278
|
+
result.sort();
|
|
27279
|
+
return result;
|
|
27280
|
+
}
|
|
27092
27281
|
|
|
27093
27282
|
/**
|
|
27094
27283
|
* Query for the UserExternalConnection documents that are currently connected to the given provider.
|
|
@@ -27110,6 +27299,30 @@ function _object_spread(target) {
|
|
|
27110
27299
|
where('c', 'array-contains', providerType)
|
|
27111
27300
|
];
|
|
27112
27301
|
}
|
|
27302
|
+
/**
|
|
27303
|
+
* Query for the UserExternalConnection document holding the given third-party account.
|
|
27304
|
+
*
|
|
27305
|
+
* The sign-in counterpart of {@link userExternalConnectionsWithConnectedProviderQuery}: that one
|
|
27306
|
+
* asks "which users are connected to this provider?", this one asks "which user IS this account?".
|
|
27307
|
+
* Both exist because a per-user document makes `e.<provider>.ea` unqueryable.
|
|
27308
|
+
*
|
|
27309
|
+
* Matches at ANY entry status — see the `ec` field docs. Expect at most one result when the
|
|
27310
|
+
* provider's policy declares the connection unique, but the caller must still handle more than one:
|
|
27311
|
+
* uniqueness is enforced at write time and a provider may only have started enforcing it recently.
|
|
27312
|
+
*
|
|
27313
|
+
* @param input - The provider type and external account id to search for.
|
|
27314
|
+
* @param input.providerType - The provider the account belongs to.
|
|
27315
|
+
* @param input.externalAccountId - The provider's stable id for the account.
|
|
27316
|
+
* @returns Firestore query constraints matching the user holding that external account.
|
|
27317
|
+
*
|
|
27318
|
+
* @dbxModelFirebaseIndex
|
|
27319
|
+
* @dbxModelFirebaseIndexModel UserExternalConnection
|
|
27320
|
+
* @dbxModelFirebaseIndexScope COLLECTION
|
|
27321
|
+
*/ function userExternalConnectionsWithExternalAccountQuery(input) {
|
|
27322
|
+
return [
|
|
27323
|
+
where('ec', 'array-contains', userExternalConnectionExternalAccountKey(input))
|
|
27324
|
+
];
|
|
27325
|
+
}
|
|
27113
27326
|
|
|
27114
27327
|
function _class_call_check(instance, Constructor) {
|
|
27115
27328
|
if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
|
|
@@ -27119,6 +27332,10 @@ var disconnectUserExternalConnectionParamsType = /* @__PURE__ */ inferredTargetM
|
|
|
27119
27332
|
providerType: 'string'
|
|
27120
27333
|
}));
|
|
27121
27334
|
var readUserExternalConnectionAuthorizeStateParamsType = /* @__PURE__ */ inferredTargetModelParamsType.merge(type({
|
|
27335
|
+
providerType: 'string',
|
|
27336
|
+
'mode?': "'connect' | 'link'"
|
|
27337
|
+
}));
|
|
27338
|
+
var unlinkUserExternalConnectionLoginParamsType = /* @__PURE__ */ inferredTargetModelParamsType.merge(type({
|
|
27122
27339
|
providerType: 'string'
|
|
27123
27340
|
}));
|
|
27124
27341
|
var USER_EXTERNAL_CONNECTION_FUNCTION_TYPE_CONFIG_MAP = {};
|
|
@@ -27126,7 +27343,7 @@ var USER_EXTERNAL_CONNECTION_MODEL_CRUD_FUNCTIONS_CONFIG = {
|
|
|
27126
27343
|
userExternalConnection: [
|
|
27127
27344
|
'create',
|
|
27128
27345
|
'read:authorizeState',
|
|
27129
|
-
'update:disconnect'
|
|
27346
|
+
'update:disconnect,unlink'
|
|
27130
27347
|
]
|
|
27131
27348
|
};
|
|
27132
27349
|
/**
|
|
@@ -27140,4 +27357,50 @@ var USER_EXTERNAL_CONNECTION_MODEL_CRUD_FUNCTIONS_CONFIG = {
|
|
|
27140
27357
|
* Used to generate the UserExternalConnectionFunctions map for a Functions instance.
|
|
27141
27358
|
*/ var userExternalConnectionFunctionMap = callModelFirebaseFunctionMapFactory(USER_EXTERNAL_CONNECTION_FUNCTION_TYPE_CONFIG_MAP, USER_EXTERNAL_CONNECTION_MODEL_CRUD_FUNCTIONS_CONFIG);
|
|
27142
27359
|
|
|
27143
|
-
export { ALL_FORM_SPACE_NOTIFICATION_TASK_TYPES, ALL_NOTIFICATION_DELIVERY_METHODS, ALL_OIDC_TOKEN_ENDPOINT_AUTH_METHODS, ALL_OIDC_TOKEN_ENDPOINT_AUTH_METHOD_OPTIONS, ALL_STORAGE_FILE_NOTIFICATION_TASK_TYPES, ALL_USER_UPLOADS_FOLDER_NAME, ALL_USER_UPLOADS_FOLDER_PATH, ALREADY_EXISTS_ERROR_CODE, AbstractFirestoreDocument, AbstractFirestoreDocumentDataAccessorWrapper, AbstractFirestoreDocumentWithParent, AppCalendarTypeConfigService, AppFormSpaceTypeConfigService, AppNotificationTemplateTypeInfoRecordService, BAD_DOCUMENT_QUERY_CURSOR_ERROR_CODE, BAD_REQUEST_ERROR_CODE, BASE_MODEL_STORAGE_FILE_PATH, CALCOM_USER_EXTERNAL_CONNECTION_PROVIDER_TYPE, CALENDAR_EXTENSION_PROPERTY_PREFIX, CALENDAR_ICS_DEFAULT_TIMEZONE, CALENDAR_ICS_DOMAIN_NOT_CONFIGURED_ERROR_CODE, CALENDAR_ICS_FILE_EXTENSION, CALENDAR_ICS_ROTATE_THROTTLED_ERROR_CODE, CALENDAR_ICS_STORAGE_FILE_PURPOSE, CALENDAR_ICS_STORAGE_FILE_PURPOSE_GENERATE_ICS_SUBTASK, CALENDAR_ICS_STORAGE_FILE_UNAVAILABLE_ERROR_CODE, CALENDAR_OCCURRENCE_KEY_SEPARATOR, CALENDAR_ROOT_FOLDER_PATH, CALL_MODEL_APP_FUNCTION_KEY, CALL_MODEL_MISSING_OIDC_SCOPE_ERROR_CODE, CALL_MODEL_OIDC_SCOPES, CALL_MODEL_OIDC_SCOPE_DETAILS, CALL_MODEL_OIDC_SCOPE_FOR_CALL_TYPE, CALL_MODEL_OIDC_SCOPE_PREFIX, CLIENT_SECRET_BASIC_TOKEN_ENDPOINT_AUTH_METHOD, CLIENT_SECRET_JWT_TOKEN_ENDPOINT_AUTH_METHOD, CLIENT_SECRET_POST_TOKEN_ENDPOINT_AUTH_METHOD, CONFLICT_ERROR_CODE, COPY_USER_RELATED_DATA_ACCESSOR_FACTORY_FUNCTION, CREATE_MODEL_OIDC_SCOPE, CREATE_NOTIFICATION_ID_REQUIRED_ERROR_CODE, CREATE_STORAGE_FILE_SIGNED_UPLOAD_URL_MAX_EXPIRES_IN_MS, CREATE_STORAGE_FILE_SIGNED_UPLOAD_URL_MAX_FILENAME_LENGTH, CREATE_STORAGE_FILE_SIGNED_UPLOAD_URL_MIN_EXPIRES_IN_MS, CalendarDocument, CalendarEventStatus, CalendarFirestoreCollections, CalendarFunctions, CalendarSyncState, ContextGrantedModelRolesReaderInstance, DBX_FIREBASE_SERVER_NO_AUTH_ERROR_CODE, DBX_FIREBASE_SERVER_NO_UID_ERROR_CODE, DBX_FIREBASE_SERVER_PASSWORD_RESET_INVALID_CODE_ERROR_CODE, DBX_FIREBASE_SERVER_PASSWORD_RESET_NO_CONFIG_ERROR_CODE, DBX_FIREBASE_SERVER_PASSWORD_RESET_SEND_ONCE_ERROR_CODE, DBX_FIREBASE_SERVER_PASSWORD_RESET_THROTTLE_ERROR_CODE, DEFAULT_CALENDAR_ICS_EXPANSION_FUTURE_DAYS, DEFAULT_CALENDAR_ICS_EXPANSION_PAST_DAYS, DEFAULT_CALENDAR_ICS_RECURRENCE_MODE, DEFAULT_CALENDAR_ICS_ROTATE_THROTTLE_HOURS, DEFAULT_CALENDAR_INVITE_ATTENDEE_PARTICIPATION_STATUS, DEFAULT_CALENDAR_INVITE_ATTENDEE_ROLE, DEFAULT_CALENDAR_INVITE_METHOD, DEFAULT_CALENDAR_MAX_EVENTS, DEFAULT_CALENDAR_RESYNC_INTERVAL, DEFAULT_CALENDAR_RETAIN_PAST_EVENT_DAYS, DEFAULT_CALENDAR_TYPE_CONFIG, DEFAULT_CREATE_STORAGE_FILE_SIGNED_UPLOAD_URL_EXPIRES_IN_MS, DEFAULT_DATE_CELL_RANGE_VALUE, DEFAULT_FIRESTORE_DATE_CELL_SCHEDULE_VALUE, DEFAULT_FIRESTORE_ITEM_PAGE_ITERATOR_ITEMS_PER_PAGE, DEFAULT_FIRESTORE_STRING_FIELD_VALUE, DEFAULT_FIRESTORE_TIMEZONE_STRING_VALUE, DEFAULT_FIRESTORE_UNITED_STATES_ADDRESS_VALUE, DEFAULT_FIRESTORE_WEBSITE_FILE_LINK_VALUE, DEFAULT_FORM_SPACE_ALLOWED_MIME_TYPES, DEFAULT_FORM_SPACE_EXPIRES_IN, DEFAULT_FORM_SPACE_FILE_ACCESS, DEFAULT_FORM_SPACE_MAX_FILE_SIZE_BYTES, DEFAULT_FORM_SPACE_MAX_UPLOADS, DEFAULT_FORM_SPACE_SLOT_MAX_FILES, DEFAULT_FORM_SPACE_TYPE_CONFIG, DEFAULT_IN_MEMORY_CACHE_TTL, DEFAULT_ITERATE_FIRESTORE_DOCUMENT_SNAPSHOT_BATCHES_BATCH_SIZE, DEFAULT_MODEL_FUNCTION_FIREBASE_CRUD_FUNCTION_SPECIFIER, DEFAULT_NOTIFICATION_MESSAGE_CALENDAR_ATTACHMENT_FILENAME, DEFAULT_NOTIFICATION_TASK_NOTIFICATION_MODEL_KEY, DEFAULT_NOTIFICATION_TASK_SUBTASK_CLEANUP_RETRY_ATTEMPTS, DEFAULT_NOTIFICATION_TASK_SUBTASK_CLEANUP_RETRY_DELAY, DEFAULT_NOTIFICATION_TEMPLATE_TYPE, DEFAULT_NOTIFICATION_USER_HEALTH_CHECK_PROBE_THROTTLE_MINUTES, DEFAULT_NOTIFICATION_USER_HEALTH_CHECK_THROTTLE_MINUTES, DEFAULT_NOTIFICATION_USER_HEALTH_CHECK_VERIFY_THROTTLE_SECONDS, DEFAULT_ON_CALL_QUERY_MODEL_LIMIT, DEFAULT_PAGED_ITEM_INDEX_DOCUMENT_ID, DEFAULT_PAGED_ITEM_MAX_ITEMS_PER_PAGE, DEFAULT_QUERY_CHANGE_WATCHER_DELAY, DEFAULT_SINGLE_ITEM_FIRESTORE_COLLECTION_DOCUMENT_IDENTIFIER, DEFAULT_UPLOADED_FILE_TYPE_DETERMINATION_LEVEL, DEFAULT_WEBSITE_LINK, DELETE_MODEL_OIDC_SCOPE, DISCORD_USER_EXTERNAL_CONNECTION_PROVIDER_TYPE, DOWNLOAD_MULTIPLE_STORAGE_FILES_MAX_FILES, DOWNLOAD_MULTIPLE_STORAGE_FILES_MIN_FILES, EMAIL_OIDC_SCOPE, EMAIL_OIDC_SCOPE_DETAILS, EMPTY_STORAGE_FILE_PURPOSE_SUBGROUP, EXACT_UPLOADED_FILE_TYPE_DETERMINATION_LEVEL, FIREBASE_AUTH_CREDENTIAL_ALREADY_IN_USE_ERROR, FIREBASE_AUTH_EMAIL_ALREADY_EXISTS_ERROR, FIREBASE_AUTH_EMAIL_ALREADY_IN_USE_ERROR, FIREBASE_AUTH_INVALID_PHONE_NUMBER_ERROR, FIREBASE_AUTH_NETWORK_REQUEST_ERROR, FIREBASE_AUTH_NETWORK_REQUEST_FAILED, FIREBASE_AUTH_OOB_CODE_DATA_PAIR_DELIMITER, FIREBASE_AUTH_PASSWORD_MAX_LENGTH, FIREBASE_AUTH_PASSWORD_MIN_LENGTH, FIREBASE_AUTH_PHONE_NUMBER_ALREADY_EXISTS_ERROR, FIREBASE_AUTH_PROVIDER_ALREADY_LINKED_ERROR, FIREBASE_AUTH_QUOTA_EXCEEDED_ERROR, FIREBASE_AUTH_USER_NOT_FOUND_ERROR, FIREBASE_AUTH_WRONG_PASSWORD, FIREBASE_DEVELOPMENT_FUNCTIONS_MAP_KEY, FIREBASE_SERVER_AUTH_CLAIMS_RESET_EXPIRES_AT_KEY, FIREBASE_SERVER_AUTH_CLAIMS_RESET_LAST_COM_DATE_KEY, FIREBASE_SERVER_AUTH_CLAIMS_RESET_PASSWORD_KEY, FIREBASE_SERVER_AUTH_CLAIMS_SETUP_LAST_COM_DATE_KEY, FIREBASE_SERVER_AUTH_CLAIMS_SETUP_PASSWORD_KEY, FIRESTORE_CLIENT_QUERY_CONSTRAINT_HANDLER_MAPPING, FIRESTORE_COLLECTION_NAME_SEPARATOR, FIRESTORE_DUMMY_MODEL_KEY, FIRESTORE_EMPTY_VALUE, FIRESTORE_END_AT_QUERY_CONSTRAINT_TYPE, FIRESTORE_END_AT_VALUE_QUERY_CONSTRAINT_TYPE, FIRESTORE_END_BEFORE_QUERY_CONSTRAINT_TYPE, FIRESTORE_ITEM_PAGE_ITERATOR, FIRESTORE_ITEM_PAGE_ITERATOR_DELEGATE, FIRESTORE_LIMIT_QUERY_CONSTRAINT_TYPE, FIRESTORE_LIMIT_TO_LAST_QUERY_CONSTRAINT_TYPE, FIRESTORE_MAX_WHERE_IN_FILTER_ARGS_COUNT, FIRESTORE_MODEL_ID_REGEX, FIRESTORE_MODEL_KEY_REGEX, FIRESTORE_MODEL_KEY_REGEX_STRICT, FIRESTORE_OFFSET_QUERY_CONSTRAINT_TYPE, FIRESTORE_ORDER_BY_DOCUMENT_ID_QUERY_CONSTRAINT_TYPE, FIRESTORE_ORDER_BY_QUERY_CONSTRAINT_TYPE, FIRESTORE_PASSTHROUGH_FIELD, FIRESTORE_PERMISSION_DENIED_ERROR_CODE, FIRESTORE_SESSION_OIDC_SCOPE, FIRESTORE_SESSION_OIDC_SCOPE_DETAILS, FIRESTORE_START_AFTER_QUERY_CONSTRAINT_TYPE, FIRESTORE_START_AT_QUERY_CONSTRAINT_TYPE, FIRESTORE_START_AT_VALUE_QUERY_CONSTRAINT_TYPE, FIRESTORE_WHERE_DOCUMENT_ID_QUERY_CONSTRAINT_TYPE, FIRESTORE_WHERE_QUERY_CONSTRAINT_TYPE, FORBIDDEN_ERROR_CODE, FORM_SPACE_ALREADY_EXISTS_ERROR_CODE, FORM_SPACE_FILES_ROOT_FOLDER_PATH, FORM_SPACE_FILE_ACCESS_DENIED_ERROR_CODE, FORM_SPACE_FILE_NOT_FOUND_ERROR_CODE, FORM_SPACE_FUNCTION_TYPE_CONFIG_MAP, FORM_SPACE_HAS_INVALID_FILES_ERROR_CODE, FORM_SPACE_MODEL_CRUD_FUNCTIONS_CONFIG, FORM_SPACE_NOT_EDITABLE_ERROR_CODE, FORM_SPACE_NOT_FOUND_ERROR_CODE, FORM_SPACE_NOT_REOPENABLE_ERROR_CODE, FORM_SPACE_NOT_SUBMITTED_ERROR_CODE, FORM_SPACE_PROCESSING_IN_PROGRESS_ERROR_CODE, FORM_SPACE_PURPOSE, FORM_SPACE_PURPOSE_REGISTER_SUBTASK, FORM_SPACE_PURPOSE_VALIDATE_SUBTASK, FORM_SPACE_REQUIRED_SLOT_MISSING_ERROR_CODE, FORM_SPACE_SUBMISSION_NOTIFICATION_TASK_TYPE, FORM_SPACE_TYPE_MISMATCH_ERROR_CODE, FORM_SPACE_TYPE_NOT_REGISTERED_ERROR_CODE, FORM_SPACE_UPLOADED_FILE_TYPE_IDENTIFIER, FORM_SPACE_UPLOADS_FOLDER_NAME, FORM_SPACE_UPLOAD_NOT_ALLOWED_ERROR_CODE, FORM_SPACE_UPLOAD_POLICY, FORM_SPACE_UPLOAD_USER_MISMATCH_ERROR_CODE, FORM_SPACE_VALIDATION_PENDING_ERROR_CODE, FirebaseDevelopmentFunctions, FirebaseModelPermissionServiceInstance, FirebaseServerError, FirestoreAccessorStreamMode, FirestoreDocumentContextType, FormSpaceDocument, FormSpaceFileValidationState, FormSpaceFirestoreCollections, FormSpaceFunctions, FormSpaceProcessingState, FormSpaceState, GOOGLE_CLOUD_STORAGE_PUBLIC_URL_API_ENDPOINT, HIGH_UPLOADED_FILE_TYPE_DETERMINATION_LEVEL, INTERNAL_SERVER_ERROR_CODE, INVOKE_MODEL_OIDC_SCOPE, KnownNotificationHealthCheckIssueCode, LOW_UPLOADED_FILE_TYPE_DETERMINATION_LEVEL, MAX_FIRESTORE_MAP_ZOOM_LEVEL_VALUE, MAX_ON_CALL_QUERY_MODEL_LIMIT, MIN_FIRESTORE_MAP_ZOOM_LEVEL_VALUE, MODEL_FUNCTION_FIREBASE_CRUD_FUNCTION_SPECIFIER_SPLITTER, MODEL_NOT_AVAILABLE_ERROR_CODE, MODEL_STORAGE_FILE_SLASH_PATH_FACTORY, MailgunNotificationHealthCheckIssueCode, ModifyBeforeSetFirestoreDocumentDataAccessorWrapper, NOTIFICATION_BOX_DOES_NOT_EXIST_ERROR_CODE, NOTIFICATION_BOX_EXCLUSION_TARGET_INVALID_ERROR_CODE, NOTIFICATION_BOX_EXISTS_FOR_MODEL_ERROR_CODE, NOTIFICATION_BOX_MODEL_CRUD_FUNCTIONS_CONFIG, NOTIFICATION_BOX_RECIPIENT_DOES_NOT_EXIST_ERROR_CODE, NOTIFICATION_FUNCTION_TYPE_CONFIG_MAP, NOTIFICATION_HEALTH_CHECK_STATUS_SEVERITY, NOTIFICATION_LOGGED_EVENT_DAY_ITEM_CONVERTER, NOTIFICATION_MESSAGE_MAX_LENGTH, NOTIFICATION_MESSAGE_MIN_LENGTH, NOTIFICATION_MODEL_ALREADY_INITIALIZED_ERROR_CODE, NOTIFICATION_RECIPIENT_NAME_MAX_LENGTH, NOTIFICATION_RECIPIENT_NAME_MIN_LENGTH, NOTIFICATION_SUBJECT_MAX_LENGTH, NOTIFICATION_SUBJECT_MIN_LENGTH, NOTIFICATION_SUMMARY_EMBEDDED_NOTIFICATION_ITEM_MESSAGE_MAX_LENGTH, NOTIFICATION_SUMMARY_EMBEDDED_NOTIFICATION_ITEM_SUBJECT_MAX_LENGTH, NOTIFICATION_SUMMARY_ITEM_LIMIT, NOTIFICATION_TASK_SUBTASK_CHECKPOINT_CLEANUP, NOTIFICATION_TASK_SUBTASK_CHECKPOINT_PROCESSING, NOTIFICATION_USER_BLOCKED_FROM_BEING_ADD_TO_RECIPIENTS_ERROR_CODE, NOTIFICATION_USER_HEALTH_CHECK_PROBE_THROTTLED_ERROR_CODE, NOTIFICATION_USER_HEALTH_CHECK_THROTTLED_ERROR_CODE, NOTIFICATION_USER_HEALTH_CHECK_VERIFY_THROTTLED_ERROR_CODE, NOTIFICATION_USER_INVALID_UID_FOR_CREATE_ERROR_CODE, NOTIFICATION_USER_LOCKED_CONFIG_FROM_BEING_UPDATED_ERROR_CODE, NOTIFICATION_WEEK_NOTIFICATION_ITEM_LIMIT, NOT_FOUND_ERROR_CODE, NotificationBoxDocument, NotificationBoxRecipientFlag, NotificationBoxRecipientTemplateConfigBoolean, NotificationDeliveryMethod, NotificationDocument, NotificationFirestoreCollections, NotificationFunctions, NotificationHealthCheckStatus, NotificationLoggedEventDayDocument, NotificationLoggedEventDayPageDocument, NotificationMessageFlag, NotificationRecipientSendFlag, NotificationSendState, NotificationSendType, NotificationSummaryDocument, NotificationUserDocument, NotificationWeekDocument, OFFLINE_ACCESS_OIDC_SCOPE, OFFLINE_ACCESS_OIDC_SCOPE_DETAILS, OIDC_ENTRY_CLIENT_TYPE, OIDC_FUNCTION_TYPE_CONFIG_MAP, OIDC_MODEL_CRUD_FUNCTIONS_CONFIG, OIDC_PROVIDER_PROFILE_DEFAULT_DESCRIPTION_SUFFIX, OPENID_OIDC_SCOPE, OPENID_OIDC_SCOPE_DETAILS, OidcEntryDocument, OidcModelFirestoreCollections, OidcModelFunctions, PERMISSION_DENIED_ERROR_CODE, PRIVATE_KEY_JWT_TOKEN_ENDPOINT_AUTH_METHOD, PROFILE_OIDC_SCOPE, PROFILE_OIDC_SCOPE_DETAILS, PUBLIC_PKCE_TOKEN_ENDPOINT_AUTH_METHOD, QUERY_MODEL_OIDC_SCOPE, READ_MODEL_OIDC_SCOPE, RUN_DEV_FUNCTION_APP_FUNCTION_KEY, SCHEDULED_FUNCTION_DEV_FUNCTION_SPECIFIER, SCHEDULER_SYSTEM_STATE_TYPE, SERVICE_TOKEN_OIDC_SCOPE, SERVICE_TOKEN_OIDC_SCOPE_DETAILS, STANDARD_OIDC_SCOPES, STANDARD_OIDC_SCOPE_DETAILS, STORAGEFILE_RELATED_FILE_METADATA_KEY, STORAGE_FILE_ALREADY_PROCESSED_ERROR_CODE, STORAGE_FILE_CANNOT_BE_DELETED_YET_ERROR_CODE, STORAGE_FILE_FUNCTION_TYPE_CONFIG_MAP, STORAGE_FILE_GROUP_CREATE_INPUT_ERROR_CODE, STORAGE_FILE_GROUP_QUEUED_FOR_INITIALIZATION_ERROR_CODE, STORAGE_FILE_GROUP_ROOT_FOLDER_PATH, STORAGE_FILE_GROUP_ZIP_FILE_PATH, STORAGE_FILE_GROUP_ZIP_INFO_JSON_FILE_NAME, STORAGE_FILE_GROUP_ZIP_STORAGE_FILE_PURPOSE, STORAGE_FILE_GROUP_ZIP_STORAGE_FILE_PURPOSE_CREATE_ZIP_SUBTASK, STORAGE_FILE_MODEL_ALREADY_INITIALIZED_ERROR_CODE, STORAGE_FILE_MODEL_CRUD_FUNCTIONS_CONFIG, STORAGE_FILE_NOT_FLAGGED_FOR_DELETION_ERROR_CODE, STORAGE_FILE_NOT_FLAGGED_FOR_GROUPS_SYNC_ERROR_CODE, STORAGE_FILE_PROCESSING_NOTIFICATION_TASK_TYPE, STORAGE_FILE_PROCESSING_NOT_ALLOWED_FOR_INVALID_STATE_ERROR_CODE, STORAGE_FILE_PROCESSING_NOT_AVAILABLE_FOR_TYPE_ERROR_CODE, STORAGE_FILE_PROCESSING_NOT_QUEUED_FOR_PROCESSING_ERROR_CODE, STORAGE_FILE_PROCESSING_STUCK_THROTTLE_CHECK_MS, STORAGE_FILE_UPLOAD_USER_ROLE, STORAGE_FILE_UPLOAD_USER_SIMPLE_CLAIMS_CONFIGURATION, ScheduledFunctionDevelopmentFirebaseFunctionListEntry, ScheduledFunctionDevelopmentFunctionTypeEnum, StorageFileCreationType, StorageFileDocument, StorageFileFirestoreCollections, StorageFileFunctions, StorageFileGroupDocument, StorageFileProcessingState, StorageFileState, StorageFileUploadStreamUnsupportedError, SystemStateDocument, SystemStateFirestoreCollections, UNAUTHENTICATED_ERROR_CODE, UNAVAILABLE_ERROR_CODE, UNAVAILABLE_OR_DEACTIVATED_FUNCTION_ERROR_CODE, UNKNOWN_CALENDAR_TYPE, UNKNOWN_FORM_SPACE_TYPE, UNKNOWN_MODEL_TYPE_ERROR_CODE, UNTRACKABLE_NOTIFICATION_HEALTH_CHECK_PROBE_ID, UPDATE_MODEL_OIDC_SCOPE, UPLOADED_FILE_DOES_NOT_EXIST_ERROR_CODE, UPLOADED_FILE_INITIALIZATION_DISCARDED_ERROR_CODE, UPLOADED_FILE_INITIALIZATION_FAILED_ERROR_CODE, UPLOADED_FILE_NOT_ALLOWED_TO_BE_INITIALIZED_ERROR_CODE, UPLOADS_FOLDER_PATH, USER_EXTERNAL_CONNECTION_ENTRY_STATUSES, USER_EXTERNAL_CONNECTION_FUNCTION_TYPE_CONFIG_MAP, USER_EXTERNAL_CONNECTION_MODEL_CRUD_FUNCTIONS_CONFIG, UserExternalConnectionDocument, UserExternalConnectionFunctions, ZOHO_USER_EXTERNAL_CONNECTION_PROVIDER_TYPE, ZOOM_USER_EXTERNAL_CONNECTION_PROVIDER_TYPE, _createNotificationDocumentFromPair, abstractSubscribeOrUnsubscribeToNotificationBoxParamsType, abstractSubscribeToNotificationBoxParamsType, addConstraintToBuilder, addOrReplaceLimitInConstraints, adminOnlyScopesForOidcProviderProfiles, allChildDocumentsUnderParent, allChildDocumentsUnderParentPath, allChildDocumentsUnderRelativePath, allNotificationHealthCheckIssues, allowDocumentSnapshotWithPathOnceFilter, allowedNotificationRecipients, appCalendarTypeConfigService, appFormSpaceTypeConfigService, appNotificationTemplateTypeInfoRecordService, applyExclusionsToNotificationUserNotificationBoxRecipientConfigs, applyUserExternalConnectionEntry, arrayUpdateWithAccessorFunction, asTopLevelFieldPath, asTopLevelFieldPaths, assertFirestoreUpdateHasData, assertFormSpaceUploadAllowed, assertStorageUploadOptionsStringFormat, assignDateCellRangeFunction, assignDateCellScheduleFunction, assignUnitedStatesAddressFunction, assignWebsiteFileLinkFunction, assignWebsiteLinkFunction, assignmentOnlyScopesForOidcProviderProfiles, buildFirebaseCollectionTypeModelTypeMap, calculateNsForNotificationUserNotificationBoxRecipientConfigs, calculateStorageFileGroupEmbeddedFileUpdate, calculateStorageFileGroupRegeneration, calendarCollectionReference, calendarConverter, calendarEventItem, calendarEventItemCalendarDate, calendarEventItemEndDate, calendarEventItemExceptionDateSet, calendarEventItemExceptionDateValue, calendarEventItemFields, calendarEventItemForId, calendarEventItemTimezone, calendarEventItemToICalendarEvent, calendarEventItemToInviteICalendar, calendarEventItemToInviteIcsString, calendarEventItemsFilterUniqueFunction, calendarEventItemsForModelKey, calendarEventItemsSortFunction, calendarEventOccurrenceToICalendarEvent, calendarExtensionDataToICalendarExtraProperties, calendarFirestoreCollection, calendarFunctionMap, calendarFunctionTypeConfigMap, calendarIcsFileStoragePath, calendarIdForModel, calendarIdentity, calendarModelCrudFunctionsConfig, calendarNextIcsRotateAt, calendarRecurringEventItem, calendarRecurringEventItemForScheduleRange, calendarRecurringEventItemModelRecurrenceInfo, calendarRecurringEventItemRecurrenceFields, calendarRecurringEventItemToICalendarEvent, calendarRecurringEventOccurrenceKey, calendarSyncState, calendarTemplate, calendarToICalendar, calendarToIcsString, calendarTypeConfigIcsConfig, calendarTypeConfigIcsExpansionRange, calendarTypeConfigRecord, calendarsDueForResyncQuery, calendarsFlaggedForSyncQuery, calendarsForTypeQuery, callModelFirebaseFunctionMapFactory, callModelOidcScopeForCallType, canQueueStorageFileForProcessing, childFirestoreModelKey, childFirestoreModelKeyPath, childFirestoreModelKeys, cleanupOldNotificationLoggedEventDaysParamsType, cleanupSentNotificationsParamsType, clientFirebaseFirestoreContextFactory, clientFirebaseStorageContextFactory, combineUploadFileTypeDeterminers, completeSubtaskProcessingAndScheduleCleanupTaskResult, contextGrantedModelRolesReader, contextGrantedModelRolesReaderDoesNotExistErrorMessage, contextGrantedModelRolesReaderPermissionErrorMessage, convertHttpsCallableErrorToReadableError, copyDocumentIdForUserRelatedModifierFunction, copyDocumentIdToFieldModifierFunction, copyStoragePath, copyUserRelatedDataAccessorFactoryFunction, copyUserRelatedDataModifierConfig, createFormSpaceParamsType, createNotificationBoxParamsType, createNotificationDocument, createNotificationDocumentIfSending, createNotificationDocumentPair, createNotificationLoggedEventTemplate, createNotificationSummaryParamsType, createNotificationTaskTemplate, createNotificationTemplate, createNotificationUserParamsType, createOidcClientFieldParamsType, createOidcClientParamsType, createStorageFileDocumentPair, createStorageFileDocumentPairFactory, createStorageFileGroupParamsType, createStorageFileParamsType, createStorageFileSignedUploadUrlParamsType, createUserExternalConnectionParamsType, dataFromDocumentSnapshots, dataFromSnapshotStream, decodeFirebaseAuthOobCode, defaultOidcProviderProfiles, defaultPagedItemPageDataConverter, defaultUnlockedScopesForOidcProviderProfiles, delayCompletion, deleteAllQueuedStorageFilesParamsType, deleteFormSpaceParamsType, targetModelParamsType as deleteOidcClientParamsType, targetModelParamsType as deleteOidcTokenParamsType, deleteStorageFileParamsType, determineByFileName, determineByFilePath, determineByFolderName, determineUserByFolder, determineUserByFolderWrapperFunction, determineUserByUserUploadsFolderWrapperFunction, developmentFirebaseFunctionMapFactory, directDataHttpsCallable, disconnectUserExternalConnectionParamsType, documentData, documentDataFunction, documentDataWithIdAndKey, documentReferenceFromDocument, documentReferencesFromDocuments, documentReferencesFromSnapshot, downloadMultipleStorageFilesFileParamsType, downloadMultipleStorageFilesParamsType, downloadStorageFileParamsType, effectiveNotificationBoxRecipientConfig, effectiveNotificationBoxRecipientTemplateConfig, emptyUserExternalConnection, encodeFirebaseAuthOobCode, endAt, endAtValue, endBefore, expandCalendarEvents, expireAllExpiredFormSpacesParamsType, expireFormSpaceTemplate, extendFirestoreCollectionWithPagedItemAccessor, extendFirestoreCollectionWithSingleDocumentAccessor, filterConstraintsOfType, filterDisallowedFirestoreItemPageIteratorInputConstraints, filterRepeatCheckpointSnapshots, filterWithDateRange, firebaseAuthErrorToReadableError, firebaseFirestoreClientDrivers, firebaseFirestoreQueryConstraintFunctionsDriver, firebaseFirestoreQueryDriver, firebaseFunctionMapFactory, firebaseModelLoader, firebaseModelPermissionService, firebaseModelService, firebaseModelServiceFactory, firebaseModelsService, firebaseQueryItemAccumulator, firebaseQuerySnapshotAccumulator, firebaseStorageBucketFolderPath, firebaseStorageClientAccessorDriver, firebaseStorageClientAccessorFile, firebaseStorageClientAccessorFolder, firebaseStorageClientDrivers, firebaseStorageClientListFilesResultFactory, firebaseStorageContextFactory, firebaseStorageFileExists, firebaseStorageFilePathFromStorageFilePath, firebaseStorageRefForStorageFilePath, firestoreArray, firestoreArrayMap, firestoreBitwiseObjectMap, firestoreBitwiseSet, firestoreBitwiseSetMap, firestoreBoolean, firestoreClientAccessorDriver, firestoreClientArrayUpdateToUpdateData, firestoreClientIncrementUpdateToUpdateData, firestoreCollectionDocumentCache, firestoreCollectionQueryFactory, firestoreContextFactory, firestoreDate, firestoreDateCellRange, firestoreDateCellRangeArray, firestoreDateCellRangeAssignFn, firestoreDateCellSchedule, firestoreDateCellScheduleAssignFn, firestoreDateNumber, firestoreDencoderArray, firestoreDencoderMap, firestoreDencoderStringArray, firestoreDocumentAccessorContextExtension, firestoreDocumentAccessorFactory, firestoreDocumentLoader, firestoreDocumentSnapshotPairsLoader, firestoreDocumentSnapshotPairsLoaderInstance, firestoreDummyKey, firestoreEncodedArray, firestoreEncodedObjectMap, firestoreEnum, firestoreEnumArray, firestoreField, firestoreFieldConfigToModelMapFunctionsRef, firestoreFixedItemPageIteration, firestoreFixedItemPageIterationFactory, firestoreIdBatchVerifierFactory, firestoreIdentityTypeArray, firestoreIdentityTypeArrayName, firestoreItemPageIteration, firestoreItemPageIterationFactory, firestoreLatLngString, firestoreMap, firestoreMapZoomLevel, firestoreModelId, firestoreModelIdArrayField, firestoreModelIdFromDocument, firestoreModelIdFromEmail, firestoreModelIdGrantedRoleArrayMap, firestoreModelIdGrantedRoleMap, firestoreModelIdOrKeyType, firestoreModelIdString, firestoreModelIdType, firestoreModelIdentity, firestoreModelIdentityTypeMap, firestoreModelIdsFromDocuments, firestoreModelIdsFromKey, firestoreModelKey, firestoreModelKeyArrayField, firestoreModelKeyCollectionName, firestoreModelKeyCollectionType, firestoreModelKeyCollectionTypeArray, firestoreModelKeyCollectionTypeArrayName, firestoreModelKeyCollectionTypePair, firestoreModelKeyEncodedGrantedRoleMap, firestoreModelKeyFactory, firestoreModelKeyFromDocument, firestoreModelKeyGrantedRoleArrayMap, firestoreModelKeyGrantedRoleMap, firestoreModelKeyPairObject, firestoreModelKeyParentKey, firestoreModelKeyParentKeyPartPairs, firestoreModelKeyPart, firestoreModelKeyPartPairs, firestoreModelKeyPartPairsKeyPath, firestoreModelKeyPartPairsPaths, firestoreModelKeyPath, firestoreModelKeyString, firestoreModelKeyType, firestoreModelKeyTypePair, firestoreModelKeys, firestoreModelKeysFromDocuments, firestoreModelType, firestoreNotificationBoxRecipient, firestoreNotificationBoxRecipientTemplateConfigRecord, firestoreNotificationDeliveryHealthCheckResult, firestoreNotificationHealthCheck, firestoreNotificationHealthCheckIssue, firestoreNotificationHealthCheckProbe, firestoreNotificationItem, firestoreNotificationRecipientWithConfig, firestoreNotificationUserDefaultNotificationBoxRecipientConfig, firestoreNotificationUserNotificationBoxRecipientConfig, firestoreNumber, firestoreObjectArray, firestoreObjectMap, firestorePassThroughField, firestoreQueryConstraint, firestoreQueryConstraintFactory, firestoreQueryDocumentSnapshotPairsLoader, firestoreQueryFactory, firestoreSingleDocumentAccessor, firestoreString, firestoreSubObject, firestoreTimezoneString, firestoreUID, firestoreUniqueArray, firestoreUniqueKeyedArray, firestoreUniqueNumberArray, firestoreUniqueStringArray, firestoreUnitedStatesAddress, firestoreUnitedStatesAddressAssignFn, firestoreUnixDateTimeSecondsNumber, firestoreUpdateWithNoDataError, firestoreWebsiteFileLink, firestoreWebsiteFileLinkAssignFn, firestoreWebsiteFileLinkEncodedArray, firestoreWebsiteFileLinkObjectArray, firestoreWebsiteLink, firestoreWebsiteLinkArray, firestoreWebsiteLinkAssignFn, flagStaleCalendarsForSyncParamsType, flatFirestoreModelKey, formSpaceCollectionReference, formSpaceConverter, formSpaceFileSlotConfig, formSpaceFileSlotName, formSpaceFileStoragePath, formSpaceFileSubObject, formSpaceFileUploaderId, formSpaceFilesInSlot, formSpaceFirestoreCollection, formSpaceFunctionMap, formSpaceIdForModel, formSpaceIdentity, formSpaceKeyForStorageFile, formSpaceSlotFileAccess, formSpaceSlotMaxFiles, formSpaceSlotMinFiles, formSpaceSlotStatus, formSpaceStorageFileGroupId, formSpaceSubmissionNotificationTaskTemplate, formSpaceSubmissionNotificationTaskUniqueId, formSpaceSubmitBlockers, formSpaceTemplate, formSpaceTypeConfigRecord, formSpaceUploadFileNameDetails, formSpaceUploadsFilePath, formSpaceUploadsFolderPath, formSpacesDueForExpirationQuery, formSpacesForOwnerQuery, formSpacesQueuedForProcessingQuery, getDataFromDocumentSnapshots, getDocumentSnapshotData, getDocumentSnapshotDataPair, getDocumentSnapshotDataPairs, getDocumentSnapshotDataPairsWithData, getDocumentSnapshotDataTuples, getDocumentSnapshotPair, getDocumentSnapshotPairs, getDocumentSnapshots, getDocumentSnapshotsData, grantFormSpaceRolesForUserAuthFunction, grantFullAccessIfAdmin, grantFullAccessIfAuthUserRelated, grantModelRolesIfAdmin, grantModelRolesIfAdminFunction, grantModelRolesIfAuthUserRelatedModelFunction, grantModelRolesIfFunction, grantModelRolesIfHasAuthRolesFactory, grantModelRolesIfHasAuthRolesFunction, grantModelRolesOnlyIfFunction, grantStorageFileRolesForUserAuthFunction, hasRunInCurrentHour, inContextFirebaseModelServiceFactory, inContextFirebaseModelsServiceFactory, inMemoryFirestoreCollectionCacheDelegate, inMemoryFirestoreContextCache, inMemoryFirestoreContextCacheFactory, incrementUpdateWithAccessorFunction, inferCalendarRelatedModelKey, inferKeyFromTwoWayFlatFirestoreModelKey, inferNotificationBoxRelatedModelKey, inferStorageFileGroupRelatedModelKey, inferredTargetModelIdParamsType, inferredTargetModelParamsType, initializeAllApplicableNotificationBoxesParamsType, initializeAllApplicableNotificationSummariesParamsType, initializeAllApplicableStorageFileGroupsParamsType, initializeAllStorageFilesFromUploadsParamsType, initializeNotificationModelParamsType, initializeStorageFileFromUploadParamsType, initializeStorageFileModelParamsType, interceptAccessorFactoryFunction, isAdminInFirebaseModelContext, isCalendarIcsRotateThrottled, isClientFirebaseError, isCompleteNotificationSendState, isFirebaseStorageObjectNotFoundError, isFirestoreModelId, isFirestoreModelIdOrKey, isFirestoreModelKey, isFormSpaceEditable, isFormSpaceFileAccessibleByUser, isFormSpaceFileAccessibleWithAccess, isFormSpaceFullyLocked, isFormSpaceReopenable, isFormSpaceStorageFileAccessibleByUser, isLoggedEventNotification, isNthHourOfDay, isOwnerOfUserRelatedModelInFirebaseModelContext, isPendingNotificationHealthCheckProbe, isProblemNotificationHealthCheckStatus, iterateFirestoreDocumentSnapshotBatches, iterateFirestoreDocumentSnapshotCheckpoints, iterateFirestoreDocumentSnapshotPairBatches, iterateFirestoreDocumentSnapshotPairs, iterateFirestoreDocumentSnapshots, iterateStorageListFiles, iterateStorageListFilesByEachFile, iterateStorageListFilesFactory, iterationQueryDocChangeWatcher, iterationQueryDocChangeWatcherChangeTypeForGroup, latestSnapshotsFromDocuments, lazyFirebaseFunctionsFactory, limit, limitToLast, limitUploadFileTypeDeterminer, limitedFirestoreDocumentAccessorFactory, limitedFirestoreDocumentAccessorSnapshotCache, loadAllFirestoreDocumentSnapshot, loadAllFirestoreDocumentSnapshotPairs, loadDocumentsForDocumentReferences, loadDocumentsForDocumentReferencesFromValues, loadDocumentsForIds, loadDocumentsForIdsFromValues, loadDocumentsForKeys, loadDocumentsForKeysFromValues, loadDocumentsForSnapshots, loadDocumentsForValues, loadNotificationBoxDocumentForReferencePair, loadSchedulerSystemState, loadStorageFileGroupDocumentForReferencePair, lockFormSpaceParamsType, lockFormSpaceTemplate, makeDocuments, makeFirestoreCollection, makeFirestoreCollectionGroup, makeFirestoreCollectionWithParent, makeFirestoreContextCache, makeFirestoreItemPageIteratorDelegate, makeFirestoreQueryConstraintFunctionsDriver, makePagedItemFirestoreCollection, makeRootSingleItemFirestoreCollection, makeSingleItemFirestoreCollection, mapDataFromSnapshot, mapHttpsCallable, mapLatestSnapshotsFromDocuments, markCalendarForSyncTemplate, mergeNotificationBoxRecipientTemplateConfigRecords, mergeNotificationBoxRecipientTemplateConfigs, mergeNotificationBoxRecipients, mergeNotificationSendMessagesResult, mergeNotificationUserDefaultNotificationBoxRecipientConfig, mergeNotificationUserNotificationBoxRecipientConfigs, modelStorageSlashPathFactory, modifyBeforeSetInterceptAccessorFactoryFunction, newDocuments, newNotificationBoxRecipientForUid, noContentNotificationMessageFunctionFactory, noStringFormatInStorageUploadOptionsError, noopFirestoreCollectionCache, noopFirestoreCollectionCacheDelegate, noopFirestoreCollectionDocumentCache, noopFirestoreContextCache, notificationBoxCollectionReference, notificationBoxConverter, notificationBoxFirestoreCollection, notificationBoxIdForModel, notificationBoxIdentity, notificationBoxRecipientTemplateConfigArrayEntryParamType, notificationBoxRecipientTemplateConfigArrayToRecord, notificationBoxRecipientTemplateConfigRecordToArray, notificationBoxesFlaggedForNeedsInitializationQuery, notificationBoxesFlaggedInvalidQuery, notificationCollectionReference, notificationCollectionReferenceFactory, notificationConverter, notificationDeliveryHealthCheckResultForMethod, notificationFirestoreCollectionFactory, notificationFirestoreCollectionGroup, notificationFunctionMap, notificationHealthCheckIssue, notificationHealthCheckPendingProbeMethods, notificationIdentity, notificationLoggedEventDayCollectionReference, notificationLoggedEventDayCollectionReferenceFactory, notificationLoggedEventDayConverter, notificationLoggedEventDayFirestoreCollectionFactory, notificationLoggedEventDayFirestoreCollectionGroup, notificationLoggedEventDayId, notificationLoggedEventDayIdentity, notificationLoggedEventDayPageCollectionReference, notificationLoggedEventDayPageFirestoreCollectionGroup, notificationLoggedEventDayPageIdentity, notificationLoggedEventDayPagedItemsCollectionFactory, notificationLoggedEventDayPagedItemsCollectionReferenceFactory, notificationLoggedEventDaysOlderThanQuery, notificationLoggedEventLoader, notificationMessageFunction, notificationRecipientParamsType, notificationSendExclusionCanSendFunction, notificationSendFlagsImplyIsComplete, notificationSubtaskComplete, notificationSummariesFlaggedForNeedsInitializationQuery, notificationSummaryCollectionReference, notificationSummaryConverter, notificationSummaryFirestoreCollection, notificationSummaryIdForModel, notificationSummaryIdForUidFunctionForRootFirestoreModelIdentity, notificationSummaryIdentity, notificationTaskCanRunNextCheckpoint, notificationTaskComplete, notificationTaskDelayRetry, notificationTaskFailed, notificationTaskPartiallyComplete, notificationTaskUniqueId, notificationTemplateTypeInfoRecord, notificationUserCollectionReference, notificationUserConverter, notificationUserFirestoreCollection, notificationUserHasExclusionQuery, notificationUserHealthCheckNextProbeAt, notificationUserHealthCheckNextProbeAtByMethod, notificationUserHealthCheckNextRunAt, notificationUserHealthCheckNextVerifyAt, notificationUserHealthCheckParamsType, notificationUserIdentity, notificationUsersFlaggedForNeedsSyncQuery, notificationWeekCollectionReference, notificationWeekCollectionReferenceFactory, notificationWeekConverter, notificationWeekFirestoreCollectionFactory, notificationWeekFirestoreCollectionGroup, notificationWeekIdentity, notificationsPastSendAtTimeQuery, notificationsReadyForCleanupQuery, nthHourOfDayIndex, offset, oidcClientEntriesByOwnerQuery, oidcEntriesByClientIdQuery, oidcEntriesByGrantIdQuery, oidcEntriesByUidQuery, oidcEntriesByUserCodeQuery, oidcEntriesWithTypeQuery, oidcEntryCollectionReference, oidcEntryConverter, oidcEntryFirestoreCollection, oidcEntryIdentity, oidcGrantEntriesByUidQuery, oidcModelFunctionMap, oidcProviderProfileDetails, oidcProviderProfilesForClient, oidcProviderProfilesForKeys, oidcScopeTermSatisfied, oidcScopeTermsSatisfied, oidcScopesFromScopeClaim, onCallCreateModelParams, onCallCreateModelResult, onCallCreateModelResultWithDocs, onCallDeleteModelParams, onCallDevelopmentParams, onCallInvokeModelParams, onCallQueryModelParams, onCallReadModelParams, onCallTypedModelParamsFunction, onCallUpdateModelParams, optionalFirestoreArray, optionalFirestoreBoolean, optionalFirestoreDate, optionalFirestoreDateNumber, optionalFirestoreEnum, optionalFirestoreField, optionalFirestoreNotificationHealthCheck, optionalFirestoreNumber, optionalFirestorePassthroughJsonField, optionalFirestoreString, optionalFirestoreUID, optionalFirestoreUnitedStatesAddress, optionalFirestoreUnixDateTimeSecondsNumber, orderBy, orderByDocumentId, parseFormSpaceUploadPath, processAllQueuedFormSpacesParamsType, processAllQueuedStorageFilesParamsType, processStorageFileParamsType, pruneCalendarEvents, readFirestoreModelKey, readFirestoreModelKeyFromDocumentSnapshot, readLoggingFirestoreContextCache, readLoggingFirestoreContextCacheFactory, readMultipleStorageFilesMetadataFileParamsType, readMultipleStorageFilesMetadataParamsType, readStorageFileMetadataParamsType, readUserExternalConnectionAuthorizeStateParamsType, regenerateAllFlaggedStorageFileGroupsContentParamsType, regenerateStorageFileGroupContentParamsType, removeCalendarEventItems, removeFormSpaceFileParamsType, reopenFormSpaceParamsType, reopenFormSpaceTemplate, replaceCalendarEventItemsForModelKey, replaceConstraints, requiredFormSpaceFileSlots, requiredScopesForOidcProviderProfiles, resolveEffectiveOidcScopeTerms, resolveFormSpaceExpiresAt, resolveFormSpaceLocksAt, resolveOidcModelScopeRequirement, resyncAllNotificationUserParamsType, targetModelParamsType as resyncNotificationUserParamsType, rollupNotificationDeliveryHealthCheckResultStatus, rollupNotificationHealthCheckResultStatus, rollupNotificationHealthCheckStatus, rotateCalendarIcsParamsType, targetModelParamsType as rotateOidcClientSecretParamsType, scheduledFunctionDevelopmentFirebaseFunctionParamsType, schedulerSystemDataConverter, schedulerSystemStateRead, scopesForOidcProviderProfiles, selectFromFirebaseModelsService, sendNotificationParamsType, sendQueuedNotificationsParamsType, separateConstraints, setIdAndKeyFromKeyIdRefOnDocumentData, setIdAndKeyFromSnapshotOnDocumentData, shouldSaveNotificationToNotificationWeek, shouldSendCreatedNotificationInput, snapshotConverterFunctions, snapshotStreamDataForAccessor, snapshotStreamForAccessor, sortNotificationItemsFunction, startAfter, startAt, startAtValue, storageFileCollectionReference, storageFileConverter, storageFileDisplayFileName, storageFileFirestoreCollection, storageFileFlaggedForSyncWithGroupsQuery, storageFileFunctionMap, storageFileGroupCollectionReference, storageFileGroupConverter, storageFileGroupCreateStorageFileKeyFactory, storageFileGroupCreatedStorageFileKey, storageFileGroupEmbeddedFile, storageFileGroupFirestoreCollection, storageFileGroupFolderPath, storageFileGroupIdForModel, storageFileGroupIdentity, storageFileGroupZipFileStoragePath, storageFileGroupZipStorageFileKey, storageFileGroupsFlaggedForContentRegenerationQuery, storageFileGroupsFlaggedForNeedsInitializationQuery, storageFileGroupsFlaggedInvalidQuery, storageFileIdentity, storageFileProcessingNotificationTaskTemplate, storageFilePurposeAndUserQuery, storageFileUploadScopeType, storageFilesForFormSpaceQuery, storageFilesQueuedForDeleteQuery, storageFilesQueuedForProcessingQuery, storageListFilesResultFactory, storageListFilesResultHasNoNextError, storagePathFactory, storagePublicDownloadUrl, storedFileReaderFactory, streamDocumentSnapshotDataPairs, streamDocumentSnapshotDataPairsWithData, streamDocumentSnapshotsData, streamFromOnSnapshot, submitFormSpaceParamsType, submitFormSpaceTemplate, syncAllFlaggedCalendarsParamsType, syncAllFlaggedStorageFilesWithGroupsParamsType, syncCalendarParamsType, syncStorageFileWithGroupsParamsType, systemStateCollectionReference, systemStateConverter, systemStateFirestoreCollection, systemStateIdentity, systemStateStoredDataConverterFactory, targetModelIdParamsType, targetModelParamsType, twoWayFlatFirestoreModelKey, unreadNotificationItems, unsupportedFirestoreDriverFunctionError, untrackableNotificationHealthCheckProbe, updateCalendarEventsTemplate, updateFormSpaceParamsType, targetModelParamsType as updateNotificationBoxParamsType, updateNotificationBoxRecipientLikeParamsType, updateNotificationBoxRecipientParamsType, updateNotificationBoxRecipientTemplateConfigRecord, updateNotificationRecipient, updateNotificationSummaryParamsType, updateNotificationUserDefaultNotificationBoxRecipientConfig, updateNotificationUserDefaultNotificationBoxRecipientConfigParamsType, updateNotificationUserNotificationBoxRecipientConfigIfChanged, updateNotificationUserNotificationBoxRecipientConfigs, updateNotificationUserNotificationBoxRecipientParamsType, updateNotificationUserNotificationSendExclusions, updateNotificationUserParamsType, updateOidcClientFieldParamsType, updateOidcClientParamsType, updateStorageFileGroupEntryParamsType, updateStorageFileGroupParamsType, updateStorageFileParamsType, updateWithAccessorUpdateAndConverterFunction, uploadFileWithStream, upsertCalendarEventItems, useContextAuth, useContextAuthUid, useDocumentSnapshot, useDocumentSnapshotData, useFirebaseModelsService, userExternalConnectionAccessorFactory, userExternalConnectionCollectionReference, userExternalConnectionConnectedProviderTypes, userExternalConnectionConverter, userExternalConnectionEntryFields, userExternalConnectionEntryForOutcome, userExternalConnectionEntryForProvider, userExternalConnectionEntryIsConnected, userExternalConnectionEntryIsExpired, userExternalConnectionFirestoreCollection, userExternalConnectionFunctionMap, userExternalConnectionIdentity, userExternalConnectionIsConnectedToProvider, userExternalConnectionsWithConnectedProviderQuery, userUploadsFolderSlashPathFactory, userUploadsFolderStoragePathFactory, where, whereDateIsAfter, whereDateIsAfterWithSort, whereDateIsBefore, whereDateIsBeforeWithSort, whereDateIsBetween, whereDateIsInRange, whereDateIsOnOrAfter, whereDateIsOnOrAfterWithSort, whereDateIsOnOrBefore, whereDateIsOnOrBeforeWithSort, whereDocumentId, whereStringHasRootIdentityModelKey, whereStringValueHasPrefix };
|
|
27360
|
+
/**
|
|
27361
|
+
* Error codes the UserExternalConnection server surfaces.
|
|
27362
|
+
*
|
|
27363
|
+
* Declared HERE rather than beside the `HttpsError` factories in `@dereekb/firebase-server/model`
|
|
27364
|
+
* because both sides need them: the server throws them, and the client branches on them — a login
|
|
27365
|
+
* page deciding what to say about a refused sign-in, or a client treating a raced
|
|
27366
|
+
* `..._ALREADY_EXISTS` as success. A code the browser cannot import is a code the browser has to
|
|
27367
|
+
* hard-code.
|
|
27368
|
+
*/ var USER_EXTERNAL_CONNECTION_PROVIDER_NOT_CONNECTED_ERROR_CODE = 'USER_EXTERNAL_CONNECTION_PROVIDER_NOT_CONNECTED';
|
|
27369
|
+
var USER_EXTERNAL_CONNECTION_PROVIDER_NOT_ALLOWED_ERROR_CODE = 'USER_EXTERNAL_CONNECTION_PROVIDER_NOT_ALLOWED';
|
|
27370
|
+
var USER_EXTERNAL_CONNECTION_ALREADY_EXISTS_ERROR_CODE = 'USER_EXTERNAL_CONNECTION_ALREADY_EXISTS';
|
|
27371
|
+
var USER_EXTERNAL_CONNECTION_CREDENTIALS_EXPIRED_ERROR_CODE = 'USER_EXTERNAL_CONNECTION_CREDENTIALS_EXPIRED';
|
|
27372
|
+
var USER_EXTERNAL_CONNECTION_EXTERNAL_ACCOUNT_IN_USE_ERROR_CODE = 'USER_EXTERNAL_CONNECTION_EXTERNAL_ACCOUNT_IN_USE';
|
|
27373
|
+
var USER_EXTERNAL_CONNECTION_SIGN_IN_NOT_ENABLED_ERROR_CODE = 'USER_EXTERNAL_CONNECTION_SIGN_IN_NOT_ENABLED';
|
|
27374
|
+
var USER_EXTERNAL_CONNECTION_SIGN_IN_DENIED_ERROR_CODE = 'USER_EXTERNAL_CONNECTION_SIGN_IN_DENIED';
|
|
27375
|
+
var USER_EXTERNAL_CONNECTION_SIGN_IN_EMAIL_CONFLICT_ERROR_CODE = 'USER_EXTERNAL_CONNECTION_SIGN_IN_EMAIL_CONFLICT';
|
|
27376
|
+
var USER_EXTERNAL_CONNECTION_SIGN_IN_USER_MISSING_ERROR_CODE = 'USER_EXTERNAL_CONNECTION_SIGN_IN_USER_MISSING';
|
|
27377
|
+
var USER_EXTERNAL_CONNECTION_SIGN_IN_IDENTITY_UNAVAILABLE_ERROR_CODE = 'USER_EXTERNAL_CONNECTION_SIGN_IN_IDENTITY_UNAVAILABLE';
|
|
27378
|
+
/**
|
|
27379
|
+
* Refuses an unlink that would leave the account with no way back in.
|
|
27380
|
+
*/ var USER_EXTERNAL_CONNECTION_UNLINK_LAST_LOGIN_METHOD_ERROR_CODE = 'USER_EXTERNAL_CONNECTION_UNLINK_LAST_LOGIN_METHOD';
|
|
27381
|
+
/**
|
|
27382
|
+
* Refuses a `link` round trip for a provider the app has not enabled for sign-in.
|
|
27383
|
+
*
|
|
27384
|
+
* Distinct from `..._SIGN_IN_NOT_ENABLED`: nothing is signing in — an already-authenticated user asked
|
|
27385
|
+
* to make the provider a login method, and the same `policy.signIn` opt-in governs both.
|
|
27386
|
+
*/ var USER_EXTERNAL_CONNECTION_LINK_NOT_ENABLED_ERROR_CODE = 'USER_EXTERNAL_CONNECTION_LINK_NOT_ENABLED';
|
|
27387
|
+
/**
|
|
27388
|
+
* The only error codes a failed SIGN-IN reports back to the browser.
|
|
27389
|
+
*
|
|
27390
|
+
* An ALLOWLIST rather than a filter: a failed sign-in redirects to a URL the user can read, so
|
|
27391
|
+
* anything that reaches it is public. Passing whatever code an internal failure happened to carry
|
|
27392
|
+
* would leak the shape of that failure, and passing a message would leak its text — so a code absent
|
|
27393
|
+
* from this set is reported as nothing at all.
|
|
27394
|
+
*
|
|
27395
|
+
* Shared with the client so a login page's copy map and the server's allowlist cannot drift.
|
|
27396
|
+
*/ var USER_EXTERNAL_CONNECTION_SIGN_IN_REPORTABLE_ERROR_CODES = new Set([
|
|
27397
|
+
USER_EXTERNAL_CONNECTION_EXTERNAL_ACCOUNT_IN_USE_ERROR_CODE,
|
|
27398
|
+
USER_EXTERNAL_CONNECTION_SIGN_IN_NOT_ENABLED_ERROR_CODE,
|
|
27399
|
+
USER_EXTERNAL_CONNECTION_SIGN_IN_DENIED_ERROR_CODE,
|
|
27400
|
+
USER_EXTERNAL_CONNECTION_SIGN_IN_EMAIL_CONFLICT_ERROR_CODE,
|
|
27401
|
+
USER_EXTERNAL_CONNECTION_SIGN_IN_USER_MISSING_ERROR_CODE,
|
|
27402
|
+
USER_EXTERNAL_CONNECTION_SIGN_IN_IDENTITY_UNAVAILABLE_ERROR_CODE,
|
|
27403
|
+
USER_EXTERNAL_CONNECTION_LINK_NOT_ENABLED_ERROR_CODE
|
|
27404
|
+
]);
|
|
27405
|
+
|
|
27406
|
+
export { ALL_FORM_SPACE_NOTIFICATION_TASK_TYPES, ALL_NOTIFICATION_DELIVERY_METHODS, ALL_OIDC_TOKEN_ENDPOINT_AUTH_METHODS, ALL_OIDC_TOKEN_ENDPOINT_AUTH_METHOD_OPTIONS, ALL_STORAGE_FILE_NOTIFICATION_TASK_TYPES, ALL_USER_UPLOADS_FOLDER_NAME, ALL_USER_UPLOADS_FOLDER_PATH, ALREADY_EXISTS_ERROR_CODE, AbstractFirestoreDocument, AbstractFirestoreDocumentDataAccessorWrapper, AbstractFirestoreDocumentWithParent, AppCalendarTypeConfigService, AppFormSpaceTypeConfigService, AppNotificationTemplateTypeInfoRecordService, BAD_DOCUMENT_QUERY_CURSOR_ERROR_CODE, BAD_REQUEST_ERROR_CODE, BASE_MODEL_STORAGE_FILE_PATH, CALCOM_USER_EXTERNAL_CONNECTION_PROVIDER_TYPE, CALENDAR_EXTENSION_PROPERTY_PREFIX, CALENDAR_ICS_DEFAULT_TIMEZONE, CALENDAR_ICS_DOMAIN_NOT_CONFIGURED_ERROR_CODE, CALENDAR_ICS_FILE_EXTENSION, CALENDAR_ICS_ROTATE_THROTTLED_ERROR_CODE, CALENDAR_ICS_STORAGE_FILE_PURPOSE, CALENDAR_ICS_STORAGE_FILE_PURPOSE_GENERATE_ICS_SUBTASK, CALENDAR_ICS_STORAGE_FILE_UNAVAILABLE_ERROR_CODE, CALENDAR_OCCURRENCE_KEY_SEPARATOR, CALENDAR_ROOT_FOLDER_PATH, CALL_MODEL_APP_FUNCTION_KEY, CALL_MODEL_MISSING_OIDC_SCOPE_ERROR_CODE, CALL_MODEL_OIDC_SCOPES, CALL_MODEL_OIDC_SCOPE_DETAILS, CALL_MODEL_OIDC_SCOPE_FOR_CALL_TYPE, CALL_MODEL_OIDC_SCOPE_PREFIX, CLIENT_SECRET_BASIC_TOKEN_ENDPOINT_AUTH_METHOD, CLIENT_SECRET_JWT_TOKEN_ENDPOINT_AUTH_METHOD, CLIENT_SECRET_POST_TOKEN_ENDPOINT_AUTH_METHOD, CONFLICT_ERROR_CODE, COPY_USER_RELATED_DATA_ACCESSOR_FACTORY_FUNCTION, CREATE_MODEL_OIDC_SCOPE, CREATE_NOTIFICATION_ID_REQUIRED_ERROR_CODE, CREATE_STORAGE_FILE_SIGNED_UPLOAD_URL_MAX_EXPIRES_IN_MS, CREATE_STORAGE_FILE_SIGNED_UPLOAD_URL_MAX_FILENAME_LENGTH, CREATE_STORAGE_FILE_SIGNED_UPLOAD_URL_MIN_EXPIRES_IN_MS, CalendarDocument, CalendarEventStatus, CalendarFirestoreCollections, CalendarFunctions, CalendarSyncState, ContextGrantedModelRolesReaderInstance, DBX_FIREBASE_SERVER_NO_AUTH_ERROR_CODE, DBX_FIREBASE_SERVER_NO_UID_ERROR_CODE, DBX_FIREBASE_SERVER_PASSWORD_RESET_INVALID_CODE_ERROR_CODE, DBX_FIREBASE_SERVER_PASSWORD_RESET_NO_CONFIG_ERROR_CODE, DBX_FIREBASE_SERVER_PASSWORD_RESET_SEND_ONCE_ERROR_CODE, DBX_FIREBASE_SERVER_PASSWORD_RESET_THROTTLE_ERROR_CODE, DEFAULT_CALENDAR_ICS_EXPANSION_FUTURE_DAYS, DEFAULT_CALENDAR_ICS_EXPANSION_PAST_DAYS, DEFAULT_CALENDAR_ICS_RECURRENCE_MODE, DEFAULT_CALENDAR_ICS_ROTATE_THROTTLE_HOURS, DEFAULT_CALENDAR_INVITE_ATTENDEE_PARTICIPATION_STATUS, DEFAULT_CALENDAR_INVITE_ATTENDEE_ROLE, DEFAULT_CALENDAR_INVITE_METHOD, DEFAULT_CALENDAR_MAX_EVENTS, DEFAULT_CALENDAR_RESYNC_INTERVAL, DEFAULT_CALENDAR_RETAIN_PAST_EVENT_DAYS, DEFAULT_CALENDAR_TYPE_CONFIG, DEFAULT_CREATE_STORAGE_FILE_SIGNED_UPLOAD_URL_EXPIRES_IN_MS, DEFAULT_DATE_CELL_RANGE_VALUE, DEFAULT_FIRESTORE_DATE_CELL_SCHEDULE_VALUE, DEFAULT_FIRESTORE_ITEM_PAGE_ITERATOR_ITEMS_PER_PAGE, DEFAULT_FIRESTORE_STRING_FIELD_VALUE, DEFAULT_FIRESTORE_TIMEZONE_STRING_VALUE, DEFAULT_FIRESTORE_UNITED_STATES_ADDRESS_VALUE, DEFAULT_FIRESTORE_WEBSITE_FILE_LINK_VALUE, DEFAULT_FORM_SPACE_ALLOWED_MIME_TYPES, DEFAULT_FORM_SPACE_EXPIRES_IN, DEFAULT_FORM_SPACE_FILE_ACCESS, DEFAULT_FORM_SPACE_MAX_FILE_SIZE_BYTES, DEFAULT_FORM_SPACE_MAX_UPLOADS, DEFAULT_FORM_SPACE_SLOT_MAX_FILES, DEFAULT_FORM_SPACE_TYPE_CONFIG, DEFAULT_IN_MEMORY_CACHE_TTL, DEFAULT_ITERATE_FIRESTORE_DOCUMENT_SNAPSHOT_BATCHES_BATCH_SIZE, DEFAULT_MODEL_FUNCTION_FIREBASE_CRUD_FUNCTION_SPECIFIER, DEFAULT_NOTIFICATION_MESSAGE_CALENDAR_ATTACHMENT_FILENAME, DEFAULT_NOTIFICATION_TASK_NOTIFICATION_MODEL_KEY, DEFAULT_NOTIFICATION_TASK_SUBTASK_CLEANUP_RETRY_ATTEMPTS, DEFAULT_NOTIFICATION_TASK_SUBTASK_CLEANUP_RETRY_DELAY, DEFAULT_NOTIFICATION_TEMPLATE_TYPE, DEFAULT_NOTIFICATION_USER_HEALTH_CHECK_PROBE_THROTTLE_MINUTES, DEFAULT_NOTIFICATION_USER_HEALTH_CHECK_THROTTLE_MINUTES, DEFAULT_NOTIFICATION_USER_HEALTH_CHECK_VERIFY_THROTTLE_SECONDS, DEFAULT_ON_CALL_QUERY_MODEL_LIMIT, DEFAULT_PAGED_ITEM_INDEX_DOCUMENT_ID, DEFAULT_PAGED_ITEM_MAX_ITEMS_PER_PAGE, DEFAULT_QUERY_CHANGE_WATCHER_DELAY, DEFAULT_SINGLE_ITEM_FIRESTORE_COLLECTION_DOCUMENT_IDENTIFIER, DEFAULT_UPLOADED_FILE_TYPE_DETERMINATION_LEVEL, DEFAULT_WEBSITE_LINK, DELETE_MODEL_OIDC_SCOPE, DISCORD_USER_EXTERNAL_CONNECTION_PROVIDER_TYPE, DOWNLOAD_MULTIPLE_STORAGE_FILES_MAX_FILES, DOWNLOAD_MULTIPLE_STORAGE_FILES_MIN_FILES, EMAIL_OIDC_SCOPE, EMAIL_OIDC_SCOPE_DETAILS, EMPTY_STORAGE_FILE_PURPOSE_SUBGROUP, EXACT_UPLOADED_FILE_TYPE_DETERMINATION_LEVEL, FIREBASE_AUTH_CREDENTIAL_ALREADY_IN_USE_ERROR, FIREBASE_AUTH_EMAIL_ALREADY_EXISTS_ERROR, FIREBASE_AUTH_EMAIL_ALREADY_IN_USE_ERROR, FIREBASE_AUTH_INVALID_PHONE_NUMBER_ERROR, FIREBASE_AUTH_NETWORK_REQUEST_ERROR, FIREBASE_AUTH_NETWORK_REQUEST_FAILED, FIREBASE_AUTH_OOB_CODE_DATA_PAIR_DELIMITER, FIREBASE_AUTH_PASSWORD_MAX_LENGTH, FIREBASE_AUTH_PASSWORD_MIN_LENGTH, FIREBASE_AUTH_PHONE_NUMBER_ALREADY_EXISTS_ERROR, FIREBASE_AUTH_PROVIDER_ALREADY_LINKED_ERROR, FIREBASE_AUTH_QUOTA_EXCEEDED_ERROR, FIREBASE_AUTH_USER_NOT_FOUND_ERROR, FIREBASE_AUTH_WRONG_PASSWORD, FIREBASE_DEVELOPMENT_FUNCTIONS_MAP_KEY, FIREBASE_SERVER_AUTH_CLAIMS_RESET_EXPIRES_AT_KEY, FIREBASE_SERVER_AUTH_CLAIMS_RESET_LAST_COM_DATE_KEY, FIREBASE_SERVER_AUTH_CLAIMS_RESET_PASSWORD_KEY, FIREBASE_SERVER_AUTH_CLAIMS_SETUP_LAST_COM_DATE_KEY, FIREBASE_SERVER_AUTH_CLAIMS_SETUP_PASSWORD_KEY, FIRESTORE_CLIENT_QUERY_CONSTRAINT_HANDLER_MAPPING, FIRESTORE_COLLECTION_NAME_SEPARATOR, FIRESTORE_DUMMY_MODEL_KEY, FIRESTORE_EMPTY_VALUE, FIRESTORE_END_AT_QUERY_CONSTRAINT_TYPE, FIRESTORE_END_AT_VALUE_QUERY_CONSTRAINT_TYPE, FIRESTORE_END_BEFORE_QUERY_CONSTRAINT_TYPE, FIRESTORE_ITEM_PAGE_ITERATOR, FIRESTORE_ITEM_PAGE_ITERATOR_DELEGATE, FIRESTORE_LIMIT_QUERY_CONSTRAINT_TYPE, FIRESTORE_LIMIT_TO_LAST_QUERY_CONSTRAINT_TYPE, FIRESTORE_MAX_WHERE_IN_FILTER_ARGS_COUNT, FIRESTORE_MODEL_ID_REGEX, FIRESTORE_MODEL_KEY_REGEX, FIRESTORE_MODEL_KEY_REGEX_STRICT, FIRESTORE_OFFSET_QUERY_CONSTRAINT_TYPE, FIRESTORE_ORDER_BY_DOCUMENT_ID_QUERY_CONSTRAINT_TYPE, FIRESTORE_ORDER_BY_QUERY_CONSTRAINT_TYPE, FIRESTORE_PASSTHROUGH_FIELD, FIRESTORE_PERMISSION_DENIED_ERROR_CODE, FIRESTORE_SESSION_OIDC_SCOPE, FIRESTORE_SESSION_OIDC_SCOPE_DETAILS, FIRESTORE_START_AFTER_QUERY_CONSTRAINT_TYPE, FIRESTORE_START_AT_QUERY_CONSTRAINT_TYPE, FIRESTORE_START_AT_VALUE_QUERY_CONSTRAINT_TYPE, FIRESTORE_WHERE_DOCUMENT_ID_QUERY_CONSTRAINT_TYPE, FIRESTORE_WHERE_QUERY_CONSTRAINT_TYPE, FORBIDDEN_ERROR_CODE, FORM_SPACE_ALREADY_EXISTS_ERROR_CODE, FORM_SPACE_FILES_ROOT_FOLDER_PATH, FORM_SPACE_FILE_ACCESS_DENIED_ERROR_CODE, FORM_SPACE_FILE_NOT_FOUND_ERROR_CODE, FORM_SPACE_FUNCTION_TYPE_CONFIG_MAP, FORM_SPACE_HAS_INVALID_FILES_ERROR_CODE, FORM_SPACE_MODEL_CRUD_FUNCTIONS_CONFIG, FORM_SPACE_NOT_EDITABLE_ERROR_CODE, FORM_SPACE_NOT_FOUND_ERROR_CODE, FORM_SPACE_NOT_REOPENABLE_ERROR_CODE, FORM_SPACE_NOT_SUBMITTED_ERROR_CODE, FORM_SPACE_PROCESSING_IN_PROGRESS_ERROR_CODE, FORM_SPACE_PURPOSE, FORM_SPACE_PURPOSE_REGISTER_SUBTASK, FORM_SPACE_PURPOSE_VALIDATE_SUBTASK, FORM_SPACE_REQUIRED_SLOT_MISSING_ERROR_CODE, FORM_SPACE_SUBMISSION_NOTIFICATION_TASK_TYPE, FORM_SPACE_TYPE_MISMATCH_ERROR_CODE, FORM_SPACE_TYPE_NOT_REGISTERED_ERROR_CODE, FORM_SPACE_UPLOADED_FILE_TYPE_IDENTIFIER, FORM_SPACE_UPLOADS_FOLDER_NAME, FORM_SPACE_UPLOAD_NOT_ALLOWED_ERROR_CODE, FORM_SPACE_UPLOAD_POLICY, FORM_SPACE_UPLOAD_USER_MISMATCH_ERROR_CODE, FORM_SPACE_VALIDATION_PENDING_ERROR_CODE, FirebaseDevelopmentFunctions, FirebaseModelPermissionServiceInstance, FirebaseServerError, FirestoreAccessorStreamMode, FirestoreDocumentContextType, FormSpaceDocument, FormSpaceFileValidationState, FormSpaceFirestoreCollections, FormSpaceFunctions, FormSpaceProcessingState, FormSpaceState, GOOGLE_CLOUD_STORAGE_PUBLIC_URL_API_ENDPOINT, HIGH_UPLOADED_FILE_TYPE_DETERMINATION_LEVEL, INTERNAL_SERVER_ERROR_CODE, INVOKE_MODEL_OIDC_SCOPE, KnownNotificationHealthCheckIssueCode, LOW_UPLOADED_FILE_TYPE_DETERMINATION_LEVEL, MAX_FIRESTORE_MAP_ZOOM_LEVEL_VALUE, MAX_ON_CALL_QUERY_MODEL_LIMIT, MIN_FIRESTORE_MAP_ZOOM_LEVEL_VALUE, MODEL_FUNCTION_FIREBASE_CRUD_FUNCTION_SPECIFIER_SPLITTER, MODEL_NOT_AVAILABLE_ERROR_CODE, MODEL_STORAGE_FILE_SLASH_PATH_FACTORY, MailgunNotificationHealthCheckIssueCode, ModifyBeforeSetFirestoreDocumentDataAccessorWrapper, NOTIFICATION_BOX_DOES_NOT_EXIST_ERROR_CODE, NOTIFICATION_BOX_EXCLUSION_TARGET_INVALID_ERROR_CODE, NOTIFICATION_BOX_EXISTS_FOR_MODEL_ERROR_CODE, NOTIFICATION_BOX_MODEL_CRUD_FUNCTIONS_CONFIG, NOTIFICATION_BOX_RECIPIENT_DOES_NOT_EXIST_ERROR_CODE, NOTIFICATION_FUNCTION_TYPE_CONFIG_MAP, NOTIFICATION_HEALTH_CHECK_STATUS_SEVERITY, NOTIFICATION_LOGGED_EVENT_DAY_ITEM_CONVERTER, NOTIFICATION_MESSAGE_MAX_LENGTH, NOTIFICATION_MESSAGE_MIN_LENGTH, NOTIFICATION_MODEL_ALREADY_INITIALIZED_ERROR_CODE, NOTIFICATION_RECIPIENT_NAME_MAX_LENGTH, NOTIFICATION_RECIPIENT_NAME_MIN_LENGTH, NOTIFICATION_SUBJECT_MAX_LENGTH, NOTIFICATION_SUBJECT_MIN_LENGTH, NOTIFICATION_SUMMARY_EMBEDDED_NOTIFICATION_ITEM_MESSAGE_MAX_LENGTH, NOTIFICATION_SUMMARY_EMBEDDED_NOTIFICATION_ITEM_SUBJECT_MAX_LENGTH, NOTIFICATION_SUMMARY_ITEM_LIMIT, NOTIFICATION_TASK_SUBTASK_CHECKPOINT_CLEANUP, NOTIFICATION_TASK_SUBTASK_CHECKPOINT_PROCESSING, NOTIFICATION_USER_BLOCKED_FROM_BEING_ADD_TO_RECIPIENTS_ERROR_CODE, NOTIFICATION_USER_HEALTH_CHECK_PROBE_THROTTLED_ERROR_CODE, NOTIFICATION_USER_HEALTH_CHECK_THROTTLED_ERROR_CODE, NOTIFICATION_USER_HEALTH_CHECK_VERIFY_THROTTLED_ERROR_CODE, NOTIFICATION_USER_INVALID_UID_FOR_CREATE_ERROR_CODE, NOTIFICATION_USER_LOCKED_CONFIG_FROM_BEING_UPDATED_ERROR_CODE, NOTIFICATION_WEEK_NOTIFICATION_ITEM_LIMIT, NOT_FOUND_ERROR_CODE, NotificationBoxDocument, NotificationBoxRecipientFlag, NotificationBoxRecipientTemplateConfigBoolean, NotificationDeliveryMethod, NotificationDocument, NotificationFirestoreCollections, NotificationFunctions, NotificationHealthCheckStatus, NotificationLoggedEventDayDocument, NotificationLoggedEventDayPageDocument, NotificationMessageFlag, NotificationRecipientSendFlag, NotificationSendState, NotificationSendType, NotificationSummaryDocument, NotificationUserDocument, NotificationWeekDocument, OFFLINE_ACCESS_OIDC_SCOPE, OFFLINE_ACCESS_OIDC_SCOPE_DETAILS, OIDC_ENTRY_CLIENT_TYPE, OIDC_FUNCTION_TYPE_CONFIG_MAP, OIDC_MODEL_CRUD_FUNCTIONS_CONFIG, OIDC_PROVIDER_PROFILE_DEFAULT_DESCRIPTION_SUFFIX, OPENID_OIDC_SCOPE, OPENID_OIDC_SCOPE_DETAILS, OidcEntryDocument, OidcModelFirestoreCollections, OidcModelFunctions, PERMISSION_DENIED_ERROR_CODE, PRIVATE_KEY_JWT_TOKEN_ENDPOINT_AUTH_METHOD, PROFILE_OIDC_SCOPE, PROFILE_OIDC_SCOPE_DETAILS, PUBLIC_PKCE_TOKEN_ENDPOINT_AUTH_METHOD, QUERY_MODEL_OIDC_SCOPE, READ_MODEL_OIDC_SCOPE, RUN_DEV_FUNCTION_APP_FUNCTION_KEY, SCHEDULED_FUNCTION_DEV_FUNCTION_SPECIFIER, SCHEDULER_SYSTEM_STATE_TYPE, SERVICE_TOKEN_OIDC_SCOPE, SERVICE_TOKEN_OIDC_SCOPE_DETAILS, STANDARD_OIDC_SCOPES, STANDARD_OIDC_SCOPE_DETAILS, STORAGEFILE_RELATED_FILE_METADATA_KEY, STORAGE_FILE_ALREADY_PROCESSED_ERROR_CODE, STORAGE_FILE_CANNOT_BE_DELETED_YET_ERROR_CODE, STORAGE_FILE_FUNCTION_TYPE_CONFIG_MAP, STORAGE_FILE_GROUP_CREATE_INPUT_ERROR_CODE, STORAGE_FILE_GROUP_QUEUED_FOR_INITIALIZATION_ERROR_CODE, STORAGE_FILE_GROUP_ROOT_FOLDER_PATH, STORAGE_FILE_GROUP_ZIP_FILE_PATH, STORAGE_FILE_GROUP_ZIP_INFO_JSON_FILE_NAME, STORAGE_FILE_GROUP_ZIP_STORAGE_FILE_PURPOSE, STORAGE_FILE_GROUP_ZIP_STORAGE_FILE_PURPOSE_CREATE_ZIP_SUBTASK, STORAGE_FILE_MODEL_ALREADY_INITIALIZED_ERROR_CODE, STORAGE_FILE_MODEL_CRUD_FUNCTIONS_CONFIG, STORAGE_FILE_NOT_FLAGGED_FOR_DELETION_ERROR_CODE, STORAGE_FILE_NOT_FLAGGED_FOR_GROUPS_SYNC_ERROR_CODE, STORAGE_FILE_PROCESSING_NOTIFICATION_TASK_TYPE, STORAGE_FILE_PROCESSING_NOT_ALLOWED_FOR_INVALID_STATE_ERROR_CODE, STORAGE_FILE_PROCESSING_NOT_AVAILABLE_FOR_TYPE_ERROR_CODE, STORAGE_FILE_PROCESSING_NOT_QUEUED_FOR_PROCESSING_ERROR_CODE, STORAGE_FILE_PROCESSING_STUCK_THROTTLE_CHECK_MS, STORAGE_FILE_UPLOAD_USER_ROLE, STORAGE_FILE_UPLOAD_USER_SIMPLE_CLAIMS_CONFIGURATION, ScheduledFunctionDevelopmentFirebaseFunctionListEntry, ScheduledFunctionDevelopmentFunctionTypeEnum, StorageFileCreationType, StorageFileDocument, StorageFileFirestoreCollections, StorageFileFunctions, StorageFileGroupDocument, StorageFileProcessingState, StorageFileState, StorageFileUploadStreamUnsupportedError, SystemStateDocument, SystemStateFirestoreCollections, UNAUTHENTICATED_ERROR_CODE, UNAVAILABLE_ERROR_CODE, UNAVAILABLE_OR_DEACTIVATED_FUNCTION_ERROR_CODE, UNKNOWN_CALENDAR_TYPE, UNKNOWN_FORM_SPACE_TYPE, UNKNOWN_MODEL_TYPE_ERROR_CODE, UNTRACKABLE_NOTIFICATION_HEALTH_CHECK_PROBE_ID, UPDATE_MODEL_OIDC_SCOPE, UPLOADED_FILE_DOES_NOT_EXIST_ERROR_CODE, UPLOADED_FILE_INITIALIZATION_DISCARDED_ERROR_CODE, UPLOADED_FILE_INITIALIZATION_FAILED_ERROR_CODE, UPLOADED_FILE_NOT_ALLOWED_TO_BE_INITIALIZED_ERROR_CODE, UPLOADS_FOLDER_PATH, USER_EXTERNAL_CONNECTION_ALREADY_EXISTS_ERROR_CODE, USER_EXTERNAL_CONNECTION_CREDENTIALS_EXPIRED_ERROR_CODE, USER_EXTERNAL_CONNECTION_ENTRY_STATUSES, USER_EXTERNAL_CONNECTION_EXTERNAL_ACCOUNT_IN_USE_ERROR_CODE, USER_EXTERNAL_CONNECTION_EXTERNAL_ACCOUNT_KEY_DELIMITER, USER_EXTERNAL_CONNECTION_FUNCTION_TYPE_CONFIG_MAP, USER_EXTERNAL_CONNECTION_LINK_NOT_ENABLED_ERROR_CODE, USER_EXTERNAL_CONNECTION_MODEL_CRUD_FUNCTIONS_CONFIG, USER_EXTERNAL_CONNECTION_PROVIDER_NOT_ALLOWED_ERROR_CODE, USER_EXTERNAL_CONNECTION_PROVIDER_NOT_CONNECTED_ERROR_CODE, USER_EXTERNAL_CONNECTION_SIGN_IN_DENIED_ERROR_CODE, USER_EXTERNAL_CONNECTION_SIGN_IN_EMAIL_CONFLICT_ERROR_CODE, USER_EXTERNAL_CONNECTION_SIGN_IN_IDENTITY_UNAVAILABLE_ERROR_CODE, USER_EXTERNAL_CONNECTION_SIGN_IN_NOT_ENABLED_ERROR_CODE, USER_EXTERNAL_CONNECTION_SIGN_IN_REPORTABLE_ERROR_CODES, USER_EXTERNAL_CONNECTION_SIGN_IN_USER_MISSING_ERROR_CODE, USER_EXTERNAL_CONNECTION_UNLINK_LAST_LOGIN_METHOD_ERROR_CODE, UserExternalConnectionDocument, UserExternalConnectionFunctions, ZOHO_USER_EXTERNAL_CONNECTION_PROVIDER_TYPE, ZOOM_USER_EXTERNAL_CONNECTION_PROVIDER_TYPE, _createNotificationDocumentFromPair, abstractSubscribeOrUnsubscribeToNotificationBoxParamsType, abstractSubscribeToNotificationBoxParamsType, addConstraintToBuilder, addOrReplaceLimitInConstraints, adminOnlyScopesForOidcProviderProfiles, allChildDocumentsUnderParent, allChildDocumentsUnderParentPath, allChildDocumentsUnderRelativePath, allNotificationHealthCheckIssues, allowDocumentSnapshotWithPathOnceFilter, allowedNotificationRecipients, appCalendarTypeConfigService, appFormSpaceTypeConfigService, appNotificationTemplateTypeInfoRecordService, applyExclusionsToNotificationUserNotificationBoxRecipientConfigs, applyUserExternalConnectionEntry, applyUserExternalConnectionLogin, arrayUpdateWithAccessorFunction, asTopLevelFieldPath, asTopLevelFieldPaths, assertFirestoreUpdateHasData, assertFormSpaceUploadAllowed, assertStorageUploadOptionsStringFormat, assignDateCellRangeFunction, assignDateCellScheduleFunction, assignUnitedStatesAddressFunction, assignWebsiteFileLinkFunction, assignWebsiteLinkFunction, assignmentOnlyScopesForOidcProviderProfiles, buildFirebaseCollectionTypeModelTypeMap, calculateNsForNotificationUserNotificationBoxRecipientConfigs, calculateStorageFileGroupEmbeddedFileUpdate, calculateStorageFileGroupRegeneration, calendarCollectionReference, calendarConverter, calendarEventItem, calendarEventItemCalendarDate, calendarEventItemEndDate, calendarEventItemExceptionDateSet, calendarEventItemExceptionDateValue, calendarEventItemFields, calendarEventItemForId, calendarEventItemTimezone, calendarEventItemToICalendarEvent, calendarEventItemToInviteICalendar, calendarEventItemToInviteIcsString, calendarEventItemsFilterUniqueFunction, calendarEventItemsForModelKey, calendarEventItemsSortFunction, calendarEventOccurrenceToICalendarEvent, calendarExtensionDataToICalendarExtraProperties, calendarFirestoreCollection, calendarFunctionMap, calendarFunctionTypeConfigMap, calendarIcsFileStoragePath, calendarIdForModel, calendarIdentity, calendarModelCrudFunctionsConfig, calendarNextIcsRotateAt, calendarRecurringEventItem, calendarRecurringEventItemForScheduleRange, calendarRecurringEventItemModelRecurrenceInfo, calendarRecurringEventItemRecurrenceFields, calendarRecurringEventItemToICalendarEvent, calendarRecurringEventOccurrenceKey, calendarSyncState, calendarTemplate, calendarToICalendar, calendarToIcsString, calendarTypeConfigIcsConfig, calendarTypeConfigIcsExpansionRange, calendarTypeConfigRecord, calendarsDueForResyncQuery, calendarsFlaggedForSyncQuery, calendarsForTypeQuery, callModelFirebaseFunctionMapFactory, callModelOidcScopeForCallType, canQueueStorageFileForProcessing, childFirestoreModelKey, childFirestoreModelKeyPath, childFirestoreModelKeys, cleanupOldNotificationLoggedEventDaysParamsType, cleanupSentNotificationsParamsType, clientFirebaseFirestoreContextFactory, clientFirebaseStorageContextFactory, combineUploadFileTypeDeterminers, completeSubtaskProcessingAndScheduleCleanupTaskResult, contextGrantedModelRolesReader, contextGrantedModelRolesReaderDoesNotExistErrorMessage, contextGrantedModelRolesReaderPermissionErrorMessage, convertHttpsCallableErrorToReadableError, copyDocumentIdForUserRelatedModifierFunction, copyDocumentIdToFieldModifierFunction, copyStoragePath, copyUserRelatedDataAccessorFactoryFunction, copyUserRelatedDataModifierConfig, createFormSpaceParamsType, createNotificationBoxParamsType, createNotificationDocument, createNotificationDocumentIfSending, createNotificationDocumentPair, createNotificationLoggedEventTemplate, createNotificationSummaryParamsType, createNotificationTaskTemplate, createNotificationTemplate, createNotificationUserParamsType, createOidcClientFieldParamsType, createOidcClientParamsType, createStorageFileDocumentPair, createStorageFileDocumentPairFactory, createStorageFileGroupParamsType, createStorageFileParamsType, createStorageFileSignedUploadUrlParamsType, createUserExternalConnectionParamsType, dataFromDocumentSnapshots, dataFromSnapshotStream, decodeFirebaseAuthOobCode, defaultOidcProviderProfiles, defaultPagedItemPageDataConverter, defaultUnlockedScopesForOidcProviderProfiles, delayCompletion, deleteAllQueuedStorageFilesParamsType, deleteFormSpaceParamsType, targetModelParamsType as deleteOidcClientParamsType, targetModelParamsType as deleteOidcTokenParamsType, deleteStorageFileParamsType, determineByFileName, determineByFilePath, determineByFolderName, determineUserByFolder, determineUserByFolderWrapperFunction, determineUserByUserUploadsFolderWrapperFunction, developmentFirebaseFunctionMapFactory, directDataHttpsCallable, disconnectUserExternalConnectionParamsType, documentData, documentDataFunction, documentDataWithIdAndKey, documentReferenceFromDocument, documentReferencesFromDocuments, documentReferencesFromSnapshot, downloadMultipleStorageFilesFileParamsType, downloadMultipleStorageFilesParamsType, downloadStorageFileParamsType, effectiveNotificationBoxRecipientConfig, effectiveNotificationBoxRecipientTemplateConfig, emptyUserExternalConnection, encodeFirebaseAuthOobCode, endAt, endAtValue, endBefore, expandCalendarEvents, expireAllExpiredFormSpacesParamsType, expireFormSpaceTemplate, extendFirestoreCollectionWithPagedItemAccessor, extendFirestoreCollectionWithSingleDocumentAccessor, filterConstraintsOfType, filterDisallowedFirestoreItemPageIteratorInputConstraints, filterRepeatCheckpointSnapshots, filterWithDateRange, firebaseAuthErrorToReadableError, firebaseFirestoreClientDrivers, firebaseFirestoreQueryConstraintFunctionsDriver, firebaseFirestoreQueryDriver, firebaseFunctionMapFactory, firebaseModelLoader, firebaseModelPermissionService, firebaseModelService, firebaseModelServiceFactory, firebaseModelsService, firebaseQueryItemAccumulator, firebaseQuerySnapshotAccumulator, firebaseStorageBucketFolderPath, firebaseStorageClientAccessorDriver, firebaseStorageClientAccessorFile, firebaseStorageClientAccessorFolder, firebaseStorageClientDrivers, firebaseStorageClientListFilesResultFactory, firebaseStorageContextFactory, firebaseStorageFileExists, firebaseStorageFilePathFromStorageFilePath, firebaseStorageRefForStorageFilePath, firestoreArray, firestoreArrayMap, firestoreBitwiseObjectMap, firestoreBitwiseSet, firestoreBitwiseSetMap, firestoreBoolean, firestoreClientAccessorDriver, firestoreClientArrayUpdateToUpdateData, firestoreClientIncrementUpdateToUpdateData, firestoreCollectionDocumentCache, firestoreCollectionQueryFactory, firestoreContextFactory, firestoreDate, firestoreDateCellRange, firestoreDateCellRangeArray, firestoreDateCellRangeAssignFn, firestoreDateCellSchedule, firestoreDateCellScheduleAssignFn, firestoreDateNumber, firestoreDencoderArray, firestoreDencoderMap, firestoreDencoderStringArray, firestoreDocumentAccessorContextExtension, firestoreDocumentAccessorFactory, firestoreDocumentLoader, firestoreDocumentSnapshotPairsLoader, firestoreDocumentSnapshotPairsLoaderInstance, firestoreDummyKey, firestoreEncodedArray, firestoreEncodedObjectMap, firestoreEnum, firestoreEnumArray, firestoreField, firestoreFieldConfigToModelMapFunctionsRef, firestoreFixedItemPageIteration, firestoreFixedItemPageIterationFactory, firestoreIdBatchVerifierFactory, firestoreIdentityTypeArray, firestoreIdentityTypeArrayName, firestoreItemPageIteration, firestoreItemPageIterationFactory, firestoreLatLngString, firestoreMap, firestoreMapZoomLevel, firestoreModelId, firestoreModelIdArrayField, firestoreModelIdFromDocument, firestoreModelIdFromEmail, firestoreModelIdGrantedRoleArrayMap, firestoreModelIdGrantedRoleMap, firestoreModelIdOrKeyType, firestoreModelIdString, firestoreModelIdType, firestoreModelIdentity, firestoreModelIdentityTypeMap, firestoreModelIdsFromDocuments, firestoreModelIdsFromKey, firestoreModelKey, firestoreModelKeyArrayField, firestoreModelKeyCollectionName, firestoreModelKeyCollectionType, firestoreModelKeyCollectionTypeArray, firestoreModelKeyCollectionTypeArrayName, firestoreModelKeyCollectionTypePair, firestoreModelKeyEncodedGrantedRoleMap, firestoreModelKeyFactory, firestoreModelKeyFromDocument, firestoreModelKeyGrantedRoleArrayMap, firestoreModelKeyGrantedRoleMap, firestoreModelKeyPairObject, firestoreModelKeyParentKey, firestoreModelKeyParentKeyPartPairs, firestoreModelKeyPart, firestoreModelKeyPartPairs, firestoreModelKeyPartPairsKeyPath, firestoreModelKeyPartPairsPaths, firestoreModelKeyPath, firestoreModelKeyString, firestoreModelKeyType, firestoreModelKeyTypePair, firestoreModelKeys, firestoreModelKeysFromDocuments, firestoreModelType, firestoreNotificationBoxRecipient, firestoreNotificationBoxRecipientTemplateConfigRecord, firestoreNotificationDeliveryHealthCheckResult, firestoreNotificationHealthCheck, firestoreNotificationHealthCheckIssue, firestoreNotificationHealthCheckProbe, firestoreNotificationItem, firestoreNotificationRecipientWithConfig, firestoreNotificationUserDefaultNotificationBoxRecipientConfig, firestoreNotificationUserNotificationBoxRecipientConfig, firestoreNumber, firestoreObjectArray, firestoreObjectMap, firestorePassThroughField, firestoreQueryConstraint, firestoreQueryConstraintFactory, firestoreQueryDocumentSnapshotPairsLoader, firestoreQueryFactory, firestoreSingleDocumentAccessor, firestoreString, firestoreSubObject, firestoreTimezoneString, firestoreUID, firestoreUniqueArray, firestoreUniqueKeyedArray, firestoreUniqueNumberArray, firestoreUniqueStringArray, firestoreUnitedStatesAddress, firestoreUnitedStatesAddressAssignFn, firestoreUnixDateTimeSecondsNumber, firestoreUpdateWithNoDataError, firestoreWebsiteFileLink, firestoreWebsiteFileLinkAssignFn, firestoreWebsiteFileLinkEncodedArray, firestoreWebsiteFileLinkObjectArray, firestoreWebsiteLink, firestoreWebsiteLinkArray, firestoreWebsiteLinkAssignFn, flagStaleCalendarsForSyncParamsType, flatFirestoreModelKey, formSpaceCollectionReference, formSpaceConverter, formSpaceFileSlotConfig, formSpaceFileSlotName, formSpaceFileStoragePath, formSpaceFileSubObject, formSpaceFileUploaderId, formSpaceFilesInSlot, formSpaceFirestoreCollection, formSpaceFunctionMap, formSpaceIdForModel, formSpaceIdentity, formSpaceKeyForStorageFile, formSpaceSlotFileAccess, formSpaceSlotMaxFiles, formSpaceSlotMinFiles, formSpaceSlotStatus, formSpaceStorageFileGroupId, formSpaceSubmissionNotificationTaskTemplate, formSpaceSubmissionNotificationTaskUniqueId, formSpaceSubmitBlockers, formSpaceTemplate, formSpaceTypeConfigRecord, formSpaceUploadFileNameDetails, formSpaceUploadsFilePath, formSpaceUploadsFolderPath, formSpacesDueForExpirationQuery, formSpacesForOwnerQuery, formSpacesQueuedForProcessingQuery, getDataFromDocumentSnapshots, getDocumentSnapshotData, getDocumentSnapshotDataPair, getDocumentSnapshotDataPairs, getDocumentSnapshotDataPairsWithData, getDocumentSnapshotDataTuples, getDocumentSnapshotPair, getDocumentSnapshotPairs, getDocumentSnapshots, getDocumentSnapshotsData, grantFormSpaceRolesForUserAuthFunction, grantFullAccessIfAdmin, grantFullAccessIfAuthUserRelated, grantModelRolesIfAdmin, grantModelRolesIfAdminFunction, grantModelRolesIfAuthUserRelatedModelFunction, grantModelRolesIfFunction, grantModelRolesIfHasAuthRolesFactory, grantModelRolesIfHasAuthRolesFunction, grantModelRolesOnlyIfFunction, grantStorageFileRolesForUserAuthFunction, hasRunInCurrentHour, inContextFirebaseModelServiceFactory, inContextFirebaseModelsServiceFactory, inMemoryFirestoreCollectionCacheDelegate, inMemoryFirestoreContextCache, inMemoryFirestoreContextCacheFactory, incrementUpdateWithAccessorFunction, inferCalendarRelatedModelKey, inferKeyFromTwoWayFlatFirestoreModelKey, inferNotificationBoxRelatedModelKey, inferStorageFileGroupRelatedModelKey, inferredTargetModelIdParamsType, inferredTargetModelParamsType, initializeAllApplicableNotificationBoxesParamsType, initializeAllApplicableNotificationSummariesParamsType, initializeAllApplicableStorageFileGroupsParamsType, initializeAllStorageFilesFromUploadsParamsType, initializeNotificationModelParamsType, initializeStorageFileFromUploadParamsType, initializeStorageFileModelParamsType, interceptAccessorFactoryFunction, isAdminInFirebaseModelContext, isCalendarIcsRotateThrottled, isClientFirebaseError, isCompleteNotificationSendState, isFirebaseStorageObjectNotFoundError, isFirestoreModelId, isFirestoreModelIdOrKey, isFirestoreModelKey, isFormSpaceEditable, isFormSpaceFileAccessibleByUser, isFormSpaceFileAccessibleWithAccess, isFormSpaceFullyLocked, isFormSpaceReopenable, isFormSpaceStorageFileAccessibleByUser, isLoggedEventNotification, isNthHourOfDay, isOwnerOfUserRelatedModelInFirebaseModelContext, isPendingNotificationHealthCheckProbe, isProblemNotificationHealthCheckStatus, iterateFirestoreDocumentSnapshotBatches, iterateFirestoreDocumentSnapshotCheckpoints, iterateFirestoreDocumentSnapshotPairBatches, iterateFirestoreDocumentSnapshotPairs, iterateFirestoreDocumentSnapshots, iterateStorageListFiles, iterateStorageListFilesByEachFile, iterateStorageListFilesFactory, iterationQueryDocChangeWatcher, iterationQueryDocChangeWatcherChangeTypeForGroup, latestSnapshotsFromDocuments, lazyFirebaseFunctionsFactory, limit, limitToLast, limitUploadFileTypeDeterminer, limitedFirestoreDocumentAccessorFactory, limitedFirestoreDocumentAccessorSnapshotCache, loadAllFirestoreDocumentSnapshot, loadAllFirestoreDocumentSnapshotPairs, loadDocumentsForDocumentReferences, loadDocumentsForDocumentReferencesFromValues, loadDocumentsForIds, loadDocumentsForIdsFromValues, loadDocumentsForKeys, loadDocumentsForKeysFromValues, loadDocumentsForSnapshots, loadDocumentsForValues, loadNotificationBoxDocumentForReferencePair, loadSchedulerSystemState, loadStorageFileGroupDocumentForReferencePair, lockFormSpaceParamsType, lockFormSpaceTemplate, makeDocuments, makeFirestoreCollection, makeFirestoreCollectionGroup, makeFirestoreCollectionWithParent, makeFirestoreContextCache, makeFirestoreItemPageIteratorDelegate, makeFirestoreQueryConstraintFunctionsDriver, makePagedItemFirestoreCollection, makeRootSingleItemFirestoreCollection, makeSingleItemFirestoreCollection, mapDataFromSnapshot, mapHttpsCallable, mapLatestSnapshotsFromDocuments, markCalendarForSyncTemplate, mergeNotificationBoxRecipientTemplateConfigRecords, mergeNotificationBoxRecipientTemplateConfigs, mergeNotificationBoxRecipients, mergeNotificationSendMessagesResult, mergeNotificationUserDefaultNotificationBoxRecipientConfig, mergeNotificationUserNotificationBoxRecipientConfigs, modelStorageSlashPathFactory, modifyBeforeSetInterceptAccessorFactoryFunction, newDocuments, newNotificationBoxRecipientForUid, noContentNotificationMessageFunctionFactory, noStringFormatInStorageUploadOptionsError, noopFirestoreCollectionCache, noopFirestoreCollectionCacheDelegate, noopFirestoreCollectionDocumentCache, noopFirestoreContextCache, notificationBoxCollectionReference, notificationBoxConverter, notificationBoxFirestoreCollection, notificationBoxIdForModel, notificationBoxIdentity, notificationBoxRecipientTemplateConfigArrayEntryParamType, notificationBoxRecipientTemplateConfigArrayToRecord, notificationBoxRecipientTemplateConfigRecordToArray, notificationBoxesFlaggedForNeedsInitializationQuery, notificationBoxesFlaggedInvalidQuery, notificationCollectionReference, notificationCollectionReferenceFactory, notificationConverter, notificationDeliveryHealthCheckResultForMethod, notificationFirestoreCollectionFactory, notificationFirestoreCollectionGroup, notificationFunctionMap, notificationHealthCheckIssue, notificationHealthCheckPendingProbeMethods, notificationIdentity, notificationLoggedEventDayCollectionReference, notificationLoggedEventDayCollectionReferenceFactory, notificationLoggedEventDayConverter, notificationLoggedEventDayFirestoreCollectionFactory, notificationLoggedEventDayFirestoreCollectionGroup, notificationLoggedEventDayId, notificationLoggedEventDayIdentity, notificationLoggedEventDayPageCollectionReference, notificationLoggedEventDayPageFirestoreCollectionGroup, notificationLoggedEventDayPageIdentity, notificationLoggedEventDayPagedItemsCollectionFactory, notificationLoggedEventDayPagedItemsCollectionReferenceFactory, notificationLoggedEventDaysOlderThanQuery, notificationLoggedEventLoader, notificationMessageFunction, notificationRecipientParamsType, notificationSendExclusionCanSendFunction, notificationSendFlagsImplyIsComplete, notificationSubtaskComplete, notificationSummariesFlaggedForNeedsInitializationQuery, notificationSummaryCollectionReference, notificationSummaryConverter, notificationSummaryFirestoreCollection, notificationSummaryIdForModel, notificationSummaryIdForUidFunctionForRootFirestoreModelIdentity, notificationSummaryIdentity, notificationTaskCanRunNextCheckpoint, notificationTaskComplete, notificationTaskDelayRetry, notificationTaskFailed, notificationTaskPartiallyComplete, notificationTaskUniqueId, notificationTemplateTypeInfoRecord, notificationUserCollectionReference, notificationUserConverter, notificationUserFirestoreCollection, notificationUserHasExclusionQuery, notificationUserHealthCheckNextProbeAt, notificationUserHealthCheckNextProbeAtByMethod, notificationUserHealthCheckNextRunAt, notificationUserHealthCheckNextVerifyAt, notificationUserHealthCheckParamsType, notificationUserIdentity, notificationUsersFlaggedForNeedsSyncQuery, notificationWeekCollectionReference, notificationWeekCollectionReferenceFactory, notificationWeekConverter, notificationWeekFirestoreCollectionFactory, notificationWeekFirestoreCollectionGroup, notificationWeekIdentity, notificationsPastSendAtTimeQuery, notificationsReadyForCleanupQuery, nthHourOfDayIndex, offset, oidcClientEntriesByOwnerQuery, oidcEntriesByClientIdQuery, oidcEntriesByGrantIdQuery, oidcEntriesByUidQuery, oidcEntriesByUserCodeQuery, oidcEntriesWithTypeQuery, oidcEntryCollectionReference, oidcEntryConverter, oidcEntryFirestoreCollection, oidcEntryIdentity, oidcGrantEntriesByUidQuery, oidcModelFunctionMap, oidcProviderProfileDetails, oidcProviderProfilesForClient, oidcProviderProfilesForKeys, oidcScopeTermSatisfied, oidcScopeTermsSatisfied, oidcScopesFromScopeClaim, onCallCreateModelParams, onCallCreateModelResult, onCallCreateModelResultWithDocs, onCallDeleteModelParams, onCallDevelopmentParams, onCallInvokeModelParams, onCallQueryModelParams, onCallReadModelParams, onCallTypedModelParamsFunction, onCallUpdateModelParams, optionalFirestoreArray, optionalFirestoreBoolean, optionalFirestoreDate, optionalFirestoreDateNumber, optionalFirestoreEnum, optionalFirestoreField, optionalFirestoreNotificationHealthCheck, optionalFirestoreNumber, optionalFirestorePassthroughJsonField, optionalFirestoreString, optionalFirestoreUID, optionalFirestoreUnitedStatesAddress, optionalFirestoreUnixDateTimeSecondsNumber, orderBy, orderByDocumentId, parseFormSpaceUploadPath, processAllQueuedFormSpacesParamsType, processAllQueuedStorageFilesParamsType, processStorageFileParamsType, pruneCalendarEvents, readFirestoreModelKey, readFirestoreModelKeyFromDocumentSnapshot, readLoggingFirestoreContextCache, readLoggingFirestoreContextCacheFactory, readMultipleStorageFilesMetadataFileParamsType, readMultipleStorageFilesMetadataParamsType, readStorageFileMetadataParamsType, readUserExternalConnectionAuthorizeStateParamsType, regenerateAllFlaggedStorageFileGroupsContentParamsType, regenerateStorageFileGroupContentParamsType, removeCalendarEventItems, removeFormSpaceFileParamsType, reopenFormSpaceParamsType, reopenFormSpaceTemplate, replaceCalendarEventItemsForModelKey, replaceConstraints, requiredFormSpaceFileSlots, requiredScopesForOidcProviderProfiles, resolveEffectiveOidcScopeTerms, resolveFormSpaceExpiresAt, resolveFormSpaceLocksAt, resolveOidcModelScopeRequirement, resyncAllNotificationUserParamsType, targetModelParamsType as resyncNotificationUserParamsType, rollupNotificationDeliveryHealthCheckResultStatus, rollupNotificationHealthCheckResultStatus, rollupNotificationHealthCheckStatus, rotateCalendarIcsParamsType, targetModelParamsType as rotateOidcClientSecretParamsType, scheduledFunctionDevelopmentFirebaseFunctionParamsType, schedulerSystemDataConverter, schedulerSystemStateRead, scopesForOidcProviderProfiles, selectFromFirebaseModelsService, sendNotificationParamsType, sendQueuedNotificationsParamsType, separateConstraints, setIdAndKeyFromKeyIdRefOnDocumentData, setIdAndKeyFromSnapshotOnDocumentData, shouldSaveNotificationToNotificationWeek, shouldSendCreatedNotificationInput, snapshotConverterFunctions, snapshotStreamDataForAccessor, snapshotStreamForAccessor, sortNotificationItemsFunction, startAfter, startAt, startAtValue, storageFileCollectionReference, storageFileConverter, storageFileDisplayFileName, storageFileFirestoreCollection, storageFileFlaggedForSyncWithGroupsQuery, storageFileFunctionMap, storageFileGroupCollectionReference, storageFileGroupConverter, storageFileGroupCreateStorageFileKeyFactory, storageFileGroupCreatedStorageFileKey, storageFileGroupEmbeddedFile, storageFileGroupFirestoreCollection, storageFileGroupFolderPath, storageFileGroupIdForModel, storageFileGroupIdentity, storageFileGroupZipFileStoragePath, storageFileGroupZipStorageFileKey, storageFileGroupsFlaggedForContentRegenerationQuery, storageFileGroupsFlaggedForNeedsInitializationQuery, storageFileGroupsFlaggedInvalidQuery, storageFileIdentity, storageFileProcessingNotificationTaskTemplate, storageFilePurposeAndUserQuery, storageFileUploadScopeType, storageFilesForFormSpaceQuery, storageFilesQueuedForDeleteQuery, storageFilesQueuedForProcessingQuery, storageListFilesResultFactory, storageListFilesResultHasNoNextError, storagePathFactory, storagePublicDownloadUrl, storedFileReaderFactory, streamDocumentSnapshotDataPairs, streamDocumentSnapshotDataPairsWithData, streamDocumentSnapshotsData, streamFromOnSnapshot, submitFormSpaceParamsType, submitFormSpaceTemplate, syncAllFlaggedCalendarsParamsType, syncAllFlaggedStorageFilesWithGroupsParamsType, syncCalendarParamsType, syncStorageFileWithGroupsParamsType, systemStateCollectionReference, systemStateConverter, systemStateFirestoreCollection, systemStateIdentity, systemStateStoredDataConverterFactory, targetModelIdParamsType, targetModelParamsType, twoWayFlatFirestoreModelKey, unlinkUserExternalConnectionLoginParamsType, unreadNotificationItems, unsupportedFirestoreDriverFunctionError, untrackableNotificationHealthCheckProbe, updateCalendarEventsTemplate, updateFormSpaceParamsType, targetModelParamsType as updateNotificationBoxParamsType, updateNotificationBoxRecipientLikeParamsType, updateNotificationBoxRecipientParamsType, updateNotificationBoxRecipientTemplateConfigRecord, updateNotificationRecipient, updateNotificationSummaryParamsType, updateNotificationUserDefaultNotificationBoxRecipientConfig, updateNotificationUserDefaultNotificationBoxRecipientConfigParamsType, updateNotificationUserNotificationBoxRecipientConfigIfChanged, updateNotificationUserNotificationBoxRecipientConfigs, updateNotificationUserNotificationBoxRecipientParamsType, updateNotificationUserNotificationSendExclusions, updateNotificationUserParamsType, updateOidcClientFieldParamsType, updateOidcClientParamsType, updateStorageFileGroupEntryParamsType, updateStorageFileGroupParamsType, updateStorageFileParamsType, updateWithAccessorUpdateAndConverterFunction, uploadFileWithStream, upsertCalendarEventItems, useContextAuth, useContextAuthUid, useDocumentSnapshot, useDocumentSnapshotData, useFirebaseModelsService, userExternalConnectionAccessorFactory, userExternalConnectionCollectionReference, userExternalConnectionConnectedProviderTypes, userExternalConnectionConverter, userExternalConnectionEntryFields, userExternalConnectionEntryForOutcome, userExternalConnectionEntryForProvider, userExternalConnectionEntryIsConnected, userExternalConnectionEntryIsExpired, userExternalConnectionExternalAccountKey, userExternalConnectionExternalAccountKeys, userExternalConnectionFirestoreCollection, userExternalConnectionFunctionMap, userExternalConnectionIdentity, userExternalConnectionIsConnectedToProvider, userExternalConnectionLinkedLoginProviderTypes, userExternalConnectionLoginFields, userExternalConnectionLoginForIdentity, userExternalConnectionLoginForProvider, userExternalConnectionValue, userExternalConnectionsWithConnectedProviderQuery, userExternalConnectionsWithExternalAccountQuery, userUploadsFolderSlashPathFactory, userUploadsFolderStoragePathFactory, where, whereDateIsAfter, whereDateIsAfterWithSort, whereDateIsBefore, whereDateIsBeforeWithSort, whereDateIsBetween, whereDateIsInRange, whereDateIsOnOrAfter, whereDateIsOnOrAfterWithSort, whereDateIsOnOrBefore, whereDateIsOnOrBeforeWithSort, whereDocumentId, whereStringHasRootIdentityModelKey, whereStringValueHasPrefix };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase",
|
|
3
|
-
"version": "14.
|
|
3
|
+
"version": "14.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"exports": {
|
|
@@ -22,10 +22,10 @@
|
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
25
|
-
"@dereekb/date": "14.
|
|
26
|
-
"@dereekb/model": "14.
|
|
27
|
-
"@dereekb/rxjs": "14.
|
|
28
|
-
"@dereekb/util": "14.
|
|
25
|
+
"@dereekb/date": "14.1.0",
|
|
26
|
+
"@dereekb/model": "14.1.0",
|
|
27
|
+
"@dereekb/rxjs": "14.1.0",
|
|
28
|
+
"@dereekb/util": "14.1.0",
|
|
29
29
|
"@firebase/rules-unit-testing": "5.0.2",
|
|
30
30
|
"@marcbachmann/cel-js": "^8.0.0",
|
|
31
31
|
"@typescript-eslint/parser": "8.69.0",
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type Type } from 'arktype';
|
|
2
|
+
import { type Maybe } from '@dereekb/util';
|
|
2
3
|
import { type InferredTargetModelParams } from '../../common/model/model/model.param';
|
|
3
4
|
import { type FirebaseFunctionTypeConfigMap, type ModelFirebaseCreateFunction, type ModelFirebaseCrudFunction, type ModelFirebaseCrudFunctionConfigMap, type ModelFirebaseFunctionMap } from '../../client';
|
|
4
5
|
import { type UserExternalConnectionTypes } from './userexternalconnection';
|
|
@@ -41,8 +42,38 @@ export interface ReadUserExternalConnectionAuthorizeStateParams extends Inferred
|
|
|
41
42
|
* The provider type to begin connecting to.
|
|
42
43
|
*/
|
|
43
44
|
readonly providerType: UserExternalConnectionProviderType;
|
|
45
|
+
/**
|
|
46
|
+
* Which handoff the state begins. Defaults to `connect`.
|
|
47
|
+
*
|
|
48
|
+
* - `connect` — attach the provider as a DATA connection, with the data scopes.
|
|
49
|
+
* - `link` — make the provider a LOGIN METHOD for the already-signed-in caller, with the sign-in
|
|
50
|
+
* scopes. A separate round trip because the two scope sets are not guaranteed to be the same,
|
|
51
|
+
* so a data grant cannot be assumed to cover an identity read.
|
|
52
|
+
*
|
|
53
|
+
* Absent means `connect`, so a client minting a state before `link` existed still gets one.
|
|
54
|
+
*/
|
|
55
|
+
readonly mode?: Maybe<'connect' | 'link'>;
|
|
44
56
|
}
|
|
45
57
|
export declare const readUserExternalConnectionAuthorizeStateParamsType: Type<ReadUserExternalConnectionAuthorizeStateParams>;
|
|
58
|
+
/**
|
|
59
|
+
* Parameters for removing a provider as a LOGIN METHOD for the current user.
|
|
60
|
+
*
|
|
61
|
+
* Distinct from {@link DisconnectUserExternalConnectionParams}, and strictly larger: a disconnect
|
|
62
|
+
* drops the data connection and leaves the login link in place, whereas an unlink removes the login
|
|
63
|
+
* link AND the data connection and its credentials. "Stop using my Discord token" and "Discord is no
|
|
64
|
+
* longer how I log in" are different requests, so they are different calls.
|
|
65
|
+
*
|
|
66
|
+
* If no target model is provided, the current user's connection document is assumed.
|
|
67
|
+
*
|
|
68
|
+
* @dbxModelApiParams
|
|
69
|
+
*/
|
|
70
|
+
export interface UnlinkUserExternalConnectionLoginParams extends InferredTargetModelParams {
|
|
71
|
+
/**
|
|
72
|
+
* The provider type to unlink.
|
|
73
|
+
*/
|
|
74
|
+
readonly providerType: UserExternalConnectionProviderType;
|
|
75
|
+
}
|
|
76
|
+
export declare const unlinkUserExternalConnectionLoginParamsType: Type<UnlinkUserExternalConnectionLoginParams>;
|
|
46
77
|
/**
|
|
47
78
|
* The opaque, short-lived `state` to carry through a provider's OAuth handoff.
|
|
48
79
|
*
|
|
@@ -91,9 +122,17 @@ export type UserExternalConnectionModelCrudFunctionsConfig = {
|
|
|
91
122
|
* Disconnects the current user from the given provider.
|
|
92
123
|
*
|
|
93
124
|
* Removes the provider's credentials and its entry in one transaction, and recomputes the
|
|
94
|
-
* connected-provider array from the result.
|
|
125
|
+
* connected-provider array from the result. The provider's LOGIN LINK is retained — a data
|
|
126
|
+
* connection ending says nothing about whether the provider is still a way to sign in.
|
|
95
127
|
*/
|
|
96
128
|
disconnect: DisconnectUserExternalConnectionParams;
|
|
129
|
+
/**
|
|
130
|
+
* Removes the given provider as a login method for the current user.
|
|
131
|
+
*
|
|
132
|
+
* Removes the login link, the entry, and the credentials in one transaction. Refused when it
|
|
133
|
+
* would leave the account with no way to sign back in.
|
|
134
|
+
*/
|
|
135
|
+
unlink: UnlinkUserExternalConnectionLoginParams;
|
|
97
136
|
};
|
|
98
137
|
};
|
|
99
138
|
};
|
|
@@ -111,6 +150,7 @@ export declare abstract class UserExternalConnectionFunctions implements ModelFi
|
|
|
111
150
|
};
|
|
112
151
|
updateUserExternalConnection: {
|
|
113
152
|
disconnect: ModelFirebaseCrudFunction<DisconnectUserExternalConnectionParams>;
|
|
153
|
+
unlink: ModelFirebaseCrudFunction<UnlinkUserExternalConnectionLoginParams>;
|
|
114
154
|
};
|
|
115
155
|
};
|
|
116
156
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { type Maybe } from '@dereekb/util';
|
|
1
|
+
import { type EmailAddress, type Maybe } from '@dereekb/util';
|
|
2
2
|
import { type GrantedReadRole, type GrantedUpdateRole } from '@dereekb/model';
|
|
3
3
|
import { AbstractFirestoreDocument, type CollectionReference, type FirestoreCollection, type FirestoreContext } from '../../common';
|
|
4
4
|
import { type UserRelated, type UserRelatedById } from '../user';
|
|
5
|
-
import { type UserExternalConnectionCapability, type UserExternalConnectionExternalAccountId, type UserExternalConnectionProviderType } from './userexternalconnection.id';
|
|
5
|
+
import { type UserExternalConnectionCapability, type UserExternalConnectionExternalAccountId, type UserExternalConnectionExternalAccountKey, type UserExternalConnectionProviderType } from './userexternalconnection.id';
|
|
6
6
|
/**
|
|
7
7
|
* Provides access to the {@link UserExternalConnection} collection.
|
|
8
8
|
*
|
|
@@ -99,6 +99,69 @@ export interface UserExternalConnectionEntry {
|
|
|
99
99
|
* Map of provider type to the user's connection state for that provider.
|
|
100
100
|
*/
|
|
101
101
|
export type UserExternalConnectionEntryMap = Record<UserExternalConnectionProviderType, UserExternalConnectionEntry>;
|
|
102
|
+
/**
|
|
103
|
+
* A provider that is a LOGIN METHOD for this account.
|
|
104
|
+
*
|
|
105
|
+
* Separate from {@link UserExternalConnectionEntry} rather than a flag on it, because the two describe
|
|
106
|
+
* different kinds of fact and have different lifecycles. Every field on an entry is DERIVED from the
|
|
107
|
+
* credentials stored beside it — take the credentials away and the entry has nothing left to say — so
|
|
108
|
+
* an entry is a statement about a grant. A login link is a statement about the ACCOUNT: "this Discord
|
|
109
|
+
* user is how this person signs in". It survives the credentials expiring, being revoked by the
|
|
110
|
+
* provider, and the user disconnecting the data connection, and it is removed only by an explicit
|
|
111
|
+
* unlink.
|
|
112
|
+
*
|
|
113
|
+
* Folding it into the entry would mean a disconnect had to choose between destroying the sign-in
|
|
114
|
+
* binding and retaining a `disconnected` entry that lies about the credentials. Two maps make the
|
|
115
|
+
* choice unnecessary.
|
|
116
|
+
*
|
|
117
|
+
* Written ONLY by an identity-scoped OAuth round trip (the sign-in or `link` direction), never by the
|
|
118
|
+
* data connect flow: the scopes a data connection is granted are not guaranteed to cover what an
|
|
119
|
+
* identity read needs.
|
|
120
|
+
*
|
|
121
|
+
* @dbxModelSubObject
|
|
122
|
+
*/
|
|
123
|
+
export interface UserExternalConnectionLogin {
|
|
124
|
+
/**
|
|
125
|
+
* Identifier of the linked account within the provider. REQUIRED: this IS the identity.
|
|
126
|
+
*
|
|
127
|
+
* @dbxModelVariable externalAccountId
|
|
128
|
+
*/
|
|
129
|
+
ea: UserExternalConnectionExternalAccountId;
|
|
130
|
+
/**
|
|
131
|
+
* Human-readable label for the linked account (e.g. the provider-side username).
|
|
132
|
+
*
|
|
133
|
+
* @dbxModelVariable label
|
|
134
|
+
*/
|
|
135
|
+
l?: Maybe<string>;
|
|
136
|
+
/**
|
|
137
|
+
* The email the provider reported at link time, when it reported one.
|
|
138
|
+
*
|
|
139
|
+
* @dbxModelVariable email
|
|
140
|
+
*/
|
|
141
|
+
em?: Maybe<EmailAddress>;
|
|
142
|
+
/**
|
|
143
|
+
* Whether the PROVIDER considered that email verified at link time.
|
|
144
|
+
*
|
|
145
|
+
* @dbxModelVariable emailVerified
|
|
146
|
+
*/
|
|
147
|
+
emv?: Maybe<boolean>;
|
|
148
|
+
/**
|
|
149
|
+
* Date the provider was FIRST linked. Preserved across relinks.
|
|
150
|
+
*
|
|
151
|
+
* @dbxModelVariable linkedAt
|
|
152
|
+
*/
|
|
153
|
+
lat: Date;
|
|
154
|
+
/**
|
|
155
|
+
* Date this link was last updated at.
|
|
156
|
+
*
|
|
157
|
+
* @dbxModelVariable updatedAt
|
|
158
|
+
*/
|
|
159
|
+
uat: Date;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Map of provider type to the login link the user holds for that provider.
|
|
163
|
+
*/
|
|
164
|
+
export type UserExternalConnectionLoginMap = Record<UserExternalConnectionProviderType, UserExternalConnectionLogin>;
|
|
102
165
|
/**
|
|
103
166
|
* The client-readable half of a user's third-party OAuth connection state.
|
|
104
167
|
*
|
|
@@ -136,6 +199,37 @@ export interface UserExternalConnection extends UserRelated, UserRelatedById {
|
|
|
136
199
|
* @dbxModelVariable connectedProviderTypes
|
|
137
200
|
*/
|
|
138
201
|
c: UserExternalConnectionProviderType[];
|
|
202
|
+
/**
|
|
203
|
+
* Per-provider LOGIN LINKS, keyed by provider type.
|
|
204
|
+
*
|
|
205
|
+
* A provider present here is a way this account signs in. Independent of `e`: a provider can be
|
|
206
|
+
* linked without a data connection (the sign-in wrote the link and the app did not opt into
|
|
207
|
+
* `signInConnects`), connected without being linked (a connect-only provider), or both.
|
|
208
|
+
*
|
|
209
|
+
* @dbxModelVariable logins
|
|
210
|
+
*/
|
|
211
|
+
li: UserExternalConnectionLoginMap;
|
|
212
|
+
/**
|
|
213
|
+
* DERIVED from `e` UNION `li`: the `<providerType>:<externalAccountId>` key of every entry that
|
|
214
|
+
* names an external account, plus every login link's.
|
|
215
|
+
*
|
|
216
|
+
* The `c` array's sibling, and it exists for the same reason: Firestore cannot query across map
|
|
217
|
+
* keys, so `e.<provider>.ea` is unreachable. `c` answers "who is connected to X?"; this answers
|
|
218
|
+
* "who IS X?" — the lookup a sign-in performs to resolve a third-party identity to a Firebase uid.
|
|
219
|
+
*
|
|
220
|
+
* Both maps contribute because either one alone loses the answer. Sourcing it from `e` only meant
|
|
221
|
+
* disconnecting a data connection silently destroyed the sign-in binding and the next sign-in minted
|
|
222
|
+
* a second Firebase user; sourcing it from `li` only would lose a connect-established account that
|
|
223
|
+
* was never a login method.
|
|
224
|
+
*
|
|
225
|
+
* Unlike `c`, membership is NOT filtered by status. Which Discord account a user is is a fact
|
|
226
|
+
* about their identity, not about whether their credentials currently work: a returning user whose
|
|
227
|
+
* token expired (`error`) must still resolve to the same uid, or a sign-in would mint them a
|
|
228
|
+
* second account. Recomputed on every write and never passed in by a caller.
|
|
229
|
+
*
|
|
230
|
+
* @dbxModelVariable externalAccountKeys
|
|
231
|
+
*/
|
|
232
|
+
ec?: Maybe<UserExternalConnectionExternalAccountKey[]>;
|
|
139
233
|
/**
|
|
140
234
|
* Date this document was last updated at.
|
|
141
235
|
*
|
|
@@ -147,12 +241,17 @@ export interface UserExternalConnection extends UserRelated, UserRelatedById {
|
|
|
147
241
|
* Roles for a UserExternalConnection. Users can read their own connection state; all writes go
|
|
148
242
|
* through the server.
|
|
149
243
|
*
|
|
150
|
-
* `connect` and `
|
|
151
|
-
* operations a client can reach, so an app can withhold
|
|
244
|
+
* `connect`, `disconnect` and `unlink` are called out separately from `update` because they are the
|
|
245
|
+
* only operations a client can reach, so an app can withhold any one of them (a user allowed to drop a
|
|
152
246
|
* connection but not to add another, or the reverse) without also withholding the server-driven
|
|
153
247
|
* writes that share `update`.
|
|
248
|
+
*
|
|
249
|
+
* `unlink` is distinct from `disconnect` because they remove different things: a disconnect drops the
|
|
250
|
+
* data connection and keeps the login link, an unlink removes the login link AND everything the
|
|
251
|
+
* disconnect would have. Removing a way to sign in is the more consequential of the two, so an app can
|
|
252
|
+
* grant one without the other.
|
|
154
253
|
*/
|
|
155
|
-
export type UserExternalConnectionRoles = GrantedReadRole | GrantedUpdateRole | 'connect' | 'disconnect';
|
|
254
|
+
export type UserExternalConnectionRoles = GrantedReadRole | GrantedUpdateRole | 'connect' | 'disconnect' | 'unlink';
|
|
156
255
|
export declare class UserExternalConnectionDocument extends AbstractFirestoreDocument<UserExternalConnection, UserExternalConnectionDocument, typeof userExternalConnectionIdentity> {
|
|
157
256
|
get modelIdentity(): import("../..").RootFirestoreModelIdentity<"userExternalConnection", "uec">;
|
|
158
257
|
}
|
|
@@ -169,6 +268,17 @@ export declare const userExternalConnectionEntryFields: {
|
|
|
169
268
|
uat: import("../..").FirestoreModelFieldMapFunctionsConfig<Date, string>;
|
|
170
269
|
er: import("../..").FirestoreModelFieldMapFunctionsConfig<Maybe<UserExternalConnectionErrorCode>, Maybe<UserExternalConnectionErrorCode>>;
|
|
171
270
|
};
|
|
271
|
+
/**
|
|
272
|
+
* Field conversions for a {@link UserExternalConnectionLogin}.
|
|
273
|
+
*/
|
|
274
|
+
export declare const userExternalConnectionLoginFields: {
|
|
275
|
+
ea: import("../..").FirestoreModelFieldMapFunctionsConfig<string, string>;
|
|
276
|
+
l: import("../..").FirestoreModelFieldMapFunctionsConfig<Maybe<string>, Maybe<string>>;
|
|
277
|
+
em: import("../..").FirestoreModelFieldMapFunctionsConfig<Maybe<string>, Maybe<string>>;
|
|
278
|
+
emv: import("../..").FirestoreModelFieldMapFunctionsConfig<Maybe<boolean>, Maybe<boolean>>;
|
|
279
|
+
lat: import("../..").FirestoreModelFieldMapFunctionsConfig<Date, string>;
|
|
280
|
+
uat: import("../..").FirestoreModelFieldMapFunctionsConfig<Date, string>;
|
|
281
|
+
};
|
|
172
282
|
export declare const userExternalConnectionConverter: import("../..").SnapshotConverterFunctions<UserExternalConnection, Partial<import("@dereekb/util").ReplaceType<UserExternalConnection, import("@dereekb/util").MaybeMap<object>, any>>>;
|
|
173
283
|
/**
|
|
174
284
|
* Copies the document id into `uid` on write, so the stored uid can never drift from the document id.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error codes the UserExternalConnection server surfaces.
|
|
3
|
+
*
|
|
4
|
+
* Declared HERE rather than beside the `HttpsError` factories in `@dereekb/firebase-server/model`
|
|
5
|
+
* because both sides need them: the server throws them, and the client branches on them — a login
|
|
6
|
+
* page deciding what to say about a refused sign-in, or a client treating a raced
|
|
7
|
+
* `..._ALREADY_EXISTS` as success. A code the browser cannot import is a code the browser has to
|
|
8
|
+
* hard-code.
|
|
9
|
+
*/
|
|
10
|
+
export declare const USER_EXTERNAL_CONNECTION_PROVIDER_NOT_CONNECTED_ERROR_CODE = "USER_EXTERNAL_CONNECTION_PROVIDER_NOT_CONNECTED";
|
|
11
|
+
export declare const USER_EXTERNAL_CONNECTION_PROVIDER_NOT_ALLOWED_ERROR_CODE = "USER_EXTERNAL_CONNECTION_PROVIDER_NOT_ALLOWED";
|
|
12
|
+
export declare const USER_EXTERNAL_CONNECTION_ALREADY_EXISTS_ERROR_CODE = "USER_EXTERNAL_CONNECTION_ALREADY_EXISTS";
|
|
13
|
+
export declare const USER_EXTERNAL_CONNECTION_CREDENTIALS_EXPIRED_ERROR_CODE = "USER_EXTERNAL_CONNECTION_CREDENTIALS_EXPIRED";
|
|
14
|
+
export declare const USER_EXTERNAL_CONNECTION_EXTERNAL_ACCOUNT_IN_USE_ERROR_CODE = "USER_EXTERNAL_CONNECTION_EXTERNAL_ACCOUNT_IN_USE";
|
|
15
|
+
export declare const USER_EXTERNAL_CONNECTION_SIGN_IN_NOT_ENABLED_ERROR_CODE = "USER_EXTERNAL_CONNECTION_SIGN_IN_NOT_ENABLED";
|
|
16
|
+
export declare const USER_EXTERNAL_CONNECTION_SIGN_IN_DENIED_ERROR_CODE = "USER_EXTERNAL_CONNECTION_SIGN_IN_DENIED";
|
|
17
|
+
export declare const USER_EXTERNAL_CONNECTION_SIGN_IN_EMAIL_CONFLICT_ERROR_CODE = "USER_EXTERNAL_CONNECTION_SIGN_IN_EMAIL_CONFLICT";
|
|
18
|
+
export declare const USER_EXTERNAL_CONNECTION_SIGN_IN_USER_MISSING_ERROR_CODE = "USER_EXTERNAL_CONNECTION_SIGN_IN_USER_MISSING";
|
|
19
|
+
export declare const USER_EXTERNAL_CONNECTION_SIGN_IN_IDENTITY_UNAVAILABLE_ERROR_CODE = "USER_EXTERNAL_CONNECTION_SIGN_IN_IDENTITY_UNAVAILABLE";
|
|
20
|
+
/**
|
|
21
|
+
* Refuses an unlink that would leave the account with no way back in.
|
|
22
|
+
*/
|
|
23
|
+
export declare const USER_EXTERNAL_CONNECTION_UNLINK_LAST_LOGIN_METHOD_ERROR_CODE = "USER_EXTERNAL_CONNECTION_UNLINK_LAST_LOGIN_METHOD";
|
|
24
|
+
/**
|
|
25
|
+
* Refuses a `link` round trip for a provider the app has not enabled for sign-in.
|
|
26
|
+
*
|
|
27
|
+
* Distinct from `..._SIGN_IN_NOT_ENABLED`: nothing is signing in — an already-authenticated user asked
|
|
28
|
+
* to make the provider a login method, and the same `policy.signIn` opt-in governs both.
|
|
29
|
+
*/
|
|
30
|
+
export declare const USER_EXTERNAL_CONNECTION_LINK_NOT_ENABLED_ERROR_CODE = "USER_EXTERNAL_CONNECTION_LINK_NOT_ENABLED";
|
|
31
|
+
/**
|
|
32
|
+
* The only error codes a failed SIGN-IN reports back to the browser.
|
|
33
|
+
*
|
|
34
|
+
* An ALLOWLIST rather than a filter: a failed sign-in redirects to a URL the user can read, so
|
|
35
|
+
* anything that reaches it is public. Passing whatever code an internal failure happened to carry
|
|
36
|
+
* would leak the shape of that failure, and passing a message would leak its text — so a code absent
|
|
37
|
+
* from this set is reported as nothing at all.
|
|
38
|
+
*
|
|
39
|
+
* Shared with the client so a login page's copy map and the server's allowlist cannot drift.
|
|
40
|
+
*/
|
|
41
|
+
export declare const USER_EXTERNAL_CONNECTION_SIGN_IN_REPORTABLE_ERROR_CODES: ReadonlySet<string>;
|
|
@@ -49,3 +49,37 @@ export type UserExternalConnectionCapability = string;
|
|
|
49
49
|
* Identifier for the connected account within the third-party provider.
|
|
50
50
|
*/
|
|
51
51
|
export type UserExternalConnectionExternalAccountId = string;
|
|
52
|
+
/**
|
|
53
|
+
* The delimiter joining a provider type to an external account id in a
|
|
54
|
+
* {@link UserExternalConnectionExternalAccountKey}.
|
|
55
|
+
*
|
|
56
|
+
* A colon is safe on both sides: {@link UserExternalConnectionProviderType} must already be a valid
|
|
57
|
+
* Firestore map key (no dots or slashes), and the key is only ever a stored/queried string VALUE,
|
|
58
|
+
* never a document id or field path.
|
|
59
|
+
*/
|
|
60
|
+
export declare const USER_EXTERNAL_CONNECTION_EXTERNAL_ACCOUNT_KEY_DELIMITER = ":";
|
|
61
|
+
/**
|
|
62
|
+
* A `<providerType>:<externalAccountId>` pair identifying one third-party account globally.
|
|
63
|
+
*
|
|
64
|
+
* The provider type is part of the key because an external account id is only unique WITHIN a
|
|
65
|
+
* provider — a Discord snowflake and a Zoom user id could collide as bare strings.
|
|
66
|
+
*/
|
|
67
|
+
export type UserExternalConnectionExternalAccountKey = string;
|
|
68
|
+
export interface UserExternalConnectionExternalAccountKeyInput {
|
|
69
|
+
readonly providerType: UserExternalConnectionProviderType;
|
|
70
|
+
readonly externalAccountId: UserExternalConnectionExternalAccountId;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Builds the {@link UserExternalConnectionExternalAccountKey} for a provider/account pair.
|
|
74
|
+
*
|
|
75
|
+
* The SOLE producer of the key format: the derivation that stores it and the query that reads it
|
|
76
|
+
* both go through here, so the two can never disagree about the delimiter.
|
|
77
|
+
*
|
|
78
|
+
* @param input - The provider type and external account id to join.
|
|
79
|
+
* @param input.providerType - The provider the account belongs to.
|
|
80
|
+
* @param input.externalAccountId - The provider's stable id for the account.
|
|
81
|
+
* @returns The external account key.
|
|
82
|
+
*
|
|
83
|
+
* @__NO_SIDE_EFFECTS__
|
|
84
|
+
*/
|
|
85
|
+
export declare function userExternalConnectionExternalAccountKey(input: UserExternalConnectionExternalAccountKeyInput): UserExternalConnectionExternalAccountKey;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type FirestoreQueryConstraint } from '../../common';
|
|
2
|
-
import { type UserExternalConnectionProviderType } from './userexternalconnection.id';
|
|
2
|
+
import { type UserExternalConnectionExternalAccountKeyInput, type UserExternalConnectionProviderType } from './userexternalconnection.id';
|
|
3
3
|
/**
|
|
4
4
|
* Query for the UserExternalConnection documents that are currently connected to the given provider.
|
|
5
5
|
*
|
|
@@ -17,3 +17,24 @@ import { type UserExternalConnectionProviderType } from './userexternalconnectio
|
|
|
17
17
|
* @dbxModelFirebaseIndexScope COLLECTION
|
|
18
18
|
*/
|
|
19
19
|
export declare function userExternalConnectionsWithConnectedProviderQuery(providerType: UserExternalConnectionProviderType): FirestoreQueryConstraint[];
|
|
20
|
+
/**
|
|
21
|
+
* Query for the UserExternalConnection document holding the given third-party account.
|
|
22
|
+
*
|
|
23
|
+
* The sign-in counterpart of {@link userExternalConnectionsWithConnectedProviderQuery}: that one
|
|
24
|
+
* asks "which users are connected to this provider?", this one asks "which user IS this account?".
|
|
25
|
+
* Both exist because a per-user document makes `e.<provider>.ea` unqueryable.
|
|
26
|
+
*
|
|
27
|
+
* Matches at ANY entry status — see the `ec` field docs. Expect at most one result when the
|
|
28
|
+
* provider's policy declares the connection unique, but the caller must still handle more than one:
|
|
29
|
+
* uniqueness is enforced at write time and a provider may only have started enforcing it recently.
|
|
30
|
+
*
|
|
31
|
+
* @param input - The provider type and external account id to search for.
|
|
32
|
+
* @param input.providerType - The provider the account belongs to.
|
|
33
|
+
* @param input.externalAccountId - The provider's stable id for the account.
|
|
34
|
+
* @returns Firestore query constraints matching the user holding that external account.
|
|
35
|
+
*
|
|
36
|
+
* @dbxModelFirebaseIndex
|
|
37
|
+
* @dbxModelFirebaseIndexModel UserExternalConnection
|
|
38
|
+
* @dbxModelFirebaseIndexScope COLLECTION
|
|
39
|
+
*/
|
|
40
|
+
export declare function userExternalConnectionsWithExternalAccountQuery(input: UserExternalConnectionExternalAccountKeyInput): FirestoreQueryConstraint[];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { type Maybe } from '@dereekb/util';
|
|
1
|
+
import { type EmailAddress, type Maybe } from '@dereekb/util';
|
|
2
2
|
import { type FirebaseAuthUserId } from '../../common';
|
|
3
|
-
import { type UserExternalConnection, type UserExternalConnectionEntry, type UserExternalConnectionEntryMap, type UserExternalConnectionEntryStatus, type UserExternalConnectionErrorCode } from './userexternalconnection';
|
|
4
|
-
import { type UserExternalConnectionCapability, type UserExternalConnectionExternalAccountId, type UserExternalConnectionProviderType } from './userexternalconnection.id';
|
|
3
|
+
import { type UserExternalConnection, type UserExternalConnectionEntry, type UserExternalConnectionEntryMap, type UserExternalConnectionEntryStatus, type UserExternalConnectionErrorCode, type UserExternalConnectionLogin, type UserExternalConnectionLoginMap } from './userexternalconnection';
|
|
4
|
+
import { type UserExternalConnectionCapability, type UserExternalConnectionExternalAccountId, type UserExternalConnectionExternalAccountKey, type UserExternalConnectionProviderType } from './userexternalconnection.id';
|
|
5
5
|
/**
|
|
6
6
|
* The facts about a granted third-party authorization that a {@link UserExternalConnectionEntry} is
|
|
7
7
|
* allowed to summarize.
|
|
@@ -29,6 +29,36 @@ export interface UserExternalConnectionGrantSummary {
|
|
|
29
29
|
* @returns The connected provider types, sorted for a stable stored value.
|
|
30
30
|
*/
|
|
31
31
|
export declare function userExternalConnectionConnectedProviderTypes(entries: Maybe<UserExternalConnectionEntryMap>): UserExternalConnectionProviderType[];
|
|
32
|
+
/**
|
|
33
|
+
* Input for {@link userExternalConnectionExternalAccountKeys}.
|
|
34
|
+
*
|
|
35
|
+
* BOTH maps, always. Taking them as one object rather than as a positional entry map is deliberate:
|
|
36
|
+
* `ec` is the union of the two, and a signature that made either one omittable would make it possible
|
|
37
|
+
* to recompute the array from half its sources — which silently drops the other half's keys out of the
|
|
38
|
+
* lookup a sign-in performs.
|
|
39
|
+
*/
|
|
40
|
+
export interface UserExternalConnectionExternalAccountKeysInput {
|
|
41
|
+
readonly entries?: Maybe<UserExternalConnectionEntryMap>;
|
|
42
|
+
readonly logins?: Maybe<UserExternalConnectionLoginMap>;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The SOLE producer of a {@link UserExternalConnection}'s `ec` array.
|
|
46
|
+
*
|
|
47
|
+
* Membership is every ENTRY carrying an `ea`, at ANY status, UNION every LOGIN LINK's `ea` —
|
|
48
|
+
* deliberately unlike {@link userExternalConnectionConnectedProviderTypes}, which is `connected`-only.
|
|
49
|
+
* `c` answers "whose credentials can I use?", a question about the credentials; `ec` answers "who IS
|
|
50
|
+
* this account?", a question about identity, which survives an expired token. Filtering it by status
|
|
51
|
+
* would make a returning user with `error` credentials look like a stranger, and a sign-in would
|
|
52
|
+
* mint them a second Firebase user.
|
|
53
|
+
*
|
|
54
|
+
* The union is what makes the two lifecycles independent. Disconnecting a data connection removes its
|
|
55
|
+
* entry, and if `ec` came from `e` alone that would take the sign-in binding with it — the next
|
|
56
|
+
* sign-in would find no match and mint a second Firebase user for the same person.
|
|
57
|
+
*
|
|
58
|
+
* @param input - The entry map and the login map to derive from.
|
|
59
|
+
* @returns The external account keys, deduped and sorted for a stable stored value.
|
|
60
|
+
*/
|
|
61
|
+
export declare function userExternalConnectionExternalAccountKeys(input: UserExternalConnectionExternalAccountKeysInput): UserExternalConnectionExternalAccountKey[];
|
|
32
62
|
/**
|
|
33
63
|
* Input for {@link userExternalConnectionEntryForOutcome}.
|
|
34
64
|
*
|
|
@@ -87,6 +117,29 @@ export interface ApplyUserExternalConnectionEntryInput {
|
|
|
87
117
|
readonly entry: Maybe<UserExternalConnectionEntry>;
|
|
88
118
|
readonly now: Date;
|
|
89
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Input for {@link userExternalConnectionValue}.
|
|
122
|
+
*/
|
|
123
|
+
export interface UserExternalConnectionValueInput {
|
|
124
|
+
readonly uid: FirebaseAuthUserId;
|
|
125
|
+
readonly entries: UserExternalConnectionEntryMap;
|
|
126
|
+
readonly logins: UserExternalConnectionLoginMap;
|
|
127
|
+
readonly now: Date;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Assembles the COMPLETE document value from both maps.
|
|
131
|
+
*
|
|
132
|
+
* Extracted so the two appliers cannot diverge on how the derived arrays are produced: `ec` is the
|
|
133
|
+
* union of `e` and `li`, and either applier computing it from only the map it happened to change
|
|
134
|
+
* would drop the other map's keys out of the sign-in lookup.
|
|
135
|
+
*
|
|
136
|
+
* Exported for the one caller that legitimately replaces a whole map rather than one provider's key —
|
|
137
|
+
* the login backfill. Ordinary writes go through the two appliers.
|
|
138
|
+
*
|
|
139
|
+
* @param input - The uid, both maps, and the instant to stamp.
|
|
140
|
+
* @returns The next UserExternalConnection value to write.
|
|
141
|
+
*/
|
|
142
|
+
export declare function userExternalConnectionValue(input: UserExternalConnectionValueInput): UserExternalConnection;
|
|
90
143
|
/**
|
|
91
144
|
* Applies a single provider's entry and returns the COMPLETE next document.
|
|
92
145
|
*
|
|
@@ -94,10 +147,77 @@ export interface ApplyUserExternalConnectionEntryInput {
|
|
|
94
147
|
* exported way to change `e`, and it always recomputes `c` from the resulting map. There is no
|
|
95
148
|
* exported path that touches one without the other.
|
|
96
149
|
*
|
|
150
|
+
* The login map is carried through UNCHANGED. A data connection's lifecycle says nothing about
|
|
151
|
+
* whether the provider is still a way to sign in, so a disconnect must not remove the link.
|
|
152
|
+
*
|
|
97
153
|
* @param input - The current document plus the provider entry to apply.
|
|
98
154
|
* @returns The next UserExternalConnection value to write.
|
|
99
155
|
*/
|
|
100
156
|
export declare function applyUserExternalConnectionEntry(input: ApplyUserExternalConnectionEntryInput): UserExternalConnection;
|
|
157
|
+
/**
|
|
158
|
+
* Input for {@link applyUserExternalConnectionLogin}.
|
|
159
|
+
*/
|
|
160
|
+
export interface ApplyUserExternalConnectionLoginInput {
|
|
161
|
+
/**
|
|
162
|
+
* The currently stored document, when one exists.
|
|
163
|
+
*/
|
|
164
|
+
readonly current?: Maybe<UserExternalConnection>;
|
|
165
|
+
readonly uid: FirebaseAuthUserId;
|
|
166
|
+
readonly providerType: UserExternalConnectionProviderType;
|
|
167
|
+
/**
|
|
168
|
+
* The next login link for this provider, or null to remove the provider's key entirely.
|
|
169
|
+
*/
|
|
170
|
+
readonly login: Maybe<UserExternalConnectionLogin>;
|
|
171
|
+
readonly now: Date;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Applies a single provider's LOGIN LINK and returns the COMPLETE next document.
|
|
175
|
+
*
|
|
176
|
+
* The mirror of {@link applyUserExternalConnectionEntry}, and the only exported way to change `li`.
|
|
177
|
+
* The entry map is carried through unchanged: linking a provider as a login method grants nothing
|
|
178
|
+
* about its data connection, because the identity scopes and the data scopes are not guaranteed to
|
|
179
|
+
* be the same set.
|
|
180
|
+
*
|
|
181
|
+
* @param input - The current document plus the login link to apply.
|
|
182
|
+
* @returns The next UserExternalConnection value to write.
|
|
183
|
+
*/
|
|
184
|
+
export declare function applyUserExternalConnectionLogin(input: ApplyUserExternalConnectionLoginInput): UserExternalConnection;
|
|
185
|
+
/**
|
|
186
|
+
* The identity facts a {@link UserExternalConnectionLogin} is derived from.
|
|
187
|
+
*
|
|
188
|
+
* Structurally the subset of `UserExternalConnectionSignInIdentity` (in
|
|
189
|
+
* `@dereekb/firebase-server/model`) that a link records. Declared here rather than imported because
|
|
190
|
+
* this package is shared with the browser and cannot name a server type — and because the derivation
|
|
191
|
+
* genuinely needs nothing more than these four values.
|
|
192
|
+
*/
|
|
193
|
+
export interface UserExternalConnectionLoginIdentity {
|
|
194
|
+
readonly externalAccountId: UserExternalConnectionExternalAccountId;
|
|
195
|
+
readonly email?: Maybe<EmailAddress>;
|
|
196
|
+
readonly emailVerified?: Maybe<boolean>;
|
|
197
|
+
readonly label?: Maybe<string>;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Input for {@link userExternalConnectionLoginForIdentity}.
|
|
201
|
+
*/
|
|
202
|
+
export interface UserExternalConnectionLoginForIdentityInput {
|
|
203
|
+
readonly identity: UserExternalConnectionLoginIdentity;
|
|
204
|
+
/**
|
|
205
|
+
* The link currently stored for this provider, when there is one.
|
|
206
|
+
*/
|
|
207
|
+
readonly previous?: Maybe<UserExternalConnectionLogin>;
|
|
208
|
+
readonly now: Date;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Derives the {@link UserExternalConnectionLogin} for an identity a link round trip resolved.
|
|
212
|
+
*
|
|
213
|
+
* `lat` survives a relink, the mirror of how {@link userExternalConnectionEntryForOutcome} preserves
|
|
214
|
+
* `coa`: relinking the same provider is a re-consent, not a new relationship, so the date the account
|
|
215
|
+
* first became a login method stays what it was.
|
|
216
|
+
*
|
|
217
|
+
* @param input - The resolved identity, the stored link, and the instant to stamp.
|
|
218
|
+
* @returns The next login link.
|
|
219
|
+
*/
|
|
220
|
+
export declare function userExternalConnectionLoginForIdentity(input: UserExternalConnectionLoginForIdentityInput): UserExternalConnectionLogin;
|
|
101
221
|
/**
|
|
102
222
|
* Input for {@link emptyUserExternalConnection}.
|
|
103
223
|
*/
|
|
@@ -147,3 +267,18 @@ export declare function userExternalConnectionEntryIsExpired(entry: Maybe<UserEx
|
|
|
147
267
|
* @returns True when the provider's entry is connected.
|
|
148
268
|
*/
|
|
149
269
|
export declare function userExternalConnectionIsConnectedToProvider(connection: Maybe<UserExternalConnection>, providerType: UserExternalConnectionProviderType): boolean;
|
|
270
|
+
/**
|
|
271
|
+
* Returns the login link for the given provider, if any.
|
|
272
|
+
*
|
|
273
|
+
* @param connection - The loaded connection document.
|
|
274
|
+
* @param providerType - The provider to read.
|
|
275
|
+
* @returns The provider's login link, or null when the provider is not a login method for this user.
|
|
276
|
+
*/
|
|
277
|
+
export declare function userExternalConnectionLoginForProvider(connection: Maybe<UserExternalConnection>, providerType: UserExternalConnectionProviderType): Maybe<UserExternalConnectionLogin>;
|
|
278
|
+
/**
|
|
279
|
+
* Returns every provider type that is a login method for this user.
|
|
280
|
+
*
|
|
281
|
+
* @param connection - The loaded connection document.
|
|
282
|
+
* @returns The linked provider types, sorted for a stable render order.
|
|
283
|
+
*/
|
|
284
|
+
export declare function userExternalConnectionLinkedLoginProviderTypes(connection: Maybe<UserExternalConnection>): UserExternalConnectionProviderType[];
|
package/test/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase/test",
|
|
3
|
-
"version": "14.
|
|
3
|
+
"version": "14.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"peerDependencies": {
|
|
6
|
-
"@dereekb/date": "14.
|
|
7
|
-
"@dereekb/firebase": "14.
|
|
8
|
-
"@dereekb/model": "14.
|
|
9
|
-
"@dereekb/rxjs": "14.
|
|
10
|
-
"@dereekb/util": "14.
|
|
6
|
+
"@dereekb/date": "14.1.0",
|
|
7
|
+
"@dereekb/firebase": "14.1.0",
|
|
8
|
+
"@dereekb/model": "14.1.0",
|
|
9
|
+
"@dereekb/rxjs": "14.1.0",
|
|
10
|
+
"@dereekb/util": "14.1.0",
|
|
11
11
|
"@firebase/rules-unit-testing": "5.0.2",
|
|
12
12
|
"date-fns": "^4.1.0",
|
|
13
13
|
"firebase": "^12.18.0",
|