@hyper-fetch/firebase-admin 7.5.3 → 8.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 (115) hide show
  1. package/.eslintrc.cjs +12 -0
  2. package/__tests__/features/firestore/admin/constraints.admin.spec.ts +1 -1
  3. package/__tests__/features/firestore/admin/methods.admin.spec.ts +1 -1
  4. package/__tests__/features/firestore/admin/sockets.base.spec.ts +1 -1
  5. package/__tests__/features/firestore/shared/constraints.shared.tests.ts +3 -3
  6. package/__tests__/features/firestore/shared/methods/add-doc.test.suite.ts +3 -3
  7. package/__tests__/features/firestore/shared/methods/delete-doc.test.suite.ts +2 -2
  8. package/__tests__/features/firestore/shared/methods/get-doc.test.suite.ts +2 -2
  9. package/__tests__/features/firestore/shared/methods/get-docs.test.suite.ts +2 -2
  10. package/__tests__/features/firestore/shared/methods/on-snapshot.test.suite.ts +9 -9
  11. package/__tests__/features/firestore/shared/methods/set-doc.test.suite.ts +2 -2
  12. package/__tests__/features/firestore/shared/methods/update-doc.test.suite.ts +2 -2
  13. package/__tests__/features/firestore/shared/methods.shared.tests.ts +1 -1
  14. package/__tests__/features/realtime/admin/methods.admin.spec.ts +1 -1
  15. package/__tests__/features/realtime/admin/sockets.base.spec.ts +1 -1
  16. package/__tests__/features/realtime/shared/constraints.shared.tests.ts +3 -5
  17. package/__tests__/features/realtime/shared/methods/get.test.suite.ts +3 -3
  18. package/__tests__/features/realtime/shared/methods/on-value.test.suite.ts +9 -9
  19. package/__tests__/features/realtime/shared/methods/push.test.suite.ts +2 -2
  20. package/__tests__/features/realtime/shared/methods/remove.test.suite.ts +2 -2
  21. package/__tests__/features/realtime/shared/methods/set.test.suite.ts +9 -7
  22. package/__tests__/features/realtime/shared/methods/update.test.suite.ts +2 -2
  23. package/__tests__/features/realtime/shared/methods.shared.tests.ts +1 -1
  24. package/__tests__/shared/request-events.shared.ts +10 -10
  25. package/__tests__/tsconfig.json +15 -2
  26. package/__tests__/utils/seed.admin.ts +2 -2
  27. package/__tests__/vitest.setup.ts +9 -0
  28. package/dist/adapter/adapter.d.ts +3 -0
  29. package/dist/adapter/adapter.d.ts.map +1 -0
  30. package/dist/adapter/adapter.sockets.d.ts +3 -0
  31. package/dist/adapter/adapter.sockets.d.ts.map +1 -0
  32. package/dist/adapter/index.d.ts +4 -0
  33. package/dist/adapter/index.d.ts.map +1 -0
  34. package/dist/adapter/types/adapter.base.types.d.ts +11 -0
  35. package/dist/adapter/types/adapter.base.types.d.ts.map +1 -0
  36. package/dist/adapter/types/adapter.firestore.types.d.ts +45 -0
  37. package/dist/adapter/types/adapter.firestore.types.d.ts.map +1 -0
  38. package/dist/adapter/types/adapter.realtime.types.d.ts +39 -0
  39. package/dist/adapter/types/adapter.realtime.types.d.ts.map +1 -0
  40. package/dist/adapter/types/firestore.socket.types.d.ts +17 -0
  41. package/dist/adapter/types/firestore.socket.types.d.ts.map +1 -0
  42. package/dist/adapter/types/index.d.ts +6 -0
  43. package/dist/adapter/types/index.d.ts.map +1 -0
  44. package/dist/adapter/types/realtime.socket.types.d.ts +12 -0
  45. package/dist/adapter/types/realtime.socket.types.d.ts.map +1 -0
  46. package/dist/constraints/constraints.types.d.ts +13 -0
  47. package/dist/constraints/constraints.types.d.ts.map +1 -0
  48. package/dist/constraints/firebase.constraints.d.ts +86 -0
  49. package/dist/constraints/firebase.constraints.d.ts.map +1 -0
  50. package/dist/constraints/index.d.ts +3 -0
  51. package/dist/constraints/index.d.ts.map +1 -0
  52. package/dist/firestore/firestore.methods.d.ts +21 -0
  53. package/dist/firestore/firestore.methods.d.ts.map +1 -0
  54. package/dist/firestore/firestore.sockets.d.ts +4 -0
  55. package/dist/firestore/firestore.sockets.d.ts.map +1 -0
  56. package/dist/firestore/index.d.ts +4 -0
  57. package/dist/firestore/index.d.ts.map +1 -0
  58. package/dist/firestore/utils/constraints.utils.d.ts +5 -0
  59. package/dist/firestore/utils/constraints.utils.d.ts.map +1 -0
  60. package/dist/firestore/utils/index.d.ts +4 -0
  61. package/dist/firestore/utils/index.d.ts.map +1 -0
  62. package/dist/firestore/utils/ref.utils.d.ts +3 -0
  63. package/dist/firestore/utils/ref.utils.d.ts.map +1 -0
  64. package/dist/firestore/utils/result.utils.d.ts +10 -0
  65. package/dist/firestore/utils/result.utils.d.ts.map +1 -0
  66. package/dist/index.d.ts +5 -271
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.mjs +670 -0
  69. package/dist/index.mjs.map +1 -0
  70. package/dist/realtime/index.d.ts +4 -0
  71. package/dist/realtime/index.d.ts.map +1 -0
  72. package/dist/realtime/realtime.methods.d.ts +19 -0
  73. package/dist/realtime/realtime.methods.d.ts.map +1 -0
  74. package/dist/realtime/realtime.sockets.d.ts +4 -0
  75. package/dist/realtime/realtime.sockets.d.ts.map +1 -0
  76. package/dist/realtime/utils/constraints.utils.d.ts +5 -0
  77. package/dist/realtime/utils/constraints.utils.d.ts.map +1 -0
  78. package/dist/realtime/utils/index.d.ts +3 -0
  79. package/dist/realtime/utils/index.d.ts.map +1 -0
  80. package/dist/realtime/utils/result.utils.d.ts +3 -0
  81. package/dist/realtime/utils/result.utils.d.ts.map +1 -0
  82. package/dist/utils/cache.utils.d.ts +11 -0
  83. package/dist/utils/cache.utils.d.ts.map +1 -0
  84. package/dist/utils/index.d.ts +3 -0
  85. package/dist/utils/index.d.ts.map +1 -0
  86. package/dist/utils/misc.d.ts +3 -0
  87. package/dist/utils/misc.d.ts.map +1 -0
  88. package/package.json +8 -11
  89. package/src/adapter/adapter.sockets.ts +1 -1
  90. package/src/adapter/adapter.ts +13 -14
  91. package/src/adapter/types/adapter.base.types.ts +4 -4
  92. package/src/adapter/types/adapter.firestore.types.ts +4 -4
  93. package/src/adapter/types/adapter.realtime.types.ts +4 -4
  94. package/src/adapter/types/firestore.socket.types.ts +3 -3
  95. package/src/adapter/types/realtime.socket.types.ts +3 -3
  96. package/src/constraints/constraints.types.ts +1 -1
  97. package/src/constraints/firebase.constraints.ts +1 -1
  98. package/src/firestore/firestore.methods.ts +4 -4
  99. package/src/firestore/firestore.sockets.ts +3 -9
  100. package/src/firestore/utils/constraints.utils.ts +4 -3
  101. package/src/firestore/utils/ref.utils.ts +1 -1
  102. package/src/firestore/utils/result.utils.ts +1 -1
  103. package/src/realtime/realtime.methods.ts +4 -4
  104. package/src/realtime/realtime.sockets.ts +2 -2
  105. package/src/realtime/utils/constraints.utils.ts +3 -2
  106. package/src/realtime/utils/result.utils.ts +1 -1
  107. package/src/utils/cache.utils.ts +4 -2
  108. package/tsconfig.json +1 -1
  109. package/vite.config.ts +45 -0
  110. package/.eslintrc.json +0 -11
  111. package/__tests__/global.d.ts +0 -1
  112. package/__tests__/jest.setup.ts +0 -8
  113. package/dist/index.js +0 -686
  114. package/dist/index.js.map +0 -7
  115. package/jest.config.ts +0 -9
package/.eslintrc.cjs ADDED
@@ -0,0 +1,12 @@
1
+ module.exports = {
2
+ extends: ["plugin:@nx/react", "../../.eslintrc.js"],
3
+ parserOptions: {
4
+ tsconfigRootDir: __dirname,
5
+ project: ["./tsconfig.json", "./__tests__/tsconfig.json"],
6
+ },
7
+ rules: {
8
+ "react/jsx-props-no-spreading": 0,
9
+ "react/require-default-props": 0,
10
+ },
11
+ ignorePatterns: ["dist/", "coverage/", "vite.config.ts", "/*.js"],
12
+ };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @jest-environment node
2
+ * @vitest-environment node
3
3
  */
4
4
  import { Client } from "@hyper-fetch/core";
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @jest-environment node
2
+ * @vitest-environment node
3
3
  */
4
4
 
5
5
  import { seedFirestoreDatabaseAdmin } from "../../../utils";
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @jest-environment node
2
+ * @vitest-environment node
3
3
  */
4
4
 
5
5
  import { seedFirestoreDatabaseAdmin } from "../../../utils";
@@ -1,8 +1,8 @@
1
- import { Client } from "@hyper-fetch/core";
1
+ import type { Client } from "@hyper-fetch/core";
2
2
 
3
- import { FirestoreAdapterType, FirestoreQueryParams } from "adapter";
3
+ import type { FirestoreAdapterType, FirestoreQueryParams } from "adapter";
4
4
  import { $limit, $orderBy, $where } from "constraints";
5
- import { Tea } from "../../../utils";
5
+ import type { Tea } from "../../../utils";
6
6
 
7
7
  export const constraintsSharedTestCases = (client: Client<Error, FirestoreAdapterType>) => {
8
8
  describe("filtering", () => {
@@ -1,7 +1,7 @@
1
1
  import { Client } from "@hyper-fetch/core";
2
2
 
3
- import { FirebaseAdminAdapter } from "adapter";
4
- import { Tea } from "../../../../utils";
3
+ import type { FirebaseAdminAdapter } from "adapter";
4
+ import type { Tea } from "../../../../utils";
5
5
 
6
6
  export const addDocTestSuite = (adapterFunction: () => ReturnType<typeof FirebaseAdminAdapter>) => {
7
7
  describe("addDoc", () => {
@@ -21,7 +21,7 @@ export const addDocTestSuite = (adapterFunction: () => ReturnType<typeof Firebas
21
21
  .setPayload(newData);
22
22
  await pushReq.send();
23
23
  const { data } = await getReq.send();
24
- const arrayedData = Object.values(data);
24
+ const arrayedData = Object.values(data!);
25
25
 
26
26
  expect(arrayedData).toHaveLength(11);
27
27
  });
@@ -1,7 +1,7 @@
1
1
  import { Client } from "@hyper-fetch/core";
2
2
 
3
- import { FirebaseAdminAdapter } from "adapter";
4
- import { Tea } from "../../../../utils";
3
+ import type { FirebaseAdminAdapter } from "adapter";
4
+ import type { Tea } from "../../../../utils";
5
5
  import { testLifecycleEvents } from "../../../../shared/request-events.shared";
6
6
 
7
7
  export const deleteDocTestSuite = (adapterFunction: () => ReturnType<typeof FirebaseAdminAdapter>) => {
@@ -1,7 +1,7 @@
1
1
  import { Client } from "@hyper-fetch/core";
2
2
 
3
- import { FirebaseAdminAdapter } from "adapter";
4
- import { Tea } from "../../../../utils";
3
+ import type { FirebaseAdminAdapter } from "adapter";
4
+ import type { Tea } from "../../../../utils";
5
5
  import { testLifecycleEvents } from "../../../../shared/request-events.shared";
6
6
 
7
7
  export const getDocTestSuite = (adapterFunction: () => ReturnType<typeof FirebaseAdminAdapter>) => {
@@ -1,7 +1,7 @@
1
1
  import { Client } from "@hyper-fetch/core";
2
2
 
3
- import { FirebaseAdminAdapter } from "adapter";
4
- import { Tea } from "../../../../utils";
3
+ import type { FirebaseAdminAdapter } from "adapter";
4
+ import type { Tea } from "../../../../utils";
5
5
  import { testLifecycleEvents } from "../../../../shared/request-events.shared";
6
6
 
7
7
  export const getDocsTestSuite = (adapterFunction: () => ReturnType<typeof FirebaseAdminAdapter>) => {
@@ -2,20 +2,20 @@ import { Client } from "@hyper-fetch/core";
2
2
  import { Socket } from "@hyper-fetch/sockets";
3
3
  import waitForExpect from "wait-for-expect";
4
4
 
5
- import { FirebaseAdminAdapterTypes, FirebaseAdminSocketAdapterTypes } from "adapter";
5
+ import type { FirebaseAdminAdapterTypes, FirebaseAdminSocketAdapterTypes } from "adapter";
6
6
  import { $where } from "constraints";
7
- import { Tea } from "../../../../utils";
7
+ import type { Tea } from "../../../../utils";
8
8
 
9
9
  export const onSnapshotTestSuite = (
10
10
  adapter: FirebaseAdminSocketAdapterTypes<any>,
11
11
  coreAdapter: FirebaseAdminAdapterTypes<any>,
12
12
  ) => {
13
13
  const newData = { origin: "Poland", type: "Green", year: 2043, name: "Pou Ran Do Cha", amount: 100 } as Tea;
14
- let spy = jest.fn();
14
+ let spy = vi.fn();
15
15
  beforeEach(() => {
16
- jest.resetAllMocks();
17
- jest.clearAllMocks();
18
- spy = jest.fn();
16
+ vi.resetAllMocks();
17
+ vi.clearAllMocks();
18
+ spy = vi.fn();
19
19
  });
20
20
  const initialize = async () => {
21
21
  const client = new Client({ url: "teas/" }).setAdapter(coreAdapter);
@@ -37,7 +37,7 @@ export const onSnapshotTestSuite = (
37
37
  topic: "",
38
38
  });
39
39
  const unmount = onSnapshotReq.listen(spy);
40
- expect(unmount).toBeFunction();
40
+ expect(typeof unmount).toBe("function");
41
41
  });
42
42
  it("should unmount listeners", async () => {
43
43
  const { socket, pushReq } = await initialize();
@@ -251,7 +251,7 @@ export const onSnapshotTestSuite = (
251
251
 
252
252
  await waitForExpect(async () => {
253
253
  expect(receivedData).toHaveLength(1);
254
- expect(receivedData[0]).toIncludeSameMembers(initialCache);
254
+ expect(receivedData[0]).toEqual(expect.arrayContaining(initialCache));
255
255
  }, 1000);
256
256
 
257
257
  const shouldCacheData = newData as Tea;
@@ -283,7 +283,7 @@ export const onSnapshotTestSuite = (
283
283
 
284
284
  await waitForExpect(async () => {
285
285
  expect(receivedData).toHaveLength(2);
286
- expect(receivedData[1]).toIncludeSameMembers([...initialCache, data]);
286
+ expect(receivedData[1]).toEqual(expect.arrayContaining([...initialCache, data]));
287
287
  });
288
288
  });
289
289
  });
@@ -1,7 +1,7 @@
1
1
  import { Client } from "@hyper-fetch/core";
2
2
 
3
- import { Tea } from "../../../../utils";
4
- import { FirebaseAdminAdapter } from "adapter";
3
+ import type { Tea } from "../../../../utils";
4
+ import type { FirebaseAdminAdapter } from "adapter";
5
5
  import { testLifecycleEvents } from "../../../../shared/request-events.shared";
6
6
 
7
7
  export const setDocTestSuite = (adapterFunction: () => ReturnType<typeof FirebaseAdminAdapter>) => {
@@ -1,7 +1,7 @@
1
1
  import { Client } from "@hyper-fetch/core";
2
2
 
3
- import { FirebaseAdminAdapter } from "adapter";
4
- import { Tea } from "../../../../utils";
3
+ import type { FirebaseAdminAdapter } from "adapter";
4
+ import type { Tea } from "../../../../utils";
5
5
  import { testLifecycleEvents } from "../../../../shared/request-events.shared";
6
6
 
7
7
  export const updateDocTestSuite = (adapterFunction: () => ReturnType<typeof FirebaseAdminAdapter>) => {
@@ -1,4 +1,4 @@
1
- import { FirebaseAdminAdapter, FirebaseAdminAdapterTypes, FirebaseAdminSocketAdapterTypes } from "adapter";
1
+ import type { FirebaseAdminAdapter, FirebaseAdminAdapterTypes, FirebaseAdminSocketAdapterTypes } from "adapter";
2
2
  import { addDocTestSuite } from "./methods/add-doc.test.suite";
3
3
  import { deleteDocTestSuite } from "./methods/delete-doc.test.suite";
4
4
  import { getDocTestSuite } from "./methods/get-doc.test.suite";
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @jest-environment node
2
+ * @vitest-environment node
3
3
  */
4
4
  import { realtimeDbAdmin, seedRealtimeDatabaseAdmin } from "../../../utils";
5
5
  import { FirebaseAdminAdapter } from "adapter";
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @jest-environment node
2
+ * @vitest-environment node
3
3
  */
4
4
  import { realtimeDbAdmin, seedRealtimeDatabaseAdmin } from "../../../utils";
5
5
  import { socketsMethodsSharedTestCases } from "../shared/methods.shared.tests";
@@ -1,7 +1,8 @@
1
1
  import { Client } from "@hyper-fetch/core";
2
2
 
3
- import { $endAt, $limitToFirst, $orderByChild, $startAt, FirebaseAdminAdapter } from "../../../../src";
4
- import { Tea } from "../../../utils";
3
+ import type { FirebaseAdminAdapter } from "../../../../src";
4
+ import { $endAt, $limitToFirst, $orderByChild, $startAt } from "../../../../src";
5
+ import type { Tea } from "../../../utils";
5
6
 
6
7
  export const constraintsSharedTestCases = (adapterFunction: () => ReturnType<typeof FirebaseAdminAdapter>) => {
7
8
  describe("Ordering", () => {
@@ -12,7 +13,6 @@ export const constraintsSharedTestCases = (adapterFunction: () => ReturnType<typ
12
13
  method: "getDocs",
13
14
  });
14
15
  const { data } = await req.send({
15
- // TODO: Fix this
16
16
  queryParams: { constraints: [$orderByChild("origin")] },
17
17
  });
18
18
  expect(data?.map((el) => el.origin)).toStrictEqual([
@@ -37,7 +37,6 @@ export const constraintsSharedTestCases = (adapterFunction: () => ReturnType<typ
37
37
  method: "getDocs",
38
38
  });
39
39
  const { data } = await req.send({
40
- // TODO: Fix this
41
40
  queryParams: { constraints: [$orderByChild("origin"), $limitToFirst(5)] },
42
41
  });
43
42
  expect(data?.map((tea) => tea.origin)).toStrictEqual(["China", "China", "China", "China", "China"]);
@@ -49,7 +48,6 @@ export const constraintsSharedTestCases = (adapterFunction: () => ReturnType<typ
49
48
  method: "getDocs",
50
49
  });
51
50
  const { data } = await req.send({
52
- // TODO: Fix this
53
51
  queryParams: { constraints: [$orderByChild("year"), $startAt(2021), $endAt(2022)] },
54
52
  });
55
53
  expect(data).toHaveLength(5);
@@ -1,8 +1,8 @@
1
1
  import { Client } from "@hyper-fetch/core";
2
2
 
3
- import { FirebaseAdminAdapter } from "adapter";
3
+ import type { FirebaseAdminAdapter } from "adapter";
4
4
  import { testLifecycleEvents } from "../../../../shared/request-events.shared";
5
- import { Tea } from "../../../../utils";
5
+ import type { Tea } from "../../../../utils";
6
6
 
7
7
  export const getTestSuite = (adapterFunction: () => ReturnType<typeof FirebaseAdminAdapter>) => {
8
8
  describe("get", () => {
@@ -20,7 +20,7 @@ export const getTestSuite = (adapterFunction: () => ReturnType<typeof FirebaseAd
20
20
  });
21
21
  const { data, extra, status, success, error } = await req.send();
22
22
  expect(data).toHaveLength(10);
23
- expect(data[0]).toHaveProperty("__key");
23
+ expect(data![0]).toHaveProperty("__key");
24
24
  expect(extra).toHaveProperty("snapshot");
25
25
  expect(extra).toHaveProperty("ref");
26
26
  expect(status).toBe("success");
@@ -3,8 +3,8 @@ import { Socket } from "@hyper-fetch/sockets";
3
3
  import { Client } from "@hyper-fetch/core";
4
4
  import waitForExpect from "wait-for-expect";
5
5
 
6
- import { FirebaseAdminAdapterTypes, FirebaseAdminSocketAdapterTypes } from "adapter";
7
- import { Tea } from "../../../../utils";
6
+ import type { FirebaseAdminAdapterTypes, FirebaseAdminSocketAdapterTypes } from "adapter";
7
+ import type { Tea } from "../../../../utils";
8
8
 
9
9
  export const onValueTestSuite = (
10
10
  db: Promise<any>,
@@ -16,7 +16,7 @@ export const onValueTestSuite = (
16
16
  let initializedSocketsAdapter: any;
17
17
  let initializedCoreAdapter: any;
18
18
  let initializedDb: any;
19
- let spy = jest.fn();
19
+ let spy = vi.fn();
20
20
  const newData = { origin: "Poland", type: "Green", year: 2043, name: "Pou Ran Do Cha", amount: 100 } as Tea;
21
21
 
22
22
  beforeAll(async () => {
@@ -44,9 +44,9 @@ export const onValueTestSuite = (
44
44
  };
45
45
 
46
46
  beforeEach(() => {
47
- jest.resetAllMocks();
48
- jest.clearAllMocks();
49
- spy = jest.fn();
47
+ vi.resetAllMocks();
48
+ vi.clearAllMocks();
49
+ spy = vi.fn();
50
50
  });
51
51
 
52
52
  it("should return unmount function", async () => {
@@ -55,7 +55,7 @@ export const onValueTestSuite = (
55
55
  topic: "",
56
56
  });
57
57
  const unmount = onValueReq.listen(spy);
58
- expect(unmount).toBeFunction();
58
+ expect(typeof unmount).toBe("function");
59
59
  });
60
60
 
61
61
  it("should unmount listeners", async () => {
@@ -132,7 +132,7 @@ export const onValueTestSuite = (
132
132
  options: { onlyOnce: false },
133
133
  });
134
134
 
135
- let receivedData: any;
135
+ let receivedData: Tea[] | null;
136
136
  let receivedExtra: any;
137
137
 
138
138
  const unmount = onValueReq.listen(({ data, extra }) => {
@@ -144,7 +144,7 @@ export const onValueTestSuite = (
144
144
  const { data } = await pushReq.send();
145
145
 
146
146
  await waitForExpect(async () => {
147
- expect(receivedData).toIncludeAllMembers([{ ...newData, __key: data?.__key }]);
147
+ expect(receivedData).toEqual(expect.arrayContaining([{ ...newData, __key: data?.__key }]));
148
148
  expect(receivedExtra).toHaveProperty("snapshot");
149
149
  expect(receivedExtra).toHaveProperty("status");
150
150
  expect(receivedExtra).toHaveProperty("ref");
@@ -1,8 +1,8 @@
1
1
  import { Client } from "@hyper-fetch/core";
2
2
 
3
- import { FirebaseAdminAdapter } from "adapter";
3
+ import type { FirebaseAdminAdapter } from "adapter";
4
4
  import { testLifecycleEvents } from "../../../../shared/request-events.shared";
5
- import { Tea } from "../../../../utils";
5
+ import type { Tea } from "../../../../utils";
6
6
 
7
7
  export const pushTestSuite = (adapterFunction: () => ReturnType<typeof FirebaseAdminAdapter>) => {
8
8
  describe("push", () => {
@@ -1,8 +1,8 @@
1
1
  import { Client } from "@hyper-fetch/core";
2
2
 
3
- import { FirebaseAdminAdapter } from "adapter";
3
+ import type { FirebaseAdminAdapter } from "adapter";
4
4
  import { testLifecycleEvents } from "../../../../shared/request-events.shared";
5
- import { Tea } from "../../../../utils";
5
+ import type { Tea } from "../../../../utils";
6
6
 
7
7
  export const removeTestSuite = (adapterFunction: () => ReturnType<typeof FirebaseAdminAdapter>) => {
8
8
  let client = new Client({ url: "teas/" }).setAdapter(adapterFunction());
@@ -1,8 +1,8 @@
1
1
  import { Client } from "@hyper-fetch/core";
2
2
 
3
- import { FirebaseAdminAdapter } from "adapter";
3
+ import type { FirebaseAdminAdapter, RealtimeDbGetMethodExtra } from "adapter";
4
4
  import { testLifecycleEvents } from "../../../../shared/request-events.shared";
5
- import { Tea } from "../../../../utils";
5
+ import type { Tea } from "../../../../utils";
6
6
 
7
7
  export const setTestSuite = (adapterFunction: () => ReturnType<typeof FirebaseAdminAdapter>) => {
8
8
  describe("set", () => {
@@ -30,18 +30,19 @@ export const setTestSuite = (adapterFunction: () => ReturnType<typeof FirebaseAd
30
30
  await setReq.send();
31
31
  const { data, extra } = await getReq.send();
32
32
  expect(data).toStrictEqual(newData);
33
- expect(extra.snapshot.exists()).toBe(true);
33
+ expect(extra).not.toBeNull();
34
+ expect((extra as RealtimeDbGetMethodExtra).snapshot.exists()).toBe(true);
34
35
  });
35
36
  it("should allow for removing data via set", async () => {
36
37
  const getReq = client
37
- .createRequest<{ response: Tea }>()({
38
+ .createRequest<{ response: Tea | null }>()({
38
39
  endpoint: ":teaId",
39
40
  method: "get",
40
41
  })
41
42
  .setParams({ teaId: 1 });
42
43
 
43
44
  const setReq = client
44
- .createRequest<Tea, { data: null }>()({
45
+ .createRequest<{ response: Tea | null; payload: { data: null } }>()({
45
46
  endpoint: ":teaId",
46
47
  method: "set",
47
48
  })
@@ -51,11 +52,12 @@ export const setTestSuite = (adapterFunction: () => ReturnType<typeof FirebaseAd
51
52
  await setReq.send();
52
53
  const { data, extra } = await getReq.send();
53
54
  expect(data).toBe(null);
54
- expect(extra.snapshot.exists()).toBe(false);
55
+ expect(extra).not.toBeNull();
56
+ expect((extra as RealtimeDbGetMethodExtra).snapshot.exists()).toBe(false);
55
57
  });
56
58
  it("should emit lifecycle events", async () => {
57
59
  const setReq = client
58
- .createRequest<Tea, { data: null }>()({
60
+ .createRequest<{ response: Tea | null; payload: { data: null } }>()({
59
61
  endpoint: ":teaId",
60
62
  method: "set",
61
63
  })
@@ -1,8 +1,8 @@
1
1
  import { Client } from "@hyper-fetch/core";
2
2
 
3
- import { FirebaseAdminAdapter } from "adapter";
3
+ import type { FirebaseAdminAdapter } from "adapter";
4
4
  import { testLifecycleEvents } from "../../../../shared/request-events.shared";
5
- import { Tea } from "../../../../utils/seed/seed.data";
5
+ import type { Tea } from "../../../../utils/seed/seed.data";
6
6
 
7
7
  export const updateTestSuite = (adapterFunction: () => ReturnType<typeof FirebaseAdminAdapter>) => {
8
8
  describe("update", () => {
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable max-params */
2
- import { FirebaseAdminAdapter, FirebaseAdminAdapterTypes, FirebaseAdminSocketAdapterTypes } from "adapter";
2
+ import type { FirebaseAdminAdapter, FirebaseAdminAdapterTypes, FirebaseAdminSocketAdapterTypes } from "adapter";
3
3
  import { getTestSuite } from "./methods/get.test.suite";
4
4
  import { setTestSuite } from "./methods/set.test.suite";
5
5
  import { pushTestSuite } from "./methods/push.test.suite";
@@ -1,12 +1,12 @@
1
- import { RequestInstance } from "@hyper-fetch/core";
1
+ import type { RequestInstance } from "@hyper-fetch/core";
2
2
 
3
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();
4
+ const spy1 = vi.fn();
5
+ const spy2 = vi.fn();
6
+ // const spy3 = vi.fn();
7
+ // const spy4 = vi.fn();
8
+ const spy5 = vi.fn();
9
+ const spy6 = vi.fn();
10
10
 
11
11
  request.client.requestManager.events.onRequestStartByQueue(request.queryKey, spy1);
12
12
  request.client.requestManager.events.onResponseStartByQueue(request.queryKey, spy2);
@@ -14,11 +14,11 @@ export const testLifecycleEvents = async <R extends RequestInstance>(request: R)
14
14
  // request.client.requestManager.events.onDownloadProgressByQueue(request.queryKey, spy4);
15
15
  request.client.requestManager.events.onResponseByCache(request.cacheKey, spy5);
16
16
 
17
- const response = request.send({
18
- onBeforeSent: (requestId) => {
17
+ const response = (request as unknown as RequestInstance).send({
18
+ onBeforeSent: ({ requestId }) => {
19
19
  request.client.requestManager.events.onResponseById(requestId, spy6);
20
20
  },
21
- } as any);
21
+ });
22
22
 
23
23
  // eslint-disable-next-line no-promise-executor-return
24
24
  await new Promise((resolve) => setTimeout(resolve, 50));
@@ -1,8 +1,21 @@
1
1
  {
2
2
  "compilerOptions": {
3
+ "target": "esnext",
4
+ "module": "esnext",
5
+ "moduleResolution": "bundler",
6
+ "lib": ["dom", "dom.iterable", "ESNext"],
3
7
  "strict": true,
4
8
  "noEmit": true,
9
+ "skipLibCheck": true,
10
+ "esModuleInterop": true,
11
+ "allowSyntheticDefaultImports": true,
12
+ "resolveJsonModule": true,
13
+ "isolatedModules": true,
14
+ "noUnusedLocals": false,
15
+ "noUnusedParameters": false,
16
+ "types": ["vitest/globals", "@types/node"],
5
17
  "baseUrl": "../src",
6
- "jsx": "react-jsx"
7
- }
18
+ "paths": {}
19
+ },
20
+ "include": ["**/*.ts", "**/*.tsx", "../../../global.d.ts", "../../../vitest.d.ts"]
8
21
  }
@@ -1,5 +1,5 @@
1
- import { Firestore } from "firebase-admin/firestore";
2
- import { Database } from "firebase-admin/database";
1
+ import type { Firestore } from "firebase-admin/firestore";
2
+ import type { Database } from "firebase-admin/database";
3
3
 
4
4
  import { teas } from "./seed/seed.data";
5
5
 
@@ -0,0 +1,9 @@
1
+ /// <reference types="vitest/globals" />
2
+ import { setImmediate } from "timers";
3
+ import { AbortController } from "abortcontroller-polyfill/dist/cjs-ponyfill";
4
+
5
+ globalThis.setImmediate = setImmediate;
6
+
7
+ if (!globalThis.AbortController) {
8
+ globalThis.AbortController = AbortController as any;
9
+ }
@@ -0,0 +1,3 @@
1
+ import { FirebaseAdminDBTypes, FirebaseAdminAdapterTypes } from '.';
2
+ export declare const FirebaseAdminAdapter: <T extends FirebaseAdminDBTypes>(database: T) => FirebaseAdminAdapterTypes<T>;
3
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/adapter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,oBAAoB,EACpB,yBAAyB,EAG1B,MAAM,SAAS,CAAC;AAKjB,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,oBAAoB,EAAE,UAAU,CAAC,KAAG,yBAAyB,CAAC,CAAC,CAuD7G,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { FirebaseAdminDBTypes, FirebaseAdminSocketAdapterTypes } from './types';
2
+ export declare const FirebaseSocketsAdminAdapter: <T extends FirebaseAdminDBTypes>(database: T) => FirebaseAdminSocketAdapterTypes<T>;
3
+ //# sourceMappingURL=adapter.sockets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.sockets.d.ts","sourceRoot":"","sources":["../../src/adapter/adapter.sockets.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,+BAA+B,EAAE,MAAM,SAAS,CAAC;AAIrF,eAAO,MAAM,2BAA2B,GAAI,CAAC,SAAS,oBAAoB,EACxE,UAAU,CAAC,KACV,+BAA+B,CAAC,CAAC,CAKnC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './types';
2
+ export * from './adapter.sockets';
3
+ export * from './adapter';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Database } from 'firebase-admin/database';
2
+ import { Firestore } from 'firebase-admin/firestore';
3
+ import { Adapter, Request, Client } from '@hyper-fetch/core';
4
+ import { RealtimeDbAdapterType, FirestoreAdapterType, FirestoreAdminSocketAdapterType, RealtimeAdminSocketAdapterType, FirestoreQueryParams, FirestoreMethodsUnion, RealtimeDBMethodsUnion, RealtimeDBQueryParams } from './index';
5
+ export type FirebaseAdminDBTypes = Database | Firestore;
6
+ export type FirebaseAdminAdapterTypes<T> = T extends Database ? RealtimeDbAdapterType : FirestoreAdapterType;
7
+ export type FirebaseAdminSocketAdapterTypes<T> = T extends Firestore ? FirestoreAdminSocketAdapterType : RealtimeAdminSocketAdapterType;
8
+ export type RealtimeDBRequestType = Request<any, any, RealtimeDBQueryParams, any, any, Client<any, Adapter<any, RealtimeDBMethodsUnion, any, any, any, any>>, any, any, any>;
9
+ export type FirestoreRequestType = Request<any, any, FirestoreQueryParams, any, any, Client<any, Adapter<any, FirestoreMethodsUnion, any, any, any, any>>, any, any, any>;
10
+ export type RequestType<T> = T extends Firestore ? FirestoreRequestType : RealtimeDBRequestType;
11
+ //# sourceMappingURL=adapter.base.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.base.types.d.ts","sourceRoot":"","sources":["../../../src/adapter/types/adapter.base.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,+BAA+B,EAC/B,8BAA8B,EAC9B,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,SAAS,CAAC;AACxD,MAAM,MAAM,yBAAyB,CAAC,CAAC,IAAI,CAAC,SAAS,QAAQ,GAAG,qBAAqB,GAAG,oBAAoB,CAAC;AAC7G,MAAM,MAAM,+BAA+B,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAChE,+BAA+B,GAC/B,8BAA8B,CAAC;AAEnC,MAAM,MAAM,qBAAqB,GAAG,OAAO,CACzC,GAAG,EACH,GAAG,EACH,qBAAqB,EACrB,GAAG,EACH,GAAG,EACH,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,sBAAsB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EACrE,GAAG,EACH,GAAG,EACH,GAAG,CACJ,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,OAAO,CACxC,GAAG,EACH,GAAG,EACH,oBAAoB,EACpB,GAAG,EACH,GAAG,EACH,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,qBAAqB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EACpE,GAAG,EACH,GAAG,EACH,GAAG,CACJ,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,oBAAoB,GAAG,qBAAqB,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { Adapter } from '@hyper-fetch/core';
2
+ import { Unsubscribe as FirestoreUnsubscribe, CollectionReference, DocumentReference, DocumentSnapshot, QuerySnapshot } from 'firebase/firestore';
3
+ import { SocketAdapter } from '@hyper-fetch/sockets';
4
+ import { FirestoreConstraintsUnion, FirestorePermittedMethods, PermittedConstraints, SharedQueryConstraints } from '../../constraints';
5
+ export type FirestoreSocketAdapterType = SocketAdapter<never, FirestoreOnSnapshotExtra, {
6
+ groupByChangeType?: boolean;
7
+ } & FirestoreQueryParams>;
8
+ export type FirestoreAdapterType = Adapter<Record<string, never>, "getDoc", FirestoreStatuses, FirestoreExtra, FirestoreQueryParams, FirestoreQueryParams> | Adapter<Record<string, never>, "getDocs", FirestoreStatuses, FirestoreGetDocsExtra, FirestoreQueryParams, FirestoreQueryParams> | Adapter<{
9
+ merge: boolean;
10
+ }, "setDoc", FirestoreStatuses, FirestoreRefOnlyExtra, Record<string, never>, undefined> | Adapter<Record<string, never>, "updateDoc" | "addDoc" | "deleteDoc" | "setDoc", FirestoreStatuses, FirestoreRefOnlyExtra, Record<string, never>, undefined>;
11
+ export type FirestoreQueryParams = {
12
+ constraints?: PermittedConstraints<FirestorePermittedMethods, FirestoreConstraintsUnion | SharedQueryConstraints>[];
13
+ };
14
+ export declare enum FirestoreMethods {
15
+ addDoc = "addDoc",
16
+ getDoc = "getDoc",
17
+ getDocs = "getDocs",
18
+ setDoc = "setDoc",
19
+ updateDoc = "updateDoc",
20
+ deleteDoc = "deleteDoc"
21
+ }
22
+ export type FirestoreMethodsUnion = FirestoreMethods.addDoc | FirestoreMethods.getDoc | FirestoreMethods.getDocs | FirestoreMethods.setDoc | FirestoreMethods.updateDoc | FirestoreMethods.deleteDoc;
23
+ export type FirestoreExtra = {
24
+ ref?: DocumentReference;
25
+ snapshot?: DocumentSnapshot;
26
+ };
27
+ export type FirestoreOnSnapshotExtra = {
28
+ ref?: DocumentReference | CollectionReference;
29
+ snapshot?: DocumentSnapshot;
30
+ unsubscribe?: FirestoreUnsubscribe;
31
+ groupedResult?: {
32
+ added: DocumentSnapshot[];
33
+ modified: DocumentSnapshot[];
34
+ removed: DocumentSnapshot[];
35
+ };
36
+ };
37
+ export type FirestoreGetDocsExtra = {
38
+ ref?: CollectionReference;
39
+ snapshot?: QuerySnapshot;
40
+ };
41
+ export type FirestoreRefOnlyExtra = {
42
+ ref?: DocumentReference;
43
+ };
44
+ export type FirestoreStatuses = "success" | "error" | "emptyResource";
45
+ //# sourceMappingURL=adapter.firestore.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.firestore.types.d.ts","sourceRoot":"","sources":["../../../src/adapter/types/adapter.firestore.types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EACV,WAAW,IAAI,oBAAoB,EACnC,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EACV,yBAAyB,EACzB,yBAAyB,EACzB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,0BAA0B,GAAG,aAAa,CACpD,KAAK,EACL,wBAAwB,EACxB;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,oBAAoB,CACvD,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAC5B,OAAO,CACL,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrB,QAAQ,EACR,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,oBAAoB,CACrB,GACD,OAAO,CACL,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrB,SAAS,EACT,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,CACrB,GACD,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC,GACjH,OAAO,CACL,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrB,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,EAC/C,iBAAiB,EACjB,qBAAqB,EACrB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrB,SAAS,CACV,CAAC;AAEN,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,CAAC,EAAE,oBAAoB,CAAC,yBAAyB,EAAE,yBAAyB,GAAG,sBAAsB,CAAC,EAAE,CAAC;CACrH,CAAC;AAEF,oBAAY,gBAAgB;IAC1B,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,SAAS,cAAc;CACxB;AAED,MAAM,MAAM,qBAAqB,GAC7B,gBAAgB,CAAC,MAAM,GACvB,gBAAgB,CAAC,MAAM,GACvB,gBAAgB,CAAC,OAAO,GACxB,gBAAgB,CAAC,MAAM,GACvB,gBAAgB,CAAC,SAAS,GAC1B,gBAAgB,CAAC,SAAS,CAAC;AAE/B,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,GAAG,CAAC,EAAE,iBAAiB,GAAG,mBAAmB,CAAC;IAC9C,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,aAAa,CAAC,EAAE;QAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;QAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;QAAC,OAAO,EAAE,gBAAgB,EAAE,CAAA;KAAE,CAAC;CAC1G,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,CAAC,EAAE,iBAAiB,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,OAAO,GAAG,eAAe,CAAC"}