@blueprint-ts/core 4.1.0-beta.1 → 4.1.0-beta.3
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/dist/bulkRequests/BulkRequestEvent.enum.d.ts +4 -0
- package/dist/bulkRequests/BulkRequestEvent.enum.js +5 -0
- package/dist/bulkRequests/BulkRequestSender.d.ts +31 -0
- package/dist/bulkRequests/BulkRequestSender.js +161 -0
- package/dist/bulkRequests/BulkRequestWrapper.d.ts +15 -0
- package/dist/bulkRequests/BulkRequestWrapper.js +50 -0
- package/dist/bulkRequests/index.d.ts +5 -0
- package/dist/bulkRequests/index.js +5 -0
- package/{src/laravel/pagination/contracts/PaginationResponseBodyContract.ts → dist/laravel/pagination/contracts/PaginationResponseBodyContract.d.ts} +4 -4
- package/dist/laravel/pagination/contracts/PaginationResponseBodyContract.js +1 -0
- package/dist/laravel/pagination/dataDrivers/RequestDriver.d.ts +10 -0
- package/dist/laravel/pagination/dataDrivers/RequestDriver.js +18 -0
- package/dist/laravel/pagination/index.d.ts +4 -0
- package/dist/laravel/pagination/index.js +2 -0
- package/dist/laravel/requests/JsonBaseRequest.d.ts +14 -0
- package/dist/laravel/requests/JsonBaseRequest.js +15 -0
- package/dist/laravel/requests/PaginationJsonBaseRequest.d.ts +8 -0
- package/dist/laravel/requests/PaginationJsonBaseRequest.js +13 -0
- package/dist/laravel/requests/index.d.ts +7 -0
- package/dist/laravel/requests/index.js +5 -0
- package/dist/laravel/requests/responses/JsonResponse.d.ts +5 -0
- package/dist/laravel/requests/responses/JsonResponse.js +6 -0
- package/dist/laravel/requests/responses/PaginationResponse.d.ts +7 -0
- package/dist/laravel/requests/responses/PaginationResponse.js +9 -0
- package/dist/pagination/BasePaginator.d.ts +19 -0
- package/dist/pagination/BasePaginator.js +65 -0
- package/dist/pagination/InfiniteScroller.d.ts +6 -0
- package/dist/pagination/InfiniteScroller.js +17 -0
- package/dist/pagination/PageAwarePaginator.d.ts +32 -0
- package/dist/pagination/PageAwarePaginator.js +86 -0
- package/dist/pagination/StatePaginator.d.ts +25 -0
- package/dist/pagination/StatePaginator.js +55 -0
- package/dist/pagination/contracts/BaseViewDriverContract.d.ts +6 -0
- package/dist/pagination/contracts/BaseViewDriverContract.js +1 -0
- package/{src/pagination/contracts/BaseViewDriverFactoryContract.ts → dist/pagination/contracts/BaseViewDriverFactoryContract.d.ts} +2 -3
- package/dist/pagination/contracts/BaseViewDriverFactoryContract.js +1 -0
- package/dist/pagination/contracts/PaginateableRequestContract.d.ts +4 -0
- package/dist/pagination/contracts/PaginateableRequestContract.js +1 -0
- package/dist/pagination/contracts/PaginationDataDriverContract.d.ts +4 -0
- package/dist/pagination/contracts/PaginationDataDriverContract.js +1 -0
- package/{src/pagination/contracts/PaginationResponseContract.ts → dist/pagination/contracts/PaginationResponseContract.d.ts} +3 -5
- package/dist/pagination/contracts/PaginationResponseContract.js +1 -0
- package/{src/pagination/contracts/PaginatorLoadDataOptions.ts → dist/pagination/contracts/PaginatorLoadDataOptions.d.ts} +2 -2
- package/dist/pagination/contracts/PaginatorLoadDataOptions.js +1 -0
- package/{src/pagination/contracts/StatePaginationDataDriverContract.ts → dist/pagination/contracts/StatePaginationDataDriverContract.d.ts} +2 -3
- package/dist/pagination/contracts/StatePaginationDataDriverContract.js +1 -0
- package/dist/pagination/contracts/ViewDriverContract.d.ts +9 -0
- package/dist/pagination/contracts/ViewDriverContract.js +1 -0
- package/dist/pagination/contracts/ViewDriverFactoryContract.d.ts +4 -0
- package/dist/pagination/contracts/ViewDriverFactoryContract.js +1 -0
- package/dist/pagination/dataDrivers/ArrayDriver.d.ts +9 -0
- package/dist/pagination/dataDrivers/ArrayDriver.js +20 -0
- package/dist/pagination/dtos/PaginationDataDto.d.ts +7 -0
- package/dist/pagination/dtos/PaginationDataDto.js +12 -0
- package/dist/pagination/dtos/StatePaginationDataDto.d.ts +7 -0
- package/dist/pagination/dtos/StatePaginationDataDto.js +13 -0
- package/dist/pagination/factories/VueBaseViewDriverFactory.d.ts +5 -0
- package/dist/pagination/factories/VueBaseViewDriverFactory.js +6 -0
- package/dist/pagination/factories/VuePaginationDriverFactory.d.ts +5 -0
- package/dist/pagination/factories/VuePaginationDriverFactory.js +6 -0
- package/dist/pagination/frontendDrivers/VueBaseViewDriver.d.ts +11 -0
- package/dist/pagination/frontendDrivers/VueBaseViewDriver.js +19 -0
- package/dist/pagination/frontendDrivers/VuePaginationDriver.d.ts +21 -0
- package/dist/pagination/frontendDrivers/VuePaginationDriver.js +41 -0
- package/dist/pagination/index.d.ts +22 -0
- package/dist/pagination/index.js +13 -0
- package/dist/persistenceDrivers/LocalStorageDriver.d.ts +9 -0
- package/dist/persistenceDrivers/LocalStorageDriver.js +18 -0
- package/dist/persistenceDrivers/NonPersistentDriver.d.ts +7 -0
- package/dist/persistenceDrivers/NonPersistentDriver.js +8 -0
- package/dist/persistenceDrivers/SessionStorageDriver.d.ts +9 -0
- package/dist/persistenceDrivers/SessionStorageDriver.js +18 -0
- package/dist/persistenceDrivers/index.d.ts +6 -0
- package/dist/persistenceDrivers/index.js +4 -0
- package/dist/persistenceDrivers/types/PersistenceDriver.d.ts +5 -0
- package/dist/persistenceDrivers/types/PersistenceDriver.js +1 -0
- package/dist/requests/BaseRequest.d.ts +62 -0
- package/dist/requests/BaseRequest.js +224 -0
- package/dist/requests/ErrorHandler.d.ts +11 -0
- package/dist/requests/ErrorHandler.js +127 -0
- package/dist/requests/RequestConcurrencyMode.enum.d.ts +6 -0
- package/dist/requests/RequestConcurrencyMode.enum.js +7 -0
- package/dist/requests/RequestErrorRouter.d.ts +38 -0
- package/dist/requests/RequestErrorRouter.js +38 -0
- package/dist/requests/RequestEvents.enum.d.ts +4 -0
- package/dist/requests/RequestEvents.enum.js +5 -0
- package/dist/requests/RequestMethod.enum.d.ts +8 -0
- package/dist/requests/RequestMethod.enum.js +9 -0
- package/dist/requests/bodies/BinaryBody.d.ts +10 -0
- package/dist/requests/bodies/BinaryBody.js +22 -0
- package/dist/requests/bodies/FormDataBody.d.ts +14 -0
- package/dist/requests/bodies/FormDataBody.js +60 -0
- package/dist/requests/bodies/JsonBody.d.ts +8 -0
- package/dist/requests/bodies/JsonBody.js +13 -0
- package/{src/requests/contracts/AbortableRequestContract.ts → dist/requests/contracts/AbortableRequestContract.d.ts} +1 -1
- package/dist/requests/contracts/AbortableRequestContract.js +1 -0
- package/dist/requests/contracts/BaseRequestContract.d.ts +23 -0
- package/dist/requests/contracts/BaseRequestContract.js +1 -0
- package/dist/requests/contracts/BodyContract.d.ts +6 -0
- package/dist/requests/contracts/BodyContract.js +1 -0
- package/dist/requests/contracts/BodyFactoryContract.d.ts +4 -0
- package/dist/requests/contracts/BodyFactoryContract.js +1 -0
- package/dist/requests/contracts/DriverConfigContract.d.ts +8 -0
- package/dist/requests/contracts/DriverConfigContract.js +1 -0
- package/dist/requests/contracts/HeadersContract.d.ts +7 -0
- package/dist/requests/contracts/HeadersContract.js +1 -0
- package/dist/requests/contracts/RequestDriverContract.d.ts +8 -0
- package/dist/requests/contracts/RequestDriverContract.js +1 -0
- package/dist/requests/contracts/RequestLoaderContract.d.ts +4 -0
- package/dist/requests/contracts/RequestLoaderContract.js +1 -0
- package/{src/requests/contracts/RequestLoaderFactoryContract.ts → dist/requests/contracts/RequestLoaderFactoryContract.d.ts} +2 -3
- package/dist/requests/contracts/RequestLoaderFactoryContract.js +1 -0
- package/dist/requests/contracts/ResponseContract.d.ts +5 -0
- package/dist/requests/contracts/ResponseContract.js +1 -0
- package/dist/requests/drivers/contracts/ResponseHandlerContract.d.ts +9 -0
- package/dist/requests/drivers/contracts/ResponseHandlerContract.js +1 -0
- package/dist/requests/drivers/fetch/FetchDriver.d.ts +26 -0
- package/dist/requests/drivers/fetch/FetchDriver.js +73 -0
- package/dist/requests/drivers/fetch/FetchResponse.d.ts +12 -0
- package/dist/requests/drivers/fetch/FetchResponse.js +38 -0
- package/dist/requests/drivers/xhr/XMLHttpRequestDriver.d.ts +13 -0
- package/dist/requests/drivers/xhr/XMLHttpRequestDriver.js +107 -0
- package/dist/requests/drivers/xhr/XMLHttpRequestResponse.d.ts +17 -0
- package/dist/requests/drivers/xhr/XMLHttpRequestResponse.js +84 -0
- package/dist/requests/exceptions/BadGatewayException.d.ts +3 -0
- package/dist/requests/exceptions/BadGatewayException.js +3 -0
- package/dist/requests/exceptions/BadRequestException.d.ts +3 -0
- package/dist/requests/exceptions/BadRequestException.js +3 -0
- package/dist/requests/exceptions/ConflictException.d.ts +3 -0
- package/dist/requests/exceptions/ConflictException.js +3 -0
- package/dist/requests/exceptions/ForbiddenException.d.ts +3 -0
- package/dist/requests/exceptions/ForbiddenException.js +3 -0
- package/dist/requests/exceptions/GatewayTimeoutException.d.ts +3 -0
- package/dist/requests/exceptions/GatewayTimeoutException.js +3 -0
- package/dist/requests/exceptions/GoneException.d.ts +3 -0
- package/dist/requests/exceptions/GoneException.js +3 -0
- package/dist/requests/exceptions/InvalidJsonException.d.ts +7 -0
- package/dist/requests/exceptions/InvalidJsonException.js +10 -0
- package/dist/requests/exceptions/LockedException.d.ts +3 -0
- package/dist/requests/exceptions/LockedException.js +3 -0
- package/dist/requests/exceptions/MethodNotAllowedException.d.ts +3 -0
- package/dist/requests/exceptions/MethodNotAllowedException.js +3 -0
- package/dist/requests/exceptions/NoResponseReceivedException.d.ts +3 -0
- package/{src/requests/exceptions/NoResponseReceivedException.ts → dist/requests/exceptions/NoResponseReceivedException.js} +3 -3
- package/dist/requests/exceptions/NotFoundException.d.ts +3 -0
- package/dist/requests/exceptions/NotFoundException.js +3 -0
- package/dist/requests/exceptions/NotImplementedException.d.ts +3 -0
- package/dist/requests/exceptions/NotImplementedException.js +3 -0
- package/dist/requests/exceptions/PageExpiredException.d.ts +3 -0
- package/dist/requests/exceptions/PageExpiredException.js +3 -0
- package/dist/requests/exceptions/PayloadTooLargeException.d.ts +3 -0
- package/dist/requests/exceptions/PayloadTooLargeException.js +3 -0
- package/dist/requests/exceptions/PreconditionFailedException.d.ts +3 -0
- package/dist/requests/exceptions/PreconditionFailedException.js +3 -0
- package/dist/requests/exceptions/RequestTimeoutException.d.ts +3 -0
- package/dist/requests/exceptions/RequestTimeoutException.js +3 -0
- package/dist/requests/exceptions/ResponseBodyException.d.ts +7 -0
- package/dist/requests/exceptions/ResponseBodyException.js +10 -0
- package/dist/requests/exceptions/ResponseException.d.ts +6 -0
- package/dist/requests/exceptions/ResponseException.js +9 -0
- package/dist/requests/exceptions/ServerErrorException.d.ts +3 -0
- package/dist/requests/exceptions/ServerErrorException.js +3 -0
- package/dist/requests/exceptions/ServiceUnavailableException.d.ts +3 -0
- package/dist/requests/exceptions/ServiceUnavailableException.js +3 -0
- package/dist/requests/exceptions/StaleResponseException.d.ts +5 -0
- package/dist/requests/exceptions/StaleResponseException.js +10 -0
- package/dist/requests/exceptions/TooManyRequestsException.d.ts +3 -0
- package/dist/requests/exceptions/TooManyRequestsException.js +3 -0
- package/dist/requests/exceptions/UnauthorizedException.d.ts +3 -0
- package/dist/requests/exceptions/UnauthorizedException.js +3 -0
- package/dist/requests/exceptions/UnsupportedMediaTypeException.d.ts +3 -0
- package/dist/requests/exceptions/UnsupportedMediaTypeException.js +3 -0
- package/dist/requests/exceptions/ValidationException.d.ts +3 -0
- package/dist/requests/exceptions/ValidationException.js +3 -0
- package/dist/requests/exceptions/index.d.ts +25 -0
- package/dist/requests/exceptions/index.js +25 -0
- package/dist/requests/factories/BinaryBodyFactory.d.ts +8 -0
- package/dist/requests/factories/BinaryBodyFactory.js +9 -0
- package/dist/requests/factories/FormDataFactory.d.ts +12 -0
- package/dist/requests/factories/FormDataFactory.js +6 -0
- package/dist/requests/factories/JsonBodyFactory.d.ts +5 -0
- package/dist/requests/factories/JsonBodyFactory.js +6 -0
- package/dist/requests/index.d.ts +31 -0
- package/dist/requests/index.js +19 -0
- package/dist/requests/responses/BaseResponse.d.ts +14 -0
- package/dist/requests/responses/BaseResponse.js +36 -0
- package/dist/requests/responses/BlobResponse.d.ts +7 -0
- package/dist/requests/responses/BlobResponse.js +16 -0
- package/dist/requests/responses/JsonResponse.d.ts +5 -0
- package/dist/requests/responses/JsonResponse.js +12 -0
- package/dist/requests/responses/PlainTextResponse.d.ts +5 -0
- package/dist/requests/responses/PlainTextResponse.js +12 -0
- package/{src/requests/types/RequestConcurrencyOptions.ts → dist/requests/types/RequestConcurrencyOptions.d.ts} +4 -5
- package/dist/requests/types/RequestConcurrencyOptions.js +1 -0
- package/dist/requests/types/RequestUploadProgress.d.ts +6 -0
- package/dist/requests/types/RequestUploadProgress.js +1 -0
- package/dist/support/DeferredPromise.d.ts +37 -0
- package/dist/support/DeferredPromise.js +55 -0
- package/dist/support/helpers.d.ts +5 -0
- package/dist/support/helpers.js +69 -0
- package/{src/support/index.ts → dist/support/index.d.ts} +3 -4
- package/dist/support/index.js +3 -0
- package/dist/vue/composables/useConfirmDialog.d.ts +20 -0
- package/dist/vue/composables/useConfirmDialog.js +52 -0
- package/dist/vue/composables/useGlobalCheckbox.d.ts +13 -0
- package/dist/vue/composables/useGlobalCheckbox.js +123 -0
- package/dist/vue/composables/useIsEmpty.d.ts +4 -0
- package/dist/vue/composables/useIsEmpty.js +27 -0
- package/dist/vue/composables/useIsOpen.d.ts +5 -0
- package/dist/vue/composables/useIsOpen.js +25 -0
- package/dist/vue/composables/useIsOpenFromVar.d.ts +6 -0
- package/dist/vue/composables/useIsOpenFromVar.js +45 -0
- package/dist/vue/composables/useModelWrapper.d.ts +9 -0
- package/dist/vue/composables/useModelWrapper.js +18 -0
- package/dist/vue/composables/useOnOpen.d.ts +7 -0
- package/dist/vue/composables/useOnOpen.js +25 -0
- package/{src/vue/contracts/ModelValueOptions.ts → dist/vue/contracts/ModelValueOptions.d.ts} +1 -1
- package/dist/vue/contracts/ModelValueOptions.js +1 -0
- package/dist/vue/contracts/ModelValueProps.d.ts +3 -0
- package/dist/vue/contracts/ModelValueProps.js +1 -0
- package/dist/vue/forms/BaseForm.d.ts +162 -0
- package/dist/vue/forms/BaseForm.js +997 -0
- package/dist/vue/forms/PropertyAwareArray.d.ts +53 -0
- package/dist/vue/forms/PropertyAwareArray.js +54 -0
- package/{src/vue/forms/index.ts → dist/vue/forms/index.d.ts} +9 -11
- package/dist/vue/forms/index.js +6 -0
- package/dist/vue/forms/types/PersistedForm.d.ts +6 -0
- package/dist/vue/forms/types/PersistedForm.js +1 -0
- package/dist/vue/forms/validation/ValidationMode.enum.d.ts +11 -0
- package/dist/vue/forms/validation/ValidationMode.enum.js +14 -0
- package/dist/vue/forms/validation/index.d.ts +12 -0
- package/dist/vue/forms/validation/index.js +9 -0
- package/dist/vue/forms/validation/rules/BaseRule.d.ts +5 -0
- package/dist/vue/forms/validation/rules/BaseRule.js +5 -0
- package/dist/vue/forms/validation/rules/ConfirmedRule.d.ts +10 -0
- package/dist/vue/forms/validation/rules/ConfirmedRule.js +26 -0
- package/dist/vue/forms/validation/rules/EmailRule.d.ts +7 -0
- package/dist/vue/forms/validation/rules/EmailRule.js +19 -0
- package/dist/vue/forms/validation/rules/JsonRule.d.ts +7 -0
- package/dist/vue/forms/validation/rules/JsonRule.js +25 -0
- package/dist/vue/forms/validation/rules/MinRule.d.ts +26 -0
- package/dist/vue/forms/validation/rules/MinRule.js +52 -0
- package/dist/vue/forms/validation/rules/RequiredRule.d.ts +7 -0
- package/dist/vue/forms/validation/rules/RequiredRule.js +16 -0
- package/dist/vue/forms/validation/rules/UrlRule.d.ts +7 -0
- package/dist/vue/forms/validation/rules/UrlRule.js +22 -0
- package/{src/vue/forms/validation/types/BidirectionalRule.ts → dist/vue/forms/validation/types/BidirectionalRule.d.ts} +4 -4
- package/dist/vue/forms/validation/types/BidirectionalRule.js +1 -0
- package/dist/vue/forms/validation/types/ValidationRules.d.ts +11 -0
- package/dist/vue/forms/validation/types/ValidationRules.js +1 -0
- package/dist/vue/index.d.ts +11 -0
- package/dist/vue/index.js +10 -0
- package/dist/vue/requests/factories/VueRequestLoaderFactory.d.ts +6 -0
- package/dist/vue/requests/factories/VueRequestLoaderFactory.js +6 -0
- package/{src/vue/requests/index.ts → dist/vue/requests/index.d.ts} +4 -5
- package/dist/vue/requests/index.js +4 -0
- package/dist/vue/requests/loaders/VueRequestBatchLoader.d.ts +12 -0
- package/dist/vue/requests/loaders/VueRequestBatchLoader.js +29 -0
- package/dist/vue/requests/loaders/VueRequestLoader.d.ts +8 -0
- package/dist/vue/requests/loaders/VueRequestLoader.js +12 -0
- package/dist/vue/router/routeResourceBinding/RouteResourceBoundView.d.ts +57 -0
- package/dist/vue/router/routeResourceBinding/RouteResourceBoundView.js +135 -0
- package/dist/vue/router/routeResourceBinding/RouteResourceRequestResolver.d.ts +6 -0
- package/dist/vue/router/routeResourceBinding/RouteResourceRequestResolver.js +20 -0
- package/dist/vue/router/routeResourceBinding/defineRoute.d.ts +23 -0
- package/dist/vue/router/routeResourceBinding/defineRoute.js +42 -0
- package/dist/vue/router/routeResourceBinding/index.d.ts +8 -0
- package/dist/vue/router/routeResourceBinding/index.js +6 -0
- package/dist/vue/router/routeResourceBinding/installRouteInjection.d.ts +14 -0
- package/dist/vue/router/routeResourceBinding/installRouteInjection.js +133 -0
- package/dist/vue/router/routeResourceBinding/types.d.ts +55 -0
- package/dist/vue/router/routeResourceBinding/types.js +1 -0
- package/dist/vue/router/routeResourceBinding/useRouteResource.d.ts +8 -0
- package/dist/vue/router/routeResourceBinding/useRouteResource.js +29 -0
- package/dist/vue/state/State.d.ts +75 -0
- package/dist/vue/state/State.js +267 -0
- package/dist/vue/state/index.d.ts +2 -0
- package/dist/vue/state/index.js +2 -0
- package/package.json +81 -23
- package/.editorconfig +0 -508
- package/.eslintrc.cjs +0 -15
- package/.prettierrc.json +0 -8
- package/CHANGELOG.md +0 -213
- package/docker-compose.yaml +0 -8
- package/docs/.vitepress/config.ts +0 -124
- package/docs/index.md +0 -13
- package/docs/laravel/pagination.md +0 -67
- package/docs/laravel/requests.md +0 -62
- package/docs/services/pagination/index.md +0 -46
- package/docs/services/pagination/infinite-scroller.md +0 -20
- package/docs/services/pagination/page-aware.md +0 -51
- package/docs/services/pagination/state-pagination.md +0 -77
- package/docs/services/pagination/updating-rows.md +0 -52
- package/docs/services/persistence/index.md +0 -46
- package/docs/services/requests/abort-requests.md +0 -29
- package/docs/services/requests/bulk-requests.md +0 -70
- package/docs/services/requests/concurrency.md +0 -58
- package/docs/services/requests/drivers.md +0 -115
- package/docs/services/requests/error-handling.md +0 -153
- package/docs/services/requests/events.md +0 -53
- package/docs/services/requests/file-uploads.md +0 -105
- package/docs/services/requests/getting-started.md +0 -201
- package/docs/services/requests/headers.md +0 -40
- package/docs/services/requests/loading.md +0 -63
- package/docs/services/requests/request-bodies.md +0 -61
- package/docs/services/requests/responses.md +0 -34
- package/docs/services/support/deferred-promise.md +0 -63
- package/docs/services/support/helpers.md +0 -77
- package/docs/services/support/index.md +0 -6
- package/docs/upgrading/v1-to-v2.md +0 -64
- package/docs/upgrading/v2-to-v3.md +0 -52
- package/docs/upgrading/v3-to-v4.md +0 -214
- package/docs/upgrading.md +0 -0
- package/docs/vue/composables/use-confirm-dialog.md +0 -96
- package/docs/vue/composables/use-global-checkbox.md +0 -73
- package/docs/vue/composables/use-is-empty.md +0 -26
- package/docs/vue/composables/use-is-open-from-var.md +0 -32
- package/docs/vue/composables/use-is-open.md +0 -28
- package/docs/vue/composables/use-model-wrapper.md +0 -29
- package/docs/vue/composables/use-on-open.md +0 -26
- package/docs/vue/forms/arrays.md +0 -102
- package/docs/vue/forms/errors.md +0 -52
- package/docs/vue/forms/index.md +0 -99
- package/docs/vue/forms/payloads.md +0 -99
- package/docs/vue/forms/persistence.md +0 -19
- package/docs/vue/forms/state-and-properties.md +0 -26
- package/docs/vue/forms/utilities.md +0 -27
- package/docs/vue/forms/validation.md +0 -189
- package/docs/vue/requests/loading.md +0 -51
- package/docs/vue/router/route-resource-binding.md +0 -240
- package/docs/vue/state.md +0 -309
- package/env.d.ts +0 -1
- package/eslint.config.js +0 -15
- package/release-tool.json +0 -26
- package/src/bulkRequests/BulkRequestEvent.enum.ts +0 -4
- package/src/bulkRequests/BulkRequestSender.ts +0 -196
- package/src/bulkRequests/BulkRequestWrapper.ts +0 -49
- package/src/bulkRequests/index.ts +0 -6
- package/src/laravel/pagination/dataDrivers/RequestDriver.ts +0 -30
- package/src/laravel/pagination/index.ts +0 -6
- package/src/laravel/requests/JsonBaseRequest.ts +0 -35
- package/src/laravel/requests/PaginationJsonBaseRequest.ts +0 -29
- package/src/laravel/requests/index.ts +0 -9
- package/src/laravel/requests/responses/JsonResponse.ts +0 -8
- package/src/laravel/requests/responses/PaginationResponse.ts +0 -16
- package/src/pagination/BasePaginator.ts +0 -94
- package/src/pagination/InfiniteScroller.ts +0 -22
- package/src/pagination/PageAwarePaginator.ts +0 -132
- package/src/pagination/StatePaginator.ts +0 -86
- package/src/pagination/contracts/BaseViewDriverContract.ts +0 -6
- package/src/pagination/contracts/PaginateableRequestContract.ts +0 -13
- package/src/pagination/contracts/PaginationDataDriverContract.ts +0 -5
- package/src/pagination/contracts/ViewDriverContract.ts +0 -10
- package/src/pagination/contracts/ViewDriverFactoryContract.ts +0 -5
- package/src/pagination/dataDrivers/ArrayDriver.ts +0 -28
- package/src/pagination/dtos/PaginationDataDto.ts +0 -14
- package/src/pagination/dtos/StatePaginationDataDto.ts +0 -19
- package/src/pagination/factories/VueBaseViewDriverFactory.ts +0 -9
- package/src/pagination/factories/VuePaginationDriverFactory.ts +0 -9
- package/src/pagination/frontendDrivers/VueBaseViewDriver.ts +0 -28
- package/src/pagination/frontendDrivers/VuePaginationDriver.ts +0 -61
- package/src/pagination/index.ts +0 -46
- package/src/persistenceDrivers/LocalStorageDriver.ts +0 -22
- package/src/persistenceDrivers/NonPersistentDriver.ts +0 -12
- package/src/persistenceDrivers/SessionStorageDriver.ts +0 -22
- package/src/persistenceDrivers/index.ts +0 -8
- package/src/persistenceDrivers/types/PersistenceDriver.ts +0 -5
- package/src/requests/BaseRequest.ts +0 -321
- package/src/requests/ErrorHandler.ts +0 -144
- package/src/requests/RequestConcurrencyMode.enum.ts +0 -6
- package/src/requests/RequestErrorRouter.ts +0 -89
- package/src/requests/RequestEvents.enum.ts +0 -4
- package/src/requests/RequestMethod.enum.ts +0 -8
- package/src/requests/bodies/FormDataBody.ts +0 -81
- package/src/requests/bodies/JsonBody.ts +0 -16
- package/src/requests/contracts/BaseRequestContract.ts +0 -39
- package/src/requests/contracts/BodyContract.ts +0 -7
- package/src/requests/contracts/BodyFactoryContract.ts +0 -5
- package/src/requests/contracts/DriverConfigContract.ts +0 -9
- package/src/requests/contracts/HeadersContract.ts +0 -5
- package/src/requests/contracts/RequestDriverContract.ts +0 -15
- package/src/requests/contracts/RequestLoaderContract.ts +0 -5
- package/src/requests/contracts/ResponseContract.ts +0 -7
- package/src/requests/drivers/contracts/ResponseHandlerContract.ts +0 -10
- package/src/requests/drivers/fetch/FetchDriver.ts +0 -115
- package/src/requests/drivers/fetch/FetchResponse.ts +0 -30
- package/src/requests/drivers/xhr/XMLHttpRequestDriver.ts +0 -138
- package/src/requests/drivers/xhr/XMLHttpRequestResponse.ts +0 -95
- package/src/requests/exceptions/BadGatewayException.ts +0 -3
- package/src/requests/exceptions/BadRequestException.ts +0 -3
- package/src/requests/exceptions/ConflictException.ts +0 -3
- package/src/requests/exceptions/ForbiddenException.ts +0 -3
- package/src/requests/exceptions/GatewayTimeoutException.ts +0 -3
- package/src/requests/exceptions/GoneException.ts +0 -3
- package/src/requests/exceptions/InvalidJsonException.ts +0 -15
- package/src/requests/exceptions/LockedException.ts +0 -3
- package/src/requests/exceptions/MethodNotAllowedException.ts +0 -3
- package/src/requests/exceptions/NotFoundException.ts +0 -3
- package/src/requests/exceptions/NotImplementedException.ts +0 -3
- package/src/requests/exceptions/PageExpiredException.ts +0 -3
- package/src/requests/exceptions/PayloadTooLargeException.ts +0 -3
- package/src/requests/exceptions/PreconditionFailedException.ts +0 -3
- package/src/requests/exceptions/RequestTimeoutException.ts +0 -3
- package/src/requests/exceptions/ResponseBodyException.ts +0 -15
- package/src/requests/exceptions/ResponseException.ts +0 -11
- package/src/requests/exceptions/ServerErrorException.ts +0 -3
- package/src/requests/exceptions/ServiceUnavailableException.ts +0 -3
- package/src/requests/exceptions/StaleResponseException.ts +0 -13
- package/src/requests/exceptions/TooManyRequestsException.ts +0 -3
- package/src/requests/exceptions/UnauthorizedException.ts +0 -3
- package/src/requests/exceptions/UnsupportedMediaTypeException.ts +0 -3
- package/src/requests/exceptions/ValidationException.ts +0 -3
- package/src/requests/exceptions/index.ts +0 -51
- package/src/requests/factories/FormDataFactory.ts +0 -17
- package/src/requests/factories/JsonBodyFactory.ts +0 -9
- package/src/requests/index.ts +0 -61
- package/src/requests/responses/BaseResponse.ts +0 -41
- package/src/requests/responses/BlobResponse.ts +0 -19
- package/src/requests/responses/JsonResponse.ts +0 -15
- package/src/requests/responses/PlainTextResponse.ts +0 -15
- package/src/requests/types/RequestUploadProgress.ts +0 -6
- package/src/support/DeferredPromise.ts +0 -67
- package/src/support/helpers.ts +0 -78
- package/src/vue/composables/useConfirmDialog.ts +0 -63
- package/src/vue/composables/useGlobalCheckbox.ts +0 -145
- package/src/vue/composables/useIsEmpty.ts +0 -34
- package/src/vue/composables/useIsOpen.ts +0 -37
- package/src/vue/composables/useIsOpenFromVar.ts +0 -61
- package/src/vue/composables/useModelWrapper.ts +0 -27
- package/src/vue/composables/useOnOpen.ts +0 -34
- package/src/vue/contracts/ModelValueProps.ts +0 -3
- package/src/vue/forms/BaseForm.ts +0 -1192
- package/src/vue/forms/PropertyAwareArray.ts +0 -81
- package/src/vue/forms/types/PersistedForm.ts +0 -6
- package/src/vue/forms/validation/ValidationMode.enum.ts +0 -14
- package/src/vue/forms/validation/index.ts +0 -15
- package/src/vue/forms/validation/rules/BaseRule.ts +0 -7
- package/src/vue/forms/validation/rules/ConfirmedRule.ts +0 -39
- package/src/vue/forms/validation/rules/EmailRule.ts +0 -23
- package/src/vue/forms/validation/rules/JsonRule.ts +0 -28
- package/src/vue/forms/validation/rules/MinRule.ts +0 -61
- package/src/vue/forms/validation/rules/RequiredRule.ts +0 -19
- package/src/vue/forms/validation/rules/UrlRule.ts +0 -24
- package/src/vue/forms/validation/types/ValidationRules.ts +0 -15
- package/src/vue/index.ts +0 -14
- package/src/vue/requests/factories/VueRequestLoaderFactory.ts +0 -10
- package/src/vue/requests/loaders/VueRequestBatchLoader.ts +0 -35
- package/src/vue/requests/loaders/VueRequestLoader.ts +0 -18
- package/src/vue/router/routeResourceBinding/RouteResourceBoundView.ts +0 -145
- package/src/vue/router/routeResourceBinding/RouteResourceRequestResolver.ts +0 -11
- package/src/vue/router/routeResourceBinding/defineRoute.ts +0 -59
- package/src/vue/router/routeResourceBinding/index.ts +0 -11
- package/src/vue/router/routeResourceBinding/installRouteInjection.ts +0 -164
- package/src/vue/router/routeResourceBinding/types.ts +0 -53
- package/src/vue/router/routeResourceBinding/useRouteResource.ts +0 -24
- package/src/vue/state/State.ts +0 -380
- package/src/vue/state/index.ts +0 -3
- package/tests/service/bulkRequests/BulkRequestSender.test.ts +0 -76
- package/tests/service/bulkRequests/BulkRequestWrapper.test.ts +0 -51
- package/tests/service/helpers/mergeDeep.test.ts +0 -53
- package/tests/service/laravel/pagination/dataDrivers/RequestDriver.test.ts +0 -84
- package/tests/service/laravel/requests/JsonBaseRequest.test.ts +0 -43
- package/tests/service/laravel/requests/PaginationJsonBaseRequest.test.ts +0 -58
- package/tests/service/laravel/requests/responses/JsonResponse.test.ts +0 -59
- package/tests/service/laravel/requests/responses/PaginationResponse.test.ts +0 -127
- package/tests/service/pagination/BasePaginator.test.ts +0 -100
- package/tests/service/pagination/InfiniteScroller.test.ts +0 -101
- package/tests/service/pagination/PageAwarePaginator.test.ts +0 -133
- package/tests/service/pagination/StatePaginator.test.ts +0 -76
- package/tests/service/pagination/VueViewDrivers.test.ts +0 -46
- package/tests/service/pagination/dtos/PaginationDataDto.test.ts +0 -35
- package/tests/service/pagination/dtos/StatePaginationDataDto.test.ts +0 -14
- package/tests/service/pagination/factories/VuePaginationDriverFactory.test.ts +0 -32
- package/tests/service/pagination/frontendDrivers/VuePaginationDriver.test.ts +0 -66
- package/tests/service/persistenceDrivers/PersistenceDrivers.test.ts +0 -56
- package/tests/service/requests/BaseRequest.test.ts +0 -250
- package/tests/service/requests/BodiesAndFactories.test.ts +0 -28
- package/tests/service/requests/Enums.test.ts +0 -20
- package/tests/service/requests/ErrorHandler.test.ts +0 -188
- package/tests/service/requests/FormDataBody.test.ts +0 -63
- package/tests/service/requests/RequestErrorRouter.test.ts +0 -44
- package/tests/service/requests/Responses.test.ts +0 -83
- package/tests/service/requests/exceptions/Exceptions.test.ts +0 -43
- package/tests/service/requests/fetch/FetchDriver.test.ts +0 -76
- package/tests/service/requests/fetch/FetchResponse.test.ts +0 -21
- package/tests/service/requests/xhr/XMLHttpRequestDriver.test.ts +0 -178
- package/tests/service/support/DeferredPromise.test.ts +0 -40
- package/tests/service/support/helpers.test.ts +0 -37
- package/tests/vue/composables/useConfirmDialog.test.ts +0 -77
- package/tests/vue/composables/useGlobalCheckbox.test.ts +0 -126
- package/tests/vue/composables/useIsEmpty.test.ts +0 -18
- package/tests/vue/composables/useIsOpen.test.ts +0 -25
- package/tests/vue/composables/useIsOpenFromVar.test.ts +0 -22
- package/tests/vue/composables/useModelWrapper.test.ts +0 -30
- package/tests/vue/composables/useOnOpen.test.ts +0 -26
- package/tests/vue/forms/BaseForm.behavior.test.ts +0 -98
- package/tests/vue/forms/BaseForm.transformers.test.ts +0 -109
- package/tests/vue/forms/PropertyAwareArray.test.ts +0 -30
- package/tests/vue/forms/validation/ValidationRules.test.ts +0 -79
- package/tests/vue/requests/VueRequestLoaders.test.ts +0 -48
- package/tests/vue/router/routeResourceBinding/RouteResourceBoundView.test.ts +0 -344
- package/tests/vue/router/routeResourceBinding/RouteResourceUtils.test.ts +0 -70
- package/tests/vue/router/routeResourceBinding/installRouteInjection.test.ts +0 -450
- package/tests/vue/state/State.test.ts +0 -151
- package/tsconfig.json +0 -114
- package/vite.config.ts +0 -34
- package/vitest.config.ts +0 -23
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
# Getting Started
|
|
2
|
-
|
|
3
|
-
Each API endpoint is represented as a separate class that extends `BaseRequest`. This class specifies the HTTP Method,
|
|
4
|
-
URL, and the expected request/response types.
|
|
5
|
-
|
|
6
|
-
## Request Handling
|
|
7
|
-
|
|
8
|
-
The library leverages a fetch-based driver to perform HTTP requests. The following sections explain how to initialize
|
|
9
|
-
the request driver and define custom requests.
|
|
10
|
-
|
|
11
|
-
## Initializing the Request Driver
|
|
12
|
-
|
|
13
|
-
Before making any requests, you must initialize the appropriate request driver. This is done during your application's
|
|
14
|
-
boot process by using the static `setRequestDriver` method.
|
|
15
|
-
|
|
16
|
-
### Using the Fetch Driver
|
|
17
|
-
|
|
18
|
-
To set up the fetch driver, import `BaseRequest` and `FetchDriver` from '@blueprint-ts/core/requests' and initialize
|
|
19
|
-
the driver as shown:
|
|
20
|
-
|
|
21
|
-
```typescript
|
|
22
|
-
import { BaseRequest, FetchDriver } from '@blueprint-ts/core/requests'
|
|
23
|
-
|
|
24
|
-
BaseRequest.setRequestDriver(new FetchDriver())
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
### Enabling Credential Support
|
|
28
|
-
|
|
29
|
-
If your requests need to include credentials (e.g., cookies for cross-origin requests), enable credential support as
|
|
30
|
-
follows:
|
|
31
|
-
|
|
32
|
-
```typescript
|
|
33
|
-
BaseRequest.setRequestDriver(new FetchDriver({
|
|
34
|
-
corsWithCredentials: true,
|
|
35
|
-
}))
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
### Adding Global Headers
|
|
39
|
-
|
|
40
|
-
To include headers such as a CSRF token with every request, define them globally:
|
|
41
|
-
|
|
42
|
-
```typescript
|
|
43
|
-
BaseRequest.setRequestDriver(new FetchDriver({
|
|
44
|
-
headers: {
|
|
45
|
-
'X-XSRF-TOKEN': "<token>",
|
|
46
|
-
},
|
|
47
|
-
}))
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
Sometimes you want to refetch the header when the request is sent. You may specify a callback for this:
|
|
51
|
-
|
|
52
|
-
```typescript
|
|
53
|
-
BaseRequest.setRequestDriver(new FetchDriver({
|
|
54
|
-
headers: {
|
|
55
|
-
'X-XSRF-TOKEN': () => getCookie('XSRF-TOKEN')
|
|
56
|
-
},
|
|
57
|
-
}))
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### Specifying a Base URL
|
|
61
|
-
|
|
62
|
-
In case your backend lives on a separate domain, you may specify a default base url, which is prepended to every request url:
|
|
63
|
-
|
|
64
|
-
```typescript
|
|
65
|
-
BaseRequest.setDefaultBaseUrl('https://example.com')
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
## Example: Expense Index Request
|
|
69
|
-
|
|
70
|
-
The following example demonstrates how to define a GET request to the `/api/v1/expenses` endpoint:
|
|
71
|
-
|
|
72
|
-
```typescript
|
|
73
|
-
import { BaseRequest, RequestMethodEnum, JsonResponse } from '@blueprint-ts/core/requests'
|
|
74
|
-
|
|
75
|
-
export interface GenericResponseErrorInterface {
|
|
76
|
-
message: string
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export interface ExpenseIndexRequestParams {
|
|
80
|
-
filter?: {
|
|
81
|
-
search_text?: string
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
export interface ExpenseResource {
|
|
86
|
-
id: string;
|
|
87
|
-
// other data fields
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
export interface ExpenseIndexRequestResponseBody {
|
|
91
|
-
data: ExpenseResource[]
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
export class ExpenseIndexRequest extends BaseRequest<
|
|
95
|
-
boolean, // Generic RequestLoaderLoadingType
|
|
96
|
-
GenericResponseErrorInterface, // Generic ResponseErrorBody
|
|
97
|
-
ExpenseIndexRequestResponseBody, // Generic ResponseBodyInterface
|
|
98
|
-
JsonResponse<ExpenseIndexRequestResponseBody>, // Generic ResponseClass
|
|
99
|
-
undefined, // Generic RequestBodyInterface
|
|
100
|
-
ExpenseIndexRequestParams // RequestParamsInterface
|
|
101
|
-
> {
|
|
102
|
-
public method(): RequestMethodEnum {
|
|
103
|
-
return RequestMethodEnum.GET
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
public url(): string {
|
|
107
|
-
return '/api/v1/expenses'
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
### Explanation
|
|
113
|
-
|
|
114
|
-
- **HTTP Method**: Uses `GET` to retrieve data from the `/api/v1/expenses` endpoint.
|
|
115
|
-
- **Error Handling**: On failure (4XX/5XX status codes), the response will conform to `GenericResponseErrorInterface`.
|
|
116
|
-
- **Success Response**: A successful response is expected to follow the `ExpenseIndexRequestResponseBody` interface.
|
|
117
|
-
- **Response Format**: The response is of type JSON, as indicated by `JsonResponse`.
|
|
118
|
-
- **Request Body**: Since this is a GET request, the body is `undefined`.
|
|
119
|
-
- **Query Parameters**: Accepts query parameters that match the `ExpenseIndexRequestParams` interface.
|
|
120
|
-
|
|
121
|
-
### Sending the Request
|
|
122
|
-
|
|
123
|
-
Once the request is defined, you can send it using the following code:
|
|
124
|
-
|
|
125
|
-
```typescript
|
|
126
|
-
const request = new ExpenseIndexRequest()
|
|
127
|
-
|
|
128
|
-
// The response type and body are inferred automatically.
|
|
129
|
-
const response: JsonResponse<ExpenseIndexRequestResponseBody> = await request.send()
|
|
130
|
-
|
|
131
|
-
const body = response.getBody() // Type: ExpenseIndexRequestResponseBody
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
## Example: Create Expense Request (POST)
|
|
135
|
-
|
|
136
|
-
This example demonstrates a POST request that sends a JSON body by overriding `getRequestBodyFactory()`:
|
|
137
|
-
|
|
138
|
-
```typescript
|
|
139
|
-
import {
|
|
140
|
-
BaseRequest,
|
|
141
|
-
RequestMethodEnum,
|
|
142
|
-
JsonResponse,
|
|
143
|
-
JsonBodyFactory
|
|
144
|
-
} from '@blueprint-ts/core/requests'
|
|
145
|
-
|
|
146
|
-
export interface CreateExpensePayload {
|
|
147
|
-
title: string
|
|
148
|
-
amount: number
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
export interface CreateExpenseResponseBody {
|
|
152
|
-
id: string
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
export class CreateExpenseRequest extends BaseRequest<
|
|
156
|
-
boolean,
|
|
157
|
-
GenericResponseErrorInterface,
|
|
158
|
-
CreateExpenseResponseBody,
|
|
159
|
-
JsonResponse<CreateExpenseResponseBody>,
|
|
160
|
-
CreateExpensePayload
|
|
161
|
-
> {
|
|
162
|
-
public method(): RequestMethodEnum {
|
|
163
|
-
return RequestMethodEnum.POST
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
public url(): string {
|
|
167
|
-
return '/api/v1/expenses'
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
public getResponse(): JsonResponse<CreateExpenseResponseBody> {
|
|
171
|
-
return new JsonResponse<CreateExpenseResponseBody>()
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
public override getRequestBodyFactory() {
|
|
175
|
-
return new JsonBodyFactory<CreateExpensePayload>()
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
### Explanation
|
|
181
|
-
|
|
182
|
-
- **HTTP Method**: Uses `POST` to create a new expense.
|
|
183
|
-
- **Error Handling**: On failure (4XX/5XX status codes), the response will conform to `GenericResponseErrorInterface`.
|
|
184
|
-
- **Success Response**: A successful response is expected to follow the `CreateExpenseResponseBody` interface.
|
|
185
|
-
- **Response Format**: The response is of type JSON, as indicated by `JsonResponse`.
|
|
186
|
-
- **Request Body**: Uses `JsonBodyFactory` to send JSON with `Content-Type: application/json`.
|
|
187
|
-
|
|
188
|
-
### Sending the Request
|
|
189
|
-
|
|
190
|
-
```typescript
|
|
191
|
-
const request = new CreateExpenseRequest()
|
|
192
|
-
|
|
193
|
-
const response = await request.setBody({
|
|
194
|
-
title: 'Office supplies',
|
|
195
|
-
amount: 42
|
|
196
|
-
}).send()
|
|
197
|
-
|
|
198
|
-
const body = response.getBody() // Type: CreateExpenseResponseBody
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
Note: If you use Laravel or an API that wraps payloads under a `data` key, consider using `JsonBaseRequest` from the Laravel integration.
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
# Headers
|
|
2
|
-
|
|
3
|
-
Requests assemble headers from multiple sources before sending:
|
|
4
|
-
|
|
5
|
-
1. **Driver defaults** (global headers set on the driver)
|
|
6
|
-
2. **Request headers** returned by `requestHeaders()`
|
|
7
|
-
3. **Body headers** from the request body factory (e.g., `Content-Type`)
|
|
8
|
-
|
|
9
|
-
Later sources override earlier ones. Header values can be strings or callbacks that resolve at send time.
|
|
10
|
-
|
|
11
|
-
## Global Headers (Driver)
|
|
12
|
-
|
|
13
|
-
Set headers once when you configure the driver:
|
|
14
|
-
|
|
15
|
-
```typescript
|
|
16
|
-
BaseRequest.setRequestDriver(new FetchDriver({
|
|
17
|
-
headers: {
|
|
18
|
-
'X-XSRF-TOKEN': () => getCookie('XSRF-TOKEN')
|
|
19
|
-
},
|
|
20
|
-
}))
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
## Per-Request Headers
|
|
24
|
-
|
|
25
|
-
Override `requestHeaders()` on a request to add headers per request:
|
|
26
|
-
|
|
27
|
-
```typescript
|
|
28
|
-
import { type HeadersContract } from '@blueprint-ts/core/requests'
|
|
29
|
-
|
|
30
|
-
public override requestHeaders(): HeadersContract {
|
|
31
|
-
return {
|
|
32
|
-
Authorization: `Bearer ${this.accessToken}`
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## Body Headers
|
|
38
|
-
|
|
39
|
-
Request body factories can set headers such as `Content-Type`. For example, `JsonBodyFactory` sets
|
|
40
|
-
`Content-Type: application/json`.
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
# Loading
|
|
2
|
-
|
|
3
|
-
Requests can expose loading state through a request loader. You register a loader factory once, and each `BaseRequest`
|
|
4
|
-
instance will ask the factory for a loader.
|
|
5
|
-
|
|
6
|
-
Note: For Vue apps, the library provides `VueRequestLoader` and `VueRequestLoaderFactory` in `@blueprint-ts/core/vue/requests`.
|
|
7
|
-
|
|
8
|
-
## Registering a Loader Factory
|
|
9
|
-
|
|
10
|
-
Use `BaseRequest.setRequestLoaderFactory()` to register a factory that implements `RequestLoaderFactoryContract` and
|
|
11
|
-
returns a `RequestLoaderContract`:
|
|
12
|
-
|
|
13
|
-
```typescript
|
|
14
|
-
import {
|
|
15
|
-
BaseRequest,
|
|
16
|
-
type RequestLoaderContract,
|
|
17
|
-
type RequestLoaderFactoryContract
|
|
18
|
-
} from '@blueprint-ts/core/requests'
|
|
19
|
-
|
|
20
|
-
class BooleanLoader implements RequestLoaderContract<boolean> {
|
|
21
|
-
private loading = false
|
|
22
|
-
|
|
23
|
-
public isLoading(): boolean {
|
|
24
|
-
return this.loading
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
public setLoading(value: boolean): void {
|
|
28
|
-
this.loading = value
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
class BooleanLoaderFactory implements RequestLoaderFactoryContract<boolean> {
|
|
33
|
-
public make(): RequestLoaderContract<boolean> {
|
|
34
|
-
return new BooleanLoader()
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
BaseRequest.setRequestLoaderFactory(new BooleanLoaderFactory())
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## Reading Loading State
|
|
42
|
-
|
|
43
|
-
Once a loader factory is registered, every request created from `BaseRequest` can read loading state:
|
|
44
|
-
|
|
45
|
-
```typescript
|
|
46
|
-
const request = new ExpenseIndexRequest()
|
|
47
|
-
|
|
48
|
-
request.send()
|
|
49
|
-
|
|
50
|
-
const isLoading = request.isLoading()
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
## Override Loader
|
|
54
|
-
|
|
55
|
-
You can override the loader per request with `setRequestLoader`:
|
|
56
|
-
|
|
57
|
-
```typescript
|
|
58
|
-
const request = new ExpenseIndexRequest()
|
|
59
|
-
|
|
60
|
-
request.setRequestLoader(customLoader)
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
This lets you create or share a loader before the request exists, which is useful when loading state must be wired up ahead of time.
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
# Request Bodies
|
|
2
|
-
|
|
3
|
-
Request body factories control how outgoing request bodies are serialized and which `Content-Type` header is sent.
|
|
4
|
-
They are separate from response parsing (response classes control `Accept` and how the response body is parsed).
|
|
5
|
-
|
|
6
|
-
## How It Works
|
|
7
|
-
|
|
8
|
-
When you call `send()`, `BaseRequest` uses the request body factory to build a `BodyContract`:
|
|
9
|
-
|
|
10
|
-
- `getRequestBodyFactory()` returns a `BodyFactoryContract`
|
|
11
|
-
- `BodyFactoryContract.make()` returns a `BodyContract`
|
|
12
|
-
- `BodyContract.getHeaders()` provides headers (like `Content-Type`)
|
|
13
|
-
- `BodyContract.getContent()` provides the serialized body
|
|
14
|
-
|
|
15
|
-
If you call `setBody(...)` without providing a body factory, the body is not sent.
|
|
16
|
-
|
|
17
|
-
## JSON Bodies
|
|
18
|
-
|
|
19
|
-
Use `JsonBodyFactory` to send JSON and set `Content-Type: application/json`:
|
|
20
|
-
|
|
21
|
-
```typescript
|
|
22
|
-
import { BaseRequest, JsonBodyFactory, RequestMethodEnum } from '@blueprint-ts/core/requests'
|
|
23
|
-
|
|
24
|
-
class CreateExpenseRequest extends BaseRequest<boolean, GenericResponseErrorInterface, ExpenseResource, JsonResponse<ExpenseResource>, CreateExpensePayload> {
|
|
25
|
-
public method(): RequestMethodEnum {
|
|
26
|
-
return RequestMethodEnum.POST
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
public url(): string {
|
|
30
|
-
return '/api/v1/expenses'
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
public getResponse(): JsonResponse<ExpenseResource> {
|
|
34
|
-
return new JsonResponse<ExpenseResource>()
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
public override getRequestBodyFactory() {
|
|
38
|
-
return new JsonBodyFactory<CreateExpensePayload>()
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
If you are using the Laravel integration, `JsonBaseRequest` already configures the JSON body factory for you.
|
|
44
|
-
|
|
45
|
-
## FormData Bodies
|
|
46
|
-
|
|
47
|
-
Use `FormDataFactory` for multipart requests (uploads, mixed fields):
|
|
48
|
-
|
|
49
|
-
```typescript
|
|
50
|
-
import { FormDataFactory } from '@blueprint-ts/core/requests'
|
|
51
|
-
|
|
52
|
-
public override getRequestBodyFactory() {
|
|
53
|
-
return new FormDataFactory<FormPayload>()
|
|
54
|
-
}
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
If you want to show upload progress for multipart file uploads, see [File Uploads](/services/requests/file-uploads).
|
|
58
|
-
|
|
59
|
-
## Custom Body Factories
|
|
60
|
-
|
|
61
|
-
You can implement your own body factory by returning a `BodyContract` with custom headers and serialization logic.
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
# Responses
|
|
2
|
-
|
|
3
|
-
Requests return a response class that controls the `Accept` header and how the body is parsed.
|
|
4
|
-
|
|
5
|
-
## JsonResponse
|
|
6
|
-
|
|
7
|
-
Use `JsonResponse<T>` for JSON APIs. It sets `Accept: application/json` and parses the body with `response.json()`:
|
|
8
|
-
|
|
9
|
-
```typescript
|
|
10
|
-
import { JsonResponse } from '@blueprint-ts/core/requests'
|
|
11
|
-
|
|
12
|
-
// In your request generic parameters:
|
|
13
|
-
// JsonResponse<ExpenseIndexRequestResponseBody>
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
## PlainTextResponse
|
|
17
|
-
|
|
18
|
-
Use `PlainTextResponse` for endpoints that return plain text. It sets `Accept: text/plain` and parses the body with
|
|
19
|
-
`response.text()`:
|
|
20
|
-
|
|
21
|
-
```typescript
|
|
22
|
-
import { PlainTextResponse } from '@blueprint-ts/core/requests'
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## BlobResponse
|
|
26
|
-
|
|
27
|
-
Use `BlobResponse` for binary responses like files. It sets `Accept` to the provided MIME type (default
|
|
28
|
-
`application/octet-stream`) and parses the body with `response.blob()`:
|
|
29
|
-
|
|
30
|
-
```typescript
|
|
31
|
-
import { BlobResponse } from '@blueprint-ts/core/requests'
|
|
32
|
-
|
|
33
|
-
const response = new BlobResponse('application/pdf')
|
|
34
|
-
```
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
# DeferredPromise
|
|
2
|
-
|
|
3
|
-
`DeferredPromise` exposes a Promise along with `resolve`, `reject`, and a `state` property you can inspect.
|
|
4
|
-
|
|
5
|
-
```typescript
|
|
6
|
-
import { DeferredPromise } from '@blueprint-ts/core/support'
|
|
7
|
-
|
|
8
|
-
const deferred = new DeferredPromise<string>()
|
|
9
|
-
|
|
10
|
-
deferred.then((value) => {
|
|
11
|
-
console.log(value)
|
|
12
|
-
})
|
|
13
|
-
|
|
14
|
-
deferred.resolve('Done')
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
State values:
|
|
18
|
-
|
|
19
|
-
- `pending`
|
|
20
|
-
- `fulfilled`
|
|
21
|
-
- `rejected`
|
|
22
|
-
|
|
23
|
-
## Example: Defer Component Rendering
|
|
24
|
-
|
|
25
|
-
Use a `DeferredPromise` to delay rendering of a Vue component until the slideover is opened and has received the props as non undefined:
|
|
26
|
-
|
|
27
|
-
```vue
|
|
28
|
-
<template>
|
|
29
|
-
<SlideOver v-model="isOpen">
|
|
30
|
-
<template v-if="resolvedresource">
|
|
31
|
-
<UpdateForm :options="options" :resource="resolvedresource" />
|
|
32
|
-
</template>
|
|
33
|
-
</SlideOver>
|
|
34
|
-
</template>
|
|
35
|
-
|
|
36
|
-
<script setup lang="ts">
|
|
37
|
-
import { ref, onMounted } from 'vue'
|
|
38
|
-
import { DeferredPromise } from '@blueprint-ts/core/support'
|
|
39
|
-
|
|
40
|
-
const props = defineProps<{ resource?: Resource }>()
|
|
41
|
-
const isOpen = defineModel<boolean>('isOpen', { default: false })
|
|
42
|
-
|
|
43
|
-
const readyPromise = new DeferredPromise<Resource>()
|
|
44
|
-
const resolvedresource = ref<Resource>(undefined)
|
|
45
|
-
let options: UpdateFormOptionsContract | undefined
|
|
46
|
-
|
|
47
|
-
readyPromise.then((contract) => {
|
|
48
|
-
options = new UpdateFormOptions(contract)
|
|
49
|
-
})
|
|
50
|
-
|
|
51
|
-
onMounted(() => {
|
|
52
|
-
readyPromise.then((resource: Resource) => {
|
|
53
|
-
resolvedresource.value = resource
|
|
54
|
-
})
|
|
55
|
-
})
|
|
56
|
-
|
|
57
|
-
watch(isOpen, (open) => {
|
|
58
|
-
if (open && props.resource) {
|
|
59
|
-
readyPromise.resolve(props.resource)
|
|
60
|
-
}
|
|
61
|
-
})
|
|
62
|
-
</script>
|
|
63
|
-
```
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
# Helpers
|
|
2
|
-
|
|
3
|
-
## isAtBottom
|
|
4
|
-
|
|
5
|
-
Detect whether a scroll container is at the bottom:
|
|
6
|
-
|
|
7
|
-
```typescript
|
|
8
|
-
import { isAtBottom } from '@blueprint-ts/core/support'
|
|
9
|
-
|
|
10
|
-
const atBottom = isAtBottom(scrollHeight, scrollTop, clientHeight)
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
Example with a scroll container:
|
|
14
|
-
|
|
15
|
-
```html
|
|
16
|
-
<nav class="overflow-y-auto" @scroll="handleScroll">
|
|
17
|
-
<!-- content -->
|
|
18
|
-
</nav>
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
```typescript
|
|
22
|
-
import { isAtBottom } from '@blueprint-ts/core/support'
|
|
23
|
-
|
|
24
|
-
function handleScroll(event: Event): void {
|
|
25
|
-
if (!(event.target instanceof Element)) {
|
|
26
|
-
return
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const atBottom = isAtBottom(event.target.scrollHeight, event.target.scrollTop, event.target.clientHeight)
|
|
30
|
-
|
|
31
|
-
if (atBottom) {
|
|
32
|
-
loadMore()
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## getCookie
|
|
38
|
-
|
|
39
|
-
Read a cookie value by name:
|
|
40
|
-
|
|
41
|
-
```typescript
|
|
42
|
-
import { getCookie } from '@blueprint-ts/core/support'
|
|
43
|
-
|
|
44
|
-
const token = getCookie('XSRF-TOKEN')
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## isObject
|
|
48
|
-
|
|
49
|
-
Check if a value is a non-array object:
|
|
50
|
-
|
|
51
|
-
```typescript
|
|
52
|
-
import { isObject } from '@blueprint-ts/core/support'
|
|
53
|
-
|
|
54
|
-
if (isObject(value)) {
|
|
55
|
-
// value is an object (not null, not an array)
|
|
56
|
-
}
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
## mergeDeep
|
|
60
|
-
|
|
61
|
-
Deep-merge plain objects:
|
|
62
|
-
|
|
63
|
-
```typescript
|
|
64
|
-
import { mergeDeep } from '@blueprint-ts/core/support'
|
|
65
|
-
|
|
66
|
-
const result = mergeDeep({}, defaults, overrides)
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
## getDisplayablePages
|
|
70
|
-
|
|
71
|
-
Generate a window of page numbers for pagination UI:
|
|
72
|
-
|
|
73
|
-
```typescript
|
|
74
|
-
import { getDisplayablePages } from '@blueprint-ts/core/support'
|
|
75
|
-
|
|
76
|
-
const pages = getDisplayablePages(currentPage, totalPages, displayPages)
|
|
77
|
-
```
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
## Upgrading from v1 to v2
|
|
2
|
-
|
|
3
|
-
### Route Resource Binding
|
|
4
|
-
|
|
5
|
-
Commit `db70b77` introduced significant changes to the route resource binding system to support better caching, parent-to-child inheritance, and non-blocking navigation.
|
|
6
|
-
|
|
7
|
-
#### Non-blocking Navigation (Breaking Change)
|
|
8
|
-
|
|
9
|
-
In v1, navigation was blocked until all resources were resolved in the `beforeResolve` guard. In v2, navigation proceeds immediately, and resources are loaded in the background.
|
|
10
|
-
|
|
11
|
-
This means that your components will now render **before** the resources are available (they will be `undefined` initially).
|
|
12
|
-
|
|
13
|
-
**How to upgrade:**
|
|
14
|
-
|
|
15
|
-
1. **Use `RouteResourceBoundView`**: Replace `<RouterView>` with `<RouteResourceBoundView>`. This component automatically manages loading and error states for you.
|
|
16
|
-
```vue
|
|
17
|
-
<script setup lang="ts">
|
|
18
|
-
import { RouteResourceBoundView } from '@blueprint-ts/core'
|
|
19
|
-
</script>
|
|
20
|
-
|
|
21
|
-
<template>
|
|
22
|
-
<RouteResourceBoundView />
|
|
23
|
-
</template>
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
2. **Define Loading/Error Components**: You can now define these directly in your `defineRoute` call to be used by `RouteResourceBoundView`:
|
|
27
|
-
```ts
|
|
28
|
-
defineRoute<{ product: ProductResource }>()({
|
|
29
|
-
path: ':productId',
|
|
30
|
-
component: ProductDetailPage,
|
|
31
|
-
loadingComponent: MyLoadingSpinner,
|
|
32
|
-
errorComponent: MyErrorPage,
|
|
33
|
-
inject: {
|
|
34
|
-
product: { from: 'productId', resolve: ... }
|
|
35
|
-
}
|
|
36
|
-
})
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
3. **Manual Handling**: If you want your component to handle its own loading state, set `lazy: false` in the route definition and use the updated `useRouteResource` composable.
|
|
40
|
-
|
|
41
|
-
#### `useRouteResource` API Changes (Breaking Change)
|
|
42
|
-
|
|
43
|
-
The `useRouteResource` composable has been updated to support multiple resources and provide reactive state.
|
|
44
|
-
|
|
45
|
-
* **v1**: `const { refresh } = useRouteResource()`
|
|
46
|
-
* **v2**: `const { refresh, isLoading, error } = useRouteResource('resourceName')`
|
|
47
|
-
|
|
48
|
-
The `refresh` function no longer takes the resource name as an argument. It now accepts an optional options object for silent refreshes.
|
|
49
|
-
|
|
50
|
-
```ts
|
|
51
|
-
// v1
|
|
52
|
-
const { refresh } = useRouteResource()
|
|
53
|
-
await refresh('product')
|
|
54
|
-
|
|
55
|
-
// v2
|
|
56
|
-
const { refresh, isLoading, error } = useRouteResource('product')
|
|
57
|
-
await refresh() // Triggers loading state
|
|
58
|
-
await refresh({ silent: true }) // Background refresh
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
#### New Features: Caching and Inheritance
|
|
62
|
-
|
|
63
|
-
* **Caching**: Resources are now cached based on the route parameter value. Navigating between child routes that share the same parameter will no longer trigger redundant requests.
|
|
64
|
-
* **Inheritance**: Child routes now automatically inherit resources defined on parent routes. You can define a resource once on a parent route and it will be available to all children through props or `useRouteResource`.
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
## Upgrading from v2 to v3
|
|
2
|
-
|
|
3
|
-
### BaseForm
|
|
4
|
-
|
|
5
|
-
#### Omission of fields with `undefined` values (Breaking Change)
|
|
6
|
-
|
|
7
|
-
Commit `26c0d0e` changed how `BaseForm.buildPayload()` handles `undefined` values returned by transformers (getters).
|
|
8
|
-
|
|
9
|
-
In v2, returning `undefined` from a getter would still include the key in the resulting payload object. In v3, the field is **omitted** entirely from the payload.
|
|
10
|
-
|
|
11
|
-
This applies to:
|
|
12
|
-
- **Field Getters**: `getFieldName(value)`
|
|
13
|
-
- **Composite Getters**: `getParentFieldNestedField(value)`
|
|
14
|
-
- **Appended Fields**: Getters for fields defined in the `append` array.
|
|
15
|
-
- **Nested Objects/Arrays**: Recursive transformation of nested data structures.
|
|
16
|
-
|
|
17
|
-
**How to upgrade:**
|
|
18
|
-
If you previously relied on a field being present with an `undefined` value in the JS object, you should now return `null` if you want the field to be included in the request payload.
|
|
19
|
-
|
|
20
|
-
```ts
|
|
21
|
-
// v2: payload was { name: undefined }
|
|
22
|
-
// v3: payload is {}
|
|
23
|
-
protected getName(value: string) {
|
|
24
|
-
return value ? value : undefined
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
// v3: if you want the field to be included
|
|
28
|
-
protected getName(value: string) {
|
|
29
|
-
return value ? value : null // payload is { name: null }
|
|
30
|
-
}
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
#### Removal of Suggestions (Breaking Change)
|
|
34
|
-
|
|
35
|
-
The suggestions feature has been removed from `BaseForm` in commit `f21d6ce`.
|
|
36
|
-
|
|
37
|
-
**Changes:**
|
|
38
|
-
- Removed `fillSuggestions()` method from `BaseForm`.
|
|
39
|
-
- Removed `suggestions` property from the `properties` tree (e.g., `form.properties.email.suggestions` is no longer available).
|
|
40
|
-
- Removed `suggestions` from `PropertyAwareField` and `PropertyAware` types.
|
|
41
|
-
|
|
42
|
-
**How to upgrade:**
|
|
43
|
-
If you were using the suggestions feature, you should now manage suggestions independently of the form state, for example, by using a separate reactive object or a dedicated composable.
|
|
44
|
-
|
|
45
|
-
#### File Upload Support and Form Data Handling
|
|
46
|
-
|
|
47
|
-
Commit `d765cae` introduced native support for `File` and `Blob` objects in `BaseForm`.
|
|
48
|
-
|
|
49
|
-
**Changes:**
|
|
50
|
-
- `BaseForm` now detects if the payload contains `File` or `Blob` objects.
|
|
51
|
-
- When sending a request with a `File` or `Blob` in the payload, the library will automatically use `FormData` and set the appropriate `Content-Type` header (multipart/form-data).
|
|
52
|
-
- `File` values are kept intact during the transformation process and are not converted into plain objects.
|