create-nexo 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +185 -0
  3. package/dist/api/index.d.ts +196 -0
  4. package/dist/api/index.d.ts.map +1 -0
  5. package/dist/api/index.js +390 -0
  6. package/dist/api/index.js.map +1 -0
  7. package/dist/bin/nexo.d.ts +3 -0
  8. package/dist/bin/nexo.d.ts.map +1 -0
  9. package/dist/bin/nexo.js +427 -0
  10. package/dist/bin/nexo.js.map +1 -0
  11. package/dist/configurators/core/framework.d.ts +3 -0
  12. package/dist/configurators/core/framework.d.ts.map +1 -0
  13. package/dist/configurators/core/framework.js +56 -0
  14. package/dist/configurators/core/framework.js.map +1 -0
  15. package/dist/configurators/core/index.d.ts +4 -0
  16. package/dist/configurators/core/index.d.ts.map +1 -0
  17. package/dist/configurators/core/index.js +4 -0
  18. package/dist/configurators/core/index.js.map +1 -0
  19. package/dist/configurators/core/language.d.ts +3 -0
  20. package/dist/configurators/core/language.d.ts.map +1 -0
  21. package/dist/configurators/core/language.js +59 -0
  22. package/dist/configurators/core/language.js.map +1 -0
  23. package/dist/configurators/core/variant.d.ts +3 -0
  24. package/dist/configurators/core/variant.d.ts.map +1 -0
  25. package/dist/configurators/core/variant.js +22 -0
  26. package/dist/configurators/core/variant.js.map +1 -0
  27. package/dist/configurators/index.d.ts +5 -0
  28. package/dist/configurators/index.d.ts.map +1 -0
  29. package/dist/configurators/index.js +6 -0
  30. package/dist/configurators/index.js.map +1 -0
  31. package/dist/configurators/project/auth.d.ts +3 -0
  32. package/dist/configurators/project/auth.d.ts.map +1 -0
  33. package/dist/configurators/project/auth.js +82 -0
  34. package/dist/configurators/project/auth.js.map +1 -0
  35. package/dist/configurators/project/cicd.d.ts +30 -0
  36. package/dist/configurators/project/cicd.d.ts.map +1 -0
  37. package/dist/configurators/project/cicd.js +289 -0
  38. package/dist/configurators/project/cicd.js.map +1 -0
  39. package/dist/configurators/project/i18n.d.ts +3 -0
  40. package/dist/configurators/project/i18n.d.ts.map +1 -0
  41. package/dist/configurators/project/i18n.js +67 -0
  42. package/dist/configurators/project/i18n.js.map +1 -0
  43. package/dist/configurators/project/index.d.ts +6 -0
  44. package/dist/configurators/project/index.d.ts.map +1 -0
  45. package/dist/configurators/project/index.js +6 -0
  46. package/dist/configurators/project/index.js.map +1 -0
  47. package/dist/configurators/project/mandatory.d.ts +3 -0
  48. package/dist/configurators/project/mandatory.d.ts.map +1 -0
  49. package/dist/configurators/project/mandatory.js +167 -0
  50. package/dist/configurators/project/mandatory.js.map +1 -0
  51. package/dist/configurators/project/structure.d.ts +3 -0
  52. package/dist/configurators/project/structure.d.ts.map +1 -0
  53. package/dist/configurators/project/structure.js +34 -0
  54. package/dist/configurators/project/structure.js.map +1 -0
  55. package/dist/configurators/state/dataFetching.d.ts +3 -0
  56. package/dist/configurators/state/dataFetching.d.ts.map +1 -0
  57. package/dist/configurators/state/dataFetching.js +23 -0
  58. package/dist/configurators/state/dataFetching.js.map +1 -0
  59. package/dist/configurators/state/forms.d.ts +3 -0
  60. package/dist/configurators/state/forms.d.ts.map +1 -0
  61. package/dist/configurators/state/forms.js +35 -0
  62. package/dist/configurators/state/forms.js.map +1 -0
  63. package/dist/configurators/state/index.d.ts +5 -0
  64. package/dist/configurators/state/index.d.ts.map +1 -0
  65. package/dist/configurators/state/index.js +5 -0
  66. package/dist/configurators/state/index.js.map +1 -0
  67. package/dist/configurators/state/routing.d.ts +3 -0
  68. package/dist/configurators/state/routing.d.ts.map +1 -0
  69. package/dist/configurators/state/routing.js +23 -0
  70. package/dist/configurators/state/routing.js.map +1 -0
  71. package/dist/configurators/state/state.d.ts +3 -0
  72. package/dist/configurators/state/state.d.ts.map +1 -0
  73. package/dist/configurators/state/state.js +91 -0
  74. package/dist/configurators/state/state.js.map +1 -0
  75. package/dist/configurators/styling/icons.d.ts +3 -0
  76. package/dist/configurators/styling/icons.d.ts.map +1 -0
  77. package/dist/configurators/styling/icons.js +27 -0
  78. package/dist/configurators/styling/icons.js.map +1 -0
  79. package/dist/configurators/styling/index.d.ts +4 -0
  80. package/dist/configurators/styling/index.d.ts.map +1 -0
  81. package/dist/configurators/styling/index.js +4 -0
  82. package/dist/configurators/styling/index.js.map +1 -0
  83. package/dist/configurators/styling/styling.d.ts +3 -0
  84. package/dist/configurators/styling/styling.d.ts.map +1 -0
  85. package/dist/configurators/styling/styling.js +62 -0
  86. package/dist/configurators/styling/styling.js.map +1 -0
  87. package/dist/configurators/styling/ui.d.ts +3 -0
  88. package/dist/configurators/styling/ui.d.ts.map +1 -0
  89. package/dist/configurators/styling/ui.js +188 -0
  90. package/dist/configurators/styling/ui.js.map +1 -0
  91. package/dist/core/index.d.ts +7 -0
  92. package/dist/core/index.d.ts.map +1 -0
  93. package/dist/core/index.js +7 -0
  94. package/dist/core/index.js.map +1 -0
  95. package/dist/core/lazy-loader.d.ts +57 -0
  96. package/dist/core/lazy-loader.d.ts.map +1 -0
  97. package/dist/core/lazy-loader.js +231 -0
  98. package/dist/core/lazy-loader.js.map +1 -0
  99. package/dist/core/parallel.d.ts +29 -0
  100. package/dist/core/parallel.d.ts.map +1 -0
  101. package/dist/core/parallel.js +127 -0
  102. package/dist/core/parallel.js.map +1 -0
  103. package/dist/core/presets.d.ts +10 -0
  104. package/dist/core/presets.d.ts.map +1 -0
  105. package/dist/core/presets.js +73 -0
  106. package/dist/core/presets.js.map +1 -0
  107. package/dist/core/prompts/core.d.ts +18 -0
  108. package/dist/core/prompts/core.d.ts.map +1 -0
  109. package/dist/core/prompts/core.js +420 -0
  110. package/dist/core/prompts/core.js.map +1 -0
  111. package/dist/core/prompts/filter.d.ts +34 -0
  112. package/dist/core/prompts/filter.d.ts.map +1 -0
  113. package/dist/core/prompts/filter.js +48 -0
  114. package/dist/core/prompts/filter.js.map +1 -0
  115. package/dist/core/prompts/index.d.ts +10 -0
  116. package/dist/core/prompts/index.d.ts.map +1 -0
  117. package/dist/core/prompts/index.js +16 -0
  118. package/dist/core/prompts/index.js.map +1 -0
  119. package/dist/core/prompts/optional.d.ts +15 -0
  120. package/dist/core/prompts/optional.d.ts.map +1 -0
  121. package/dist/core/prompts/optional.js +228 -0
  122. package/dist/core/prompts/optional.js.map +1 -0
  123. package/dist/core/prompts/utils.d.ts +37 -0
  124. package/dist/core/prompts/utils.d.ts.map +1 -0
  125. package/dist/core/prompts/utils.js +72 -0
  126. package/dist/core/prompts/utils.js.map +1 -0
  127. package/dist/core/prompts.d.ts +6 -0
  128. package/dist/core/prompts.d.ts.map +1 -0
  129. package/dist/core/prompts.js +6 -0
  130. package/dist/core/prompts.js.map +1 -0
  131. package/dist/core/setup.d.ts +28 -0
  132. package/dist/core/setup.d.ts.map +1 -0
  133. package/dist/core/setup.js +96 -0
  134. package/dist/core/setup.js.map +1 -0
  135. package/dist/core/wizard.d.ts +39 -0
  136. package/dist/core/wizard.d.ts.map +1 -0
  137. package/dist/core/wizard.js +259 -0
  138. package/dist/core/wizard.js.map +1 -0
  139. package/dist/errors/index.d.ts +67 -0
  140. package/dist/errors/index.d.ts.map +1 -0
  141. package/dist/errors/index.js +253 -0
  142. package/dist/errors/index.js.map +1 -0
  143. package/dist/errors/messages.d.ts +56 -0
  144. package/dist/errors/messages.d.ts.map +1 -0
  145. package/dist/errors/messages.js +234 -0
  146. package/dist/errors/messages.js.map +1 -0
  147. package/dist/generators/index.d.ts +86 -0
  148. package/dist/generators/index.d.ts.map +1 -0
  149. package/dist/generators/index.js +441 -0
  150. package/dist/generators/index.js.map +1 -0
  151. package/dist/index.d.ts +16 -0
  152. package/dist/index.d.ts.map +1 -0
  153. package/dist/index.js +17 -0
  154. package/dist/index.js.map +1 -0
  155. package/dist/plugins/index.d.ts +48 -0
  156. package/dist/plugins/index.d.ts.map +1 -0
  157. package/dist/plugins/index.js +49 -0
  158. package/dist/plugins/index.js.map +1 -0
  159. package/dist/plugins/loader.d.ts +38 -0
  160. package/dist/plugins/loader.d.ts.map +1 -0
  161. package/dist/plugins/loader.js +229 -0
  162. package/dist/plugins/loader.js.map +1 -0
  163. package/dist/plugins/manager.d.ts +32 -0
  164. package/dist/plugins/manager.d.ts.map +1 -0
  165. package/dist/plugins/manager.js +220 -0
  166. package/dist/plugins/manager.js.map +1 -0
  167. package/dist/plugins/types.d.ts +186 -0
  168. package/dist/plugins/types.d.ts.map +1 -0
  169. package/dist/plugins/types.js +5 -0
  170. package/dist/plugins/types.js.map +1 -0
  171. package/dist/security/index.d.ts +59 -0
  172. package/dist/security/index.d.ts.map +1 -0
  173. package/dist/security/index.js +230 -0
  174. package/dist/security/index.js.map +1 -0
  175. package/dist/templates/entry.d.ts +9 -0
  176. package/dist/templates/entry.d.ts.map +1 -0
  177. package/dist/templates/entry.js +24 -0
  178. package/dist/templates/entry.js.map +1 -0
  179. package/dist/templates/index.d.ts +7 -0
  180. package/dist/templates/index.d.ts.map +1 -0
  181. package/dist/templates/index.js +10 -0
  182. package/dist/templates/index.js.map +1 -0
  183. package/dist/templates/main.d.ts +6 -0
  184. package/dist/templates/main.d.ts.map +1 -0
  185. package/dist/templates/main.js +72 -0
  186. package/dist/templates/main.js.map +1 -0
  187. package/dist/templates/readme.d.ts +3 -0
  188. package/dist/templates/readme.d.ts.map +1 -0
  189. package/dist/templates/readme.js +127 -0
  190. package/dist/templates/readme.js.map +1 -0
  191. package/dist/templates/styles.d.ts +6 -0
  192. package/dist/templates/styles.d.ts.map +1 -0
  193. package/dist/templates/styles.js +212 -0
  194. package/dist/templates/styles.js.map +1 -0
  195. package/dist/templates/welcome.d.ts +10 -0
  196. package/dist/templates/welcome.d.ts.map +1 -0
  197. package/dist/templates/welcome.js +322 -0
  198. package/dist/templates/welcome.js.map +1 -0
  199. package/dist/types/index.d.ts +46 -0
  200. package/dist/types/index.d.ts.map +1 -0
  201. package/dist/types/index.js +2 -0
  202. package/dist/types/index.js.map +1 -0
  203. package/dist/utils/batch-writer.d.ts +101 -0
  204. package/dist/utils/batch-writer.d.ts.map +1 -0
  205. package/dist/utils/batch-writer.js +232 -0
  206. package/dist/utils/batch-writer.js.map +1 -0
  207. package/dist/utils/cache.d.ts +60 -0
  208. package/dist/utils/cache.d.ts.map +1 -0
  209. package/dist/utils/cache.js +119 -0
  210. package/dist/utils/cache.js.map +1 -0
  211. package/dist/utils/fileTree.d.ts +3 -0
  212. package/dist/utils/fileTree.d.ts.map +1 -0
  213. package/dist/utils/fileTree.js +71 -0
  214. package/dist/utils/fileTree.js.map +1 -0
  215. package/dist/utils/fs.d.ts +22 -0
  216. package/dist/utils/fs.d.ts.map +1 -0
  217. package/dist/utils/fs.js +75 -0
  218. package/dist/utils/fs.js.map +1 -0
  219. package/dist/utils/helpers.d.ts +91 -0
  220. package/dist/utils/helpers.d.ts.map +1 -0
  221. package/dist/utils/helpers.js +192 -0
  222. package/dist/utils/helpers.js.map +1 -0
  223. package/dist/utils/index.d.ts +8 -0
  224. package/dist/utils/index.d.ts.map +1 -0
  225. package/dist/utils/index.js +8 -0
  226. package/dist/utils/index.js.map +1 -0
  227. package/dist/utils/progress.d.ts +85 -0
  228. package/dist/utils/progress.d.ts.map +1 -0
  229. package/dist/utils/progress.js +142 -0
  230. package/dist/utils/progress.js.map +1 -0
  231. package/dist/utils/spinner.d.ts +9 -0
  232. package/dist/utils/spinner.d.ts.map +1 -0
  233. package/dist/utils/spinner.js +56 -0
  234. package/dist/utils/spinner.js.map +1 -0
  235. package/dist/validation/index.d.ts +63 -0
  236. package/dist/validation/index.d.ts.map +1 -0
  237. package/dist/validation/index.js +262 -0
  238. package/dist/validation/index.js.map +1 -0
  239. package/package.json +71 -0
@@ -0,0 +1,188 @@
1
+ import { addDependency, getPackageJson, savePackageJson } from '../../utils/index.js';
2
+ const UI_CONFIGS = {
3
+ shadcn: {
4
+ '@radix-ui/react-slot': '^1.1.0',
5
+ 'class-variance-authority': '^0.7.1',
6
+ 'clsx': '^2.1.1',
7
+ 'tailwind-merge': '^2.6.0',
8
+ },
9
+ radix: {
10
+ '@radix-ui/react-dialog': '^1.1.0',
11
+ '@radix-ui/react-dropdown-menu': '^2.1.0',
12
+ '@radix-ui/react-slot': '^1.1.0',
13
+ },
14
+ mantine: {
15
+ '@mantine/core': '^7.15.0',
16
+ '@mantine/hooks': '^7.15.0',
17
+ },
18
+ heroui: {
19
+ '@heroui/react': '^2.7.0',
20
+ 'framer-motion': '^12.0.0',
21
+ },
22
+ antd: {
23
+ 'antd': '^5.23.0',
24
+ },
25
+ chakra: {
26
+ '@chakra-ui/react': '^3.3.0',
27
+ '@emotion/react': '^11.14.0',
28
+ },
29
+ 'styled-components': {
30
+ 'styled-components': '^6.1.14',
31
+ },
32
+ };
33
+ export const uiConfigurator = async (ctx) => {
34
+ if (ctx.selections.ui === 'none')
35
+ return;
36
+ const config = UI_CONFIGS[ctx.selections.ui];
37
+ if (!config)
38
+ return;
39
+ const pkg = await getPackageJson(ctx);
40
+ for (const [name, version] of Object.entries(config)) {
41
+ addDependency(pkg, name, version);
42
+ }
43
+ await savePackageJson(ctx, pkg);
44
+ // HeroUI Setup
45
+ if (ctx.selections.ui === 'heroui') {
46
+ const isTypeScript = ctx.selections.variant.startsWith('ts');
47
+ // Create tailwind.config.js for HeroUI
48
+ // Tailwind v4 supports config files for plugins and legacy compatibility
49
+ const tailwindConfig = `import { heroui } from "@heroui/react";
50
+
51
+ /** @type {import('tailwindcss').Config} */
52
+ export default {
53
+ content: [
54
+ "./index.html",
55
+ "./src/**/*.{js,ts,jsx,tsx}",
56
+ "./node_modules/@heroui/theme/dist/**/*.{js,ts,jsx,tsx}"
57
+ ],
58
+ theme: {
59
+ extend: {},
60
+ },
61
+ darkMode: "class",
62
+ plugins: [heroui()]
63
+ }`;
64
+ const { writeFile } = await import('../../utils/index.js');
65
+ const path = await import('node:path');
66
+ await writeFile(path.join(ctx.projectPath, 'tailwind.config.js'), tailwindConfig);
67
+ // Ensure main file wraps app with HeroUIProvider
68
+ // For now, simpler template in entry.ts handles basic imports, but provider is key.
69
+ // We will handle Provider in entry.ts
70
+ }
71
+ // Shadcn UI Setup
72
+ if (ctx.selections.ui === 'shadcn') {
73
+ const { writeFile, ensureDir } = await import('../../utils/index.js');
74
+ const path = await import('node:path');
75
+ const { appendFile } = await import('node:fs/promises');
76
+ const isTypeScript = ctx.selections.variant.startsWith('ts');
77
+ const ext = isTypeScript ? 'ts' : 'js';
78
+ // 1. Create utils.ts
79
+ await ensureDir(path.join(ctx.projectPath, 'src/lib'));
80
+ const utilsContent = `import { clsx, type ClassValue } from "clsx"
81
+ import { twMerge } from "tailwind-merge"
82
+
83
+ export function cn(...inputs: ClassValue[]) {
84
+ return twMerge(clsx(inputs))
85
+ }
86
+ `;
87
+ await writeFile(path.join(ctx.projectPath, 'src/lib', `utils.${ext}`), utilsContent);
88
+ // 2. Create components.json
89
+ const componentsJson = {
90
+ "$schema": "https://ui.shadcn.com/schema.json",
91
+ "style": "new-york",
92
+ "rsc": false,
93
+ "tsx": isTypeScript,
94
+ "tailwind": {
95
+ "config": "tailwind.config.js",
96
+ "css": "src/index.css",
97
+ "baseColor": "slate",
98
+ "cssVariables": true,
99
+ "prefix": ""
100
+ },
101
+ "aliases": {
102
+ "components": "@/components",
103
+ "utils": "@/lib/utils"
104
+ }
105
+ };
106
+ await writeFile(path.join(ctx.projectPath, 'components.json'), JSON.stringify(componentsJson, null, 2));
107
+ // 3. Update index.css with CSS Variables
108
+ const cssVariables = `
109
+ @layer base {
110
+ :root {
111
+ --background: 0 0% 100%;
112
+ --foreground: 222.2 84% 4.9%;
113
+ --card: 0 0% 100%;
114
+ --card-foreground: 222.2 84% 4.9%;
115
+ --popover: 0 0% 100%;
116
+ --popover-foreground: 222.2 84% 4.9%;
117
+ --primary: 222.2 47.4% 11.2%;
118
+ --primary-foreground: 210 40% 98%;
119
+ --secondary: 210 40% 96.1%;
120
+ --secondary-foreground: 222.2 47.4% 11.2%;
121
+ --muted: 210 40% 96.1%;
122
+ --muted-foreground: 215.4 16.3% 46.9%;
123
+ --accent: 210 40% 96.1%;
124
+ --accent-foreground: 222.2 47.4% 11.2%;
125
+ --destructive: 0 84.2% 60.2%;
126
+ --destructive-foreground: 210 40% 98%;
127
+ --border: 214.3 31.8% 91.4%;
128
+ --input: 214.3 31.8% 91.4%;
129
+ --ring: 222.2 84% 4.9%;
130
+ --radius: 0.5rem;
131
+ --chart-1: 12 76% 61%;
132
+ --chart-2: 173 58% 39%;
133
+ --chart-3: 197 37% 24%;
134
+ --chart-4: 43 74% 66%;
135
+ --chart-5: 27 87% 67%;
136
+ }
137
+
138
+ .dark {
139
+ --background: 222.2 84% 4.9%;
140
+ --foreground: 210 40% 98%;
141
+ --card: 222.2 84% 4.9%;
142
+ --card-foreground: 210 40% 98%;
143
+ --popover: 222.2 84% 4.9%;
144
+ --popover-foreground: 210 40% 98%;
145
+ --primary: 210 40% 98%;
146
+ --primary-foreground: 222.2 47.4% 11.2%;
147
+ --secondary: 217.2 32.6% 17.5%;
148
+ --secondary-foreground: 210 40% 98%;
149
+ --muted: 217.2 32.6% 17.5%;
150
+ --muted-foreground: 215 20.2% 65.1%;
151
+ --accent: 217.2 32.6% 17.5%;
152
+ --accent-foreground: 210 40% 98%;
153
+ --destructive: 0 62.8% 30.6%;
154
+ --destructive-foreground: 210 40% 98%;
155
+ --border: 217.2 32.6% 17.5%;
156
+ --input: 217.2 32.6% 17.5%;
157
+ --ring: 212.7 26.8% 83.9%;
158
+ --chart-1: 220 70% 50%;
159
+ --chart-2: 160 60% 45%;
160
+ --chart-3: 30 80% 55%;
161
+ --chart-4: 280 65% 60%;
162
+ --chart-5: 340 75% 55%;
163
+ }
164
+ }
165
+
166
+ @layer base {
167
+ * {
168
+ border-color: hsl(var(--border));
169
+ }
170
+ body {
171
+ background-color: hsl(var(--background));
172
+ color: hsl(var(--foreground));
173
+ }
174
+ }
175
+ `;
176
+ // We assume index.css exists because styling runs before UI
177
+ // But we need to make sure we append. Since 'appendFile' is not in our utils index explicitly in the original view,
178
+ // I will use writeFile with read logic or just use node:fs directly.
179
+ const fs = await import('node:fs/promises');
180
+ try {
181
+ await fs.appendFile(path.join(ctx.projectPath, 'src/index.css'), cssVariables);
182
+ }
183
+ catch {
184
+ await writeFile(path.join(ctx.projectPath, 'src/index.css'), `@import "tailwindcss";\n${cssVariables}`);
185
+ }
186
+ }
187
+ };
188
+ //# sourceMappingURL=ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/configurators/styling/ui.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export * from './lazy-loader.js';
2
+ export * from './parallel.js';
3
+ export * from './presets.js';
4
+ export * from './prompts.js';
5
+ export { createSteps, executeSequential, setup } from './setup.js';
6
+ export * from './wizard.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnE,cAAc,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from './lazy-loader.js';
2
+ export * from './parallel.js';
3
+ export * from './presets.js';
4
+ export * from './prompts.js';
5
+ export { createSteps, executeSequential, setup } from './setup.js';
6
+ export * from './wizard.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnE,cAAc,aAAa,CAAC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * NEXO CLI - Lazy Loader
3
+ *
4
+ * Dynamically loads configurators on-demand to improve startup time.
5
+ * Only loads configurators that are actually needed based on user selections.
6
+ */
7
+ import type { Configurator, ConfiguratorContext } from '../types/index.js';
8
+ export type ConfiguratorModule = {
9
+ default?: Configurator;
10
+ [key: string]: Configurator | undefined;
11
+ };
12
+ export interface LazyConfiguratorConfig {
13
+ /** Module path (relative to configurators folder) */
14
+ path: string;
15
+ /** Export name (default: 'default' or derived from path) */
16
+ exportName?: string;
17
+ /** Condition to load this configurator */
18
+ condition?: (ctx: ConfiguratorContext) => boolean;
19
+ /** Dependencies (other configurator names) */
20
+ dependencies?: string[];
21
+ }
22
+ export interface LazyLoaderOptions {
23
+ /** Base path for configurator modules */
24
+ basePath?: string;
25
+ /** Cache loaded modules */
26
+ cache?: boolean;
27
+ }
28
+ /**
29
+ * Registry of available configurators with their lazy load configs
30
+ */
31
+ export declare const configuratorRegistry: Record<string, LazyConfiguratorConfig>;
32
+ /**
33
+ * Load a configurator module dynamically
34
+ */
35
+ export declare const loadConfigurator: (name: string, options?: LazyLoaderOptions) => Promise<Configurator | null>;
36
+ /**
37
+ * Load multiple configurators
38
+ */
39
+ export declare const loadConfigurators: (names: string[], options?: LazyLoaderOptions) => Promise<Map<string, Configurator>>;
40
+ /**
41
+ * Get configurators that should run based on context
42
+ */
43
+ export declare const getRequiredConfigurators: (ctx: ConfiguratorContext) => string[];
44
+ /**
45
+ * Sort configurators by dependencies
46
+ */
47
+ export declare const sortByDependencies: (names: string[]) => string[];
48
+ /**
49
+ * Clear the module cache
50
+ */
51
+ export declare const clearModuleCache: () => void;
52
+ /**
53
+ * Preload configurators (for warming up)
54
+ */
55
+ export declare const preloadConfigurators: (names?: string[], options?: LazyLoaderOptions) => Promise<void>;
56
+ export default loadConfigurator;
57
+ //# sourceMappingURL=lazy-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy-loader.d.ts","sourceRoot":"","sources":["../../src/core/lazy-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAM3E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;CACzC,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,OAAO,CAAC;IAClD,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAMD;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CA2FvE,CAAC;AAWF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,UAAS,iBAAsB,KAC9B,OAAO,CAAC,YAAY,GAAG,IAAI,CA+B7B,CAAC;AAyBF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,MAAM,EAAE,EACf,UAAS,iBAAsB,KAC9B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAanC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,GAAI,KAAK,mBAAmB,KAAG,MAAM,EAYzE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,EAAE,KAAG,MAAM,EAgC1D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,QAAO,IAEnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,MAAM,EAAE,EAChB,UAAS,iBAAsB,KAC9B,OAAO,CAAC,IAAI,CAGd,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,231 @@
1
+ /**
2
+ * NEXO CLI - Lazy Loader
3
+ *
4
+ * Dynamically loads configurators on-demand to improve startup time.
5
+ * Only loads configurators that are actually needed based on user selections.
6
+ */
7
+ // ============================================
8
+ // Configurator Registry
9
+ // ============================================
10
+ /**
11
+ * Registry of available configurators with their lazy load configs
12
+ */
13
+ export const configuratorRegistry = {
14
+ // Core
15
+ framework: {
16
+ path: 'core/framework',
17
+ exportName: 'frameworkConfigurator',
18
+ },
19
+ variant: {
20
+ path: 'core/variant',
21
+ exportName: 'variantConfigurator',
22
+ dependencies: ['framework'],
23
+ },
24
+ language: {
25
+ path: 'core/language',
26
+ exportName: 'languageConfigurator',
27
+ dependencies: ['variant'],
28
+ },
29
+ // Styling
30
+ styling: {
31
+ path: 'styling/styling',
32
+ exportName: 'stylingConfigurator',
33
+ dependencies: ['language'],
34
+ },
35
+ ui: {
36
+ path: 'styling/ui',
37
+ exportName: 'uiConfigurator',
38
+ dependencies: ['styling'],
39
+ condition: (ctx) => ctx.selections.ui !== 'none',
40
+ },
41
+ icons: {
42
+ path: 'styling/icons',
43
+ exportName: 'iconsConfigurator',
44
+ dependencies: ['language'],
45
+ condition: (ctx) => ctx.selections.icons !== 'none',
46
+ },
47
+ // State
48
+ forms: {
49
+ path: 'state/forms',
50
+ exportName: 'formsConfigurator',
51
+ dependencies: ['language'],
52
+ condition: (ctx) => ctx.selections.forms !== 'none',
53
+ },
54
+ state: {
55
+ path: 'state/state',
56
+ exportName: 'stateConfigurator',
57
+ dependencies: ['language'],
58
+ condition: (ctx) => ctx.selections.state !== 'none',
59
+ },
60
+ routing: {
61
+ path: 'state/routing',
62
+ exportName: 'routingConfigurator',
63
+ dependencies: ['language'],
64
+ condition: (ctx) => ctx.selections.routing !== 'none',
65
+ },
66
+ dataFetching: {
67
+ path: 'state/dataFetching',
68
+ exportName: 'dataFetchingConfigurator',
69
+ dependencies: ['language'],
70
+ condition: (ctx) => ctx.selections.dataFetching !== 'none',
71
+ },
72
+ // Project
73
+ structure: {
74
+ path: 'project/structure',
75
+ exportName: 'structureConfigurator',
76
+ dependencies: ['language'],
77
+ },
78
+ i18n: {
79
+ path: 'project/i18n',
80
+ exportName: 'i18nConfigurator',
81
+ dependencies: ['language'],
82
+ condition: (ctx) => ctx.selections.i18n !== 'none',
83
+ },
84
+ auth: {
85
+ path: 'project/auth',
86
+ exportName: 'authConfigurator',
87
+ dependencies: ['language'],
88
+ condition: (ctx) => ctx.selections.auth !== 'none',
89
+ },
90
+ mandatory: {
91
+ path: 'project/mandatory',
92
+ exportName: 'mandatoryConfigurator',
93
+ dependencies: ['styling', 'structure'],
94
+ },
95
+ cicd: {
96
+ path: 'project/cicd',
97
+ exportName: 'cicdConfigurator',
98
+ dependencies: ['mandatory'],
99
+ condition: () => false, // Disabled by default, enable via options
100
+ },
101
+ };
102
+ // ============================================
103
+ // Lazy Loader Implementation
104
+ // ============================================
105
+ /**
106
+ * Module cache for loaded configurators
107
+ */
108
+ const moduleCache = new Map();
109
+ /**
110
+ * Load a configurator module dynamically
111
+ */
112
+ export const loadConfigurator = async (name, options = {}) => {
113
+ const config = configuratorRegistry[name];
114
+ if (!config) {
115
+ console.warn(`Unknown configurator: ${name}`);
116
+ return null;
117
+ }
118
+ const { basePath = '../configurators', cache = true } = options;
119
+ // Check cache
120
+ const cacheKey = `${basePath}/${config.path}`;
121
+ if (cache && moduleCache.has(cacheKey)) {
122
+ const module = moduleCache.get(cacheKey);
123
+ return getExport(module, config.exportName || name);
124
+ }
125
+ try {
126
+ // Dynamic import
127
+ const modulePath = `${basePath}/${config.path}.js`;
128
+ const module = await import(modulePath);
129
+ // Cache the module
130
+ if (cache) {
131
+ moduleCache.set(cacheKey, module);
132
+ }
133
+ return getExport(module, config.exportName || name);
134
+ }
135
+ catch (error) {
136
+ console.error(`Failed to load configurator "${name}":`, error);
137
+ return null;
138
+ }
139
+ };
140
+ /**
141
+ * Get export from module
142
+ */
143
+ const getExport = (module, exportName) => {
144
+ // Try exact name
145
+ if (module[exportName]) {
146
+ return module[exportName];
147
+ }
148
+ // Try default export
149
+ if (module.default) {
150
+ return module.default;
151
+ }
152
+ // Try with "Configurator" suffix
153
+ const withSuffix = `${exportName}Configurator`;
154
+ if (module[withSuffix]) {
155
+ return module[withSuffix];
156
+ }
157
+ return null;
158
+ };
159
+ /**
160
+ * Load multiple configurators
161
+ */
162
+ export const loadConfigurators = async (names, options = {}) => {
163
+ const results = new Map();
164
+ await Promise.all(names.map(async (name) => {
165
+ const configurator = await loadConfigurator(name, options);
166
+ if (configurator) {
167
+ results.set(name, configurator);
168
+ }
169
+ }));
170
+ return results;
171
+ };
172
+ /**
173
+ * Get configurators that should run based on context
174
+ */
175
+ export const getRequiredConfigurators = (ctx) => {
176
+ const required = [];
177
+ for (const [name, config] of Object.entries(configuratorRegistry)) {
178
+ // Check condition
179
+ if (config.condition && !config.condition(ctx)) {
180
+ continue;
181
+ }
182
+ required.push(name);
183
+ }
184
+ return required;
185
+ };
186
+ /**
187
+ * Sort configurators by dependencies
188
+ */
189
+ export const sortByDependencies = (names) => {
190
+ const sorted = [];
191
+ const visited = new Set();
192
+ const visiting = new Set();
193
+ const visit = (name) => {
194
+ if (visited.has(name))
195
+ return;
196
+ if (visiting.has(name)) {
197
+ throw new Error(`Circular dependency detected: ${name}`);
198
+ }
199
+ visiting.add(name);
200
+ const config = configuratorRegistry[name];
201
+ if (config?.dependencies) {
202
+ for (const dep of config.dependencies) {
203
+ if (names.includes(dep)) {
204
+ visit(dep);
205
+ }
206
+ }
207
+ }
208
+ visiting.delete(name);
209
+ visited.add(name);
210
+ sorted.push(name);
211
+ };
212
+ for (const name of names) {
213
+ visit(name);
214
+ }
215
+ return sorted;
216
+ };
217
+ /**
218
+ * Clear the module cache
219
+ */
220
+ export const clearModuleCache = () => {
221
+ moduleCache.clear();
222
+ };
223
+ /**
224
+ * Preload configurators (for warming up)
225
+ */
226
+ export const preloadConfigurators = async (names, options = {}) => {
227
+ const toLoad = names || Object.keys(configuratorRegistry);
228
+ await loadConfigurators(toLoad, options);
229
+ };
230
+ export default loadConfigurator;
231
+ //# sourceMappingURL=lazy-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy-loader.js","sourceRoot":"","sources":["../../src/core/lazy-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export interface Step {
2
+ name: string;
3
+ fn: () => Promise<void>;
4
+ /** Dependencies - step names that must complete first */
5
+ dependencies?: string[];
6
+ }
7
+ export interface ParallelExecutorOptions {
8
+ /** Show individual step progress */
9
+ verbose?: boolean;
10
+ /** Maximum concurrent steps */
11
+ maxConcurrency?: number;
12
+ }
13
+ /**
14
+ * Execute steps with dependency resolution and parallelism
15
+ */
16
+ export declare const executeParallel: (steps: Step[], options?: ParallelExecutorOptions) => Promise<void>;
17
+ /**
18
+ * Group steps by their dependency level for visualization
19
+ */
20
+ export declare const groupByLevel: (steps: Step[]) => Step[][];
21
+ /**
22
+ * Estimate time savings from parallel execution
23
+ */
24
+ export declare const estimateTimeSavings: (steps: Step[], avgStepTime?: number) => {
25
+ sequential: number;
26
+ parallel: number;
27
+ savings: number;
28
+ };
29
+ //# sourceMappingURL=parallel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallel.d.ts","sourceRoot":"","sources":["../../src/core/parallel.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,oCAAoC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+BAA+B;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAQD;;GAEG;AACH,eAAO,MAAM,eAAe,GAC1B,OAAO,IAAI,EAAE,EACb,UAAS,uBAA4B,KACpC,OAAO,CAAC,IAAI,CAgGd,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,IAAI,EAAE,KAAG,IAAI,EAAE,EAyBlD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,IAAI,EAAE,EACb,cAAa,MAAY,KACxB;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAQzD,CAAC"}