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
package/esm/server/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { RemultServer, RemultServerOptions, ServerCoreOptions } from './expressBridge';
|
|
2
|
-
export { queuedJobInfo, QueueStorage, GenericRequestInfo, GenericRequestHandler, RemultServerCore, GenericResponse, GenericRouter, RemultServerOptions, SpecificRoute, RemultServer, InitRequestOptions } from './expressBridge';
|
|
3
|
-
export { JsonEntityFileStorage, JsonFileDataProvider } from './JsonEntityFileStorage';
|
|
2
|
+
export { queuedJobInfo, QueueStorage, GenericRequestInfo, GenericRequestHandler, RemultServerCore, GenericResponse, GenericRouter, RemultServerOptions, SpecificRoute, RemultServer, InitRequestOptions, } from './expressBridge';
|
|
3
|
+
export { JsonEntityFileStorage, JsonFileDataProvider, } from './JsonEntityFileStorage';
|
|
4
4
|
export { DataProviderLiveQueryStorage } from '../live-query/data-provider-live-query-storage';
|
|
5
5
|
export { SseSubscriptionServer } from '../SseSubscriptionServer';
|
|
6
6
|
export declare function createRemultServer<RequestType>(options: RemultServerOptions<RequestType>, serverCoreOptions?: ServerCoreOptions<RequestType>): RemultServer<RequestType>;
|
package/esm/server/index.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { createRemultServerCore, } from './expressBridge';
|
|
2
2
|
import { initAsyncHooks } from './initAsyncHooks';
|
|
3
|
-
export { JsonEntityFileStorage, JsonFileDataProvider } from './JsonEntityFileStorage';
|
|
3
|
+
export { JsonEntityFileStorage, JsonFileDataProvider, } from './JsonEntityFileStorage';
|
|
4
4
|
export { DataProviderLiveQueryStorage } from '../live-query/data-provider-live-query-storage';
|
|
5
5
|
export { SseSubscriptionServer } from '../SseSubscriptionServer';
|
|
6
6
|
export function createRemultServer(options, serverCoreOptions) {
|
|
7
7
|
initAsyncHooks();
|
|
8
|
-
return createRemultServerCore(options, serverCoreOptions || {
|
|
8
|
+
return createRemultServerCore(options, serverCoreOptions || {
|
|
9
|
+
buildGenericRequestInfo: (req) => req,
|
|
10
|
+
getRequestBody: async (req) => req.body,
|
|
11
|
+
});
|
|
9
12
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { dbTestWhatSignature } from
|
|
1
|
+
import { dbTestWhatSignature } from '../shared-tests/db-tests-setup';
|
|
2
2
|
export declare const testKnexPGSqlImpl: (key: string, what: dbTestWhatSignature, focus?: boolean) => void;
|
|
3
3
|
export declare const mySqlTest: import("../shared-tests/db-tests-setup").dbTestMethodSignature;
|
|
4
4
|
export declare function testPostgresImplementation(key: string, what: dbTestWhatSignature, focus?: boolean): void;
|
|
@@ -1,28 +1,29 @@
|
|
|
1
|
-
import { Remult } from
|
|
1
|
+
import { Remult } from '../context';
|
|
2
2
|
import { KnexDataProvider, KnexSchemaBuilder } from '../../remult-knex';
|
|
3
3
|
import * as Knex from 'knex';
|
|
4
4
|
import { MongoClient } from 'mongodb';
|
|
5
5
|
import { config } from 'dotenv';
|
|
6
|
-
import { createPostgresConnection, PostgresSchemaBuilder } from
|
|
7
|
-
import { addDatabaseToTest, itWithFocus, testAll, TestDbs } from
|
|
8
|
-
import { describeClass } from
|
|
9
|
-
import { Entity, Fields } from
|
|
6
|
+
import { createPostgresConnection, PostgresSchemaBuilder, } from '../../postgres';
|
|
7
|
+
import { addDatabaseToTest, itWithFocus, testAll, TestDbs, } from '../shared-tests/db-tests-setup';
|
|
8
|
+
import { describeClass } from '../remult3/DecoratorReplacer';
|
|
9
|
+
import { Entity, Fields } from '../remult3';
|
|
10
10
|
KnexSchemaBuilder.logToConsole = false;
|
|
11
11
|
PostgresSchemaBuilder.logToConsole = false;
|
|
12
12
|
config();
|
|
13
13
|
function testKnexSqlImpl(knex, name) {
|
|
14
14
|
return (key, what, focus = false) => {
|
|
15
|
-
itWithFocus(key +
|
|
15
|
+
itWithFocus(key + ' ' + name + ' - knex', async () => {
|
|
16
16
|
let db = new KnexDataProvider(knex);
|
|
17
17
|
let remult = new Remult(db);
|
|
18
18
|
await what({
|
|
19
|
-
db,
|
|
19
|
+
db,
|
|
20
|
+
remult,
|
|
20
21
|
createEntity: async (entity) => {
|
|
21
22
|
let repo = remult.repo(entity);
|
|
22
23
|
await knex.schema.dropTableIfExists(await repo.metadata.getDbName());
|
|
23
24
|
await db.ensureSchema([repo.metadata]);
|
|
24
25
|
return repo;
|
|
25
|
-
}
|
|
26
|
+
},
|
|
26
27
|
});
|
|
27
28
|
}, focus);
|
|
28
29
|
};
|
|
@@ -30,7 +31,7 @@ function testKnexSqlImpl(knex, name) {
|
|
|
30
31
|
export const testKnexPGSqlImpl = testKnexSqlImpl(Knex.default({
|
|
31
32
|
client: 'pg',
|
|
32
33
|
connection: process.env.DATABASE_URL,
|
|
33
|
-
}),
|
|
34
|
+
}), 'postgres');
|
|
34
35
|
addDatabaseToTest(testKnexPGSqlImpl);
|
|
35
36
|
if (process.env['TESTS_SQL_SERVER'])
|
|
36
37
|
addDatabaseToTest(testKnexSqlImpl(Knex.default({
|
|
@@ -43,47 +44,47 @@ if (process.env['TESTS_SQL_SERVER'])
|
|
|
43
44
|
options: {
|
|
44
45
|
enableArithAbort: true,
|
|
45
46
|
encrypt: false,
|
|
46
|
-
instanceName: 'sqlexpress'
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}),
|
|
47
|
+
instanceName: 'sqlexpress',
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
}), 'sql server'));
|
|
50
51
|
if (true)
|
|
51
52
|
addDatabaseToTest(testKnexSqlImpl(Knex.default({
|
|
52
53
|
client: 'better-sqlite3',
|
|
53
54
|
connection: {
|
|
54
|
-
filename:
|
|
55
|
+
filename: ':memory:',
|
|
55
56
|
},
|
|
56
|
-
}),
|
|
57
|
+
}), 'sqlite3'));
|
|
57
58
|
export const mySqlTest = addDatabaseToTest(testKnexSqlImpl(Knex.default({
|
|
58
59
|
client: 'mysql2',
|
|
59
60
|
connection: {
|
|
60
61
|
user: 'root',
|
|
61
62
|
password: 'MASTERKEY',
|
|
62
63
|
host: '127.0.0.1',
|
|
63
|
-
database: 'test'
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
}), "mysql2"));
|
|
64
|
+
database: 'test',
|
|
65
|
+
},
|
|
66
|
+
}), 'mysql2'));
|
|
67
67
|
let pg = createPostgresConnection();
|
|
68
68
|
export function testPostgresImplementation(key, what, focus = false) {
|
|
69
|
-
itWithFocus(key +
|
|
69
|
+
itWithFocus(key + ' - postgres', async () => {
|
|
70
70
|
let db = await pg;
|
|
71
71
|
let remult = new Remult(db);
|
|
72
72
|
await what({
|
|
73
|
-
db,
|
|
73
|
+
db,
|
|
74
|
+
remult,
|
|
74
75
|
createEntity: async (entity) => {
|
|
75
76
|
let repo = remult.repo(entity);
|
|
76
|
-
await db.execute(
|
|
77
|
+
await db.execute('drop table if exists ' + (await repo.metadata.getDbName()));
|
|
77
78
|
await db.ensureSchema([repo.metadata]);
|
|
78
79
|
return repo;
|
|
79
|
-
}
|
|
80
|
+
},
|
|
80
81
|
});
|
|
81
82
|
}, focus);
|
|
82
83
|
}
|
|
83
84
|
addDatabaseToTest(testPostgresImplementation);
|
|
84
|
-
import { Categories } from
|
|
85
|
-
import { MongoDataProvider } from
|
|
86
|
-
testAll(
|
|
85
|
+
import { Categories } from '../tests/remult-3-entities';
|
|
86
|
+
import { MongoDataProvider } from '../../remult-mongo';
|
|
87
|
+
testAll('transactions', async ({ db, createEntity }) => {
|
|
87
88
|
let x = await createEntity(Categories);
|
|
88
89
|
await db.transaction(async (db) => {
|
|
89
90
|
let remult = new Remult(db);
|
|
@@ -93,35 +94,40 @@ testAll("transactions", async ({ db, createEntity }) => {
|
|
|
93
94
|
const mongoConnectionString = process.env['MONGO_TEST_URL']; //"mongodb://localhost:27017/local"
|
|
94
95
|
let client = new MongoClient(mongoConnectionString);
|
|
95
96
|
let done;
|
|
96
|
-
let mongoDbPromise = client.connect().then(c => {
|
|
97
|
+
let mongoDbPromise = client.connect().then((c) => {
|
|
97
98
|
done = c;
|
|
98
|
-
return c.db(
|
|
99
|
+
return c.db('test');
|
|
99
100
|
});
|
|
100
101
|
afterAll(async () => {
|
|
101
102
|
if (done)
|
|
102
103
|
done.close();
|
|
103
104
|
});
|
|
104
105
|
export function testMongo(key, what, focus = false) {
|
|
105
|
-
itWithFocus(key +
|
|
106
|
+
itWithFocus(key + ' - mongo', async () => {
|
|
106
107
|
let mongoDb = await mongoDbPromise;
|
|
107
108
|
let db = new MongoDataProvider(mongoDb, client);
|
|
108
109
|
let remult = new Remult(db);
|
|
109
110
|
await what({
|
|
110
|
-
db,
|
|
111
|
+
db,
|
|
112
|
+
remult,
|
|
111
113
|
createEntity: async (entity) => {
|
|
112
114
|
let repo = remult.repo(entity);
|
|
113
|
-
await mongoDb
|
|
115
|
+
await mongoDb
|
|
116
|
+
.collection(await repo.metadata.getDbName())
|
|
117
|
+
.deleteMany({});
|
|
114
118
|
return repo;
|
|
115
|
-
}
|
|
119
|
+
},
|
|
116
120
|
});
|
|
117
121
|
}, focus);
|
|
118
122
|
}
|
|
119
123
|
addDatabaseToTest(testMongo, TestDbs.mongo);
|
|
120
|
-
it(
|
|
121
|
-
const client = new MongoClient(
|
|
124
|
+
it('test mongo without transaction', async () => {
|
|
125
|
+
const client = new MongoClient('mongodb://localhost:27017/local');
|
|
122
126
|
await client.connect();
|
|
123
127
|
const mongoDb = client.db('test');
|
|
124
|
-
const db = new MongoDataProvider(mongoDb, client, {
|
|
128
|
+
const db = new MongoDataProvider(mongoDb, client, {
|
|
129
|
+
disableTransactions: true,
|
|
130
|
+
});
|
|
125
131
|
var remult = new Remult(db);
|
|
126
132
|
const entity = class {
|
|
127
133
|
constructor() {
|
|
@@ -129,15 +135,18 @@ it("test mongo without transaction", async () => {
|
|
|
129
135
|
this.title = '';
|
|
130
136
|
}
|
|
131
137
|
};
|
|
132
|
-
describeClass(entity, Entity(
|
|
138
|
+
describeClass(entity, Entity('testNoTrans'), {
|
|
139
|
+
id: Fields.number(),
|
|
140
|
+
title: Fields.string(),
|
|
141
|
+
});
|
|
133
142
|
const repo = remult.repo(entity);
|
|
134
143
|
for (const item of await repo.find()) {
|
|
135
144
|
await repo.delete(item);
|
|
136
145
|
}
|
|
137
|
-
await repo.insert({ id: 1, title:
|
|
146
|
+
await repo.insert({ id: 1, title: 'a' });
|
|
138
147
|
try {
|
|
139
148
|
await db.transaction(async () => {
|
|
140
|
-
await repo.insert({ id: 2, title:
|
|
149
|
+
await repo.insert({ id: 2, title: 'b' });
|
|
141
150
|
throw new Error();
|
|
142
151
|
});
|
|
143
152
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RestDataProviderHttpProvider } from
|
|
1
|
+
import { RestDataProviderHttpProvider } from './data-interfaces';
|
|
2
2
|
import { RestDataProviderHttpProviderUsingFetch } from './data-providers/rest-data-provider';
|
|
3
3
|
export declare function buildRestDataProvider(provider: ExternalHttpProvider | typeof fetch): RestDataProviderHttpProviderUsingFetch | RestDataProviderHttpProvider;
|
|
4
4
|
export declare function isExternalHttpProvider(item: any): boolean;
|
|
@@ -9,7 +9,7 @@ export function buildRestDataProvider(provider) {
|
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
11
|
if (!httpDataProvider) {
|
|
12
|
-
if (typeof provider ===
|
|
12
|
+
if (typeof provider === 'function') {
|
|
13
13
|
httpDataProvider = new RestDataProviderHttpProviderUsingFetch(provider);
|
|
14
14
|
}
|
|
15
15
|
}
|
|
@@ -45,11 +45,12 @@ export async function retry(what) {
|
|
|
45
45
|
return await what();
|
|
46
46
|
}
|
|
47
47
|
catch (err) {
|
|
48
|
-
if ((err.message?.startsWith(
|
|
49
|
-
err.message?.startsWith(
|
|
50
|
-
err.message?.includes(
|
|
51
|
-
err.message?.startsWith(
|
|
52
|
-
err.status == 500) &&
|
|
48
|
+
if ((err.message?.startsWith('Error occurred while trying to proxy') ||
|
|
49
|
+
err.message?.startsWith('Error occured while trying to proxy') ||
|
|
50
|
+
err.message?.includes('http proxy error') ||
|
|
51
|
+
err.message?.startsWith('Gateway Timeout') ||
|
|
52
|
+
err.status == 500) &&
|
|
53
|
+
i++ < 50) {
|
|
53
54
|
await new Promise((res, req) => {
|
|
54
55
|
setTimeout(() => {
|
|
55
56
|
res({});
|
|
@@ -63,17 +64,24 @@ export async function retry(what) {
|
|
|
63
64
|
}
|
|
64
65
|
export function toPromise(p) {
|
|
65
66
|
let r;
|
|
66
|
-
if (p[
|
|
67
|
-
r = p[
|
|
67
|
+
if (p['toPromise'] !== undefined) {
|
|
68
|
+
r = p['toPromise']();
|
|
68
69
|
}
|
|
69
70
|
//@ts-ignore
|
|
70
71
|
else
|
|
71
72
|
r = p;
|
|
72
|
-
return r
|
|
73
|
-
|
|
73
|
+
return r
|
|
74
|
+
.then((x) => {
|
|
75
|
+
if (x &&
|
|
76
|
+
(x.status == 200 || x.status == 201) &&
|
|
77
|
+
x.headers &&
|
|
78
|
+
x.request &&
|
|
79
|
+
x.data)
|
|
80
|
+
//for axios
|
|
74
81
|
return x.data;
|
|
75
82
|
return x;
|
|
76
|
-
})
|
|
83
|
+
})
|
|
84
|
+
.catch(async (ex) => {
|
|
77
85
|
throw await processHttpException(ex);
|
|
78
86
|
});
|
|
79
87
|
}
|
|
@@ -83,7 +91,7 @@ export async function processHttpException(ex) {
|
|
|
83
91
|
if (z.error)
|
|
84
92
|
error = z.error;
|
|
85
93
|
else if (z.isAxiosError) {
|
|
86
|
-
if (typeof z.response?.data ===
|
|
94
|
+
if (typeof z.response?.data === 'string')
|
|
87
95
|
error = z.response.data;
|
|
88
96
|
else
|
|
89
97
|
error = z?.response?.data;
|
|
@@ -91,7 +99,7 @@ export async function processHttpException(ex) {
|
|
|
91
99
|
if (!error)
|
|
92
100
|
error = z.message;
|
|
93
101
|
if (z.status == 0 && z.error.isTrusted)
|
|
94
|
-
error =
|
|
102
|
+
error = 'Network Error';
|
|
95
103
|
if (typeof error === 'string') {
|
|
96
104
|
error = {
|
|
97
105
|
message: error,
|
|
@@ -3,9 +3,9 @@ import { Allowed, AllowedForInstance } from './context';
|
|
|
3
3
|
import { EntityMetadata, FieldRef, OmitEB } from './remult3';
|
|
4
4
|
export interface FieldOptions<entityType = any, valueType = any> {
|
|
5
5
|
/** A human readable name for the field. Can be used to achieve a consistent caption for a field throughout the app
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
* @example
|
|
7
|
+
* <input placeholder={taskRepo.metadata.fields.title.caption}/>
|
|
8
|
+
*/
|
|
9
9
|
caption?: string;
|
|
10
10
|
/** If it can store null in the database */
|
|
11
11
|
allowNull?: boolean;
|
|
@@ -13,7 +13,7 @@ export interface FieldOptions<entityType = any, valueType = any> {
|
|
|
13
13
|
* @see [allowed](http://remult.dev/docs/allowed.html)*/
|
|
14
14
|
includeInApi?: Allowed;
|
|
15
15
|
/** If this field data can be updated in the api.
|
|
16
|
-
|
|
16
|
+
* @see [allowed](http://remult.dev/docs/allowed.html)*/
|
|
17
17
|
allowApiUpdate?: AllowedForInstance<entityType>;
|
|
18
18
|
/** An arrow function that'll be used to perform validations on it
|
|
19
19
|
* @example
|
|
@@ -35,9 +35,9 @@ export interface FieldOptions<entityType = any, valueType = any> {
|
|
|
35
35
|
* }
|
|
36
36
|
* })
|
|
37
37
|
*/
|
|
38
|
-
validate?: ((entity: entityType, fieldRef: FieldRef<entityType, valueType>) =>
|
|
38
|
+
validate?: ((entity: entityType, fieldRef: FieldRef<entityType, valueType>) => any | Promise<any>) | ((entity: entityType, fieldRef: FieldRef<entityType, valueType>) => any | Promise<any>)[];
|
|
39
39
|
/** Will be fired before this field is saved to the server/database */
|
|
40
|
-
saving?: (
|
|
40
|
+
saving?: (entity: entityType, fieldRef: FieldRef<entityType, valueType>) => any | Promise<any>;
|
|
41
41
|
/** An expression that will determine this fields value on the backend and be provided to the front end*/
|
|
42
42
|
serverExpression?: (entity: entityType) => valueType | Promise<valueType>;
|
|
43
43
|
/** The name of the column in the database that holds the data for this field. If no name is set, the key will be used instead. */
|
|
@@ -51,7 +51,7 @@ export interface FieldOptions<entityType = any, valueType = any> {
|
|
|
51
51
|
* titleLength = 0;
|
|
52
52
|
* @Fields.string()
|
|
53
53
|
* title='';
|
|
54
|
-
|
|
54
|
+
*/
|
|
55
55
|
sqlExpression?: string | ((entity: EntityMetadata<entityType>) => string | Promise<string>);
|
|
56
56
|
/** For fields that shouldn't be part of an update or insert statement */
|
|
57
57
|
dbReadOnly?: boolean;
|
|
@@ -100,7 +100,7 @@ export interface FieldMetadata<valueType = any, entityType = any> {
|
|
|
100
100
|
* @example
|
|
101
101
|
* const taskRepo = remult.repo(Task);
|
|
102
102
|
* Task == taskRepo.metadata.fields.title.target //will return true
|
|
103
|
-
|
|
103
|
+
*/
|
|
104
104
|
readonly target: ClassType<valueType>;
|
|
105
105
|
/** Returns the dbName - based on it's `dbName` option and it's `sqlExpression` option */
|
|
106
106
|
getDbName(): Promise<string>;
|
|
@@ -113,7 +113,7 @@ export interface FieldMetadata<valueType = any, entityType = any> {
|
|
|
113
113
|
/** Get the display value for a specific item
|
|
114
114
|
* @example
|
|
115
115
|
* repo.fields.createDate.displayValue(task) //will display the date as defined in the `displayValue` option defined for it.
|
|
116
|
-
|
|
116
|
+
*/
|
|
117
117
|
displayValue(item: Partial<OmitEB<entityType>>): string;
|
|
118
118
|
apiUpdateAllowed(item?: Partial<OmitEB<entityType>>): boolean;
|
|
119
119
|
readonly includedInApi: boolean;
|
package/esm/src/column.d.ts
CHANGED
|
@@ -31,9 +31,13 @@ export declare class CompoundIdField implements FieldMetadata<string> {
|
|
|
31
31
|
export declare class LookupColumn<T> {
|
|
32
32
|
private repository;
|
|
33
33
|
id: idType<T>;
|
|
34
|
+
toJson(): any;
|
|
34
35
|
setId(val: any): void;
|
|
35
36
|
waitLoadOf(id: any): Promise<T>;
|
|
36
37
|
get(id: any): any;
|
|
38
|
+
storedItem: {
|
|
39
|
+
item: T;
|
|
40
|
+
};
|
|
37
41
|
set(item: T): void;
|
|
38
42
|
constructor(repository: RepositoryImplementation<T>, id: idType<T>);
|
|
39
43
|
get item(): T;
|
package/esm/src/column.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { assign } from '../assign';
|
|
2
2
|
import { Filter } from './filter/filter-interfaces';
|
|
3
|
-
import { getEntityRef, __updateEntityBasedOnWhere } from './remult3';
|
|
3
|
+
import { getEntityRef, __updateEntityBasedOnWhere, } from './remult3';
|
|
4
4
|
export function makeTitle(name) {
|
|
5
5
|
// insert a space before all caps
|
|
6
|
-
return name
|
|
6
|
+
return (name
|
|
7
|
+
.replace(/([A-Z])/g, ' $1')
|
|
7
8
|
// uppercase the first character
|
|
8
|
-
.replace(/^./, (str) => str.toUpperCase())
|
|
9
|
+
.replace(/^./, (str) => str.toUpperCase())
|
|
10
|
+
.replace('Email', 'eMail')
|
|
11
|
+
.replace(' I D', ' ID'));
|
|
9
12
|
}
|
|
10
13
|
export class CompoundIdField {
|
|
11
14
|
constructor(...columns) {
|
|
@@ -24,11 +27,11 @@ export class CompoundIdField {
|
|
|
24
27
|
throw new Error('Method not implemented.');
|
|
25
28
|
}
|
|
26
29
|
getDbName() {
|
|
27
|
-
return Promise.resolve(
|
|
30
|
+
return Promise.resolve('');
|
|
28
31
|
}
|
|
29
32
|
getId(instance) {
|
|
30
|
-
let r =
|
|
31
|
-
this.fields.forEach(c => {
|
|
33
|
+
let r = '';
|
|
34
|
+
this.fields.forEach((c) => {
|
|
32
35
|
if (r.length > 0)
|
|
33
36
|
r += ',';
|
|
34
37
|
r += instance[c.key];
|
|
@@ -36,7 +39,7 @@ export class CompoundIdField {
|
|
|
36
39
|
return r;
|
|
37
40
|
}
|
|
38
41
|
get valueConverter() {
|
|
39
|
-
throw new Error(
|
|
42
|
+
throw new Error('cant get value converter of compound id');
|
|
40
43
|
}
|
|
41
44
|
isEqualTo(value) {
|
|
42
45
|
let result = {};
|
|
@@ -48,7 +51,7 @@ export class CompoundIdField {
|
|
|
48
51
|
return result;
|
|
49
52
|
}
|
|
50
53
|
resultIdFilter(id, data) {
|
|
51
|
-
return new Filter(add => {
|
|
54
|
+
return new Filter((add) => {
|
|
52
55
|
let idParts = [];
|
|
53
56
|
if (id != undefined)
|
|
54
57
|
idParts = id.split(',');
|
|
@@ -68,6 +71,11 @@ export class LookupColumn {
|
|
|
68
71
|
this.repository = repository;
|
|
69
72
|
this.id = id;
|
|
70
73
|
}
|
|
74
|
+
toJson() {
|
|
75
|
+
if (this.item === null)
|
|
76
|
+
return null;
|
|
77
|
+
return this.repository.toJson(this.item);
|
|
78
|
+
}
|
|
71
79
|
setId(val) {
|
|
72
80
|
if (this.repository.metadata.idMetadata.field.valueType == Number)
|
|
73
81
|
val = +val;
|
|
@@ -84,8 +92,9 @@ export class LookupColumn {
|
|
|
84
92
|
return this.repository.getCachedById(id);
|
|
85
93
|
}
|
|
86
94
|
set(item) {
|
|
95
|
+
this.storedItem = undefined;
|
|
87
96
|
if (item) {
|
|
88
|
-
if (typeof item ===
|
|
97
|
+
if (typeof item === 'string' || typeof item === 'number')
|
|
89
98
|
this.id = item;
|
|
90
99
|
else {
|
|
91
100
|
let eo = getEntityRef(item, false);
|
|
@@ -94,6 +103,7 @@ export class LookupColumn {
|
|
|
94
103
|
this.id = eo.getId();
|
|
95
104
|
}
|
|
96
105
|
else {
|
|
106
|
+
this.storedItem = { item };
|
|
97
107
|
this.id = item[this.repository.metadata.idMetadata.field.key];
|
|
98
108
|
}
|
|
99
109
|
}
|
|
@@ -106,6 +116,8 @@ export class LookupColumn {
|
|
|
106
116
|
}
|
|
107
117
|
}
|
|
108
118
|
get item() {
|
|
119
|
+
if (this.storedItem)
|
|
120
|
+
return this.storedItem.item;
|
|
109
121
|
return this.get(this.id);
|
|
110
122
|
}
|
|
111
123
|
async waitLoad() {
|
|
@@ -127,11 +139,11 @@ export class OneToMany {
|
|
|
127
139
|
return this._currentPromise;
|
|
128
140
|
if (this._items === undefined)
|
|
129
141
|
this._items = [];
|
|
130
|
-
return this._currentPromise = this.find().then(x => {
|
|
142
|
+
return (this._currentPromise = this.find().then((x) => {
|
|
131
143
|
this._items.splice(0);
|
|
132
144
|
this._items.push(...x);
|
|
133
145
|
return this._items;
|
|
134
|
-
});
|
|
146
|
+
}));
|
|
135
147
|
}
|
|
136
148
|
async find() {
|
|
137
149
|
return this.provider.find(this.settings);
|
package/esm/src/context.d.ts
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
|
-
import { DataProvider } from
|
|
2
|
-
import { EntityMetadata, EntityRef, FindOptions, Repository } from
|
|
3
|
-
import { ClassType } from
|
|
4
|
-
import type { SubscriptionServer } from
|
|
5
|
-
import { ExternalHttpProvider } from
|
|
6
|
-
import { SubscriptionClient, Unsubscribe } from
|
|
1
|
+
import { DataProvider } from './data-interfaces';
|
|
2
|
+
import { EntityMetadata, EntityRef, FindOptions, Repository } from './remult3';
|
|
3
|
+
import { ClassType } from '../classType';
|
|
4
|
+
import type { SubscriptionServer } from './live-query/SubscriptionServer';
|
|
5
|
+
import { ExternalHttpProvider } from './buildRestDataProvider';
|
|
6
|
+
import { SubscriptionClient, Unsubscribe } from './live-query/SubscriptionChannel';
|
|
7
|
+
export declare class RemultAsyncLocalStorage {
|
|
8
|
+
private readonly remultObjectStorage;
|
|
9
|
+
static enable(): void;
|
|
10
|
+
static disable(): void;
|
|
11
|
+
constructor(remultObjectStorage: import('async_hooks').AsyncLocalStorage<Remult>);
|
|
12
|
+
run(remult: Remult, callback: VoidFunction): void;
|
|
13
|
+
getRemult(): Remult;
|
|
14
|
+
static instance: RemultAsyncLocalStorage;
|
|
15
|
+
}
|
|
7
16
|
export declare function isBackend(): boolean;
|
|
8
17
|
export declare class Remult {
|
|
9
18
|
/**Return's a `Repository` of the specific entity type
|
|
@@ -48,8 +57,8 @@ export declare class Remult {
|
|
|
48
57
|
* @param backendMethod - the backend method to call
|
|
49
58
|
* @param classInstance - the class instance of the backend method, for static backend methods use undefined
|
|
50
59
|
* @param args - the arguments to send to the backend method
|
|
51
|
-
|
|
52
|
-
call<T extends (
|
|
60
|
+
*/
|
|
61
|
+
call<T extends (...args: any[]) => Promise<any>>(backendMethod: T, classInstance?: any, ...args: GetArguments<T>): ReturnType<T>;
|
|
53
62
|
/** A helper callback that can be used to debug and trace all find operations. Useful in debugging scenarios */
|
|
54
63
|
static onFind: (metadata: EntityMetadata, options: FindOptions<any>) => void;
|
|
55
64
|
clearAllCache(): any;
|
|
@@ -59,6 +68,9 @@ export declare class Remult {
|
|
|
59
68
|
readonly context: RemultContext;
|
|
60
69
|
/** The api client that will be used by `remult` to perform calls to the `api` */
|
|
61
70
|
apiClient: ApiClient;
|
|
71
|
+
static run<T>(callback: () => T, options: {
|
|
72
|
+
dataProvider: DataProvider;
|
|
73
|
+
}): T;
|
|
62
74
|
}
|
|
63
75
|
export declare type GetArguments<T> = T extends (...args: infer FirstArgument) => any ? FirstArgument : never;
|
|
64
76
|
export interface RemultContext {
|