@blueprint-ts/core 4.1.0-beta.1 → 4.1.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (507) hide show
  1. package/dist/bulkRequests/BulkRequestEvent.enum.d.ts +4 -0
  2. package/dist/bulkRequests/BulkRequestEvent.enum.js +5 -0
  3. package/dist/bulkRequests/BulkRequestSender.d.ts +31 -0
  4. package/dist/bulkRequests/BulkRequestSender.js +161 -0
  5. package/dist/bulkRequests/BulkRequestWrapper.d.ts +15 -0
  6. package/dist/bulkRequests/BulkRequestWrapper.js +50 -0
  7. package/dist/bulkRequests/index.d.ts +5 -0
  8. package/dist/bulkRequests/index.js +5 -0
  9. package/{src/laravel/pagination/contracts/PaginationResponseBodyContract.ts → dist/laravel/pagination/contracts/PaginationResponseBodyContract.d.ts} +4 -4
  10. package/dist/laravel/pagination/contracts/PaginationResponseBodyContract.js +1 -0
  11. package/dist/laravel/pagination/dataDrivers/RequestDriver.d.ts +10 -0
  12. package/dist/laravel/pagination/dataDrivers/RequestDriver.js +18 -0
  13. package/dist/laravel/pagination/index.d.ts +4 -0
  14. package/dist/laravel/pagination/index.js +2 -0
  15. package/dist/laravel/requests/JsonBaseRequest.d.ts +14 -0
  16. package/dist/laravel/requests/JsonBaseRequest.js +15 -0
  17. package/dist/laravel/requests/PaginationJsonBaseRequest.d.ts +8 -0
  18. package/dist/laravel/requests/PaginationJsonBaseRequest.js +13 -0
  19. package/dist/laravel/requests/index.d.ts +7 -0
  20. package/dist/laravel/requests/index.js +5 -0
  21. package/dist/laravel/requests/responses/JsonResponse.d.ts +5 -0
  22. package/dist/laravel/requests/responses/JsonResponse.js +6 -0
  23. package/dist/laravel/requests/responses/PaginationResponse.d.ts +7 -0
  24. package/dist/laravel/requests/responses/PaginationResponse.js +9 -0
  25. package/dist/pagination/BasePaginator.d.ts +19 -0
  26. package/dist/pagination/BasePaginator.js +65 -0
  27. package/dist/pagination/InfiniteScroller.d.ts +6 -0
  28. package/dist/pagination/InfiniteScroller.js +17 -0
  29. package/dist/pagination/PageAwarePaginator.d.ts +32 -0
  30. package/dist/pagination/PageAwarePaginator.js +86 -0
  31. package/dist/pagination/StatePaginator.d.ts +25 -0
  32. package/dist/pagination/StatePaginator.js +55 -0
  33. package/dist/pagination/contracts/BaseViewDriverContract.d.ts +6 -0
  34. package/dist/pagination/contracts/BaseViewDriverContract.js +1 -0
  35. package/{src/pagination/contracts/BaseViewDriverFactoryContract.ts → dist/pagination/contracts/BaseViewDriverFactoryContract.d.ts} +2 -3
  36. package/dist/pagination/contracts/BaseViewDriverFactoryContract.js +1 -0
  37. package/dist/pagination/contracts/PaginateableRequestContract.d.ts +4 -0
  38. package/dist/pagination/contracts/PaginateableRequestContract.js +1 -0
  39. package/dist/pagination/contracts/PaginationDataDriverContract.d.ts +4 -0
  40. package/dist/pagination/contracts/PaginationDataDriverContract.js +1 -0
  41. package/{src/pagination/contracts/PaginationResponseContract.ts → dist/pagination/contracts/PaginationResponseContract.d.ts} +3 -5
  42. package/dist/pagination/contracts/PaginationResponseContract.js +1 -0
  43. package/{src/pagination/contracts/PaginatorLoadDataOptions.ts → dist/pagination/contracts/PaginatorLoadDataOptions.d.ts} +2 -2
  44. package/dist/pagination/contracts/PaginatorLoadDataOptions.js +1 -0
  45. package/{src/pagination/contracts/StatePaginationDataDriverContract.ts → dist/pagination/contracts/StatePaginationDataDriverContract.d.ts} +2 -3
  46. package/dist/pagination/contracts/StatePaginationDataDriverContract.js +1 -0
  47. package/dist/pagination/contracts/ViewDriverContract.d.ts +9 -0
  48. package/dist/pagination/contracts/ViewDriverContract.js +1 -0
  49. package/dist/pagination/contracts/ViewDriverFactoryContract.d.ts +4 -0
  50. package/dist/pagination/contracts/ViewDriverFactoryContract.js +1 -0
  51. package/dist/pagination/dataDrivers/ArrayDriver.d.ts +9 -0
  52. package/dist/pagination/dataDrivers/ArrayDriver.js +20 -0
  53. package/dist/pagination/dtos/PaginationDataDto.d.ts +7 -0
  54. package/dist/pagination/dtos/PaginationDataDto.js +12 -0
  55. package/dist/pagination/dtos/StatePaginationDataDto.d.ts +7 -0
  56. package/dist/pagination/dtos/StatePaginationDataDto.js +13 -0
  57. package/dist/pagination/factories/VueBaseViewDriverFactory.d.ts +5 -0
  58. package/dist/pagination/factories/VueBaseViewDriverFactory.js +6 -0
  59. package/dist/pagination/factories/VuePaginationDriverFactory.d.ts +5 -0
  60. package/dist/pagination/factories/VuePaginationDriverFactory.js +6 -0
  61. package/dist/pagination/frontendDrivers/VueBaseViewDriver.d.ts +11 -0
  62. package/dist/pagination/frontendDrivers/VueBaseViewDriver.js +19 -0
  63. package/dist/pagination/frontendDrivers/VuePaginationDriver.d.ts +21 -0
  64. package/dist/pagination/frontendDrivers/VuePaginationDriver.js +41 -0
  65. package/dist/pagination/index.d.ts +22 -0
  66. package/dist/pagination/index.js +13 -0
  67. package/dist/persistenceDrivers/LocalStorageDriver.d.ts +9 -0
  68. package/dist/persistenceDrivers/LocalStorageDriver.js +18 -0
  69. package/dist/persistenceDrivers/NonPersistentDriver.d.ts +7 -0
  70. package/dist/persistenceDrivers/NonPersistentDriver.js +8 -0
  71. package/dist/persistenceDrivers/SessionStorageDriver.d.ts +9 -0
  72. package/dist/persistenceDrivers/SessionStorageDriver.js +18 -0
  73. package/dist/persistenceDrivers/index.d.ts +6 -0
  74. package/dist/persistenceDrivers/index.js +4 -0
  75. package/dist/persistenceDrivers/types/PersistenceDriver.d.ts +5 -0
  76. package/dist/persistenceDrivers/types/PersistenceDriver.js +1 -0
  77. package/dist/requests/BaseRequest.d.ts +62 -0
  78. package/dist/requests/BaseRequest.js +224 -0
  79. package/dist/requests/ErrorHandler.d.ts +11 -0
  80. package/dist/requests/ErrorHandler.js +127 -0
  81. package/dist/requests/RequestConcurrencyMode.enum.d.ts +6 -0
  82. package/dist/requests/RequestConcurrencyMode.enum.js +7 -0
  83. package/dist/requests/RequestErrorRouter.d.ts +38 -0
  84. package/dist/requests/RequestErrorRouter.js +38 -0
  85. package/dist/requests/RequestEvents.enum.d.ts +4 -0
  86. package/dist/requests/RequestEvents.enum.js +5 -0
  87. package/dist/requests/RequestMethod.enum.d.ts +8 -0
  88. package/dist/requests/RequestMethod.enum.js +9 -0
  89. package/dist/requests/bodies/BinaryBody.d.ts +10 -0
  90. package/dist/requests/bodies/BinaryBody.js +22 -0
  91. package/dist/requests/bodies/FormDataBody.d.ts +14 -0
  92. package/dist/requests/bodies/FormDataBody.js +60 -0
  93. package/dist/requests/bodies/JsonBody.d.ts +8 -0
  94. package/dist/requests/bodies/JsonBody.js +13 -0
  95. package/{src/requests/contracts/AbortableRequestContract.ts → dist/requests/contracts/AbortableRequestContract.d.ts} +1 -1
  96. package/dist/requests/contracts/AbortableRequestContract.js +1 -0
  97. package/dist/requests/contracts/BaseRequestContract.d.ts +23 -0
  98. package/dist/requests/contracts/BaseRequestContract.js +1 -0
  99. package/dist/requests/contracts/BodyContract.d.ts +6 -0
  100. package/dist/requests/contracts/BodyContract.js +1 -0
  101. package/dist/requests/contracts/BodyFactoryContract.d.ts +4 -0
  102. package/dist/requests/contracts/BodyFactoryContract.js +1 -0
  103. package/dist/requests/contracts/DriverConfigContract.d.ts +8 -0
  104. package/dist/requests/contracts/DriverConfigContract.js +1 -0
  105. package/dist/requests/contracts/HeadersContract.d.ts +7 -0
  106. package/dist/requests/contracts/HeadersContract.js +1 -0
  107. package/dist/requests/contracts/RequestDriverContract.d.ts +8 -0
  108. package/dist/requests/contracts/RequestDriverContract.js +1 -0
  109. package/dist/requests/contracts/RequestLoaderContract.d.ts +4 -0
  110. package/dist/requests/contracts/RequestLoaderContract.js +1 -0
  111. package/{src/requests/contracts/RequestLoaderFactoryContract.ts → dist/requests/contracts/RequestLoaderFactoryContract.d.ts} +2 -3
  112. package/dist/requests/contracts/RequestLoaderFactoryContract.js +1 -0
  113. package/dist/requests/contracts/ResponseContract.d.ts +5 -0
  114. package/dist/requests/contracts/ResponseContract.js +1 -0
  115. package/dist/requests/drivers/contracts/ResponseHandlerContract.d.ts +9 -0
  116. package/dist/requests/drivers/contracts/ResponseHandlerContract.js +1 -0
  117. package/dist/requests/drivers/fetch/FetchDriver.d.ts +26 -0
  118. package/dist/requests/drivers/fetch/FetchDriver.js +73 -0
  119. package/dist/requests/drivers/fetch/FetchResponse.d.ts +12 -0
  120. package/dist/requests/drivers/fetch/FetchResponse.js +38 -0
  121. package/dist/requests/drivers/xhr/XMLHttpRequestDriver.d.ts +13 -0
  122. package/dist/requests/drivers/xhr/XMLHttpRequestDriver.js +107 -0
  123. package/dist/requests/drivers/xhr/XMLHttpRequestResponse.d.ts +17 -0
  124. package/dist/requests/drivers/xhr/XMLHttpRequestResponse.js +84 -0
  125. package/dist/requests/exceptions/BadGatewayException.d.ts +3 -0
  126. package/dist/requests/exceptions/BadGatewayException.js +3 -0
  127. package/dist/requests/exceptions/BadRequestException.d.ts +3 -0
  128. package/dist/requests/exceptions/BadRequestException.js +3 -0
  129. package/dist/requests/exceptions/ConflictException.d.ts +3 -0
  130. package/dist/requests/exceptions/ConflictException.js +3 -0
  131. package/dist/requests/exceptions/ForbiddenException.d.ts +3 -0
  132. package/dist/requests/exceptions/ForbiddenException.js +3 -0
  133. package/dist/requests/exceptions/GatewayTimeoutException.d.ts +3 -0
  134. package/dist/requests/exceptions/GatewayTimeoutException.js +3 -0
  135. package/dist/requests/exceptions/GoneException.d.ts +3 -0
  136. package/dist/requests/exceptions/GoneException.js +3 -0
  137. package/dist/requests/exceptions/InvalidJsonException.d.ts +7 -0
  138. package/dist/requests/exceptions/InvalidJsonException.js +10 -0
  139. package/dist/requests/exceptions/LockedException.d.ts +3 -0
  140. package/dist/requests/exceptions/LockedException.js +3 -0
  141. package/dist/requests/exceptions/MethodNotAllowedException.d.ts +3 -0
  142. package/dist/requests/exceptions/MethodNotAllowedException.js +3 -0
  143. package/dist/requests/exceptions/NoResponseReceivedException.d.ts +3 -0
  144. package/{src/requests/exceptions/NoResponseReceivedException.ts → dist/requests/exceptions/NoResponseReceivedException.js} +3 -3
  145. package/dist/requests/exceptions/NotFoundException.d.ts +3 -0
  146. package/dist/requests/exceptions/NotFoundException.js +3 -0
  147. package/dist/requests/exceptions/NotImplementedException.d.ts +3 -0
  148. package/dist/requests/exceptions/NotImplementedException.js +3 -0
  149. package/dist/requests/exceptions/PageExpiredException.d.ts +3 -0
  150. package/dist/requests/exceptions/PageExpiredException.js +3 -0
  151. package/dist/requests/exceptions/PayloadTooLargeException.d.ts +3 -0
  152. package/dist/requests/exceptions/PayloadTooLargeException.js +3 -0
  153. package/dist/requests/exceptions/PreconditionFailedException.d.ts +3 -0
  154. package/dist/requests/exceptions/PreconditionFailedException.js +3 -0
  155. package/dist/requests/exceptions/RequestTimeoutException.d.ts +3 -0
  156. package/dist/requests/exceptions/RequestTimeoutException.js +3 -0
  157. package/dist/requests/exceptions/ResponseBodyException.d.ts +7 -0
  158. package/dist/requests/exceptions/ResponseBodyException.js +10 -0
  159. package/dist/requests/exceptions/ResponseException.d.ts +6 -0
  160. package/dist/requests/exceptions/ResponseException.js +9 -0
  161. package/dist/requests/exceptions/ServerErrorException.d.ts +3 -0
  162. package/dist/requests/exceptions/ServerErrorException.js +3 -0
  163. package/dist/requests/exceptions/ServiceUnavailableException.d.ts +3 -0
  164. package/dist/requests/exceptions/ServiceUnavailableException.js +3 -0
  165. package/dist/requests/exceptions/StaleResponseException.d.ts +5 -0
  166. package/dist/requests/exceptions/StaleResponseException.js +10 -0
  167. package/dist/requests/exceptions/TooManyRequestsException.d.ts +3 -0
  168. package/dist/requests/exceptions/TooManyRequestsException.js +3 -0
  169. package/dist/requests/exceptions/UnauthorizedException.d.ts +3 -0
  170. package/dist/requests/exceptions/UnauthorizedException.js +3 -0
  171. package/dist/requests/exceptions/UnsupportedMediaTypeException.d.ts +3 -0
  172. package/dist/requests/exceptions/UnsupportedMediaTypeException.js +3 -0
  173. package/dist/requests/exceptions/ValidationException.d.ts +3 -0
  174. package/dist/requests/exceptions/ValidationException.js +3 -0
  175. package/dist/requests/exceptions/index.d.ts +25 -0
  176. package/dist/requests/exceptions/index.js +25 -0
  177. package/dist/requests/factories/BinaryBodyFactory.d.ts +8 -0
  178. package/dist/requests/factories/BinaryBodyFactory.js +9 -0
  179. package/dist/requests/factories/FormDataFactory.d.ts +12 -0
  180. package/dist/requests/factories/FormDataFactory.js +6 -0
  181. package/dist/requests/factories/JsonBodyFactory.d.ts +5 -0
  182. package/dist/requests/factories/JsonBodyFactory.js +6 -0
  183. package/dist/requests/index.d.ts +31 -0
  184. package/dist/requests/index.js +19 -0
  185. package/dist/requests/responses/BaseResponse.d.ts +14 -0
  186. package/dist/requests/responses/BaseResponse.js +36 -0
  187. package/dist/requests/responses/BlobResponse.d.ts +7 -0
  188. package/dist/requests/responses/BlobResponse.js +16 -0
  189. package/dist/requests/responses/JsonResponse.d.ts +5 -0
  190. package/dist/requests/responses/JsonResponse.js +12 -0
  191. package/dist/requests/responses/PlainTextResponse.d.ts +5 -0
  192. package/dist/requests/responses/PlainTextResponse.js +12 -0
  193. package/{src/requests/types/RequestConcurrencyOptions.ts → dist/requests/types/RequestConcurrencyOptions.d.ts} +4 -5
  194. package/dist/requests/types/RequestConcurrencyOptions.js +1 -0
  195. package/dist/requests/types/RequestUploadProgress.d.ts +6 -0
  196. package/dist/requests/types/RequestUploadProgress.js +1 -0
  197. package/dist/support/DeferredPromise.d.ts +37 -0
  198. package/dist/support/DeferredPromise.js +55 -0
  199. package/dist/support/helpers.d.ts +5 -0
  200. package/dist/support/helpers.js +69 -0
  201. package/{src/support/index.ts → dist/support/index.d.ts} +3 -4
  202. package/dist/support/index.js +3 -0
  203. package/dist/vue/composables/useConfirmDialog.d.ts +20 -0
  204. package/dist/vue/composables/useConfirmDialog.js +52 -0
  205. package/dist/vue/composables/useGlobalCheckbox.d.ts +13 -0
  206. package/dist/vue/composables/useGlobalCheckbox.js +123 -0
  207. package/dist/vue/composables/useIsEmpty.d.ts +4 -0
  208. package/dist/vue/composables/useIsEmpty.js +27 -0
  209. package/dist/vue/composables/useIsOpen.d.ts +5 -0
  210. package/dist/vue/composables/useIsOpen.js +25 -0
  211. package/dist/vue/composables/useIsOpenFromVar.d.ts +6 -0
  212. package/dist/vue/composables/useIsOpenFromVar.js +45 -0
  213. package/dist/vue/composables/useModelWrapper.d.ts +9 -0
  214. package/dist/vue/composables/useModelWrapper.js +18 -0
  215. package/dist/vue/composables/useOnOpen.d.ts +7 -0
  216. package/dist/vue/composables/useOnOpen.js +25 -0
  217. package/{src/vue/contracts/ModelValueOptions.ts → dist/vue/contracts/ModelValueOptions.d.ts} +1 -1
  218. package/dist/vue/contracts/ModelValueOptions.js +1 -0
  219. package/dist/vue/contracts/ModelValueProps.d.ts +3 -0
  220. package/dist/vue/contracts/ModelValueProps.js +1 -0
  221. package/dist/vue/forms/BaseForm.d.ts +162 -0
  222. package/dist/vue/forms/BaseForm.js +997 -0
  223. package/dist/vue/forms/PropertyAwareArray.d.ts +53 -0
  224. package/dist/vue/forms/PropertyAwareArray.js +54 -0
  225. package/{src/vue/forms/index.ts → dist/vue/forms/index.d.ts} +9 -11
  226. package/dist/vue/forms/index.js +6 -0
  227. package/dist/vue/forms/types/PersistedForm.d.ts +6 -0
  228. package/dist/vue/forms/types/PersistedForm.js +1 -0
  229. package/dist/vue/forms/validation/ValidationMode.enum.d.ts +11 -0
  230. package/dist/vue/forms/validation/ValidationMode.enum.js +14 -0
  231. package/dist/vue/forms/validation/index.d.ts +12 -0
  232. package/dist/vue/forms/validation/index.js +9 -0
  233. package/dist/vue/forms/validation/rules/BaseRule.d.ts +5 -0
  234. package/dist/vue/forms/validation/rules/BaseRule.js +5 -0
  235. package/dist/vue/forms/validation/rules/ConfirmedRule.d.ts +10 -0
  236. package/dist/vue/forms/validation/rules/ConfirmedRule.js +26 -0
  237. package/dist/vue/forms/validation/rules/EmailRule.d.ts +7 -0
  238. package/dist/vue/forms/validation/rules/EmailRule.js +19 -0
  239. package/dist/vue/forms/validation/rules/JsonRule.d.ts +7 -0
  240. package/dist/vue/forms/validation/rules/JsonRule.js +25 -0
  241. package/dist/vue/forms/validation/rules/MinRule.d.ts +26 -0
  242. package/dist/vue/forms/validation/rules/MinRule.js +52 -0
  243. package/dist/vue/forms/validation/rules/RequiredRule.d.ts +7 -0
  244. package/dist/vue/forms/validation/rules/RequiredRule.js +16 -0
  245. package/dist/vue/forms/validation/rules/UrlRule.d.ts +7 -0
  246. package/dist/vue/forms/validation/rules/UrlRule.js +22 -0
  247. package/{src/vue/forms/validation/types/BidirectionalRule.ts → dist/vue/forms/validation/types/BidirectionalRule.d.ts} +4 -4
  248. package/dist/vue/forms/validation/types/BidirectionalRule.js +1 -0
  249. package/dist/vue/forms/validation/types/ValidationRules.d.ts +11 -0
  250. package/dist/vue/forms/validation/types/ValidationRules.js +1 -0
  251. package/dist/vue/index.d.ts +11 -0
  252. package/dist/vue/index.js +10 -0
  253. package/dist/vue/requests/factories/VueRequestLoaderFactory.d.ts +6 -0
  254. package/dist/vue/requests/factories/VueRequestLoaderFactory.js +6 -0
  255. package/{src/vue/requests/index.ts → dist/vue/requests/index.d.ts} +4 -5
  256. package/dist/vue/requests/index.js +4 -0
  257. package/dist/vue/requests/loaders/VueRequestBatchLoader.d.ts +12 -0
  258. package/dist/vue/requests/loaders/VueRequestBatchLoader.js +29 -0
  259. package/dist/vue/requests/loaders/VueRequestLoader.d.ts +8 -0
  260. package/dist/vue/requests/loaders/VueRequestLoader.js +12 -0
  261. package/dist/vue/router/routeResourceBinding/RouteResourceBoundView.d.ts +57 -0
  262. package/dist/vue/router/routeResourceBinding/RouteResourceBoundView.js +135 -0
  263. package/dist/vue/router/routeResourceBinding/RouteResourceRequestResolver.d.ts +6 -0
  264. package/dist/vue/router/routeResourceBinding/RouteResourceRequestResolver.js +20 -0
  265. package/dist/vue/router/routeResourceBinding/defineRoute.d.ts +23 -0
  266. package/dist/vue/router/routeResourceBinding/defineRoute.js +42 -0
  267. package/dist/vue/router/routeResourceBinding/index.d.ts +8 -0
  268. package/dist/vue/router/routeResourceBinding/index.js +6 -0
  269. package/dist/vue/router/routeResourceBinding/installRouteInjection.d.ts +14 -0
  270. package/dist/vue/router/routeResourceBinding/installRouteInjection.js +133 -0
  271. package/dist/vue/router/routeResourceBinding/types.d.ts +55 -0
  272. package/dist/vue/router/routeResourceBinding/types.js +1 -0
  273. package/dist/vue/router/routeResourceBinding/useRouteResource.d.ts +8 -0
  274. package/dist/vue/router/routeResourceBinding/useRouteResource.js +29 -0
  275. package/dist/vue/state/State.d.ts +75 -0
  276. package/dist/vue/state/State.js +267 -0
  277. package/dist/vue/state/index.d.ts +2 -0
  278. package/dist/vue/state/index.js +2 -0
  279. package/package.json +81 -23
  280. package/.editorconfig +0 -508
  281. package/.eslintrc.cjs +0 -15
  282. package/.prettierrc.json +0 -8
  283. package/CHANGELOG.md +0 -213
  284. package/docker-compose.yaml +0 -8
  285. package/docs/.vitepress/config.ts +0 -124
  286. package/docs/index.md +0 -13
  287. package/docs/laravel/pagination.md +0 -67
  288. package/docs/laravel/requests.md +0 -62
  289. package/docs/services/pagination/index.md +0 -46
  290. package/docs/services/pagination/infinite-scroller.md +0 -20
  291. package/docs/services/pagination/page-aware.md +0 -51
  292. package/docs/services/pagination/state-pagination.md +0 -77
  293. package/docs/services/pagination/updating-rows.md +0 -52
  294. package/docs/services/persistence/index.md +0 -46
  295. package/docs/services/requests/abort-requests.md +0 -29
  296. package/docs/services/requests/bulk-requests.md +0 -70
  297. package/docs/services/requests/concurrency.md +0 -58
  298. package/docs/services/requests/drivers.md +0 -115
  299. package/docs/services/requests/error-handling.md +0 -153
  300. package/docs/services/requests/events.md +0 -53
  301. package/docs/services/requests/file-uploads.md +0 -105
  302. package/docs/services/requests/getting-started.md +0 -201
  303. package/docs/services/requests/headers.md +0 -40
  304. package/docs/services/requests/loading.md +0 -63
  305. package/docs/services/requests/request-bodies.md +0 -61
  306. package/docs/services/requests/responses.md +0 -34
  307. package/docs/services/support/deferred-promise.md +0 -63
  308. package/docs/services/support/helpers.md +0 -77
  309. package/docs/services/support/index.md +0 -6
  310. package/docs/upgrading/v1-to-v2.md +0 -64
  311. package/docs/upgrading/v2-to-v3.md +0 -52
  312. package/docs/upgrading/v3-to-v4.md +0 -214
  313. package/docs/upgrading.md +0 -0
  314. package/docs/vue/composables/use-confirm-dialog.md +0 -96
  315. package/docs/vue/composables/use-global-checkbox.md +0 -73
  316. package/docs/vue/composables/use-is-empty.md +0 -26
  317. package/docs/vue/composables/use-is-open-from-var.md +0 -32
  318. package/docs/vue/composables/use-is-open.md +0 -28
  319. package/docs/vue/composables/use-model-wrapper.md +0 -29
  320. package/docs/vue/composables/use-on-open.md +0 -26
  321. package/docs/vue/forms/arrays.md +0 -102
  322. package/docs/vue/forms/errors.md +0 -52
  323. package/docs/vue/forms/index.md +0 -99
  324. package/docs/vue/forms/payloads.md +0 -99
  325. package/docs/vue/forms/persistence.md +0 -19
  326. package/docs/vue/forms/state-and-properties.md +0 -26
  327. package/docs/vue/forms/utilities.md +0 -27
  328. package/docs/vue/forms/validation.md +0 -189
  329. package/docs/vue/requests/loading.md +0 -51
  330. package/docs/vue/router/route-resource-binding.md +0 -240
  331. package/docs/vue/state.md +0 -309
  332. package/env.d.ts +0 -1
  333. package/eslint.config.js +0 -15
  334. package/release-tool.json +0 -26
  335. package/src/bulkRequests/BulkRequestEvent.enum.ts +0 -4
  336. package/src/bulkRequests/BulkRequestSender.ts +0 -196
  337. package/src/bulkRequests/BulkRequestWrapper.ts +0 -49
  338. package/src/bulkRequests/index.ts +0 -6
  339. package/src/laravel/pagination/dataDrivers/RequestDriver.ts +0 -30
  340. package/src/laravel/pagination/index.ts +0 -6
  341. package/src/laravel/requests/JsonBaseRequest.ts +0 -35
  342. package/src/laravel/requests/PaginationJsonBaseRequest.ts +0 -29
  343. package/src/laravel/requests/index.ts +0 -9
  344. package/src/laravel/requests/responses/JsonResponse.ts +0 -8
  345. package/src/laravel/requests/responses/PaginationResponse.ts +0 -16
  346. package/src/pagination/BasePaginator.ts +0 -94
  347. package/src/pagination/InfiniteScroller.ts +0 -22
  348. package/src/pagination/PageAwarePaginator.ts +0 -132
  349. package/src/pagination/StatePaginator.ts +0 -86
  350. package/src/pagination/contracts/BaseViewDriverContract.ts +0 -6
  351. package/src/pagination/contracts/PaginateableRequestContract.ts +0 -13
  352. package/src/pagination/contracts/PaginationDataDriverContract.ts +0 -5
  353. package/src/pagination/contracts/ViewDriverContract.ts +0 -10
  354. package/src/pagination/contracts/ViewDriverFactoryContract.ts +0 -5
  355. package/src/pagination/dataDrivers/ArrayDriver.ts +0 -28
  356. package/src/pagination/dtos/PaginationDataDto.ts +0 -14
  357. package/src/pagination/dtos/StatePaginationDataDto.ts +0 -19
  358. package/src/pagination/factories/VueBaseViewDriverFactory.ts +0 -9
  359. package/src/pagination/factories/VuePaginationDriverFactory.ts +0 -9
  360. package/src/pagination/frontendDrivers/VueBaseViewDriver.ts +0 -28
  361. package/src/pagination/frontendDrivers/VuePaginationDriver.ts +0 -61
  362. package/src/pagination/index.ts +0 -46
  363. package/src/persistenceDrivers/LocalStorageDriver.ts +0 -22
  364. package/src/persistenceDrivers/NonPersistentDriver.ts +0 -12
  365. package/src/persistenceDrivers/SessionStorageDriver.ts +0 -22
  366. package/src/persistenceDrivers/index.ts +0 -8
  367. package/src/persistenceDrivers/types/PersistenceDriver.ts +0 -5
  368. package/src/requests/BaseRequest.ts +0 -321
  369. package/src/requests/ErrorHandler.ts +0 -144
  370. package/src/requests/RequestConcurrencyMode.enum.ts +0 -6
  371. package/src/requests/RequestErrorRouter.ts +0 -89
  372. package/src/requests/RequestEvents.enum.ts +0 -4
  373. package/src/requests/RequestMethod.enum.ts +0 -8
  374. package/src/requests/bodies/FormDataBody.ts +0 -81
  375. package/src/requests/bodies/JsonBody.ts +0 -16
  376. package/src/requests/contracts/BaseRequestContract.ts +0 -39
  377. package/src/requests/contracts/BodyContract.ts +0 -7
  378. package/src/requests/contracts/BodyFactoryContract.ts +0 -5
  379. package/src/requests/contracts/DriverConfigContract.ts +0 -9
  380. package/src/requests/contracts/HeadersContract.ts +0 -5
  381. package/src/requests/contracts/RequestDriverContract.ts +0 -15
  382. package/src/requests/contracts/RequestLoaderContract.ts +0 -5
  383. package/src/requests/contracts/ResponseContract.ts +0 -7
  384. package/src/requests/drivers/contracts/ResponseHandlerContract.ts +0 -10
  385. package/src/requests/drivers/fetch/FetchDriver.ts +0 -115
  386. package/src/requests/drivers/fetch/FetchResponse.ts +0 -30
  387. package/src/requests/drivers/xhr/XMLHttpRequestDriver.ts +0 -138
  388. package/src/requests/drivers/xhr/XMLHttpRequestResponse.ts +0 -95
  389. package/src/requests/exceptions/BadGatewayException.ts +0 -3
  390. package/src/requests/exceptions/BadRequestException.ts +0 -3
  391. package/src/requests/exceptions/ConflictException.ts +0 -3
  392. package/src/requests/exceptions/ForbiddenException.ts +0 -3
  393. package/src/requests/exceptions/GatewayTimeoutException.ts +0 -3
  394. package/src/requests/exceptions/GoneException.ts +0 -3
  395. package/src/requests/exceptions/InvalidJsonException.ts +0 -15
  396. package/src/requests/exceptions/LockedException.ts +0 -3
  397. package/src/requests/exceptions/MethodNotAllowedException.ts +0 -3
  398. package/src/requests/exceptions/NotFoundException.ts +0 -3
  399. package/src/requests/exceptions/NotImplementedException.ts +0 -3
  400. package/src/requests/exceptions/PageExpiredException.ts +0 -3
  401. package/src/requests/exceptions/PayloadTooLargeException.ts +0 -3
  402. package/src/requests/exceptions/PreconditionFailedException.ts +0 -3
  403. package/src/requests/exceptions/RequestTimeoutException.ts +0 -3
  404. package/src/requests/exceptions/ResponseBodyException.ts +0 -15
  405. package/src/requests/exceptions/ResponseException.ts +0 -11
  406. package/src/requests/exceptions/ServerErrorException.ts +0 -3
  407. package/src/requests/exceptions/ServiceUnavailableException.ts +0 -3
  408. package/src/requests/exceptions/StaleResponseException.ts +0 -13
  409. package/src/requests/exceptions/TooManyRequestsException.ts +0 -3
  410. package/src/requests/exceptions/UnauthorizedException.ts +0 -3
  411. package/src/requests/exceptions/UnsupportedMediaTypeException.ts +0 -3
  412. package/src/requests/exceptions/ValidationException.ts +0 -3
  413. package/src/requests/exceptions/index.ts +0 -51
  414. package/src/requests/factories/FormDataFactory.ts +0 -17
  415. package/src/requests/factories/JsonBodyFactory.ts +0 -9
  416. package/src/requests/index.ts +0 -61
  417. package/src/requests/responses/BaseResponse.ts +0 -41
  418. package/src/requests/responses/BlobResponse.ts +0 -19
  419. package/src/requests/responses/JsonResponse.ts +0 -15
  420. package/src/requests/responses/PlainTextResponse.ts +0 -15
  421. package/src/requests/types/RequestUploadProgress.ts +0 -6
  422. package/src/support/DeferredPromise.ts +0 -67
  423. package/src/support/helpers.ts +0 -78
  424. package/src/vue/composables/useConfirmDialog.ts +0 -63
  425. package/src/vue/composables/useGlobalCheckbox.ts +0 -145
  426. package/src/vue/composables/useIsEmpty.ts +0 -34
  427. package/src/vue/composables/useIsOpen.ts +0 -37
  428. package/src/vue/composables/useIsOpenFromVar.ts +0 -61
  429. package/src/vue/composables/useModelWrapper.ts +0 -27
  430. package/src/vue/composables/useOnOpen.ts +0 -34
  431. package/src/vue/contracts/ModelValueProps.ts +0 -3
  432. package/src/vue/forms/BaseForm.ts +0 -1192
  433. package/src/vue/forms/PropertyAwareArray.ts +0 -81
  434. package/src/vue/forms/types/PersistedForm.ts +0 -6
  435. package/src/vue/forms/validation/ValidationMode.enum.ts +0 -14
  436. package/src/vue/forms/validation/index.ts +0 -15
  437. package/src/vue/forms/validation/rules/BaseRule.ts +0 -7
  438. package/src/vue/forms/validation/rules/ConfirmedRule.ts +0 -39
  439. package/src/vue/forms/validation/rules/EmailRule.ts +0 -23
  440. package/src/vue/forms/validation/rules/JsonRule.ts +0 -28
  441. package/src/vue/forms/validation/rules/MinRule.ts +0 -61
  442. package/src/vue/forms/validation/rules/RequiredRule.ts +0 -19
  443. package/src/vue/forms/validation/rules/UrlRule.ts +0 -24
  444. package/src/vue/forms/validation/types/ValidationRules.ts +0 -15
  445. package/src/vue/index.ts +0 -14
  446. package/src/vue/requests/factories/VueRequestLoaderFactory.ts +0 -10
  447. package/src/vue/requests/loaders/VueRequestBatchLoader.ts +0 -35
  448. package/src/vue/requests/loaders/VueRequestLoader.ts +0 -18
  449. package/src/vue/router/routeResourceBinding/RouteResourceBoundView.ts +0 -145
  450. package/src/vue/router/routeResourceBinding/RouteResourceRequestResolver.ts +0 -11
  451. package/src/vue/router/routeResourceBinding/defineRoute.ts +0 -59
  452. package/src/vue/router/routeResourceBinding/index.ts +0 -11
  453. package/src/vue/router/routeResourceBinding/installRouteInjection.ts +0 -164
  454. package/src/vue/router/routeResourceBinding/types.ts +0 -53
  455. package/src/vue/router/routeResourceBinding/useRouteResource.ts +0 -24
  456. package/src/vue/state/State.ts +0 -380
  457. package/src/vue/state/index.ts +0 -3
  458. package/tests/service/bulkRequests/BulkRequestSender.test.ts +0 -76
  459. package/tests/service/bulkRequests/BulkRequestWrapper.test.ts +0 -51
  460. package/tests/service/helpers/mergeDeep.test.ts +0 -53
  461. package/tests/service/laravel/pagination/dataDrivers/RequestDriver.test.ts +0 -84
  462. package/tests/service/laravel/requests/JsonBaseRequest.test.ts +0 -43
  463. package/tests/service/laravel/requests/PaginationJsonBaseRequest.test.ts +0 -58
  464. package/tests/service/laravel/requests/responses/JsonResponse.test.ts +0 -59
  465. package/tests/service/laravel/requests/responses/PaginationResponse.test.ts +0 -127
  466. package/tests/service/pagination/BasePaginator.test.ts +0 -100
  467. package/tests/service/pagination/InfiniteScroller.test.ts +0 -101
  468. package/tests/service/pagination/PageAwarePaginator.test.ts +0 -133
  469. package/tests/service/pagination/StatePaginator.test.ts +0 -76
  470. package/tests/service/pagination/VueViewDrivers.test.ts +0 -46
  471. package/tests/service/pagination/dtos/PaginationDataDto.test.ts +0 -35
  472. package/tests/service/pagination/dtos/StatePaginationDataDto.test.ts +0 -14
  473. package/tests/service/pagination/factories/VuePaginationDriverFactory.test.ts +0 -32
  474. package/tests/service/pagination/frontendDrivers/VuePaginationDriver.test.ts +0 -66
  475. package/tests/service/persistenceDrivers/PersistenceDrivers.test.ts +0 -56
  476. package/tests/service/requests/BaseRequest.test.ts +0 -250
  477. package/tests/service/requests/BodiesAndFactories.test.ts +0 -28
  478. package/tests/service/requests/Enums.test.ts +0 -20
  479. package/tests/service/requests/ErrorHandler.test.ts +0 -188
  480. package/tests/service/requests/FormDataBody.test.ts +0 -63
  481. package/tests/service/requests/RequestErrorRouter.test.ts +0 -44
  482. package/tests/service/requests/Responses.test.ts +0 -83
  483. package/tests/service/requests/exceptions/Exceptions.test.ts +0 -43
  484. package/tests/service/requests/fetch/FetchDriver.test.ts +0 -76
  485. package/tests/service/requests/fetch/FetchResponse.test.ts +0 -21
  486. package/tests/service/requests/xhr/XMLHttpRequestDriver.test.ts +0 -178
  487. package/tests/service/support/DeferredPromise.test.ts +0 -40
  488. package/tests/service/support/helpers.test.ts +0 -37
  489. package/tests/vue/composables/useConfirmDialog.test.ts +0 -77
  490. package/tests/vue/composables/useGlobalCheckbox.test.ts +0 -126
  491. package/tests/vue/composables/useIsEmpty.test.ts +0 -18
  492. package/tests/vue/composables/useIsOpen.test.ts +0 -25
  493. package/tests/vue/composables/useIsOpenFromVar.test.ts +0 -22
  494. package/tests/vue/composables/useModelWrapper.test.ts +0 -30
  495. package/tests/vue/composables/useOnOpen.test.ts +0 -26
  496. package/tests/vue/forms/BaseForm.behavior.test.ts +0 -98
  497. package/tests/vue/forms/BaseForm.transformers.test.ts +0 -109
  498. package/tests/vue/forms/PropertyAwareArray.test.ts +0 -30
  499. package/tests/vue/forms/validation/ValidationRules.test.ts +0 -79
  500. package/tests/vue/requests/VueRequestLoaders.test.ts +0 -48
  501. package/tests/vue/router/routeResourceBinding/RouteResourceBoundView.test.ts +0 -344
  502. package/tests/vue/router/routeResourceBinding/RouteResourceUtils.test.ts +0 -70
  503. package/tests/vue/router/routeResourceBinding/installRouteInjection.test.ts +0 -450
  504. package/tests/vue/state/State.test.ts +0 -151
  505. package/tsconfig.json +0 -114
  506. package/vite.config.ts +0 -34
  507. package/vitest.config.ts +0 -23
@@ -0,0 +1,57 @@
1
+ import { type VNode } from 'vue';
2
+ /**
3
+ * Drop-in replacement for `<router-view>` that handles route resource
4
+ * injection loading and error states.
5
+ *
6
+ * When any injected resource is loading → renders the route's `loadingComponent`.
7
+ * When any injected resource has an error → renders the route's `errorComponent`
8
+ * (receives `error` and `refresh` as props).
9
+ * Otherwise → passes `{ Component, route }` to the default scoped slot,
10
+ * just like `<RouterView>`.
11
+ *
12
+ * Error and loading components are defined in the route via `defineRoute`:
13
+ *
14
+ * ```ts
15
+ * defineRoute<{ credential: CredentialResource }>()({
16
+ * path: '/credentials/:credentialId',
17
+ * component: CredentialShowPage,
18
+ * errorComponent: GenericErrorPage,
19
+ * loadingComponent: LoadingSpinner,
20
+ * inject: {
21
+ * credential: {
22
+ * from: 'credentialId',
23
+ * resolve: (id) => new RouteResourceRequestResolver(new CredentialShowRequest(id)),
24
+ * },
25
+ * },
26
+ * })
27
+ * ```
28
+ *
29
+ * Set `lazy: false` to render the target component immediately (without
30
+ * waiting for resources). The component can then handle loading/error
31
+ * states itself via `useRouteResource()`:
32
+ *
33
+ * ```ts
34
+ * defineRoute<{ credential: CredentialResource }>()({
35
+ * path: '/credentials/:credentialId',
36
+ * component: CredentialShowPage,
37
+ * lazy: false,
38
+ * inject: { ... },
39
+ * })
40
+ * ```
41
+ *
42
+ * Usage in layout (supports the same v-slot pattern as RouterView):
43
+ * ```vue
44
+ * <RouteResourceBoundView v-slot="{ Component, route }">
45
+ * <component :is="Component" v-if="Component" :key="route.meta.usePathKey ? route.path : undefined" />
46
+ * <EmptyState v-else />
47
+ * </RouteResourceBoundView>
48
+ * ```
49
+ *
50
+ * Or without a slot (renders the matched component automatically):
51
+ * ```vue
52
+ * <RouteResourceBoundView />
53
+ * ```
54
+ */
55
+ export declare const RouteResourceBoundView: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
56
+ [key: string]: any;
57
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,135 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { computed, defineComponent, h } from 'vue';
11
+ import { RouterView, useRoute } from 'vue-router';
12
+ /**
13
+ * Drop-in replacement for `<router-view>` that handles route resource
14
+ * injection loading and error states.
15
+ *
16
+ * When any injected resource is loading → renders the route's `loadingComponent`.
17
+ * When any injected resource has an error → renders the route's `errorComponent`
18
+ * (receives `error` and `refresh` as props).
19
+ * Otherwise → passes `{ Component, route }` to the default scoped slot,
20
+ * just like `<RouterView>`.
21
+ *
22
+ * Error and loading components are defined in the route via `defineRoute`:
23
+ *
24
+ * ```ts
25
+ * defineRoute<{ credential: CredentialResource }>()({
26
+ * path: '/credentials/:credentialId',
27
+ * component: CredentialShowPage,
28
+ * errorComponent: GenericErrorPage,
29
+ * loadingComponent: LoadingSpinner,
30
+ * inject: {
31
+ * credential: {
32
+ * from: 'credentialId',
33
+ * resolve: (id) => new RouteResourceRequestResolver(new CredentialShowRequest(id)),
34
+ * },
35
+ * },
36
+ * })
37
+ * ```
38
+ *
39
+ * Set `lazy: false` to render the target component immediately (without
40
+ * waiting for resources). The component can then handle loading/error
41
+ * states itself via `useRouteResource()`:
42
+ *
43
+ * ```ts
44
+ * defineRoute<{ credential: CredentialResource }>()({
45
+ * path: '/credentials/:credentialId',
46
+ * component: CredentialShowPage,
47
+ * lazy: false,
48
+ * inject: { ... },
49
+ * })
50
+ * ```
51
+ *
52
+ * Usage in layout (supports the same v-slot pattern as RouterView):
53
+ * ```vue
54
+ * <RouteResourceBoundView v-slot="{ Component, route }">
55
+ * <component :is="Component" v-if="Component" :key="route.meta.usePathKey ? route.path : undefined" />
56
+ * <EmptyState v-else />
57
+ * </RouteResourceBoundView>
58
+ * ```
59
+ *
60
+ * Or without a slot (renders the matched component automatically):
61
+ * ```vue
62
+ * <RouteResourceBoundView />
63
+ * ```
64
+ */
65
+ export const RouteResourceBoundView = defineComponent({
66
+ name: 'RouteResourceBoundView',
67
+ setup(_, { slots }) {
68
+ const route = useRoute();
69
+ const injectionState = computed(() => {
70
+ return route.meta._injectionState;
71
+ });
72
+ const firstError = computed(() => {
73
+ const state = injectionState.value;
74
+ if (!state)
75
+ return null;
76
+ for (const key of Object.keys(state)) {
77
+ const entry = state[key];
78
+ if (entry === null || entry === void 0 ? void 0 : entry.error)
79
+ return entry.error;
80
+ }
81
+ return null;
82
+ });
83
+ const anyLoading = computed(() => {
84
+ const state = injectionState.value;
85
+ if (!state)
86
+ return false;
87
+ return Object.keys(state).some((key) => { var _a; return (_a = state[key]) === null || _a === void 0 ? void 0 : _a.loading; });
88
+ });
89
+ const refresh = () => __awaiter(this, void 0, void 0, function* () {
90
+ const state = injectionState.value;
91
+ if (!state)
92
+ return;
93
+ const erroredProps = Object.keys(state).filter((key) => { var _a; return (_a = state[key]) === null || _a === void 0 ? void 0 : _a.error; });
94
+ yield Promise.all(erroredProps.map((propName) => { var _a, _b; return (_b = (_a = route.meta).refresh) === null || _b === void 0 ? void 0 : _b.call(_a, propName); }));
95
+ });
96
+ /**
97
+ * Core render logic that decides which slot/component to show
98
+ * given the resolved Component and route from RouterView.
99
+ */
100
+ function renderContent(Component, resolvedRoute) {
101
+ var _a, _b;
102
+ const isLazy = resolvedRoute.meta._lazy !== false;
103
+ if (isLazy) {
104
+ if (firstError.value) {
105
+ const errorComponent = resolvedRoute.meta._errorComponent;
106
+ if (errorComponent) {
107
+ return h(errorComponent, { error: firstError.value, refresh });
108
+ }
109
+ return (_a = slots['error']) === null || _a === void 0 ? void 0 : _a.call(slots, { error: firstError.value, refresh });
110
+ }
111
+ if (anyLoading.value) {
112
+ const loadingComponent = resolvedRoute.meta._loadingComponent;
113
+ if (loadingComponent) {
114
+ return h(loadingComponent);
115
+ }
116
+ return (_b = slots['loading']) === null || _b === void 0 ? void 0 : _b.call(slots);
117
+ }
118
+ }
119
+ if (slots['default']) {
120
+ return slots['default']({ Component, route: resolvedRoute });
121
+ }
122
+ if (Component) {
123
+ return h(Component);
124
+ }
125
+ return undefined;
126
+ }
127
+ return () => {
128
+ return h(RouterView, null, {
129
+ default: ({ Component, route: resolvedRoute }) => {
130
+ return renderContent(Component, resolvedRoute);
131
+ }
132
+ });
133
+ };
134
+ }
135
+ });
@@ -0,0 +1,6 @@
1
+ import { type DataRequest, type Resolver } from './types';
2
+ export declare class RouteResourceRequestResolver<T> implements Resolver<T> {
3
+ private request;
4
+ constructor(request: DataRequest<T>);
5
+ resolve(): Promise<T>;
6
+ }
@@ -0,0 +1,20 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ export class RouteResourceRequestResolver {
11
+ constructor(request) {
12
+ this.request = request;
13
+ }
14
+ resolve() {
15
+ return __awaiter(this, void 0, void 0, function* () {
16
+ const response = yield this.request.send();
17
+ return response.getData();
18
+ });
19
+ }
20
+ }
@@ -0,0 +1,23 @@
1
+ import { type Component } from 'vue';
2
+ import { type RouteRecordRaw } from 'vue-router';
3
+ import { type InjectConfig } from './types';
4
+ /**
5
+ * Type-safe route definition helper that ties:
6
+ * - component props type (Props)
7
+ * - inject config types (must resolve Props[K])
8
+ *
9
+ * Usage:
10
+ * export default defineRoute<{ product: ProductResource }>()({
11
+ * path: '/products/:productId',
12
+ * component: ProductShowPage,
13
+ * errorComponent: GenericErrorPage,
14
+ * loadingComponent: LoadingSpinner,
15
+ * inject: { product: { from: 'productId', resolve: ... } },
16
+ * })
17
+ */
18
+ export declare function defineRoute<Props extends Record<string, unknown>>(): <T extends RouteRecordRaw & {
19
+ inject?: InjectConfig<Props>;
20
+ errorComponent?: Component;
21
+ loadingComponent?: Component;
22
+ lazy?: boolean;
23
+ }>(route: T) => RouteRecordRaw;
@@ -0,0 +1,42 @@
1
+ import { markRaw } from 'vue';
2
+ /**
3
+ * Type-safe route definition helper that ties:
4
+ * - component props type (Props)
5
+ * - inject config types (must resolve Props[K])
6
+ *
7
+ * Usage:
8
+ * export default defineRoute<{ product: ProductResource }>()({
9
+ * path: '/products/:productId',
10
+ * component: ProductShowPage,
11
+ * errorComponent: GenericErrorPage,
12
+ * loadingComponent: LoadingSpinner,
13
+ * inject: { product: { from: 'productId', resolve: ... } },
14
+ * })
15
+ */
16
+ export function defineRoute() {
17
+ return function (route) {
18
+ var _a, _b, _c;
19
+ const originalProps = route.props;
20
+ if (route.errorComponent) {
21
+ route.meta = (_a = route.meta) !== null && _a !== void 0 ? _a : {};
22
+ route.meta._errorComponent = markRaw(route.errorComponent);
23
+ delete route.errorComponent;
24
+ }
25
+ if (route.loadingComponent) {
26
+ route.meta = (_b = route.meta) !== null && _b !== void 0 ? _b : {};
27
+ route.meta._loadingComponent = markRaw(route.loadingComponent);
28
+ delete route.loadingComponent;
29
+ }
30
+ if (route.lazy !== undefined) {
31
+ route.meta = (_c = route.meta) !== null && _c !== void 0 ? _c : {};
32
+ route.meta._lazy = route.lazy;
33
+ delete route.lazy;
34
+ }
35
+ route.props = (to) => {
36
+ var _a;
37
+ const baseProps = typeof originalProps === 'function' ? originalProps(to) : originalProps === true ? to.params : (originalProps !== null && originalProps !== void 0 ? originalProps : {});
38
+ return Object.assign(Object.assign({}, baseProps), ((_a = to.meta._injectedProps) !== null && _a !== void 0 ? _a : {}));
39
+ };
40
+ return route;
41
+ };
42
+ }
@@ -0,0 +1,8 @@
1
+ import { defineRoute } from './defineRoute';
2
+ import { installRouteInjection } from './installRouteInjection';
3
+ import { RouteResourceBoundView } from './RouteResourceBoundView';
4
+ import { RouteResourceRequestResolver } from './RouteResourceRequestResolver';
5
+ import { useRouteResource } from './useRouteResource';
6
+ import type { DataRequest, InjectConfig, Resolver } from './types';
7
+ export { defineRoute, installRouteInjection, RouteResourceBoundView, RouteResourceRequestResolver, useRouteResource };
8
+ export type { DataRequest, InjectConfig, Resolver };
@@ -0,0 +1,6 @@
1
+ import { defineRoute } from './defineRoute';
2
+ import { installRouteInjection } from './installRouteInjection';
3
+ import { RouteResourceBoundView } from './RouteResourceBoundView';
4
+ import { RouteResourceRequestResolver } from './RouteResourceRequestResolver';
5
+ import { useRouteResource } from './useRouteResource';
6
+ export { defineRoute, installRouteInjection, RouteResourceBoundView, RouteResourceRequestResolver, useRouteResource };
@@ -0,0 +1,14 @@
1
+ import { type Router } from 'vue-router';
2
+ /**
3
+ * Installs the runtime part:
4
+ * - resolves all route.inject entries before navigation completes
5
+ * - stores results on to.meta._injectedProps
6
+ * - ensures route props include injected results (so components receive them as props)
7
+ * - caches resolved resources so child routes inherit parent-resolved data
8
+ * without triggering redundant requests (as long as the param value is unchanged)
9
+ *
10
+ * Notes:
11
+ * - This keeps router files clean: only an `inject` block per route.
12
+ * - This is intentionally runtime-generic; type safety happens at route definition time.
13
+ */
14
+ export declare function installRouteInjection(router: Router): void;
@@ -0,0 +1,133 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { reactive } from 'vue';
11
+ /**
12
+ * Installs the runtime part:
13
+ * - resolves all route.inject entries before navigation completes
14
+ * - stores results on to.meta._injectedProps
15
+ * - ensures route props include injected results (so components receive them as props)
16
+ * - caches resolved resources so child routes inherit parent-resolved data
17
+ * without triggering redundant requests (as long as the param value is unchanged)
18
+ *
19
+ * Notes:
20
+ * - This keeps router files clean: only an `inject` block per route.
21
+ * - This is intentionally runtime-generic; type safety happens at route definition time.
22
+ */
23
+ export function installRouteInjection(router) {
24
+ const cache = {};
25
+ router.beforeResolve((to) => __awaiter(this, void 0, void 0, function* () {
26
+ console.log('[Route Injection] Resolving route injections...');
27
+ if (!to.meta._injectedProps) {
28
+ to.meta._injectedProps = reactive({});
29
+ }
30
+ if (!to.meta._injectionState) {
31
+ to.meta._injectionState = reactive({});
32
+ }
33
+ const resolvers = {};
34
+ const activePropNames = new Set();
35
+ const pendingResolvers = [];
36
+ // Iterate through all matched route records (from parent to child)
37
+ for (const record of to.matched) {
38
+ console.debug(`[Route Injection] Processing route "${record.path}"`);
39
+ // Access the custom 'inject' property directly from the record
40
+ const inject = record.meta.inject;
41
+ if (!inject) {
42
+ console.debug(`[Route Injection] No injections found for route "${record.path}"`);
43
+ continue;
44
+ }
45
+ for (const [propName, cfg] of Object.entries(inject)) {
46
+ const rawParam = to.params[cfg.from];
47
+ if (rawParam === undefined || rawParam === null) {
48
+ console.warn(`[Route Injection] Param "${cfg.from}" not found for prop "${propName}"`);
49
+ continue;
50
+ }
51
+ const paramValue = Array.isArray(rawParam) ? rawParam[0] : String(rawParam);
52
+ if (paramValue === undefined || paramValue === null) {
53
+ console.warn(`[Route Injection] Param value "${cfg.from}" not found for prop "${propName}"`);
54
+ continue;
55
+ }
56
+ activePropNames.add(propName);
57
+ // Initialize state for this prop
58
+ const state = to.meta._injectionState;
59
+ if (!state[propName]) {
60
+ state[propName] = reactive({ loading: false, error: null });
61
+ }
62
+ // Define the refresh logic for this specific prop (always fetches fresh data)
63
+ const resolveProp = (options) => __awaiter(this, void 0, void 0, function* () {
64
+ const propState = to.meta._injectionState[propName];
65
+ if (!(options === null || options === void 0 ? void 0 : options.silent)) {
66
+ propState.loading = true;
67
+ }
68
+ propState.error = null;
69
+ try {
70
+ const resolver = cfg.resolve(paramValue);
71
+ let payload = yield resolver.resolve();
72
+ if (typeof cfg.getter === 'function') {
73
+ payload = cfg.getter(payload);
74
+ }
75
+ // Update cache
76
+ cache[propName] = { paramValue, payload };
77
+ // Updating the reactive object triggers the component re-render
78
+ const injectedProps = to.meta._injectedProps;
79
+ injectedProps[propName] = payload;
80
+ return payload;
81
+ }
82
+ catch (e) {
83
+ propState.error = e instanceof Error ? e : new Error(String(e));
84
+ throw e;
85
+ }
86
+ finally {
87
+ propState.loading = false;
88
+ }
89
+ });
90
+ resolvers[propName] = resolveProp;
91
+ // Reuse cached value if the param hasn't changed (e.g. navigating between child routes)
92
+ const cached = cache[propName];
93
+ if (cached && cached.paramValue === paramValue) {
94
+ console.debug(`[Route Injection] Using cached value for prop "${propName}" (param "${cfg.from}" unchanged)`);
95
+ const injectedPropsCache = to.meta._injectedProps;
96
+ injectedPropsCache[propName] = cached.payload;
97
+ continue;
98
+ }
99
+ // Set loading immediately and queue resolver (non-blocking)
100
+ const injectionState = to.meta._injectionState;
101
+ injectionState[propName].loading = true;
102
+ pendingResolvers.push(() => __awaiter(this, void 0, void 0, function* () {
103
+ try {
104
+ yield resolveProp();
105
+ }
106
+ catch (e) {
107
+ console.error(`[Route Injection] Failed to resolve prop "${propName}"`, e);
108
+ }
109
+ }));
110
+ console.debug(`[Route Injection] Queued resolution for prop "${propName}" for route "${record.path}"`);
111
+ }
112
+ }
113
+ // Evict cache entries that are no longer part of the active route hierarchy
114
+ for (const key of Object.keys(cache)) {
115
+ if (!activePropNames.has(key)) {
116
+ delete cache[key];
117
+ }
118
+ }
119
+ // Attach the resolvers and a global refresh helper to the route meta
120
+ to.meta['_injectedResolvers'] = resolvers;
121
+ to.meta['refresh'] = (propName, options) => __awaiter(this, void 0, void 0, function* () {
122
+ if (resolvers[propName]) {
123
+ return yield resolvers[propName](options);
124
+ }
125
+ console.warn(`[Route Injection] No resolver found for "${propName}"`);
126
+ return undefined;
127
+ });
128
+ // Fire pending resolvers without blocking navigation
129
+ if (pendingResolvers.length > 0) {
130
+ Promise.all(pendingResolvers.map((fn) => fn()));
131
+ }
132
+ }));
133
+ }
@@ -0,0 +1,55 @@
1
+ import { type Component } from 'vue';
2
+ import { type RouteLocationNormalized } from 'vue-router';
3
+ /**
4
+ * Generic resolver interface.
5
+ */
6
+ export interface Resolver<T> {
7
+ resolve(): Promise<T>;
8
+ }
9
+ /**
10
+ * A minimal "request" contract that matches your request classes:
11
+ * new ProductShowRequest(id).send() -> { getData(): T }
12
+ */
13
+ export interface DataRequest<T> {
14
+ send(): Promise<{
15
+ getData(): T;
16
+ }>;
17
+ }
18
+ /**
19
+ * Inject config that is type-safe against component props.
20
+ *
21
+ * Props[K] is the required resolved type for prop K.
22
+ */
23
+ export type InjectConfig<Props extends Record<string, unknown>> = {
24
+ [K in keyof Props]?: {
25
+ /**
26
+ * Route param name, e.g. "productId"
27
+ */
28
+ from: keyof RouteLocationNormalized['params'] | string;
29
+ /**
30
+ * Create a resolver from the param value.
31
+ * Param value is treated as string (most common in routes).
32
+ */
33
+ resolve: (param: string) => Resolver<Props[K]>;
34
+ };
35
+ };
36
+ /**
37
+ * Extended route meta to store injected props at runtime.
38
+ */
39
+ declare module 'vue-router' {
40
+ interface RouteMeta {
41
+ _injectedProps?: Record<string, unknown>;
42
+ _injectedResolvers?: Record<string, () => Promise<unknown>>;
43
+ _injectionState?: Record<string, {
44
+ loading: boolean;
45
+ error: Error | null;
46
+ }>;
47
+ _errorComponent?: Component;
48
+ _loadingComponent?: Component;
49
+ _lazy?: boolean;
50
+ refresh?: (propName: string, options?: {
51
+ silent?: boolean;
52
+ }) => Promise<unknown>;
53
+ inject?: Record<string, unknown>;
54
+ }
55
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ import { type ComputedRef } from 'vue';
2
+ export declare function useRouteResource(propName: string): {
3
+ refresh: (options?: {
4
+ silent?: boolean;
5
+ }) => Promise<unknown>;
6
+ isLoading: ComputedRef<boolean>;
7
+ error: ComputedRef<Error | null>;
8
+ };
@@ -0,0 +1,29 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { computed } from 'vue';
11
+ import { useRoute } from 'vue-router';
12
+ export function useRouteResource(propName) {
13
+ const route = useRoute();
14
+ const refresh = (options) => __awaiter(this, void 0, void 0, function* () {
15
+ var _a, _b;
16
+ return yield ((_b = (_a = route.meta).refresh) === null || _b === void 0 ? void 0 : _b.call(_a, propName, options));
17
+ });
18
+ const isLoading = computed(() => {
19
+ var _a, _b;
20
+ const state = route.meta._injectionState;
21
+ return (_b = (_a = state === null || state === void 0 ? void 0 : state[propName]) === null || _a === void 0 ? void 0 : _a.loading) !== null && _b !== void 0 ? _b : false;
22
+ });
23
+ const error = computed(() => {
24
+ var _a, _b;
25
+ const state = route.meta._injectionState;
26
+ return (_b = (_a = state === null || state === void 0 ? void 0 : state[propName]) === null || _a === void 0 ? void 0 : _a.error) !== null && _b !== void 0 ? _b : null;
27
+ });
28
+ return { refresh, isLoading, error };
29
+ }
@@ -0,0 +1,75 @@
1
+ import { type PersistenceDriver } from '../../persistenceDrivers';
2
+ export interface StateOptions {
3
+ persist?: boolean;
4
+ persistSuffix?: string;
5
+ }
6
+ /** Generic type for change handlers. */
7
+ type ChangeHandler<T> = (val: T, oldVal: T) => void;
8
+ /** Type for accessing nested properties with dot notation. */
9
+ type PathValue<T, P extends string> = P extends keyof T ? T[P] : P extends `${infer K}.${infer Rest}` ? K extends keyof T ? T[K] extends Record<string, unknown> ? PathValue<T[K], Rest> : never : never : never;
10
+ /** Helper type to get all possible paths in an object. */
11
+ type PathsToStringProps<T> = T extends object ? {
12
+ [K in keyof T]: K extends string ? K | `${K}.${PathsToStringProps<T[K]>}` : never;
13
+ }[keyof T] : never;
14
+ /** Union type of all possible dot-notation paths in T. */
15
+ type Path<T> = keyof T | PathsToStringProps<T>;
16
+ export declare abstract class State<T extends object> {
17
+ private readonly properties;
18
+ private readonly _initial;
19
+ private readonly _persist;
20
+ private readonly _persistKey;
21
+ private _driver;
22
+ private _stateProxy;
23
+ private _watchStopFunctions;
24
+ private _resetHandlers;
25
+ private _watchIdCounter;
26
+ protected constructor(initial: T, options?: StateOptions);
27
+ /**
28
+ * Safe deep clone that preserves types
29
+ */
30
+ private deepClone;
31
+ /**
32
+ * Ensure objects/arrays are cloned and wrapped in Vue reactivity.
33
+ */
34
+ private wrapReactive;
35
+ /**
36
+ * Get a proxy to the state that allows direct property access and setting
37
+ * without using .value
38
+ */
39
+ get state(): T;
40
+ /**
41
+ * Add a subscription to specific properties or nested properties
42
+ * @param paths Path(s) to the property. Can be:
43
+ * - A single path (top-level key or nested with dot notation)
44
+ * - An array of paths to watch (triggers when any changes)
45
+ * @param handler Function to call when the property changes
46
+ * @param options Optional configuration for debounce and executeOnReset
47
+ * @returns A function to remove the subscription
48
+ */
49
+ subscribe<P extends Path<T>>(paths: P, handler: ChangeHandler<PathValue<T, P & string>>, options?: {
50
+ debounce?: number;
51
+ executeOnReset?: boolean;
52
+ }): () => void;
53
+ subscribe<P extends Path<T>>(paths: P[], handler: (changedPath: P, state: T) => void, options?: {
54
+ debounce?: number;
55
+ executeOnReset?: boolean;
56
+ }): () => void;
57
+ /**
58
+ * Internal method to set up a watcher for a specific path
59
+ */
60
+ private setupWatcher;
61
+ /**
62
+ * Simple deep equality check
63
+ */
64
+ private isEqual;
65
+ protected getPersistenceDriver(): PersistenceDriver;
66
+ export(): T;
67
+ import(data: Partial<T>): void;
68
+ reset(): void;
69
+ get persistKey(): string;
70
+ /**
71
+ * Clean up all watchers when the state is no longer needed
72
+ */
73
+ destroy(): void;
74
+ }
75
+ export {};