prostgles-server 4.2.436 → 4.2.438
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/Auth/setupAuthRoutes.js +1 -1
- package/dist/Auth/setupAuthRoutes.js.map +1 -1
- package/dist/Auth/utils/removeExpressRoute.d.ts +34 -0
- package/dist/Auth/utils/removeExpressRoute.d.ts.map +1 -1
- package/dist/Auth/utils/removeExpressRoute.js +4 -3
- package/dist/Auth/utils/removeExpressRoute.js.map +1 -1
- package/dist/Auth/utils/upsertNamedExpressMiddleware.d.ts +1 -1
- package/dist/Auth/utils/upsertNamedExpressMiddleware.d.ts.map +1 -1
- package/dist/Auth/utils/upsertNamedExpressMiddleware.js +9 -9
- package/dist/Auth/utils/upsertNamedExpressMiddleware.js.map +1 -1
- package/dist/DboBuilder/QueryStreamer.d.ts +2 -1
- package/dist/DboBuilder/QueryStreamer.d.ts.map +1 -1
- package/dist/DboBuilder/QueryStreamer.js +17 -18
- package/dist/DboBuilder/QueryStreamer.js.map +1 -1
- package/lib/Auth/setupAuthRoutes.ts +2 -2
- package/lib/Auth/utils/removeExpressRoute.ts +3 -3
- package/lib/Auth/utils/upsertNamedExpressMiddleware.ts +11 -11
- package/lib/DboBuilder/QueryStreamer.ts +21 -21
- package/package.json +3 -3
|
@@ -22,6 +22,7 @@ function setupAuthRoutes() {
|
|
|
22
22
|
if (publicRoutes.find((r) => typeof r !== "string" || !r)) {
|
|
23
23
|
throw "Invalid or empty string provided within publicRoutes ";
|
|
24
24
|
}
|
|
25
|
+
userContextMiddleware_1.setupUserContextMiddleware.bind(this)(app);
|
|
25
26
|
if (signupWithEmail) {
|
|
26
27
|
setRegisterRequestHandler_1.setRegisterRequestHandler.bind(this)(signupWithEmail, app);
|
|
27
28
|
}
|
|
@@ -51,7 +52,6 @@ function setupAuthRoutes() {
|
|
|
51
52
|
setLoginRequestHandler_1.setLoginRequestHandler.bind(this)(app);
|
|
52
53
|
/* Redirect if not logged in and requesting non public content */
|
|
53
54
|
setCatchAllRequestHandler_1.setCatchAllRequestHandler.bind(this)(app);
|
|
54
|
-
userContextMiddleware_1.setupUserContextMiddleware.bind(this)(app);
|
|
55
55
|
setLogoutRequestHandler_1.setLogoutRequestHandler.bind(this)(app);
|
|
56
56
|
}
|
|
57
57
|
//# sourceMappingURL=setupAuthRoutes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupAuthRoutes.js","sourceRoot":"","sources":["../../lib/Auth/setupAuthRoutes.ts"],"names":[],"mappings":";;AAYA,0CAiEC;AA3ED,+CAAwD;AACxD,qFAAkF;AAClF,+EAA4E;AAC5E,iFAA8E;AAC9E,iGAA8F;AAC9F,iFAA8E;AAC9E,qFAAkF;AAClF,uFAAoF;AACpF,8EAAgF;AAEhF,SAAgB,eAAe;IAC7B,MAAM,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;IAEhE,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;QAC9B,MAAM,4DAA4D,CAAC;IACrE,CAAC;IAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IACD,MAAM,EACJ,GAAG,EACH,YAAY,GAAG,EAAE,EACjB,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,GAAG,iBAAiB,CAAC;IACtB,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,MAAM,uDAAuD,CAAC;IAChE,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QACpB,qDAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,cAAc,EAAE,CAAC;QACnB,iDAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,sBAAsB,EAAE,CAAC;QAC3B,MAAM,sBAAsB,GAAmB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACtE,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;YACtC,MAAM,kBAAkB,GAAG,MAAM,sBAAsB,CACrD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAC3B,IAAA,qCAAuB,EAAC,OAAO,CAAC,EAChC,OAAO,CACR,CAAC;YAEF,IAAI,kBAAkB,IAAI,OAAO,IAAI,kBAAkB,EAAE,CAAC;gBACxD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,kBAAkB,CAAC;gBAC/C,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBACrC,OAAO;YACT,CAAC;YAED,IAAI,kBAAkB,IAAI,SAAS,IAAI,kBAAkB,EAAE,CAAC;gBAC1D,MAAM,EAAE,OAAO,EAAE,GAAG,kBAAkB,CAAC;gBACvC,OAAO,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YACjE,CAAC;YACD,IAAI,EAAE,CAAC;QACT,CAAC,CAAC;QACF,IAAA,2DAA4B,EAAC,GAAG,EAAE,sBAAsB,EAAE,iCAAiC,CAAC,CAAC;IAC/F,CAAC;IAED,IAAI,gBAAgB,EAAE,CAAC;QACrB,iEAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IACpE,CAAC;IAED,+CAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAEvC,iEAAiE;IACjE,qDAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAE1C,
|
|
1
|
+
{"version":3,"file":"setupAuthRoutes.js","sourceRoot":"","sources":["../../lib/Auth/setupAuthRoutes.ts"],"names":[],"mappings":";;AAYA,0CAiEC;AA3ED,+CAAwD;AACxD,qFAAkF;AAClF,+EAA4E;AAC5E,iFAA8E;AAC9E,iGAA8F;AAC9F,iFAA8E;AAC9E,qFAAkF;AAClF,uFAAoF;AACpF,8EAAgF;AAEhF,SAAgB,eAAe;IAC7B,MAAM,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;IAEhE,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;QAC9B,MAAM,4DAA4D,CAAC;IACrE,CAAC;IAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IACD,MAAM,EACJ,GAAG,EACH,YAAY,GAAG,EAAE,EACjB,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,GAAG,iBAAiB,CAAC;IACtB,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,MAAM,uDAAuD,CAAC;IAChE,CAAC;IAED,kDAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAE3C,IAAI,eAAe,EAAE,CAAC;QACpB,qDAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,cAAc,EAAE,CAAC;QACnB,iDAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,sBAAsB,EAAE,CAAC;QAC3B,MAAM,sBAAsB,GAAmB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACtE,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;YACtC,MAAM,kBAAkB,GAAG,MAAM,sBAAsB,CACrD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAC3B,IAAA,qCAAuB,EAAC,OAAO,CAAC,EAChC,OAAO,CACR,CAAC;YAEF,IAAI,kBAAkB,IAAI,OAAO,IAAI,kBAAkB,EAAE,CAAC;gBACxD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,kBAAkB,CAAC;gBAC/C,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBACrC,OAAO;YACT,CAAC;YAED,IAAI,kBAAkB,IAAI,SAAS,IAAI,kBAAkB,EAAE,CAAC;gBAC1D,MAAM,EAAE,OAAO,EAAE,GAAG,kBAAkB,CAAC;gBACvC,OAAO,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YACjE,CAAC;YACD,IAAI,EAAE,CAAC;QACT,CAAC,CAAC;QACF,IAAA,2DAA4B,EAAC,GAAG,EAAE,sBAAsB,EAAE,iCAAiC,CAAC,CAAC;IAC/F,CAAC;IAED,IAAI,gBAAgB,EAAE,CAAC;QACrB,iEAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IACpE,CAAC;IAED,+CAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAEvC,iEAAiE;IACjE,qDAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAE1C,iDAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -1,5 +1,39 @@
|
|
|
1
1
|
import type { ExpressApp } from "../../RestApi";
|
|
2
2
|
import type { Express } from "express";
|
|
3
|
+
export declare const getRouter: (app: ExpressApp | Express) => {
|
|
4
|
+
getStack: () => {
|
|
5
|
+
name: string;
|
|
6
|
+
handle: import("../../SchemaWatch/SchemaWatch").VoidFunction;
|
|
7
|
+
path: undefined;
|
|
8
|
+
keys?: any[];
|
|
9
|
+
route?: {
|
|
10
|
+
path?: string;
|
|
11
|
+
methods?: {
|
|
12
|
+
get?: boolean;
|
|
13
|
+
post?: boolean;
|
|
14
|
+
put?: boolean;
|
|
15
|
+
delete?: boolean;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
}[];
|
|
19
|
+
router: {
|
|
20
|
+
stack?: {
|
|
21
|
+
name: string;
|
|
22
|
+
handle: import("../../SchemaWatch/SchemaWatch").VoidFunction;
|
|
23
|
+
path: undefined;
|
|
24
|
+
keys?: any[];
|
|
25
|
+
route?: {
|
|
26
|
+
path?: string;
|
|
27
|
+
methods?: {
|
|
28
|
+
get?: boolean;
|
|
29
|
+
post?: boolean;
|
|
30
|
+
put?: boolean;
|
|
31
|
+
delete?: boolean;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
}[];
|
|
35
|
+
};
|
|
36
|
+
};
|
|
3
37
|
export declare const removeExpressRoute: (app: ExpressApp | Express | undefined, _routePaths: (string | undefined)[], method?: "get" | "post" | "put" | "delete") => void;
|
|
4
38
|
export declare const removeExpressRoutesTest: (app: ExpressApp | Express) => Promise<void>;
|
|
5
39
|
//# sourceMappingURL=removeExpressRoute.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removeExpressRoute.d.ts","sourceRoot":"","sources":["../../../lib/Auth/utils/removeExpressRoute.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"removeExpressRoute.d.ts","sourceRoot":"","sources":["../../../lib/Auth/utils/removeExpressRoute.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC,eAAO,MAAM,SAAS,GAAI,KAAK,UAAU,GAAG,OAAO;;;;;;;gBAcJ,CAAC;mBAAuB,CAAC;mBAElE,CAAH;oBAEC,CAAJ;mBAIC,CAAC;sBAAyB,CAAC;;;;;;;;;gBARd,CAAA;iBAAkB,CAAC;oBAAc,CAAC;uBAAuB,CAAC;uBAElE,CAAH;wBAEC,CAAJ;uBAIC,CAAC;0BAAyB,CAAC;;;;;CAF3B,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,KAAK,UAAU,GAAG,OAAO,GAAG,SAAS,EACrC,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,EACnC,SAAS,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,SAe3C,CAAC;AAGF,eAAO,MAAM,uBAAuB,GAAU,KAAK,UAAU,GAAG,OAAO,kBA2BtE,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.removeExpressRoutesTest = exports.removeExpressRoute = void 0;
|
|
3
|
+
exports.removeExpressRoutesTest = exports.removeExpressRoute = exports.getRouter = void 0;
|
|
4
4
|
const prostgles_types_1 = require("prostgles-types");
|
|
5
5
|
const matchesRoute_1 = require("./matchesRoute");
|
|
6
6
|
const getRouter = (app) => {
|
|
@@ -23,11 +23,12 @@ const getRouter = (app) => {
|
|
|
23
23
|
router,
|
|
24
24
|
};
|
|
25
25
|
};
|
|
26
|
+
exports.getRouter = getRouter;
|
|
26
27
|
const removeExpressRoute = (app, _routePaths, method) => {
|
|
27
28
|
if (!app)
|
|
28
29
|
return;
|
|
29
30
|
const routePaths = _routePaths.filter(prostgles_types_1.isDefined);
|
|
30
|
-
const { router, getStack } = getRouter(app);
|
|
31
|
+
const { router, getStack } = (0, exports.getRouter)(app);
|
|
31
32
|
const newRoutes = getStack().filter((route) => {
|
|
32
33
|
const path = route.route?.path;
|
|
33
34
|
const matchesForRemoval = path &&
|
|
@@ -45,7 +46,7 @@ const removeExpressRoutesTest = async (app) => {
|
|
|
45
46
|
app.get("/removeExpressRoute", (req, res) => {
|
|
46
47
|
res.json({ v: 1 });
|
|
47
48
|
});
|
|
48
|
-
const { getStack } = getRouter(app);
|
|
49
|
+
const { getStack } = (0, exports.getRouter)(app);
|
|
49
50
|
const currentRoutes = getStack().slice(0);
|
|
50
51
|
(0, exports.removeExpressRoute)(app, ["/removeExpressRoute"]);
|
|
51
52
|
if (getStack().length !== currentRoutes.length - 1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removeExpressRoute.js","sourceRoot":"","sources":["../../../lib/Auth/utils/removeExpressRoute.ts"],"names":[],"mappings":";;;AAAA,qDAA4C;AAG5C,iDAA8C;
|
|
1
|
+
{"version":3,"file":"removeExpressRoute.js","sourceRoot":"","sources":["../../../lib/Auth/utils/removeExpressRoute.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,5 @@ import type e from "express";
|
|
|
2
2
|
import type { RequestHandler } from "express";
|
|
3
3
|
import type { ExpressApp } from "../../RestApi";
|
|
4
4
|
export declare const upsertNamedExpressMiddleware: (app: e.Express, handler: RequestHandler, name: string) => void;
|
|
5
|
-
export declare const removeExpressRouteByName: (app: ExpressApp
|
|
5
|
+
export declare const removeExpressRouteByName: (app: ExpressApp, name: string) => void;
|
|
6
6
|
//# sourceMappingURL=upsertNamedExpressMiddleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upsertNamedExpressMiddleware.d.ts","sourceRoot":"","sources":["../../../lib/Auth/utils/upsertNamedExpressMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"upsertNamedExpressMiddleware.d.ts","sourceRoot":"","sources":["../../../lib/Auth/utils/upsertNamedExpressMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,eAAO,MAAM,4BAA4B,GACvC,KAAK,CAAC,CAAC,OAAO,EACd,SAAS,cAAc,EACvB,MAAM,MAAM,SAMb,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,KAAK,UAAU,EAAE,MAAM,MAAM,SASrE,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.removeExpressRouteByName = exports.upsertNamedExpressMiddleware = void 0;
|
|
4
|
+
const removeExpressRoute_1 = require("./removeExpressRoute");
|
|
4
5
|
const upsertNamedExpressMiddleware = (app, handler, name) => {
|
|
5
6
|
const funcName = name;
|
|
6
7
|
Object.defineProperty(handler, "name", { value: funcName });
|
|
@@ -9,15 +10,14 @@ const upsertNamedExpressMiddleware = (app, handler, name) => {
|
|
|
9
10
|
};
|
|
10
11
|
exports.upsertNamedExpressMiddleware = upsertNamedExpressMiddleware;
|
|
11
12
|
const removeExpressRouteByName = (app, name) => {
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
13
|
+
const { router, getStack } = (0, removeExpressRoute_1.getRouter)(app);
|
|
14
|
+
const newRoutes = getStack().filter((route) => {
|
|
15
|
+
if (route.name === name) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
return true;
|
|
19
|
+
});
|
|
20
|
+
router.stack = newRoutes;
|
|
21
21
|
};
|
|
22
22
|
exports.removeExpressRouteByName = removeExpressRouteByName;
|
|
23
23
|
//# sourceMappingURL=upsertNamedExpressMiddleware.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upsertNamedExpressMiddleware.js","sourceRoot":"","sources":["../../../lib/Auth/utils/upsertNamedExpressMiddleware.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"upsertNamedExpressMiddleware.js","sourceRoot":"","sources":["../../../lib/Auth/utils/upsertNamedExpressMiddleware.ts"],"names":[],"mappings":";;;AAGA,6DAAiD;AAE1C,MAAM,4BAA4B,GAAG,CAC1C,GAAc,EACd,OAAuB,EACvB,IAAY,EACZ,EAAE;IACF,MAAM,QAAQ,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5D,IAAA,gCAAwB,EAAC,GAAiB,EAAE,IAAI,CAAC,CAAC;IAClD,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC,CAAC;AATW,QAAA,4BAA4B,gCASvC;AAEK,MAAM,wBAAwB,GAAG,CAAC,GAAe,EAAE,IAAY,EAAE,EAAE;IACxE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,8BAAS,EAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;AAC3B,CAAC,CAAC;AATW,QAAA,wBAAwB,4BASnC"}
|
|
@@ -12,6 +12,7 @@ type ClientStreamedRequest = {
|
|
|
12
12
|
persistConnection?: boolean;
|
|
13
13
|
};
|
|
14
14
|
type StreamedQuery = ClientStreamedRequest & {
|
|
15
|
+
id: number;
|
|
15
16
|
cursor: CursorType | undefined;
|
|
16
17
|
client: pg.Client | undefined;
|
|
17
18
|
stop?: VoidFunction;
|
|
@@ -20,7 +21,7 @@ type StreamedQuery = ClientStreamedRequest & {
|
|
|
20
21
|
export declare class QueryStreamer {
|
|
21
22
|
db: DB;
|
|
22
23
|
dboBuilder: DboBuilder;
|
|
23
|
-
socketQueries:
|
|
24
|
+
socketQueries: Map<string, Map<number, StreamedQuery>>;
|
|
24
25
|
adminClient: pg.Client;
|
|
25
26
|
constructor(dboBuilder: DboBuilder);
|
|
26
27
|
getConnection: (onError: ((err: any) => void) | undefined, extraOptions?: pg.ClientConfig) => pg.Client;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryStreamer.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/QueryStreamer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,UAAU,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAyB,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAGhG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKtD,KAAK,qBAAqB,GAAG;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,UAAU,GAAG,SAAS,CAAC;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AACF,KAAK,aAAa,GAAG,qBAAqB,GAAG;IAC3C,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;IAC/B,MAAM,EAAE,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC;IAC9B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CAC/B,CAAC;AAiBF,qBAAa,aAAa;IACxB,EAAE,EAAE,EAAE,CAAC;IACP,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"QueryStreamer.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/QueryStreamer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,UAAU,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAyB,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAGhG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKtD,KAAK,qBAAqB,GAAG;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,UAAU,GAAG,SAAS,CAAC;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AACF,KAAK,aAAa,GAAG,qBAAqB,GAAG;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;IAC/B,MAAM,EAAE,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC;IAC9B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CAC/B,CAAC;AAiBF,qBAAa,aAAa;IACxB,EAAE,EAAE,EAAE,CAAC;IACP,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAa;IACnE,WAAW,EAAE,EAAE,CAAC,MAAM,CAAC;gBACX,UAAU,EAAE,UAAU;IAmBlC,aAAa,GAAI,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,eAAe,EAAE,CAAC,YAAY,eAQxF;IACF,YAAY,GAAI,UAAU,MAAM,UAS9B;IAEF,MAAM,GAAI,OAAO,qBAAqB,KAAG,qBAAqB,CA4O5D;CACH"}
|
|
@@ -6,18 +6,18 @@ const prostgles_types_1 = require("prostgles-types");
|
|
|
6
6
|
const dboBuilderUtils_1 = require("./dboBuilderUtils");
|
|
7
7
|
const runSQL_1 = require("./runSQL");
|
|
8
8
|
const Cursor = require("pg-cursor");
|
|
9
|
-
const
|
|
9
|
+
const socketIdToLastQueryId = new Map();
|
|
10
10
|
const getSetShortSocketId = (socketId) => {
|
|
11
11
|
const shortId = socketId.slice(0, 3);
|
|
12
|
-
const currId =
|
|
12
|
+
const currId = socketIdToLastQueryId.get(shortId) ?? 0;
|
|
13
13
|
const newId = currId + 1;
|
|
14
|
-
|
|
14
|
+
socketIdToLastQueryId.set(shortId, newId);
|
|
15
15
|
return newId;
|
|
16
16
|
};
|
|
17
17
|
class QueryStreamer {
|
|
18
18
|
db;
|
|
19
19
|
dboBuilder;
|
|
20
|
-
socketQueries =
|
|
20
|
+
socketQueries = new Map();
|
|
21
21
|
adminClient;
|
|
22
22
|
constructor(dboBuilder) {
|
|
23
23
|
this.dboBuilder = dboBuilder;
|
|
@@ -43,7 +43,7 @@ class QueryStreamer {
|
|
|
43
43
|
return client;
|
|
44
44
|
};
|
|
45
45
|
onDisconnect = (socketId) => {
|
|
46
|
-
const socketQueries = this.socketQueries
|
|
46
|
+
const socketQueries = this.socketQueries.get(socketId);
|
|
47
47
|
if (!socketQueries)
|
|
48
48
|
return;
|
|
49
49
|
Object.values(socketQueries).forEach(({ client, stop }) => {
|
|
@@ -51,7 +51,7 @@ class QueryStreamer {
|
|
|
51
51
|
/** end does not stop active query?! */
|
|
52
52
|
void client?.end();
|
|
53
53
|
});
|
|
54
|
-
|
|
54
|
+
this.socketQueries.delete(socketId);
|
|
55
55
|
};
|
|
56
56
|
create = (query) => {
|
|
57
57
|
const { socket, persistConnection } = query;
|
|
@@ -59,10 +59,9 @@ class QueryStreamer {
|
|
|
59
59
|
const id = getSetShortSocketId(socketId);
|
|
60
60
|
const channel = `${prostgles_types_1.CHANNELS.SQL_STREAM}__${socketId}_${id}`;
|
|
61
61
|
const unsubChannel = `${channel}.unsubscribe`;
|
|
62
|
-
if (this.socketQueries
|
|
62
|
+
if (this.socketQueries.get(socketId)?.get(id) && !persistConnection) {
|
|
63
63
|
throw `Must stop existing query ${id} first`;
|
|
64
64
|
}
|
|
65
|
-
this.socketQueries[socketId] ??= {};
|
|
66
65
|
let errored = false;
|
|
67
66
|
const socketQuery = {
|
|
68
67
|
...query,
|
|
@@ -85,12 +84,12 @@ class QueryStreamer {
|
|
|
85
84
|
});
|
|
86
85
|
},
|
|
87
86
|
};
|
|
88
|
-
|
|
89
|
-
this.socketQueries
|
|
87
|
+
const socketQueries = this.socketQueries.get(socketId) ?? new Map();
|
|
88
|
+
this.socketQueries.set(socketId, socketQueries.set(id, socketQuery));
|
|
90
89
|
let processID = -1;
|
|
91
90
|
let streamState;
|
|
92
91
|
const startStream = async (client, query) => {
|
|
93
|
-
const socketQuery = this.socketQueries
|
|
92
|
+
const socketQuery = this.socketQueries.get(socketId)?.get(id);
|
|
94
93
|
if (!socketQuery) {
|
|
95
94
|
throw "socket query not found";
|
|
96
95
|
}
|
|
@@ -122,7 +121,7 @@ class QueryStreamer {
|
|
|
122
121
|
socketQuery.onError(err);
|
|
123
122
|
void currentClient.end();
|
|
124
123
|
});
|
|
125
|
-
|
|
124
|
+
socketQuery.client = currentClient;
|
|
126
125
|
try {
|
|
127
126
|
if (!client) {
|
|
128
127
|
await currentClient.connect();
|
|
@@ -134,7 +133,7 @@ class QueryStreamer {
|
|
|
134
133
|
}
|
|
135
134
|
const batchSize = query.options?.streamLimit ? Math.min(1e3, query.options.streamLimit) : 1e3;
|
|
136
135
|
const cursor = currentClient.query(new Cursor(query.query, undefined, { rowMode: "array" }));
|
|
137
|
-
|
|
136
|
+
socketQuery.cursor = cursor;
|
|
138
137
|
let streamLimitReached = false;
|
|
139
138
|
let reachedEnd = false;
|
|
140
139
|
void (async () => {
|
|
@@ -160,7 +159,7 @@ class QueryStreamer {
|
|
|
160
159
|
} while (!reachedEnd && !streamLimitReached);
|
|
161
160
|
streamState = "ended";
|
|
162
161
|
if (!query.options?.persistStreamConnection) {
|
|
163
|
-
|
|
162
|
+
this.socketQueries.get(socketId)?.delete(id);
|
|
164
163
|
void currentClient.end();
|
|
165
164
|
}
|
|
166
165
|
void cursor.close();
|
|
@@ -197,10 +196,10 @@ class QueryStreamer {
|
|
|
197
196
|
const cleanup = () => {
|
|
198
197
|
socket.removeAllListeners(unsubChannel);
|
|
199
198
|
socket.removeAllListeners(channel);
|
|
200
|
-
|
|
199
|
+
this.socketQueries.get(socketId)?.delete(id);
|
|
201
200
|
};
|
|
202
201
|
const stop = async (opts, cb) => {
|
|
203
|
-
const { client: queryClient } = this.socketQueries
|
|
202
|
+
const { client: queryClient } = this.socketQueries.get(socketId)?.get(id) ?? {};
|
|
204
203
|
if (!queryClient)
|
|
205
204
|
return;
|
|
206
205
|
if (opts?.terminate) {
|
|
@@ -218,7 +217,7 @@ class QueryStreamer {
|
|
|
218
217
|
cb(null, error);
|
|
219
218
|
}
|
|
220
219
|
};
|
|
221
|
-
|
|
220
|
+
socketQuery.stop = () => stop({ terminate: true }, () => {
|
|
222
221
|
/* Empty */
|
|
223
222
|
});
|
|
224
223
|
socket.removeAllListeners(unsubChannel);
|
|
@@ -233,7 +232,7 @@ class QueryStreamer {
|
|
|
233
232
|
try {
|
|
234
233
|
/* Persisted connection query */
|
|
235
234
|
if (runCount) {
|
|
236
|
-
const persistedClient = this.socketQueries
|
|
235
|
+
const persistedClient = this.socketQueries.get(socketId)?.get(id);
|
|
237
236
|
if (!persistedClient)
|
|
238
237
|
throw "Persisted query client not found";
|
|
239
238
|
await startStream(persistedClient.client, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryStreamer.js","sourceRoot":"","sources":["../../lib/DboBuilder/QueryStreamer.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AAGzB,qDAA+D;AAM/D,uDAA0F;AAC1F,qCAAgD;AAChD,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"QueryStreamer.js","sourceRoot":"","sources":["../../lib/DboBuilder/QueryStreamer.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AAGzB,qDAA+D;AAM/D,uDAA0F;AAC1F,qCAAgD;AAChD,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAsB,CAAC;AAsBzD,MAAM,qBAAqB,GAAwB,IAAI,GAAG,EAAE,CAAC;AAC7D,MAAM,mBAAmB,GAAG,CAAC,QAAgB,EAAE,EAAE;IAC/C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;IACzB,qBAAqB,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAa,aAAa;IACxB,EAAE,CAAK;IACP,UAAU,CAAa;IACvB,aAAa,GAA4C,IAAI,GAAG,EAAE,CAAC;IACnE,WAAW,CAAY;IACvB,YAAY,UAAsB;QAChC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;QACxB,MAAM,cAAc,GAAG,GAAG,EAAE;YAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtE,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QACpC,CAAC,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CACnC,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC;gBAClF,OAAO;YACT,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;YAC1D,KAAK,cAAc,EAAE,CAAC;QACxB,CAAC,EACD,EAAE,SAAS,EAAE,IAAI,EAAE,CACpB,CAAC;QACF,KAAK,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;IAED,aAAa,GAAG,CAAC,OAAyC,EAAE,YAA8B,EAAE,EAAE;QAC5F,MAAM,cAAc,GAClB,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAE,IAAI,CAAC,EAAE,CAAC,GAAW,CAAC;QAC7F,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,cAAc,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC;QACrE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACzB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IACF,YAAY,GAAG,CAAC,QAAgB,EAAE,EAAE;QAClC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;YACxD,IAAI,EAAE,EAAE,CAAC;YACT,uCAAuC;YACvC,KAAK,MAAM,EAAE,GAAG,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,MAAM,GAAG,CAAC,KAA4B,EAAyB,EAAE;QAC/D,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,GAAG,KAAK,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,GAAG,0BAAQ,CAAC,UAAU,KAAK,QAAQ,IAAI,EAAE,EAAE,CAAC;QAC5D,MAAM,YAAY,GAAG,GAAG,OAAO,cAAc,CAAC;QAC9C,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACpE,MAAM,4BAA4B,EAAE,QAAQ,CAAC;QAC/C,CAAC;QAED,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,WAAW,GAAkB;YACjC,GAAG,KAAK;YACR,EAAE;YACF,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,CAAC,QAAa,EAAE,EAAE;gBACzB,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBAEf,MAAM,iBAAiB,GAAG,IAAA,qDAAmC,EAAC,QAAQ,EAAE;oBACtE,IAAI,EAAE,KAAK;oBACX,WAAW,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE;iBACvC,CAAC,CAAC;gBACH,gFAAgF;gBAChF,MAAM,KAAK,GAAG,EAAE,GAAG,iBAAiB,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC3D,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;oBACnB,IAAI,EAAE,OAAO;oBACb,KAAK;iBAC0B,CAAC,CAAC;YACrC,CAAC;SACF,CAAC;QACF,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,EAAyB,CAAC;QAC3F,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;QACrE,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;QACnB,IAAI,WAAwD,CAAC;QAE7D,MAAM,WAAW,GAAG,KAAK,EAAE,MAA6B,EAAE,KAA4B,EAAE,EAAE;YACxF,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,wBAAwB,CAAC;YACjC,CAAC;YAED,wCAAwC;YACxC,IAAI,cAAc,GAAG,KAAK,CAAC;YAC3B,MAAM,IAAI,GAAG,CAAC,EACZ,UAAU,EACV,IAAI,EACJ,IAAI,GAG6D,EAAE,EAAE;gBACrE,IAAI,CAAE,IAAY,CAAC,MAAM;oBAAE,MAAM,WAAW,CAAC;gBAC7C,MAAM,MAAM,GAAG,6BAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACvE,MAAM,MAAM,GAA0B;oBACpC,IAAI,EAAE,MAAM;oBACZ,IAAI;oBACJ,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;oBAC3C,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;oBACnC,KAAK,EAAE,UAAU;oBACjB,SAAS,EAAE,SAAS;iBACrB,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC7B,IAAI,UAAU,EAAE,CAAC;oBACf,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,EAAE,sBAAsB,EAAE,CAAC;wBAC9D,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,KAAK,EAAE,KAAK,CAAC,KAAK;qBACnB,CAAC,CAAC;gBACL,CAAC;gBACD,cAAc,GAAG,IAAI,CAAC;YACxB,CAAC,CAAC;YACF,MAAM,aAAa,GACjB,MAAM;gBACN,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,EAAE;oBACzB,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACzB,KAAK,aAAa,CAAC,GAAG,EAAE,CAAC;gBAC3B,CAAC,CAAC,CAAC;YACL,WAAW,CAAC,MAAM,GAAG,aAAa,CAAC;YACnC,IAAI,CAAC;gBACH,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,aAAa,CAAC,OAAO,EAAE,CAAC;gBAChC,CAAC;gBACD,SAAS,GAAI,aAAqB,CAAC,SAAS,CAAC;gBAE7C,IACE,KAAK,CAAC,OAAO,EAAE,WAAW;oBAC1B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,EAC/E,CAAC;oBACD,MAAM,wCAAwC,CAAC;gBACjD,CAAC;gBACD,MAAM,SAAS,GACb,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC9E,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAChC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CACzD,CAAC;gBACF,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;gBAC5B,IAAI,kBAAkB,GAAG,KAAK,CAAC;gBAC/B,IAAI,UAAU,GAAG,KAAK,CAAC;gBACvB,KAAK,CAAC,KAAK,IAAI,EAAE;oBACf,IAAI,CAAC;wBACH,IAAI,QAAQ,GAAU,EAAE,CAAC;wBACzB,IAAI,QAAQ,GAAG,CAAC,CAAC;wBACjB,GAAG,CAAC;4BACF,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;4BACxC,MAAM,IAAI,GAAG,IAAA,0BAAQ,EAAE,MAAc,CAAC,OAAO,EAAE;gCAC7C,QAAQ;gCACR,UAAU;gCACV,SAAS;gCACT,UAAU;6BACX,CAAS,CAAC;4BACX,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC;4BAC5B,kBAAkB,GAAG,OAAO,CAC1B,KAAK,CAAC,OAAO,EAAE,WAAW,IAAI,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CACpE,CAAC;4BACF,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;4BACzC,IAAI,CAAC;gCACH,IAAI;gCACJ,IAAI,EAAE,QAAQ;gCACd,UAAU,EAAE,UAAU,IAAI,kBAAkB;6BAC7C,CAAC,CAAC;wBACL,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,kBAAkB,EAAE;wBAE7C,WAAW,GAAG,OAAO,CAAC;wBAEtB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,EAAE,CAAC;4BAC5C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;4BAC7C,KAAK,aAAa,CAAC,GAAG,EAAE,CAAC;wBAC3B,CAAC;wBACD,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;oBACtB,CAAC;oBAAC,OAAO,KAAU,EAAE,CAAC;wBACpB,WAAW,GAAG,SAAS,CAAC;wBACxB,IAAI,KAAK,CAAC,OAAO,KAAK,2DAA2D,EAAE,CAAC;4BAClF,IAAI,CAAC,UAAU;iCACZ,MAAM,CACL,KAAK,CAAC,KAAK,EACX,EAAE,EACF,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,EAC7C;gCACE,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;6BACpC,CACF;iCACA,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;gCACZ,IAAI,CAAC;oCACH,IAAI,EAAE,IAAA,0BAAQ,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;oCAC7B,UAAU,EAAE,IAAI;oCAChB,IAAI,EAAE,GAAG,CAAC,IAAI;iCACf,CAAC,CAAC;4BACL,CAAC,CAAC;iCACD,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE;gCAClB,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;4BAChC,CAAC,CAAC,CAAC;wBACP,CAAC;6BAAM,CAAC;4BACN,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBAC7B,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACzB,MAAM,aAAa,CAAC,GAAG,EAAE,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YACxC,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACnC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC;QACF,MAAM,IAAI,GAAG,KAAK,EAAE,IAAyC,EAAE,EAAiB,EAAE,EAAE;YAClF,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAChF,IAAI,CAAC,WAAW;gBAAE,OAAO;YACzB,IAAI,IAAI,EAAE,SAAS,EAAE,CAAC;gBACpB,UAAU,CAAC,GAAG,EAAE;oBACd,KAAK,WAAW,CAAC,GAAG,EAAE,CAAC;gBACzB,CAAC,EAAE,GAAG,CAAC,CAAC;YACV,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,mBAAmB,CAAC;gBACpF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CACvC,UAAU,YAAY,+DAA+D,EACrF,CAAC,SAAS,CAAC,CACZ,CAAC;gBACF,OAAO,EAAE,CAAC;gBACV,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,CAAC;QACF,WAAW,CAAC,IAAI,GAAG,GAAG,EAAE,CACtB,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE;YAC7B,WAAW;QACb,CAAC,CAAC,CAAC;QAEL,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAEhC,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,CAAC,EAAE,CACP,OAAO,EACP,KAAK,EAAE,KAAiD,EAAE,EAAiB,EAAE,EAAE;YAC7E,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,OAAO,EAAE,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;YAC1C,CAAC;YACD,WAAW,GAAG,SAAS,CAAC;YACxB,IAAI,CAAC;gBACH,gCAAgC;gBAChC,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBAClE,IAAI,CAAC,eAAe;wBAAE,MAAM,kCAAkC,CAAC;oBAE/D,MAAM,WAAW,CAAC,eAAe,CAAC,MAAM,EAAE;wBACxC,GAAG,KAAK;wBACR,KAAK,EAAE,KAAM,CAAC,KAAK;qBACpB,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,MAAM,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBACtC,CAAC;gBACD,EAAE,CAAC,SAAS,CAAC,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACnB,EAAE,CAAC,SAAS,EAAE,IAAA,kCAAgB,EAAC,GAAG,CAAC,CAAC,CAAC;YACvC,CAAC;YACD,QAAQ,EAAE,CAAC;QACb,CAAC,CACF,CAAC;QAEF,uEAAuE;QACvE,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,WAAW;gBAAE,OAAO;YACxB,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,GAAG,CAAC,CAAC;QAER,OAAO;YACL,OAAO;YACP,YAAY;SACb,CAAC;IACJ,CAAC,CAAC;CACH;AAzRD,sCAyRC"}
|
|
@@ -31,6 +31,8 @@ export function setupAuthRoutes(this: AuthHandler) {
|
|
|
31
31
|
throw "Invalid or empty string provided within publicRoutes ";
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
setupUserContextMiddleware.bind(this)(app);
|
|
35
|
+
|
|
34
36
|
if (signupWithEmail) {
|
|
35
37
|
setRegisterRequestHandler.bind(this)(signupWithEmail, app);
|
|
36
38
|
}
|
|
@@ -72,7 +74,5 @@ export function setupAuthRoutes(this: AuthHandler) {
|
|
|
72
74
|
/* Redirect if not logged in and requesting non public content */
|
|
73
75
|
setCatchAllRequestHandler.bind(this)(app);
|
|
74
76
|
|
|
75
|
-
setupUserContextMiddleware.bind(this)(app);
|
|
76
|
-
|
|
77
77
|
setLogoutRequestHandler.bind(this)(app);
|
|
78
78
|
}
|
|
@@ -3,7 +3,7 @@ import type { ExpressApp } from "../../RestApi";
|
|
|
3
3
|
import type { Express } from "express";
|
|
4
4
|
import { matchesRoute } from "./matchesRoute";
|
|
5
5
|
|
|
6
|
-
const getRouter = (app: ExpressApp | Express) => {
|
|
6
|
+
export const getRouter = (app: ExpressApp | Express) => {
|
|
7
7
|
const router = (app._router || app.router) as ExpressApp["_router"] | undefined;
|
|
8
8
|
if (typeof router === "string") {
|
|
9
9
|
throw new Error("app.router is a string");
|
|
@@ -28,7 +28,7 @@ const getRouter = (app: ExpressApp | Express) => {
|
|
|
28
28
|
export const removeExpressRoute = (
|
|
29
29
|
app: ExpressApp | Express | undefined,
|
|
30
30
|
_routePaths: (string | undefined)[],
|
|
31
|
-
method?: "get" | "post" | "put" | "delete"
|
|
31
|
+
method?: "get" | "post" | "put" | "delete",
|
|
32
32
|
) => {
|
|
33
33
|
if (!app) return;
|
|
34
34
|
const routePaths = _routePaths.filter(isDefined);
|
|
@@ -63,7 +63,7 @@ export const removeExpressRoutesTest = async (app: ExpressApp | Express) => {
|
|
|
63
63
|
res.json({ v: 2 });
|
|
64
64
|
});
|
|
65
65
|
const r = (await fetch("http://localhost:3001/removeExpressRoute").then((res) =>
|
|
66
|
-
res.json()
|
|
66
|
+
res.json(),
|
|
67
67
|
)) as {
|
|
68
68
|
v: number;
|
|
69
69
|
};
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type e from "express";
|
|
2
2
|
import type { RequestHandler } from "express";
|
|
3
3
|
import type { ExpressApp } from "../../RestApi";
|
|
4
|
+
import { getRouter } from "./removeExpressRoute";
|
|
4
5
|
|
|
5
6
|
export const upsertNamedExpressMiddleware = (
|
|
6
7
|
app: e.Express,
|
|
7
8
|
handler: RequestHandler,
|
|
8
|
-
name: string
|
|
9
|
+
name: string,
|
|
9
10
|
) => {
|
|
10
11
|
const funcName = name;
|
|
11
12
|
Object.defineProperty(handler, "name", { value: funcName });
|
|
@@ -13,14 +14,13 @@ export const upsertNamedExpressMiddleware = (
|
|
|
13
14
|
app.use(handler);
|
|
14
15
|
};
|
|
15
16
|
|
|
16
|
-
export const removeExpressRouteByName = (app: ExpressApp
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
17
|
+
export const removeExpressRouteByName = (app: ExpressApp, name: string) => {
|
|
18
|
+
const { router, getStack } = getRouter(app);
|
|
19
|
+
const newRoutes = getStack().filter((route) => {
|
|
20
|
+
if (route.name === name) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
return true;
|
|
24
|
+
});
|
|
25
|
+
router.stack = newRoutes;
|
|
26
26
|
};
|
|
@@ -9,7 +9,7 @@ import type { DboBuilder } from "./DboBuilder";
|
|
|
9
9
|
import type { PRGLIOSocket } from "./DboBuilderTypes";
|
|
10
10
|
import { getErrorAsObject, getSerializedClientErrorFromPGError } from "./dboBuilderUtils";
|
|
11
11
|
import { getDetailedFieldInfo } from "./runSQL";
|
|
12
|
-
const Cursor
|
|
12
|
+
const Cursor = require("pg-cursor") as typeof CursorType;
|
|
13
13
|
|
|
14
14
|
type ClientStreamedRequest = {
|
|
15
15
|
socket: PRGLIOSocket;
|
|
@@ -18,6 +18,7 @@ type ClientStreamedRequest = {
|
|
|
18
18
|
persistConnection?: boolean;
|
|
19
19
|
};
|
|
20
20
|
type StreamedQuery = ClientStreamedRequest & {
|
|
21
|
+
id: number;
|
|
21
22
|
cursor: CursorType | undefined;
|
|
22
23
|
client: pg.Client | undefined;
|
|
23
24
|
stop?: VoidFunction;
|
|
@@ -30,19 +31,19 @@ type Info = {
|
|
|
30
31
|
duration: number;
|
|
31
32
|
};
|
|
32
33
|
|
|
33
|
-
const
|
|
34
|
+
const socketIdToLastQueryId: Map<string, number> = new Map();
|
|
34
35
|
const getSetShortSocketId = (socketId: string) => {
|
|
35
36
|
const shortId = socketId.slice(0, 3);
|
|
36
|
-
const currId =
|
|
37
|
+
const currId = socketIdToLastQueryId.get(shortId) ?? 0;
|
|
37
38
|
const newId = currId + 1;
|
|
38
|
-
|
|
39
|
+
socketIdToLastQueryId.set(shortId, newId);
|
|
39
40
|
return newId;
|
|
40
41
|
};
|
|
41
42
|
|
|
42
43
|
export class QueryStreamer {
|
|
43
44
|
db: DB;
|
|
44
45
|
dboBuilder: DboBuilder;
|
|
45
|
-
socketQueries:
|
|
46
|
+
socketQueries: Map<string, Map<number, StreamedQuery>> = new Map();
|
|
46
47
|
adminClient: pg.Client;
|
|
47
48
|
constructor(dboBuilder: DboBuilder) {
|
|
48
49
|
this.dboBuilder = dboBuilder;
|
|
@@ -73,14 +74,14 @@ export class QueryStreamer {
|
|
|
73
74
|
return client;
|
|
74
75
|
};
|
|
75
76
|
onDisconnect = (socketId: string) => {
|
|
76
|
-
const socketQueries = this.socketQueries
|
|
77
|
+
const socketQueries = this.socketQueries.get(socketId);
|
|
77
78
|
if (!socketQueries) return;
|
|
78
79
|
Object.values(socketQueries).forEach(({ client, stop }) => {
|
|
79
80
|
stop?.();
|
|
80
81
|
/** end does not stop active query?! */
|
|
81
82
|
void client?.end();
|
|
82
83
|
});
|
|
83
|
-
|
|
84
|
+
this.socketQueries.delete(socketId);
|
|
84
85
|
};
|
|
85
86
|
|
|
86
87
|
create = (query: ClientStreamedRequest): SocketSQLStreamServer => {
|
|
@@ -89,13 +90,12 @@ export class QueryStreamer {
|
|
|
89
90
|
const id = getSetShortSocketId(socketId);
|
|
90
91
|
const channel = `${CHANNELS.SQL_STREAM}__${socketId}_${id}`;
|
|
91
92
|
const unsubChannel = `${channel}.unsubscribe`;
|
|
92
|
-
if (this.socketQueries
|
|
93
|
+
if (this.socketQueries.get(socketId)?.get(id) && !persistConnection) {
|
|
93
94
|
throw `Must stop existing query ${id} first`;
|
|
94
95
|
}
|
|
95
96
|
|
|
96
|
-
this.socketQueries[socketId] ??= {};
|
|
97
97
|
let errored = false;
|
|
98
|
-
const socketQuery = {
|
|
98
|
+
const socketQuery: StreamedQuery = {
|
|
99
99
|
...query,
|
|
100
100
|
id,
|
|
101
101
|
client: undefined,
|
|
@@ -116,13 +116,13 @@ export class QueryStreamer {
|
|
|
116
116
|
} satisfies SocketSQLStreamPacket);
|
|
117
117
|
},
|
|
118
118
|
};
|
|
119
|
-
|
|
120
|
-
this.socketQueries
|
|
119
|
+
const socketQueries = this.socketQueries.get(socketId) ?? new Map<number, StreamedQuery>();
|
|
120
|
+
this.socketQueries.set(socketId, socketQueries.set(id, socketQuery));
|
|
121
121
|
let processID = -1;
|
|
122
122
|
let streamState: "started" | "ended" | "errored" | undefined;
|
|
123
123
|
|
|
124
124
|
const startStream = async (client: pg.Client | undefined, query: ClientStreamedRequest) => {
|
|
125
|
-
const socketQuery = this.socketQueries
|
|
125
|
+
const socketQuery = this.socketQueries.get(socketId)?.get(id);
|
|
126
126
|
if (!socketQuery) {
|
|
127
127
|
throw "socket query not found";
|
|
128
128
|
}
|
|
@@ -137,7 +137,7 @@ export class QueryStreamer {
|
|
|
137
137
|
| { reachedEnd: true; rows: any[]; info: Info }
|
|
138
138
|
| { reachedEnd: false; rows: any[]; info: Omit<Info, "command"> }) => {
|
|
139
139
|
if (!(info as any).fields) throw "No fields";
|
|
140
|
-
const fields = getDetailedFieldInfo.bind(this.dboBuilder)(info.fields
|
|
140
|
+
const fields = getDetailedFieldInfo.bind(this.dboBuilder)(info.fields);
|
|
141
141
|
const packet: SocketSQLStreamPacket = {
|
|
142
142
|
type: "data",
|
|
143
143
|
rows,
|
|
@@ -161,7 +161,7 @@ export class QueryStreamer {
|
|
|
161
161
|
socketQuery.onError(err);
|
|
162
162
|
void currentClient.end();
|
|
163
163
|
});
|
|
164
|
-
|
|
164
|
+
socketQuery.client = currentClient;
|
|
165
165
|
try {
|
|
166
166
|
if (!client) {
|
|
167
167
|
await currentClient.connect();
|
|
@@ -179,7 +179,7 @@ export class QueryStreamer {
|
|
|
179
179
|
const cursor = currentClient.query(
|
|
180
180
|
new Cursor(query.query, undefined, { rowMode: "array" }),
|
|
181
181
|
);
|
|
182
|
-
|
|
182
|
+
socketQuery.cursor = cursor;
|
|
183
183
|
let streamLimitReached = false;
|
|
184
184
|
let reachedEnd = false;
|
|
185
185
|
void (async () => {
|
|
@@ -209,7 +209,7 @@ export class QueryStreamer {
|
|
|
209
209
|
streamState = "ended";
|
|
210
210
|
|
|
211
211
|
if (!query.options?.persistStreamConnection) {
|
|
212
|
-
|
|
212
|
+
this.socketQueries.get(socketId)?.delete(id);
|
|
213
213
|
void currentClient.end();
|
|
214
214
|
}
|
|
215
215
|
void cursor.close();
|
|
@@ -249,10 +249,10 @@ export class QueryStreamer {
|
|
|
249
249
|
const cleanup = () => {
|
|
250
250
|
socket.removeAllListeners(unsubChannel);
|
|
251
251
|
socket.removeAllListeners(channel);
|
|
252
|
-
|
|
252
|
+
this.socketQueries.get(socketId)?.delete(id);
|
|
253
253
|
};
|
|
254
254
|
const stop = async (opts: { terminate?: boolean } | undefined, cb: BasicCallback) => {
|
|
255
|
-
const { client: queryClient } = this.socketQueries
|
|
255
|
+
const { client: queryClient } = this.socketQueries.get(socketId)?.get(id) ?? {};
|
|
256
256
|
if (!queryClient) return;
|
|
257
257
|
if (opts?.terminate) {
|
|
258
258
|
setTimeout(() => {
|
|
@@ -271,7 +271,7 @@ export class QueryStreamer {
|
|
|
271
271
|
cb(null, error);
|
|
272
272
|
}
|
|
273
273
|
};
|
|
274
|
-
|
|
274
|
+
socketQuery.stop = () =>
|
|
275
275
|
stop({ terminate: true }, () => {
|
|
276
276
|
/* Empty */
|
|
277
277
|
});
|
|
@@ -291,7 +291,7 @@ export class QueryStreamer {
|
|
|
291
291
|
try {
|
|
292
292
|
/* Persisted connection query */
|
|
293
293
|
if (runCount) {
|
|
294
|
-
const persistedClient = this.socketQueries
|
|
294
|
+
const persistedClient = this.socketQueries.get(socketId)?.get(id);
|
|
295
295
|
if (!persistedClient) throw "Persisted query client not found";
|
|
296
296
|
|
|
297
297
|
await startStream(persistedClient.client, {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prostgles-server",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.438",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -55,8 +55,8 @@
|
|
|
55
55
|
"passport-microsoft": "^2.1.0",
|
|
56
56
|
"passport-oauth2": "^1.8.0",
|
|
57
57
|
"pg": "^8.15.6",
|
|
58
|
-
"pg-cursor": "^2.
|
|
59
|
-
"pg-promise": "^
|
|
58
|
+
"pg-cursor": "^2.17.0",
|
|
59
|
+
"pg-promise": "^12.6.0",
|
|
60
60
|
"prostgles-types": "^4.0.207"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|