nx-factory-cli 2.1.23 → 2.1.25

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.
Files changed (59) hide show
  1. package/dist/commands/add-app.d.ts.map +1 -1
  2. package/dist/commands/add-app.js +65 -92
  3. package/dist/commands/add-app.js.map +1 -1
  4. package/dist/commands/add-auth.d.ts.map +1 -1
  5. package/dist/commands/add-auth.js +43 -4
  6. package/dist/commands/add-auth.js.map +1 -1
  7. package/dist/commands/add-component.d.ts.map +1 -1
  8. package/dist/commands/add-component.js +4 -3
  9. package/dist/commands/add-component.js.map +1 -1
  10. package/dist/commands/add-lib.d.ts.map +1 -1
  11. package/dist/commands/add-lib.js +78 -42
  12. package/dist/commands/add-lib.js.map +1 -1
  13. package/dist/commands/doctor.js +1 -1
  14. package/dist/commands/doctor.js.map +1 -1
  15. package/dist/commands/init.d.ts.map +1 -1
  16. package/dist/commands/init.js +92 -58
  17. package/dist/commands/init.js.map +1 -1
  18. package/dist/commands/migrate.d.ts +7 -0
  19. package/dist/commands/migrate.d.ts.map +1 -0
  20. package/dist/commands/migrate.js +365 -0
  21. package/dist/commands/migrate.js.map +1 -0
  22. package/dist/commands/publish.js +1 -1
  23. package/dist/commands/publish.js.map +1 -1
  24. package/dist/commands/remove-component.d.ts.map +1 -1
  25. package/dist/commands/remove-component.js +3 -1
  26. package/dist/commands/remove-component.js.map +1 -1
  27. package/dist/commands/update.d.ts.map +1 -1
  28. package/dist/commands/update.js +4 -2
  29. package/dist/commands/update.js.map +1 -1
  30. package/dist/config.d.ts +2 -0
  31. package/dist/config.d.ts.map +1 -1
  32. package/dist/config.js.map +1 -1
  33. package/dist/exec.d.ts +3 -1
  34. package/dist/exec.d.ts.map +1 -1
  35. package/dist/exec.js +7 -2
  36. package/dist/exec.js.map +1 -1
  37. package/dist/index.js +11 -1
  38. package/dist/index.js.map +1 -1
  39. package/dist/setups/auth/base.d.ts.map +1 -1
  40. package/dist/setups/auth/base.js +5 -21
  41. package/dist/setups/auth/base.js.map +1 -1
  42. package/dist/setups/auth/index.d.ts +1 -1
  43. package/dist/setups/auth/index.d.ts.map +1 -1
  44. package/dist/setups/auth/systems/better-auth.d.ts.map +1 -1
  45. package/dist/setups/auth/systems/better-auth.js +88 -266
  46. package/dist/setups/auth/systems/better-auth.js.map +1 -1
  47. package/dist/setups/auth/systems/clerk.d.ts.map +1 -1
  48. package/dist/setups/auth/systems/clerk.js +61 -142
  49. package/dist/setups/auth/systems/clerk.js.map +1 -1
  50. package/dist/setups/auth/systems/workos.d.ts.map +1 -1
  51. package/dist/setups/auth/systems/workos.js +92 -203
  52. package/dist/setups/auth/systems/workos.js.map +1 -1
  53. package/dist/setups/auth/types.d.ts +12 -10
  54. package/dist/setups/auth/types.d.ts.map +1 -1
  55. package/dist/tsconfigs.d.ts +54 -0
  56. package/dist/tsconfigs.d.ts.map +1 -0
  57. package/dist/tsconfigs.js +165 -0
  58. package/dist/tsconfigs.js.map +1 -0
  59. package/package.json +1 -1
@@ -1,10 +1,24 @@
1
1
  import path from "path";
2
2
  import { writeFile, ensureDir } from "../../../files.js";
3
3
  import { scopedPackageName } from "../../../config.js";
4
+ /**
5
+ * WorkOS package selection by framework.
6
+ * @workos-inc/authkit-nextjs is Next.js-specific.
7
+ * @workos-inc/node is the universal server SDK — always included.
8
+ */
9
+ function workosDepsForFrameworks(frameworks) {
10
+ const deps = {
11
+ "@workos-inc/node": "latest",
12
+ };
13
+ if (frameworks.includes("nextjs")) {
14
+ deps["@workos-inc/authkit-nextjs"] = "latest";
15
+ }
16
+ return deps;
17
+ }
4
18
  export const workosScaffolder = {
5
19
  label: "WorkOS AuthKit",
20
+ // Base deps computed dynamically in scaffold(); static field left empty.
6
21
  dependencies: {
7
- "@workos-inc/authkit-nextjs": "latest",
8
22
  "@workos-inc/node": "latest",
9
23
  },
10
24
  devDependencies: {
@@ -16,10 +30,19 @@ export const workosScaffolder = {
16
30
  },
17
31
  async scaffold(pkgDir, opts) {
18
32
  const authPackageName = scopedPackageName(opts.scope, "auth");
33
+ const frameworkDeps = workosDepsForFrameworks(opts.frameworks);
34
+ // Merge framework-specific deps into package.json (base already written)
35
+ const { default: fs } = await import("fs-extra");
36
+ const pkgPath = path.join(pkgDir, "package.json");
37
+ if (await fs.pathExists(pkgPath)) {
38
+ const pkg = await fs.readJson(pkgPath);
39
+ pkg.dependencies = { ...pkg.dependencies, ...frameworkDeps };
40
+ await fs.writeJson(pkgPath, pkg, { spaces: 2 });
41
+ }
19
42
  await ensureDir(path.join(pkgDir, "."));
20
- // ── index.ts ──────────────────────────────────────────────────────────
43
+ // ── index.ts ────────────────────────────────────────────────────────────
21
44
  await writeFile(path.join(pkgDir, "index.ts"), `/**
22
- * ${authPackageName} — WorkOS AuthKit latest setup.
45
+ * ${authPackageName} — WorkOS AuthKit.
23
46
  *
24
47
  * Prefer sub-path imports:
25
48
  * import { getUser, withAuth } from "${authPackageName}/server"
@@ -29,266 +52,132 @@ export const workosScaffolder = {
29
52
  export * from "./server.js";
30
53
  export * from "./client.js";
31
54
  `);
32
- await writeFile(path.join(pkgDir, "next.ts"), `/** Next.js adapter for ${authPackageName} (WorkOS). */
55
+ // ── next.ts ─────────────────────────────────────────────────────────────
56
+ if (opts.frameworks.includes("nextjs")) {
57
+ await writeFile(path.join(pkgDir, "next.ts"), `/** Next.js adapter for ${authPackageName} (WorkOS). */
33
58
  export {
34
59
  authMiddleware,
35
60
  buildMiddleware,
36
61
  middlewareConfig,
37
62
  } from "./middleware.js";
38
63
  `);
39
- // ── server.ts ─────────────────────────────────────────────────────────
40
- // AuthKit v1+: getUser() replaces getSession(), withAuth() HOC
64
+ }
65
+ // ── server.ts ───────────────────────────────────────────────────────────
41
66
  await writeFile(path.join(pkgDir, "server.ts"), `/**
42
67
  * WorkOS AuthKit v1+ — server-side helpers.
43
68
  *
44
- * AuthKit v1 changes from v0:
45
- * - getSession() → getUser() (returns { user, sessionId, accessToken })
46
- * - withAuth() — HOC now passes { user } prop (no session wrapper)
47
- * - handleAuth() — still the catch-all callback handler
48
- *
49
- * @example Server Component (manual check)
69
+ * @example Next.js App Router (Server Component)
50
70
  * import { getUser } from "${authPackageName}/server";
51
71
  * const { user } = await getUser();
52
- * if (!user) redirect("/sign-in");
53
72
  *
54
- * @example Server Component (HOC auto-redirects)
73
+ * @example Next.js Route Handler / Remix loader
55
74
  * import { withAuth } from "${authPackageName}/server";
56
- * export default withAuth(async function Page({ user }) {
57
- * return <h1>Hello {user.firstName}</h1>;
75
+ * export const GET = withAuth(async ({ user }) => {
76
+ * return Response.json({ user });
58
77
  * });
59
78
  *
60
- * @example Sign-in redirect
61
- * import { getSignInUrl } from "${authPackageName}/server";
62
- * redirect(await getSignInUrl());
63
- */
64
-
65
- export {
66
- getUser, // Replaces getSession() in AuthKit v1
67
- withAuth, // HOC — passes { user } to your component
68
- getSignInUrl, // Returns the WorkOS hosted sign-in URL
69
- getSignUpUrl, // Returns the WorkOS hosted sign-up URL
70
- signOut, // Server-side sign out (clears session cookie)
71
- refreshSession, // Extend the session lifetime
72
- handleAuth, // Catch-all callback route handler (GET)
73
- verifyAccessToken, // Verify a JWT access token
74
- encryptSession, // For custom session storage scenarios
75
- terminateSession, // Force-terminate a specific session
76
- } from "@workos-inc/authkit-nextjs";
77
-
78
- export type {
79
- User,
80
- AuthKitSession,
81
- } from "@workos-inc/authkit-nextjs";
82
-
83
- /**
84
- * Low-level WorkOS Node SDK.
85
- * Use for organization management, directory sync, audit logs, etc.
86
- *
79
+ * @example Vite / Express API (node SDK)
87
80
  * import { workos } from "${authPackageName}/server";
88
- * const orgs = await workos.organizations.listOrganizations();
81
+ * const { user } = await workos.userManagement.getUser(userId);
89
82
  */
83
+ ${opts.frameworks.includes("nextjs") ? `export { getUser, withAuth, signOut } from "@workos-inc/authkit-nextjs";` : ""}
90
84
  import WorkOS from "@workos-inc/node";
91
85
 
92
- if (!process.env.WORKOS_API_KEY) {
93
- throw new Error("Missing WORKOS_API_KEY — set it in your app's .env.local");
94
- }
86
+ export const workos = new WorkOS(process.env.WORKOS_API_KEY!);
95
87
 
96
- export const workos = new WorkOS(process.env.WORKOS_API_KEY);
97
- export const workosClientId = process.env.WORKOS_CLIENT_ID!;
88
+ export type { User } from "@workos-inc/node";
98
89
  `);
99
- // ── client.ts ─────────────────────────────────────────────────────────
100
- // AuthKit v1: useAuth() hook from the /components sub-path
90
+ // ── client.ts ───────────────────────────────────────────────────────────
101
91
  await writeFile(path.join(pkgDir, "client.ts"), `/**
102
- * WorkOS AuthKit v1+ — client-side hooks.
103
- *
104
- * The AuthKitProvider is required at the root of apps that use useAuth().
105
- *
106
- * @example Root layout
107
- * import { AuthKitProvider } from "${authPackageName}/client";
108
- * export default function Layout({ children }) {
109
- * return <AuthKitProvider>{children}</AuthKitProvider>;
110
- * }
111
- *
112
- * @example Any client component
113
- * "use client";
114
- * import { useAuth } from "${authPackageName}/client";
115
- * const { user, loading, getAccessToken } = useAuth();
92
+ * WorkOS AuthKit — client-side helper.
93
+ * WorkOS uses server-side sessions; there is no React client SDK.
94
+ * This module re-exports the auth URL helpers used in client components.
116
95
  */
117
96
  "use client";
118
97
 
119
- export {
120
- useAuth, // { user, loading, getAccessToken, getRawAccessToken }
121
- AuthKitProvider, // Required root context provider
122
- } from "@workos-inc/authkit-nextjs/components";
98
+ export function getAuthorizationUrl(opts?: { returnPathname?: string }): string {
99
+ const base = process.env.NEXT_PUBLIC_WORKOS_REDIRECT_URI ?? "/api/auth/callback";
100
+ if (opts?.returnPathname) {
101
+ return \`\${base}?returnPathname=\${encodeURIComponent(opts.returnPathname)}\`;
102
+ }
103
+ return base;
104
+ }
123
105
  `);
124
- // ── middleware.ts ─────────────────────────────────────────────────────
125
- // AuthKit v1: authkitMiddleware with middlewareAuth option
126
- await writeFile(path.join(pkgDir, "middleware.ts"), `/**
127
- * WorkOS AuthKit v1+ — Next.js middleware.
128
- *
129
- * Quick start — copy into apps/<your-app>/middleware.ts:
130
- *
131
- * import type { NextRequest } from "next/server";
132
- * import { authMiddleware, middlewareConfig } from "${authPackageName}/middleware";
106
+ // ── middleware.ts (Next.js only) ─────────────────────────────────────────
107
+ if (opts.frameworks.includes("nextjs")) {
108
+ await writeFile(path.join(pkgDir, "middleware.ts"), `/**
109
+ * WorkOS AuthKit — Next.js middleware.
133
110
  *
134
- * export default function middleware(request: NextRequest) {
135
- * return authMiddleware(request);
136
- * }
111
+ * Copy into apps/<your-app>/middleware.ts:
137
112
  *
113
+ * import { authMiddleware, middlewareConfig } from "${authPackageName}/next";
114
+ * export default authMiddleware;
138
115
  * export const config = middlewareConfig;
139
- *
140
- * Custom public paths:
141
- *
142
- * import { buildMiddleware } from "${authPackageName}/middleware";
143
- * export default buildMiddleware({ unauthenticatedPaths: ["/", "/about"] });
144
- * export { middlewareConfig as config } from "${authPackageName}/middleware";
145
116
  */
146
117
  import { authkitMiddleware } from "@workos-inc/authkit-nextjs";
147
- import type { AuthkitMiddlewareOptions } from "@workos-inc/authkit-nextjs";
118
+
119
+ export const authMiddleware = authkitMiddleware();
120
+
121
+ export function buildMiddleware(opts?: Parameters<typeof authkitMiddleware>[0]) {
122
+ return authkitMiddleware(opts);
123
+ }
148
124
 
149
125
  export const middlewareConfig = {
150
126
  matcher: [
151
- "/((?!_next|[^?]*\\.(?:html?|css|js(?!on)|jpe?g|webp|png|gif|svg|ttf|woff2?|ico|csv|docx?|xlsx?|zip|webmanifest)).*)",
152
- "/(api|trpc)(.*)",
127
+ "/((?!_next/static|_next/image|favicon.ico|.*\\.(?:svg|png|jpg|jpeg|gif|webp)$).*)",
153
128
  ],
154
129
  };
155
-
156
- const defaultUnauthenticatedPaths = [
157
- "/",
158
- "/sign-in",
159
- "/sign-up",
160
- "/api/webhooks(.*)",
161
- ];
162
-
163
- /** Default middleware — requires auth on all paths except the ones above */
164
- export const authMiddleware = authkitMiddleware({
165
- middlewareAuth: {
166
- enabled: true,
167
- unauthenticatedPaths: defaultUnauthenticatedPaths,
168
- },
169
- });
170
-
171
- /**
172
- * Build a middleware with configurable unauthenticated paths.
173
- *
174
- * @param unauthenticatedPaths - Paths that do NOT require authentication
175
- * @param options - Additional AuthKit middleware options
176
- */
177
- export function buildMiddleware({
178
- unauthenticatedPaths = defaultUnauthenticatedPaths,
179
- ...options
180
- }: {
181
- unauthenticatedPaths?: string[];
182
- } & Omit<AuthkitMiddlewareOptions, "middlewareAuth"> = {}) {
183
- return authkitMiddleware({
184
- ...options,
185
- middlewareAuth: {
186
- enabled: true,
187
- unauthenticatedPaths,
188
- },
189
- });
190
- }
191
130
  `);
192
- // ── .env.example ─────────────────────────────────────────────────────────
193
- await writeFile(path.join(pkgDir, ".env.example"), `# ─── WorkOS AuthKit v1+ ──────────────────────────────────────────────────────
194
- # Get these from: https://dashboard.workos.com → your app → API Keys
131
+ }
132
+ // ── .env.example ────────────────────────────────────────────────────────
133
+ await writeFile(path.join(pkgDir, ".env.example"), `# WorkOS — https://dashboard.workos.com → API Keys
195
134
  WORKOS_API_KEY=sk_REPLACE_ME
196
135
  WORKOS_CLIENT_ID=client_REPLACE_ME
197
136
 
198
- # Must match the redirect URI configured in your WorkOS dashboard
199
- WORKOS_REDIRECT_URI=http://localhost:3000/callback
137
+ # AuthKit redirect URI (register this in your WorkOS dashboard)
138
+ WORKOS_REDIRECT_URI=http://localhost:3000/api/auth/callback
139
+ NEXT_PUBLIC_WORKOS_REDIRECT_URI=http://localhost:3000/api/auth/callback
200
140
 
201
- # Cookie encryption secret — generate with: openssl rand -base64 32
202
- # Must be at least 32 characters
203
- WORKOS_COOKIE_PASSWORD=REPLACE_WITH_RANDOM_32_CHAR_STRING
204
-
205
- # The public URL of your app
206
- NEXT_PUBLIC_APP_URL=http://localhost:3000
141
+ # Cookie secret — generate with: openssl rand -base64 32
142
+ WORKOS_COOKIE_PASSWORD=REPLACE_WITH_32_CHAR_RANDOM_STRING
207
143
  `);
208
- // ── README.md ─────────────────────────────────────────────────────────────
209
- await writeFile(path.join(pkgDir, "README.md"), `# ${authPackageName} — WorkOS AuthKit v1+
144
+ // ── README.md ────────────────────────────────────────────────────────────
145
+ await writeFile(path.join(pkgDir, "README.md"), `# ${authPackageName} — WorkOS AuthKit
210
146
 
211
- Shared authentication powered by [WorkOS AuthKit](https://workos.com/docs/user-management) — enterprise SSO, SCIM, MFA, magic auth, and a hosted sign-in UI.
147
+ Shared authentication package powered by [WorkOS AuthKit](https://workos.com/docs/user-management).
212
148
 
213
- > **AuthKit v1 notes:** \`getSession()\` was renamed to \`getUser()\`. The HOC \`withAuth()\` now passes \`{ user }\` directly (no session wrapper). \`AuthKitProvider\` is now required for \`useAuth()\`.
149
+ ## Installed packages
150
+ ${Object.keys(frameworkDeps).map((d) => `- \`${d}\``).join("\n")}
214
151
 
215
152
  ## Setup
216
153
 
217
- ### 1. Copy env vars to your app
154
+ ### 1. Copy env vars
218
155
  \`\`\`bash
219
156
  cp packages/auth/.env.example apps/<your-app>/.env.local
220
157
  \`\`\`
221
158
 
222
- Fill in from your [WorkOS Dashboard](https://dashboard.workos.com):
223
- - \`WORKOS_API_KEY\`
224
- - \`WORKOS_CLIENT_ID\`
225
- - \`WORKOS_COOKIE_PASSWORD\` (run: \`openssl rand -base64 32\`)
226
- - Add \`WORKOS_REDIRECT_URI\` in the WorkOS dashboard → Redirects
227
-
228
- ### 2. Add the dependency
229
- \`\`\`json
230
- { "dependencies": { "${authPackageName}": "workspace:*" } }
231
- \`\`\`
232
-
233
- ### 3. Add the callback route
159
+ ${opts.frameworks.includes("nextjs") ? `### 2. Add the callback route (Next.js)
234
160
  \`\`\`ts
235
- // apps/<your-app>/app/callback/route.ts
236
- export { handleAuth as GET } from "${authPackageName}/server";
161
+ // apps/<your-app>/app/api/auth/callback/route.ts
162
+ import { handleAuth } from "@workos-inc/authkit-nextjs";
163
+ export const GET = handleAuth();
237
164
  \`\`\`
238
165
 
239
- ### 4. Add the middleware
166
+ ### 3. Add middleware
240
167
  \`\`\`ts
241
168
  // apps/<your-app>/middleware.ts
242
- import type { NextRequest } from "next/server";
243
- import { authMiddleware, middlewareConfig } from "${authPackageName}/next";
244
-
245
- export default function middleware(request: NextRequest) {
246
- return authMiddleware(request);
247
- }
248
-
249
- export const config = middlewareConfig;
250
- \`\`\`
251
-
252
- ### 5. Wrap your layout with AuthKitProvider
253
- \`\`\`tsx
254
- // apps/<your-app>/app/layout.tsx
255
- import { AuthKitProvider } from "${authPackageName}/client";
256
- export default function Layout({ children }) {
257
- return <AuthKitProvider>{children}</AuthKitProvider>;
258
- }
169
+ export { authMiddleware as default, middlewareConfig as config } from "${authPackageName}/next";
259
170
  \`\`\`
260
171
 
261
- ### 6. Use in your pages
262
- \`\`\`tsx
263
- // Server component — HOC (auto-redirects if not signed in)
264
- import { withAuth } from "${authPackageName}/server";
265
- export default withAuth(async function Page({ user }) {
266
- return <h1>Hello, {user.firstName}</h1>;
267
- });
268
-
269
- // Server component — manual
172
+ ### 4. Use in server components
173
+ \`\`\`ts
270
174
  import { getUser } from "${authPackageName}/server";
271
175
  const { user } = await getUser();
272
-
273
- // Client component
274
- "use client";
275
- import { useAuth } from "${authPackageName}/client";
276
- const { user, loading } = useAuth();
277
-
278
- // Sign-in redirect page
279
- import { getSignInUrl } from "${authPackageName}/server";
280
- import { redirect } from "next/navigation";
281
- export default async function SignIn() { redirect(await getSignInUrl()); }
282
- \`\`\`
283
-
284
- ## API
285
-
286
- | Sub-path | Key exports |
287
- |---|---|
288
- | \`${authPackageName}/server\` | \`getUser()\`, \`withAuth()\`, \`getSignInUrl()\`, \`handleAuth\`, \`workos\`, \`signOut()\` |
289
- | \`${authPackageName}/client\` | \`useAuth\`, \`AuthKitProvider\` |
290
- | \`${authPackageName}/middleware\` | \`authMiddleware\`, \`buildMiddleware()\`, \`middlewareConfig\` |
291
- | \`${authPackageName}/next\` | \`authMiddleware\`, \`buildMiddleware()\`, \`middlewareConfig\` |
176
+ \`\`\`` : `### 2. Use the node SDK
177
+ \`\`\`ts
178
+ import { workos } from "${authPackageName}/server";
179
+ const user = await workos.userManagement.getUser(userId);
180
+ \`\`\``}
292
181
  `);
293
182
  },
294
183
  };
@@ -1 +1 @@
1
- {"version":3,"file":"workos.js","sourceRoot":"","sources":["../../../../src/setups/auth/systems/workos.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGvD,MAAM,CAAC,MAAM,gBAAgB,GAA0B;IACtD,KAAK,EAAE,gBAAgB;IAEvB,YAAY,EAAE;QACb,4BAA4B,EAAE,QAAQ;QACtC,kBAAkB,EAAE,QAAQ;KAC5B;IAED,eAAe,EAAE;QAChB,cAAc,EAAE,SAAS;KACzB;IAED,gBAAgB,EAAE;QACjB,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,YAAY;KACzB;IAED,KAAK,CAAC,QAAQ,CAAC,MAAc,EAAE,IAAwB;QACtD,MAAM,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAE9D,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QAExC,yEAAyE;QACzE,MAAM,SAAS,CACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAC7B;KACE,eAAe;;;2CAGuB,eAAe;2CACf,eAAe;2CACf,eAAe;;;;CAIzD,CACE,CAAC;QAEF,MAAM,SAAS,CACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,EAC5B,2BAA2B,eAAe;;;;;;CAM5C,CACE,CAAC;QAEF,yEAAyE;QACzE,+DAA+D;QAC/D,MAAM,SAAS,CACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAC9B;;;;;;;;;gCAS6B,eAAe;;;;;iCAKd,eAAe;;;;;;qCAMX,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;+BA0BrB,eAAe;;;;;;;;;;;CAW7C,CACE,CAAC;QAEF,yEAAyE;QACzE,2DAA2D;QAC3D,MAAM,SAAS,CACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAC9B;;;;;;wCAMqC,eAAe;;;;;;;gCAOvB,eAAe;;;;;;;;;CAS9C,CACE,CAAC;QAEF,yEAAyE;QACzE,2DAA2D;QAC3D,MAAM,SAAS,CACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,EAClC;;;;;;yDAMsD,eAAe;;;;;;;;;;wCAUhC,eAAe;;mDAEJ,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CjE,CACE,CAAC;QAEF,4EAA4E;QAC5E,MAAM,SAAS,CACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EACjC;;;;;;;;;;;;;;CAcF,CACE,CAAC;QAEF,6EAA6E;QAC7E,MAAM,SAAS,CACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAC9B,KAAK,eAAe;;;;;;;;;;;;;;;;;;;;;uBAqBA,eAAe;;;;;;qCAMD,eAAe;;;;;;;oDAOA,eAAe;;;;;;;;;;;;mCAYhC,eAAe;;;;;;;;;4BAStB,eAAe;;;;;;2BAMhB,eAAe;;;;;2BAKf,eAAe;;;;gCAIV,eAAe;;;;;;;;;MASzC,eAAe;MACf,eAAe;MACf,eAAe;MACf,eAAe;CACpB,CACE,CAAC;IACH,CAAC;CACD,CAAC"}
1
+ {"version":3,"file":"workos.js","sourceRoot":"","sources":["../../../../src/setups/auth/systems/workos.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  export type AuthProvider = "clerk" | "better-auth" | "workos";
2
+ /** Frameworks the auth package can target. */
3
+ export type AppFramework = "nextjs" | "vite" | "remix" | "expo";
2
4
  export interface AuthPackageOptions {
3
5
  /** The chosen provider */
4
6
  provider: AuthProvider;
@@ -10,25 +12,25 @@ export interface AuthPackageOptions {
10
12
  scope: string;
11
13
  /** The package manager in use */
12
14
  pm: string;
15
+ /**
16
+ * Frameworks detected across apps/ in the workspace.
17
+ * Scaffolders use this to only install the packages actually needed.
18
+ */
19
+ frameworks: AppFramework[];
13
20
  /** If true, print what would happen but write nothing */
14
21
  dryRun?: boolean;
15
22
  }
16
23
  /**
17
24
  * Everything a provider scaffolder must implement.
18
- *
19
- * The CLI calls scaffold() once — it creates the entire packages/auth
20
- * directory for that provider, including:
21
- * - package.json
22
- * - tsconfig.json
23
- * - index.ts (the public barrel)
24
- * - <provider>-specific files
25
- * - .env.example
26
- * - README.md
27
25
  */
28
26
  export interface AuthPackageScaffolder {
29
27
  /** Pretty label used in step output */
30
28
  label: string;
31
- /** npm deps that go into the auth package's package.json dependencies */
29
+ /**
30
+ * npm deps that go into the auth package's package.json dependencies.
31
+ * Scaffolders can use opts.frameworks to compute these dynamically —
32
+ * this static field is for the base set always required.
33
+ */
32
34
  dependencies: Record<string, string>;
33
35
  /** npm devDeps for the auth package */
34
36
  devDependencies: Record<string, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/setups/auth/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,aAAa,GAAG,QAAQ,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IAClC,0BAA0B;IAC1B,QAAQ,EAAE,YAAY,CAAC;IACvB,iEAAiE;IACjE,aAAa,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,yDAAyD;IACzD,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,qBAAqB;IACrC,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,uCAAuC;IACvC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,4BAA4B;IAC5B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,mCAAmC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/setups/auth/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,aAAa,GAAG,QAAQ,CAAC;AAE9D,8CAA8C;AAC9C,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEhE,MAAM,WAAW,kBAAkB;IAClC,0BAA0B;IAC1B,QAAQ,EAAE,YAAY,CAAC;IACvB,iEAAiE;IACjE,aAAa,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX;;;OAGG;IACH,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,yDAAyD;IACzD,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACrC,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,uCAAuC;IACvC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,4BAA4B;IAC5B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,mCAAmC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * tsconfigs.ts — single source of truth for every tsconfig shape the CLI writes.
3
+ *
4
+ * Rules that govern the choices below:
5
+ *
6
+ * ROOT tsconfig.base.json
7
+ * "module": "NodeNext" / "moduleResolution": "NodeNext"
8
+ * — the CLI itself uses NodeNext, and apps compiled by Next.js / tsc directly
9
+ * also use NodeNext. All relative imports in source must end with .js.
10
+ * — baseUrl + paths live here so every package and app inherits them without
11
+ * repeating the mapping.
12
+ *
13
+ * PACKAGE tsconfig.json (internal or public)
14
+ * Extends ../../tsconfig.base.json — inherits paths, strict, target.
15
+ * Overrides only what the package specifically needs (jsx, lib, outDir).
16
+ *
17
+ * Internal (private: true in package.json)
18
+ * — no `declaration` / `declarationMap` needed in theory, but we keep them
19
+ * so IDEs get go-to-definition inside the monorepo.
20
+ * — composite: true + incremental for fast Nx caching.
21
+ *
22
+ * Public (to be published to npm)
23
+ * — declaration + declarationMap required by consumers.
24
+ * — composite: true for project references.
25
+ * — stripInternal: true so @internal JSDoc strips from .d.ts.
26
+ * — no `rootDir` override needed because extend covers it.
27
+ *
28
+ * APP tsconfig.json
29
+ * Extends ../../tsconfig.base.json.
30
+ * Each framework adds its own lib / jsx overrides.
31
+ * No packages/**\/* in `include` — paths handles resolution, and polluting
32
+ * include causes duplicate type-checking and false errors.
33
+ */
34
+ import type { PackageVisibility } from "./config.js";
35
+ export type { PackageVisibility };
36
+ export declare function rootTsConfigBase(scope: string): object;
37
+ interface PackageTsConfigOptions {
38
+ scope: string;
39
+ pkgName: string;
40
+ visibility: PackageVisibility;
41
+ /** true for React component packages — adds jsx and DOM lib */
42
+ react?: boolean;
43
+ /** Relative path from package dir to workspace root, default "../../" */
44
+ rootRelative?: string;
45
+ }
46
+ export declare function packageTsConfig(opts: PackageTsConfigOptions): object;
47
+ type AppFramework = "nextjs" | "vite" | "remix" | "expo";
48
+ interface AppTsConfigOptions {
49
+ scope: string;
50
+ framework: AppFramework;
51
+ hasSrcDir: boolean;
52
+ }
53
+ export declare function appTsConfig(opts: AppTsConfigOptions): object;
54
+ //# sourceMappingURL=tsconfigs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tsconfigs.d.ts","sourceRoot":"","sources":["../src/tsconfigs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAIlC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA6BtD;AAID,UAAU,sBAAsB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,+DAA+D;IAC/D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CA4CpE;AAID,KAAK,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzD,UAAU,kBAAkB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,YAAY,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CA6B5D"}