@dereekb/firebase 2.0.0 → 4.0.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.
Files changed (264) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/package.json +24 -9
  3. package/src/index.d.ts +0 -1
  4. package/src/index.js +1 -2
  5. package/src/index.js.map +1 -1
  6. package/src/lib/client/firestore/driver.accessor.batch.d.ts +31 -0
  7. package/src/lib/{firestore/accessor.batch.js → client/firestore/driver.accessor.batch.js} +22 -4
  8. package/src/lib/client/firestore/driver.accessor.batch.js.map +1 -0
  9. package/src/lib/client/firestore/driver.accessor.d.ts +2 -0
  10. package/src/lib/{firestore/accessor.default.d.ts → client/firestore/driver.accessor.default.d.ts} +4 -11
  11. package/src/lib/{firestore/accessor.default.js → client/firestore/driver.accessor.default.js} +17 -13
  12. package/src/lib/client/firestore/driver.accessor.default.js.map +1 -0
  13. package/src/lib/client/firestore/driver.accessor.js +23 -0
  14. package/src/lib/client/firestore/driver.accessor.js.map +1 -0
  15. package/src/lib/client/firestore/driver.accessor.transaction.d.ts +31 -0
  16. package/src/lib/{firestore/accessor.transaction.js → client/firestore/driver.accessor.transaction.js} +22 -4
  17. package/src/lib/client/firestore/driver.accessor.transaction.js.map +1 -0
  18. package/src/lib/client/firestore/driver.d.ts +4 -0
  19. package/src/lib/client/firestore/driver.js +15 -0
  20. package/src/lib/client/firestore/driver.js.map +1 -0
  21. package/src/lib/client/firestore/driver.query.d.ts +13 -0
  22. package/src/lib/client/firestore/driver.query.js +47 -0
  23. package/src/lib/client/firestore/driver.query.js.map +1 -0
  24. package/src/lib/client/firestore/firestore.d.ts +5 -0
  25. package/src/lib/client/firestore/firestore.js +10 -0
  26. package/src/lib/client/firestore/firestore.js.map +1 -0
  27. package/src/lib/client/firestore/index.d.ts +4 -0
  28. package/src/lib/client/firestore/index.js +8 -0
  29. package/src/lib/client/firestore/index.js.map +1 -0
  30. package/src/lib/client/function/function.d.ts +28 -0
  31. package/src/lib/client/function/function.factory.d.ts +40 -0
  32. package/src/lib/client/function/function.factory.js +36 -0
  33. package/src/lib/client/function/function.factory.js.map +1 -0
  34. package/src/lib/client/function/function.js +3 -0
  35. package/src/lib/client/function/function.js.map +1 -0
  36. package/src/lib/client/function/index.d.ts +2 -0
  37. package/src/lib/client/function/index.js +6 -0
  38. package/src/lib/client/function/index.js.map +1 -0
  39. package/src/lib/client/index.d.ts +2 -0
  40. package/src/lib/client/index.js +6 -0
  41. package/src/lib/client/index.js.map +1 -0
  42. package/src/lib/common/auth/auth.d.ts +4 -0
  43. package/src/lib/common/auth/auth.js +3 -0
  44. package/src/lib/common/auth/auth.js.map +1 -0
  45. package/src/lib/common/auth/index.d.ts +1 -0
  46. package/src/lib/common/auth/index.js +5 -0
  47. package/src/lib/common/auth/index.js.map +1 -0
  48. package/src/lib/common/firestore/accessor/accessor.batch.d.ts +3 -0
  49. package/src/lib/common/firestore/accessor/accessor.batch.js +3 -0
  50. package/src/lib/common/firestore/accessor/accessor.batch.js.map +1 -0
  51. package/src/lib/common/firestore/accessor/accessor.d.ts +87 -0
  52. package/src/lib/common/firestore/accessor/accessor.default.d.ts +2 -0
  53. package/src/lib/common/firestore/accessor/accessor.default.js +3 -0
  54. package/src/lib/common/firestore/accessor/accessor.default.js.map +1 -0
  55. package/src/lib/{firestore → common/firestore/accessor}/accessor.js +17 -1
  56. package/src/lib/common/firestore/accessor/accessor.js.map +1 -0
  57. package/src/lib/common/firestore/accessor/accessor.transaction.d.ts +3 -0
  58. package/src/lib/common/firestore/accessor/accessor.transaction.js +3 -0
  59. package/src/lib/common/firestore/accessor/accessor.transaction.js.map +1 -0
  60. package/src/lib/common/firestore/accessor/context.batch.d.ts +7 -0
  61. package/src/lib/common/firestore/accessor/context.batch.js +3 -0
  62. package/src/lib/common/firestore/accessor/context.batch.js.map +1 -0
  63. package/src/lib/{firestore → common/firestore/accessor}/context.d.ts +0 -0
  64. package/src/lib/common/firestore/accessor/context.default.d.ts +5 -0
  65. package/src/lib/common/firestore/accessor/context.default.js +3 -0
  66. package/src/lib/common/firestore/accessor/context.default.js.map +1 -0
  67. package/src/lib/{firestore → common/firestore/accessor}/context.js +0 -0
  68. package/src/lib/common/firestore/accessor/context.js.map +1 -0
  69. package/src/lib/common/firestore/accessor/context.transaction.d.ts +7 -0
  70. package/src/lib/common/firestore/accessor/context.transaction.js +3 -0
  71. package/src/lib/common/firestore/accessor/context.transaction.js.map +1 -0
  72. package/src/lib/common/firestore/accessor/document.d.ts +121 -0
  73. package/src/lib/common/firestore/accessor/document.js +106 -0
  74. package/src/lib/common/firestore/accessor/document.js.map +1 -0
  75. package/src/lib/common/firestore/accessor/document.utility.d.ts +43 -0
  76. package/src/lib/common/firestore/accessor/document.utility.js +74 -0
  77. package/src/lib/common/firestore/accessor/document.utility.js.map +1 -0
  78. package/src/lib/{firestore → common/firestore/accessor}/index.d.ts +3 -5
  79. package/src/lib/common/firestore/accessor/index.js +14 -0
  80. package/src/lib/common/firestore/accessor/index.js.map +1 -0
  81. package/src/lib/common/firestore/collection/collection.d.ts +27 -0
  82. package/src/lib/common/firestore/collection/collection.js +26 -0
  83. package/src/lib/common/firestore/collection/collection.js.map +1 -0
  84. package/src/lib/common/firestore/collection/collection.query.d.ts +36 -0
  85. package/src/lib/common/firestore/collection/collection.query.js +27 -0
  86. package/src/lib/common/firestore/collection/collection.query.js.map +1 -0
  87. package/src/lib/common/firestore/collection/index.d.ts +3 -0
  88. package/src/lib/common/firestore/collection/index.js +7 -0
  89. package/src/lib/common/firestore/collection/index.js.map +1 -0
  90. package/src/lib/common/firestore/collection/subcollection.d.ts +25 -0
  91. package/src/lib/common/firestore/collection/subcollection.js +14 -0
  92. package/src/lib/common/firestore/collection/subcollection.js.map +1 -0
  93. package/src/lib/common/firestore/collection/subcollection.single.d.ts +12 -0
  94. package/src/lib/common/firestore/collection/subcollection.single.js +14 -0
  95. package/src/lib/common/firestore/collection/subcollection.single.js.map +1 -0
  96. package/src/lib/common/firestore/context.d.ts +36 -0
  97. package/src/lib/common/firestore/context.js +36 -0
  98. package/src/lib/common/firestore/context.js.map +1 -0
  99. package/src/lib/common/firestore/driver/accessor.d.ts +26 -0
  100. package/src/lib/common/firestore/driver/accessor.js +3 -0
  101. package/src/lib/common/firestore/driver/accessor.js.map +1 -0
  102. package/src/lib/common/firestore/driver/batch.d.ts +22 -0
  103. package/src/lib/common/firestore/driver/batch.js +3 -0
  104. package/src/lib/common/firestore/driver/batch.js.map +1 -0
  105. package/src/lib/common/firestore/driver/driver.d.ts +11 -0
  106. package/src/lib/common/firestore/driver/driver.js +3 -0
  107. package/src/lib/common/firestore/driver/driver.js.map +1 -0
  108. package/src/lib/common/firestore/driver/index.d.ts +6 -0
  109. package/src/lib/common/firestore/driver/index.js +10 -0
  110. package/src/lib/common/firestore/driver/index.js.map +1 -0
  111. package/src/lib/common/firestore/driver/query.d.ts +31 -0
  112. package/src/lib/common/firestore/driver/query.handler.d.ts +9 -0
  113. package/src/lib/common/firestore/driver/query.handler.js +26 -0
  114. package/src/lib/common/firestore/driver/query.handler.js.map +1 -0
  115. package/src/lib/common/firestore/driver/query.js +3 -0
  116. package/src/lib/common/firestore/driver/query.js.map +1 -0
  117. package/src/lib/common/firestore/driver/transaction.d.ts +23 -0
  118. package/src/lib/common/firestore/driver/transaction.js +3 -0
  119. package/src/lib/common/firestore/driver/transaction.js.map +1 -0
  120. package/src/lib/common/firestore/index.d.ts +8 -0
  121. package/src/lib/common/firestore/index.js +12 -0
  122. package/src/lib/common/firestore/index.js.map +1 -0
  123. package/src/lib/common/firestore/query/accumulator.d.ts +24 -0
  124. package/src/lib/common/firestore/query/accumulator.js +22 -0
  125. package/src/lib/common/firestore/query/accumulator.js.map +1 -0
  126. package/src/lib/common/firestore/query/constraint.d.ts +112 -0
  127. package/src/lib/common/firestore/query/constraint.js +133 -0
  128. package/src/lib/common/firestore/query/constraint.js.map +1 -0
  129. package/src/lib/common/firestore/query/index.d.ts +6 -0
  130. package/src/lib/common/firestore/query/index.js +10 -0
  131. package/src/lib/common/firestore/query/index.js.map +1 -0
  132. package/src/lib/{firestore → common/firestore/query}/iterator.d.ts +37 -11
  133. package/src/lib/common/firestore/query/iterator.js +108 -0
  134. package/src/lib/common/firestore/query/iterator.js.map +1 -0
  135. package/src/lib/common/firestore/query/query.d.ts +49 -0
  136. package/src/lib/common/firestore/query/query.js +37 -0
  137. package/src/lib/common/firestore/query/query.js.map +1 -0
  138. package/src/lib/common/firestore/query/query.util.d.ts +16 -0
  139. package/src/lib/common/firestore/query/query.util.js +27 -0
  140. package/src/lib/common/firestore/query/query.util.js.map +1 -0
  141. package/src/lib/common/firestore/query/watcher.d.ts +34 -0
  142. package/src/lib/common/firestore/query/watcher.js +58 -0
  143. package/src/lib/common/firestore/query/watcher.js.map +1 -0
  144. package/src/lib/common/firestore/reference.d.ts +20 -0
  145. package/src/lib/{firestore → common/firestore}/reference.js +0 -0
  146. package/src/lib/common/firestore/reference.js.map +1 -0
  147. package/src/lib/common/firestore/snapshot/index.d.ts +2 -0
  148. package/src/lib/common/firestore/snapshot/index.js +6 -0
  149. package/src/lib/common/firestore/snapshot/index.js.map +1 -0
  150. package/src/lib/common/firestore/snapshot/snapshot.d.ts +13 -0
  151. package/src/lib/common/firestore/snapshot/snapshot.field.d.ts +25 -0
  152. package/src/lib/common/firestore/snapshot/snapshot.field.js +57 -0
  153. package/src/lib/common/firestore/snapshot/snapshot.field.js.map +1 -0
  154. package/src/lib/common/firestore/snapshot/snapshot.js +35 -0
  155. package/src/lib/common/firestore/snapshot/snapshot.js.map +1 -0
  156. package/src/lib/common/firestore/types.d.ts +145 -0
  157. package/src/lib/common/firestore/types.js +23 -0
  158. package/src/lib/common/firestore/types.js.map +1 -0
  159. package/src/lib/common/function/action.d.ts +3 -0
  160. package/src/lib/common/function/action.js +3 -0
  161. package/src/lib/common/function/action.js.map +1 -0
  162. package/src/lib/common/function/index.d.ts +1 -0
  163. package/src/lib/common/function/index.js +5 -0
  164. package/src/lib/common/function/index.js.map +1 -0
  165. package/src/lib/common/index.d.ts +3 -0
  166. package/src/lib/common/index.js +7 -0
  167. package/src/lib/common/index.js.map +1 -0
  168. package/src/lib/index.d.ts +3 -1
  169. package/src/lib/index.js +3 -1
  170. package/src/lib/index.js.map +1 -1
  171. package/src/lib/model/index.d.ts +1 -0
  172. package/src/lib/model/index.js +5 -0
  173. package/src/lib/model/index.js.map +1 -0
  174. package/src/lib/model/user.d.ts +12 -0
  175. package/src/lib/model/user.js +3 -0
  176. package/src/lib/model/user.js.map +1 -0
  177. package/test/CHANGELOG.md +5 -0
  178. package/test/README.md +11 -0
  179. package/test/package.json +28 -0
  180. package/test/src/index.d.ts +1 -0
  181. package/test/src/index.js +5 -0
  182. package/test/src/index.js.map +1 -0
  183. package/test/src/lib/client/firestore.authorized.d.ts +5 -0
  184. package/{src/test/firebase.context.js → test/src/lib/client/firestore.authorized.js} +4 -4
  185. package/test/src/lib/client/firestore.authorized.js.map +1 -0
  186. package/test/src/lib/client/firestore.d.ts +39 -0
  187. package/test/src/lib/client/firestore.js +90 -0
  188. package/test/src/lib/client/firestore.js.map +1 -0
  189. package/test/src/lib/client/firestore.mock.item.fixture.authorized.d.ts +6 -0
  190. package/test/src/lib/client/firestore.mock.item.fixture.authorized.js +12 -0
  191. package/test/src/lib/client/firestore.mock.item.fixture.authorized.js.map +1 -0
  192. package/test/src/lib/client/index.d.ts +3 -0
  193. package/test/src/lib/client/index.js +7 -0
  194. package/test/src/lib/client/index.js.map +1 -0
  195. package/test/src/lib/common/firestore.d.ts +35 -0
  196. package/test/src/lib/common/firestore.js +50 -0
  197. package/test/src/lib/common/firestore.js.map +1 -0
  198. package/test/src/lib/common/firestore.mock.d.ts +14 -0
  199. package/test/src/lib/common/firestore.mock.item.d.ts +95 -0
  200. package/test/src/lib/common/firestore.mock.item.fixture.d.ts +21 -0
  201. package/test/src/lib/common/firestore.mock.item.fixture.js +43 -0
  202. package/test/src/lib/common/firestore.mock.item.fixture.js.map +1 -0
  203. package/test/src/lib/common/firestore.mock.item.js +138 -0
  204. package/test/src/lib/common/firestore.mock.item.js.map +1 -0
  205. package/test/src/lib/common/firestore.mock.item.query.d.ts +3 -0
  206. package/test/src/lib/common/firestore.mock.item.query.js +13 -0
  207. package/test/src/lib/common/firestore.mock.item.query.js.map +1 -0
  208. package/test/src/lib/common/firestore.mock.js +29 -0
  209. package/test/src/lib/common/firestore.mock.js.map +1 -0
  210. package/test/src/lib/common/index.d.ts +8 -0
  211. package/test/src/lib/common/index.js +12 -0
  212. package/test/src/lib/common/index.js.map +1 -0
  213. package/test/src/lib/common/test.driver.accessor.d.ts +17 -0
  214. package/test/src/lib/common/test.driver.accessor.js +278 -0
  215. package/test/src/lib/common/test.driver.accessor.js.map +1 -0
  216. package/test/src/lib/common/test.driver.query.d.ts +7 -0
  217. package/test/src/lib/common/test.driver.query.js +189 -0
  218. package/test/src/lib/common/test.driver.query.js.map +1 -0
  219. package/test/src/lib/common/test.iterator.d.ts +7 -0
  220. package/test/src/lib/common/test.iterator.js +222 -0
  221. package/test/src/lib/common/test.iterator.js.map +1 -0
  222. package/test/src/lib/index.d.ts +2 -0
  223. package/test/src/lib/index.js +6 -0
  224. package/test/src/lib/index.js.map +1 -0
  225. package/src/lib/firestore/accessor.batch.d.ts +0 -23
  226. package/src/lib/firestore/accessor.batch.js.map +0 -1
  227. package/src/lib/firestore/accessor.d.ts +0 -62
  228. package/src/lib/firestore/accessor.default.js.map +0 -1
  229. package/src/lib/firestore/accessor.js.map +0 -1
  230. package/src/lib/firestore/accessor.transaction.d.ts +0 -23
  231. package/src/lib/firestore/accessor.transaction.js.map +0 -1
  232. package/src/lib/firestore/context.batch.d.ts +0 -9
  233. package/src/lib/firestore/context.batch.js +0 -19
  234. package/src/lib/firestore/context.batch.js.map +0 -1
  235. package/src/lib/firestore/context.default.d.ts +0 -2
  236. package/src/lib/firestore/context.default.js +0 -13
  237. package/src/lib/firestore/context.default.js.map +0 -1
  238. package/src/lib/firestore/context.js.map +0 -1
  239. package/src/lib/firestore/context.transaction.d.ts +0 -9
  240. package/src/lib/firestore/context.transaction.js +0 -19
  241. package/src/lib/firestore/context.transaction.js.map +0 -1
  242. package/src/lib/firestore/document.d.ts +0 -69
  243. package/src/lib/firestore/document.js +0 -49
  244. package/src/lib/firestore/document.js.map +0 -1
  245. package/src/lib/firestore/firestore.d.ts +0 -29
  246. package/src/lib/firestore/firestore.js +0 -37
  247. package/src/lib/firestore/firestore.js.map +0 -1
  248. package/src/lib/firestore/index.js +0 -16
  249. package/src/lib/firestore/index.js.map +0 -1
  250. package/src/lib/firestore/iterator.js +0 -91
  251. package/src/lib/firestore/iterator.js.map +0 -1
  252. package/src/lib/firestore/reference.d.ts +0 -13
  253. package/src/lib/firestore/reference.js.map +0 -1
  254. package/src/test/firebase.context.d.ts +0 -5
  255. package/src/test/firebase.context.item.d.ts +0 -41
  256. package/src/test/firebase.context.item.js +0 -75
  257. package/src/test/firebase.context.item.js.map +0 -1
  258. package/src/test/firebase.context.js.map +0 -1
  259. package/src/test/firebase.d.ts +0 -29
  260. package/src/test/firebase.js +0 -67
  261. package/src/test/firebase.js.map +0 -1
  262. package/src/test/index.d.ts +0 -3
  263. package/src/test/index.js +0 -7
  264. package/src/test/index.js.map +0 -1
@@ -0,0 +1,12 @@
1
+ import { FirebaseAuthUserId } from "../common/auth/auth";
2
+ /**
3
+ * The model is related to a user with the model's uid.
4
+ */
5
+ export interface UserRelated {
6
+ uid: FirebaseAuthUserId;
7
+ }
8
+ /**
9
+ * The model is related to a user by the model's own identifier.
10
+ */
11
+ export interface UserRelatedById {
12
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../../../../packages/firebase/src/lib/model/user.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ # Changelog
2
+
3
+ This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
+
5
+ # [4.0.0](https://github.com/dereekb/dbx-components/compare/v3.0.0...v4.0.0) (2022-05-14)
package/test/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # firebase-test
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Running unit tests
6
+
7
+ Run `nx test firebase-test` to execute the unit tests via [Jest](https://jestjs.io).
8
+
9
+ ## Running lint
10
+
11
+ Run `nx lint firebase-test` to execute the lint via [ESLint](https://eslint.org/).
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@dereekb/firebase/test",
3
+ "version": "4.0.0",
4
+ "main": "./src/index.js",
5
+ "typings": "./src/index.d.ts",
6
+ "dependencies": {},
7
+ "peerDependencies": {
8
+ "@dereekb/util/test": "4.0.0",
9
+ "@dereekb/util": "4.0.0",
10
+ "make-error": "^1.3.0",
11
+ "extra-set": "^2.2.11",
12
+ "change-case": "^4.1.2",
13
+ "@dereekb/firebase": "4.0.0",
14
+ "rxjs": "^7.0.0",
15
+ "rxfire": "^6.0.3",
16
+ "firebase": "^9.8.0",
17
+ "@dereekb/rxjs": "4.0.0",
18
+ "ms": "^3.0.0-canary.1",
19
+ "@dereekb/date": "4.0.0",
20
+ "class-transformer": "^0.5.1",
21
+ "date-fns": "^2.28.0",
22
+ "class-validator": "^0.13.2",
23
+ "date-fns-tz": "^1.3.0",
24
+ "rrule": "git+https://git@github.com/dereekb/rrule.git#17adf5708d6567b4d01a3a8afd106261421ea492",
25
+ "@dereekb/model": "4.0.0",
26
+ "tslib": "^2.0.0"
27
+ }
28
+ }
@@ -0,0 +1 @@
1
+ export * from './lib';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./lib"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/firebase/test/src/index.ts"],"names":[],"mappings":";;;AAAA,gDAAsB"}
@@ -0,0 +1,5 @@
1
+ import { JestTestContextFactory } from '@dereekb/util/test';
2
+ import { RulesUnitTestFirebaseTestingContextFixture } from './firestore';
3
+ export declare const TESTING_AUTHORIZED_FIREBASE_USER_ID = "0";
4
+ export declare type FirebaseTestContextFactory = JestTestContextFactory<RulesUnitTestFirebaseTestingContextFixture>;
5
+ export declare const authorizedFirestoreFactory: FirebaseTestContextFactory;
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.authorizedFirebase = exports.TESTING_AUTHORIZED_FIREBASE_USER_ID = void 0;
4
- const firebase_1 = require("./firebase");
3
+ exports.authorizedFirestoreFactory = exports.TESTING_AUTHORIZED_FIREBASE_USER_ID = void 0;
4
+ const firestore_1 = require("./firestore");
5
5
  exports.TESTING_AUTHORIZED_FIREBASE_USER_ID = '0';
6
- exports.authorizedFirebase = (0, firebase_1.firebaseTestBuilder)({
6
+ exports.authorizedFirestoreFactory = (0, firestore_1.firestoreTestBuilder)({
7
7
  testEnvironment: {
8
8
  firestore: {
9
9
  rules: `
@@ -20,4 +20,4 @@ exports.authorizedFirebase = (0, firebase_1.firebaseTestBuilder)({
20
20
  },
21
21
  rulesContext: { userId: exports.TESTING_AUTHORIZED_FIREBASE_USER_ID }
22
22
  });
23
- //# sourceMappingURL=firebase.context.js.map
23
+ //# sourceMappingURL=firestore.authorized.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firestore.authorized.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/test/src/lib/client/firestore.authorized.ts"],"names":[],"mappings":";;;AACA,2CAA+F;AAElF,QAAA,mCAAmC,GAAG,GAAG,CAAC;AAI1C,QAAA,0BAA0B,GAA+B,IAAA,gCAAoB,EAAC;IACzF,eAAe,EAAE;QACf,SAAS,EAAE;YACT,KAAK,EAAE;;;;;;;;;OASN;SACF;KACF;IACD,YAAY,EAAE,EAAE,MAAM,EAAE,2CAAmC,EAAE;CAC9D,CAAC,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { TestFirestoreContext, TestingFirestoreDrivers } from '../common/firestore';
2
+ import { Maybe } from '@dereekb/util';
3
+ import { TestEnvironmentConfig, RulesTestEnvironment, RulesTestContext, TokenOptions, EmulatorConfig } from "@firebase/rules-unit-testing";
4
+ import { TestFirestoreContextFixture, TestFirestoreInstance } from '../common/firestore.mock';
5
+ export interface RulesUnitTestingContextConfig {
6
+ userId: string;
7
+ tokenOptions?: Maybe<TokenOptions>;
8
+ }
9
+ export interface RulesUnitTestingTestEnvironmentConfig extends TestEnvironmentConfig {
10
+ /**
11
+ * List of collection names used in the environment. Is required if using testing drivers.
12
+ */
13
+ collectionNames?: string[];
14
+ firestore?: EmulatorConfig;
15
+ }
16
+ export interface RulesUnitTestingConfig {
17
+ clearFirestoreBetweenTests?: boolean;
18
+ testEnvironment: RulesUnitTestingTestEnvironmentConfig;
19
+ rulesContext?: Maybe<RulesUnitTestingContextConfig>;
20
+ }
21
+ export interface RulesUnitTestTestFirestoreContext extends TestFirestoreContext {
22
+ readonly rulesTestEnvironment: RulesTestEnvironment;
23
+ readonly rulesTestContext: RulesTestContext;
24
+ }
25
+ export declare function makeRulesTestFirestoreContext(drivers: TestingFirestoreDrivers, rulesTestEnvironment: RulesTestEnvironment, rulesTestContext: RulesTestContext): TestFirestoreContext;
26
+ export declare class RulesUnitTestTestFirestoreInstance extends TestFirestoreInstance {
27
+ readonly rulesTestEnvironment: RulesTestEnvironment;
28
+ readonly rulesTestContext: RulesTestContext;
29
+ constructor(drivers: TestingFirestoreDrivers, rulesTestEnvironment: RulesTestEnvironment, rulesTestContext: RulesTestContext);
30
+ }
31
+ export declare class RulesUnitTestFirebaseTestingContextFixture extends TestFirestoreContextFixture<RulesUnitTestTestFirestoreInstance> {
32
+ }
33
+ /**
34
+ * A JestTestContextBuilderFunction for building firebase test context factories using @firebase/firebase and @firebase/rules-unit-testing. This means CLIENT TESTING ONLY. For server testing, look at @dereekb/firestore-server.
35
+ *
36
+ * This can be used to easily build a testing context that sets up RulesTestEnvironment for tests that sets itself up and tears itself down.
37
+ */
38
+ export declare const firestoreTestBuilder: import("@dereekb/util/test").JestTestContextBuilderFunction<RulesUnitTestTestFirestoreInstance, RulesUnitTestFirebaseTestingContextFixture, RulesUnitTestingConfig>;
39
+ export declare function changeFirestoreLogLevelBeforeAndAfterTests(): void;
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.changeFirestoreLogLevelBeforeAndAfterTests = exports.firestoreTestBuilder = exports.RulesUnitTestFirebaseTestingContextFixture = exports.RulesUnitTestTestFirestoreInstance = exports.makeRulesTestFirestoreContext = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const firestore_1 = require("../common/firestore");
6
+ const test_1 = require("@dereekb/util/test");
7
+ const rules_unit_testing_1 = require("@firebase/rules-unit-testing");
8
+ const firestore_mock_1 = require("../common/firestore.mock");
9
+ const firebase_1 = require("@dereekb/firebase");
10
+ const firestore_2 = require("firebase/firestore");
11
+ function makeRulesTestFirestoreContext(drivers, rulesTestEnvironment, rulesTestContext) {
12
+ const context = Object.assign(Object.assign({}, (0, firebase_1.firestoreContextFactory)(drivers)(rulesTestContext.firestore())), { drivers,
13
+ rulesTestContext,
14
+ rulesTestEnvironment });
15
+ return context;
16
+ }
17
+ exports.makeRulesTestFirestoreContext = makeRulesTestFirestoreContext;
18
+ class RulesUnitTestTestFirestoreInstance extends firestore_mock_1.TestFirestoreInstance {
19
+ constructor(drivers, rulesTestEnvironment, rulesTestContext) {
20
+ super(makeRulesTestFirestoreContext(drivers, rulesTestEnvironment, rulesTestContext));
21
+ this.rulesTestEnvironment = rulesTestEnvironment;
22
+ this.rulesTestContext = rulesTestContext;
23
+ }
24
+ }
25
+ exports.RulesUnitTestTestFirestoreInstance = RulesUnitTestTestFirestoreInstance;
26
+ class RulesUnitTestFirebaseTestingContextFixture extends firestore_mock_1.TestFirestoreContextFixture {
27
+ }
28
+ exports.RulesUnitTestFirebaseTestingContextFixture = RulesUnitTestFirebaseTestingContextFixture;
29
+ /**
30
+ * A JestTestContextBuilderFunction for building firebase test context factories using @firebase/firebase and @firebase/rules-unit-testing. This means CLIENT TESTING ONLY. For server testing, look at @dereekb/firestore-server.
31
+ *
32
+ * This can be used to easily build a testing context that sets up RulesTestEnvironment for tests that sets itself up and tears itself down.
33
+ */
34
+ exports.firestoreTestBuilder = (0, test_1.jestTestContextBuilder)({
35
+ buildConfig: (input) => {
36
+ var _a;
37
+ const config = {
38
+ testEnvironment: (_a = input === null || input === void 0 ? void 0 : input.testEnvironment) !== null && _a !== void 0 ? _a : {},
39
+ rulesContext: input === null || input === void 0 ? void 0 : input.rulesContext
40
+ };
41
+ return config;
42
+ },
43
+ buildFixture: () => new RulesUnitTestFirebaseTestingContextFixture(),
44
+ setupInstance: (config) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
45
+ const drivers = (0, firestore_1.makeTestingFirestoreDrivers)((0, firebase_1.firebaseFirestoreClientDrivers)());
46
+ let testEnvironment = config.testEnvironment;
47
+ if (config.testEnvironment.collectionNames) {
48
+ const pathsMap = drivers.firestoreAccessorDriver.initWithCollectionNames(config.testEnvironment.collectionNames);
49
+ testEnvironment = Object.assign(Object.assign({}, testEnvironment), { firestore: rewriteEmulatorConfigRulesForFuzzedCollectionNames(testEnvironment.firestore, pathsMap) });
50
+ }
51
+ const rulesTestEnv = yield (0, rules_unit_testing_1.initializeTestEnvironment)(config.testEnvironment);
52
+ const rulesTestContext = rulesTestContextForConfig(rulesTestEnv, config.rulesContext);
53
+ return new RulesUnitTestTestFirestoreInstance(drivers, rulesTestEnv, rulesTestContext);
54
+ }),
55
+ teardownInstance: (instance, config) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
56
+ if (config.clearFirestoreBetweenTests) {
57
+ yield instance.clearFirestore();
58
+ }
59
+ yield instance.rulesTestEnvironment.cleanup(); // Cleanup
60
+ })
61
+ });
62
+ // MARK: Internal
63
+ function rulesTestContextForConfig(rulesTestEnv, testingRulesConfig) {
64
+ var _a;
65
+ let rulesTestContext;
66
+ if (testingRulesConfig != null) {
67
+ rulesTestContext = rulesTestEnv.authenticatedContext(testingRulesConfig.userId, (_a = testingRulesConfig.tokenOptions) !== null && _a !== void 0 ? _a : undefined);
68
+ }
69
+ else {
70
+ rulesTestContext = rulesTestEnv.unauthenticatedContext();
71
+ }
72
+ return rulesTestContext;
73
+ }
74
+ function rewriteEmulatorConfigRulesForFuzzedCollectionNames(config, fuzzedCollectionNamesMap) {
75
+ if (config && config.rules) {
76
+ config = Object.assign(Object.assign({}, config), { rules: rewriteRulesForFuzzedCollectionNames(config.rules, fuzzedCollectionNamesMap) });
77
+ }
78
+ return config;
79
+ }
80
+ function rewriteRulesForFuzzedCollectionNames(rules, fuzzedCollectionNamesMap) {
81
+ // TODO: rewrite the rules using regex matching/replacement.
82
+ return rules;
83
+ }
84
+ // MARK: Utility
85
+ function changeFirestoreLogLevelBeforeAndAfterTests() {
86
+ beforeAll(() => (0, firestore_2.setLogLevel)('error'));
87
+ afterAll(() => (0, firestore_2.setLogLevel)('warn'));
88
+ }
89
+ exports.changeFirestoreLogLevelBeforeAndAfterTests = changeFirestoreLogLevelBeforeAndAfterTests;
90
+ //# sourceMappingURL=firestore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firestore.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/test/src/lib/client/firestore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Convenience mock instance for tests within an authorized context.
3
+ *
4
+ * Uses @firestore/firebase. This is ONLY for the client.
5
+ */
6
+ export declare const authorizedTestWithMockItemCollection: import("../../../../../../dist/packages/util/test/src").JestTestContextFactory<import("../common/firestore.mock.item.fixture").MockItemCollectionFixture>;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.authorizedTestWithMockItemCollection = void 0;
4
+ const firestore_mock_item_fixture_1 = require("../common/firestore.mock.item.fixture");
5
+ const firestore_authorized_1 = require("./firestore.authorized");
6
+ /**
7
+ * Convenience mock instance for tests within an authorized context.
8
+ *
9
+ * Uses @firestore/firebase. This is ONLY for the client.
10
+ */
11
+ exports.authorizedTestWithMockItemCollection = (0, firestore_mock_item_fixture_1.testWithMockItemFixture)()(firestore_authorized_1.authorizedFirestoreFactory);
12
+ //# sourceMappingURL=firestore.mock.item.fixture.authorized.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firestore.mock.item.fixture.authorized.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/test/src/lib/client/firestore.mock.item.fixture.authorized.ts"],"names":[],"mappings":";;;AAAA,uFAAgF;AAChF,iEAAoE;AAEpE;;;;GAIG;AACU,QAAA,oCAAoC,GAAG,IAAA,qDAAuB,GAAE,CAAC,iDAA0B,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './firestore.authorized';
2
+ export * from './firestore.mock.item.fixture.authorized';
3
+ export * from './firestore';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./firestore.authorized"), exports);
5
+ tslib_1.__exportStar(require("./firestore.mock.item.fixture.authorized"), exports);
6
+ tslib_1.__exportStar(require("./firestore"), exports);
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/test/src/lib/client/index.ts"],"names":[],"mappings":";;;AAAA,iEAAuC;AACvC,mFAAyD;AACzD,sDAA4B"}
@@ -0,0 +1,35 @@
1
+ import { FirestoreAccessorDriver, FirestoreContext, FirestoreDrivers } from '@dereekb/firebase';
2
+ export interface TestingFirestoreAccessorDriver extends FirestoreAccessorDriver {
3
+ /**
4
+ * Gets the fuzzed path names map.
5
+ */
6
+ getFuzzedCollectionsNameMap(): Map<string, string>;
7
+ /**
8
+ * Initializes fuzzed path names for the input collections. Returns the result of getFuzzedCollectionsNameMap().
9
+ *
10
+ * This initialization step is useful for the client, where the rules file needs to be updated to reflect the collection names properly in order to ensure rules are correct.
11
+ * @param collectionPaths
12
+ */
13
+ initWithCollectionNames(collectionPaths: string[]): Map<string, string>;
14
+ }
15
+ export declare function makeTestingFirestoreAccesorDriver(driver: FirestoreAccessorDriver): TestingFirestoreAccessorDriver;
16
+ /**
17
+ * Drivers used for testing. Provides additional functionality for controlling collection access to prevent cross-test contamination.
18
+ */
19
+ export interface TestingFirestoreDrivers extends FirestoreDrivers {
20
+ driverType: 'testing';
21
+ firestoreAccessorDriver: TestingFirestoreAccessorDriver;
22
+ }
23
+ /**
24
+ * Extends the input drivers to generate new drivers for a testing environment.
25
+ *
26
+ * @param drivers
27
+ * @returns
28
+ */
29
+ export declare function makeTestingFirestoreDrivers(drivers: FirestoreDrivers): TestingFirestoreDrivers;
30
+ export interface TestingFirestoreContextExtension {
31
+ drivers: TestingFirestoreDrivers;
32
+ }
33
+ export declare type TestFirestoreContext<C = FirestoreContext> = C & TestingFirestoreContextExtension;
34
+ export declare type ClearTestFirestoreCollectionFunction = (collectionName: string, realCollectionPath: string) => Promise<void>;
35
+ export declare function clearTestFirestoreContextCollections(context: TestFirestoreContext, clearCollection: ClearTestFirestoreCollectionFunction): Promise<void>;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.clearTestFirestoreContextCollections = exports.makeTestingFirestoreDrivers = exports.makeTestingFirestoreAccesorDriver = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const util_1 = require("@dereekb/util");
6
+ function makeTestingFirestoreAccesorDriver(driver) {
7
+ let fuzzerKey = 0;
8
+ const time = new Date().getTime();
9
+ const fuzzedMap = new Map();
10
+ const collection = driver.collection;
11
+ const fuzzedCollectionName = (path) => {
12
+ let fuzzedPath = fuzzedMap.get(path);
13
+ if (!fuzzedPath) {
14
+ const random = Math.ceil(Math.random() * 9999) % 9999;
15
+ fuzzedPath = `${time}_${random}_${path}_${fuzzerKey += 1}`;
16
+ fuzzedMap.set(path, fuzzedPath);
17
+ }
18
+ return fuzzedPath;
19
+ };
20
+ const fuzzedCollection = (f, path) => {
21
+ const fuzzedPath = fuzzedCollectionName(path);
22
+ return collection(f, fuzzedPath);
23
+ };
24
+ const initWithCollectionNames = (collectionPaths) => {
25
+ collectionPaths.forEach((x) => fuzzedCollectionName(x));
26
+ return fuzzedMap;
27
+ };
28
+ const injectedDriver = Object.assign(Object.assign({}, driver), { collection: fuzzedCollection, getFuzzedCollectionsNameMap: () => fuzzedMap, initWithCollectionNames });
29
+ return injectedDriver;
30
+ }
31
+ exports.makeTestingFirestoreAccesorDriver = makeTestingFirestoreAccesorDriver;
32
+ /**
33
+ * Extends the input drivers to generate new drivers for a testing environment.
34
+ *
35
+ * @param drivers
36
+ * @returns
37
+ */
38
+ function makeTestingFirestoreDrivers(drivers) {
39
+ return Object.assign(Object.assign({}, drivers), { driverType: 'testing', firestoreAccessorDriver: makeTestingFirestoreAccesorDriver(drivers.firestoreAccessorDriver) });
40
+ }
41
+ exports.makeTestingFirestoreDrivers = makeTestingFirestoreDrivers;
42
+ function clearTestFirestoreContextCollections(context, clearCollection) {
43
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
44
+ const names = context.drivers.firestoreAccessorDriver.getFuzzedCollectionsNameMap();
45
+ const tuples = Array.from(names.entries());
46
+ yield util_1.PromiseUtility.performTasks(tuples, ([name, fuzzyPath]) => clearCollection(name, fuzzyPath));
47
+ });
48
+ }
49
+ exports.clearTestFirestoreContextCollections = clearTestFirestoreContextCollections;
50
+ //# sourceMappingURL=firestore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firestore.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/test/src/lib/common/firestore.ts"],"names":[],"mappings":";;;;AAAA,wCAA+C;AAkB/C,SAAgB,iCAAiC,CAAC,MAA+B;IAC/E,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAErC,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAE,EAAE;QAC5C,IAAI,UAAU,GAAW,SAAS,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QAE9C,IAAI,CAAC,UAAU,EAAE;YACf,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YACtD,UAAU,GAAG,GAAG,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YAC3D,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;SACjC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAI,CAAY,EAAE,IAAY,EAAE,EAAE;QACzD,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC9C,OAAO,UAAU,CAAI,CAAC,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,MAAM,uBAAuB,GAAG,CAAC,eAAyB,EAAE,EAAE;QAC5D,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,gCAClB,MAAM,KACT,UAAU,EAAE,gBAAgB,EAC5B,2BAA2B,EAAE,GAAG,EAAE,CAAC,SAAS,EAC5C,uBAAuB,GACjB,CAAC;IAET,OAAO,cAAc,CAAC;AACxB,CAAC;AApCD,8EAoCC;AAUD;;;;;GAKG;AACH,SAAgB,2BAA2B,CAAC,OAAyB;IACnE,uCACK,OAAO,KACV,UAAU,EAAE,SAAS,EACrB,uBAAuB,EAAE,iCAAiC,CAAC,OAAO,CAAC,uBAAuB,CAAC,IAC3F;AACJ,CAAC;AAND,kEAMC;AAYD,SAAsB,oCAAoC,CAAC,OAA6B,EAAE,eAAqD;;QAC7I,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,2BAA2B,EAAE,CAAC;QACpF,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3C,MAAM,qBAAc,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IACrG,CAAC;CAAA;AAJD,oFAIC"}
@@ -0,0 +1,14 @@
1
+ import { AbstractJestTestContextFixture, JestTestContextFactory } from "@dereekb/util/test";
2
+ import { Firestore } from '@dereekb/firebase';
3
+ import { TestFirestoreContext } from "./firestore";
4
+ export declare class TestFirestoreInstance {
5
+ readonly context: TestFirestoreContext;
6
+ constructor(context: TestFirestoreContext);
7
+ get firestore(): Firestore;
8
+ clearFirestore(): Promise<void>;
9
+ }
10
+ export declare class TestFirestoreContextFixture<F extends TestFirestoreInstance = TestFirestoreInstance> extends AbstractJestTestContextFixture<F> {
11
+ get firestore(): Firestore;
12
+ get context(): TestFirestoreContext;
13
+ }
14
+ export declare type JestTestFirestoreContextFactory = JestTestContextFactory<TestFirestoreContextFixture>;
@@ -0,0 +1,95 @@
1
+ import { Maybe } from '@dereekb/util';
2
+ import { CollectionReference, FirestoreCollection, FirestoreContext, AbstractFirestoreDocument, SingleItemFirestoreCollection, FirestoreCollectionWithParent, AbstractFirestoreDocumentWithParent } from '@dereekb/firebase';
3
+ /**
4
+ * Data for a test item in our firestore collection.
5
+ */
6
+ export interface MockItem {
7
+ test?: boolean;
8
+ value?: Maybe<string>;
9
+ }
10
+ /**
11
+ * FirestoreDocument for MockItem
12
+ */
13
+ export declare class MockItemDocument extends AbstractFirestoreDocument<MockItem, MockItemDocument> {
14
+ }
15
+ /**
16
+ * Firestore collection path name.
17
+ */
18
+ export declare const mockItemCollectionPath = "test";
19
+ /**
20
+ * Used to build a FirestoreDataConverter. Fields are configured via configuration. See the SnapshotConverterFunctions for more info.
21
+ */
22
+ export declare const mockItemConverter: import("@dereekb/firebase").SnapshotConverterFunctions<MockItem>;
23
+ /**
24
+ * Used to build a mockItemCollection from a firestore instance with a converter setup.
25
+ *
26
+ * @param firestore
27
+ * @returns
28
+ */
29
+ export declare function mockItemCollectionReference(context: FirestoreContext): CollectionReference<MockItem>;
30
+ export declare type MockItemFirestoreCollection = FirestoreCollection<MockItem, MockItemDocument>;
31
+ export declare function mockItemFirestoreCollection(firestoreContext: FirestoreContext): MockItemFirestoreCollection;
32
+ /**
33
+ * Private data for each MockItem.
34
+ *
35
+ * There is only a single private data item per each MockItem.
36
+ */
37
+ export interface MockItemPrivateData {
38
+ comments?: string;
39
+ createdAt?: Date;
40
+ }
41
+ /**
42
+ * FirestoreDocument for MockItem
43
+ */
44
+ export declare class MockItemPrivateDataDocument extends AbstractFirestoreDocument<MockItemPrivateData, MockItemPrivateDataDocument> {
45
+ }
46
+ /**
47
+ * Firestore collection path name.
48
+ */
49
+ export declare const mockItemPrivateDataCollectionPath = "private";
50
+ export declare const mockItemPrivateDataIdentifier = "0";
51
+ /**
52
+ * Used to build a FirestoreDataConverter. Fields are configured via configuration. See the SnapshotConverterFunctions for more info.
53
+ */
54
+ export declare const mockItemPrivateDataConverter: import("@dereekb/firebase").SnapshotConverterFunctions<MockItemPrivateData>;
55
+ /**
56
+ * Used to build a mockItemCollection from a firestore instance with a converter setup.
57
+ *
58
+ * @param firestore
59
+ * @returns
60
+ */
61
+ export declare function mockItemPrivateDataCollectionReferenceFactory(context: FirestoreContext): (parent: MockItemDocument) => CollectionReference<MockItemPrivateData>;
62
+ export declare type MockItemPrivateDataFirestoreCollection = SingleItemFirestoreCollection<MockItemPrivateData, MockItem, MockItemPrivateDataDocument>;
63
+ export declare type MockItemPrivateDataFirestoreCollectionFactory = (parent: MockItemDocument) => MockItemPrivateDataFirestoreCollection;
64
+ export declare function mockItemPrivateDataFirestoreCollection(firestoreContext: FirestoreContext): MockItemPrivateDataFirestoreCollectionFactory;
65
+ /**
66
+ * Data for a sub item in our firestore collection.
67
+ *
68
+ * There may be an unlimited number of MockItemSubItems for a MockItem.
69
+ */
70
+ export interface MockItemSubItem {
71
+ value?: Maybe<number>;
72
+ }
73
+ /**
74
+ * FirestoreDocument for MockItem
75
+ */
76
+ export declare class MockItemSubItemDocument extends AbstractFirestoreDocumentWithParent<MockItem, MockItemSubItem, MockItemSubItemDocument> {
77
+ }
78
+ /**
79
+ * Firestore collection path name.
80
+ */
81
+ export declare const mockItemSubItemCollectionPath = "sub";
82
+ /**
83
+ * Used to build a FirestoreDataConverter. Fields are configured via configuration. See the SnapshotConverterFunctions for more info.
84
+ */
85
+ export declare const mockItemSubItemConverter: import("@dereekb/firebase").SnapshotConverterFunctions<MockItemSubItem>;
86
+ export declare function mockItemSubItemCollectionReferenceFactory(context: FirestoreContext): (parent: MockItemDocument) => CollectionReference<MockItemSubItem>;
87
+ export declare type MockItemSubItemFirestoreCollection = FirestoreCollectionWithParent<MockItemSubItem, MockItem, MockItemSubItemDocument, MockItemDocument>;
88
+ export declare type MockItemSubItemFirestoreCollectionFactory = (parent: MockItemDocument) => MockItemSubItemFirestoreCollection;
89
+ export declare function mockItemSubItemFirestoreCollection(firestoreContext: FirestoreContext): MockItemSubItemFirestoreCollectionFactory;
90
+ export declare abstract class MockItemCollections {
91
+ abstract readonly mockItem: MockItemFirestoreCollection;
92
+ abstract readonly mockItemPrivateData: MockItemPrivateDataFirestoreCollectionFactory;
93
+ abstract readonly mockItemSubItem: MockItemSubItemFirestoreCollectionFactory;
94
+ }
95
+ export declare function makeMockItemCollections(firestoreContext: FirestoreContext): MockItemCollections;
@@ -0,0 +1,21 @@
1
+ import { CollectionReference } from '@dereekb/firebase';
2
+ import { AbstractWrappedFixtureWithInstance, JestTestWrappedContextFactoryBuilder } from '@dereekb/util/test';
3
+ import { MockItemFirestoreCollection, MockItem } from './firestore.mock.item';
4
+ import { TestFirestoreContextFixture } from './firestore.mock';
5
+ export declare class MockItemCollectionFixtureInstance {
6
+ readonly fixture: MockItemCollectionFixture;
7
+ readonly collections: import("./firestore.mock.item").MockItemCollections;
8
+ get collection(): CollectionReference<MockItem>;
9
+ get firestoreCollection(): MockItemFirestoreCollection;
10
+ get mockItemPrivateDataCollection(): import("./firestore.mock.item").MockItemPrivateDataFirestoreCollectionFactory;
11
+ get mockItemSubItemCollection(): import("./firestore.mock.item").MockItemSubItemFirestoreCollectionFactory;
12
+ constructor(fixture: MockItemCollectionFixture);
13
+ }
14
+ /**
15
+ * Used to expose a CollectionReference to MockItem for simple tests.
16
+ */
17
+ export declare class MockItemCollectionFixture extends AbstractWrappedFixtureWithInstance<MockItemCollectionFixtureInstance, TestFirestoreContextFixture> {
18
+ }
19
+ export interface MockItemCollectionFirebaseContextConfig {
20
+ }
21
+ export declare function testWithMockItemFixture(config?: MockItemCollectionFirebaseContextConfig): JestTestWrappedContextFactoryBuilder<MockItemCollectionFixture, TestFirestoreContextFixture>;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.testWithMockItemFixture = exports.MockItemCollectionFixture = exports.MockItemCollectionFixtureInstance = void 0;
4
+ const test_1 = require("@dereekb/util/test");
5
+ const firestore_mock_item_1 = require("./firestore.mock.item");
6
+ // MARK: Test Item Testing Fixture
7
+ class MockItemCollectionFixtureInstance {
8
+ constructor(fixture) {
9
+ this.fixture = fixture;
10
+ this.collections = (0, firestore_mock_item_1.makeMockItemCollections)(this.fixture.parent.context);
11
+ }
12
+ get collection() {
13
+ return this.firestoreCollection.collection;
14
+ }
15
+ get firestoreCollection() {
16
+ return this.collections.mockItem;
17
+ }
18
+ get mockItemPrivateDataCollection() {
19
+ return this.collections.mockItemPrivateData;
20
+ }
21
+ get mockItemSubItemCollection() {
22
+ return this.collections.mockItemSubItem;
23
+ }
24
+ }
25
+ exports.MockItemCollectionFixtureInstance = MockItemCollectionFixtureInstance;
26
+ /**
27
+ * Used to expose a CollectionReference to MockItem for simple tests.
28
+ */
29
+ class MockItemCollectionFixture extends test_1.AbstractWrappedFixtureWithInstance {
30
+ }
31
+ exports.MockItemCollectionFixture = MockItemCollectionFixture;
32
+ function testWithMockItemFixture(config) {
33
+ return (0, test_1.instanceWrapJestTestContextFactory)({
34
+ wrapFixture: (fixture) => new MockItemCollectionFixture(fixture),
35
+ makeInstance: (wrap) => new MockItemCollectionFixtureInstance(wrap),
36
+ teardownInstance: (instance) => {
37
+ // instance.fixture.parent.instance.clearFirestore();
38
+ },
39
+ // TODO: Utilize config here using the setup/teardown later if needed.
40
+ });
41
+ }
42
+ exports.testWithMockItemFixture = testWithMockItemFixture;
43
+ //# sourceMappingURL=firestore.mock.item.fixture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firestore.mock.item.fixture.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/test/src/lib/common/firestore.mock.item.fixture.ts"],"names":[],"mappings":";;;AACA,6CAAkJ;AAClJ,+DAAuG;AAGvG,kCAAkC;AAClC,MAAa,iCAAiC;IAmB5C,YAAqB,OAAkC;QAAlC,YAAO,GAAP,OAAO,CAA2B;QAjB9C,gBAAW,GAAG,IAAA,6CAAuB,EAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAiBjB,CAAC;IAf5D,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;IAC7C,CAAC;IACD,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;IACnC,CAAC;IAED,IAAI,6BAA6B;QAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC;IAC9C,CAAC;IAED,IAAI,yBAAyB;QAC3B,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;IAC1C,CAAC;CAIF;AArBD,8EAqBC;AAED;;GAEG;AACH,MAAa,yBAA0B,SAAQ,yCAAkG;CAAI;AAArJ,8DAAqJ;AAIrJ,SAAgB,uBAAuB,CAAC,MAAgD;IACtF,OAAO,IAAA,yCAAkC,EAAC;QACxC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,yBAAyB,CAAC,OAAO,CAAC;QAChE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,iCAAiC,CAAC,IAAI,CAAC;QACnE,gBAAgB,EAAE,CAAC,QAA2C,EAAE,EAAE;YAChE,qDAAqD;QACvD,CAAC;QACD,sEAAsE;KACvE,CAAC,CAAC;AACL,CAAC;AATD,0DASC"}