prostgles-server 4.2.514 → 4.2.516
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/utils/handleGetUser.d.ts.map +1 -1
- package/dist/Auth/utils/handleGetUser.js +7 -3
- package/dist/Auth/utils/handleGetUser.js.map +1 -1
- package/dist/DboBuilder/DboBuilder.d.ts.map +1 -1
- package/dist/DboBuilder/DboBuilder.js +1 -0
- package/dist/DboBuilder/DboBuilder.js.map +1 -1
- package/dist/DboBuilder/DboBuilderTypes.d.ts +2 -2
- package/dist/DboBuilder/DboBuilderTypes.d.ts.map +1 -1
- package/dist/DboBuilder/DboBuilderTypes.js.map +1 -1
- package/dist/DboBuilder/QueryStreamer.d.ts.map +1 -1
- package/dist/DboBuilder/QueryStreamer.js +1 -0
- package/dist/DboBuilder/QueryStreamer.js.map +1 -1
- package/dist/DboBuilder/TableHandler/TableHandler.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/TableHandler.js +1 -0
- package/dist/DboBuilder/TableHandler/TableHandler.js.map +1 -1
- package/dist/DboBuilder/TableHandler/delete.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/delete.js +1 -0
- package/dist/DboBuilder/TableHandler/delete.js.map +1 -1
- package/dist/DboBuilder/TableHandler/insert/insert.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/insert/insert.js +1 -0
- package/dist/DboBuilder/TableHandler/insert/insert.js.map +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js +2 -0
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js.map +1 -1
- package/dist/DboBuilder/TableHandler/update.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/update.js +1 -0
- package/dist/DboBuilder/TableHandler/update.js.map +1 -1
- package/dist/DboBuilder/TableHandler/updateBatch.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/updateBatch.js +2 -0
- package/dist/DboBuilder/TableHandler/updateBatch.js.map +1 -1
- package/dist/DboBuilder/TableHandler/upsert.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/upsert.js +1 -0
- package/dist/DboBuilder/TableHandler/upsert.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.js +1 -0
- package/dist/DboBuilder/ViewHandler/ViewHandler.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/count.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/count.js +1 -0
- package/dist/DboBuilder/ViewHandler/count.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/find.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/find.js +3 -0
- package/dist/DboBuilder/ViewHandler/find.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/size.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/size.js +1 -0
- package/dist/DboBuilder/ViewHandler/size.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/subscribe.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/subscribe.js +1 -0
- package/dist/DboBuilder/ViewHandler/subscribe.js.map +1 -1
- package/dist/DboBuilder/ViewRelatedTables/getViewRelatedTables.d.ts.map +1 -1
- package/dist/DboBuilder/ViewRelatedTables/getViewRelatedTables.js +1 -0
- package/dist/DboBuilder/ViewRelatedTables/getViewRelatedTables.js.map +1 -1
- package/dist/DboBuilder/dboBuilderUtils.d.ts +4 -1
- package/dist/DboBuilder/dboBuilderUtils.d.ts.map +1 -1
- package/dist/DboBuilder/dboBuilderUtils.js +1 -6
- package/dist/DboBuilder/dboBuilderUtils.js.map +1 -1
- package/dist/DboBuilder/getColumns.d.ts.map +1 -1
- package/dist/DboBuilder/getColumns.js +1 -0
- package/dist/DboBuilder/getColumns.js.map +1 -1
- package/dist/DboBuilder/runSql/runSQL.d.ts.map +1 -1
- package/dist/DboBuilder/runSql/runSQL.js.map +1 -1
- package/dist/PublishParser/PublishParser.d.ts.map +1 -1
- package/dist/PublishParser/PublishParser.js +1 -1
- package/dist/PublishParser/PublishParser.js.map +1 -1
- package/dist/PublishParser/getSchemaFromPublish.d.ts.map +1 -1
- package/dist/PublishParser/getSchemaFromPublish.js +0 -1
- package/dist/PublishParser/getSchemaFromPublish.js.map +1 -1
- package/dist/RestApi.d.ts.map +1 -1
- package/dist/RestApi.js +5 -1
- package/dist/RestApi.js.map +1 -1
- package/dist/WebsocketAPI/getClientHandlers.d.ts.map +1 -1
- package/dist/WebsocketAPI/getClientHandlers.js +4 -3
- package/dist/WebsocketAPI/getClientHandlers.js.map +1 -1
- package/dist/WebsocketAPI/getClientSchema.d.ts.map +1 -1
- package/dist/WebsocketAPI/getClientSchema.js +2 -6
- package/dist/WebsocketAPI/getClientSchema.js.map +1 -1
- package/dist/WebsocketAPI/pushSocketSchema.d.ts.map +1 -1
- package/dist/WebsocketAPI/pushSocketSchema.js +2 -1
- package/dist/WebsocketAPI/pushSocketSchema.js.map +1 -1
- package/lib/Auth/utils/handleGetUser.ts +10 -6
- package/lib/DboBuilder/DboBuilder.ts +1 -0
- package/lib/DboBuilder/DboBuilderTypes.ts +2 -3
- package/lib/DboBuilder/QueryStreamer.ts +1 -0
- package/lib/DboBuilder/TableHandler/TableHandler.ts +1 -0
- package/lib/DboBuilder/TableHandler/delete.ts +1 -0
- package/lib/DboBuilder/TableHandler/insert/insert.ts +1 -0
- package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +2 -0
- package/lib/DboBuilder/TableHandler/update.ts +1 -0
- package/lib/DboBuilder/TableHandler/updateBatch.ts +7 -7
- package/lib/DboBuilder/TableHandler/upsert.ts +3 -2
- package/lib/DboBuilder/ViewHandler/ViewHandler.ts +1 -0
- package/lib/DboBuilder/ViewHandler/count.ts +3 -2
- package/lib/DboBuilder/ViewHandler/find.ts +3 -0
- package/lib/DboBuilder/ViewHandler/size.ts +5 -4
- package/lib/DboBuilder/ViewHandler/subscribe.ts +1 -0
- package/lib/DboBuilder/ViewRelatedTables/getViewRelatedTables.ts +1 -0
- package/lib/DboBuilder/dboBuilderUtils.ts +5 -8
- package/lib/DboBuilder/getColumns.ts +1 -0
- package/lib/DboBuilder/runSql/runSQL.ts +1 -0
- package/lib/PublishParser/PublishParser.ts +3 -1
- package/lib/PublishParser/getSchemaFromPublish.ts +0 -3
- package/lib/RestApi.ts +8 -4
- package/lib/WebsocketAPI/getClientHandlers.ts +4 -3
- package/lib/WebsocketAPI/getClientSchema.ts +2 -6
- package/lib/WebsocketAPI/pushSocketSchema.ts +4 -3
- package/package.json +1 -1
|
@@ -5,10 +5,11 @@ const prostgles_types_1 = require("prostgles-types");
|
|
|
5
5
|
const runClientRequest_1 = require("../runClientRequest");
|
|
6
6
|
const getClientSchema_1 = require("./getClientSchema");
|
|
7
7
|
const getClientHandlers = async (prostgles, clientReq, scope) => {
|
|
8
|
-
const clientSchema = clientReq.socket?.prostgles
|
|
8
|
+
const clientSchema = clientReq.socket?.prostgles?.get(prostgles.appId) ??
|
|
9
|
+
(await getClientSchema_1.getClientSchema.bind(prostgles)(clientReq, scope));
|
|
9
10
|
const sqlHandler = ((query, params, options) => runClientRequest_1.runClientSqlRequest.bind(prostgles)({ query, params, options }, clientReq));
|
|
10
11
|
const tableHandlers = Object.fromEntries(prostgles.dboBuilder.tablesOrViews.map((table) => {
|
|
11
|
-
const methods =
|
|
12
|
+
const methods = [...viewMethods, ...tableMethods];
|
|
12
13
|
const handlers = Object.fromEntries(methods.map((command) => {
|
|
13
14
|
const method = (param1, param2, param3) => runClientRequest_1.runClientRequest.bind(prostgles)({ command, tableName: table.name, param1, param2, param3 }, clientReq, scope);
|
|
14
15
|
return [command, method];
|
|
@@ -21,7 +22,7 @@ const getClientHandlers = async (prostgles, clientReq, scope) => {
|
|
|
21
22
|
},
|
|
22
23
|
};
|
|
23
24
|
const clientSql = ((query, params, options) => {
|
|
24
|
-
if (!scope
|
|
25
|
+
if (scope && !scope.allowSql) {
|
|
25
26
|
throw new Error("SQL is dissallowed by PermissionScope");
|
|
26
27
|
}
|
|
27
28
|
return sqlHandler(query, params, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getClientHandlers.js","sourceRoot":"","sources":["../../lib/WebsocketAPI/getClientHandlers.ts"],"names":[],"mappings":";;;AAAA,qDAQyB;AAIzB,0DAA6F;AAC7F,uDAAoD;AAU7C,MAAM,iBAAiB,GAAG,KAAK,EACpC,SAAoB,EACpB,SAA4B,EAC5B,KAAkC,EACT,EAAE;IAC3B,MAAM,YAAY,GAChB,SAAS,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"getClientHandlers.js","sourceRoot":"","sources":["../../lib/WebsocketAPI/getClientHandlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getClientSchema.d.ts","sourceRoot":"","sources":["../../lib/WebsocketAPI/getClientSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"getClientSchema.d.ts","sourceRoot":"","sources":["../../lib/WebsocketAPI/getClientSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,gCAAgC,CAAC;AAGrF,wBAAsB,eAAe,CACnC,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE,eAAe,GAAG,SAAS,yBAmGnC"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getClientSchema = getClientSchema;
|
|
4
4
|
const prostgles_types_1 = require("prostgles-types");
|
|
5
|
-
const runClientRequest_1 = require("../runClientRequest");
|
|
6
5
|
const package_json_1 = require("../../package.json");
|
|
6
|
+
const runClientRequest_1 = require("../runClientRequest");
|
|
7
7
|
async function getClientSchema(clientReq, scope) {
|
|
8
8
|
const result = await (0, prostgles_types_1.tryCatchV2)(async () => {
|
|
9
9
|
const clientInfo = clientReq.socket ?
|
|
@@ -30,11 +30,7 @@ async function getClientSchema(clientReq, scope) {
|
|
|
30
30
|
}
|
|
31
31
|
const { allowed: rawSQL } = await runClientRequest_1.clientCanRunSqlRequest.bind(this)(clientInfo);
|
|
32
32
|
const tablesWithSelectRules = new Set(fullSchema?.tables.filter((t) => t.publishInfo.select).map((t) => t.name) ?? []);
|
|
33
|
-
const { tables, tableSchemaErrors } = fullSchema ?? {
|
|
34
|
-
schema: {},
|
|
35
|
-
tables: [],
|
|
36
|
-
tableSchemaErrors: {},
|
|
37
|
-
};
|
|
33
|
+
const { tables = [], tableSchemaErrors = {} } = fullSchema ?? {};
|
|
38
34
|
const joinTables2 = [];
|
|
39
35
|
if (this.opts.joins) {
|
|
40
36
|
const _joinTables2 = this.dboBuilder
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getClientSchema.js","sourceRoot":"","sources":["../../lib/WebsocketAPI/getClientSchema.ts"],"names":[],"mappings":";;AAOA,
|
|
1
|
+
{"version":3,"file":"getClientSchema.js","sourceRoot":"","sources":["../../lib/WebsocketAPI/getClientSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pushSocketSchema.d.ts","sourceRoot":"","sources":["../../lib/WebsocketAPI/pushSocketSchema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"pushSocketSchema.d.ts","sourceRoot":"","sources":["../../lib/WebsocketAPI/pushSocketSchema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,iBAoC3E"}
|
|
@@ -7,7 +7,8 @@ const onSocketConnected_1 = require("./onSocketConnected");
|
|
|
7
7
|
async function pushSocketSchema(socket) {
|
|
8
8
|
try {
|
|
9
9
|
const clientSchema = await this.getClientSchema({ socket }, undefined);
|
|
10
|
-
socket.prostgles
|
|
10
|
+
socket.prostgles ??= new Map();
|
|
11
|
+
socket.prostgles.set(this.appId, clientSchema);
|
|
11
12
|
if (clientSchema.rawSQL) {
|
|
12
13
|
socket.removeAllListeners(prostgles_types_1.CHANNELS.SQL);
|
|
13
14
|
socket.on(prostgles_types_1.CHANNELS.SQL, (sqlRequestData, cb = (..._callback) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pushSocketSchema.js","sourceRoot":"","sources":["../../lib/WebsocketAPI/pushSocketSchema.ts"],"names":[],"mappings":";;AAKA,
|
|
1
|
+
{"version":3,"file":"pushSocketSchema.js","sourceRoot":"","sources":["../../lib/WebsocketAPI/pushSocketSchema.ts"],"names":[],"mappings":";;AAKA,4CAoCC;AAzCD,qDAAkF;AAGlF,0DAA0D;AAC1D,2DAAsD;AAC/C,KAAK,UAAU,gBAAgB,CAAkB,MAAoB;IAC1E,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC;QACvE,MAAM,CAAC,SAAS,KAAK,IAAI,GAAG,EAAE,CAAC;QAC/B,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC/C,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,CAAC,kBAAkB,CAAC,0BAAQ,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,CAAC,EAAE,CACP,0BAAQ,CAAC,GAAG,EACZ,CACE,cAA0B,EAC1B,KAAK,CAAC,GAAG,SAAc,EAAE,EAAE;gBACzB,WAAW;YACb,CAAC,EACD,EAAE;gBACF,sCAAmB;qBAChB,IAAI,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC;qBACtC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;oBACZ,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAChB,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACb,IAAA,mCAAe,EAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC3B,CAAC,CAAC,CAAC;YACP,CAAC,CACF,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3C,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,kBAAkB;YAC3B,QAAQ,EAAE,CAAC,CAAC;YACZ,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE;SAC5C,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,0BAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,0BAAQ,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAA,sCAAoB,EAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;AACH,CAAC"}
|
|
@@ -14,13 +14,15 @@ export type GetUserOrRedirected = AuthResultWithSID | "new-session-redirect";
|
|
|
14
14
|
*/
|
|
15
15
|
export async function handleGetUserThrottled(
|
|
16
16
|
this: AuthHandler,
|
|
17
|
-
clientReq: AuthClientRequest
|
|
17
|
+
clientReq: AuthClientRequest,
|
|
18
18
|
): Promise<GetUserOrRedirected> {
|
|
19
19
|
const getSessionForCaching = this.opts.cacheSession?.getSession;
|
|
20
20
|
|
|
21
21
|
/** Get cached session if available */
|
|
22
22
|
const __prglCache =
|
|
23
|
-
!this.opts.cacheSession ?
|
|
23
|
+
!this.opts.cacheSession ?
|
|
24
|
+
undefined
|
|
25
|
+
: (clientReq.httpReq ?? clientReq.socket).__prglCache?.get(this.prostgles.appId);
|
|
24
26
|
if (clientReq.socket && __prglCache) {
|
|
25
27
|
const { userData, session } = __prglCache;
|
|
26
28
|
const isValid = this.isNonExpiredSocketSession(clientReq.socket, session);
|
|
@@ -47,7 +49,7 @@ export async function handleGetUserThrottled(
|
|
|
47
49
|
dbo,
|
|
48
50
|
db,
|
|
49
51
|
getClientRequestIPsInfo(clientReq),
|
|
50
|
-
clientReq
|
|
52
|
+
clientReq,
|
|
51
53
|
);
|
|
52
54
|
if (isAuthError(clientInfoOrErr)) {
|
|
53
55
|
return {
|
|
@@ -81,9 +83,11 @@ export async function handleGetUserThrottled(
|
|
|
81
83
|
session,
|
|
82
84
|
};
|
|
83
85
|
if (clientReq.socket) {
|
|
84
|
-
clientReq.socket.__prglCache
|
|
86
|
+
clientReq.socket.__prglCache ??= new Map();
|
|
87
|
+
clientReq.socket.__prglCache.set(this.prostgles.appId, __prglCache);
|
|
85
88
|
} else {
|
|
86
|
-
clientReq.httpReq.__prglCache
|
|
89
|
+
clientReq.httpReq.__prglCache ??= new Map();
|
|
90
|
+
clientReq.httpReq.__prglCache.set(this.prostgles.appId, __prglCache);
|
|
87
91
|
}
|
|
88
92
|
}
|
|
89
93
|
}
|
|
@@ -98,7 +102,7 @@ export async function handleGetUserThrottled(
|
|
|
98
102
|
}
|
|
99
103
|
|
|
100
104
|
export const isAuthError = (
|
|
101
|
-
dataOrError: AuthResultOrError
|
|
105
|
+
dataOrError: AuthResultOrError,
|
|
102
106
|
): dataOrError is AuthResponse.AuthFailure["code"] | AuthResponse.AuthFailure => {
|
|
103
107
|
return Boolean(typeof dataOrError === "string" || (dataOrError && "success" in dataOrError));
|
|
104
108
|
};
|
|
@@ -16,7 +16,6 @@ import type {
|
|
|
16
16
|
DeleteRule,
|
|
17
17
|
InsertRule,
|
|
18
18
|
PermissionScope,
|
|
19
|
-
PublishAllOrNothing,
|
|
20
19
|
SelectRule,
|
|
21
20
|
UpdateRule,
|
|
22
21
|
} from "../PublishParser/PublishParser";
|
|
@@ -157,7 +156,7 @@ export type CachedSessionData = {
|
|
|
157
156
|
};
|
|
158
157
|
|
|
159
158
|
export type CachedSession = {
|
|
160
|
-
__prglCache?: CachedSessionData
|
|
159
|
+
__prglCache?: Map<string, CachedSessionData>;
|
|
161
160
|
};
|
|
162
161
|
|
|
163
162
|
export type PRGLIOSocket = {
|
|
@@ -191,7 +190,7 @@ export type PRGLIOSocket = {
|
|
|
191
190
|
_user?: AnyObject;
|
|
192
191
|
|
|
193
192
|
/** Used for publish error caching */
|
|
194
|
-
prostgles?: ClientSchema
|
|
193
|
+
prostgles?: Map<string, ClientSchema>;
|
|
195
194
|
} & CachedSession;
|
|
196
195
|
|
|
197
196
|
export type LocalParams = {
|
|
@@ -107,6 +107,7 @@ export class QueryStreamer {
|
|
|
107
107
|
const errorWithoutQuery = getSerializedClientErrorFromPGError(rawError, {
|
|
108
108
|
type: "sql",
|
|
109
109
|
localParams: { clientReq: { socket } },
|
|
110
|
+
prostgles: this.dboBuilder.prostgles,
|
|
110
111
|
});
|
|
111
112
|
// For some reason query is not present on the error object from sql stream mode
|
|
112
113
|
const error = { ...errorWithoutQuery, query: query.query };
|
|
@@ -117,6 +117,7 @@ export const runInsertUpdateQuery = async (args: RunInsertUpdateQueryArgs) => {
|
|
|
117
117
|
localParams,
|
|
118
118
|
view: tableHandler,
|
|
119
119
|
allowedKeys: allowedFieldKeys,
|
|
120
|
+
prostgles: tableHandler.dboBuilder.prostgles,
|
|
120
121
|
}),
|
|
121
122
|
);
|
|
122
123
|
} else {
|
|
@@ -128,6 +129,7 @@ export const runInsertUpdateQuery = async (args: RunInsertUpdateQueryArgs) => {
|
|
|
128
129
|
localParams,
|
|
129
130
|
view: tableHandler,
|
|
130
131
|
allowedKeys: allowedFieldKeys,
|
|
132
|
+
prostgles: tableHandler.dboBuilder.prostgles,
|
|
131
133
|
}),
|
|
132
134
|
);
|
|
133
135
|
}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import type { AnyObject, UpdateParams } from "prostgles-types";
|
|
2
2
|
import type { ParsedTableRule } from "../../PublishParser/PublishParser";
|
|
3
|
-
import type {
|
|
4
|
-
Filter,
|
|
5
|
-
LocalParams} from "../DboBuilder";
|
|
3
|
+
import type { Filter, LocalParams } from "../DboBuilder";
|
|
6
4
|
import {
|
|
7
5
|
getClientErrorFromPGError,
|
|
8
6
|
getErrorAsObject,
|
|
@@ -17,7 +15,7 @@ export async function updateBatch(
|
|
|
17
15
|
params?: UpdateParams,
|
|
18
16
|
_?: undefined,
|
|
19
17
|
tableRules?: ParsedTableRule,
|
|
20
|
-
localParams?: LocalParams
|
|
18
|
+
localParams?: LocalParams,
|
|
21
19
|
): Promise<any> {
|
|
22
20
|
const start = Date.now();
|
|
23
21
|
try {
|
|
@@ -32,11 +30,11 @@ export async function updateBatch(
|
|
|
32
30
|
data,
|
|
33
31
|
{ ...(params ?? {}), returning: undefined },
|
|
34
32
|
tableRules,
|
|
35
|
-
{ ...(localParams ?? {}), returnQuery: "noRLS" }
|
|
33
|
+
{ ...(localParams ?? {}), returnQuery: "noRLS" },
|
|
36
34
|
)) as unknown as string;
|
|
37
35
|
|
|
38
36
|
return query;
|
|
39
|
-
})
|
|
37
|
+
}),
|
|
40
38
|
);
|
|
41
39
|
const queries = [withUserRLS(localParams, ""), ...updateQueries];
|
|
42
40
|
|
|
@@ -61,7 +59,8 @@ export async function updateBatch(
|
|
|
61
59
|
localParams,
|
|
62
60
|
view: this,
|
|
63
61
|
allowedKeys: [],
|
|
64
|
-
|
|
62
|
+
prostgles: this.dboBuilder.prostgles,
|
|
63
|
+
}),
|
|
65
64
|
);
|
|
66
65
|
|
|
67
66
|
await this._log({
|
|
@@ -83,6 +82,7 @@ export async function updateBatch(
|
|
|
83
82
|
type: "tableMethod",
|
|
84
83
|
localParams,
|
|
85
84
|
view: this,
|
|
85
|
+
prostgles: this.dboBuilder.prostgles,
|
|
86
86
|
});
|
|
87
87
|
}
|
|
88
88
|
}
|
|
@@ -10,7 +10,7 @@ export const upsert = async function (
|
|
|
10
10
|
newData: AnyObject,
|
|
11
11
|
params?: UpdateParams,
|
|
12
12
|
table_rules?: ParsedTableRule,
|
|
13
|
-
localParams?: LocalParams
|
|
13
|
+
localParams?: LocalParams,
|
|
14
14
|
): Promise<any> {
|
|
15
15
|
const start = Date.now();
|
|
16
16
|
try {
|
|
@@ -26,7 +26,7 @@ export const upsert = async function (
|
|
|
26
26
|
params,
|
|
27
27
|
undefined,
|
|
28
28
|
table_rules,
|
|
29
|
-
localParams
|
|
29
|
+
localParams,
|
|
30
30
|
);
|
|
31
31
|
}
|
|
32
32
|
});
|
|
@@ -56,6 +56,7 @@ export const upsert = async function (
|
|
|
56
56
|
type: "tableMethod",
|
|
57
57
|
localParams,
|
|
58
58
|
view: this,
|
|
59
|
+
prostgles: this.dboBuilder.prostgles,
|
|
59
60
|
});
|
|
60
61
|
}
|
|
61
62
|
};
|
|
@@ -14,7 +14,7 @@ export async function count(
|
|
|
14
14
|
selectParams?: SelectParams,
|
|
15
15
|
_param3_unused?: undefined,
|
|
16
16
|
table_rules?: ParsedTableRule,
|
|
17
|
-
localParams?: LocalParams
|
|
17
|
+
localParams?: LocalParams,
|
|
18
18
|
): Promise<number> {
|
|
19
19
|
const filter = _filter || {};
|
|
20
20
|
const { limit: _limit, ...selectParamsWithoutLimit } = selectParams ?? {};
|
|
@@ -25,7 +25,7 @@ export async function count(
|
|
|
25
25
|
{ select: selectParamsWithoutLimit.select ?? "", limit: 0 },
|
|
26
26
|
undefined,
|
|
27
27
|
table_rules,
|
|
28
|
-
localParams
|
|
28
|
+
localParams,
|
|
29
29
|
).then(async (_allowed) => {
|
|
30
30
|
const findQuery = (await this.find(filter, selectParamsWithoutLimit, undefined, table_rules, {
|
|
31
31
|
...localParams,
|
|
@@ -62,6 +62,7 @@ export async function count(
|
|
|
62
62
|
type: "tableMethod",
|
|
63
63
|
localParams,
|
|
64
64
|
view: this,
|
|
65
|
+
prostgles: this.dboBuilder.prostgles,
|
|
65
66
|
});
|
|
66
67
|
}
|
|
67
68
|
}
|
|
@@ -161,6 +161,7 @@ export const find = async function (
|
|
|
161
161
|
type: "tableMethod",
|
|
162
162
|
localParams,
|
|
163
163
|
view: this,
|
|
164
|
+
prostgles: this.dboBuilder.prostgles,
|
|
164
165
|
});
|
|
165
166
|
}
|
|
166
167
|
};
|
|
@@ -198,6 +199,7 @@ export const runQueryReturnType = async ({
|
|
|
198
199
|
type: "tableMethod",
|
|
199
200
|
localParams,
|
|
200
201
|
view: handler,
|
|
202
|
+
prostgles: handler.dboBuilder.prostgles,
|
|
201
203
|
}),
|
|
202
204
|
);
|
|
203
205
|
} else if (sqlTypes.some((v) => v === returnType)) {
|
|
@@ -223,6 +225,7 @@ export const runQueryReturnType = async ({
|
|
|
223
225
|
type: "tableMethod",
|
|
224
226
|
localParams,
|
|
225
227
|
view: handler,
|
|
228
|
+
prostgles: handler.dboBuilder.prostgles,
|
|
226
229
|
}),
|
|
227
230
|
);
|
|
228
231
|
}
|
|
@@ -13,7 +13,7 @@ export async function size(
|
|
|
13
13
|
selectParams?: SelectParams,
|
|
14
14
|
param3_unused?: undefined,
|
|
15
15
|
table_rules?: ParsedTableRule,
|
|
16
|
-
localParams?: LocalParams
|
|
16
|
+
localParams?: LocalParams,
|
|
17
17
|
): Promise<string> {
|
|
18
18
|
const filter = _filter || {};
|
|
19
19
|
const start = Date.now();
|
|
@@ -23,7 +23,7 @@ export async function size(
|
|
|
23
23
|
{ ...selectParams, limit: 2 },
|
|
24
24
|
undefined,
|
|
25
25
|
table_rules,
|
|
26
|
-
localParams
|
|
26
|
+
localParams,
|
|
27
27
|
).then(async (_allowed) => {
|
|
28
28
|
const q: string = (await this.find(
|
|
29
29
|
filter,
|
|
@@ -33,7 +33,7 @@ export async function size(
|
|
|
33
33
|
},
|
|
34
34
|
undefined,
|
|
35
35
|
table_rules,
|
|
36
|
-
{ ...localParams, returnQuery: "noRLS", bypassLimit: true }
|
|
36
|
+
{ ...localParams, returnQuery: "noRLS", bypassLimit: true },
|
|
37
37
|
)) as any;
|
|
38
38
|
const query = withUserRLS(
|
|
39
39
|
localParams,
|
|
@@ -42,7 +42,7 @@ export async function size(
|
|
|
42
42
|
FROM (
|
|
43
43
|
${q}
|
|
44
44
|
) prgl_size_query
|
|
45
|
-
|
|
45
|
+
`,
|
|
46
46
|
);
|
|
47
47
|
|
|
48
48
|
return (this.tx?.t || this.db).one(query).then(({ size }) => size || "0");
|
|
@@ -66,6 +66,7 @@ export async function size(
|
|
|
66
66
|
type: "tableMethod",
|
|
67
67
|
localParams,
|
|
68
68
|
view: this,
|
|
69
|
+
prostgles: this.dboBuilder.prostgles,
|
|
69
70
|
});
|
|
70
71
|
}
|
|
71
72
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AnyObject } from "prostgles-types";
|
|
2
2
|
import { getSerialisableError, isObject, omitKeys, pickKeys } from "prostgles-types";
|
|
3
|
-
import type { DB } from "../Prostgles";
|
|
3
|
+
import type { DB, Prostgles } from "../Prostgles";
|
|
4
4
|
import { asNameAlias } from "../utils/asNameAlias";
|
|
5
5
|
import type { LocalParams, SortItem } from "./DboBuilderTypes";
|
|
6
6
|
import { pgp } from "./DboBuilderTypes";
|
|
@@ -19,20 +19,17 @@ export const getErrorAsObject = (rawError: any) => {
|
|
|
19
19
|
return { message: serializedError };
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
-
const circularError = new Error("Circular error data");
|
|
23
|
-
//@ts-ignore
|
|
24
|
-
circularError.someProp = circularError;
|
|
25
|
-
getErrorAsObject(circularError);
|
|
26
|
-
|
|
27
22
|
type GetSerializedClientErrorFromPGErrorArgs =
|
|
28
23
|
| {
|
|
29
24
|
type: "sql";
|
|
30
25
|
localParams: LocalParams | undefined;
|
|
26
|
+
prostgles: Prostgles;
|
|
31
27
|
}
|
|
32
28
|
| {
|
|
33
29
|
type: "tableMethod";
|
|
34
30
|
localParams: LocalParams | undefined;
|
|
35
31
|
view: ViewHandler | Partial<TableHandler> | undefined;
|
|
32
|
+
prostgles: Prostgles;
|
|
36
33
|
allowedKeys?: string[];
|
|
37
34
|
}
|
|
38
35
|
| {
|
|
@@ -40,9 +37,9 @@ type GetSerializedClientErrorFromPGErrorArgs =
|
|
|
40
37
|
localParams: LocalParams | undefined;
|
|
41
38
|
allowedKeys?: string[];
|
|
42
39
|
view?: undefined;
|
|
40
|
+
prostgles: Prostgles;
|
|
43
41
|
};
|
|
44
42
|
|
|
45
|
-
const sensitiveErrorKeys = ["hint", "detail", "context"] as const;
|
|
46
43
|
const otherKeys = [
|
|
47
44
|
"column",
|
|
48
45
|
"code",
|
|
@@ -71,7 +68,7 @@ export function getSerializedClientErrorFromPGError(
|
|
|
71
68
|
const showFullError =
|
|
72
69
|
isServerSideRequest ||
|
|
73
70
|
args.type === "sql" ||
|
|
74
|
-
args.localParams?.clientReq?.socket?.prostgles?.rawSQL;
|
|
71
|
+
args.localParams?.clientReq?.socket?.prostgles?.get(args.prostgles.appId)?.rawSQL;
|
|
75
72
|
if (showFullError) {
|
|
76
73
|
return err;
|
|
77
74
|
}
|
|
@@ -7,6 +7,7 @@ import type { DB, Prostgles } from "../../Prostgles";
|
|
|
7
7
|
import type { DboBuilder, LocalParams } from "../DboBuilder";
|
|
8
8
|
import { pgp } from "../DboBuilder";
|
|
9
9
|
import { getDbTypes, getDetailedFieldInfo } from "./runSqlUtils";
|
|
10
|
+
|
|
10
11
|
export async function runSQL(
|
|
11
12
|
this: DboBuilder,
|
|
12
13
|
queryWithoutRLS: string,
|
|
@@ -136,7 +136,9 @@ export class PublishParser {
|
|
|
136
136
|
/* Must be from socket. Must have a publish */
|
|
137
137
|
if (!this.publish) throw "publish is missing";
|
|
138
138
|
|
|
139
|
-
const tableErrors = clientReq.socket?.prostgles?.tableSchemaErrors[
|
|
139
|
+
const tableErrors = clientReq.socket?.prostgles?.get(this.prostgles.appId)?.tableSchemaErrors[
|
|
140
|
+
tableName
|
|
141
|
+
];
|
|
140
142
|
/* Get any publish errors for socket */
|
|
141
143
|
Object.values(tableErrors ?? {}).forEach((errorInfo) => {
|
|
142
144
|
throw errorInfo.error;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { DBSchemaTable, TableSchemaErrors } from "prostgles-types";
|
|
2
2
|
import { isEmpty, isObject } from "prostgles-types";
|
|
3
3
|
import type { AuthClientRequest, AuthResultWithSID } from "../Auth/AuthTypes";
|
|
4
|
-
import type { TableHandler } from "../DboBuilder/TableHandler/TableHandler";
|
|
5
4
|
import type { PublishParser } from "./PublishParser";
|
|
6
5
|
import { type PermissionScope, type PublishObject } from "./PublishParser";
|
|
7
6
|
import { getDBSchemaTable } from "./getDBSchemaTable";
|
|
@@ -9,8 +8,6 @@ import { getDBSchemaTable } from "./getDBSchemaTable";
|
|
|
9
8
|
type Args = AuthClientRequest & {
|
|
10
9
|
userData: AuthResultWithSID | undefined;
|
|
11
10
|
};
|
|
12
|
-
const SUBSCRIBE_METHODS = ["subscribe", "subscribeOne", "sync", "unsubscribe", "unsync"] as const;
|
|
13
|
-
|
|
14
11
|
export async function getSchemaFromPublish(
|
|
15
12
|
this: PublishParser,
|
|
16
13
|
{ userData, ...clientReq }: Args,
|
package/lib/RestApi.ts
CHANGED
|
@@ -92,13 +92,14 @@ export class RestApi {
|
|
|
92
92
|
{
|
|
93
93
|
res,
|
|
94
94
|
httpReq: req,
|
|
95
|
-
}
|
|
95
|
+
},
|
|
96
96
|
);
|
|
97
97
|
res.json(data);
|
|
98
98
|
} catch (rawError) {
|
|
99
99
|
const error = getSerializedClientErrorFromPGError(rawError, {
|
|
100
100
|
type: "method",
|
|
101
101
|
localParams: { clientReq: { httpReq: req, res } },
|
|
102
|
+
prostgles: this.prostgles,
|
|
102
103
|
});
|
|
103
104
|
res.status(400).json({ error });
|
|
104
105
|
}
|
|
@@ -111,6 +112,7 @@ export class RestApi {
|
|
|
111
112
|
const error = getSerializedClientErrorFromPGError(rawError, {
|
|
112
113
|
type: "method",
|
|
113
114
|
localParams: { clientReq: { httpReq: req, res } },
|
|
115
|
+
prostgles: this.prostgles,
|
|
114
116
|
});
|
|
115
117
|
res.status(400).json({ error });
|
|
116
118
|
}
|
|
@@ -127,13 +129,14 @@ export class RestApi {
|
|
|
127
129
|
{
|
|
128
130
|
res,
|
|
129
131
|
httpReq: req,
|
|
130
|
-
}
|
|
132
|
+
},
|
|
131
133
|
);
|
|
132
134
|
res.json(data);
|
|
133
135
|
} catch (rawError) {
|
|
134
136
|
const error = getSerializedClientErrorFromPGError(rawError, {
|
|
135
137
|
type: "sql",
|
|
136
138
|
localParams: { clientReq: { httpReq: req, res } },
|
|
139
|
+
prostgles: this.prostgles,
|
|
137
140
|
});
|
|
138
141
|
res.status(400).json({ error });
|
|
139
142
|
}
|
|
@@ -165,14 +168,15 @@ export class RestApi {
|
|
|
165
168
|
httpReq: req,
|
|
166
169
|
res,
|
|
167
170
|
},
|
|
168
|
-
undefined
|
|
171
|
+
undefined,
|
|
169
172
|
);
|
|
170
173
|
res.json(data);
|
|
171
174
|
} catch (rawError) {
|
|
172
175
|
const error = getSerializedClientErrorFromPGError(rawError, {
|
|
173
176
|
type: "tableMethod",
|
|
174
177
|
localParams: { clientReq: { httpReq: req, res } },
|
|
175
|
-
view: this.prostgles.dboBuilder.
|
|
178
|
+
view: this.prostgles.dboBuilder.dboMap.get(tableName),
|
|
179
|
+
prostgles: this.prostgles,
|
|
176
180
|
});
|
|
177
181
|
res.status(400).json({ error });
|
|
178
182
|
}
|
|
@@ -27,7 +27,8 @@ export const getClientHandlers = async <S = void>(
|
|
|
27
27
|
scope: PermissionScope | undefined,
|
|
28
28
|
): Promise<ClientHandlers> => {
|
|
29
29
|
const clientSchema =
|
|
30
|
-
clientReq.socket?.prostgles
|
|
30
|
+
clientReq.socket?.prostgles?.get(prostgles.appId) ??
|
|
31
|
+
(await getClientSchema.bind(prostgles)(clientReq, scope));
|
|
31
32
|
const sqlHandler: SQLHandler | undefined = ((
|
|
32
33
|
query: string,
|
|
33
34
|
params?: unknown,
|
|
@@ -35,7 +36,7 @@ export const getClientHandlers = async <S = void>(
|
|
|
35
36
|
) => runClientSqlRequest.bind(prostgles)({ query, params, options }, clientReq)) as SQLHandler;
|
|
36
37
|
const tableHandlers = Object.fromEntries(
|
|
37
38
|
prostgles.dboBuilder.tablesOrViews!.map((table) => {
|
|
38
|
-
const methods =
|
|
39
|
+
const methods = [...viewMethods, ...tableMethods];
|
|
39
40
|
const handlers = Object.fromEntries(
|
|
40
41
|
methods.map((command) => {
|
|
41
42
|
const method = (param1: unknown, param2: unknown, param3: unknown) =>
|
|
@@ -57,7 +58,7 @@ export const getClientHandlers = async <S = void>(
|
|
|
57
58
|
},
|
|
58
59
|
};
|
|
59
60
|
const clientSql = ((query: string, params?: AnyObject, options?: SQLOptions) => {
|
|
60
|
-
if (!scope
|
|
61
|
+
if (scope && !scope.allowSql) {
|
|
61
62
|
throw new Error("SQL is dissallowed by PermissionScope");
|
|
62
63
|
}
|
|
63
64
|
|