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.
- package/dist/FunctionQueuer.js +51 -49
- package/dist/SyncedTable/SyncedTable.d.ts +3 -108
- package/dist/SyncedTable/SyncedTable.d.ts.map +1 -1
- package/dist/SyncedTable/SyncedTable.js +1 -628
- package/dist/SyncedTable/createSync.d.ts +3 -2
- package/dist/SyncedTable/createSync.d.ts.map +1 -1
- package/dist/SyncedTable/createSync.js +16 -9
- package/dist/SyncedTable/createSyncDataStore.d.ts +1 -1
- package/dist/SyncedTable/createSyncDataStore.d.ts.map +1 -1
- package/dist/SyncedTable/createSyncDataStore.js +2 -3
- package/dist/SyncedTable/createSyncStateUtils.d.ts +7 -4
- package/dist/SyncedTable/createSyncStateUtils.d.ts.map +1 -1
- package/dist/SyncedTable/createSyncStateUtils.js +32 -38
- package/dist/SyncedTable/createSyncSubscriptionManager.js +6 -10
- package/dist/auth/useAuthState.d.ts +2 -2
- package/dist/auth/useAuthState.d.ts.map +1 -1
- package/dist/auth/useAuthState.js +4 -5
- package/dist/getAuthHandler.js +7 -9
- package/dist/getDbHandler.d.ts +2 -6
- package/dist/getDbHandler.d.ts.map +1 -1
- package/dist/getDbHandler.js +37 -71
- package/dist/getMethods.js +1 -1
- package/dist/getSqlHandler.js +6 -8
- package/dist/getSubscriptionHandler.js +5 -5
- package/dist/getSyncHandlerV2.d.ts.map +1 -1
- package/dist/getSyncHandlerV2.js +3 -4
- package/dist/hooks/reactImports.js +2 -3
- package/dist/hooks/useAsyncEffectQueue.js +3 -4
- package/dist/hooks/useEffectAsync.js +1 -2
- package/dist/hooks/useEffectDeep.js +1 -1
- package/dist/hooks/useFetch.js +1 -1
- package/dist/hooks/useProstglesClient.d.ts +1 -1
- package/dist/hooks/useProstglesClient.d.ts.map +1 -1
- package/dist/hooks/useProstglesClient.js +5 -8
- package/dist/hooks/useSubscribe.js +1 -1
- package/dist/hooks/useSync.js +1 -1
- package/dist/{prostgles-full.d.ts → index.d.ts} +1 -3
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -1
- package/dist/{prostgles-full-cdn.d.ts → index.umd.d.ts} +1 -1
- package/dist/index.umd.d.ts.map +1 -0
- package/dist/index.umd.js +1 -0
- package/dist/prostgles.d.ts +3 -3
- package/dist/prostgles.d.ts.map +1 -1
- package/dist/prostgles.js +11 -13
- package/package.json +3 -4
- package/tsconfig.json +5 -15
- package/webpack.dev.js +14 -15
- package/webpack.prod.js +2 -3
- package/dist/SyncedTable/getMultiSyncSubscription.d.ts +0 -12
- package/dist/SyncedTable/getMultiSyncSubscription.d.ts.map +0 -1
- package/dist/SyncedTable/getMultiSyncSubscription.js +0 -60
- package/dist/SyncedTable/getSingleSyncSubscription.d.ts +0 -1
- package/dist/SyncedTable/getSingleSyncSubscription.d.ts.map +0 -1
- package/dist/SyncedTable/getSingleSyncSubscription.js +0 -1
- package/dist/getSyncHandler.d.ts +0 -10
- package/dist/getSyncHandler.d.ts.map +0 -1
- package/dist/getSyncHandler.js +0 -199
- package/dist/index.no-sync.js +0 -1
- package/dist/prostgles-full-cdn.d.ts.map +0 -1
- package/dist/prostgles-full-cdn.js +0 -8
- package/dist/prostgles-full.d.ts.map +0 -1
- package/dist/prostgles-full.js +0 -38
|
@@ -8,20 +8,21 @@ const createSyncStateUtils_1 = require("./createSyncStateUtils");
|
|
|
8
8
|
const createSyncSubscriptionManager_1 = require("./createSyncSubscriptionManager");
|
|
9
9
|
const SyncedTable_1 = require("./SyncedTable");
|
|
10
10
|
const createSync = async (socket, options) => {
|
|
11
|
-
var _a;
|
|
12
11
|
const stateUtils = (0, createSyncStateUtils_1.createSyncStateUtils)(socket, options);
|
|
13
|
-
const { state, onDebug, id_fields, synced_field, throttle, batch_size, columns, _syncInfo,
|
|
12
|
+
const { state, onDebug, id_fields, synced_field, throttle, batch_size, columns, _syncInfo, initializeSync, filter, } = stateUtils;
|
|
14
13
|
const store = (0, createSyncDataStore_1.createSyncDataStore)({ ..._syncInfo, columns, filter });
|
|
15
|
-
const onError = (
|
|
14
|
+
const onError = (err) => {
|
|
16
15
|
console.error("Sync internal error: ", err);
|
|
17
16
|
};
|
|
18
17
|
const onSyncRequest = (syncBatchParams) => {
|
|
19
18
|
let clientSyncInfo = { c_lr: undefined, c_fr: undefined, c_count: 0 };
|
|
20
19
|
const batch = store.getBatch(syncBatchParams);
|
|
21
|
-
|
|
20
|
+
const firstRow = batch[0];
|
|
21
|
+
const lastRow = batch[batch.length - 1];
|
|
22
|
+
if (firstRow && lastRow) {
|
|
22
23
|
clientSyncInfo = {
|
|
23
|
-
c_fr: store.getRowSyncObj(
|
|
24
|
-
c_lr: store.getRowSyncObj(
|
|
24
|
+
c_fr: store.getRowSyncObj(firstRow),
|
|
25
|
+
c_lr: store.getRowSyncObj(lastRow),
|
|
25
26
|
c_count: batch.length,
|
|
26
27
|
};
|
|
27
28
|
}
|
|
@@ -71,7 +72,7 @@ const createSync = async (socket, options) => {
|
|
|
71
72
|
synced_field,
|
|
72
73
|
throttle,
|
|
73
74
|
};
|
|
74
|
-
const dbSync = await
|
|
75
|
+
const dbSync = await initializeSync({ onSyncRequest, onPullRequest, onUpdates });
|
|
75
76
|
/**
|
|
76
77
|
* Some syncs can be read only. Any changes are local
|
|
77
78
|
*/
|
|
@@ -114,7 +115,6 @@ const createSync = async (socket, options) => {
|
|
|
114
115
|
let status;
|
|
115
116
|
const walItems = [];
|
|
116
117
|
await Promise.all(items.map(async (item, i) => {
|
|
117
|
-
var _a;
|
|
118
118
|
// let d = { ...item.idObj, ...item.delta };
|
|
119
119
|
const idObj = { ...item.idObj };
|
|
120
120
|
let delta = { ...item.delta };
|
|
@@ -144,7 +144,7 @@ const createSync = async (socket, options) => {
|
|
|
144
144
|
/**
|
|
145
145
|
* Merge deep
|
|
146
146
|
*/
|
|
147
|
-
if (
|
|
147
|
+
if (item.opts?.deepMerge) {
|
|
148
148
|
newItem = (0, SyncedTable_1.mergeDeep)({ ...oldItem, ...idObj }, { ...delta });
|
|
149
149
|
}
|
|
150
150
|
}
|
|
@@ -184,6 +184,13 @@ const createSync = async (socket, options) => {
|
|
|
184
184
|
}
|
|
185
185
|
};
|
|
186
186
|
const subscriptionManager = (0, createSyncSubscriptionManager_1.createSyncSubscriptionManager)({ id_fields, synced_field }, store, stateUtils, upsert);
|
|
187
|
+
store.setItems(dbSync.syncInfo.data);
|
|
188
|
+
if (!dbSync.syncInfo.isSynced) {
|
|
189
|
+
dbSync.syncData();
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
state.isSynced = true;
|
|
193
|
+
}
|
|
187
194
|
return subscriptionManager;
|
|
188
195
|
};
|
|
189
196
|
exports.createSync = createSync;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { SyncInfo } from "lib/prostgles";
|
|
2
1
|
import { type AnyObject, type SyncBatchParams } from "prostgles-types";
|
|
3
2
|
import { type SyncedTableOptions } from "./SyncedTable";
|
|
3
|
+
import type { SyncInfo } from "../prostgles";
|
|
4
4
|
export declare const createSyncDataStore: ({ id_fields, synced_field, filter, columns, }: Pick<SyncInfo, "id_fields" | "synced_field"> & Pick<SyncedTableOptions, "filter" | "columns">) => {
|
|
5
5
|
getItems: <T extends AnyObject = AnyObject>() => T[];
|
|
6
6
|
getBatch: ({ from_synced, to_synced, offset, limit }?: SyncBatchParams) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSyncDataStore.d.ts","sourceRoot":"","sources":["../../lib/SyncedTable/createSyncDataStore.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"createSyncDataStore.d.ts","sourceRoot":"","sources":["../../lib/SyncedTable/createSyncDataStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,SAAS,EACd,KAAK,eAAe,EACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAc,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,eAAO,MAAM,mBAAmB,GAAI,+CAKjC,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,cAAc,CAAC,GAC7C,IAAI,CAAC,kBAAkB,EAAE,QAAQ,GAAG,SAAS,CAAC;eA2B5B,CAAC,SAAS,SAAS,mBAAiB,CAAC,EAAE;2DAyBZ,eAAe;;;kBA3CvC,SAAS;uBAOJ,SAAS;kBA0Fd,SAAS,KAAK,SAAS,KAAG,SAAS;uBA3B9B,SAAS,EAAE,KAAG,IAAI;0BAkBf,SAAS;qBA7Bd,SAAS;cAoBhB,CAAC,qBAAqB,OAAO,CAAC,CAAC,CAAC,KAAG,CAAC,GAAG,SAAS;sBA0CxC,SAAS,GAAG,SAAS,KAAK,SAAS,GAAG,SAAS;0BAN3C,SAAS,GAAG,SAAS;CAuBnD,CAAC"}
|
|
@@ -49,19 +49,18 @@ const createSyncDataStore = ({ id_fields, synced_field, filter, columns, }) => {
|
|
|
49
49
|
.filter((c) => (!Number.isFinite(from_synced) || +c[synced_field] >= +from_synced) &&
|
|
50
50
|
(!Number.isFinite(to_synced) || +c[synced_field] <= +to_synced));
|
|
51
51
|
if (offset || limit) {
|
|
52
|
-
res = res.splice(offset
|
|
52
|
+
res = res.splice(offset ?? 0, limit || res.length);
|
|
53
53
|
}
|
|
54
54
|
return res;
|
|
55
55
|
};
|
|
56
56
|
const setItem = (_item, isFullData = false, deleteItem = false) => {
|
|
57
|
-
var _a;
|
|
58
57
|
const item = (0, SyncedTable_1.quickClone)(_item);
|
|
59
58
|
const id = getIdStr(item);
|
|
60
59
|
if (deleteItem) {
|
|
61
60
|
itemsMap.delete(id);
|
|
62
61
|
}
|
|
63
62
|
else {
|
|
64
|
-
const existing =
|
|
63
|
+
const existing = itemsMap.get(id) ?? {};
|
|
65
64
|
itemsMap.set(id, isFullData ? { ...item } : { ...existing, ...item });
|
|
66
65
|
}
|
|
67
66
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type SyncDebugEvent, type SyncInfo } from "lib/prostgles";
|
|
2
1
|
import { type ClientSyncHandles } from "prostgles-types";
|
|
3
2
|
import type { Socket } from "socket.io-client";
|
|
3
|
+
import { type SyncDebugEvent } from "../prostgles";
|
|
4
4
|
import type { SyncedTableOptions } from "./SyncedTable";
|
|
5
5
|
export declare const createSyncStateUtils: (socket: Socket, options: Omit<SyncedTableOptions, "onReady">) => {
|
|
6
6
|
state: {
|
|
@@ -13,13 +13,16 @@ export declare const createSyncStateUtils: (socket: Socket, options: Omit<Synced
|
|
|
13
13
|
batch_size: number;
|
|
14
14
|
columns: import("prostgles-types").ValidatedColumnInfo[];
|
|
15
15
|
_syncInfo: import("prostgles-types").SyncTableInfo;
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
initializeSync: (handles: ClientSyncHandles) => Promise<{
|
|
17
|
+
syncInfo: import("prostgles-types").SyncConfig & {
|
|
18
|
+
data: import("prostgles-types").AnyObject[];
|
|
19
|
+
isSynced: boolean;
|
|
20
|
+
};
|
|
18
21
|
unsync: () => Promise<unknown>;
|
|
19
22
|
syncData: (data?: import("prostgles-types").AnyObject[], deleted?: import("prostgles-types").AnyObject[], cb?: (err?: any) => void) => void;
|
|
20
23
|
}>;
|
|
21
24
|
filter: import("prostgles-types").EqualityFilter<import("prostgles-types").AnyObject>;
|
|
22
25
|
select: import("prostgles-types").FieldFilter;
|
|
23
|
-
tableHandler: Partial<import("prostgles-types").TableHandler & import("
|
|
26
|
+
tableHandler: Partial<import("prostgles-types").TableHandler & import("../prostgles").TableHandlerClientMethods<import("prostgles-types").AnyObject, void>>;
|
|
24
27
|
};
|
|
25
28
|
//# sourceMappingURL=createSyncStateUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSyncStateUtils.d.ts","sourceRoot":"","sources":["../../lib/SyncedTable/createSyncStateUtils.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"createSyncStateUtils.d.ts","sourceRoot":"","sources":["../../lib/SyncedTable/createSyncStateUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,KAAK,EAAe,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAErE,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,MAAM,EACd,SAAS,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC;;;;mBAKtB,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;;;;;;;8BAyBrD,iBAAiB;;;;;;2HA6HuuB,CAAC;;;;;CADjyB,CAAC"}
|
|
@@ -6,16 +6,13 @@ const createSyncStateUtils = (socket, options) => {
|
|
|
6
6
|
const state = { isSynced: false };
|
|
7
7
|
const { db, name, select = "*", filter = {}, columns } = options;
|
|
8
8
|
const channelName = (0, prostgles_types_1.getSyncChannelName)({ filter, select, tableName: name });
|
|
9
|
-
const onDebug = (evt) => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
options,
|
|
17
|
-
});
|
|
18
|
-
};
|
|
9
|
+
const onDebug = (evt) => options.onDebug?.({
|
|
10
|
+
...evt,
|
|
11
|
+
type: "sync",
|
|
12
|
+
tableName: name,
|
|
13
|
+
channelName,
|
|
14
|
+
options,
|
|
15
|
+
});
|
|
19
16
|
onDebug({ command: "create", data: { name, filter, select } });
|
|
20
17
|
const tableHandler = db[name];
|
|
21
18
|
if (!tableHandler) {
|
|
@@ -29,8 +26,8 @@ const createSyncStateUtils = (socket, options) => {
|
|
|
29
26
|
if (!id_fields.length || !synced_field) {
|
|
30
27
|
throw "id_fields/synced_field missing";
|
|
31
28
|
}
|
|
32
|
-
const
|
|
33
|
-
const
|
|
29
|
+
const initializeSync = async (handles) => {
|
|
30
|
+
const syncInfo = await new Promise((resolve, reject) => {
|
|
34
31
|
socket.emit(prostgles_types_1.CHANNEL_PREFIX, {
|
|
35
32
|
tableName: name,
|
|
36
33
|
command: "sync",
|
|
@@ -42,38 +39,35 @@ const createSyncStateUtils = (socket, options) => {
|
|
|
42
39
|
reject(err);
|
|
43
40
|
}
|
|
44
41
|
else if (syncInfo) {
|
|
45
|
-
const {
|
|
46
|
-
socket.emit(
|
|
47
|
-
|
|
48
|
-
})
|
|
49
|
-
|
|
42
|
+
// const { channelName } = syncInfo;
|
|
43
|
+
// socket.emit(
|
|
44
|
+
// channelName,
|
|
45
|
+
// { onSyncRequest: handles.onSyncRequest({}) },
|
|
46
|
+
// (response: any) => {
|
|
47
|
+
// console.log(response);
|
|
48
|
+
// },
|
|
49
|
+
// );
|
|
50
|
+
resolve(syncInfo);
|
|
50
51
|
}
|
|
51
52
|
});
|
|
52
53
|
});
|
|
53
54
|
const onCall = function (data, cb) {
|
|
54
55
|
/*
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
Client will:
|
|
57
|
+
1. Send last_synced on(onSyncRequest)
|
|
58
|
+
2. Send data >= server_synced on(onPullRequest)
|
|
59
|
+
3. Send data on CRUD emit(data.data)
|
|
60
|
+
4. Upsert data.data on(data.data)
|
|
61
|
+
*/
|
|
61
62
|
if (!data)
|
|
62
63
|
return;
|
|
63
64
|
const { onUpdates, onSyncRequest, onPullRequest } = handles;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
// : "onPullRequest",
|
|
71
|
-
// tableName,
|
|
72
|
-
// channelName,
|
|
73
|
-
// data,
|
|
74
|
-
// options: { n filter, select },
|
|
75
|
-
// });
|
|
76
|
-
// });
|
|
65
|
+
onDebug({
|
|
66
|
+
command: data.data ? "onUpdates"
|
|
67
|
+
: data.onSyncRequest ? "onSyncRequest"
|
|
68
|
+
: "onPullRequest",
|
|
69
|
+
data,
|
|
70
|
+
});
|
|
77
71
|
if (data.data) {
|
|
78
72
|
Promise.resolve(onUpdates(data))
|
|
79
73
|
.then(() => {
|
|
@@ -126,7 +120,7 @@ const createSyncStateUtils = (socket, options) => {
|
|
|
126
120
|
socket.removeListener(channelName, onCall);
|
|
127
121
|
});
|
|
128
122
|
};
|
|
129
|
-
return {
|
|
123
|
+
return { syncInfo, unsync, syncData };
|
|
130
124
|
};
|
|
131
125
|
return {
|
|
132
126
|
state,
|
|
@@ -137,7 +131,7 @@ const createSyncStateUtils = (socket, options) => {
|
|
|
137
131
|
batch_size,
|
|
138
132
|
columns,
|
|
139
133
|
_syncInfo,
|
|
140
|
-
|
|
134
|
+
initializeSync,
|
|
141
135
|
filter,
|
|
142
136
|
select,
|
|
143
137
|
tableHandler,
|
|
@@ -68,22 +68,18 @@ const createSyncSubscriptionManager = ({ id_fields, synced_field }, store, state
|
|
|
68
68
|
batch_size: Infinity,
|
|
69
69
|
throttle: 5,
|
|
70
70
|
onSend: async (_, fullItems) => {
|
|
71
|
-
_notifySubscribers(fullItems.map((d) => {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
newItem: d.current,
|
|
77
|
-
});
|
|
78
|
-
}));
|
|
71
|
+
_notifySubscribers(fullItems.map((d) => ({
|
|
72
|
+
delta: store.getDelta(d.initial ?? {}, d.current),
|
|
73
|
+
idObj: store.getIdObj(d.current),
|
|
74
|
+
newItem: d.current,
|
|
75
|
+
})));
|
|
79
76
|
},
|
|
80
77
|
});
|
|
81
78
|
const _delete = async (item, from_server = false) => {
|
|
82
|
-
var _a, _b;
|
|
83
79
|
const idObj = store.getIdObj(item);
|
|
84
80
|
store.setItem(idObj, true, true);
|
|
85
81
|
if (!from_server) {
|
|
86
|
-
await
|
|
82
|
+
await stateUtils.tableHandler.delete?.(idObj);
|
|
87
83
|
}
|
|
88
84
|
_notifySubscribers();
|
|
89
85
|
return true;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type AuthResponse } from "prostgles-types";
|
|
2
|
-
import type { AuthHandler, PasswordLogin, PasswordRegister } from "
|
|
2
|
+
import type { AuthHandler, PasswordLogin, PasswordRegister } from "../getAuthHandler";
|
|
3
3
|
export declare const useAuthState: ({ auth }: {
|
|
4
4
|
auth: AuthHandler;
|
|
5
5
|
}) => {
|
|
@@ -116,7 +116,7 @@ export declare const useAuthState: ({ auth }: {
|
|
|
116
116
|
username: string;
|
|
117
117
|
emailVerificationCode: string;
|
|
118
118
|
setEmailVerificationCode: import("react").Dispatch<import("react").SetStateAction<string>>;
|
|
119
|
-
onCall: () => Promise<import("
|
|
119
|
+
onCall: () => Promise<import("../getAuthHandler").PasswordRegisterResponse>;
|
|
120
120
|
result: (import("prostgles-types").CommonAuthFailure & {
|
|
121
121
|
redirect_url?: string;
|
|
122
122
|
}) | ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuthState.d.ts","sourceRoot":"","sources":["../../lib/auth/useAuthState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGjE,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"useAuthState.d.ts","sourceRoot":"","sources":["../../lib/auth/useAuthState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGjE,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AA2BtF,eAAO,MAAM,YAAY,GAAI,UAAU;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAa/C,OAAO;iBACP,MAAM;;;CA2MlB,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;CA8B7B,CAAC"}
|
|
@@ -97,7 +97,6 @@ const useAuthState = ({ auth }) => {
|
|
|
97
97
|
const isOnLogin = loginStates.some((v) => v === state);
|
|
98
98
|
const registerTypeAllowed = "registerWithPassword";
|
|
99
99
|
const onAuthCall = async () => {
|
|
100
|
-
var _a, _b, _c;
|
|
101
100
|
const formData = {
|
|
102
101
|
username,
|
|
103
102
|
password,
|
|
@@ -114,7 +113,7 @@ const useAuthState = ({ auth }) => {
|
|
|
114
113
|
const setErrorWithInfo = (err) => {
|
|
115
114
|
return setError(err === "no match" ? errorMap[err] : err);
|
|
116
115
|
};
|
|
117
|
-
if (!
|
|
116
|
+
if (!formHandlers?.onCall) {
|
|
118
117
|
return setError("Invalid state");
|
|
119
118
|
}
|
|
120
119
|
/**
|
|
@@ -165,8 +164,8 @@ const useAuthState = ({ auth }) => {
|
|
|
165
164
|
setState("loginTotp");
|
|
166
165
|
}
|
|
167
166
|
else if (res.code !== "password-missing") {
|
|
168
|
-
const errorMessage =
|
|
169
|
-
setErrorWithInfo(errorMessage
|
|
167
|
+
const errorMessage = res.message ?? (0, prostgles_types_1.getProperty)(exports.ERR_CODE_MESSAGES, res.code);
|
|
168
|
+
setErrorWithInfo(errorMessage ?? "Error");
|
|
170
169
|
}
|
|
171
170
|
}
|
|
172
171
|
else {
|
|
@@ -176,7 +175,7 @@ const useAuthState = ({ auth }) => {
|
|
|
176
175
|
if (state === "registerWithPassword" || res.code === "magic-link-sent") {
|
|
177
176
|
setState("registerWithPasswordConfirmationCode");
|
|
178
177
|
}
|
|
179
|
-
let message = (
|
|
178
|
+
let message = (res.code && SIGNUP_CODE_MESSAGES[res.code]) ?? res.message ?? "Success";
|
|
180
179
|
if (formHandlers.state === "registerWithPasswordConfirmationCode") {
|
|
181
180
|
message = SIGNUP_CODE_MESSAGES["email-verified"];
|
|
182
181
|
setState("login");
|
package/dist/getAuthHandler.js
CHANGED
|
@@ -4,7 +4,6 @@ exports.authRequest = exports.getAuthHandler = void 0;
|
|
|
4
4
|
const prostgles_types_1 = require("prostgles-types");
|
|
5
5
|
const prostgles_1 = require("./prostgles");
|
|
6
6
|
const getAuthHandler = ({ authData: authConfig, socket, onReload, endpoint, ...authOpts }) => {
|
|
7
|
-
var _a;
|
|
8
7
|
const urlWithEndpointAndSearch = (route) => {
|
|
9
8
|
const { search } = window.location;
|
|
10
9
|
let url = route + search;
|
|
@@ -12,9 +11,9 @@ const getAuthHandler = ({ authData: authConfig, socket, onReload, endpoint, ...a
|
|
|
12
11
|
url = `${endpoint}${url}`;
|
|
13
12
|
return url;
|
|
14
13
|
};
|
|
15
|
-
if (
|
|
14
|
+
if (authConfig?.pathGuard && prostgles_1.isClientSide) {
|
|
16
15
|
const doReload = (res) => {
|
|
17
|
-
if (res
|
|
16
|
+
if (res?.shouldReload) {
|
|
18
17
|
if (onReload)
|
|
19
18
|
onReload();
|
|
20
19
|
else if (prostgles_1.isClientSide) {
|
|
@@ -34,13 +33,13 @@ const getAuthHandler = ({ authData: authConfig, socket, onReload, endpoint, ...a
|
|
|
34
33
|
});
|
|
35
34
|
}
|
|
36
35
|
const loginSignupOptions = {
|
|
37
|
-
loginType:
|
|
36
|
+
loginType: authConfig?.login?.mode,
|
|
38
37
|
login: undefined,
|
|
39
|
-
preferredLogin: authConfig
|
|
38
|
+
preferredLogin: authConfig?.preferredLogin,
|
|
40
39
|
loginWithProvider: undefined,
|
|
41
40
|
signupWithEmailAndPassword: undefined,
|
|
42
41
|
confirmEmail: undefined,
|
|
43
|
-
providers: authConfig
|
|
42
|
+
providers: authConfig?.providers,
|
|
44
43
|
};
|
|
45
44
|
if (authConfig) {
|
|
46
45
|
const { providers, signupWithEmailAndPassword, login } = authConfig;
|
|
@@ -68,7 +67,7 @@ const getAuthHandler = ({ authData: authConfig, socket, onReload, endpoint, ...a
|
|
|
68
67
|
return (0, exports.authRequest)(urlWithEndpointAndSearch(signupWithEmailAndPassword.emailConfirmationRoute), data, "POST", authOpts);
|
|
69
68
|
});
|
|
70
69
|
}
|
|
71
|
-
if (!
|
|
70
|
+
if (!authConfig?.user) {
|
|
72
71
|
return {
|
|
73
72
|
isLoggedin: false,
|
|
74
73
|
user: undefined,
|
|
@@ -79,8 +78,7 @@ const getAuthHandler = ({ authData: authConfig, socket, onReload, endpoint, ...a
|
|
|
79
78
|
isLoggedin: true,
|
|
80
79
|
user: authConfig.user,
|
|
81
80
|
logout: async () => {
|
|
82
|
-
|
|
83
|
-
const { logoutRoute } = (_a = authConfig.login) !== null && _a !== void 0 ? _a : {};
|
|
81
|
+
const { logoutRoute } = authConfig.login ?? {};
|
|
84
82
|
if (!logoutRoute)
|
|
85
83
|
throw new Error("Unexpected");
|
|
86
84
|
return (0, exports.authRequest)(urlWithEndpointAndSearch(logoutRoute), {}, "POST", authOpts);
|
package/dist/getDbHandler.d.ts
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
import { type DBSchemaTable } from "prostgles-types";
|
|
2
2
|
import type { getSubscriptionHandler } from "./getSubscriptionHandler";
|
|
3
|
-
import type { getSyncHandler } from "./getSyncHandler";
|
|
4
|
-
import { type DBHandlerClient, type InitOptions } from "./prostgles";
|
|
5
|
-
import { type SyncedTable } from "./SyncedTable/SyncedTable";
|
|
6
3
|
import type { getSyncHandlerV2 } from "./getSyncHandlerV2";
|
|
4
|
+
import { type DBHandlerClient, type InitOptions } from "./prostgles";
|
|
7
5
|
type Args = {
|
|
8
6
|
tableSchema: DBSchemaTable[] | undefined;
|
|
9
7
|
onDebug: InitOptions["onDebug"];
|
|
10
8
|
socket: InitOptions["socket"];
|
|
11
|
-
syncedTable: typeof SyncedTable | undefined;
|
|
12
|
-
syncHandler: ReturnType<typeof getSyncHandler>;
|
|
13
9
|
syncHandlerV2: ReturnType<typeof getSyncHandlerV2>;
|
|
14
10
|
subscriptionHandler: ReturnType<typeof getSubscriptionHandler>;
|
|
15
11
|
};
|
|
16
|
-
export declare const getDB: <DBSchema = void>({ tableSchema, onDebug,
|
|
12
|
+
export declare const getDB: <DBSchema = void>({ tableSchema, onDebug, syncHandlerV2, subscriptionHandler, socket, }: Args) => {
|
|
17
13
|
db: Partial<DBHandlerClient<DBSchema>>;
|
|
18
14
|
};
|
|
19
15
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDbHandler.d.ts","sourceRoot":"","sources":["../lib/getDbHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"getDbHandler.d.ts","sourceRoot":"","sources":["../lib/getDbHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,aAAa,EAInB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAI3D,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,WAAW,EAEjB,MAAM,aAAa,CAAC;AAWrB,KAAK,IAAI,GAAG;IACV,WAAW,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IACzC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC9B,aAAa,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;IACnD,mBAAmB,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;CAChE,CAAC;AAIF,eAAO,MAAM,KAAK,GAAI,QAAQ,GAAG,IAAI,EAAE,uEAMpC,IAAI;QAiLc,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;CACtD,CAAC"}
|
package/dist/getDbHandler.js
CHANGED
|
@@ -6,9 +6,8 @@ const useFetch_1 = require("./hooks/useFetch");
|
|
|
6
6
|
const useSubscribe_1 = require("./hooks/useSubscribe");
|
|
7
7
|
const useSync_1 = require("./hooks/useSync");
|
|
8
8
|
const SyncedTable_1 = require("./SyncedTable/SyncedTable");
|
|
9
|
-
const
|
|
10
|
-
const getDB = ({ tableSchema, onDebug,
|
|
11
|
-
var _a;
|
|
9
|
+
const prefix = prostgles_types_1.CHANNELS._preffix;
|
|
10
|
+
const getDB = ({ tableSchema, onDebug, syncHandlerV2, subscriptionHandler, socket, }) => {
|
|
12
11
|
/* Building DB object */
|
|
13
12
|
const checkSubscriptionArgs = (basicFilter, options, onChange, onError) => {
|
|
14
13
|
if ((basicFilter !== undefined && !(0, prostgles_types_1.isObject)(basicFilter)) ||
|
|
@@ -20,7 +19,7 @@ const getDB = ({ tableSchema, onDebug, syncedTable, syncHandler, syncHandlerV2,
|
|
|
20
19
|
};
|
|
21
20
|
const subscribeCommands = ["subscribe", "subscribeOne"];
|
|
22
21
|
const db = {};
|
|
23
|
-
const schemaClone = (
|
|
22
|
+
const schemaClone = (0, SyncedTable_1.quickClone)(tableSchema) ?? [];
|
|
24
23
|
schemaClone.forEach(({ name: tableName, publishInfo, columns }) => {
|
|
25
24
|
const allowedCommands = (0, prostgles_types_1.getAllowedTableMethods)({ publishInfo });
|
|
26
25
|
db[tableName] = {};
|
|
@@ -28,81 +27,49 @@ const getDB = ({ tableSchema, onDebug, syncedTable, syncHandler, syncHandlerV2,
|
|
|
28
27
|
allowedCommands
|
|
29
28
|
.sort((a, b) => Number((0, prostgles_types_1.includes)(subscribeCommands, a)) - Number((0, prostgles_types_1.includes)(subscribeCommands, b)))
|
|
30
29
|
.forEach((command) => {
|
|
31
|
-
var _a;
|
|
32
30
|
if (command === "sync") {
|
|
33
|
-
const syncConfig =
|
|
31
|
+
const syncConfig = publishInfo.select?.syncConfig;
|
|
34
32
|
if (!syncConfig) {
|
|
35
33
|
throw `Table ${tableName} does not have syncConfig in publishInfo.select`;
|
|
36
34
|
}
|
|
37
35
|
dboTable._syncInfo = { ...syncConfig };
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
...options,
|
|
45
|
-
onDebug,
|
|
46
|
-
name: tableName,
|
|
47
|
-
filter: basicFilter,
|
|
48
|
-
db: db,
|
|
49
|
-
onError,
|
|
50
|
-
columns,
|
|
51
|
-
});
|
|
52
|
-
syncHandler.syncedTables.set(syncName, syncedTableHandler);
|
|
53
|
-
return syncedTableHandler;
|
|
54
|
-
};
|
|
55
|
-
const syncOne = (async (basicFilter, options = { handlesOnData: true }, onChange, onError) => {
|
|
56
|
-
await (onDebug === null || onDebug === void 0 ? void 0 : onDebug({
|
|
57
|
-
type: "table",
|
|
58
|
-
command: "syncOne",
|
|
59
|
-
tableName,
|
|
60
|
-
data: { basicFilter, options },
|
|
61
|
-
}));
|
|
62
|
-
checkSubscriptionArgs(basicFilter, options, onChange, onError);
|
|
63
|
-
// const syncedTable = await upsertSyncTable(basicFilter, options, onError);
|
|
64
|
-
// return await syncedTable.syncOne(basicFilter, onChange as any, options.handlesOnData);
|
|
65
|
-
return (await syncHandlerV2.getTableSyncFunctions({ db, tableName, columns })).addSyncOne(basicFilter, options, onChange, onError);
|
|
66
|
-
});
|
|
67
|
-
const sync = (async (basicFilter, options = { handlesOnData: true }, onChange, onError) => {
|
|
68
|
-
await (onDebug === null || onDebug === void 0 ? void 0 : onDebug({
|
|
69
|
-
type: "table",
|
|
70
|
-
command: "sync",
|
|
71
|
-
tableName,
|
|
72
|
-
data: { basicFilter, options },
|
|
73
|
-
}));
|
|
74
|
-
checkSubscriptionArgs(basicFilter, options, onChange, onError);
|
|
75
|
-
// const syncedTable = await upsertSyncTable(basicFilter, options, onError);
|
|
76
|
-
// return await syncedTable.sync(onChange as any, options.handlesOnData);
|
|
77
|
-
return (await syncHandlerV2.getTableSyncFunctions({ db, tableName, columns })).addSync(basicFilter, options, onChange, onError);
|
|
36
|
+
const syncOne = (async (basicFilter, options = { handlesOnData: true }, onChange) => {
|
|
37
|
+
await onDebug?.({
|
|
38
|
+
type: "table",
|
|
39
|
+
command: "syncOne",
|
|
40
|
+
tableName,
|
|
41
|
+
data: { basicFilter, options },
|
|
78
42
|
});
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
dboTable.useSyncOne = (basicFilter, options, hookOptions) =>
|
|
85
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
86
|
-
(0, useSync_1.useSync)(syncOne, basicFilter, options, hookOptions);
|
|
87
|
-
}
|
|
88
|
-
dboTable._sync = async function (filter, select, syncHandles) {
|
|
89
|
-
await (onDebug === null || onDebug === void 0 ? void 0 : onDebug({
|
|
43
|
+
checkSubscriptionArgs(basicFilter, options, onChange);
|
|
44
|
+
return (await syncHandlerV2.getTableSyncFunctions({ db, tableName, columns })).addSyncOne(basicFilter, options, onChange);
|
|
45
|
+
});
|
|
46
|
+
const sync = (async (basicFilter, options = { handlesOnData: true }, onChange) => {
|
|
47
|
+
await onDebug?.({
|
|
90
48
|
type: "table",
|
|
91
|
-
command: "
|
|
49
|
+
command: "sync",
|
|
92
50
|
tableName,
|
|
93
|
-
data: {
|
|
94
|
-
})
|
|
95
|
-
|
|
96
|
-
|
|
51
|
+
data: { basicFilter, options },
|
|
52
|
+
});
|
|
53
|
+
checkSubscriptionArgs(basicFilter, options, onChange);
|
|
54
|
+
return (await syncHandlerV2.getTableSyncFunctions({ db, tableName, columns })).addSync(basicFilter, options, onChange);
|
|
55
|
+
});
|
|
56
|
+
dboTable.sync = sync;
|
|
57
|
+
dboTable.syncOne = syncOne;
|
|
58
|
+
dboTable.useSync = (basicFilter, options, hookOptions) =>
|
|
59
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
60
|
+
(0, useSync_1.useSync)(sync, basicFilter, options, hookOptions);
|
|
61
|
+
dboTable.useSyncOne = (basicFilter, options, hookOptions) =>
|
|
62
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
63
|
+
(0, useSync_1.useSync)(syncOne, basicFilter, options, hookOptions);
|
|
97
64
|
}
|
|
98
65
|
else if (subscribeCommands.includes(command)) {
|
|
99
66
|
const subFunc = async function (param1 = {}, param2 = {}, onChange, onError) {
|
|
100
|
-
await
|
|
67
|
+
await onDebug?.({
|
|
101
68
|
type: "table",
|
|
102
69
|
command: command,
|
|
103
70
|
tableName,
|
|
104
71
|
data: { param1, param2, onChange, onError },
|
|
105
|
-
})
|
|
72
|
+
});
|
|
106
73
|
checkSubscriptionArgs(param1, param2, onChange, onError);
|
|
107
74
|
return subscriptionHandler.addSub(db, { tableName, command, param1, param2 }, onChange, onError);
|
|
108
75
|
};
|
|
@@ -121,12 +88,12 @@ const getDB = ({ tableSchema, onDebug, syncedTable, syncHandler, syncHandlerV2,
|
|
|
121
88
|
}
|
|
122
89
|
if (command === SUBSCRIBE_ONE || !subscribeCommands.includes(SUBSCRIBE_ONE)) {
|
|
123
90
|
dboTable[SUBSCRIBE_ONE] = async function (param1, param2, onChange) {
|
|
124
|
-
await
|
|
91
|
+
await onDebug?.({
|
|
125
92
|
type: "table",
|
|
126
93
|
command: SUBSCRIBE_ONE,
|
|
127
94
|
tableName,
|
|
128
95
|
data: { param1, param2, onChange },
|
|
129
|
-
})
|
|
96
|
+
});
|
|
130
97
|
checkSubscriptionArgs(param1, param2, onChange);
|
|
131
98
|
const onChangeOne = (rows) => {
|
|
132
99
|
onChange(rows[0]);
|
|
@@ -137,20 +104,19 @@ const getDB = ({ tableSchema, onDebug, syncedTable, syncHandler, syncHandlerV2,
|
|
|
137
104
|
}
|
|
138
105
|
else {
|
|
139
106
|
const method = async function (param1, param2, param3) {
|
|
140
|
-
var _a;
|
|
141
107
|
if (command === "getColumns" && !param1 && !param2 && !param3) {
|
|
142
|
-
const columns =
|
|
108
|
+
const columns = tableSchema?.find((t) => t.name === tableName)?.columns;
|
|
143
109
|
if (columns)
|
|
144
110
|
return columns;
|
|
145
111
|
}
|
|
146
|
-
await
|
|
112
|
+
await onDebug?.({
|
|
147
113
|
type: "table",
|
|
148
114
|
command: command,
|
|
149
115
|
tableName,
|
|
150
116
|
data: { param1, param2, param3 },
|
|
151
|
-
})
|
|
117
|
+
});
|
|
152
118
|
return new Promise((resolve, reject) => {
|
|
153
|
-
socket.emit(
|
|
119
|
+
socket.emit(prefix, { tableName, command, param1, param2, param3 },
|
|
154
120
|
/* Get col definition and re-cast data types?! */
|
|
155
121
|
(err, res) => {
|
|
156
122
|
if (err)
|
package/dist/getMethods.js
CHANGED
|
@@ -8,7 +8,7 @@ const getMethods = ({ onDebug, methods, socket, }) => {
|
|
|
8
8
|
const _methods = JSON.parse(JSON.stringify(methods));
|
|
9
9
|
_methods.map(({ name, description, input, output }) => {
|
|
10
10
|
const onRun = async function (input) {
|
|
11
|
-
await
|
|
11
|
+
await onDebug?.({ type: "method", command: name, data: { params: input } });
|
|
12
12
|
return new Promise((resolve, reject) => {
|
|
13
13
|
socket.emit(prostgles_types_1.CHANNELS.METHOD, { name, input }, (err, res) => {
|
|
14
14
|
if (err)
|