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.
- package/dist/commands/add-app.d.ts.map +1 -1
- package/dist/commands/add-app.js +65 -92
- 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 +43 -4
- package/dist/commands/add-auth.js.map +1 -1
- package/dist/commands/add-component.d.ts.map +1 -1
- package/dist/commands/add-component.js +4 -3
- package/dist/commands/add-component.js.map +1 -1
- package/dist/commands/add-lib.d.ts.map +1 -1
- package/dist/commands/add-lib.js +78 -42
- 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 +92 -58
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate.d.ts +7 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +365 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/publish.js +1 -1
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/remove-component.d.ts.map +1 -1
- package/dist/commands/remove-component.js +3 -1
- package/dist/commands/remove-component.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +4 -2
- package/dist/commands/update.js.map +1 -1
- 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 +11 -1
- 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 +54 -0
- package/dist/tsconfigs.d.ts.map +1 -0
- package/dist/tsconfigs.js +165 -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,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"}
|