@blueprint-ts/core 4.1.0-beta.2 → 4.1.0-beta.4
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 +71 -0
- package/dist/requests/BaseRequest.js +239 -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 +33 -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 +224 -0
- package/dist/vue/forms/BaseForm.js +1569 -0
- package/dist/vue/forms/PropertyAwareArray.d.ts +54 -0
- package/dist/vue/forms/PropertyAwareArray.js +54 -0
- package/dist/vue/forms/PropertyAwareObject.d.ts +13 -0
- package/dist/vue/forms/PropertyAwareObject.js +18 -0
- package/dist/vue/forms/index.d.ts +10 -0
- package/dist/vue/forms/index.js +7 -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 +13 -0
- package/dist/vue/forms/validation/index.js +10 -0
- package/dist/vue/forms/validation/rules/BaseRule.d.ts +12 -0
- package/dist/vue/forms/validation/rules/BaseRule.js +24 -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/PrecognitiveRule.d.ts +22 -0
- package/dist/vue/forms/validation/rules/PrecognitiveRule.js +58 -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 +14 -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 -226
- 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 -168
- 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 -89
- 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/BinaryBody.ts +0 -31
- 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 -9
- package/src/requests/contracts/BodyFactoryContract.ts +0 -5
- package/src/requests/contracts/DriverConfigContract.ts +0 -9
- package/src/requests/contracts/HeadersContract.ts +0 -9
- 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/BinaryBodyFactory.ts +0 -13
- package/src/requests/factories/FormDataFactory.ts +0 -17
- package/src/requests/factories/JsonBodyFactory.ts +0 -9
- package/src/requests/index.ts +0 -68
- 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/index.ts +0 -11
- 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 -52
- 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 -94
- package/tests/service/requests/fetch/FetchResponse.test.ts +0 -21
- package/tests/service/requests/xhr/XMLHttpRequestDriver.test.ts +0 -197
- 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,168 +0,0 @@
|
|
|
1
|
-
# File Uploads
|
|
2
|
-
|
|
3
|
-
Use `FormDataFactory` for multipart uploads with fields, and use `BinaryBodyFactory` when the endpoint expects a raw
|
|
4
|
-
binary body such as a chunk `PUT`. Use `XMLHttpRequestDriver` when the consuming application needs upload progress for a
|
|
5
|
-
progress bar.
|
|
6
|
-
|
|
7
|
-
Choose the body factory based on the wire format your endpoint expects:
|
|
8
|
-
|
|
9
|
-
- Use `FormDataFactory` when the request includes normal fields plus one or more files.
|
|
10
|
-
- Use `BinaryBodyFactory` when the request body itself is the file or chunk.
|
|
11
|
-
- Use `FetchDriver` if you just need to send the upload.
|
|
12
|
-
- Use `XMLHttpRequestDriver` if you also need upload progress events.
|
|
13
|
-
|
|
14
|
-
## Request Definition
|
|
15
|
-
|
|
16
|
-
```typescript
|
|
17
|
-
import {
|
|
18
|
-
BaseRequest,
|
|
19
|
-
FormDataFactory,
|
|
20
|
-
JsonResponse,
|
|
21
|
-
RequestMethodEnum,
|
|
22
|
-
XMLHttpRequestDriver
|
|
23
|
-
} from '@blueprint-ts/core/requests'
|
|
24
|
-
|
|
25
|
-
interface UploadAvatarPayload {
|
|
26
|
-
avatar: File
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
interface UploadAvatarResponse {
|
|
30
|
-
id: string
|
|
31
|
-
url: string
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
class UploadAvatarRequest extends BaseRequest<
|
|
35
|
-
boolean,
|
|
36
|
-
{ message: string },
|
|
37
|
-
UploadAvatarResponse,
|
|
38
|
-
JsonResponse<UploadAvatarResponse>,
|
|
39
|
-
UploadAvatarPayload
|
|
40
|
-
> {
|
|
41
|
-
public method(): RequestMethodEnum {
|
|
42
|
-
return RequestMethodEnum.POST
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
public url(): string {
|
|
46
|
-
return '/api/v1/avatar'
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
public getResponse(): JsonResponse<UploadAvatarResponse> {
|
|
50
|
-
return new JsonResponse<UploadAvatarResponse>()
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
public override getRequestBodyFactory() {
|
|
54
|
-
return new FormDataFactory<UploadAvatarPayload>()
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
protected override getRequestDriver() {
|
|
58
|
-
return new XMLHttpRequestDriver({
|
|
59
|
-
corsWithCredentials: true,
|
|
60
|
-
headers: {
|
|
61
|
-
'X-XSRF-TOKEN': () => getCookie('XSRF-TOKEN')
|
|
62
|
-
}
|
|
63
|
-
})
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
## Global Default Driver
|
|
69
|
-
|
|
70
|
-
You can keep `FetchDriver` as the application default. The upload request above will still use `XMLHttpRequestDriver`
|
|
71
|
-
because it defines its own driver internally:
|
|
72
|
-
|
|
73
|
-
```typescript
|
|
74
|
-
import { BaseRequest, FetchDriver } from '@blueprint-ts/core/requests'
|
|
75
|
-
|
|
76
|
-
BaseRequest.setRequestDriver(new FetchDriver())
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
Important: the upload request's `XMLHttpRequestDriver` does not inherit config from the global `FetchDriver`. If the
|
|
80
|
-
upload request needs credentials or shared headers, define them on the `XMLHttpRequestDriver` returned by
|
|
81
|
-
`getRequestDriver()`.
|
|
82
|
-
|
|
83
|
-
## Listening for Upload Progress
|
|
84
|
-
|
|
85
|
-
```typescript
|
|
86
|
-
import { RequestEvents, type RequestUploadProgress } from '@blueprint-ts/core/requests'
|
|
87
|
-
|
|
88
|
-
const request = new UploadAvatarRequest()
|
|
89
|
-
|
|
90
|
-
request.on<RequestUploadProgress>(RequestEvents.UPLOAD_PROGRESS, (progress) => {
|
|
91
|
-
if (!progress.lengthComputable || progress.progress === undefined) {
|
|
92
|
-
return
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
progressBar.value = progress.progress * 100
|
|
96
|
-
})
|
|
97
|
-
|
|
98
|
-
await request.setBody({
|
|
99
|
-
avatar: fileInput.files![0],
|
|
100
|
-
}).send()
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
## Raw Chunk Uploads
|
|
104
|
-
|
|
105
|
-
```typescript
|
|
106
|
-
import {
|
|
107
|
-
BaseRequest,
|
|
108
|
-
BinaryBodyFactory,
|
|
109
|
-
JsonResponse,
|
|
110
|
-
RequestMethodEnum,
|
|
111
|
-
XMLHttpRequestDriver
|
|
112
|
-
} from '@blueprint-ts/core/requests'
|
|
113
|
-
|
|
114
|
-
interface UploadPartResponse {
|
|
115
|
-
etag: string
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
class UploadPartRequest extends BaseRequest<
|
|
119
|
-
boolean,
|
|
120
|
-
{ message: string },
|
|
121
|
-
UploadPartResponse,
|
|
122
|
-
JsonResponse<UploadPartResponse>,
|
|
123
|
-
Uint8Array
|
|
124
|
-
> {
|
|
125
|
-
public method(): RequestMethodEnum {
|
|
126
|
-
return RequestMethodEnum.PUT
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
public url(): string {
|
|
130
|
-
return '/api/v1/uploads/part'
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
public getResponse(): JsonResponse<UploadPartResponse> {
|
|
134
|
-
return new JsonResponse<UploadPartResponse>()
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
public override getRequestBodyFactory() {
|
|
138
|
-
return new BinaryBodyFactory<Uint8Array>('application/octet-stream')
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
public override requestHeaders() {
|
|
142
|
-
return {
|
|
143
|
-
'X-Part-Number': '1'
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
protected override getRequestDriver() {
|
|
148
|
-
return new XMLHttpRequestDriver()
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
In this example, `setBody(...)` can receive a `Blob`, `ArrayBuffer`, `Uint8Array`, or another typed-array/data-view
|
|
154
|
-
payload supported by `BinaryBodyFactory`.
|
|
155
|
-
|
|
156
|
-
## Notes
|
|
157
|
-
|
|
158
|
-
- Upload progress requires `XMLHttpRequestDriver`. The default `FetchDriver` does not emit upload progress events.
|
|
159
|
-
- Define `XMLHttpRequestDriver` inside the upload request class when that request should always support progress.
|
|
160
|
-
- `BinaryBodyFactory` only sets `Content-Type` automatically when the body is a `Blob` with a non-empty `type`.
|
|
161
|
-
For `ArrayBuffer` and typed-array uploads, pass the expected content type explicitly.
|
|
162
|
-
- `XMLHttpRequestDriver` supports the same `corsWithCredentials` and `headers` options as `FetchDriver`, including
|
|
163
|
-
header callbacks.
|
|
164
|
-
- Request-defined drivers do not automatically inherit config from the globally registered driver.
|
|
165
|
-
- Some browsers cannot compute a reliable total size for every upload. Check `lengthComputable` before rendering a
|
|
166
|
-
percentage.
|
|
167
|
-
- Upload event listeners may cause CORS preflight requests on cross-origin uploads. Ensure the server is configured
|
|
168
|
-
accordingly.
|
|
@@ -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,89 +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
|
-
## Raw Binary Bodies
|
|
60
|
-
|
|
61
|
-
Use `BinaryBodyFactory` when the request body should be sent as raw binary instead of multipart form data. This is a
|
|
62
|
-
better fit for chunk uploads, binary artifact pushes, and endpoints that expect the request body as-is:
|
|
63
|
-
|
|
64
|
-
```typescript
|
|
65
|
-
import { BinaryBodyFactory } from '@blueprint-ts/core/requests'
|
|
66
|
-
|
|
67
|
-
public override getRequestBodyFactory() {
|
|
68
|
-
return new BinaryBodyFactory<ArrayBuffer>('application/octet-stream')
|
|
69
|
-
}
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
`BinaryBodyFactory` supports:
|
|
73
|
-
|
|
74
|
-
- `Blob`
|
|
75
|
-
- `ArrayBuffer`
|
|
76
|
-
- typed-array and view values such as `Uint8Array` or `DataView`
|
|
77
|
-
|
|
78
|
-
`Content-Type` resolution works like this:
|
|
79
|
-
|
|
80
|
-
- If you pass a content type to `BinaryBodyFactory`, Blueprint sends that `Content-Type` header.
|
|
81
|
-
- Otherwise, if the body is a `Blob` with a non-empty `type`, Blueprint uses `Blob.type`.
|
|
82
|
-
- Otherwise, Blueprint does not add a `Content-Type` header for you.
|
|
83
|
-
|
|
84
|
-
`BinaryBodyFactory` works with both `FetchDriver` and `XMLHttpRequestDriver`. Choose `XMLHttpRequestDriver` only when
|
|
85
|
-
the consuming application needs upload progress events.
|
|
86
|
-
|
|
87
|
-
## Custom Body Factories
|
|
88
|
-
|
|
89
|
-
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
|
-
```
|