@vitnode/core 1.2.0-canary.75 → 1.2.0-canary.77

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 (716) hide show
  1. package/cli.mjs +2 -0
  2. package/dist/scripts/build.d.ts +2 -0
  3. package/dist/scripts/build.d.ts.map +1 -0
  4. package/dist/scripts/dev.d.ts +4 -0
  5. package/dist/scripts/dev.d.ts.map +1 -0
  6. package/dist/scripts/get-config.d.ts +7 -2
  7. package/dist/scripts/get-config.d.ts.map +1 -1
  8. package/dist/scripts/i18n-check.d.ts +2 -0
  9. package/dist/scripts/i18n-check.d.ts.map +1 -0
  10. package/dist/scripts/plugin.d.ts.map +1 -1
  11. package/dist/scripts/prepare-database.d.ts.map +1 -1
  12. package/dist/scripts/prepare-plugins-files.d.ts.map +1 -1
  13. package/dist/scripts/scripts.js +4 -2
  14. package/dist/scripts/shared/file-utils.d.ts +1 -0
  15. package/dist/scripts/shared/file-utils.d.ts.map +1 -1
  16. package/dist/src/api/adapters/events/local.d.ts +3 -0
  17. package/dist/src/api/adapters/events/local.d.ts.map +1 -0
  18. package/dist/src/api/adapters/events/local.js +1 -0
  19. package/dist/src/api/adapters/search/postgres.d.ts +3 -0
  20. package/dist/src/api/adapters/search/postgres.d.ts.map +1 -0
  21. package/dist/src/api/adapters/search/postgres.js +1 -0
  22. package/dist/src/api/adapters/storage/local.d.ts +6 -0
  23. package/dist/src/api/adapters/storage/local.d.ts.map +1 -0
  24. package/dist/src/api/adapters/storage/local.js +1 -0
  25. package/dist/src/api/config.d.ts.map +1 -1
  26. package/dist/src/api/config.js +1 -1
  27. package/dist/src/api/lib/check-staff-permission.d.ts.map +1 -1
  28. package/dist/src/api/lib/check-staff-permission.js +1 -1
  29. package/dist/src/api/lib/cron.d.ts +2 -0
  30. package/dist/src/api/lib/cron.d.ts.map +1 -1
  31. package/dist/src/api/lib/cron.js +1 -1
  32. package/dist/src/api/lib/events.d.ts +15 -0
  33. package/dist/src/api/lib/events.d.ts.map +1 -0
  34. package/dist/src/api/lib/events.js +1 -0
  35. package/dist/src/api/lib/module.d.ts +4 -1
  36. package/dist/src/api/lib/module.d.ts.map +1 -1
  37. package/dist/src/api/lib/module.js +1 -1
  38. package/dist/src/api/lib/permission-staff.d.ts +0 -4
  39. package/dist/src/api/lib/permission-staff.d.ts.map +1 -1
  40. package/dist/src/api/lib/plugin.d.ts +9 -1
  41. package/dist/src/api/lib/plugin.d.ts.map +1 -1
  42. package/dist/src/api/lib/plugin.js +1 -1
  43. package/dist/src/api/lib/route.d.ts +1 -1
  44. package/dist/src/api/lib/route.d.ts.map +1 -1
  45. package/dist/src/api/lib/route.js +1 -1
  46. package/dist/src/api/lib/save-language-words.d.ts +11 -0
  47. package/dist/src/api/lib/save-language-words.d.ts.map +1 -0
  48. package/dist/src/api/lib/save-language-words.js +1 -0
  49. package/dist/src/api/middlewares/global.middleware.d.ts +29 -5
  50. package/dist/src/api/middlewares/global.middleware.d.ts.map +1 -1
  51. package/dist/src/api/middlewares/global.middleware.js +1 -1
  52. package/dist/src/api/middlewares/plugin.middleware.d.ts +3 -0
  53. package/dist/src/api/middlewares/plugin.middleware.d.ts.map +1 -0
  54. package/dist/src/api/middlewares/plugin.middleware.js +1 -0
  55. package/dist/src/api/middlewares/rate-limiter.middleware.d.ts +4 -1
  56. package/dist/src/api/middlewares/rate-limiter.middleware.d.ts.map +1 -1
  57. package/dist/src/api/middlewares/rate-limiter.middleware.js +1 -1
  58. package/dist/src/api/models/device.d.ts.map +1 -1
  59. package/dist/src/api/models/device.js +1 -1
  60. package/dist/src/api/models/email.d.ts.map +1 -1
  61. package/dist/src/api/models/email.js +1 -1
  62. package/dist/src/api/models/events.d.ts +66 -0
  63. package/dist/src/api/models/events.d.ts.map +1 -0
  64. package/dist/src/api/models/events.js +1 -0
  65. package/dist/src/api/models/i18n.d.ts +15 -0
  66. package/dist/src/api/models/i18n.d.ts.map +1 -0
  67. package/dist/src/api/models/i18n.js +1 -0
  68. package/dist/src/api/models/search.d.ts +102 -0
  69. package/dist/src/api/models/search.d.ts.map +1 -0
  70. package/dist/src/api/models/search.js +1 -0
  71. package/dist/src/api/models/storage.d.ts +40 -0
  72. package/dist/src/api/models/storage.d.ts.map +1 -0
  73. package/dist/src/api/models/storage.js +1 -0
  74. package/dist/src/api/models/user/sign-up.d.ts +1 -1
  75. package/dist/src/api/models/user/sign-up.d.ts.map +1 -1
  76. package/dist/src/api/models/user/sign-up.js +1 -1
  77. package/dist/src/api/models/user.d.ts +1 -1
  78. package/dist/src/api/modules/admin/admin.module.d.ts +376 -2
  79. package/dist/src/api/modules/admin/admin.module.d.ts.map +1 -1
  80. package/dist/src/api/modules/admin/admin.module.js +1 -1
  81. package/dist/src/api/modules/admin/advanced/advanced.admin.module.d.ts +1 -1
  82. package/dist/src/api/modules/admin/advanced/cron/routes/get.route.d.ts.map +1 -1
  83. package/dist/src/api/modules/admin/advanced/cron/routes/get.route.js +1 -1
  84. package/dist/src/api/modules/admin/advanced/cron/routes/run.route.d.ts.map +1 -1
  85. package/dist/src/api/modules/admin/advanced/cron/routes/run.route.js +1 -1
  86. package/dist/src/api/modules/admin/advanced/queue/queue.admin.module.d.ts +1 -1
  87. package/dist/src/api/modules/admin/advanced/queue/routes/get.route.d.ts +1 -1
  88. package/dist/src/api/modules/admin/debug/debug.admin.module.d.ts +100 -1
  89. package/dist/src/api/modules/admin/debug/debug.admin.module.d.ts.map +1 -1
  90. package/dist/src/api/modules/admin/debug/debug.admin.module.js +1 -1
  91. package/dist/src/api/modules/admin/debug/routes/integrations.route.d.ts +6 -0
  92. package/dist/src/api/modules/admin/debug/routes/integrations.route.d.ts.map +1 -1
  93. package/dist/src/api/modules/admin/debug/routes/integrations.route.js +1 -1
  94. package/dist/src/api/modules/admin/debug/routes/logs.route.d.ts +1 -1
  95. package/dist/src/api/modules/admin/debug/routes/rebuild-search.route.d.ts +36 -0
  96. package/dist/src/api/modules/admin/debug/routes/rebuild-search.route.d.ts.map +1 -0
  97. package/dist/src/api/modules/admin/debug/routes/rebuild-search.route.js +1 -0
  98. package/dist/src/api/modules/admin/debug/routes/search-status.route.d.ts +32 -0
  99. package/dist/src/api/modules/admin/debug/routes/search-status.route.d.ts.map +1 -0
  100. package/dist/src/api/modules/admin/debug/routes/search-status.route.js +1 -0
  101. package/dist/src/api/modules/admin/debug/routes/test-storage-upload.route.d.ts +37 -0
  102. package/dist/src/api/modules/admin/debug/routes/test-storage-upload.route.d.ts.map +1 -0
  103. package/dist/src/api/modules/admin/debug/routes/test-storage-upload.route.js +1 -0
  104. package/dist/src/api/modules/admin/files/files.admin.module.d.ts +128 -0
  105. package/dist/src/api/modules/admin/files/files.admin.module.d.ts.map +1 -0
  106. package/dist/src/api/modules/admin/files/files.admin.module.js +1 -0
  107. package/dist/src/api/modules/admin/files/routes/delete.route.d.ts +29 -0
  108. package/dist/src/api/modules/admin/files/routes/delete.route.d.ts.map +1 -0
  109. package/dist/src/api/modules/admin/files/routes/delete.route.js +1 -0
  110. package/dist/src/api/modules/admin/files/routes/download.route.d.ts +34 -0
  111. package/dist/src/api/modules/admin/files/routes/download.route.d.ts.map +1 -0
  112. package/dist/src/api/modules/admin/files/routes/download.route.js +1 -0
  113. package/dist/src/api/modules/admin/files/routes/list.route.d.ts +72 -0
  114. package/dist/src/api/modules/admin/files/routes/list.route.d.ts.map +1 -0
  115. package/dist/src/api/modules/admin/files/routes/list.route.js +1 -0
  116. package/dist/src/api/modules/admin/roles/lib/assert-manage-admin-role.d.ts +6 -0
  117. package/dist/src/api/modules/admin/roles/lib/assert-manage-admin-role.d.ts.map +1 -0
  118. package/dist/src/api/modules/admin/roles/lib/assert-manage-admin-role.js +1 -0
  119. package/dist/src/api/modules/admin/roles/roles.admin.module.d.ts +149 -0
  120. package/dist/src/api/modules/admin/roles/roles.admin.module.d.ts.map +1 -1
  121. package/dist/src/api/modules/admin/roles/roles.admin.module.js +1 -1
  122. package/dist/src/api/modules/admin/roles/routes/create.route.d.ts +58 -0
  123. package/dist/src/api/modules/admin/roles/routes/create.route.d.ts.map +1 -0
  124. package/dist/src/api/modules/admin/roles/routes/create.route.js +1 -0
  125. package/dist/src/api/modules/admin/roles/routes/delete.route.d.ts +52 -0
  126. package/dist/src/api/modules/admin/roles/routes/delete.route.d.ts.map +1 -0
  127. package/dist/src/api/modules/admin/roles/routes/delete.route.js +1 -0
  128. package/dist/src/api/modules/admin/roles/routes/list.route.d.ts +4 -0
  129. package/dist/src/api/modules/admin/roles/routes/list.route.d.ts.map +1 -1
  130. package/dist/src/api/modules/admin/roles/routes/list.route.js +1 -1
  131. package/dist/src/api/modules/admin/roles/routes/show.route.d.ts +3 -0
  132. package/dist/src/api/modules/admin/roles/routes/show.route.d.ts.map +1 -1
  133. package/dist/src/api/modules/admin/roles/routes/show.route.js +1 -1
  134. package/dist/src/api/modules/admin/roles/routes/update.route.d.ts +66 -0
  135. package/dist/src/api/modules/admin/roles/routes/update.route.d.ts.map +1 -0
  136. package/dist/src/api/modules/admin/roles/routes/update.route.js +1 -0
  137. package/dist/src/api/modules/admin/staff/lib/resolve-staff-edges.d.ts +1 -3
  138. package/dist/src/api/modules/admin/staff/lib/resolve-staff-edges.d.ts.map +1 -1
  139. package/dist/src/api/modules/admin/staff/lib/resolve-staff-edges.js +1 -1
  140. package/dist/src/api/modules/admin/staff/routes/admins.route.js +1 -1
  141. package/dist/src/api/modules/admin/staff/routes/create.route.d.ts.map +1 -1
  142. package/dist/src/api/modules/admin/staff/routes/create.route.js +1 -1
  143. package/dist/src/api/modules/admin/staff/routes/moderators.route.js +1 -1
  144. package/dist/src/api/modules/admin/staff/routes/show-permissions.route.d.ts.map +1 -1
  145. package/dist/src/api/modules/admin/staff/routes/show-permissions.route.js +1 -1
  146. package/dist/src/api/modules/admin/staff/routes/update-permissions.route.js +1 -1
  147. package/dist/src/api/modules/admin/users/routes/update.route.d.ts.map +1 -1
  148. package/dist/src/api/modules/admin/users/routes/update.route.js +1 -1
  149. package/dist/src/api/modules/admin/users/routes/users.route.d.ts +1 -1
  150. package/dist/src/api/modules/cron/helpers/register-cron-jobs.d.ts +4 -0
  151. package/dist/src/api/modules/cron/helpers/register-cron-jobs.d.ts.map +1 -0
  152. package/dist/src/api/modules/cron/helpers/register-cron-jobs.js +1 -0
  153. package/dist/src/api/modules/search/routes/search.route.d.ts +91 -0
  154. package/dist/src/api/modules/search/routes/search.route.d.ts.map +1 -0
  155. package/dist/src/api/modules/search/routes/search.route.js +1 -0
  156. package/dist/src/api/modules/search/search.module.d.ts +68 -0
  157. package/dist/src/api/modules/search/search.module.d.ts.map +1 -0
  158. package/dist/src/api/modules/search/search.module.js +1 -0
  159. package/dist/src/api/modules/search/tasks/rebuild-index.task.d.ts +2 -0
  160. package/dist/src/api/modules/search/tasks/rebuild-index.task.d.ts.map +1 -0
  161. package/dist/src/api/modules/search/tasks/rebuild-index.task.js +1 -0
  162. package/dist/src/api/modules/users/files/files.module.d.ts +124 -0
  163. package/dist/src/api/modules/users/files/files.module.d.ts.map +1 -0
  164. package/dist/src/api/modules/users/files/files.module.js +1 -0
  165. package/dist/src/api/modules/users/files/routes/delete.route.d.ts +32 -0
  166. package/dist/src/api/modules/users/files/routes/delete.route.d.ts.map +1 -0
  167. package/dist/src/api/modules/users/files/routes/delete.route.js +1 -0
  168. package/dist/src/api/modules/users/files/routes/download.route.d.ts +37 -0
  169. package/dist/src/api/modules/users/files/routes/download.route.d.ts.map +1 -0
  170. package/dist/src/api/modules/users/files/routes/download.route.js +1 -0
  171. package/dist/src/api/modules/users/files/routes/list.route.d.ts +62 -0
  172. package/dist/src/api/modules/users/files/routes/list.route.d.ts.map +1 -0
  173. package/dist/src/api/modules/users/files/routes/list.route.js +1 -0
  174. package/dist/src/api/modules/users/routes/devices.route.d.ts +34 -0
  175. package/dist/src/api/modules/users/routes/devices.route.d.ts.map +1 -0
  176. package/dist/src/api/modules/users/routes/devices.route.js +1 -0
  177. package/dist/src/api/modules/users/routes/revoke-device.route.d.ts +42 -0
  178. package/dist/src/api/modules/users/routes/revoke-device.route.d.ts.map +1 -0
  179. package/dist/src/api/modules/users/routes/revoke-device.route.js +1 -0
  180. package/dist/src/api/modules/users/users.module.d.ts +194 -2
  181. package/dist/src/api/modules/users/users.module.d.ts.map +1 -1
  182. package/dist/src/api/modules/users/users.module.js +1 -1
  183. package/dist/src/api/plugin.d.ts.map +1 -1
  184. package/dist/src/api/plugin.js +1 -1
  185. package/dist/src/components/files/file-preview.d.ts +7 -0
  186. package/dist/src/components/files/file-preview.d.ts.map +1 -0
  187. package/dist/src/components/files/file-preview.js +1 -0
  188. package/dist/src/components/files/metadata-cell.d.ts +6 -0
  189. package/dist/src/components/files/metadata-cell.d.ts.map +1 -0
  190. package/dist/src/components/files/metadata-cell.js +1 -0
  191. package/dist/src/components/form/auto-form.d.ts +12 -3
  192. package/dist/src/components/form/auto-form.d.ts.map +1 -1
  193. package/dist/src/components/form/auto-form.js +1 -1
  194. package/dist/src/components/form/fields/color.d.ts +5 -0
  195. package/dist/src/components/form/fields/color.d.ts.map +1 -0
  196. package/dist/src/components/form/fields/color.js +1 -0
  197. package/dist/src/components/form/fields/editor.d.ts +9 -0
  198. package/dist/src/components/form/fields/editor.d.ts.map +1 -0
  199. package/dist/src/components/form/fields/editor.js +1 -0
  200. package/dist/src/components/form/fields/input.d.ts +5 -1
  201. package/dist/src/components/form/fields/input.d.ts.map +1 -1
  202. package/dist/src/components/form/fields/input.js +1 -1
  203. package/dist/src/components/form/fields/multi-lang.d.ts +18 -0
  204. package/dist/src/components/form/fields/multi-lang.d.ts.map +1 -0
  205. package/dist/src/components/form/fields/multi-lang.js +1 -0
  206. package/dist/src/components/form/fields/nullable-number.d.ts +11 -0
  207. package/dist/src/components/form/fields/nullable-number.d.ts.map +1 -0
  208. package/dist/src/components/form/fields/nullable-number.js +1 -0
  209. package/dist/src/components/form/fields/radio-group.js +1 -1
  210. package/dist/src/components/form/fields/select.js +1 -1
  211. package/dist/src/components/languages-provider.d.ts +8 -0
  212. package/dist/src/components/languages-provider.d.ts.map +1 -0
  213. package/dist/src/components/languages-provider.js +1 -0
  214. package/dist/src/components/table/content.d.ts.map +1 -1
  215. package/dist/src/components/table/content.js +1 -1
  216. package/dist/src/components/table/data-table.d.ts +21 -9
  217. package/dist/src/components/table/data-table.d.ts.map +1 -1
  218. package/dist/src/components/table/filters.d.ts.map +1 -1
  219. package/dist/src/components/table/filters.js +1 -1
  220. package/dist/src/components/table/order-table-head.d.ts +1 -1
  221. package/dist/src/components/table/order-table-head.d.ts.map +1 -1
  222. package/dist/src/components/ui/alert.d.ts +1 -1
  223. package/dist/src/components/ui/alert.d.ts.map +1 -1
  224. package/dist/src/components/ui/alert.js +1 -1
  225. package/dist/src/components/ui/attachment.d.ts +24 -0
  226. package/dist/src/components/ui/attachment.d.ts.map +1 -0
  227. package/dist/src/components/ui/attachment.js +1 -0
  228. package/dist/src/components/ui/carousel.d.ts.map +1 -1
  229. package/dist/src/components/ui/carousel.js +1 -1
  230. package/dist/src/components/ui/chart.d.ts +2 -1
  231. package/dist/src/components/ui/chart.d.ts.map +1 -1
  232. package/dist/src/components/ui/color-picker.d.ts +8 -0
  233. package/dist/src/components/ui/color-picker.d.ts.map +1 -0
  234. package/dist/src/components/ui/color-picker.js +1 -0
  235. package/dist/src/components/ui/dialog.js +1 -1
  236. package/dist/src/components/ui/editor.d.ts +4 -3
  237. package/dist/src/components/ui/editor.d.ts.map +1 -1
  238. package/dist/src/components/ui/editor.js +1 -1
  239. package/dist/src/components/user-format.d.ts +0 -1
  240. package/dist/src/components/user-format.d.ts.map +1 -1
  241. package/dist/src/config.js +1 -1
  242. package/dist/src/database/admins.d.ts +22 -5
  243. package/dist/src/database/admins.d.ts.map +1 -1
  244. package/dist/src/database/admins.js +1 -1
  245. package/dist/src/database/files.d.ts +193 -0
  246. package/dist/src/database/files.d.ts.map +1 -0
  247. package/dist/src/database/files.js +1 -0
  248. package/dist/src/database/moderators.d.ts +22 -5
  249. package/dist/src/database/moderators.d.ts.map +1 -1
  250. package/dist/src/database/moderators.js +1 -1
  251. package/dist/src/database/roles.d.ts +52 -1
  252. package/dist/src/database/roles.d.ts.map +1 -1
  253. package/dist/src/database/roles.js +1 -1
  254. package/dist/src/database/search.d.ts +314 -0
  255. package/dist/src/database/search.d.ts.map +1 -0
  256. package/dist/src/database/search.js +1 -0
  257. package/dist/src/globals.css +45 -0
  258. package/dist/src/lib/api/get-devices-api.d.ts +14 -0
  259. package/dist/src/lib/api/get-devices-api.d.ts.map +1 -0
  260. package/dist/src/lib/api/get-devices-api.js +1 -0
  261. package/dist/src/lib/api/get-queue-status.d.ts +11 -0
  262. package/dist/src/lib/api/get-queue-status.d.ts.map +1 -0
  263. package/dist/src/lib/api/get-queue-status.js +1 -0
  264. package/dist/src/lib/api/get-session-api.d.ts.map +1 -1
  265. package/dist/src/lib/api/get-session-api.js +1 -1
  266. package/dist/src/lib/api/is-cron-stale.d.ts +3 -0
  267. package/dist/src/lib/api/is-cron-stale.d.ts.map +1 -0
  268. package/dist/src/lib/api/is-cron-stale.js +1 -0
  269. package/dist/src/lib/api/parse-user-agent.d.ts +8 -0
  270. package/dist/src/lib/api/parse-user-agent.d.ts.map +1 -0
  271. package/dist/src/lib/api/parse-user-agent.js +1 -0
  272. package/dist/src/lib/api/upload.d.ts +15 -0
  273. package/dist/src/lib/api/upload.d.ts.map +1 -0
  274. package/dist/src/lib/api/upload.js +1 -0
  275. package/dist/src/lib/config.d.ts +4 -4
  276. package/dist/src/lib/config.d.ts.map +1 -1
  277. package/dist/src/lib/config.js +1 -1
  278. package/dist/src/lib/fetcher/core.d.ts +2 -1
  279. package/dist/src/lib/fetcher/core.d.ts.map +1 -1
  280. package/dist/src/lib/fetcher/core.js +1 -1
  281. package/dist/src/lib/fetcher/rate-limit.d.ts +10 -0
  282. package/dist/src/lib/fetcher/rate-limit.d.ts.map +1 -0
  283. package/dist/src/lib/fetcher/rate-limit.js +1 -0
  284. package/dist/src/lib/fetcher-client.d.ts +3 -1
  285. package/dist/src/lib/fetcher-client.d.ts.map +1 -1
  286. package/dist/src/lib/fetcher-client.js +1 -1
  287. package/dist/src/lib/format-bytes.d.ts +2 -0
  288. package/dist/src/lib/format-bytes.d.ts.map +1 -0
  289. package/dist/src/lib/format-bytes.js +1 -0
  290. package/dist/src/lib/helpers/multi-lang.d.ts +21 -0
  291. package/dist/src/lib/helpers/multi-lang.d.ts.map +1 -0
  292. package/dist/src/lib/helpers/multi-lang.js +1 -0
  293. package/dist/src/lib/i18n/deep-merge.d.ts +4 -0
  294. package/dist/src/lib/i18n/deep-merge.d.ts.map +1 -0
  295. package/dist/src/lib/i18n/deep-merge.js +1 -0
  296. package/dist/src/lib/i18n/load-messages.d.ts +9 -0
  297. package/dist/src/lib/i18n/load-messages.d.ts.map +1 -0
  298. package/dist/src/lib/i18n/load-messages.js +1 -0
  299. package/dist/src/lib/i18n/negotiate-locale.d.ts +2 -0
  300. package/dist/src/lib/i18n/negotiate-locale.d.ts.map +1 -0
  301. package/dist/src/lib/i18n/negotiate-locale.js +1 -0
  302. package/dist/src/lib/i18n/sources.d.ts +9 -0
  303. package/dist/src/lib/i18n/sources.d.ts.map +1 -0
  304. package/dist/src/lib/i18n/sources.js +1 -0
  305. package/dist/src/lib/i18n/types.d.ts +24 -0
  306. package/dist/src/lib/i18n/types.d.ts.map +1 -0
  307. package/dist/src/lib/i18n/types.js +1 -0
  308. package/dist/src/lib/motion.d.ts +8 -0
  309. package/dist/src/lib/motion.d.ts.map +1 -0
  310. package/dist/src/lib/motion.js +1 -0
  311. package/dist/src/lib/plugin.d.ts +2 -0
  312. package/dist/src/lib/plugin.d.ts.map +1 -1
  313. package/dist/src/lib/strip-html.d.ts +2 -0
  314. package/dist/src/lib/strip-html.d.ts.map +1 -0
  315. package/dist/src/lib/strip-html.js +1 -0
  316. package/dist/src/locales/en.json +897 -0
  317. package/dist/src/locales/index.d.ts +4 -0
  318. package/dist/src/locales/index.d.ts.map +1 -0
  319. package/dist/src/locales/index.js +1 -0
  320. package/dist/src/routes/admin/core/advanced/cron/page.d.ts.map +1 -1
  321. package/dist/src/routes/admin/core/advanced/cron/page.js +1 -1
  322. package/dist/src/routes/admin/core/advanced/search/page.d.ts +11 -0
  323. package/dist/src/routes/admin/core/advanced/search/page.d.ts.map +1 -0
  324. package/dist/src/routes/admin/core/advanced/search/page.js +1 -0
  325. package/dist/src/routes/admin/core/system/files/page.d.ts +11 -0
  326. package/dist/src/routes/admin/core/system/files/page.d.ts.map +1 -0
  327. package/dist/src/routes/admin/core/system/files/page.js +1 -0
  328. package/dist/src/routes/admin/core/users/[id]/page.js +1 -1
  329. package/dist/src/routes/admin/core/users/roles/page.d.ts.map +1 -1
  330. package/dist/src/routes/admin/core/users/roles/page.js +1 -1
  331. package/dist/src/routes/blank/test/page.js +1 -1
  332. package/dist/src/routes/breadcrumb/admin/core/advanced/cron/page.d.ts +2 -0
  333. package/dist/src/routes/breadcrumb/admin/core/advanced/cron/page.d.ts.map +1 -0
  334. package/dist/src/routes/breadcrumb/admin/core/advanced/cron/page.js +1 -0
  335. package/dist/src/routes/breadcrumb/admin/core/advanced/queue/page.d.ts +2 -0
  336. package/dist/src/routes/breadcrumb/admin/core/advanced/queue/page.d.ts.map +1 -0
  337. package/dist/src/routes/breadcrumb/admin/core/advanced/queue/page.js +1 -0
  338. package/dist/src/routes/breadcrumb/admin/core/advanced/search/page.d.ts +2 -0
  339. package/dist/src/routes/breadcrumb/admin/core/advanced/search/page.d.ts.map +1 -0
  340. package/dist/src/routes/breadcrumb/admin/core/advanced/search/page.js +1 -0
  341. package/dist/src/routes/breadcrumb/admin/core/page.d.ts +2 -0
  342. package/dist/src/routes/breadcrumb/admin/core/page.d.ts.map +1 -0
  343. package/dist/src/routes/breadcrumb/admin/core/page.js +1 -0
  344. package/dist/src/routes/breadcrumb/admin/core/system/files/page.d.ts +2 -0
  345. package/dist/src/routes/breadcrumb/admin/core/system/files/page.d.ts.map +1 -0
  346. package/dist/src/routes/breadcrumb/admin/core/system/files/page.js +1 -0
  347. package/dist/src/routes/breadcrumb/admin/core/system/integrations/page.d.ts +2 -0
  348. package/dist/src/routes/breadcrumb/admin/core/system/integrations/page.d.ts.map +1 -0
  349. package/dist/src/routes/breadcrumb/admin/core/system/integrations/page.js +1 -0
  350. package/dist/src/routes/breadcrumb/admin/core/users/page.d.ts +2 -0
  351. package/dist/src/routes/breadcrumb/admin/core/users/page.d.ts.map +1 -0
  352. package/dist/src/routes/breadcrumb/admin/core/users/page.js +1 -0
  353. package/dist/src/routes/breadcrumb/admin/core/users/roles/page.d.ts +2 -0
  354. package/dist/src/routes/breadcrumb/admin/core/users/roles/page.d.ts.map +1 -0
  355. package/dist/src/routes/breadcrumb/admin/core/users/roles/page.js +1 -0
  356. package/dist/src/routes/breadcrumb/main/discover/page.d.ts +2 -0
  357. package/dist/src/routes/breadcrumb/main/discover/page.d.ts.map +1 -0
  358. package/dist/src/routes/breadcrumb/main/discover/page.js +1 -0
  359. package/dist/src/routes/breadcrumb/main/search/page.d.ts +2 -0
  360. package/dist/src/routes/breadcrumb/main/search/page.d.ts.map +1 -0
  361. package/dist/src/routes/breadcrumb/main/search/page.js +1 -0
  362. package/dist/src/routes/breadcrumb/main/settings/devices/page.d.ts +2 -0
  363. package/dist/src/routes/breadcrumb/main/settings/devices/page.d.ts.map +1 -0
  364. package/dist/src/routes/breadcrumb/main/settings/devices/page.js +1 -0
  365. package/dist/src/routes/main/discover/page.d.ts +11 -0
  366. package/dist/src/routes/main/discover/page.d.ts.map +1 -0
  367. package/dist/src/routes/main/discover/page.js +1 -0
  368. package/dist/src/routes/main/files/page.d.ts +15 -0
  369. package/dist/src/routes/main/files/page.d.ts.map +1 -0
  370. package/dist/src/routes/main/files/page.js +1 -0
  371. package/dist/src/routes/main/search/page.d.ts +15 -0
  372. package/dist/src/routes/main/search/page.d.ts.map +1 -0
  373. package/dist/src/routes/main/search/page.js +1 -0
  374. package/dist/src/routes/main/settings/devices/page.d.ts +5 -0
  375. package/dist/src/routes/main/settings/devices/page.d.ts.map +1 -0
  376. package/dist/src/routes/main/settings/devices/page.js +1 -0
  377. package/dist/src/tiptap.css +28 -0
  378. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-advanced-search.d.ts +5 -0
  379. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-advanced-search.d.ts.map +1 -0
  380. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-advanced-search.js +1 -0
  381. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-roles-admin.d.ts +5 -0
  382. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-roles-admin.d.ts.map +1 -0
  383. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-roles-admin.js +1 -0
  384. package/dist/src/views/admin/layouts/sidebar/nav/get-admin-nav.d.ts.map +1 -1
  385. package/dist/src/views/admin/layouts/sidebar/nav/get-admin-nav.js +1 -1
  386. package/dist/src/views/admin/layouts/sidebar/sign-out.js +1 -1
  387. package/dist/src/views/admin/layouts/user-bar/client.js +1 -1
  388. package/dist/src/views/admin/views/core/advanced/cron/cron-table-view.d.ts.map +1 -1
  389. package/dist/src/views/admin/views/core/advanced/cron/cron-table-view.js +1 -1
  390. package/dist/src/views/admin/views/core/advanced/cron/run-action/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
  391. package/dist/src/views/admin/views/core/advanced/cron/run-action/mutation-api.server.d.ts.map +1 -0
  392. package/dist/src/views/admin/views/core/advanced/cron/run-action/run-action.d.ts +1 -1
  393. package/dist/src/views/admin/views/core/advanced/cron/run-action/run-action.d.ts.map +1 -1
  394. package/dist/src/views/admin/views/core/advanced/cron/run-action/run-action.js +1 -1
  395. package/dist/src/views/admin/views/core/advanced/queue/queue-table-view.js +1 -1
  396. package/dist/src/views/admin/views/core/advanced/search/collection-status.d.ts +11 -0
  397. package/dist/src/views/admin/views/core/advanced/search/collection-status.d.ts.map +1 -0
  398. package/dist/src/views/admin/views/core/advanced/search/collection-status.js +1 -0
  399. package/dist/src/views/admin/views/core/advanced/search/collections-table.d.ts +6 -0
  400. package/dist/src/views/admin/views/core/advanced/search/collections-table.d.ts.map +1 -0
  401. package/dist/src/views/admin/views/core/advanced/search/collections-table.js +1 -0
  402. package/dist/src/views/admin/views/core/advanced/search/cron-warning.d.ts +3 -0
  403. package/dist/src/views/admin/views/core/advanced/search/cron-warning.d.ts.map +1 -0
  404. package/dist/src/views/admin/views/core/advanced/search/cron-warning.js +1 -0
  405. package/dist/src/views/admin/views/core/advanced/search/mutation-api.server.d.ts +10 -0
  406. package/dist/src/views/admin/views/core/advanced/search/mutation-api.server.d.ts.map +1 -0
  407. package/dist/src/views/admin/views/core/advanced/search/mutation-api.server.js +1 -0
  408. package/dist/src/views/admin/views/core/advanced/search/reindex-action.d.ts +6 -0
  409. package/dist/src/views/admin/views/core/advanced/search/reindex-action.d.ts.map +1 -0
  410. package/dist/src/views/admin/views/core/advanced/search/reindex-action.js +1 -0
  411. package/dist/src/views/admin/views/core/advanced/search/search-header-actions.d.ts +3 -0
  412. package/dist/src/views/admin/views/core/advanced/search/search-header-actions.d.ts.map +1 -0
  413. package/dist/src/views/admin/views/core/advanced/search/search-header-actions.js +1 -0
  414. package/dist/src/views/admin/views/core/advanced/search/search-view.d.ts +7 -0
  415. package/dist/src/views/admin/views/core/advanced/search/search-view.d.ts.map +1 -0
  416. package/dist/src/views/admin/views/core/advanced/search/search-view.js +1 -0
  417. package/dist/src/views/admin/views/core/dashboard/send-notification/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
  418. package/dist/src/views/admin/views/core/dashboard/send-notification/mutation-api.server.d.ts.map +1 -0
  419. package/dist/src/views/admin/views/core/dashboard/send-notification/send-notification.js +1 -1
  420. package/dist/src/views/admin/views/core/debug/actions/clear-cache/clear-cache.js +1 -1
  421. package/dist/src/views/admin/views/core/debug/actions/clear-cache/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
  422. package/dist/src/views/admin/views/core/debug/actions/clear-cache/mutation-api.server.d.ts.map +1 -0
  423. package/dist/src/views/admin/views/core/debug/system-logs/system-logs-view.d.ts.map +1 -1
  424. package/dist/src/views/admin/views/core/debug/system-logs/system-logs-view.js +1 -1
  425. package/dist/src/views/admin/views/core/staff/create/form.js +1 -1
  426. package/dist/src/views/admin/views/core/staff/create/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
  427. package/dist/src/views/admin/views/core/staff/create/mutation-api.server.d.ts.map +1 -0
  428. package/dist/src/views/admin/views/core/staff/create/{search.action.d.ts → search.action.server.d.ts} +1 -1
  429. package/dist/src/views/admin/views/core/staff/create/search.action.server.d.ts.map +1 -0
  430. package/dist/src/views/admin/views/core/staff/edit/form.js +1 -1
  431. package/dist/src/views/admin/views/core/staff/edit/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
  432. package/dist/src/views/admin/views/core/staff/edit/mutation-api.server.d.ts.map +1 -0
  433. package/dist/src/views/admin/views/core/staff/table/actions/{delete-action.d.ts → delete-action.server.d.ts} +1 -1
  434. package/dist/src/views/admin/views/core/staff/table/actions/delete-action.server.d.ts.map +1 -0
  435. package/dist/src/views/admin/views/core/staff/table/actions/staff-row-actions.js +1 -1
  436. package/dist/src/views/admin/views/core/staff/table/staff-table.d.ts.map +1 -1
  437. package/dist/src/views/admin/views/core/staff/table/staff-table.js +1 -1
  438. package/dist/src/views/admin/views/core/system/files/actions/delete-action.server.d.ts +9 -0
  439. package/dist/src/views/admin/views/core/system/files/actions/delete-action.server.d.ts.map +1 -0
  440. package/dist/src/views/admin/views/core/system/files/actions/delete-action.server.js +1 -0
  441. package/dist/src/views/admin/views/core/system/files/actions/file-row-actions.d.ts +8 -0
  442. package/dist/src/views/admin/views/core/system/files/actions/file-row-actions.d.ts.map +1 -0
  443. package/dist/src/views/admin/views/core/system/files/actions/file-row-actions.js +1 -0
  444. package/dist/src/views/admin/views/core/system/files/files-table-view.d.ts +5 -0
  445. package/dist/src/views/admin/views/core/system/files/files-table-view.d.ts.map +1 -0
  446. package/dist/src/views/admin/views/core/system/files/files-table-view.js +1 -0
  447. package/dist/src/views/admin/views/core/system/integrations/integration-card.d.ts.map +1 -1
  448. package/dist/src/views/admin/views/core/system/integrations/integration-card.js +1 -1
  449. package/dist/src/views/admin/views/core/system/integrations/integrations-view.d.ts.map +1 -1
  450. package/dist/src/views/admin/views/core/system/integrations/integrations-view.js +1 -1
  451. package/dist/src/views/admin/views/core/system/integrations/send-test-email/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
  452. package/dist/src/views/admin/views/core/system/integrations/send-test-email/mutation-api.server.d.ts.map +1 -0
  453. package/dist/src/views/admin/views/core/system/integrations/send-test-email/use-form.js +1 -1
  454. package/dist/src/views/admin/views/core/system/integrations/test-storage/content.d.ts +3 -0
  455. package/dist/src/views/admin/views/core/system/integrations/test-storage/content.d.ts.map +1 -0
  456. package/dist/src/views/admin/views/core/system/integrations/test-storage/content.js +1 -0
  457. package/dist/src/views/admin/views/core/system/integrations/test-storage/test-storage.d.ts +3 -0
  458. package/dist/src/views/admin/views/core/system/integrations/test-storage/test-storage.d.ts.map +1 -0
  459. package/dist/src/views/admin/views/core/system/integrations/test-storage/test-storage.js +1 -0
  460. package/dist/src/views/admin/views/core/test.d.ts.map +1 -1
  461. package/dist/src/views/admin/views/core/test.js +1 -1
  462. package/dist/src/views/admin/views/core/users/actions/create/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
  463. package/dist/src/views/admin/views/core/users/actions/create/mutation-api.server.d.ts.map +1 -0
  464. package/dist/src/views/admin/views/core/users/actions/create/use-form.js +1 -1
  465. package/dist/src/views/admin/views/core/users/actions/verify-email/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
  466. package/dist/src/views/admin/views/core/users/actions/verify-email/mutation-api.server.d.ts.map +1 -0
  467. package/dist/src/views/admin/views/core/users/actions/verify-email/verify-email.js +1 -1
  468. package/dist/src/views/admin/views/core/users/roles/actions/actions.d.ts +3 -0
  469. package/dist/src/views/admin/views/core/users/roles/actions/actions.d.ts.map +1 -0
  470. package/dist/src/views/admin/views/core/users/roles/actions/actions.js +1 -0
  471. package/dist/src/views/admin/views/core/users/roles/actions/create-edit/create-edit.d.ts +15 -0
  472. package/dist/src/views/admin/views/core/users/roles/actions/create-edit/create-edit.d.ts.map +1 -0
  473. package/dist/src/views/admin/views/core/users/roles/actions/create-edit/create-edit.js +1 -0
  474. package/dist/src/views/admin/views/core/users/roles/actions/create-edit/mutation-api.server.d.ts +11 -0
  475. package/dist/src/views/admin/views/core/users/roles/actions/create-edit/mutation-api.server.d.ts.map +1 -0
  476. package/dist/src/views/admin/views/core/users/roles/actions/create-edit/mutation-api.server.js +1 -0
  477. package/dist/src/views/admin/views/core/users/roles/roles-admin-view.d.ts.map +1 -1
  478. package/dist/src/views/admin/views/core/users/roles/roles-admin-view.js +1 -1
  479. package/dist/src/views/admin/views/core/users/roles/table/actions/delete-action.d.ts +13 -0
  480. package/dist/src/views/admin/views/core/users/roles/table/actions/delete-action.d.ts.map +1 -0
  481. package/dist/src/views/admin/views/core/users/roles/table/actions/delete-action.js +1 -0
  482. package/dist/src/views/admin/views/core/users/roles/table/actions/delete-role.action.server.d.ts +9 -0
  483. package/dist/src/views/admin/views/core/users/roles/table/actions/delete-role.action.server.d.ts.map +1 -0
  484. package/dist/src/views/admin/views/core/users/roles/table/actions/delete-role.action.server.js +1 -0
  485. package/dist/src/views/admin/views/core/users/roles/table/actions/edit-action.d.ts +7 -0
  486. package/dist/src/views/admin/views/core/users/roles/table/actions/edit-action.d.ts.map +1 -0
  487. package/dist/src/views/admin/views/core/users/roles/table/actions/edit-action.js +1 -0
  488. package/dist/src/views/admin/views/core/users/roles/table/actions/row-actions.d.ts +22 -0
  489. package/dist/src/views/admin/views/core/users/roles/table/actions/row-actions.d.ts.map +1 -0
  490. package/dist/src/views/admin/views/core/users/roles/table/actions/row-actions.js +1 -0
  491. package/dist/src/views/admin/views/core/users/roles/table/actions/search-roles.action.server.d.ts +10 -0
  492. package/dist/src/views/admin/views/core/users/roles/table/actions/search-roles.action.server.d.ts.map +1 -0
  493. package/dist/src/views/admin/views/core/users/roles/table/actions/search-roles.action.server.js +1 -0
  494. package/dist/src/views/admin/views/core/users/{search-roles.action.d.ts → search-roles.action.server.d.ts} +1 -1
  495. package/dist/src/views/admin/views/core/users/search-roles.action.server.d.ts.map +1 -0
  496. package/dist/src/views/admin/views/core/users/show/edit-field.js +1 -1
  497. package/dist/src/views/admin/views/core/users/show/edit-name-code.js +1 -1
  498. package/dist/src/views/admin/views/core/users/show/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
  499. package/dist/src/views/admin/views/core/users/show/mutation-api.server.d.ts.map +1 -0
  500. package/dist/src/views/admin/views/core/users/show/roles/edit-roles.d.ts +1 -1
  501. package/dist/src/views/admin/views/core/users/show/roles/edit-roles.d.ts.map +1 -1
  502. package/dist/src/views/admin/views/core/users/show/roles/edit-roles.js +1 -1
  503. package/dist/src/views/admin/views/core/users/show/roles/roles.d.ts +1 -1
  504. package/dist/src/views/admin/views/core/users/show/roles/roles.d.ts.map +1 -1
  505. package/dist/src/views/admin/views/core/users/show/roles/{search-roles.action.d.ts → search-roles.action.server.d.ts} +1 -1
  506. package/dist/src/views/admin/views/core/users/show/roles/search-roles.action.server.d.ts.map +1 -0
  507. package/dist/src/views/admin/views/core/users/show/roles/{update-roles.action.d.ts → update-roles.action.server.d.ts} +1 -1
  508. package/dist/src/views/admin/views/core/users/show/roles/update-roles.action.server.d.ts.map +1 -0
  509. package/dist/src/views/admin/views/core/users/show/show-user-admin-view.d.ts.map +1 -1
  510. package/dist/src/views/admin/views/core/users/show/show-user-admin-view.js +1 -1
  511. package/dist/src/views/admin/views/core/users/show/tabs.d.ts +5 -0
  512. package/dist/src/views/admin/views/core/users/show/tabs.d.ts.map +1 -0
  513. package/dist/src/views/admin/views/core/users/show/tabs.js +1 -0
  514. package/dist/src/views/admin/views/core/users/users-admin-view.d.ts.map +1 -1
  515. package/dist/src/views/admin/views/core/users/users-admin-view.js +1 -1
  516. package/dist/src/views/auth/password-reset/change-password-form/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
  517. package/dist/src/views/auth/password-reset/change-password-form/mutation-api.server.d.ts.map +1 -0
  518. package/dist/src/views/auth/password-reset/change-password-form/use-form.js +1 -1
  519. package/dist/src/views/auth/password-reset/form/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
  520. package/dist/src/views/auth/password-reset/form/mutation-api.server.d.ts.map +1 -0
  521. package/dist/src/views/auth/password-reset/form/use-form.js +1 -1
  522. package/dist/src/views/auth/settings/devices/device-item.d.ts +5 -0
  523. package/dist/src/views/auth/settings/devices/device-item.d.ts.map +1 -0
  524. package/dist/src/views/auth/settings/devices/device-item.js +1 -0
  525. package/dist/src/views/auth/settings/devices/devices.d.ts +2 -0
  526. package/dist/src/views/auth/settings/devices/devices.d.ts.map +1 -0
  527. package/dist/src/views/auth/settings/devices/devices.js +1 -0
  528. package/dist/src/views/auth/settings/devices/revoke-action.server.d.ts +9 -0
  529. package/dist/src/views/auth/settings/devices/revoke-action.server.d.ts.map +1 -0
  530. package/dist/src/views/auth/settings/devices/revoke-action.server.js +1 -0
  531. package/dist/src/views/auth/settings/devices/revoke-device-button.d.ts +5 -0
  532. package/dist/src/views/auth/settings/devices/revoke-device-button.d.ts.map +1 -0
  533. package/dist/src/views/auth/settings/devices/revoke-device-button.js +1 -0
  534. package/dist/src/views/auth/settings/nav.d.ts.map +1 -1
  535. package/dist/src/views/auth/settings/nav.js +1 -1
  536. package/dist/src/views/auth/settings/shell.d.ts.map +1 -1
  537. package/dist/src/views/auth/settings/shell.js +1 -1
  538. package/dist/src/views/auth/sign-in/form/form.d.ts.map +1 -1
  539. package/dist/src/views/auth/sign-in/form/form.js +1 -1
  540. package/dist/src/views/auth/sign-in/form/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
  541. package/dist/src/views/auth/sign-in/form/mutation-api.server.d.ts.map +1 -0
  542. package/dist/src/views/auth/sign-in/form/use-form.js +1 -1
  543. package/dist/src/views/auth/sign-up/form/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
  544. package/dist/src/views/auth/sign-up/form/mutation-api.server.d.ts.map +1 -0
  545. package/dist/src/views/auth/sign-up/form/use-form.d.ts +2 -2
  546. package/dist/src/views/auth/sign-up/form/use-form.d.ts.map +1 -1
  547. package/dist/src/views/auth/sign-up/form/use-form.js +1 -1
  548. package/dist/src/views/auth/sso/buttons/client.js +1 -1
  549. package/dist/src/views/auth/sso/buttons/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
  550. package/dist/src/views/auth/sso/buttons/mutation-api.server.d.ts.map +1 -0
  551. package/dist/src/views/auth/sso/callback/client/client.js +1 -1
  552. package/dist/src/views/auth/sso/callback/client/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
  553. package/dist/src/views/auth/sso/callback/client/mutation-api.server.d.ts.map +1 -0
  554. package/dist/src/views/error/error-view.d.ts +1 -1
  555. package/dist/src/views/error/error-view.d.ts.map +1 -1
  556. package/dist/src/views/files/actions/delete-action.server.d.ts +9 -0
  557. package/dist/src/views/files/actions/delete-action.server.d.ts.map +1 -0
  558. package/dist/src/views/files/actions/delete-action.server.js +1 -0
  559. package/dist/src/views/files/actions/file-row-actions.d.ts +6 -0
  560. package/dist/src/views/files/actions/file-row-actions.d.ts.map +1 -0
  561. package/dist/src/views/files/actions/file-row-actions.js +1 -0
  562. package/dist/src/views/files/my-files-table-view.d.ts +5 -0
  563. package/dist/src/views/files/my-files-table-view.d.ts.map +1 -0
  564. package/dist/src/views/files/my-files-table-view.js +1 -0
  565. package/dist/src/views/layouts/provider.d.ts +6 -2
  566. package/dist/src/views/layouts/provider.d.ts.map +1 -1
  567. package/dist/src/views/layouts/provider.js +1 -1
  568. package/dist/src/views/layouts/rate-limit-listener.d.ts +2 -0
  569. package/dist/src/views/layouts/rate-limit-listener.d.ts.map +1 -0
  570. package/dist/src/views/layouts/rate-limit-listener.js +1 -0
  571. package/dist/src/views/layouts/root-layout.d.ts.map +1 -1
  572. package/dist/src/views/layouts/root-layout.js +1 -1
  573. package/dist/src/views/layouts/theme/header/header.d.ts +1 -1
  574. package/dist/src/views/layouts/theme/header/header.d.ts.map +1 -1
  575. package/dist/src/views/layouts/theme/header/header.js +1 -1
  576. package/dist/src/views/layouts/theme/header/user/auth/client.d.ts.map +1 -1
  577. package/dist/src/views/layouts/theme/header/user/auth/client.js +1 -1
  578. package/dist/src/views/layouts/theme/header/user/auth/{log-out-mutation-api.d.ts → log-out-mutation-api.server.d.ts} +1 -1
  579. package/dist/src/views/layouts/theme/header/user/auth/log-out-mutation-api.server.d.ts.map +1 -0
  580. package/dist/src/views/search/discover-view.d.ts +2 -0
  581. package/dist/src/views/search/discover-view.d.ts.map +1 -0
  582. package/dist/src/views/search/discover-view.js +1 -0
  583. package/dist/src/views/search/registry.d.ts +9 -0
  584. package/dist/src/views/search/registry.d.ts.map +1 -0
  585. package/dist/src/views/search/registry.js +1 -0
  586. package/dist/src/views/search/search-controls.d.ts +8 -0
  587. package/dist/src/views/search/search-controls.d.ts.map +1 -0
  588. package/dist/src/views/search/search-controls.js +1 -0
  589. package/dist/src/views/search/search-feed.d.ts +17 -0
  590. package/dist/src/views/search/search-feed.d.ts.map +1 -0
  591. package/dist/src/views/search/search-feed.js +1 -0
  592. package/dist/src/views/search/search-view.d.ts +4 -0
  593. package/dist/src/views/search/search-view.d.ts.map +1 -0
  594. package/dist/src/views/search/search-view.js +1 -0
  595. package/dist/src/views/search/types.d.ts +34 -0
  596. package/dist/src/views/search/types.d.ts.map +1 -0
  597. package/dist/src/views/search/types.js +1 -0
  598. package/dist/src/vitnode.config.d.ts +22 -18
  599. package/dist/src/vitnode.config.d.ts.map +1 -1
  600. package/dist/src/vitnode.config.js +1 -1
  601. package/dist/src/ws/manager.d.ts.map +1 -1
  602. package/dist/src/ws/manager.js +1 -1
  603. package/dist/tsconfig.build.tsbuildinfo +1 -0
  604. package/package.json +42 -40
  605. package/src/locales/en.json +258 -8
  606. package/src/locales/index.ts +15 -0
  607. package/src/routes/admin/core/advanced/cron/page.tsx +10 -1
  608. package/src/routes/admin/core/advanced/search/page.tsx +50 -0
  609. package/src/routes/admin/core/system/files/page.tsx +51 -0
  610. package/src/routes/admin/core/users/[id]/page.tsx +1 -1
  611. package/src/routes/admin/core/users/roles/page.tsx +13 -2
  612. package/src/routes/blank/test/page.tsx +1 -1
  613. package/src/routes/breadcrumb/admin/core/advanced/cron/page.tsx +5 -0
  614. package/src/routes/breadcrumb/admin/core/advanced/queue/page.tsx +5 -0
  615. package/src/routes/breadcrumb/admin/core/advanced/search/page.tsx +5 -0
  616. package/src/routes/breadcrumb/admin/core/page.tsx +5 -0
  617. package/src/routes/breadcrumb/admin/core/system/files/page.tsx +5 -0
  618. package/src/routes/breadcrumb/admin/core/system/integrations/page.tsx +5 -0
  619. package/src/routes/breadcrumb/admin/core/users/page.tsx +5 -0
  620. package/src/routes/breadcrumb/admin/core/users/roles/page.tsx +5 -0
  621. package/src/routes/breadcrumb/main/discover/page.tsx +14 -0
  622. package/src/routes/breadcrumb/main/page.tsx +1 -1
  623. package/src/routes/breadcrumb/main/search/page.tsx +11 -0
  624. package/src/routes/breadcrumb/main/settings/devices/page.tsx +17 -0
  625. package/src/routes/main/discover/page.tsx +41 -0
  626. package/src/routes/main/files/page.tsx +50 -0
  627. package/src/routes/main/search/page.tsx +43 -0
  628. package/src/routes/main/settings/devices/page.tsx +15 -0
  629. package/tsconfig.build.json +5 -0
  630. package/dist/scripts/shared/file-utils.test.d.ts +0 -2
  631. package/dist/scripts/shared/file-utils.test.d.ts.map +0 -1
  632. package/dist/src/api/lib/cache.test.d.ts +0 -2
  633. package/dist/src/api/lib/cache.test.d.ts.map +0 -1
  634. package/dist/src/api/lib/cache.test.js +0 -1
  635. package/dist/src/api/models/email.test.d.ts +0 -2
  636. package/dist/src/api/models/email.test.d.ts.map +0 -1
  637. package/dist/src/api/models/email.test.js +0 -1
  638. package/dist/src/api/models/queue.test.d.ts +0 -2
  639. package/dist/src/api/models/queue.test.d.ts.map +0 -1
  640. package/dist/src/api/models/queue.test.js +0 -1
  641. package/dist/src/components/form/fields/combobox.test.d.ts +0 -2
  642. package/dist/src/components/form/fields/combobox.test.d.ts.map +0 -1
  643. package/dist/src/components/form/fields/combobox.test.js +0 -1
  644. package/dist/src/lib/api/get-next-cron-run-date.test.d.ts +0 -2
  645. package/dist/src/lib/api/get-next-cron-run-date.test.d.ts.map +0 -1
  646. package/dist/src/lib/api/get-next-cron-run-date.test.js +0 -1
  647. package/dist/src/lib/api/get-queue-backoff-date.test.d.ts +0 -2
  648. package/dist/src/lib/api/get-queue-backoff-date.test.d.ts.map +0 -1
  649. package/dist/src/lib/api/get-queue-backoff-date.test.js +0 -1
  650. package/dist/src/lib/api/resolve-queue-task-outcome.test.d.ts +0 -2
  651. package/dist/src/lib/api/resolve-queue-task-outcome.test.d.ts.map +0 -1
  652. package/dist/src/lib/api/resolve-queue-task-outcome.test.js +0 -1
  653. package/dist/src/lib/api/should-cron-job-run.test.d.ts +0 -2
  654. package/dist/src/lib/api/should-cron-job-run.test.d.ts.map +0 -1
  655. package/dist/src/lib/api/should-cron-job-run.test.js +0 -1
  656. package/dist/src/lib/api/validate-cron-schedule.test.d.ts +0 -2
  657. package/dist/src/lib/api/validate-cron-schedule.test.d.ts.map +0 -1
  658. package/dist/src/lib/api/validate-cron-schedule.test.js +0 -1
  659. package/dist/src/lib/colors.test.d.ts +0 -2
  660. package/dist/src/lib/colors.test.d.ts.map +0 -1
  661. package/dist/src/lib/colors.test.js +0 -1
  662. package/dist/src/lib/fetcher/cookie-from-string-to-object.test.d.ts +0 -2
  663. package/dist/src/lib/fetcher/cookie-from-string-to-object.test.d.ts.map +0 -1
  664. package/dist/src/lib/fetcher/cookie-from-string-to-object.test.js +0 -1
  665. package/dist/src/lib/fetcher/helpers.test.d.ts +0 -2
  666. package/dist/src/lib/fetcher/helpers.test.d.ts.map +0 -1
  667. package/dist/src/lib/fetcher/helpers.test.js +0 -1
  668. package/dist/src/lib/helpers/auto-form.test.d.ts +0 -2
  669. package/dist/src/lib/helpers/auto-form.test.d.ts.map +0 -1
  670. package/dist/src/lib/helpers/auto-form.test.js +0 -1
  671. package/dist/src/lib/special-characters.test.d.ts +0 -2
  672. package/dist/src/lib/special-characters.test.d.ts.map +0 -1
  673. package/dist/src/lib/special-characters.test.js +0 -1
  674. package/dist/src/views/admin/views/core/advanced/cron/run-action/mutation-api.d.ts.map +0 -1
  675. package/dist/src/views/admin/views/core/dashboard/send-notification/mutation-api.d.ts.map +0 -1
  676. package/dist/src/views/admin/views/core/debug/actions/clear-cache/mutation-api.d.ts.map +0 -1
  677. package/dist/src/views/admin/views/core/staff/create/mutation-api.d.ts.map +0 -1
  678. package/dist/src/views/admin/views/core/staff/create/search.action.d.ts.map +0 -1
  679. package/dist/src/views/admin/views/core/staff/edit/mutation-api.d.ts.map +0 -1
  680. package/dist/src/views/admin/views/core/staff/table/actions/delete-action.d.ts.map +0 -1
  681. package/dist/src/views/admin/views/core/system/integrations/send-test-email/mutation-api.d.ts.map +0 -1
  682. package/dist/src/views/admin/views/core/users/actions/create/mutation-api.d.ts.map +0 -1
  683. package/dist/src/views/admin/views/core/users/actions/verify-email/mutation-api.d.ts.map +0 -1
  684. package/dist/src/views/admin/views/core/users/search-roles.action.d.ts.map +0 -1
  685. package/dist/src/views/admin/views/core/users/show/mutation-api.d.ts.map +0 -1
  686. package/dist/src/views/admin/views/core/users/show/roles/search-roles.action.d.ts.map +0 -1
  687. package/dist/src/views/admin/views/core/users/show/roles/update-roles.action.d.ts.map +0 -1
  688. package/dist/src/views/auth/password-reset/change-password-form/mutation-api.d.ts.map +0 -1
  689. package/dist/src/views/auth/password-reset/form/mutation-api.d.ts.map +0 -1
  690. package/dist/src/views/auth/sign-in/form/mutation-api.d.ts.map +0 -1
  691. package/dist/src/views/auth/sign-up/form/mutation-api.d.ts.map +0 -1
  692. package/dist/src/views/auth/sso/buttons/mutation-api.d.ts.map +0 -1
  693. package/dist/src/views/auth/sso/callback/client/mutation-api.d.ts.map +0 -1
  694. package/dist/src/views/layouts/theme/header/user/auth/log-out-mutation-api.d.ts.map +0 -1
  695. package/dist/tsconfig.tsbuildinfo +0 -1
  696. /package/dist/src/views/admin/views/core/advanced/cron/run-action/{mutation-api.js → mutation-api.server.js} +0 -0
  697. /package/dist/src/views/admin/views/core/dashboard/send-notification/{mutation-api.js → mutation-api.server.js} +0 -0
  698. /package/dist/src/views/admin/views/core/debug/actions/clear-cache/{mutation-api.js → mutation-api.server.js} +0 -0
  699. /package/dist/src/views/admin/views/core/staff/create/{mutation-api.js → mutation-api.server.js} +0 -0
  700. /package/dist/src/views/admin/views/core/staff/create/{search.action.js → search.action.server.js} +0 -0
  701. /package/dist/src/views/admin/views/core/staff/edit/{mutation-api.js → mutation-api.server.js} +0 -0
  702. /package/dist/src/views/admin/views/core/staff/table/actions/{delete-action.js → delete-action.server.js} +0 -0
  703. /package/dist/src/views/admin/views/core/system/integrations/send-test-email/{mutation-api.js → mutation-api.server.js} +0 -0
  704. /package/dist/src/views/admin/views/core/users/actions/create/{mutation-api.js → mutation-api.server.js} +0 -0
  705. /package/dist/src/views/admin/views/core/users/actions/verify-email/{mutation-api.js → mutation-api.server.js} +0 -0
  706. /package/dist/src/views/admin/views/core/users/{search-roles.action.js → search-roles.action.server.js} +0 -0
  707. /package/dist/src/views/admin/views/core/users/show/{mutation-api.js → mutation-api.server.js} +0 -0
  708. /package/dist/src/views/admin/views/core/users/show/roles/{search-roles.action.js → search-roles.action.server.js} +0 -0
  709. /package/dist/src/views/admin/views/core/users/show/roles/{update-roles.action.js → update-roles.action.server.js} +0 -0
  710. /package/dist/src/views/auth/password-reset/change-password-form/{mutation-api.js → mutation-api.server.js} +0 -0
  711. /package/dist/src/views/auth/password-reset/form/{mutation-api.js → mutation-api.server.js} +0 -0
  712. /package/dist/src/views/auth/sign-in/form/{mutation-api.js → mutation-api.server.js} +0 -0
  713. /package/dist/src/views/auth/sign-up/form/{mutation-api.js → mutation-api.server.js} +0 -0
  714. /package/dist/src/views/auth/sso/buttons/{mutation-api.js → mutation-api.server.js} +0 -0
  715. /package/dist/src/views/auth/sso/callback/client/{mutation-api.js → mutation-api.server.js} +0 -0
  716. /package/dist/src/views/layouts/theme/header/user/auth/{log-out-mutation-api.js → log-out-mutation-api.server.js} +0 -0
@@ -54,7 +54,7 @@ export default async function Page({
54
54
  const { id } = await params;
55
55
 
56
56
  return (
57
- <I18nProvider namespaces="admin.user">
57
+ <I18nProvider namespaces={["admin.user", "core.search"]}>
58
58
  <div className="p-4">
59
59
  <React.Suspense fallback={<Loader />}>
60
60
  <ShowUserAdminView id={id} />
@@ -2,11 +2,14 @@ import type { Metadata } from "next/dist/types";
2
2
 
3
3
  import { getTranslations } from "next-intl/server";
4
4
  import dynamic from "next/dynamic";
5
+ import { notFound } from "next/navigation";
5
6
  import React from "react";
6
7
 
7
8
  import { I18nProvider } from "@/components/i18n-provider";
8
9
  import { DataTableSkeleton } from "@/components/table/data-table";
9
10
  import { HeaderContent } from "@/components/ui/header-content";
11
+ import { checkAdminPermissionApi } from "@/lib/api/get-session-admin-api";
12
+ import { ActionsRolesAdmin } from "@/views/admin/views/core/users/roles/actions/actions";
10
13
 
11
14
  const RolesAdminView = dynamic(async () =>
12
15
  import("@/views/admin/views/core/users/roles/roles-admin-view").then(
@@ -27,15 +30,23 @@ export const generateMetadata = async (): Promise<Metadata> => {
27
30
  export default async function Page(
28
31
  props: React.ComponentProps<typeof RolesAdminView>,
29
32
  ) {
30
- const [t, tNav] = await Promise.all([
33
+ const [t, tNav, canView, canCreate] = await Promise.all([
31
34
  getTranslations("admin.role.list"),
32
35
  getTranslations("admin.global.nav.users"),
36
+ checkAdminPermissionApi({ module: "roles", permission: "can_view" }),
37
+ checkAdminPermissionApi({ module: "roles", permission: "can_create" }),
33
38
  ]);
34
39
 
40
+ if (!canView) {
41
+ notFound();
42
+ }
43
+
35
44
  return (
36
45
  <I18nProvider namespaces="admin.role">
37
46
  <div className="p-4">
38
- <HeaderContent desc={t("desc")} h1={tNav("roles")} />
47
+ <HeaderContent desc={t("desc")} h1={tNav("roles")}>
48
+ {canCreate && <ActionsRolesAdmin />}
49
+ </HeaderContent>
39
50
 
40
51
  <React.Suspense fallback={<DataTableSkeleton columns={2} />}>
41
52
  <RolesAdminView {...props} />
@@ -3,7 +3,7 @@ export default function Page() {
3
3
  <div className="flex min-h-screen flex-col items-center justify-center gap-2 text-center">
4
4
  <h1 className="text-2xl font-bold">Blank test page</h1>
5
5
  <p className="text-muted-foreground">
6
- This page renders without the main layout no header or footer, just
6
+ This page renders without the main layout - no header or footer, just
7
7
  the root providers.
8
8
  </p>
9
9
  </div>
@@ -0,0 +1,5 @@
1
+ import { BreadcrumbAdmin } from "@/views/admin/layouts/breadcrumb/breadcrumb-admin";
2
+
3
+ export default function BreadcrumbSlot() {
4
+ return <BreadcrumbAdmin segments={["core", "advanced", "cron"]} />;
5
+ }
@@ -0,0 +1,5 @@
1
+ import { BreadcrumbAdmin } from "@/views/admin/layouts/breadcrumb/breadcrumb-admin";
2
+
3
+ export default function BreadcrumbSlot() {
4
+ return <BreadcrumbAdmin segments={["core", "advanced", "queue"]} />;
5
+ }
@@ -0,0 +1,5 @@
1
+ import { BreadcrumbAdvancedSearch } from "@/views/admin/layouts/breadcrumb/breadcrumb-advanced-search";
2
+
3
+ export default function BreadcrumbSlot() {
4
+ return <BreadcrumbAdvancedSearch />;
5
+ }
@@ -0,0 +1,5 @@
1
+ import { BreadcrumbAdmin } from "@/views/admin/layouts/breadcrumb/breadcrumb-admin";
2
+
3
+ export default function BreadcrumbSlot() {
4
+ return <BreadcrumbAdmin segments={["core"]} />;
5
+ }
@@ -0,0 +1,5 @@
1
+ import { BreadcrumbAdmin } from "@/views/admin/layouts/breadcrumb/breadcrumb-admin";
2
+
3
+ export default function BreadcrumbSlot() {
4
+ return <BreadcrumbAdmin segments={["core", "system", "files"]} />;
5
+ }
@@ -0,0 +1,5 @@
1
+ import { BreadcrumbAdmin } from "@/views/admin/layouts/breadcrumb/breadcrumb-admin";
2
+
3
+ export default function BreadcrumbSlot() {
4
+ return <BreadcrumbAdmin segments={["core", "system", "integrations"]} />;
5
+ }
@@ -0,0 +1,5 @@
1
+ import { BreadcrumbAdmin } from "@/views/admin/layouts/breadcrumb/breadcrumb-admin";
2
+
3
+ export default function BreadcrumbSlot() {
4
+ return <BreadcrumbAdmin segments={["core", "users"]} />;
5
+ }
@@ -0,0 +1,5 @@
1
+ import { BreadcrumbRolesAdmin } from "@/views/admin/layouts/breadcrumb/breadcrumb-roles-admin";
2
+
3
+ export default function BreadcrumbSlot() {
4
+ return <BreadcrumbRolesAdmin />;
5
+ }
@@ -0,0 +1,14 @@
1
+ import { getTranslations } from "next-intl/server";
2
+
3
+ import { BreadcrumbMain } from "@/views/breadcrumb/breadcrumb-main";
4
+
5
+ export default async function BreadcrumbSlot() {
6
+ const t = await getTranslations("core.search");
7
+
8
+ return (
9
+ <BreadcrumbMain
10
+ labels={{ "/discover": t("discoverTitle") }}
11
+ segments={["discover"]}
12
+ />
13
+ );
14
+ }
@@ -1,6 +1,6 @@
1
1
  // Home page (/) has no breadcrumb. An explicit slot page (not just default.tsx)
2
2
  // is required so client-side navigation back to "/" clears a previously-rendered
3
- // breadcrumb otherwise Next.js keeps the slot's stale active state on soft nav.
3
+ // breadcrumb - otherwise Next.js keeps the slot's stale active state on soft nav.
4
4
  export default function BreadcrumbSlot() {
5
5
  return null;
6
6
  }
@@ -0,0 +1,11 @@
1
+ import { getTranslations } from "next-intl/server";
2
+
3
+ import { BreadcrumbMain } from "@/views/breadcrumb/breadcrumb-main";
4
+
5
+ export default async function BreadcrumbSlot() {
6
+ const t = await getTranslations("core.search");
7
+
8
+ return (
9
+ <BreadcrumbMain labels={{ "/search": t("title") }} segments={["search"]} />
10
+ );
11
+ }
@@ -0,0 +1,17 @@
1
+ import { getTranslations } from "next-intl/server";
2
+
3
+ import { BreadcrumbMain } from "@/views/breadcrumb/breadcrumb-main";
4
+
5
+ export default async function BreadcrumbSlot() {
6
+ const t = await getTranslations("core.auth.settings");
7
+
8
+ return (
9
+ <BreadcrumbMain
10
+ labels={{
11
+ "/settings": t("title"),
12
+ "/settings/devices": t("nav.devices"),
13
+ }}
14
+ segments={["settings", "devices"]}
15
+ />
16
+ );
17
+ }
@@ -0,0 +1,41 @@
1
+ import { getTranslations } from "next-intl/server";
2
+ import dynamic from "next/dynamic";
3
+ import React from "react";
4
+
5
+ import { I18nProvider } from "@/components/i18n-provider";
6
+ import { HeaderContent } from "@/components/ui/header-content";
7
+ import { Skeleton } from "@/components/ui/skeleton";
8
+
9
+ const DiscoverView = dynamic(async () =>
10
+ import("@/views/search/discover-view").then(module => ({
11
+ default: module.DiscoverView,
12
+ })),
13
+ );
14
+
15
+ export const generateMetadata = async () => {
16
+ const t = await getTranslations("core.search");
17
+
18
+ return {
19
+ title: t("discoverTitle"),
20
+ description: t("discoverDesc"),
21
+ robots: { index: true, follow: true },
22
+ };
23
+ };
24
+
25
+ export default async function Page() {
26
+ const t = await getTranslations("core.search");
27
+
28
+ return (
29
+ <I18nProvider namespaces={["core.search"]}>
30
+ <div className="container mx-auto max-w-3xl space-y-6 p-4">
31
+ <HeaderContent desc={t("discoverDesc")} h1={t("discoverTitle")} />
32
+
33
+ <React.Suspense
34
+ fallback={<Skeleton className="h-64 w-full rounded-xl" />}
35
+ >
36
+ <DiscoverView />
37
+ </React.Suspense>
38
+ </div>
39
+ </I18nProvider>
40
+ );
41
+ }
@@ -0,0 +1,50 @@
1
+ import { getTranslations } from "next-intl/server";
2
+ import dynamic from "next/dynamic";
3
+ import { notFound } from "next/navigation";
4
+ import React from "react";
5
+
6
+ import { I18nProvider } from "@/components/i18n-provider";
7
+ import { DataTableSkeleton } from "@/components/table/data-table";
8
+ import { HeaderContent } from "@/components/ui/header-content";
9
+ import { getSessionApi } from "@/lib/api/get-session-api";
10
+
11
+ const MyFilesTableView = dynamic(async () =>
12
+ import("@/views/files/my-files-table-view").then(module => ({
13
+ default: module.MyFilesTableView,
14
+ })),
15
+ );
16
+
17
+ export const generateMetadata = async () => {
18
+ const t = await getTranslations("core.files");
19
+
20
+ return {
21
+ title: t("title"),
22
+ description: t("desc"),
23
+ robots: { index: false, follow: false },
24
+ };
25
+ };
26
+
27
+ export default async function Page(
28
+ props: React.ComponentProps<typeof MyFilesTableView>,
29
+ ) {
30
+ const [t, session] = await Promise.all([
31
+ getTranslations("core.files"),
32
+ getSessionApi(),
33
+ ]);
34
+
35
+ if (!session.user) {
36
+ notFound();
37
+ }
38
+
39
+ return (
40
+ <I18nProvider namespaces={["core.files"]}>
41
+ <div className="container mx-auto space-y-6 p-4">
42
+ <HeaderContent desc={t("desc")} h1={t("title")} />
43
+
44
+ <React.Suspense fallback={<DataTableSkeleton columns={7} />}>
45
+ <MyFilesTableView {...props} />
46
+ </React.Suspense>
47
+ </div>
48
+ </I18nProvider>
49
+ );
50
+ }
@@ -0,0 +1,43 @@
1
+ import { getTranslations } from "next-intl/server";
2
+ import dynamic from "next/dynamic";
3
+ import React from "react";
4
+
5
+ import { I18nProvider } from "@/components/i18n-provider";
6
+ import { HeaderContent } from "@/components/ui/header-content";
7
+ import { Skeleton } from "@/components/ui/skeleton";
8
+
9
+ const SearchView = dynamic(async () =>
10
+ import("@/views/search/search-view").then(module => ({
11
+ default: module.SearchView,
12
+ })),
13
+ );
14
+
15
+ export const generateMetadata = async () => {
16
+ const t = await getTranslations("core.search");
17
+
18
+ return {
19
+ title: t("title"),
20
+ description: t("desc"),
21
+ robots: { index: true, follow: true },
22
+ };
23
+ };
24
+
25
+ export default async function Page(
26
+ props: React.ComponentProps<typeof SearchView>,
27
+ ) {
28
+ const t = await getTranslations("core.search");
29
+
30
+ return (
31
+ <I18nProvider namespaces={["core.search"]}>
32
+ <div className="container mx-auto max-w-3xl space-y-6 p-4">
33
+ <HeaderContent desc={t("desc")} h1={t("title")} />
34
+
35
+ <React.Suspense
36
+ fallback={<Skeleton className="h-64 w-full rounded-xl" />}
37
+ >
38
+ <SearchView {...props} />
39
+ </React.Suspense>
40
+ </div>
41
+ </I18nProvider>
42
+ );
43
+ }
@@ -0,0 +1,15 @@
1
+ import { getTranslations } from "next-intl/server";
2
+
3
+ import { DevicesSettings } from "@/views/auth/settings/devices/devices";
4
+
5
+ export const generateMetadata = async () => {
6
+ const t = await getTranslations("core.auth.settings");
7
+
8
+ return {
9
+ title: `${t("nav.devices")} - ${t("title")}`,
10
+ };
11
+ };
12
+
13
+ export default function Page() {
14
+ return <DevicesSettings />;
15
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/tsconfig",
3
+ "extends": "./tsconfig.json",
4
+ "exclude": ["node_modules", "**/*.test.ts", "**/*.test.tsx"]
5
+ }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=file-utils.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-utils.test.d.ts","sourceRoot":"","sources":["../../../scripts/shared/file-utils.test.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=cache.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache.test.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/cache.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- import{describe,expect,it,vi}from"vitest";import{CacheModel}from"./cache.js";const fakeContext={get:()=>undefined};const LOCK_KEY="vitnode:cache:__system__:lock:queue:process";describe("CacheModel locks",()=>{describe("without Redis",()=>{const cache=new CacheModel(null,fakeContext);it("acquireLock returns true so cache-less deployments still proceed",async()=>{await expect(cache.acquireLock("queue:process",55)).resolves.toBe(true)});it("releaseLock is a no-op",async()=>{await expect(cache.releaseLock("queue:process")).resolves.toBeUndefined()})});describe("with Redis",()=>{it("acquires the lock with SET NX EX in the system namespace",async()=>{const set=vi.fn().mockResolvedValue("OK");const cache=new CacheModel({set},fakeContext);await expect(cache.acquireLock("queue:process",55)).resolves.toBe(true);expect(set).toHaveBeenCalledWith(LOCK_KEY,"1","EX",55,"NX")});it("returns false when the lock is already held",async()=>{const set=vi.fn().mockResolvedValue(null);const cache=new CacheModel({set},fakeContext);await expect(cache.acquireLock("queue:process",55)).resolves.toBe(false)});it("returns false when Redis errors, to skip rather than double-run",async()=>{const set=vi.fn().mockRejectedValue(new Error("down"));const cache=new CacheModel({set},fakeContext);await expect(cache.acquireLock("queue:process",55)).resolves.toBe(false)});it("releaseLock deletes the lock key",async()=>{const del=vi.fn().mockResolvedValue(1);const cache=new CacheModel({del},fakeContext);await cache.releaseLock("queue:process");expect(del).toHaveBeenCalledWith(LOCK_KEY)})})});
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=email.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"email.test.d.ts","sourceRoot":"","sources":["../../../../src/api/models/email.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- import{describe,expect,it,vi}from"vitest";vi.mock("react-email",()=>({render:vi.fn().mockResolvedValue("RENDERED")}));import{EmailModel}from"./email.js";const makeCtx=(overrides={})=>{const dispatch=vi.fn().mockResolvedValue({id:1});const sendEmail=vi.fn().mockResolvedValue(undefined);const error=vi.fn().mockResolvedValue(undefined);const store={core:{email:"email"in overrides?overrides.email:{adapter:{sendEmail}},plugins:[],metadata:{title:"Test"},pathToMessages:vi.fn().mockResolvedValue({default:{}})},queue:{dispatch},log:{error,warn:vi.fn(),debug:vi.fn()}};return{ctx:{get:k=>store[k]},dispatch,sendEmail,error}};describe("EmailModel.queue",()=>{it("renders the email and enqueues a send-email task",async()=>{const{ctx,dispatch}=makeCtx();await new EmailModel(ctx).send({to:"a@b.com",locale:"en",subject:"Hi",content:()=>null});expect(dispatch).toHaveBeenCalledWith({name:"send-email",payload:{to:"a@b.com",subject:"Hi",html:"RENDERED",text:"RENDERED"}})});it("resolves a function subject before enqueueing",async()=>{const{ctx,dispatch}=makeCtx();await new EmailModel(ctx).send({to:"a@b.com",locale:"en",subject:()=>"Computed",content:()=>null});expect(dispatch.mock.calls[0][0].payload.subject).toBe("Computed")});it("throws when no email provider is configured",async()=>{const{ctx,dispatch}=makeCtx({email:undefined});await expect(new EmailModel(ctx).send({to:"a@b.com",locale:"en",subject:"Hi",content:()=>null})).rejects.toThrow();expect(dispatch).not.toHaveBeenCalled()})});describe("EmailModel.deliver",()=>{it("sends a prebuilt email through the provider",async()=>{const{ctx,sendEmail}=makeCtx();await new EmailModel(ctx).deliver({to:"a@b.com",subject:"Hi",html:"<p>hi</p>",text:"hi"});expect(sendEmail).toHaveBeenCalledWith(expect.objectContaining({to:"a@b.com",subject:"Hi",html:"<p>hi</p>",text:"hi",metadata:{title:"Test"}}))})});
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=queue.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queue.test.d.ts","sourceRoot":"","sources":["../../../../src/api/models/queue.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- import{describe,expect,it,vi}from"vitest";import{QueueModel}from"./queue.js";const makeCtx=(overrides={})=>{const values=vi.fn().mockReturnValue({returning:vi.fn().mockResolvedValue([{id:1}])});const store={db:{insert:vi.fn().mockReturnValue({values})},core:{queue:overrides.queue??[]},plugin:overrides.plugin};return{ctx:{get:k=>store[k]},values}};describe("QueueModel.dispatch",()=>{it("uses the explicit maxAttempts when provided",async()=>{const{ctx,values}=makeCtx({queue:[{name:"job",pluginId:"@vitnode/core",maxAttempts:5}]});await new QueueModel(ctx).dispatch({name:"job",maxAttempts:7});expect(values.mock.calls[0][0]).toMatchObject({maxAttempts:7})});it("falls back to the registered task maxAttempts",async()=>{const{ctx,values}=makeCtx({queue:[{name:"job",pluginId:"@vitnode/core",maxAttempts:5}]});await new QueueModel(ctx).dispatch({name:"job"});expect(values.mock.calls[0][0]).toMatchObject({maxAttempts:5})});it("defaults to 3 when the registered task has no maxAttempts",async()=>{const{ctx,values}=makeCtx({queue:[{name:"job",pluginId:"@vitnode/core"}]});await new QueueModel(ctx).dispatch({name:"job"});expect(values.mock.calls[0][0]).toMatchObject({maxAttempts:3})});it("defaults to 3 when the task is not registered",async()=>{const{ctx,values}=makeCtx({queue:[]});await new QueueModel(ctx).dispatch({name:"job"});expect(values.mock.calls[0][0]).toMatchObject({maxAttempts:3})});it("scopes the task lookup by pluginId",async()=>{const{ctx,values}=makeCtx({plugin:{id:"@vitnode/blog"},queue:[{name:"job",pluginId:"@vitnode/core",maxAttempts:5},{name:"job",pluginId:"@vitnode/blog",maxAttempts:9}]});await new QueueModel(ctx).dispatch({name:"job"});expect(values.mock.calls[0][0]).toMatchObject({pluginId:"@vitnode/blog",maxAttempts:9})})});
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=combobox.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"combobox.test.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/fields/combobox.test.tsx"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- import{jsx as _jsx}from"react/jsx-runtime";import{QueryClient,QueryClientProvider}from"@tanstack/react-query";import{fireEvent,render,screen,waitFor}from"@testing-library/react";import{afterEach,describe,expect,it,vi}from"vitest";import{AutoFormCombobox}from"./combobox.js";vi.mock("next-intl",()=>({useTranslations:()=>key=>key}));vi.mock("@/components/ui/form",()=>({FormMessage:()=>null,useFormField:()=>({error:undefined,formDescriptionId:"form-item-description",formItemId:"form-item",formMessageId:"form-item-message"})}));afterEach(()=>{vi.useRealTimers()});const createField=(value=null)=>{return{value,onChange:vi.fn(),onBlur:vi.fn(),name:"field",ref:vi.fn()}};const renderWithClient=ui=>{const queryClient=new QueryClient({defaultOptions:{queries:{retry:false}}});return render(_jsx(QueryClientProvider,{client:queryClient,children:ui}))};describe("AutoFormCombobox",()=>{it("uses the translated default placeholder when no placeholder is provided",()=>{renderWithClient(_jsx(AutoFormCombobox,{field:createField(),otherProps:{enum:["option-one"],isOptional:false,"aria-invalid":false}}));expect(screen.getByPlaceholderText("select_option")).toBeTruthy()});it("renders label and placeholder for static options",()=>{renderWithClient(_jsx(AutoFormCombobox,{field:createField(),label:"Type",otherProps:{enum:["option-one","option-two"],isOptional:false,"aria-invalid":false},placeholder:"Pick a type"}));expect(screen.getByText("Type")).toBeTruthy();expect(screen.getByPlaceholderText("Pick a type")).toBeTruthy()});it("renders optional marker, labelRight and description",()=>{renderWithClient(_jsx(AutoFormCombobox,{description:"Choose the primary item type.",field:createField(),label:"Type",labelRight:_jsx("span",{children:"Admin only"}),otherProps:{enum:["option-one"],isOptional:true,"aria-invalid":false}}));expect(screen.getByText("Type")).toBeTruthy();expect(screen.getByText("optional")).toBeTruthy();expect(screen.getByText("Admin only")).toBeTruthy();expect(screen.getByText("Choose the primary item type.")).toBeTruthy()});it("passes disabled and invalid state to the single input",()=>{renderWithClient(_jsx(AutoFormCombobox,{disabled:true,field:createField(),otherProps:{enum:["option-one"],isOptional:false,"aria-invalid":true},placeholder:"Pick a type"}));const input=screen.getByPlaceholderText("Pick a type");expect(input.disabled).toBe(true);expect(input.getAttribute("aria-invalid")).toBe("true")});it("renders chips when multiple for static options",()=>{const{container}=renderWithClient(_jsx(AutoFormCombobox,{field:createField([]),label:"Tags",multiple:true,otherProps:{enum:["one","two"],isOptional:false,"aria-invalid":false}}));expect(container.querySelector("[data-slot='combobox-chips']")).toBeTruthy()});it("renders mapped labels for selected values",()=>{renderWithClient(_jsx(AutoFormCombobox,{field:createField(["option-one"]),labels:[{label:"Option One",value:"option-one"}],multiple:true,otherProps:{enum:["option-one"],isOptional:false,"aria-invalid":false}}));expect(screen.getByText("Option One")).toBeTruthy()});it("falls back to raw selected values when labels are missing",()=>{renderWithClient(_jsx(AutoFormCombobox,{field:createField(["unknown-option"]),multiple:true,otherProps:{enum:["unknown-option"],isOptional:false,"aria-invalid":false}}));expect(screen.getByText("unknown-option")).toBeTruthy()});it("calls onInputValueChange for static input",()=>{const onInputValueChange=vi.fn();renderWithClient(_jsx(AutoFormCombobox,{field:createField(),label:"Type",onInputValueChange:onInputValueChange,otherProps:{enum:["option-one"],isOptional:false,"aria-invalid":false},placeholder:"Pick a type"}));fireEvent.change(screen.getByPlaceholderText("Pick a type"),{target:{value:"opt"}});expect(onInputValueChange).toHaveBeenCalled()});it("calls field.onChange and onValueChange when a static option is selected",async()=>{const field=createField();const onValueChange=vi.fn();renderWithClient(_jsx(AutoFormCombobox,{field:field,onValueChange:onValueChange,otherProps:{enum:["option-one","option-two"],isOptional:false,"aria-invalid":false},placeholder:"Pick a type"}));const input=screen.getByPlaceholderText("Pick a type");fireEvent.focus(input);fireEvent.keyDown(input,{key:"ArrowDown"});fireEvent.keyDown(input,{key:"Enter"});await waitFor(()=>{expect(field.onChange).toHaveBeenCalledWith("option-one")});expect(onValueChange).toHaveBeenCalledWith("option-one",expect.anything())});it("loads async options and ignores multiple",async()=>{const fetchData=vi.fn().mockResolvedValue([{label:"Category",value:"1"}]);const{container}=renderWithClient(_jsx(AutoFormCombobox,{fetchData:fetchData,field:createField(),id:"categoryId",label:"Category",multiple:true,otherProps:{isOptional:false,"aria-invalid":false},searchPlaceholder:"Search categories"}));await waitFor(()=>{expect(fetchData).toHaveBeenCalledWith({search:""})});expect(screen.getByPlaceholderText("Search categories")).toBeTruthy();expect(container.querySelector("[data-slot='combobox-chips']")).toBeNull()});it("uses placeholder as async search placeholder fallback",async()=>{const fetchData=vi.fn().mockResolvedValue([]);renderWithClient(_jsx(AutoFormCombobox,{fetchData:fetchData,field:createField(),id:"categoryId",otherProps:{isOptional:false,"aria-invalid":false},placeholder:"Search from placeholder"}));await waitFor(()=>{expect(fetchData).toHaveBeenCalledWith({search:""})});expect(screen.getByPlaceholderText("Search from placeholder")).toBeTruthy()});it("forwards async input changes without refetching immediately",async()=>{const fetchData=vi.fn().mockResolvedValue([]);const onInputValueChange=vi.fn();renderWithClient(_jsx(AutoFormCombobox,{fetchData:fetchData,field:createField(),id:"categoryId",onInputValueChange:onInputValueChange,otherProps:{isOptional:false,"aria-invalid":false},searchPlaceholder:"Search categories"}));await waitFor(()=>{expect(fetchData).toHaveBeenCalledWith({search:""})});const input=screen.getByPlaceholderText("Search categories");fireEvent.input(input,{target:{value:"cat"}});expect(onInputValueChange).toHaveBeenCalledWith("cat",expect.anything());expect(fetchData).not.toHaveBeenCalledWith({search:"cat"})})});
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=get-next-cron-run-date.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-next-cron-run-date.test.d.ts","sourceRoot":"","sources":["../../../../src/lib/api/get-next-cron-run-date.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- import{describe,expect,it,vi}from"vitest";import{getNextCronRunDate}from"./get-next-cron-run-date.js";describe("getNextCronRunDate",()=>{it("should return the next run date for a valid cron schedule with lastRun null",()=>{const schedule="0 0 * * *";const lastRun=null;const result=getNextCronRunDate(schedule,lastRun);expect(result).toBeInstanceOf(Date);if(result){expect(result.getHours()).toBe(0);expect(result.getMinutes()).toBe(0)}});it("should return the next run date for a valid cron schedule with lastRun provided",()=>{const schedule="0 0 * * *";const lastRun=new Date("2023-01-01T12:00:00Z");const result=getNextCronRunDate(schedule,lastRun);expect(result).toBeInstanceOf(Date);if(result){expect(result.getHours()).toBe(0);expect(result.getMinutes()).toBe(0);expect(result.getTime()).toBeGreaterThan(lastRun.getTime())}});it("should return null for an invalid cron schedule",()=>{const schedule="invalid cron";const lastRun=null;const consoleSpy=vi.spyOn(console,"error").mockImplementation(()=>{});const result=getNextCronRunDate(schedule,lastRun);expect(result).toBeNull();expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining("[VitNode]"),expect.any(Error));consoleSpy.mockRestore()});it("should handle cron schedules with specific times",()=>{const schedule="30 14 * * 1";const lastRun=new Date("2023-01-01T10:00:00Z");const result=getNextCronRunDate(schedule,lastRun);expect(result).toBeInstanceOf(Date);if(result){expect(result.getDay()).toBe(1);expect(result.getHours()).toBe(14);expect(result.getMinutes()).toBe(30)}});it("should return null when cron parsing throws an error",()=>{const schedule="99 99 99 99 99";const lastRun=null;const consoleSpy=vi.spyOn(console,"error").mockImplementation(()=>{});const result=getNextCronRunDate(schedule,lastRun);expect(result).toBeNull();expect(consoleSpy).toHaveBeenCalled();consoleSpy.mockRestore()})});
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=get-queue-backoff-date.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-queue-backoff-date.test.d.ts","sourceRoot":"","sources":["../../../../src/lib/api/get-queue-backoff-date.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- import{describe,expect,it}from"vitest";import{getQueueBackoffDate}from"./get-queue-backoff-date.js";describe("getQueueBackoffDate",()=>{const from=new Date("2024-01-01T00:00:00Z");const secondsFrom=date=>(date.getTime()-from.getTime())/1e3;it("delays by the base amount after the first attempt",()=>{expect(secondsFrom(getQueueBackoffDate(1,from))).toBe(10)});it("grows exponentially with attempts",()=>{expect(secondsFrom(getQueueBackoffDate(2,from))).toBe(20);expect(secondsFrom(getQueueBackoffDate(3,from))).toBe(40);expect(secondsFrom(getQueueBackoffDate(4,from))).toBe(80)});it("is monotonically increasing",()=>{const delays=[1,2,3,4,5].map(a=>secondsFrom(getQueueBackoffDate(a,from)));for(let i=1;i<delays.length;i++){expect(delays[i]).toBeGreaterThan(delays[i-1])}});it("caps the delay at one hour",()=>{expect(secondsFrom(getQueueBackoffDate(50,from))).toBe(3600)});it("treats attempts <= 1 as the base delay (no negative exponent)",()=>{expect(secondsFrom(getQueueBackoffDate(0,from))).toBe(10)});it("returns a date after the provided origin",()=>{expect(getQueueBackoffDate(1,from).getTime()).toBeGreaterThan(from.getTime())})});
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=resolve-queue-task-outcome.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve-queue-task-outcome.test.d.ts","sourceRoot":"","sources":["../../../../src/lib/api/resolve-queue-task-outcome.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- import{describe,expect,it}from"vitest";import{resolveQueueTaskOutcome}from"./resolve-queue-task-outcome.js";describe("resolveQueueTaskOutcome",()=>{const now=new Date("2024-01-01T00:00:00Z");it("completes when there is no error",()=>{const outcome=resolveQueueTaskOutcome({attempts:1,maxAttempts:3,now});expect(outcome.status).toBe("completed");expect(outcome.completedAt).toEqual(now);expect(outcome.lastError).toBeNull();expect(outcome.availableAt).toBeUndefined()});it("retries with a backoff when the error is recoverable",()=>{const outcome=resolveQueueTaskOutcome({attempts:1,maxAttempts:3,error:"boom",now});expect(outcome.status).toBe("pending");expect(outcome.lastError).toBe("boom");expect(outcome.availableAt?.getTime()).toBeGreaterThan(now.getTime());expect(outcome.completedAt).toBeUndefined()});it("fails once attempts reach maxAttempts",()=>{const outcome=resolveQueueTaskOutcome({attempts:3,maxAttempts:3,error:"boom",now});expect(outcome.status).toBe("failed");expect(outcome.lastError).toBe("boom");expect(outcome.completedAt).toEqual(now);expect(outcome.availableAt).toBeUndefined()});it("fails when attempts exceed maxAttempts",()=>{const outcome=resolveQueueTaskOutcome({attempts:5,maxAttempts:3,error:"boom",now});expect(outcome.status).toBe("failed")});it("backs off further on later retries",()=>{const first=resolveQueueTaskOutcome({attempts:1,maxAttempts:5,error:"boom",now});const second=resolveQueueTaskOutcome({attempts:2,maxAttempts:5,error:"boom",now});expect(second.availableAt?.getTime()).toBeGreaterThan(first.availableAt?.getTime()??0)})});
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=should-cron-job-run.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"should-cron-job-run.test.d.ts","sourceRoot":"","sources":["../../../../src/lib/api/should-cron-job-run.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- import{beforeEach,describe,expect,it,vi}from"vitest";import{shouldCronJobRun}from"./should-cron-job-run.js";describe("shouldCronJobRun",()=>{beforeEach(()=>{vi.clearAllMocks()});describe("valid cron schedules",()=>{it("should return true when job has never run (lastRun is null)",()=>{const schedule="0 * * * *";const lastRun=null;const result=shouldCronJobRun(schedule,lastRun);expect(result).toBe(true)});it("should return true when enough time has passed since last run",()=>{const schedule="0 * * * *";const lastRun=new Date("2024-01-01T10:00:00Z");vi.useFakeTimers();vi.setSystemTime(new Date("2024-01-01T12:00:00Z"));const result=shouldCronJobRun(schedule,lastRun);expect(result).toBe(true);vi.useRealTimers()});it("should return false when not enough time has passed since last run",()=>{const schedule="0 * * * *";const lastRun=new Date("2024-01-01T11:30:00Z");vi.useFakeTimers();vi.setSystemTime(new Date("2024-01-01T11:45:00Z"));const result=shouldCronJobRun(schedule,lastRun);expect(result).toBe(false);vi.useRealTimers()});it("should handle daily job correctly",()=>{const schedule="0 9 * * *";const lastRun=new Date("2024-01-01T09:00:00Z");vi.useFakeTimers();vi.setSystemTime(new Date("2024-01-02T10:00:00Z"));const result=shouldCronJobRun(schedule,lastRun);expect(result).toBe(true);vi.useRealTimers()});it("should handle weekly job correctly",()=>{const schedule="0 9 * * 1";const lastRun=new Date("2024-01-01T09:00:00Z");vi.useFakeTimers();vi.setSystemTime(new Date("2024-01-08T10:00:00Z"));const result=shouldCronJobRun(schedule,lastRun);expect(result).toBe(true);vi.useRealTimers()});it("should handle monthly job correctly",()=>{const schedule="0 9 1 * *";const lastRun=new Date("2024-01-01T09:00:00Z");vi.useFakeTimers();vi.setSystemTime(new Date("2024-02-01T10:00:00Z"));const result=shouldCronJobRun(schedule,lastRun);expect(result).toBe(true);vi.useRealTimers()});it("should handle every minute job correctly",()=>{const schedule="* * * * *";const lastRun=new Date("2024-01-01T10:00:00Z");vi.useFakeTimers();vi.setSystemTime(new Date("2024-01-01T10:01:00Z"));const result=shouldCronJobRun(schedule,lastRun);expect(result).toBe(true);vi.useRealTimers()});it("should handle every 5 minutes job correctly",()=>{const schedule="*/5 * * * *";const lastRun=new Date("2024-01-01T10:00:00Z");vi.useFakeTimers();vi.setSystemTime(new Date("2024-01-01T10:03:00Z"));const result=shouldCronJobRun(schedule,lastRun);expect(result).toBe(false);vi.setSystemTime(new Date("2024-01-01T10:05:00Z"));const result2=shouldCronJobRun(schedule,lastRun);expect(result2).toBe(true);vi.useRealTimers()});it("should handle complex cron expressions",()=>{const schedule="0 9-17 * * 1-5";const lastRun=new Date("2024-01-01T09:00:00Z");vi.useFakeTimers();vi.setSystemTime(new Date("2024-01-01T10:00:00Z"));const result=shouldCronJobRun(schedule,lastRun);expect(result).toBe(true);vi.useRealTimers()})});describe("invalid cron schedules",()=>{it("should return false and log error for invalid cron schedule",()=>{const consoleErrorSpy=vi.spyOn(console,"error").mockImplementation(()=>{});const schedule="invalid cron";const lastRun=null;const result=shouldCronJobRun(schedule,lastRun);expect(result).toBe(false);expect(consoleErrorSpy).toHaveBeenCalledWith(expect.stringContaining("[VitNode]")&&expect.stringContaining("Error parsing schedule")&&expect.stringContaining("invalid cron"),expect.any(Error));consoleErrorSpy.mockRestore()});it("should return false for malformed cron expression",()=>{const consoleErrorSpy=vi.spyOn(console,"error").mockImplementation(()=>{});const schedule="60 * * * *";const lastRun=null;const result=shouldCronJobRun(schedule,lastRun);expect(result).toBe(false);expect(consoleErrorSpy).toHaveBeenCalled();consoleErrorSpy.mockRestore()});it("should return true for empty cron schedule (parsed as valid)",()=>{const schedule="";const lastRun=null;const result=shouldCronJobRun(schedule,lastRun);expect(result).toBe(true)})});describe("edge cases",()=>{it("should handle lastRun being exactly at the next scheduled time",()=>{const schedule="0 * * * *";const lastRun=new Date("2024-01-01T10:00:00Z");vi.useFakeTimers();vi.setSystemTime(new Date("2024-01-01T11:00:00Z"));const result=shouldCronJobRun(schedule,lastRun);expect(result).toBe(true);vi.useRealTimers()});it("should handle lastRun being in the future (clock skew)",()=>{const schedule="0 * * * *";const lastRun=new Date("2024-01-01T12:00:00Z");vi.useFakeTimers();vi.setSystemTime(new Date("2024-01-01T11:00:00Z"));const result=shouldCronJobRun(schedule,lastRun);expect(result).toBe(false);vi.useRealTimers()});it("should handle lastRun being epoch (new Date(0))",()=>{const schedule="0 * * * *";const lastRun=new Date(0);vi.useFakeTimers();vi.setSystemTime(new Date("2024-01-01T10:00:00Z"));const result=shouldCronJobRun(schedule,lastRun);expect(result).toBe(true);vi.useRealTimers()});it("should handle yearly cron job",()=>{const schedule="0 0 1 1 *";const lastRun=new Date("2023-01-01T00:00:00Z");vi.useFakeTimers();vi.setSystemTime(new Date("2024-01-01T01:00:00Z"));const result=shouldCronJobRun(schedule,lastRun);expect(result).toBe(true);vi.useRealTimers()});it("should handle specific day of month with month",()=>{const schedule="0 12 15 6 *";const lastRun=new Date("2023-06-15T12:00:00Z");vi.useFakeTimers();vi.setSystemTime(new Date("2024-06-15T13:00:00Z"));const result=shouldCronJobRun(schedule,lastRun);expect(result).toBe(true);vi.useRealTimers()})});describe("timezone handling",()=>{it("should work with different timezone dates",()=>{const schedule="0 9 * * *";const lastRun=new Date("2024-01-01T09:00:00+05:00");vi.useFakeTimers();vi.setSystemTime(new Date("2024-01-02T04:00:00Z"));const result=shouldCronJobRun(schedule,lastRun);expect(result).toBe(true);vi.useRealTimers()})});describe("performance and boundary conditions",()=>{it("should handle very old lastRun dates",()=>{const schedule="0 * * * *";const lastRun=new Date("1970-01-01T00:00:00Z");vi.useFakeTimers();vi.setSystemTime(new Date("2024-01-01T10:00:00Z"));const result=shouldCronJobRun(schedule,lastRun);expect(result).toBe(true);vi.useRealTimers()});it("should handle leap year considerations",()=>{const schedule="0 0 29 2 *";const lastRun=new Date("2020-02-29T00:00:00Z");vi.useFakeTimers();vi.setSystemTime(new Date("2024-02-29T01:00:00Z"));const result=shouldCronJobRun(schedule,lastRun);expect(result).toBe(true);vi.useRealTimers()})})});
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=validate-cron-schedule.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate-cron-schedule.test.d.ts","sourceRoot":"","sources":["../../../../src/lib/api/validate-cron-schedule.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- import{describe,expect,it}from"vitest";import{validateCronSchedule}from"./validate-cron-schedule.js";describe("validateCronSchedule",()=>{describe("valid 5-field cron expressions",()=>{it("should validate wildcard expression",()=>{expect(validateCronSchedule("* * * * *")).toBe(true)});it("should validate specific time expressions",()=>{expect(validateCronSchedule("0 0 * * *")).toBe(true);expect(validateCronSchedule("30 14 * * 1")).toBe(true);expect(validateCronSchedule("0 0 1 * *")).toBe(true);expect(validateCronSchedule("0 0 1 1 *")).toBe(true);expect(validateCronSchedule("15 10 * * 5")).toBe(true)});it("should validate step expressions",()=>{expect(validateCronSchedule("*/5 * * * *")).toBe(true);expect(validateCronSchedule("*/15 * * * *")).toBe(true);expect(validateCronSchedule("0 */2 * * *")).toBe(true);expect(validateCronSchedule("0 0 */3 * *")).toBe(true);expect(validateCronSchedule("0-30/5 * * * *")).toBe(true)});it("should validate range expressions",()=>{expect(validateCronSchedule("0 9-17 * * *")).toBe(true);expect(validateCronSchedule("0 0 1-15 * *")).toBe(true);expect(validateCronSchedule("0 0 * 1-6 *")).toBe(true);expect(validateCronSchedule("0 0 * * 1-5")).toBe(true)});it("should validate list expressions",()=>{expect(validateCronSchedule("0 0,12 * * *")).toBe(true);expect(validateCronSchedule("0 0 1,15 * *")).toBe(true);expect(validateCronSchedule("0 0 * * 1,3,5")).toBe(true);expect(validateCronSchedule("0 9,12,15 * * *")).toBe(true)});it("should validate complex expressions",()=>{expect(validateCronSchedule("0-30/5 9-17 * * 1-5")).toBe(true);expect(validateCronSchedule("0 0,12 1,15 * *")).toBe(true);expect(validateCronSchedule("*/10 */2 * * *")).toBe(true)});it("should validate weekday 0 and 7 (both Sunday)",()=>{expect(validateCronSchedule("0 0 * * 0")).toBe(true);expect(validateCronSchedule("0 0 * * 7")).toBe(true)});it("should validate edge cases",()=>{expect(validateCronSchedule("59 23 31 12 7")).toBe(true);expect(validateCronSchedule("0 0 1 1 0")).toBe(true)})});describe("valid 6-field cron expressions (with seconds)",()=>{it("should validate wildcard expression with seconds",()=>{expect(validateCronSchedule("* * * * * *")).toBe(true)});it("should validate specific time expressions with seconds",()=>{expect(validateCronSchedule("0 0 0 * * *")).toBe(true);expect(validateCronSchedule("30 30 14 * * 1")).toBe(true);expect(validateCronSchedule("0 0 0 1 * *")).toBe(true)});it("should validate step expressions with seconds",()=>{expect(validateCronSchedule("*/5 * * * * *")).toBe(true);expect(validateCronSchedule("0 */5 * * * *")).toBe(true);expect(validateCronSchedule("*/30 0 * * * *")).toBe(true)});it("should validate range expressions with seconds",()=>{expect(validateCronSchedule("0-30 0 9-17 * * *")).toBe(true)});it("should validate list expressions with seconds",()=>{expect(validateCronSchedule("0,30 0 0,12 * * *")).toBe(true)})});describe("invalid cron expressions",()=>{it("should reject empty or non-string input",()=>{expect(validateCronSchedule("")).toBe(false);expect(validateCronSchedule(" ")).toBe(false);expect(validateCronSchedule(null)).toBe(false);expect(validateCronSchedule(undefined)).toBe(false);expect(validateCronSchedule(123)).toBe(false)});it("should reject wrong number of fields",()=>{expect(validateCronSchedule("* * *")).toBe(false);expect(validateCronSchedule("* * * *")).toBe(false);expect(validateCronSchedule("* * * * * * *")).toBe(false);expect(validateCronSchedule("* * * * * * * *")).toBe(false)});it("should reject invalid characters",()=>{expect(validateCronSchedule("a * * * *")).toBe(false);expect(validateCronSchedule("* b * * *")).toBe(false);expect(validateCronSchedule("* * c * *")).toBe(false);expect(validateCronSchedule("@ # $ % ^")).toBe(false);expect(validateCronSchedule("invalid cron")).toBe(false)});it("should reject out-of-range values",()=>{expect(validateCronSchedule("60 * * * *")).toBe(false);expect(validateCronSchedule("* 24 * * *")).toBe(false);expect(validateCronSchedule("* * 32 * *")).toBe(false);expect(validateCronSchedule("* * 0 * *")).toBe(false);expect(validateCronSchedule("* * * 13 *")).toBe(false);expect(validateCronSchedule("* * * 0 *")).toBe(false);expect(validateCronSchedule("* * * * 8")).toBe(false);expect(validateCronSchedule("-1 * * * *")).toBe(false)});it("should reject out-of-range values in 6-field format",()=>{expect(validateCronSchedule("60 * * * * *")).toBe(false);expect(validateCronSchedule("-1 * * * * *")).toBe(false)});it("should reject invalid ranges",()=>{expect(validateCronSchedule("10-5 * * * *")).toBe(false);expect(validateCronSchedule("* 20-10 * * *")).toBe(false);expect(validateCronSchedule("* * 60-70 * *")).toBe(false);expect(validateCronSchedule("0-60 * * * *")).toBe(false)});it("should reject invalid steps",()=>{expect(validateCronSchedule("*/0 * * * *")).toBe(false);expect(validateCronSchedule("*/-1 * * * *")).toBe(false);expect(validateCronSchedule("*/60 * * * *")).toBe(false);expect(validateCronSchedule("*/abc * * * *")).toBe(false);expect(validateCronSchedule("* */25 * * *")).toBe(false)});it("should reject invalid lists",()=>{expect(validateCronSchedule("0,60 * * * *")).toBe(false);expect(validateCronSchedule("* 0,24 * * *")).toBe(false);expect(validateCronSchedule("a,b,c * * * *")).toBe(false);expect(validateCronSchedule(",, * * * *")).toBe(false)});it("should reject malformed expressions",()=>{expect(validateCronSchedule("1--5 * * * *")).toBe(false);expect(validateCronSchedule("1//5 * * * *")).toBe(false);expect(validateCronSchedule("1- * * * *")).toBe(false);expect(validateCronSchedule("-5 * * * *")).toBe(false);expect(validateCronSchedule("1/ * * * *")).toBe(false);expect(validateCronSchedule("/5 * * * *")).toBe(false)})});describe("edge cases",()=>{it("should handle extra whitespace",()=>{expect(validateCronSchedule(" * * * * * ")).toBe(true);expect(validateCronSchedule("0 0 * * *")).toBe(true)});it("should reject mixed valid and invalid fields",()=>{expect(validateCronSchedule("0 0 * * invalid")).toBe(false);expect(validateCronSchedule("0 25 * * *")).toBe(false);expect(validateCronSchedule("* * * * * 60")).toBe(false)})})});
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=colors.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"colors.test.d.ts","sourceRoot":"","sources":["../../../src/lib/colors.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- import{describe,expect,it}from"vitest";import{checkColorType,convertColor,getHSLFromString,getStringFromHSL}from"./colors.js";describe("convertColor",()=>{describe("hslToHex",()=>{it("should convert HSL to hex correctly",()=>{const hsl={h:0,s:100,l:50};expect(convertColor.hslToHex(hsl)).toBe("ff0000");const hsl2={h:120,s:100,l:50};expect(convertColor.hslToHex(hsl2)).toBe("00ff00");const hsl3={h:240,s:100,l:50};expect(convertColor.hslToHex(hsl3)).toBe("0000ff")})});describe("hexToHSL",()=>{it("should convert 6-digit hex to HSL correctly",()=>{expect(convertColor.hexToHSL("#ff0000")).toEqual({h:0,s:100,l:50});expect(convertColor.hexToHSL("#00ff00")).toEqual({h:120,s:100,l:50});expect(convertColor.hexToHSL("#0000ff")).toEqual({h:240,s:100,l:50})});it("should convert 3-digit hex to HSL correctly",()=>{expect(convertColor.hexToHSL("#f00")).toEqual({h:0,s:100,l:50});expect(convertColor.hexToHSL("#0f0")).toEqual({h:120,s:100,l:50});expect(convertColor.hexToHSL("#00f")).toEqual({h:240,s:100,l:50})});it("should return undefined for invalid hex values",()=>{expect(convertColor.hexToHSL("#xyz")).toBeUndefined();expect(convertColor.hexToHSL("#12")).toBeUndefined();expect(convertColor.hexToHSL("invalid")).toBeUndefined()})});describe("RGBToHSL",()=>{it("should convert RGB to HSL correctly",()=>{expect(convertColor.RGBToHSL(255,0,0)).toEqual({h:0,s:100,l:50});expect(convertColor.RGBToHSL(0,255,0)).toEqual({h:120,s:100,l:50});expect(convertColor.RGBToHSL(0,0,255)).toEqual({h:240,s:100,l:50});expect(convertColor.RGBToHSL(255,255,255)).toEqual({h:0,s:0,l:100});expect(convertColor.RGBToHSL(0,0,0)).toEqual({h:0,s:0,l:0})})});describe("hslToRgb",()=>{it("should convert HSL to RGB correctly",()=>{expect(convertColor.hslToRgb(0,100,50)).toEqual({r:"ff",g:"00",b:"00"});expect(convertColor.hslToRgb(120,100,50)).toEqual({r:"00",g:"ff",b:"00"});expect(convertColor.hslToRgb(240,100,50)).toEqual({r:"00",g:"00",b:"ff"})})})});describe("checkColorType",()=>{it("should identify hex colors correctly",()=>{expect(checkColorType("#fff")).toBe("hex");expect(checkColorType("#ffffff")).toBe("hex");expect(checkColorType("#FF0000")).toBe("hex")});it("should identify HSL colors correctly",()=>{expect(checkColorType("hsl(0, 100%, 50%)")).toBe("hsl");expect(checkColorType("hsl(120, 60%, 70%)")).toBe("hsl")});it("should identify RGB colors correctly",()=>{expect(checkColorType("rgb(255, 0, 0)")).toBe("rgb");expect(checkColorType("rgb(255 0 0)")).toBe("rgb")});it("should return null for invalid colors",()=>{expect(checkColorType("invalid")).toBeNull();expect(checkColorType("rgb(300, 0, 0)")).toBeNull();expect(checkColorType("hsl(400, 100%, 50%)")).toBeNull()})});describe("getHSLFromString",()=>{it("should parse valid HSL strings correctly",()=>{expect(getHSLFromString("hsl(0, 100%, 50%)")).toEqual({h:0,s:100,l:50});expect(getHSLFromString("hsl(120, 60%, 70%)")).toEqual({h:120,s:60,l:70})});it("should return null for invalid HSL strings",()=>{expect(getHSLFromString("invalid")).toBeNull();expect(getHSLFromString("rgb(255, 0, 0)")).toBeNull();expect(getHSLFromString("hsl(400, 100%, 50%")).toBeNull()})});describe("getStringFromHSL",()=>{it("should format HSL color object to string correctly",()=>{expect(getStringFromHSL({h:0,s:100,l:50})).toBe("hsl(0, 100%, 50%)");expect(getStringFromHSL({h:120,s:60,l:70})).toBe("hsl(120, 60%, 70%)");expect(getStringFromHSL({h:240,s:50,l:30})).toBe("hsl(240, 50%, 30%)")})});
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=cookie-from-string-to-object.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cookie-from-string-to-object.test.d.ts","sourceRoot":"","sources":["../../../../src/lib/fetcher/cookie-from-string-to-object.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- import{describe,expect,it}from"vitest";import{cookieFromStringToObject}from"./cookie-from-string-to-object.js";describe("cookieFromStringToObject",()=>{it("should parse a simple cookie string",()=>{const cookies=["token=abc123; Path=/; HttpOnly"];const result=cookieFromStringToObject(cookies);expect(result).toEqual([{token:"abc123",Path:"/",HttpOnly:true}])});it("should parse multiple cookie attributes",()=>{const cookies=["sessionId=xyz789; Domain=example.com; Path=/; HttpOnly; Secure; SameSite=strict; Expires=Wed, 21 Oct 2025 07:28:00 GMT"];const result=cookieFromStringToObject(cookies);expect(result).toEqual([{sessionId:"xyz789",Domain:"example.com",Path:"/",HttpOnly:true,Secure:true,SameSite:"strict",Expires:"Wed, 21 Oct 2025 07:28:00 GMT"}])});it("should handle multiple cookies",()=>{const cookies=["token=abc123; Path=/; HttpOnly","theme=dark; Path=/; SameSite=lax"];const result=cookieFromStringToObject(cookies);expect(result).toEqual([{token:"abc123",Path:"/",HttpOnly:true},{theme:"dark",Path:"/",SameSite:"lax"}])});it("should handle URL encoded values",()=>{const cookies=["data=hello%20world; Path=/"];const result=cookieFromStringToObject(cookies);expect(result).toEqual([{data:"hello world",Path:"/"}])});it("should handle boolean flags without values",()=>{const cookies=["token=123; HttpOnly; Secure"];const result=cookieFromStringToObject(cookies);expect(result).toEqual([{token:"123",HttpOnly:true,Secure:true}])})});
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=helpers.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.test.d.ts","sourceRoot":"","sources":["../../../../src/lib/fetcher/helpers.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- import{describe,expect,it}from"vitest";import{buildSearchParams}from"./helpers.js";describe("buildSearchParams",()=>{it("should handle empty query object",()=>{const params=buildSearchParams({});expect(params.toString()).toBe("")});it("should handle single string values",()=>{const params=buildSearchParams({key:"value"});expect(params.toString()).toBe("key=value")});it("should handle multiple string values",()=>{const params=buildSearchParams({key1:"value1",key2:"value2"});expect(params.toString()).toBe("key1=value1&key2=value2")});it("should handle array values",()=>{const params=buildSearchParams({key:["value1","value2"]});expect(params.toString()).toBe("key=value1&key=value2")});it("should skip undefined values",()=>{const params=buildSearchParams({key1:"value1",key2:undefined});expect(params.toString()).toBe("key1=value1")})});
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=auto-form.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auto-form.test.d.ts","sourceRoot":"","sources":["../../../../src/lib/helpers/auto-form.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- import{describe,expect,it}from"vitest";import{z}from"zod";import{getDefaults,getNestedParam,getZodInputParams}from"./auto-form.js";describe("auto-form helpers",()=>{describe("getDefaults",()=>{it("should return empty object when no schema provided",()=>{expect(getDefaults()).toEqual({})});it("should return empty object when schema has no properties",()=>{const schema={};expect(getDefaults(schema)).toEqual({})});it("should extract default values from simple Zod schema",()=>{const zodSchema=z.object({name:z.string().default("John Doe"),age:z.number().default(25),active:z.boolean().default(true)});const jsonSchema=z.toJSONSchema(zodSchema);const result=getDefaults(jsonSchema);expect(result).toEqual({name:"John Doe",age:25,active:true})});it("should handle nested Zod objects with defaults",()=>{const zodSchema=z.object({user:z.object({name:z.string().default("Jane"),settings:z.object({theme:z.string().default("dark"),notifications:z.boolean().default(false)})}),title:z.string().default("Hello")});const jsonSchema=z.toJSONSchema(zodSchema);const result=getDefaults(jsonSchema);expect(result).toEqual({user:{name:"Jane",settings:{theme:"dark",notifications:false}},title:"Hello"})});it("should skip nested objects with no default values",()=>{const zodSchema=z.object({user:z.object({name:z.string(),email:z.string()}),title:z.string().default("Hello")});const jsonSchema=z.toJSONSchema(zodSchema);const result=getDefaults(jsonSchema);expect(result).toEqual({title:"Hello"})});it("should handle mixed properties with and without defaults",()=>{const zodSchema=z.object({name:z.string().default("Test"),email:z.string(),age:z.number().default(30),bio:z.string()});const jsonSchema=z.toJSONSchema(zodSchema);const result=getDefaults(jsonSchema);expect(result).toEqual({name:"Test",age:30})})});describe("getZodInputParams",()=>{it("should return empty object when no schema provided",()=>{expect(getZodInputParams()).toEqual({})});it("should return empty object when schema has no properties",()=>{const schema={};expect(getZodInputParams(schema)).toEqual({})});it("should extract basic string field parameters from Zod schema",()=>{const zodSchema=z.object({name:z.string().min(2).max(50).regex(/^[a-zA-Z]+$/).describe("User name")});const jsonSchema=z.toJSONSchema(zodSchema);const result=getZodInputParams(jsonSchema,["name"]);expect(result).toEqual({name:{type:"text",minLength:2,maxLength:50,pattern:"^[a-zA-Z]+$",description:"User name",required:true}})});it("should handle email format from Zod schema",()=>{const zodSchema=z.object({email:z.email().describe("Email address")});const jsonSchema=z.toJSONSchema(zodSchema);const result=getZodInputParams(jsonSchema,["email"]);expect(result.email).toHaveProperty("type","email");expect(result.email).toHaveProperty("description","Email address");expect(result.email).toHaveProperty("required",true);expect(result.email).toHaveProperty("pattern")});it("should infer password type from field name",()=>{const zodSchema=z.object({password:z.string(),confirmPassword:z.string(),userPassword:z.string()});const jsonSchema=z.toJSONSchema(zodSchema);const result=getZodInputParams(jsonSchema);expect(result.password).toHaveProperty("type","password");expect(result.password).toHaveProperty("required",true);expect(result.confirmPassword).toHaveProperty("type","password");expect(result.confirmPassword).toHaveProperty("required",true);expect(result.userPassword).toHaveProperty("type","password");expect(result.userPassword).toHaveProperty("required",true)});it("should handle number and boolean types from Zod schema",()=>{const zodSchema=z.object({age:z.number(),count:z.number().int(),active:z.boolean()});const jsonSchema=z.toJSONSchema(zodSchema);const result=getZodInputParams(jsonSchema);expect(result.age).toHaveProperty("type","number");expect(result.age).toHaveProperty("required",true);expect(result.count).toHaveProperty("type","number");expect(result.count).toHaveProperty("required",true);expect(result.active).toHaveProperty("type","checkbox");expect(result.active).toHaveProperty("required",true)});it("should handle enum values from Zod schema",()=>{const zodSchema=z.object({role:z.enum(["admin","user","guest"])});const jsonSchema=z.toJSONSchema(zodSchema);const result=getZodInputParams(jsonSchema);expect(result.role).toHaveProperty("type","text");expect(result.role).toHaveProperty("enum",["admin","user","guest"]);expect(result.role).toHaveProperty("required",true)});it("should handle complex password validation",()=>{const zodSchema=z.object({password:z.string().min(8).regex(/(?=.*[a-z])/,"Must contain lowercase").regex(/(?=.*[A-Z])/,"Must contain uppercase").regex(/(?=.*\d)/,"Must contain number")});const jsonSchema=z.toJSONSchema(zodSchema);const result=getZodInputParams(jsonSchema);expect(result.password).toHaveProperty("type","password");expect(result.password).toHaveProperty("minLength",8)});it("should handle nested objects from Zod schema",()=>{const zodSchema=z.object({user:z.object({name:z.string(),email:z.email()}),settings:z.object({theme:z.enum(["light","dark"]),notifications:z.boolean()})});const jsonSchema=z.toJSONSchema(zodSchema);const result=getZodInputParams(jsonSchema,["user"]);expect(result.user).toHaveProperty("name");expect(result.user).toHaveProperty("email");expect(result.settings).toHaveProperty("theme");expect(result.settings).toHaveProperty("notifications")});it("should handle required fields from Zod schema",()=>{const zodSchema=z.object({name:z.string(),email:z.string(),age:z.number().optional()});const jsonSchema=z.toJSONSchema(zodSchema);const result=getZodInputParams(jsonSchema,["name","email"]);expect(result.name).toHaveProperty("required",true);expect(result.email).toHaveProperty("required",true);expect(result.age).not.toHaveProperty("required")});it("should handle optional fields from Zod schema",()=>{const zodSchema=z.object({name:z.string(),email:z.string().optional(),age:z.number().optional()});const jsonSchema=z.toJSONSchema(zodSchema);const result=getZodInputParams(jsonSchema,["name"]);expect(result.name).toHaveProperty("required",true);expect(result.email).not.toHaveProperty("required");expect(result.age).not.toHaveProperty("required")});it("should handle union types from Zod schema",()=>{const zodSchema=z.object({status:z.union([z.literal("active"),z.literal("inactive")]),priority:z.number().or(z.string())});const jsonSchema=z.toJSONSchema(zodSchema);const result=getZodInputParams(jsonSchema);expect(result).toHaveProperty("status");expect(result).toHaveProperty("priority")});it("should handle array types from Zod schema",()=>{const zodSchema=z.object({tags:z.array(z.string()).min(2).max(5),guests:z.array(z.object({name:z.string().min(2),email:z.email()}))});const jsonSchema=z.toJSONSchema(zodSchema);const result=getZodInputParams(jsonSchema);expect(result).toHaveProperty("tags");expect(result.tags).toEqual({required:true,minItems:2,maxItems:5,itemParams:{"":{type:"text"}}});expect(result).toHaveProperty("guests");expect(result.guests).toEqual({required:true,itemParams:{name:{type:"text",required:true,minLength:2},email:{type:"email",required:true,pattern:"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}}})});it("should handle nested array types from Zod schema",()=>{const zodSchema=z.object({nestedGuests:z.array(z.array(z.string().min(2))).min(1).max(3)});const jsonSchema=z.toJSONSchema(zodSchema);const result=getZodInputParams(jsonSchema);expect(result).toHaveProperty("nestedGuests");expect(result.nestedGuests).toEqual({required:true,minItems:1,maxItems:3,itemParams:{"":{itemParams:{"":{type:"text",minLength:2}}}}})})});describe("getNestedParam",()=>{const testObj={user:{name:{type:"text",required:true},email:{type:"email"},settings:{theme:{type:"text",enum:["light","dark"]},notifications:{type:"checkbox"}}},title:{type:"text",default:"Hello"},guests:{itemParams:{name:{type:"text",required:true}}}};it("should get top-level properties",()=>{const result=getNestedParam(testObj,"title");expect(result).toEqual({type:"text",default:"Hello"})});it("should get nested properties",()=>{const result=getNestedParam(testObj,"user.name");expect(result).toEqual({type:"text",required:true})});it("should get deeply nested properties",()=>{const result=getNestedParam(testObj,"user.settings.theme");expect(result).toEqual({type:"text",enum:["light","dark"]})});it("should return undefined for missing array params",()=>{const result=getNestedParam(testObj,"guests.itemParams.unknown");expect(result).toBeUndefined()});it("should return undefined for non-existent paths",()=>{expect(getNestedParam(testObj,"nonexistent")).toBeUndefined();expect(getNestedParam(testObj,"user.nonexistent")).toBeUndefined();expect(getNestedParam(testObj,"user.settings.nonexistent")).toBeUndefined()});it("should return undefined for invalid paths",()=>{expect(getNestedParam(testObj,"title.invalid")).toBeUndefined();expect(getNestedParam(testObj,"user.name.invalid")).toBeUndefined()});it("should handle empty path",()=>{const result=getNestedParam(testObj,"");expect(result).toBeUndefined()});it("should handle paths with array values safely",()=>{const objWithArray={items:{enum:["a","b","c"]}};const result=getNestedParam(objWithArray,"items.enum");expect(result).toEqual(["a","b","c"])})})});
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=special-characters.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"special-characters.test.d.ts","sourceRoot":"","sources":["../../../src/lib/special-characters.test.ts"],"names":[],"mappings":""}