jazz-webhook 0.18.28

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 (46) hide show
  1. package/.turbo/turbo-build.log +4 -0
  2. package/CHANGELOG.md +16 -0
  3. package/LICENSE.txt +19 -0
  4. package/dist/index.d.ts +3 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +3 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/successMap.d.ts +13 -0
  9. package/dist/successMap.d.ts.map +1 -0
  10. package/dist/successMap.js +32 -0
  11. package/dist/successMap.js.map +1 -0
  12. package/dist/test/http-server.d.ts +73 -0
  13. package/dist/test/http-server.d.ts.map +1 -0
  14. package/dist/test/http-server.js +177 -0
  15. package/dist/test/http-server.js.map +1 -0
  16. package/dist/test/setup.d.ts +2 -0
  17. package/dist/test/setup.d.ts.map +1 -0
  18. package/dist/test/setup.js +11 -0
  19. package/dist/test/setup.js.map +1 -0
  20. package/dist/test/successMap.test.d.ts +2 -0
  21. package/dist/test/successMap.test.d.ts.map +1 -0
  22. package/dist/test/successMap.test.js +172 -0
  23. package/dist/test/successMap.test.js.map +1 -0
  24. package/dist/test/webhook.test.d.ts +2 -0
  25. package/dist/test/webhook.test.d.ts.map +1 -0
  26. package/dist/test/webhook.test.js +356 -0
  27. package/dist/test/webhook.test.js.map +1 -0
  28. package/dist/types.d.ts +87 -0
  29. package/dist/types.d.ts.map +1 -0
  30. package/dist/types.js +15 -0
  31. package/dist/types.js.map +1 -0
  32. package/dist/webhook.d.ts +67 -0
  33. package/dist/webhook.d.ts.map +1 -0
  34. package/dist/webhook.js +281 -0
  35. package/dist/webhook.js.map +1 -0
  36. package/package.json +34 -0
  37. package/src/index.ts +2 -0
  38. package/src/successMap.ts +55 -0
  39. package/src/test/http-server.ts +233 -0
  40. package/src/test/setup.ts +12 -0
  41. package/src/test/successMap.test.ts +215 -0
  42. package/src/test/webhook.test.ts +586 -0
  43. package/src/types.ts +106 -0
  44. package/src/webhook.ts +387 -0
  45. package/tsconfig.json +17 -0
  46. package/vitest.config.ts +14 -0
@@ -0,0 +1,215 @@
1
+ import { SessionID } from "cojson";
2
+ import {
3
+ getTransactionsToTry,
4
+ isTxSuccessful,
5
+ markSuccessful,
6
+ SuccessMap,
7
+ } from "../successMap";
8
+ import { beforeEach, describe, expect, it } from "vitest";
9
+ import { createJazzTestAccount } from "jazz-tools/testing";
10
+ import { Account } from "jazz-tools";
11
+
12
+ describe("successMap", () => {
13
+ beforeEach(async () => {
14
+ await createJazzTestAccount({
15
+ AccountSchema: Account,
16
+ isCurrentActiveAccount: true,
17
+ });
18
+ });
19
+
20
+ it("should mark a first transaction as successful", async () => {
21
+ const successMap = SuccessMap.create({});
22
+ const transactionID = {
23
+ sessionID: "co_z123_session_z123" as SessionID,
24
+ txIndex: 0,
25
+ };
26
+ markSuccessful(successMap, transactionID);
27
+ expect(successMap).toEqual({
28
+ "co_z123_session_z123:0": true,
29
+ });
30
+ expect(isTxSuccessful(successMap, transactionID)).toBe(true);
31
+ });
32
+
33
+ it("should mark a second, consecutive transaction as successful", async () => {
34
+ const successMap = SuccessMap.create({});
35
+ const transactionID0 = {
36
+ sessionID: "co_z123_session_z123" as SessionID,
37
+ txIndex: 0,
38
+ };
39
+ const transactionID1 = {
40
+ sessionID: "co_z123_session_z123" as SessionID,
41
+ txIndex: 1,
42
+ };
43
+ markSuccessful(successMap, transactionID0);
44
+ markSuccessful(successMap, transactionID1);
45
+ expect(successMap).toEqual({
46
+ "co_z123_session_z123:0": true,
47
+ "co_z123_session_z123:1": true,
48
+ });
49
+ expect(isTxSuccessful(successMap, transactionID0)).toBe(true);
50
+ expect(isTxSuccessful(successMap, transactionID1)).toBe(true);
51
+ expect(
52
+ isTxSuccessful(successMap, {
53
+ sessionID: transactionID0.sessionID,
54
+ txIndex: 3,
55
+ }),
56
+ ).toBe(false);
57
+ });
58
+
59
+ it("should mark a second, non-consecutive transaction as successful", async () => {
60
+ const successMap = SuccessMap.create({});
61
+ const transactionID0 = {
62
+ sessionID: "co_z123_session_z123" as SessionID,
63
+ txIndex: 0,
64
+ };
65
+ const transactionID2 = {
66
+ sessionID: "co_z123_session_z123" as SessionID,
67
+ txIndex: 2,
68
+ };
69
+ markSuccessful(successMap, transactionID0);
70
+ markSuccessful(successMap, transactionID2);
71
+ expect(successMap).toEqual({
72
+ "co_z123_session_z123:0": true,
73
+ "co_z123_session_z123:2": true,
74
+ });
75
+ expect(isTxSuccessful(successMap, transactionID0)).toBe(true);
76
+ expect(
77
+ isTxSuccessful(successMap, {
78
+ sessionID: transactionID0.sessionID,
79
+ txIndex: 1,
80
+ }),
81
+ ).toBe(false);
82
+ expect(isTxSuccessful(successMap, transactionID2)).toBe(true);
83
+ expect(
84
+ isTxSuccessful(successMap, {
85
+ sessionID: transactionID0.sessionID,
86
+ txIndex: 3,
87
+ }),
88
+ ).toBe(false);
89
+ });
90
+
91
+ it("should mark gap-filling transactions as successful", async () => {
92
+ const successMap = SuccessMap.create({});
93
+ const transactionID0 = {
94
+ sessionID: "co_z123_session_z123" as SessionID,
95
+ txIndex: 0,
96
+ };
97
+ const transactionID2 = {
98
+ sessionID: "co_z123_session_z123" as SessionID,
99
+ txIndex: 2,
100
+ };
101
+ markSuccessful(successMap, transactionID0);
102
+ markSuccessful(successMap, transactionID2);
103
+ expect(successMap).toEqual({
104
+ "co_z123_session_z123:0": true,
105
+ "co_z123_session_z123:2": true,
106
+ });
107
+ expect(isTxSuccessful(successMap, transactionID0)).toBe(true);
108
+ expect(isTxSuccessful(successMap, transactionID2)).toBe(true);
109
+ expect(
110
+ isTxSuccessful(successMap, {
111
+ sessionID: transactionID0.sessionID,
112
+ txIndex: 1,
113
+ }),
114
+ ).toBe(false);
115
+ expect(
116
+ isTxSuccessful(successMap, {
117
+ sessionID: transactionID0.sessionID,
118
+ txIndex: 3,
119
+ }),
120
+ ).toBe(false);
121
+
122
+ markSuccessful(successMap, {
123
+ sessionID: transactionID0.sessionID,
124
+ txIndex: 1,
125
+ });
126
+ expect(successMap).toEqual({
127
+ "co_z123_session_z123:0": true,
128
+ "co_z123_session_z123:1": true,
129
+ "co_z123_session_z123:2": true,
130
+ });
131
+ expect(isTxSuccessful(successMap, transactionID0)).toBe(true);
132
+ expect(isTxSuccessful(successMap, transactionID2)).toBe(true);
133
+ expect(
134
+ isTxSuccessful(successMap, {
135
+ sessionID: transactionID0.sessionID,
136
+ txIndex: 1,
137
+ }),
138
+ ).toBe(true);
139
+ expect(
140
+ isTxSuccessful(successMap, {
141
+ sessionID: transactionID0.sessionID,
142
+ txIndex: 3,
143
+ }),
144
+ ).toBe(false);
145
+ });
146
+
147
+ it("should get transactions to retry", async () => {
148
+ const map1 = SuccessMap.create({});
149
+
150
+ expect(
151
+ Array.from(
152
+ getTransactionsToTry(map1, {
153
+ id: "co_z123",
154
+ header: false,
155
+ sessions: {
156
+ ["co_z123_session_z123" as SessionID]: 3,
157
+ },
158
+ }),
159
+ ),
160
+ ).toEqual([
161
+ {
162
+ sessionID: "co_z123_session_z123",
163
+ txIndex: 0,
164
+ },
165
+ {
166
+ sessionID: "co_z123_session_z123",
167
+ txIndex: 1,
168
+ },
169
+ {
170
+ sessionID: "co_z123_session_z123",
171
+ txIndex: 2,
172
+ },
173
+ ]);
174
+
175
+ const map2 = SuccessMap.create({
176
+ "co_z123_session_z123:0": true,
177
+ "co_z123_session_z123:2": true,
178
+ });
179
+
180
+ expect(
181
+ Array.from(
182
+ getTransactionsToTry(map2, {
183
+ id: "co_z123",
184
+ header: false,
185
+ sessions: {
186
+ ["co_z123_session_z123" as SessionID]: 3,
187
+ },
188
+ }),
189
+ ),
190
+ ).toEqual([
191
+ {
192
+ sessionID: "co_z123_session_z123",
193
+ txIndex: 1,
194
+ },
195
+ ]);
196
+
197
+ const map3 = SuccessMap.create({
198
+ "co_z123_session_z123:0": true,
199
+ "co_z123_session_z123:1": true,
200
+ "co_z123_session_z123:2": true,
201
+ });
202
+
203
+ expect(
204
+ Array.from(
205
+ getTransactionsToTry(map3, {
206
+ id: "co_z123",
207
+ header: false,
208
+ sessions: {
209
+ ["co_z123_session_z123" as SessionID]: 3,
210
+ },
211
+ }),
212
+ ),
213
+ ).toEqual([]);
214
+ });
215
+ });