nextworks 0.0.1 → 0.1.0-alpha.1

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 (277) hide show
  1. package/README.md +209 -30
  2. package/dist/.gitkeep +0 -0
  3. package/dist/cli_manifests/auth_manifest.json +86 -0
  4. package/dist/cli_manifests/blocks_manifest.json +185 -0
  5. package/dist/cli_manifests/data_manifest.json +51 -0
  6. package/dist/cli_manifests/forms_manifest.json +61 -0
  7. package/dist/commands/admin-posts.d.ts +2 -0
  8. package/dist/commands/admin-posts.d.ts.map +1 -0
  9. package/dist/commands/admin-posts.js +15 -0
  10. package/dist/commands/admin-posts.js.map +1 -0
  11. package/dist/commands/admin-users.d.ts +2 -0
  12. package/dist/commands/admin-users.d.ts.map +1 -0
  13. package/dist/commands/admin-users.js +15 -0
  14. package/dist/commands/admin-users.js.map +1 -0
  15. package/dist/commands/auth-core.d.ts +2 -0
  16. package/dist/commands/auth-core.d.ts.map +1 -0
  17. package/dist/commands/auth-core.js +83 -0
  18. package/dist/commands/auth-core.js.map +1 -0
  19. package/dist/commands/auth-forms.d.ts +2 -0
  20. package/dist/commands/auth-forms.d.ts.map +1 -0
  21. package/dist/commands/auth-forms.js +15 -0
  22. package/dist/commands/auth-forms.js.map +1 -0
  23. package/dist/commands/blocks-options.d.ts +7 -0
  24. package/dist/commands/blocks-options.d.ts.map +1 -0
  25. package/dist/commands/blocks-options.js +19 -0
  26. package/dist/commands/blocks-options.js.map +1 -0
  27. package/dist/commands/blocks.d.ts +7 -0
  28. package/dist/commands/blocks.d.ts.map +1 -0
  29. package/dist/commands/blocks.js +145 -0
  30. package/dist/commands/blocks.js.map +1 -0
  31. package/dist/commands/data.d.ts +3 -0
  32. package/dist/commands/data.d.ts.map +1 -0
  33. package/dist/commands/data.js +88 -0
  34. package/dist/commands/data.js.map +1 -0
  35. package/dist/commands/forms.d.ts +6 -0
  36. package/dist/commands/forms.d.ts.map +1 -0
  37. package/dist/commands/forms.js +107 -0
  38. package/dist/commands/forms.js.map +1 -0
  39. package/dist/commands/remove-auth-core.d.ts +2 -0
  40. package/dist/commands/remove-auth-core.d.ts.map +1 -0
  41. package/dist/commands/remove-auth-core.js +69 -0
  42. package/dist/commands/remove-auth-core.js.map +1 -0
  43. package/dist/commands/remove-blocks.d.ts +2 -0
  44. package/dist/commands/remove-blocks.d.ts.map +1 -0
  45. package/dist/commands/remove-blocks.js +36 -0
  46. package/dist/commands/remove-blocks.js.map +1 -0
  47. package/dist/index.d.ts +3 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +109 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/kits/auth-core/README.md +106 -0
  52. package/dist/kits/auth-core/app/(protected)/dashboard/page.tsx +8 -0
  53. package/dist/kits/auth-core/app/(protected)/layout.tsx +18 -0
  54. package/dist/kits/auth-core/app/(protected)/settings/profile/page.tsx +15 -0
  55. package/dist/kits/auth-core/app/(protected)/settings/profile/profile-form.tsx +114 -0
  56. package/dist/kits/auth-core/app/api/auth/[...nextauth]/route.ts +1 -0
  57. package/dist/kits/auth-core/app/api/auth/forgot-password/route.ts +114 -0
  58. package/dist/kits/auth-core/app/api/auth/providers/route.ts +6 -0
  59. package/dist/kits/auth-core/app/api/auth/reset-password/route.ts +63 -0
  60. package/dist/kits/auth-core/app/api/auth/send-verify-email/route.ts +6 -0
  61. package/dist/kits/auth-core/app/api/signup/route.ts +41 -0
  62. package/dist/kits/auth-core/app/auth/forgot-password/page.tsx +21 -0
  63. package/dist/kits/auth-core/app/auth/login/page.tsx +5 -0
  64. package/dist/kits/auth-core/app/auth/reset-password/page.tsx +187 -0
  65. package/dist/kits/auth-core/app/auth/signup/page.tsx +5 -0
  66. package/dist/kits/auth-core/app/auth/verify-email/page.tsx +11 -0
  67. package/dist/kits/auth-core/components/admin/admin-header.tsx +57 -0
  68. package/dist/kits/auth-core/components/auth/dashboard.tsx +237 -0
  69. package/dist/kits/auth-core/components/auth/forgot-password-form.tsx +90 -0
  70. package/dist/kits/auth-core/components/auth/login-form.tsx +467 -0
  71. package/dist/kits/auth-core/components/auth/logout-button.tsx +50 -0
  72. package/dist/kits/auth-core/components/auth/minimal-logout-button.tsx +40 -0
  73. package/dist/kits/auth-core/components/auth/signup-form.tsx +468 -0
  74. package/dist/kits/auth-core/components/require-auth.tsx +59 -0
  75. package/dist/kits/auth-core/components/session-provider.tsx +11 -0
  76. package/dist/kits/auth-core/components/ui/README.txt +1 -0
  77. package/dist/kits/auth-core/components/ui/button.tsx +55 -0
  78. package/dist/kits/auth-core/components/ui/input.tsx +25 -0
  79. package/dist/kits/auth-core/components/ui/label.tsx +23 -0
  80. package/dist/kits/auth-core/lib/api/errors.ts +14 -0
  81. package/dist/kits/auth-core/lib/auth-helpers.ts +29 -0
  82. package/dist/kits/auth-core/lib/auth.ts +142 -0
  83. package/dist/kits/auth-core/lib/email/dev-transport.ts +42 -0
  84. package/dist/kits/auth-core/lib/email/index.ts +28 -0
  85. package/dist/kits/auth-core/lib/email/provider-smtp.ts +36 -0
  86. package/dist/kits/auth-core/lib/forms/map-errors.ts +11 -0
  87. package/dist/kits/auth-core/lib/hash.ts +6 -0
  88. package/dist/kits/auth-core/lib/prisma.ts +15 -0
  89. package/dist/kits/auth-core/lib/server/result.ts +45 -0
  90. package/dist/kits/auth-core/lib/utils.ts +6 -0
  91. package/dist/kits/auth-core/lib/validation/forms.ts +88 -0
  92. package/dist/kits/auth-core/package-deps.json +19 -0
  93. package/dist/kits/auth-core/prisma/auth-models.prisma +81 -0
  94. package/dist/kits/auth-core/prisma/schema.prisma +81 -0
  95. package/dist/kits/auth-core/scripts/populate-tokenhash.mjs +26 -0
  96. package/dist/kits/auth-core/scripts/promote-admin.mjs +33 -0
  97. package/dist/kits/auth-core/scripts/seed-demo.mjs +40 -0
  98. package/dist/kits/auth-core/types/next-auth.d.ts +25 -0
  99. package/dist/kits/blocks/README.md +53 -0
  100. package/dist/kits/blocks/app/globals.css +175 -0
  101. package/dist/kits/blocks/app/templates/digitalagency/PresetThemeVars.tsx +80 -0
  102. package/dist/kits/blocks/app/templates/digitalagency/README.md +36 -0
  103. package/dist/kits/blocks/app/templates/digitalagency/components/About.tsx +99 -0
  104. package/dist/kits/blocks/app/templates/digitalagency/components/CTA.tsx +74 -0
  105. package/dist/kits/blocks/app/templates/digitalagency/components/Contact.tsx +227 -0
  106. package/dist/kits/blocks/app/templates/digitalagency/components/Footer.tsx +89 -0
  107. package/dist/kits/blocks/app/templates/digitalagency/components/Hero.tsx +90 -0
  108. package/dist/kits/blocks/app/templates/digitalagency/components/Navbar.tsx +168 -0
  109. package/dist/kits/blocks/app/templates/digitalagency/components/NetworkPattern.tsx +297 -0
  110. package/dist/kits/blocks/app/templates/digitalagency/components/Portfolio.tsx +157 -0
  111. package/dist/kits/blocks/app/templates/digitalagency/components/Pricing.tsx +114 -0
  112. package/dist/kits/blocks/app/templates/digitalagency/components/Process.tsx +59 -0
  113. package/dist/kits/blocks/app/templates/digitalagency/components/Services.tsx +55 -0
  114. package/dist/kits/blocks/app/templates/digitalagency/components/Team.tsx +28 -0
  115. package/dist/kits/blocks/app/templates/digitalagency/components/Testimonials.tsx +65 -0
  116. package/dist/kits/blocks/app/templates/digitalagency/page.tsx +38 -0
  117. package/dist/kits/blocks/app/templates/gallery/PresetThemeVars.tsx +85 -0
  118. package/dist/kits/blocks/app/templates/gallery/page.tsx +303 -0
  119. package/dist/kits/blocks/app/templates/productlaunch/PresetThemeVars.tsx +74 -0
  120. package/dist/kits/blocks/app/templates/productlaunch/README.md +55 -0
  121. package/dist/kits/blocks/app/templates/productlaunch/components/About.tsx +178 -0
  122. package/dist/kits/blocks/app/templates/productlaunch/components/CTA.tsx +93 -0
  123. package/dist/kits/blocks/app/templates/productlaunch/components/Contact.tsx +231 -0
  124. package/dist/kits/blocks/app/templates/productlaunch/components/FAQ.tsx +93 -0
  125. package/dist/kits/blocks/app/templates/productlaunch/components/Features.tsx +84 -0
  126. package/dist/kits/blocks/app/templates/productlaunch/components/Footer.tsx +132 -0
  127. package/dist/kits/blocks/app/templates/productlaunch/components/Hero.tsx +89 -0
  128. package/dist/kits/blocks/app/templates/productlaunch/components/Navbar.tsx +162 -0
  129. package/dist/kits/blocks/app/templates/productlaunch/components/Pricing.tsx +106 -0
  130. package/dist/kits/blocks/app/templates/productlaunch/components/ProcessTimeline.tsx +110 -0
  131. package/dist/kits/blocks/app/templates/productlaunch/components/ServicesGrid.tsx +68 -0
  132. package/dist/kits/blocks/app/templates/productlaunch/components/Team.tsx +104 -0
  133. package/dist/kits/blocks/app/templates/productlaunch/components/Testimonials.tsx +89 -0
  134. package/dist/kits/blocks/app/templates/productlaunch/components/TrustBadges.tsx +76 -0
  135. package/dist/kits/blocks/app/templates/productlaunch/page.tsx +45 -0
  136. package/dist/kits/blocks/app/templates/saasdashboard/PresetThemeVars.tsx +80 -0
  137. package/dist/kits/blocks/app/templates/saasdashboard/README.md +38 -0
  138. package/dist/kits/blocks/app/templates/saasdashboard/components/Contact.tsx +176 -0
  139. package/dist/kits/blocks/app/templates/saasdashboard/components/Dashboard.tsx +293 -0
  140. package/dist/kits/blocks/app/templates/saasdashboard/components/FAQ.tsx +55 -0
  141. package/dist/kits/blocks/app/templates/saasdashboard/components/Features.tsx +91 -0
  142. package/dist/kits/blocks/app/templates/saasdashboard/components/Footer.tsx +77 -0
  143. package/dist/kits/blocks/app/templates/saasdashboard/components/Hero.tsx +105 -0
  144. package/dist/kits/blocks/app/templates/saasdashboard/components/Hero_mask.tsx +127 -0
  145. package/dist/kits/blocks/app/templates/saasdashboard/components/Navbar.tsx +159 -0
  146. package/dist/kits/blocks/app/templates/saasdashboard/components/Pricing.tsx +90 -0
  147. package/dist/kits/blocks/app/templates/saasdashboard/components/SmoothScroll.tsx +97 -0
  148. package/dist/kits/blocks/app/templates/saasdashboard/components/Testimonials.tsx +72 -0
  149. package/dist/kits/blocks/app/templates/saasdashboard/components/TrustBadges.tsx +53 -0
  150. package/dist/kits/blocks/app/templates/saasdashboard/page.tsx +39 -0
  151. package/dist/kits/blocks/components/app-providers.tsx +1 -0
  152. package/dist/kits/blocks/components/enhanced-theme-provider.tsx +195 -0
  153. package/dist/kits/blocks/components/sections/About.tsx +291 -0
  154. package/dist/kits/blocks/components/sections/CTA.tsx +258 -0
  155. package/dist/kits/blocks/components/sections/Contact.tsx +267 -0
  156. package/dist/kits/blocks/components/sections/FAQ.tsx +226 -0
  157. package/dist/kits/blocks/components/sections/Features.tsx +269 -0
  158. package/dist/kits/blocks/components/sections/Footer.tsx +302 -0
  159. package/dist/kits/blocks/components/sections/HeroMotion.tsx +307 -0
  160. package/dist/kits/blocks/components/sections/HeroOverlay.tsx +358 -0
  161. package/dist/kits/blocks/components/sections/HeroSplit.tsx +352 -0
  162. package/dist/kits/blocks/components/sections/Navbar.tsx +353 -0
  163. package/dist/kits/blocks/components/sections/Newsletter.tsx +156 -0
  164. package/dist/kits/blocks/components/sections/PortfolioSimple.tsx +550 -0
  165. package/dist/kits/blocks/components/sections/Pricing.tsx +264 -0
  166. package/dist/kits/blocks/components/sections/ProcessTimeline.tsx +325 -0
  167. package/dist/kits/blocks/components/sections/ServicesGrid.tsx +210 -0
  168. package/dist/kits/blocks/components/sections/Team.tsx +309 -0
  169. package/dist/kits/blocks/components/sections/Testimonials.tsx +158 -0
  170. package/dist/kits/blocks/components/sections/TrustBadges.tsx +162 -0
  171. package/dist/kits/blocks/components/theme-provider.tsx +34 -0
  172. package/dist/kits/blocks/components/ui/alert-dialog.tsx +134 -0
  173. package/dist/kits/blocks/components/ui/brand-node.tsx +121 -0
  174. package/dist/kits/blocks/components/ui/button.tsx +122 -0
  175. package/dist/kits/blocks/components/ui/button_bck.tsx +93 -0
  176. package/dist/kits/blocks/components/ui/card.tsx +95 -0
  177. package/dist/kits/blocks/components/ui/checkbox.tsx +30 -0
  178. package/dist/kits/blocks/components/ui/cta-button.tsx +125 -0
  179. package/dist/kits/blocks/components/ui/dropdown-menu.tsx +201 -0
  180. package/dist/kits/blocks/components/ui/feature-card.tsx +91 -0
  181. package/dist/kits/blocks/components/ui/input.tsx +27 -0
  182. package/dist/kits/blocks/components/ui/label.tsx +29 -0
  183. package/dist/kits/blocks/components/ui/pricing-card.tsx +120 -0
  184. package/dist/kits/blocks/components/ui/select.tsx +25 -0
  185. package/dist/kits/blocks/components/ui/skeleton.tsx +13 -0
  186. package/dist/kits/blocks/components/ui/switch.tsx +78 -0
  187. package/dist/kits/blocks/components/ui/table.tsx +98 -0
  188. package/dist/kits/blocks/components/ui/testimonial-card.tsx +108 -0
  189. package/dist/kits/blocks/components/ui/textarea.tsx +26 -0
  190. package/dist/kits/blocks/components/ui/theme-selector.tsx +247 -0
  191. package/dist/kits/blocks/components/ui/theme-toggle.tsx +74 -0
  192. package/dist/kits/blocks/components/ui/toaster.tsx +7 -0
  193. package/dist/kits/blocks/lib/themes.ts +399 -0
  194. package/dist/kits/blocks/lib/themes_old.ts +37 -0
  195. package/dist/kits/blocks/lib/utils.ts +9 -0
  196. package/dist/kits/blocks/next.config.ts +11 -0
  197. package/dist/kits/blocks/notes/THEME_GUIDE.md +29 -0
  198. package/dist/kits/blocks/notes/THEMING_CONVERSION_SUMMARY.md +14 -0
  199. package/dist/kits/blocks/package-deps.json +22 -0
  200. package/dist/kits/blocks/public/placeholders/gallery/hero-pexels-broken-9945014.avif +0 -0
  201. package/dist/kits/blocks/public/placeholders/gallery/pexels-googledeepmind-25626431.jpg +0 -0
  202. package/dist/kits/blocks/public/placeholders/gallery/pexels-googledeepmind-25626432.jpg +0 -0
  203. package/dist/kits/blocks/public/placeholders/gallery/pexels-googledeepmind-25626434.jpg +0 -0
  204. package/dist/kits/blocks/public/placeholders/gallery/pexels-googledeepmind-25626436.jpg +0 -0
  205. package/dist/kits/blocks/public/placeholders/product_launch/feature_1.png +0 -0
  206. package/dist/kits/blocks/public/placeholders/product_launch/feature_2.png +0 -0
  207. package/dist/kits/blocks/public/placeholders/product_launch/feature_3.png +0 -0
  208. package/dist/kits/blocks/public/placeholders/product_launch/feature_4.png +0 -0
  209. package/dist/kits/blocks/public/placeholders/product_launch/hero.png +0 -0
  210. package/dist/kits/blocks/public/placeholders/saas_dashboard/analytics.png +0 -0
  211. package/dist/kits/blocks/public/placeholders/saas_dashboard/chat.png +0 -0
  212. package/dist/kits/blocks/public/placeholders/saas_dashboard/projectBoard.png +0 -0
  213. package/dist/kits/data/.gitkeep +0 -0
  214. package/dist/kits/data/README.md +104 -0
  215. package/dist/kits/data/app/(protected)/admin/posts/page.tsx +5 -0
  216. package/dist/kits/data/app/(protected)/admin/users/page.tsx +5 -0
  217. package/dist/kits/data/app/api/posts/[id]/route.ts +83 -0
  218. package/dist/kits/data/app/api/posts/route.ts +138 -0
  219. package/dist/kits/data/app/api/seed-demo/route.ts +45 -0
  220. package/dist/kits/data/app/api/users/[id]/route.ts +127 -0
  221. package/dist/kits/data/app/api/users/check-email/route.ts +18 -0
  222. package/dist/kits/data/app/api/users/check-unique/route.ts +27 -0
  223. package/dist/kits/data/app/api/users/route.ts +79 -0
  224. package/dist/kits/data/app/examples/demo/README.md +4 -0
  225. package/dist/kits/data/app/examples/demo/create-post-form.tsx +106 -0
  226. package/dist/kits/data/app/examples/demo/page.tsx +118 -0
  227. package/dist/kits/data/app/examples/demo/seed-demo-button.tsx +37 -0
  228. package/dist/kits/data/components/admin/posts-manager.tsx +719 -0
  229. package/dist/kits/data/components/admin/users-manager.tsx +432 -0
  230. package/dist/kits/data/lib/prisma.ts +15 -0
  231. package/dist/kits/data/lib/server/result.ts +90 -0
  232. package/dist/kits/data/package-deps.json +11 -0
  233. package/dist/kits/data/scripts/seed-demo.mjs +41 -0
  234. package/dist/kits/forms/.gitkeep +0 -0
  235. package/dist/kits/forms/README.md +49 -0
  236. package/dist/kits/forms/app/.gitkeep +0 -0
  237. package/dist/kits/forms/app/api/wizard/route.ts +71 -0
  238. package/dist/kits/forms/app/examples/forms/basic/page.tsx +124 -0
  239. package/dist/kits/forms/app/examples/forms/server-action/form-client.tsx +28 -0
  240. package/dist/kits/forms/app/examples/forms/server-action/page.tsx +71 -0
  241. package/dist/kits/forms/app/examples/forms/wizard/page.tsx +15 -0
  242. package/dist/kits/forms/app/examples/forms/wizard/wizard-client.tsx +2 -0
  243. package/dist/kits/forms/components/.gitkeep +0 -0
  244. package/dist/kits/forms/components/examples/wizard-client.tsx +231 -0
  245. package/dist/kits/forms/components/hooks/useCheckUnique.ts +79 -0
  246. package/dist/kits/forms/components/ui/button.tsx +122 -0
  247. package/dist/kits/forms/components/ui/checkbox.tsx +30 -0
  248. package/dist/kits/forms/components/ui/form/context.ts +33 -0
  249. package/dist/kits/forms/components/ui/form/form-control.tsx +28 -0
  250. package/dist/kits/forms/components/ui/form/form-description.tsx +22 -0
  251. package/dist/kits/forms/components/ui/form/form-field.tsx +36 -0
  252. package/dist/kits/forms/components/ui/form/form-item.tsx +21 -0
  253. package/dist/kits/forms/components/ui/form/form-label.tsx +24 -0
  254. package/dist/kits/forms/components/ui/form/form-message.tsx +29 -0
  255. package/dist/kits/forms/components/ui/form/form.tsx +26 -0
  256. package/dist/kits/forms/components/ui/input.tsx +27 -0
  257. package/dist/kits/forms/components/ui/label.tsx +29 -0
  258. package/dist/kits/forms/components/ui/select.tsx +25 -0
  259. package/dist/kits/forms/components/ui/switch.tsx +78 -0
  260. package/dist/kits/forms/components/ui/textarea.tsx +26 -0
  261. package/dist/kits/forms/lib/.gitkeep +0 -0
  262. package/dist/kits/forms/lib/forms/map-errors.ts +29 -0
  263. package/dist/kits/forms/lib/prisma.ts +16 -0
  264. package/dist/kits/forms/lib/utils.ts +9 -0
  265. package/dist/kits/forms/lib/validation/forms.ts +88 -0
  266. package/dist/kits/forms/lib/validation/wizard.ts +32 -0
  267. package/dist/kits/forms/package-deps.json +17 -0
  268. package/dist/utils/file-operations.d.ts +18 -0
  269. package/dist/utils/file-operations.d.ts.map +1 -0
  270. package/dist/utils/file-operations.js +327 -0
  271. package/dist/utils/file-operations.js.map +1 -0
  272. package/dist/utils/installation-tracker.d.ts +26 -0
  273. package/dist/utils/installation-tracker.d.ts.map +1 -0
  274. package/dist/utils/installation-tracker.js +98 -0
  275. package/dist/utils/installation-tracker.js.map +1 -0
  276. package/package.json +51 -21
  277. package/index.js +0 -1
@@ -0,0 +1,88 @@
1
+ import { z } from "zod";
2
+
3
+ export const signupSchema = z.object({
4
+ name: z.string().min(2, "Name must be at least 2 characters"),
5
+ email: z.string().email("Invalid email address"),
6
+ password: z.string().min(6, "Password must be at least 6 characters"),
7
+ });
8
+
9
+ export const loginSchema = z.object({
10
+ email: z.string().email("Invalid email address"),
11
+ password: z.string().min(6, "Password must be at least 6 characters"),
12
+ });
13
+
14
+ // Request body for forgot-password endpoint
15
+ export const forgotPasswordSchema = z.object({
16
+ email: z.string().email("Invalid email address"),
17
+ });
18
+
19
+ // Reset password schema (token + new password + confirm)
20
+ export const resetPasswordSchema = z
21
+ .object({
22
+ token: z.string().min(1, "Token is required"),
23
+ password: z.string().min(6, "Password must be at least 6 characters"),
24
+ confirmPassword: z.string().min(6, "Confirm password is required"),
25
+ })
26
+ .refine((data) => data.password === data.confirmPassword, {
27
+ path: ["confirmPassword"],
28
+ message: "Passwords do not match",
29
+ });
30
+
31
+ export const contactSchema = z.object({
32
+ name: z.string().min(2, "Name must be at least 2 characters"),
33
+ email: z.string().email("Invalid email address"),
34
+ subject: z.string().min(5, "Subject must be at least 5 characters"),
35
+ message: z.string().min(10, "Message must be at least 10 characters"),
36
+ });
37
+
38
+ export const newsletterSchema = z.object({
39
+ name: z.string().optional(),
40
+ email: z.string().email("Invalid email address"),
41
+ });
42
+
43
+ export const userSchema = z.object({
44
+ email: z.string().email("Invalid email address"),
45
+ name: z
46
+ .string()
47
+ .min(2, "Name must be at least 2 characters")
48
+ .optional()
49
+ .or(z.literal("")),
50
+ });
51
+
52
+ export const userUpdateSchema = z.object({
53
+ email: z.string().email("Invalid email address").optional(),
54
+ name: z
55
+ .string()
56
+ .min(2, "Name must be at least 2 characters")
57
+ .optional()
58
+ .or(z.literal("")),
59
+ image: z.string().optional().or(z.literal("")),
60
+ password: z
61
+ .string()
62
+ .min(6, "Password must be at least 6 characters")
63
+ .optional()
64
+ .or(z.literal("")),
65
+ emailVerified: z
66
+ .union([z.date(), z.string().transform((s) => new Date(s)), z.null()])
67
+ .optional(),
68
+ });
69
+
70
+ export const postSchema = z.object({
71
+ title: z
72
+ .string()
73
+ .min(1, "Title is required")
74
+ .min(3, "Title must be at least 3 characters"),
75
+ content: z.string().optional().or(z.literal("")),
76
+ authorId: z.string().min(1, "Author ID is required"),
77
+ // published is optional in forms/API - defaults to false in the DB
78
+ published: z.boolean().optional(),
79
+ });
80
+
81
+ export type NewsletterFormValues = z.infer<typeof newsletterSchema>;
82
+ export type ContactFormValues = z.infer<typeof contactSchema>;
83
+ export type SignupFormValues = z.infer<typeof signupSchema>;
84
+ export type LoginFormValues = z.infer<typeof loginSchema>;
85
+ export type UserFormValues = z.infer<typeof userSchema>;
86
+ export type PostFormValues = z.infer<typeof postSchema>;
87
+ export type ForgotPasswordFormValues = z.infer<typeof forgotPasswordSchema>;
88
+ export type ResetPasswordFormValues = z.infer<typeof resetPasswordSchema>;
@@ -0,0 +1,32 @@
1
+ import { z } from "zod";
2
+
3
+ export const step1Schema = z.object({
4
+ title: z.string().min(3, "Title must be at least 3 characters"),
5
+ slug: z.string().optional().or(z.literal("")),
6
+ });
7
+
8
+ export const step2Schema = z.object({
9
+ content: z.string().min(10, "Content must be at least 10 characters"),
10
+ excerpt: z.string().optional().or(z.literal("")),
11
+ });
12
+
13
+ export const step3Schema = z.object({
14
+ visibility: z.enum(["public", "private"]).default("public"),
15
+ tags: z.string().optional().or(z.literal("")),
16
+ });
17
+
18
+ export const wizardClientSchema = step1Schema
19
+ .merge(step2Schema)
20
+ .merge(step3Schema);
21
+ export type WizardClientValues = z.infer<typeof wizardClientSchema>;
22
+
23
+ // Server-side minimal schema for creating the Post (what we actually persist)
24
+ export const wizardServerSchema = z.object({
25
+ title: z.string().min(3, "Title must be at least 3 characters"),
26
+ slug: z.string().optional().or(z.literal("")),
27
+ content: z.string().min(1, "Content is required"),
28
+ excerpt: z.string().optional().or(z.literal("")),
29
+ visibility: z.enum(["public", "private"]).default("public"),
30
+ tags: z.string().optional().or(z.literal("")),
31
+ });
32
+ export type WizardServerValues = z.infer<typeof wizardServerSchema>;
@@ -0,0 +1,17 @@
1
+ {
2
+ "dependencies": {
3
+ "react-hook-form": "^7.53.0",
4
+ "@hookform/resolvers": "^3.9.0",
5
+ "zod": "^3.23.8",
6
+ "sonner": "^2.0.7",
7
+ "clsx": "^2.1.1",
8
+ "class-variance-authority": "^0.7.1",
9
+ "@radix-ui/react-slot": "^1.2.3",
10
+ "@radix-ui/react-label": "^2.1.7",
11
+ "tailwind-merge": "^3.3.1",
12
+ "@prisma/client": "^5.18.0"
13
+ },
14
+ "devDependencies": {
15
+ "prisma": "^5.18.0"
16
+ }
17
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Resolve a runtime asset path. Prefer the compiled dist folder (which is
3
+ * what we ship to consumers), and fall back to the package root for local dev.
4
+ */
5
+ export declare function resolveAssetPath(...segments: string[]): string;
6
+ export declare function copyFiles(sourceDir: string, targetDir: string, files: string[]): Promise<void>;
7
+ export declare function fileExists(filePath: string): Promise<boolean>;
8
+ export declare function readJsonFile(filePath: string): Promise<any>;
9
+ export declare function writeJsonFile(filePath: string, data: any): Promise<void>;
10
+ export declare function updatePackageJson(deps: any): Promise<void>;
11
+ export declare function updateLayoutFile(): Promise<void>;
12
+ export declare function updateLayoutWithAppProviders(): Promise<void>;
13
+ export declare function removeFiles(files: string[]): Promise<void>;
14
+ export declare function removeEmptyFolders(files: string[]): Promise<void>;
15
+ export declare function removePackageDeps(deps: any): Promise<void>;
16
+ export declare function removePackageDepsSmart(depsToRemove: string[], devDepsToRemove: string[]): Promise<void>;
17
+ export declare function revertLayoutFile(): Promise<void>;
18
+ //# sourceMappingURL=file-operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-operations.d.ts","sourceRoot":"","sources":["../../src/utils/file-operations.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAW9D;AAED,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAOjE;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG,GACR,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BhE;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAsDtD;AAED,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CAgElE;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAWhE;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0EvE;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BhE;AAED,wBAAsB,sBAAsB,CAC1C,YAAY,EAAE,MAAM,EAAE,EACtB,eAAe,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAwBtD"}
@@ -0,0 +1,327 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.resolveAssetPath = resolveAssetPath;
7
+ exports.copyFiles = copyFiles;
8
+ exports.fileExists = fileExists;
9
+ exports.readJsonFile = readJsonFile;
10
+ exports.writeJsonFile = writeJsonFile;
11
+ exports.updatePackageJson = updatePackageJson;
12
+ exports.updateLayoutFile = updateLayoutFile;
13
+ exports.updateLayoutWithAppProviders = updateLayoutWithAppProviders;
14
+ exports.removeFiles = removeFiles;
15
+ exports.removeEmptyFolders = removeEmptyFolders;
16
+ exports.removePackageDeps = removePackageDeps;
17
+ exports.removePackageDepsSmart = removePackageDepsSmart;
18
+ exports.revertLayoutFile = revertLayoutFile;
19
+ const fs_extra_1 = __importDefault(require("fs-extra"));
20
+ const path_1 = __importDefault(require("path"));
21
+ /**
22
+ * Resolve a runtime asset path. Prefer the compiled dist folder (which is
23
+ * what we ship to consumers), and fall back to the package root for local dev.
24
+ */
25
+ function resolveAssetPath(...segments) {
26
+ // __dirname here is typically:
27
+ // - dist/utils at runtime for consumers
28
+ // - src/utils during local development
29
+ const distRoot = path_1.default.resolve(__dirname, "..");
30
+ const candidateDist = path_1.default.join(distRoot, ...segments);
31
+ if (fs_extra_1.default.existsSync(candidateDist))
32
+ return candidateDist;
33
+ // Fallback to the package root (useful when running with ts-node locally)
34
+ const pkgRoot = path_1.default.resolve(__dirname, "..", "..");
35
+ return path_1.default.join(pkgRoot, ...segments);
36
+ }
37
+ async function copyFiles(sourceDir, targetDir, files) {
38
+ for (const file of files) {
39
+ const sourcePath = path_1.default.join(sourceDir, file);
40
+ const targetPath = path_1.default.join(targetDir, file);
41
+ // Ensure target directory exists
42
+ await fs_extra_1.default.ensureDir(path_1.default.dirname(targetPath));
43
+ // Copy file
44
+ await fs_extra_1.default.copy(sourcePath, targetPath);
45
+ console.log(`✓ Created ${file}`);
46
+ }
47
+ }
48
+ async function fileExists(filePath) {
49
+ try {
50
+ await fs_extra_1.default.access(filePath);
51
+ return true;
52
+ }
53
+ catch {
54
+ return false;
55
+ }
56
+ }
57
+ async function readJsonFile(filePath) {
58
+ try {
59
+ const content = await fs_extra_1.default.readFile(filePath, "utf-8");
60
+ return JSON.parse(content);
61
+ }
62
+ catch (error) {
63
+ throw new Error(`Failed to read JSON file ${filePath}: ${error}`);
64
+ }
65
+ }
66
+ async function writeJsonFile(filePath, data) {
67
+ try {
68
+ await fs_extra_1.default.writeFile(filePath, JSON.stringify(data, null, 2) + "\n");
69
+ }
70
+ catch (error) {
71
+ throw new Error(`Failed to write JSON file ${filePath}: ${error}`);
72
+ }
73
+ }
74
+ async function updatePackageJson(deps) {
75
+ const packageJsonPath = "package.json";
76
+ if (!(await fileExists(packageJsonPath))) {
77
+ throw new Error("package.json not found. Make sure you are in a Next.js project root.");
78
+ }
79
+ const packageJson = await readJsonFile(packageJsonPath);
80
+ // Merge dependencies
81
+ if (deps.dependencies) {
82
+ packageJson.dependencies = {
83
+ ...packageJson.dependencies,
84
+ ...deps.dependencies,
85
+ };
86
+ }
87
+ if (deps.devDependencies) {
88
+ packageJson.devDependencies = {
89
+ ...packageJson.devDependencies,
90
+ ...deps.devDependencies,
91
+ };
92
+ }
93
+ await writeJsonFile(packageJsonPath, packageJson);
94
+ console.log("✓ Updated package.json");
95
+ }
96
+ async function updateLayoutFile() {
97
+ const layoutPath = "app/layout.tsx";
98
+ if (!(await fileExists(layoutPath))) {
99
+ console.log("⚠️ app/layout.tsx not found. You may need to manually add SessionProvider.");
100
+ return;
101
+ }
102
+ let content = await fs_extra_1.default.readFile(layoutPath, "utf-8");
103
+ // Check if SessionProvider is already imported
104
+ if (content.includes("AppSessionProvider")) {
105
+ console.log("⚠️ SessionProvider already exists in layout.tsx");
106
+ return;
107
+ }
108
+ // Add import after the last import statement
109
+ const importRegex = /import\s+.*?from\s+["'].*?["'];?\s*$/gm;
110
+ const imports = content.match(importRegex);
111
+ if (imports && imports.length > 0) {
112
+ const lastImport = imports[imports.length - 1];
113
+ const lastImportIndex = content.lastIndexOf(lastImport);
114
+ const insertIndex = lastImportIndex + lastImport.length;
115
+ content =
116
+ content.slice(0, insertIndex) +
117
+ '\nimport AppSessionProvider from "@/components/session-provider";' +
118
+ content.slice(insertIndex);
119
+ }
120
+ else {
121
+ // Fallback: add import at the top
122
+ content =
123
+ 'import AppSessionProvider from "@/components/session-provider";\n' +
124
+ content;
125
+ }
126
+ // Wrap the entire body content with SessionProvider
127
+ content = content.replace(/<body[^>]*>([\s\S]*?)<\/body>/, (match, bodyContent) => {
128
+ if (bodyContent.includes("<AppSessionProvider>")) {
129
+ return match; // Already wrapped
130
+ }
131
+ // Wrap the entire body content
132
+ const wrappedBodyContent = `<AppSessionProvider>${bodyContent}</AppSessionProvider>`;
133
+ return match.replace(bodyContent, wrappedBodyContent);
134
+ });
135
+ await fs_extra_1.default.writeFile(layoutPath, content);
136
+ console.log("✓ Updated app/layout.tsx with SessionProvider");
137
+ }
138
+ async function updateLayoutWithAppProviders() {
139
+ const layoutPath = "app/layout.tsx";
140
+ if (!(await fileExists(layoutPath))) {
141
+ console.log("⚠️ app/layout.tsx not found. You may need to manually add AppProviders.");
142
+ return;
143
+ }
144
+ let content = await fs_extra_1.default.readFile(layoutPath, "utf-8");
145
+ // Collect existing import statements
146
+ const importRegex = /import\s+.*?from\s+["'].*?["'];?\s*$/gm;
147
+ const imports = content.match(importRegex) ?? [];
148
+ const lastImport = imports[imports.length - 1] ?? "";
149
+ const lastImportIndex = lastImport
150
+ ? content.lastIndexOf(lastImport) + lastImport.length
151
+ : 0;
152
+ const ensureImport = (importLine) => {
153
+ if (!content.includes(importLine)) {
154
+ content =
155
+ content.slice(0, lastImportIndex) +
156
+ (lastImportIndex ? "\n" : "") +
157
+ importLine +
158
+ content.slice(lastImportIndex);
159
+ }
160
+ };
161
+ // Ensure imports for AppProviders and AppToaster only (no auth/session here)
162
+ ensureImport('import AppProviders from "@/components/app-providers";');
163
+ ensureImport('import AppToaster from "@/components/ui/toaster";');
164
+ // Add suppressHydrationWarning to <html> tag if not present
165
+ content = content.replace(/<html([^>]*)>/, (match, attrs) => {
166
+ if (attrs.includes("suppressHydrationWarning"))
167
+ return match;
168
+ return `<html${attrs} suppressHydrationWarning>`;
169
+ });
170
+ // Wrap the entire body content with AppProviders and ensure AppToaster is rendered
171
+ content = content.replace(/<body[^>]*>([\s\S]*?)<\/body>/, (match, bodyContent) => {
172
+ let inner = bodyContent.trim();
173
+ // Ensure children are inside AppProviders
174
+ if (!inner.includes("<AppProviders")) {
175
+ inner = `<AppProviders>\n${inner}\n</AppProviders>`;
176
+ }
177
+ // Ensure <AppToaster /> is present inside providers
178
+ if (!inner.includes("<AppToaster")) {
179
+ inner = inner.replace(/(<\/AppProviders>)/, ` <AppToaster />\n$1`);
180
+ }
181
+ return match.replace(bodyContent, `\n${inner}\n`);
182
+ });
183
+ await fs_extra_1.default.writeFile(layoutPath, content);
184
+ console.log("✓ Updated app/layout.tsx with AppProviders, AppToaster, and suppressHydrationWarning on <html>");
185
+ }
186
+ async function removeFiles(files) {
187
+ for (const file of files) {
188
+ const filePath = path_1.default.join(process.cwd(), file);
189
+ if (await fileExists(filePath)) {
190
+ await fs_extra_1.default.remove(filePath);
191
+ console.log(`✓ Removed ${file}`);
192
+ }
193
+ else {
194
+ console.log(`⚠️ File not found: ${file}`);
195
+ }
196
+ }
197
+ }
198
+ async function removeEmptyFolders(files) {
199
+ // Folders that should never be removed (standard Next.js structure)
200
+ const protectedFolders = new Set([
201
+ "app",
202
+ "app/api",
203
+ "public",
204
+ "src",
205
+ "pages",
206
+ "components",
207
+ "lib",
208
+ "types",
209
+ "styles",
210
+ "stylesheets",
211
+ "assets",
212
+ "static",
213
+ ]);
214
+ // Get unique parent directories from the files
215
+ const parentDirs = new Set();
216
+ files.forEach((file) => {
217
+ const dir = path_1.default.dirname(file);
218
+ if (dir !== ".") {
219
+ parentDirs.add(dir);
220
+ }
221
+ });
222
+ // Also add all parent directories up the tree
223
+ const allParentDirs = new Set();
224
+ parentDirs.forEach((dir) => {
225
+ allParentDirs.add(dir);
226
+ // Add all parent directories up the tree
227
+ let currentDir = dir;
228
+ while (currentDir !== "." && currentDir !== "") {
229
+ const parent = path_1.default.dirname(currentDir);
230
+ if (parent !== "." && parent !== currentDir) {
231
+ allParentDirs.add(parent);
232
+ currentDir = parent;
233
+ }
234
+ else {
235
+ break;
236
+ }
237
+ }
238
+ });
239
+ // Filter out protected folders
240
+ const foldersToCheck = Array.from(allParentDirs).filter((dir) => !protectedFolders.has(dir));
241
+ // Sort by depth (deepest first) to remove nested folders first
242
+ const sortedDirs = foldersToCheck.sort((a, b) => b.split("/").length - a.split("/").length);
243
+ for (const dir of sortedDirs) {
244
+ const dirPath = path_1.default.join(process.cwd(), dir);
245
+ try {
246
+ // Check if directory exists and is empty
247
+ if (await fs_extra_1.default.pathExists(dirPath)) {
248
+ const contents = await fs_extra_1.default.readdir(dirPath);
249
+ if (contents.length === 0) {
250
+ await fs_extra_1.default.remove(dirPath);
251
+ console.log(`✓ Removed empty folder: ${dir}`);
252
+ }
253
+ else {
254
+ console.log(`ℹ️ Kept non-empty folder: ${dir}`);
255
+ }
256
+ }
257
+ }
258
+ catch (error) {
259
+ console.log(`⚠️ Could not check/remove folder: ${dir}`);
260
+ }
261
+ }
262
+ }
263
+ async function removePackageDeps(deps) {
264
+ const packageJsonPath = "package.json";
265
+ if (!(await fileExists(packageJsonPath))) {
266
+ console.log("⚠️ package.json not found");
267
+ return;
268
+ }
269
+ const packageJson = await readJsonFile(packageJsonPath);
270
+ // Remove dependencies
271
+ if (deps.dependencies) {
272
+ for (const dep of Object.keys(deps.dependencies)) {
273
+ if (packageJson.dependencies && packageJson.dependencies[dep]) {
274
+ delete packageJson.dependencies[dep];
275
+ console.log(`✓ Removed dependency: ${dep}`);
276
+ }
277
+ }
278
+ }
279
+ if (deps.devDependencies) {
280
+ for (const dep of Object.keys(deps.devDependencies)) {
281
+ if (packageJson.devDependencies && packageJson.devDependencies[dep]) {
282
+ delete packageJson.devDependencies[dep];
283
+ console.log(`✓ Removed devDependency: ${dep}`);
284
+ }
285
+ }
286
+ }
287
+ await writeJsonFile(packageJsonPath, packageJson);
288
+ console.log("✓ Updated package.json");
289
+ }
290
+ async function removePackageDepsSmart(depsToRemove, devDepsToRemove) {
291
+ const packageJsonPath = "package.json";
292
+ if (!(await fileExists(packageJsonPath))) {
293
+ console.log("⚠️ package.json not found");
294
+ return;
295
+ }
296
+ const packageJson = await readJsonFile(packageJsonPath);
297
+ // Remove only the specified dependencies
298
+ depsToRemove.forEach((dep) => {
299
+ if (packageJson.dependencies && packageJson.dependencies[dep]) {
300
+ delete packageJson.dependencies[dep];
301
+ console.log(`✓ Removed dependency: ${dep}`);
302
+ }
303
+ });
304
+ devDepsToRemove.forEach((dep) => {
305
+ if (packageJson.devDependencies && packageJson.devDependencies[dep]) {
306
+ delete packageJson.devDependencies[dep];
307
+ console.log(`✓ Removed devDependency: ${dep}`);
308
+ }
309
+ });
310
+ await writeJsonFile(packageJsonPath, packageJson);
311
+ console.log("✓ Updated package.json");
312
+ }
313
+ async function revertLayoutFile() {
314
+ const layoutPath = "app/layout.tsx";
315
+ if (!(await fileExists(layoutPath))) {
316
+ console.log("⚠️ app/layout.tsx not found");
317
+ return;
318
+ }
319
+ let content = await fs_extra_1.default.readFile(layoutPath, "utf-8");
320
+ // Remove SessionProvider import
321
+ content = content.replace(/\nimport AppSessionProvider from "@\/components\/session-provider";/g, "");
322
+ // Remove SessionProvider wrapper
323
+ content = content.replace(/<AppSessionProvider>([\s\S]*?)<\/AppSessionProvider>/g, "$1");
324
+ await fs_extra_1.default.writeFile(layoutPath, content);
325
+ console.log("✓ Reverted app/layout.tsx (removed SessionProvider)");
326
+ }
327
+ //# sourceMappingURL=file-operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-operations.js","sourceRoot":"","sources":["../../src/utils/file-operations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ interface InstalledKit {
2
+ name: string;
3
+ dependencies: string[];
4
+ devDependencies: string[];
5
+ files: string[];
6
+ installedAt: string;
7
+ }
8
+ interface NextworksConfig {
9
+ installedKits: InstalledKit[];
10
+ version: string;
11
+ }
12
+ export declare function getLpkConfig(): Promise<NextworksConfig>;
13
+ export declare function saveLpkConfig(config: NextworksConfig): Promise<void>;
14
+ export declare function addInstalledKit(kitName: string, dependencies: string[], devDependencies: string[], files: string[]): Promise<void>;
15
+ export declare function removeInstalledKit(kitName: string): Promise<void>;
16
+ export declare function getInstalledKits(): Promise<string[]>;
17
+ export declare function getSharedDependencies(): Promise<{
18
+ dependencies: string[];
19
+ devDependencies: string[];
20
+ }>;
21
+ export declare function getSafeToRemoveDependencies(kitName: string): Promise<{
22
+ dependencies: string[];
23
+ devDependencies: string[];
24
+ }>;
25
+ export {};
26
+ //# sourceMappingURL=installation-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installation-tracker.d.ts","sourceRoot":"","sources":["../../src/utils/installation-tracker.ts"],"names":[],"mappings":"AAGA,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,eAAe;IACvB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,wBAAsB,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC,CAW7D;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAI1E;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EAAE,EACtB,eAAe,EAAE,MAAM,EAAE,EACzB,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMvE;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAG1D;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC;IACrD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC,CAsCD;AAED,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1E,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC,CAuBD"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getLpkConfig = getLpkConfig;
7
+ exports.saveLpkConfig = saveLpkConfig;
8
+ exports.addInstalledKit = addInstalledKit;
9
+ exports.removeInstalledKit = removeInstalledKit;
10
+ exports.getInstalledKits = getInstalledKits;
11
+ exports.getSharedDependencies = getSharedDependencies;
12
+ exports.getSafeToRemoveDependencies = getSafeToRemoveDependencies;
13
+ const fs_extra_1 = __importDefault(require("fs-extra"));
14
+ const path_1 = __importDefault(require("path"));
15
+ const CONFIG_FILE = ".nextworks/config.json";
16
+ async function getLpkConfig() {
17
+ const configPath = path_1.default.join(process.cwd(), CONFIG_FILE);
18
+ if (await fs_extra_1.default.pathExists(configPath)) {
19
+ return await fs_extra_1.default.readJson(configPath);
20
+ }
21
+ return {
22
+ installedKits: [],
23
+ version: "0.1.0",
24
+ };
25
+ }
26
+ async function saveLpkConfig(config) {
27
+ const configPath = path_1.default.join(process.cwd(), CONFIG_FILE);
28
+ await fs_extra_1.default.ensureDir(path_1.default.dirname(configPath));
29
+ await fs_extra_1.default.writeJson(configPath, config, { spaces: 2 });
30
+ }
31
+ async function addInstalledKit(kitName, dependencies, devDependencies, files) {
32
+ const config = await getLpkConfig();
33
+ // Remove existing kit if it exists (for reinstall)
34
+ config.installedKits = config.installedKits.filter((kit) => kit.name !== kitName);
35
+ // Add new kit
36
+ config.installedKits.push({
37
+ name: kitName,
38
+ dependencies,
39
+ devDependencies,
40
+ files,
41
+ installedAt: new Date().toISOString(),
42
+ });
43
+ await saveLpkConfig(config);
44
+ }
45
+ async function removeInstalledKit(kitName) {
46
+ const config = await getLpkConfig();
47
+ config.installedKits = config.installedKits.filter((kit) => kit.name !== kitName);
48
+ await saveLpkConfig(config);
49
+ }
50
+ async function getInstalledKits() {
51
+ const config = await getLpkConfig();
52
+ return config.installedKits.map((kit) => kit.name);
53
+ }
54
+ async function getSharedDependencies() {
55
+ const config = await getLpkConfig();
56
+ const allDeps = new Set();
57
+ const allDevDeps = new Set();
58
+ // Collect all dependencies from all kits
59
+ config.installedKits.forEach((kit) => {
60
+ kit.dependencies.forEach((dep) => allDeps.add(dep));
61
+ kit.devDependencies.forEach((dep) => allDevDeps.add(dep));
62
+ });
63
+ // Find dependencies that appear in multiple kits
64
+ const sharedDeps = new Set();
65
+ const sharedDevDeps = new Set();
66
+ allDeps.forEach((dep) => {
67
+ const kitCount = config.installedKits.filter((kit) => kit.dependencies.includes(dep)).length;
68
+ if (kitCount > 1) {
69
+ sharedDeps.add(dep);
70
+ }
71
+ });
72
+ allDevDeps.forEach((dep) => {
73
+ const kitCount = config.installedKits.filter((kit) => kit.devDependencies.includes(dep)).length;
74
+ if (kitCount > 1) {
75
+ sharedDevDeps.add(dep);
76
+ }
77
+ });
78
+ return {
79
+ dependencies: Array.from(sharedDeps),
80
+ devDependencies: Array.from(sharedDevDeps),
81
+ };
82
+ }
83
+ async function getSafeToRemoveDependencies(kitName) {
84
+ const config = await getLpkConfig();
85
+ const kit = config.installedKits.find((k) => k.name === kitName);
86
+ if (!kit) {
87
+ return { dependencies: [], devDependencies: [] };
88
+ }
89
+ const shared = await getSharedDependencies();
90
+ // Only remove dependencies that are NOT shared with other kits
91
+ const safeToRemoveDeps = kit.dependencies.filter((dep) => !shared.dependencies.includes(dep));
92
+ const safeToRemoveDevDeps = kit.devDependencies.filter((dep) => !shared.devDependencies.includes(dep));
93
+ return {
94
+ dependencies: safeToRemoveDeps,
95
+ devDependencies: safeToRemoveDevDeps,
96
+ };
97
+ }
98
+ //# sourceMappingURL=installation-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installation-tracker.js","sourceRoot":"","sources":["../../src/utils/installation-tracker.ts"],"names":[],"mappings":"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"}