create-z3 0.0.8 → 0.0.10
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 +74 -3
- package/package.json +1 -1
- package/templates/tanstack-start/src/env.ts +3 -4
package/dist/index.js
CHANGED
|
@@ -1813,6 +1813,44 @@ function generateAuthProvidersBlock(oauthProviders, emailPasswordEnabled) {
|
|
|
1813
1813
|
}
|
|
1814
1814
|
return parts.join("\n ");
|
|
1815
1815
|
}
|
|
1816
|
+
function generateEnvTsServerSchema(providers) {
|
|
1817
|
+
if (providers.length === 0) {
|
|
1818
|
+
return "";
|
|
1819
|
+
}
|
|
1820
|
+
const schemas = providers.map((providerId) => {
|
|
1821
|
+
const provider = getProvider(providerId);
|
|
1822
|
+
if (!provider) {
|
|
1823
|
+
throw new Error(`Unknown OAuth provider: ${providerId}`);
|
|
1824
|
+
}
|
|
1825
|
+
const lines = [];
|
|
1826
|
+
lines.push(`${provider.envPrefix}_CLIENT_ID: z.string(),`);
|
|
1827
|
+
lines.push(`${provider.envPrefix}_CLIENT_SECRET: z.string(),`);
|
|
1828
|
+
if (providerId === "figma") {
|
|
1829
|
+
lines.push(`FIGMA_CLIENT_KEY: z.string(),`);
|
|
1830
|
+
}
|
|
1831
|
+
return lines.join("\n ");
|
|
1832
|
+
}).join("\n ");
|
|
1833
|
+
return schemas;
|
|
1834
|
+
}
|
|
1835
|
+
function generateEnvTsRuntimeMapping(providers) {
|
|
1836
|
+
if (providers.length === 0) {
|
|
1837
|
+
return "";
|
|
1838
|
+
}
|
|
1839
|
+
const mappings = providers.map((providerId) => {
|
|
1840
|
+
const provider = getProvider(providerId);
|
|
1841
|
+
if (!provider) {
|
|
1842
|
+
throw new Error(`Unknown OAuth provider: ${providerId}`);
|
|
1843
|
+
}
|
|
1844
|
+
const lines = [];
|
|
1845
|
+
lines.push(`${provider.envPrefix}_CLIENT_ID: process.env.${provider.envPrefix}_CLIENT_ID,`);
|
|
1846
|
+
lines.push(`${provider.envPrefix}_CLIENT_SECRET: process.env.${provider.envPrefix}_CLIENT_SECRET,`);
|
|
1847
|
+
if (providerId === "figma") {
|
|
1848
|
+
lines.push(`FIGMA_CLIENT_KEY: process.env.FIGMA_CLIENT_KEY,`);
|
|
1849
|
+
}
|
|
1850
|
+
return lines.join("\n ");
|
|
1851
|
+
}).join("\n ");
|
|
1852
|
+
return mappings;
|
|
1853
|
+
}
|
|
1816
1854
|
function generateOAuthUIProvidersBlock(providers) {
|
|
1817
1855
|
if (providers.length === 0) {
|
|
1818
1856
|
return "__REMOVE_SOCIAL_PROP__";
|
|
@@ -2094,12 +2132,22 @@ Please check the URL and your internet connection, then try again.`
|
|
|
2094
2132
|
}
|
|
2095
2133
|
}
|
|
2096
2134
|
if (options.oauthProviders.length > 0) {
|
|
2097
|
-
const envSpinner = ora("Updating
|
|
2135
|
+
const envSpinner = ora("Updating .env.example...").start();
|
|
2098
2136
|
try {
|
|
2099
2137
|
await this.updateEnvExample(options.oauthProviders);
|
|
2100
|
-
envSpinner.succeed("
|
|
2138
|
+
envSpinner.succeed(".env.example updated");
|
|
2139
|
+
} catch (error) {
|
|
2140
|
+
envSpinner.fail("Failed to update .env.example");
|
|
2141
|
+
throw error;
|
|
2142
|
+
}
|
|
2143
|
+
}
|
|
2144
|
+
if (options.oauthProviders.length > 0) {
|
|
2145
|
+
const envTsSpinner = ora("Updating typed env configuration...").start();
|
|
2146
|
+
try {
|
|
2147
|
+
await this.updateEnvTs(options.oauthProviders);
|
|
2148
|
+
envTsSpinner.succeed("Typed env configuration updated");
|
|
2101
2149
|
} catch (error) {
|
|
2102
|
-
|
|
2150
|
+
envTsSpinner.fail("Failed to update typed env configuration");
|
|
2103
2151
|
throw error;
|
|
2104
2152
|
}
|
|
2105
2153
|
}
|
|
@@ -2247,6 +2295,29 @@ var TanStackInstaller = class extends FrameworkInstaller {
|
|
|
2247
2295
|
themeContent
|
|
2248
2296
|
);
|
|
2249
2297
|
}
|
|
2298
|
+
/**
|
|
2299
|
+
* Update env.ts with OAuth provider environment variables
|
|
2300
|
+
* Target file: src/env.ts
|
|
2301
|
+
* Placeholders: // {{OAUTH_ENV_SERVER_SCHEMA}} and // {{OAUTH_ENV_RUNTIME_MAPPING}}
|
|
2302
|
+
* Adds zod schema validation and runtime mappings for OAuth credentials
|
|
2303
|
+
*
|
|
2304
|
+
* @param selectedProviders - Array of provider IDs to configure
|
|
2305
|
+
*/
|
|
2306
|
+
async updateEnvTs(selectedProviders) {
|
|
2307
|
+
const envFilePath = join2(this.targetPath, "src/env.ts");
|
|
2308
|
+
const serverSchema = generateEnvTsServerSchema(selectedProviders);
|
|
2309
|
+
await replacePlaceholder(
|
|
2310
|
+
envFilePath,
|
|
2311
|
+
"// {{OAUTH_ENV_SERVER_SCHEMA}}",
|
|
2312
|
+
serverSchema
|
|
2313
|
+
);
|
|
2314
|
+
const runtimeMapping = generateEnvTsRuntimeMapping(selectedProviders);
|
|
2315
|
+
await replacePlaceholder(
|
|
2316
|
+
envFilePath,
|
|
2317
|
+
"// {{OAUTH_ENV_RUNTIME_MAPPING}}",
|
|
2318
|
+
runtimeMapping
|
|
2319
|
+
);
|
|
2320
|
+
}
|
|
2250
2321
|
};
|
|
2251
2322
|
|
|
2252
2323
|
// src/index.ts
|
package/package.json
CHANGED
|
@@ -38,8 +38,7 @@ export const env = createEnv({
|
|
|
38
38
|
// Convex deployment URL (server-side operations)
|
|
39
39
|
CONVEX_URL: z.string().url().optional(),
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
GOOGLE_CLIENT_SECRET: z.string().optional(),
|
|
41
|
+
// {{OAUTH_ENV_SERVER_SCHEMA}}
|
|
43
42
|
},
|
|
44
43
|
|
|
45
44
|
/**
|
|
@@ -71,8 +70,8 @@ export const env = createEnv({
|
|
|
71
70
|
AWS_ACCESS_KEY_ID: process.env.AWS_ACCESS_KEY_ID,
|
|
72
71
|
AWS_SECRET_ACCESS_KEY: process.env.AWS_SECRET_ACCESS_KEY,
|
|
73
72
|
CONVEX_URL: process.env.CONVEX_URL,
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
|
|
74
|
+
// {{OAUTH_ENV_RUNTIME_MAPPING}}
|
|
76
75
|
|
|
77
76
|
// Client vars (Vite exposes these automatically to import.meta.env)
|
|
78
77
|
VITE_CONVEX_URL: process.env.VITE_CONVEX_URL,
|