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/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/server/index.js
CHANGED
|
@@ -14,8 +14,11 @@ Object.defineProperty(exports, "SseSubscriptionServer", { enumerable: true, get:
|
|
|
14
14
|
function createRemultServer(options, serverCoreOptions) {
|
|
15
15
|
var _this = this;
|
|
16
16
|
initAsyncHooks_1.initAsyncHooks();
|
|
17
|
-
return expressBridge_1.createRemultServerCore(options, serverCoreOptions || {
|
|
17
|
+
return expressBridge_1.createRemultServerCore(options, serverCoreOptions || {
|
|
18
|
+
buildGenericRequestInfo: function (req) { return req; },
|
|
19
|
+
getRequestBody: function (req) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
|
|
18
20
|
return [2 /*return*/, req.body];
|
|
19
|
-
}); }); }
|
|
21
|
+
}); }); },
|
|
22
|
+
});
|
|
20
23
|
}
|
|
21
24
|
exports.createRemultServer = createRemultServer;
|
package/server/initAsyncHooks.js
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.initAsyncHooks = void 0;
|
|
4
4
|
var async_hooks_1 = require("async_hooks");
|
|
5
|
-
var
|
|
5
|
+
var context_1 = require("../src/context");
|
|
6
6
|
var init = false;
|
|
7
7
|
function initAsyncHooks() {
|
|
8
8
|
if (init)
|
|
9
9
|
return;
|
|
10
10
|
init = true;
|
|
11
|
-
|
|
11
|
+
context_1.RemultAsyncLocalStorage.instance = new context_1.RemultAsyncLocalStorage(new async_hooks_1.AsyncLocalStorage());
|
|
12
12
|
}
|
|
13
13
|
exports.initAsyncHooks = initAsyncHooks;
|
|
@@ -5,7 +5,7 @@ var tslib_1 = require("tslib");
|
|
|
5
5
|
function initDataProvider(optionsDataProvider) {
|
|
6
6
|
var _this = this;
|
|
7
7
|
var dataProvider;
|
|
8
|
-
if (typeof optionsDataProvider ===
|
|
8
|
+
if (typeof optionsDataProvider === 'function') {
|
|
9
9
|
dataProvider = optionsDataProvider();
|
|
10
10
|
}
|
|
11
11
|
else
|
|
@@ -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;
|
|
@@ -18,7 +18,7 @@ function testKnexSqlImpl(knex, name) {
|
|
|
18
18
|
var _this = this;
|
|
19
19
|
return function (key, what, focus) {
|
|
20
20
|
if (focus === void 0) { focus = false; }
|
|
21
|
-
db_tests_setup_1.itWithFocus(key +
|
|
21
|
+
db_tests_setup_1.itWithFocus(key + ' ' + name + ' - knex', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
22
22
|
var db, remult;
|
|
23
23
|
var _this = this;
|
|
24
24
|
return tslib_1.__generator(this, function (_a) {
|
|
@@ -27,7 +27,8 @@ function testKnexSqlImpl(knex, name) {
|
|
|
27
27
|
db = new remult_knex_1.KnexDataProvider(knex);
|
|
28
28
|
remult = new context_1.Remult(db);
|
|
29
29
|
return [4 /*yield*/, what({
|
|
30
|
-
db: db,
|
|
30
|
+
db: db,
|
|
31
|
+
remult: remult,
|
|
31
32
|
createEntity: function (entity) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
32
33
|
var repo, _a, _b;
|
|
33
34
|
return tslib_1.__generator(this, function (_c) {
|
|
@@ -45,7 +46,7 @@ function testKnexSqlImpl(knex, name) {
|
|
|
45
46
|
return [2 /*return*/, repo];
|
|
46
47
|
}
|
|
47
48
|
});
|
|
48
|
-
}); }
|
|
49
|
+
}); },
|
|
49
50
|
})];
|
|
50
51
|
case 1:
|
|
51
52
|
_a.sent();
|
|
@@ -58,7 +59,7 @@ function testKnexSqlImpl(knex, name) {
|
|
|
58
59
|
exports.testKnexPGSqlImpl = testKnexSqlImpl(Knex.default({
|
|
59
60
|
client: 'pg',
|
|
60
61
|
connection: process.env.DATABASE_URL,
|
|
61
|
-
}),
|
|
62
|
+
}), 'postgres');
|
|
62
63
|
db_tests_setup_1.addDatabaseToTest(exports.testKnexPGSqlImpl);
|
|
63
64
|
if (process.env['TESTS_SQL_SERVER'])
|
|
64
65
|
db_tests_setup_1.addDatabaseToTest(testKnexSqlImpl(Knex.default({
|
|
@@ -71,32 +72,31 @@ if (process.env['TESTS_SQL_SERVER'])
|
|
|
71
72
|
options: {
|
|
72
73
|
enableArithAbort: true,
|
|
73
74
|
encrypt: false,
|
|
74
|
-
instanceName: 'sqlexpress'
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}),
|
|
75
|
+
instanceName: 'sqlexpress',
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
}), 'sql server'));
|
|
78
79
|
if (true)
|
|
79
80
|
db_tests_setup_1.addDatabaseToTest(testKnexSqlImpl(Knex.default({
|
|
80
81
|
client: 'better-sqlite3',
|
|
81
82
|
connection: {
|
|
82
|
-
filename:
|
|
83
|
+
filename: ':memory:',
|
|
83
84
|
},
|
|
84
|
-
}),
|
|
85
|
+
}), 'sqlite3'));
|
|
85
86
|
exports.mySqlTest = db_tests_setup_1.addDatabaseToTest(testKnexSqlImpl(Knex.default({
|
|
86
87
|
client: 'mysql2',
|
|
87
88
|
connection: {
|
|
88
89
|
user: 'root',
|
|
89
90
|
password: 'MASTERKEY',
|
|
90
91
|
host: '127.0.0.1',
|
|
91
|
-
database: 'test'
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
}), "mysql2"));
|
|
92
|
+
database: 'test',
|
|
93
|
+
},
|
|
94
|
+
}), 'mysql2'));
|
|
95
95
|
var pg = postgres_1.createPostgresConnection();
|
|
96
96
|
function testPostgresImplementation(key, what, focus) {
|
|
97
97
|
var _this = this;
|
|
98
98
|
if (focus === void 0) { focus = false; }
|
|
99
|
-
db_tests_setup_1.itWithFocus(key +
|
|
99
|
+
db_tests_setup_1.itWithFocus(key + ' - postgres', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
100
100
|
var db, remult;
|
|
101
101
|
var _this = this;
|
|
102
102
|
return tslib_1.__generator(this, function (_a) {
|
|
@@ -106,7 +106,8 @@ function testPostgresImplementation(key, what, focus) {
|
|
|
106
106
|
db = _a.sent();
|
|
107
107
|
remult = new context_1.Remult(db);
|
|
108
108
|
return [4 /*yield*/, what({
|
|
109
|
-
db: db,
|
|
109
|
+
db: db,
|
|
110
|
+
remult: remult,
|
|
110
111
|
createEntity: function (entity) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
111
112
|
var repo, _a, _b, _c;
|
|
112
113
|
return tslib_1.__generator(this, function (_d) {
|
|
@@ -114,7 +115,7 @@ function testPostgresImplementation(key, what, focus) {
|
|
|
114
115
|
case 0:
|
|
115
116
|
repo = remult.repo(entity);
|
|
116
117
|
_b = (_a = db).execute;
|
|
117
|
-
_c =
|
|
118
|
+
_c = 'drop table if exists ';
|
|
118
119
|
return [4 /*yield*/, repo.metadata.getDbName()];
|
|
119
120
|
case 1: return [4 /*yield*/, _b.apply(_a, [_c + (_d.sent())])];
|
|
120
121
|
case 2:
|
|
@@ -125,7 +126,7 @@ function testPostgresImplementation(key, what, focus) {
|
|
|
125
126
|
return [2 /*return*/, repo];
|
|
126
127
|
}
|
|
127
128
|
});
|
|
128
|
-
}); }
|
|
129
|
+
}); },
|
|
129
130
|
})];
|
|
130
131
|
case 2:
|
|
131
132
|
_a.sent();
|
|
@@ -138,7 +139,7 @@ exports.testPostgresImplementation = testPostgresImplementation;
|
|
|
138
139
|
db_tests_setup_1.addDatabaseToTest(testPostgresImplementation);
|
|
139
140
|
var remult_3_entities_1 = require("../tests/remult-3-entities");
|
|
140
141
|
var remult_mongo_1 = require("../../remult-mongo");
|
|
141
|
-
db_tests_setup_1.testAll(
|
|
142
|
+
db_tests_setup_1.testAll('transactions', function (_a) {
|
|
142
143
|
var db = _a.db, createEntity = _a.createEntity;
|
|
143
144
|
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
144
145
|
var x;
|
|
@@ -173,7 +174,7 @@ var client = new mongodb_1.MongoClient(mongoConnectionString);
|
|
|
173
174
|
var done;
|
|
174
175
|
var mongoDbPromise = client.connect().then(function (c) {
|
|
175
176
|
done = c;
|
|
176
|
-
return c.db(
|
|
177
|
+
return c.db('test');
|
|
177
178
|
});
|
|
178
179
|
afterAll(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
179
180
|
return tslib_1.__generator(this, function (_a) {
|
|
@@ -185,7 +186,7 @@ afterAll(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function
|
|
|
185
186
|
function testMongo(key, what, focus) {
|
|
186
187
|
var _this = this;
|
|
187
188
|
if (focus === void 0) { focus = false; }
|
|
188
|
-
db_tests_setup_1.itWithFocus(key +
|
|
189
|
+
db_tests_setup_1.itWithFocus(key + ' - mongo', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
189
190
|
var mongoDb, db, remult;
|
|
190
191
|
var _this = this;
|
|
191
192
|
return tslib_1.__generator(this, function (_a) {
|
|
@@ -196,22 +197,25 @@ function testMongo(key, what, focus) {
|
|
|
196
197
|
db = new remult_mongo_1.MongoDataProvider(mongoDb, client);
|
|
197
198
|
remult = new context_1.Remult(db);
|
|
198
199
|
return [4 /*yield*/, what({
|
|
199
|
-
db: db,
|
|
200
|
+
db: db,
|
|
201
|
+
remult: remult,
|
|
200
202
|
createEntity: function (entity) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
201
203
|
var repo, _a, _b;
|
|
202
204
|
return tslib_1.__generator(this, function (_c) {
|
|
203
205
|
switch (_c.label) {
|
|
204
206
|
case 0:
|
|
205
207
|
repo = remult.repo(entity);
|
|
206
|
-
_b = (_a = mongoDb)
|
|
208
|
+
_b = (_a = mongoDb)
|
|
209
|
+
.collection;
|
|
207
210
|
return [4 /*yield*/, repo.metadata.getDbName()];
|
|
208
|
-
case 1: return [4 /*yield*/, _b.apply(_a, [_c.sent()])
|
|
211
|
+
case 1: return [4 /*yield*/, _b.apply(_a, [_c.sent()])
|
|
212
|
+
.deleteMany({})];
|
|
209
213
|
case 2:
|
|
210
214
|
_c.sent();
|
|
211
215
|
return [2 /*return*/, repo];
|
|
212
216
|
}
|
|
213
217
|
});
|
|
214
|
-
}); }
|
|
218
|
+
}); },
|
|
215
219
|
})];
|
|
216
220
|
case 2:
|
|
217
221
|
_a.sent();
|
|
@@ -222,18 +226,20 @@ function testMongo(key, what, focus) {
|
|
|
222
226
|
}
|
|
223
227
|
exports.testMongo = testMongo;
|
|
224
228
|
db_tests_setup_1.addDatabaseToTest(testMongo, db_tests_setup_1.TestDbs.mongo);
|
|
225
|
-
it(
|
|
229
|
+
it('test mongo without transaction', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
226
230
|
var client, mongoDb, db, remult, entity, repo, _a, _b, item, e_1_1, _c, _d;
|
|
227
231
|
var e_1, _e;
|
|
228
232
|
return tslib_1.__generator(this, function (_f) {
|
|
229
233
|
switch (_f.label) {
|
|
230
234
|
case 0:
|
|
231
|
-
client = new mongodb_1.MongoClient(
|
|
235
|
+
client = new mongodb_1.MongoClient('mongodb://localhost:27017/local');
|
|
232
236
|
return [4 /*yield*/, client.connect()];
|
|
233
237
|
case 1:
|
|
234
238
|
_f.sent();
|
|
235
239
|
mongoDb = client.db('test');
|
|
236
|
-
db = new remult_mongo_1.MongoDataProvider(mongoDb, client, {
|
|
240
|
+
db = new remult_mongo_1.MongoDataProvider(mongoDb, client, {
|
|
241
|
+
disableTransactions: true,
|
|
242
|
+
});
|
|
237
243
|
remult = new context_1.Remult(db);
|
|
238
244
|
entity = /** @class */ (function () {
|
|
239
245
|
function class_1() {
|
|
@@ -242,7 +248,10 @@ it("test mongo without transaction", function () { return tslib_1.__awaiter(void
|
|
|
242
248
|
}
|
|
243
249
|
return class_1;
|
|
244
250
|
}());
|
|
245
|
-
DecoratorReplacer_1.describeClass(entity, remult3_1.Entity(
|
|
251
|
+
DecoratorReplacer_1.describeClass(entity, remult3_1.Entity('testNoTrans'), {
|
|
252
|
+
id: remult3_1.Fields.number(),
|
|
253
|
+
title: remult3_1.Fields.string(),
|
|
254
|
+
});
|
|
246
255
|
repo = remult.repo(entity);
|
|
247
256
|
_f.label = 2;
|
|
248
257
|
case 2:
|
|
@@ -272,7 +281,7 @@ it("test mongo without transaction", function () { return tslib_1.__awaiter(void
|
|
|
272
281
|
}
|
|
273
282
|
finally { if (e_1) throw e_1.error; }
|
|
274
283
|
return [7 /*endfinally*/];
|
|
275
|
-
case 10: return [4 /*yield*/, repo.insert({ id: 1, title:
|
|
284
|
+
case 10: return [4 /*yield*/, repo.insert({ id: 1, title: 'a' })];
|
|
276
285
|
case 11:
|
|
277
286
|
_f.sent();
|
|
278
287
|
_f.label = 12;
|
|
@@ -281,7 +290,7 @@ it("test mongo without transaction", function () { return tslib_1.__awaiter(void
|
|
|
281
290
|
return [4 /*yield*/, db.transaction(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
282
291
|
return tslib_1.__generator(this, function (_a) {
|
|
283
292
|
switch (_a.label) {
|
|
284
|
-
case 0: return [4 /*yield*/, repo.insert({ id: 2, title:
|
|
293
|
+
case 0: return [4 /*yield*/, repo.insert({ id: 2, title: 'b' })];
|
|
285
294
|
case 1:
|
|
286
295
|
_a.sent();
|
|
287
296
|
throw new Error();
|
|
@@ -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;
|
|
@@ -13,7 +13,7 @@ function buildRestDataProvider(provider) {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
if (!httpDataProvider) {
|
|
16
|
-
if (typeof provider ===
|
|
16
|
+
if (typeof provider === 'function') {
|
|
17
17
|
httpDataProvider = new rest_data_provider_1.RestDataProviderHttpProviderUsingFetch(provider);
|
|
18
18
|
}
|
|
19
19
|
}
|
|
@@ -80,8 +80,9 @@ function retry(what) {
|
|
|
80
80
|
case 3: return [2 /*return*/, _e.sent()];
|
|
81
81
|
case 4:
|
|
82
82
|
err_1 = _e.sent();
|
|
83
|
-
if (!((((_a = err_1.message) === null || _a === void 0 ? void 0 : _a.startsWith(
|
|
84
|
-
err_1.status == 500) &&
|
|
83
|
+
if (!((((_a = err_1.message) === null || _a === void 0 ? void 0 : _a.startsWith('Error occurred while trying to proxy')) || ((_b = err_1.message) === null || _b === void 0 ? void 0 : _b.startsWith('Error occured while trying to proxy')) || ((_c = err_1.message) === null || _c === void 0 ? void 0 : _c.includes('http proxy error')) || ((_d = err_1.message) === null || _d === void 0 ? void 0 : _d.startsWith('Gateway Timeout')) ||
|
|
84
|
+
err_1.status == 500) &&
|
|
85
|
+
i++ < 50)) return [3 /*break*/, 6];
|
|
85
86
|
return [4 /*yield*/, new Promise(function (res, req) {
|
|
86
87
|
setTimeout(function () {
|
|
87
88
|
res({});
|
|
@@ -101,17 +102,24 @@ exports.retry = retry;
|
|
|
101
102
|
function toPromise(p) {
|
|
102
103
|
var _this = this;
|
|
103
104
|
var r;
|
|
104
|
-
if (p[
|
|
105
|
-
r = p[
|
|
105
|
+
if (p['toPromise'] !== undefined) {
|
|
106
|
+
r = p['toPromise']();
|
|
106
107
|
}
|
|
107
108
|
//@ts-ignore
|
|
108
109
|
else
|
|
109
110
|
r = p;
|
|
110
|
-
return r
|
|
111
|
-
|
|
111
|
+
return r
|
|
112
|
+
.then(function (x) {
|
|
113
|
+
if (x &&
|
|
114
|
+
(x.status == 200 || x.status == 201) &&
|
|
115
|
+
x.headers &&
|
|
116
|
+
x.request &&
|
|
117
|
+
x.data)
|
|
118
|
+
//for axios
|
|
112
119
|
return x.data;
|
|
113
120
|
return x;
|
|
114
|
-
})
|
|
121
|
+
})
|
|
122
|
+
.catch(function (ex) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
115
123
|
return tslib_1.__generator(this, function (_a) {
|
|
116
124
|
switch (_a.label) {
|
|
117
125
|
case 0: return [4 /*yield*/, processHttpException(ex)];
|
|
@@ -133,7 +141,7 @@ function processHttpException(ex) {
|
|
|
133
141
|
if (z.error)
|
|
134
142
|
error = z.error;
|
|
135
143
|
else if (z.isAxiosError) {
|
|
136
|
-
if (typeof ((_a = z.response) === null || _a === void 0 ? void 0 : _a.data) ===
|
|
144
|
+
if (typeof ((_a = z.response) === null || _a === void 0 ? void 0 : _a.data) === 'string')
|
|
137
145
|
error = z.response.data;
|
|
138
146
|
else
|
|
139
147
|
error = (_b = z === null || z === void 0 ? void 0 : z.response) === null || _b === void 0 ? void 0 : _b.data;
|
|
@@ -141,7 +149,7 @@ function processHttpException(ex) {
|
|
|
141
149
|
if (!error)
|
|
142
150
|
error = z.message;
|
|
143
151
|
if (z.status == 0 && z.error.isTrusted)
|
|
144
|
-
error =
|
|
152
|
+
error = 'Network Error';
|
|
145
153
|
if (typeof error === 'string') {
|
|
146
154
|
error = {
|
|
147
155
|
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/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/src/column.js
CHANGED
|
@@ -7,9 +7,12 @@ var filter_interfaces_1 = require("./filter/filter-interfaces");
|
|
|
7
7
|
var remult3_1 = require("./remult3");
|
|
8
8
|
function makeTitle(name) {
|
|
9
9
|
// insert a space before all caps
|
|
10
|
-
return name
|
|
10
|
+
return (name
|
|
11
|
+
.replace(/([A-Z])/g, ' $1')
|
|
11
12
|
// uppercase the first character
|
|
12
|
-
.replace(/^./, function (str) { return str.toUpperCase(); })
|
|
13
|
+
.replace(/^./, function (str) { return str.toUpperCase(); })
|
|
14
|
+
.replace('Email', 'eMail')
|
|
15
|
+
.replace(' I D', ' ID'));
|
|
13
16
|
}
|
|
14
17
|
exports.makeTitle = makeTitle;
|
|
15
18
|
var CompoundIdField = /** @class */ (function () {
|
|
@@ -33,10 +36,10 @@ var CompoundIdField = /** @class */ (function () {
|
|
|
33
36
|
throw new Error('Method not implemented.');
|
|
34
37
|
};
|
|
35
38
|
CompoundIdField.prototype.getDbName = function () {
|
|
36
|
-
return Promise.resolve(
|
|
39
|
+
return Promise.resolve('');
|
|
37
40
|
};
|
|
38
41
|
CompoundIdField.prototype.getId = function (instance) {
|
|
39
|
-
var r =
|
|
42
|
+
var r = '';
|
|
40
43
|
this.fields.forEach(function (c) {
|
|
41
44
|
if (r.length > 0)
|
|
42
45
|
r += ',';
|
|
@@ -46,7 +49,7 @@ var CompoundIdField = /** @class */ (function () {
|
|
|
46
49
|
};
|
|
47
50
|
Object.defineProperty(CompoundIdField.prototype, "valueConverter", {
|
|
48
51
|
get: function () {
|
|
49
|
-
throw new Error(
|
|
52
|
+
throw new Error('cant get value converter of compound id');
|
|
50
53
|
},
|
|
51
54
|
enumerable: false,
|
|
52
55
|
configurable: true
|
|
@@ -84,6 +87,11 @@ var LookupColumn = /** @class */ (function () {
|
|
|
84
87
|
this.repository = repository;
|
|
85
88
|
this.id = id;
|
|
86
89
|
}
|
|
90
|
+
LookupColumn.prototype.toJson = function () {
|
|
91
|
+
if (this.item === null)
|
|
92
|
+
return null;
|
|
93
|
+
return this.repository.toJson(this.item);
|
|
94
|
+
};
|
|
87
95
|
LookupColumn.prototype.setId = function (val) {
|
|
88
96
|
if (this.repository.metadata.idMetadata.field.valueType == Number)
|
|
89
97
|
val = +val;
|
|
@@ -100,8 +108,9 @@ var LookupColumn = /** @class */ (function () {
|
|
|
100
108
|
return this.repository.getCachedById(id);
|
|
101
109
|
};
|
|
102
110
|
LookupColumn.prototype.set = function (item) {
|
|
111
|
+
this.storedItem = undefined;
|
|
103
112
|
if (item) {
|
|
104
|
-
if (typeof item ===
|
|
113
|
+
if (typeof item === 'string' || typeof item === 'number')
|
|
105
114
|
this.id = item;
|
|
106
115
|
else {
|
|
107
116
|
var eo = remult3_1.getEntityRef(item, false);
|
|
@@ -110,6 +119,7 @@ var LookupColumn = /** @class */ (function () {
|
|
|
110
119
|
this.id = eo.getId();
|
|
111
120
|
}
|
|
112
121
|
else {
|
|
122
|
+
this.storedItem = { item: item };
|
|
113
123
|
this.id = item[this.repository.metadata.idMetadata.field.key];
|
|
114
124
|
}
|
|
115
125
|
}
|
|
@@ -123,6 +133,8 @@ var LookupColumn = /** @class */ (function () {
|
|
|
123
133
|
};
|
|
124
134
|
Object.defineProperty(LookupColumn.prototype, "item", {
|
|
125
135
|
get: function () {
|
|
136
|
+
if (this.storedItem)
|
|
137
|
+
return this.storedItem.item;
|
|
126
138
|
return this.get(this.id);
|
|
127
139
|
},
|
|
128
140
|
enumerable: false,
|
|
@@ -160,12 +172,12 @@ var OneToMany = /** @class */ (function () {
|
|
|
160
172
|
return [2 /*return*/, this._currentPromise];
|
|
161
173
|
if (this._items === undefined)
|
|
162
174
|
this._items = [];
|
|
163
|
-
return [2 /*return*/, this._currentPromise = this.find().then(function (x) {
|
|
175
|
+
return [2 /*return*/, (this._currentPromise = this.find().then(function (x) {
|
|
164
176
|
var _a;
|
|
165
177
|
_this._items.splice(0);
|
|
166
178
|
(_a = _this._items).push.apply(_a, tslib_1.__spread(x));
|
|
167
179
|
return _this._items;
|
|
168
|
-
})];
|
|
180
|
+
}))];
|
|
169
181
|
});
|
|
170
182
|
});
|
|
171
183
|
};
|
package/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 {
|