nx-factory-cli 2.1.2 → 2.1.3
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 +42127 -93
- package/package.json +3 -2
- package/dist/commands/add-app.d.ts +0 -10
- package/dist/commands/add-app.d.ts.map +0 -1
- package/dist/commands/add-app.js +0 -392
- package/dist/commands/add-app.js.map +0 -1
- package/dist/commands/add-auth.d.ts +0 -8
- package/dist/commands/add-auth.d.ts.map +0 -1
- package/dist/commands/add-auth.js +0 -182
- package/dist/commands/add-auth.js.map +0 -1
- package/dist/commands/add-component.d.ts +0 -2
- package/dist/commands/add-component.d.ts.map +0 -1
- package/dist/commands/add-component.js +0 -116
- package/dist/commands/add-component.js.map +0 -1
- package/dist/commands/add-lib.d.ts +0 -9
- package/dist/commands/add-lib.d.ts.map +0 -1
- package/dist/commands/add-lib.js +0 -190
- package/dist/commands/add-lib.js.map +0 -1
- package/dist/commands/add-storybook.d.ts +0 -6
- package/dist/commands/add-storybook.d.ts.map +0 -1
- package/dist/commands/add-storybook.js +0 -181
- package/dist/commands/add-storybook.js.map +0 -1
- package/dist/commands/doctor.d.ts +0 -2
- package/dist/commands/doctor.d.ts.map +0 -1
- package/dist/commands/doctor.js +0 -235
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/init.d.ts +0 -9
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -527
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/list.d.ts +0 -2
- package/dist/commands/list.d.ts.map +0 -1
- package/dist/commands/list.js +0 -130
- package/dist/commands/list.js.map +0 -1
- package/dist/commands/publish.d.ts +0 -8
- package/dist/commands/publish.d.ts.map +0 -1
- package/dist/commands/publish.js +0 -179
- package/dist/commands/publish.js.map +0 -1
- package/dist/commands/remove-component.d.ts +0 -5
- package/dist/commands/remove-component.d.ts.map +0 -1
- package/dist/commands/remove-component.js +0 -172
- package/dist/commands/remove-component.js.map +0 -1
- package/dist/commands/update.d.ts +0 -5
- package/dist/commands/update.d.ts.map +0 -1
- package/dist/commands/update.js +0 -126
- package/dist/commands/update.js.map +0 -1
- package/dist/config.d.ts +0 -14
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -35
- package/dist/config.js.map +0 -1
- package/dist/exec.d.ts +0 -25
- package/dist/exec.d.ts.map +0 -1
- package/dist/exec.js +0 -80
- package/dist/exec.js.map +0 -1
- package/dist/files.d.ts +0 -7
- package/dist/files.d.ts.map +0 -1
- package/dist/files.js +0 -23
- package/dist/files.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/resolve-root.d.ts +0 -22
- package/dist/resolve-root.d.ts.map +0 -1
- package/dist/resolve-root.js +0 -65
- package/dist/resolve-root.js.map +0 -1
- package/dist/setups/auth/base.d.ts +0 -11
- package/dist/setups/auth/base.d.ts.map +0 -1
- package/dist/setups/auth/base.js +0 -91
- package/dist/setups/auth/base.js.map +0 -1
- package/dist/setups/auth/index.d.ts +0 -6
- package/dist/setups/auth/index.d.ts.map +0 -1
- package/dist/setups/auth/index.js +0 -5
- package/dist/setups/auth/index.js.map +0 -1
- package/dist/setups/auth/systems/better-auth.d.ts +0 -3
- package/dist/setups/auth/systems/better-auth.d.ts.map +0 -1
- package/dist/setups/auth/systems/better-auth.js +0 -357
- package/dist/setups/auth/systems/better-auth.js.map +0 -1
- package/dist/setups/auth/systems/clerk.d.ts +0 -3
- package/dist/setups/auth/systems/clerk.d.ts.map +0 -1
- package/dist/setups/auth/systems/clerk.js +0 -259
- package/dist/setups/auth/systems/clerk.js.map +0 -1
- package/dist/setups/auth/systems/workos.d.ts +0 -3
- package/dist/setups/auth/systems/workos.d.ts.map +0 -1
- package/dist/setups/auth/systems/workos.js +0 -273
- package/dist/setups/auth/systems/workos.js.map +0 -1
- package/dist/setups/auth/types.d.ts +0 -39
- package/dist/setups/auth/types.d.ts.map +0 -1
- package/dist/setups/auth/types.js +0 -2
- package/dist/setups/auth/types.js.map +0 -1
- package/dist/ui.d.ts +0 -44
- package/dist/ui.d.ts.map +0 -1
- package/dist/ui.js +0 -149
- package/dist/ui.js.map +0 -1
|
@@ -1,273 +0,0 @@
|
|
|
1
|
-
import path from "path";
|
|
2
|
-
import { writeFile, ensureDir } from "../../../files.js";
|
|
3
|
-
export const workosScaffolder = {
|
|
4
|
-
label: "WorkOS AuthKit",
|
|
5
|
-
dependencies: {
|
|
6
|
-
"@workos-inc/authkit-nextjs": "latest",
|
|
7
|
-
"@workos-inc/node": "latest",
|
|
8
|
-
},
|
|
9
|
-
devDependencies: {
|
|
10
|
-
"@types/react": "^19.0.0",
|
|
11
|
-
},
|
|
12
|
-
peerDependencies: {
|
|
13
|
-
react: "^18 || ^19",
|
|
14
|
-
"react-dom": "^18 || ^19",
|
|
15
|
-
},
|
|
16
|
-
async scaffold(pkgDir, _opts) {
|
|
17
|
-
await ensureDir(path.join(pkgDir, "src"));
|
|
18
|
-
// ── src/index.ts ──────────────────────────────────────────────────────────
|
|
19
|
-
await writeFile(path.join(pkgDir, "src/index.ts"), `/**
|
|
20
|
-
* @workspace/auth — WorkOS AuthKit latest setup.
|
|
21
|
-
*
|
|
22
|
-
* Prefer sub-path imports:
|
|
23
|
-
* import { getUser, withAuth } from "@workspace/auth/server"
|
|
24
|
-
* import { useAuth } from "@workspace/auth/client"
|
|
25
|
-
* import { authMiddleware } from "@workspace/auth/middleware"
|
|
26
|
-
*/
|
|
27
|
-
export * from "./server.js";
|
|
28
|
-
export * from "./client.js";
|
|
29
|
-
`);
|
|
30
|
-
// ── src/server.ts ─────────────────────────────────────────────────────────
|
|
31
|
-
// AuthKit v1+: getUser() replaces getSession(), withAuth() HOC
|
|
32
|
-
await writeFile(path.join(pkgDir, "src/server.ts"), `/**
|
|
33
|
-
* WorkOS AuthKit v1+ — server-side helpers.
|
|
34
|
-
*
|
|
35
|
-
* AuthKit v1 changes from v0:
|
|
36
|
-
* - getSession() → getUser() (returns { user, sessionId, accessToken })
|
|
37
|
-
* - withAuth() — HOC now passes { user } prop (no session wrapper)
|
|
38
|
-
* - handleAuth() — still the catch-all callback handler
|
|
39
|
-
*
|
|
40
|
-
* @example Server Component (manual check)
|
|
41
|
-
* import { getUser } from "@workspace/auth/server";
|
|
42
|
-
* const { user } = await getUser();
|
|
43
|
-
* if (!user) redirect("/sign-in");
|
|
44
|
-
*
|
|
45
|
-
* @example Server Component (HOC — auto-redirects)
|
|
46
|
-
* import { withAuth } from "@workspace/auth/server";
|
|
47
|
-
* export default withAuth(async function Page({ user }) {
|
|
48
|
-
* return <h1>Hello {user.firstName}</h1>;
|
|
49
|
-
* });
|
|
50
|
-
*
|
|
51
|
-
* @example Sign-in redirect
|
|
52
|
-
* import { getSignInUrl } from "@workspace/auth/server";
|
|
53
|
-
* redirect(await getSignInUrl());
|
|
54
|
-
*/
|
|
55
|
-
|
|
56
|
-
export {
|
|
57
|
-
getUser, // Replaces getSession() in AuthKit v1
|
|
58
|
-
withAuth, // HOC — passes { user } to your component
|
|
59
|
-
getSignInUrl, // Returns the WorkOS hosted sign-in URL
|
|
60
|
-
getSignUpUrl, // Returns the WorkOS hosted sign-up URL
|
|
61
|
-
signOut, // Server-side sign out (clears session cookie)
|
|
62
|
-
refreshSession, // Extend the session lifetime
|
|
63
|
-
handleAuth, // Catch-all callback route handler (GET)
|
|
64
|
-
verifyAccessToken, // Verify a JWT access token
|
|
65
|
-
encryptSession, // For custom session storage scenarios
|
|
66
|
-
terminateSession, // Force-terminate a specific session
|
|
67
|
-
} from "@workos-inc/authkit-nextjs";
|
|
68
|
-
|
|
69
|
-
export type {
|
|
70
|
-
User,
|
|
71
|
-
AuthKitSession,
|
|
72
|
-
} from "@workos-inc/authkit-nextjs";
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Low-level WorkOS Node SDK.
|
|
76
|
-
* Use for organization management, directory sync, audit logs, etc.
|
|
77
|
-
*
|
|
78
|
-
* import { workos } from "@workspace/auth/server";
|
|
79
|
-
* const orgs = await workos.organizations.listOrganizations();
|
|
80
|
-
*/
|
|
81
|
-
import WorkOS from "@workos-inc/node";
|
|
82
|
-
|
|
83
|
-
if (!process.env.WORKOS_API_KEY) {
|
|
84
|
-
throw new Error("Missing WORKOS_API_KEY — set it in your app's .env.local");
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
export const workos = new WorkOS(process.env.WORKOS_API_KEY);
|
|
88
|
-
export const workosClientId = process.env.WORKOS_CLIENT_ID!;
|
|
89
|
-
`);
|
|
90
|
-
// ── src/client.ts ─────────────────────────────────────────────────────────
|
|
91
|
-
// AuthKit v1: useAuth() hook from the /components sub-path
|
|
92
|
-
await writeFile(path.join(pkgDir, "src/client.ts"), `/**
|
|
93
|
-
* WorkOS AuthKit v1+ — client-side hooks.
|
|
94
|
-
*
|
|
95
|
-
* The AuthKitProvider is required at the root of apps that use useAuth().
|
|
96
|
-
*
|
|
97
|
-
* @example Root layout
|
|
98
|
-
* import { AuthKitProvider } from "@workspace/auth/client";
|
|
99
|
-
* export default function Layout({ children }) {
|
|
100
|
-
* return <AuthKitProvider>{children}</AuthKitProvider>;
|
|
101
|
-
* }
|
|
102
|
-
*
|
|
103
|
-
* @example Any client component
|
|
104
|
-
* "use client";
|
|
105
|
-
* import { useAuth } from "@workspace/auth/client";
|
|
106
|
-
* const { user, loading, getAccessToken } = useAuth();
|
|
107
|
-
*/
|
|
108
|
-
"use client";
|
|
109
|
-
|
|
110
|
-
export {
|
|
111
|
-
useAuth, // { user, loading, getAccessToken, getRawAccessToken }
|
|
112
|
-
AuthKitProvider, // Required root context provider
|
|
113
|
-
} from "@workos-inc/authkit-nextjs/components";
|
|
114
|
-
`);
|
|
115
|
-
// ── src/middleware.ts ─────────────────────────────────────────────────────
|
|
116
|
-
// AuthKit v1: authkitMiddleware with middlewareAuth option
|
|
117
|
-
await writeFile(path.join(pkgDir, "src/middleware.ts"), `/**
|
|
118
|
-
* WorkOS AuthKit v1+ — Next.js middleware.
|
|
119
|
-
*
|
|
120
|
-
* Quick start — copy into apps/<your-app>/middleware.ts:
|
|
121
|
-
*
|
|
122
|
-
* export { authMiddleware as default, middlewareConfig as config }
|
|
123
|
-
* from "@workspace/auth/middleware";
|
|
124
|
-
*
|
|
125
|
-
* Custom public paths:
|
|
126
|
-
*
|
|
127
|
-
* import { buildMiddleware } from "@workspace/auth/middleware";
|
|
128
|
-
* export default buildMiddleware({ unauthenticatedPaths: ["/", "/about"] });
|
|
129
|
-
* export { middlewareConfig as config } from "@workspace/auth/middleware";
|
|
130
|
-
*/
|
|
131
|
-
import { authkitMiddleware } from "@workos-inc/authkit-nextjs";
|
|
132
|
-
import type { AuthkitMiddlewareOptions } from "@workos-inc/authkit-nextjs";
|
|
133
|
-
|
|
134
|
-
export const middlewareConfig = {
|
|
135
|
-
matcher: [
|
|
136
|
-
"/((?!_next|[^?]*\\.(?:html?|css|js(?!on)|jpe?g|webp|png|gif|svg|ttf|woff2?|ico|csv|docx?|xlsx?|zip|webmanifest)).*)",
|
|
137
|
-
"/(api|trpc)(.*)",
|
|
138
|
-
],
|
|
139
|
-
};
|
|
140
|
-
|
|
141
|
-
const defaultUnauthenticatedPaths = [
|
|
142
|
-
"/",
|
|
143
|
-
"/sign-in",
|
|
144
|
-
"/sign-up",
|
|
145
|
-
"/api/webhooks(.*)",
|
|
146
|
-
];
|
|
147
|
-
|
|
148
|
-
/** Default middleware — requires auth on all paths except the ones above */
|
|
149
|
-
export const authMiddleware = authkitMiddleware({
|
|
150
|
-
middlewareAuth: {
|
|
151
|
-
enabled: true,
|
|
152
|
-
unauthenticatedPaths: defaultUnauthenticatedPaths,
|
|
153
|
-
},
|
|
154
|
-
});
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* Build a middleware with configurable unauthenticated paths.
|
|
158
|
-
*
|
|
159
|
-
* @param unauthenticatedPaths - Paths that do NOT require authentication
|
|
160
|
-
* @param options - Additional AuthKit middleware options
|
|
161
|
-
*/
|
|
162
|
-
export function buildMiddleware({
|
|
163
|
-
unauthenticatedPaths = defaultUnauthenticatedPaths,
|
|
164
|
-
...options
|
|
165
|
-
}: {
|
|
166
|
-
unauthenticatedPaths?: string[];
|
|
167
|
-
} & Omit<AuthkitMiddlewareOptions, "middlewareAuth"> = {}) {
|
|
168
|
-
return authkitMiddleware({
|
|
169
|
-
...options,
|
|
170
|
-
middlewareAuth: {
|
|
171
|
-
enabled: true,
|
|
172
|
-
unauthenticatedPaths,
|
|
173
|
-
},
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
`);
|
|
177
|
-
// ── .env.example ─────────────────────────────────────────────────────────
|
|
178
|
-
await writeFile(path.join(pkgDir, ".env.example"), `# ─── WorkOS AuthKit v1+ ──────────────────────────────────────────────────────
|
|
179
|
-
# Get these from: https://dashboard.workos.com → your app → API Keys
|
|
180
|
-
WORKOS_API_KEY=sk_REPLACE_ME
|
|
181
|
-
WORKOS_CLIENT_ID=client_REPLACE_ME
|
|
182
|
-
|
|
183
|
-
# Must match the redirect URI configured in your WorkOS dashboard
|
|
184
|
-
WORKOS_REDIRECT_URI=http://localhost:3000/callback
|
|
185
|
-
|
|
186
|
-
# Cookie encryption secret — generate with: openssl rand -base64 32
|
|
187
|
-
# Must be at least 32 characters
|
|
188
|
-
WORKOS_COOKIE_PASSWORD=REPLACE_WITH_RANDOM_32_CHAR_STRING
|
|
189
|
-
|
|
190
|
-
# The public URL of your app
|
|
191
|
-
NEXT_PUBLIC_APP_URL=http://localhost:3000
|
|
192
|
-
`);
|
|
193
|
-
// ── README.md ─────────────────────────────────────────────────────────────
|
|
194
|
-
await writeFile(path.join(pkgDir, "README.md"), `# @workspace/auth — WorkOS AuthKit v1+
|
|
195
|
-
|
|
196
|
-
Shared authentication powered by [WorkOS AuthKit](https://workos.com/docs/user-management) — enterprise SSO, SCIM, MFA, magic auth, and a hosted sign-in UI.
|
|
197
|
-
|
|
198
|
-
> **AuthKit v1 notes:** \`getSession()\` was renamed to \`getUser()\`. The HOC \`withAuth()\` now passes \`{ user }\` directly (no session wrapper). \`AuthKitProvider\` is now required for \`useAuth()\`.
|
|
199
|
-
|
|
200
|
-
## Setup
|
|
201
|
-
|
|
202
|
-
### 1. Copy env vars to your app
|
|
203
|
-
\`\`\`bash
|
|
204
|
-
cp packages/auth/.env.example apps/<your-app>/.env.local
|
|
205
|
-
\`\`\`
|
|
206
|
-
|
|
207
|
-
Fill in from your [WorkOS Dashboard](https://dashboard.workos.com):
|
|
208
|
-
- \`WORKOS_API_KEY\`
|
|
209
|
-
- \`WORKOS_CLIENT_ID\`
|
|
210
|
-
- \`WORKOS_COOKIE_PASSWORD\` (run: \`openssl rand -base64 32\`)
|
|
211
|
-
- Add \`WORKOS_REDIRECT_URI\` in the WorkOS dashboard → Redirects
|
|
212
|
-
|
|
213
|
-
### 2. Add the dependency
|
|
214
|
-
\`\`\`json
|
|
215
|
-
{ "dependencies": { "@workspace/auth": "workspace:*" } }
|
|
216
|
-
\`\`\`
|
|
217
|
-
|
|
218
|
-
### 3. Add the callback route
|
|
219
|
-
\`\`\`ts
|
|
220
|
-
// apps/<your-app>/src/app/callback/route.ts
|
|
221
|
-
export { handleAuth as GET } from "@workspace/auth/server";
|
|
222
|
-
\`\`\`
|
|
223
|
-
|
|
224
|
-
### 4. Add the middleware
|
|
225
|
-
\`\`\`ts
|
|
226
|
-
// apps/<your-app>/middleware.ts
|
|
227
|
-
export { authMiddleware as default, middlewareConfig as config }
|
|
228
|
-
from "@workspace/auth/middleware";
|
|
229
|
-
\`\`\`
|
|
230
|
-
|
|
231
|
-
### 5. Wrap your layout with AuthKitProvider
|
|
232
|
-
\`\`\`tsx
|
|
233
|
-
// apps/<your-app>/src/app/layout.tsx
|
|
234
|
-
import { AuthKitProvider } from "@workspace/auth/client";
|
|
235
|
-
export default function Layout({ children }) {
|
|
236
|
-
return <AuthKitProvider>{children}</AuthKitProvider>;
|
|
237
|
-
}
|
|
238
|
-
\`\`\`
|
|
239
|
-
|
|
240
|
-
### 6. Use in your pages
|
|
241
|
-
\`\`\`tsx
|
|
242
|
-
// Server component — HOC (auto-redirects if not signed in)
|
|
243
|
-
import { withAuth } from "@workspace/auth/server";
|
|
244
|
-
export default withAuth(async function Page({ user }) {
|
|
245
|
-
return <h1>Hello, {user.firstName}</h1>;
|
|
246
|
-
});
|
|
247
|
-
|
|
248
|
-
// Server component — manual
|
|
249
|
-
import { getUser } from "@workspace/auth/server";
|
|
250
|
-
const { user } = await getUser();
|
|
251
|
-
|
|
252
|
-
// Client component
|
|
253
|
-
"use client";
|
|
254
|
-
import { useAuth } from "@workspace/auth/client";
|
|
255
|
-
const { user, loading } = useAuth();
|
|
256
|
-
|
|
257
|
-
// Sign-in redirect page
|
|
258
|
-
import { getSignInUrl } from "@workspace/auth/server";
|
|
259
|
-
import { redirect } from "next/navigation";
|
|
260
|
-
export default async function SignIn() { redirect(await getSignInUrl()); }
|
|
261
|
-
\`\`\`
|
|
262
|
-
|
|
263
|
-
## API
|
|
264
|
-
|
|
265
|
-
| Sub-path | Key exports |
|
|
266
|
-
|---|---|
|
|
267
|
-
| \`@workspace/auth/server\` | \`getUser()\`, \`withAuth()\`, \`getSignInUrl()\`, \`handleAuth\`, \`workos\`, \`signOut()\` |
|
|
268
|
-
| \`@workspace/auth/client\` | \`useAuth\`, \`AuthKitProvider\` |
|
|
269
|
-
| \`@workspace/auth/middleware\` | \`authMiddleware\`, \`buildMiddleware()\`, \`middlewareConfig\` |
|
|
270
|
-
`);
|
|
271
|
-
},
|
|
272
|
-
};
|
|
273
|
-
//# sourceMappingURL=workos.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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;AAGzD,MAAM,CAAC,MAAM,gBAAgB,GAA0B;IACrD,KAAK,EAAE,gBAAgB;IAEvB,YAAY,EAAE;QACZ,4BAA4B,EAAE,QAAQ;QACtC,kBAAkB,EAAY,QAAQ;KACvC;IAED,eAAe,EAAE;QACf,cAAc,EAAE,SAAS;KAC1B;IAED,gBAAgB,EAAE;QAChB,KAAK,EAAQ,YAAY;QACzB,WAAW,EAAE,YAAY;KAC1B;IAED,KAAK,CAAC,QAAQ,CAAC,MAAc,EAAE,KAAyB;QACtD,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAE1C,6EAA6E;QAC7E,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EACjC;;;;;;;;;;CAUL,CACI,CAAC;QAEF,6EAA6E;QAC7E,+DAA+D;QAC/D,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,EAClC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyDL,CACI,CAAC;QAEF,6EAA6E;QAC7E,2DAA2D;QAC3D,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,EAClC;;;;;;;;;;;;;;;;;;;;;;CAsBL,CACI,CAAC;QAEF,6EAA6E;QAC7E,2DAA2D;QAC3D,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DL,CACI,CAAC;QAEF,4EAA4E;QAC5E,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EACjC;;;;;;;;;;;;;;CAcL,CACI,CAAC;QAEF,6EAA6E;QAC7E,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAC9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4EL,CACI,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
export type AuthProvider = "clerk" | "better-auth" | "workos";
|
|
2
|
-
export interface AuthPackageOptions {
|
|
3
|
-
/** The chosen provider */
|
|
4
|
-
provider: AuthProvider;
|
|
5
|
-
/** Absolute path to the monorepo root (where packages/ lives) */
|
|
6
|
-
workspaceRoot: string;
|
|
7
|
-
/** The workspace name (from nx-factory.config.json) */
|
|
8
|
-
workspaceName: string;
|
|
9
|
-
/** The package manager in use */
|
|
10
|
-
pm: string;
|
|
11
|
-
/** If true, print what would happen but write nothing */
|
|
12
|
-
dryRun?: boolean;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Everything a provider scaffolder must implement.
|
|
16
|
-
*
|
|
17
|
-
* The CLI calls scaffold() once — it creates the entire packages/auth
|
|
18
|
-
* directory for that provider, including:
|
|
19
|
-
* - package.json
|
|
20
|
-
* - tsconfig.json
|
|
21
|
-
* - tsup.config.ts
|
|
22
|
-
* - src/index.ts (the public barrel)
|
|
23
|
-
* - src/<provider>-specific files
|
|
24
|
-
* - .env.example
|
|
25
|
-
* - README.md
|
|
26
|
-
*/
|
|
27
|
-
export interface AuthPackageScaffolder {
|
|
28
|
-
/** Pretty label used in step output */
|
|
29
|
-
label: string;
|
|
30
|
-
/** npm deps that go into the auth package's package.json dependencies */
|
|
31
|
-
dependencies: Record<string, string>;
|
|
32
|
-
/** npm devDeps for the auth package */
|
|
33
|
-
devDependencies: Record<string, string>;
|
|
34
|
-
/** peerDeps (e.g. react) */
|
|
35
|
-
peerDependencies: Record<string, string>;
|
|
36
|
-
/** Write every file into pkgDir */
|
|
37
|
-
scaffold(pkgDir: string, opts: AuthPackageOptions): Promise<void>;
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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;IACjC,0BAA0B;IAC1B,QAAQ,EAAK,YAAY,CAAC;IAC1B,iEAAiE;IACjE,aAAa,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,EAAE,EAAW,MAAM,CAAC;IACpB,yDAAyD;IACzD,MAAM,CAAC,EAAM,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,qBAAqB;IACpC,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;CACnE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/setups/auth/types.ts"],"names":[],"mappings":""}
|
package/dist/ui.d.ts
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
export declare const c: {
|
|
2
|
-
purple: import("chalk").ChalkInstance;
|
|
3
|
-
purpleDim: import("chalk").ChalkInstance;
|
|
4
|
-
purpleBold: import("chalk").ChalkInstance;
|
|
5
|
-
green: import("chalk").ChalkInstance;
|
|
6
|
-
greenBold: import("chalk").ChalkInstance;
|
|
7
|
-
yellow: import("chalk").ChalkInstance;
|
|
8
|
-
red: import("chalk").ChalkInstance;
|
|
9
|
-
cyan: import("chalk").ChalkInstance;
|
|
10
|
-
white: import("chalk").ChalkInstance;
|
|
11
|
-
whiteBold: import("chalk").ChalkInstance;
|
|
12
|
-
dim: import("chalk").ChalkInstance;
|
|
13
|
-
dimItalic: import("chalk").ChalkInstance;
|
|
14
|
-
muted: import("chalk").ChalkInstance;
|
|
15
|
-
};
|
|
16
|
-
export declare function printBanner(): void;
|
|
17
|
-
export declare function printSection(label: string): void;
|
|
18
|
-
export type StepRunner = (label: string, fn: () => Promise<void>) => Promise<void>;
|
|
19
|
-
export declare function createStepRunner(total: number, dryRun?: boolean): StepRunner;
|
|
20
|
-
export declare function q(label: string, hint?: string): string;
|
|
21
|
-
export declare function detected(value: string): string;
|
|
22
|
-
export interface SuccessOptions {
|
|
23
|
-
title: string;
|
|
24
|
-
commands: Array<{
|
|
25
|
-
cmd: string;
|
|
26
|
-
comment?: string;
|
|
27
|
-
}>;
|
|
28
|
-
tips?: Array<{
|
|
29
|
-
label: string;
|
|
30
|
-
cmd: string;
|
|
31
|
-
}>;
|
|
32
|
-
}
|
|
33
|
-
export declare function printSuccess(opts: SuccessOptions): void;
|
|
34
|
-
export interface ErrorOptions {
|
|
35
|
-
title: string;
|
|
36
|
-
detail?: string;
|
|
37
|
-
recovery: Array<{
|
|
38
|
-
label: string;
|
|
39
|
-
cmd: string;
|
|
40
|
-
}>;
|
|
41
|
-
}
|
|
42
|
-
export declare function printError(opts: ErrorOptions): void;
|
|
43
|
-
export declare function printWarn(message: string, hint?: string): void;
|
|
44
|
-
//# sourceMappingURL=ui.d.ts.map
|
package/dist/ui.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,CAAC;;;;;;;;;;;;;;CAcb,CAAC;AAGF,wBAAgB,WAAW,IAAI,IAAI,CAkBlC;AASD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAKhD;AAOD,MAAM,MAAM,UAAU,GAAG,CACvB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KACpB,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,UAAU,CAuB1E;AAKD,wBAAgB,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAGtD;AAID,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9C;AAGD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAK,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,IAAI,CAAC,EAAK,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD;AAYD,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CA8BvD;AAGD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAK,MAAM,CAAC;IACjB,MAAM,CAAC,EAAG,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAsBnD;AAID,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAG9D"}
|
package/dist/ui.js
DELETED
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
|
-
import { createRequire } from "module";
|
|
3
|
-
const require = createRequire(import.meta.url);
|
|
4
|
-
const pkg = require("../package.json");
|
|
5
|
-
// ─── Palette ──────────────────────────────────────────────────────────────────
|
|
6
|
-
// One place to change colors for the whole CLI.
|
|
7
|
-
export const c = {
|
|
8
|
-
purple: chalk.hex("#818cf8"),
|
|
9
|
-
purpleDim: chalk.hex("#4f46a8"),
|
|
10
|
-
purpleBold: chalk.hex("#818cf8").bold,
|
|
11
|
-
green: chalk.hex("#86efac"),
|
|
12
|
-
greenBold: chalk.hex("#86efac").bold,
|
|
13
|
-
yellow: chalk.hex("#fde68a"),
|
|
14
|
-
red: chalk.hex("#fca5a5"),
|
|
15
|
-
cyan: chalk.hex("#67e8f9"),
|
|
16
|
-
white: chalk.hex("#f1f5f9"),
|
|
17
|
-
whiteBold: chalk.hex("#f1f5f9").bold,
|
|
18
|
-
dim: chalk.hex("#6b7280"),
|
|
19
|
-
dimItalic: chalk.hex("#6b7280").italic,
|
|
20
|
-
muted: chalk.hex("#4b5563"),
|
|
21
|
-
};
|
|
22
|
-
// ─── Banner ───────────────────────────────────────────────────────────────────
|
|
23
|
-
export function printBanner() {
|
|
24
|
-
const version = c.dim(`v${pkg.version}`);
|
|
25
|
-
const logo = c.purpleBold("NX↗");
|
|
26
|
-
const name = c.whiteBold("nx-factory");
|
|
27
|
-
const tagline = c.dim("Monorepo scaffold · shadcn/ui + Tailwind v4");
|
|
28
|
-
const pills = [
|
|
29
|
-
pill("Nx", "green"),
|
|
30
|
-
pill("shadcn/ui", "yellow"),
|
|
31
|
-
pill("Tailwind v4", "cyan"),
|
|
32
|
-
pill("TypeScript", "purple"),
|
|
33
|
-
].join(" ");
|
|
34
|
-
console.log();
|
|
35
|
-
console.log(` ${logo} ${name} ${version}`);
|
|
36
|
-
console.log(` ${tagline}`);
|
|
37
|
-
console.log(` ${pills}`);
|
|
38
|
-
console.log();
|
|
39
|
-
}
|
|
40
|
-
function pill(label, color) {
|
|
41
|
-
const colorfn = c[color];
|
|
42
|
-
return colorfn(`[${label}]`);
|
|
43
|
-
}
|
|
44
|
-
// ─── Section header ───────────────────────────────────────────────────────────
|
|
45
|
-
// Prints a faint divider with a label — used between major phases of init.
|
|
46
|
-
export function printSection(label) {
|
|
47
|
-
const line = c.muted("─".repeat(36));
|
|
48
|
-
console.log(`\n ${line}`);
|
|
49
|
-
console.log(` ${c.dim(label)}`);
|
|
50
|
-
console.log(` ${line}`);
|
|
51
|
-
}
|
|
52
|
-
export function createStepRunner(total, dryRun = false) {
|
|
53
|
-
let current = 0;
|
|
54
|
-
return async (label, fn) => {
|
|
55
|
-
current++;
|
|
56
|
-
const counter = c.dim(`[${current}/${total}]`);
|
|
57
|
-
const dryLabel = dryRun ? c.dim(" [dry run]") : "";
|
|
58
|
-
if (dryRun) {
|
|
59
|
-
console.log(`\n ${c.purpleDim("│")} ${counter} ${c.dim(label)}${dryLabel}`);
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
process.stdout.write(`\n ${c.purpleDim("│")} ${counter} ${c.white(label)}…`);
|
|
63
|
-
try {
|
|
64
|
-
await fn();
|
|
65
|
-
process.stdout.write(`\r ${c.green("│")} ${counter} ${c.white(label)} ${c.green("✓")}\n`);
|
|
66
|
-
}
|
|
67
|
-
catch (err) {
|
|
68
|
-
process.stdout.write(`\r ${c.red("│")} ${counter} ${c.white(label)} ${c.red("✗")}\n`);
|
|
69
|
-
throw err;
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
// ─── Prompt prefix ────────────────────────────────────────────────────────────
|
|
74
|
-
// Returns a chalk-formatted "? label" string for use in inquirer's `message`.
|
|
75
|
-
// Inquirer renders the message as-is, so we pre-color it here.
|
|
76
|
-
export function q(label, hint) {
|
|
77
|
-
const base = ` ${c.purple("?")} ${c.white(label)}`;
|
|
78
|
-
return hint ? `${base}\n ${c.dim(hint)}` : base;
|
|
79
|
-
}
|
|
80
|
-
// ─── Detected-value label ─────────────────────────────────────────────────────
|
|
81
|
-
// Appends a dim "(detected)" label to the default value shown in a list prompt.
|
|
82
|
-
export function detected(value) {
|
|
83
|
-
return `${value} ${c.dim("(detected)")}`;
|
|
84
|
-
}
|
|
85
|
-
// Strip ANSI escape codes to get the visible character width
|
|
86
|
-
function visibleLen(s) {
|
|
87
|
-
return s.replace(/\x1b\[[0-9;]*m/g, "").length;
|
|
88
|
-
}
|
|
89
|
-
function boxRow(content, w, borderFn) {
|
|
90
|
-
const pad = w - visibleLen(content);
|
|
91
|
-
return `${borderFn("│")} ${content}${" ".repeat(Math.max(0, pad))} ${borderFn("│")}`;
|
|
92
|
-
}
|
|
93
|
-
export function printSuccess(opts) {
|
|
94
|
-
const { title, commands, tips = [] } = opts;
|
|
95
|
-
const w = 56;
|
|
96
|
-
const top = c.green("╭" + "─".repeat(w) + "╮");
|
|
97
|
-
const bot = c.green("╰" + "─".repeat(w) + "╯");
|
|
98
|
-
const row = (s) => boxRow(s, w, c.green);
|
|
99
|
-
const blank = row("");
|
|
100
|
-
console.log();
|
|
101
|
-
console.log(` ${top}`);
|
|
102
|
-
console.log(` ${row(c.greenBold("✓ " + title))}`);
|
|
103
|
-
console.log(` ${blank}`);
|
|
104
|
-
for (const { cmd, comment } of commands) {
|
|
105
|
-
const line = comment
|
|
106
|
-
? c.cyan(cmd) + " " + c.muted("# " + comment)
|
|
107
|
-
: c.cyan(cmd);
|
|
108
|
-
console.log(` ${row(line)}`);
|
|
109
|
-
}
|
|
110
|
-
if (tips.length > 0) {
|
|
111
|
-
console.log(` ${blank}`);
|
|
112
|
-
for (const { label, cmd } of tips) {
|
|
113
|
-
console.log(` ${row(c.dim(label))}`);
|
|
114
|
-
console.log(` ${row(" " + c.purple(cmd))}`);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
console.log(` ${bot}`);
|
|
118
|
-
console.log();
|
|
119
|
-
}
|
|
120
|
-
export function printError(opts) {
|
|
121
|
-
const { title, detail, recovery } = opts;
|
|
122
|
-
const w = 56;
|
|
123
|
-
const top = c.red("╭" + "─".repeat(w) + "╮");
|
|
124
|
-
const bot = c.red("╰" + "─".repeat(w) + "╯");
|
|
125
|
-
const row = (s) => boxRow(s, w, c.red);
|
|
126
|
-
const blank = row("");
|
|
127
|
-
console.log();
|
|
128
|
-
console.log(` ${top}`);
|
|
129
|
-
console.log(` ${row(c.red("✗ " + title))}`);
|
|
130
|
-
if (detail)
|
|
131
|
-
console.log(` ${row(c.dim(" " + detail))}`);
|
|
132
|
-
console.log(` ${blank}`);
|
|
133
|
-
console.log(` ${row(c.dim("Recover manually:"))}`);
|
|
134
|
-
for (const { label, cmd } of recovery) {
|
|
135
|
-
if (label)
|
|
136
|
-
console.log(` ${row(c.dim(" " + label))}`);
|
|
137
|
-
console.log(` ${row(" " + c.purple(cmd))}`);
|
|
138
|
-
}
|
|
139
|
-
console.log(` ${bot}`);
|
|
140
|
-
console.log();
|
|
141
|
-
}
|
|
142
|
-
// ─── Inline step fail (non-fatal) ─────────────────────────────────────────────
|
|
143
|
-
// For steps that fail but shouldn't abort the whole command.
|
|
144
|
-
export function printWarn(message, hint) {
|
|
145
|
-
console.log(`\n ${c.yellow("⚠")} ${c.yellow(message)}`);
|
|
146
|
-
if (hint)
|
|
147
|
-
console.log(` ${c.dim(hint)}`);
|
|
148
|
-
}
|
|
149
|
-
//# sourceMappingURL=ui.js.map
|
package/dist/ui.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
|