phos 1.0.0 → 1.0.2

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 (97) hide show
  1. package/README.md +68 -42
  2. package/dist/cli.js +351 -171
  3. package/dist/cli.js.map +1 -1
  4. package/dist/generators/backends/elysia.d.ts +1 -1
  5. package/dist/generators/backends/elysia.d.ts.map +1 -1
  6. package/dist/generators/backends/elysia.js +22 -127
  7. package/dist/generators/backends/elysia.js.map +1 -1
  8. package/dist/generators/backends/fastapi.d.ts +1 -1
  9. package/dist/generators/backends/fastapi.d.ts.map +1 -1
  10. package/dist/generators/backends/fastapi.js +40 -148
  11. package/dist/generators/backends/fastapi.js.map +1 -1
  12. package/dist/generators/frontends/astro.d.ts +1 -1
  13. package/dist/generators/frontends/astro.d.ts.map +1 -1
  14. package/dist/generators/frontends/astro.js +17 -295
  15. package/dist/generators/frontends/astro.js.map +1 -1
  16. package/dist/generators/frontends/nextjs.d.ts +1 -1
  17. package/dist/generators/frontends/nextjs.d.ts.map +1 -1
  18. package/dist/generators/frontends/nextjs.js +17 -266
  19. package/dist/generators/frontends/nextjs.js.map +1 -1
  20. package/dist/generators/frontends/svelte.d.ts +1 -1
  21. package/dist/generators/frontends/svelte.d.ts.map +1 -1
  22. package/dist/generators/frontends/svelte.js +18 -316
  23. package/dist/generators/frontends/svelte.js.map +1 -1
  24. package/dist/generators/monorepo.d.ts +1 -1
  25. package/dist/generators/monorepo.d.ts.map +1 -1
  26. package/dist/generators/monorepo.js +369 -202
  27. package/dist/generators/monorepo.js.map +1 -1
  28. package/dist/generators/single.d.ts +1 -1
  29. package/dist/generators/single.d.ts.map +1 -1
  30. package/dist/generators/single.js +335 -134
  31. package/dist/generators/single.js.map +1 -1
  32. package/dist/templates/backend/elysia/src/api/user_api.d.ts +1 -0
  33. package/dist/templates/backend/elysia/src/api/user_api.d.ts.map +1 -0
  34. package/dist/templates/backend/elysia/src/api/user_api.js +2 -0
  35. package/dist/templates/backend/elysia/src/api/user_api.js.map +1 -0
  36. package/dist/templates/backend/elysia/src/db.d.ts +3 -0
  37. package/dist/templates/backend/elysia/src/db.d.ts.map +1 -0
  38. package/dist/templates/backend/elysia/src/db.js +13 -0
  39. package/dist/templates/backend/elysia/src/db.js.map +1 -0
  40. package/dist/templates/backend/elysia/src/index.d.ts +4 -0
  41. package/dist/templates/backend/elysia/src/index.d.ts.map +1 -0
  42. package/dist/templates/backend/elysia/src/index.js +55 -0
  43. package/dist/templates/backend/elysia/src/index.js.map +1 -0
  44. package/dist/templates/backend/elysia/src/service/user_service.d.ts +1 -0
  45. package/dist/templates/backend/elysia/src/service/user_service.d.ts.map +1 -0
  46. package/dist/templates/backend/elysia/src/service/user_service.js +2 -0
  47. package/dist/templates/backend/elysia/src/service/user_service.js.map +1 -0
  48. package/dist/templates/backend/elysia/src/sql/user_sql.d.ts +1 -0
  49. package/dist/templates/backend/elysia/src/sql/user_sql.d.ts.map +1 -0
  50. package/dist/templates/backend/elysia/src/sql/user_sql.js +2 -0
  51. package/dist/templates/backend/elysia/src/sql/user_sql.js.map +1 -0
  52. package/dist/templates/backend/elysia/src/types/user_type.d.ts +1 -0
  53. package/dist/templates/backend/elysia/src/types/user_type.d.ts.map +1 -0
  54. package/dist/templates/backend/elysia/src/types/user_type.js +2 -0
  55. package/dist/templates/backend/elysia/src/types/user_type.js.map +1 -0
  56. package/dist/templates/frontend/nextjs/app/layout.d.ts +7 -0
  57. package/dist/templates/frontend/nextjs/app/layout.d.ts.map +1 -0
  58. package/dist/templates/frontend/nextjs/app/layout.js +22 -0
  59. package/dist/templates/frontend/nextjs/app/layout.js.map +1 -0
  60. package/dist/templates/frontend/nextjs/app/page.d.ts +2 -0
  61. package/dist/templates/frontend/nextjs/app/page.d.ts.map +1 -0
  62. package/dist/templates/frontend/nextjs/app/page.js +15 -0
  63. package/dist/templates/frontend/nextjs/app/page.js.map +1 -0
  64. package/dist/templates/frontend/nextjs/next.config.d.ts +4 -0
  65. package/dist/templates/frontend/nextjs/next.config.d.ts.map +1 -0
  66. package/dist/templates/frontend/nextjs/next.config.js +5 -0
  67. package/dist/templates/frontend/nextjs/next.config.js.map +1 -0
  68. package/dist/templates/frontend/svelte/src/lib/index.d.ts +1 -0
  69. package/dist/templates/frontend/svelte/src/lib/index.d.ts.map +1 -0
  70. package/dist/templates/frontend/svelte/src/lib/index.js +3 -0
  71. package/dist/templates/frontend/svelte/src/lib/index.js.map +1 -0
  72. package/dist/templates/frontend/svelte/vite.config.d.ts +3 -0
  73. package/dist/templates/frontend/svelte/vite.config.d.ts.map +1 -0
  74. package/dist/templates/frontend/svelte/vite.config.js +5 -0
  75. package/dist/templates/frontend/svelte/vite.config.js.map +1 -0
  76. package/dist/utils/helpers.d.ts +10 -10
  77. package/dist/utils/helpers.d.ts.map +1 -1
  78. package/dist/utils/helpers.js +77 -34
  79. package/dist/utils/helpers.js.map +1 -1
  80. package/package.json +7 -2
  81. package/src/templates/frontend/astro/.vscode/extensions.json +4 -0
  82. package/src/templates/frontend/astro/.vscode/launch.json +11 -0
  83. package/src/templates/frontend/svelte/.vscode/settings.json +5 -0
  84. package/.eslintignore +0 -3
  85. package/AGENTS.md +0 -172
  86. package/CHANGELOG.md +0 -184
  87. package/bun.lock +0 -125
  88. package/src/cli.ts +0 -500
  89. package/src/generators/backends/elysia.ts +0 -45
  90. package/src/generators/backends/fastapi.ts +0 -71
  91. package/src/generators/frontends/astro.ts +0 -37
  92. package/src/generators/frontends/nextjs.ts +0 -37
  93. package/src/generators/frontends/svelte.ts +0 -38
  94. package/src/generators/monorepo.ts +0 -529
  95. package/src/generators/single.ts +0 -465
  96. package/src/utils/helpers.ts +0 -198
  97. package/tsconfig.json +0 -24
@@ -1,303 +1,25 @@
1
- import { createDirectory, writeFile, logSuccess } from "@/utils/helpers.js";
1
+ import { createDirectory, logSuccess, copyTemplate, } from "../../utils/helpers.js";
2
+ import { resolve } from "path";
3
+ import fs from "fs-extra";
4
+ async function removeFileIfExists(filePath) {
5
+ try {
6
+ if (await fs.pathExists(filePath)) {
7
+ await fs.unlink(filePath);
8
+ }
9
+ }
10
+ catch (error) { }
11
+ }
2
12
  export async function generateAstroFrontend(projectPath, config) {
3
13
  const srcPath = `${projectPath}/src`;
4
14
  await createDirectory(srcPath);
5
- await createDirectory(`${srcPath}/pages`);
6
- await createDirectory(`${srcPath}/components`);
7
- await createDirectory(`${srcPath}/layouts`);
8
- await generateIndexPage(srcPath, config);
9
- await generateLayout(srcPath, config);
10
- await generateComponent(srcPath, config);
11
- await generateAstroConfig(projectPath, config);
12
- await generateTsConfig(projectPath, config);
13
- await generateViteConfig(projectPath, config);
14
- await generateGitIgnore(projectPath);
15
- if (config.frontend.cssFramework === "tailwind") {
16
- await generateTailwindConfig(projectPath, config);
17
- await generatePostCSSConfig(projectPath, config);
18
- await generateGlobalStyles(srcPath, config);
19
- }
20
- if (config.frontend.uiComponents === "shadcn") {
21
- await generateShadcnUtils(srcPath, config);
22
- }
23
- if (config.frontend.testing !== "none") {
24
- await generateVitestConfig(projectPath, config);
25
- if (config.frontend.testing === "playwright" || config.frontend.testing === "both") {
26
- await generatePlaywrightConfig(projectPath, config);
27
- }
15
+ const templatePath = resolve(process.cwd(), "src/templates/frontend/astro");
16
+ await copyTemplate(templatePath, projectPath, config);
17
+ if (!config.frontend?.eslint) {
18
+ await removeFileIfExists(`${projectPath}/eslint.config.js`);
28
19
  }
29
- if (config.frontend.eslint) {
30
- await generateEslintConfig(projectPath, config);
31
- }
32
- if (config.frontend.prettier) {
33
- await generatePrettierConfig(projectPath, config);
20
+ if (!config.frontend?.prettier) {
21
+ await removeFileIfExists(`${projectPath}/.prettierrc`);
34
22
  }
35
23
  logSuccess(`Astro frontend generated`);
36
24
  }
37
- async function generateIndexPage(srcPath, config) {
38
- const content = `---
39
- import Layout from '../layouts/Layout.astro';
40
- import Card from '../components/Card.astro';
41
- ---
42
-
43
- <Layout title="Welcome to ${config.projectName}">
44
- <main>
45
- <h1>Welcome to ${config.projectName}</h1>
46
- <p>This project was generated by Phos 🚀</p>
47
- <Card title="Getting Started" description="Edit src/pages/index.astro to get started" />
48
- </main>
49
- </Layout>
50
-
51
- <style>
52
- main {
53
- padding: 2rem;
54
- max-width: 800px;
55
- margin: 0 auto;
56
- }
57
- h1 {
58
- font-size: 2.5rem;
59
- margin-bottom: 1rem;
60
- }
61
- </style>
62
- `;
63
- await writeFile(`${srcPath}/pages/index.astro`, content);
64
- }
65
- async function generateLayout(srcPath, config) {
66
- const content = `---
67
- interface Props {
68
- title: string;
69
- }
70
-
71
- const { title } = Astro.props;
72
- ---
73
-
74
- <html lang="en">
75
- <head>
76
- <meta charset="utf-8" />
77
- <meta name="viewport" content="width=device-width" />
78
- <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
79
- <meta name="generator" content={Astro.generator} />
80
- <title>{title}</title>
81
- </head>
82
- <body>
83
- <slot />
84
- </body>
85
- </html>
86
-
87
- <style is:global>
88
- * {
89
- box-sizing: border-box;
90
- margin: 0;
91
- padding: 0;
92
- }
93
- body {
94
- font-family: system-ui, -apple-system, sans-serif;
95
- line-height: 1.5;
96
- }
97
- </style>
98
- `;
99
- await writeFile(`${srcPath}/layouts/Layout.astro`, content);
100
- }
101
- async function generateComponent(srcPath, config) {
102
- const content = `---
103
- interface Props {
104
- title: string;
105
- description: string;
106
- }
107
-
108
- const { title, description } = Astro.props;
109
- ---
110
-
111
- <div class="card">
112
- <h2>{title}</h2>
113
- <p>{description}</p>
114
- </div>
115
-
116
- <style>
117
- .card {
118
- border: 1px solid #ccc;
119
- border-radius: 8px;
120
- padding: 1.5rem;
121
- margin-top: 2rem;
122
- background: white;
123
- }
124
- .card h2 {
125
- margin-bottom: 0.5rem;
126
- }
127
- </style>
128
- `;
129
- await writeFile(`${srcPath}/components/Card.astro`, content);
130
- }
131
- async function generateAstroConfig(projectPath, config) {
132
- const content = `import { defineConfig } from 'astro/config';
133
-
134
- export default defineConfig({
135
- ${config.frontend.typescript ? "" : "// "}typescript: {
136
- strict: true,
137
- ${config.frontend.typescript ? "" : "}"}
138
- ${config.frontend.cssFramework === "tailwind" ? "integrations: [tailwind()],\n " : ""}
139
- ${config.frontend.testing === "vitest" || config.frontend.testing === "both" ? 'vite: {\n test: {\n include: ["./src/**/*.{test,spec}.{js,jsx,ts,tsx}"],\n },\n },\n ' : ""}
140
- });
141
- `;
142
- await writeFile(`${projectPath}/astro.config.mjs`, content);
143
- }
144
- async function generateTsConfig(projectPath, config) {
145
- if (!config.frontend.typescript)
146
- return;
147
- const content = JSON.stringify({
148
- extends: "astro/tsconfigs/strict",
149
- compilerOptions: {
150
- jsx: "react-jsx",
151
- jsxImportSource: "react",
152
- },
153
- }, null, 2);
154
- await writeFile(`${projectPath}/tsconfig.json`, content);
155
- }
156
- async function generateViteConfig(projectPath, config) {
157
- const content = `import { defineConfig } from 'vite';
158
-
159
- export default defineConfig({
160
- ${config.frontend.testing === "vitest" || config.frontend.testing === "both" ? 'test: {\n globals: true,\n environment: "jsdom",\n },\n' : ""}
161
- });
162
- `;
163
- await writeFile(`${projectPath}/vite.config.ts`, content);
164
- }
165
- async function generateTailwindConfig(projectPath, config) {
166
- const content = `/** @type {import('tailwindcss').Config} */
167
- export default {
168
- content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'],
169
- theme: {
170
- extend: {},
171
- },
172
- plugins: [],
173
- };
174
- `;
175
- await writeFile(`${projectPath}/tailwind.config.mjs`, content);
176
- }
177
- async function generatePostCSSConfig(projectPath, config) {
178
- const content = `export default {
179
- plugins: {
180
- tailwindcss: {},
181
- autoprefixer: {},
182
- },
183
- };
184
- `;
185
- await writeFile(`${projectPath}/postcss.config.cjs`, content);
186
- }
187
- async function generateGlobalStyles(srcPath, config) {
188
- const content = `@tailwind base;
189
- @tailwind components;
190
- @tailwind utilities;
191
- `;
192
- await writeFile(`${srcPath}/styles/global.css`, content);
193
- }
194
- async function generateShadcnUtils(srcPath, config) {
195
- await createDirectory(`${srcPath}/lib`);
196
- const content = `import { type ClassValue, clsx } from "clsx"
197
- import { twMerge } from "tailwind-merge"
198
-
199
- export function cn(...inputs: ClassValue[]) {
200
- return twMerge(clsx(inputs))
201
- }
202
- `;
203
- await writeFile(`${srcPath}/lib/utils.ts`, content);
204
- }
205
- async function generateVitestConfig(projectPath, config) {
206
- const content = `import { defineConfig } from 'vitest/config';
207
- import astro from '@astrojs/vitest';
208
-
209
- export default defineConfig({
210
- plugins: [astro()],
211
- test: {
212
- include: ['src/**/*.{test,spec}.{js,jsx,ts,tsx}'],
213
- },
214
- });
215
- `;
216
- await writeFile(`${projectPath}/vitest.config.ts`, content);
217
- }
218
- async function generatePlaywrightConfig(projectPath, config) {
219
- const content = `import { defineConfig, devices } from '@playwright/test';
220
-
221
- export default defineConfig({
222
- testDir: './e2e',
223
- fullyParallel: true,
224
- forbidOnly: !!process.env.CI,
225
- retries: process.env.CI ? 2 : 0,
226
- workers: process.env.CI ? 1 : undefined,
227
- reporter: 'html',
228
- use: {
229
- baseURL: 'http://localhost:4321',
230
- trace: 'on-first-retry',
231
- },
232
- projects: [
233
- {
234
- name: 'chromium',
235
- use: { ...devices['Desktop Chrome'] },
236
- },
237
- ],
238
- webServer: {
239
- command: 'npm run preview',
240
- url: 'http://localhost:4321',
241
- reuseExistingServer: !process.env.CI,
242
- },
243
- });
244
- `;
245
- await writeFile(`${projectPath}/playwright.config.ts`, content);
246
- }
247
- async function generateEslintConfig(projectPath, config) {
248
- if (!config.frontend.eslint)
249
- return;
250
- const content = `import astroEslint from 'astro-eslint-parser';
251
- import eslintPluginAstro from 'eslint-plugin-astro';
252
-
253
- export default [
254
- {
255
- files: ['*.astro'],
256
- languageOptions: {
257
- parser: astroEslint,
258
- parserOptions: {
259
- parser: '@typescript-eslint/parser',
260
- extraFileExtensions: ['.astro'],
261
- },
262
- },
263
- rules: {
264
- 'astro/no-set-html-directive': 'error',
265
- },
266
- },
267
- {
268
- ignores: ['dist', 'node_modules', '.astro'],
269
- },
270
- ];
271
- `;
272
- await writeFile(`${projectPath}/eslint.config.js`, content);
273
- }
274
- async function generatePrettierConfig(projectPath, config) {
275
- if (!config.frontend.prettier)
276
- return;
277
- const content = JSON.stringify({
278
- semi: false,
279
- singleQuote: true,
280
- tabWidth: 2,
281
- trailingComma: "es5",
282
- printWidth: 80,
283
- plugins: ["prettier-plugin-astro"],
284
- overrides: [
285
- {
286
- files: "*.astro",
287
- options: {
288
- parser: "astro",
289
- },
290
- },
291
- ],
292
- }, null, 2);
293
- await writeFile(`${projectPath}/.prettierrc`, content);
294
- }
295
- async function generateGitIgnore(projectPath) {
296
- const content = `node_modules/
297
- dist/
298
- .astro/
299
- .env
300
- `;
301
- await writeFile(`${projectPath}/.gitignore`, content);
302
- }
303
25
  //# sourceMappingURL=astro.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"astro.js","sourceRoot":"","sources":["../../../src/generators/frontends/astro.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"astro.js","sourceRoot":"","sources":["../../../src/generators/frontends/astro.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,UAAU,EACV,YAAY,GAEb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IAChD,IAAI,CAAC;QACH,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC,CAAA,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,WAAmB,EACnB,MAAuB;IAEvB,MAAM,OAAO,GAAG,GAAG,WAAW,MAAM,CAAC;IACrC,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAE/B,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,8BAA8B,CAAC,CAAC;IAC5E,MAAM,YAAY,CAAC,YAAY,EAAE,WAAW,EAAE,MAA4C,CAAC,CAAC;IAE5F,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC7B,MAAM,kBAAkB,CAAC,GAAG,WAAW,mBAAmB,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC/B,MAAM,kBAAkB,CAAC,GAAG,WAAW,cAAc,CAAC,CAAC;IACzD,CAAC;IAED,UAAU,CAAC,0BAA0B,CAAC,CAAC;AACzC,CAAC"}
@@ -1,3 +1,3 @@
1
- import { type GeneratorConfig } from "@/utils/helpers.js";
1
+ import { type GeneratorConfig } from "../../utils/helpers.js";
2
2
  export declare function generateNextJSFrontend(projectPath: string, config: GeneratorConfig): Promise<void>;
3
3
  //# sourceMappingURL=nextjs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nextjs.d.ts","sourceRoot":"","sources":["../../../src/generators/frontends/nextjs.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0C,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAElG,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC,CAuCf"}
1
+ {"version":3,"file":"nextjs.d.ts","sourceRoot":"","sources":["../../../src/generators/frontends/nextjs.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAY5B,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC,CAgBf"}
@@ -1,274 +1,25 @@
1
- import { createDirectory, writeFile, logSuccess } from "@/utils/helpers.js";
1
+ import { createDirectory, logSuccess, copyTemplate, } from "../../utils/helpers.js";
2
+ import { resolve } from "path";
3
+ import fs from "fs-extra";
4
+ async function removeFileIfExists(filePath) {
5
+ try {
6
+ if (await fs.pathExists(filePath)) {
7
+ await fs.unlink(filePath);
8
+ }
9
+ }
10
+ catch (error) { }
11
+ }
2
12
  export async function generateNextJSFrontend(projectPath, config) {
3
13
  const srcPath = `${projectPath}/src`;
4
14
  await createDirectory(srcPath);
5
- await createDirectory(`${srcPath}/app`);
6
- await createDirectory(`${srcPath}/components`);
7
- await generatePage(srcPath, config);
8
- await generateLayout(srcPath, config);
9
- await generateComponent(srcPath, config);
10
- await generateNextConfig(projectPath, config);
11
- await generateTsConfig(projectPath, config);
12
- await generateGitIgnore(projectPath);
13
- if (config.frontend.cssFramework === "tailwind") {
14
- await generateTailwindConfig(projectPath, config);
15
- await generatePostCSSConfig(projectPath, config);
16
- await generateGlobalStyles(srcPath, config);
17
- }
18
- if (config.frontend.uiComponents === "shadcn") {
19
- await generateShadcnUtils(srcPath, config);
20
- }
21
- if (config.frontend.testing !== "none") {
22
- await generateVitestConfig(projectPath, config);
23
- if (config.frontend.testing === "playwright" || config.frontend.testing === "both") {
24
- await generatePlaywrightConfig(projectPath, config);
25
- }
15
+ const templatePath = resolve(process.cwd(), "src/templates/frontend/nextjs");
16
+ await copyTemplate(templatePath, projectPath, config);
17
+ if (!config.frontend?.eslint) {
18
+ await removeFileIfExists(`${projectPath}/eslint.config.mjs`);
26
19
  }
27
- if (config.frontend.eslint) {
28
- await generateEslintConfig(projectPath, config);
29
- }
30
- if (config.frontend.prettier) {
31
- await generatePrettierConfig(projectPath, config);
20
+ if (!config.frontend?.prettier) {
21
+ await removeFileIfExists(`${projectPath}/.prettierrc`);
32
22
  }
33
23
  logSuccess(`Next.js frontend generated`);
34
24
  }
35
- async function generatePage(srcPath, config) {
36
- const content = `${config.frontend.typescript ? "import Card from '@/components/Card';\n" : ""}export default function Home() {
37
- return (
38
- <main>
39
- <h1>Welcome to ${config.projectName}</h1>
40
- <p>This project was generated by Phos 🚀</p>
41
- <Card title="Getting Started" description="Edit src/app/page.tsx to get started" />
42
- </main>
43
- );
44
- }
45
- `;
46
- await writeFile(`${srcPath}/app/page.${config.frontend.typescript ? "tsx" : "jsx"}`, content);
47
- }
48
- async function generateLayout(srcPath, config) {
49
- const content = `import './globals.css';
50
-
51
- export const metadata = {
52
- title: '${config.projectName}',
53
- description: 'Generated by Phos',
54
- };
55
-
56
- export default function RootLayout({
57
- children,
58
- }: {
59
- children: React.ReactNode;
60
- }) {
61
- return (
62
- <html lang="en">
63
- <body>{children}</body>
64
- </html>
65
- );
66
- }
67
- `;
68
- await writeFile(`${srcPath}/app/layout.${config.frontend.typescript ? "tsx" : "jsx"}`, content);
69
- }
70
- async function generateComponent(srcPath, config) {
71
- const type = config.frontend.typescript
72
- ? `interface CardProps {
73
- title: string;
74
- description: string;
75
- }
76
-
77
- export default function Card({ title, description }: CardProps) {`
78
- : `export default function Card({ title, description }) {`;
79
- const content = `${type}
80
- return (
81
- <div className="card">
82
- <h2>{title}</h2>
83
- <p>{description}</p>
84
- </div>
85
- );
86
- }
87
- `;
88
- await writeFile(`${srcPath}/components/Card.${config.frontend.typescript ? "tsx" : "jsx"}`, content);
89
- }
90
- async function generateNextConfig(projectPath, config) {
91
- const content = `/** @type {import('next').NextConfig} */
92
- const nextConfig = {};
93
-
94
- export default nextConfig;
95
- `;
96
- await writeFile(`${projectPath}/next.config.${config.frontend.typescript ? "js" : "js"}`, content);
97
- }
98
- async function generateTsConfig(projectPath, config) {
99
- if (!config.frontend.typescript)
100
- return;
101
- const content = JSON.stringify({
102
- compilerOptions: {
103
- target: "ES2017",
104
- lib: ["dom", "dom.iterable", "esnext"],
105
- allowJs: true,
106
- skipLibCheck: true,
107
- strict: true,
108
- noEmit: true,
109
- esModuleInterop: true,
110
- module: "esnext",
111
- moduleResolution: "bundler",
112
- resolveJsonModule: true,
113
- isolatedModules: true,
114
- jsx: "preserve",
115
- incremental: true,
116
- plugins: [{ name: "next" }],
117
- paths: {
118
- "@/*": ["./src/*"],
119
- },
120
- },
121
- include: ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
122
- exclude: ["node_modules"],
123
- }, null, 2);
124
- await writeFile(`${projectPath}/tsconfig.json`, content);
125
- }
126
- async function generateTailwindConfig(projectPath, config) {
127
- const content = `/** @type {import('tailwindcss').Config} */
128
- module.exports = {
129
- content: [
130
- './src/pages/**/*.{js,ts,jsx,tsx,mdx}',
131
- './src/components/**/*.{js,ts,jsx,tsx,mdx}',
132
- './src/app/**/*.{js,ts,jsx,tsx,mdx}',
133
- ],
134
- theme: {
135
- extend: {},
136
- },
137
- plugins: [],
138
- };
139
- `;
140
- await writeFile(`${projectPath}/tailwind.config.js`, content);
141
- }
142
- async function generatePostCSSConfig(projectPath, config) {
143
- const content = `module.exports = {
144
- plugins: {
145
- tailwindcss: {},
146
- autoprefixer: {},
147
- },
148
- };
149
- `;
150
- await writeFile(`${projectPath}/postcss.config.js`, content);
151
- }
152
- async function generateGlobalStyles(srcPath, config) {
153
- const content = `@tailwind base;
154
- @tailwind components;
155
- @tailwind utilities;
156
-
157
- * {
158
- box-sizing: border-box;
159
- }
160
- body {
161
- font-family: system-ui, -apple-system, sans-serif;
162
- line-height: 1.5;
163
- }
164
-
165
- main {
166
- padding: 2rem;
167
- max-width: 800px;
168
- margin: 0 auto;
169
- }
170
-
171
- h1 {
172
- font-size: 2.5rem;
173
- margin-bottom: 1rem;
174
- }
175
-
176
- .card {
177
- border: 1px solid #ccc;
178
- border-radius: 8px;
179
- padding: 1.5rem;
180
- margin-top: 2rem;
181
- background: white;
182
- }
183
- `;
184
- await writeFile(`${srcPath}/app/globals.css`, content);
185
- }
186
- async function generateShadcnUtils(srcPath, config) {
187
- await createDirectory(`${srcPath}/lib`);
188
- const content = `import { type ClassValue, clsx } from "clsx"
189
- import { twMerge } from "tailwind-merge"
190
-
191
- export function cn(...inputs: ClassValue[]) {
192
- return twMerge(clsx(inputs))
193
- }
194
- `;
195
- await writeFile(`${srcPath}/lib/utils.${config.frontend.typescript ? "ts" : "js"}`, content);
196
- }
197
- async function generateVitestConfig(projectPath, config) {
198
- const content = `import { defineConfig } from 'vitest/config';
199
- import react from '@vitejs/plugin-react';
200
-
201
- export default defineConfig({
202
- plugins: [react()],
203
- test: {
204
- include: ['src/**/*.{test,spec}.{js,jsx,ts,tsx}'],
205
- environment: 'jsdom',
206
- },
207
- });
208
- `;
209
- await writeFile(`${projectPath}/vitest.config.ts`, content);
210
- }
211
- async function generatePlaywrightConfig(projectPath, config) {
212
- const content = `import { defineConfig, devices } from '@playwright/test';
213
-
214
- export default defineConfig({
215
- testDir: './e2e',
216
- fullyParallel: true,
217
- forbidOnly: !!process.env.CI,
218
- retries: process.env.CI ? 2 : 0,
219
- workers: process.env.CI ? 1 : undefined,
220
- reporter: 'html',
221
- use: {
222
- baseURL: 'http://localhost:3000',
223
- trace: 'on-first-retry',
224
- },
225
- projects: [
226
- {
227
- name: 'chromium',
228
- use: { ...devices['Desktop Chrome'] },
229
- },
230
- ],
231
- webServer: {
232
- command: 'npm run dev',
233
- url: 'http://localhost:3000',
234
- reuseExistingServer: !process.env.CI,
235
- },
236
- });
237
- `;
238
- await writeFile(`${projectPath}/playwright.config.ts`, content);
239
- }
240
- async function generateEslintConfig(projectPath, config) {
241
- if (!config.frontend.eslint)
242
- return;
243
- const content = `module.exports = {
244
- root: true,
245
- extends: ['next/core-web-vitals', 'prettier'],
246
- rules: {
247
- '@typescript-eslint/no-unused-vars': 'warn',
248
- },
249
- };
250
- `;
251
- await writeFile(`${projectPath}/.eslintrc.json`, content);
252
- }
253
- async function generatePrettierConfig(projectPath, config) {
254
- if (!config.frontend.prettier)
255
- return;
256
- const content = JSON.stringify({
257
- semi: false,
258
- singleQuote: true,
259
- tabWidth: 2,
260
- trailingComma: "es5",
261
- printWidth: 80,
262
- }, null, 2);
263
- await writeFile(`${projectPath}/.prettierrc`, content);
264
- }
265
- async function generateGitIgnore(projectPath) {
266
- const content = `node_modules/
267
- .next/
268
- .vercel/
269
- .env
270
- *.log
271
- `;
272
- await writeFile(`${projectPath}/.gitignore`, content);
273
- }
274
25
  //# sourceMappingURL=nextjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nextjs.js","sourceRoot":"","sources":["../../../src/generators/frontends/nextjs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nextjs.js","sourceRoot":"","sources":["../../../src/generators/frontends/nextjs.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,UAAU,EACV,YAAY,GAEb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IAChD,IAAI,CAAC;QACH,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC,CAAA,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,WAAmB,EACnB,MAAuB;IAEvB,MAAM,OAAO,GAAG,GAAG,WAAW,MAAM,CAAC;IACrC,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAE/B,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,+BAA+B,CAAC,CAAC;IAC7E,MAAM,YAAY,CAAC,YAAY,EAAE,WAAW,EAAE,MAA4C,CAAC,CAAC;IAE5F,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC7B,MAAM,kBAAkB,CAAC,GAAG,WAAW,oBAAoB,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC/B,MAAM,kBAAkB,CAAC,GAAG,WAAW,cAAc,CAAC,CAAC;IACzD,CAAC;IAED,UAAU,CAAC,4BAA4B,CAAC,CAAC;AAC3C,CAAC"}
@@ -1,3 +1,3 @@
1
- import { type GeneratorConfig } from "@/utils/helpers.js";
1
+ import { type GeneratorConfig } from "../../utils/helpers.js";
2
2
  export declare function generateSvelteFrontend(projectPath: string, config: GeneratorConfig): Promise<void>;
3
3
  //# sourceMappingURL=svelte.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"svelte.d.ts","sourceRoot":"","sources":["../../../src/generators/frontends/svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0C,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAElG,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC,CAyCf"}
1
+ {"version":3,"file":"svelte.d.ts","sourceRoot":"","sources":["../../../src/generators/frontends/svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAY5B,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC,CAiBf"}