prostgles-server 4.2.157 → 4.2.159

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 (159) hide show
  1. package/dist/Auth/AuthHandler.js +2 -2
  2. package/dist/Auth/AuthHandler.js.map +1 -1
  3. package/dist/Auth/AuthTypes.d.ts +4 -8
  4. package/dist/Auth/AuthTypes.d.ts.map +1 -1
  5. package/dist/Auth/setAuthProviders.d.ts +1 -1
  6. package/dist/Auth/setAuthProviders.d.ts.map +1 -1
  7. package/dist/Auth/setAuthProviders.js +6 -7
  8. package/dist/Auth/setAuthProviders.js.map +1 -1
  9. package/dist/Auth/setEmailProvider.d.ts +1 -1
  10. package/dist/Auth/setEmailProvider.d.ts.map +1 -1
  11. package/dist/Auth/setEmailProvider.js +22 -2
  12. package/dist/Auth/setEmailProvider.js.map +1 -1
  13. package/dist/Auth/setupAuthRoutes.js +1 -1
  14. package/dist/Auth/setupAuthRoutes.js.map +1 -1
  15. package/dist/Prostgles.d.ts +1 -0
  16. package/dist/Prostgles.d.ts.map +1 -1
  17. package/dist/Prostgles.js +6 -0
  18. package/dist/Prostgles.js.map +1 -1
  19. package/dist/initProstgles.d.ts.map +1 -1
  20. package/dist/initProstgles.js +2 -6
  21. package/dist/initProstgles.js.map +1 -1
  22. package/package.json +1 -1
  23. package/lib/Auth/AuthHandler.ts +0 -436
  24. package/lib/Auth/AuthTypes.ts +0 -285
  25. package/lib/Auth/getSafeReturnURL.ts +0 -35
  26. package/lib/Auth/sendEmail.ts +0 -83
  27. package/lib/Auth/setAuthProviders.ts +0 -129
  28. package/lib/Auth/setEmailProvider.ts +0 -63
  29. package/lib/Auth/setupAuthRoutes.ts +0 -161
  30. package/lib/DBEventsManager.ts +0 -178
  31. package/lib/DBSchemaBuilder.ts +0 -225
  32. package/lib/DboBuilder/DboBuilder.ts +0 -319
  33. package/lib/DboBuilder/DboBuilderTypes.ts +0 -361
  34. package/lib/DboBuilder/QueryBuilder/Functions.ts +0 -1153
  35. package/lib/DboBuilder/QueryBuilder/QueryBuilder.ts +0 -288
  36. package/lib/DboBuilder/QueryBuilder/getJoinQuery.ts +0 -263
  37. package/lib/DboBuilder/QueryBuilder/getNewQuery.ts +0 -271
  38. package/lib/DboBuilder/QueryBuilder/getSelectQuery.ts +0 -136
  39. package/lib/DboBuilder/QueryBuilder/prepareHaving.ts +0 -22
  40. package/lib/DboBuilder/QueryStreamer.ts +0 -250
  41. package/lib/DboBuilder/TableHandler/DataValidator.ts +0 -428
  42. package/lib/DboBuilder/TableHandler/TableHandler.ts +0 -205
  43. package/lib/DboBuilder/TableHandler/delete.ts +0 -115
  44. package/lib/DboBuilder/TableHandler/insert.ts +0 -183
  45. package/lib/DboBuilder/TableHandler/insertTest.ts +0 -78
  46. package/lib/DboBuilder/TableHandler/onDeleteFromFileTable.ts +0 -62
  47. package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +0 -134
  48. package/lib/DboBuilder/TableHandler/update.ts +0 -126
  49. package/lib/DboBuilder/TableHandler/updateBatch.ts +0 -49
  50. package/lib/DboBuilder/TableHandler/updateFile.ts +0 -48
  51. package/lib/DboBuilder/TableHandler/upsert.ts +0 -34
  52. package/lib/DboBuilder/ViewHandler/ViewHandler.ts +0 -393
  53. package/lib/DboBuilder/ViewHandler/count.ts +0 -38
  54. package/lib/DboBuilder/ViewHandler/find.ts +0 -153
  55. package/lib/DboBuilder/ViewHandler/getExistsCondition.ts +0 -73
  56. package/lib/DboBuilder/ViewHandler/getExistsFilters.ts +0 -74
  57. package/lib/DboBuilder/ViewHandler/getInfo.ts +0 -32
  58. package/lib/DboBuilder/ViewHandler/getTableJoinQuery.ts +0 -84
  59. package/lib/DboBuilder/ViewHandler/parseComplexFilter.ts +0 -96
  60. package/lib/DboBuilder/ViewHandler/parseFieldFilter.ts +0 -105
  61. package/lib/DboBuilder/ViewHandler/parseJoinPath.ts +0 -208
  62. package/lib/DboBuilder/ViewHandler/prepareSortItems.ts +0 -163
  63. package/lib/DboBuilder/ViewHandler/prepareWhere.ts +0 -90
  64. package/lib/DboBuilder/ViewHandler/size.ts +0 -37
  65. package/lib/DboBuilder/ViewHandler/subscribe.ts +0 -118
  66. package/lib/DboBuilder/ViewHandler/validateViewRules.ts +0 -70
  67. package/lib/DboBuilder/dboBuilderUtils.ts +0 -222
  68. package/lib/DboBuilder/getColumns.ts +0 -114
  69. package/lib/DboBuilder/getCondition.ts +0 -201
  70. package/lib/DboBuilder/getSubscribeRelatedTables.ts +0 -190
  71. package/lib/DboBuilder/getTablesForSchemaPostgresSQL.ts +0 -426
  72. package/lib/DboBuilder/insertNestedRecords.ts +0 -355
  73. package/lib/DboBuilder/parseUpdateRules.ts +0 -187
  74. package/lib/DboBuilder/prepareShortestJoinPaths.ts +0 -186
  75. package/lib/DboBuilder/runSQL.ts +0 -182
  76. package/lib/DboBuilder/runTransaction.ts +0 -50
  77. package/lib/DboBuilder/sqlErrCodeToMsg.ts +0 -254
  78. package/lib/DboBuilder/uploadFile.ts +0 -69
  79. package/lib/Event_Trigger_Tags.ts +0 -118
  80. package/lib/FileManager/FileManager.ts +0 -358
  81. package/lib/FileManager/getValidatedFileType.ts +0 -69
  82. package/lib/FileManager/initFileManager.ts +0 -187
  83. package/lib/FileManager/upload.ts +0 -62
  84. package/lib/FileManager/uploadStream.ts +0 -79
  85. package/lib/Filtering.ts +0 -463
  86. package/lib/JSONBValidation/validate_jsonb_schema_sql.ts +0 -502
  87. package/lib/JSONBValidation/validation.ts +0 -143
  88. package/lib/Logging.ts +0 -127
  89. package/lib/PostgresNotifListenManager.ts +0 -143
  90. package/lib/Prostgles.ts +0 -479
  91. package/lib/ProstglesTypes.ts +0 -196
  92. package/lib/PubSubManager/PubSubManager.ts +0 -609
  93. package/lib/PubSubManager/addSub.ts +0 -138
  94. package/lib/PubSubManager/addSync.ts +0 -141
  95. package/lib/PubSubManager/getCreatePubSubManagerError.ts +0 -72
  96. package/lib/PubSubManager/getPubSubManagerInitQuery.ts +0 -662
  97. package/lib/PubSubManager/initPubSubManager.ts +0 -79
  98. package/lib/PubSubManager/notifListener.ts +0 -173
  99. package/lib/PubSubManager/orphanTriggerCheck.ts +0 -70
  100. package/lib/PubSubManager/pushSubData.ts +0 -55
  101. package/lib/PublishParser/PublishParser.ts +0 -162
  102. package/lib/PublishParser/getFileTableRules.ts +0 -124
  103. package/lib/PublishParser/getSchemaFromPublish.ts +0 -141
  104. package/lib/PublishParser/getTableRulesWithoutFileTable.ts +0 -177
  105. package/lib/PublishParser/publishTypesAndUtils.ts +0 -399
  106. package/lib/RestApi.ts +0 -127
  107. package/lib/SchemaWatch/SchemaWatch.ts +0 -90
  108. package/lib/SchemaWatch/createSchemaWatchEventTrigger.ts +0 -3
  109. package/lib/SchemaWatch/getValidatedWatchSchemaType.ts +0 -45
  110. package/lib/SchemaWatch/getWatchSchemaTagList.ts +0 -27
  111. package/lib/SyncReplication.ts +0 -557
  112. package/lib/TableConfig/TableConfig.ts +0 -468
  113. package/lib/TableConfig/getColumnDefinitionQuery.ts +0 -111
  114. package/lib/TableConfig/getConstraintDefinitionQueries.ts +0 -95
  115. package/lib/TableConfig/getFutureTableSchema.ts +0 -64
  116. package/lib/TableConfig/getPGIndexes.ts +0 -53
  117. package/lib/TableConfig/getTableColumnQueries.ts +0 -129
  118. package/lib/TableConfig/initTableConfig.ts +0 -326
  119. package/lib/index.ts +0 -13
  120. package/lib/initProstgles.ts +0 -322
  121. package/lib/onSocketConnected.ts +0 -102
  122. package/lib/runClientRequest.ts +0 -129
  123. package/lib/shortestPath.ts +0 -122
  124. package/lib/typeTests/DBoGenerated.d.ts +0 -320
  125. package/lib/typeTests/dboTypeCheck.ts +0 -81
  126. package/lib/utils.ts +0 -15
  127. package/tests/client/hooks.spec.ts +0 -205
  128. package/tests/client/index.ts +0 -139
  129. package/tests/client/package-lock.json +0 -637
  130. package/tests/client/package.json +0 -26
  131. package/tests/client/renderReactHook.ts +0 -177
  132. package/tests/client/tsconfig.json +0 -15
  133. package/tests/client/useProstgles.spec.ts +0 -120
  134. package/tests/clientFileTests.spec.ts +0 -102
  135. package/tests/clientOnlyQueries.spec.ts +0 -667
  136. package/tests/clientRestApi.spec.ts +0 -82
  137. package/tests/config_test/DBoGenerated.d.ts +0 -407
  138. package/tests/config_test/index.html +0 -109
  139. package/tests/config_test/index.js +0 -86
  140. package/tests/config_test/index.js.map +0 -1
  141. package/tests/config_test/index.ts +0 -91
  142. package/tests/config_test/init.sql +0 -48
  143. package/tests/config_test/package.json +0 -29
  144. package/tests/config_test/tsconfig.json +0 -23
  145. package/tests/config_testDBoGenerated.d.ts +0 -407
  146. package/tests/isomorphicQueries.spec.ts +0 -1493
  147. package/tests/server/DBoGenerated.d.ts +0 -537
  148. package/tests/server/index.html +0 -73
  149. package/tests/server/index.ts +0 -289
  150. package/tests/server/init.sql +0 -224
  151. package/tests/server/package-lock.json +0 -2164
  152. package/tests/server/package.json +0 -25
  153. package/tests/server/publishTypeCheck.ts +0 -136
  154. package/tests/server/server.ts +0 -35
  155. package/tests/server/testPublish.ts +0 -147
  156. package/tests/server/testTableConfig.ts +0 -156
  157. package/tests/server/tsconfig.json +0 -22
  158. package/tests/serverOnlyQueries.spec.ts +0 -32
  159. package/tests/test.sh +0 -20
@@ -1,320 +0,0 @@
1
- export type DBSchemaGenerated = {
2
- items: {
3
- is_view: false;
4
- select: true;
5
- insert: true;
6
- update: true;
7
- delete: true;
8
- columns: {
9
- h?: null | string[];
10
- id?: number;
11
- name?: null | string;
12
- };
13
- };
14
- items2: {
15
- is_view: false;
16
- select: true;
17
- insert: true;
18
- update: true;
19
- delete: true;
20
- columns: {
21
- hh?: null | string[];
22
- id?: number;
23
- items_id?: null | number;
24
- name?: null | string;
25
- };
26
- };
27
- items3: {
28
- is_view: false;
29
- select: true;
30
- insert: true;
31
- update: true;
32
- delete: true;
33
- columns: {
34
- h?: null | string[];
35
- id?: number;
36
- name?: null | string;
37
- };
38
- };
39
- items4: {
40
- is_view: false;
41
- select: true;
42
- insert: true;
43
- update: true;
44
- delete: true;
45
- columns: {
46
- added?: null | string;
47
- id?: number;
48
- name: string;
49
- public?: null | string;
50
- };
51
- };
52
- items4_pub: {
53
- is_view: false;
54
- select: true;
55
- insert: true;
56
- update: true;
57
- delete: true;
58
- columns: {
59
- added?: null | string;
60
- id?: number;
61
- name: string;
62
- public?: null | string;
63
- };
64
- };
65
- items4a: {
66
- is_view: false;
67
- select: true;
68
- insert: true;
69
- update: true;
70
- delete: true;
71
- columns: {
72
- id?: number;
73
- items_id?: null | number;
74
- items2_id?: null | number;
75
- name?: null | string;
76
- };
77
- };
78
- "prostgles_test.basic": {
79
- is_view: false;
80
- select: true;
81
- insert: true;
82
- update: true;
83
- delete: true;
84
- columns: {
85
- id?: number;
86
- txt?: null | string;
87
- };
88
- };
89
- "prostgles_test.basic1": {
90
- is_view: false;
91
- select: true;
92
- insert: true;
93
- update: true;
94
- delete: true;
95
- columns: {
96
- id?: number;
97
- id_basic?: null | number;
98
- txt?: null | string;
99
- };
100
- };
101
- "prostgles_test.mv_basic1": {
102
- is_view: true;
103
- select: true;
104
- insert: false;
105
- update: false;
106
- delete: false;
107
- columns: {
108
- id: number;
109
- id_basic: number;
110
- txt: string;
111
- };
112
- };
113
- rec: {
114
- is_view: false;
115
- select: true;
116
- insert: true;
117
- update: true;
118
- delete: true;
119
- columns: {
120
- id?: number;
121
- parent_id?: null | number;
122
- recf?: null | number;
123
- };
124
- };
125
- rec_ref: {
126
- is_view: false;
127
- select: true;
128
- insert: true;
129
- update: true;
130
- delete: true;
131
- columns: {
132
- id?: number;
133
- };
134
- };
135
- self_join: {
136
- is_view: false;
137
- select: true;
138
- insert: true;
139
- update: true;
140
- delete: true;
141
- columns: {
142
- id?: number;
143
- my_id?: null | number;
144
- my_id1?: null | number;
145
- name?: null | string;
146
- };
147
- };
148
- shapes: {
149
- is_view: false;
150
- select: true;
151
- insert: true;
152
- update: true;
153
- delete: true;
154
- columns: {
155
- geog?: null | string;
156
- geom?: null | string;
157
- id?: string;
158
- };
159
- };
160
- spatial_ref_sys: {
161
- is_view: false;
162
- select: true;
163
- insert: true;
164
- update: true;
165
- delete: true;
166
- columns: {
167
- auth_name?: null | string;
168
- auth_srid?: null | number;
169
- proj4text?: null | string;
170
- srid: number;
171
- srtext?: null | string;
172
- };
173
- };
174
- symbols: {
175
- is_view: false;
176
- select: true;
177
- insert: true;
178
- update: true;
179
- delete: true;
180
- columns: {
181
- id: string;
182
- };
183
- };
184
- tjson: {
185
- is_view: false;
186
- select: true;
187
- insert: true;
188
- update: true;
189
- delete: true;
190
- columns: {
191
- colOneOf: "a" | "b" | "c"
192
- json: { a: boolean; arr: '1' | '2' | '3'; arr1: 1 | 2 | 3; arr2: number[]; arrStr?: null | string[]; o?: | null
193
- | { o1: number; }
194
- | { o2: boolean; }; };
195
- jsonOneOf?:
196
- | null
197
- | { command: 'a'; }
198
- | { command: 'b'; option: number[]; }
199
- status?:
200
- | null
201
- | { ok: string; }
202
- | { err: string; }
203
- | { loading: { loaded: number; total: number; }; }
204
- table_config?: null | { referencedTables?: ( { name: string; minFiles: number; } )[]; recType?: null | Record<'a' | 'b', { bools: boolean[]; }>; };
205
- };
206
- };
207
- tr1: {
208
- is_view: false;
209
- select: true;
210
- insert: true;
211
- update: true;
212
- delete: true;
213
- columns: {
214
- id?: number;
215
- t1?: null | string;
216
- };
217
- };
218
- tr2: {
219
- is_view: false;
220
- select: true;
221
- insert: true;
222
- update: true;
223
- delete: true;
224
- columns: {
225
- id?: number;
226
- t1?: null | string;
227
- t2?: null | string;
228
- tr1_id?: null | number;
229
- };
230
- };
231
- tr3: {
232
- is_view: false;
233
- select: true;
234
- insert: true;
235
- update: true;
236
- delete: true;
237
- columns: {
238
- id?: number;
239
- t2?: null | string;
240
- tr2_id?: null | number;
241
- };
242
- };
243
- trades: {
244
- is_view: false;
245
- select: true;
246
- insert: true;
247
- update: true;
248
- delete: true;
249
- columns: {
250
- id?: number;
251
- price: string;
252
- symbol: string;
253
- };
254
- };
255
- users: {
256
- is_view: false;
257
- select: true;
258
- insert: true;
259
- update: true;
260
- delete: true;
261
- columns: {
262
- email: string;
263
- id?: number;
264
- preferences: { showIntro?: boolean; theme?: 'light' | 'dark' | 'auto'; others: any[]; };
265
- status: "active" | "disabled" | "pending"
266
- };
267
- };
268
- users_public_info: {
269
- is_view: false;
270
- select: true;
271
- insert: true;
272
- update: true;
273
- delete: true;
274
- columns: {
275
- avatar?: null | string;
276
- id?: number;
277
- name?: null | string;
278
- sid?: null | string;
279
- };
280
- };
281
- uuid_text: {
282
- is_view: false;
283
- select: true;
284
- insert: true;
285
- update: true;
286
- delete: true;
287
- columns: {
288
- col1?: null | string;
289
- col2?: null | string;
290
- id?: null | string;
291
- };
292
- };
293
- v_items: {
294
- is_view: true;
295
- select: true;
296
- insert: true;
297
- update: true;
298
- delete: true;
299
- columns: {
300
- id?: null | number;
301
- name?: null | string;
302
- };
303
- };
304
- various: {
305
- is_view: false;
306
- select: true;
307
- insert: true;
308
- update: true;
309
- delete: true;
310
- columns: {
311
- added?: null | string;
312
- h?: null | string[];
313
- id?: number;
314
- jsn?: null | any;
315
- name?: null | string;
316
- tsv?: null | string;
317
- };
318
- };
319
-
320
- }
@@ -1,81 +0,0 @@
1
- import { ViewHandler } from "prostgles-types";
2
- import type { DBOFullyTyped } from "../DBSchemaBuilder";
3
- import type { DBHandlerServer } from "../DboBuilder/DboBuilder";
4
- import { Publish } from "../PublishParser/PublishParser";
5
- import { DBSchemaGenerated } from "./DBoGenerated";
6
-
7
- type DBSchema2 = {
8
- tr2: {
9
- is_view: false;
10
- select: true;
11
- insert: true;
12
- update: true;
13
- delete: true;
14
- columns: {
15
- id?: number;
16
- t1?: null | string;
17
- t2?: null | string;
18
- tr1_id?: null | number;
19
- };
20
- };
21
- }
22
- export const testDboTypes = () => {
23
- (async () => {
24
- const dbo = {} as DBOFullyTyped;
25
- dbo.someTable?.find;
26
-
27
- const dbo1 = {} as DBHandlerServer;
28
- dbo1.w?.find;
29
-
30
- const db = {} as DBOFullyTyped<DBSchemaGenerated>;
31
- db.items2.find;
32
-
33
- const r = await db.items2.find({ }, {
34
- select: { id: 1 },
35
- orderBy: {
36
- id: 1,
37
- }
38
- });
39
-
40
- r[0]?.id;
41
-
42
- //@ts-expect-error
43
- r[0]?.bad_col;
44
-
45
- const tr2 = {} as ViewHandler<DBSchema2["tr2"]["columns"], DBSchema2>;
46
- tr2.find({}, {
47
- select: { id: 1 },
48
- orderBy: { tr1_id: 1 }
49
- });
50
-
51
- tr2.find({}, {
52
- //@ts-expect-error
53
- select: { bad_col: 1 }
54
- });
55
-
56
- tr2.find({}, {
57
- //@ts-expect-error
58
- orderBy: { bad_col: 1 }
59
- });
60
-
61
- (await db.items2.find({}, { select: { items_id: 1 }, returnType: "values" })) satisfies (number | null)[];
62
-
63
-
64
- const publish: Publish<DBSchemaGenerated> = {
65
- items: {
66
- insert: {
67
- fields: {
68
- name: 1,
69
- //@ts-expect-error
70
- bad_col: 1
71
- },
72
- validate: async (row) => ({
73
- ...row,
74
- h: [""]
75
- })
76
- }
77
- }
78
- };
79
- publish;
80
- })
81
- }
package/lib/utils.ts DELETED
@@ -1,15 +0,0 @@
1
-
2
- export { get } from "prostgles-types";
3
- export const clone = <T extends any[] | Record<string, any>>(obj: T): T => {
4
- if(typeof structuredClone !== "undefined"){
5
- return structuredClone(obj);
6
- }
7
-
8
- return JSON.parse(JSON.stringify(obj));
9
- }
10
-
11
- export const sleep = function (ms: number) {
12
- return new Promise((resolve) => {
13
- setTimeout(resolve, ms);
14
- });
15
- }
@@ -1,205 +0,0 @@
1
- import { strict as assert } from "assert";
2
- import { describe, test } from "node:test";
3
- import { AnyObject, pickKeys } from "prostgles-types";
4
- import type { DBHandlerClient } from "./index";
5
- import { renderReactHook } from "./renderReactHook";
6
-
7
- export const clientHooks = async (db: DBHandlerClient, getSocketOptions: (watchSchema?: boolean) => AnyObject) => {
8
-
9
- const resultLoading = { data: undefined, isLoading: true, error: undefined };
10
- await describe("React hooks", async (t) => {
11
-
12
- const defaultFilter = { name: "abc" };
13
- await Promise.all([
14
- "useFind",
15
- "useSubscribe",
16
- "useFindOne",
17
- "useSubscribeOne",
18
- ].map(async hookName => {
19
- await test(hookName, async (t) => {
20
- const expectsOne = hookName.includes("One");
21
- const options = {
22
- select: { added: "$Mon" },
23
- limit: expectsOne? undefined : 1
24
- };
25
- const expectedData = expectsOne? { added: "Dec" } : [{ added: "Dec" }];
26
- const { rerender, results } = await renderReactHook({
27
- hook: db.items4[hookName]!,
28
- props: [{ name: "abc" }, options],
29
- expectedRerenders: 2
30
- });
31
-
32
- assert.deepStrictEqual(
33
- results, [
34
- resultLoading,
35
- { data: expectedData, isLoading:false, error: undefined}
36
- ]
37
- );
38
-
39
- const { results: errorResults } = await rerender({
40
- props: [{ named: "error" }, options],
41
- expectedRerenders: 2,
42
- });
43
-
44
- assert.deepStrictEqual(
45
- errorResults, [
46
- resultLoading,
47
- { data: undefined, isLoading: false, error: {
48
- message: 'Table: items4 -> disallowed/inexistent columns in filter: named \n' +
49
- ' Expecting one of: added, "id", "public", "name"',
50
- } }
51
- ]
52
- );
53
- });
54
- }));
55
-
56
- await Promise.all([
57
- {
58
- hookName: "useCount",
59
- result1: { data: 2, error: undefined, isLoading: false },
60
- result2: { data: 0, error: undefined, isLoading: false },
61
- },
62
- {
63
- hookName: "useSize",
64
- result1: { data: "93", error: undefined, isLoading: false },
65
- result2: { data: "0", error: undefined, isLoading: false }
66
- },
67
- ].map(async ({ hookName, result1, result2 }) => {
68
- await test(hookName, async (t) => {
69
- const { results, rerender } = await renderReactHook({
70
- hook: db.items4[hookName]!,
71
- props: [defaultFilter],
72
- expectedRerenders: 2
73
- });
74
-
75
- // Initial state
76
- assert.deepStrictEqual(
77
- results, [
78
- resultLoading,
79
- result1
80
- ]
81
- );
82
-
83
- // Rerender with different filter
84
- const { results: noResults } = await rerender({
85
- props: [{ id: -1 }],
86
- expectedRerenders: 2,
87
- });
88
-
89
- // New results
90
- assert.deepStrictEqual(
91
- noResults,
92
- [resultLoading, result2]
93
- );
94
- });
95
-
96
- }));
97
-
98
- await test("useCount planes", async (t) => {
99
- const { results } = await renderReactHook({
100
- hook: db.planes.useCount!,
101
- props: [{}],
102
- expectedRerenders: 2
103
- });
104
- assert.deepStrictEqual(
105
- results,
106
- [
107
- { data: undefined, isLoading: true, error: undefined },
108
- { data: 100, error: undefined, isLoading: false }
109
- ]
110
- );
111
- });
112
-
113
- // // TODO fix useSync test
114
- await test("useSync", async (t) => {
115
- const funcHandles = {
116
- '$cloneMultiSync': 1,
117
- '$cloneSync': 1,
118
- '$delete': 1,
119
- '$find': 1,
120
- '$get': 1,
121
- '$unsync': 1,
122
- '$update': 1,
123
- };
124
- const plane0 = {
125
- id: 0,
126
- x: 20,
127
- y: 0
128
- }
129
- // await db.planes.insert({ name: "abc" });
130
-
131
- // const { results: firstPlaneResults } = await renderReactHook({
132
- // hook: db.planes.useFindOne!,
133
- // props: [{ }],
134
- // expectedRerenders: 2
135
- // });
136
- // assert.deepStrictEqual(firstPlaneResults, [
137
- // { data: undefined, isLoading: true, error: undefined },
138
- // { data: undefined, error: undefined, isLoading: false },
139
- // ]);
140
-
141
- const props = [{ id: 0 }, { handlesOnData: true }]; // , select: { id: 1, x: 1 }
142
- const { results, rerender } = await renderReactHook({
143
- hook: db.planes.useSync!,
144
- props,
145
- expectedRerenders: 3
146
- });
147
- assert.equal(results.length, 3);
148
- assert.deepStrictEqual(
149
- results[0],
150
- { data: undefined, isLoading: true, error: undefined }
151
- );
152
- /** This fails from time to time */
153
- // assert.deepStrictEqual(
154
- // results[1],
155
- // { data: [], error: undefined, isLoading: false },
156
- // );
157
- const lastResult = results.at(-1);
158
- assert.equal(lastResult?.isLoading, false);
159
- const lastData = lastResult?.data;
160
- assert.equal(lastData.length, 1);
161
- const lastDataItem = lastData[0];
162
- assert.deepStrictEqual(
163
- pickKeys(lastDataItem, Object.keys(plane0)),
164
- plane0
165
- );
166
-
167
- // Update item
168
- db.planes.update({ id: 0 }, { x: 230 });
169
- const { results: deletedResults } = await rerender({
170
- props,
171
- expectedRerenders: 3,
172
- });
173
-
174
- assert.deepStrictEqual(
175
- deletedResults.map(({ data }) => data?.[0]?.x),
176
- [
177
- undefined, // TODO - should be defined and 20
178
- 20,
179
- 230,
180
- ],
181
- );
182
-
183
- // // Rerender with different filter
184
- // rerender({ id: -1 });
185
-
186
- // await expectValues(
187
- // result,
188
- // [
189
- // { data: undefined, error: undefined, isLoading: true },
190
- // { data: [], error: undefined, isLoading: false },
191
- // ]
192
- // );
193
-
194
- // await expectValues(
195
- // result,
196
- // [
197
- // { data: undefined, error: undefined, isLoading: true },
198
- // { data: [], error: undefined, isLoading: false }
199
- // ]
200
- // );
201
-
202
- });
203
-
204
- });
205
- }