@dereekb/firebase 13.32.0 → 13.34.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.cjs.js +1077 -551
- package/index.esm.js +1048 -552
- package/package.json +5 -5
- package/src/lib/common/firestore/snapshot/snapshot.field.d.ts +59 -4
- package/src/lib/model/index.d.ts +1 -0
- package/src/lib/model/system/system.d.ts +61 -3
- package/src/lib/model/userexternalconnection/index.d.ts +6 -0
- package/src/lib/model/userexternalconnection/userexternalconnection.action.d.ts +21 -0
- package/src/lib/model/userexternalconnection/userexternalconnection.api.d.ts +120 -0
- package/src/lib/model/userexternalconnection/userexternalconnection.d.ts +191 -0
- package/src/lib/model/userexternalconnection/userexternalconnection.id.d.ts +51 -0
- package/src/lib/model/userexternalconnection/userexternalconnection.query.d.ts +19 -0
- package/src/lib/model/userexternalconnection/userexternalconnection.util.d.ts +149 -0
- package/test/index.cjs.js +371 -50
- package/test/index.esm.js +362 -51
- package/test/package.json +6 -6
- package/test/src/lib/client/firebase.rules.d.ts +114 -0
- package/test/src/lib/client/index.d.ts +1 -0
package/test/index.cjs.js
CHANGED
|
@@ -5,12 +5,14 @@ var rulesUnitTesting = require('@firebase/rules-unit-testing');
|
|
|
5
5
|
var firebase = require('@dereekb/firebase');
|
|
6
6
|
var firestore = require('firebase/firestore');
|
|
7
7
|
var test = require('@dereekb/util/test');
|
|
8
|
+
var node_fs = require('node:fs');
|
|
9
|
+
var node_path = require('node:path');
|
|
10
|
+
var node_url = require('node:url');
|
|
8
11
|
var rxjs$1 = require('rxjs');
|
|
9
12
|
var rxjs = require('@dereekb/rxjs');
|
|
10
13
|
var dateFns = require('date-fns');
|
|
11
14
|
var date = require('@dereekb/date');
|
|
12
15
|
var node_stream = require('node:stream');
|
|
13
|
-
var node_fs = require('node:fs');
|
|
14
16
|
|
|
15
17
|
function _array_like_to_array$2(arr, len) {
|
|
16
18
|
if (len == null || len > arr.length) len = arr.length;
|
|
@@ -23,7 +25,7 @@ function _array_with_holes$1(arr) {
|
|
|
23
25
|
function _array_without_holes$2(arr) {
|
|
24
26
|
if (Array.isArray(arr)) return _array_like_to_array$2(arr);
|
|
25
27
|
}
|
|
26
|
-
function asyncGeneratorStep$
|
|
28
|
+
function asyncGeneratorStep$7(gen, resolve, reject, _next, _throw, key, arg) {
|
|
27
29
|
try {
|
|
28
30
|
var info = gen[key](arg);
|
|
29
31
|
var value = info.value;
|
|
@@ -37,22 +39,22 @@ function asyncGeneratorStep$6(gen, resolve, reject, _next, _throw, key, arg) {
|
|
|
37
39
|
Promise.resolve(value).then(_next, _throw);
|
|
38
40
|
}
|
|
39
41
|
}
|
|
40
|
-
function _async_to_generator$
|
|
42
|
+
function _async_to_generator$7(fn) {
|
|
41
43
|
return function() {
|
|
42
44
|
var self = this, args = arguments;
|
|
43
45
|
return new Promise(function(resolve, reject) {
|
|
44
46
|
var gen = fn.apply(self, args);
|
|
45
47
|
function _next(value) {
|
|
46
|
-
asyncGeneratorStep$
|
|
48
|
+
asyncGeneratorStep$7(gen, resolve, reject, _next, _throw, "next", value);
|
|
47
49
|
}
|
|
48
50
|
function _throw(err) {
|
|
49
|
-
asyncGeneratorStep$
|
|
51
|
+
asyncGeneratorStep$7(gen, resolve, reject, _next, _throw, "throw", err);
|
|
50
52
|
}
|
|
51
53
|
_next(undefined);
|
|
52
54
|
});
|
|
53
55
|
};
|
|
54
56
|
}
|
|
55
|
-
function _define_property$
|
|
57
|
+
function _define_property$a(obj, key, value) {
|
|
56
58
|
if (key in obj) {
|
|
57
59
|
Object.defineProperty(obj, key, {
|
|
58
60
|
value: value,
|
|
@@ -98,7 +100,7 @@ function _non_iterable_rest$1() {
|
|
|
98
100
|
function _non_iterable_spread$2() {
|
|
99
101
|
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
100
102
|
}
|
|
101
|
-
function _object_spread$
|
|
103
|
+
function _object_spread$4(target) {
|
|
102
104
|
for(var i = 1; i < arguments.length; i++){
|
|
103
105
|
var source = arguments[i] != null ? arguments[i] : {};
|
|
104
106
|
var ownKeys = Object.keys(source);
|
|
@@ -108,7 +110,7 @@ function _object_spread$3(target) {
|
|
|
108
110
|
}));
|
|
109
111
|
}
|
|
110
112
|
ownKeys.forEach(function(key) {
|
|
111
|
-
_define_property$
|
|
113
|
+
_define_property$a(target, key, source[key]);
|
|
112
114
|
});
|
|
113
115
|
}
|
|
114
116
|
return target;
|
|
@@ -146,7 +148,7 @@ function _unsupported_iterable_to_array$2(o, minLen) {
|
|
|
146
148
|
if (n === "Map" || n === "Set") return Array.from(n);
|
|
147
149
|
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$2(o, minLen);
|
|
148
150
|
}
|
|
149
|
-
function _ts_generator$
|
|
151
|
+
function _ts_generator$7(thisArg, body) {
|
|
150
152
|
var f, y, t, _ = {
|
|
151
153
|
label: 0,
|
|
152
154
|
sent: function() {
|
|
@@ -302,7 +304,7 @@ function _ts_generator$6(thisArg, body) {
|
|
|
302
304
|
});
|
|
303
305
|
return fuzzedMap;
|
|
304
306
|
};
|
|
305
|
-
var injectedDriver = _object_spread_props$2(_object_spread$
|
|
307
|
+
var injectedDriver = _object_spread_props$2(_object_spread$4({}, driver), {
|
|
306
308
|
collection: fuzzedCollection,
|
|
307
309
|
collectionGroup: fuzzedCollectionGroup,
|
|
308
310
|
subcollection: fuzzedSubcollection,
|
|
@@ -320,7 +322,7 @@ function _ts_generator$6(thisArg, body) {
|
|
|
320
322
|
* @param drivers - The base Firestore drivers to wrap.
|
|
321
323
|
* @returns A {@link TestingFirestoreDrivers} marked with `firestoreDriverType: 'testing'` and a wrapped accessor driver from {@link makeTestingFirestoreAccesorDriver}.
|
|
322
324
|
*/ function makeTestingFirestoreDrivers(drivers) {
|
|
323
|
-
return _object_spread_props$2(_object_spread$
|
|
325
|
+
return _object_spread_props$2(_object_spread$4({}, drivers), {
|
|
324
326
|
firestoreDriverType: 'testing',
|
|
325
327
|
firestoreAccessorDriver: makeTestingFirestoreAccesorDriver(drivers.firestoreAccessorDriver)
|
|
326
328
|
});
|
|
@@ -333,9 +335,9 @@ function _ts_generator$6(thisArg, body) {
|
|
|
333
335
|
* @param context - The test context whose fuzzed collections should be cleared.
|
|
334
336
|
* @param clearCollection - Callback that performs the actual deletion for a single collection.
|
|
335
337
|
*/ function clearTestFirestoreContextCollections(context, clearCollection) {
|
|
336
|
-
return _async_to_generator$
|
|
338
|
+
return _async_to_generator$7(function() {
|
|
337
339
|
var names, tuples;
|
|
338
|
-
return _ts_generator$
|
|
340
|
+
return _ts_generator$7(this, function(_state) {
|
|
339
341
|
switch(_state.label){
|
|
340
342
|
case 0:
|
|
341
343
|
names = context.drivers.firestoreAccessorDriver.getFuzzedCollectionsNameMap();
|
|
@@ -357,7 +359,7 @@ function _ts_generator$6(thisArg, body) {
|
|
|
357
359
|
})();
|
|
358
360
|
}
|
|
359
361
|
|
|
360
|
-
function _define_property$
|
|
362
|
+
function _define_property$9(obj, key, value) {
|
|
361
363
|
if (key in obj) {
|
|
362
364
|
Object.defineProperty(obj, key, {
|
|
363
365
|
value: value,
|
|
@@ -370,7 +372,7 @@ function _define_property$8(obj, key, value) {
|
|
|
370
372
|
}
|
|
371
373
|
return obj;
|
|
372
374
|
}
|
|
373
|
-
function _object_spread$
|
|
375
|
+
function _object_spread$3(target) {
|
|
374
376
|
for(var i = 1; i < arguments.length; i++){
|
|
375
377
|
var source = arguments[i] != null ? arguments[i] : {};
|
|
376
378
|
var ownKeys = Object.keys(source);
|
|
@@ -380,7 +382,7 @@ function _object_spread$2(target) {
|
|
|
380
382
|
}));
|
|
381
383
|
}
|
|
382
384
|
ownKeys.forEach(function(key) {
|
|
383
|
-
_define_property$
|
|
385
|
+
_define_property$9(target, key, source[key]);
|
|
384
386
|
});
|
|
385
387
|
}
|
|
386
388
|
return target;
|
|
@@ -423,7 +425,7 @@ var bucketTestNameKey = 0;
|
|
|
423
425
|
var random = Math.ceil(Math.random() * 999999) % 999999;
|
|
424
426
|
return "test-bucket-".concat(time, "-").concat(random, "-").concat(bucketTestNameKey += 1);
|
|
425
427
|
}) : driver.getDefaultBucket;
|
|
426
|
-
var injectedDriver = _object_spread_props$1(_object_spread$
|
|
428
|
+
var injectedDriver = _object_spread_props$1(_object_spread$3({}, driver), {
|
|
427
429
|
getDefaultBucket: defaultBucket
|
|
428
430
|
});
|
|
429
431
|
return injectedDriver;
|
|
@@ -435,7 +437,7 @@ var bucketTestNameKey = 0;
|
|
|
435
437
|
* @param config - Optional config forwarded to {@link makeTestingFirebaseStorageAccesorDriver}; controls test-bucket override behavior.
|
|
436
438
|
* @returns A {@link TestingFirebaseStorageDrivers} marked with `storageDriverType: 'testing'` and a wrapped accessor driver.
|
|
437
439
|
*/ function makeTestingFirebaseStorageDrivers(drivers, config) {
|
|
438
|
-
return _object_spread_props$1(_object_spread$
|
|
440
|
+
return _object_spread_props$1(_object_spread$3({}, drivers), {
|
|
439
441
|
storageDriverType: 'testing',
|
|
440
442
|
storageAccessorDriver: makeTestingFirebaseStorageAccesorDriver(drivers.storageAccessorDriver, config)
|
|
441
443
|
});
|
|
@@ -469,7 +471,7 @@ function _create_class$6(Constructor, protoProps, staticProps) {
|
|
|
469
471
|
if (protoProps) _defineProperties$6(Constructor.prototype, protoProps);
|
|
470
472
|
return Constructor;
|
|
471
473
|
}
|
|
472
|
-
function _define_property$
|
|
474
|
+
function _define_property$8(obj, key, value) {
|
|
473
475
|
if (key in obj) {
|
|
474
476
|
Object.defineProperty(obj, key, {
|
|
475
477
|
value: value,
|
|
@@ -535,8 +537,8 @@ function _is_native_reflect_construct$6() {
|
|
|
535
537
|
*/ var TestFirebaseInstance = /*#__PURE__*/ function() {
|
|
536
538
|
function TestFirebaseInstance(firestoreContext, storageContext) {
|
|
537
539
|
_class_call_check$7(this, TestFirebaseInstance);
|
|
538
|
-
_define_property$
|
|
539
|
-
_define_property$
|
|
540
|
+
_define_property$8(this, "firestoreContext", void 0);
|
|
541
|
+
_define_property$8(this, "storageContext", void 0);
|
|
540
542
|
this.firestoreContext = firestoreContext;
|
|
541
543
|
this.storageContext = storageContext;
|
|
542
544
|
}
|
|
@@ -605,7 +607,7 @@ function _assert_this_initialized$5(self) {
|
|
|
605
607
|
}
|
|
606
608
|
return self;
|
|
607
609
|
}
|
|
608
|
-
function asyncGeneratorStep$
|
|
610
|
+
function asyncGeneratorStep$6(gen, resolve, reject, _next, _throw, key, arg) {
|
|
609
611
|
try {
|
|
610
612
|
var info = gen[key](arg);
|
|
611
613
|
var value = info.value;
|
|
@@ -619,16 +621,16 @@ function asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, key, arg) {
|
|
|
619
621
|
Promise.resolve(value).then(_next, _throw);
|
|
620
622
|
}
|
|
621
623
|
}
|
|
622
|
-
function _async_to_generator$
|
|
624
|
+
function _async_to_generator$6(fn) {
|
|
623
625
|
return function() {
|
|
624
626
|
var self = this, args = arguments;
|
|
625
627
|
return new Promise(function(resolve, reject) {
|
|
626
628
|
var gen = fn.apply(self, args);
|
|
627
629
|
function _next(value) {
|
|
628
|
-
asyncGeneratorStep$
|
|
630
|
+
asyncGeneratorStep$6(gen, resolve, reject, _next, _throw, "next", value);
|
|
629
631
|
}
|
|
630
632
|
function _throw(err) {
|
|
631
|
-
asyncGeneratorStep$
|
|
633
|
+
asyncGeneratorStep$6(gen, resolve, reject, _next, _throw, "throw", err);
|
|
632
634
|
}
|
|
633
635
|
_next(undefined);
|
|
634
636
|
});
|
|
@@ -656,7 +658,7 @@ function _create_class$5(Constructor, protoProps, staticProps) {
|
|
|
656
658
|
if (protoProps) _defineProperties$5(Constructor.prototype, protoProps);
|
|
657
659
|
return Constructor;
|
|
658
660
|
}
|
|
659
|
-
function _define_property$
|
|
661
|
+
function _define_property$7(obj, key, value) {
|
|
660
662
|
if (key in obj) {
|
|
661
663
|
Object.defineProperty(obj, key, {
|
|
662
664
|
value: value,
|
|
@@ -688,7 +690,7 @@ function _inherits$5(subClass, superClass) {
|
|
|
688
690
|
});
|
|
689
691
|
if (superClass) _set_prototype_of$5(subClass, superClass);
|
|
690
692
|
}
|
|
691
|
-
function _object_spread$
|
|
693
|
+
function _object_spread$2(target) {
|
|
692
694
|
for(var i = 1; i < arguments.length; i++){
|
|
693
695
|
var source = arguments[i] != null ? arguments[i] : {};
|
|
694
696
|
var ownKeys = Object.keys(source);
|
|
@@ -698,7 +700,7 @@ function _object_spread$1(target) {
|
|
|
698
700
|
}));
|
|
699
701
|
}
|
|
700
702
|
ownKeys.forEach(function(key) {
|
|
701
|
-
_define_property$
|
|
703
|
+
_define_property$7(target, key, source[key]);
|
|
702
704
|
});
|
|
703
705
|
}
|
|
704
706
|
return target;
|
|
@@ -747,7 +749,7 @@ function _is_native_reflect_construct$5() {
|
|
|
747
749
|
return !!result;
|
|
748
750
|
})();
|
|
749
751
|
}
|
|
750
|
-
function _ts_generator$
|
|
752
|
+
function _ts_generator$6(thisArg, body) {
|
|
751
753
|
var f, y, t, _ = {
|
|
752
754
|
label: 0,
|
|
753
755
|
sent: function() {
|
|
@@ -857,7 +859,7 @@ function _ts_generator$5(thisArg, body) {
|
|
|
857
859
|
* @param rulesTestContext - The per-test rules context (authenticated or unauthenticated) used to obtain the Firestore instance.
|
|
858
860
|
* @returns A {@link RulesUnitTestTestFirestoreContext} that exposes the rules-test environment and context alongside the standard Firestore context.
|
|
859
861
|
*/ function makeRulesTestFirestoreContext(drivers, rulesTestEnvironment, rulesTestContext) {
|
|
860
|
-
var context = _object_spread_props(_object_spread$
|
|
862
|
+
var context = _object_spread_props(_object_spread$2({}, firebase.firestoreContextFactory(drivers)(rulesTestContext.firestore())), {
|
|
861
863
|
drivers: drivers,
|
|
862
864
|
rulesTestContext: rulesTestContext,
|
|
863
865
|
rulesTestEnvironment: rulesTestEnvironment
|
|
@@ -875,7 +877,7 @@ function _ts_generator$5(thisArg, body) {
|
|
|
875
877
|
* @param rulesTestContext - The per-test rules context used to obtain the Storage instance.
|
|
876
878
|
* @returns A {@link RulesUnitTestTestFirebaseStorageContext} that exposes the rules-test environment and context alongside the standard Storage context.
|
|
877
879
|
*/ function makeRulesTestFirebaseStorageContext(drivers, rulesTestEnvironment, rulesTestContext) {
|
|
878
|
-
var context = _object_spread_props(_object_spread$
|
|
880
|
+
var context = _object_spread_props(_object_spread$2({}, firebase.firebaseStorageContextFactory(drivers)(rulesTestContext.storage())), {
|
|
879
881
|
drivers: drivers,
|
|
880
882
|
rulesTestContext: rulesTestContext,
|
|
881
883
|
rulesTestEnvironment: rulesTestEnvironment
|
|
@@ -892,13 +894,13 @@ function _ts_generator$5(thisArg, body) {
|
|
|
892
894
|
function RulesUnitTestTestFirebaseInstance(drivers, rulesTestEnvironment, rulesTestContext) {
|
|
893
895
|
var _this = this;
|
|
894
896
|
_class_call_check$6(this, RulesUnitTestTestFirebaseInstance);
|
|
895
|
-
_define_property$
|
|
896
|
-
_define_property$
|
|
897
|
-
_define_property$
|
|
898
|
-
_define_property$
|
|
897
|
+
_define_property$7(this, "drivers", void 0);
|
|
898
|
+
_define_property$7(this, "rulesTestEnvironment", void 0);
|
|
899
|
+
_define_property$7(this, "rulesTestContext", void 0);
|
|
900
|
+
_define_property$7(this, "_firestoreContext", util.cachedGetter(function() {
|
|
899
901
|
return makeRulesTestFirestoreContext(_this.drivers, _this.rulesTestEnvironment, _this.rulesTestContext);
|
|
900
902
|
}));
|
|
901
|
-
_define_property$
|
|
903
|
+
_define_property$7(this, "_storageContext", util.cachedGetter(function() {
|
|
902
904
|
return makeRulesTestFirebaseStorageContext(_this.drivers, _this.rulesTestEnvironment, _this.rulesTestContext);
|
|
903
905
|
}));
|
|
904
906
|
this.drivers = drivers;
|
|
@@ -972,8 +974,8 @@ function _ts_generator$5(thisArg, body) {
|
|
|
972
974
|
// Initialize the emulator environment once per test suite.
|
|
973
975
|
// This is the expensive operation that hits the emulator's REST API (e.g. PUT /internal/setRules).
|
|
974
976
|
beforeAll(function() {
|
|
975
|
-
return _async_to_generator$
|
|
976
|
-
return _ts_generator$
|
|
977
|
+
return _async_to_generator$6(function() {
|
|
978
|
+
return _ts_generator$6(this, function(_state) {
|
|
977
979
|
switch(_state.label){
|
|
978
980
|
case 0:
|
|
979
981
|
return [
|
|
@@ -991,8 +993,8 @@ function _ts_generator$5(thisArg, body) {
|
|
|
991
993
|
});
|
|
992
994
|
// Clean up the emulator environment once after all tests complete.
|
|
993
995
|
afterAll(function() {
|
|
994
|
-
return _async_to_generator$
|
|
995
|
-
return _ts_generator$
|
|
996
|
+
return _async_to_generator$6(function() {
|
|
997
|
+
return _ts_generator$6(this, function(_state) {
|
|
996
998
|
switch(_state.label){
|
|
997
999
|
case 0:
|
|
998
1000
|
if (!rulesTestEnvironment) return [
|
|
@@ -1022,11 +1024,11 @@ function _ts_generator$5(thisArg, body) {
|
|
|
1022
1024
|
// (via makeTestingFirestoreAccesorDriver) to provide data isolation between tests.
|
|
1023
1025
|
var clearInstance = null;
|
|
1024
1026
|
beforeEach(function() {
|
|
1025
|
-
return _async_to_generator$
|
|
1027
|
+
return _async_to_generator$6(function() {
|
|
1026
1028
|
var drivers, rulesTestContext, instance;
|
|
1027
|
-
return _ts_generator$
|
|
1029
|
+
return _ts_generator$6(this, function(_state) {
|
|
1028
1030
|
try {
|
|
1029
|
-
drivers = _object_spread$
|
|
1031
|
+
drivers = _object_spread$2({}, makeTestingFirestoreDrivers(firebase.firebaseFirestoreClientDrivers()), makeTestingFirebaseStorageDrivers(firebase.firebaseStorageClientDrivers(), {
|
|
1030
1032
|
useTestDefaultBucket: true
|
|
1031
1033
|
}));
|
|
1032
1034
|
if (config.testEnvironment.collectionNames) {
|
|
@@ -1174,7 +1176,7 @@ function _create_class$4(Constructor, protoProps, staticProps) {
|
|
|
1174
1176
|
if (protoProps) _defineProperties$4(Constructor.prototype, protoProps);
|
|
1175
1177
|
return Constructor;
|
|
1176
1178
|
}
|
|
1177
|
-
function _define_property$
|
|
1179
|
+
function _define_property$6(obj, key, value) {
|
|
1178
1180
|
if (key in obj) {
|
|
1179
1181
|
Object.defineProperty(obj, key, {
|
|
1180
1182
|
value: value,
|
|
@@ -1856,7 +1858,7 @@ function _is_native_reflect_construct$4() {
|
|
|
1856
1858
|
*
|
|
1857
1859
|
* Used when creating the mock system state Firestore collection to register
|
|
1858
1860
|
* the {@link MockSystemData} converter under the {@link MOCK_SYSTEM_STATE_TYPE} key.
|
|
1859
|
-
*/ var MOCK_ITEM_SYSTEM_STATE_STORED_DATA_CONVERTER_MAP = _define_property$
|
|
1861
|
+
*/ var MOCK_ITEM_SYSTEM_STATE_STORED_DATA_CONVERTER_MAP = _define_property$6({}, MOCK_SYSTEM_STATE_TYPE, mockItemSystemDataConverter);
|
|
1860
1862
|
|
|
1861
1863
|
function _class_call_check$4(instance, Constructor) {
|
|
1862
1864
|
if (!(instance instanceof Constructor)) {
|
|
@@ -2051,7 +2053,7 @@ function _create_class$3(Constructor, protoProps, staticProps) {
|
|
|
2051
2053
|
if (protoProps) _defineProperties$3(Constructor.prototype, protoProps);
|
|
2052
2054
|
return Constructor;
|
|
2053
2055
|
}
|
|
2054
|
-
function _define_property$
|
|
2056
|
+
function _define_property$5(obj, key, value) {
|
|
2055
2057
|
if (key in obj) {
|
|
2056
2058
|
Object.defineProperty(obj, key, {
|
|
2057
2059
|
value: value,
|
|
@@ -2117,8 +2119,8 @@ function _is_native_reflect_construct$3() {
|
|
|
2117
2119
|
*/ var MockItemCollectionFixtureInstance = /*#__PURE__*/ function() {
|
|
2118
2120
|
function MockItemCollectionFixtureInstance(fixture) {
|
|
2119
2121
|
_class_call_check$3(this, MockItemCollectionFixtureInstance);
|
|
2120
|
-
_define_property$
|
|
2121
|
-
_define_property$
|
|
2122
|
+
_define_property$5(this, "fixture", void 0);
|
|
2123
|
+
_define_property$5(this, "collections", void 0);
|
|
2122
2124
|
this.fixture = fixture;
|
|
2123
2125
|
this.collections = makeMockItemCollections(fixture.parent.firestoreContext);
|
|
2124
2126
|
}
|
|
@@ -2268,7 +2270,7 @@ function _create_class$2(Constructor, protoProps, staticProps) {
|
|
|
2268
2270
|
if (protoProps) _defineProperties$2(Constructor.prototype, protoProps);
|
|
2269
2271
|
return Constructor;
|
|
2270
2272
|
}
|
|
2271
|
-
function _define_property$
|
|
2273
|
+
function _define_property$4(obj, key, value) {
|
|
2272
2274
|
if (key in obj) {
|
|
2273
2275
|
Object.defineProperty(obj, key, {
|
|
2274
2276
|
value: value,
|
|
@@ -2333,7 +2335,7 @@ function _is_native_reflect_construct$2() {
|
|
|
2333
2335
|
*/ var MockItemStorageFixtureInstance = /*#__PURE__*/ function() {
|
|
2334
2336
|
function MockItemStorageFixtureInstance(fixture) {
|
|
2335
2337
|
_class_call_check$2(this, MockItemStorageFixtureInstance);
|
|
2336
|
-
_define_property$
|
|
2338
|
+
_define_property$4(this, "fixture", void 0);
|
|
2337
2339
|
this.fixture = fixture;
|
|
2338
2340
|
}
|
|
2339
2341
|
_create_class$2(MockItemStorageFixtureInstance, [
|
|
@@ -2423,6 +2425,314 @@ function _is_native_reflect_construct$2() {
|
|
|
2423
2425
|
* Uses @firebase/storage. This is ONLY for the client.
|
|
2424
2426
|
*/ var authorizedTestWithMockItemStorage = testWithMockItemStorageFixture()(authorizedFirebaseFactory);
|
|
2425
2427
|
|
|
2428
|
+
function asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, key, arg) {
|
|
2429
|
+
try {
|
|
2430
|
+
var info = gen[key](arg);
|
|
2431
|
+
var value = info.value;
|
|
2432
|
+
} catch (error) {
|
|
2433
|
+
reject(error);
|
|
2434
|
+
return;
|
|
2435
|
+
}
|
|
2436
|
+
if (info.done) {
|
|
2437
|
+
resolve(value);
|
|
2438
|
+
} else {
|
|
2439
|
+
Promise.resolve(value).then(_next, _throw);
|
|
2440
|
+
}
|
|
2441
|
+
}
|
|
2442
|
+
function _async_to_generator$5(fn) {
|
|
2443
|
+
return function() {
|
|
2444
|
+
var self = this, args = arguments;
|
|
2445
|
+
return new Promise(function(resolve, reject) {
|
|
2446
|
+
var gen = fn.apply(self, args);
|
|
2447
|
+
function _next(value) {
|
|
2448
|
+
asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, "next", value);
|
|
2449
|
+
}
|
|
2450
|
+
function _throw(err) {
|
|
2451
|
+
asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, "throw", err);
|
|
2452
|
+
}
|
|
2453
|
+
_next(undefined);
|
|
2454
|
+
});
|
|
2455
|
+
};
|
|
2456
|
+
}
|
|
2457
|
+
function _define_property$3(obj, key, value) {
|
|
2458
|
+
if (key in obj) {
|
|
2459
|
+
Object.defineProperty(obj, key, {
|
|
2460
|
+
value: value,
|
|
2461
|
+
enumerable: true,
|
|
2462
|
+
configurable: true,
|
|
2463
|
+
writable: true
|
|
2464
|
+
});
|
|
2465
|
+
} else {
|
|
2466
|
+
obj[key] = value;
|
|
2467
|
+
}
|
|
2468
|
+
return obj;
|
|
2469
|
+
}
|
|
2470
|
+
function _object_spread$1(target) {
|
|
2471
|
+
for(var i = 1; i < arguments.length; i++){
|
|
2472
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
2473
|
+
var ownKeys = Object.keys(source);
|
|
2474
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
2475
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
2476
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
2477
|
+
}));
|
|
2478
|
+
}
|
|
2479
|
+
ownKeys.forEach(function(key) {
|
|
2480
|
+
_define_property$3(target, key, source[key]);
|
|
2481
|
+
});
|
|
2482
|
+
}
|
|
2483
|
+
return target;
|
|
2484
|
+
}
|
|
2485
|
+
function _ts_generator$5(thisArg, body) {
|
|
2486
|
+
var f, y, t, _ = {
|
|
2487
|
+
label: 0,
|
|
2488
|
+
sent: function() {
|
|
2489
|
+
if (t[0] & 1) throw t[1];
|
|
2490
|
+
return t[1];
|
|
2491
|
+
},
|
|
2492
|
+
trys: [],
|
|
2493
|
+
ops: []
|
|
2494
|
+
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
|
|
2495
|
+
return d(g, "next", {
|
|
2496
|
+
value: verb(0)
|
|
2497
|
+
}), d(g, "throw", {
|
|
2498
|
+
value: verb(1)
|
|
2499
|
+
}), d(g, "return", {
|
|
2500
|
+
value: verb(2)
|
|
2501
|
+
}), typeof Symbol === "function" && d(g, Symbol.iterator, {
|
|
2502
|
+
value: function() {
|
|
2503
|
+
return this;
|
|
2504
|
+
}
|
|
2505
|
+
}), g;
|
|
2506
|
+
function verb(n) {
|
|
2507
|
+
return function(v) {
|
|
2508
|
+
return step([
|
|
2509
|
+
n,
|
|
2510
|
+
v
|
|
2511
|
+
]);
|
|
2512
|
+
};
|
|
2513
|
+
}
|
|
2514
|
+
function step(op) {
|
|
2515
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
2516
|
+
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
2517
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
2518
|
+
if (y = 0, t) op = [
|
|
2519
|
+
op[0] & 2,
|
|
2520
|
+
t.value
|
|
2521
|
+
];
|
|
2522
|
+
switch(op[0]){
|
|
2523
|
+
case 0:
|
|
2524
|
+
case 1:
|
|
2525
|
+
t = op;
|
|
2526
|
+
break;
|
|
2527
|
+
case 4:
|
|
2528
|
+
_.label++;
|
|
2529
|
+
return {
|
|
2530
|
+
value: op[1],
|
|
2531
|
+
done: false
|
|
2532
|
+
};
|
|
2533
|
+
case 5:
|
|
2534
|
+
_.label++;
|
|
2535
|
+
y = op[1];
|
|
2536
|
+
op = [
|
|
2537
|
+
0
|
|
2538
|
+
];
|
|
2539
|
+
continue;
|
|
2540
|
+
case 7:
|
|
2541
|
+
op = _.ops.pop();
|
|
2542
|
+
_.trys.pop();
|
|
2543
|
+
continue;
|
|
2544
|
+
default:
|
|
2545
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
2546
|
+
_ = 0;
|
|
2547
|
+
continue;
|
|
2548
|
+
}
|
|
2549
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
2550
|
+
_.label = op[1];
|
|
2551
|
+
break;
|
|
2552
|
+
}
|
|
2553
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
2554
|
+
_.label = t[1];
|
|
2555
|
+
t = op;
|
|
2556
|
+
break;
|
|
2557
|
+
}
|
|
2558
|
+
if (t && _.label < t[2]) {
|
|
2559
|
+
_.label = t[2];
|
|
2560
|
+
_.ops.push(op);
|
|
2561
|
+
break;
|
|
2562
|
+
}
|
|
2563
|
+
if (t[2]) _.ops.pop();
|
|
2564
|
+
_.trys.pop();
|
|
2565
|
+
continue;
|
|
2566
|
+
}
|
|
2567
|
+
op = body.call(thisArg, _);
|
|
2568
|
+
} catch (e) {
|
|
2569
|
+
op = [
|
|
2570
|
+
6,
|
|
2571
|
+
e
|
|
2572
|
+
];
|
|
2573
|
+
y = 0;
|
|
2574
|
+
} finally{
|
|
2575
|
+
f = t = 0;
|
|
2576
|
+
}
|
|
2577
|
+
if (op[0] & 5) throw op[1];
|
|
2578
|
+
return {
|
|
2579
|
+
value: op[0] ? op[1] : void 0,
|
|
2580
|
+
done: true
|
|
2581
|
+
};
|
|
2582
|
+
}
|
|
2583
|
+
}
|
|
2584
|
+
/**
|
|
2585
|
+
* Default file name of the workspace's Firestore security rules.
|
|
2586
|
+
*/ var DEFAULT_FIRESTORE_RULES_FILE_NAME = 'firestore.rules';
|
|
2587
|
+
/**
|
|
2588
|
+
* Reads the workspace's Firestore rules file by walking up from the given module/path.
|
|
2589
|
+
*
|
|
2590
|
+
* @param config - The starting location and optional file name.
|
|
2591
|
+
* @returns The contents of the rules file.
|
|
2592
|
+
* @throws {Error} When no rules file is found at or above the starting location.
|
|
2593
|
+
*/ function readFirestoreRulesFile(config) {
|
|
2594
|
+
var from = config.from, _config_fileName = config.fileName, fileName = _config_fileName === void 0 ? DEFAULT_FIRESTORE_RULES_FILE_NAME : _config_fileName;
|
|
2595
|
+
var startPath = from.startsWith('file:') ? node_path.dirname(node_url.fileURLToPath(from)) : from;
|
|
2596
|
+
var directory = startPath;
|
|
2597
|
+
var found = null;
|
|
2598
|
+
// walk up to the filesystem root looking for the rules file.
|
|
2599
|
+
while(!found){
|
|
2600
|
+
var candidate = node_path.join(directory, fileName !== null && fileName !== void 0 ? fileName : DEFAULT_FIRESTORE_RULES_FILE_NAME);
|
|
2601
|
+
if (node_fs.existsSync(candidate)) {
|
|
2602
|
+
found = candidate;
|
|
2603
|
+
} else {
|
|
2604
|
+
var parent = node_path.dirname(directory);
|
|
2605
|
+
if (parent === directory) {
|
|
2606
|
+
break;
|
|
2607
|
+
}
|
|
2608
|
+
directory = parent;
|
|
2609
|
+
}
|
|
2610
|
+
}
|
|
2611
|
+
if (!found) {
|
|
2612
|
+
throw new Error('readFirestoreRulesFile(): could not find "'.concat(fileName, '" at or above "').concat(startPath, '".'));
|
|
2613
|
+
}
|
|
2614
|
+
return node_fs.readFileSync(found, 'utf8');
|
|
2615
|
+
}
|
|
2616
|
+
/**
|
|
2617
|
+
* Registers vitest hooks that initialize a Firestore security-rules test environment, and invokes
|
|
2618
|
+
* the given callback with a {@link FirestoreRulesTestFixture}.
|
|
2619
|
+
*
|
|
2620
|
+
* The environment is created once per suite (`beforeAll`), torn down once (`afterAll`), and the
|
|
2621
|
+
* Firestore data is cleared between tests (`beforeEach`).
|
|
2622
|
+
*
|
|
2623
|
+
* @param config - The project id and rules to load.
|
|
2624
|
+
* @returns A function that takes the test body builder.
|
|
2625
|
+
*
|
|
2626
|
+
* @example
|
|
2627
|
+
* ```ts
|
|
2628
|
+
* const rulesTest = firestoreRulesTestBuilder({
|
|
2629
|
+
* projectId: 'demo-api-rules-test',
|
|
2630
|
+
* rules: readFirestoreRulesFile({ from: import.meta.url })
|
|
2631
|
+
* });
|
|
2632
|
+
*
|
|
2633
|
+
* describe('firestore.rules', () => {
|
|
2634
|
+
* rulesTest((f) => {
|
|
2635
|
+
* it('allows the owner to read their own document', async () => {
|
|
2636
|
+
* await assertSucceeds(getDoc(doc(f.firestoreForUser('a'), 'uec', 'a')));
|
|
2637
|
+
* });
|
|
2638
|
+
* });
|
|
2639
|
+
* });
|
|
2640
|
+
* ```
|
|
2641
|
+
*/ function firestoreRulesTestBuilder(config) {
|
|
2642
|
+
var projectId = config.projectId, rules = config.rules, firestore = config.firestore;
|
|
2643
|
+
return function(buildTests) {
|
|
2644
|
+
var rulesTestEnvironment;
|
|
2645
|
+
var contextFirestore = function contextFirestore(context) {
|
|
2646
|
+
return context.firestore();
|
|
2647
|
+
};
|
|
2648
|
+
var fixture = {
|
|
2649
|
+
get rulesTestEnvironment () {
|
|
2650
|
+
return rulesTestEnvironment;
|
|
2651
|
+
},
|
|
2652
|
+
firestoreForUser: function firestoreForUser(userId, tokenOptions) {
|
|
2653
|
+
return contextFirestore(rulesTestEnvironment.authenticatedContext(userId, tokenOptions !== null && tokenOptions !== void 0 ? tokenOptions : undefined));
|
|
2654
|
+
},
|
|
2655
|
+
unauthenticatedFirestore: function unauthenticatedFirestore() {
|
|
2656
|
+
return contextFirestore(rulesTestEnvironment.unauthenticatedContext());
|
|
2657
|
+
},
|
|
2658
|
+
withSecurityRulesDisabled: function withSecurityRulesDisabled(fn) {
|
|
2659
|
+
return rulesTestEnvironment.withSecurityRulesDisabled(function(context) {
|
|
2660
|
+
return fn(contextFirestore(context));
|
|
2661
|
+
});
|
|
2662
|
+
}
|
|
2663
|
+
};
|
|
2664
|
+
beforeAll(function() {
|
|
2665
|
+
return _async_to_generator$5(function() {
|
|
2666
|
+
return _ts_generator$5(this, function(_state) {
|
|
2667
|
+
switch(_state.label){
|
|
2668
|
+
case 0:
|
|
2669
|
+
return [
|
|
2670
|
+
4,
|
|
2671
|
+
rulesUnitTesting.initializeTestEnvironment({
|
|
2672
|
+
projectId: projectId,
|
|
2673
|
+
firestore: _object_spread$1({
|
|
2674
|
+
rules: rules
|
|
2675
|
+
}, firestore)
|
|
2676
|
+
})
|
|
2677
|
+
];
|
|
2678
|
+
case 1:
|
|
2679
|
+
rulesTestEnvironment = _state.sent();
|
|
2680
|
+
return [
|
|
2681
|
+
2
|
|
2682
|
+
];
|
|
2683
|
+
}
|
|
2684
|
+
});
|
|
2685
|
+
})();
|
|
2686
|
+
});
|
|
2687
|
+
afterAll(function() {
|
|
2688
|
+
return _async_to_generator$5(function() {
|
|
2689
|
+
return _ts_generator$5(this, function(_state) {
|
|
2690
|
+
switch(_state.label){
|
|
2691
|
+
case 0:
|
|
2692
|
+
if (!rulesTestEnvironment) return [
|
|
2693
|
+
3,
|
|
2694
|
+
2
|
|
2695
|
+
];
|
|
2696
|
+
return [
|
|
2697
|
+
4,
|
|
2698
|
+
rulesTestEnvironment.cleanup().catch(function(e) {
|
|
2699
|
+
console.warn('firestoreRulesTestBuilder(): Failed to cleanup rules test environment', e);
|
|
2700
|
+
throw e;
|
|
2701
|
+
})
|
|
2702
|
+
];
|
|
2703
|
+
case 1:
|
|
2704
|
+
_state.sent();
|
|
2705
|
+
_state.label = 2;
|
|
2706
|
+
case 2:
|
|
2707
|
+
return [
|
|
2708
|
+
2
|
|
2709
|
+
];
|
|
2710
|
+
}
|
|
2711
|
+
});
|
|
2712
|
+
})();
|
|
2713
|
+
});
|
|
2714
|
+
beforeEach(function() {
|
|
2715
|
+
return _async_to_generator$5(function() {
|
|
2716
|
+
return _ts_generator$5(this, function(_state) {
|
|
2717
|
+
switch(_state.label){
|
|
2718
|
+
case 0:
|
|
2719
|
+
return [
|
|
2720
|
+
4,
|
|
2721
|
+
rulesTestEnvironment.clearFirestore()
|
|
2722
|
+
];
|
|
2723
|
+
case 1:
|
|
2724
|
+
_state.sent();
|
|
2725
|
+
return [
|
|
2726
|
+
2
|
|
2727
|
+
];
|
|
2728
|
+
}
|
|
2729
|
+
});
|
|
2730
|
+
})();
|
|
2731
|
+
});
|
|
2732
|
+
buildTests(fixture);
|
|
2733
|
+
};
|
|
2734
|
+
}
|
|
2735
|
+
|
|
2426
2736
|
function _assert_this_initialized$1(self) {
|
|
2427
2737
|
if (self === void 0) {
|
|
2428
2738
|
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
@@ -13687,8 +13997,17 @@ function _ts_generator(thisArg, body) {
|
|
|
13687
13997
|
});
|
|
13688
13998
|
}
|
|
13689
13999
|
|
|
14000
|
+
Object.defineProperty(exports, "assertFails", {
|
|
14001
|
+
enumerable: true,
|
|
14002
|
+
get: function () { return rulesUnitTesting.assertFails; }
|
|
14003
|
+
});
|
|
14004
|
+
Object.defineProperty(exports, "assertSucceeds", {
|
|
14005
|
+
enumerable: true,
|
|
14006
|
+
get: function () { return rulesUnitTesting.assertSucceeds; }
|
|
14007
|
+
});
|
|
13690
14008
|
exports.AUTHORIZED_FIRESTORE_RULES = AUTHORIZED_FIRESTORE_RULES;
|
|
13691
14009
|
exports.AUTHORIZED_STORAGE_RULES = AUTHORIZED_STORAGE_RULES;
|
|
14010
|
+
exports.DEFAULT_FIRESTORE_RULES_FILE_NAME = DEFAULT_FIRESTORE_RULES_FILE_NAME;
|
|
13692
14011
|
exports.DEFAULT_MOCK_ITEM_PAGED_MAX_ITEMS_PER_PAGE = DEFAULT_MOCK_ITEM_PAGED_MAX_ITEMS_PER_PAGE;
|
|
13693
14012
|
exports.MOCK_FIREBASE_MODEL_SERVICE_FACTORIES = MOCK_FIREBASE_MODEL_SERVICE_FACTORIES;
|
|
13694
14013
|
exports.MOCK_ITEM_PAGED_ALPHA_DISTRIBUTION_SCHEME = MOCK_ITEM_PAGED_ALPHA_DISTRIBUTION_SCHEME;
|
|
@@ -13731,6 +14050,7 @@ exports.describeFirestoreDocumentUtilityTests = describeFirestoreDocumentUtility
|
|
|
13731
14050
|
exports.describeFirestoreIterationTests = describeFirestoreIterationTests;
|
|
13732
14051
|
exports.describeFirestoreQueryDriverTests = describeFirestoreQueryDriverTests;
|
|
13733
14052
|
exports.firebaseRulesUnitTestBuilder = firebaseRulesUnitTestBuilder;
|
|
14053
|
+
exports.firestoreRulesTestBuilder = firestoreRulesTestBuilder;
|
|
13734
14054
|
exports.makeMockItemCollections = makeMockItemCollections;
|
|
13735
14055
|
exports.makeRulesTestFirebaseStorageContext = makeRulesTestFirebaseStorageContext;
|
|
13736
14056
|
exports.makeRulesTestFirestoreContext = makeRulesTestFirestoreContext;
|
|
@@ -13783,5 +14103,6 @@ exports.mockItemUserFirestoreCollectionGroup = mockItemUserFirestoreCollectionGr
|
|
|
13783
14103
|
exports.mockItemUserIdentity = mockItemUserIdentity;
|
|
13784
14104
|
exports.mockItemWithTestValue = mockItemWithTestValue;
|
|
13785
14105
|
exports.mockItemWithValue = mockItemWithValue;
|
|
14106
|
+
exports.readFirestoreRulesFile = readFirestoreRulesFile;
|
|
13786
14107
|
exports.testWithMockItemCollectionFixture = testWithMockItemCollectionFixture;
|
|
13787
14108
|
exports.testWithMockItemStorageFixture = testWithMockItemStorageFixture;
|