prostgles-server 4.2.183 → 4.2.185
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/.github/workflows/main.yml +15 -15
- package/.prettierignore +2 -0
- package/README.md +1 -1
- package/dist/Auth/AuthHandler.d.ts +1 -1
- package/dist/Auth/AuthHandler.d.ts.map +1 -1
- package/dist/Auth/AuthHandler.js +64 -32
- package/dist/Auth/AuthHandler.js.map +1 -1
- package/dist/Auth/AuthTypes.d.ts +15 -1
- package/dist/Auth/AuthTypes.d.ts.map +1 -1
- package/dist/Auth/getSafeReturnURL.d.ts.map +1 -1
- package/dist/Auth/getSafeReturnURL.js.map +1 -1
- package/dist/Auth/sendEmail.d.ts.map +1 -1
- package/dist/Auth/sendEmail.js +6 -6
- package/dist/Auth/sendEmail.js.map +1 -1
- package/dist/Auth/setAuthProviders.d.ts +1 -1
- package/dist/Auth/setAuthProviders.d.ts.map +1 -1
- package/dist/Auth/setAuthProviders.js +15 -8
- package/dist/Auth/setAuthProviders.js.map +1 -1
- package/dist/Auth/setEmailProvider.d.ts.map +1 -1
- package/dist/Auth/setEmailProvider.js +23 -4
- package/dist/Auth/setEmailProvider.js.map +1 -1
- package/dist/Auth/setupAuthRoutes.d.ts.map +1 -1
- package/dist/Auth/setupAuthRoutes.js +27 -9
- package/dist/Auth/setupAuthRoutes.js.map +1 -1
- package/dist/DBEventsManager.d.ts.map +1 -1
- package/dist/DBEventsManager.js +24 -19
- package/dist/DBEventsManager.js.map +1 -1
- package/dist/DBSchemaBuilder.d.ts.map +1 -1
- package/dist/DBSchemaBuilder.js +18 -5
- package/dist/DBSchemaBuilder.js.map +1 -1
- package/dist/DboBuilder/DboBuilder.d.ts.map +1 -1
- package/dist/DboBuilder/DboBuilder.js +7 -2
- 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 +2 -2
- package/dist/DboBuilder/QueryBuilder/Functions.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/Functions.js +293 -173
- package/dist/DboBuilder/QueryBuilder/Functions.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.d.ts +2 -2
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.js +52 -29
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getJoinQuery.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getJoinQuery.js +51 -32
- package/dist/DboBuilder/QueryBuilder/getJoinQuery.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getNewQuery.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getNewQuery.js +48 -25
- 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 +32 -23
- package/dist/DboBuilder/QueryBuilder/getSelectQuery.js.map +1 -1
- package/dist/DboBuilder/QueryStreamer.d.ts +2 -2
- package/dist/DboBuilder/QueryStreamer.d.ts.map +1 -1
- package/dist/DboBuilder/QueryStreamer.js +68 -23
- 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 +79 -43
- 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 +39 -15
- 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 +44 -13
- 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 +81 -22
- package/dist/DboBuilder/TableHandler/insert.js.map +1 -1
- package/dist/DboBuilder/TableHandler/insertTest.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/insertTest.js.map +1 -1
- package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.d.ts +1 -1
- package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js +7 -4
- package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js.map +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js +24 -5
- 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 +16 -4
- 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 +33 -10
- package/dist/DboBuilder/TableHandler/updateBatch.js.map +1 -1
- package/dist/DboBuilder/TableHandler/updateFile.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/updateFile.js +24 -6
- 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 +22 -6
- package/dist/DboBuilder/TableHandler/upsert.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts +5 -5
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.js +64 -36
- 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 +21 -7
- 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 +76 -22
- 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 +19 -10
- package/dist/DboBuilder/ViewHandler/getExistsCondition.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/getExistsFilters.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/getExistsFilters.js +12 -5
- package/dist/DboBuilder/ViewHandler/getExistsFilters.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/getInfo.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/getInfo.js +27 -9
- package/dist/DboBuilder/ViewHandler/getInfo.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/getTableJoinQuery.d.ts +2 -2
- package/dist/DboBuilder/ViewHandler/getTableJoinQuery.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js +42 -23
- package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseComplexFilter.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseComplexFilter.js +22 -9
- package/dist/DboBuilder/ViewHandler/parseComplexFilter.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseFieldFilter.d.ts +4 -4
- package/dist/DboBuilder/ViewHandler/parseFieldFilter.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseFieldFilter.js +13 -11
- package/dist/DboBuilder/ViewHandler/parseFieldFilter.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseJoinPath.d.ts +1 -1
- package/dist/DboBuilder/ViewHandler/parseJoinPath.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseJoinPath.js +44 -29
- 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 +36 -27
- 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 +16 -12
- package/dist/DboBuilder/ViewHandler/prepareWhere.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/size.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/size.js +24 -7
- 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 +40 -12
- package/dist/DboBuilder/ViewHandler/subscribe.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/validateViewRules.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/validateViewRules.js +20 -5
- package/dist/DboBuilder/ViewHandler/validateViewRules.js.map +1 -1
- package/dist/DboBuilder/dboBuilderUtils.d.ts.map +1 -1
- package/dist/DboBuilder/dboBuilderUtils.js +18 -7
- package/dist/DboBuilder/dboBuilderUtils.js.map +1 -1
- package/dist/DboBuilder/getColumns.d.ts.map +1 -1
- package/dist/DboBuilder/getColumns.js +22 -7
- package/dist/DboBuilder/getColumns.js.map +1 -1
- package/dist/DboBuilder/getCondition.d.ts.map +1 -1
- package/dist/DboBuilder/getCondition.js +43 -30
- package/dist/DboBuilder/getCondition.js.map +1 -1
- package/dist/DboBuilder/getSubscribeRelatedTables.d.ts.map +1 -1
- package/dist/DboBuilder/getSubscribeRelatedTables.js +38 -27
- package/dist/DboBuilder/getSubscribeRelatedTables.js.map +1 -1
- package/dist/DboBuilder/getTablesForSchemaPostgresSQL.d.ts.map +1 -1
- package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js +9 -9
- package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js.map +1 -1
- package/dist/DboBuilder/insertNestedRecords.d.ts +3 -3
- package/dist/DboBuilder/insertNestedRecords.d.ts.map +1 -1
- package/dist/DboBuilder/insertNestedRecords.js +79 -44
- package/dist/DboBuilder/insertNestedRecords.js.map +1 -1
- package/dist/DboBuilder/parseUpdateRules.d.ts.map +1 -1
- package/dist/DboBuilder/parseUpdateRules.js +38 -14
- package/dist/DboBuilder/parseUpdateRules.js.map +1 -1
- package/dist/DboBuilder/prepareShortestJoinPaths.d.ts.map +1 -1
- package/dist/DboBuilder/prepareShortestJoinPaths.js +56 -31
- package/dist/DboBuilder/prepareShortestJoinPaths.js.map +1 -1
- package/dist/DboBuilder/runSQL.d.ts.map +1 -1
- package/dist/DboBuilder/runSQL.js +41 -21
- package/dist/DboBuilder/runSQL.js.map +1 -1
- package/dist/DboBuilder/runTransaction.d.ts +1 -1
- package/dist/DboBuilder/runTransaction.d.ts.map +1 -1
- package/dist/DboBuilder/runTransaction.js +2 -2
- package/dist/DboBuilder/runTransaction.js.map +1 -1
- package/dist/DboBuilder/sqlErrCodeToMsg.d.ts.map +1 -1
- package/dist/DboBuilder/sqlErrCodeToMsg.js +297 -38
- package/dist/DboBuilder/sqlErrCodeToMsg.js.map +1 -1
- package/dist/DboBuilder/uploadFile.d.ts.map +1 -1
- package/dist/DboBuilder/uploadFile.js +33 -9
- package/dist/DboBuilder/uploadFile.js.map +1 -1
- package/dist/Event_Trigger_Tags.d.ts +1 -1
- package/dist/Event_Trigger_Tags.d.ts.map +1 -1
- package/dist/Event_Trigger_Tags.js +1 -1
- package/dist/Event_Trigger_Tags.js.map +1 -1
- package/dist/FileManager/FileManager.d.ts.map +1 -1
- package/dist/FileManager/FileManager.js +6 -3
- package/dist/FileManager/FileManager.js.map +1 -1
- package/dist/FileManager/getValidatedFileType.d.ts.map +1 -1
- package/dist/FileManager/getValidatedFileType.js +18 -16
- package/dist/FileManager/getValidatedFileType.js.map +1 -1
- package/dist/FileManager/initFileManager.d.ts.map +1 -1
- package/dist/FileManager/initFileManager.js +7 -1
- package/dist/FileManager/initFileManager.js.map +1 -1
- package/dist/FileManager/upload.d.ts +1 -1
- package/dist/FileManager/upload.d.ts.map +1 -1
- package/dist/FileManager/upload.js +3 -3
- package/dist/FileManager/upload.js.map +1 -1
- package/dist/FileManager/uploadStream.d.ts +1 -1
- package/dist/FileManager/uploadStream.d.ts.map +1 -1
- package/dist/FileManager/uploadStream.js +6 -7
- package/dist/FileManager/uploadStream.js.map +1 -1
- package/dist/Filtering.d.ts +3 -3
- package/dist/Filtering.d.ts.map +1 -1
- package/dist/Filtering.js +70 -37
- package/dist/Filtering.js.map +1 -1
- package/dist/JSONBValidation/validate_jsonb_schema_sql.d.ts.map +1 -1
- package/dist/JSONBValidation/validate_jsonb_schema_sql.js +1 -4
- package/dist/JSONBValidation/validate_jsonb_schema_sql.js.map +1 -1
- package/dist/JSONBValidation/validation.d.ts.map +1 -1
- package/dist/JSONBValidation/validation.js +46 -24
- package/dist/JSONBValidation/validation.js.map +1 -1
- package/dist/Logging.d.ts +2 -2
- package/dist/Logging.d.ts.map +1 -1
- package/dist/PostgresNotifListenManager.d.ts.map +1 -1
- package/dist/PostgresNotifListenManager.js +20 -22
- 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 +37 -11
- package/dist/Prostgles.js.map +1 -1
- package/dist/ProstglesTypes.d.ts.map +1 -1
- package/dist/ProstglesTypes.js +6 -1
- package/dist/ProstglesTypes.js.map +1 -1
- package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
- package/dist/PubSubManager/PubSubManager.js +10 -5
- package/dist/PubSubManager/PubSubManager.js.map +1 -1
- package/dist/PubSubManager/addSub.d.ts.map +1 -1
- package/dist/PubSubManager/addSub.js +4 -6
- package/dist/PubSubManager/addSub.js.map +1 -1
- package/dist/PubSubManager/addSync.d.ts.map +1 -1
- package/dist/PubSubManager/addSync.js +10 -6
- package/dist/PubSubManager/addSync.js.map +1 -1
- package/dist/PubSubManager/getCreatePubSubManagerError.d.ts.map +1 -1
- package/dist/PubSubManager/getCreatePubSubManagerError.js +3 -1
- package/dist/PubSubManager/getCreatePubSubManagerError.js.map +1 -1
- package/dist/PubSubManager/getPubSubManagerInitQuery.d.ts.map +1 -1
- package/dist/PubSubManager/getPubSubManagerInitQuery.js +8 -8
- package/dist/PubSubManager/getPubSubManagerInitQuery.js.map +1 -1
- package/dist/PubSubManager/initPubSubManager.d.ts.map +1 -1
- package/dist/PubSubManager/initPubSubManager.js +7 -9
- package/dist/PubSubManager/initPubSubManager.js.map +1 -1
- package/dist/PubSubManager/notifListener.d.ts.map +1 -1
- package/dist/PubSubManager/notifListener.js +23 -12
- package/dist/PubSubManager/notifListener.js.map +1 -1
- package/dist/PubSubManager/orphanTriggerCheck.d.ts.map +1 -1
- package/dist/PubSubManager/orphanTriggerCheck.js.map +1 -1
- package/dist/PubSubManager/pushSubData.d.ts.map +1 -1
- package/dist/PubSubManager/pushSubData.js +1 -1
- package/dist/PubSubManager/pushSubData.js.map +1 -1
- package/dist/PublishParser/PublishParser.d.ts +1 -1
- package/dist/PublishParser/PublishParser.d.ts.map +1 -1
- package/dist/PublishParser/PublishParser.js +25 -14
- package/dist/PublishParser/PublishParser.js.map +1 -1
- package/dist/PublishParser/getFileTableRules.d.ts.map +1 -1
- package/dist/PublishParser/getFileTableRules.js +23 -16
- package/dist/PublishParser/getFileTableRules.js.map +1 -1
- package/dist/PublishParser/getSchemaFromPublish.d.ts.map +1 -1
- package/dist/PublishParser/getSchemaFromPublish.js +39 -16
- package/dist/PublishParser/getSchemaFromPublish.js.map +1 -1
- package/dist/PublishParser/getTableRulesWithoutFileTable.d.ts.map +1 -1
- package/dist/PublishParser/getTableRulesWithoutFileTable.js +42 -22
- package/dist/PublishParser/getTableRulesWithoutFileTable.js.map +1 -1
- package/dist/PublishParser/publishTypesAndUtils.d.ts.map +1 -1
- package/dist/PublishParser/publishTypesAndUtils.js +5 -1
- package/dist/PublishParser/publishTypesAndUtils.js.map +1 -1
- package/dist/RestApi.d.ts +1 -1
- package/dist/RestApi.d.ts.map +1 -1
- package/dist/RestApi.js +1 -1
- package/dist/RestApi.js.map +1 -1
- package/dist/SchemaWatch/SchemaWatch.d.ts +2 -2
- package/dist/SchemaWatch/SchemaWatch.d.ts.map +1 -1
- package/dist/SchemaWatch/SchemaWatch.js +11 -9
- package/dist/SchemaWatch/SchemaWatch.js.map +1 -1
- package/dist/SchemaWatch/getValidatedWatchSchemaType.d.ts.map +1 -1
- package/dist/SchemaWatch/getValidatedWatchSchemaType.js +3 -3
- package/dist/SchemaWatch/getValidatedWatchSchemaType.js.map +1 -1
- package/dist/SchemaWatch/getWatchSchemaTagList.d.ts.map +1 -1
- package/dist/SchemaWatch/getWatchSchemaTagList.js +12 -6
- package/dist/SchemaWatch/getWatchSchemaTagList.js.map +1 -1
- package/dist/SyncReplication.d.ts.map +1 -1
- package/dist/SyncReplication.js +84 -42
- package/dist/SyncReplication.js.map +1 -1
- package/dist/TableConfig/TableConfig.d.ts +5 -5
- package/dist/TableConfig/TableConfig.d.ts.map +1 -1
- package/dist/TableConfig/TableConfig.js +18 -5
- package/dist/TableConfig/TableConfig.js.map +1 -1
- package/dist/TableConfig/getColumnDefinitionQuery.d.ts +2 -2
- package/dist/TableConfig/getColumnDefinitionQuery.d.ts.map +1 -1
- package/dist/TableConfig/getColumnDefinitionQuery.js +20 -9
- package/dist/TableConfig/getColumnDefinitionQuery.js.map +1 -1
- package/dist/TableConfig/getConstraintDefinitionQueries.d.ts +3 -3
- package/dist/TableConfig/getConstraintDefinitionQueries.d.ts.map +1 -1
- package/dist/TableConfig/getConstraintDefinitionQueries.js +12 -7
- package/dist/TableConfig/getConstraintDefinitionQueries.js.map +1 -1
- package/dist/TableConfig/getFutureTableSchema.d.ts +1 -1
- package/dist/TableConfig/getFutureTableSchema.d.ts.map +1 -1
- package/dist/TableConfig/getFutureTableSchema.js +6 -4
- package/dist/TableConfig/getFutureTableSchema.js.map +1 -1
- package/dist/TableConfig/getPGIndexes.d.ts.map +1 -1
- package/dist/TableConfig/getPGIndexes.js.map +1 -1
- package/dist/TableConfig/getTableColumnQueries.d.ts +1 -1
- package/dist/TableConfig/getTableColumnQueries.d.ts.map +1 -1
- package/dist/TableConfig/getTableColumnQueries.js +38 -19
- package/dist/TableConfig/getTableColumnQueries.js.map +1 -1
- package/dist/TableConfig/initTableConfig.d.ts.map +1 -1
- package/dist/TableConfig/initTableConfig.js +91 -43
- package/dist/TableConfig/initTableConfig.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/initProstgles.d.ts.map +1 -1
- package/dist/initProstgles.js +14 -10
- package/dist/initProstgles.js.map +1 -1
- package/dist/onSocketConnected.d.ts.map +1 -1
- package/dist/onSocketConnected.js +38 -16
- package/dist/onSocketConnected.js.map +1 -1
- package/dist/runClientRequest.d.ts.map +1 -1
- package/dist/runClientRequest.js +33 -14
- package/dist/runClientRequest.js.map +1 -1
- package/dist/shortestPath.d.ts.map +1 -1
- package/dist/shortestPath.js +1 -1
- package/dist/shortestPath.js.map +1 -1
- package/dist/typeTests/dboTypeCheck.js.map +1 -1
- package/examples/full-example-typescript/DBoGenerated.d.ts +112 -54
- package/examples/full-example-typescript/DBoGenerated.js +3 -3
- package/examples/full-example-typescript/home.html +28 -26
- package/examples/full-example-typescript/index.d.ts +1 -1
- package/examples/full-example-typescript/index.js +80 -53
- package/examples/full-example-vanilla/home.html +151 -125
- package/examples/server/javascript/index.js +17 -19
- package/lib/Auth/AuthHandler.ts +234 -155
- package/lib/Auth/AuthTypes.ts +27 -4
- package/lib/Auth/getSafeReturnURL.ts +35 -21
- package/lib/Auth/sendEmail.ts +34 -31
- package/lib/Auth/setAuthProviders.ts +94 -71
- package/lib/Auth/setEmailProvider.ts +45 -27
- package/lib/Auth/setupAuthRoutes.ts +164 -100
- package/lib/DBEventsManager.ts +87 -65
- package/lib/DBSchemaBuilder.ts +62 -28
- package/lib/DboBuilder/DboBuilder.ts +45 -21
- package/lib/DboBuilder/DboBuilderTypes.ts +99 -95
- package/lib/DboBuilder/QueryBuilder/Functions.ts +862 -580
- package/lib/DboBuilder/QueryBuilder/QueryBuilder.ts +202 -141
- package/lib/DboBuilder/QueryBuilder/getJoinQuery.ts +199 -124
- package/lib/DboBuilder/QueryBuilder/getNewQuery.ts +209 -148
- package/lib/DboBuilder/QueryBuilder/getSelectQuery.ts +101 -75
- package/lib/DboBuilder/QueryBuilder/prepareHaving.ts +10 -5
- package/lib/DboBuilder/QueryStreamer.ts +207 -100
- package/lib/DboBuilder/TableHandler/DataValidator.ts +253 -148
- package/lib/DboBuilder/TableHandler/TableHandler.ts +155 -60
- package/lib/DboBuilder/TableHandler/delete.ts +82 -29
- package/lib/DboBuilder/TableHandler/insert.ts +177 -81
- package/lib/DboBuilder/TableHandler/insertTest.ts +13 -7
- package/lib/DboBuilder/TableHandler/onDeleteFromFileTable.ts +35 -21
- package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +95 -45
- package/lib/DboBuilder/TableHandler/update.ts +54 -14
- package/lib/DboBuilder/TableHandler/updateBatch.ts +59 -21
- package/lib/DboBuilder/TableHandler/updateFile.ts +57 -26
- package/lib/DboBuilder/TableHandler/upsert.ts +58 -13
- package/lib/DboBuilder/ViewHandler/ViewHandler.ts +264 -121
- package/lib/DboBuilder/ViewHandler/count.ts +56 -25
- package/lib/DboBuilder/ViewHandler/find.ts +153 -68
- package/lib/DboBuilder/ViewHandler/getExistsCondition.ts +59 -32
- package/lib/DboBuilder/ViewHandler/getExistsFilters.ts +31 -19
- package/lib/DboBuilder/ViewHandler/getInfo.ts +47 -16
- package/lib/DboBuilder/ViewHandler/getTableJoinQuery.ts +91 -57
- package/lib/DboBuilder/ViewHandler/parseComplexFilter.ts +51 -29
- package/lib/DboBuilder/ViewHandler/parseFieldFilter.ts +35 -29
- package/lib/DboBuilder/ViewHandler/parseJoinPath.ts +130 -76
- package/lib/DboBuilder/ViewHandler/prepareSortItems.ts +140 -92
- package/lib/DboBuilder/ViewHandler/prepareWhere.ts +66 -26
- package/lib/DboBuilder/ViewHandler/size.ts +56 -22
- package/lib/DboBuilder/ViewHandler/subscribe.ts +122 -46
- package/lib/DboBuilder/ViewHandler/validateViewRules.ts +39 -14
- package/lib/DboBuilder/dboBuilderUtils.ts +41 -18
- package/lib/DboBuilder/getColumns.ts +44 -12
- package/lib/DboBuilder/getCondition.ts +120 -79
- package/lib/DboBuilder/getSubscribeRelatedTables.ts +144 -83
- package/lib/DboBuilder/getTablesForSchemaPostgresSQL.ts +61 -44
- package/lib/DboBuilder/insertNestedRecords.ts +370 -235
- package/lib/DboBuilder/parseUpdateRules.ts +117 -61
- package/lib/DboBuilder/prepareShortestJoinPaths.ts +115 -56
- package/lib/DboBuilder/runSQL.ts +135 -74
- package/lib/DboBuilder/runTransaction.ts +27 -16
- package/lib/DboBuilder/sqlErrCodeToMsg.ts +502 -244
- package/lib/DboBuilder/uploadFile.ts +67 -31
- package/lib/Event_Trigger_Tags.ts +6 -4
- package/lib/FileManager/FileManager.ts +53 -21
- package/lib/FileManager/getValidatedFileType.ts +79 -35
- package/lib/FileManager/initFileManager.ts +21 -9
- package/lib/FileManager/upload.ts +21 -19
- package/lib/FileManager/uploadStream.ts +33 -34
- package/lib/Filtering.ts +249 -197
- package/lib/JSONBValidation/validate_jsonb_schema_sql.ts +2 -7
- package/lib/JSONBValidation/validation.ts +147 -82
- package/lib/Logging.ts +107 -97
- package/lib/PostgresNotifListenManager.ts +96 -63
- package/lib/Prostgles.ts +106 -35
- package/lib/ProstglesTypes.ts +31 -9
- package/lib/PubSubManager/PubSubManager.ts +62 -27
- package/lib/PubSubManager/addSub.ts +56 -37
- package/lib/PubSubManager/addSync.ts +50 -33
- package/lib/PubSubManager/getCreatePubSubManagerError.ts +29 -21
- package/lib/PubSubManager/getPubSubManagerInitQuery.ts +45 -27
- package/lib/PubSubManager/initPubSubManager.ts +27 -18
- package/lib/PubSubManager/notifListener.ts +77 -59
- package/lib/PubSubManager/orphanTriggerCheck.ts +5 -4
- package/lib/PubSubManager/pushSubData.ts +11 -9
- package/lib/PublishParser/PublishParser.ts +102 -44
- package/lib/PublishParser/getFileTableRules.ts +97 -54
- package/lib/PublishParser/getSchemaFromPublish.ts +146 -74
- package/lib/PublishParser/getTableRulesWithoutFileTable.ts +101 -51
- package/lib/PublishParser/publishTypesAndUtils.ts +74 -23
- package/lib/RestApi.ts +10 -2
- package/lib/SchemaWatch/SchemaWatch.ts +52 -34
- package/lib/SchemaWatch/createSchemaWatchEventTrigger.ts +1 -1
- package/lib/SchemaWatch/getValidatedWatchSchemaType.ts +32 -22
- package/lib/SchemaWatch/getWatchSchemaTagList.ts +24 -16
- package/lib/SyncReplication.ts +376 -190
- package/lib/TableConfig/TableConfig.ts +200 -136
- package/lib/TableConfig/getColumnDefinitionQuery.ts +65 -44
- package/lib/TableConfig/getConstraintDefinitionQueries.ts +41 -25
- package/lib/TableConfig/getFutureTableSchema.ts +31 -21
- package/lib/TableConfig/getPGIndexes.ts +7 -4
- package/lib/TableConfig/getTableColumnQueries.ts +101 -54
- package/lib/TableConfig/initTableConfig.ts +192 -101
- package/lib/index.ts +6 -5
- package/lib/initProstgles.ts +57 -51
- package/lib/onSocketConnected.ts +75 -40
- package/lib/runClientRequest.ts +148 -79
- package/lib/shortestPath.ts +80 -76
- package/lib/typeTests/DBoGenerated.d.ts +5 -1
- package/lib/typeTests/dboTypeCheck.ts +8 -8
- package/package.json +1 -1
package/lib/onSocketConnected.ts
CHANGED
|
@@ -8,16 +8,16 @@ export async function onSocketConnected(this: Prostgles, socket: PRGLIOSocket) {
|
|
|
8
8
|
if (this.destroyed) {
|
|
9
9
|
console.log("Socket connected to destroyed instance");
|
|
10
10
|
socket.disconnect();
|
|
11
|
-
return
|
|
11
|
+
return;
|
|
12
12
|
}
|
|
13
13
|
this.connectedSockets.push(socket);
|
|
14
14
|
|
|
15
15
|
try {
|
|
16
16
|
await this.opts.onLog?.({
|
|
17
|
-
type: "connect",
|
|
17
|
+
type: "connect",
|
|
18
18
|
sid: this.authHandler?.getSID({ socket }),
|
|
19
19
|
socketId: socket.id,
|
|
20
|
-
connectedSocketIds: this.connectedSockets.map(s => s.id)
|
|
20
|
+
connectedSocketIds: this.connectedSockets.map((s) => s.id),
|
|
21
21
|
});
|
|
22
22
|
|
|
23
23
|
if (!this.db || !this.dbo) throw new Error("db/dbo missing");
|
|
@@ -25,78 +25,113 @@ export async function onSocketConnected(this: Prostgles, socket: PRGLIOSocket) {
|
|
|
25
25
|
|
|
26
26
|
if (this.opts.onSocketConnect) {
|
|
27
27
|
try {
|
|
28
|
-
const getUser = async () => {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
const getUser = async () => {
|
|
29
|
+
return await this.authHandler?.getClientInfo({ socket });
|
|
30
|
+
};
|
|
31
|
+
await this.opts.onSocketConnect({
|
|
32
|
+
socket,
|
|
33
|
+
dbo: dbo as any,
|
|
34
|
+
db,
|
|
35
|
+
getUser,
|
|
36
|
+
});
|
|
37
|
+
} catch (error) {
|
|
38
|
+
const connectionError =
|
|
39
|
+
error instanceof Error
|
|
40
|
+
? error.message
|
|
41
|
+
: typeof error === "string"
|
|
42
|
+
? error
|
|
43
|
+
: JSON.stringify(error);
|
|
32
44
|
socket.emit(CHANNELS.CONNECTION, { connectionError });
|
|
33
45
|
socket.disconnect();
|
|
34
46
|
return;
|
|
35
47
|
}
|
|
36
48
|
}
|
|
37
49
|
|
|
38
|
-
socket.removeAllListeners(CHANNELS.DEFAULT)
|
|
39
|
-
socket.on(
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
|
|
50
|
+
socket.removeAllListeners(CHANNELS.DEFAULT);
|
|
51
|
+
socket.on(
|
|
52
|
+
CHANNELS.DEFAULT,
|
|
53
|
+
async (
|
|
54
|
+
args: SocketRequestParams,
|
|
55
|
+
cb = (..._callback: any[]) => {
|
|
56
|
+
/* Empty */
|
|
57
|
+
},
|
|
58
|
+
) => {
|
|
59
|
+
runClientRequest
|
|
60
|
+
.bind(this)({ ...args, type: "socket", socket })
|
|
61
|
+
.then((res) => {
|
|
62
|
+
cb(null, res);
|
|
63
|
+
})
|
|
64
|
+
.catch((err) => {
|
|
65
|
+
cb(err);
|
|
66
|
+
});
|
|
67
|
+
},
|
|
68
|
+
);
|
|
47
69
|
|
|
48
70
|
socket.on("disconnect", () => {
|
|
49
|
-
|
|
50
71
|
this.dbEventsManager?.removeNotice(socket);
|
|
51
72
|
this.dbEventsManager?.removeNotify(undefined, socket);
|
|
52
|
-
this.connectedSockets = this.connectedSockets.filter(
|
|
73
|
+
this.connectedSockets = this.connectedSockets.filter(
|
|
74
|
+
(s) => s.id !== socket.id,
|
|
75
|
+
);
|
|
53
76
|
this.dboBuilder.queryStreamer.onDisconnect(socket.id);
|
|
54
|
-
this.opts.onLog?.({
|
|
55
|
-
type: "disconnect",
|
|
77
|
+
this.opts.onLog?.({
|
|
78
|
+
type: "disconnect",
|
|
56
79
|
sid: this.authHandler?.getSID({ socket }),
|
|
57
80
|
socketId: socket.id,
|
|
58
|
-
connectedSocketIds: this.connectedSockets.map(s => s.id)
|
|
81
|
+
connectedSocketIds: this.connectedSockets.map((s) => s.id),
|
|
59
82
|
});
|
|
60
83
|
|
|
61
84
|
if (this.opts.onSocketDisconnect) {
|
|
62
|
-
const getUser = async () => {
|
|
85
|
+
const getUser = async () => {
|
|
86
|
+
return await this.authHandler?.getClientInfo({ socket });
|
|
87
|
+
};
|
|
63
88
|
this.opts.onSocketDisconnect({ socket, dbo: dbo as any, db, getUser });
|
|
64
89
|
}
|
|
65
90
|
});
|
|
66
91
|
|
|
67
|
-
socket.removeAllListeners(CHANNELS.METHOD)
|
|
68
|
-
socket.on(
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
92
|
+
socket.removeAllListeners(CHANNELS.METHOD);
|
|
93
|
+
socket.on(
|
|
94
|
+
CHANNELS.METHOD,
|
|
95
|
+
async (
|
|
96
|
+
{ method, params }: SocketMethodRequest,
|
|
97
|
+
cb = (..._callback: any) => {
|
|
98
|
+
/* Empty */
|
|
99
|
+
},
|
|
100
|
+
) => {
|
|
101
|
+
runClientMethod
|
|
102
|
+
.bind(this)({
|
|
103
|
+
type: "socket",
|
|
104
|
+
socket,
|
|
105
|
+
method,
|
|
106
|
+
params,
|
|
107
|
+
})
|
|
108
|
+
.then((res) => {
|
|
109
|
+
cb(null, res);
|
|
110
|
+
})
|
|
111
|
+
.catch((err) => {
|
|
112
|
+
makeSocketError(cb, err);
|
|
113
|
+
});
|
|
114
|
+
},
|
|
115
|
+
);
|
|
80
116
|
|
|
81
117
|
this.pushSocketSchema(socket);
|
|
82
118
|
} catch (e) {
|
|
83
|
-
console.trace("setSocketEvents: ", e)
|
|
119
|
+
console.trace("setSocketEvents: ", e);
|
|
84
120
|
}
|
|
85
121
|
}
|
|
86
122
|
|
|
87
|
-
|
|
88
123
|
export function makeSocketError(cb: (err: AnyObject) => void, err: any) {
|
|
89
124
|
cb(getErrorAsObject(err));
|
|
90
125
|
}
|
|
91
126
|
|
|
92
127
|
type SocketRequestParams = {
|
|
93
128
|
tableName: string;
|
|
94
|
-
command: typeof TABLE_METHODS[number];
|
|
129
|
+
command: (typeof TABLE_METHODS)[number];
|
|
95
130
|
param1: any;
|
|
96
131
|
param2: any;
|
|
97
132
|
param3: any;
|
|
98
|
-
}
|
|
133
|
+
};
|
|
99
134
|
type SocketMethodRequest = {
|
|
100
135
|
method: string;
|
|
101
136
|
params: any;
|
|
102
|
-
}
|
|
137
|
+
};
|
package/lib/runClientRequest.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import {
|
|
2
|
+
AnyObject,
|
|
3
|
+
TableHandler,
|
|
4
|
+
UserLike,
|
|
5
|
+
getKeys,
|
|
6
|
+
pickKeys,
|
|
7
|
+
} from "prostgles-types";
|
|
4
8
|
import { ExpressReq } from "./Auth/AuthTypes";
|
|
5
9
|
import { LocalParams, PRGLIOSocket } from "./DboBuilder/DboBuilder";
|
|
6
10
|
import { parseFieldFilter } from "./DboBuilder/ViewHandler/parseFieldFilter";
|
|
@@ -8,44 +12,55 @@ import { canRunSQL } from "./DboBuilder/runSQL";
|
|
|
8
12
|
import { Prostgles } from "./Prostgles";
|
|
9
13
|
import { TableHandler as TableHandlerServer } from "./DboBuilder/TableHandler/TableHandler";
|
|
10
14
|
import { TableRule } from "./PublishParser/publishTypesAndUtils";
|
|
11
|
-
|
|
12
|
-
type ReqInfo =
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
15
|
+
|
|
16
|
+
type ReqInfo =
|
|
17
|
+
| {
|
|
18
|
+
type: "socket";
|
|
19
|
+
socket: PRGLIOSocket;
|
|
20
|
+
httpReq?: undefined;
|
|
21
|
+
}
|
|
22
|
+
| {
|
|
23
|
+
type: "http";
|
|
24
|
+
httpReq: ExpressReq;
|
|
25
|
+
socket?: undefined;
|
|
26
|
+
};
|
|
27
|
+
type ReqInfoClient =
|
|
28
|
+
| {
|
|
29
|
+
socket: PRGLIOSocket;
|
|
30
|
+
}
|
|
31
|
+
| {
|
|
32
|
+
httpReq: ExpressReq;
|
|
33
|
+
};
|
|
26
34
|
|
|
27
35
|
const TABLE_METHODS = {
|
|
28
|
-
find: 1,
|
|
29
|
-
findOne: 1,
|
|
30
|
-
count: 1,
|
|
31
|
-
size: 1,
|
|
36
|
+
find: 1,
|
|
37
|
+
findOne: 1,
|
|
38
|
+
count: 1,
|
|
39
|
+
size: 1,
|
|
32
40
|
update: 1,
|
|
33
|
-
updateBatch: 1,
|
|
34
|
-
delete: 1,
|
|
35
|
-
upsert: 1,
|
|
36
|
-
insert: 1,
|
|
37
|
-
subscribe: 1,
|
|
38
|
-
subscribeOne: 1,
|
|
39
|
-
getColumns: 1,
|
|
41
|
+
updateBatch: 1,
|
|
42
|
+
delete: 1,
|
|
43
|
+
upsert: 1,
|
|
44
|
+
insert: 1,
|
|
45
|
+
subscribe: 1,
|
|
46
|
+
subscribeOne: 1,
|
|
47
|
+
getColumns: 1,
|
|
40
48
|
getInfo: 1,
|
|
41
49
|
sync: 1,
|
|
42
|
-
} as const satisfies Record<
|
|
50
|
+
} as const satisfies Record<
|
|
51
|
+
keyof (TableHandler & Pick<TableHandlerServer, "sync">),
|
|
52
|
+
1
|
|
53
|
+
>;
|
|
43
54
|
|
|
44
55
|
const TABLE_METHODS_KEYS = getKeys(TABLE_METHODS);
|
|
45
|
-
const SOCKET_ONLY_COMMANDS = [
|
|
56
|
+
const SOCKET_ONLY_COMMANDS = [
|
|
57
|
+
"subscribe",
|
|
58
|
+
"subscribeOne",
|
|
59
|
+
"sync",
|
|
60
|
+
] as const satisfies typeof TABLE_METHODS_KEYS;
|
|
46
61
|
|
|
47
62
|
type Args = ReqInfo & {
|
|
48
|
-
tableName: string;
|
|
63
|
+
tableName: string;
|
|
49
64
|
command: string;
|
|
50
65
|
param1: any;
|
|
51
66
|
param2: any;
|
|
@@ -53,114 +68,168 @@ type Args = ReqInfo & {
|
|
|
53
68
|
};
|
|
54
69
|
|
|
55
70
|
const getReqInfoClient = (reqInfo: ReqInfo): ReqInfoClient => {
|
|
56
|
-
if(reqInfo.type === "socket"){
|
|
71
|
+
if (reqInfo.type === "socket") {
|
|
57
72
|
return { socket: reqInfo.socket };
|
|
58
73
|
}
|
|
59
74
|
return { httpReq: reqInfo.httpReq };
|
|
60
|
-
}
|
|
75
|
+
};
|
|
61
76
|
|
|
62
|
-
type TableMethodFunctionWithRulesAndLocalParams = (
|
|
77
|
+
type TableMethodFunctionWithRulesAndLocalParams = (
|
|
78
|
+
arg1: any,
|
|
79
|
+
arg2: any,
|
|
80
|
+
arg3: any,
|
|
81
|
+
tableRule: TableRule,
|
|
82
|
+
localParams: LocalParams,
|
|
83
|
+
) => any;
|
|
63
84
|
|
|
64
|
-
export const runClientRequest = async function(this: Prostgles, args: Args){
|
|
85
|
+
export const runClientRequest = async function (this: Prostgles, args: Args) {
|
|
65
86
|
/* Channel name will only include client-sent params so we ignore table_rules enforced params */
|
|
66
|
-
if (
|
|
87
|
+
if (
|
|
88
|
+
(args.type === "socket" && !args.socket) ||
|
|
89
|
+
(args.type === "http" && !args.httpReq) ||
|
|
90
|
+
!this.authHandler ||
|
|
91
|
+
!this.publishParser ||
|
|
92
|
+
!this.dbo
|
|
93
|
+
) {
|
|
67
94
|
throw "socket/httpReq or authhandler missing";
|
|
68
95
|
}
|
|
69
96
|
|
|
70
|
-
const {
|
|
71
|
-
|
|
72
|
-
|
|
97
|
+
const {
|
|
98
|
+
tableName,
|
|
99
|
+
command: nonValidatedCommand,
|
|
100
|
+
param1,
|
|
101
|
+
param2,
|
|
102
|
+
param3,
|
|
103
|
+
} = args;
|
|
104
|
+
if (!TABLE_METHODS_KEYS.some((v) => v === nonValidatedCommand)) {
|
|
105
|
+
throw `Invalid command: ${nonValidatedCommand}. Expecting one of: ${TABLE_METHODS_KEYS};`;
|
|
73
106
|
}
|
|
74
107
|
const command = nonValidatedCommand as keyof TableHandler;
|
|
75
|
-
if
|
|
76
|
-
|
|
108
|
+
if (
|
|
109
|
+
args.type !== "socket" &&
|
|
110
|
+
SOCKET_ONLY_COMMANDS.some((v) => v === command)
|
|
111
|
+
) {
|
|
112
|
+
throw (
|
|
113
|
+
"The following commands cannot be completed over a non-websocket connection: " +
|
|
114
|
+
SOCKET_ONLY_COMMANDS
|
|
115
|
+
);
|
|
77
116
|
}
|
|
78
117
|
|
|
79
118
|
const reqInfo = getReqInfoClient(args);
|
|
80
119
|
const clientInfo = await this.authHandler.getClientInfo(args);
|
|
81
|
-
const validRules = await this.publishParser.getValidatedRequestRule(
|
|
120
|
+
const validRules = await this.publishParser.getValidatedRequestRule(
|
|
121
|
+
{ tableName, command, localParams: reqInfo },
|
|
122
|
+
clientInfo,
|
|
123
|
+
);
|
|
82
124
|
if (!validRules) {
|
|
83
125
|
throw `Invalid OR disallowed request: ${tableName}.${command} `;
|
|
84
126
|
}
|
|
85
127
|
|
|
86
|
-
const sessionUser: UserLike | undefined = !clientInfo?.user
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
128
|
+
const sessionUser: UserLike | undefined = !clientInfo?.user
|
|
129
|
+
? undefined
|
|
130
|
+
: {
|
|
131
|
+
...parseFieldFilter(
|
|
132
|
+
clientInfo.sessionFields ?? ([] as any),
|
|
133
|
+
false,
|
|
134
|
+
Object.keys(clientInfo.user),
|
|
135
|
+
),
|
|
136
|
+
...(pickKeys(clientInfo.user, ["id", "type"]) as UserLike),
|
|
137
|
+
};
|
|
138
|
+
const localParams: LocalParams = {
|
|
139
|
+
...reqInfo,
|
|
140
|
+
isRemoteRequest: { user: sessionUser },
|
|
141
|
+
};
|
|
142
|
+
if (param3 && (param3 as LocalParams).returnQuery) {
|
|
92
143
|
const isAllowed = await canRunSQL(this, localParams);
|
|
93
|
-
if(isAllowed){
|
|
144
|
+
if (isAllowed) {
|
|
94
145
|
localParams.returnQuery = (param3 as LocalParams).returnQuery;
|
|
95
146
|
} else {
|
|
96
147
|
throw "Must be allowed to run sql to use returnQuery";
|
|
97
148
|
}
|
|
98
149
|
}
|
|
99
150
|
const tableHandler = this.dbo[tableName];
|
|
100
|
-
if(!tableHandler || !tableHandler.column_names)
|
|
151
|
+
if (!tableHandler || !tableHandler.column_names)
|
|
152
|
+
throw `Invalid tableName ${tableName} provided`;
|
|
101
153
|
|
|
102
154
|
/**
|
|
103
155
|
* satisfies check is used to ensure rules arguments are correctly passed to each method
|
|
104
156
|
*/
|
|
105
|
-
const tableCommand = tableHandler[command]?.bind(tableHandler) satisfies
|
|
106
|
-
|
|
107
|
-
|
|
157
|
+
const tableCommand = tableHandler[command]?.bind(tableHandler) satisfies
|
|
158
|
+
| undefined
|
|
159
|
+
| TableMethodFunctionWithRulesAndLocalParams;
|
|
160
|
+
if (!tableCommand) throw `Invalid or disallowed command provided: ${command}`;
|
|
161
|
+
return (
|
|
162
|
+
this.dbo[tableName]![command] as TableMethodFunctionWithRulesAndLocalParams
|
|
163
|
+
)(param1, param2, param3, validRules, localParams);
|
|
108
164
|
// This approach is breaking context
|
|
109
165
|
// const result = await (tableCommand as TableMethodFunctionWithRulesAndLocalParams)(param1, param2, param3, validRules, localParams);
|
|
110
166
|
// return result;
|
|
111
|
-
}
|
|
167
|
+
};
|
|
112
168
|
|
|
113
|
-
export const clientCanRunSqlRequest = async function(
|
|
169
|
+
export const clientCanRunSqlRequest = async function (
|
|
170
|
+
this: Prostgles,
|
|
171
|
+
args: ReqInfo,
|
|
172
|
+
) {
|
|
114
173
|
const reqInfo = getReqInfoClient(args);
|
|
115
|
-
if(
|
|
116
|
-
|
|
117
|
-
|
|
174
|
+
if (
|
|
175
|
+
!this.opts.publishRawSQL ||
|
|
176
|
+
typeof this.opts.publishRawSQL !== "function"
|
|
177
|
+
) {
|
|
178
|
+
return { allowed: false, reqInfo };
|
|
179
|
+
}
|
|
118
180
|
const canRunSQL = async () => {
|
|
119
|
-
if(!this.authHandler){
|
|
181
|
+
if (!this.authHandler) {
|
|
120
182
|
throw "authHandler missing";
|
|
121
|
-
}
|
|
183
|
+
}
|
|
122
184
|
const publishParams = await this.publishParser?.getPublishParams(reqInfo);
|
|
123
185
|
const res = await this.opts.publishRawSQL?.(publishParams as any);
|
|
124
|
-
return Boolean(res && typeof res === "boolean" || res === "*");
|
|
125
|
-
}
|
|
186
|
+
return Boolean((res && typeof res === "boolean") || res === "*");
|
|
187
|
+
};
|
|
126
188
|
|
|
127
189
|
const allowed = await canRunSQL();
|
|
128
190
|
return { allowed, reqInfo };
|
|
129
|
-
}
|
|
191
|
+
};
|
|
130
192
|
|
|
131
193
|
type ArgsSql = ReqInfo & {
|
|
132
194
|
query: string;
|
|
133
195
|
args?: AnyObject | any[];
|
|
134
196
|
options?: any;
|
|
135
|
-
}
|
|
136
|
-
export const runClientSqlRequest = async function(
|
|
197
|
+
};
|
|
198
|
+
export const runClientSqlRequest = async function (
|
|
199
|
+
this: Prostgles,
|
|
200
|
+
params: ArgsSql,
|
|
201
|
+
) {
|
|
137
202
|
const { allowed, reqInfo } = await clientCanRunSqlRequest.bind(this)(params);
|
|
138
|
-
if(!allowed){
|
|
203
|
+
if (!allowed) {
|
|
139
204
|
throw "Not allowed to execute sql";
|
|
140
205
|
}
|
|
141
206
|
if (!this.dbo?.sql) throw "Internal error: sql handler missing";
|
|
142
207
|
const { query, args, options } = params;
|
|
143
208
|
return this.dbo.sql(query, args, options, reqInfo);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
|
|
209
|
+
};
|
|
147
210
|
|
|
148
211
|
type ArgsMethod = ReqInfo & {
|
|
149
212
|
method: string;
|
|
150
|
-
params?: any[]
|
|
151
|
-
}
|
|
152
|
-
export const runClientMethod = async function(
|
|
153
|
-
|
|
213
|
+
params?: any[];
|
|
214
|
+
};
|
|
215
|
+
export const runClientMethod = async function (
|
|
216
|
+
this: Prostgles,
|
|
217
|
+
reqArgs: ArgsMethod,
|
|
218
|
+
) {
|
|
154
219
|
const reqInfo = getReqInfoClient(reqArgs);
|
|
155
220
|
const { method, params = [] } = reqArgs;
|
|
156
221
|
const methods = await this.publishParser?.getAllowedMethods(reqInfo);
|
|
157
222
|
|
|
158
223
|
if (!methods || !methods[method]) {
|
|
159
|
-
throw
|
|
160
|
-
}
|
|
224
|
+
throw "Disallowed/missing method " + JSON.stringify(method);
|
|
225
|
+
}
|
|
161
226
|
|
|
162
227
|
const methodDef = methods[method]!;
|
|
163
|
-
const onRun =
|
|
228
|
+
const onRun =
|
|
229
|
+
typeof methodDef === "function" ||
|
|
230
|
+
typeof (methodDef as any).then === "function"
|
|
231
|
+
? (methodDef as (...args: any) => Promise<void>)
|
|
232
|
+
: methodDef.run;
|
|
164
233
|
const res = await onRun(...params);
|
|
165
|
-
return res;
|
|
166
|
-
}
|
|
234
|
+
return res;
|
|
235
|
+
};
|
package/lib/shortestPath.ts
CHANGED
|
@@ -1,85 +1,89 @@
|
|
|
1
1
|
import { AnyObject } from "prostgles-types";
|
|
2
2
|
|
|
3
3
|
const shortestDistanceNode = (distances: AnyObject, visited: AnyObject) => {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
let shortest = null;
|
|
5
|
+
|
|
6
|
+
for (const node in distances) {
|
|
7
|
+
const currentIsShortest =
|
|
8
|
+
shortest === null || distances[node] < distances[shortest];
|
|
9
|
+
if (currentIsShortest && !visited.includes(node)) {
|
|
10
|
+
shortest = node;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return shortest;
|
|
14
14
|
};
|
|
15
15
|
export type Graph = {
|
|
16
|
-
|
|
16
|
+
[key: string]: { [key: string]: number };
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
export const findShortestPath = (
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
19
|
+
export const findShortestPath = (
|
|
20
|
+
graph: Graph,
|
|
21
|
+
startNode: string,
|
|
22
|
+
endNode: string,
|
|
23
|
+
): { distance: number; path: string[] } => {
|
|
24
|
+
// establish object for recording distances from the start node
|
|
25
|
+
let distances: AnyObject = {};
|
|
26
|
+
distances[endNode] = "Infinity";
|
|
27
|
+
distances = Object.assign(distances, graph[startNode]);
|
|
28
|
+
|
|
29
|
+
// track paths
|
|
30
|
+
const parents: AnyObject = { endNode: null };
|
|
31
|
+
for (const child in graph[startNode]) {
|
|
32
|
+
parents[child] = startNode;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// track nodes that have already been visited
|
|
36
|
+
const visited: AnyObject = [];
|
|
37
|
+
|
|
38
|
+
// find the nearest node
|
|
39
|
+
let node = shortestDistanceNode(distances, visited);
|
|
40
|
+
|
|
41
|
+
// for that node
|
|
42
|
+
while (node) {
|
|
43
|
+
// find its distance from the start node & its child nodes
|
|
44
|
+
const distance = distances[node];
|
|
45
|
+
const children = graph[node];
|
|
46
|
+
// for each of those child nodes
|
|
47
|
+
for (const child in children) {
|
|
48
|
+
// make sure each child node is not the start node
|
|
49
|
+
if (String(child) === String(startNode)) {
|
|
50
|
+
continue;
|
|
51
|
+
} else {
|
|
52
|
+
// save the distance from the start node to the child node
|
|
53
|
+
const newdistance = distance + children[child];
|
|
54
|
+
// if there's no recorded distance from the start node to the child node in the distances object
|
|
55
|
+
// or if the recorded distance is shorter than the previously stored distance from the start node to the child node
|
|
56
|
+
// save the distance to the object
|
|
57
|
+
// record the path
|
|
58
|
+
if (!distances[child] || distances[child] > newdistance) {
|
|
59
|
+
distances[child] = newdistance;
|
|
60
|
+
parents[child] = node;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// move the node to the visited set
|
|
65
|
+
visited.push(node);
|
|
66
|
+
// move to the nearest neighbor node
|
|
67
|
+
node = shortestDistanceNode(distances, visited);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// using the stored paths from start node to end node
|
|
71
|
+
// record the shortest path
|
|
72
|
+
const shortestPath = [endNode];
|
|
73
|
+
let parent = parents[endNode];
|
|
74
|
+
while (parent) {
|
|
75
|
+
shortestPath.push(parent);
|
|
76
|
+
parent = parents[parent];
|
|
77
|
+
}
|
|
78
|
+
shortestPath.reverse();
|
|
79
|
+
|
|
80
|
+
// return the shortest path from start node to end node & its distance
|
|
81
|
+
const results = {
|
|
82
|
+
distance: distances[endNode],
|
|
83
|
+
path: shortestPath,
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
return results;
|
|
83
87
|
};
|
|
84
88
|
|
|
85
89
|
/* Usage:
|
|
@@ -119,4 +123,4 @@ const graph = {
|
|
|
119
123
|
findShortestPath(graph, 'start', 'end');
|
|
120
124
|
|
|
121
125
|
|
|
122
|
-
*/
|
|
126
|
+
*/
|
|
@@ -266,7 +266,11 @@ export type DBGeneratedSchema = {
|
|
|
266
266
|
columns: {
|
|
267
267
|
email: string;
|
|
268
268
|
id?: number;
|
|
269
|
-
preferences: {
|
|
269
|
+
preferences: {
|
|
270
|
+
showIntro?: boolean;
|
|
271
|
+
theme?: "light" | "dark" | "auto";
|
|
272
|
+
others: any[];
|
|
273
|
+
};
|
|
270
274
|
status: "active" | "disabled" | "pending";
|
|
271
275
|
};
|
|
272
276
|
};
|