@tanstack/create-start 1.92.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.
- package/LICENSE +21 -0
- package/README.md +0 -0
- package/dist/cli-entry.d.ts +1 -0
- package/dist/cli-entry.mjs +5 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.mjs +92 -0
- package/dist/constants.d.ts +3 -0
- package/dist/constants.mjs +7 -0
- package/dist/directory.d.ts +3 -0
- package/dist/directory.mjs +62 -0
- package/dist/index.d.ts +2446 -0
- package/dist/index.mjs +15 -0
- package/dist/logo.d.ts +1 -0
- package/dist/logo.mjs +28 -0
- package/dist/module.d.ts +67 -0
- package/dist/module.mjs +168 -0
- package/dist/modules/core/index.d.ts +1446 -0
- package/dist/modules/core/index.mjs +218 -0
- package/dist/modules/core/template/app/client.tsx +10 -0
- package/dist/modules/core/template/app/router.tsx +18 -0
- package/dist/modules/core/template/app/routes/__root.tsx +50 -0
- package/dist/modules/core/template/app/ssr.tsx +15 -0
- package/dist/modules/core/template/app.config.ts +5 -0
- package/dist/modules/core/template/tsconfig.json +10 -0
- package/dist/modules/git.d.ts +231 -0
- package/dist/modules/git.mjs +114 -0
- package/dist/modules/ide.d.ts +92 -0
- package/dist/modules/ide.mjs +70 -0
- package/dist/modules/packageJson.d.ts +541 -0
- package/dist/modules/packageJson.mjs +153 -0
- package/dist/modules/packageManager.d.ts +139 -0
- package/dist/modules/packageManager.mjs +89 -0
- package/dist/modules/vscode/index.d.ts +33 -0
- package/dist/modules/vscode/index.mjs +35 -0
- package/dist/modules/vscode/template/_dot_vscode/settings.json +11 -0
- package/dist/templates/barebones/index.d.ts +1507 -0
- package/dist/templates/barebones/index.mjs +60 -0
- package/dist/templates/barebones/template/app/routes/index.tsx +11 -0
- package/dist/templates/index.d.ts +13 -0
- package/dist/templates/index.mjs +60 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.mjs +0 -0
- package/dist/utils/debug.d.ts +11 -0
- package/dist/utils/debug.mjs +71 -0
- package/dist/utils/getPackageManager.d.ts +2 -0
- package/dist/utils/getPackageManager.mjs +11 -0
- package/dist/utils/helpers/helperFactory.d.ts +15 -0
- package/dist/utils/helpers/helperFactory.mjs +3 -0
- package/dist/utils/helpers/index.d.ts +51 -0
- package/dist/utils/helpers/index.mjs +227 -0
- package/dist/utils/runCmd.d.ts +1 -0
- package/dist/utils/runCmd.mjs +4 -0
- package/dist/utils/runPackageManagerCommand.d.ts +4 -0
- package/dist/utils/runPackageManagerCommand.mjs +17 -0
- package/dist/utils/spawnCmd.d.ts +1 -0
- package/dist/utils/spawnCmd.mjs +30 -0
- package/dist/utils/validateProjectName.d.ts +8 -0
- package/dist/utils/validateProjectName.mjs +14 -0
- package/index.js +3 -0
- package/package.json +66 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { dirname } from "node:path";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { input } from "@inquirer/prompts";
|
|
5
|
+
import { InvalidArgumentError, createOption } from "@commander-js/extra-typings";
|
|
6
|
+
import { initHelpers } from "../utils/helpers/index.mjs";
|
|
7
|
+
import { createModule } from "../module.mjs";
|
|
8
|
+
import { validateProjectName } from "../utils/validateProjectName.mjs";
|
|
9
|
+
import { createDebugger } from "../utils/debug.mjs";
|
|
10
|
+
const debug = createDebugger("package-json");
|
|
11
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
12
|
+
const __dirname = dirname(__filename);
|
|
13
|
+
export const packageNameCliOption = createOption(
|
|
14
|
+
"--package-name <string>",
|
|
15
|
+
"The name to use in the package.json"
|
|
16
|
+
).argParser((name) => {
|
|
17
|
+
const validation = validateProjectName(name);
|
|
18
|
+
if (!validation.valid) {
|
|
19
|
+
debug.error("Invalid package name", { name, validation });
|
|
20
|
+
throw new InvalidArgumentError(`The project name ${name} is invalid`);
|
|
21
|
+
}
|
|
22
|
+
debug.verbose("Validated package name", { name });
|
|
23
|
+
return name;
|
|
24
|
+
});
|
|
25
|
+
const dependencies = z.array(
|
|
26
|
+
z.object({
|
|
27
|
+
name: z.string(),
|
|
28
|
+
version: z.string()
|
|
29
|
+
})
|
|
30
|
+
);
|
|
31
|
+
const script = z.object({
|
|
32
|
+
name: z.string(),
|
|
33
|
+
script: z.string()
|
|
34
|
+
});
|
|
35
|
+
const schema = z.object({
|
|
36
|
+
type: z.enum(["new", "update"]),
|
|
37
|
+
name: z.string().optional(),
|
|
38
|
+
dependencies: dependencies.optional(),
|
|
39
|
+
devDependencies: dependencies.optional(),
|
|
40
|
+
scripts: z.array(script).optional()
|
|
41
|
+
});
|
|
42
|
+
export const packageJsonModule = createModule(schema).init((schema2) => schema2).prompt((schema2) => {
|
|
43
|
+
return schema2.transform(async (vals) => {
|
|
44
|
+
debug.verbose("Transforming prompt schema", vals);
|
|
45
|
+
if (vals.type === "new") {
|
|
46
|
+
const name = vals.name ? vals.name : await input({
|
|
47
|
+
message: "Enter the project name",
|
|
48
|
+
default: "tanstack-start",
|
|
49
|
+
validate: (name2) => {
|
|
50
|
+
const validation = validateProjectName(name2);
|
|
51
|
+
if (validation.valid) {
|
|
52
|
+
debug.verbose("Valid project name entered", { name: name2 });
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
debug.warn("Invalid project name entered", {
|
|
56
|
+
name: name2,
|
|
57
|
+
problems: validation.problems
|
|
58
|
+
});
|
|
59
|
+
return "Invalid project name: " + validation.problems[0];
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
return {
|
|
63
|
+
...vals,
|
|
64
|
+
name
|
|
65
|
+
};
|
|
66
|
+
} else {
|
|
67
|
+
return vals;
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}).validateAndApply({
|
|
71
|
+
validate: async ({ cfg, targetPath }) => {
|
|
72
|
+
debug.verbose("Validating package.json", { cfg, targetPath });
|
|
73
|
+
const issues = [];
|
|
74
|
+
const _ = initHelpers(__dirname, targetPath);
|
|
75
|
+
const packageJsonExists = await _.targetFileExists("./package.json");
|
|
76
|
+
debug.verbose("Package.json exists check", { exists: packageJsonExists });
|
|
77
|
+
if (cfg.type === "new") {
|
|
78
|
+
if (packageJsonExists) {
|
|
79
|
+
debug.warn("Package.json already exists for new project");
|
|
80
|
+
issues.push("Package.json already exists");
|
|
81
|
+
}
|
|
82
|
+
} else {
|
|
83
|
+
if (!packageJsonExists) {
|
|
84
|
+
debug.warn("Package.json missing for update");
|
|
85
|
+
issues.push("Package.json doesn't exist to update");
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return issues;
|
|
89
|
+
},
|
|
90
|
+
apply: async ({ cfg, targetPath }) => {
|
|
91
|
+
debug.verbose("Applying package.json changes", { cfg, targetPath });
|
|
92
|
+
const _ = initHelpers(__dirname, targetPath);
|
|
93
|
+
if (cfg.type === "new") {
|
|
94
|
+
const packageJson2 = {
|
|
95
|
+
name: cfg.name,
|
|
96
|
+
version: "0.0.0",
|
|
97
|
+
private: true,
|
|
98
|
+
type: "module"
|
|
99
|
+
};
|
|
100
|
+
debug.verbose("Creating new package.json", packageJson2);
|
|
101
|
+
await _.writeTargetfile(
|
|
102
|
+
"./package.json",
|
|
103
|
+
JSON.stringify(packageJson2, null, 2),
|
|
104
|
+
false
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
let packageJson = JSON.parse(await _.readTargetFile("./package.json"));
|
|
108
|
+
debug.verbose("Current package.json contents", packageJson);
|
|
109
|
+
const dependenciesRecord = createDepsRecord(cfg.dependencies ?? []);
|
|
110
|
+
const devDependenciesRecord = createDepsRecord(cfg.devDependencies ?? []);
|
|
111
|
+
const scriptsRecord = createScriptsRecord(cfg.scripts ?? []);
|
|
112
|
+
packageJson = {
|
|
113
|
+
...packageJson,
|
|
114
|
+
scripts: {
|
|
115
|
+
...packageJson.scripts,
|
|
116
|
+
...scriptsRecord
|
|
117
|
+
},
|
|
118
|
+
dependencies: {
|
|
119
|
+
...packageJson.dependencies,
|
|
120
|
+
...dependenciesRecord
|
|
121
|
+
},
|
|
122
|
+
devDependencies: {
|
|
123
|
+
...packageJson.devDependencies,
|
|
124
|
+
...devDependenciesRecord
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
debug.verbose("Updated package.json contents", packageJson);
|
|
128
|
+
await _.writeTargetfile(
|
|
129
|
+
"./package.json",
|
|
130
|
+
JSON.stringify(packageJson, null, 2),
|
|
131
|
+
true
|
|
132
|
+
);
|
|
133
|
+
},
|
|
134
|
+
spinnerConfigFn: (cfg) => ({
|
|
135
|
+
success: `${cfg.type === "new" ? "Created" : "Updated"} package.json`,
|
|
136
|
+
error: `Failed to ${cfg.type === "new" ? "create" : "update"} package.json`,
|
|
137
|
+
inProgress: `${cfg.type === "new" ? "Creating" : "Updating"} package.json`
|
|
138
|
+
})
|
|
139
|
+
});
|
|
140
|
+
const createDepsRecord = (deps) => deps.reduce(
|
|
141
|
+
(acc, dep) => ({
|
|
142
|
+
...acc,
|
|
143
|
+
[dep.name]: dep.version
|
|
144
|
+
}),
|
|
145
|
+
{}
|
|
146
|
+
);
|
|
147
|
+
const createScriptsRecord = (scripts) => scripts.reduce(
|
|
148
|
+
(acc, script2) => ({
|
|
149
|
+
...acc,
|
|
150
|
+
[script2.name]: script2.script
|
|
151
|
+
}),
|
|
152
|
+
{}
|
|
153
|
+
);
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const packageManagerOption: import("@commander-js/extra-typings").Option<`--package-manager <${string}>`, undefined, undefined, "bun" | "pnpm" | "npm" | "yarn", false, undefined>;
|
|
3
|
+
export declare const packageManagerModule: {
|
|
4
|
+
_baseSchema: z.ZodObject<{
|
|
5
|
+
packageManager: z.ZodOptional<z.ZodEnum<["bun", "pnpm", "npm", "yarn"]>>;
|
|
6
|
+
installDeps: z.ZodOptional<z.ZodBoolean>;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
packageManager?: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
9
|
+
installDeps?: boolean | undefined;
|
|
10
|
+
}, {
|
|
11
|
+
packageManager?: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
12
|
+
installDeps?: boolean | undefined;
|
|
13
|
+
}>;
|
|
14
|
+
_initSchema: z.ZodEffects<z.ZodObject<{
|
|
15
|
+
packageManager: z.ZodOptional<z.ZodEnum<["bun", "pnpm", "npm", "yarn"]>>;
|
|
16
|
+
installDeps: z.ZodOptional<z.ZodBoolean>;
|
|
17
|
+
}, "strip", z.ZodTypeAny, {
|
|
18
|
+
packageManager?: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
19
|
+
installDeps?: boolean | undefined;
|
|
20
|
+
}, {
|
|
21
|
+
packageManager?: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
22
|
+
installDeps?: boolean | undefined;
|
|
23
|
+
}>, {
|
|
24
|
+
packageManager: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
25
|
+
installDeps: boolean | undefined;
|
|
26
|
+
}, {
|
|
27
|
+
packageManager?: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
28
|
+
installDeps?: boolean | undefined;
|
|
29
|
+
}>;
|
|
30
|
+
_promptSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
|
|
31
|
+
packageManager: z.ZodOptional<z.ZodEnum<["bun", "pnpm", "npm", "yarn"]>>;
|
|
32
|
+
installDeps: z.ZodOptional<z.ZodBoolean>;
|
|
33
|
+
}, "strip", z.ZodTypeAny, {
|
|
34
|
+
packageManager?: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
35
|
+
installDeps?: boolean | undefined;
|
|
36
|
+
}, {
|
|
37
|
+
packageManager?: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
38
|
+
installDeps?: boolean | undefined;
|
|
39
|
+
}>, {
|
|
40
|
+
packageManager: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
41
|
+
installDeps: boolean | undefined;
|
|
42
|
+
}, {
|
|
43
|
+
packageManager?: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
44
|
+
installDeps?: boolean | undefined;
|
|
45
|
+
}>, {
|
|
46
|
+
installDeps: boolean;
|
|
47
|
+
packageManager: "bun" | "pnpm" | "npm" | "yarn";
|
|
48
|
+
}, {
|
|
49
|
+
packageManager?: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
50
|
+
installDeps?: boolean | undefined;
|
|
51
|
+
}>;
|
|
52
|
+
_applyFn: ({ cfg, targetPath }: {
|
|
53
|
+
targetPath: string;
|
|
54
|
+
cfg: {
|
|
55
|
+
installDeps: boolean;
|
|
56
|
+
packageManager: "bun" | "pnpm" | "npm" | "yarn";
|
|
57
|
+
};
|
|
58
|
+
}) => Promise<void>;
|
|
59
|
+
_validateFn: ((opts: {
|
|
60
|
+
targetPath: string;
|
|
61
|
+
cfg: {
|
|
62
|
+
installDeps: boolean;
|
|
63
|
+
packageManager: "bun" | "pnpm" | "npm" | "yarn";
|
|
64
|
+
};
|
|
65
|
+
}) => Promise<Array<string>> | Array<string>) | undefined;
|
|
66
|
+
_spinnerConfigFn: ((cfg: {
|
|
67
|
+
installDeps: boolean;
|
|
68
|
+
packageManager: "bun" | "pnpm" | "npm" | "yarn";
|
|
69
|
+
}) => {
|
|
70
|
+
success: string;
|
|
71
|
+
error: string;
|
|
72
|
+
inProgress: string;
|
|
73
|
+
} | undefined) | undefined;
|
|
74
|
+
init(cfg: {
|
|
75
|
+
packageManager?: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
76
|
+
installDeps?: boolean | undefined;
|
|
77
|
+
}): Promise<z.ParseReturnType<z.ZodEffects<z.ZodObject<{
|
|
78
|
+
packageManager: z.ZodOptional<z.ZodEnum<["bun", "pnpm", "npm", "yarn"]>>;
|
|
79
|
+
installDeps: z.ZodOptional<z.ZodBoolean>;
|
|
80
|
+
}, "strip", z.ZodTypeAny, {
|
|
81
|
+
packageManager?: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
82
|
+
installDeps?: boolean | undefined;
|
|
83
|
+
}, {
|
|
84
|
+
packageManager?: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
85
|
+
installDeps?: boolean | undefined;
|
|
86
|
+
}>, {
|
|
87
|
+
packageManager: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
88
|
+
installDeps: boolean | undefined;
|
|
89
|
+
}, {
|
|
90
|
+
packageManager?: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
91
|
+
installDeps?: boolean | undefined;
|
|
92
|
+
}>>>;
|
|
93
|
+
initSafe(cfg: {
|
|
94
|
+
packageManager?: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
95
|
+
installDeps?: boolean | undefined;
|
|
96
|
+
}): Promise<z.SafeParseReturnType<{
|
|
97
|
+
packageManager?: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
98
|
+
installDeps?: boolean | undefined;
|
|
99
|
+
}, {
|
|
100
|
+
packageManager: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
101
|
+
installDeps: boolean | undefined;
|
|
102
|
+
}>>;
|
|
103
|
+
prompt(cfg: {
|
|
104
|
+
packageManager?: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
105
|
+
installDeps?: boolean | undefined;
|
|
106
|
+
}): Promise<z.SafeParseReturnType<{
|
|
107
|
+
packageManager?: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
108
|
+
installDeps?: boolean | undefined;
|
|
109
|
+
}, {
|
|
110
|
+
installDeps: boolean;
|
|
111
|
+
packageManager: "bun" | "pnpm" | "npm" | "yarn";
|
|
112
|
+
}>>;
|
|
113
|
+
validate(cfg: {
|
|
114
|
+
packageManager?: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
115
|
+
installDeps?: boolean | undefined;
|
|
116
|
+
}): Promise<z.SafeParseReturnType<{
|
|
117
|
+
packageManager?: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
118
|
+
installDeps?: boolean | undefined;
|
|
119
|
+
}, {
|
|
120
|
+
installDeps: boolean;
|
|
121
|
+
packageManager: "bun" | "pnpm" | "npm" | "yarn";
|
|
122
|
+
}>>;
|
|
123
|
+
apply({ cfg, targetPath, }: {
|
|
124
|
+
cfg: {
|
|
125
|
+
installDeps: boolean;
|
|
126
|
+
packageManager: "bun" | "pnpm" | "npm" | "yarn";
|
|
127
|
+
};
|
|
128
|
+
targetPath: string;
|
|
129
|
+
}): Promise<void>;
|
|
130
|
+
execute({ cfg, targetPath, type, applyingMessage, }: {
|
|
131
|
+
cfg: {
|
|
132
|
+
packageManager?: "bun" | "pnpm" | "npm" | "yarn" | undefined;
|
|
133
|
+
installDeps?: boolean | undefined;
|
|
134
|
+
};
|
|
135
|
+
targetPath: string;
|
|
136
|
+
type: "new-project" | "update";
|
|
137
|
+
applyingMessage?: string;
|
|
138
|
+
}): Promise<void>;
|
|
139
|
+
};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { InvalidArgumentError, createOption } from "@commander-js/extra-typings";
|
|
3
|
+
import { select } from "@inquirer/prompts";
|
|
4
|
+
import { createModule } from "../module.mjs";
|
|
5
|
+
import { SUPPORTED_PACKAGE_MANAGERS } from "../constants.mjs";
|
|
6
|
+
import { getPackageManager } from "../utils/getPackageManager.mjs";
|
|
7
|
+
import { install } from "../utils/runPackageManagerCommand.mjs";
|
|
8
|
+
import { createDebugger } from "../utils/debug.mjs";
|
|
9
|
+
const debug = createDebugger("packageManager");
|
|
10
|
+
const schema = z.object({
|
|
11
|
+
packageManager: z.enum(SUPPORTED_PACKAGE_MANAGERS),
|
|
12
|
+
installDeps: z.boolean()
|
|
13
|
+
});
|
|
14
|
+
const DEFAULT_PACKAGE_MANAGER = "npm";
|
|
15
|
+
const options = schema.shape.packageManager.options;
|
|
16
|
+
export const packageManagerOption = createOption(
|
|
17
|
+
`--package-manager <${options.join("|")}>`,
|
|
18
|
+
`use this Package Manager (${options.join(", ")})`
|
|
19
|
+
).argParser((value) => {
|
|
20
|
+
if (!options.includes(value)) {
|
|
21
|
+
debug.error("Invalid package manager provided", { value, allowed: options });
|
|
22
|
+
throw new InvalidArgumentError(
|
|
23
|
+
`Invalid Package Manager: ${value}. Only the following are allowed: ${options.join(", ")}`
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
return value;
|
|
27
|
+
});
|
|
28
|
+
export const packageManagerModule = createModule(
|
|
29
|
+
z.object({
|
|
30
|
+
packageManager: z.enum(SUPPORTED_PACKAGE_MANAGERS).optional(),
|
|
31
|
+
installDeps: z.boolean().optional()
|
|
32
|
+
})
|
|
33
|
+
).init(
|
|
34
|
+
(schema2) => schema2.transform((vals) => {
|
|
35
|
+
debug.verbose("Initializing package manager", vals);
|
|
36
|
+
const detectedPM = getPackageManager();
|
|
37
|
+
debug.verbose("Detected package manager", { detectedPM });
|
|
38
|
+
return {
|
|
39
|
+
packageManager: vals.packageManager ?? detectedPM,
|
|
40
|
+
installDeps: vals.installDeps
|
|
41
|
+
};
|
|
42
|
+
})
|
|
43
|
+
).prompt(
|
|
44
|
+
(schema2) => schema2.transform(async (vals) => {
|
|
45
|
+
debug.verbose("Prompting for package manager options", vals);
|
|
46
|
+
const packageManager = vals.packageManager != void 0 ? vals.packageManager : await select({
|
|
47
|
+
message: "Select a package manager",
|
|
48
|
+
choices: options.map((pm) => ({ value: pm })),
|
|
49
|
+
default: getPackageManager() ?? DEFAULT_PACKAGE_MANAGER
|
|
50
|
+
});
|
|
51
|
+
const installDeps = vals.installDeps != void 0 ? vals.installDeps : await select({
|
|
52
|
+
message: "Install dependencies",
|
|
53
|
+
choices: [
|
|
54
|
+
{ name: "yes", value: true },
|
|
55
|
+
{ name: "no", value: false }
|
|
56
|
+
],
|
|
57
|
+
default: "yes"
|
|
58
|
+
});
|
|
59
|
+
debug.verbose("Package manager options selected", {
|
|
60
|
+
packageManager,
|
|
61
|
+
installDeps
|
|
62
|
+
});
|
|
63
|
+
return {
|
|
64
|
+
installDeps,
|
|
65
|
+
packageManager
|
|
66
|
+
};
|
|
67
|
+
})
|
|
68
|
+
).validateAndApply({
|
|
69
|
+
spinnerConfigFn: (cfg) => {
|
|
70
|
+
debug.verbose("Configuring spinner", cfg);
|
|
71
|
+
return cfg.installDeps ? {
|
|
72
|
+
error: `Failed to install dependencies with ${cfg.packageManager}`,
|
|
73
|
+
inProgress: `Installing dependencies with ${cfg.packageManager}`,
|
|
74
|
+
success: `Installed dependencies with ${cfg.packageManager}`
|
|
75
|
+
} : void 0;
|
|
76
|
+
},
|
|
77
|
+
apply: async ({ cfg, targetPath }) => {
|
|
78
|
+
if (cfg.installDeps) {
|
|
79
|
+
debug.info("Installing dependencies", {
|
|
80
|
+
packageManager: cfg.packageManager,
|
|
81
|
+
targetPath
|
|
82
|
+
});
|
|
83
|
+
await install(cfg.packageManager, targetPath);
|
|
84
|
+
debug.info("Dependencies installed successfully");
|
|
85
|
+
} else {
|
|
86
|
+
debug.info("Skipping dependency installation");
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
});
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const vsCodeModule: {
|
|
3
|
+
_baseSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
4
|
+
_initSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
5
|
+
_promptSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
6
|
+
_applyFn: ({ targetPath }: {
|
|
7
|
+
targetPath: string;
|
|
8
|
+
cfg: {};
|
|
9
|
+
}) => Promise<void>;
|
|
10
|
+
_validateFn: (({ targetPath }: {
|
|
11
|
+
targetPath: string;
|
|
12
|
+
cfg: {};
|
|
13
|
+
}) => Promise<string[]>) | undefined;
|
|
14
|
+
_spinnerConfigFn: ((cfg: {}) => {
|
|
15
|
+
success: string;
|
|
16
|
+
error: string;
|
|
17
|
+
inProgress: string;
|
|
18
|
+
} | undefined) | undefined;
|
|
19
|
+
init(cfg: {}): Promise<z.ParseReturnType<z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>>>;
|
|
20
|
+
initSafe(cfg: {}): Promise<z.SafeParseReturnType<{}, {}>>;
|
|
21
|
+
prompt(cfg: {}): Promise<z.SafeParseReturnType<{}, {}>>;
|
|
22
|
+
validate(cfg: {}): Promise<z.SafeParseReturnType<{}, {}>>;
|
|
23
|
+
apply({ cfg, targetPath, }: {
|
|
24
|
+
cfg: {};
|
|
25
|
+
targetPath: string;
|
|
26
|
+
}): Promise<void>;
|
|
27
|
+
execute({ cfg, targetPath, type, applyingMessage, }: {
|
|
28
|
+
cfg: {};
|
|
29
|
+
targetPath: string;
|
|
30
|
+
type: "new-project" | "update";
|
|
31
|
+
applyingMessage?: string;
|
|
32
|
+
}): Promise<void>;
|
|
33
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { dirname } from "node:path";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { initHelpers } from "../../utils/helpers/index.mjs";
|
|
5
|
+
import { createModule } from "../../module.mjs";
|
|
6
|
+
import { createDebugger } from "../../utils/debug.mjs";
|
|
7
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
8
|
+
const __dirname = dirname(__filename);
|
|
9
|
+
const debug = createDebugger("vscode");
|
|
10
|
+
export const vsCodeModule = createModule(z.object({})).init((schema) => schema).prompt((schema) => schema).validateAndApply({
|
|
11
|
+
validate: async ({ targetPath }) => {
|
|
12
|
+
debug.verbose("Validating vscode module", { targetPath });
|
|
13
|
+
const _ = initHelpers(__dirname, targetPath);
|
|
14
|
+
const issues = await _.getTemplateFilesThatWouldBeOverwritten({
|
|
15
|
+
file: "**/*",
|
|
16
|
+
templateFolder: "./template",
|
|
17
|
+
targetFolder: targetPath,
|
|
18
|
+
overwrite: false
|
|
19
|
+
});
|
|
20
|
+
debug.verbose("Validation complete", { issueCount: issues.length });
|
|
21
|
+
return issues;
|
|
22
|
+
},
|
|
23
|
+
apply: async ({ targetPath }) => {
|
|
24
|
+
debug.info("Applying vscode module", { targetPath });
|
|
25
|
+
const _ = initHelpers(__dirname, targetPath);
|
|
26
|
+
debug.verbose("Copying template files");
|
|
27
|
+
await _.copyTemplateFiles({
|
|
28
|
+
file: "**/*",
|
|
29
|
+
templateFolder: "./template",
|
|
30
|
+
targetFolder: ".",
|
|
31
|
+
overwrite: false
|
|
32
|
+
});
|
|
33
|
+
debug.info("VSCode module applied successfully");
|
|
34
|
+
}
|
|
35
|
+
});
|