prostgles-server 4.2.642 → 4.2.644
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/debug/caught-request-fix-build.log +4 -0
- package/debug/caught-request-fix-test-build.log +0 -0
- package/debug/caught-request-subscription-failure.log +603 -0
- package/debug/caught-validation-build.log +4 -0
- package/debug/caught-validation-fix-build.log +4 -0
- package/debug/caught-validation-fix-test-build.log +0 -0
- package/debug/caught-validation-test-build.log +0 -0
- package/debug/client-db-tx-build.log +4 -0
- package/debug/client-db-tx-test-server.log +3248 -0
- package/debug/client-db-tx-tests-build.log +0 -0
- package/debug/client-handler-shape-build.log +4 -0
- package/debug/client-handler-shape-test-server.log +544 -0
- package/debug/client-handler-shape-tests-build.log +0 -0
- package/debug/column-definitions-test-server.log +152 -164
- package/debug/fixes-review-build.log +4 -0
- package/debug/fixes-review-client-schema.backup +745 -0
- package/debug/fixes-review-generated-schema.backup +489 -0
- package/debug/fixes-review-probes-build.log +0 -0
- package/debug/fixes-review-probes.patch +43 -0
- package/debug/fixes-review-restore-build.log +0 -0
- package/debug/fixes-review-tests-build.log +0 -0
- package/debug/fixes-review-typecheck.log +8 -0
- package/debug/function-client-db-tx-build.log +4 -0
- package/debug/function-client-db-tx-tests-build.log +0 -0
- package/debug/review-current-fixes-build.log +4 -0
- package/debug/review-current-fixes-client.backup +745 -0
- package/debug/review-current-fixes-probes-build.log +0 -0
- package/debug/review-current-fixes-probes.patch +55 -0
- package/debug/review-current-fixes-restore-build.log +0 -0
- package/debug/review-current-fixes-rls.backup +478 -0
- package/debug/review-current-fixes-schema.backup +489 -0
- package/debug/review-current-fixes-test-build.log +0 -0
- package/debug/review-current-fixes-typecheck.log +8 -0
- package/debug/review-user-identity-build.log +4 -0
- package/debug/review-user-identity-probes-build.log +0 -0
- package/debug/review-user-identity-probes.log +558 -0
- package/debug/review-user-identity-probes.patch +45 -0
- package/debug/review-user-identity-restore-build.log +0 -0
- package/debug/review-user-identity-rls.backup +463 -0
- package/debug/review-user-identity-schema.backup +720 -0
- package/debug/review-user-identity-server.log +3248 -0
- package/debug/review-user-identity-test-build.log +0 -0
- package/debug/review-user-identity-typecheck.log +8 -0
- package/debug/schema-types-focused-strict-check.log +0 -0
- package/debug/schema-types-strict-check.log +38 -0
- package/debug/schema-types-tests-build.log +0 -0
- package/debug/security-review-baseline-tests.log +3250 -0
- package/debug/security-review-build.log +4 -0
- package/debug/security-review-checkfilter-repro.log +545 -0
- package/debug/security-review-clientSchemaTypes.spec.ts.backup +553 -0
- package/debug/security-review-repro-build.log +0 -0
- package/debug/security-review-repro.spec.ts +591 -0
- package/debug/security-review-restore-build.log +0 -0
- package/debug/security-review-server-tests.log +3254 -0
- package/debug/security-review-test-build.log +0 -0
- package/debug/server-user-lint.log +4 -0
- package/debug/server-user-test-server.log +538 -0
- package/debug/server-user-typecheck.log +8 -0
- package/debug/test-check-eslint.log +6 -0
- package/debug/test-check-lint-baseline.json +1 -0
- package/debug/test-check-npm-test.log +789 -0
- package/debug/test-check-types.log +8 -0
- package/debug/test-config-npm-test.log +223 -0
- package/debug/test-config-strict-null-check.log +50 -0
- package/debug/test-config-typecheck.log +8 -0
- package/debug/tryRunP-test-quick.log +78 -0
- package/debug/tryRunP-typecheck.log +42 -0
- package/debug/user-identity-direct-call-build.log +0 -0
- package/debug/user-identity-direct-call-schema.backup +489 -0
- package/debug/user-identity-regressions-build.log +4 -0
- package/debug/user-identity-regressions-generated-schema.backup +489 -0
- package/debug/user-identity-regressions-test-build.log +0 -0
- package/dist/Auth/AuthHandler.js +1 -1
- package/dist/Auth/AuthHandler.js.map +1 -1
- package/dist/Auth/AuthTypes.d.ts +11 -9
- package/dist/Auth/AuthTypes.d.ts.map +1 -1
- package/dist/Auth/AuthTypes.js.map +1 -1
- package/dist/Auth/utils/getClientRequestIPsInfo.d.ts +2 -1
- package/dist/Auth/utils/getClientRequestIPsInfo.d.ts.map +1 -1
- package/dist/Auth/utils/getClientRequestIPsInfo.js +8 -1
- package/dist/Auth/utils/getClientRequestIPsInfo.js.map +1 -1
- package/dist/Auth/utils/getSessionUser.d.ts +4 -3
- package/dist/Auth/utils/getSessionUser.d.ts.map +1 -1
- package/dist/Auth/utils/getSessionUser.js +4 -2
- package/dist/Auth/utils/getSessionUser.js.map +1 -1
- package/dist/Auth/utils/getSessionUser.spec.js +2 -4
- package/dist/Auth/utils/getSessionUser.spec.js.map +1 -1
- package/dist/Auth/utils/handleGetUser.d.ts.map +1 -1
- package/dist/Auth/utils/handleGetUser.js +16 -0
- package/dist/Auth/utils/handleGetUser.js.map +1 -1
- package/dist/Auth/utils/serverSideRequest.d.ts +17 -0
- package/dist/Auth/utils/serverSideRequest.d.ts.map +1 -0
- package/dist/Auth/utils/serverSideRequest.js +20 -0
- package/dist/Auth/utils/serverSideRequest.js.map +1 -0
- package/dist/DboBuilder/DboBuilder.d.ts.map +1 -1
- package/dist/DboBuilder/DboBuilder.js +4 -2
- package/dist/DboBuilder/DboBuilder.js.map +1 -1
- package/dist/DboBuilder/TableHandler/TableHandler.d.ts +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts +0 -4
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.js +5 -8
- 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 +2 -1
- 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 +2 -1
- package/dist/DboBuilder/ViewHandler/find.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/getDbHandlerWithAbort.d.ts +9 -2
- package/dist/DboBuilder/ViewHandler/getDbHandlerWithAbort.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/getDbHandlerWithAbort.js +57 -23
- package/dist/DboBuilder/ViewHandler/getDbHandlerWithAbort.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/size.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/size.js +2 -1
- package/dist/DboBuilder/ViewHandler/size.js.map +1 -1
- package/dist/DboBuilder/dboBuilderUtils.d.ts +1 -0
- package/dist/DboBuilder/dboBuilderUtils.d.ts.map +1 -1
- package/dist/DboBuilder/dboBuilderUtils.js +2 -1
- package/dist/DboBuilder/dboBuilderUtils.js.map +1 -1
- package/dist/PublishParser/PublishParser.d.ts.map +1 -1
- package/dist/PublishParser/PublishParser.js +2 -1
- package/dist/PublishParser/PublishParser.js.map +1 -1
- package/dist/PublishParser/defineServerFunction.d.ts +2 -0
- package/dist/PublishParser/defineServerFunction.d.ts.map +1 -1
- package/dist/PublishParser/defineServerFunction.js.map +1 -1
- package/dist/PublishParser/getPublishedTableNames.d.ts.map +1 -1
- package/dist/PublishParser/getPublishedTableNames.js +2 -1
- package/dist/PublishParser/getPublishedTableNames.js.map +1 -1
- package/dist/PublishParser/publishTypesAndUtils.d.ts +1 -1
- package/dist/PublishParser/publishTypesAndUtils.d.ts.map +1 -1
- package/dist/StorageClient/StorageClientTypes.d.ts +5 -4
- package/dist/StorageClient/StorageClientTypes.d.ts.map +1 -1
- package/dist/WebsocketAPI/getClientHandlers.d.ts +5 -0
- package/dist/WebsocketAPI/getClientHandlers.d.ts.map +1 -1
- package/dist/WebsocketAPI/getClientHandlers.js +33 -14
- package/dist/WebsocketAPI/getClientHandlers.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/initProstgles.d.ts +12 -2
- package/dist/initProstgles.d.ts.map +1 -1
- package/dist/initProstgles.js +10 -1
- package/dist/initProstgles.js.map +1 -1
- package/dist/runClientRequest.d.ts +2 -1
- package/dist/runClientRequest.d.ts.map +1 -1
- package/dist/runClientRequest.js +7 -4
- package/dist/runClientRequest.js.map +1 -1
- package/eslint.config.mjs +21 -1
- package/lib/Auth/AuthHandler.ts +1 -1
- package/lib/Auth/AuthTypes.ts +12 -8
- package/lib/Auth/utils/getClientRequestIPsInfo.ts +11 -2
- package/lib/Auth/utils/getSessionUser.spec.ts +4 -6
- package/lib/Auth/utils/getSessionUser.ts +8 -5
- package/lib/Auth/utils/handleGetUser.ts +13 -0
- package/lib/Auth/utils/serverSideRequest.ts +27 -0
- package/lib/DboBuilder/DboBuilder.ts +7 -2
- package/lib/DboBuilder/ViewHandler/ViewHandler.ts +11 -11
- package/lib/DboBuilder/ViewHandler/count.ts +2 -1
- package/lib/DboBuilder/ViewHandler/find.ts +2 -1
- package/lib/DboBuilder/ViewHandler/getDbHandlerWithAbort.ts +72 -29
- package/lib/DboBuilder/ViewHandler/size.ts +2 -1
- package/lib/DboBuilder/dboBuilderUtils.ts +2 -0
- package/lib/PublishParser/PublishParser.ts +2 -1
- package/lib/PublishParser/defineServerFunction.ts +3 -5
- package/lib/PublishParser/getPublishedTableNames.ts +2 -1
- package/lib/PublishParser/publishTypesAndUtils.ts +1 -1
- package/lib/StorageClient/StorageClientTypes.ts +5 -4
- package/lib/WebsocketAPI/getClientHandlers.ts +63 -29
- package/lib/index.ts +3 -3
- package/lib/initProstgles.ts +31 -5
- package/lib/runClientRequest.ts +10 -3
- package/package.json +5 -3
|
@@ -6,31 +6,50 @@ const runClientRequest_1 = require("../runClientRequest");
|
|
|
6
6
|
const getClientSchema_1 = require("./getClientSchema");
|
|
7
7
|
const getClientHandlers = async (prostgles, clientReq, scope) => {
|
|
8
8
|
prostgles.checkNotDestroyed();
|
|
9
|
-
const clientSchema = clientReq.socket?.prostgles?.get(prostgles.appId) ??
|
|
9
|
+
const clientSchema = (scope ? undefined : clientReq.socket?.prostgles?.get(prostgles.appId)) ??
|
|
10
10
|
(await getClientSchema_1.getClientSchema.bind(prostgles)(clientReq, scope));
|
|
11
11
|
const sqlHandler = ((query, params, options) => runClientRequest_1.runClientSqlRequest.bind(prostgles)({ query, params, options }, clientReq));
|
|
12
|
-
const
|
|
13
|
-
const
|
|
12
|
+
const getTableHandlers = (transactionHandlers, onRequestError) => Object.fromEntries(clientSchema.tableSchema.map((table) => {
|
|
13
|
+
const allowedMethods = (0, prostgles_types_1.getAllowedTableMethods)(table);
|
|
14
|
+
const methods = tableMethods.filter((command) => allowedMethods.includes(command));
|
|
14
15
|
const handlers = Object.fromEntries(methods.map((command) => {
|
|
15
|
-
const method = (param1, param2, param3) => runClientRequest_1.runClientRequest
|
|
16
|
+
const method = (param1, param2, param3) => runClientRequest_1.runClientRequest
|
|
17
|
+
.bind(prostgles)({ command, tableName: table.name, param1, param2, param3 }, clientReq, scope, transactionHandlers)
|
|
18
|
+
.catch((error) => {
|
|
19
|
+
onRequestError?.(error);
|
|
20
|
+
throw error;
|
|
21
|
+
});
|
|
16
22
|
return [command, method];
|
|
17
23
|
}));
|
|
18
24
|
return [table.name, handlers];
|
|
19
25
|
}));
|
|
20
|
-
const txNotAllowed = {
|
|
21
|
-
tx: () => {
|
|
22
|
-
throw new Error("Transactions are not allowed in client handlers");
|
|
23
|
-
},
|
|
24
|
-
};
|
|
25
26
|
const clientSql = ((query, params, options) => {
|
|
26
27
|
if (scope && !scope.allowSql) {
|
|
27
|
-
throw new Error("SQL is
|
|
28
|
+
throw new Error("SQL is disallowed by PermissionScope");
|
|
28
29
|
}
|
|
29
30
|
return sqlHandler(query, params, options);
|
|
30
31
|
});
|
|
31
|
-
const clientDb =
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
const clientDb = getTableHandlers();
|
|
33
|
+
const withClientDbTx = async (callback) => {
|
|
34
|
+
prostgles.checkNotDestroyed();
|
|
35
|
+
if (!prostgles.opts.transactions) {
|
|
36
|
+
throw new Error("Transactions are not enabled");
|
|
37
|
+
}
|
|
38
|
+
return prostgles.dboBuilder.getTX(async (transactionHandlers) => {
|
|
39
|
+
/**
|
|
40
|
+
* runClientRequest throws authorization errors.
|
|
41
|
+
* Prevent cached authorization errors from committing the transaction.
|
|
42
|
+
*/
|
|
43
|
+
let failure;
|
|
44
|
+
const result = await callback({
|
|
45
|
+
...getTableHandlers(transactionHandlers, (error) => {
|
|
46
|
+
failure ??= { error };
|
|
47
|
+
}),
|
|
48
|
+
});
|
|
49
|
+
if (failure)
|
|
50
|
+
throw failure.error;
|
|
51
|
+
return result;
|
|
52
|
+
});
|
|
34
53
|
};
|
|
35
54
|
const clientMethods = Object.fromEntries(clientSchema.methods.map(({ name, input, description, output }) => {
|
|
36
55
|
const methodHandler = (input) => {
|
|
@@ -41,7 +60,7 @@ const getClientHandlers = async (prostgles, clientReq, scope) => {
|
|
|
41
60
|
};
|
|
42
61
|
return [name, { name, input, description, output, run: methodHandler }];
|
|
43
62
|
}));
|
|
44
|
-
return { clientDb, clientSql, clientMethods, clientSchema };
|
|
63
|
+
return { clientDb, clientSql, clientMethods, clientSchema, withClientDbTx };
|
|
45
64
|
};
|
|
46
65
|
exports.getClientHandlers = getClientHandlers;
|
|
47
66
|
const tableMethods = (0, prostgles_types_1.getKeys)({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getClientHandlers.js","sourceRoot":"","sources":["../../lib/WebsocketAPI/getClientHandlers.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"getClientHandlers.js","sourceRoot":"","sources":["../../lib/WebsocketAPI/getClientHandlers.ts"],"names":[],"mappings":";;;AAAA,qDAQyB;AAOzB,0DAA6F;AAC7F,uDAAoD;AAa7C,MAAM,iBAAiB,GAAG,KAAK,EACpC,SAAoB,EACpB,SAA4B,EAC5B,KAAkC,EACN,EAAE;IAC9B,SAAS,CAAC,iBAAiB,EAAE,CAAC;IAC9B,MAAM,YAAY,GAChB,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvE,CAAC,MAAM,iCAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAE5D,MAAM,UAAU,GAA2B,CAAC,CAC1C,KAAa,EACb,MAAgB,EAChB,OAAoB,EACpB,EAAE,CAAC,sCAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,SAAS,CAAC,CAAe,CAAC;IAE/F,MAAM,gBAAgB,GAAG,CACvB,mBAAuC,EACvC,cAAyC,EACzC,EAAE,CACF,MAAM,CAAC,WAAW,CAChB,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACrC,MAAM,cAAc,GAAG,IAAA,wCAAsB,EAAC,KAAK,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACnF,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CACjC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACtB,MAAM,MAAM,GAAG,CAAC,MAAe,EAAE,MAAe,EAAE,MAAe,EAAE,EAAE,CACnE,mCAAgB;iBACb,IAAI,CAAC,SAAS,CAAC,CACd,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAC1D,SAAS,EACT,KAAK,EACL,mBAAmB,CACpB;iBACA,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBACxB,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC;gBACxB,MAAM,KAAK,CAAC;YACd,CAAC,CAAC,CAAC;YACP,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3B,CAAC,CAAC,CACH,CAAC;QACF,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAChC,CAAC,CAAC,CACH,CAAC;IAEJ,MAAM,SAAS,GAAG,CAAC,CAAC,KAAa,EAAE,MAAkB,EAAE,OAAoB,EAAE,EAAE;QAC7E,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC,CAAe,CAAC;IAEjB,MAAM,QAAQ,GAAG,gBAAgB,EAAuC,CAAC;IAEzE,MAAM,cAAc,GAAwC,KAAK,EAAE,QAAQ,EAAE,EAAE;QAC7E,SAAS,CAAC,iBAAiB,EAAE,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,mBAAmB,EAAE,EAAE;YAC9D;;;eAGG;YACH,IAAI,OAAuC,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC;gBAC5B,GAAG,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;oBACjD,OAAO,KAAK,EAAE,KAAK,EAAE,CAAC;gBACxB,CAAC,CAAC;aACkC,CAAC,CAAC;YACxC,IAAI,OAAO;gBAAE,MAAM,OAAO,CAAC,KAAK,CAAC;YACjC,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,aAAa,GAA6C,MAAM,CAAC,WAAW,CAChF,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE;QAChE,MAAM,aAAa,GAAG,CAAC,KAAe,EAAE,EAAE;YACxC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,oCAAoC,CAAC,CAAC;YACtE,CAAC;YACD,OAAO,kCAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;QACrE,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;AAC9E,CAAC,CAAC;AAzFW,QAAA,iBAAiB,qBAyF5B;AAEF,MAAM,YAAY,GAAG,IAAA,yBAAO,EAAC;IAC3B,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,CAAC;IACb,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,CAAC;IACP,SAAS,EAAE,CAAC;IACZ,YAAY,EAAE,CAAC;IACf,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,CAAC;IACd,UAAU,EAAE,CAAC;CAC0B,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { defineJoin } from "prostgles-types";
|
|
|
2
2
|
import type { SessionUser } from "./Auth/AuthTypes";
|
|
3
3
|
import type { InitResult } from "./initProstgles";
|
|
4
4
|
import type { ProstglesInitOptions } from "./ProstglesTypes";
|
|
5
|
+
export { DB_GENERATED_NAMES } from "./DBSchemaBuilder/constants";
|
|
5
6
|
declare function prostgles<S = void, SUser extends SessionUser = SessionUser, Context = undefined, ClientSchema = S>(params: ProstglesInitOptions<S, SUser, Context>): Promise<InitResult<S, SUser, Context, ClientSchema>>;
|
|
6
7
|
/** Creates a schema-bound Prostgles initializer while allowing context inference. */
|
|
7
8
|
export declare const createProstgles: <S = void, SUser extends SessionUser = SessionUser, ClientSchema = S>() => <Context = undefined>(params: ProstglesInitOptions<S, SUser, Context>) => Promise<InitResult<S, SUser, Context, ClientSchema>>;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAC;AAExE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAC;AAExE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,iBAAS,SAAS,CAChB,CAAC,GAAG,IAAI,EACR,KAAK,SAAS,WAAW,GAAG,WAAW,EACvC,OAAO,GAAG,SAAS,EACnB,YAAY,GAAG,CAAC,EAChB,MAAM,EAAE,oBAAoB,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,GAI9B,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CACtE;AAED,qFAAqF;AACrF,eAAO,MAAM,eAAe,GAC1B,CAAC,GAAG,IAAI,EACR,KAAK,SAAS,WAAW,GAAG,WAAW,EACvC,YAAY,GAAG,CAAC,QAER,OAAO,GAAG,SAAS,EAAE,QAAQ,oBAAoB,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,yDAE7E,CAAC;AACF,cAAc,sCAAsC,CAAC;AACrD,cAAc,kBAAkB,CAAC;AAEjC,YAAY,EACV,mBAAmB,EACnB,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,aAAa,GACd,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAC5F,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,aAAa,IAAI,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACvF,cAAc,uCAAuC,CAAC;AACtD,YAAY,EACV,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,EAAE,EACF,UAAU,EACV,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,eAAe,EACf,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,mBAAmB,gCAAgC,CAAC;AACpD,mBAAmB,oBAAoB,CAAC;AACxC,mBAAmB,yBAAyB,CAAC;AAC7C,cAAc,2CAA2C,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC/E,eAAe,SAAS,CAAC;AACzB,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,OAAO,EACL,8BAA8B,EAC9B,wBAAwB,EACxB,mBAAmB,EACnB,KAAK,mBAAmB,EACxB,KAAK,aAAa,GACnB,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -14,10 +14,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.AUDIT_TABLE_COLUMNS = exports.AUDIT_TABLE_COLUMN_NAMES = exports.AUDIT_TABLE_COLUMN_DEFINITIONS = exports.defineJoin = exports.createProstgles = void 0;
|
|
17
|
+
exports.AUDIT_TABLE_COLUMNS = exports.AUDIT_TABLE_COLUMN_NAMES = exports.AUDIT_TABLE_COLUMN_DEFINITIONS = exports.defineJoin = exports.createProstgles = exports.DB_GENERATED_NAMES = void 0;
|
|
18
18
|
const prostgles_types_1 = require("prostgles-types");
|
|
19
19
|
Object.defineProperty(exports, "defineJoin", { enumerable: true, get: function () { return prostgles_types_1.defineJoin; } });
|
|
20
20
|
const Prostgles_1 = require("./Prostgles");
|
|
21
|
+
var constants_1 = require("./DBSchemaBuilder/constants");
|
|
22
|
+
Object.defineProperty(exports, "DB_GENERATED_NAMES", { enumerable: true, get: function () { return constants_1.DB_GENERATED_NAMES; } });
|
|
21
23
|
function prostgles(params) {
|
|
22
24
|
const prgl = new Prostgles_1.Prostgles(params);
|
|
23
25
|
return prgl.init(params.onReady, {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qDAA6C;AAmEpC,2FAnEA,4BAAU,OAmEA;AAhEnB,2CAAwC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qDAA6C;AAmEpC,2FAnEA,4BAAU,OAmEA;AAhEnB,2CAAwC;AAExC,yDAAiE;AAAxD,+GAAA,kBAAkB,OAAA;AAE3B,SAAS,SAAS,CAKhB,MAA+C;IAC/C,MAAM,IAAI,GAAG,IAAI,qBAAS,CAAC,MAAiE,CAAC,CAAC;IAC9F,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAA0C,EAAE;QAClE,IAAI,EAAE,MAAM;KACb,CAAoE,CAAC;AACxE,CAAC;AAED,qFAAqF;AAC9E,MAAM,eAAe,GAAG,GAI3B,EAAE;IACJ,OAAO,CAAsB,MAA+C,EAAE,EAAE,CAC9E,SAAS,CAAkC,MAAM,CAAC,CAAC;AACvD,CAAC,CAAC;AAPW,QAAA,eAAe,mBAO1B;AACF,uEAAqD;AACrD,mDAAiC;AAiBjC,wEAAsD;AAiBtD,4EAA0D;AAE1D,kBAAe,SAAS,CAAC;AAGzB,iDAM4B;AAL1B,4HAAA,8BAA8B,OAAA;AAC9B,sHAAA,wBAAwB,OAAA;AACxB,iHAAA,mBAAmB,OAAA"}
|
package/dist/initProstgles.d.ts
CHANGED
|
@@ -9,6 +9,13 @@ import type { ProstglesInitOptions } from "./ProstglesTypes";
|
|
|
9
9
|
import type { PermissionScope } from "./PublishParser/PublishParser";
|
|
10
10
|
import { type clientOnlyUpdateKeys } from "./updateConfiguration";
|
|
11
11
|
import { getClientHandlers } from "./WebsocketAPI/getClientHandlers";
|
|
12
|
+
type ClientDBHandlerRequest = AuthClientRequest | {
|
|
13
|
+
/** Trusted server-only identity, resolved through auth.findUser on every operation. */
|
|
14
|
+
userId: string;
|
|
15
|
+
socket?: never;
|
|
16
|
+
httpReq?: never;
|
|
17
|
+
res?: never;
|
|
18
|
+
};
|
|
12
19
|
/**
|
|
13
20
|
* Database connection details
|
|
14
21
|
*/
|
|
@@ -70,8 +77,11 @@ export type InitResult<S = void, SUser extends SessionUser = SessionUser, Contex
|
|
|
70
77
|
update: (newOpts: UpdatableOptions<S, SUser, Context>, force?: true) => Promise<void>;
|
|
71
78
|
restart: () => Promise<InitResult<S, SUser, Context, ClientSchema>>;
|
|
72
79
|
options: ProstglesInitOptions<S, SUser, Context>;
|
|
73
|
-
/**
|
|
74
|
-
|
|
80
|
+
/**
|
|
81
|
+
* Uses the configured client schema by default and accepts a publish-profile schema override.
|
|
82
|
+
* Only pass userId from trusted server code; never forward client-supplied input here.
|
|
83
|
+
*/
|
|
84
|
+
getClientDBHandlers: <NarrowedClientSchema = ClientSchema>(clientReq: ClientDBHandlerRequest, scope: PermissionScope | undefined) => ReturnType<typeof getClientHandlers<NarrowedClientSchema>>;
|
|
75
85
|
getFieldsWithTypes: typeof DboBuilder.prototype.getDetailedFieldInfo;
|
|
76
86
|
};
|
|
77
87
|
export declare const initProstgles: (this: Prostgles, onReady: OnReadyCallbackBasic, reason: OnInitReason) => Promise<InitResult<void, SessionUser, any>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initProstgles.d.ts","sourceRoot":"","sources":["../lib/initProstgles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,SAAS,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGrE,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAEvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"initProstgles.d.ts","sourceRoot":"","sources":["../lib/initProstgles.ts"],"names":[],"mappings":"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"}
|
package/dist/initProstgles.js
CHANGED
|
@@ -13,6 +13,7 @@ const updateConfiguration_1 = require("./updateConfiguration");
|
|
|
13
13
|
const utils_1 = require("./utils/utils");
|
|
14
14
|
const getClientHandlers_1 = require("./WebsocketAPI/getClientHandlers");
|
|
15
15
|
const getAdminClient_1 = require("./DboBuilder/runSql/getAdminClient");
|
|
16
|
+
const serverSideRequest_1 = require("./Auth/utils/serverSideRequest");
|
|
16
17
|
const initProstgles = async function (onReady, reason) {
|
|
17
18
|
this.checkNotDestroyed();
|
|
18
19
|
this.loaded = false;
|
|
@@ -190,7 +191,15 @@ const initProstgles = async function (onReady, reason) {
|
|
|
190
191
|
await (0, utils_1.sleep)(1000);
|
|
191
192
|
return true;
|
|
192
193
|
},
|
|
193
|
-
getClientDBHandlers: (clientReq, scope) =>
|
|
194
|
+
getClientDBHandlers: async (clientReq, scope) => {
|
|
195
|
+
if ("userId" in clientReq) {
|
|
196
|
+
if ("socket" in clientReq || "httpReq" in clientReq || "res" in clientReq) {
|
|
197
|
+
throw new Error("userId cannot be combined with a client request");
|
|
198
|
+
}
|
|
199
|
+
return (0, getClientHandlers_1.getClientHandlers)(this, (0, serverSideRequest_1.createServerSideRequest)(this, clientReq.userId), scope);
|
|
200
|
+
}
|
|
201
|
+
return (0, getClientHandlers_1.getClientHandlers)(this, clientReq, scope);
|
|
202
|
+
},
|
|
194
203
|
};
|
|
195
204
|
return initResult;
|
|
196
205
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initProstgles.js","sourceRoot":"","sources":["../lib/initProstgles.ts"],"names":[],"mappings":";;;AAAA,uEAAoE;AACpE,qDAAkD;AAKlD,wEAA0E;AAC1E,uDAAoD;AAGpD,uDAAoD;AAEpD,2CAA6C;AAG7C,2DAAwD;AACxD,yDAAsD;AACtD,+DAAuF;AACvF,yCAAsC;AACtC,wEAAqE;AACrE,uEAAoE;
|
|
1
|
+
{"version":3,"file":"initProstgles.js","sourceRoot":"","sources":["../lib/initProstgles.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { SQLRequest } from "prostgles-types";
|
|
2
2
|
import { type AnyObject } from "prostgles-types";
|
|
3
3
|
import type { AuthClientRequest } from "./Auth/AuthTypes";
|
|
4
|
+
import type { DbTxTableHandlers } from "./DboBuilder/DboBuilderTypes";
|
|
4
5
|
import type { Prostgles } from "./Prostgles";
|
|
5
6
|
import { type PermissionScope } from "./PublishParser/publishTypesAndUtils";
|
|
6
7
|
type Args = {
|
|
@@ -10,7 +11,7 @@ type Args = {
|
|
|
10
11
|
param2: unknown;
|
|
11
12
|
param3: unknown;
|
|
12
13
|
};
|
|
13
|
-
export declare const runClientRequest: (this: Prostgles, nonValidatedArgs: Args, clientReq: AuthClientRequest, scope: PermissionScope | undefined) => Promise<void | AnyObject>;
|
|
14
|
+
export declare const runClientRequest: (this: Prostgles, nonValidatedArgs: Args, clientReq: AuthClientRequest, scope: PermissionScope | undefined, transactionHandlers?: DbTxTableHandlers) => Promise<void | AnyObject>;
|
|
14
15
|
export declare const clientCanRunSqlRequest: (this: Prostgles, clientReq: AuthClientRequest) => Promise<{
|
|
15
16
|
allowed: boolean;
|
|
16
17
|
clientReq: AuthClientRequest;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runClientRequest.d.ts","sourceRoot":"","sources":["../lib/runClientRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"runClientRequest.d.ts","sourceRoot":"","sources":["../lib/runClientRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sCAAsC,CAAC;AA+B5E,KAAK,IAAI,GAAG;IACV,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAUF,eAAO,MAAM,gBAAgB,GAC3B,MAAM,SAAS,EACf,kBAAkB,IAAI,EACtB,WAAW,iBAAiB,EAC5B,OAAO,eAAe,GAAG,SAAS,EAClC,sBAAsB,iBAAiB,8BA6HxC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,MAAM,SAAS,EACf,WAAW,iBAAiB;;;;;;;;EAe7B,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,MAAM,SAAS,EACf,iBAAiB,UAAU,EAC3B,WAAW,iBAAiB,iBAsB7B,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,MAAM,SAAS,EACf,iBAAiB,UAAU,EAC3B,WAAW,iBAAiB,qBAgD7B,CAAC"}
|
package/dist/runClientRequest.js
CHANGED
|
@@ -29,7 +29,7 @@ const SOCKET_ONLY_COMMANDS = [
|
|
|
29
29
|
"sync",
|
|
30
30
|
"abort",
|
|
31
31
|
];
|
|
32
|
-
const runClientRequest = async function (nonValidatedArgs, clientReq, scope) {
|
|
32
|
+
const runClientRequest = async function (nonValidatedArgs, clientReq, scope, transactionHandlers) {
|
|
33
33
|
this.checkNotDestroyed();
|
|
34
34
|
/* Channel name will only include client-sent params so we ignore table_rules enforced params */
|
|
35
35
|
if (!this.publishParser || !this.dbo) {
|
|
@@ -58,7 +58,11 @@ const runClientRequest = async function (nonValidatedArgs, clientReq, scope) {
|
|
|
58
58
|
throw ("The following commands cannot be completed over a non-websocket connection: " +
|
|
59
59
|
SOCKET_ONLY_COMMANDS.join(", "));
|
|
60
60
|
}
|
|
61
|
-
const tableHandler =
|
|
61
|
+
const tableHandler = transactionHandlers ?
|
|
62
|
+
Object.hasOwn(transactionHandlers, tableName) ?
|
|
63
|
+
transactionHandlers[tableName]
|
|
64
|
+
: undefined
|
|
65
|
+
: this.dboBuilder.dboMap.get(tableName);
|
|
62
66
|
if (!tableHandler) {
|
|
63
67
|
throw `tableName ${tableName} is invalid or not allowed`;
|
|
64
68
|
}
|
|
@@ -72,7 +76,7 @@ const runClientRequest = async function (nonValidatedArgs, clientReq, scope) {
|
|
|
72
76
|
clientInfo,
|
|
73
77
|
scope,
|
|
74
78
|
});
|
|
75
|
-
const sessionUser = (0, getSessionUser_1.getSessionUser)(clientInfo);
|
|
79
|
+
const sessionUser = (0, getSessionUser_1.getSessionUser)(clientInfo, this.opts.auth?.sessionFields);
|
|
76
80
|
const localParams = {
|
|
77
81
|
clientReq,
|
|
78
82
|
isRemoteRequest: { user: sessionUser, clientInfo },
|
|
@@ -91,7 +95,6 @@ const runClientRequest = async function (nonValidatedArgs, clientReq, scope) {
|
|
|
91
95
|
throw validation.error;
|
|
92
96
|
}
|
|
93
97
|
this.publishParser.validateRequestRule({ tableName, command: validation.data.param1.command, clientReq }, parsedTableRule, scope);
|
|
94
|
-
tableHandler.abortRequests.add(validation.data.param1.abortSignalId);
|
|
95
98
|
return tableHandler.abortRemoteQuery(validation.data.param1.abortSignalId, localParams);
|
|
96
99
|
}
|
|
97
100
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runClientRequest.js","sourceRoot":"","sources":["../lib/runClientRequest.ts"],"names":[],"mappings":";;;AACA,qDAMyB;AAEzB,gEAA6D;
|
|
1
|
+
{"version":3,"file":"runClientRequest.js","sourceRoot":"","sources":["../lib/runClientRequest.ts"],"names":[],"mappings":"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"}
|
package/eslint.config.mjs
CHANGED
|
@@ -3,7 +3,18 @@ import tseslint from "typescript-eslint";
|
|
|
3
3
|
|
|
4
4
|
export default tseslint.config(
|
|
5
5
|
{
|
|
6
|
-
ignores: [
|
|
6
|
+
ignores: [
|
|
7
|
+
"**/node_modules",
|
|
8
|
+
"**/dist",
|
|
9
|
+
"**/debug",
|
|
10
|
+
"examples",
|
|
11
|
+
"**/*.d.ts",
|
|
12
|
+
"docs",
|
|
13
|
+
"tests/**/*.js",
|
|
14
|
+
"tests/DBGeneratedSchema.ts",
|
|
15
|
+
"tests/config_test",
|
|
16
|
+
"tests/server/DEMO_SERVER.ts",
|
|
17
|
+
],
|
|
7
18
|
},
|
|
8
19
|
eslint.configs.recommended,
|
|
9
20
|
tseslint.configs.recommendedTypeChecked,
|
|
@@ -58,4 +69,13 @@ export default tseslint.config(
|
|
|
58
69
|
],
|
|
59
70
|
},
|
|
60
71
|
},
|
|
72
|
+
{
|
|
73
|
+
files: ["tests/**/*.ts"],
|
|
74
|
+
languageOptions: {
|
|
75
|
+
parserOptions: {
|
|
76
|
+
projectService: false,
|
|
77
|
+
project: ["./tests/server/tsconfig.json", "./tests/client/tsconfig.json"],
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
},
|
|
61
81
|
);
|
package/lib/Auth/AuthHandler.ts
CHANGED
|
@@ -171,7 +171,7 @@ export class AuthHandler {
|
|
|
171
171
|
* Based on sidKeyName from auth
|
|
172
172
|
*/
|
|
173
173
|
getValidatedSid(maybeClientReq: AuthClientRequest | undefined): string | undefined {
|
|
174
|
-
if (!maybeClientReq) return undefined;
|
|
174
|
+
if (!maybeClientReq || (!maybeClientReq.socket && !maybeClientReq.httpReq)) return undefined;
|
|
175
175
|
const { sidKeyName } = this;
|
|
176
176
|
if (maybeClientReq.socket) {
|
|
177
177
|
const { handshake } = maybeClientReq.socket;
|
package/lib/Auth/AuthTypes.ts
CHANGED
|
@@ -21,6 +21,7 @@ import type {
|
|
|
21
21
|
FullFilter,
|
|
22
22
|
IdentityProvider,
|
|
23
23
|
LocalLoginMode,
|
|
24
|
+
MaybePromise,
|
|
24
25
|
UserLike,
|
|
25
26
|
} from "prostgles-types";
|
|
26
27
|
import type { DBOFullyTyped } from "../DBSchemaBuilder/DBSchemaBuilder";
|
|
@@ -28,6 +29,7 @@ import type { ClientSocketWithCachedData } from "../DboBuilder/DboBuilderTypes";
|
|
|
28
29
|
import { type CachedSession } from "../DboBuilder/DboBuilderTypes";
|
|
29
30
|
import type { DB } from "../Prostgles";
|
|
30
31
|
import { GET_AUTH_ROUTE } from "./AuthHandler";
|
|
32
|
+
import type { ServerSideRequest } from "./utils/serverSideRequest";
|
|
31
33
|
|
|
32
34
|
type Awaitable<T> = T | Promise<T>;
|
|
33
35
|
|
|
@@ -58,7 +60,7 @@ type HttpClientRequest = {
|
|
|
58
60
|
res: ExpressRes;
|
|
59
61
|
socket?: undefined;
|
|
60
62
|
};
|
|
61
|
-
export type AuthClientRequest = SocketClientRequest | HttpClientRequest;
|
|
63
|
+
export type AuthClientRequest = SocketClientRequest | HttpClientRequest | ServerSideRequest;
|
|
62
64
|
|
|
63
65
|
export type ThirdPartyProviders = {
|
|
64
66
|
facebook?: Pick<FacebookStrategy, "clientID" | "clientSecret"> & {
|
|
@@ -210,7 +212,7 @@ export type LoginWithOAuthConfig<S> = {
|
|
|
210
212
|
req: ExpressReq;
|
|
211
213
|
res: ExpressRes;
|
|
212
214
|
clientInfo: LoginClientInfo;
|
|
213
|
-
}) =>
|
|
215
|
+
}) => MaybePromise<
|
|
214
216
|
AuthResponse.OAuthRegisterSuccess | AuthResponse.OAuthRegisterFailure | AuthResponse.AuthFailure
|
|
215
217
|
>;
|
|
216
218
|
|
|
@@ -225,7 +227,7 @@ export type LoginWithOAuthConfig<S> = {
|
|
|
225
227
|
req: ExpressReq;
|
|
226
228
|
res: ExpressRes;
|
|
227
229
|
clientInfo: LoginClientInfo;
|
|
228
|
-
}) => void |
|
|
230
|
+
}) => void | MaybePromise<void>;
|
|
229
231
|
};
|
|
230
232
|
|
|
231
233
|
export type SessionUser<
|
|
@@ -243,10 +245,6 @@ export type SessionUser<
|
|
|
243
245
|
*/
|
|
244
246
|
isAnonymous?: boolean;
|
|
245
247
|
|
|
246
|
-
/**
|
|
247
|
-
* Controls which fields from user are available in postgres session variable
|
|
248
|
-
*/
|
|
249
|
-
sessionFields?: FieldFilter<ServerUser>;
|
|
250
248
|
/**
|
|
251
249
|
* User data sent to the authenticated client
|
|
252
250
|
*/
|
|
@@ -257,7 +255,7 @@ type AllNeverAndOptional<T> = {
|
|
|
257
255
|
[P in keyof T]?: never;
|
|
258
256
|
};
|
|
259
257
|
export type AuthResultWithSID<SU = SessionUser> =
|
|
260
|
-
| (SU & { sid: string; error?: undefined; preferredLogin?: undefined })
|
|
258
|
+
| (SU & { sid: string | undefined; error?: undefined; preferredLogin?: undefined })
|
|
261
259
|
| (AllNeverAndOptional<SU> & {
|
|
262
260
|
sid: string | undefined;
|
|
263
261
|
error?: AuthResponse.AuthFailure;
|
|
@@ -332,6 +330,12 @@ export type AuthConfig<S = void, SUser extends SessionUser = SessionUser> = {
|
|
|
332
330
|
dbo: DBOFullyTyped<S>,
|
|
333
331
|
) => Awaitable<SUser["user"] | undefined>;
|
|
334
332
|
|
|
333
|
+
/**
|
|
334
|
+
* Controls which fields from user are available in postgres session variable.
|
|
335
|
+
* "id" and "type" are always included.
|
|
336
|
+
*/
|
|
337
|
+
sessionFields?: FieldFilter<SUser["user"]>;
|
|
338
|
+
|
|
335
339
|
/**
|
|
336
340
|
* Will setup auth routes
|
|
337
341
|
* /login
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { ClientSocketWithCachedData } from "../../DboBuilder/DboBuilderTypes";
|
|
2
2
|
import type { ExpressReq, LoginClientInfo } from "../AuthTypes";
|
|
3
|
+
import type { ServerSideRequest } from "./serverSideRequest";
|
|
3
4
|
type ClientReq =
|
|
4
5
|
| { socket: ClientSocketWithCachedData; httpReq?: undefined }
|
|
5
|
-
| { httpReq: ExpressReq; socket?: undefined }
|
|
6
|
+
| { httpReq: ExpressReq; socket?: undefined }
|
|
7
|
+
| ServerSideRequest;
|
|
6
8
|
export const getClientRequestIPsInfo = <T extends ClientReq>(req: T): LoginClientInfo => {
|
|
7
9
|
if (req.httpReq) {
|
|
8
10
|
const ip_address = req.httpReq.ip;
|
|
@@ -14,7 +16,7 @@ export const getClientRequestIPsInfo = <T extends ClientReq>(req: T): LoginClien
|
|
|
14
16
|
x_real_ip: req.httpReq.headers["x-real-ip"] as string | undefined,
|
|
15
17
|
user_agent,
|
|
16
18
|
};
|
|
17
|
-
} else {
|
|
19
|
+
} else if (req.socket) {
|
|
18
20
|
const ip_address = req.socket.handshake.address;
|
|
19
21
|
if (!ip_address) throw new Error("ip_address missing from req.socket.handshake");
|
|
20
22
|
return {
|
|
@@ -24,4 +26,11 @@ export const getClientRequestIPsInfo = <T extends ClientReq>(req: T): LoginClien
|
|
|
24
26
|
user_agent: req.socket.handshake.headers["user-agent"],
|
|
25
27
|
};
|
|
26
28
|
}
|
|
29
|
+
// Server-side user requests have no network metadata.
|
|
30
|
+
return {
|
|
31
|
+
ip_address: "",
|
|
32
|
+
ip_address_remote: undefined,
|
|
33
|
+
x_real_ip: undefined,
|
|
34
|
+
user_agent: undefined,
|
|
35
|
+
};
|
|
27
36
|
};
|
|
@@ -14,10 +14,9 @@ void describe("getSessionUser", async () => {
|
|
|
14
14
|
secret: "hidden",
|
|
15
15
|
},
|
|
16
16
|
clientUser: { id: "user-1", type: "admin" },
|
|
17
|
-
|
|
18
|
-
} as AuthResultWithSID;
|
|
17
|
+
} satisfies AuthResultWithSID;
|
|
19
18
|
|
|
20
|
-
assert.deepEqual(getSessionUser(clientInfo), {
|
|
19
|
+
assert.deepEqual(getSessionUser(clientInfo, ["tenant_id"]), {
|
|
21
20
|
tenant_id: 42,
|
|
22
21
|
id: "user-1",
|
|
23
22
|
type: "admin",
|
|
@@ -29,10 +28,9 @@ void describe("getSessionUser", async () => {
|
|
|
29
28
|
sid: "sid",
|
|
30
29
|
user: { id: "user-1", type: "admin", tenant_id: 42, secret: "hidden" },
|
|
31
30
|
clientUser: { id: "user-1", type: "admin" },
|
|
32
|
-
|
|
33
|
-
} as AuthResultWithSID;
|
|
31
|
+
} satisfies AuthResultWithSID;
|
|
34
32
|
|
|
35
|
-
assert.deepEqual(getSessionUser(clientInfo), {
|
|
33
|
+
assert.deepEqual(getSessionUser(clientInfo, { secret: false }), {
|
|
36
34
|
id: "user-1",
|
|
37
35
|
type: "admin",
|
|
38
36
|
tenant_id: 42,
|
|
@@ -1,16 +1,19 @@
|
|
|
1
|
-
import { getKeys, pickKeys, type UserLike } from "prostgles-types";
|
|
1
|
+
import { getKeys, pickKeys, type FieldFilter, type UserLike } from "prostgles-types";
|
|
2
2
|
import { parseFieldFilter } from "../../DboBuilder/ViewHandler/parseFieldFilter";
|
|
3
|
-
import type { AuthResultWithSID } from "../AuthTypes";
|
|
4
3
|
|
|
5
|
-
export const getSessionUser =
|
|
4
|
+
export const getSessionUser = <U extends UserLike = UserLike>(
|
|
5
|
+
clientInfo: { user?: U } | undefined,
|
|
6
|
+
sessionFieldsFilter: undefined | FieldFilter<U>,
|
|
7
|
+
): UserLike | undefined => {
|
|
6
8
|
const user = clientInfo?.user;
|
|
7
9
|
if (!user) return;
|
|
8
10
|
|
|
9
11
|
const sessionFields = parseFieldFilter(
|
|
10
|
-
|
|
12
|
+
//@ts-expect-error
|
|
13
|
+
sessionFieldsFilter ?? [],
|
|
11
14
|
false,
|
|
12
15
|
getKeys(user),
|
|
13
|
-
);
|
|
16
|
+
) as string[];
|
|
14
17
|
|
|
15
18
|
return {
|
|
16
19
|
...pickKeys(user, sessionFields),
|
|
@@ -4,6 +4,7 @@ import { getClientRequestIPsInfo, type AuthHandler } from "../AuthHandler";
|
|
|
4
4
|
import type { AuthClientRequest, AuthResultOrError, AuthResultWithSID } from "../AuthTypes";
|
|
5
5
|
import type { LoginResponseHandler } from "../endpoints/setLoginRequestHandler";
|
|
6
6
|
import { throttledAuthCall } from "./throttledReject";
|
|
7
|
+
import { getServerSideUserId } from "./serverSideRequest";
|
|
7
8
|
|
|
8
9
|
export type GetUserOrRedirected = AuthResultWithSID | "new-session-redirect";
|
|
9
10
|
|
|
@@ -17,6 +18,18 @@ export async function handleGetUserThrottled(
|
|
|
17
18
|
clientReq: AuthClientRequest,
|
|
18
19
|
): Promise<GetUserOrRedirected> {
|
|
19
20
|
const config = this.config;
|
|
21
|
+
if (!clientReq.httpReq && !clientReq.socket) {
|
|
22
|
+
const userId = getServerSideUserId(this.prostgles, clientReq);
|
|
23
|
+
if (!userId) throw new Error("Invalid server-side user request");
|
|
24
|
+
if (!config?.findUser) throw new Error("auth.findUser is required for userId requests");
|
|
25
|
+
const user = await config.findUser({ id: userId }, this.dbHandles.dbo);
|
|
26
|
+
if (!user || user.id !== userId) throw new Error("User not found for userId request");
|
|
27
|
+
return {
|
|
28
|
+
sid: undefined,
|
|
29
|
+
user,
|
|
30
|
+
clientUser: { id: user.id, type: user.type },
|
|
31
|
+
} satisfies GetUserOrRedirected;
|
|
32
|
+
}
|
|
20
33
|
if (!config) {
|
|
21
34
|
return {
|
|
22
35
|
sid: undefined,
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { AuthClientRequest } from "../AuthTypes";
|
|
2
|
+
import type { Prostgles } from "../../Prostgles";
|
|
3
|
+
|
|
4
|
+
/** This capability cannot be supplied through JSON, HTTP or socket payloads. */
|
|
5
|
+
const serverSideUser = Symbol("serverSideUser");
|
|
6
|
+
|
|
7
|
+
export type ServerSideRequest = {
|
|
8
|
+
readonly [serverSideUser]: { readonly prostgles: Prostgles; readonly userId: string };
|
|
9
|
+
socket?: undefined;
|
|
10
|
+
httpReq?: undefined;
|
|
11
|
+
res?: undefined;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export const createServerSideRequest = (prostgles: Prostgles, userId: string): ServerSideRequest => {
|
|
15
|
+
if (typeof userId !== "string" || !userId.length) {
|
|
16
|
+
throw new Error("userId must be a non-empty string");
|
|
17
|
+
}
|
|
18
|
+
return Object.freeze({
|
|
19
|
+
[serverSideUser]: Object.freeze({ prostgles, userId }),
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export const getServerSideUserId = (prostgles: Prostgles, request: AuthClientRequest) =>
|
|
24
|
+
!request.socket && !request.httpReq &&
|
|
25
|
+
serverSideUser in request && request[serverSideUser].prostgles === prostgles ?
|
|
26
|
+
request[serverSideUser].userId
|
|
27
|
+
: undefined;
|