remult 0.21.1 → 0.22.0
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/README.md +47 -46
- package/SseSubscriptionServer.js +9 -9
- package/ably.js +1 -1
- package/esm/SseSubscriptionServer.js +11 -11
- package/esm/ably.js +2 -2
- package/esm/angular/interfaces/index.d.ts +1 -0
- package/esm/angular/interfaces/index.js +1 -0
- package/esm/angular/interfaces/src/column-collection.d.ts +70 -0
- package/esm/angular/interfaces/src/column-collection.js +341 -0
- package/esm/angular/interfaces/src/data-area-settings.d.ts +15 -0
- package/esm/angular/interfaces/src/data-area-settings.js +35 -0
- package/esm/angular/interfaces/src/data-control-interfaces.d.ts +36 -0
- package/esm/angular/interfaces/src/data-control-interfaces.js +57 -0
- package/esm/angular/interfaces/src/dataList.d.ts +13 -0
- package/esm/angular/interfaces/src/dataList.js +42 -0
- package/esm/angular/interfaces/src/filter-helper.d.ts +13 -0
- package/esm/angular/interfaces/src/filter-helper.js +59 -0
- package/esm/angular/interfaces/src/grid-settings.d.ts +145 -0
- package/esm/angular/interfaces/src/grid-settings.js +387 -0
- package/esm/angular/interfaces/src/public_api.d.ts +4 -0
- package/esm/angular/interfaces/src/public_api.js +4 -0
- package/esm/angular/src/angular/RemultAngularPluginsService.d.ts +4 -0
- package/esm/angular/src/angular/RemultAngularPluginsService.js +3 -0
- package/esm/angular/src/angular/data-control/data-control2.component.d.ts +49 -0
- package/esm/angular/src/angular/data-control/data-control2.component.js +138 -0
- package/esm/core/SseSubscriptionServer.d.ts +33 -0
- package/esm/core/SseSubscriptionServer.js +107 -0
- package/esm/core/assign.d.ts +1 -0
- package/esm/core/assign.js +5 -0
- package/esm/core/classType.d.ts +3 -0
- package/esm/core/classType.js +1 -0
- package/esm/core/index.d.ts +27 -0
- package/esm/core/index.js +25 -0
- package/esm/core/inputTypes.d.ts +9 -0
- package/esm/core/inputTypes.js +9 -0
- package/esm/core/live-query/data-provider-live-query-storage.d.ts +22 -0
- package/esm/core/live-query/data-provider-live-query-storage.js +71 -0
- package/esm/core/postgres/index.d.ts +2 -0
- package/esm/core/postgres/index.js +2 -0
- package/esm/core/postgres/postgres-data-provider.d.ts +36 -0
- package/esm/core/postgres/postgres-data-provider.js +120 -0
- package/esm/core/postgres/schema-builder.d.ts +17 -0
- package/esm/core/postgres/schema-builder.js +153 -0
- package/esm/core/remult-fresh.d.ts +17 -0
- package/esm/core/remult-fresh.js +29 -0
- package/esm/core/remult-knex/index.d.ts +30 -0
- package/esm/core/remult-knex/index.js +446 -0
- package/esm/core/remult-mongo.d.ts +24 -0
- package/esm/core/remult-mongo.js +254 -0
- package/esm/core/server/JsonEntityFileStorage.d.ts +10 -0
- package/esm/core/server/JsonEntityFileStorage.js +25 -0
- package/esm/core/server/core.d.ts +4 -0
- package/esm/core/server/core.js +4 -0
- package/esm/core/server/expressBridge.d.ts +182 -0
- package/esm/core/server/expressBridge.js +938 -0
- package/esm/core/server/index.d.ts +6 -0
- package/esm/core/server/index.js +9 -0
- package/esm/core/server/initAsyncHooks.d.ts +1 -0
- package/esm/core/server/initAsyncHooks.js +9 -0
- package/esm/core/server/initDataProvider.d.ts +2 -0
- package/esm/core/server/initDataProvider.js +14 -0
- package/esm/core/src/__EntityValueProvider.d.ts +11 -0
- package/esm/core/src/__EntityValueProvider.js +1 -0
- package/esm/core/src/__RowsOfDataForTesting.d.ts +3 -0
- package/esm/core/src/__RowsOfDataForTesting.js +1 -0
- package/esm/core/src/backend-tests/backend-database-test-setup.backend-spec.d.ts +6 -0
- package/esm/core/src/backend-tests/backend-database-test-setup.backend-spec.js +147 -0
- package/esm/core/src/backend-tests/my-test.backend-spec.d.ts +1 -0
- package/esm/core/src/backend-tests/my-test.backend-spec.js +197 -0
- package/esm/core/src/backend-tests/test-http-server.backend-spec.d.ts +1 -0
- package/esm/core/src/backend-tests/test-http-server.backend-spec.js +167 -0
- package/esm/core/src/buildRestDataProvider.d.ts +31 -0
- package/esm/core/src/buildRestDataProvider.js +113 -0
- package/esm/core/src/column-interfaces.d.ts +154 -0
- package/esm/core/src/column-interfaces.js +7 -0
- package/esm/core/src/column.d.ts +58 -0
- package/esm/core/src/column.js +174 -0
- package/esm/core/src/context.d.ts +134 -0
- package/esm/core/src/context.js +286 -0
- package/esm/core/src/data-api.d.ts +39 -0
- package/esm/core/src/data-api.js +279 -0
- package/esm/core/src/data-interfaces.d.ts +41 -0
- package/esm/core/src/data-interfaces.js +12 -0
- package/esm/core/src/data-providers/array-entity-data-provider.d.ts +22 -0
- package/esm/core/src/data-providers/array-entity-data-provider.js +252 -0
- package/esm/core/src/data-providers/in-memory-database.d.ts +9 -0
- package/esm/core/src/data-providers/in-memory-database.js +14 -0
- package/esm/core/src/data-providers/json-data-provider.d.ts +12 -0
- package/esm/core/src/data-providers/json-data-provider.js +55 -0
- package/esm/core/src/data-providers/rest-data-provider.d.ts +49 -0
- package/esm/core/src/data-providers/rest-data-provider.js +256 -0
- package/esm/core/src/data-providers/sql-database.d.ts +33 -0
- package/esm/core/src/data-providers/sql-database.js +384 -0
- package/esm/core/src/data-providers/web-sql-data-provider.d.ts +24 -0
- package/esm/core/src/data-providers/web-sql-data-provider.js +143 -0
- package/esm/core/src/entity.d.ts +91 -0
- package/esm/core/src/entity.js +1 -0
- package/esm/core/src/filter/filter-consumer-bridge-to-sql-request.d.ts +50 -0
- package/esm/core/src/filter/filter-consumer-bridge-to-sql-request.js +150 -0
- package/esm/core/src/filter/filter-consumer-bridge-to-url-builder.d.ts +1 -0
- package/esm/core/src/filter/filter-consumer-bridge-to-url-builder.js +1 -0
- package/esm/core/src/filter/filter-interfaces.d.ts +85 -0
- package/esm/core/src/filter/filter-interfaces.js +477 -0
- package/esm/core/src/live-query/LiveQueryClient.d.ts +20 -0
- package/esm/core/src/live-query/LiveQueryClient.js +188 -0
- package/esm/core/src/live-query/SseSubscriptionClient.d.ts +5 -0
- package/esm/core/src/live-query/SseSubscriptionClient.js +86 -0
- package/esm/core/src/live-query/SubscriptionChannel.d.ts +72 -0
- package/esm/core/src/live-query/SubscriptionChannel.js +123 -0
- package/esm/core/src/live-query/SubscriptionServer.d.ts +53 -0
- package/esm/core/src/live-query/SubscriptionServer.js +111 -0
- package/esm/core/src/live-query/live-query-tests.spec.d.ts +6 -0
- package/esm/core/src/live-query/live-query-tests.spec.js +952 -0
- package/esm/core/src/remult-proxy.d.ts +35 -0
- package/esm/core/src/remult-proxy.js +113 -0
- package/esm/core/src/remult3/DecoratorReplacer.d.ts +10 -0
- package/esm/core/src/remult3/DecoratorReplacer.js +20 -0
- package/esm/core/src/remult3/RepositoryImplementation.d.ts +355 -0
- package/esm/core/src/remult3/RepositoryImplementation.js +2109 -0
- package/esm/core/src/remult3/index.d.ts +2 -0
- package/esm/core/src/remult3/index.js +2 -0
- package/esm/core/src/remult3/remult3.d.ts +395 -0
- package/esm/core/src/remult3/remult3.js +2 -0
- package/esm/core/src/server-action.d.ts +81 -0
- package/esm/core/src/server-action.js +394 -0
- package/esm/core/src/shared-tests/db-tests-setup.d.ts +32 -0
- package/esm/core/src/shared-tests/db-tests-setup.js +78 -0
- package/esm/core/src/shared-tests/db-tests.db-tests.d.ts +25 -0
- package/esm/core/src/shared-tests/db-tests.db-tests.js +810 -0
- package/esm/core/src/shared-tests/deleteAll.d.ts +2 -0
- package/esm/core/src/shared-tests/deleteAll.js +4 -0
- package/esm/core/src/shared-tests/entityWithValidations.d.ts +14 -0
- package/esm/core/src/shared-tests/entityWithValidations.js +43 -0
- package/esm/core/src/shared-tests/index.d.ts +4 -0
- package/esm/core/src/shared-tests/index.js +4 -0
- package/esm/core/src/shared-tests/test-custom-id-column.spec.d.ts +1 -0
- package/esm/core/src/shared-tests/test-custom-id-column.spec.js +67 -0
- package/esm/core/src/shared-tests/test-special-value.spec.d.ts +10 -0
- package/esm/core/src/shared-tests/test-special-value.spec.js +73 -0
- package/esm/core/src/shared-tests/test-update-with-null.spec.d.ts +1 -0
- package/esm/core/src/shared-tests/test-update-with-null.spec.js +31 -0
- package/esm/core/src/sort.d.ts +16 -0
- package/esm/core/src/sort.js +103 -0
- package/esm/core/src/sql-command.d.ts +19 -0
- package/esm/core/src/sql-command.js +1 -0
- package/esm/core/src/test.d.ts +3 -0
- package/esm/core/src/test.js +12 -0
- package/esm/core/src/tests/Done.d.ts +5 -0
- package/esm/core/src/tests/Done.js +9 -0
- package/esm/core/src/tests/RowProvider.spec.d.ts +16 -0
- package/esm/core/src/tests/RowProvider.spec.js +631 -0
- package/esm/core/src/tests/TestDataApiResponse.d.ts +10 -0
- package/esm/core/src/tests/TestDataApiResponse.js +22 -0
- package/esm/core/src/tests/basicRowFunctionality.spec.d.ts +8 -0
- package/esm/core/src/tests/basicRowFunctionality.spec.js +2103 -0
- package/esm/core/src/tests/c.d.ts +8 -0
- package/esm/core/src/tests/c.js +13 -0
- package/esm/core/src/tests/createData.d.ts +7 -0
- package/esm/core/src/tests/createData.js +22 -0
- package/esm/core/src/tests/d.d.ts +6 -0
- package/esm/core/src/tests/d.js +11 -0
- package/esm/core/src/tests/dWithPrefilter.d.ts +7 -0
- package/esm/core/src/tests/dWithPrefilter.js +18 -0
- package/esm/core/src/tests/entityForCustomFilter.d.ts +16 -0
- package/esm/core/src/tests/entityForCustomFilter.js +33 -0
- package/esm/core/src/tests/entityWithValidationsOnColumn.d.ts +5 -0
- package/esm/core/src/tests/entityWithValidationsOnColumn.js +13 -0
- package/esm/core/src/tests/frontend-database-tests-setup.spec.d.ts +4 -0
- package/esm/core/src/tests/frontend-database-tests-setup.spec.js +37 -0
- package/esm/core/src/tests/h.d.ts +6 -0
- package/esm/core/src/tests/h.js +24 -0
- package/esm/core/src/tests/remult-3-basic-tests.spec.d.ts +1 -0
- package/esm/core/src/tests/remult-3-basic-tests.spec.js +236 -0
- package/esm/core/src/tests/remult-3-entities.d.ts +23 -0
- package/esm/core/src/tests/remult-3-entities.js +39 -0
- package/esm/core/src/tests/tasks.d.ts +6 -0
- package/esm/core/src/tests/tasks.js +10 -0
- package/esm/core/src/tests/test-context-as-storage.spec.d.ts +0 -0
- package/esm/core/src/tests/test-context-as-storage.spec.js +1 -0
- package/esm/core/src/tests/test-data-api/predefined-filter.spec.d.ts +1 -0
- package/esm/core/src/tests/test-data-api/predefined-filter.spec.js +389 -0
- package/esm/core/src/tests/test-data-api/test-put-with-validation.spec.d.ts +5 -0
- package/esm/core/src/tests/test-data-api/test-put-with-validation.spec.js +152 -0
- package/esm/core/src/tests/test-decorator-precedence.spec.d.ts +1 -0
- package/esm/core/src/tests/test-decorator-precedence.spec.js +38 -0
- package/esm/core/src/tests/test-default-value.spec.d.ts +1 -0
- package/esm/core/src/tests/test-default-value.spec.js +33 -0
- package/esm/core/src/tests/test-entity-inheritance.spec.d.ts +14 -0
- package/esm/core/src/tests/test-entity-inheritance.spec.js +82 -0
- package/esm/core/src/tests/test-exceptions.spec.d.ts +1 -0
- package/esm/core/src/tests/test-exceptions.spec.js +375 -0
- package/esm/core/src/tests/test-json.spec.d.ts +1 -0
- package/esm/core/src/tests/test-json.spec.js +115 -0
- package/esm/core/src/tests/test-many-to-one-relation-in-entity.spec.d.ts +9 -0
- package/esm/core/src/tests/test-many-to-one-relation-in-entity.spec.js +809 -0
- package/esm/core/src/tests/test-non-active-record.spec.d.ts +1 -0
- package/esm/core/src/tests/test-non-active-record.spec.js +66 -0
- package/esm/core/src/tests/test-object-column.spec.d.ts +1 -0
- package/esm/core/src/tests/test-object-column.spec.js +189 -0
- package/esm/core/src/tests/test-paged-foreach.spec.d.ts +1 -0
- package/esm/core/src/tests/test-paged-foreach.spec.js +328 -0
- package/esm/core/src/tests/test-remult-angular.spec.d.ts +1 -0
- package/esm/core/src/tests/test-remult-angular.spec.js +23 -0
- package/esm/core/src/tests/test-server-controller.spec.d.ts +7 -0
- package/esm/core/src/tests/test-server-controller.spec.js +489 -0
- package/esm/core/src/tests/test-server-expressions.spec.d.ts +1 -0
- package/esm/core/src/tests/test-server-expressions.spec.js +178 -0
- package/esm/core/src/tests/test-server-method-on-entity.spec.d.ts +1 -0
- package/esm/core/src/tests/test-server-method-on-entity.spec.js +306 -0
- package/esm/core/src/tests/test-sql-expression.spec.d.ts +5 -0
- package/esm/core/src/tests/test-sql-expression.spec.js +205 -0
- package/esm/core/src/tests/test-sql.spec.d.ts +1 -0
- package/esm/core/src/tests/test-sql.spec.js +170 -0
- package/esm/core/src/tests/test-subscribe.spec.d.ts +1 -0
- package/esm/core/src/tests/test-subscribe.spec.js +135 -0
- package/esm/core/src/tests/test-type-recovery.spec.d.ts +1 -0
- package/esm/core/src/tests/test-type-recovery.spec.js +49 -0
- package/esm/core/src/tests/test-where-api.spec.d.ts +1 -0
- package/esm/core/src/tests/test-where-api.spec.js +434 -0
- package/esm/core/src/tests/testHelper.spec.d.ts +36 -0
- package/esm/core/src/tests/testHelper.spec.js +226 -0
- package/esm/core/src/tests/testModel/models.d.ts +16 -0
- package/esm/core/src/tests/testModel/models.js +25 -0
- package/esm/core/src/validators.d.ts +14 -0
- package/esm/core/src/validators.js +33 -0
- package/esm/core/src/valueConverters.d.ts +13 -0
- package/esm/core/src/valueConverters.js +197 -0
- package/esm/core/urlBuilder.d.ts +6 -0
- package/esm/core/urlBuilder.js +20 -0
- package/esm/graphql.js +194 -73
- package/esm/index.d.ts +10 -10
- package/esm/index.js +8 -8
- package/esm/inputTypes.js +1 -1
- package/esm/live-query/data-provider-live-query-storage.d.ts +3 -3
- package/esm/live-query/data-provider-live-query-storage.js +12 -9
- package/esm/myLog.js +2 -2
- package/esm/postgres/postgres-data-provider.d.ts +2 -2
- package/esm/postgres/postgres-data-provider.js +20 -14
- package/esm/postgres/schema-builder.d.ts +1 -1
- package/esm/postgres/schema-builder.js +28 -21
- package/esm/remult-express.js +2 -2
- package/esm/remult-fastify.js +9 -7
- package/esm/remult-fresh.d.ts +1 -1
- package/esm/remult-fresh.js +5 -8
- package/esm/remult-knex/index.d.ts +4 -4
- package/esm/remult-knex/index.js +75 -59
- package/esm/remult-mongo.js +36 -27
- package/esm/remult-next.d.ts +3 -3
- package/esm/remult-next.js +17 -11
- package/esm/remult-sveltekit.js +10 -10
- package/esm/server/JsonEntityFileStorage.js +3 -1
- package/esm/server/core.d.ts +2 -2
- package/esm/server/core.js +2 -2
- package/esm/server/expressBridge.d.ts +3 -12
- package/esm/server/expressBridge.js +265 -278
- package/esm/server/index.d.ts +2 -2
- package/esm/server/index.js +5 -2
- package/esm/server/initAsyncHooks.js +1 -1
- package/esm/server/initDataProvider.js +1 -1
- package/esm/src/backend-tests/backend-database-test-setup.backend-spec.d.ts +1 -1
- package/esm/src/backend-tests/backend-database-test-setup.backend-spec.js +47 -38
- package/esm/src/buildRestDataProvider.d.ts +1 -1
- package/esm/src/buildRestDataProvider.js +21 -13
- package/esm/src/column-interfaces.d.ts +9 -9
- package/esm/src/column.d.ts +4 -0
- package/esm/src/column.js +23 -11
- package/esm/src/context.d.ts +20 -8
- package/esm/src/context.js +65 -24
- package/esm/src/data-api.d.ts +0 -1
- package/esm/src/data-api.js +38 -37
- package/esm/src/data-interfaces.d.ts +1 -1
- package/esm/src/data-interfaces.js +1 -1
- package/esm/src/data-providers/array-entity-data-provider.js +9 -9
- package/esm/src/data-providers/in-memory-database.d.ts +1 -1
- package/esm/src/data-providers/in-memory-database.js +3 -1
- package/esm/src/data-providers/json-data-provider.js +8 -8
- package/esm/src/data-providers/rest-data-provider.d.ts +1 -1
- package/esm/src/data-providers/rest-data-provider.js +52 -36
- package/esm/src/data-providers/sql-database.d.ts +5 -5
- package/esm/src/data-providers/sql-database.js +53 -36
- package/esm/src/data-providers/web-sql-data-provider.d.ts +4 -4
- package/esm/src/data-providers/web-sql-data-provider.js +15 -13
- package/esm/src/entity.d.ts +24 -24
- package/esm/src/filter/filter-consumer-bridge-to-sql-request.d.ts +4 -4
- package/esm/src/filter/filter-consumer-bridge-to-sql-request.js +35 -20
- package/esm/src/filter/filter-interfaces.d.ts +7 -7
- package/esm/src/filter/filter-interfaces.js +108 -88
- package/esm/src/live-query/LiveQueryClient.js +37 -29
- package/esm/src/live-query/SseSubscriptionClient.d.ts +1 -1
- package/esm/src/live-query/SseSubscriptionClient.js +14 -14
- package/esm/src/live-query/SubscriptionChannel.d.ts +3 -3
- package/esm/src/live-query/SubscriptionChannel.js +27 -25
- package/esm/src/live-query/SubscriptionServer.js +24 -20
- package/esm/src/remult-proxy.d.ts +1 -1
- package/esm/src/remult-proxy.js +87 -29
- package/esm/src/remult3/DecoratorReplacer.d.ts +2 -2
- package/esm/src/remult3/RepositoryImplementation.d.ts +51 -41
- package/esm/src/remult3/RepositoryImplementation.js +336 -206
- package/esm/src/remult3/remult3.d.ts +56 -51
- package/esm/src/remult3/remult3.js +0 -1
- package/esm/src/server-action.d.ts +12 -5
- package/esm/src/server-action.js +79 -53
- package/esm/src/shared-tests/db-tests-setup.d.ts +8 -8
- package/esm/src/shared-tests/db-tests-setup.js +10 -10
- package/esm/src/shared-tests/db-tests.db-tests.d.ts +1 -1
- package/esm/src/shared-tests/db-tests.db-tests.js +279 -177
- package/esm/src/shared-tests/deleteAll.d.ts +1 -1
- package/esm/src/shared-tests/deleteAll.js +1 -1
- package/esm/src/shared-tests/entityWithValidations.js +1 -1
- package/esm/src/shared-tests/test-custom-id-column.spec.js +4 -4
- package/esm/src/shared-tests/test-special-value.spec.js +12 -12
- package/esm/src/shared-tests/test-update-with-null.spec.js +10 -6
- package/esm/src/sort.d.ts +2 -2
- package/esm/src/sort.js +12 -10
- package/esm/src/tests/TestDataApiResponse.d.ts +1 -1
- package/esm/src/tests/TestDataApiResponse.js +3 -4
- package/esm/src/tests/createData.js +2 -2
- package/esm/src/tests/d.js +1 -1
- package/esm/src/tests/dWithPrefilter.js +1 -1
- package/esm/src/tests/entityForCustomFilter.d.ts +4 -4
- package/esm/src/tests/entityForCustomFilter.js +12 -4
- package/esm/src/tests/entityWithValidationsOnColumn.js +1 -1
- package/esm/src/tests/frontend-database-tests-setup.spec.d.ts +1 -1
- package/esm/src/tests/frontend-database-tests-setup.spec.js +14 -14
- package/esm/src/tests/h.js +4 -4
- package/esm/src/tests/remult-3-entities.d.ts +2 -2
- package/esm/src/tests/remult-3-entities.js +6 -6
- package/esm/src/tests/testHelper.spec.d.ts +7 -7
- package/esm/src/tests/testHelper.spec.js +50 -39
- package/esm/src/tests/testModel/models.js +4 -4
- package/esm/src/validators.d.ts +1 -1
- package/esm/src/validators.js +10 -7
- package/esm/src/valueConverters.d.ts +1 -1
- package/esm/src/valueConverters.js +68 -55
- package/esm/test-servers/shared/Task.d.ts +9 -0
- package/esm/test-servers/shared/Task.js +32 -0
- package/esm/test.d.ts +5 -0
- package/esm/test.js +6 -0
- package/graphql.js +157 -45
- package/index.d.ts +10 -10
- package/inputTypes.js +1 -1
- package/live-query/data-provider-live-query-storage.d.ts +3 -3
- package/live-query/data-provider-live-query-storage.js +7 -4
- package/myLog.js +2 -2
- package/package.json +2 -2
- package/postgres/postgres-data-provider.d.ts +2 -2
- package/postgres/postgres-data-provider.js +21 -16
- package/postgres/schema-builder.d.ts +1 -1
- package/postgres/schema-builder.js +22 -15
- package/remult-express.js +1 -1
- package/remult-fastify.js +7 -7
- package/remult-fresh.d.ts +1 -1
- package/remult-fresh.js +1 -4
- package/remult-knex/index.d.ts +4 -4
- package/remult-knex/index.js +50 -35
- package/remult-mongo.js +33 -23
- package/remult-next.d.ts +3 -3
- package/remult-next.js +15 -11
- package/remult-sveltekit.js +14 -15
- package/server/core.d.ts +2 -2
- package/server/expressBridge.d.ts +3 -12
- package/server/expressBridge.js +278 -279
- package/server/index.d.ts +2 -2
- package/server/index.js +5 -2
- package/server/initAsyncHooks.js +2 -2
- package/server/initDataProvider.js +1 -1
- package/src/backend-tests/backend-database-test-setup.backend-spec.d.ts +1 -1
- package/src/backend-tests/backend-database-test-setup.backend-spec.js +40 -31
- package/src/buildRestDataProvider.d.ts +1 -1
- package/src/buildRestDataProvider.js +18 -10
- package/src/column-interfaces.d.ts +9 -9
- package/src/column.d.ts +4 -0
- package/src/column.js +20 -8
- package/src/context.d.ts +20 -8
- package/src/context.js +61 -18
- package/src/data-api.d.ts +0 -1
- package/src/data-api.js +40 -43
- package/src/data-interfaces.d.ts +1 -1
- package/src/data-providers/array-entity-data-provider.js +2 -2
- package/src/data-providers/in-memory-database.d.ts +1 -1
- package/src/data-providers/in-memory-database.js +3 -1
- package/src/data-providers/json-data-provider.js +33 -15
- package/src/data-providers/rest-data-provider.d.ts +1 -1
- package/src/data-providers/rest-data-provider.js +47 -32
- package/src/data-providers/sql-database.d.ts +5 -5
- package/src/data-providers/sql-database.js +41 -24
- package/src/data-providers/web-sql-data-provider.d.ts +4 -4
- package/src/data-providers/web-sql-data-provider.js +10 -8
- package/src/entity.d.ts +24 -24
- package/src/filter/filter-consumer-bridge-to-sql-request.d.ts +4 -4
- package/src/filter/filter-consumer-bridge-to-sql-request.js +34 -17
- package/src/filter/filter-interfaces.d.ts +7 -7
- package/src/filter/filter-interfaces.js +73 -47
- package/src/live-query/LiveQueryClient.js +35 -25
- package/src/live-query/SseSubscriptionClient.d.ts +1 -1
- package/src/live-query/SseSubscriptionClient.js +80 -76
- package/src/live-query/SubscriptionChannel.d.ts +3 -3
- package/src/live-query/SubscriptionChannel.js +26 -18
- package/src/live-query/SubscriptionServer.js +23 -17
- package/src/remult-proxy.d.ts +1 -1
- package/src/remult-proxy.js +84 -35
- package/src/remult3/DecoratorReplacer.d.ts +2 -2
- package/src/remult3/RepositoryImplementation.d.ts +51 -41
- package/src/remult3/RepositoryImplementation.js +402 -257
- package/src/remult3/remult3.d.ts +56 -51
- package/src/remult3/remult3.js +0 -1
- package/src/server-action.d.ts +12 -5
- package/src/server-action.js +78 -48
- package/src/shared-tests/db-tests-setup.d.ts +8 -8
- package/src/shared-tests/db-tests-setup.js +6 -6
- package/src/shared-tests/db-tests.db-tests.d.ts +1 -1
- package/src/shared-tests/db-tests.db-tests.js +350 -153
- package/src/shared-tests/deleteAll.d.ts +1 -1
- package/src/shared-tests/entityWithValidations.js +1 -1
- package/src/shared-tests/test-custom-id-column.spec.js +4 -4
- package/src/shared-tests/test-special-value.spec.js +9 -9
- package/src/shared-tests/test-update-with-null.spec.js +8 -4
- package/src/sort.d.ts +2 -2
- package/src/sort.js +9 -7
- package/src/tests/TestDataApiResponse.d.ts +1 -1
- package/src/tests/TestDataApiResponse.js +3 -4
- package/src/tests/createData.js +1 -1
- package/src/tests/d.js +1 -1
- package/src/tests/dWithPrefilter.js +1 -1
- package/src/tests/entityForCustomFilter.d.ts +4 -4
- package/src/tests/entityForCustomFilter.js +16 -6
- package/src/tests/entityWithValidationsOnColumn.js +1 -1
- package/src/tests/frontend-database-tests-setup.spec.d.ts +1 -1
- package/src/tests/frontend-database-tests-setup.spec.js +8 -8
- package/src/tests/h.js +3 -3
- package/src/tests/remult-3-entities.d.ts +2 -2
- package/src/tests/remult-3-entities.js +8 -4
- package/src/tests/testHelper.spec.d.ts +7 -7
- package/src/tests/testHelper.spec.js +38 -27
- package/src/tests/testModel/models.js +3 -3
- package/src/validators.d.ts +1 -1
- package/src/validators.js +18 -9
- package/src/valueConverters.d.ts +1 -1
- package/src/valueConverters.js +38 -21
- package/esm/remult-svletekit.d.ts +0 -3
- package/esm/remult-svletekit.js +0 -83
- package/esm/src/id-entity.d.ts +0 -4
- package/esm/src/id-entity.js +0 -8
- package/esm/src/remult3/getId.d.ts +0 -2
- package/esm/src/remult3/getId.js +0 -7
- package/postgres/getEntityTypescriptPostgres.d.ts +0 -1
- package/postgres/getEntityTypescriptPostgres.js +0 -125
- package/src/id-entity.d.ts +0 -4
- package/src/id-entity.js +0 -17
- package/src/remult3/getId.d.ts +0 -2
- package/src/remult3/getId.js +0 -11
|
@@ -8,7 +8,7 @@ var FilterConsumerBridgeToSqlRequest = /** @class */ (function () {
|
|
|
8
8
|
function FilterConsumerBridgeToSqlRequest(r, nameProvider) {
|
|
9
9
|
this.r = r;
|
|
10
10
|
this.nameProvider = nameProvider;
|
|
11
|
-
this.where =
|
|
11
|
+
this.where = '';
|
|
12
12
|
this._addWhere = true;
|
|
13
13
|
this.promises = [];
|
|
14
14
|
}
|
|
@@ -55,7 +55,7 @@ var FilterConsumerBridgeToSqlRequest = /** @class */ (function () {
|
|
|
55
55
|
});
|
|
56
56
|
};
|
|
57
57
|
FilterConsumerBridgeToSqlRequest.prototype.custom = function (key, customItem) {
|
|
58
|
-
throw new Error(
|
|
58
|
+
throw new Error('Custom filter should be translated before it gets here');
|
|
59
59
|
};
|
|
60
60
|
FilterConsumerBridgeToSqlRequest.prototype.or = function (orElements) {
|
|
61
61
|
var _this = this;
|
|
@@ -82,10 +82,10 @@ var FilterConsumerBridgeToSqlRequest = /** @class */ (function () {
|
|
|
82
82
|
return [2 /*return*/]; //since if any member of or is empty, then the entire or is irrelevant
|
|
83
83
|
if (where.length > 0) {
|
|
84
84
|
if (statement.length > 0) {
|
|
85
|
-
statement +=
|
|
85
|
+
statement += ' or ';
|
|
86
86
|
}
|
|
87
87
|
if (orElements.length > 1) {
|
|
88
|
-
statement +=
|
|
88
|
+
statement += '(' + where + ')';
|
|
89
89
|
}
|
|
90
90
|
else
|
|
91
91
|
statement += where;
|
|
@@ -106,7 +106,7 @@ var FilterConsumerBridgeToSqlRequest = /** @class */ (function () {
|
|
|
106
106
|
finally { if (e_2) throw e_2.error; }
|
|
107
107
|
return [7 /*endfinally*/];
|
|
108
108
|
case 7:
|
|
109
|
-
this.addToWhere(
|
|
109
|
+
this.addToWhere('(' + statement + ')');
|
|
110
110
|
return [2 /*return*/];
|
|
111
111
|
}
|
|
112
112
|
});
|
|
@@ -130,7 +130,14 @@ var FilterConsumerBridgeToSqlRequest = /** @class */ (function () {
|
|
|
130
130
|
var _this = this;
|
|
131
131
|
return tslib_1.__generator(this, function (_a) {
|
|
132
132
|
if (val && val.length > 0)
|
|
133
|
-
this.addToWhere(this.nameProvider.$dbNameOf(col) +
|
|
133
|
+
this.addToWhere(this.nameProvider.$dbNameOf(col) +
|
|
134
|
+
' in (' +
|
|
135
|
+
val
|
|
136
|
+
.map(function (x) {
|
|
137
|
+
return _this.r.addParameterAndReturnSqlToken(col.valueConverter.toDb(x));
|
|
138
|
+
})
|
|
139
|
+
.join(',') +
|
|
140
|
+
')');
|
|
134
141
|
else
|
|
135
142
|
this.addToWhere('1 = 0 /*isIn with no values*/');
|
|
136
143
|
return [2 /*return*/];
|
|
@@ -138,28 +145,32 @@ var FilterConsumerBridgeToSqlRequest = /** @class */ (function () {
|
|
|
138
145
|
}); })());
|
|
139
146
|
};
|
|
140
147
|
FilterConsumerBridgeToSqlRequest.prototype.isEqualTo = function (col, val) {
|
|
141
|
-
this.add(col, val,
|
|
148
|
+
this.add(col, val, '=');
|
|
142
149
|
};
|
|
143
150
|
FilterConsumerBridgeToSqlRequest.prototype.isDifferentFrom = function (col, val) {
|
|
144
|
-
this.add(col, val,
|
|
151
|
+
this.add(col, val, '<>');
|
|
145
152
|
};
|
|
146
153
|
FilterConsumerBridgeToSqlRequest.prototype.isGreaterOrEqualTo = function (col, val) {
|
|
147
|
-
this.add(col, val,
|
|
154
|
+
this.add(col, val, '>=');
|
|
148
155
|
};
|
|
149
156
|
FilterConsumerBridgeToSqlRequest.prototype.isGreaterThan = function (col, val) {
|
|
150
|
-
this.add(col, val,
|
|
157
|
+
this.add(col, val, '>');
|
|
151
158
|
};
|
|
152
159
|
FilterConsumerBridgeToSqlRequest.prototype.isLessOrEqualTo = function (col, val) {
|
|
153
|
-
this.add(col, val,
|
|
160
|
+
this.add(col, val, '<=');
|
|
154
161
|
};
|
|
155
162
|
FilterConsumerBridgeToSqlRequest.prototype.isLessThan = function (col, val) {
|
|
156
|
-
this.add(col, val,
|
|
163
|
+
this.add(col, val, '<');
|
|
157
164
|
};
|
|
158
165
|
FilterConsumerBridgeToSqlRequest.prototype.containsCaseInsensitive = function (col, val) {
|
|
159
166
|
var _this = this;
|
|
160
167
|
this.promises.push((function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
161
168
|
return tslib_1.__generator(this, function (_a) {
|
|
162
|
-
this.addToWhere('lower (' +
|
|
169
|
+
this.addToWhere('lower (' +
|
|
170
|
+
this.nameProvider.$dbNameOf(col) +
|
|
171
|
+
") like lower ('%" +
|
|
172
|
+
val.replace(/'/g, "''") +
|
|
173
|
+
"%')");
|
|
163
174
|
return [2 /*return*/];
|
|
164
175
|
});
|
|
165
176
|
}); })());
|
|
@@ -169,7 +180,11 @@ var FilterConsumerBridgeToSqlRequest = /** @class */ (function () {
|
|
|
169
180
|
this.promises.push((function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
170
181
|
var x;
|
|
171
182
|
return tslib_1.__generator(this, function (_a) {
|
|
172
|
-
x = this.nameProvider.$dbNameOf(col) +
|
|
183
|
+
x = this.nameProvider.$dbNameOf(col) +
|
|
184
|
+
' ' +
|
|
185
|
+
operator +
|
|
186
|
+
' ' +
|
|
187
|
+
this.r.addParameterAndReturnSqlToken(col.valueConverter.toDb(val));
|
|
173
188
|
this.addToWhere(x);
|
|
174
189
|
return [2 /*return*/];
|
|
175
190
|
});
|
|
@@ -197,7 +212,7 @@ var FilterConsumerBridgeToSqlRequest = /** @class */ (function () {
|
|
|
197
212
|
case 1:
|
|
198
213
|
_a.sent();
|
|
199
214
|
if (item.sql) {
|
|
200
|
-
this.addToWhere(
|
|
215
|
+
this.addToWhere('(' + item.sql + ')');
|
|
201
216
|
}
|
|
202
217
|
_a.label = 2;
|
|
203
218
|
case 2: return [2 /*return*/];
|
|
@@ -229,7 +244,9 @@ var CustomSqlFilterBuilder = /** @class */ (function () {
|
|
|
229
244
|
}());
|
|
230
245
|
exports.CustomSqlFilterBuilder = CustomSqlFilterBuilder;
|
|
231
246
|
function isDbReadonly(field, dbNames) {
|
|
232
|
-
return (field.dbReadOnly ||
|
|
247
|
+
return (field.dbReadOnly ||
|
|
248
|
+
field.isServerExpression ||
|
|
249
|
+
dbNames.$dbNameOf(field) != field.options.dbName);
|
|
233
250
|
}
|
|
234
251
|
exports.isDbReadonly = isDbReadonly;
|
|
235
252
|
function dbNamesOf(repo) {
|
|
@@ -247,7 +264,7 @@ function dbNamesOf(repo) {
|
|
|
247
264
|
_e.toString = function () { return result.$entityName; },
|
|
248
265
|
_e.$dbNameOf = function (field) {
|
|
249
266
|
var key;
|
|
250
|
-
if (typeof field ===
|
|
267
|
+
if (typeof field === 'string')
|
|
251
268
|
key = field;
|
|
252
269
|
else
|
|
253
270
|
key = field.key;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { FieldMetadata } from
|
|
2
|
-
import { Remult } from
|
|
3
|
-
import { EntityMetadata, EntityFilter } from
|
|
1
|
+
import { FieldMetadata } from '../column-interfaces';
|
|
2
|
+
import { Remult } from '../context';
|
|
3
|
+
import { EntityMetadata, EntityFilter } from '../remult3';
|
|
4
4
|
export declare class Filter {
|
|
5
5
|
private apply?;
|
|
6
6
|
constructor(apply?: (add: FilterConsumer) => void);
|
|
7
7
|
__applyToConsumer(add: FilterConsumer): void;
|
|
8
8
|
static resolve<entityType>(filter: EntityFilter<entityType> | (() => EntityFilter<entityType> | Promise<EntityFilter<entityType>>)): Promise<EntityFilter<entityType>>;
|
|
9
|
-
static createCustom<entityType>(rawFilterTranslator: (unused: never, r: Remult) => EntityFilter<entityType> | Promise<EntityFilter<entityType>>, key?: string): (() => EntityFilter<entityType>) &
|
|
10
|
-
static createCustom<entityType, argsType>(rawFilterTranslator: (args: argsType, r: Remult) => EntityFilter<entityType> | Promise<EntityFilter<entityType>>, key?: string): ((y: argsType) => EntityFilter<entityType>) &
|
|
9
|
+
static createCustom<entityType>(rawFilterTranslator: (unused: never, r: Remult) => EntityFilter<entityType> | Promise<EntityFilter<entityType>>, key?: string): (() => EntityFilter<entityType>) & customFilterInfo<entityType>;
|
|
10
|
+
static createCustom<entityType, argsType>(rawFilterTranslator: (args: argsType, r: Remult) => EntityFilter<entityType> | Promise<EntityFilter<entityType>>, key?: string): ((y: argsType) => EntityFilter<entityType>) & customFilterInfo<entityType>;
|
|
11
11
|
static fromEntityFilter<T>(entity: EntityMetadata<T>, whereItem: EntityFilter<T>): Filter;
|
|
12
12
|
toJson(): any;
|
|
13
13
|
static entityFilterToJson<T>(entityDefs: EntityMetadata<T>, where: EntityFilter<T>): any;
|
|
@@ -77,9 +77,9 @@ export declare function entityFilterToJson<T>(entityDefs: EntityMetadata<T>, whe
|
|
|
77
77
|
export declare function buildFilterFromRequestParameters(entity: EntityMetadata, filterInfo: {
|
|
78
78
|
get: (key: string) => any;
|
|
79
79
|
}): EntityFilter<any>;
|
|
80
|
-
export interface
|
|
80
|
+
export interface customFilterInfo<entityType> {
|
|
81
81
|
rawFilterInfo: {
|
|
82
82
|
key: string;
|
|
83
|
-
rawFilterTranslator: (args: any, r: Remult) =>
|
|
83
|
+
rawFilterTranslator: (args: any, r: Remult) => EntityFilter<entityType> | Promise<EntityFilter<entityType>>;
|
|
84
84
|
};
|
|
85
85
|
}
|
|
@@ -18,7 +18,7 @@ var Filter = /** @class */ (function () {
|
|
|
18
18
|
return tslib_1.__generator(this, function (_a) {
|
|
19
19
|
switch (_a.label) {
|
|
20
20
|
case 0:
|
|
21
|
-
if (!(typeof filter ===
|
|
21
|
+
if (!(typeof filter === 'function')) return [3 /*break*/, 2];
|
|
22
22
|
return [4 /*yield*/, filter()];
|
|
23
23
|
case 1: return [2 /*return*/, _a.sent()];
|
|
24
24
|
case 2: return [2 /*return*/, filter];
|
|
@@ -35,7 +35,7 @@ var Filter = /** @class */ (function () {
|
|
|
35
35
|
if (x == undefined)
|
|
36
36
|
x = {};
|
|
37
37
|
if (!rawFilterInfo.key)
|
|
38
|
-
throw
|
|
38
|
+
throw 'Usage of custom filter before a key was assigned to it';
|
|
39
39
|
return _a = {},
|
|
40
40
|
_a[exports.customUrlToken + rawFilterInfo.key] = x,
|
|
41
41
|
_a;
|
|
@@ -47,10 +47,10 @@ var Filter = /** @class */ (function () {
|
|
|
47
47
|
if (Object.prototype.hasOwnProperty.call(whereItem, key)) {
|
|
48
48
|
var fieldToFilter_1 = whereItem[key];
|
|
49
49
|
{
|
|
50
|
-
if (key ==
|
|
50
|
+
if (key == '$or') {
|
|
51
51
|
result.push(new (OrFilter.bind.apply(OrFilter, tslib_1.__spread([void 0], fieldToFilter_1.map(function (x) { return Filter.fromEntityFilter(entity, x); }))))());
|
|
52
52
|
}
|
|
53
|
-
else if (key ==
|
|
53
|
+
else if (key == '$and') {
|
|
54
54
|
result.push(new (AndFilter.bind.apply(AndFilter, tslib_1.__spread([void 0], fieldToFilter_1.map(function (x) { return Filter.fromEntityFilter(entity, x); }))))());
|
|
55
55
|
}
|
|
56
56
|
else if (key.startsWith(exports.customUrlToken)) {
|
|
@@ -71,29 +71,29 @@ var Filter = /** @class */ (function () {
|
|
|
71
71
|
if (Object.prototype.hasOwnProperty.call(fieldToFilter_1, key_1)) {
|
|
72
72
|
var element = fieldToFilter_1[key_1];
|
|
73
73
|
switch (key_1) {
|
|
74
|
-
case
|
|
75
|
-
case
|
|
74
|
+
case '$gte':
|
|
75
|
+
case '>=':
|
|
76
76
|
result.push(fh.isGreaterOrEqualTo(element));
|
|
77
77
|
found = true;
|
|
78
78
|
break;
|
|
79
|
-
case
|
|
80
|
-
case
|
|
79
|
+
case '$gt':
|
|
80
|
+
case '>':
|
|
81
81
|
result.push(fh.isGreaterThan(element));
|
|
82
82
|
found = true;
|
|
83
83
|
break;
|
|
84
|
-
case
|
|
85
|
-
case
|
|
84
|
+
case '$lte':
|
|
85
|
+
case '<=':
|
|
86
86
|
result.push(fh.isLessOrEqualTo(element));
|
|
87
87
|
found = true;
|
|
88
88
|
break;
|
|
89
|
-
case
|
|
90
|
-
case
|
|
89
|
+
case '$lt':
|
|
90
|
+
case '<':
|
|
91
91
|
result.push(fh.isLessThan(element));
|
|
92
92
|
found = true;
|
|
93
93
|
break;
|
|
94
|
-
case
|
|
95
|
-
case
|
|
96
|
-
case
|
|
94
|
+
case '$ne':
|
|
95
|
+
case '!=':
|
|
96
|
+
case '$nin':
|
|
97
97
|
found = true;
|
|
98
98
|
if (Array.isArray(element)) {
|
|
99
99
|
result.push(fh.isNotIn(element));
|
|
@@ -101,11 +101,11 @@ var Filter = /** @class */ (function () {
|
|
|
101
101
|
else
|
|
102
102
|
result.push(fh.isDifferentFrom(element));
|
|
103
103
|
break;
|
|
104
|
-
case
|
|
104
|
+
case '$in':
|
|
105
105
|
found = true;
|
|
106
106
|
result.push(fh.isIn(element));
|
|
107
107
|
break;
|
|
108
|
-
case
|
|
108
|
+
case '$contains':
|
|
109
109
|
found = true;
|
|
110
110
|
result.push(fh.contains(element));
|
|
111
111
|
break;
|
|
@@ -138,7 +138,9 @@ var Filter = /** @class */ (function () {
|
|
|
138
138
|
return Filter.fromEntityFilter(entityDefs, where).toJson();
|
|
139
139
|
};
|
|
140
140
|
Filter.entityFilterFromJson = function (entityDefs, packed) {
|
|
141
|
-
return buildFilterFromRequestParameters(entityDefs, {
|
|
141
|
+
return buildFilterFromRequestParameters(entityDefs, {
|
|
142
|
+
get: function (key) { return packed[key]; },
|
|
143
|
+
});
|
|
142
144
|
};
|
|
143
145
|
Filter.translateCustomWhere = function (r, entity, remult) {
|
|
144
146
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
@@ -162,7 +164,9 @@ var Filter = /** @class */ (function () {
|
|
|
162
164
|
if (!(_i < _a.length)) return [3 /*break*/, 5];
|
|
163
165
|
key = _a[_i];
|
|
164
166
|
element = entity.entityType[key];
|
|
165
|
-
if (!(element &&
|
|
167
|
+
if (!(element &&
|
|
168
|
+
element.rawFilterInfo &&
|
|
169
|
+
element.rawFilterInfo.rawFilterTranslator)) return [3 /*break*/, 4];
|
|
166
170
|
if (!(element.rawFilterInfo.key == filterKey)) return [3 /*break*/, 4];
|
|
167
171
|
_d = (_c = r).push;
|
|
168
172
|
_f = (_e = Filter).fromEntityFilter;
|
|
@@ -201,7 +205,7 @@ var filterHelper = /** @class */ (function () {
|
|
|
201
205
|
if (ei) {
|
|
202
206
|
if (!val)
|
|
203
207
|
return null;
|
|
204
|
-
if (typeof val ===
|
|
208
|
+
if (typeof val === 'string' || typeof val === 'number')
|
|
205
209
|
return val;
|
|
206
210
|
return remult3_1.getEntityRef(val).getId();
|
|
207
211
|
}
|
|
@@ -326,17 +330,21 @@ var OrFilter = /** @class */ (function (_super) {
|
|
|
326
330
|
return OrFilter;
|
|
327
331
|
}(Filter));
|
|
328
332
|
exports.OrFilter = OrFilter;
|
|
329
|
-
exports.customUrlToken =
|
|
330
|
-
exports.customDatabaseFilterToken =
|
|
333
|
+
exports.customUrlToken = '$custom$';
|
|
334
|
+
exports.customDatabaseFilterToken = '$db$';
|
|
335
|
+
var customArrayToken = '$an array';
|
|
331
336
|
var FilterSerializer = /** @class */ (function () {
|
|
332
337
|
function FilterSerializer() {
|
|
333
338
|
this.result = {};
|
|
334
339
|
this.hasUndefined = false;
|
|
335
340
|
}
|
|
336
341
|
FilterSerializer.prototype.databaseCustom = function (databaseCustom) {
|
|
337
|
-
throw new Error(
|
|
342
|
+
throw new Error('database custom is not allowed with api calls.');
|
|
338
343
|
};
|
|
339
344
|
FilterSerializer.prototype.custom = function (key, customItem) {
|
|
345
|
+
var _a;
|
|
346
|
+
if (Array.isArray(customItem))
|
|
347
|
+
customItem = (_a = {}, _a[customArrayToken] = customItem, _a);
|
|
340
348
|
this.add(exports.customUrlToken + key, customItem);
|
|
341
349
|
};
|
|
342
350
|
FilterSerializer.prototype.add = function (key, val) {
|
|
@@ -356,20 +364,20 @@ var FilterSerializer = /** @class */ (function () {
|
|
|
356
364
|
r[key] = v;
|
|
357
365
|
};
|
|
358
366
|
FilterSerializer.prototype.or = function (orElements) {
|
|
359
|
-
this.add(
|
|
367
|
+
this.add('OR', orElements.map(function (x) {
|
|
360
368
|
var f = new FilterSerializer();
|
|
361
369
|
x.__applyToConsumer(f);
|
|
362
370
|
return f.result;
|
|
363
371
|
}));
|
|
364
372
|
};
|
|
365
373
|
FilterSerializer.prototype.isNull = function (col) {
|
|
366
|
-
this.add(col.key +
|
|
374
|
+
this.add(col.key + '.null', true);
|
|
367
375
|
};
|
|
368
376
|
FilterSerializer.prototype.isNotNull = function (col) {
|
|
369
|
-
this.add(col.key +
|
|
377
|
+
this.add(col.key + '.null', false);
|
|
370
378
|
};
|
|
371
379
|
FilterSerializer.prototype.isIn = function (col, val) {
|
|
372
|
-
this.add(col.key +
|
|
380
|
+
this.add(col.key + '.in', val.map(function (x) { return col.valueConverter.toJson(x); }));
|
|
373
381
|
};
|
|
374
382
|
FilterSerializer.prototype.isEqualTo = function (col, val) {
|
|
375
383
|
this.add(col.key, col.valueConverter.toJson(val));
|
|
@@ -390,7 +398,7 @@ var FilterSerializer = /** @class */ (function () {
|
|
|
390
398
|
this.add(col.key + '.lt', col.valueConverter.toJson(val));
|
|
391
399
|
};
|
|
392
400
|
FilterSerializer.prototype.containsCaseInsensitive = function (col, val) {
|
|
393
|
-
this.add(col.key +
|
|
401
|
+
this.add(col.key + '.contains', val);
|
|
394
402
|
};
|
|
395
403
|
return FilterSerializer;
|
|
396
404
|
}());
|
|
@@ -398,11 +406,10 @@ exports.FilterSerializer = FilterSerializer;
|
|
|
398
406
|
function entityFilterToJson(entityDefs, where) {
|
|
399
407
|
if (!where)
|
|
400
408
|
return {};
|
|
401
|
-
return
|
|
409
|
+
return Filter.fromEntityFilter(entityDefs, where).toJson();
|
|
402
410
|
}
|
|
403
411
|
exports.entityFilterToJson = entityFilterToJson;
|
|
404
412
|
function buildFilterFromRequestParameters(entity, filterInfo) {
|
|
405
|
-
var _a;
|
|
406
413
|
var where = [];
|
|
407
414
|
tslib_1.__spread(entity.fields).forEach(function (col) {
|
|
408
415
|
var _a, _b;
|
|
@@ -421,7 +428,9 @@ function buildFilterFromRequestParameters(entity, filterInfo) {
|
|
|
421
428
|
arr = JSON.parse(val);
|
|
422
429
|
else
|
|
423
430
|
arr = val;
|
|
424
|
-
theVal = arr.map(function (x) {
|
|
431
|
+
theVal = arr.map(function (x) {
|
|
432
|
+
return asString ? x : col.valueConverter.fromJson(x);
|
|
433
|
+
});
|
|
425
434
|
}
|
|
426
435
|
else {
|
|
427
436
|
theVal = asString ? theVal : col.valueConverter.fromJson(theVal);
|
|
@@ -460,23 +469,23 @@ function buildFilterFromRequestParameters(entity, filterInfo) {
|
|
|
460
469
|
}
|
|
461
470
|
var c = new filterHelper(col);
|
|
462
471
|
addFilter('', function (val) { return val; });
|
|
463
|
-
addFilter('.gt', function (val) { return ({
|
|
464
|
-
addFilter('.gte', function (val) { return ({
|
|
465
|
-
addFilter('.lt', function (val) { return ({
|
|
466
|
-
addFilter('.lte', function (val) { return ({
|
|
467
|
-
addFilter('.ne', function (val) { return ({
|
|
472
|
+
addFilter('.gt', function (val) { return ({ $gt: val }); });
|
|
473
|
+
addFilter('.gte', function (val) { return ({ $gte: val }); });
|
|
474
|
+
addFilter('.lt', function (val) { return ({ $lt: val }); });
|
|
475
|
+
addFilter('.lte', function (val) { return ({ $lte: val }); });
|
|
476
|
+
addFilter('.ne', function (val) { return ({ $ne: val }); });
|
|
468
477
|
addFilter('.in', function (val) { return val; }, true);
|
|
469
|
-
var nullFilter = filterInfo.get(col.key +
|
|
478
|
+
var nullFilter = filterInfo.get(col.key + '.null');
|
|
470
479
|
if (nullFilter) {
|
|
471
480
|
nullFilter = nullFilter.toString().trim().toLowerCase();
|
|
472
481
|
switch (nullFilter) {
|
|
473
|
-
case
|
|
474
|
-
case
|
|
475
|
-
case
|
|
482
|
+
case 'y':
|
|
483
|
+
case 'true':
|
|
484
|
+
case 'yes':
|
|
476
485
|
where.push((_a = {}, _a[col.key] = null, _a));
|
|
477
486
|
break;
|
|
478
487
|
default:
|
|
479
|
-
where.push((_b = {}, _b[col.key] = {
|
|
488
|
+
where.push((_b = {}, _b[col.key] = { $ne: null }, _b));
|
|
480
489
|
break;
|
|
481
490
|
}
|
|
482
491
|
}
|
|
@@ -488,19 +497,36 @@ function buildFilterFromRequestParameters(entity, filterInfo) {
|
|
|
488
497
|
where.push({
|
|
489
498
|
$and: array.map(function (v) { return ({
|
|
490
499
|
$or: v.map(function (x) {
|
|
491
|
-
return buildFilterFromRequestParameters(entity, {
|
|
492
|
-
|
|
493
|
-
|
|
500
|
+
return buildFilterFromRequestParameters(entity, {
|
|
501
|
+
get: function (key) { return x[key]; },
|
|
502
|
+
});
|
|
503
|
+
}),
|
|
504
|
+
}); }),
|
|
494
505
|
});
|
|
495
506
|
}
|
|
496
|
-
|
|
507
|
+
var _loop_2 = function (key) {
|
|
497
508
|
var element = entity.entityType[key];
|
|
498
|
-
if (element &&
|
|
509
|
+
if (element &&
|
|
510
|
+
element.rawFilterInfo &&
|
|
511
|
+
element.rawFilterInfo.rawFilterTranslator) {
|
|
499
512
|
var custom = filterInfo.get(exports.customUrlToken + key);
|
|
500
513
|
if (custom !== undefined) {
|
|
501
|
-
|
|
514
|
+
var addItem_1 = function (item) {
|
|
515
|
+
var _a;
|
|
516
|
+
if (item[customArrayToken] != undefined)
|
|
517
|
+
item = item[customArrayToken];
|
|
518
|
+
where.push((_a = {}, _a[exports.customUrlToken + key] = item, _a));
|
|
519
|
+
};
|
|
520
|
+
if (Array.isArray(custom)) {
|
|
521
|
+
custom.forEach(function (item) { return addItem_1(item); });
|
|
522
|
+
}
|
|
523
|
+
else
|
|
524
|
+
addItem_1(custom);
|
|
502
525
|
}
|
|
503
526
|
}
|
|
527
|
+
};
|
|
528
|
+
for (var key in entity.entityType) {
|
|
529
|
+
_loop_2(key);
|
|
504
530
|
}
|
|
505
531
|
return { $and: where };
|
|
506
532
|
function separateArrayFromInnerArray(val) {
|
|
@@ -20,7 +20,9 @@ var LiveQueryClient = /** @class */ (function () {
|
|
|
20
20
|
else
|
|
21
21
|
handleMessage();
|
|
22
22
|
};
|
|
23
|
-
|
|
23
|
+
LiveQueryClient.prototype.hasQueriesForTesting = function () {
|
|
24
|
+
return this.queries.size > 0;
|
|
25
|
+
};
|
|
24
26
|
LiveQueryClient.prototype.runPromise = function (p) {
|
|
25
27
|
return p;
|
|
26
28
|
};
|
|
@@ -45,7 +47,7 @@ var LiveQueryClient = /** @class */ (function () {
|
|
|
45
47
|
_b.trys.push([2, 7, , 8]);
|
|
46
48
|
q_1 = this.channels.get(key);
|
|
47
49
|
if (!!q_1) return [3 /*break*/, 6];
|
|
48
|
-
this.channels.set(key, q_1 = new MessageChannel());
|
|
50
|
+
this.channels.set(key, (q_1 = new MessageChannel()));
|
|
49
51
|
_b.label = 3;
|
|
50
52
|
case 3:
|
|
51
53
|
_b.trys.push([3, 5, , 6]);
|
|
@@ -95,16 +97,21 @@ var LiveQueryClient = /** @class */ (function () {
|
|
|
95
97
|
LiveQueryClient.prototype.subscribe = function (repo, options, listener) {
|
|
96
98
|
var _this = this;
|
|
97
99
|
var alive = true;
|
|
98
|
-
var onUnsubscribe = function () {
|
|
99
|
-
|
|
100
|
+
var onUnsubscribe = function () {
|
|
101
|
+
alive = false;
|
|
102
|
+
};
|
|
103
|
+
this.runPromise(repo
|
|
104
|
+
.buildEntityDataProviderFindOptions(options)
|
|
100
105
|
.then(function (opts) {
|
|
101
106
|
if (!alive)
|
|
102
107
|
return;
|
|
103
|
-
var _a = new rest_data_provider_1.RestDataProvider(_this.apiProvider)
|
|
108
|
+
var _a = new rest_data_provider_1.RestDataProvider(_this.apiProvider)
|
|
109
|
+
.getEntityDataProvider(repo.metadata)
|
|
110
|
+
.buildFindRequest(opts), createKey = _a.createKey, subscribe = _a.subscribe;
|
|
104
111
|
var eventTypeKey = createKey();
|
|
105
112
|
var q = _this.queries.get(eventTypeKey);
|
|
106
113
|
if (!q) {
|
|
107
|
-
_this.queries.set(eventTypeKey, q = new SubscriptionChannel_1.LiveQuerySubscriber(repo, { entityKey: repo.metadata.key, options: options }, _this.getUserId()));
|
|
114
|
+
_this.queries.set(eventTypeKey, (q = new SubscriptionChannel_1.LiveQuerySubscriber(repo, { entityKey: repo.metadata.key, options: options }, _this.getUserId())));
|
|
108
115
|
q.subscribeCode = function () {
|
|
109
116
|
if (q.unsubscribe) {
|
|
110
117
|
q.unsubscribe();
|
|
@@ -115,13 +122,13 @@ var LiveQueryClient = /** @class */ (function () {
|
|
|
115
122
|
complete: function () { },
|
|
116
123
|
error: function (er) {
|
|
117
124
|
q.listeners.forEach(function (l) { return l.error(er); });
|
|
118
|
-
}
|
|
125
|
+
},
|
|
119
126
|
}).then(function (unsubscribeToChannel) {
|
|
120
127
|
if (q.listeners.length == 0) {
|
|
121
128
|
unsubscribeToChannel();
|
|
122
129
|
return;
|
|
123
130
|
}
|
|
124
|
-
_this.runPromise(subscribe(q.
|
|
131
|
+
_this.runPromise(subscribe(q.queryChannel)
|
|
125
132
|
.then(function (r) {
|
|
126
133
|
if (q.listeners.length === 0) {
|
|
127
134
|
r.unsubscribe();
|
|
@@ -136,7 +143,9 @@ var LiveQueryClient = /** @class */ (function () {
|
|
|
136
143
|
};
|
|
137
144
|
})
|
|
138
145
|
.catch(function (err) {
|
|
139
|
-
|
|
146
|
+
q.listeners.forEach(function (l) { return l.error(err); });
|
|
147
|
+
unsubscribeToChannel();
|
|
148
|
+
_this.queries.delete(eventTypeKey);
|
|
140
149
|
}));
|
|
141
150
|
})).catch(function (err) {
|
|
142
151
|
q.listeners.forEach(function (l) { return l.error(err); });
|
|
@@ -194,7 +203,9 @@ var LiveQueryClient = /** @class */ (function () {
|
|
|
194
203
|
case 1:
|
|
195
204
|
actionInfo = (_j.sent()).actionInfo;
|
|
196
205
|
_c = this.runPromise;
|
|
197
|
-
return [4 /*yield*/, actionInfo.runActionWithoutBlockingUI(function () {
|
|
206
|
+
return [4 /*yield*/, actionInfo.runActionWithoutBlockingUI(function () {
|
|
207
|
+
return buildRestDataProvider_1.buildRestDataProvider(p_1.httpClient).post(p_1.url + '/' + SubscriptionChannel_1.liveQueryKeepAliveRoute, ids);
|
|
208
|
+
})];
|
|
198
209
|
case 2: return [4 /*yield*/, _c.apply(this, [_j.sent()])];
|
|
199
210
|
case 3:
|
|
200
211
|
invalidIds = _j.sent();
|
|
@@ -229,23 +240,22 @@ var LiveQueryClient = /** @class */ (function () {
|
|
|
229
240
|
}
|
|
230
241
|
});
|
|
231
242
|
}); }, 30000);
|
|
232
|
-
return this.runPromise(this.client =
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
q.subscribeCode();
|
|
239
|
-
}
|
|
243
|
+
return this.runPromise((this.client = this.apiProvider().subscriptionClient.openConnection(function () {
|
|
244
|
+
var e_4, _a;
|
|
245
|
+
try {
|
|
246
|
+
for (var _b = tslib_1.__values(_this.queries.values()), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
247
|
+
var q = _c.value;
|
|
248
|
+
q.subscribeCode();
|
|
240
249
|
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
finally { if (e_4) throw e_4.error; }
|
|
250
|
+
}
|
|
251
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
252
|
+
finally {
|
|
253
|
+
try {
|
|
254
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
247
255
|
}
|
|
248
|
-
|
|
256
|
+
finally { if (e_4) throw e_4.error; }
|
|
257
|
+
}
|
|
258
|
+
})));
|
|
249
259
|
}
|
|
250
260
|
return this.client;
|
|
251
261
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SubscriptionClient, SubscriptionClientConnection } from
|
|
1
|
+
import { SubscriptionClient, SubscriptionClientConnection } from './SubscriptionChannel';
|
|
2
2
|
export declare class SseSubscriptionClient implements SubscriptionClient {
|
|
3
3
|
openConnection(onReconnect: VoidFunction): Promise<SubscriptionClientConnection>;
|
|
4
4
|
}
|