@hyper-fetch/firebase-admin 7.5.1 → 7.5.3

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 (36) hide show
  1. package/__tests__/features/firestore/admin/constraints.admin.spec.ts +23 -0
  2. package/__tests__/features/firestore/admin/methods.admin.spec.ts +20 -0
  3. package/__tests__/features/firestore/admin/sockets.base.spec.ts +17 -0
  4. package/__tests__/features/firestore/shared/constraints.shared.tests.ts +72 -0
  5. package/__tests__/features/firestore/shared/methods/add-doc.test.suite.ts +29 -0
  6. package/__tests__/features/firestore/shared/methods/delete-doc.test.suite.ts +52 -0
  7. package/__tests__/features/firestore/shared/methods/get-doc.test.suite.ts +60 -0
  8. package/__tests__/features/firestore/shared/methods/get-docs.test.suite.ts +45 -0
  9. package/__tests__/features/firestore/shared/methods/on-snapshot.test.suite.ts +290 -0
  10. package/__tests__/features/firestore/shared/methods/set-doc.test.suite.ts +70 -0
  11. package/__tests__/features/firestore/shared/methods/update-doc.test.suite.ts +40 -0
  12. package/__tests__/features/firestore/shared/methods.shared.tests.ts +24 -0
  13. package/__tests__/features/realtime/admin/constraints.admin.spec.ts +15 -0
  14. package/__tests__/features/realtime/admin/methods.admin.spec.ts +24 -0
  15. package/__tests__/features/realtime/admin/sockets.base.spec.ts +15 -0
  16. package/__tests__/features/realtime/shared/constraints.shared.tests.ts +59 -0
  17. package/__tests__/features/realtime/shared/methods/get.test.suite.ts +64 -0
  18. package/__tests__/features/realtime/shared/methods/on-value.test.suite.ts +190 -0
  19. package/__tests__/features/realtime/shared/methods/push.test.suite.ts +48 -0
  20. package/__tests__/features/realtime/shared/methods/remove.test.suite.ts +46 -0
  21. package/__tests__/features/realtime/shared/methods/set.test.suite.ts +68 -0
  22. package/__tests__/features/realtime/shared/methods/update.test.suite.ts +42 -0
  23. package/__tests__/features/realtime/shared/methods.shared.tests.ts +25 -0
  24. package/__tests__/global.d.ts +1 -0
  25. package/__tests__/jest.setup.ts +8 -0
  26. package/__tests__/shared/request-events.shared.ts +32 -0
  27. package/__tests__/tsconfig.json +8 -0
  28. package/__tests__/utils/database.rules.json +11 -0
  29. package/__tests__/utils/index.ts +3 -0
  30. package/__tests__/utils/initialize.firestore.admin.ts +16 -0
  31. package/__tests__/utils/initialize.realtime.admin.ts +19 -0
  32. package/__tests__/utils/seed/seed.data.ts +21 -0
  33. package/__tests__/utils/seed.admin.ts +23 -0
  34. package/jest.config.ts +9 -0
  35. package/package.json +1 -1
  36. package/project.json +4 -0
@@ -0,0 +1,8 @@
1
+ import { setImmediate } from "timers";
2
+ import { AbortController } from "abortcontroller-polyfill/dist/cjs-ponyfill";
3
+
4
+ global.setImmediate = setImmediate;
5
+
6
+ if (!global.AbortController) {
7
+ global.AbortController = AbortController as any;
8
+ }
@@ -0,0 +1,32 @@
1
+ import { RequestInstance } from "@hyper-fetch/core";
2
+
3
+ export const testLifecycleEvents = async <R extends RequestInstance>(request: R) => {
4
+ const spy1 = jest.fn();
5
+ const spy2 = jest.fn();
6
+ // const spy3 = jest.fn();
7
+ // const spy4 = jest.fn();
8
+ const spy5 = jest.fn();
9
+ const spy6 = jest.fn();
10
+
11
+ request.client.requestManager.events.onRequestStartByQueue(request.queryKey, spy1);
12
+ request.client.requestManager.events.onResponseStartByQueue(request.queryKey, spy2);
13
+ // request.client.requestManager.events.onUploadProgressByQueue(request.queryKey, spy3);
14
+ // request.client.requestManager.events.onDownloadProgressByQueue(request.queryKey, spy4);
15
+ request.client.requestManager.events.onResponseByCache(request.cacheKey, spy5);
16
+
17
+ const response = request.send({
18
+ onBeforeSent: (requestId) => {
19
+ request.client.requestManager.events.onResponseById(requestId, spy6);
20
+ },
21
+ } as any);
22
+
23
+ // eslint-disable-next-line no-promise-executor-return
24
+ await new Promise((resolve) => setTimeout(resolve, 50));
25
+
26
+ expect(spy1).toHaveBeenCalledTimes(1);
27
+ expect(spy2).toHaveBeenCalledTimes(1);
28
+ expect(spy5).toHaveBeenCalledTimes(1);
29
+ expect(spy6).toHaveBeenCalledTimes(1);
30
+
31
+ return response;
32
+ };
@@ -0,0 +1,8 @@
1
+ {
2
+ "compilerOptions": {
3
+ "strict": true,
4
+ "noEmit": true,
5
+ "baseUrl": "../src",
6
+ "jsx": "react-jsx"
7
+ }
8
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "rules": {
3
+ ".read": true,
4
+ ".write": true,
5
+ "teas": {
6
+ ".read": true,
7
+ ".write": true,
8
+ ".indexOn": ["origin", "year"]
9
+ }
10
+ }
11
+ }
@@ -0,0 +1,3 @@
1
+ export * from "./initialize.realtime.admin";
2
+ export * from "./seed.admin";
3
+ export * from "./seed/seed.data";
@@ -0,0 +1,16 @@
1
+ import { initializeApp } from "firebase-admin/app";
2
+ import { getFirestore } from "firebase-admin/firestore";
3
+
4
+ const initializeFirestore = () => {
5
+ process.env.FIRESTORE_EMULATOR_HOST = "localhost:8080";
6
+ const app = initializeApp(
7
+ {
8
+ projectId: "demo-test-firestore",
9
+ },
10
+ Date.now().toString(),
11
+ );
12
+
13
+ return getFirestore(app);
14
+ };
15
+
16
+ export const firestoreDbAdmin = initializeFirestore();
@@ -0,0 +1,19 @@
1
+ import * as fs from "fs";
2
+
3
+ const initializeRealtimeDB = async () => {
4
+ process.env.FIREBASE_DATABASE_EMULATOR_HOST = "localhost:9000";
5
+ process.env.FIREBASE_DATABASE_AUTH_EMULATOR_HOST = "localhost:9000";
6
+ // eslint-disable-next-line @typescript-eslint/no-var-requires,global-require
7
+ const admin = require("@firebase/rules-unit-testing");
8
+ const testEnv = await admin.initializeTestEnvironment({
9
+ projectId: "demo-test",
10
+ database: {
11
+ rules: fs.readFileSync("database.rules.json", "utf-8"),
12
+ },
13
+ });
14
+ const db = testEnv.authenticatedContext("db").database();
15
+
16
+ return db;
17
+ };
18
+
19
+ export const realtimeDbAdmin = initializeRealtimeDB();
@@ -0,0 +1,21 @@
1
+ export type Tea = {
2
+ name: string;
3
+ type: "Green" | "Hong" | "White" | "Puerh" | "Oolong";
4
+ origin: string;
5
+ amount: number;
6
+ year: number;
7
+ __key: number | string;
8
+ };
9
+
10
+ export const teas = [
11
+ { id: 0, name: "Bi Luo Chun", type: "Green", origin: "China", amount: 50, year: 2022 },
12
+ { id: 1, name: "Taiping Hou Kui", type: "Green", origin: "China", amount: 150, year: 2023 },
13
+ { id: 2, name: "Hon.yama Sencha", type: "Green", origin: "Japan", amount: 25, year: 2021 },
14
+ { id: 3, name: "Yunnan Golden Silk", type: "Hong", origin: "China", year: 2022 },
15
+ { id: 4, name: "Hong Yu", type: "Hong", origin: "Taiwan", year: 2023 },
16
+ { id: 5, name: "Ming Jian GABA Oolong", type: "Oolong", origin: "Taiwan", year: 2021 },
17
+ { id: 6, name: "Da hong pao", type: "Oolong", origin: "China", year: 2021 },
18
+ { id: 7, name: "Shou Mei", type: "White", origin: "China", year: 2011 },
19
+ { id: 8, name: "Wild White Tea", type: "White", origin: "China", year: 2017 },
20
+ { id: 9, name: "Sheng HK Red Wild", type: "Puerh", origin: "China", year: 1980 },
21
+ ];
@@ -0,0 +1,23 @@
1
+ import { Firestore } from "firebase-admin/firestore";
2
+ import { Database } from "firebase-admin/database";
3
+
4
+ import { teas } from "./seed/seed.data";
5
+
6
+ export const seedFirestoreDatabaseAdmin = async (db: Firestore) => {
7
+ // eslint-disable-next-line no-restricted-syntax
8
+ for (const tea of teas) {
9
+ const { id, ...data } = tea;
10
+ // eslint-disable-next-line no-await-in-loop
11
+ await db.collection("teas").doc(`${id}`).set(data);
12
+ }
13
+ };
14
+
15
+ export const seedRealtimeDatabaseAdmin = async (db: Database) => {
16
+ await db.ref("teas").set(null);
17
+ // eslint-disable-next-line no-restricted-syntax
18
+ for (const tea of teas) {
19
+ const { id, ...data } = tea;
20
+ // eslint-disable-next-line no-await-in-loop
21
+ await db.ref(`teas/${id}`).set(data);
22
+ }
23
+ };
package/jest.config.ts ADDED
@@ -0,0 +1,9 @@
1
+ import type { Config } from "@jest/types";
2
+
3
+ import { getJestConfig } from "../../jest.config";
4
+
5
+ const config: Config.InitialOptions = {
6
+ ...getJestConfig(),
7
+ transformIgnorePatterns: [],
8
+ };
9
+ export default config;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyper-fetch/firebase-admin",
3
- "version": "7.5.1",
3
+ "version": "7.5.3",
4
4
  "description": "First class Firebase Admin adapter for Hyper Fetch",
5
5
  "author": "Maciej Pyrc <maciekpyrc@gmail.com>, Kacper Skawina <kacper.skawina@gmail.com>",
6
6
  "homepage": "https://hyperfetch.bettertyped.com/",
package/project.json ADDED
@@ -0,0 +1,4 @@
1
+ {
2
+ "name": "firebase-admin",
3
+ "$schema": "../../node_modules/nx/schemas/project-schema.json"
4
+ }