@farm.js/create-app 0.1.0-beta.26 → 0.1.0-beta.28
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.
- package/bin/create-farm-app.js +1 -0
- package/dist/index.js +52 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +52 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/templates/_renderers/solid/farm.config.ts +12 -0
- package/templates/_renderers/solid/package.json +26 -0
- package/templates/_renderers/solid/src/app/api/greeting/route.ts +15 -0
- package/templates/_renderers/solid/src/app/layout.tsx +15 -0
- package/templates/_renderers/solid/src/app/page.tsx +56 -0
- package/templates/_renderers/solid/src/app/solid.css +22 -0
- package/templates/_renderers/solid/src/components/resource-links.tsx +71 -0
- package/templates/_renderers/solid/src/lib/api-client.ts +4 -0
- package/templates/_renderers/solid/src/lib/api.generated.ts +7 -0
- package/templates/_renderers/solid/tsconfig.json +25 -0
- package/templates/_renderers/vue/farm.config.ts +12 -0
- package/templates/_renderers/vue/package.json +27 -0
- package/templates/_renderers/vue/src/app/api/greeting/route.ts +15 -0
- package/templates/_renderers/vue/src/app/layout.vue +21 -0
- package/templates/_renderers/vue/src/app/page.vue +69 -0
- package/templates/_renderers/vue/src/app/vue.css +26 -0
- package/templates/_renderers/vue/src/components/resource-links.vue +33 -0
- package/templates/_renderers/vue/src/env.d.ts +7 -0
- package/templates/_renderers/vue/src/lib/api-client.ts +4 -0
- package/templates/_renderers/vue/src/lib/api.generated.ts +7 -0
- package/templates/_renderers/vue/tsconfig.json +23 -0
- package/templates/auth/package.json +3 -3
- package/templates/basic/package.json +2 -2
- package/templates/better-auth/package.json +3 -3
package/dist/index.mjs
CHANGED
|
@@ -2715,6 +2715,46 @@ async function createApp(projectName, options = {}) {
|
|
|
2715
2715
|
logger.error(`Unknown template "${template}". Available: ${templates.map((t) => `"${t}"`).join(", ")}`);
|
|
2716
2716
|
process.exit(1);
|
|
2717
2717
|
}
|
|
2718
|
+
let renderer = options.renderer?.toLowerCase();
|
|
2719
|
+
if (renderer && renderer !== "react" && renderer !== "solid" && renderer !== "vue") {
|
|
2720
|
+
logger.error(`Unknown renderer "${options.renderer}". Available: "react", "solid", "vue".`);
|
|
2721
|
+
process.exit(1);
|
|
2722
|
+
}
|
|
2723
|
+
if (!renderer && !options.template && template === "basic") {
|
|
2724
|
+
const response = await prompts({
|
|
2725
|
+
type: "select",
|
|
2726
|
+
name: "renderer",
|
|
2727
|
+
message: "Which rendering library would you like to use?",
|
|
2728
|
+
choices: [
|
|
2729
|
+
{
|
|
2730
|
+
title: "React",
|
|
2731
|
+
value: "react",
|
|
2732
|
+
description: "The default FARMJS renderer"
|
|
2733
|
+
},
|
|
2734
|
+
{
|
|
2735
|
+
title: "Solid",
|
|
2736
|
+
value: "solid",
|
|
2737
|
+
description: "Fine-grained reactivity with Solid"
|
|
2738
|
+
},
|
|
2739
|
+
{
|
|
2740
|
+
title: "Vue",
|
|
2741
|
+
value: "vue",
|
|
2742
|
+
description: "Vue SFCs with server rendering and hydration"
|
|
2743
|
+
}
|
|
2744
|
+
],
|
|
2745
|
+
initial: 0
|
|
2746
|
+
});
|
|
2747
|
+
if (!response.renderer) {
|
|
2748
|
+
logger.error("Operation cancelled.");
|
|
2749
|
+
process.exit(1);
|
|
2750
|
+
}
|
|
2751
|
+
renderer = response.renderer;
|
|
2752
|
+
}
|
|
2753
|
+
renderer ||= "react";
|
|
2754
|
+
if (renderer !== "react" && template !== "basic") {
|
|
2755
|
+
logger.error(`The "${template}" integration starter currently targets React. Use --template basic with --renderer ${renderer}.`);
|
|
2756
|
+
process.exit(1);
|
|
2757
|
+
}
|
|
2718
2758
|
let useTypeScript = options.typescript;
|
|
2719
2759
|
if (useTypeScript === void 0) {
|
|
2720
2760
|
const response = await prompts({
|
|
@@ -2744,7 +2784,7 @@ async function createApp(projectName, options = {}) {
|
|
|
2744
2784
|
}
|
|
2745
2785
|
logger.info(`Creating FARMJS app in ${projectPath}`);
|
|
2746
2786
|
await fs.mkdir(projectPath, { recursive: true });
|
|
2747
|
-
const integrationResult = await copyTemplate(template, projectPath, useTypeScript);
|
|
2787
|
+
const integrationResult = await copyTemplate(template, projectPath, useTypeScript, renderer);
|
|
2748
2788
|
await updatePackageJson(projectPath, projectName, packageManager);
|
|
2749
2789
|
logger.success(`🚜 Created ${projectName}`);
|
|
2750
2790
|
if (!options.skipInstall) {
|
|
@@ -2766,13 +2806,23 @@ async function createApp(projectName, options = {}) {
|
|
|
2766
2806
|
for (const note of integrationResult.notes) logger.info(note);
|
|
2767
2807
|
}
|
|
2768
2808
|
}
|
|
2769
|
-
async function copyTemplate(template, projectPath, useTypeScript) {
|
|
2809
|
+
async function copyTemplate(template, projectPath, useTypeScript, renderer) {
|
|
2770
2810
|
const details = templateDetails[template];
|
|
2771
2811
|
await copyDir(path.join(__dirname, "..", "templates", details?.integration ? "basic" : template), projectPath);
|
|
2772
2812
|
if (useTypeScript) {
|
|
2773
2813
|
const tsTemplatePath = path.join(__dirname, "..", "templates", "_typescript");
|
|
2774
2814
|
if (await dirExists(tsTemplatePath)) await copyDir(tsTemplatePath, projectPath);
|
|
2775
2815
|
}
|
|
2816
|
+
if (renderer === "solid") await copyDir(path.join(__dirname, "..", "templates", "_renderers", "solid"), projectPath);
|
|
2817
|
+
if (renderer === "vue") {
|
|
2818
|
+
const rendererTemplatePath = path.join(__dirname, "..", "templates", "_renderers", "vue");
|
|
2819
|
+
await Promise.all([
|
|
2820
|
+
fs.rm(path.join(projectPath, "src", "app", "page.tsx"), { force: true }),
|
|
2821
|
+
fs.rm(path.join(projectPath, "src", "app", "layout.tsx"), { force: true }),
|
|
2822
|
+
fs.rm(path.join(projectPath, "src", "components", "resource-links.tsx"), { force: true })
|
|
2823
|
+
]);
|
|
2824
|
+
await copyDir(rendererTemplatePath, projectPath);
|
|
2825
|
+
}
|
|
2776
2826
|
if (!details?.integration) return;
|
|
2777
2827
|
const result = await addFarmIntegration({
|
|
2778
2828
|
root: projectPath,
|