@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,51 +0,0 @@
|
|
|
1
|
-
# Loading
|
|
2
|
-
|
|
3
|
-
For Vue apps, the library includes `VueRequestLoader`, `VueRequestLoaderFactory`, and `VueRequestBatchLoader`, which
|
|
4
|
-
use Vue refs to track loading state.
|
|
5
|
-
|
|
6
|
-
## Registering the Vue Loader Factory
|
|
7
|
-
|
|
8
|
-
```typescript
|
|
9
|
-
import { BaseRequest } from '@blueprint-ts/core/requests'
|
|
10
|
-
import { VueRequestLoaderFactory } from '@blueprint-ts/core/vue/requests'
|
|
11
|
-
|
|
12
|
-
BaseRequest.setRequestLoaderFactory(new VueRequestLoaderFactory())
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## Reading Loading State
|
|
16
|
-
|
|
17
|
-
```typescript
|
|
18
|
-
const request = new ExpenseIndexRequest()
|
|
19
|
-
|
|
20
|
-
request.send()
|
|
21
|
-
|
|
22
|
-
const isLoading = request.isLoading()
|
|
23
|
-
// isLoading is a Ref<boolean> when using VueRequestLoaderFactory
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Batch Loading
|
|
27
|
-
|
|
28
|
-
`VueRequestBatchLoader` can track the loading state of multiple requests. Use it when you want a single loading ref to
|
|
29
|
-
reflect a batch of requests.
|
|
30
|
-
|
|
31
|
-
```typescript
|
|
32
|
-
import { VueRequestBatchLoader } from '@blueprint-ts/core/vue/requests'
|
|
33
|
-
|
|
34
|
-
const batchLoader = new VueRequestBatchLoader(2)
|
|
35
|
-
batchLoader.startBatch(2)
|
|
36
|
-
|
|
37
|
-
const requestA = new ExpenseIndexRequest().setRequestLoader(batchLoader)
|
|
38
|
-
const requestB = new ExpenseIndexRequest().setRequestLoader(batchLoader)
|
|
39
|
-
|
|
40
|
-
requestA.send()
|
|
41
|
-
requestB.send()
|
|
42
|
-
|
|
43
|
-
const isLoading = batchLoader.isLoading()
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
If the batch will not complete (for example, when a chained request fails), call `abortBatch()` to stop waiting for the
|
|
47
|
-
remaining requests:
|
|
48
|
-
|
|
49
|
-
```typescript
|
|
50
|
-
batchLoader.abortBatch()
|
|
51
|
-
```
|
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
# Route Resource Binding
|
|
2
|
-
|
|
3
|
-
When using `vue-router`, you can automatically bind route parameters to resources, similar to how Laravel's route model binding works.
|
|
4
|
-
|
|
5
|
-
## Setup
|
|
6
|
-
|
|
7
|
-
To enable the router to load resources automatically, install the route injection plugin when initializing your router:
|
|
8
|
-
|
|
9
|
-
```ts
|
|
10
|
-
import { installRouteInjection } from '@blueprint-ts/core/vue/router/routeResourceBinding'
|
|
11
|
-
|
|
12
|
-
installRouteInjection(router)
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## Defining Routes
|
|
16
|
-
|
|
17
|
-
Use the `defineRoute` helper to define your routes and specify which parameters should be resolved into resources:
|
|
18
|
-
|
|
19
|
-
```ts
|
|
20
|
-
import { defineRoute, RouteResourceRequestResolver } from '@blueprint-ts/core/vue/router/routeResourceBinding'
|
|
21
|
-
import ProductDetailPage from '@/pages/ProductDetailPage.vue'
|
|
22
|
-
|
|
23
|
-
export default defineRoute<{
|
|
24
|
-
product: ProductResource
|
|
25
|
-
}>()({
|
|
26
|
-
path: ':productId',
|
|
27
|
-
name: 'products.show',
|
|
28
|
-
component: ProductDetailPage,
|
|
29
|
-
meta: {
|
|
30
|
-
inject: {
|
|
31
|
-
product: {
|
|
32
|
-
from: 'productId',
|
|
33
|
-
resolve: (productId: string) => {
|
|
34
|
-
return new RouteResourceRequestResolver(
|
|
35
|
-
new ProductShowRequest(productId)
|
|
36
|
-
)
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
})
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Navigation is blocking by default. Cached values are reused when navigating between child routes with unchanged parameters.
|
|
45
|
-
|
|
46
|
-
## Usage in Components
|
|
47
|
-
|
|
48
|
-
Your component can directly access the resolved resource via props:
|
|
49
|
-
|
|
50
|
-
```vue
|
|
51
|
-
<script setup lang="ts">
|
|
52
|
-
const props = defineProps<{
|
|
53
|
-
product: ProductResource
|
|
54
|
-
}>()
|
|
55
|
-
</script>
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
## Handling Loading & Error States
|
|
59
|
-
|
|
60
|
-
### Using `RouteResourceBoundView`
|
|
61
|
-
|
|
62
|
-
`RouteResourceBoundView` is a drop-in replacement for `<RouterView>` that automatically handles loading and error states. Define error and loading components directly in the route:
|
|
63
|
-
|
|
64
|
-
```ts
|
|
65
|
-
import { defineRoute, RouteResourceRequestResolver } from '@blueprint-ts/core/vue/router/routeResourceBinding'
|
|
66
|
-
import ProductDetailPage from '@/pages/ProductDetailPage.vue'
|
|
67
|
-
import GenericErrorPage from '@/pages/GenericErrorPage.vue'
|
|
68
|
-
import LoadingSpinner from '@/components/LoadingSpinner.vue'
|
|
69
|
-
|
|
70
|
-
export default defineRoute<{
|
|
71
|
-
product: ProductResource
|
|
72
|
-
}>()({
|
|
73
|
-
path: ':productId',
|
|
74
|
-
name: 'products.show',
|
|
75
|
-
component: ProductDetailPage,
|
|
76
|
-
errorComponent: GenericErrorPage,
|
|
77
|
-
loadingComponent: LoadingSpinner,
|
|
78
|
-
meta: {
|
|
79
|
-
inject: {
|
|
80
|
-
product: {
|
|
81
|
-
from: 'productId',
|
|
82
|
-
resolve: (productId: string) => {
|
|
83
|
-
return new RouteResourceRequestResolver(
|
|
84
|
-
new ProductShowRequest(productId)
|
|
85
|
-
)
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
})
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
Then replace `<RouterView>` with `<RouteResourceBoundView>` in your layout:
|
|
94
|
-
|
|
95
|
-
```vue
|
|
96
|
-
<template>
|
|
97
|
-
<RouteResourceBoundView />
|
|
98
|
-
</template>
|
|
99
|
-
|
|
100
|
-
<script setup lang="ts">
|
|
101
|
-
import { RouteResourceBoundView } from '@blueprint-ts/core/vue/router/routeResourceBinding'
|
|
102
|
-
</script>
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
The `errorComponent` receives `error` and `refresh` as props. The `refresh` function retries all failed resources:
|
|
106
|
-
|
|
107
|
-
```vue
|
|
108
|
-
<!-- GenericErrorPage.vue -->
|
|
109
|
-
<template>
|
|
110
|
-
<div>
|
|
111
|
-
<p>{{ error.message }}</p>
|
|
112
|
-
<button @click="refresh">Try Again</button>
|
|
113
|
-
</div>
|
|
114
|
-
</template>
|
|
115
|
-
|
|
116
|
-
<script setup lang="ts">
|
|
117
|
-
defineProps<{
|
|
118
|
-
error: Error
|
|
119
|
-
refresh: () => Promise<void>
|
|
120
|
-
}>()
|
|
121
|
-
</script>
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
#### Using Scoped Slots
|
|
125
|
-
|
|
126
|
-
`RouteResourceBoundView` supports the same `v-slot` pattern as `<RouterView>`:
|
|
127
|
-
|
|
128
|
-
```vue
|
|
129
|
-
<RouteResourceBoundView v-slot="{ Component, route }">
|
|
130
|
-
<component
|
|
131
|
-
:is="Component"
|
|
132
|
-
v-if="Component"
|
|
133
|
-
/>
|
|
134
|
-
<EmptyState v-else />
|
|
135
|
-
</RouteResourceBoundView>
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
When no `errorComponent` or `loadingComponent` is defined on the route, you can use named slots as fallbacks:
|
|
139
|
-
|
|
140
|
-
```vue
|
|
141
|
-
<RouteResourceBoundView>
|
|
142
|
-
<template #default="{ Component, route }">
|
|
143
|
-
<component :is="Component" v-if="Component" />
|
|
144
|
-
</template>
|
|
145
|
-
|
|
146
|
-
<template #loading>
|
|
147
|
-
<LoadingSpinner />
|
|
148
|
-
</template>
|
|
149
|
-
|
|
150
|
-
<template #error="{ error, refresh }">
|
|
151
|
-
<div>
|
|
152
|
-
<p>{{ error.message }}</p>
|
|
153
|
-
<button @click="refresh">Retry</button>
|
|
154
|
-
</div>
|
|
155
|
-
</template>
|
|
156
|
-
</RouteResourceBoundView>
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
### Using `useRouteResource` (Manual Handling)
|
|
160
|
-
|
|
161
|
-
If you prefer to handle loading and error states inside the component itself, set `lazy: false` on the route. This renders the component immediately while resources resolve in the background:
|
|
162
|
-
|
|
163
|
-
```ts
|
|
164
|
-
export default defineRoute<{
|
|
165
|
-
product: ProductResource
|
|
166
|
-
}>()({
|
|
167
|
-
path: ':productId',
|
|
168
|
-
name: 'products.show',
|
|
169
|
-
component: ProductDetailPage,
|
|
170
|
-
lazy: false,
|
|
171
|
-
meta: {
|
|
172
|
-
inject: {
|
|
173
|
-
product: {
|
|
174
|
-
from: 'productId',
|
|
175
|
-
resolve: (productId: string) => {
|
|
176
|
-
return new RouteResourceRequestResolver(
|
|
177
|
-
new ProductShowRequest(productId)
|
|
178
|
-
)
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
})
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
Then use the `useRouteResource` composable inside your component:
|
|
187
|
-
|
|
188
|
-
```vue
|
|
189
|
-
<template>
|
|
190
|
-
<div v-if="isLoading">Loading...</div>
|
|
191
|
-
<div v-else-if="error">
|
|
192
|
-
<p>{{ error.message }}</p>
|
|
193
|
-
<button @click="refresh">Retry</button>
|
|
194
|
-
</div>
|
|
195
|
-
<div v-else>
|
|
196
|
-
<h1>{{ product.name }}</h1>
|
|
197
|
-
</div>
|
|
198
|
-
</template>
|
|
199
|
-
|
|
200
|
-
<script setup lang="ts">
|
|
201
|
-
import { useRouteResource } from '@blueprint-ts/core/vue/router/routeResourceBinding'
|
|
202
|
-
|
|
203
|
-
const props = defineProps<{
|
|
204
|
-
product: ProductResource
|
|
205
|
-
}>()
|
|
206
|
-
|
|
207
|
-
const { refresh, isLoading, error } = useRouteResource('product')
|
|
208
|
-
</script>
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
`useRouteResource` returns:
|
|
212
|
-
|
|
213
|
-
| Property | Type | Description |
|
|
214
|
-
|-------------|---------------------------|------------------------------------------|
|
|
215
|
-
| `isLoading` | `ComputedRef<boolean>` | `true` while the resource is resolving |
|
|
216
|
-
| `error` | `ComputedRef<Error\|null>` | The error if resolution failed, else `null` |
|
|
217
|
-
| `refresh` | `(options?: { silent?: boolean }) => Promise<void>` | Re-fetches the resource. Pass `{ silent: true }` to suppress the loading state. |
|
|
218
|
-
|
|
219
|
-
#### Silent Refresh
|
|
220
|
-
|
|
221
|
-
By default, calling `refresh()` sets `isLoading` to `true` while the resource is being re-fetched, which causes `RouteResourceBoundView` to show the loading component. If you want to refresh the resource in the background without triggering the loading state (e.g. polling or optimistic updates), pass `{ silent: true }`:
|
|
222
|
-
|
|
223
|
-
```ts
|
|
224
|
-
const { refresh } = useRouteResource('product')
|
|
225
|
-
|
|
226
|
-
// Normal refresh — triggers loading state
|
|
227
|
-
await refresh()
|
|
228
|
-
|
|
229
|
-
// Silent refresh — does not trigger loading state
|
|
230
|
-
await refresh({ silent: true })
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
A silent refresh still updates the `error` state if the request fails.
|
|
234
|
-
|
|
235
|
-
### Lazy vs Non-Lazy
|
|
236
|
-
|
|
237
|
-
| Option | Behavior |
|
|
238
|
-
|-----------------|-----------------------------------------------------------------------------------------------|
|
|
239
|
-
| `lazy: true` (default) | `RouteResourceBoundView` intercepts loading/error states and shows the appropriate component |
|
|
240
|
-
| `lazy: false` | The target component renders immediately; use `useRouteResource()` for manual state handling |
|
package/docs/vue/state.md
DELETED
|
@@ -1,309 +0,0 @@
|
|
|
1
|
-
# State Management
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
The `State` class provides a reactive, type-safe state management system with rich features like change detection, nested property watching, persistence, and more. It's designed to make state management in Vue applications clean and flexible.
|
|
5
|
-
|
|
6
|
-
## Core Features
|
|
7
|
-
- **Type-safe state**: Fully typed with TypeScript generics
|
|
8
|
-
- **Reactive properties**: Seamless integration with Vue's reactivity system
|
|
9
|
-
- **Nested property watching**: Track changes to deeply nested properties
|
|
10
|
-
- **Persistence options**: Optional state persistence between sessions
|
|
11
|
-
- **Change subscriptions**: React to state changes with optional debouncing
|
|
12
|
-
- **Deep object watching**: Special handling for nested objects
|
|
13
|
-
- **Efficient equality checking**: Smart comparison of state values
|
|
14
|
-
- **State export/import**: Easily serialize and deserialize state
|
|
15
|
-
- **Reset capability**: Revert to initial state when needed
|
|
16
|
-
|
|
17
|
-
## Usage Guide
|
|
18
|
-
### Creating a State Class
|
|
19
|
-
Create a new state by extending the base class and defining your interface:
|
|
20
|
-
|
|
21
|
-
```typescript
|
|
22
|
-
import { State } from '@blueprint-ts/core/vue/state'
|
|
23
|
-
import { type PersistenceDriver, LocalStorageDriver } from '@blueprint-ts/core/persistenceDrivers'
|
|
24
|
-
|
|
25
|
-
// Define your state interface
|
|
26
|
-
interface UserStateInterface {
|
|
27
|
-
name: string;
|
|
28
|
-
email: string;
|
|
29
|
-
preferences: {
|
|
30
|
-
darkMode: boolean;
|
|
31
|
-
notifications: boolean;
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// Create your state class
|
|
36
|
-
class UserState extends State<UserStateInterface> {
|
|
37
|
-
constructor() {
|
|
38
|
-
super(
|
|
39
|
-
{
|
|
40
|
-
name: '',
|
|
41
|
-
email: '',
|
|
42
|
-
preferences: {
|
|
43
|
-
darkMode: false,
|
|
44
|
-
notifications: true
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
persist: true, // Enable persistence
|
|
49
|
-
persistSuffix: 'user' // Optional namespace for the storage key
|
|
50
|
-
}
|
|
51
|
-
);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// Optional: Override persistence method
|
|
55
|
-
protected override getPersistenceDriver(): PersistenceDriver {
|
|
56
|
-
return new LocalStorageDriver()
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// Create an instance
|
|
61
|
-
export const userState = new UserState();
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
### Accessing State
|
|
65
|
-
|
|
66
|
-
````typescript
|
|
67
|
-
// Read
|
|
68
|
-
const userName = userState.state.name;
|
|
69
|
-
|
|
70
|
-
// Write
|
|
71
|
-
userState.state.name = 'John Doe';
|
|
72
|
-
````
|
|
73
|
-
|
|
74
|
-
### Subscribing to Changes
|
|
75
|
-
Listen for changes to specific properties using the method: `subscribe`
|
|
76
|
-
|
|
77
|
-
#### Basic subscription to a single property
|
|
78
|
-
````typescript
|
|
79
|
-
// Subscribe to changes on a top-level property
|
|
80
|
-
userState.subscribe(
|
|
81
|
-
'name',
|
|
82
|
-
(newValue, oldValue) => {
|
|
83
|
-
console.log(`Name changed from ${oldValue} to ${newValue}`);
|
|
84
|
-
}
|
|
85
|
-
);
|
|
86
|
-
````
|
|
87
|
-
|
|
88
|
-
`subscribe` returns an unsubscribe function:
|
|
89
|
-
|
|
90
|
-
````typescript
|
|
91
|
-
const unsubscribe = userState.subscribe('name', () => {
|
|
92
|
-
// ...
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
unsubscribe();
|
|
96
|
-
````
|
|
97
|
-
|
|
98
|
-
#### Subscribing to nested properties
|
|
99
|
-
|
|
100
|
-
````typescript
|
|
101
|
-
// Subscribe to a nested property using dot notation
|
|
102
|
-
userState.subscribe(
|
|
103
|
-
'preferences.darkMode',
|
|
104
|
-
(newValue, oldValue) => {
|
|
105
|
-
console.log(`Dark mode changed from ${oldValue} to ${newValue}`);
|
|
106
|
-
// Update UI theme
|
|
107
|
-
}
|
|
108
|
-
);
|
|
109
|
-
````
|
|
110
|
-
|
|
111
|
-
#### Debounced subscriptions
|
|
112
|
-
|
|
113
|
-
````typescript
|
|
114
|
-
// Debounce the handler to avoid frequent updates
|
|
115
|
-
userState.subscribe(
|
|
116
|
-
'email',
|
|
117
|
-
(newValue, oldValue) => {
|
|
118
|
-
// This will only execute after 300ms of stability
|
|
119
|
-
validateEmail(newValue);
|
|
120
|
-
},
|
|
121
|
-
{ debounce: 300 }
|
|
122
|
-
);
|
|
123
|
-
````
|
|
124
|
-
|
|
125
|
-
#### Watching multiple properties
|
|
126
|
-
````typescript
|
|
127
|
-
// Subscribe to multiple properties at once
|
|
128
|
-
userState.subscribe(
|
|
129
|
-
['name', 'email'],
|
|
130
|
-
(changedPath, state) => {
|
|
131
|
-
console.log(`Property ${changedPath} changed`);
|
|
132
|
-
console.log('Current state:', state);
|
|
133
|
-
}
|
|
134
|
-
);
|
|
135
|
-
````
|
|
136
|
-
|
|
137
|
-
### State Persistence
|
|
138
|
-
Enable state persistence by passing `persist: true` in the constructor options. You can optionally set `persistSuffix` to namespace the storage key. Override the method `getPersistenceDriver` to use different storage mechanisms:
|
|
139
|
-
|
|
140
|
-
````typescript
|
|
141
|
-
// Examples of different persistence drivers:
|
|
142
|
-
protected override getPersistenceDriver(): PersistenceDriver {
|
|
143
|
-
// Session storage (lasts until browser tab is closed)
|
|
144
|
-
return new SessionStorageDriver();
|
|
145
|
-
|
|
146
|
-
// Local storage (persists between sessions)
|
|
147
|
-
// return new LocalStorageDriver();
|
|
148
|
-
|
|
149
|
-
// Non-persistent (for testing or when persistence not needed)
|
|
150
|
-
// return new NonPersistentDriver();
|
|
151
|
-
}
|
|
152
|
-
````
|
|
153
|
-
|
|
154
|
-
You can inspect the computed key via `state.persistKey`.
|
|
155
|
-
|
|
156
|
-
### Importing and Exporting State
|
|
157
|
-
|
|
158
|
-
Export the current state to a plain object or import values:
|
|
159
|
-
|
|
160
|
-
````typescript
|
|
161
|
-
// Export current state as a plain object
|
|
162
|
-
const stateSnapshot = userState.export();
|
|
163
|
-
console.log(stateSnapshot);
|
|
164
|
-
|
|
165
|
-
// Import partial state
|
|
166
|
-
userState.import({
|
|
167
|
-
name: 'Jane Doe',
|
|
168
|
-
preferences: {
|
|
169
|
-
darkMode: true
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
````
|
|
174
|
-
|
|
175
|
-
### Resetting State
|
|
176
|
-
Reset the state to its initial values:
|
|
177
|
-
|
|
178
|
-
````typescript
|
|
179
|
-
// Reset to initial values
|
|
180
|
-
userState.reset();
|
|
181
|
-
````
|
|
182
|
-
|
|
183
|
-
````
|
|
184
|
-
userState.subscribe(
|
|
185
|
-
'name',
|
|
186
|
-
(newValue, oldValue) => {
|
|
187
|
-
console.log(`Name reset from ${oldValue} to ${newValue}`);
|
|
188
|
-
},
|
|
189
|
-
{ executeOnReset: true }
|
|
190
|
-
);
|
|
191
|
-
````
|
|
192
|
-
|
|
193
|
-
### Cleanup
|
|
194
|
-
If you create short‑lived state instances, call `destroy()` to remove watchers and release references:
|
|
195
|
-
|
|
196
|
-
````typescript
|
|
197
|
-
userState.destroy();
|
|
198
|
-
````
|
|
199
|
-
|
|
200
|
-
## Advanced Features
|
|
201
|
-
### Deep Object Watching
|
|
202
|
-
When you modify nested properties, the system automatically detects these changes and triggers appropriate callbacks:
|
|
203
|
-
|
|
204
|
-
````typescript
|
|
205
|
-
// Both of these will trigger the 'preferences.darkMode' subscription
|
|
206
|
-
userState.state.preferences.darkMode = true;
|
|
207
|
-
userState.state.preferences = { darkMode: true, notifications: false };
|
|
208
|
-
````
|
|
209
|
-
|
|
210
|
-
### Type-Safe Path Access
|
|
211
|
-
The state system enforces type safety for property paths:
|
|
212
|
-
|
|
213
|
-
````typescript
|
|
214
|
-
// TypeScript will error on invalid paths
|
|
215
|
-
userState.subscribe(
|
|
216
|
-
'preferences.invalidProperty', // Type error!
|
|
217
|
-
(newValue, oldValue) => {
|
|
218
|
-
// ...
|
|
219
|
-
}
|
|
220
|
-
);
|
|
221
|
-
````
|
|
222
|
-
|
|
223
|
-
### Smart Comparison
|
|
224
|
-
The system performs deep equality checks before triggering change handlers, ensuring callbacks are only called when values actually change:
|
|
225
|
-
|
|
226
|
-
````typescript
|
|
227
|
-
// This won't trigger change handlers if the values are deeply equal
|
|
228
|
-
userState.state.preferences = { darkMode: false, notifications: true };
|
|
229
|
-
````
|
|
230
|
-
|
|
231
|
-
## Example: Complete Workflow
|
|
232
|
-
|
|
233
|
-
````typescript
|
|
234
|
-
// 1. Define state interface
|
|
235
|
-
interface FormState {
|
|
236
|
-
username: string;
|
|
237
|
-
password: string;
|
|
238
|
-
validation: {
|
|
239
|
-
usernameValid: boolean;
|
|
240
|
-
passwordValid: boolean;
|
|
241
|
-
};
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
// 2. Create state class
|
|
245
|
-
class FormStateManager extends State<FormState> {
|
|
246
|
-
constructor() {
|
|
247
|
-
super({
|
|
248
|
-
username: '',
|
|
249
|
-
password: '',
|
|
250
|
-
validation: {
|
|
251
|
-
usernameValid: false,
|
|
252
|
-
passwordValid: false
|
|
253
|
-
}
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
// Helper methods can be added to state classes
|
|
258
|
-
public validateForm(): boolean {
|
|
259
|
-
return this.state.validation.usernameValid &&
|
|
260
|
-
this.state.validation.passwordValid;
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
// 3. Create instance
|
|
265
|
-
const formState = new FormStateManager();
|
|
266
|
-
|
|
267
|
-
// 4. Set up subscriptions
|
|
268
|
-
formState.subscribe(
|
|
269
|
-
'username',
|
|
270
|
-
(username) => {
|
|
271
|
-
// Validate username
|
|
272
|
-
const valid = username.length >= 3;
|
|
273
|
-
formState.state.validation.usernameValid = valid;
|
|
274
|
-
},
|
|
275
|
-
{ debounce: 300 }
|
|
276
|
-
);
|
|
277
|
-
|
|
278
|
-
formState.subscribe(
|
|
279
|
-
'password',
|
|
280
|
-
(password) => {
|
|
281
|
-
// Validate password
|
|
282
|
-
const valid = password.length >= 8;
|
|
283
|
-
formState.state.validation.passwordValid = valid;
|
|
284
|
-
},
|
|
285
|
-
{ debounce: 300 }
|
|
286
|
-
);
|
|
287
|
-
|
|
288
|
-
// 5. Watch form validity
|
|
289
|
-
formState.subscribe(
|
|
290
|
-
['validation.usernameValid', 'validation.passwordValid'],
|
|
291
|
-
(_, state) => {
|
|
292
|
-
const submitButton = document.getElementById('submit');
|
|
293
|
-
if (formState.validateForm()) {
|
|
294
|
-
submitButton.disabled = false;
|
|
295
|
-
} else {
|
|
296
|
-
submitButton.disabled = true;
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
);
|
|
300
|
-
|
|
301
|
-
// 6. Use the state
|
|
302
|
-
formState.state.username = 'john_doe';
|
|
303
|
-
formState.state.password = 'securePassword123';
|
|
304
|
-
|
|
305
|
-
// 7. Reset when needed
|
|
306
|
-
document.getElementById('reset').addEventListener('click', () => {
|
|
307
|
-
formState.reset();
|
|
308
|
-
});
|
|
309
|
-
````
|
package/env.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/// <reference types="vite/client" />
|
package/eslint.config.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import eslint from '@eslint/js';
|
|
2
|
-
import tseslint from 'typescript-eslint';
|
|
3
|
-
import pluginVue from 'eslint-plugin-vue';
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
defineConfigWithVueTs,
|
|
7
|
-
vueTsConfigs,
|
|
8
|
-
} from '@vue/eslint-config-typescript'
|
|
9
|
-
|
|
10
|
-
export default defineConfigWithVueTs(
|
|
11
|
-
eslint.configs.recommended,
|
|
12
|
-
...tseslint.configs.recommended,
|
|
13
|
-
...pluginVue.configs['flat/recommended'],
|
|
14
|
-
vueTsConfigs.recommended,
|
|
15
|
-
)
|
package/release-tool.json
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version_file": "package.json",
|
|
3
|
-
"version_pattern": "\"version\":\\s*\"([0-9]+\\.[0-9]+\\.[0-9]+(?:-[a-z]+\\.[0-9]+)?)\"",
|
|
4
|
-
"version_template": "\"version\": \"{}\"",
|
|
5
|
-
"develop_branch": "develop",
|
|
6
|
-
"main_branch": "main",
|
|
7
|
-
"docs": {
|
|
8
|
-
"build": {
|
|
9
|
-
"cwd": "./docs",
|
|
10
|
-
"commands": [
|
|
11
|
-
["npm", "ci"],
|
|
12
|
-
["npm", "run", "docs:build"]
|
|
13
|
-
],
|
|
14
|
-
"output_dir": ".vitepress/dist"
|
|
15
|
-
},
|
|
16
|
-
"publish": {
|
|
17
|
-
"repo_path": "./docs",
|
|
18
|
-
"remote": "origin",
|
|
19
|
-
"branch": "gh-pages",
|
|
20
|
-
"subdir": "",
|
|
21
|
-
"commit_message": "docs: publish {tag}",
|
|
22
|
-
"add_nojekyll": true,
|
|
23
|
-
"force_push": true
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|