@vitnode/core 1.2.0-canary.22 → 1.2.0-canary.24

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 (190) hide show
  1. package/dist/scripts/plugin.d.ts.map +1 -1
  2. package/dist/scripts/scripts.js +2 -9
  3. package/dist/scripts/shared/file-utils.d.ts.map +1 -1
  4. package/dist/src/api/{plugins → adapters}/email/nodemailer.d.ts +1 -1
  5. package/dist/src/api/adapters/email/nodemailer.d.ts.map +1 -0
  6. package/dist/src/api/{plugins → adapters}/email/nodemailer.js +1 -1
  7. package/dist/src/api/{plugins → adapters}/email/resend.d.ts +1 -1
  8. package/dist/src/api/adapters/email/resend.d.ts.map +1 -0
  9. package/dist/src/api/{plugins → adapters}/email/resend.js +1 -1
  10. package/dist/src/api/adapters/sso/discord.d.ts.map +1 -0
  11. package/dist/src/api/adapters/sso/facebook.d.ts.map +1 -0
  12. package/dist/src/api/adapters/sso/google.d.ts.map +1 -0
  13. package/dist/src/api/config.d.ts.map +1 -1
  14. package/dist/src/api/config.js +6 -5
  15. package/dist/src/api/lib/logger-middleware.d.ts +8 -0
  16. package/dist/src/api/lib/logger-middleware.d.ts.map +1 -0
  17. package/dist/src/api/lib/logger-middleware.js +30 -0
  18. package/dist/src/api/lib/route.d.ts +1 -1
  19. package/dist/src/api/lib/route.d.ts.map +1 -1
  20. package/dist/src/api/lib/route.js +1 -1
  21. package/dist/src/api/middlewares/{global/global.d.ts → global.middleware.d.ts} +10 -8
  22. package/dist/src/api/middlewares/global.middleware.d.ts.map +1 -0
  23. package/dist/src/api/middlewares/global.middleware.js +86 -0
  24. package/dist/src/api/middlewares/rate-limiter.middleware.d.ts +4 -0
  25. package/dist/src/api/middlewares/rate-limiter.middleware.d.ts.map +1 -0
  26. package/dist/src/api/middlewares/rate-limiter.middleware.js +26 -0
  27. package/dist/src/api/models/device.d.ts +4 -1
  28. package/dist/src/api/models/device.d.ts.map +1 -1
  29. package/dist/src/api/models/device.js +21 -14
  30. package/dist/src/api/models/email.d.ts +1 -2
  31. package/dist/src/api/models/email.d.ts.map +1 -1
  32. package/dist/src/api/models/email.js +9 -16
  33. package/dist/src/api/models/password.d.ts.map +1 -1
  34. package/dist/src/api/models/password.js +8 -1
  35. package/dist/src/api/models/session-admin.d.ts +1 -1
  36. package/dist/src/api/models/session-admin.d.ts.map +1 -1
  37. package/dist/src/api/models/session-admin.js +40 -16
  38. package/dist/src/api/models/session.d.ts +1 -1
  39. package/dist/src/api/models/session.d.ts.map +1 -1
  40. package/dist/src/api/models/session.js +28 -12
  41. package/dist/src/api/models/sso.js +1 -1
  42. package/dist/src/api/models/user/sign-up.d.ts +1 -1
  43. package/dist/src/api/models/user/sign-up.d.ts.map +1 -1
  44. package/dist/src/api/models/user/sign-up.js +2 -3
  45. package/dist/src/api/models/user.d.ts +1 -1
  46. package/dist/src/api/models/user.d.ts.map +1 -1
  47. package/dist/src/api/modules/admin/admin.module.d.ts +161 -8
  48. package/dist/src/api/modules/admin/admin.module.d.ts.map +1 -1
  49. package/dist/src/api/modules/admin/admin.module.js +3 -1
  50. package/dist/src/api/modules/admin/debug/debug.admin.module.d.ts +159 -0
  51. package/dist/src/api/modules/admin/debug/debug.admin.module.d.ts.map +1 -0
  52. package/dist/src/api/modules/admin/debug/debug.admin.module.js +10 -0
  53. package/dist/src/api/modules/admin/debug/routes/logs.route.d.ts +160 -0
  54. package/dist/src/api/modules/admin/debug/routes/logs.route.d.ts.map +1 -0
  55. package/dist/src/api/modules/admin/debug/routes/logs.route.js +70 -0
  56. package/dist/src/api/modules/admin/routes/session.route.d.ts +1 -5
  57. package/dist/src/api/modules/admin/routes/session.route.d.ts.map +1 -1
  58. package/dist/src/api/modules/admin/routes/session.route.js +0 -4
  59. package/dist/src/api/modules/admin/users/routes/list.route.d.ts +1 -1
  60. package/dist/src/api/modules/admin/users/routes/users.route.d.ts +1 -1
  61. package/dist/src/api/modules/admin/users/users.admin.module.d.ts +1 -1
  62. package/dist/src/api/modules/middleware/middleware.module.d.ts +1 -1
  63. package/dist/src/api/modules/middleware/route.d.ts +1 -1
  64. package/dist/src/api/modules/middleware/route.d.ts.map +1 -1
  65. package/dist/src/api/modules/middleware/route.js +2 -4
  66. package/dist/src/api/modules/users/routes/session.route.d.ts +1 -1
  67. package/dist/src/api/modules/users/routes/sign-in.route.d.ts +1 -1
  68. package/dist/src/api/modules/users/routes/sign-out.route.d.ts +1 -1
  69. package/dist/src/api/modules/users/routes/sign-up.route.d.ts +1 -1
  70. package/dist/src/api/modules/users/routes/test.route.d.ts +1 -1
  71. package/dist/src/api/modules/users/routes/test.route.d.ts.map +1 -1
  72. package/dist/src/api/modules/users/routes/test.route.js +8 -0
  73. package/dist/src/api/modules/users/sso/routes/callback.route.d.ts +1 -1
  74. package/dist/src/api/modules/users/sso/routes/create-url.route.d.ts +1 -1
  75. package/dist/src/api/modules/users/sso/sso.module.d.ts +2 -2
  76. package/dist/src/api/modules/users/users.module.d.ts +7 -7
  77. package/dist/src/app_admin/core/debug/page.d.ts +11 -0
  78. package/dist/src/app_admin/core/debug/page.d.ts.map +1 -0
  79. package/dist/src/app_admin/core/debug/page.js +44 -0
  80. package/dist/src/app_admin/core/users/page.d.ts +4 -1
  81. package/dist/src/app_admin/core/users/page.d.ts.map +1 -1
  82. package/dist/src/app_admin/core/users/page.js +4 -2
  83. package/dist/src/components/confirm-action/confirm-action-alert-dialog.d.ts +15 -0
  84. package/dist/src/components/confirm-action/confirm-action-alert-dialog.d.ts.map +1 -0
  85. package/dist/src/components/confirm-action/confirm-action-alert-dialog.js +41 -0
  86. package/dist/src/components/confirm-action/content.d.ts +7 -0
  87. package/dist/src/components/confirm-action/content.d.ts.map +1 -0
  88. package/dist/src/components/confirm-action/content.js +31 -0
  89. package/dist/src/components/date-format.d.ts +2 -1
  90. package/dist/src/components/date-format.d.ts.map +1 -1
  91. package/dist/src/components/date-format.js +4 -1
  92. package/dist/src/components/form/auto-form.js +1 -1
  93. package/dist/src/components/form/fields/combobox-async.d.ts +21 -0
  94. package/dist/src/components/form/fields/combobox-async.d.ts.map +1 -0
  95. package/dist/src/components/form/fields/combobox-async.js +115 -0
  96. package/dist/src/components/form/fields/combobox.d.ts +2 -1
  97. package/dist/src/components/form/fields/combobox.d.ts.map +1 -1
  98. package/dist/src/components/form/fields/combobox.js +4 -5
  99. package/dist/src/components/switchers/langs/language-swietcher.d.ts +5 -0
  100. package/dist/src/components/switchers/langs/language-swietcher.d.ts.map +1 -0
  101. package/dist/src/components/switchers/langs/language-swietcher.js +45 -0
  102. package/dist/src/components/switchers/themes/theme-switcher.d.ts.map +1 -0
  103. package/dist/src/components/switchers/{theme-switcher.js → themes/theme-switcher.js} +1 -1
  104. package/dist/src/components/table/content.js +1 -1
  105. package/dist/src/components/table/data-table.d.ts.map +1 -1
  106. package/dist/src/components/table/data-table.js +2 -7
  107. package/dist/src/components/table/pagination.js +3 -3
  108. package/dist/src/components/ui/alert-dialog.d.ts +7 -2
  109. package/dist/src/components/ui/alert-dialog.d.ts.map +1 -1
  110. package/dist/src/components/ui/alert-dialog.js +41 -7
  111. package/dist/src/components/ui/dialog.d.ts.map +1 -1
  112. package/dist/src/components/ui/dialog.js +1 -1
  113. package/dist/src/database/logs.d.ts +116 -0
  114. package/dist/src/database/logs.d.ts.map +1 -0
  115. package/dist/src/database/logs.js +18 -0
  116. package/dist/src/database/sessions.d.ts +19 -0
  117. package/dist/src/database/sessions.d.ts.map +1 -1
  118. package/dist/src/database/sessions.js +3 -0
  119. package/dist/src/lib/fetcher/core.d.ts +16 -0
  120. package/dist/src/lib/fetcher/core.d.ts.map +1 -0
  121. package/dist/src/lib/fetcher/core.js +39 -0
  122. package/dist/src/lib/fetcher/helpers-server.d.ts +3 -0
  123. package/dist/src/lib/fetcher/helpers-server.d.ts.map +1 -0
  124. package/dist/src/lib/fetcher/helpers-server.js +18 -0
  125. package/dist/src/lib/fetcher/helpers.d.ts +0 -1
  126. package/dist/src/lib/fetcher/helpers.d.ts.map +1 -1
  127. package/dist/src/lib/fetcher/helpers.js +0 -17
  128. package/dist/src/lib/fetcher-client.d.ts +9 -0
  129. package/dist/src/lib/fetcher-client.d.ts.map +1 -0
  130. package/dist/src/lib/fetcher-client.js +12 -0
  131. package/dist/src/lib/fetcher.d.ts +3 -1
  132. package/dist/src/lib/fetcher.d.ts.map +1 -1
  133. package/dist/src/lib/fetcher.js +15 -33
  134. package/dist/src/lib/helpers/auto-form.d.ts.map +1 -1
  135. package/dist/src/lib/helpers/auto-form.js +28 -16
  136. package/dist/src/lib/helpers/auto-form.test.js +49 -0
  137. package/dist/src/views/admin/layouts/admin-layout.d.ts.map +1 -1
  138. package/dist/src/views/admin/layouts/admin-layout.js +5 -1
  139. package/dist/src/views/admin/layouts/sidebar/nav/item.d.ts.map +1 -1
  140. package/dist/src/views/admin/layouts/sidebar/nav/item.js +24 -3
  141. package/dist/src/views/admin/layouts/user-bar/client.d.ts.map +1 -1
  142. package/dist/src/views/admin/layouts/user-bar/client.js +26 -18
  143. package/dist/src/views/admin/views/core/dashboard/dashboard-admin-view.js +1 -1
  144. package/dist/src/views/admin/views/core/debug/actions/clear-cache/clear-cache.d.ts +2 -0
  145. package/dist/src/views/admin/views/core/debug/actions/clear-cache/clear-cache.d.ts.map +1 -0
  146. package/dist/src/views/admin/views/core/debug/actions/clear-cache/clear-cache.js +35 -0
  147. package/dist/src/views/admin/views/core/debug/actions/clear-cache/mutation-api.d.ts +2 -0
  148. package/dist/src/views/admin/views/core/debug/actions/clear-cache/mutation-api.d.ts.map +1 -0
  149. package/dist/src/views/admin/views/core/debug/actions/clear-cache/mutation-api.js +5 -0
  150. package/dist/src/views/admin/views/core/debug/debug-admin-view.d.ts +4 -0
  151. package/dist/src/views/admin/views/core/debug/debug-admin-view.d.ts.map +1 -0
  152. package/dist/src/views/admin/views/core/debug/debug-admin-view.js +110 -0
  153. package/dist/src/views/admin/views/core/test.d.ts.map +1 -1
  154. package/dist/src/views/admin/views/core/test.js +108 -103
  155. package/dist/src/views/auth/sso/buttons/sso-buttons.d.ts +1 -1
  156. package/dist/src/views/auth/sso/buttons/sso-buttons.d.ts.map +1 -1
  157. package/dist/src/views/auth/sso/buttons/sso-buttons.js +5 -2
  158. package/dist/src/views/layouts/theme/header/header.d.ts +4 -1
  159. package/dist/src/views/layouts/theme/header/header.d.ts.map +1 -1
  160. package/dist/src/views/layouts/theme/header/header.js +30 -23
  161. package/dist/src/views/layouts/theme/layout.d.ts +3 -1
  162. package/dist/src/views/layouts/theme/layout.d.ts.map +1 -1
  163. package/dist/src/views/layouts/theme/layout.js +4 -3
  164. package/dist/src/vitnode.config.d.ts +11 -5
  165. package/dist/src/vitnode.config.d.ts.map +1 -1
  166. package/dist/src/vitnode.config.js +2 -1
  167. package/dist/tsconfig.tsbuildinfo +1 -1
  168. package/package.json +40 -22
  169. package/src/app_admin/core/debug/page.tsx +43 -0
  170. package/src/app_admin/core/users/page.tsx +7 -2
  171. package/src/locales/en.json +37 -1
  172. package/src/vitnode.config.ts +16 -6
  173. package/dist/src/api/lib/get-user-ip.d.ts +0 -3
  174. package/dist/src/api/lib/get-user-ip.d.ts.map +0 -1
  175. package/dist/src/api/lib/get-user-ip.js +0 -8
  176. package/dist/src/api/middlewares/global/global.d.ts.map +0 -1
  177. package/dist/src/api/middlewares/global/global.js +0 -47
  178. package/dist/src/api/plugins/email/nodemailer.d.ts.map +0 -1
  179. package/dist/src/api/plugins/email/resend.d.ts.map +0 -1
  180. package/dist/src/api/plugins/sso/discord.d.ts.map +0 -1
  181. package/dist/src/api/plugins/sso/facebook.d.ts.map +0 -1
  182. package/dist/src/api/plugins/sso/google.d.ts.map +0 -1
  183. package/dist/src/components/switchers/theme-switcher.d.ts.map +0 -1
  184. /package/dist/src/api/{plugins → adapters}/sso/discord.d.ts +0 -0
  185. /package/dist/src/api/{plugins → adapters}/sso/discord.js +0 -0
  186. /package/dist/src/api/{plugins → adapters}/sso/facebook.d.ts +0 -0
  187. /package/dist/src/api/{plugins → adapters}/sso/facebook.js +0 -0
  188. /package/dist/src/api/{plugins → adapters}/sso/google.d.ts +0 -0
  189. /package/dist/src/api/{plugins → adapters}/sso/google.js +0 -0
  190. /package/dist/src/components/switchers/{theme-switcher.d.ts → themes/theme-switcher.d.ts} +0 -0
@@ -0,0 +1,35 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { BrushCleaningIcon } from "lucide-react";
4
+ import { useTranslations } from "next-intl";
5
+ import { toast } from "sonner";
6
+ import { ConfirmActionAlertDialog } from "../../../../../../../components/confirm-action/confirm-action-alert-dialog.js";
7
+ import { Button } from "../../../../../../../components/ui/button.js";
8
+ import { clearCacheMutation } from "./mutation-api.js";
9
+ export const ClearCacheAction = ()=>{
10
+ const t = useTranslations('admin.debug.actions.clear_cache');
11
+ const tErrors = useTranslations('core.global.errors');
12
+ return /*#__PURE__*/ _jsx(ConfirmActionAlertDialog, {
13
+ description: t('desc'),
14
+ onSubmit: async ({ onClose })=>{
15
+ try {
16
+ await clearCacheMutation();
17
+ } catch {
18
+ toast.error(tErrors('title'), {
19
+ description: tErrors('internal_server_error')
20
+ });
21
+ return;
22
+ }
23
+ onClose();
24
+ toast.success(t('success'));
25
+ },
26
+ textSubmit: t('confirm'),
27
+ title: t('title'),
28
+ children: /*#__PURE__*/ _jsxs(Button, {
29
+ children: [
30
+ /*#__PURE__*/ _jsx(BrushCleaningIcon, {}),
31
+ t('label')
32
+ ]
33
+ })
34
+ });
35
+ };
@@ -0,0 +1,2 @@
1
+ export declare const clearCacheMutation: () => Promise<void>;
2
+ //# sourceMappingURL=mutation-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation-api.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/views/admin/views/core/debug/actions/clear-cache/mutation-api.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,kBAAkB,qBAE9B,CAAC"}
@@ -0,0 +1,5 @@
1
+ 'use server';
2
+ import { revalidatePath } from "next/cache";
3
+ export const clearCacheMutation = async ()=>{
4
+ await Promise.resolve(revalidatePath('/', 'layout'));
5
+ };
@@ -0,0 +1,4 @@
1
+ export declare const DebugAdminView: ({ searchParams, }: {
2
+ searchParams: Promise<Record<string, string | string[] | undefined>>;
3
+ }) => Promise<import("react/jsx-runtime").JSX.Element>;
4
+ //# sourceMappingURL=debug-admin-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-admin-view.d.ts","sourceRoot":"","sources":["../../../../../../../src/views/admin/views/core/debug/debug-admin-view.tsx"],"names":[],"mappings":"AASA,eAAO,MAAM,cAAc,GAAU,mBAElC;IACD,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;CACtE,qDAwFA,CAAC"}
@@ -0,0 +1,110 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { TriangleAlertIcon, XIcon } from "lucide-react";
3
+ import { getTranslations } from "next-intl/server";
4
+ import { debugAdminModule } from "../../../../../api/modules/admin/debug/debug.admin.module.js";
5
+ import { DateFormat } from "../../../../../components/date-format.js";
6
+ import { DataTable } from "../../../../../components/table/data-table.js";
7
+ import { Badge } from "../../../../../components/ui/badge.js";
8
+ import { fetcher } from "../../../../../lib/fetcher.js";
9
+ export const DebugAdminView = async ({ searchParams })=>{
10
+ const t = await getTranslations('admin.debug.logs');
11
+ const query = await searchParams;
12
+ const res = await fetcher(debugAdminModule, {
13
+ prefixPath: '/admin',
14
+ path: '/logs',
15
+ method: 'get',
16
+ module: 'debug',
17
+ args: {
18
+ query
19
+ },
20
+ withPagination: true
21
+ });
22
+ const data = await res.json();
23
+ return /*#__PURE__*/ _jsx(DataTable, {
24
+ columns: [
25
+ {
26
+ id: 'id',
27
+ label: t('id'),
28
+ className: 'w-24'
29
+ },
30
+ {
31
+ id: 'type',
32
+ label: t('type'),
33
+ className: 'w-48',
34
+ cell: ({ row })=>{
35
+ if (row.type === 'warn') {
36
+ return /*#__PURE__*/ _jsxs(Badge, {
37
+ className: "bg-warn/10 border-warn/50 text-warn",
38
+ children: [
39
+ /*#__PURE__*/ _jsx(TriangleAlertIcon, {}),
40
+ " ",
41
+ t(`types.${row.type}`)
42
+ ]
43
+ });
44
+ }
45
+ if (row.type === 'error') {
46
+ return /*#__PURE__*/ _jsxs(Badge, {
47
+ className: "bg-destructive/10 border-destructive/50 text-destructive",
48
+ children: [
49
+ /*#__PURE__*/ _jsx(XIcon, {}),
50
+ " ",
51
+ t(`types.${row.type}`)
52
+ ]
53
+ });
54
+ }
55
+ return /*#__PURE__*/ _jsx(Badge, {
56
+ children: t(`types.${row.type}`)
57
+ });
58
+ }
59
+ },
60
+ {
61
+ id: 'pluginId',
62
+ label: t('plugin'),
63
+ className: 'w-48'
64
+ },
65
+ {
66
+ id: 'createdAt',
67
+ label: t('created_at'),
68
+ cell: ({ row })=>/*#__PURE__*/ _jsx(DateFormat, {
69
+ date: row.createdAt,
70
+ showFullDate: true
71
+ })
72
+ },
73
+ {
74
+ id: 'content',
75
+ label: t('content'),
76
+ cell: ({ row })=>{
77
+ const CHARACTERS = 50;
78
+ const content = row.content;
79
+ const isLong = content.length > CHARACTERS;
80
+ const displayContent = isLong ? content.slice(0, CHARACTERS) + '...' : content;
81
+ return /*#__PURE__*/ _jsx("span", {
82
+ children: displayContent
83
+ });
84
+ }
85
+ },
86
+ {
87
+ id: 'actions',
88
+ label: '',
89
+ cell: ({ row })=>/*#__PURE__*/ _jsx("span", {
90
+ children: "actions"
91
+ })
92
+ }
93
+ ],
94
+ edges: data.edges.map((edge)=>({
95
+ ...edge
96
+ })),
97
+ order: {
98
+ columns: [
99
+ 'createdAt',
100
+ 'pluginId',
101
+ 'type'
102
+ ],
103
+ defaultOrder: {
104
+ column: 'createdAt',
105
+ order: 'desc'
106
+ }
107
+ },
108
+ pageInfo: data.pageInfo
109
+ });
110
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../../../../src/views/admin/views/core/test.tsx"],"names":[],"mappings":"AAaA,eAAO,MAAM,QAAQ,+CA0IpB,CAAC"}
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../../../../src/views/admin/views/core/test.tsx"],"names":[],"mappings":"AAcA,eAAO,MAAM,QAAQ,+CA6IpB,CAAC"}
@@ -9,6 +9,7 @@ import { AutoFormRadioGroup } from "../../../../components/form/fields/radio-gro
9
9
  import { AutoFormSelect } from "../../../../components/form/fields/select.js";
10
10
  import { AutoFormSwitch } from "../../../../components/form/fields/switch.js";
11
11
  import { AutoFormTextarea } from "../../../../components/form/fields/textarea.js";
12
+ import { Card } from "../../../../components/ui/card.js";
12
13
  export const TestView = ()=>{
13
14
  const formSchema = z.object({
14
15
  provider: z.string().min(1, {
@@ -37,110 +38,114 @@ export const TestView = ()=>{
37
38
  ])
38
39
  });
39
40
  return /*#__PURE__*/ _jsx("div", {
40
- className: "container mx-auto p-4",
41
- children: /*#__PURE__*/ _jsx(AutoForm, {
42
- fields: [
43
- {
44
- id: 'provider',
45
- component: (props)=>/*#__PURE__*/ _jsx(AutoFormInput, {
46
- description: "This is the provider for your application. It should be a valid provider name.",
47
- label: "Provider",
48
- ...props
49
- })
50
- },
51
- {
52
- id: 'client_secret',
53
- component: (props)=>/*#__PURE__*/ _jsx(AutoFormTextarea, {
54
- description: "This is the client secret for your application. It should be kept secret and not shared with anyone.",
55
- label: "Client Secret",
56
- ...props
57
- })
58
- },
59
- {
60
- id: 'terms',
61
- component: (props)=>/*#__PURE__*/ _jsx(AutoFormCheckbox, {
62
- description: "By checking this box, you agree to the terms and conditions.",
63
- label: "I agree to the terms and conditions",
64
- ...props
65
- })
66
- },
67
- {
68
- id: 'options',
69
- component: (props)=>/*#__PURE__*/ _jsx(AutoFormRadioGroup, {
70
- description: "By checking this box, you agree to the terms and conditions.",
71
- label: "I agree to the terms and conditions",
72
- labels: [
73
- {
74
- value: 'option1',
75
- label: 'Option 1 with a very long label that should be truncated'
76
- },
77
- {
78
- value: 'option2',
79
- label: 'Option 2'
80
- },
81
- {
82
- value: 'option3',
83
- label: 'Option 3'
84
- }
85
- ],
86
- ...props
87
- })
88
- },
89
- {
90
- id: 'options_long',
91
- component: (props)=>/*#__PURE__*/ _jsx(AutoFormSelect, {
92
- description: "By checking this box, you agree to the terms and conditions.",
93
- label: "I agree to the terms and conditions",
94
- labels: [
95
- {
96
- value: 'option1',
97
- label: 'Option 1 with a very long label that should be truncated'
98
- },
99
- {
100
- value: 'option2',
101
- label: 'Option 2'
102
- },
103
- {
104
- value: 'option3',
105
- label: 'Option 3'
106
- }
107
- ],
108
- placeholder: "Select an option from the list",
109
- ...props
110
- })
111
- },
112
- {
113
- id: 'switch',
114
- component: (props)=>/*#__PURE__*/ _jsx(AutoFormSwitch, {
115
- description: "By checking this box, you agree to the terms and conditions.",
116
- label: "I agree to the terms and conditions",
117
- ...props
118
- })
119
- },
120
- {
121
- id: 'type',
122
- component: (props)=>/*#__PURE__*/ _jsx(AutoFormCombobox, {
123
- description: "By checking this box, you agree to the terms and conditions.",
124
- label: "Type",
125
- labels: [
126
- {
127
- value: 'option-one',
128
- label: 'Option One'
129
- },
130
- {
131
- value: 'option-two',
132
- label: 'Option Two'
133
- }
134
- ],
135
- ...props
136
- })
41
+ className: "p-4",
42
+ children: /*#__PURE__*/ _jsx(Card, {
43
+ className: "p-6",
44
+ children: /*#__PURE__*/ _jsx(AutoForm, {
45
+ fields: [
46
+ {
47
+ id: 'provider',
48
+ component: (props)=>/*#__PURE__*/ _jsx(AutoFormInput, {
49
+ description: "This is the provider for your application. It should be a valid provider name.",
50
+ label: "Provider",
51
+ ...props
52
+ })
53
+ },
54
+ {
55
+ id: 'client_secret',
56
+ component: (props)=>/*#__PURE__*/ _jsx(AutoFormTextarea, {
57
+ description: "This is the client secret for your application. It should be kept secret and not shared with anyone.",
58
+ label: "Client Secret",
59
+ ...props
60
+ })
61
+ },
62
+ {
63
+ id: 'terms',
64
+ component: (props)=>/*#__PURE__*/ _jsx(AutoFormCheckbox, {
65
+ description: "By checking this box, you agree to the terms and conditions.",
66
+ label: "I agree to the terms and conditions",
67
+ ...props
68
+ })
69
+ },
70
+ {
71
+ id: 'options',
72
+ component: (props)=>/*#__PURE__*/ _jsx(AutoFormRadioGroup, {
73
+ description: "By checking this box, you agree to the terms and conditions.",
74
+ label: "I agree to the terms and conditions",
75
+ labels: [
76
+ {
77
+ value: 'option1',
78
+ label: 'Option 1 with a very long label that should be truncated'
79
+ },
80
+ {
81
+ value: 'option2',
82
+ label: 'Option 2'
83
+ },
84
+ {
85
+ value: 'option3',
86
+ label: 'Option 3'
87
+ }
88
+ ],
89
+ ...props
90
+ })
91
+ },
92
+ {
93
+ id: 'options_long',
94
+ component: (props)=>/*#__PURE__*/ _jsx(AutoFormSelect, {
95
+ description: "By checking this box, you agree to the terms and conditions.",
96
+ label: "I agree to the terms and conditions",
97
+ labels: [
98
+ {
99
+ value: 'option1',
100
+ label: 'Option 1 with a very long label that should be truncated'
101
+ },
102
+ {
103
+ value: 'option2',
104
+ label: 'Option 2'
105
+ },
106
+ {
107
+ value: 'option3',
108
+ label: 'Option 3'
109
+ }
110
+ ],
111
+ placeholder: "Select an option from the list",
112
+ ...props
113
+ })
114
+ },
115
+ {
116
+ id: 'switch',
117
+ component: (props)=>/*#__PURE__*/ _jsx(AutoFormSwitch, {
118
+ description: "By checking this box, you agree to the terms and conditions.",
119
+ label: "I agree to the terms and conditions",
120
+ ...props
121
+ })
122
+ },
123
+ {
124
+ id: 'type',
125
+ component: (props)=>/*#__PURE__*/ _jsx(AutoFormCombobox, {
126
+ description: "By checking this box, you agree to the terms and conditions.",
127
+ label: "Type",
128
+ labels: [
129
+ {
130
+ value: 'option-one',
131
+ label: 'Option One'
132
+ },
133
+ {
134
+ value: 'option-two',
135
+ label: 'Option Two'
136
+ }
137
+ ],
138
+ ...props
139
+ })
140
+ }
141
+ ],
142
+ formSchema: formSchema,
143
+ onSubmit: async (values)=>{
144
+ // eslint-disable-next-line no-console
145
+ console.log('Form submitted', values);
146
+ await new Promise((resolve)=>setTimeout(resolve, 3000));
137
147
  }
138
- ],
139
- formSchema: formSchema,
140
- onSubmit: (values)=>{
141
- // eslint-disable-next-line no-console
142
- console.log('Form submitted', values);
143
- }
148
+ })
144
149
  })
145
150
  });
146
151
  };
@@ -1,3 +1,3 @@
1
1
  export declare const SSOButtonsSkeleton: () => import("react/jsx-runtime").JSX.Element;
2
- export declare const SSOButtons: () => Promise<import("react/jsx-runtime").JSX.Element>;
2
+ export declare const SSOButtons: () => Promise<import("react/jsx-runtime").JSX.Element | null>;
3
3
  //# sourceMappingURL=sso-buttons.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sso-buttons.d.ts","sourceRoot":"","sources":["../../../../../../src/views/auth/sso/buttons/sso-buttons.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,kBAAkB,+CAO9B,CAAC;AAEF,eAAO,MAAM,UAAU,wDAiCtB,CAAC"}
1
+ {"version":3,"file":"sso-buttons.d.ts","sourceRoot":"","sources":["../../../../../../src/views/auth/sso/buttons/sso-buttons.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,kBAAkB,+CAO9B,CAAC;AAEF,eAAO,MAAM,UAAU,+DA+BtB,CAAC"}
@@ -21,6 +21,9 @@ export const SSOButtons = async ()=>{
21
21
  getTranslations('core.auth.sso'),
22
22
  getMiddlewareApi()
23
23
  ]);
24
+ if (!sso.length) {
25
+ return null;
26
+ }
24
27
  return /*#__PURE__*/ _jsxs(_Fragment, {
25
28
  children: [
26
29
  /*#__PURE__*/ _jsxs("div", {
@@ -32,7 +35,7 @@ export const SSOButtons = async ()=>{
32
35
  className: "w-full border-t"
33
36
  })
34
37
  }),
35
- sso.length > 0 && /*#__PURE__*/ _jsx("div", {
38
+ /*#__PURE__*/ _jsx("div", {
36
39
  className: "relative flex justify-center text-xs",
37
40
  children: /*#__PURE__*/ _jsx("span", {
38
41
  className: "bg-card text-muted-foreground px-4",
@@ -41,7 +44,7 @@ export const SSOButtons = async ()=>{
41
44
  })
42
45
  ]
43
46
  }),
44
- sso.length > 0 && /*#__PURE__*/ _jsx("div", {
47
+ /*#__PURE__*/ _jsx("div", {
45
48
  className: "flex flex-wrap items-center justify-center gap-4",
46
49
  children: sso.map((provider)=>/*#__PURE__*/ _jsx(ButtonSSOButtons, {
47
50
  providerId: provider.id,
@@ -1,4 +1,7 @@
1
- export declare const HeaderLayout: ({ logo, className, ...props }: React.ComponentProps<"header"> & {
1
+ import React from 'react';
2
+ import type { VitNodeConfig } from '../../../../vitnode.config';
3
+ export declare const HeaderLayout: ({ logo, className, vitNodeConfig, ...props }: React.ComponentProps<"header"> & {
2
4
  logo: React.ReactNode;
5
+ vitNodeConfig: VitNodeConfig;
3
6
  }) => import("react/jsx-runtime").JSX.Element;
4
7
  //# sourceMappingURL=header.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../../../../src/views/layouts/theme/header/header.tsx"],"names":[],"mappings":"AASA,eAAO,MAAM,YAAY,GAAI,+BAI1B,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,4CAqB5D,CAAC"}
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../../../../src/views/layouts/theme/header/header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAUtD,eAAO,MAAM,YAAY,GAAI,8CAK1B,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG;IAClC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,aAAa,EAAE,aAAa,CAAC;CAC9B,4CAwBA,CAAC"}
@@ -1,32 +1,39 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Suspense } from "react";
3
- import { ThemeSwitcher } from "../../../../components/switchers/theme-switcher.js";
2
+ import React from "react";
3
+ import { LanguageSwitcher } from "../../../../components/switchers/langs/language-swietcher.js";
4
+ import { ThemeSwitcher } from "../../../../components/switchers/themes/theme-switcher.js";
4
5
  import { Skeleton } from "../../../../components/ui/skeleton.js";
5
6
  import { Link } from "../../../../lib/navigation.js";
6
7
  import { cn } from "../../../../lib/utils.js";
7
8
  import { UserHeader } from "./user/user.js";
8
- export const HeaderLayout = ({ logo, className, ...props })=>{
9
- return /*#__PURE__*/ _jsxs("header", {
10
- className: cn('bg-background/75 container sticky top-0 z-20 mx-auto flex w-full items-center border-b px-4 py-2 backdrop-blur sm:top-2 sm:rounded-xl sm:border', className),
9
+ export const HeaderLayout = ({ logo, className, vitNodeConfig, ...props })=>{
10
+ return /*#__PURE__*/ _jsx("header", {
11
+ className: cn('bg-card/75 sticky top-0 z-20 w-full border-b shadow-sm backdrop-blur', className),
11
12
  ...props,
12
- children: [
13
- /*#__PURE__*/ _jsx(Link, {
14
- href: "/",
15
- prefetch: true,
16
- children: logo
17
- }),
18
- /*#__PURE__*/ _jsxs("div", {
19
- className: "ml-auto flex items-center gap-2",
20
- children: [
21
- /*#__PURE__*/ _jsx(ThemeSwitcher, {}),
22
- /*#__PURE__*/ _jsx(Suspense, {
23
- fallback: /*#__PURE__*/ _jsx(Skeleton, {
24
- className: "h-9 w-32"
13
+ children: /*#__PURE__*/ _jsxs("div", {
14
+ className: "container mx-auto flex h-14 items-center px-4 py-2",
15
+ children: [
16
+ /*#__PURE__*/ _jsx(Link, {
17
+ href: "/",
18
+ prefetch: true,
19
+ children: logo
20
+ }),
21
+ /*#__PURE__*/ _jsxs("div", {
22
+ className: "ml-auto flex items-center gap-2",
23
+ children: [
24
+ /*#__PURE__*/ _jsx(LanguageSwitcher, {
25
+ locales: vitNodeConfig.i18n.locales
25
26
  }),
26
- children: /*#__PURE__*/ _jsx(UserHeader, {})
27
- })
28
- ]
29
- })
30
- ]
27
+ /*#__PURE__*/ _jsx(ThemeSwitcher, {}),
28
+ /*#__PURE__*/ _jsx(React.Suspense, {
29
+ fallback: /*#__PURE__*/ _jsx(Skeleton, {
30
+ className: "h-9 w-32"
31
+ }),
32
+ children: /*#__PURE__*/ _jsx(UserHeader, {})
33
+ })
34
+ ]
35
+ })
36
+ ]
37
+ })
31
38
  });
32
39
  };
@@ -1,5 +1,7 @@
1
+ import type { VitNodeConfig } from '../../../vitnode.config';
1
2
  import { HeaderLayout } from './header/header';
2
- export declare const ThemeLayout: ({ children, logo, }: React.ComponentProps<typeof HeaderLayout> & {
3
+ export declare const ThemeLayout: ({ children, logo, vitNodeConfig, }: React.ComponentProps<typeof HeaderLayout> & {
3
4
  children: React.ReactNode;
5
+ vitNodeConfig: VitNodeConfig;
4
6
  }) => import("react/jsx-runtime").JSX.Element;
5
7
  //# sourceMappingURL=layout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../../../src/views/layouts/theme/layout.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,eAAO,MAAM,WAAW,GAAI,qBAGzB,KAAK,CAAC,cAAc,CAAC,OAAO,YAAY,CAAC,GAAG;IAC7C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,4CAMA,CAAC"}
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../../../src/views/layouts/theme/layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,eAAO,MAAM,WAAW,GAAI,oCAIzB,KAAK,CAAC,cAAc,CAAC,OAAO,YAAY,CAAC,GAAG;IAC7C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,aAAa,EAAE,aAAa,CAAC;CAC9B,4CAOA,CAAC"}
@@ -1,12 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { HeaderLayout } from "./header/header.js";
3
- export const ThemeLayout = ({ children, logo })=>{
3
+ export const ThemeLayout = ({ children, logo, vitNodeConfig })=>{
4
4
  return /*#__PURE__*/ _jsxs(_Fragment, {
5
5
  children: [
6
6
  /*#__PURE__*/ _jsx(HeaderLayout, {
7
- logo: logo
7
+ logo: logo,
8
+ vitNodeConfig: vitNodeConfig
8
9
  }),
9
- " ",
10
+ ' ',
10
11
  /*#__PURE__*/ _jsx("main", {
11
12
  children: children
12
13
  })
@@ -1,16 +1,21 @@
1
1
  import type { PostgresJsDatabase } from 'drizzle-orm/postgres-js';
2
2
  import type { ThemeProvider } from 'next-themes';
3
+ import type { IRateLimiterOptions } from 'rate-limiter-flexible';
3
4
  import type { BuildPluginApiReturn } from './api/lib/plugin';
4
5
  import type { EmailApiPlugin } from './api/models/email';
5
6
  import type { SSOApiPlugin } from './api/models/sso';
6
7
  import type { BuildPluginReturn } from './lib/plugin';
7
- export interface VitNodeConfig<AppLocales extends string[] = string[]> {
8
+ export interface LocaleConfig {
9
+ code: string;
10
+ name: string;
11
+ }
12
+ export interface VitNodeConfig<AppLocales extends LocaleConfig[] = LocaleConfig[]> {
8
13
  admin?: {
9
14
  sidebarCookieName?: string;
10
15
  };
11
16
  debug?: boolean;
12
17
  i18n: {
13
- defaultLocale: AppLocales[number];
18
+ defaultLocale: AppLocales[number]['code'];
14
19
  localePrefix?: 'always' | 'as-needed' | 'never';
15
20
  locales: AppLocales;
16
21
  timeZone?: string;
@@ -31,13 +36,14 @@ export interface VitNodeApiConfig {
31
36
  cookieSecure?: boolean;
32
37
  deviceCookieExpires?: number;
33
38
  deviceCookieName?: string;
34
- ssoPlugins?: SSOApiPlugin[];
39
+ ssoProviders?: SSOApiPlugin[];
35
40
  };
36
41
  dbProvider: PostgresJsDatabase;
37
- emailProvider?: EmailApiPlugin;
42
+ emailAdapter?: EmailApiPlugin;
38
43
  plugins: BuildPluginApiReturn[];
44
+ rateLimiter?: Omit<IRateLimiterOptions, 'keyPrefix'>;
39
45
  }
40
- export declare function buildConfig<AppLocales extends string[]>(args: VitNodeConfig<AppLocales>): VitNodeConfig<AppLocales>;
46
+ export declare function buildConfig<AppLocales extends LocaleConfig[]>(args: VitNodeConfig<AppLocales>): VitNodeConfig<AppLocales>;
41
47
  export declare function buildApiConfig(args: VitNodeApiConfig): VitNodeApiConfig;
42
48
  export declare const handleRequestConfig: ({ requestLocale, vitNodeConfig, pathToMessages, }: {
43
49
  pathToMessages: (path: string) => Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"vitnode.config.d.ts","sourceRoot":"","sources":["../../src/vitnode.config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,aAAa,CAAC,UAAU,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE;IACnE,KAAK,CAAC,EAAE;QACN,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE;QACJ,aAAa,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QAClC,YAAY,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC;QAChD,OAAO,EAAE,UAAU,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,QAAQ,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,IAAI,CACV,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,EAC1C,WAAW,GAAG,2BAA2B,GAAG,cAAc,CAC3D,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,EAAE;QACd,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;KAC7B,CAAC;IACF,UAAU,EAAE,kBAAkB,CAAC;IAC/B,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,OAAO,EAAE,oBAAoB,EAAE,CAAC;CACjC;AAED,wBAAgB,WAAW,CAAC,UAAU,SAAS,MAAM,EAAE,EACrD,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,GAC9B,aAAa,CAAC,UAAU,CAAC,CAQ3B;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAEvE;AAED,eAAO,MAAM,mBAAmB,GAAU,mDAIvC;IACD,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,aAAa,EAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC3C,aAAa,EAAE,aAAa,CAAC;CAC9B;;;;;EAiCA,CAAC"}
1
+ {"version":3,"file":"vitnode.config.d.ts","sourceRoot":"","sources":["../../src/vitnode.config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa,CAC5B,UAAU,SAAS,YAAY,EAAE,GAAG,YAAY,EAAE;IAElD,KAAK,CAAC,EAAE;QACN,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE;QACJ,aAAa,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;QAC1C,YAAY,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC;QAChD,OAAO,EAAE,UAAU,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,QAAQ,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,IAAI,CACV,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,EAC1C,WAAW,GAAG,2BAA2B,GAAG,cAAc,CAC3D,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,EAAE;QACd,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;KAC/B,CAAC;IACF,UAAU,EAAE,kBAAkB,CAAC;IAC/B,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;CACtD;AAED,wBAAgB,WAAW,CAAC,UAAU,SAAS,YAAY,EAAE,EAC3D,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,GAC9B,aAAa,CAAC,UAAU,CAAC,CAQ3B;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAEvE;AAED,eAAO,MAAM,mBAAmB,GAAU,mDAIvC;IACD,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,aAAa,EAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC3C,aAAa,EAAE,aAAa,CAAC;CAC9B;;;;;EAkCA,CAAC"}
@@ -12,7 +12,8 @@ export function buildApiConfig(args) {
12
12
  }
13
13
  export const handleRequestConfig = async ({ requestLocale, vitNodeConfig, pathToMessages })=>{
14
14
  const reqLocale = await requestLocale;
15
- const locale = reqLocale && `${vitNodeConfig.i18n.locales}`.includes(reqLocale) ? reqLocale : vitNodeConfig.i18n.defaultLocale;
15
+ const localeCodes = vitNodeConfig.i18n.locales.map((locale)=>locale.code);
16
+ const locale = reqLocale && localeCodes.includes(reqLocale) ? reqLocale : vitNodeConfig.i18n.defaultLocale;
16
17
  const pluginIds = [
17
18
  '@vitnode/core',
18
19
  ...vitNodeConfig.plugins.map((plugin)=>plugin.pluginId)