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
|
@@ -23,22 +23,36 @@ export class PostgresNotifListenManager {
|
|
|
23
23
|
isListening: any;
|
|
24
24
|
client?: pg.IClient;
|
|
25
25
|
|
|
26
|
-
static create = (
|
|
27
|
-
|
|
26
|
+
static create = (
|
|
27
|
+
db_pg: DB,
|
|
28
|
+
notifListener: PrglNotifListener,
|
|
29
|
+
db_channel_name: string,
|
|
30
|
+
): Promise<PostgresNotifListenManager> => {
|
|
31
|
+
const res = new PostgresNotifListenManager(
|
|
32
|
+
db_pg,
|
|
33
|
+
notifListener,
|
|
34
|
+
db_channel_name,
|
|
35
|
+
true,
|
|
36
|
+
);
|
|
28
37
|
return res.init();
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
constructor(
|
|
32
|
-
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
constructor(
|
|
41
|
+
db_pg: DB,
|
|
42
|
+
notifListener: PrglNotifListener,
|
|
43
|
+
db_channel_name: string,
|
|
44
|
+
noInit = false,
|
|
45
|
+
) {
|
|
46
|
+
if (!db_pg || !notifListener || !db_channel_name)
|
|
47
|
+
throw "PostgresNotifListenManager: db_pg OR notifListener OR db_channel_name MISSING";
|
|
33
48
|
this.db_pg = db_pg;
|
|
34
49
|
this.notifListener = notifListener;
|
|
35
50
|
this.db_channel_name = db_channel_name;
|
|
36
51
|
|
|
37
|
-
if (!noInit) this.init()
|
|
52
|
+
if (!noInit) this.init();
|
|
38
53
|
}
|
|
39
54
|
|
|
40
55
|
async init(): Promise<PostgresNotifListenManager> {
|
|
41
|
-
|
|
42
56
|
this.connection = undefined;
|
|
43
57
|
|
|
44
58
|
this.isListening = await this.startListening();
|
|
@@ -50,12 +64,15 @@ export class PostgresNotifListenManager {
|
|
|
50
64
|
}
|
|
51
65
|
|
|
52
66
|
startListening() {
|
|
53
|
-
if (!this.db_pg || !this.notifListener)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
67
|
+
if (!this.db_pg || !this.notifListener)
|
|
68
|
+
throw "PostgresNotifListenManager: db_pg OR notifListener missing";
|
|
69
|
+
|
|
70
|
+
return this.reconnect().catch((error) => {
|
|
71
|
+
console.log(
|
|
72
|
+
"PostgresNotifListenManager: Failed Initial Connection:",
|
|
73
|
+
error,
|
|
74
|
+
);
|
|
75
|
+
});
|
|
59
76
|
}
|
|
60
77
|
|
|
61
78
|
destroyed = false;
|
|
@@ -64,75 +81,91 @@ export class PostgresNotifListenManager {
|
|
|
64
81
|
await this.stopListening();
|
|
65
82
|
this.connection?.done();
|
|
66
83
|
this.connection = undefined;
|
|
67
|
-
}
|
|
84
|
+
};
|
|
68
85
|
|
|
69
86
|
stopListening = async () => {
|
|
70
87
|
if (this.db_channel_name) {
|
|
71
88
|
try {
|
|
72
|
-
await this.connection?.none(
|
|
73
|
-
await this.client?.query(
|
|
74
|
-
} catch(error){
|
|
75
|
-
|
|
76
|
-
}
|
|
89
|
+
await this.connection?.none("UNLISTEN $1~", [this.db_channel_name]);
|
|
90
|
+
await this.client?.query("UNLISTEN $1~", [this.db_channel_name]);
|
|
91
|
+
} catch (error) {}
|
|
77
92
|
}
|
|
78
|
-
}
|
|
93
|
+
};
|
|
79
94
|
|
|
80
|
-
reconnect(
|
|
81
|
-
|
|
95
|
+
reconnect(
|
|
96
|
+
delay: number | undefined = 0,
|
|
97
|
+
maxAttempts: number | undefined = 0,
|
|
98
|
+
) {
|
|
99
|
+
if (!this.db_pg || !this.notifListener)
|
|
100
|
+
throw "db_pg OR notifListener missing";
|
|
82
101
|
|
|
83
102
|
if (this.destroyed) {
|
|
84
|
-
return Promise.reject("Destroyed")
|
|
103
|
+
return Promise.reject("Destroyed");
|
|
85
104
|
}
|
|
86
105
|
|
|
87
106
|
delay = delay > 0 ? parseInt(delay + "") : 0;
|
|
88
107
|
maxAttempts = maxAttempts > 0 ? parseInt(maxAttempts + "") : 1;
|
|
89
108
|
|
|
90
|
-
const setListeners = (
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
.
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
109
|
+
const setListeners = (
|
|
110
|
+
client: pg.IClient,
|
|
111
|
+
notifListener: PrglNotifListener,
|
|
112
|
+
db_channel_name: string,
|
|
113
|
+
) => {
|
|
114
|
+
client.on("notification", notifListener);
|
|
115
|
+
this.client = client;
|
|
116
|
+
if (!this.connection) throw "Connection missing";
|
|
117
|
+
return this.connection
|
|
118
|
+
.none(
|
|
119
|
+
`/* prostgles-server internal query used for subscriptions and schema hot reload */ \nLISTEN $1~`,
|
|
120
|
+
db_channel_name,
|
|
121
|
+
)
|
|
122
|
+
.catch((error) => {
|
|
123
|
+
console.log(
|
|
124
|
+
"PostgresNotifListenManager: unexpected error: ",
|
|
125
|
+
error,
|
|
126
|
+
); // unlikely to ever happen
|
|
127
|
+
});
|
|
128
|
+
},
|
|
129
|
+
removeListeners = (client: pg.IClient) => {
|
|
130
|
+
client.removeListener("notification", this.notifListener);
|
|
131
|
+
},
|
|
132
|
+
onConnectionLost = (err: any, e: pgPromise.ILostContext<pg.IClient>) => {
|
|
133
|
+
console.log("PostgresNotifListenManager: Connectivity Problem:", err);
|
|
134
|
+
this.connection = undefined; // prevent use of the broken connection
|
|
135
|
+
removeListeners(e.client);
|
|
136
|
+
|
|
137
|
+
this.reconnect(5000, 10) // retry 10 times, with 5-second intervals
|
|
138
|
+
.then(() => {
|
|
139
|
+
console.log("PostgresNotifListenManager: Successfully Reconnected");
|
|
140
|
+
})
|
|
141
|
+
.catch(() => {
|
|
142
|
+
// failed after 10 attempts
|
|
143
|
+
console.log(
|
|
144
|
+
"PostgresNotifListenManager: Connection Lost Permanently. No more retryies",
|
|
145
|
+
);
|
|
146
|
+
// process.exit(); // exiting the process
|
|
147
|
+
});
|
|
148
|
+
};
|
|
119
149
|
|
|
120
150
|
return new Promise((resolve, reject) => {
|
|
121
151
|
setTimeout(() => {
|
|
122
|
-
this.db_pg
|
|
123
|
-
.
|
|
152
|
+
this.db_pg
|
|
153
|
+
.connect({ direct: true, onLost: onConnectionLost })
|
|
154
|
+
.then((obj) => {
|
|
124
155
|
this.connection = obj; // global connection is now available
|
|
125
156
|
resolve(obj);
|
|
126
|
-
return setListeners(
|
|
157
|
+
return setListeners(
|
|
158
|
+
obj.client,
|
|
159
|
+
this.notifListener,
|
|
160
|
+
this.db_channel_name,
|
|
161
|
+
);
|
|
127
162
|
})
|
|
128
|
-
.catch(error => {
|
|
163
|
+
.catch((error) => {
|
|
129
164
|
/** Database was destroyed */
|
|
130
|
-
if(this.destroyed || error && error.code === "3D000") return;
|
|
131
|
-
console.log(
|
|
165
|
+
if (this.destroyed || (error && error.code === "3D000")) return;
|
|
166
|
+
console.log("PostgresNotifListenManager: Error Connecting:", error);
|
|
132
167
|
if (--maxAttempts) {
|
|
133
|
-
this.reconnect(delay, maxAttempts)
|
|
134
|
-
.then(resolve)
|
|
135
|
-
.catch(reject);
|
|
168
|
+
this.reconnect(delay, maxAttempts).then(resolve).catch(reject);
|
|
136
169
|
} else {
|
|
137
170
|
reject(error);
|
|
138
171
|
}
|
|
@@ -140,4 +173,4 @@ export class PostgresNotifListenManager {
|
|
|
140
173
|
}, delay);
|
|
141
174
|
});
|
|
142
175
|
}
|
|
143
|
-
}
|
|
176
|
+
}
|
package/lib/Prostgles.ts
CHANGED
|
@@ -9,7 +9,10 @@ import { FileManager } from "./FileManager/FileManager";
|
|
|
9
9
|
import { SchemaWatch } from "./SchemaWatch/SchemaWatch";
|
|
10
10
|
import { OnInitReason, initProstgles } from "./initProstgles";
|
|
11
11
|
import { makeSocketError, onSocketConnected } from "./onSocketConnected";
|
|
12
|
-
import {
|
|
12
|
+
import {
|
|
13
|
+
clientCanRunSqlRequest,
|
|
14
|
+
runClientSqlRequest,
|
|
15
|
+
} from "./runClientRequest";
|
|
13
16
|
import pg = require("pg-promise/typescript/pg-subset");
|
|
14
17
|
const { version } = require("../package.json");
|
|
15
18
|
|
|
@@ -27,15 +30,33 @@ import {
|
|
|
27
30
|
export { DBHandlerServer };
|
|
28
31
|
export type PGP = pgPromise.IMain<{}, pg.IClient>;
|
|
29
32
|
|
|
30
|
-
import {
|
|
33
|
+
import {
|
|
34
|
+
CHANNELS,
|
|
35
|
+
ClientSchema,
|
|
36
|
+
SQLRequest,
|
|
37
|
+
isObject,
|
|
38
|
+
omitKeys,
|
|
39
|
+
tryCatch,
|
|
40
|
+
} from "prostgles-types";
|
|
31
41
|
import { DBEventsManager } from "./DBEventsManager";
|
|
32
42
|
import { PublishParser } from "./PublishParser/PublishParser";
|
|
33
|
-
export {
|
|
43
|
+
export {
|
|
44
|
+
getOrSetTransporter,
|
|
45
|
+
sendEmail,
|
|
46
|
+
verifySMTPConfig,
|
|
47
|
+
} from "./Auth/sendEmail";
|
|
34
48
|
|
|
35
49
|
export type DB = pgPromise.IDatabase<{}, pg.IClient>;
|
|
36
50
|
export type DBorTx = DB | pgPromise.ITask<{}>;
|
|
37
51
|
|
|
38
|
-
export const TABLE_METHODS = [
|
|
52
|
+
export const TABLE_METHODS = [
|
|
53
|
+
"update",
|
|
54
|
+
"find",
|
|
55
|
+
"findOne",
|
|
56
|
+
"insert",
|
|
57
|
+
"delete",
|
|
58
|
+
"upsert",
|
|
59
|
+
] as const;
|
|
39
60
|
|
|
40
61
|
/*
|
|
41
62
|
1. Connect to db
|
|
@@ -146,10 +167,12 @@ export class Prostgles {
|
|
|
146
167
|
testRulesOnConnect: 1,
|
|
147
168
|
};
|
|
148
169
|
const unknownParams = Object.keys(params).filter(
|
|
149
|
-
(key: string) => !Object.keys(config).includes(key)
|
|
170
|
+
(key: string) => !Object.keys(config).includes(key),
|
|
150
171
|
);
|
|
151
172
|
if (unknownParams.length) {
|
|
152
|
-
console.error(
|
|
173
|
+
console.error(
|
|
174
|
+
`Unrecognised ProstglesInitOptions params: ${unknownParams.join()}`,
|
|
175
|
+
);
|
|
153
176
|
}
|
|
154
177
|
|
|
155
178
|
Object.assign(this.opts, params);
|
|
@@ -168,7 +191,8 @@ export class Prostgles {
|
|
|
168
191
|
destroyed = false;
|
|
169
192
|
|
|
170
193
|
checkDb() {
|
|
171
|
-
if (!this.db || !this.db.connect)
|
|
194
|
+
if (!this.db || !this.db.connect)
|
|
195
|
+
throw "something went wrong getting a db connection";
|
|
172
196
|
}
|
|
173
197
|
|
|
174
198
|
getTSFileName() {
|
|
@@ -206,11 +230,16 @@ export class Prostgles {
|
|
|
206
230
|
fs.readFile(fullPath, "utf8", function (err, data) {
|
|
207
231
|
if (err || force || data !== fileContent) {
|
|
208
232
|
fs.writeFileSync(fullPath, fileContent);
|
|
209
|
-
console.log(
|
|
233
|
+
console.log(
|
|
234
|
+
"Prostgles: Created typescript schema definition file: \n " +
|
|
235
|
+
fileName,
|
|
236
|
+
);
|
|
210
237
|
}
|
|
211
238
|
});
|
|
212
239
|
} else if (force) {
|
|
213
|
-
console.error(
|
|
240
|
+
console.error(
|
|
241
|
+
"Schema changed. tsGeneratedTypesDir needs to be set to reload server",
|
|
242
|
+
);
|
|
214
243
|
}
|
|
215
244
|
}
|
|
216
245
|
|
|
@@ -283,7 +312,11 @@ export class Prostgles {
|
|
|
283
312
|
}
|
|
284
313
|
}
|
|
285
314
|
});
|
|
286
|
-
await this.opts.onLog?.({
|
|
315
|
+
await this.opts.onLog?.({
|
|
316
|
+
type: "debug",
|
|
317
|
+
command: "initTableConfig",
|
|
318
|
+
...res,
|
|
319
|
+
});
|
|
287
320
|
if (res.hasError) throw res.error;
|
|
288
321
|
return res.data;
|
|
289
322
|
};
|
|
@@ -297,7 +330,10 @@ export class Prostgles {
|
|
|
297
330
|
if (!cloudClient && !localConfig)
|
|
298
331
|
throw "fileTable missing param: Must provide awsS3Config OR localConfig";
|
|
299
332
|
|
|
300
|
-
this.fileManager = new FileManager(
|
|
333
|
+
this.fileManager = new FileManager(
|
|
334
|
+
cloudClient || localConfig!,
|
|
335
|
+
imageOptions,
|
|
336
|
+
);
|
|
301
337
|
|
|
302
338
|
try {
|
|
303
339
|
await this.fileManager.init(this);
|
|
@@ -332,7 +368,9 @@ export class Prostgles {
|
|
|
332
368
|
const result = await this.db
|
|
333
369
|
?.multi(fileContent)
|
|
334
370
|
.then((data) => {
|
|
335
|
-
console.log(
|
|
371
|
+
console.log(
|
|
372
|
+
"Prostgles: SQL file executed successfuly \n -> " + filePath,
|
|
373
|
+
);
|
|
336
374
|
return data;
|
|
337
375
|
})
|
|
338
376
|
.catch((err) => {
|
|
@@ -343,14 +381,17 @@ export class Prostgles {
|
|
|
343
381
|
if (position && length && fileContent) {
|
|
344
382
|
const startLine = Math.max(
|
|
345
383
|
0,
|
|
346
|
-
fileContent.substring(0, position).split("\n").length - 2
|
|
384
|
+
fileContent.substring(0, position).split("\n").length - 2,
|
|
347
385
|
),
|
|
348
386
|
endLine = startLine + 3;
|
|
349
387
|
|
|
350
388
|
errMsg += "\n\n";
|
|
351
389
|
errMsg += lines
|
|
352
390
|
.slice(startLine, endLine)
|
|
353
|
-
.map(
|
|
391
|
+
.map(
|
|
392
|
+
(txt, i) =>
|
|
393
|
+
`${startLine + i + 1} ${i === 1 ? "->" : " "} ${txt}`,
|
|
394
|
+
)
|
|
354
395
|
.join("\n");
|
|
355
396
|
errMsg += "\n\n";
|
|
356
397
|
}
|
|
@@ -377,7 +418,7 @@ export class Prostgles {
|
|
|
377
418
|
this.opts.publishRawSQL,
|
|
378
419
|
this.dbo,
|
|
379
420
|
this.db!,
|
|
380
|
-
this
|
|
421
|
+
this,
|
|
381
422
|
);
|
|
382
423
|
this.publishParser = publishParser;
|
|
383
424
|
|
|
@@ -396,33 +437,49 @@ export class Prostgles {
|
|
|
396
437
|
this.opts.io.removeAllListeners("connection");
|
|
397
438
|
this.opts.io.on("connection", this.onSocketConnected);
|
|
398
439
|
/** In some cases io will re-init with already connected sockets */
|
|
399
|
-
this.opts.io?.sockets.sockets.forEach((socket) =>
|
|
440
|
+
this.opts.io?.sockets.sockets.forEach((socket) =>
|
|
441
|
+
this.onSocketConnected(socket),
|
|
442
|
+
);
|
|
400
443
|
}
|
|
401
444
|
|
|
402
445
|
onSocketConnected = onSocketConnected.bind(this);
|
|
403
446
|
|
|
404
|
-
getClientSchema = async (
|
|
447
|
+
getClientSchema = async (
|
|
448
|
+
clientReq: Pick<LocalParams, "socket" | "httpReq">,
|
|
449
|
+
) => {
|
|
405
450
|
const result = await tryCatch(async () => {
|
|
406
|
-
const clientInfo =
|
|
407
|
-
|
|
408
|
-
: clientReq.httpReq
|
|
409
|
-
|
|
451
|
+
const clientInfo = clientReq.socket
|
|
452
|
+
? { type: "socket" as const, socket: clientReq.socket }
|
|
453
|
+
: clientReq.httpReq
|
|
454
|
+
? { type: "http" as const, httpReq: clientReq.httpReq }
|
|
455
|
+
: undefined;
|
|
410
456
|
if (!clientInfo) throw "Invalid client";
|
|
411
457
|
if (!this.authHandler) throw "this.authHandler missing";
|
|
412
458
|
const userData = await this.authHandler.getClientInfo(clientInfo);
|
|
413
459
|
const { publishParser } = this;
|
|
414
|
-
let fullSchema:
|
|
460
|
+
let fullSchema:
|
|
461
|
+
| Awaited<ReturnType<PublishParser["getSchemaFromPublish"]>>
|
|
462
|
+
| undefined;
|
|
415
463
|
let publishValidationError;
|
|
416
464
|
|
|
417
465
|
try {
|
|
418
466
|
if (!publishParser) throw "publishParser undefined";
|
|
419
|
-
fullSchema = await publishParser.getSchemaFromPublish({
|
|
467
|
+
fullSchema = await publishParser.getSchemaFromPublish({
|
|
468
|
+
...clientInfo,
|
|
469
|
+
userData,
|
|
470
|
+
});
|
|
420
471
|
} catch (e) {
|
|
421
472
|
publishValidationError = e;
|
|
422
|
-
console.error(
|
|
473
|
+
console.error(
|
|
474
|
+
`\nProstgles Publish validation failed (after socket connected):\n ->`,
|
|
475
|
+
e,
|
|
476
|
+
);
|
|
423
477
|
}
|
|
424
478
|
let rawSQL = false;
|
|
425
|
-
if (
|
|
479
|
+
if (
|
|
480
|
+
this.opts.publishRawSQL &&
|
|
481
|
+
typeof this.opts.publishRawSQL === "function"
|
|
482
|
+
) {
|
|
426
483
|
const { allowed } = await clientCanRunSqlRequest.bind(this)(clientInfo);
|
|
427
484
|
rawSQL = allowed;
|
|
428
485
|
}
|
|
@@ -436,7 +493,10 @@ export class Prostgles {
|
|
|
436
493
|
if (this.opts.joins) {
|
|
437
494
|
const _joinTables2 = this.dboBuilder
|
|
438
495
|
.getAllJoinPaths()
|
|
439
|
-
.filter(
|
|
496
|
+
.filter(
|
|
497
|
+
(jp) =>
|
|
498
|
+
![jp.t1, jp.t2].find((t) => !schema[t] || !schema[t]?.findOne),
|
|
499
|
+
)
|
|
440
500
|
.map((jp) => [jp.t1, jp.t2].sort());
|
|
441
501
|
_joinTables2.map((jt) => {
|
|
442
502
|
if (!joinTables2.find((_jt) => _jt.join() === jt.join())) {
|
|
@@ -445,11 +505,13 @@ export class Prostgles {
|
|
|
445
505
|
});
|
|
446
506
|
}
|
|
447
507
|
|
|
448
|
-
const methods = await publishParser?.getAllowedMethods(
|
|
508
|
+
const methods = await publishParser?.getAllowedMethods(
|
|
509
|
+
clientInfo,
|
|
510
|
+
userData,
|
|
511
|
+
);
|
|
449
512
|
|
|
450
|
-
const methodSchema: ClientSchema["methods"] =
|
|
451
|
-
|
|
452
|
-
[]
|
|
513
|
+
const methodSchema: ClientSchema["methods"] = !methods
|
|
514
|
+
? []
|
|
453
515
|
: Object.entries(methods)
|
|
454
516
|
.map(([methodName, method]) => {
|
|
455
517
|
if (isObject(method) && "run" in method) {
|
|
@@ -477,7 +539,9 @@ export class Prostgles {
|
|
|
477
539
|
tableSchemaErrors,
|
|
478
540
|
auth,
|
|
479
541
|
version,
|
|
480
|
-
err: publishValidationError
|
|
542
|
+
err: publishValidationError
|
|
543
|
+
? "Server Error: User publish validation failed."
|
|
544
|
+
: undefined,
|
|
481
545
|
};
|
|
482
546
|
|
|
483
547
|
return {
|
|
@@ -486,7 +550,8 @@ export class Prostgles {
|
|
|
486
550
|
userData,
|
|
487
551
|
};
|
|
488
552
|
});
|
|
489
|
-
const sid =
|
|
553
|
+
const sid =
|
|
554
|
+
result.userData?.sid ?? this.authHandler?.getSIDNoError(clientReq);
|
|
490
555
|
await this.opts.onLog?.({
|
|
491
556
|
type: "connect.getClientSchema",
|
|
492
557
|
duration: result.duration,
|
|
@@ -510,17 +575,23 @@ export class Prostgles {
|
|
|
510
575
|
{ query, params, options }: SQLRequest,
|
|
511
576
|
cb = (..._callback: any) => {
|
|
512
577
|
/* Empty */
|
|
513
|
-
}
|
|
578
|
+
},
|
|
514
579
|
) => {
|
|
515
580
|
runClientSqlRequest
|
|
516
|
-
.bind(this)({
|
|
581
|
+
.bind(this)({
|
|
582
|
+
type: "socket",
|
|
583
|
+
socket,
|
|
584
|
+
query,
|
|
585
|
+
args: params,
|
|
586
|
+
options,
|
|
587
|
+
})
|
|
517
588
|
.then((res) => {
|
|
518
589
|
cb(null, res);
|
|
519
590
|
})
|
|
520
591
|
.catch((err) => {
|
|
521
592
|
makeSocketError(cb, err);
|
|
522
593
|
});
|
|
523
|
-
}
|
|
594
|
+
},
|
|
524
595
|
);
|
|
525
596
|
}
|
|
526
597
|
await this.dboBuilder.prostgles.opts.onLog?.({
|
package/lib/ProstglesTypes.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { FileColumnConfig } from "prostgles-types";
|
|
2
2
|
import { Auth, AuthRequestParams, SessionUser } from "./Auth/AuthTypes";
|
|
3
3
|
import { EventTriggerTagFilter } from "./Event_Trigger_Tags";
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
CloudClient,
|
|
6
|
+
ImageOptions,
|
|
7
|
+
LocalConfig,
|
|
8
|
+
} from "./FileManager/FileManager";
|
|
5
9
|
import { DbConnection, OnReadyCallback } from "./initProstgles";
|
|
6
10
|
import { EventInfo } from "./Logging";
|
|
7
11
|
import { ExpressApp, RestApiConfig } from "./RestApi";
|
|
@@ -16,7 +20,11 @@ import pg from "pg-promise/typescript/pg-subset";
|
|
|
16
20
|
import { AnyObject } from "prostgles-types";
|
|
17
21
|
import type { Server } from "socket.io";
|
|
18
22
|
import { DB } from "./Prostgles";
|
|
19
|
-
import {
|
|
23
|
+
import {
|
|
24
|
+
Publish,
|
|
25
|
+
PublishMethods,
|
|
26
|
+
PublishParams,
|
|
27
|
+
} from "./PublishParser/PublishParser";
|
|
20
28
|
|
|
21
29
|
/**
|
|
22
30
|
* Allows uploading and downloading files.
|
|
@@ -94,7 +102,12 @@ export type FileTableConfig = {
|
|
|
94
102
|
localConfig?: LocalConfig;
|
|
95
103
|
};
|
|
96
104
|
|
|
97
|
-
export const JOIN_TYPES = [
|
|
105
|
+
export const JOIN_TYPES = [
|
|
106
|
+
"one-many",
|
|
107
|
+
"many-one",
|
|
108
|
+
"one-one",
|
|
109
|
+
"many-many",
|
|
110
|
+
] as const;
|
|
98
111
|
export type Join = {
|
|
99
112
|
tables: [string, string];
|
|
100
113
|
on: { [key: string]: string }[]; // Allow multi references to table
|
|
@@ -102,7 +115,10 @@ export type Join = {
|
|
|
102
115
|
};
|
|
103
116
|
type Joins = Join[] | "inferred";
|
|
104
117
|
|
|
105
|
-
export type ProstglesInitOptions<
|
|
118
|
+
export type ProstglesInitOptions<
|
|
119
|
+
S = void,
|
|
120
|
+
SUser extends SessionUser = SessionUser,
|
|
121
|
+
> = {
|
|
106
122
|
/**
|
|
107
123
|
* Database connection details and options
|
|
108
124
|
*/
|
|
@@ -171,7 +187,9 @@ export type ProstglesInitOptions<S = void, SUser extends SessionUser = SessionUs
|
|
|
171
187
|
/**
|
|
172
188
|
* If defined and resolves to true then the connected client can run SQL queries
|
|
173
189
|
*/
|
|
174
|
-
publishRawSQL?(
|
|
190
|
+
publishRawSQL?(
|
|
191
|
+
params: PublishParams<S, SUser>,
|
|
192
|
+
): (boolean | "*") | Promise<boolean | "*">;
|
|
175
193
|
|
|
176
194
|
/**
|
|
177
195
|
* Server-side functions that can be invoked by the client
|
|
@@ -218,14 +236,14 @@ export type ProstglesInitOptions<S = void, SUser extends SessionUser = SessionUs
|
|
|
218
236
|
* Use for connection verification. Will disconnect socket on any errors
|
|
219
237
|
*/
|
|
220
238
|
onSocketConnect?: (
|
|
221
|
-
args: AuthRequestParams<S, SUser> & { socket: PRGLIOSocket }
|
|
239
|
+
args: AuthRequestParams<S, SUser> & { socket: PRGLIOSocket },
|
|
222
240
|
) => void | Promise<void>;
|
|
223
241
|
|
|
224
242
|
/**
|
|
225
243
|
* Called when a socket disconnects
|
|
226
244
|
*/
|
|
227
245
|
onSocketDisconnect?: (
|
|
228
|
-
args: AuthRequestParams<S, SUser> & { socket: PRGLIOSocket }
|
|
246
|
+
args: AuthRequestParams<S, SUser> & { socket: PRGLIOSocket },
|
|
229
247
|
) => void | Promise<void>;
|
|
230
248
|
|
|
231
249
|
/**
|
|
@@ -263,7 +281,11 @@ export type ProstglesInitOptions<S = void, SUser extends SessionUser = SessionUs
|
|
|
263
281
|
* - `OnSchemaChangeCallback` - custom callback to be fired. Nothing else triggered
|
|
264
282
|
* Useful for development
|
|
265
283
|
*/
|
|
266
|
-
watchSchema?:
|
|
284
|
+
watchSchema?:
|
|
285
|
+
| boolean
|
|
286
|
+
| EventTriggerTagFilter
|
|
287
|
+
| "hotReloadMode"
|
|
288
|
+
| OnSchemaChangeCallback;
|
|
267
289
|
|
|
268
290
|
/**
|
|
269
291
|
* Called when a notice is received from the database
|
|
@@ -335,6 +357,6 @@ type OnMigrate = (args: {
|
|
|
335
357
|
getConstraints: (
|
|
336
358
|
table: string,
|
|
337
359
|
column?: string,
|
|
338
|
-
types?: ColConstraint["type"][]
|
|
360
|
+
types?: ColConstraint["type"][],
|
|
339
361
|
) => Promise<ColConstraint[]>;
|
|
340
362
|
}) => void;
|