create-z3 0.0.6 → 0.0.8
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/dist/index.js +62 -59
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1786,24 +1786,32 @@ async function replacePlaceholder(filePath, placeholder, content, options) {
|
|
|
1786
1786
|
function generateAuthProvidersBlock(oauthProviders, emailPasswordEnabled) {
|
|
1787
1787
|
const parts = [];
|
|
1788
1788
|
if (emailPasswordEnabled) {
|
|
1789
|
-
parts.push(
|
|
1789
|
+
parts.push(`emailAndPassword: {
|
|
1790
|
+
enabled: true
|
|
1791
|
+
},`);
|
|
1790
1792
|
}
|
|
1791
1793
|
if (oauthProviders.length > 0) {
|
|
1792
|
-
const
|
|
1794
|
+
const providersObject = oauthProviders.map((providerId) => {
|
|
1793
1795
|
const provider = getProvider(providerId);
|
|
1794
1796
|
if (!provider) {
|
|
1795
1797
|
throw new Error(`Unknown OAuth provider: ${providerId}`);
|
|
1796
1798
|
}
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1799
|
+
const configLines = [
|
|
1800
|
+
`clientId: process.env.${provider.envPrefix}_CLIENT_ID as string,`,
|
|
1801
|
+
`clientSecret: process.env.${provider.envPrefix}_CLIENT_SECRET as string,`
|
|
1802
|
+
];
|
|
1803
|
+
if (providerId === "figma") {
|
|
1804
|
+
configLines.push(`clientKey: process.env.FIGMA_CLIENT_KEY as string,`);
|
|
1801
1805
|
}
|
|
1802
|
-
return
|
|
1803
|
-
|
|
1804
|
-
|
|
1806
|
+
return `${providerId}: {
|
|
1807
|
+
${configLines.join("\n ")}
|
|
1808
|
+
}`;
|
|
1809
|
+
}).join(",\n ");
|
|
1810
|
+
parts.push(`socialProviders: {
|
|
1811
|
+
${providersObject}
|
|
1812
|
+
},`);
|
|
1805
1813
|
}
|
|
1806
|
-
return parts.join("\n");
|
|
1814
|
+
return parts.join("\n ");
|
|
1807
1815
|
}
|
|
1808
1816
|
function generateOAuthUIProvidersBlock(providers) {
|
|
1809
1817
|
if (providers.length === 0) {
|
|
@@ -1936,6 +1944,23 @@ var FrameworkInstaller = class {
|
|
|
1936
1944
|
);
|
|
1937
1945
|
}
|
|
1938
1946
|
}
|
|
1947
|
+
/**
|
|
1948
|
+
* Format generated files using the project's format command
|
|
1949
|
+
* Runs after all file modifications to ensure consistent code style
|
|
1950
|
+
*/
|
|
1951
|
+
async formatCode() {
|
|
1952
|
+
const packageManager = this.detectPackageManager();
|
|
1953
|
+
const spinner = ora("Formatting generated files...").start();
|
|
1954
|
+
try {
|
|
1955
|
+
await execa(packageManager, ["run", "format"], {
|
|
1956
|
+
cwd: this.targetPath,
|
|
1957
|
+
stdio: "pipe"
|
|
1958
|
+
});
|
|
1959
|
+
spinner.succeed("Code formatted successfully");
|
|
1960
|
+
} catch (error) {
|
|
1961
|
+
spinner.warn("Failed to format code (you may need to run `npm run format` manually)");
|
|
1962
|
+
}
|
|
1963
|
+
}
|
|
1939
1964
|
/**
|
|
1940
1965
|
* Initialize Git repository in target directory
|
|
1941
1966
|
* Creates initial commit with all files
|
|
@@ -2113,6 +2138,7 @@ Please check the URL and your internet connection, then try again.`
|
|
|
2113
2138
|
}
|
|
2114
2139
|
if (options.installDependencies) {
|
|
2115
2140
|
await this.installDependencies();
|
|
2141
|
+
await this.formatCode();
|
|
2116
2142
|
}
|
|
2117
2143
|
}
|
|
2118
2144
|
};
|
|
@@ -2233,57 +2259,34 @@ var program = new Command();
|
|
|
2233
2259
|
async function promptOAuthProviders() {
|
|
2234
2260
|
const popularProviders = getPopularProviders();
|
|
2235
2261
|
const additionalProviders = getAdditionalProviders();
|
|
2236
|
-
const
|
|
2262
|
+
const allOAuthProviders = [...popularProviders, ...additionalProviders].sort(
|
|
2263
|
+
(a, b) => a.name.localeCompare(b.name)
|
|
2264
|
+
);
|
|
2265
|
+
const choices = [
|
|
2237
2266
|
{
|
|
2238
2267
|
name: "Email & Password",
|
|
2239
2268
|
value: "__email_password__",
|
|
2240
2269
|
checked: true
|
|
2241
2270
|
// Default enabled
|
|
2242
2271
|
},
|
|
2243
|
-
new Separator("
|
|
2244
|
-
...
|
|
2272
|
+
new Separator("OAuth Providers (A-Z):"),
|
|
2273
|
+
...allOAuthProviders.map((provider) => ({
|
|
2245
2274
|
name: provider.name,
|
|
2246
|
-
value: provider.id
|
|
2247
|
-
|
|
2248
|
-
|
|
2249
|
-
{
|
|
2250
|
-
name: `> Show more providers (${additionalProviders.length} additional)`,
|
|
2251
|
-
value: "__show_more__"
|
|
2252
|
-
}
|
|
2275
|
+
value: provider.id,
|
|
2276
|
+
checked: false
|
|
2277
|
+
}))
|
|
2253
2278
|
];
|
|
2254
|
-
|
|
2255
|
-
message: "Select authentication providers:",
|
|
2256
|
-
choices
|
|
2279
|
+
const selectedProviders = await checkbox({
|
|
2280
|
+
message: "Select authentication providers (space to select, enter to confirm):",
|
|
2281
|
+
choices,
|
|
2282
|
+
pageSize: 15,
|
|
2283
|
+
// Show more items at once
|
|
2284
|
+
loop: false
|
|
2285
|
+
// Don't wrap around
|
|
2257
2286
|
});
|
|
2258
|
-
if (selectedProviders.includes("__show_more__")) {
|
|
2259
|
-
const alreadySelected = selectedProviders.filter((id) => id !== "__show_more__");
|
|
2260
|
-
const expandedChoices = [
|
|
2261
|
-
{
|
|
2262
|
-
name: "Email & Password",
|
|
2263
|
-
value: "__email_password__",
|
|
2264
|
-
checked: alreadySelected.includes("__email_password__")
|
|
2265
|
-
},
|
|
2266
|
-
new Separator("Popular OAuth Providers:"),
|
|
2267
|
-
...popularProviders.map((provider) => ({
|
|
2268
|
-
name: provider.name,
|
|
2269
|
-
value: provider.id,
|
|
2270
|
-
checked: alreadySelected.includes(provider.id)
|
|
2271
|
-
})),
|
|
2272
|
-
new Separator("Additional OAuth Providers:"),
|
|
2273
|
-
...additionalProviders.map((provider) => ({
|
|
2274
|
-
name: provider.name,
|
|
2275
|
-
value: provider.id,
|
|
2276
|
-
checked: alreadySelected.includes(provider.id)
|
|
2277
|
-
}))
|
|
2278
|
-
];
|
|
2279
|
-
selectedProviders = await checkbox({
|
|
2280
|
-
message: "Select authentication providers:",
|
|
2281
|
-
choices: expandedChoices
|
|
2282
|
-
});
|
|
2283
|
-
}
|
|
2284
2287
|
const emailPassword = selectedProviders.includes("__email_password__");
|
|
2285
2288
|
const oauthProviders = selectedProviders.filter(
|
|
2286
|
-
(id) => id !== "__email_password__"
|
|
2289
|
+
(id) => id !== "__email_password__"
|
|
2287
2290
|
);
|
|
2288
2291
|
if (oauthProviders.length > 0) {
|
|
2289
2292
|
const providersNeedingExtraConfig = getProvidersRequiringExtraConfig(oauthProviders);
|
|
@@ -2349,15 +2352,6 @@ program.name("create-z3").version(packageJson.version).description("CLI for scaf
|
|
|
2349
2352
|
displayDirectoryExistsError(projectName);
|
|
2350
2353
|
}
|
|
2351
2354
|
}
|
|
2352
|
-
let createdPath;
|
|
2353
|
-
try {
|
|
2354
|
-
createdPath = await createProjectDirectory(projectName, cwd);
|
|
2355
|
-
} catch (error) {
|
|
2356
|
-
if (error instanceof Error && "code" in error && error.code === "EACCES") {
|
|
2357
|
-
displayPermissionError(targetDir);
|
|
2358
|
-
}
|
|
2359
|
-
throw error;
|
|
2360
|
-
}
|
|
2361
2355
|
const framework = await select({
|
|
2362
2356
|
message: "Which framework would you like to use?",
|
|
2363
2357
|
choices: [
|
|
@@ -2402,6 +2396,15 @@ program.name("create-z3").version(packageJson.version).description("CLI for scaf
|
|
|
2402
2396
|
initGit,
|
|
2403
2397
|
installDependencies
|
|
2404
2398
|
};
|
|
2399
|
+
let createdPath;
|
|
2400
|
+
try {
|
|
2401
|
+
createdPath = await createProjectDirectory(projectName, cwd);
|
|
2402
|
+
} catch (error) {
|
|
2403
|
+
if (error instanceof Error && "code" in error && error.code === "EACCES") {
|
|
2404
|
+
displayPermissionError(targetDir);
|
|
2405
|
+
}
|
|
2406
|
+
throw error;
|
|
2407
|
+
}
|
|
2405
2408
|
let installer;
|
|
2406
2409
|
if (framework === "tanstack") {
|
|
2407
2410
|
installer = new TanStackInstaller(createdPath, projectName);
|