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
|
@@ -11,29 +11,32 @@ function postgresColumnSyntax(x, dbName) {
|
|
|
11
11
|
var result = dbName;
|
|
12
12
|
if (x.valueType == Number) {
|
|
13
13
|
if (!x.valueConverter.fieldTypeInDb)
|
|
14
|
-
result +=
|
|
14
|
+
result += ' numeric' + (x.allowNull ? '' : ' default 0 not null');
|
|
15
15
|
else
|
|
16
|
-
result +=
|
|
16
|
+
result +=
|
|
17
|
+
' ' +
|
|
18
|
+
x.valueConverter.fieldTypeInDb +
|
|
19
|
+
(x.allowNull ? '' : ' default 0 not null');
|
|
17
20
|
}
|
|
18
21
|
else if (x.valueType == Date) {
|
|
19
22
|
if (!x.valueConverter.fieldTypeInDb)
|
|
20
23
|
if (x.valueConverter == valueConverters_1.ValueConverters.DateOnly)
|
|
21
|
-
result +=
|
|
24
|
+
result += ' date';
|
|
22
25
|
else
|
|
23
|
-
result +=
|
|
26
|
+
result += ' timestamp';
|
|
24
27
|
else
|
|
25
|
-
result +=
|
|
28
|
+
result += ' ' + x.valueConverter.fieldTypeInDb;
|
|
26
29
|
}
|
|
27
30
|
else if (x.valueType == Boolean)
|
|
28
|
-
result +=
|
|
31
|
+
result += ' boolean' + (x.allowNull ? '' : ' default false not null');
|
|
29
32
|
else if (x.valueConverter.fieldTypeInDb) {
|
|
30
|
-
result +=
|
|
33
|
+
result += ' ' + x.valueConverter.fieldTypeInDb;
|
|
31
34
|
if (!x.allowNull && x.valueConverter.fieldTypeInDb == 'integer') {
|
|
32
|
-
result +=
|
|
35
|
+
result += ' default 0 not null';
|
|
33
36
|
}
|
|
34
37
|
}
|
|
35
38
|
else
|
|
36
|
-
result +=
|
|
39
|
+
result += ' varchar' + (x.allowNull ? '' : " default '' not null");
|
|
37
40
|
return result;
|
|
38
41
|
}
|
|
39
42
|
exports.postgresColumnSyntax = postgresColumnSyntax;
|
|
@@ -53,7 +56,7 @@ var PostgresSchemaBuilder = /** @class */ (function () {
|
|
|
53
56
|
this.pool = pool;
|
|
54
57
|
this.additionalWhere = '';
|
|
55
58
|
if (schema) {
|
|
56
|
-
this.additionalWhere =
|
|
59
|
+
this.additionalWhere = " and table_schema='" + schema + "'";
|
|
57
60
|
}
|
|
58
61
|
}
|
|
59
62
|
PostgresSchemaBuilder.prototype.verifyStructureOfAllEntities = function (remult) {
|
|
@@ -64,7 +67,7 @@ var PostgresSchemaBuilder = /** @class */ (function () {
|
|
|
64
67
|
switch (_d.label) {
|
|
65
68
|
case 0:
|
|
66
69
|
if (!remult) {
|
|
67
|
-
remult = remult_proxy_1.
|
|
70
|
+
remult = remult_proxy_1.remult;
|
|
68
71
|
}
|
|
69
72
|
completed = new Set();
|
|
70
73
|
entities = [];
|
|
@@ -138,7 +141,7 @@ var PostgresSchemaBuilder = /** @class */ (function () {
|
|
|
138
141
|
case 6: return [3 /*break*/, 8];
|
|
139
142
|
case 7:
|
|
140
143
|
err_1 = _b.sent();
|
|
141
|
-
console.error(
|
|
144
|
+
console.error('failed verify structure of ' + e.$entityName + ' ', err_1);
|
|
142
145
|
return [3 /*break*/, 8];
|
|
143
146
|
case 8:
|
|
144
147
|
entities_1_1 = entities_1.next();
|
|
@@ -170,7 +173,11 @@ var PostgresSchemaBuilder = /** @class */ (function () {
|
|
|
170
173
|
return [4 /*yield*/, filter_consumer_bridge_to_sql_request_1.dbNamesOf(entity)];
|
|
171
174
|
case 1:
|
|
172
175
|
e = _a.sent();
|
|
173
|
-
return [4 /*yield*/, c
|
|
176
|
+
return [4 /*yield*/, c
|
|
177
|
+
.execute('select 1 from information_Schema.tables where table_name=' +
|
|
178
|
+
c.addParameterAndReturnSqlToken(e.$entityName.toLowerCase()) +
|
|
179
|
+
this.additionalWhere)
|
|
180
|
+
.then(function (r) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
174
181
|
var result, _a, _b, x, sql;
|
|
175
182
|
var e_3, _c;
|
|
176
183
|
return tslib_1.__generator(this, function (_d) {
|
|
@@ -235,7 +242,7 @@ var PostgresSchemaBuilder = /** @class */ (function () {
|
|
|
235
242
|
_a.trys.push([2, 6, , 7]);
|
|
236
243
|
cmd = this.pool.createCommand();
|
|
237
244
|
colName = e.$dbNameOf(c(entity));
|
|
238
|
-
return [4 /*yield*/, cmd.execute("select 1 \n FROM information_schema.columns \n WHERE table_name=" + cmd.addParameterAndReturnSqlToken(
|
|
245
|
+
return [4 /*yield*/, cmd.execute("select 1 \n FROM information_schema.columns \n WHERE table_name=" + cmd.addParameterAndReturnSqlToken(e.$entityName.toLocaleLowerCase()) + " and column_name=" + cmd.addParameterAndReturnSqlToken(colName.toLocaleLowerCase()) + this.additionalWhere)];
|
|
239
246
|
case 3:
|
|
240
247
|
if (!((_a.sent()).rows.length == 0)) return [3 /*break*/, 5];
|
|
241
248
|
sql = "alter table " + e.$entityName + " add column " + postgresColumnSyntax(c(entity), colName);
|
|
@@ -267,7 +274,7 @@ var PostgresSchemaBuilder = /** @class */ (function () {
|
|
|
267
274
|
return [4 /*yield*/, filter_consumer_bridge_to_sql_request_1.dbNamesOf(entity)];
|
|
268
275
|
case 1:
|
|
269
276
|
e = _d.sent();
|
|
270
|
-
return [4 /*yield*/, cmd.execute("select column_name \n FROM information_schema.columns \n WHERE table_name=" + cmd.addParameterAndReturnSqlToken(
|
|
277
|
+
return [4 /*yield*/, cmd.execute("select column_name \n FROM information_schema.columns \n WHERE table_name=" + cmd.addParameterAndReturnSqlToken(e.$entityName.toLocaleLowerCase()) + " " + this.additionalWhere)];
|
|
271
278
|
case 2:
|
|
272
279
|
cols = (_d.sent()).rows.map(function (x) { return x.column_name.toLocaleLowerCase(); });
|
|
273
280
|
_d.label = 3;
|
package/remult-express.js
CHANGED
|
@@ -21,7 +21,7 @@ function remultExpress(options) {
|
|
|
21
21
|
buildGenericRequestInfo: function (req) { return req; },
|
|
22
22
|
getRequestBody: function (req) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
|
|
23
23
|
return [2 /*return*/, req.body];
|
|
24
|
-
}); }); }
|
|
24
|
+
}); }); },
|
|
25
25
|
});
|
|
26
26
|
server.registerRouter(app);
|
|
27
27
|
return Object.assign(app, {
|
package/remult-fastify.js
CHANGED
|
@@ -23,12 +23,12 @@ function remultFastify(options) {
|
|
|
23
23
|
},
|
|
24
24
|
writeHead: function (status, headers) {
|
|
25
25
|
res.raw.writeHead(status, headers);
|
|
26
|
-
}
|
|
26
|
+
},
|
|
27
27
|
};
|
|
28
28
|
Object.assign(req, {
|
|
29
29
|
on: function (event, listener) {
|
|
30
30
|
req.raw.on(event, listener);
|
|
31
|
-
}
|
|
31
|
+
},
|
|
32
32
|
});
|
|
33
33
|
handler(req, myRes, function () { });
|
|
34
34
|
};
|
|
@@ -53,10 +53,12 @@ function remultFastify(options) {
|
|
|
53
53
|
get: function (handler) {
|
|
54
54
|
instance.get(path, fastifyHandler(handler));
|
|
55
55
|
return r;
|
|
56
|
-
},
|
|
56
|
+
},
|
|
57
|
+
post: function (handler) {
|
|
57
58
|
instance.post(path, fastifyHandler(handler));
|
|
58
59
|
return r;
|
|
59
|
-
},
|
|
60
|
+
},
|
|
61
|
+
put: function (handler) {
|
|
60
62
|
instance.put(path, fastifyHandler(handler));
|
|
61
63
|
return r;
|
|
62
64
|
},
|
|
@@ -71,9 +73,7 @@ function remultFastify(options) {
|
|
|
71
73
|
return Object.assign(pluginFunction, {
|
|
72
74
|
getRemult: function (x) { return api.getRemult(x); },
|
|
73
75
|
openApiDoc: function (x) { return api.openApiDoc(x); },
|
|
74
|
-
withRemult: function (req, what) {
|
|
75
|
-
return api.withRemultPromise(req, what);
|
|
76
|
-
},
|
|
76
|
+
withRemult: function (req, what) { return api.withRemultPromise(req, what); },
|
|
77
77
|
});
|
|
78
78
|
}
|
|
79
79
|
exports.remultFastify = remultFastify;
|
package/remult-fresh.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RemultServerOptions, RemultServerCore } from
|
|
1
|
+
import { RemultServerOptions, RemultServerCore } from './server/expressBridge';
|
|
2
2
|
export declare function remultFresh(options: RemultServerOptions<FreshRequest>, response: FreshResponse): RemultFresh;
|
|
3
3
|
export interface RemultFresh extends RemultServerCore<FreshRequest> {
|
|
4
4
|
handle(req: FreshRequest, ctx: FreshContext): Promise<any>;
|
package/remult-fresh.js
CHANGED
|
@@ -7,7 +7,7 @@ function remultFresh(options, response) {
|
|
|
7
7
|
var _this = this;
|
|
8
8
|
var server = expressBridge_1.createRemultServerCore(options, {
|
|
9
9
|
buildGenericRequestInfo: function (r) { return r; },
|
|
10
|
-
getRequestBody: function (req) { return req.json(); }
|
|
10
|
+
getRequestBody: function (req) { return req.json(); },
|
|
11
11
|
});
|
|
12
12
|
return {
|
|
13
13
|
getRemult: function (r) { return server.getRemult(r); },
|
|
@@ -32,7 +32,6 @@ function remultFresh(options, response) {
|
|
|
32
32
|
else {
|
|
33
33
|
return [2 /*return*/, ctx.next()];
|
|
34
34
|
}
|
|
35
|
-
;
|
|
36
35
|
return [2 /*return*/];
|
|
37
36
|
}
|
|
38
37
|
});
|
|
@@ -40,5 +39,3 @@ function remultFresh(options, response) {
|
|
|
40
39
|
};
|
|
41
40
|
}
|
|
42
41
|
exports.remultFresh = remultFresh;
|
|
43
|
-
;
|
|
44
|
-
;
|
package/remult-knex/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Knex } from 'knex';
|
|
2
|
-
import { Remult } from
|
|
3
|
-
import { EntityFilter, EntityMetadata, RepositoryOverloads } from
|
|
2
|
+
import { Remult } from '../src/context';
|
|
3
|
+
import { EntityFilter, EntityMetadata, RepositoryOverloads } from '../src/remult3';
|
|
4
4
|
import { DataProvider, EntityDataProvider } from '../src/data-interfaces';
|
|
5
5
|
import { FieldMetadata } from '../src/column-interfaces';
|
|
6
6
|
export declare class KnexDataProvider implements DataProvider {
|
|
@@ -11,7 +11,7 @@ export declare class KnexDataProvider implements DataProvider {
|
|
|
11
11
|
transaction(action: (dataProvider: DataProvider) => Promise<void>): Promise<void>;
|
|
12
12
|
static rawFilter(build: CustomKnexFilterBuilderFunction): EntityFilter<any>;
|
|
13
13
|
static filterToRaw<entityType>(entity: RepositoryOverloads<entityType>, condition: EntityFilter<entityType>): Promise<(knex: any) => void>;
|
|
14
|
-
|
|
14
|
+
isProxy?: boolean;
|
|
15
15
|
ensureSchema(entities: EntityMetadata<any>[]): Promise<void>;
|
|
16
16
|
}
|
|
17
17
|
export declare type CustomKnexFilterBuilderFunction = () => Promise<(builder: Knex.QueryBuilder) => void>;
|
|
@@ -20,7 +20,7 @@ export declare class KnexSchemaBuilder {
|
|
|
20
20
|
verifyStructureOfAllEntities(remult?: Remult): Promise<void>;
|
|
21
21
|
ensureSchema(entities: EntityMetadata<any>[]): Promise<void>;
|
|
22
22
|
createIfNotExist(entity: EntityMetadata): Promise<void>;
|
|
23
|
-
addColumnIfNotExist<T extends EntityMetadata>(entity: T, c: (
|
|
23
|
+
addColumnIfNotExist<T extends EntityMetadata>(entity: T, c: (e: T) => FieldMetadata): Promise<void>;
|
|
24
24
|
verifyAllColumns<T extends EntityMetadata>(entity: T): Promise<void>;
|
|
25
25
|
additionalWhere: string;
|
|
26
26
|
constructor(knex: Knex);
|
package/remult-knex/index.js
CHANGED
|
@@ -17,7 +17,7 @@ var KnexDataProvider = /** @class */ (function () {
|
|
|
17
17
|
KnexDataProvider.getDb = function (remult) {
|
|
18
18
|
var r = (remult || remult_proxy_1.remult).dataProvider;
|
|
19
19
|
if (!r.knex)
|
|
20
|
-
throw
|
|
20
|
+
throw 'the data provider is not an KnexDataProvider';
|
|
21
21
|
return r.knex;
|
|
22
22
|
};
|
|
23
23
|
KnexDataProvider.prototype.getEntityDataProvider = function (entity) {
|
|
@@ -26,7 +26,7 @@ var KnexDataProvider = /** @class */ (function () {
|
|
|
26
26
|
try {
|
|
27
27
|
for (var _b = tslib_1.__values(entity.fields.toArray()), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
28
28
|
var f = _c.value;
|
|
29
|
-
if (f.valueConverter.fieldTypeInDb ===
|
|
29
|
+
if (f.valueConverter.fieldTypeInDb === 'json') {
|
|
30
30
|
//@ts-ignore
|
|
31
31
|
f.valueConverter = tslib_1.__assign(tslib_1.__assign({}, f.valueConverter), { toDb: valueConverters_1.ValueConverters.JsonString.toDb, fromDb: valueConverters_1.ValueConverters.JsonString.fromDb });
|
|
32
32
|
}
|
|
@@ -74,7 +74,7 @@ var KnexDataProvider = /** @class */ (function () {
|
|
|
74
74
|
var _a;
|
|
75
75
|
return _a = {},
|
|
76
76
|
_a[filter_interfaces_1.customDatabaseFilterToken] = {
|
|
77
|
-
buildKnex: build
|
|
77
|
+
buildKnex: build,
|
|
78
78
|
},
|
|
79
79
|
_a;
|
|
80
80
|
};
|
|
@@ -90,7 +90,7 @@ var KnexDataProvider = /** @class */ (function () {
|
|
|
90
90
|
case 1:
|
|
91
91
|
b = new (_a.apply(FilterConsumerBridgeToKnexRequest, [void 0, _b.sent()]))();
|
|
92
92
|
b._addWhere = false;
|
|
93
|
-
return [4 /*yield*/,
|
|
93
|
+
return [4 /*yield*/, repo.translateWhereToFilter(condition)];
|
|
94
94
|
case 2: return [4 /*yield*/, (_b.sent()).__applyToConsumer(b)];
|
|
95
95
|
case 3:
|
|
96
96
|
_b.sent();
|
|
@@ -139,9 +139,10 @@ var KnexEntityDataProvider = /** @class */ (function () {
|
|
|
139
139
|
case 2:
|
|
140
140
|
r = _a.sent();
|
|
141
141
|
return [4 /*yield*/, this.knex(e.$entityName)
|
|
142
|
-
.count()
|
|
142
|
+
.count()
|
|
143
|
+
.where(function (b) { return r.forEach(function (w) { return w(b); }); })];
|
|
143
144
|
case 3:
|
|
144
|
-
result =
|
|
145
|
+
result = _a.sent();
|
|
145
146
|
row = result[0];
|
|
146
147
|
for (key in row) {
|
|
147
148
|
if (Object.prototype.hasOwnProperty.call(row, key)) {
|
|
@@ -199,7 +200,7 @@ var KnexEntityDataProvider = /** @class */ (function () {
|
|
|
199
200
|
if (options.orderBy) {
|
|
200
201
|
query = query.orderBy(options.orderBy.Segments.map(function (s) { return ({
|
|
201
202
|
column: e.$dbNameOf(s.field),
|
|
202
|
-
order: s.isDescending ?
|
|
203
|
+
order: s.isDescending ? 'desc' : 'asc',
|
|
203
204
|
}); }));
|
|
204
205
|
}
|
|
205
206
|
if (options.limit) {
|
|
@@ -219,7 +220,7 @@ var KnexEntityDataProvider = /** @class */ (function () {
|
|
|
219
220
|
result[field.key] = field.valueConverter.fromDb(y[m]);
|
|
220
221
|
}
|
|
221
222
|
catch (err) {
|
|
222
|
-
throw new Error(
|
|
223
|
+
throw new Error('Failed to load from db:' + field.key + '\r\n' + err);
|
|
223
224
|
}
|
|
224
225
|
}
|
|
225
226
|
return result;
|
|
@@ -233,7 +234,7 @@ var KnexEntityDataProvider = /** @class */ (function () {
|
|
|
233
234
|
return tslib_1.__generator(this, function (_a) {
|
|
234
235
|
switch (_a.label) {
|
|
235
236
|
case 0: return [4 /*yield*/, filter_consumer_bridge_to_sql_request_1.dbNamesOf(this.entity)];
|
|
236
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
237
|
+
case 1: return [2 /*return*/, (_a.sent())];
|
|
237
238
|
}
|
|
238
239
|
});
|
|
239
240
|
});
|
|
@@ -289,10 +290,14 @@ var KnexEntityDataProvider = /** @class */ (function () {
|
|
|
289
290
|
case 10: return [4 /*yield*/, f.resolveWhere()];
|
|
290
291
|
case 11:
|
|
291
292
|
where = _d.sent();
|
|
292
|
-
return [4 /*yield*/, this.knex(e.$entityName)
|
|
293
|
+
return [4 /*yield*/, this.knex(e.$entityName)
|
|
294
|
+
.update(updateObject)
|
|
295
|
+
.where(function (b) { return where.forEach(function (w) { return w(b); }); })];
|
|
293
296
|
case 12:
|
|
294
297
|
_d.sent();
|
|
295
|
-
return [2 /*return*/, this.find({
|
|
298
|
+
return [2 /*return*/, this.find({
|
|
299
|
+
where: filter_interfaces_1.Filter.fromEntityFilter(this.entity, resultFilter),
|
|
300
|
+
}).then(function (y) { return y[0]; })];
|
|
296
301
|
}
|
|
297
302
|
});
|
|
298
303
|
});
|
|
@@ -310,7 +315,9 @@ var KnexEntityDataProvider = /** @class */ (function () {
|
|
|
310
315
|
return [4 /*yield*/, f.resolveWhere()];
|
|
311
316
|
case 2:
|
|
312
317
|
where = _a.sent();
|
|
313
|
-
return [4 /*yield*/, this.knex(e.$entityName)
|
|
318
|
+
return [4 /*yield*/, this.knex(e.$entityName)
|
|
319
|
+
.delete()
|
|
320
|
+
.where(function (b) { return where.forEach(function (w) { return w(b); }); })];
|
|
314
321
|
case 3:
|
|
315
322
|
_a.sent();
|
|
316
323
|
return [2 /*return*/];
|
|
@@ -380,7 +387,9 @@ var KnexEntityDataProvider = /** @class */ (function () {
|
|
|
380
387
|
newId_1 = result[0].id;
|
|
381
388
|
_d.label = 14;
|
|
382
389
|
case 14:
|
|
383
|
-
resultFilter = new filter_interfaces_1.Filter(function (x) {
|
|
390
|
+
resultFilter = new filter_interfaces_1.Filter(function (x) {
|
|
391
|
+
return x.isEqualTo(_this.entity.idMetadata.field, newId_1);
|
|
392
|
+
});
|
|
384
393
|
return [3 /*break*/, 17];
|
|
385
394
|
case 15: return [4 /*yield*/, insert];
|
|
386
395
|
case 16:
|
|
@@ -445,7 +454,7 @@ var FilterConsumerBridgeToKnexRequest = /** @class */ (function () {
|
|
|
445
454
|
});
|
|
446
455
|
};
|
|
447
456
|
FilterConsumerBridgeToKnexRequest.prototype.custom = function (key, customItem) {
|
|
448
|
-
throw new Error(
|
|
457
|
+
throw new Error('Custom filter should be translated before it gets here');
|
|
449
458
|
};
|
|
450
459
|
FilterConsumerBridgeToKnexRequest.prototype.or = function (orElements) {
|
|
451
460
|
var _this = this;
|
|
@@ -533,35 +542,41 @@ var FilterConsumerBridgeToKnexRequest = /** @class */ (function () {
|
|
|
533
542
|
});
|
|
534
543
|
};
|
|
535
544
|
FilterConsumerBridgeToKnexRequest.prototype.isEqualTo = function (col, val) {
|
|
536
|
-
this.add(col, val,
|
|
545
|
+
this.add(col, val, '=');
|
|
537
546
|
};
|
|
538
547
|
FilterConsumerBridgeToKnexRequest.prototype.isDifferentFrom = function (col, val) {
|
|
539
|
-
this.add(col, val,
|
|
548
|
+
this.add(col, val, '<>');
|
|
540
549
|
};
|
|
541
550
|
FilterConsumerBridgeToKnexRequest.prototype.isGreaterOrEqualTo = function (col, val) {
|
|
542
|
-
this.add(col, val,
|
|
551
|
+
this.add(col, val, '>=');
|
|
543
552
|
};
|
|
544
553
|
FilterConsumerBridgeToKnexRequest.prototype.isGreaterThan = function (col, val) {
|
|
545
|
-
this.add(col, val,
|
|
554
|
+
this.add(col, val, '>');
|
|
546
555
|
};
|
|
547
556
|
FilterConsumerBridgeToKnexRequest.prototype.isLessOrEqualTo = function (col, val) {
|
|
548
|
-
this.add(col, val,
|
|
557
|
+
this.add(col, val, '<=');
|
|
549
558
|
};
|
|
550
559
|
FilterConsumerBridgeToKnexRequest.prototype.isLessThan = function (col, val) {
|
|
551
|
-
this.add(col, val,
|
|
560
|
+
this.add(col, val, '<');
|
|
552
561
|
};
|
|
553
562
|
FilterConsumerBridgeToKnexRequest.prototype.containsCaseInsensitive = function (col, val) {
|
|
554
563
|
var _this = this;
|
|
555
|
-
this.result.push(function (b) {
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
564
|
+
this.result.push(function (b) {
|
|
565
|
+
return b.whereRaw('lower (' +
|
|
566
|
+
b.client.ref(_this.nameProvider.$dbNameOf(col)) +
|
|
567
|
+
") like lower ('%" +
|
|
568
|
+
val.replace(/'/g, "''") +
|
|
569
|
+
"%')");
|
|
570
|
+
});
|
|
571
|
+
this.promises.push((function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
|
|
572
|
+
return [2 /*return*/];
|
|
573
|
+
}); }); })());
|
|
561
574
|
};
|
|
562
575
|
FilterConsumerBridgeToKnexRequest.prototype.add = function (col, val, operator) {
|
|
563
576
|
var _this = this;
|
|
564
|
-
this.result.push(function (b) {
|
|
577
|
+
this.result.push(function (b) {
|
|
578
|
+
return b.where(_this.nameProvider.$dbNameOf(col), operator, translateValueAndHandleArrayAndHandleArray(col, val));
|
|
579
|
+
});
|
|
565
580
|
};
|
|
566
581
|
FilterConsumerBridgeToKnexRequest.prototype.databaseCustom = function (databaseCustom) {
|
|
567
582
|
var _this = this;
|
|
@@ -593,7 +608,7 @@ var KnexSchemaBuilder = /** @class */ (function () {
|
|
|
593
608
|
var entities;
|
|
594
609
|
return tslib_1.__generator(this, function (_a) {
|
|
595
610
|
if (!remult)
|
|
596
|
-
remult = remult_proxy_1.
|
|
611
|
+
remult = remult_proxy_1.remult;
|
|
597
612
|
entities = context_1.allEntities.map(function (x) { return remult.repo(x).metadata; });
|
|
598
613
|
this.ensureSchema(entities);
|
|
599
614
|
return [2 /*return*/];
|
|
@@ -631,7 +646,7 @@ var KnexSchemaBuilder = /** @class */ (function () {
|
|
|
631
646
|
case 6: return [3 /*break*/, 8];
|
|
632
647
|
case 7:
|
|
633
648
|
err_2 = _b.sent();
|
|
634
|
-
console.error(
|
|
649
|
+
console.error('failed ensure schema of ' + e.$entityName + ' ', err_2);
|
|
635
650
|
return [3 /*break*/, 8];
|
|
636
651
|
case 8:
|
|
637
652
|
entities_1_1 = entities_1.next();
|
|
@@ -671,7 +686,7 @@ var KnexSchemaBuilder = /** @class */ (function () {
|
|
|
671
686
|
f = _b.value;
|
|
672
687
|
cols_1.set(f, {
|
|
673
688
|
name: e.$dbNameOf(f),
|
|
674
|
-
readonly: filter_consumer_bridge_to_sql_request_1.isDbReadonly(f, e)
|
|
689
|
+
readonly: filter_consumer_bridge_to_sql_request_1.isDbReadonly(f, e),
|
|
675
690
|
});
|
|
676
691
|
}
|
|
677
692
|
}
|
|
@@ -810,7 +825,7 @@ var KnexSchemaBuilder = /** @class */ (function () {
|
|
|
810
825
|
exports.KnexSchemaBuilder = KnexSchemaBuilder;
|
|
811
826
|
function supportsJson(knex) {
|
|
812
827
|
var client = knex.client.config.client;
|
|
813
|
-
if ((client === null || client === void 0 ? void 0 : client.includes(
|
|
828
|
+
if ((client === null || client === void 0 ? void 0 : client.includes('sqlite3')) || (client === null || client === void 0 ? void 0 : client.includes('mssql')))
|
|
814
829
|
return false;
|
|
815
830
|
return true;
|
|
816
831
|
}
|
|
@@ -823,7 +838,7 @@ function buildColumn(x, dbName, b, supportsJson) {
|
|
|
823
838
|
c.defaultTo(0).notNullable();
|
|
824
839
|
}
|
|
825
840
|
}
|
|
826
|
-
else if (x.valueConverter.fieldTypeInDb ==
|
|
841
|
+
else if (x.valueConverter.fieldTypeInDb == 'integer') {
|
|
827
842
|
var c = b.integer(dbName);
|
|
828
843
|
if (!x.allowNull) {
|
|
829
844
|
c.defaultTo(0).notNullable();
|
|
@@ -838,7 +853,7 @@ function buildColumn(x, dbName, b, supportsJson) {
|
|
|
838
853
|
b.date(dbName);
|
|
839
854
|
else
|
|
840
855
|
b.dateTime(dbName);
|
|
841
|
-
else if (x.valueConverter.fieldTypeInDb ==
|
|
856
|
+
else if (x.valueConverter.fieldTypeInDb == 'date')
|
|
842
857
|
b.date(dbName);
|
|
843
858
|
else
|
|
844
859
|
b.specificType(dbName, x.valueConverter.fieldTypeInDb);
|
|
@@ -849,13 +864,13 @@ function buildColumn(x, dbName, b, supportsJson) {
|
|
|
849
864
|
c.defaultTo(false).notNullable();
|
|
850
865
|
}
|
|
851
866
|
else if (x.valueConverter.fieldTypeInDb) {
|
|
852
|
-
if (x.valueConverter.fieldTypeInDb ==
|
|
867
|
+
if (x.valueConverter.fieldTypeInDb == 'integer') {
|
|
853
868
|
var c = b.integer(dbName);
|
|
854
869
|
if (!x.allowNull) {
|
|
855
870
|
c.defaultTo(0).notNullable();
|
|
856
871
|
}
|
|
857
872
|
}
|
|
858
|
-
else if (x.valueConverter.fieldTypeInDb ==
|
|
873
|
+
else if (x.valueConverter.fieldTypeInDb == 'json')
|
|
859
874
|
if (supportsJson)
|
|
860
875
|
b.json(dbName);
|
|
861
876
|
else
|
package/remult-mongo.js
CHANGED
|
@@ -17,7 +17,7 @@ var MongoDataProvider = /** @class */ (function () {
|
|
|
17
17
|
MongoDataProvider.getDb = function (remult) {
|
|
18
18
|
var r = (remult || remult_proxy_1.remult).dataProvider;
|
|
19
19
|
if (!r.db)
|
|
20
|
-
throw
|
|
20
|
+
throw 'the data provider is not a MongoDataProvider';
|
|
21
21
|
return { db: r.db, session: r.session };
|
|
22
22
|
};
|
|
23
23
|
MongoDataProvider.prototype.getEntityDataProvider = function (entity) {
|
|
@@ -70,7 +70,7 @@ var MongoDataProvider = /** @class */ (function () {
|
|
|
70
70
|
case 1:
|
|
71
71
|
b = new (_a.apply(FilterConsumerBridgeToMongo, [void 0, _b.sent()]))();
|
|
72
72
|
b._addWhere = false;
|
|
73
|
-
return [4 /*yield*/,
|
|
73
|
+
return [4 /*yield*/, repo.translateWhereToFilter(condition)];
|
|
74
74
|
case 2: return [4 /*yield*/, (_b.sent()).__applyToConsumer(b)];
|
|
75
75
|
case 3:
|
|
76
76
|
_b.sent();
|
|
@@ -85,7 +85,7 @@ var MongoDataProvider = /** @class */ (function () {
|
|
|
85
85
|
return MongoDataProvider;
|
|
86
86
|
}());
|
|
87
87
|
exports.MongoDataProvider = MongoDataProvider;
|
|
88
|
-
var NULL = { $null:
|
|
88
|
+
var NULL = { $null: '$null' };
|
|
89
89
|
function isNull(x) {
|
|
90
90
|
return (x === null || x === void 0 ? void 0 : x.$null) === NULL.$null;
|
|
91
91
|
}
|
|
@@ -173,7 +173,7 @@ var MongoEntityDataProvider = /** @class */ (function () {
|
|
|
173
173
|
case 2:
|
|
174
174
|
where = _g.sent();
|
|
175
175
|
op = {
|
|
176
|
-
session: this.session
|
|
176
|
+
session: this.session,
|
|
177
177
|
};
|
|
178
178
|
if (options.limit) {
|
|
179
179
|
op.limit = options.limit;
|
|
@@ -198,7 +198,10 @@ var MongoEntityDataProvider = /** @class */ (function () {
|
|
|
198
198
|
}
|
|
199
199
|
}
|
|
200
200
|
_e = (_d = Promise).all;
|
|
201
|
-
return [4 /*yield*/, collection
|
|
201
|
+
return [4 /*yield*/, collection
|
|
202
|
+
.find(where, op)
|
|
203
|
+
.map(function (x) { return _this.translateFromJson(x, e); })
|
|
204
|
+
.toArray()];
|
|
202
205
|
case 3: return [4 /*yield*/, _e.apply(_d, [_g.sent()])];
|
|
203
206
|
case 4: return [2 /*return*/, _g.sent()];
|
|
204
207
|
}
|
|
@@ -256,11 +259,14 @@ var MongoEntityDataProvider = /** @class */ (function () {
|
|
|
256
259
|
_g = (_f = collection).updateOne;
|
|
257
260
|
return [4 /*yield*/, f.resolveWhere()];
|
|
258
261
|
case 2: return [4 /*yield*/, _g.apply(_f, [_k.sent(), {
|
|
259
|
-
$set: newR
|
|
260
|
-
},
|
|
262
|
+
$set: newR,
|
|
263
|
+
},
|
|
264
|
+
{ session: this.session }])];
|
|
261
265
|
case 3:
|
|
262
266
|
r = _k.sent();
|
|
263
|
-
return [2 /*return*/, this.find({
|
|
267
|
+
return [2 /*return*/, this.find({
|
|
268
|
+
where: _1.Filter.fromEntityFilter(this.entity, resultFilter),
|
|
269
|
+
}).then(function (y) { return y[0]; })];
|
|
264
270
|
}
|
|
265
271
|
});
|
|
266
272
|
});
|
|
@@ -294,7 +300,9 @@ var MongoEntityDataProvider = /** @class */ (function () {
|
|
|
294
300
|
_a = _e.sent(), collection = _a.collection, e = _a.e;
|
|
295
301
|
_c = (_b = collection).insertOne;
|
|
296
302
|
return [4 /*yield*/, this.translateToJson(data, e)];
|
|
297
|
-
case 2: return [4 /*yield*/, _c.apply(_b, [_e.sent(), {
|
|
303
|
+
case 2: return [4 /*yield*/, _c.apply(_b, [_e.sent(), {
|
|
304
|
+
session: this.session,
|
|
305
|
+
}])];
|
|
298
306
|
case 3:
|
|
299
307
|
r = _e.sent();
|
|
300
308
|
_d = this.translateFromJson;
|
|
@@ -376,7 +384,7 @@ var FilterConsumerBridgeToMongo = /** @class */ (function () {
|
|
|
376
384
|
});
|
|
377
385
|
};
|
|
378
386
|
FilterConsumerBridgeToMongo.prototype.custom = function (key, customItem) {
|
|
379
|
-
throw new Error(
|
|
387
|
+
throw new Error('Custom filter should be translated before it gets here');
|
|
380
388
|
};
|
|
381
389
|
FilterConsumerBridgeToMongo.prototype.or = function (orElements) {
|
|
382
390
|
var _this = this;
|
|
@@ -424,7 +432,7 @@ var FilterConsumerBridgeToMongo = /** @class */ (function () {
|
|
|
424
432
|
return [7 /*endfinally*/];
|
|
425
433
|
case 8:
|
|
426
434
|
this.result.push(function () { return ({
|
|
427
|
-
$or: result
|
|
435
|
+
$or: result,
|
|
428
436
|
}); });
|
|
429
437
|
return [2 /*return*/];
|
|
430
438
|
}
|
|
@@ -432,10 +440,10 @@ var FilterConsumerBridgeToMongo = /** @class */ (function () {
|
|
|
432
440
|
}); })());
|
|
433
441
|
};
|
|
434
442
|
FilterConsumerBridgeToMongo.prototype.isNull = function (col) {
|
|
435
|
-
this.add(col, NULL,
|
|
443
|
+
this.add(col, NULL, '$eq');
|
|
436
444
|
};
|
|
437
445
|
FilterConsumerBridgeToMongo.prototype.isNotNull = function (col) {
|
|
438
|
-
this.add(col, NULL,
|
|
446
|
+
this.add(col, NULL, '$ne');
|
|
439
447
|
};
|
|
440
448
|
FilterConsumerBridgeToMongo.prototype.isIn = function (col, val) {
|
|
441
449
|
var _this = this;
|
|
@@ -443,31 +451,31 @@ var FilterConsumerBridgeToMongo = /** @class */ (function () {
|
|
|
443
451
|
var _a;
|
|
444
452
|
return (_a = {},
|
|
445
453
|
_a[_this.nameProvider.$dbNameOf(col)] = {
|
|
446
|
-
$in: val.map(function (x) { return col.valueConverter.toDb(x); })
|
|
454
|
+
$in: val.map(function (x) { return col.valueConverter.toDb(x); }),
|
|
447
455
|
},
|
|
448
456
|
_a);
|
|
449
457
|
});
|
|
450
458
|
};
|
|
451
459
|
FilterConsumerBridgeToMongo.prototype.isEqualTo = function (col, val) {
|
|
452
|
-
this.add(col, val,
|
|
460
|
+
this.add(col, val, '$eq');
|
|
453
461
|
};
|
|
454
462
|
FilterConsumerBridgeToMongo.prototype.isDifferentFrom = function (col, val) {
|
|
455
|
-
this.add(col, val,
|
|
463
|
+
this.add(col, val, '$ne');
|
|
456
464
|
};
|
|
457
465
|
FilterConsumerBridgeToMongo.prototype.isGreaterOrEqualTo = function (col, val) {
|
|
458
|
-
this.add(col, val,
|
|
466
|
+
this.add(col, val, '$gte');
|
|
459
467
|
};
|
|
460
468
|
FilterConsumerBridgeToMongo.prototype.isGreaterThan = function (col, val) {
|
|
461
|
-
this.add(col, val,
|
|
469
|
+
this.add(col, val, '$gt');
|
|
462
470
|
};
|
|
463
471
|
FilterConsumerBridgeToMongo.prototype.isLessOrEqualTo = function (col, val) {
|
|
464
|
-
this.add(col, val,
|
|
472
|
+
this.add(col, val, '$lte');
|
|
465
473
|
};
|
|
466
474
|
FilterConsumerBridgeToMongo.prototype.isLessThan = function (col, val) {
|
|
467
|
-
this.add(col, val,
|
|
475
|
+
this.add(col, val, '$lt');
|
|
468
476
|
};
|
|
469
477
|
FilterConsumerBridgeToMongo.prototype.containsCaseInsensitive = function (col, val) {
|
|
470
|
-
throw
|
|
478
|
+
throw 'containsCaseInsensitive not yet implemented';
|
|
471
479
|
// this.promises.push(col.getDbName().then(colName => {
|
|
472
480
|
// this.result.push(b => b.whereRaw(
|
|
473
481
|
// 'lower (' + colName + ") like lower ('%" + val.replace(/'/g, '\'\'') + "%')"));
|
|
@@ -478,12 +486,14 @@ var FilterConsumerBridgeToMongo = /** @class */ (function () {
|
|
|
478
486
|
this.result.push(function () {
|
|
479
487
|
var _a, _b;
|
|
480
488
|
return (_a = {},
|
|
481
|
-
_a[_this.nameProvider.$dbNameOf(col)] = (_b = {},
|
|
489
|
+
_a[_this.nameProvider.$dbNameOf(col)] = (_b = {},
|
|
490
|
+
_b[operator] = isNull(val) ? val : col.valueConverter.toDb(val),
|
|
491
|
+
_b),
|
|
482
492
|
_a);
|
|
483
493
|
});
|
|
484
494
|
};
|
|
485
495
|
FilterConsumerBridgeToMongo.prototype.databaseCustom = function (databaseCustom) {
|
|
486
|
-
throw
|
|
496
|
+
throw 'error';
|
|
487
497
|
// this.promises.push((async () => {
|
|
488
498
|
// if (databaseCustom?.buildSql) {
|
|
489
499
|
// let item = new CustomSqlFilterBuilder(this.knex);
|
package/remult-next.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import type { GetServerSideProps, NextApiRequest, PreviewData, NextApiHandler } from
|
|
3
|
-
import type { ParsedUrlQuery } from
|
|
4
|
-
import { RemultServerCore, RemultServerOptions } from
|
|
2
|
+
import type { GetServerSideProps, NextApiRequest, PreviewData, NextApiHandler } from 'next';
|
|
3
|
+
import type { ParsedUrlQuery } from 'querystring';
|
|
4
|
+
import { RemultServerCore, RemultServerOptions } from './server';
|
|
5
5
|
export declare function remultNext(options?: RemultServerOptions<NextApiRequest>): RemultNextServer;
|
|
6
6
|
export declare type RemultNextServer = RemultServerCore<NextApiRequest> & NextApiHandler & {
|
|
7
7
|
getServerSideProps<P extends {
|