prostgles-client 4.0.360 → 4.0.362

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 (63) hide show
  1. package/dist/FunctionQueuer.js +51 -49
  2. package/dist/SyncedTable/SyncedTable.d.ts +3 -108
  3. package/dist/SyncedTable/SyncedTable.d.ts.map +1 -1
  4. package/dist/SyncedTable/SyncedTable.js +1 -628
  5. package/dist/SyncedTable/createSync.d.ts +3 -2
  6. package/dist/SyncedTable/createSync.d.ts.map +1 -1
  7. package/dist/SyncedTable/createSync.js +16 -9
  8. package/dist/SyncedTable/createSyncDataStore.d.ts +1 -1
  9. package/dist/SyncedTable/createSyncDataStore.d.ts.map +1 -1
  10. package/dist/SyncedTable/createSyncDataStore.js +2 -3
  11. package/dist/SyncedTable/createSyncStateUtils.d.ts +7 -4
  12. package/dist/SyncedTable/createSyncStateUtils.d.ts.map +1 -1
  13. package/dist/SyncedTable/createSyncStateUtils.js +32 -38
  14. package/dist/SyncedTable/createSyncSubscriptionManager.js +6 -10
  15. package/dist/auth/useAuthState.d.ts +2 -2
  16. package/dist/auth/useAuthState.d.ts.map +1 -1
  17. package/dist/auth/useAuthState.js +4 -5
  18. package/dist/getAuthHandler.js +7 -9
  19. package/dist/getDbHandler.d.ts +2 -6
  20. package/dist/getDbHandler.d.ts.map +1 -1
  21. package/dist/getDbHandler.js +37 -71
  22. package/dist/getMethods.js +1 -1
  23. package/dist/getSqlHandler.js +6 -8
  24. package/dist/getSubscriptionHandler.js +5 -5
  25. package/dist/getSyncHandlerV2.d.ts.map +1 -1
  26. package/dist/getSyncHandlerV2.js +3 -4
  27. package/dist/hooks/reactImports.js +2 -3
  28. package/dist/hooks/useAsyncEffectQueue.js +3 -4
  29. package/dist/hooks/useEffectAsync.js +1 -2
  30. package/dist/hooks/useEffectDeep.js +1 -1
  31. package/dist/hooks/useFetch.js +1 -1
  32. package/dist/hooks/useProstglesClient.d.ts +1 -1
  33. package/dist/hooks/useProstglesClient.d.ts.map +1 -1
  34. package/dist/hooks/useProstglesClient.js +5 -8
  35. package/dist/hooks/useSubscribe.js +1 -1
  36. package/dist/hooks/useSync.js +1 -1
  37. package/dist/{prostgles-full.d.ts → index.d.ts} +1 -3
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +36 -1
  40. package/dist/{prostgles-full-cdn.d.ts → index.umd.d.ts} +1 -1
  41. package/dist/index.umd.d.ts.map +1 -0
  42. package/dist/index.umd.js +1 -0
  43. package/dist/prostgles.d.ts +3 -3
  44. package/dist/prostgles.d.ts.map +1 -1
  45. package/dist/prostgles.js +11 -13
  46. package/package.json +3 -4
  47. package/tsconfig.json +5 -15
  48. package/webpack.dev.js +14 -15
  49. package/webpack.prod.js +2 -3
  50. package/dist/SyncedTable/getMultiSyncSubscription.d.ts +0 -12
  51. package/dist/SyncedTable/getMultiSyncSubscription.d.ts.map +0 -1
  52. package/dist/SyncedTable/getMultiSyncSubscription.js +0 -60
  53. package/dist/SyncedTable/getSingleSyncSubscription.d.ts +0 -1
  54. package/dist/SyncedTable/getSingleSyncSubscription.d.ts.map +0 -1
  55. package/dist/SyncedTable/getSingleSyncSubscription.js +0 -1
  56. package/dist/getSyncHandler.d.ts +0 -10
  57. package/dist/getSyncHandler.d.ts.map +0 -1
  58. package/dist/getSyncHandler.js +0 -199
  59. package/dist/index.no-sync.js +0 -1
  60. package/dist/prostgles-full-cdn.d.ts.map +0 -1
  61. package/dist/prostgles-full-cdn.js +0 -8
  62. package/dist/prostgles-full.d.ts.map +0 -1
  63. package/dist/prostgles-full.js +0 -38
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "prostgles-client",
3
- "version": "4.0.360",
3
+ "version": "4.0.362",
4
4
  "description": "Reactive client for Postgres",
5
- "main": "dist/prostgles-full.js",
6
- "types": "dist/prostgles-full.d.ts",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
7
  "repository": {
8
8
  "type": "git",
9
9
  "url": "git+https://github.com/prostgles/prostgles-client-js.git"
@@ -32,7 +32,6 @@
32
32
  "socket.io-client": "^4.8.3"
33
33
  },
34
34
  "devDependencies": {
35
- "@types/node": "^14.18.63",
36
35
  "@types/react": "^18.3.28",
37
36
  "@typescript-eslint/eslint-plugin": "^8.57.2",
38
37
  "@typescript-eslint/parser": "^8.57.2",
package/tsconfig.json CHANGED
@@ -1,14 +1,8 @@
1
1
  {
2
- "files": ["lib/prostgles-full.ts"],
2
+ "files": ["lib/index.ts"],
3
3
  "compilerOptions": {
4
- "baseUrl": ".",
5
- "target": "es2019",
6
- "lib": [
7
- "es6",
8
- "dom",
9
- "es2017",
10
- "es2019"
11
- ],
4
+ "target": "ES2022",
5
+ "lib": ["es6", "dom", "es2017", "es2019", "es2022"],
12
6
  "strict": true,
13
7
  "module": "commonjs",
14
8
  "resolveJsonModule": true,
@@ -27,9 +21,5 @@
27
21
  "noUncheckedIndexedAccess": true
28
22
  },
29
23
  "include": ["lib"],
30
- "exclude": [
31
- "./dist",
32
- "./tests",
33
- "node_modules"
34
- ]
35
- }
24
+ "exclude": ["./dist", "./tests", "node_modules"]
25
+ }
package/webpack.dev.js CHANGED
@@ -1,31 +1,30 @@
1
-
2
- const path = require('path');
1
+ const path = require("path");
3
2
 
4
3
  module.exports = {
5
- entry: './lib/prostgles-full.ts',
6
- devtool: 'inline-source-map',
7
- mode: 'development',
4
+ entry: "./lib/index.ts",
5
+ devtool: "inline-source-map",
6
+ mode: "development",
8
7
  module: {
9
8
  rules: [
10
9
  {
11
10
  test: /\.tsx?$/,
12
- use: 'ts-loader',
11
+ use: "ts-loader",
13
12
  exclude: /node_modules/,
14
13
  },
15
14
  ],
16
15
  },
17
16
  resolve: {
18
- extensions: [ '.tsx', '.ts', '.js' ],
17
+ extensions: [".tsx", ".ts", ".js"],
19
18
  },
20
19
  output: {
21
- filename: 'prostgles.dev.js',
22
- path: path.resolve(__dirname, 'dist'),
23
- libraryTarget: 'umd',
24
- globalObject: 'this',
20
+ filename: "prostgles.dev.js",
21
+ path: path.resolve(__dirname, "dist"),
22
+ libraryTarget: "umd",
23
+ globalObject: "this",
25
24
  },
26
25
  watch: true,
27
- watchOptions: {
26
+ watchOptions: {
28
27
  aggregateTimeout: 200,
29
- poll: 1000
30
- }
31
- };
28
+ poll: 1000,
29
+ },
30
+ };
package/webpack.prod.js CHANGED
@@ -3,10 +3,9 @@ const TsconfigPathsPlugin = require("tsconfig-paths-webpack-plugin");
3
3
 
4
4
  module.exports = {
5
5
  entry: {
6
- index: "./dist/prostgles-full-cdn.js", // './lib/prostgles-full-cdn.ts
7
- "index.no-sync": "./dist/prostgles.js", // './lib/prostgles.ts'
6
+ "index.umd": "./dist/index.umd.js",
8
7
  },
9
- mode: "production", // "development",//
8
+ mode: "production",
10
9
  module: {
11
10
  rules: [
12
11
  {
@@ -1,12 +0,0 @@
1
- import type { AnyObject } from "prostgles-types";
2
- import type { MultiChangeListener, MultiSyncHandles, SubscriptionMulti, SyncedTable } from "./SyncedTable";
3
- type Args = {
4
- onChange: MultiChangeListener<AnyObject>;
5
- handlesOnData: boolean;
6
- };
7
- export declare function getMultiSyncSubscription(this: SyncedTable, { onChange, handlesOnData }: Args): {
8
- sub: SubscriptionMulti<AnyObject>;
9
- handles: MultiSyncHandles<AnyObject>;
10
- };
11
- export {};
12
- //# sourceMappingURL=getMultiSyncSubscription.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getMultiSyncSubscription.d.ts","sourceRoot":"","sources":["../../lib/SyncedTable/getMultiSyncSubscription.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAEV,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACZ,MAAM,eAAe,CAAC;AAEvB,KAAK,IAAI,GAAG;IACV,QAAQ,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACzC,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AACF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,IAAI;;;EA2D5F"}
@@ -1,60 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getMultiSyncSubscription = getMultiSyncSubscription;
4
- function getMultiSyncSubscription({ onChange, handlesOnData }) {
5
- const handles = {
6
- $unsync: () => {
7
- return this.unsubscribe(onChange);
8
- },
9
- getItems: () => {
10
- return this.getItems();
11
- },
12
- $upsert: (newData) => {
13
- if (!newData) {
14
- throw "No data provided for upsert";
15
- }
16
- const prepareOne = (d) => {
17
- return {
18
- idObj: this.getIdObj(d),
19
- delta: d,
20
- };
21
- };
22
- if (Array.isArray(newData)) {
23
- this.upsert(newData.map((d) => prepareOne(d)));
24
- }
25
- else {
26
- this.upsert([prepareOne(newData)]);
27
- }
28
- },
29
- };
30
- const sub = {
31
- _onChange: onChange,
32
- handlesOnData,
33
- handles,
34
- notify: (_allItems, _allDeltas) => {
35
- let allItems = [..._allItems];
36
- const allDeltas = [..._allDeltas];
37
- if (handlesOnData) {
38
- allItems = allItems.map((item, i) => {
39
- const getItem = (d, idObj) => ({
40
- ...d,
41
- ...this.makeSingleSyncHandles(idObj, onChange),
42
- $get: () => getItem(this.getItem(idObj), idObj),
43
- $find: (idObject) => getItem(this.getItem(idObject), idObject),
44
- $update: (newData, opts) => {
45
- return this.upsert([{ idObj, delta: newData, opts }]);
46
- },
47
- $delete: async () => {
48
- return this.delete(idObj);
49
- },
50
- $cloneMultiSync: (onChange) => this.sync(onChange, handlesOnData),
51
- });
52
- const idObj = this.getIdObj(item);
53
- return getItem(item, idObj);
54
- });
55
- }
56
- return onChange(allItems, allDeltas);
57
- },
58
- };
59
- return { sub, handles };
60
- }
@@ -1 +0,0 @@
1
- //# sourceMappingURL=getSingleSyncSubscription.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getSingleSyncSubscription.d.ts","sourceRoot":"","sources":["../../lib/SyncedTable/getSingleSyncSubscription.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- "use strict";
@@ -1,10 +0,0 @@
1
- import { type ClientSyncHandles } from "prostgles-types";
2
- import type { InitOptions, SyncParams } from "./prostgles";
3
- import type { SyncedTable } from "./SyncedTable/SyncedTable";
4
- export declare const getSyncHandler: ({ socket, onDebug }: Pick<InitOptions, "socket" | "onDebug">) => {
5
- destroySyncs: () => Promise<void>;
6
- syncedTables: Map<string, Promise<SyncedTable>>;
7
- addSync: (params: SyncParams, triggers: ClientSyncHandles) => Promise<any>;
8
- reAttachAll: () => Promise<void>;
9
- };
10
- //# sourceMappingURL=getSyncHandler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getSyncHandler.d.ts","sourceRoot":"","sources":["../lib/getSyncHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAe,WAAW,EAAY,UAAU,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAQ1E,eAAO,MAAM,cAAc,GAAI,qBAAqB,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,SAAS,CAAC;;;sBA4E1D,UAAU,YAAY,iBAAiB,KAAG,OAAO,CAAC,GAAG,CAAC;;CAgJtF,CAAC"}
@@ -1,199 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSyncHandler = void 0;
4
- const prostgles_types_1 = require("prostgles-types");
5
- const FunctionQueuer_1 = require("./FunctionQueuer");
6
- const prostgles_1 = require("./prostgles");
7
- const getSyncHandler = ({ socket, onDebug }) => {
8
- const syncedTables = new Map();
9
- const syncs = new Map();
10
- const destroySyncs = async () => {
11
- (0, prostgles_1.debug)("destroySyncs", { syncedTables });
12
- syncs.clear();
13
- Array.from(syncedTables.values()).forEach((s) => {
14
- s.then((s) => s.destroy());
15
- });
16
- syncedTables.clear();
17
- };
18
- function _unsync(channelName, triggers) {
19
- (0, prostgles_1.debug)("_unsync", { channelName, triggers });
20
- return new Promise((resolve, reject) => {
21
- const sync = syncs.get(channelName);
22
- if (sync) {
23
- sync.clientSyncHandles = sync.clientSyncHandles.filter((tr) => tr.onPullRequest !== triggers.onPullRequest &&
24
- tr.onSyncRequest !== triggers.onSyncRequest &&
25
- tr.onUpdates !== triggers.onUpdates);
26
- if (!sync.clientSyncHandles.length) {
27
- socket.emit(channelName + "unsync", {}, (err, res) => {
28
- if (err)
29
- reject(err);
30
- else
31
- resolve(res);
32
- });
33
- socket.removeListener(channelName, sync.onCall);
34
- syncs.delete(channelName);
35
- }
36
- }
37
- });
38
- }
39
- function addServerSync({ tableName, command, param1 = {}, param2 }, onSyncRequest) {
40
- return new Promise((resolve, reject) => {
41
- socket.emit(prostgles_types_1.CHANNEL_PREFIX, {
42
- tableName,
43
- command,
44
- param1,
45
- param2,
46
- }, (err, syncInfo) => {
47
- onDebug === null || onDebug === void 0 ? void 0 : onDebug({
48
- type: "table",
49
- command: "sync",
50
- tableName,
51
- data: { param1, param2 },
52
- });
53
- if (err) {
54
- console.error(err);
55
- reject(err);
56
- }
57
- else if (syncInfo) {
58
- const { id_fields, synced_field, channelName } = syncInfo;
59
- socket.emit(channelName, { onSyncRequest: onSyncRequest({}) }, (response) => {
60
- console.log(response);
61
- });
62
- resolve({ id_fields, synced_field, channelName });
63
- }
64
- });
65
- });
66
- }
67
- const addSyncQueuer = new FunctionQueuer_1.FunctionQueuer(_addSync, ([{ tableName }]) => tableName);
68
- async function addSync(params, triggers) {
69
- return addSyncQueuer.run([params, triggers]);
70
- }
71
- async function _addSync({ tableName, command, param1, param2 }, clientSyncHandlers) {
72
- const { onSyncRequest } = clientSyncHandlers;
73
- function makeHandler(channelName) {
74
- const unsync = function () {
75
- _unsync(channelName, clientSyncHandlers);
76
- };
77
- const syncData = function (data, deleted, cb) {
78
- socket.emit(channelName, {
79
- onSyncRequest: {
80
- ...onSyncRequest({}),
81
- ...{ data },
82
- ...{ deleted },
83
- },
84
- }, !cb ? null : ((response) => {
85
- cb(response);
86
- }));
87
- };
88
- return Object.freeze({ unsync, syncData });
89
- }
90
- const matchingSync = Array.from(syncs.entries()).find(([ch, s]) => {
91
- return (s.tableName === tableName &&
92
- (0, prostgles_types_1.isEqual)(s.param1, param1) &&
93
- (0, prostgles_types_1.isEqual)(s.param2.select, param2.select));
94
- });
95
- if (matchingSync) {
96
- const [existingChannel, existingSync] = matchingSync;
97
- existingSync.clientSyncHandles.push(clientSyncHandlers);
98
- return makeHandler(existingChannel);
99
- }
100
- else {
101
- const sync_info = await addServerSync({ tableName, command, param1, param2 }, onSyncRequest);
102
- const { channelName } = sync_info;
103
- const onCall = function (data, cb) {
104
- /*
105
- Client will:
106
- 1. Send last_synced on(onSyncRequest)
107
- 2. Send data >= server_synced on(onPullRequest)
108
- 3. Send data on CRUD emit(data.data)
109
- 4. Upsert data.data on(data.data)
110
- */
111
- if (!data)
112
- return;
113
- const matchingSync = syncs.get(channelName);
114
- if (!matchingSync)
115
- return;
116
- matchingSync.clientSyncHandles.map(({ onUpdates, onSyncRequest, onPullRequest }) => {
117
- // syncedTables.get(channelName)?.then((syncedTable) => {
118
- // onDebug?.({
119
- // type: "sync",
120
- // command:
121
- // data.data ? "onUpdates"
122
- // : data.onSyncRequest ? "onSyncRequest"
123
- // : "onPullRequest",
124
- // tableName,
125
- // channelName,
126
- // data,
127
- // options: { n filter, select },
128
- // });
129
- // });
130
- if (data.data) {
131
- Promise.resolve(onUpdates(data))
132
- .then(() => {
133
- cb({ ok: true });
134
- })
135
- .catch((err) => {
136
- cb({ err });
137
- });
138
- }
139
- else if (data.onSyncRequest) {
140
- Promise.resolve(onSyncRequest(data.onSyncRequest))
141
- .then((res) => cb({ onSyncRequest: res }))
142
- .catch((err) => {
143
- cb({ err });
144
- });
145
- }
146
- else if (data.onPullRequest) {
147
- Promise.resolve(onPullRequest(data.onPullRequest))
148
- .then((result) => {
149
- cb(result);
150
- })
151
- .catch((err) => {
152
- cb({ err });
153
- });
154
- }
155
- else {
156
- console.log("unexpected response");
157
- }
158
- });
159
- };
160
- syncs.set(channelName, {
161
- tableName,
162
- command,
163
- param1,
164
- param2,
165
- clientSyncHandles: [clientSyncHandlers],
166
- syncInfo: sync_info,
167
- onCall,
168
- });
169
- socket.on(channelName, onCall);
170
- return makeHandler(channelName);
171
- }
172
- }
173
- const reAttachAll = async () => {
174
- let reAttached = 0;
175
- Array.from(syncs.entries()).forEach(async ([ch, s]) => {
176
- const firstTrigger = s.clientSyncHandles[0];
177
- if (firstTrigger) {
178
- try {
179
- await addServerSync(s, firstTrigger.onSyncRequest);
180
- socket.on(ch, s.onCall);
181
- reAttached++;
182
- }
183
- catch (err) {
184
- console.error("There was an issue reconnecting olf subscriptions", err);
185
- }
186
- }
187
- });
188
- if (reAttached) {
189
- console.log("reAttached", reAttached, " syncs", syncs);
190
- }
191
- };
192
- return {
193
- destroySyncs,
194
- syncedTables,
195
- addSync,
196
- reAttachAll,
197
- };
198
- };
199
- exports.getSyncHandler = getSyncHandler;