nx-factory-cli 2.1.24 → 2.1.26
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/commands/add-app.d.ts.map +1 -1
- package/dist/commands/add-app.js +92 -90
- package/dist/commands/add-app.js.map +1 -1
- package/dist/commands/add-auth.d.ts.map +1 -1
- package/dist/commands/add-auth.js +42 -3
- package/dist/commands/add-auth.js.map +1 -1
- package/dist/commands/add-lib.d.ts.map +1 -1
- package/dist/commands/add-lib.js +76 -40
- package/dist/commands/add-lib.js.map +1 -1
- package/dist/commands/doctor.js +1 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +131 -59
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate.d.ts +12 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +644 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/exec.d.ts +3 -1
- package/dist/exec.d.ts.map +1 -1
- package/dist/exec.js +7 -2
- package/dist/exec.js.map +1 -1
- package/dist/index.js +61 -8
- package/dist/index.js.map +1 -1
- package/dist/setups/auth/base.d.ts.map +1 -1
- package/dist/setups/auth/base.js +5 -21
- package/dist/setups/auth/base.js.map +1 -1
- package/dist/setups/auth/index.d.ts +1 -1
- package/dist/setups/auth/index.d.ts.map +1 -1
- package/dist/setups/auth/systems/better-auth.d.ts.map +1 -1
- package/dist/setups/auth/systems/better-auth.js +88 -266
- package/dist/setups/auth/systems/better-auth.js.map +1 -1
- package/dist/setups/auth/systems/clerk.d.ts.map +1 -1
- package/dist/setups/auth/systems/clerk.js +61 -142
- package/dist/setups/auth/systems/clerk.js.map +1 -1
- package/dist/setups/auth/systems/workos.d.ts.map +1 -1
- package/dist/setups/auth/systems/workos.js +92 -203
- package/dist/setups/auth/systems/workos.js.map +1 -1
- package/dist/setups/auth/types.d.ts +12 -10
- package/dist/setups/auth/types.d.ts.map +1 -1
- package/dist/tsconfigs.d.ts +88 -0
- package/dist/tsconfigs.d.ts.map +1 -0
- package/dist/tsconfigs.js +296 -0
- package/dist/tsconfigs.js.map +1 -0
- 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
|
|
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
|
-
|
|
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
|
-
|
|
40
|
-
//
|
|
64
|
+
}
|
|
65
|
+
// ── server.ts ───────────────────────────────────────────────────────────
|
|
41
66
|
await writeFile(path.join(pkgDir, "server.ts"), `/**
|
|
42
67
|
* WorkOS AuthKit v1+ — server-side helpers.
|
|
43
68
|
*
|
|
44
|
-
*
|
|
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
|
|
73
|
+
* @example Next.js Route Handler / Remix loader
|
|
55
74
|
* import { withAuth } from "${authPackageName}/server";
|
|
56
|
-
* export
|
|
57
|
-
* return
|
|
75
|
+
* export const GET = withAuth(async ({ user }) => {
|
|
76
|
+
* return Response.json({ user });
|
|
58
77
|
* });
|
|
59
78
|
*
|
|
60
|
-
* @example
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
103
|
-
*
|
|
104
|
-
*
|
|
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
|
-
|
|
121
|
-
|
|
122
|
-
}
|
|
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
|
-
|
|
126
|
-
|
|
127
|
-
* WorkOS AuthKit
|
|
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
|
-
*
|
|
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
|
-
|
|
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|
|
|
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
|
-
|
|
193
|
-
|
|
194
|
-
|
|
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
|
-
#
|
|
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
|
|
202
|
-
|
|
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
|
|
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)
|
|
147
|
+
Shared authentication package powered by [WorkOS AuthKit](https://workos.com/docs/user-management).
|
|
212
148
|
|
|
213
|
-
|
|
149
|
+
## Installed packages
|
|
150
|
+
${Object.keys(frameworkDeps).map((d) => `- \`${d}\``).join("\n")}
|
|
214
151
|
|
|
215
152
|
## Setup
|
|
216
153
|
|
|
217
|
-
### 1. Copy env vars
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
###
|
|
166
|
+
### 3. Add middleware
|
|
240
167
|
\`\`\`ts
|
|
241
168
|
// apps/<your-app>/middleware.ts
|
|
242
|
-
|
|
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
|
-
###
|
|
262
|
-
\`\`\`
|
|
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
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
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,
|
|
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
|
-
/**
|
|
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
|
|
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,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tsconfigs.ts — single source of truth for every tsconfig file the CLI writes.
|
|
3
|
+
*
|
|
4
|
+
* ── Architecture of the generated workspace ───────────────────────────────────
|
|
5
|
+
*
|
|
6
|
+
* The CLI scaffolds a `packages/typescript` workspace package at init time.
|
|
7
|
+
* It is a private, never-built package whose only purpose is to own and
|
|
8
|
+
* distribute the shared tsconfig presets for the whole monorepo.
|
|
9
|
+
*
|
|
10
|
+
* my-monorepo/
|
|
11
|
+
* ├── tsconfig.base.json ← strict settings + global paths (no module/resolution)
|
|
12
|
+
* ├── tsconfig.json ← solution file: references all packages + apps
|
|
13
|
+
* └── packages/
|
|
14
|
+
* └── typescript/ ← workspace package: @scope/typescript
|
|
15
|
+
* ├── package.json ← private: true, exports all tsconfig files
|
|
16
|
+
* ├── tsconfig.base.json ← re-exports root base (one hop)
|
|
17
|
+
* ├── tsconfig.internal.json ← ESNext + Bundler, noEmit — for source-only packages
|
|
18
|
+
* ├── tsconfig.package.json ← NodeNext + NodeNext, composite — for published packages
|
|
19
|
+
* ├── tsconfig.nextjs.json ← ESNext + Bundler, jsx:preserve, Next.js plugin
|
|
20
|
+
* ├── tsconfig.vite.json ← ESNext + Bundler, jsx:react-jsx
|
|
21
|
+
* ├── tsconfig.remix.json ← ESNext + Bundler, jsx:react-jsx
|
|
22
|
+
* └── tsconfig.expo.json ← ESNext + Bundler, jsx:react-native
|
|
23
|
+
*
|
|
24
|
+
* Packages and apps extend like this:
|
|
25
|
+
*
|
|
26
|
+
* packages/ui/tsconfig.json:
|
|
27
|
+
* { "extends": "@scope/typescript/tsconfig.internal.json" }
|
|
28
|
+
*
|
|
29
|
+
* apps/dashboard/tsconfig.json:
|
|
30
|
+
* { "extends": "@scope/typescript/tsconfig.nextjs.json" }
|
|
31
|
+
*
|
|
32
|
+
* ── Two strategies for packages ───────────────────────────────────────────────
|
|
33
|
+
*
|
|
34
|
+
* INTERNAL (private: true, never published):
|
|
35
|
+
* - noEmit: true — no dist/, no build script, no build step ever
|
|
36
|
+
* - Consumed via path alias: @scope/pkg → packages/pkg/index.ts (source)
|
|
37
|
+
* - ESNext + Bundler: the bundler (Vite/Next.js/esbuild) handles resolution
|
|
38
|
+
* at app build time, so no .js extensions needed in source imports
|
|
39
|
+
*
|
|
40
|
+
* PUBLIC (published to npm):
|
|
41
|
+
* - Emits to dist/ via tsc
|
|
42
|
+
* - NodeNext + NodeNext: Node.js ESM requires .js extensions in source
|
|
43
|
+
* - composite + incremental for Nx project reference caching
|
|
44
|
+
*
|
|
45
|
+
* ── The root tsconfig.base.json ───────────────────────────────────────────────
|
|
46
|
+
* Only holds: target, strict flags, esModuleInterop, isolatedModules, and
|
|
47
|
+
* the global paths map. Does NOT set module or moduleResolution — those
|
|
48
|
+
* belong in the per-preset files inside packages/typescript/.
|
|
49
|
+
*/
|
|
50
|
+
import type { PackageVisibility } from "./config.js";
|
|
51
|
+
export type { PackageVisibility };
|
|
52
|
+
export type AppFramework = "nextjs" | "vite" | "remix" | "expo";
|
|
53
|
+
export declare function rootTsConfigBase(scope: string): object;
|
|
54
|
+
/**
|
|
55
|
+
* Returns the package.json for the @scope/typescript workspace package.
|
|
56
|
+
* Private, never published. Its exports point at the tsconfig preset files
|
|
57
|
+
* so other packages can extend them by package name.
|
|
58
|
+
*/
|
|
59
|
+
export declare function typescriptPackageJson(scope: string): object;
|
|
60
|
+
/**
|
|
61
|
+
* Returns a map of filename → content for every file inside packages/typescript/.
|
|
62
|
+
* Written by `init` and regenerated by `migrate`.
|
|
63
|
+
*/
|
|
64
|
+
export declare function typescriptPresets(): Record<string, object>;
|
|
65
|
+
interface PackageTsConfigOptions {
|
|
66
|
+
scope: string;
|
|
67
|
+
pkgName: string;
|
|
68
|
+
visibility: PackageVisibility;
|
|
69
|
+
/** true for React packages — adds jsx:react-jsx and DOM lib */
|
|
70
|
+
react?: boolean;
|
|
71
|
+
}
|
|
72
|
+
export declare function packageTsConfig(opts: PackageTsConfigOptions): object;
|
|
73
|
+
interface AppTsConfigOptions {
|
|
74
|
+
scope: string;
|
|
75
|
+
framework: AppFramework;
|
|
76
|
+
hasSrcDir: boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Whether packages/typescript/ exists in the workspace.
|
|
79
|
+
* Falls back to ../../tsconfig.base.json for pre-migration workspaces.
|
|
80
|
+
* Defaults to true — all new workspaces have it.
|
|
81
|
+
*/
|
|
82
|
+
typescriptPkgExists?: boolean;
|
|
83
|
+
}
|
|
84
|
+
export declare function appTsConfig(opts: AppTsConfigOptions): object;
|
|
85
|
+
export declare function rootTsConfigSolution(packages: string[], apps: string[]): object;
|
|
86
|
+
/** @deprecated Use typescriptPresets() instead */
|
|
87
|
+
export declare const toolingPresets: typeof typescriptPresets;
|
|
88
|
+
//# sourceMappingURL=tsconfigs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsconfigs.d.ts","sourceRoot":"","sources":["../src/tsconfigs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAIhE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAwBtD;AAID;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiB3D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA8G1D;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;CAChB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAuCpE;AAID,UAAU,kBAAkB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,YAAY,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAyB5D;AAiBD,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,MAAM,EAAE,EAClB,IAAI,EAAE,MAAM,EAAE,GACZ,MAAM,CAUR;AAKD,kDAAkD;AAClD,eAAO,MAAM,cAAc,0BAAoB,CAAC"}
|