@dxtmisha/wiki 0.39.8 → 0.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/dist/{defineProperty-Bjg6wMoX.js → defineProperty-149Ahniv.js} +4 -4
  2. package/dist/library.js +1 -1
  3. package/dist/media/descriptions/wikiDescriptionsArea.d.ts +7 -0
  4. package/dist/media/descriptions/wikiDescriptionsClientOnly.d.ts +7 -0
  5. package/dist/media/descriptions/wikiDescriptionsContainer.d.ts +7 -0
  6. package/dist/media/descriptions/wikiDescriptionsHeader.d.ts +7 -0
  7. package/dist/media/descriptions/wikiDescriptionsPageArea.d.ts +7 -0
  8. package/dist/media/mdx/Area/wikiMdxArea.d.ts +7 -0
  9. package/dist/media/mdx/ClientOnly/wikiMdxClientOnly.d.ts +7 -0
  10. package/dist/media/mdx/Container/wikiMdxContainer.d.ts +7 -0
  11. package/dist/media/mdx/Header/wikiMdxHeader.d.ts +7 -0
  12. package/dist/media/mdx/PageArea/wikiMdxPageArea.d.ts +7 -0
  13. package/dist/media.d.ts +1 -1
  14. package/dist/media.js +115 -68
  15. package/dist/storybook.js +2707 -1841
  16. package/dist/{wikiDescriptions-Cv4WzSNL.js → wikiDescriptions-7XaHU3Yk.js} +182 -0
  17. package/package.json +1 -1
  18. package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.en.mdx +43 -0
  19. package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.ru.mdx +43 -0
  20. package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.vi.mdx +41 -0
  21. package/src/media/functional/functional/composables/useApiRef/useApiRef.en.mdx +20 -4
  22. package/src/media/functional/functional/composables/useApiRef/useApiRef.ru.mdx +21 -3
  23. package/src/media/functional/functional/composables/useApiRef/useApiRef.vi.mdx +20 -2
  24. package/src/media/functional/functional/functions/computedAsync/computedAsync.en.mdx +8 -0
  25. package/src/media/functional/functional/functions/computedAsync/computedAsync.ru.mdx +8 -0
  26. package/src/media/functional/functional/functions/computedAsync/computedAsync.vi.mdx +8 -0
  27. package/src/media/functional/functional/functions/computedEternity/computedEternity.en.mdx +8 -0
  28. package/src/media/functional/functional/functions/computedEternity/computedEternity.ru.mdx +8 -0
  29. package/src/media/functional/functional/functions/computedEternity/computedEternity.vi.mdx +8 -0
  30. package/src/media/functional/functional-basic/classes/Api/Api.en.mdx +3 -0
  31. package/src/media/functional/functional-basic/classes/Api/Api.ru.mdx +3 -0
  32. package/src/media/functional/functional-basic/classes/Api/Api.vi.mdx +3 -0
  33. package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.en.mdx +5 -2
  34. package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.ru.mdx +6 -3
  35. package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.vi.mdx +5 -2
  36. package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.en.mdx +9 -0
  37. package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.ru.mdx +9 -0
  38. package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.vi.mdx +9 -0
  39. package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.en.mdx +31 -6
  40. package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.ru.mdx +31 -6
  41. package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.vi.mdx +31 -6
  42. package/src/media/functional/functional-basic/classes/Meta/Meta.en.mdx +16 -0
  43. package/src/media/functional/functional-basic/classes/Meta/Meta.ru.mdx +16 -0
  44. package/src/media/functional/functional-basic/classes/Meta/Meta.vi.mdx +17 -1
  45. package/src/media/functional/functional-basic/classes/MetaManager/MetaManager.en.mdx +9 -0
  46. package/src/media/functional/functional-basic/classes/MetaManager/MetaManager.ru.mdx +9 -0
  47. package/src/media/functional/functional-basic/classes/MetaManager/MetaManager.vi.mdx +9 -0
  48. package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.en.mdx +2 -1
  49. package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.ru.mdx +2 -1
  50. package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.vi.mdx +3 -2
  51. package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.en.mdx +2 -2
  52. package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.ru.mdx +2 -2
  53. package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.vi.mdx +2 -2
  54. package/src/media/functional/functional-basic/icons/icons.en.mdx +3 -0
  55. package/src/media/functional/functional-basic/icons/icons.ru.mdx +3 -0
  56. package/src/media/functional/functional-basic/icons/icons.vi.mdx +3 -0
  57. package/src/media/functional/nitro-basic/about/about.en.mdx +52 -0
  58. package/src/media/functional/nitro-basic/about/about.ru.mdx +52 -0
  59. package/src/media/functional/nitro-basic/about/about.vi.mdx +52 -0
  60. package/src/media/functional/nitro-basic/composables/useHeaders/useHeaders.en.mdx +29 -0
  61. package/src/media/functional/nitro-basic/composables/useHeaders/useHeaders.ru.mdx +29 -0
  62. package/src/media/functional/nitro-basic/composables/useHeaders/useHeaders.vi.mdx +29 -0
  63. package/src/media/functional/nitro-basic/functions/getRequestOrigin/getRequestOrigin.en.mdx +24 -0
  64. package/src/media/functional/nitro-basic/functions/getRequestOrigin/getRequestOrigin.ru.mdx +24 -0
  65. package/src/media/functional/nitro-basic/functions/getRequestOrigin/getRequestOrigin.vi.mdx +24 -0
  66. package/src/media/functional/nitro-basic/functions/getRequestUrl/getRequestUrl.en.mdx +24 -0
  67. package/src/media/functional/nitro-basic/functions/getRequestUrl/getRequestUrl.ru.mdx +24 -0
  68. package/src/media/functional/nitro-basic/functions/getRequestUrl/getRequestUrl.vi.mdx +24 -0
  69. package/src/media/functional/nitro-basic/functions/initApi/initApi.en.mdx +23 -0
  70. package/src/media/functional/nitro-basic/functions/initApi/initApi.ru.mdx +23 -0
  71. package/src/media/functional/nitro-basic/functions/initApi/initApi.vi.mdx +23 -0
  72. package/src/media/functional/nitro-basic/functions/initClientRouter/initClientRouter.en.mdx +21 -0
  73. package/src/media/functional/nitro-basic/functions/initClientRouter/initClientRouter.ru.mdx +21 -0
  74. package/src/media/functional/nitro-basic/functions/initClientRouter/initClientRouter.vi.mdx +21 -0
  75. package/src/media/functional/nitro-basic/functions/initCookieStorage/initCookieStorage.en.mdx +18 -0
  76. package/src/media/functional/nitro-basic/functions/initCookieStorage/initCookieStorage.ru.mdx +18 -0
  77. package/src/media/functional/nitro-basic/functions/initCookieStorage/initCookieStorage.vi.mdx +18 -0
  78. package/src/media/functional/nitro-basic/functions/initHeaders/initHeaders.en.mdx +16 -0
  79. package/src/media/functional/nitro-basic/functions/initHeaders/initHeaders.ru.mdx +16 -0
  80. package/src/media/functional/nitro-basic/functions/initHeaders/initHeaders.vi.mdx +16 -0
  81. package/src/media/functional/nitro-basic/functions/initPluginApiCache/initPluginApiCache.en.mdx +17 -0
  82. package/src/media/functional/nitro-basic/functions/initPluginApiCache/initPluginApiCache.ru.mdx +17 -0
  83. package/src/media/functional/nitro-basic/functions/initPluginApiCache/initPluginApiCache.vi.mdx +17 -0
  84. package/src/media/functional/nitro-basic/functions/initPluginBasic/initPluginBasic.en.mdx +34 -0
  85. package/src/media/functional/nitro-basic/functions/initPluginBasic/initPluginBasic.ru.mdx +34 -0
  86. package/src/media/functional/nitro-basic/functions/initPluginBasic/initPluginBasic.vi.mdx +34 -0
  87. package/src/media/functional/nitro-basic/functions/initScriptsJson/initScriptsJson.en.mdx +17 -0
  88. package/src/media/functional/nitro-basic/functions/initScriptsJson/initScriptsJson.ru.mdx +17 -0
  89. package/src/media/functional/nitro-basic/functions/initScriptsJson/initScriptsJson.vi.mdx +17 -0
  90. package/src/media/functional/nitro-basic/functions/initServerRouter/initServerRouter.en.mdx +20 -0
  91. package/src/media/functional/nitro-basic/functions/initServerRouter/initServerRouter.ru.mdx +20 -0
  92. package/src/media/functional/nitro-basic/functions/initServerRouter/initServerRouter.vi.mdx +20 -0
  93. package/src/media/functional/nitro-basic/functions/initServerStorage/initServerStorage.en.mdx +16 -0
  94. package/src/media/functional/nitro-basic/functions/initServerStorage/initServerStorage.ru.mdx +16 -0
  95. package/src/media/functional/nitro-basic/functions/initServerStorage/initServerStorage.vi.mdx +16 -0
  96. package/src/media/functional/nitro-basic/functions/initSsrApp/initSsrApp.en.mdx +20 -0
  97. package/src/media/functional/nitro-basic/functions/initSsrApp/initSsrApp.ru.mdx +20 -0
  98. package/src/media/functional/nitro-basic/functions/initSsrApp/initSsrApp.vi.mdx +20 -0
  99. package/src/media/functional/nitro-basic/functions/uiBootstrapClient/uiBootstrapClient.en.mdx +14 -0
  100. package/src/media/functional/nitro-basic/functions/uiBootstrapClient/uiBootstrapClient.ru.mdx +14 -0
  101. package/src/media/functional/nitro-basic/functions/uiBootstrapClient/uiBootstrapClient.vi.mdx +14 -0
  102. package/src/media/functional/nitro-basic/functions/uiBootstrapServer/uiBootstrapServer.en.mdx +19 -0
  103. package/src/media/functional/nitro-basic/functions/uiBootstrapServer/uiBootstrapServer.ru.mdx +19 -0
  104. package/src/media/functional/nitro-basic/functions/uiBootstrapServer/uiBootstrapServer.vi.mdx +19 -0
  105. package/src/media/functional/nitro-basic/functions/uiCookieStorage/uiCookieStorage.en.mdx +13 -0
  106. package/src/media/functional/nitro-basic/functions/uiCookieStorage/uiCookieStorage.ru.mdx +13 -0
  107. package/src/media/functional/nitro-basic/functions/uiCookieStorage/uiCookieStorage.vi.mdx +13 -0
  108. package/src/media/functional/nitro-basic/functions/uiCreateApp/uiCreateApp.en.mdx +43 -0
  109. package/src/media/functional/nitro-basic/functions/uiCreateApp/uiCreateApp.ru.mdx +43 -0
  110. package/src/media/functional/nitro-basic/functions/uiCreateApp/uiCreateApp.vi.mdx +43 -0
  111. package/src/media/functional/nitro-basic/functions/uiCreateClientApp/uiCreateClientApp.en.mdx +31 -0
  112. package/src/media/functional/nitro-basic/functions/uiCreateClientApp/uiCreateClientApp.ru.mdx +31 -0
  113. package/src/media/functional/nitro-basic/functions/uiCreateClientApp/uiCreateClientApp.vi.mdx +31 -0
  114. package/src/media/functional/nitro-basic/functions/uiCreateServerApp/uiCreateServerApp.en.mdx +34 -0
  115. package/src/media/functional/nitro-basic/functions/uiCreateServerApp/uiCreateServerApp.ru.mdx +34 -0
  116. package/src/media/functional/nitro-basic/functions/uiCreateServerApp/uiCreateServerApp.vi.mdx +34 -0
  117. package/src/media/functional/nitro-basic/functions/uiCreateSsrRouter/uiCreateSsrRouter.en.mdx +17 -0
  118. package/src/media/functional/nitro-basic/functions/uiCreateSsrRouter/uiCreateSsrRouter.ru.mdx +17 -0
  119. package/src/media/functional/nitro-basic/functions/uiCreateSsrRouter/uiCreateSsrRouter.vi.mdx +17 -0
  120. package/src/media/functional/nitro-basic/functions/uiId/uiId.en.mdx +13 -0
  121. package/src/media/functional/nitro-basic/functions/uiId/uiId.ru.mdx +13 -0
  122. package/src/media/functional/nitro-basic/functions/uiId/uiId.vi.mdx +13 -0
  123. package/src/media/functional/nitro-basic/functions/uiServerStorage/uiServerStorage.en.mdx +13 -0
  124. package/src/media/functional/nitro-basic/functions/uiServerStorage/uiServerStorage.ru.mdx +13 -0
  125. package/src/media/functional/nitro-basic/functions/uiServerStorage/uiServerStorage.vi.mdx +13 -0
  126. package/src/media/functional/nitro-basic/setup/setup.en.mdx +133 -0
  127. package/src/media/functional/nitro-basic/setup/setup.ru.mdx +133 -0
  128. package/src/media/functional/nitro-basic/setup/setup.vi.mdx +133 -0
@@ -51,6 +51,7 @@ All setter methods return `typeof MetaStatic` to support method chaining.
51
51
  ### Output
52
52
 
53
53
  - `html(): string` — Generates a complete string of HTML meta tags for all managed properties.
54
+ - `htmlTitle(): string` — Generates a complete HTML-safe title string.
54
55
 
55
56
  ## Architecture
56
57
 
@@ -74,5 +75,5 @@ MetaStatic
74
75
 
75
76
  console.log(MetaStatic.getTitle()); // "Summer Collection"
76
77
  document.title; // "Summer Collection - My Online Store"
78
+ console.log(MetaStatic.htmlTitle()); // "Summer Collection - My Online Store"
77
79
  ```
78
-
@@ -51,6 +51,7 @@ import {Meta} from '@storybook/addon-docs/blocks'
51
51
  ### Вывод
52
52
 
53
53
  - `html(): string` — Генерирует полную строку HTML-тегов для всех управляемых свойств.
54
+ - `htmlTitle(): string` — Генерирует полную HTML-безопасную строку заголовка.
54
55
 
55
56
  ## Архитектура
56
57
 
@@ -74,5 +75,5 @@ MetaStatic
74
75
 
75
76
  console.log(MetaStatic.getTitle()); // "Летняя коллекция"
76
77
  document.title; // "Летняя коллекция - Мой Интернет Магазин"
78
+ console.log(MetaStatic.htmlTitle()); // "Летняя коллекция - Мой Интернет Магазин"
77
79
  ```
78
-
@@ -17,7 +17,7 @@ Lớp `MetaStatic` là **điểm truy cập tĩnh** để quản lý các thẻ
17
17
 
18
18
  ### Truy cập
19
19
 
20
- - `getItem(): Meta` — Trả về thực thể `Meta` cơ sở.
20
+ - `getItem(): Meta` — Trả về thực entity `Meta` cơ sở.
21
21
  - `getOg(): MetaOg` — Lấy thực thể `MetaOg` cho các thao tác Open Graph nâng cao.
22
22
  - `getTwitter(): MetaTwitter` — Lấy thực thể `MetaTwitter` cho các thao tác Twitter Card nâng cao.
23
23
 
@@ -51,6 +51,7 @@ Tất cả các phương thức thiết lập đều trả về `typeof MetaStat
51
51
  ### Đầu ra
52
52
 
53
53
  - `html(): string` — Tạo ra một chuỗi đầy đủ các thẻ HTML meta cho tất cả các thuộc tính được quản lý.
54
+ - `htmlTitle(): string` — Tạo ra chuỗi tiêu đề an toàn với HTML.
54
55
 
55
56
  ## Kiến trúc
56
57
 
@@ -74,5 +75,5 @@ MetaStatic
74
75
 
75
76
  console.log(MetaStatic.getTitle()); // "Bộ sưu tập mùa hè"
76
77
  document.title; // "Bộ sưu tập mùa hè - Cửa hàng trực tuyến của tôi"
78
+ console.log(MetaStatic.htmlTitle()); // "Bộ sưu tập mùa hè - Cửa hàng trực tuyến của tôi"
77
79
  ```
78
-
@@ -52,6 +52,8 @@ Saves a value to the storage.
52
52
 
53
53
  - `init(listener: () => Record<string, any>): typeof ServerStorage` — Initializes the storage with a context listener. On the server, this listener should return an object unique to each request.
54
54
  - `has(key: string): boolean` — Checks for the existence of a key in the current context.
55
+ - `remove(key: string): void` — Removes a value by key from the storage.
56
+ - `setErrorStatus(hide: boolean): void` — Sets whether to hide context missing errors in the console/error center.
55
57
  - `reset(): void` — Resets the storage, clearing all stored data and the listener. Useful for performing cleanup.
56
58
  - `toString(): string` — Generates an HTML `<script type="application/json">` tag containing all data marked for hydration.
57
59
 
@@ -127,5 +129,3 @@ This method generates a special script tag:
127
129
  {"userSettings":{"fontSize":16}}
128
130
  </script>
129
131
  ```
130
-
131
-
@@ -52,6 +52,8 @@ const theme = ServerStorage.get('theme') // 'dark'
52
52
 
53
53
  - `init(listener: () => Record<string, any>): typeof ServerStorage` — Инициализирует хранилище слушателем контекста. На сервере этот слушатель должен возвращать объект, уникальный для каждого запроса.
54
54
  - `has(key: string): boolean` — Проверяет наличие ключа в текущем контексте.
55
+ - `remove(key: string): void` — Удаляет значение по ключу из хранилища.
56
+ - `setErrorStatus(hide: boolean): void` — Устанавливает, нужно ли скрывать ошибки отсутствия контекста в консоли/центре ошибок.
55
57
  - `reset(): void` — Сбрасывает хранилище, очищая все сохраненные данные и слушателя. Полезно для выполнения очистки.
56
58
  - `toString(): string` — Генерирует HTML-тег `<script type="application/json">` со всеми данными, помеченными для гидратации.
57
59
 
@@ -127,5 +129,3 @@ ServerStorage.set('userSettings', () => ({ fontSize: 16 }), true)
127
129
  {"userSettings":{"fontSize":16}}
128
130
  </script>
129
131
  ```
130
-
131
-
@@ -52,6 +52,8 @@ Lưu một giá trị vào kho lưu trữ.
52
52
 
53
53
  - `init(listener: () => Record<string, any>): typeof ServerStorage` — Khởi tạo kho lưu trữ với bộ lắng nghe ngữ cảnh. Trên máy chủ, bộ lắng nghe này sẽ trả về một đối tượng duy nhất cho mỗi yêu cầu.
54
54
  - `has(key: string): boolean` — Kiếm tra sự tồn tại của một khóa trong ngữ cảnh hiện tại.
55
+ - `remove(key: string): void` — Xóa một giá trị theo khóa khỏi kho lưu trữ.
56
+ - `setErrorStatus(hide: boolean): void` — Thiết lập việc ẩn lỗi thiếu ngữ cảnh trong bảng điều khiển hoặc trung tâm lỗi.
55
57
  - `reset(): void` — Đặt lại kho lưu trữ, xóa tất cả dữ liệu đã lưu và bộ lắng nghe. Hữu ích cho việc dọn dẹp.
56
58
  - `toString(): string` — Tạo một thẻ HTML `<script type="application/json">` chứa tất cả dữ liệu được đánh dấu để hydration.
57
59
 
@@ -127,5 +129,3 @@ Phương thức này tạo ra một thẻ script đặc biệt:
127
129
  {"userSettings":{"fontSize":16}}
128
130
  </script>
129
131
  ```
130
-
131
-
@@ -23,6 +23,9 @@ Icons.addByList({
23
23
  if (Icons.is('home')) {
24
24
  const path = await Icons.get('home')
25
25
  }
26
+
27
+ // 4. Synchronous retrieval
28
+ const fastPath = Icons.getAsync('search') // returns string or empty string
26
29
  ```
27
30
 
28
31
  ## Lazy Loading
@@ -23,6 +23,9 @@ Icons.addByList({
23
23
  if (Icons.is('home')) {
24
24
  const path = await Icons.get('home')
25
25
  }
26
+
27
+ // 4. Синхронное получение
28
+ const fastPath = Icons.getAsync('search') // возвращает строку или пустую строку
26
29
  ```
27
30
 
28
31
  ## Ленивая загрузка
@@ -23,6 +23,9 @@ Icons.addByList({
23
23
  if (Icons.is('home')) {
24
24
  const path = await Icons.get('home')
25
25
  }
26
+
27
+ // 4. Lấy dữ liệu đồng bộ
28
+ const fastPath = Icons.getAsync('search') // trả về chuỗi hoặc chuỗi rỗng
26
29
  ```
27
30
 
28
31
  ## Tải chậm (Lazy Loading)
@@ -0,0 +1,52 @@
1
+ import {Meta} from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/en/nitro-basic/! About Library'/>
4
+
5
+ # [@dxtmisha/nitro-basic](https://github.com/dxtmisha/dxt-ui/tree/main/packages/nitro-basic)
6
+
7
+ `@dxtmisha/nitro-basic` is a foundational utility library designed for building robust Server-Side Rendering (SSR) applications using Vue 3 and Nitro. It provides a set of tools for state synchronization between server and client, routing management, and simplifying the SSR application development process.
8
+
9
+ ## Installation
10
+
11
+ To start using the library, install it via npm:
12
+
13
+ ```bash
14
+ npm i @dxtmisha/nitro-basic
15
+ ```
16
+
17
+ ## What is this library for?
18
+
19
+ Developing applications with SSR (Server-Side Rendering) requires special attention to detail: from isolating states for different users on the server to preventing hydration mismatches on the client.
20
+
21
+ `@dxtmisha/nitro-basic` handles routine tasks for configuring the Nitro and Vue environment, providing a unified mechanism for initializing storages, API clients, and routing. It serves as a bridge between the powerful capabilities of Nitro and the reactivity of Vue 3.
22
+
23
+ ## What's inside?
24
+
25
+ The library includes tools to solve key SSR tasks:
26
+
27
+ **Environment Initialization** — the `uiCreateServerApp` and `uiCreateClientApp` functions provide a standardized way to launch the application in different environments, automatically configuring the necessary plugins and services.
28
+
29
+ **State and Storage Management** — tools for working with server storage (`initServerStorage`) and cookies (`initCookieStorage`). They ensure that data received on the server is accessible to Vue components via the `provide/inject` mechanism.
30
+
31
+ **Routing Synchronization** — utilities for creating and initializing the router (`uiCreateSsrRouter`, `initServerRouter`), which ensure correct URL navigation on the server side and smooth handover to the client.
32
+
33
+ **Data Hydration** — automatic generation of JSON scripts (`initScriptsJson`) to transfer `ServerStorage` state and `Api` data from the server to the client, eliminating redundant API requests during page load.
34
+
35
+ **API Integration** — means for configuring request headers and origin, allowing the use of absolute URLs during server-side calls and maintaining authorization via cookie forwarding.
36
+
37
+ **Nitro Plugins** — ready-made functions to extend Nitro's capabilities, such as server-side API response caching.
38
+
39
+ ## Who is it for?
40
+
41
+ The library is designed for developers building their solutions on the Vue 3 + Nitro stack (or Nuxt-like architectures) who need low-level but flexible tools to manage the lifecycle of an SSR application.
42
+
43
+ ## Principles
44
+
45
+ - **SSR Safety** — all tools are designed to eliminate data leaks between requests from different users.
46
+ - **Seamless Hydration** — minimizing differences between server and client states.
47
+ - **Modularity** — the ability to use both comprehensive application creation functions and individual atomic initialization utilities.
48
+ - **Integration** — deep compatibility with the `@dxtmisha/functional` ecosystem.
49
+
50
+ ## Git
51
+
52
+ [https://github.com/dxtmisha/dxt-ui/tree/main/packages/nitro-basic](https://github.com/dxtmisha/dxt-ui/tree/main/packages/nitro-basic)
@@ -0,0 +1,52 @@
1
+ import {Meta} from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/ru/nitro-basic/! О библиотеке'/>
4
+
5
+ # [@dxtmisha/nitro-basic](https://github.com/dxtmisha/dxt-ui/tree/main/packages/nitro-basic)
6
+
7
+ `@dxtmisha/nitro-basic` — это базовая библиотека утилит, предназначенная для создания надежных приложений с серверным рендерингом (SSR) на базе Vue 3 и Nitro. Она предоставляет набор инструментов для синхронизации состояния между сервером и клиентом, управления маршрутизацией и упрощения процесса разработки SSR-приложений.
8
+
9
+ ## Установка
10
+
11
+ Чтобы начать использовать библиотеку, установите ее через npm:
12
+
13
+ ```bash
14
+ npm i @dxtmisha/nitro-basic
15
+ ```
16
+
17
+ ## Для чего эта библиотека?
18
+
19
+ Разработка приложений с SSR (Server-Side Rendering) требует особого внимания к деталям: от изоляции состояний разных пользователей на сервере до предотвращения ошибок гидратации (hydration mismatch) на клиенте.
20
+
21
+ `@dxtmisha/nitro-basic` берет на себя рутинные задачи по настройке окружения Nitro и Vue, обеспечивая единый механизм инициализации хранилищ, API-клиентов и маршрутизации. Она служит связующим звеном между мощными возможностями Nitro и реактивностью Vue 3.
22
+
23
+ ## Что в ней есть?
24
+
25
+ Библиотека включает в себя инструменты для решения ключевых задач SSR:
26
+
27
+ **Инициализация окружения** — функции `uiCreateServerApp` и `uiCreateClientApp` предоставляют стандартизированный способ запуска приложения в разных средах, автоматически настраивая необходимые плагины и сервисы.
28
+
29
+ **Управление состоянием и хранилищами** — инструменты для работы с серверным хранилищем (`initServerStorage`) и cookie (`initCookieStorage`). Они гарантируют, что данные, полученные на сервере, будут доступны компонентам Vue через механизм `provide/inject`.
30
+
31
+ **Синхронизация маршрутизации** — утилиты для создания и инициализации роутера (`uiCreateSsrRouter`, `initServerRouter`), которые обеспечивают правильный переход по URL на стороне сервера и плавную передачу управления клиенту.
32
+
33
+ **Гидратация данных** — автоматическая генерация JSON-скриптов (`initScriptsJson`) для передачи состояния `ServerStorage` и данных `Api` с сервера на клиент, что исключает повторные запросы к API при загрузке страницы.
34
+
35
+ **Интеграция с API** — средства для настройки заголовков и источника (origin) запросов, позволяющие использовать абсолютные URL при серверных вызовах и сохранять авторизацию через проброс cookie.
36
+
37
+ **Nitro Плагины** — готовые функции для расширения возможностей Nitro, такие как кэширование API ответов на уровне сервера.
38
+
39
+ ## Для кого это?
40
+
41
+ Библиотека создана для разработчиков, которые строят свои решения на стеке Vue 3 + Nitro (или Nuxt-подобные архитектуры) и нуждаются в низкоуровневых, но гибких инструментах для управления жизненным циклом SSR-приложения.
42
+
43
+ ## Принципы
44
+
45
+ - **Безопасность SSR** — все инструменты спроектированы так, чтобы исключить утечки данных между запросами разных пользователей.
46
+ - **Бесшовная гидратация** — минимизация различий между серверным и клиентским состоянием.
47
+ - **Модульность** — возможность использовать как комплексные функции создания приложения, так и отдельные атомарные утилиты инициализации.
48
+ - **Интеграция** — глубокая совместимость с экосистемой `@dxtmisha/functional`.
49
+
50
+ ## Git
51
+
52
+ [https://github.com/dxtmisha/dxt-ui/tree/main/packages/nitro-basic](https://github.com/dxtmisha/dxt-ui/tree/main/packages/nitro-basic)
@@ -0,0 +1,52 @@
1
+ import {Meta} from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/vi/nitro-basic/! Giới thiệu về thư viện'/>
4
+
5
+ # [@dxtmisha/nitro-basic](https://github.com/dxtmisha/dxt-ui/tree/main/packages/nitro-basic)
6
+
7
+ `@dxtmisha/nitro-basic` là một thư viện tiện ích cơ bản được thiết kế để xây dựng các ứng dụng Server-Side Rendering (SSR) mạnh mẽ bằng Vue 3 và Nitro. Nó cung cấp một bộ công cụ để đồng bộ hóa trạng thái giữa server và client, quản lý định tuyến và đơn giản hóa quy trình phát triển ứng dụng SSR.
8
+
9
+ ## Cài đặt
10
+
11
+ Để bắt đầu sử dụng thư viện, hãy cài đặt nó qua npm:
12
+
13
+ ```bash
14
+ npm i @dxtmisha/nitro-basic
15
+ ```
16
+
17
+ ## Thư viện này dùng để làm gì?
18
+
19
+ Phát triển các ứng dụng với SSR (Server-Side Rendering) đòi hỏi sự chú ý đặc biệt đến từng chi tiết: từ việc cô lập trạng thái cho những người dùng khác nhau trên server đến việc ngăn chặn lỗi không khớp khi hydrat hóa (hydration mismatch) trên client.
20
+
21
+ `@dxtmisha/nitro-basic` xử lý các tác vụ thông thường để cấu hình môi trường Nitro và Vue, cung cấp một cơ chế thống nhất để khởi tạo bộ lưu trữ, API client và định tuyến. Nó đóng vai trò như một cầu nối giữa các khả năng mạnh mẽ của Nitro và tính phản ứng của Vue 3.
22
+
23
+ ## Có gì bên trong?
24
+
25
+ Thư viện bao gồm các công cụ để giải quyết các tác vụ SSR chính:
26
+
27
+ **Khởi tạo môi trường** — các hàm `uiCreateServerApp` và `uiCreateClientApp` cung cấp một cách tiêu chuẩn hóa để khởi chạy ứng dụng trong các môi trường khác nhau, tự động cấu hình các plugin và dịch vụ cần thiết.
28
+
29
+ **Quản lý trạng thái và bộ lưu trữ** — các công cụ để làm việc với bộ lưu trữ server (`initServerStorage`) và cookie (`initCookieStorage`). Chúng đảm bảo rằng dữ liệu nhận được trên server có thể truy cập được bởi các thành phần Vue thông qua cơ chế `provide/inject`.
30
+
31
+ **Đồng bộ hóa định tuyến** — các tiện ích để tạo và khởi tạo router (`uiCreateSsrRouter`, `initServerRouter`), đảm bảo điều hướng URL chính xác ở phía server và chuyển giao mượt mà cho client.
32
+
33
+ **Hydrat hóa dữ liệu** — tự động tạo các kịch bản JSON (`initScriptsJson`) để chuyển trạng thái `ServerStorage` và dữ liệu `Api` từ server sang client, loại bỏ các yêu cầu API dư thừa trong quá trình tải trang.
34
+
35
+ **Tích hợp API** — phương tiện để cấu hình các header và origin của yêu cầu, cho phép sử dụng URL tuyệt đối trong các cuộc gọi phía server và duy trì ủy quyền thông qua chuyển tiếp cookie.
36
+
37
+ **Nitro Plugins** — các hàm có sẵn để mở rộng khả năng của Nitro, chẳng hạn như lưu trữ đệm phản hồi API phía server.
38
+
39
+ ## Nó dành cho ai?
40
+
41
+ Thư viện được thiết kế cho các nhà phát triển đang xây dựng giải pháp của họ trên stack Vue 3 + Nitro (hoặc các kiến trúc giống Nuxt) và cần các công cụ cấp thấp nhưng linh hoạt để quản lý vòng đời của một ứng dụng SSR.
42
+
43
+ ## Nguyên tắc
44
+
45
+ - **An toàn SSR** — tất cả các công cụ được thiết kế để loại bỏ rò rỉ dữ liệu giữa các yêu cầu từ những người dùng khác nhau.
46
+ - **Hydrat hóa mượt mà** — giảm thiểu sự khác biệt giữa trạng thái server và client.
47
+ - **Tính mô-đun** — khả năng sử dụng cả các hàm tạo ứng dụng toàn diện và các tiện ích khởi tạo nguyên tử riêng lẻ.
48
+ - **Tích hợp** — khả năng tương thích sâu với hệ sinh thái `@dxtmisha/functional`.
49
+
50
+ ## Git
51
+
52
+ [https://github.com/dxtmisha/dxt-ui/tree/main/packages/nitro-basic](https://github.com/dxtmisha/dxt-ui/tree/main/packages/nitro-basic)
@@ -0,0 +1,29 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/en/nitro-basic/Composables/useHeaders - Get Headers'/>
4
+
5
+ # `useHeaders`
6
+
7
+ A composable function that provides access to the API headers of the current request. It can return either the entire `Headers` object or the value of a specific header by its name.
8
+
9
+ **Parameters:**
10
+ - `name?: string` — Optional header name.
11
+
12
+ **Returns:**
13
+ - `Headers | undefined` — If no name is provided, returns the entire headers object.
14
+ - `string | undefined` — If a name is provided, returns the value of that header.
15
+
16
+ **Usage Example:**
17
+
18
+ ```typescript
19
+ import { useHeaders } from '@dxtmisha/nitro-basic'
20
+
21
+ // Get a specific header
22
+ const contentType = useHeaders('Content-Type')
23
+
24
+ // Get all headers
25
+ const headers = useHeaders()
26
+ if (headers) {
27
+ console.log(headers.get('Authorization'))
28
+ }
29
+ ```
@@ -0,0 +1,29 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/ru/nitro-basic/Composables/useHeaders - Получение заголовков'/>
4
+
5
+ # `useHeaders`
6
+
7
+ Композитная функция (composable), которая позволяет получить доступ к заголовкам API текущего запроса. Она может возвращать как весь объект `Headers`, так и значение конкретного заголовка по его имени.
8
+
9
+ **Параметры:**
10
+ - `name?: string` — Опциональное имя заголовка.
11
+
12
+ **Возвращает:**
13
+ - `Headers | undefined` — Если имя не передано, возвращает весь объект заголовков.
14
+ - `string | undefined` — Если передано имя, возвращает значение этого заголовка.
15
+
16
+ **Пример использования:**
17
+
18
+ ```typescript
19
+ import { useHeaders } from '@dxtmisha/nitro-basic'
20
+
21
+ // Получение конкретного заголовка
22
+ const contentType = useHeaders('Content-Type')
23
+
24
+ // Получение всех заголовков
25
+ const headers = useHeaders()
26
+ if (headers) {
27
+ console.log(headers.get('Authorization'))
28
+ }
29
+ ```
@@ -0,0 +1,29 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/vi/nitro-basic/Composables/useHeaders - Lấy Header'/>
4
+
5
+ # `useHeaders`
6
+
7
+ Một hàm composable cung cấp quyền truy cập vào các header API của yêu cầu hiện tại. Nó có thể trả về toàn bộ đối tượng `Headers` hoặc giá trị của một header cụ thể theo tên của nó.
8
+
9
+ **Tham số:**
10
+ - `name?: string` — Tên header (tùy chọn).
11
+
12
+ **Trả về:**
13
+ - `Headers | undefined` — Nếu không cung cấp tên, trả về toàn bộ đối tượng headers.
14
+ - `string | undefined` — Nếu cung cấp tên, trả về giá trị của header đó.
15
+
16
+ **Ví dụ sử dụng:**
17
+
18
+ ```typescript
19
+ import { useHeaders } from '@dxtmisha/nitro-basic'
20
+
21
+ // Lấy một header cụ thể
22
+ const contentType = useHeaders('Content-Type')
23
+
24
+ // Lấy tất cả các header
25
+ const headers = useHeaders()
26
+ if (headers) {
27
+ console.log(headers.get('Authorization'))
28
+ }
29
+ ```
@@ -0,0 +1,24 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/en/nitro-basic/Functions/getRequestOrigin - Get Request Origin'/>
4
+
5
+ # `getRequestOrigin`
6
+
7
+ A utility function that extracts the origin (protocol and domain) from a [Request](https://developer.mozilla.org/en-US/docs/Web/API/Request) object. This is useful for getting the base URL of the current request without paths or query parameters.
8
+
9
+ **Parameters:**
10
+ - `request: Request` — A standard Web API Request object.
11
+
12
+ **Returns:**
13
+ `string` — The origin string (e.g., `https://example.com`).
14
+
15
+ ```typescript
16
+ import { getRequestOrigin } from '@dxtmisha/nitro-basic'
17
+
18
+ // Example with a Request object
19
+ const request = new Request('https://dxtmisha.com/docs/api?query=1')
20
+ const origin = getRequestOrigin(request)
21
+
22
+ // Result: "https://dxtmisha.com"
23
+ console.log(origin)
24
+ ```
@@ -0,0 +1,24 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/ru/nitro-basic/Functions/getRequestOrigin - Получение источника запроса'/>
4
+
5
+ # `getRequestOrigin`
6
+
7
+ Утилитарная функция, которая извлекает источник (протокол и домен) из объекта [Request](https://developer.mozilla.org/en-US/docs/Web/API/Request). Это удобно для получения базового URL текущего запроса без путей и параметров.
8
+
9
+ **Параметры:**
10
+ - `request: Request` — Объект стандартного Web API запроса.
11
+
12
+ **Возвращает:**
13
+ `string` — Строка источника (например, `https://example.com`).
14
+
15
+ ```typescript
16
+ import { getRequestOrigin } from '@dxtmisha/nitro-basic'
17
+
18
+ // Пример с объектом Request
19
+ const request = new Request('https://dxtmisha.com/docs/api?query=1')
20
+ const origin = getRequestOrigin(request)
21
+
22
+ // Результат: "https://dxtmisha.com"
23
+ console.log(origin)
24
+ ```
@@ -0,0 +1,24 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/vi/nitro-basic/Functions/getRequestOrigin - Lấy nguồn gốc của yêu cầu'/>
4
+
5
+ # `getRequestOrigin`
6
+
7
+ Một hàm tiện ích giúp trích xuất nguồn (giao thức và tên miền) từ đối tượng [Request](https://developer.mozilla.org/en-US/docs/Web/API/Request). Điều này rất hữu ích để lấy URL cơ sở của yêu cầu hiện tại mà không có đường dẫn hoặc tham số truy vấn.
8
+
9
+ **Tham số:**
10
+ - `request: Request` — Đối tượng Request chuẩn Web API.
11
+
12
+ **Trả về:**
13
+ `string` — Chuỗi nguồn (ví dụ: `https://example.com`).
14
+
15
+ ```typescript
16
+ import { getRequestOrigin } from '@dxtmisha/nitro-basic'
17
+
18
+ // Ví dụ với đối tượng Request
19
+ const request = new Request('https://dxtmisha.com/docs/api?query=1')
20
+ const origin = getRequestOrigin(request)
21
+
22
+ // Kết quả: "https://dxtmisha.com"
23
+ console.log(origin)
24
+ ```
@@ -0,0 +1,24 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/en/nitro-basic/Functions/getRequestUrl - Get Request Pathname'/>
4
+
5
+ # `getRequestUrl`
6
+
7
+ A utility function that extracts the pathname from a [Request](https://developer.mozilla.org/en-US/docs/Web/API/Request) object. This allows you to get only the resource path, excluding the protocol, domain, and query parameters.
8
+
9
+ **Parameters:**
10
+ - `request: Request` — A standard Web API Request object.
11
+
12
+ **Returns:**
13
+ `string` — The pathname string (e.g., `/api/users`).
14
+
15
+ ```typescript
16
+ import { getRequestUrl } from '@dxtmisha/nitro-basic'
17
+
18
+ // Example with a Request object
19
+ const request = new Request('https://dxtmisha.com/docs/api?query=1')
20
+ const urlPath = getRequestUrl(request)
21
+
22
+ // Result: "/docs/api"
23
+ console.log(urlPath)
24
+ ```
@@ -0,0 +1,24 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/ru/nitro-basic/Functions/getRequestUrl - Получение пути запроса'/>
4
+
5
+ # `getRequestUrl`
6
+
7
+ Утилитарная функция, которая извлекает путь (pathname) из объекта [Request](https://developer.mozilla.org/en-US/docs/Web/API/Request). Это позволяет получить только путь к ресурсу, исключая протокол, домен и параметры запроса.
8
+
9
+ **Параметры:**
10
+ - `request: Request` — Объект стандартного Web API запроса.
11
+
12
+ **Возвращает:**
13
+ `string` — Строка пути (например, `/api/users`).
14
+
15
+ ```typescript
16
+ import { getRequestUrl } from '@dxtmisha/nitro-basic'
17
+
18
+ // Пример с объектом Request
19
+ const request = new Request('https://dxtmisha.com/docs/api?query=1')
20
+ const urlPath = getRequestUrl(request)
21
+
22
+ // Результат: "/docs/api"
23
+ console.log(urlPath)
24
+ ```
@@ -0,0 +1,24 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/vi/nitro-basic/Functions/getRequestUrl - Lấy đường dẫn yêu cầu'/>
4
+
5
+ # `getRequestUrl`
6
+
7
+ Một hàm tiện ích giúp trích xuất đường dẫn (pathname) từ đối tượng [Request](https://developer.mozilla.org/en-US/docs/Web/API/Request). Điều này cho phép bạn chỉ lấy đường dẫn tài nguyên, loại trừ giao thức, tên miền và các tham số truy vấn.
8
+
9
+ **Tham số:**
10
+ - `request: Request` — Đối tượng Request chuẩn Web API.
11
+
12
+ **Trả về:**
13
+ `string` — Chuỗi đường dẫn (ví dụ: `/api/users`).
14
+
15
+ ```typescript
16
+ import { getRequestUrl } from '@dxtmisha/nitro-basic'
17
+
18
+ // Ví dụ với đối tượng Request
19
+ const request = new Request('https://dxtmisha.com/docs/api?query=1')
20
+ const urlPath = getRequestUrl(request)
21
+
22
+ // Kết quả: "/docs/api"
23
+ console.log(urlPath)
24
+ ```
@@ -0,0 +1,23 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/en/nitro-basic/Functions/initApi - API Client Initialization'/>
4
+
5
+ # `initApi`
6
+
7
+ A utility function that initializes the API client for the current request on the server. It sets the base origin extracted from the request object to ensure that absolute URLs are correctly formed when making API requests during server-side rendering (SSR).
8
+
9
+ **Parameters:**
10
+ - `request: Request` — The incoming server HTTP request object.
11
+
12
+ **Usage Example:**
13
+
14
+ ```typescript
15
+ import { initApi } from '@dxtmisha/nitro-basic'
16
+
17
+ export default defineEventHandler((event) => {
18
+ const request = toWebRequest(event)
19
+ initApi(request)
20
+
21
+ // Now the Api client is configured with the correct origin
22
+ })
23
+ ```
@@ -0,0 +1,23 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/ru/nitro-basic/Functions/initApi - Инициализация API клиента'/>
4
+
5
+ # `initApi`
6
+
7
+ Утилитарная функция, которая инициализирует API-клиент для текущего запроса на сервере. Она устанавливает базовый источник (origin), извлеченный из объекта запроса, чтобы гарантировать правильное формирование абсолютных URL-адресов при выполнении API-запросов во время серверного рендеринга (SSR).
8
+
9
+ **Параметры:**
10
+ - `request: Request` — Объект входящего HTTP-запроса сервера.
11
+
12
+ **Пример использования:**
13
+
14
+ ```typescript
15
+ import { initApi } from '@dxtmisha/nitro-basic'
16
+
17
+ export default defineEventHandler((event) => {
18
+ const request = toWebRequest(event)
19
+ initApi(request)
20
+
21
+ // Теперь Api клиент настроен на правильный origin
22
+ })
23
+ ```
@@ -0,0 +1,23 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/vi/nitro-basic/Functions/initApi - Khởi tạo API client'/>
4
+
5
+ # `initApi`
6
+
7
+ Một hàm tiện ích giúp khởi tạo API client cho yêu cầu hiện tại trên server. Nó thiết lập origin cơ sở được trích xuất từ đối tượng yêu cầu để đảm bảo rằng các URL tuyệt đối được hình thành chính xác khi thực hiện các yêu cầu API trong quá trình render phía server (SSR).
8
+
9
+ **Tham số:**
10
+ - `request: Request` — Đối tượng yêu cầu HTTP server đến.
11
+
12
+ **Ví dụ sử dụng:**
13
+
14
+ ```typescript
15
+ import { initApi } from '@dxtmisha/nitro-basic'
16
+
17
+ export default defineEventHandler((event) => {
18
+ const request = toWebRequest(event)
19
+ initApi(request)
20
+
21
+ // Bây giờ Api client đã được cấu hình với origin chính xác
22
+ })
23
+ ```
@@ -0,0 +1,21 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/en/nitro-basic/Functions/initClientRouter - Wait for Router Ready'/>
4
+
5
+ # `initClientRouter`
6
+
7
+ An asynchronous function that waits for the initialization and full readiness of the Vue router. This ensures that all asynchronous components and initial navigation hooks are resolved before the application continues execution (e.g., before hydration on the client or rendering on the server).
8
+
9
+ **Parameters:**
10
+ - `router: Router | undefined` — The Vue Router instance.
11
+
12
+ **Returns:**
13
+ `Promise<void>`
14
+
15
+ ```typescript
16
+ import { initClientRouter } from '@dxtmisha/nitro-basic'
17
+ import { createRouter } from './router'
18
+
19
+ const router = createRouter()
20
+ await initClientRouter(router)
21
+ ```