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 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 environment variables...").start();
2135
+ const envSpinner = ora("Updating .env.example...").start();
2098
2136
  try {
2099
2137
  await this.updateEnvExample(options.oauthProviders);
2100
- envSpinner.succeed("Environment variables updated");
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
- envSpinner.fail("Failed to update environment variables");
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-z3",
3
- "version": "0.0.8",
3
+ "version": "0.0.10",
4
4
  "type": "module",
5
5
  "description": "CLI for scaffolding Z3 Stack applications (TanStack/Next.js + Convex + Better Auth)",
6
6
  "bin": {
@@ -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
- GOOGLE_CLIENT_ID: z.string().optional(),
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
- GOOGLE_CLIENT_ID: process.env.GOOGLE_CLIENT_ID,
75
- GOOGLE_CLIENT_SECRET: process.env.GOOGLE_CLIENT_SECRET,
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,