prostgles-server 4.2.187 → 4.2.188
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/.eslintignore +2 -1
- package/.eslintrc.json +2 -0
- package/dist/Auth/AuthHandler.d.ts +18 -11
- package/dist/Auth/AuthHandler.d.ts.map +1 -1
- package/dist/Auth/AuthHandler.js +94 -120
- package/dist/Auth/AuthHandler.js.map +1 -1
- package/dist/Auth/AuthTypes.d.ts +78 -71
- package/dist/Auth/AuthTypes.d.ts.map +1 -1
- package/dist/Auth/{setEmailProvider.d.ts → authProviders/setEmailProvider.d.ts} +1 -1
- package/dist/Auth/authProviders/setEmailProvider.d.ts.map +1 -0
- package/dist/Auth/authProviders/setEmailProvider.js +27 -0
- package/dist/Auth/authProviders/setEmailProvider.js.map +1 -0
- package/dist/Auth/authProviders/setOAuthProviders.d.ts +5 -0
- package/dist/Auth/authProviders/setOAuthProviders.d.ts.map +1 -0
- package/dist/Auth/authProviders/setOAuthProviders.js +78 -0
- package/dist/Auth/authProviders/setOAuthProviders.js.map +1 -0
- package/dist/Auth/endpoints/getConfirmEmailRequestHandler.d.ts +7 -0
- package/dist/Auth/endpoints/getConfirmEmailRequestHandler.d.ts.map +1 -0
- package/dist/Auth/endpoints/getConfirmEmailRequestHandler.js +29 -0
- package/dist/Auth/endpoints/getConfirmEmailRequestHandler.js.map +1 -0
- package/dist/Auth/endpoints/getRegisterRequestHandler.d.ts +7 -0
- package/dist/Auth/endpoints/getRegisterRequestHandler.d.ts.map +1 -0
- package/dist/Auth/endpoints/getRegisterRequestHandler.js +74 -0
- package/dist/Auth/endpoints/getRegisterRequestHandler.js.map +1 -0
- package/dist/Auth/setAuthProviders.d.ts.map +1 -1
- package/dist/Auth/setAuthProviders.js +4 -74
- package/dist/Auth/setAuthProviders.js.map +1 -1
- package/dist/Auth/setupAuthRoutes.d.ts.map +1 -1
- package/dist/Auth/setupAuthRoutes.js +23 -33
- package/dist/Auth/setupAuthRoutes.js.map +1 -1
- package/dist/Auth/utils/checkDmarc.d.ts +2 -0
- package/dist/Auth/utils/checkDmarc.d.ts.map +1 -0
- package/dist/Auth/utils/checkDmarc.js +22 -0
- package/dist/Auth/utils/checkDmarc.js.map +1 -0
- package/dist/Auth/utils/getClientRequestIPsInfo.d.ts +3 -0
- package/dist/Auth/utils/getClientRequestIPsInfo.d.ts.map +1 -0
- package/dist/Auth/utils/getClientRequestIPsInfo.js +29 -0
- package/dist/Auth/utils/getClientRequestIPsInfo.js.map +1 -0
- package/dist/Auth/utils/getReturnUrl.d.ts +3 -0
- package/dist/Auth/utils/getReturnUrl.d.ts.map +1 -0
- package/dist/Auth/utils/getReturnUrl.js +15 -0
- package/dist/Auth/utils/getReturnUrl.js.map +1 -0
- package/dist/Auth/utils/getSafeReturnURL.d.ts.map +1 -0
- package/dist/Auth/utils/getSafeReturnURL.js.map +1 -0
- package/dist/DBEventsManager.d.ts.map +1 -1
- package/dist/DBEventsManager.js +4 -5
- package/dist/DBEventsManager.js.map +1 -1
- package/dist/DBSchemaBuilder.js +1 -1
- package/dist/DBSchemaBuilder.js.map +1 -1
- package/dist/DboBuilder/DboBuilder.d.ts +0 -1
- package/dist/DboBuilder/DboBuilder.d.ts.map +1 -1
- package/dist/DboBuilder/DboBuilder.js +3 -12
- package/dist/DboBuilder/DboBuilder.js.map +1 -1
- package/dist/DboBuilder/DboBuilderTypes.d.ts +4 -4
- package/dist/DboBuilder/DboBuilderTypes.d.ts.map +1 -1
- package/dist/DboBuilder/DboBuilderTypes.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/Functions.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/Functions.js +38 -76
- package/dist/DboBuilder/QueryBuilder/Functions.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.js +4 -12
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getNewQuery.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getNewQuery.js +23 -33
- package/dist/DboBuilder/QueryBuilder/getNewQuery.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getSelectQuery.d.ts +1 -1
- package/dist/DboBuilder/QueryBuilder/getSelectQuery.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getSelectQuery.js +6 -6
- package/dist/DboBuilder/QueryBuilder/getSelectQuery.js.map +1 -1
- package/dist/DboBuilder/QueryStreamer.d.ts.map +1 -1
- package/dist/DboBuilder/QueryStreamer.js +13 -19
- package/dist/DboBuilder/QueryStreamer.js.map +1 -1
- package/dist/DboBuilder/TableHandler/DataValidator.d.ts +1 -1
- package/dist/DboBuilder/TableHandler/DataValidator.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/DataValidator.js +7 -16
- package/dist/DboBuilder/TableHandler/DataValidator.js.map +1 -1
- package/dist/DboBuilder/TableHandler/TableHandler.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/TableHandler.js +7 -5
- 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 +5 -8
- package/dist/DboBuilder/TableHandler/delete.js.map +1 -1
- package/dist/DboBuilder/TableHandler/insert.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/insert.js +10 -15
- package/dist/DboBuilder/TableHandler/insert.js.map +1 -1
- package/dist/DboBuilder/TableHandler/insertTest.js +1 -1
- package/dist/DboBuilder/TableHandler/insertTest.js.map +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js +1 -1
- 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 +5 -9
- package/dist/DboBuilder/TableHandler/update.js.map +1 -1
- package/dist/DboBuilder/TableHandler/updateFile.d.ts +1 -1
- package/dist/DboBuilder/TableHandler/updateFile.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/updateFile.js +7 -9
- package/dist/DboBuilder/TableHandler/updateFile.js.map +1 -1
- package/dist/DboBuilder/TableHandler/upsert.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/upsert.js +1 -1
- 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 +11 -13
- package/dist/DboBuilder/ViewHandler/ViewHandler.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/count.js +1 -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 +20 -27
- package/dist/DboBuilder/ViewHandler/find.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/getExistsCondition.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/getExistsCondition.js +4 -10
- package/dist/DboBuilder/ViewHandler/getExistsCondition.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/getInfo.js +2 -2
- package/dist/DboBuilder/ViewHandler/getInfo.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/getTableJoinQuery.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js +6 -22
- package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseFieldFilter.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseFieldFilter.js +6 -10
- package/dist/DboBuilder/ViewHandler/parseFieldFilter.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseJoinPath.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseJoinPath.js +8 -11
- package/dist/DboBuilder/ViewHandler/parseJoinPath.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/prepareSortItems.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/prepareSortItems.js +7 -12
- package/dist/DboBuilder/ViewHandler/prepareSortItems.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/prepareWhere.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/prepareWhere.js +6 -10
- package/dist/DboBuilder/ViewHandler/prepareWhere.js.map +1 -1
- package/dist/DboBuilder/dboBuilderUtils.d.ts.map +1 -1
- package/dist/DboBuilder/dboBuilderUtils.js +8 -23
- package/dist/DboBuilder/dboBuilderUtils.js.map +1 -1
- package/dist/DboBuilder/getColumns.d.ts.map +1 -1
- package/dist/DboBuilder/getColumns.js +19 -26
- package/dist/DboBuilder/getColumns.js.map +1 -1
- package/dist/DboBuilder/getCondition.d.ts.map +1 -1
- package/dist/DboBuilder/getCondition.js +7 -9
- package/dist/DboBuilder/getCondition.js.map +1 -1
- package/dist/DboBuilder/getSubscribeRelatedTables.js +2 -2
- package/dist/DboBuilder/getSubscribeRelatedTables.js.map +1 -1
- package/dist/DboBuilder/getTablesForSchemaPostgresSQL.d.ts.map +1 -1
- package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js +14 -15
- package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js.map +1 -1
- package/dist/DboBuilder/insertNestedRecords.d.ts.map +1 -1
- package/dist/DboBuilder/insertNestedRecords.js +26 -40
- package/dist/DboBuilder/insertNestedRecords.js.map +1 -1
- package/dist/DboBuilder/parseUpdateRules.js +1 -1
- package/dist/DboBuilder/parseUpdateRules.js.map +1 -1
- package/dist/DboBuilder/prepareShortestJoinPaths.d.ts.map +1 -1
- package/dist/DboBuilder/prepareShortestJoinPaths.js +12 -18
- package/dist/DboBuilder/prepareShortestJoinPaths.js.map +1 -1
- package/dist/DboBuilder/runSQL.d.ts +1 -1
- package/dist/DboBuilder/runSQL.d.ts.map +1 -1
- package/dist/DboBuilder/runSQL.js +14 -27
- package/dist/DboBuilder/runSQL.js.map +1 -1
- package/dist/DboBuilder/uploadFile.d.ts +1 -1
- package/dist/DboBuilder/uploadFile.d.ts.map +1 -1
- package/dist/DboBuilder/uploadFile.js +4 -11
- package/dist/DboBuilder/uploadFile.js.map +1 -1
- package/dist/FileManager/FileManager.d.ts.map +1 -1
- package/dist/FileManager/FileManager.js +11 -13
- package/dist/FileManager/FileManager.js.map +1 -1
- package/dist/FileManager/initFileManager.d.ts.map +1 -1
- package/dist/FileManager/initFileManager.js +60 -62
- package/dist/FileManager/initFileManager.js.map +1 -1
- package/dist/FileManager/uploadStream.js +2 -2
- package/dist/FileManager/uploadStream.js.map +1 -1
- package/dist/Filtering.d.ts +1 -1
- package/dist/Filtering.d.ts.map +1 -1
- package/dist/Filtering.js +12 -35
- package/dist/Filtering.js.map +1 -1
- package/dist/JSONBValidation/validation.d.ts.map +1 -1
- package/dist/JSONBValidation/validation.js +20 -26
- package/dist/JSONBValidation/validation.js.map +1 -1
- package/dist/Logging.d.ts +1 -0
- package/dist/Logging.d.ts.map +1 -1
- package/dist/PostgresNotifListenManager.d.ts.map +1 -1
- package/dist/PostgresNotifListenManager.js +1 -5
- package/dist/PostgresNotifListenManager.js.map +1 -1
- package/dist/Prostgles.d.ts +1 -1
- package/dist/Prostgles.d.ts.map +1 -1
- package/dist/Prostgles.js +18 -33
- package/dist/Prostgles.js.map +1 -1
- package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
- package/dist/PubSubManager/PubSubManager.js +8 -13
- package/dist/PubSubManager/PubSubManager.js.map +1 -1
- package/dist/PubSubManager/addSub.d.ts.map +1 -1
- package/dist/PubSubManager/addSub.js +1 -1
- package/dist/PubSubManager/addSub.js.map +1 -1
- package/dist/PubSubManager/addSync.d.ts.map +1 -1
- package/dist/PubSubManager/addSync.js +4 -7
- package/dist/PubSubManager/addSync.js.map +1 -1
- package/dist/PubSubManager/getCreatePubSubManagerError.js +6 -6
- package/dist/PubSubManager/getCreatePubSubManagerError.js.map +1 -1
- package/dist/PubSubManager/initPubSubManager.d.ts.map +1 -1
- package/dist/PubSubManager/initPubSubManager.js +2 -3
- package/dist/PubSubManager/initPubSubManager.js.map +1 -1
- package/dist/PubSubManager/pushSubData.d.ts.map +1 -1
- package/dist/PubSubManager/pushSubData.js +0 -2
- package/dist/PubSubManager/pushSubData.js.map +1 -1
- package/dist/PublishParser/PublishParser.d.ts.map +1 -1
- package/dist/PublishParser/PublishParser.js +8 -13
- package/dist/PublishParser/PublishParser.js.map +1 -1
- package/dist/PublishParser/getFileTableRules.js +1 -1
- package/dist/PublishParser/getFileTableRules.js.map +1 -1
- package/dist/PublishParser/getSchemaFromPublish.d.ts.map +1 -1
- package/dist/PublishParser/getSchemaFromPublish.js +6 -13
- package/dist/PublishParser/getSchemaFromPublish.js.map +1 -1
- package/dist/PublishParser/getTableRulesWithoutFileTable.d.ts.map +1 -1
- package/dist/PublishParser/getTableRulesWithoutFileTable.js +14 -19
- package/dist/PublishParser/getTableRulesWithoutFileTable.js.map +1 -1
- package/dist/RestApi.d.ts +1 -1
- package/dist/RestApi.d.ts.map +1 -1
- package/dist/RestApi.js +2 -2
- package/dist/RestApi.js.map +1 -1
- package/dist/SchemaWatch/SchemaWatch.d.ts.map +1 -1
- package/dist/SchemaWatch/SchemaWatch.js +2 -2
- package/dist/SchemaWatch/SchemaWatch.js.map +1 -1
- package/dist/SyncReplication.d.ts.map +1 -1
- package/dist/SyncReplication.js +31 -41
- package/dist/SyncReplication.js.map +1 -1
- package/dist/TableConfig/TableConfig.d.ts.map +1 -1
- package/dist/TableConfig/TableConfig.js +7 -9
- package/dist/TableConfig/TableConfig.js.map +1 -1
- package/dist/TableConfig/getConstraintDefinitionQueries.d.ts.map +1 -1
- package/dist/TableConfig/getConstraintDefinitionQueries.js +1 -6
- package/dist/TableConfig/getConstraintDefinitionQueries.js.map +1 -1
- package/dist/TableConfig/getFutureTableSchema.d.ts.map +1 -1
- package/dist/TableConfig/getFutureTableSchema.js +16 -28
- package/dist/TableConfig/getFutureTableSchema.js.map +1 -1
- package/dist/TableConfig/getTableColumnQueries.d.ts.map +1 -1
- package/dist/TableConfig/getTableColumnQueries.js +5 -9
- package/dist/TableConfig/getTableColumnQueries.js.map +1 -1
- package/dist/TableConfig/initTableConfig.d.ts.map +1 -1
- package/dist/TableConfig/initTableConfig.js +22 -25
- package/dist/TableConfig/initTableConfig.js.map +1 -1
- package/dist/initProstgles.js +1 -1
- package/dist/initProstgles.js.map +1 -1
- package/dist/onSocketConnected.d.ts.map +1 -1
- package/dist/onSocketConnected.js +2 -4
- package/dist/onSocketConnected.js.map +1 -1
- package/dist/runClientRequest.d.ts.map +1 -1
- package/dist/runClientRequest.js +14 -13
- package/dist/runClientRequest.js.map +1 -1
- package/lib/Auth/AuthHandler.ts +117 -137
- package/lib/Auth/AuthTypes.ts +97 -81
- package/lib/Auth/authProviders/setEmailProvider.ts +29 -0
- package/lib/Auth/authProviders/setOAuthProviders.ts +97 -0
- package/lib/Auth/endpoints/getConfirmEmailRequestHandler.ts +39 -0
- package/lib/Auth/endpoints/getRegisterRequestHandler.ts +83 -0
- package/lib/Auth/setAuthProviders.ts +8 -111
- package/lib/Auth/setupAuthRoutes.ts +105 -148
- package/lib/Auth/utils/checkDmarc.ts +19 -0
- package/lib/Auth/utils/getClientRequestIPsInfo.ts +25 -0
- package/lib/Auth/utils/getReturnUrl.ts +13 -0
- package/lib/DBEventsManager.ts +12 -26
- package/lib/DBSchemaBuilder.ts +1 -1
- package/lib/DboBuilder/DboBuilder.ts +23 -52
- package/lib/DboBuilder/DboBuilderTypes.ts +9 -23
- package/lib/DboBuilder/QueryBuilder/Functions.ts +86 -188
- package/lib/DboBuilder/QueryBuilder/QueryBuilder.ts +11 -36
- package/lib/DboBuilder/QueryBuilder/getNewQuery.ts +102 -129
- package/lib/DboBuilder/QueryBuilder/getSelectQuery.ts +14 -27
- package/lib/DboBuilder/QueryStreamer.ts +26 -57
- package/lib/DboBuilder/TableHandler/DataValidator.ts +58 -90
- package/lib/DboBuilder/TableHandler/TableHandler.ts +19 -45
- package/lib/DboBuilder/TableHandler/delete.ts +9 -18
- package/lib/DboBuilder/TableHandler/insert.ts +18 -31
- package/lib/DboBuilder/TableHandler/insertTest.ts +1 -1
- package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +8 -19
- package/lib/DboBuilder/TableHandler/update.ts +17 -46
- package/lib/DboBuilder/TableHandler/updateFile.ts +18 -21
- package/lib/DboBuilder/TableHandler/upsert.ts +7 -24
- package/lib/DboBuilder/ViewHandler/ViewHandler.ts +13 -15
- package/lib/DboBuilder/ViewHandler/count.ts +1 -1
- package/lib/DboBuilder/ViewHandler/find.ts +28 -35
- package/lib/DboBuilder/ViewHandler/getExistsCondition.ts +8 -30
- package/lib/DboBuilder/ViewHandler/getInfo.ts +2 -2
- package/lib/DboBuilder/ViewHandler/getTableJoinQuery.ts +16 -32
- package/lib/DboBuilder/ViewHandler/parseFieldFilter.ts +9 -16
- package/lib/DboBuilder/ViewHandler/parseJoinPath.ts +26 -44
- package/lib/DboBuilder/ViewHandler/prepareSortItems.ts +58 -82
- package/lib/DboBuilder/ViewHandler/prepareWhere.ts +14 -27
- package/lib/DboBuilder/dboBuilderUtils.ts +19 -46
- package/lib/DboBuilder/getColumns.ts +24 -46
- package/lib/DboBuilder/getCondition.ts +18 -30
- package/lib/DboBuilder/getSubscribeRelatedTables.ts +2 -2
- package/lib/DboBuilder/getTablesForSchemaPostgresSQL.ts +44 -62
- package/lib/DboBuilder/insertNestedRecords.ts +67 -135
- package/lib/DboBuilder/parseUpdateRules.ts +1 -1
- package/lib/DboBuilder/prepareShortestJoinPaths.ts +23 -58
- package/lib/DboBuilder/runSQL.ts +41 -76
- package/lib/DboBuilder/uploadFile.ts +26 -37
- package/lib/FileManager/FileManager.ts +27 -58
- package/lib/FileManager/initFileManager.ts +68 -76
- package/lib/FileManager/uploadStream.ts +2 -2
- package/lib/Filtering.ts +30 -87
- package/lib/JSONBValidation/validation.ts +36 -75
- package/lib/Logging.ts +1 -1
- package/lib/PostgresNotifListenManager.ts +11 -35
- package/lib/Prostgles.ts +42 -100
- package/lib/PubSubManager/PubSubManager.ts +30 -66
- package/lib/PubSubManager/addSub.ts +11 -18
- package/lib/PubSubManager/addSync.ts +5 -12
- package/lib/PubSubManager/getCreatePubSubManagerError.ts +9 -9
- package/lib/PubSubManager/initPubSubManager.ts +7 -13
- package/lib/PubSubManager/pushSubData.ts +1 -7
- package/lib/PublishParser/PublishParser.ts +8 -12
- package/lib/PublishParser/getFileTableRules.ts +1 -1
- package/lib/PublishParser/getSchemaFromPublish.ts +26 -42
- package/lib/PublishParser/getTableRulesWithoutFileTable.ts +22 -37
- package/lib/RestApi.ts +4 -12
- package/lib/SchemaWatch/SchemaWatch.ts +11 -24
- package/lib/SyncReplication.ts +96 -190
- package/lib/TableConfig/TableConfig.ts +16 -38
- package/lib/TableConfig/getConstraintDefinitionQueries.ts +2 -8
- package/lib/TableConfig/getFutureTableSchema.ts +20 -34
- package/lib/TableConfig/getTableColumnQueries.ts +13 -35
- package/lib/TableConfig/initTableConfig.ts +40 -64
- package/lib/initProstgles.ts +1 -1
- package/lib/onSocketConnected.ts +8 -12
- package/lib/runClientRequest.ts +31 -54
- package/package.json +2 -2
- package/dist/Auth/getSafeReturnURL.d.ts.map +0 -1
- package/dist/Auth/getSafeReturnURL.js.map +0 -1
- package/dist/Auth/setEmailProvider.d.ts.map +0 -1
- package/dist/Auth/setEmailProvider.js +0 -133
- package/dist/Auth/setEmailProvider.js.map +0 -1
- package/dist/DboBuilder/runTransaction.d.ts +0 -9
- package/dist/DboBuilder/runTransaction.d.ts.map +0 -1
- package/dist/DboBuilder/runTransaction.js +0 -49
- package/dist/DboBuilder/runTransaction.js.map +0 -1
- package/lib/Auth/setEmailProvider.ts +0 -132
- package/lib/DboBuilder/QueryBuilder/prepareHaving.ts +0 -27
- package/lib/DboBuilder/runTransaction.ts +0 -61
- package/lib/SchemaWatch/createSchemaWatchEventTrigger.ts +0 -3
- /package/dist/Auth/{getSafeReturnURL.d.ts → utils/getSafeReturnURL.d.ts} +0 -0
- /package/dist/Auth/{getSafeReturnURL.js → utils/getSafeReturnURL.js} +0 -0
- /package/lib/Auth/{getSafeReturnURL.ts → utils/getSafeReturnURL.ts} +0 -0
package/lib/DboBuilder/runSQL.ts
CHANGED
|
@@ -1,14 +1,6 @@
|
|
|
1
|
-
import pgPromise, {
|
|
2
|
-
ParameterizedQuery as PQ,
|
|
3
|
-
ParameterizedQuery,
|
|
4
|
-
} from "pg-promise";
|
|
1
|
+
import pgPromise, { ParameterizedQuery as PQ, ParameterizedQuery } from "pg-promise";
|
|
5
2
|
import pg from "pg-promise/typescript/pg-subset";
|
|
6
|
-
import {
|
|
7
|
-
AnyObject,
|
|
8
|
-
SQLOptions,
|
|
9
|
-
SQLResult,
|
|
10
|
-
SQLResultInfo,
|
|
11
|
-
} from "prostgles-types";
|
|
3
|
+
import { AnyObject, SQLOptions, SQLResult, SQLResultInfo } from "prostgles-types";
|
|
12
4
|
import { DB, Prostgles } from "../Prostgles";
|
|
13
5
|
import { DboBuilder, LocalParams, pgp, postgresToTsType } from "./DboBuilder";
|
|
14
6
|
|
|
@@ -17,18 +9,16 @@ export async function runSQL(
|
|
|
17
9
|
queryWithoutRLS: string,
|
|
18
10
|
args: undefined | AnyObject | any[],
|
|
19
11
|
options: SQLOptions | undefined,
|
|
20
|
-
localParams?: LocalParams
|
|
12
|
+
localParams?: LocalParams
|
|
21
13
|
) {
|
|
22
14
|
const queryWithRLS = queryWithoutRLS;
|
|
23
15
|
if (
|
|
24
16
|
queryWithRLS
|
|
25
|
-
|
|
17
|
+
.replace(/\s\s+/g, " ")
|
|
26
18
|
.toLowerCase()
|
|
27
19
|
.includes("create extension pg_stat_statements")
|
|
28
20
|
) {
|
|
29
|
-
const { shared_preload_libraries } = await this.db.oneOrNone(
|
|
30
|
-
"SHOW shared_preload_libraries",
|
|
31
|
-
);
|
|
21
|
+
const { shared_preload_libraries } = await this.db.oneOrNone("SHOW shared_preload_libraries");
|
|
32
22
|
if (!(shared_preload_libraries || "").includes("pg_stat_statements")) {
|
|
33
23
|
throw (
|
|
34
24
|
"This query will crash the server (pg_stat_statements must be loaded via shared_preload_libraries). Need to: \n ALTER SYSTEM SET shared_preload_libraries = 'pg_stat_statements' \n" +
|
|
@@ -43,11 +33,7 @@ export async function runSQL(
|
|
|
43
33
|
throw "Not allowed to run SQL";
|
|
44
34
|
}
|
|
45
35
|
|
|
46
|
-
const {
|
|
47
|
-
returnType,
|
|
48
|
-
allowListen,
|
|
49
|
-
hasParams = true,
|
|
50
|
-
}: SQLOptions = options || ({} as SQLOptions);
|
|
36
|
+
const { returnType, allowListen, hasParams = true }: SQLOptions = options || ({} as SQLOptions);
|
|
51
37
|
const { socket } = localParams || {};
|
|
52
38
|
|
|
53
39
|
const db = localParams?.tx?.t || this.db;
|
|
@@ -71,16 +57,10 @@ export async function runSQL(
|
|
|
71
57
|
}
|
|
72
58
|
}
|
|
73
59
|
|
|
74
|
-
if (!db) {
|
|
75
|
-
throw "db is missing";
|
|
76
|
-
}
|
|
77
|
-
|
|
78
60
|
let finalQuery: string | ParameterizedQuery = queryWithRLS + "";
|
|
79
61
|
const isNotListenOrNotify =
|
|
80
62
|
returnType === "arrayMode" &&
|
|
81
|
-
!["listen ", "notify "].find((c) =>
|
|
82
|
-
queryWithoutRLS.toLowerCase().trim().startsWith(c),
|
|
83
|
-
);
|
|
63
|
+
!["listen ", "notify "].find((c) => queryWithoutRLS.toLowerCase().trim().startsWith(c));
|
|
84
64
|
if (isNotListenOrNotify) {
|
|
85
65
|
finalQuery = new PQ({
|
|
86
66
|
rowMode: "array",
|
|
@@ -92,16 +72,10 @@ export async function runSQL(
|
|
|
92
72
|
let queryResult: pgPromise.IResultExt<AnyObject> | undefined;
|
|
93
73
|
|
|
94
74
|
if (returnType === "default-with-rollback") {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
.
|
|
98
|
-
|
|
99
|
-
/** Rollback */
|
|
100
|
-
return Promise.reject(new Error(ROLLBACK));
|
|
101
|
-
})
|
|
102
|
-
.catch((e) => {
|
|
103
|
-
if (!(e instanceof Error && e.message === ROLLBACK)) throw e;
|
|
104
|
-
});
|
|
75
|
+
await db.tx(async (t) => {
|
|
76
|
+
queryResult = await t.result<AnyObject>(finalQuery, params);
|
|
77
|
+
await t.none("ROLLBACK");
|
|
78
|
+
});
|
|
105
79
|
} else {
|
|
106
80
|
queryResult = await db.result<AnyObject>(finalQuery, params);
|
|
107
81
|
}
|
|
@@ -112,7 +86,7 @@ export async function runSQL(
|
|
|
112
86
|
queryWithoutRLS,
|
|
113
87
|
queryResult,
|
|
114
88
|
allowListen,
|
|
115
|
-
localParams
|
|
89
|
+
localParams
|
|
116
90
|
);
|
|
117
91
|
if (listenHandlers) {
|
|
118
92
|
return listenHandlers;
|
|
@@ -123,9 +97,9 @@ export async function runSQL(
|
|
|
123
97
|
} else if (returnType === "row") {
|
|
124
98
|
return rows[0];
|
|
125
99
|
} else if (returnType === "value") {
|
|
126
|
-
return Object.values(rows
|
|
100
|
+
return Object.values(rows[0] ?? {})[0];
|
|
127
101
|
} else if (returnType === "values") {
|
|
128
|
-
return rows.map((r) => Object.values(r
|
|
102
|
+
return rows.map((r) => Object.values(r)[0]);
|
|
129
103
|
} else {
|
|
130
104
|
const qres: SQLResult<typeof returnType> = {
|
|
131
105
|
duration: 0,
|
|
@@ -141,7 +115,7 @@ const onSQLResult = async function (
|
|
|
141
115
|
queryWithoutRLS: string,
|
|
142
116
|
{ command }: Omit<SQLResultInfo, "duration">,
|
|
143
117
|
allowListen: boolean | undefined,
|
|
144
|
-
localParams?: LocalParams
|
|
118
|
+
localParams?: LocalParams
|
|
145
119
|
) {
|
|
146
120
|
this.prostgles.schemaWatch?.onSchemaChangeFallback?.({
|
|
147
121
|
command,
|
|
@@ -152,13 +126,10 @@ const onSQLResult = async function (
|
|
|
152
126
|
const { socket } = localParams || {};
|
|
153
127
|
if (!allowListen)
|
|
154
128
|
throw new Error(
|
|
155
|
-
`Your query contains a LISTEN command. Set { allowListen: true } to get subscription hooks. Or ignore this message
|
|
129
|
+
`Your query contains a LISTEN command. Set { allowListen: true } to get subscription hooks. Or ignore this message`
|
|
156
130
|
);
|
|
157
131
|
if (!socket) throw "Only allowed with client socket";
|
|
158
|
-
return await this.prostgles.dbEventsManager?.addNotify(
|
|
159
|
-
queryWithoutRLS,
|
|
160
|
-
socket,
|
|
161
|
-
);
|
|
132
|
+
return await this.prostgles.dbEventsManager?.addNotify(queryWithoutRLS, socket);
|
|
162
133
|
}
|
|
163
134
|
};
|
|
164
135
|
|
|
@@ -168,10 +139,8 @@ export async function cacheDBTypes(this: DboBuilder, force = false) {
|
|
|
168
139
|
this.USER_TABLES = undefined;
|
|
169
140
|
this.USER_TABLE_COLUMNS = undefined;
|
|
170
141
|
}
|
|
171
|
-
this.DATA_TYPES ??=
|
|
172
|
-
|
|
173
|
-
this.USER_TABLES ??=
|
|
174
|
-
(await this.db.any(`
|
|
142
|
+
this.DATA_TYPES ??= await this.db.any("SELECT oid, typname FROM pg_type");
|
|
143
|
+
this.USER_TABLES ??= await this.db.any(`
|
|
175
144
|
SELECT
|
|
176
145
|
relid,
|
|
177
146
|
relname,
|
|
@@ -187,7 +156,7 @@ export async function cacheDBTypes(this: DboBuilder, force = false) {
|
|
|
187
156
|
) c
|
|
188
157
|
ON t.relid = c.table_oid
|
|
189
158
|
GROUP BY relid, relname, schemaname
|
|
190
|
-
`)
|
|
159
|
+
`);
|
|
191
160
|
this.USER_TABLE_COLUMNS ??= await this.db.any(`
|
|
192
161
|
SELECT t.relid, t.schemaname,t.relname, c.column_name, c.udt_name, c.ordinal_position
|
|
193
162
|
FROM information_schema.columns c
|
|
@@ -197,35 +166,31 @@ export async function cacheDBTypes(this: DboBuilder, force = false) {
|
|
|
197
166
|
}
|
|
198
167
|
|
|
199
168
|
export function getDetailedFieldInfo(this: DboBuilder, fields: pg.IColumn[]) {
|
|
200
|
-
return (
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
columnName: column?.column_name,
|
|
219
|
-
};
|
|
220
|
-
}) ?? []
|
|
221
|
-
);
|
|
169
|
+
return fields.map((f) => {
|
|
170
|
+
const dataType = this.DATA_TYPES!.find((dt) => +dt.oid === +f.dataTypeID)?.typname ?? "text",
|
|
171
|
+
table = this.USER_TABLES!.find((t) => +t.relid === +f.tableID),
|
|
172
|
+
column = this.USER_TABLE_COLUMNS!.find(
|
|
173
|
+
(c) => +c.relid === +f.tableID && c.ordinal_position === f.columnID
|
|
174
|
+
),
|
|
175
|
+
tsDataType = postgresToTsType(dataType);
|
|
176
|
+
|
|
177
|
+
return {
|
|
178
|
+
...f,
|
|
179
|
+
tsDataType,
|
|
180
|
+
dataType,
|
|
181
|
+
udt_name: dataType,
|
|
182
|
+
tableName: table?.relname,
|
|
183
|
+
tableSchema: table?.schemaname,
|
|
184
|
+
columnName: column?.column_name,
|
|
185
|
+
};
|
|
186
|
+
});
|
|
222
187
|
}
|
|
223
188
|
|
|
224
189
|
export const canRunSQL = async (
|
|
225
190
|
prostgles: Prostgles,
|
|
226
|
-
localParams?: LocalParams
|
|
191
|
+
localParams?: LocalParams
|
|
227
192
|
): Promise<boolean> => {
|
|
228
|
-
if (!localParams?.socket || !localParams
|
|
193
|
+
if (!localParams?.socket || !localParams.httpReq) return true;
|
|
229
194
|
|
|
230
195
|
const { socket } = localParams;
|
|
231
196
|
const publishParams = await prostgles.publishParser!.getPublishParams({
|
|
@@ -239,5 +204,5 @@ export const canRunSQL = async (
|
|
|
239
204
|
export const canCreateTables = async (db: DB): Promise<boolean> => {
|
|
240
205
|
return db
|
|
241
206
|
.any(`SELECT has_database_privilege(current_database(), 'create') as yes`)
|
|
242
|
-
.then((rows) => rows
|
|
207
|
+
.then((rows) => rows[0].yes === true);
|
|
243
208
|
};
|
|
@@ -3,14 +3,14 @@ import { LocalParams, Media } from "./DboBuilder";
|
|
|
3
3
|
import { ValidateRowBasic } from "../PublishParser/PublishParser";
|
|
4
4
|
import { TableHandler } from "./TableHandler/TableHandler";
|
|
5
5
|
|
|
6
|
-
export const isFile = (row:
|
|
6
|
+
export const isFile = (row: any) => {
|
|
7
7
|
return Boolean(
|
|
8
8
|
row &&
|
|
9
9
|
isObject(row) &&
|
|
10
10
|
getKeys(row).sort().join() === ["name", "data"].sort().join() &&
|
|
11
11
|
row.data &&
|
|
12
12
|
(typeof row.data === "string" || Buffer.isBuffer(row.data)) &&
|
|
13
|
-
typeof row.name === "string"
|
|
13
|
+
typeof row.name === "string"
|
|
14
14
|
);
|
|
15
15
|
};
|
|
16
16
|
|
|
@@ -26,9 +26,9 @@ type UploadFileArgs = {
|
|
|
26
26
|
|
|
27
27
|
export async function uploadFile(
|
|
28
28
|
this: TableHandler,
|
|
29
|
-
{ row, localParams, validate, mediaId }: UploadFileArgs
|
|
29
|
+
{ row, localParams, validate, mediaId }: UploadFileArgs
|
|
30
30
|
): Promise<Media> {
|
|
31
|
-
if (!this.dboBuilder.prostgles
|
|
31
|
+
if (!this.dboBuilder.prostgles.fileManager) throw "fileManager not set up";
|
|
32
32
|
|
|
33
33
|
if (!isFile(row))
|
|
34
34
|
throw (
|
|
@@ -39,26 +39,16 @@ export async function uploadFile(
|
|
|
39
39
|
);
|
|
40
40
|
const { data, name } = row;
|
|
41
41
|
|
|
42
|
-
const media_id =
|
|
43
|
-
mediaId ??
|
|
44
|
-
(await this.db.oneOrNone("SELECT gen_random_uuid() as name")).name;
|
|
42
|
+
const media_id = mediaId ?? (await this.db.oneOrNone("SELECT gen_random_uuid() as name")).name;
|
|
45
43
|
const nestedInsert = localParams?.nestedInsert;
|
|
46
|
-
const type = await this.dboBuilder.prostgles.fileManager.getValidatedFileType(
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
},
|
|
53
|
-
);
|
|
44
|
+
const type = await this.dboBuilder.prostgles.fileManager.getValidatedFileType({
|
|
45
|
+
file: data,
|
|
46
|
+
fileName: name,
|
|
47
|
+
tableName: nestedInsert?.previousTable,
|
|
48
|
+
colName: nestedInsert?.referencingColumn,
|
|
49
|
+
});
|
|
54
50
|
const media_name = `${media_id}.${type.ext}`;
|
|
55
|
-
const parsedMediaKeys = [
|
|
56
|
-
"id",
|
|
57
|
-
"name",
|
|
58
|
-
"original_name",
|
|
59
|
-
"extension",
|
|
60
|
-
"content_type",
|
|
61
|
-
] as const;
|
|
51
|
+
const parsedMediaKeys = ["id", "name", "original_name", "extension", "content_type"] as const;
|
|
62
52
|
const media: Required<Pick<Media, (typeof parsedMediaKeys)[number]>> = {
|
|
63
53
|
id: media_id,
|
|
64
54
|
name: media_name,
|
|
@@ -80,21 +70,20 @@ export async function uploadFile(
|
|
|
80
70
|
}
|
|
81
71
|
}
|
|
82
72
|
|
|
83
|
-
const _media: Media =
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
});
|
|
73
|
+
const _media: Media = await this.dboBuilder.prostgles.fileManager.uploadAsMedia({
|
|
74
|
+
item: {
|
|
75
|
+
data,
|
|
76
|
+
name: media.name,
|
|
77
|
+
content_type: media.content_type as any,
|
|
78
|
+
extension: media.extension,
|
|
79
|
+
},
|
|
80
|
+
// imageCompression: {
|
|
81
|
+
// inside: {
|
|
82
|
+
// width: 1100,
|
|
83
|
+
// height: 630
|
|
84
|
+
// }
|
|
85
|
+
// }
|
|
86
|
+
});
|
|
98
87
|
|
|
99
88
|
const mediaRow = {
|
|
100
89
|
...media,
|
|
@@ -23,10 +23,7 @@ import { ExpressApp } from "../RestApi";
|
|
|
23
23
|
|
|
24
24
|
export const HOUR = 3600 * 1000;
|
|
25
25
|
|
|
26
|
-
export const asSQLIdentifier = async (
|
|
27
|
-
name: string,
|
|
28
|
-
db: DB,
|
|
29
|
-
): Promise<string> => {
|
|
26
|
+
export const asSQLIdentifier = async (name: string, db: DB): Promise<string> => {
|
|
30
27
|
return (await db.one("select format('%I', $1) as name", [name]))?.name;
|
|
31
28
|
};
|
|
32
29
|
|
|
@@ -54,9 +51,7 @@ export type FileUploadArgs = {
|
|
|
54
51
|
contentType: string;
|
|
55
52
|
file: string | Buffer | stream.PassThrough;
|
|
56
53
|
onFinish: (
|
|
57
|
-
...args:
|
|
58
|
-
| [error: Error, result: undefined]
|
|
59
|
-
| [error: undefined, result: UploadedCloudFile]
|
|
54
|
+
...args: [error: Error, result: undefined] | [error: undefined, result: UploadedCloudFile]
|
|
60
55
|
) => void;
|
|
61
56
|
onProgress?: (bytesUploaded: number) => void;
|
|
62
57
|
};
|
|
@@ -64,10 +59,7 @@ export type CloudClient = {
|
|
|
64
59
|
upload: (file: FileUploadArgs) => Promise<void>;
|
|
65
60
|
downloadAsStream: (name: string) => Promise<stream.Readable>;
|
|
66
61
|
delete: (fileName: string) => Promise<void>;
|
|
67
|
-
getSignedUrlForDownload: (
|
|
68
|
-
fileName: string,
|
|
69
|
-
expiresInSeconds: number,
|
|
70
|
-
) => Promise<string>;
|
|
62
|
+
getSignedUrlForDownload: (fileName: string, expiresInSeconds: number) => Promise<string>;
|
|
71
63
|
};
|
|
72
64
|
|
|
73
65
|
export type LocalConfig = {
|
|
@@ -161,14 +153,11 @@ export class FileManager {
|
|
|
161
153
|
}
|
|
162
154
|
} else {
|
|
163
155
|
console.error(
|
|
164
|
-
"FileManager checkInterval delayedDelete FAIL: Could not access file table tableHandler.delete()"
|
|
156
|
+
"FileManager checkInterval delayedDelete FAIL: Could not access file table tableHandler.delete()"
|
|
165
157
|
);
|
|
166
158
|
}
|
|
167
159
|
},
|
|
168
|
-
Math.max(
|
|
169
|
-
10000,
|
|
170
|
-
(fullConfig.delayedDelete.checkIntervalHours || 0) * HOUR,
|
|
171
|
-
),
|
|
160
|
+
Math.max(10000, (fullConfig.delayedDelete.checkIntervalHours || 0) * HOUR)
|
|
172
161
|
);
|
|
173
162
|
}
|
|
174
163
|
}
|
|
@@ -187,7 +176,7 @@ export class FileManager {
|
|
|
187
176
|
|
|
188
177
|
async deleteFile(name: string) {
|
|
189
178
|
if (this.cloudClient) {
|
|
190
|
-
const res = await this.cloudClient
|
|
179
|
+
const res = await this.cloudClient.delete(name);
|
|
191
180
|
return res;
|
|
192
181
|
} else if ("localFolderPath" in this.config) {
|
|
193
182
|
const path = `${this.config.localFolderPath}/${name}`;
|
|
@@ -202,8 +191,7 @@ export class FileManager {
|
|
|
202
191
|
|
|
203
192
|
getValidatedFileType = getValidatedFileType.bind(this);
|
|
204
193
|
|
|
205
|
-
getLocalFileUrl = (name: string) =>
|
|
206
|
-
this.fileRoute ? `${this.fileRoute}/${name}` : "";
|
|
194
|
+
getLocalFileUrl = (name: string) => (this.fileRoute ? `${this.fileRoute}/${name}` : "");
|
|
207
195
|
|
|
208
196
|
checkFreeSpace = async (folderPath: string, fileSize = 0) => {
|
|
209
197
|
if (!this.cloudClient && "localFolderPath" in this.config) {
|
|
@@ -229,8 +217,9 @@ export class FileManager {
|
|
|
229
217
|
dissallowedExtensions?: Array<ALLOWED_EXTENSION>;
|
|
230
218
|
imageOptions?: ImageOptions;
|
|
231
219
|
}): Promise<UploadedItem> => {
|
|
232
|
-
const { item
|
|
233
|
-
const { name, data, content_type
|
|
220
|
+
const { item } = params;
|
|
221
|
+
const { name, data, content_type } = item;
|
|
222
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
234
223
|
if (!data) throw "No file provided";
|
|
235
224
|
if (!name || typeof name !== "string") throw "Expecting a string name";
|
|
236
225
|
|
|
@@ -280,32 +269,24 @@ export class FileManager {
|
|
|
280
269
|
return res;
|
|
281
270
|
};
|
|
282
271
|
|
|
283
|
-
async getFileCloudDownloadURL(
|
|
284
|
-
fileName: string,
|
|
285
|
-
expiresInSecondsRaw: number = 30 * 60,
|
|
286
|
-
) {
|
|
272
|
+
async getFileCloudDownloadURL(fileName: string, expiresInSecondsRaw: number = 30 * 60) {
|
|
287
273
|
const expiresInSeconds = Math.max(1, Math.round(expiresInSecondsRaw));
|
|
288
|
-
return await this.cloudClient?.getSignedUrlForDownload(
|
|
289
|
-
fileName,
|
|
290
|
-
expiresInSeconds,
|
|
291
|
-
);
|
|
274
|
+
return await this.cloudClient?.getSignedUrlForDownload(fileName, expiresInSeconds);
|
|
292
275
|
}
|
|
293
276
|
|
|
294
|
-
parseSQLIdentifier = async (name: string) =>
|
|
295
|
-
asSQLIdentifier(name, this.prostgles!.db!); // this.prostgles.dbo.sql<"value">("select format('%I', $1)", [name], { returnType: "value" } )
|
|
277
|
+
parseSQLIdentifier = async (name: string) => asSQLIdentifier(name, this.prostgles!.db!); // this.prostgles.dbo.sql<"value">("select format('%I', $1)", [name], { returnType: "value" } )
|
|
296
278
|
|
|
297
279
|
getColInfo = (args: {
|
|
298
280
|
tableName: string;
|
|
299
281
|
colName: string;
|
|
300
282
|
}): ValidatedColumnInfo["file"] | undefined => {
|
|
301
283
|
const { colName, tableName } = args;
|
|
302
|
-
const tableConfig =
|
|
303
|
-
this.prostgles?.opts.fileTable?.referencedTables?.[tableName];
|
|
284
|
+
const tableConfig = this.prostgles?.opts.fileTable?.referencedTables?.[tableName];
|
|
304
285
|
const isReferencingFileTable = this.dbo[tableName]?.columns?.some(
|
|
305
286
|
(c) =>
|
|
306
287
|
c.name === colName &&
|
|
307
288
|
c.references &&
|
|
308
|
-
c.references
|
|
289
|
+
c.references.some(({ ftable }) => ftable === this.tableName)
|
|
309
290
|
);
|
|
310
291
|
const allowAllFiles = { acceptedContent: "*" } as const;
|
|
311
292
|
if (isReferencingFileTable) {
|
|
@@ -320,15 +301,13 @@ export class FileManager {
|
|
|
320
301
|
init = initFileManager.bind(this);
|
|
321
302
|
|
|
322
303
|
destroy = () => {
|
|
323
|
-
removeExpressRoute(this.prostgles?.opts.fileTable?.expressApp, [
|
|
324
|
-
this.fileRouteExpress,
|
|
325
|
-
]);
|
|
304
|
+
removeExpressRoute(this.prostgles?.opts.fileTable?.expressApp, [this.fileRouteExpress]);
|
|
326
305
|
};
|
|
327
306
|
}
|
|
328
307
|
|
|
329
308
|
export const removeExpressRoute = (
|
|
330
309
|
app: ExpressApp | undefined,
|
|
331
|
-
routePaths: (string | undefined)[]
|
|
310
|
+
routePaths: (string | undefined)[]
|
|
332
311
|
) => {
|
|
333
312
|
const routes = app?._router?.stack;
|
|
334
313
|
if (routes) {
|
|
@@ -340,10 +319,7 @@ export const removeExpressRoute = (
|
|
|
340
319
|
}
|
|
341
320
|
};
|
|
342
321
|
|
|
343
|
-
export const removeExpressRouteByName = (
|
|
344
|
-
app: ExpressApp | undefined,
|
|
345
|
-
name: string,
|
|
346
|
-
) => {
|
|
322
|
+
export const removeExpressRouteByName = (app: ExpressApp | undefined, name: string) => {
|
|
347
323
|
const routes = app?._router?.stack;
|
|
348
324
|
if (routes) {
|
|
349
325
|
routes.forEach((route, i) => {
|
|
@@ -355,17 +331,15 @@ export const removeExpressRouteByName = (
|
|
|
355
331
|
};
|
|
356
332
|
|
|
357
333
|
export const getFileTypeFromFilename = (
|
|
358
|
-
fileName: string
|
|
359
|
-
):
|
|
360
|
-
| { mime: ALLOWED_CONTENT_TYPE; ext: ALLOWED_EXTENSION | string }
|
|
361
|
-
| undefined => {
|
|
334
|
+
fileName: string
|
|
335
|
+
): { mime: ALLOWED_CONTENT_TYPE; ext: ALLOWED_EXTENSION | string } | undefined => {
|
|
362
336
|
const nameParts = fileName.split(".");
|
|
363
337
|
|
|
364
338
|
if (nameParts.length < 2) return undefined;
|
|
365
339
|
|
|
366
340
|
const nameExt = nameParts.at(-1)!.toLowerCase(),
|
|
367
341
|
mime = getKeys(CONTENT_TYPE_TO_EXT).find((k) =>
|
|
368
|
-
(CONTENT_TYPE_TO_EXT[k] as readonly string[]).includes(nameExt)
|
|
342
|
+
(CONTENT_TYPE_TO_EXT[k] as readonly string[]).includes(nameExt)
|
|
369
343
|
);
|
|
370
344
|
|
|
371
345
|
if (!mime) return undefined;
|
|
@@ -381,7 +355,7 @@ export const getFileTypeFromFilename = (
|
|
|
381
355
|
|
|
382
356
|
export const getFileType = async (
|
|
383
357
|
file: Buffer | string,
|
|
384
|
-
fileName: string
|
|
358
|
+
fileName: string
|
|
385
359
|
): Promise<{ mime: ALLOWED_CONTENT_TYPE; ext: ALLOWED_EXTENSION }> => {
|
|
386
360
|
const { fileTypeFromBuffer } = await (eval('import("file-type")') as Promise<
|
|
387
361
|
typeof import("file-type")
|
|
@@ -389,25 +363,20 @@ export const getFileType = async (
|
|
|
389
363
|
|
|
390
364
|
const fileNameMime = getFileTypeFromFilename(fileName);
|
|
391
365
|
if (!fileNameMime?.ext) throw new Error("File name must contain extenion");
|
|
392
|
-
const res = await fileTypeFromBuffer(
|
|
393
|
-
typeof file === "string" ? Buffer.from(file, "utf8") : file,
|
|
394
|
-
);
|
|
366
|
+
const res = await fileTypeFromBuffer(typeof file === "string" ? Buffer.from(file, "utf8") : file);
|
|
395
367
|
|
|
396
368
|
if (!res) {
|
|
397
369
|
/* Set correct/missing extension */
|
|
398
|
-
const nameExt = fileNameMime
|
|
399
|
-
if (
|
|
400
|
-
["xml", "txt", "csv", "tsv", "svg", "sql"].includes(nameExt) &&
|
|
401
|
-
fileNameMime.mime
|
|
402
|
-
) {
|
|
370
|
+
const nameExt = fileNameMime.ext;
|
|
371
|
+
if (["xml", "txt", "csv", "tsv", "svg", "sql"].includes(nameExt)) {
|
|
403
372
|
return fileNameMime as any;
|
|
404
373
|
}
|
|
405
374
|
|
|
406
375
|
throw new Error("Could not get the file type from file buffer");
|
|
407
376
|
} else {
|
|
408
|
-
if (
|
|
377
|
+
if (fileNameMime.ext.toLowerCase() !== res.ext.toLowerCase()) {
|
|
409
378
|
throw new Error(
|
|
410
|
-
`There is a mismatch between file name extension and actual buffer extension: ${fileNameMime
|
|
379
|
+
`There is a mismatch between file name extension and actual buffer extension: ${fileNameMime.ext} vs ${res.ext}`
|
|
411
380
|
);
|
|
412
381
|
}
|
|
413
382
|
}
|