nx-factory-cli 2.0.5 → 2.1.0

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 (58) hide show
  1. package/dist/commands/add-app.d.ts +0 -5
  2. package/dist/commands/add-app.d.ts.map +1 -1
  3. package/dist/commands/add-app.js +80 -53
  4. package/dist/commands/add-app.js.map +1 -1
  5. package/dist/commands/add-auth.d.ts +8 -0
  6. package/dist/commands/add-auth.d.ts.map +1 -0
  7. package/dist/commands/add-auth.js +182 -0
  8. package/dist/commands/add-auth.js.map +1 -0
  9. package/dist/commands/add-component.d.ts.map +1 -1
  10. package/dist/commands/add-component.js +12 -6
  11. package/dist/commands/add-component.js.map +1 -1
  12. package/dist/commands/add-lib.js +2 -2
  13. package/dist/commands/add-lib.js.map +1 -1
  14. package/dist/commands/add-storybook.js +5 -5
  15. package/dist/commands/add-storybook.js.map +1 -1
  16. package/dist/commands/doctor.d.ts.map +1 -1
  17. package/dist/commands/doctor.js +20 -15
  18. package/dist/commands/doctor.js.map +1 -1
  19. package/dist/commands/init.d.ts.map +1 -1
  20. package/dist/commands/init.js +86 -64
  21. package/dist/commands/init.js.map +1 -1
  22. package/dist/commands/list.js +2 -2
  23. package/dist/commands/list.js.map +1 -1
  24. package/dist/commands/remove-component.js +5 -5
  25. package/dist/commands/remove-component.js.map +1 -1
  26. package/dist/commands/update.js +1 -1
  27. package/dist/commands/update.js.map +1 -1
  28. package/dist/index.js +11 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/resolve-root.d.ts +22 -0
  31. package/dist/resolve-root.d.ts.map +1 -0
  32. package/dist/resolve-root.js +65 -0
  33. package/dist/resolve-root.js.map +1 -0
  34. package/dist/setups/auth/base.d.ts +11 -0
  35. package/dist/setups/auth/base.d.ts.map +1 -0
  36. package/dist/setups/auth/base.js +91 -0
  37. package/dist/setups/auth/base.js.map +1 -0
  38. package/dist/setups/auth/index.d.ts +6 -0
  39. package/dist/setups/auth/index.d.ts.map +1 -0
  40. package/dist/setups/auth/index.js +5 -0
  41. package/dist/setups/auth/index.js.map +1 -0
  42. package/dist/setups/auth/systems/better-auth.d.ts +3 -0
  43. package/dist/setups/auth/systems/better-auth.d.ts.map +1 -0
  44. package/dist/setups/auth/systems/better-auth.js +357 -0
  45. package/dist/setups/auth/systems/better-auth.js.map +1 -0
  46. package/dist/setups/auth/systems/clerk.d.ts +3 -0
  47. package/dist/setups/auth/systems/clerk.d.ts.map +1 -0
  48. package/dist/setups/auth/systems/clerk.js +259 -0
  49. package/dist/setups/auth/systems/clerk.js.map +1 -0
  50. package/dist/setups/auth/systems/workos.d.ts +3 -0
  51. package/dist/setups/auth/systems/workos.d.ts.map +1 -0
  52. package/dist/setups/auth/systems/workos.js +273 -0
  53. package/dist/setups/auth/systems/workos.js.map +1 -0
  54. package/dist/setups/auth/types.d.ts +39 -0
  55. package/dist/setups/auth/types.d.ts.map +1 -0
  56. package/dist/setups/auth/types.js +2 -0
  57. package/dist/setups/auth/types.js.map +1 -0
  58. package/package.json +2 -2
@@ -5,11 +5,6 @@ interface AddAppOptions {
5
5
  dryRun?: boolean;
6
6
  }
7
7
  export declare function addAppCommand(options: AddAppOptions): Promise<void>;
8
- /**
9
- * Called by init.ts to scaffold the optional example Next.js app.
10
- * Runs create-next-app@latest inside <workspaceRoot>/apps/, then
11
- * wires the shared UI package in exactly the same way add-app does.
12
- */
13
8
  export declare function scaffoldExampleApp(workspaceRoot: string, appName: string, uiPkgName: string, pm: string): Promise<void>;
14
9
  export {};
15
10
  //# sourceMappingURL=add-app.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"add-app.d.ts","sourceRoot":"","sources":["../../src/commands/add-app.ts"],"names":[],"mappings":"AAOA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAO,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAQ,OAAO,CAAC;IACpB,MAAM,CAAC,EAAK,OAAO,CAAC;CACrB;AAOD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAkIzE;AA8SD;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAQ,MAAM,EACrB,SAAS,EAAM,MAAM,EACrB,EAAE,EAAa,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAOf"}
1
+ {"version":3,"file":"add-app.d.ts","sourceRoot":"","sources":["../../src/commands/add-app.ts"],"names":[],"mappings":"AAQA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAO,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAQ,OAAO,CAAC;IACpB,MAAM,CAAC,EAAK,OAAO,CAAC;CACrB;AAOD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA0JzE;AAwQD,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAQ,MAAM,EACrB,SAAS,EAAM,MAAM,EACrB,EAAE,EAAa,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAMf"}
@@ -3,21 +3,43 @@ import path from "path";
3
3
  import { pathExists, writeFile, readJson } from "../files.js";
4
4
  import { pmWorkspaceProtocol, detectPackageManager, pmx, pmxArgs, runInteractive } from "../exec.js";
5
5
  import { loadConfig } from "../config.js";
6
+ import { requireMonorepoRoot, MonorepoRootNotFoundError } from "../resolve-root";
6
7
  import { q, detected, createStepRunner, printSection, printSuccess, printError, c } from "../ui.js";
7
8
  export async function addAppCommand(options) {
8
- const pkgJsonPath = path.join(process.cwd(), "package.json");
9
+ // ── Resolve monorepo root from wherever the user invokes this ──────────────
10
+ let workspaceRoot;
11
+ try {
12
+ workspaceRoot = await requireMonorepoRoot();
13
+ }
14
+ catch (err) {
15
+ if (err instanceof MonorepoRootNotFoundError) {
16
+ printError({
17
+ title: "Could not find monorepo root",
18
+ detail: String(err),
19
+ recovery: [{ label: "Run from inside your nx-factory workspace:", cmd: "cd <monorepo-root>" }],
20
+ });
21
+ }
22
+ else {
23
+ printError({
24
+ title: "Unexpected error",
25
+ detail: String(err),
26
+ recovery: [{ label: "", cmd: "cd <monorepo-root> && nx-factory add-app" }],
27
+ });
28
+ }
29
+ process.exit(1);
30
+ }
31
+ const pkgJsonPath = path.join(workspaceRoot, "package.json");
9
32
  if (!(await pathExists(pkgJsonPath))) {
10
33
  printError({
11
- title: "No package.json found",
12
- detail: "Run this command from the monorepo root.",
13
- recovery: [{ label: "", cmd: "cd my-monorepo && nx-factory add-app" }],
34
+ title: "No package.json found at workspace root",
35
+ detail: `Resolved root: ${workspaceRoot}`,
36
+ recovery: [{ label: "", cmd: "nx-factory init" }],
14
37
  });
15
38
  process.exit(1);
16
- return;
17
39
  }
18
40
  await readJson(pkgJsonPath);
19
41
  const cfg = await loadConfig();
20
- const packagesDir = path.join(process.cwd(), "packages");
42
+ const packagesDir = path.join(workspaceRoot, "packages");
21
43
  let detectedUiPkg = cfg?.uiPackage ?? "ui";
22
44
  if (!cfg && await pathExists(packagesDir)) {
23
45
  const { default: fs } = await import("fs-extra");
@@ -25,7 +47,7 @@ export async function addAppCommand(options) {
25
47
  if (pkgs.length > 0)
26
48
  detectedUiPkg = pkgs[0];
27
49
  }
28
- const detectedPm = await detectPackageManager();
50
+ const detectedPm = await detectPackageManager(workspaceRoot);
29
51
  const defaults = {
30
52
  appName: options.name ?? "my-app",
31
53
  framework: options.framework ?? "nextjs",
@@ -74,7 +96,7 @@ export async function addAppCommand(options) {
74
96
  const framework = (answers.framework ?? defaults.framework);
75
97
  const uiPkgName = (answers.uiPkgName ?? defaults.uiPkgName);
76
98
  const pm = (answers.pkgManager ?? detectedPm ?? defaults.pkgManager);
77
- const appsDir = path.join(process.cwd(), "apps");
99
+ const appsDir = path.join(workspaceRoot, "apps");
78
100
  const appDir = path.join(appsDir, appName);
79
101
  if (await pathExists(appDir)) {
80
102
  printError({
@@ -82,7 +104,6 @@ export async function addAppCommand(options) {
82
104
  recovery: [{ label: "Choose a different name or delete the existing directory:", cmd: `rm -rf apps/${appName}` }],
83
105
  });
84
106
  process.exit(1);
85
- return;
86
107
  }
87
108
  // ─── Dry run ────────────────────────────────────────────────────────────────
88
109
  if (options.dryRun) {
@@ -118,9 +139,12 @@ export async function addAppCommand(options) {
118
139
  { cmd: `${pm} install`, comment: "install workspace deps" },
119
140
  { cmd: devCmd(framework, pm, appName), comment: framework === "expo" ? "start Expo dev server" : "start the app" },
120
141
  ],
121
- ...(framework === "expo" ? {
122
- tips: [{ label: "Note:", cmd: "Expo uses NativeWind — shadcn components are web-only" }],
123
- } : {}),
142
+ tips: [
143
+ { label: "Add auth:", cmd: "nx-factory add-auth" },
144
+ ...(framework === "expo"
145
+ ? [{ label: "Note:", cmd: "Expo uses NativeWind — shadcn components are web-only" }]
146
+ : []),
147
+ ],
124
148
  });
125
149
  }
126
150
  // ─── CLI runner ───────────────────────────────────────────────────────────────
@@ -131,33 +155,18 @@ async function scaffoldViaCli(framework, appName, appsDir, pm) {
131
155
  case "nextjs":
132
156
  await runInteractive(pmx(pm), pmxArgs(pm, "create-next-app@latest", [
133
157
  appName,
134
- "--ts",
135
- "--tailwind",
136
- "--eslint",
137
- "--app",
138
- "--src-dir",
139
- "--no-import-alias",
158
+ "--ts", "--tailwind", "--eslint", "--app", "--src-dir", "--no-import-alias",
140
159
  `--use-${pm === "bun" ? "bun" : pm === "yarn" ? "yarn" : pm === "npm" ? "npm" : "pnpm"}`,
141
160
  ]), { cwd: appsDir });
142
161
  break;
143
162
  case "vite":
144
- await runInteractive(pmx(pm), pmxArgs(pm, "create-vite@latest", [
145
- appName,
146
- "--template", "react-ts",
147
- ]), { cwd: appsDir });
163
+ await runInteractive(pmx(pm), pmxArgs(pm, "create-vite@latest", [appName, "--template", "react-ts"]), { cwd: appsDir });
148
164
  break;
149
165
  case "remix":
150
- await runInteractive(pmx(pm), pmxArgs(pm, "create-remix@latest", [
151
- appName,
152
- "--yes",
153
- ]), { cwd: appsDir });
166
+ await runInteractive(pmx(pm), pmxArgs(pm, "create-remix@latest", [appName, "--yes"]), { cwd: appsDir });
154
167
  break;
155
168
  case "expo":
156
- await runInteractive(pmx(pm), pmxArgs(pm, "create-expo-app@latest", [
157
- appName,
158
- "--template", "blank-typescript",
159
- "--no-install",
160
- ]), { cwd: appsDir });
169
+ await runInteractive(pmx(pm), pmxArgs(pm, "create-expo-app@latest", [appName, "--template", "blank-typescript", "--no-install"]), { cwd: appsDir });
161
170
  break;
162
171
  }
163
172
  }
@@ -192,7 +201,6 @@ async function patchConfig(framework, appDir, uiPkgName, appName) {
192
201
  break;
193
202
  }
194
203
  }
195
- // ── Next.js ───────────────────────────────────────────────────────────────────
196
204
  async function patchNextConfig(appDir, uiPkgName) {
197
205
  const { default: fs } = await import("fs-extra");
198
206
  for (const cfgFile of ["next.config.ts", "next.config.js", "next.config.mjs"]) {
@@ -206,27 +214,35 @@ async function patchNextConfig(appDir, uiPkgName) {
206
214
  }
207
215
  }
208
216
  else {
209
- // create-next-app writes: const nextConfig: NextConfig = {};
210
217
  src = src.replace(/(const nextConfig[^=]*=\s*\{)/, `$1\n transpilePackages: ["@workspace/${uiPkgName}"],`);
211
218
  }
212
219
  await fs.writeFile(cfgPath, src, "utf-8");
213
220
  break;
214
221
  }
215
- // Inject shared styles import into layout.tsx
216
222
  for (const layoutRel of ["src/app/layout.tsx", "app/layout.tsx", "src/app/layout.jsx"]) {
217
223
  const layoutPath = path.join(appDir, layoutRel);
218
224
  if (!(await pathExists(layoutPath)))
219
225
  continue;
220
226
  let src = await fs.readFile(layoutPath, "utf-8");
221
227
  if (!src.includes(`@workspace/${uiPkgName}`)) {
222
- // Insert after the last consecutive import line
223
- src = src.replace(/((?:^import[^\n]+\n)+)/m, `$1import "@workspace/${uiPkgName}/styles";\n`);
228
+ src = src.replace(/((?:^import[^\n]+\n)+)/m, `$1import "@workspace/${uiPkgName}/styles/globals.css";\n`);
224
229
  await fs.writeFile(layoutPath, src, "utf-8");
225
230
  }
226
231
  break;
227
232
  }
233
+ for (const cssRel of ["src/app/globals.css", "app/globals.css"]) {
234
+ const cssPath = path.join(appDir, cssRel);
235
+ if (!(await pathExists(cssPath)))
236
+ continue;
237
+ let css = await fs.readFile(cssPath, "utf-8");
238
+ if (!css.includes("@source")) {
239
+ css = `/* Ensure Tailwind scans this app's source files */\n@import "@workspace/${uiPkgName}/styles/globals.css";\n\n${css}`;
240
+ await fs.writeFile(cssPath, css, "utf-8");
241
+ }
242
+ break;
243
+ }
244
+ await patchAppTsConfig(appDir);
228
245
  }
229
- // ── Vite ──────────────────────────────────────────────────────────────────────
230
246
  async function patchViteConfig(appDir, uiPkgName) {
231
247
  const { default: fs } = await import("fs-extra");
232
248
  for (const cfgFile of ["vite.config.ts", "vite.config.js"]) {
@@ -241,27 +257,25 @@ async function patchViteConfig(appDir, uiPkgName) {
241
257
  }
242
258
  break;
243
259
  }
244
- // Add @tailwindcss/vite devDependency
245
260
  const pkgPath = path.join(appDir, "package.json");
246
261
  if (await pathExists(pkgPath)) {
247
262
  const pkg = await fs.readJson(pkgPath);
248
263
  pkg.devDependencies = { ...pkg.devDependencies, "@tailwindcss/vite": "^4.0.0" };
249
264
  await fs.writeJson(pkgPath, pkg, { spaces: 2 });
250
265
  }
251
- // Inject shared styles import into main entry
252
266
  for (const mainRel of ["src/main.tsx", "src/main.jsx", "src/main.ts"]) {
253
267
  const mainPath = path.join(appDir, mainRel);
254
268
  if (!(await pathExists(mainPath)))
255
269
  continue;
256
270
  let src = await fs.readFile(mainPath, "utf-8");
257
271
  if (!src.includes(`@workspace/${uiPkgName}`)) {
258
- src = `import "@workspace/${uiPkgName}/styles";\n${src}`;
272
+ src = `import "@workspace/${uiPkgName}/styles/globals.css";\n${src}`;
259
273
  await fs.writeFile(mainPath, src, "utf-8");
260
274
  }
261
275
  break;
262
276
  }
277
+ await patchAppTsConfig(appDir);
263
278
  }
264
- // ── Remix ─────────────────────────────────────────────────────────────────────
265
279
  async function patchRemixConfig(appDir, uiPkgName) {
266
280
  const { default: fs } = await import("fs-extra");
267
281
  for (const cfgFile of ["vite.config.ts", "vite.config.js"]) {
@@ -288,13 +302,13 @@ async function patchRemixConfig(appDir, uiPkgName) {
288
302
  continue;
289
303
  let src = await fs.readFile(rootPath, "utf-8");
290
304
  if (!src.includes(`@workspace/${uiPkgName}`)) {
291
- src = src.replace(/((?:^import[^\n]+\n)+)/m, `$1import "@workspace/${uiPkgName}/styles";\n`);
305
+ src = src.replace(/((?:^import[^\n]+\n)+)/m, `$1import "@workspace/${uiPkgName}/styles/globals.css";\n`);
292
306
  await fs.writeFile(rootPath, src, "utf-8");
293
307
  }
294
308
  break;
295
309
  }
310
+ await patchAppTsConfig(appDir);
296
311
  }
297
- // ── Expo ──────────────────────────────────────────────────────────────────────
298
312
  async function patchExpoConfig(appDir, uiPkgName) {
299
313
  const { default: fs } = await import("fs-extra");
300
314
  const pkgPath = path.join(appDir, "package.json");
@@ -310,8 +324,7 @@ module.exports = {
310
324
  presets: [require("nativewind/preset")],
311
325
  theme: { extend: {} },
312
326
  plugins: [],
313
- };
314
- `);
327
+ };\n`);
315
328
  await writeFile(path.join(appDir, "global.css"), `@tailwind base;\n@tailwind components;\n@tailwind utilities;\n`);
316
329
  await writeFile(path.join(appDir, "babel.config.js"), `module.exports = function (api) {
317
330
  api.cache(true);
@@ -321,8 +334,7 @@ module.exports = {
321
334
  "nativewind/babel",
322
335
  ],
323
336
  };
324
- };
325
- `);
337
+ };\n`);
326
338
  for (const layoutRel of ["app/_layout.tsx", "app/_layout.jsx"]) {
327
339
  const layoutPath = path.join(appDir, layoutRel);
328
340
  if (!(await pathExists(layoutPath)))
@@ -334,8 +346,28 @@ module.exports = {
334
346
  }
335
347
  break;
336
348
  }
349
+ await patchAppTsConfig(appDir);
350
+ }
351
+ async function patchAppTsConfig(appDir) {
352
+ const { default: fs } = await import("fs-extra");
353
+ const tsConfigPath = path.join(appDir, "tsconfig.json");
354
+ if (!(await pathExists(tsConfigPath)))
355
+ return;
356
+ const tsConfig = await fs.readJson(tsConfigPath);
357
+ tsConfig.extends = "../../tsconfig.base.json";
358
+ const currentPaths = tsConfig.compilerOptions?.paths ?? {};
359
+ tsConfig.compilerOptions = {
360
+ ...(tsConfig.compilerOptions ?? {}),
361
+ paths: {
362
+ ...currentPaths,
363
+ "@/*": ["./src/*"],
364
+ "@workspace/*": ["../../packages/*"],
365
+ },
366
+ };
367
+ const includeEntries = Array.isArray(tsConfig.include) ? tsConfig.include : [];
368
+ tsConfig.include = Array.from(new Set([...includeEntries, "../../packages/**/*.ts", "../../packages/**/*.tsx"]));
369
+ await fs.writeJson(tsConfigPath, tsConfig, { spaces: 2 });
337
370
  }
338
- // ─── Helpers ──────────────────────────────────────────────────────────────────
339
371
  function frameworkCliName(framework) {
340
372
  switch (framework) {
341
373
  case "nextjs": return "create-next-app@latest";
@@ -350,11 +382,6 @@ function devCmd(framework, pm, appName) {
350
382
  return `cd apps/${appName} && ${pm} start`;
351
383
  return `${pm} dev --filter=${appName}`;
352
384
  }
353
- /**
354
- * Called by init.ts to scaffold the optional example Next.js app.
355
- * Runs create-next-app@latest inside <workspaceRoot>/apps/, then
356
- * wires the shared UI package in exactly the same way add-app does.
357
- */
358
385
  export async function scaffoldExampleApp(workspaceRoot, appName, uiPkgName, pm) {
359
386
  const appsDir = path.join(workspaceRoot, "apps");
360
387
  const appDir = path.join(appsDir, appName);
@@ -1 +1 @@
1
- {"version":3,"file":"add-app.js","sourceRoot":"","sources":["../../src/commands/add-app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add-app.js","sourceRoot":"","sources":["../../src/commands/add-app.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAa,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACrG,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAcpG,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAsB;IACxD,8EAA8E;IAC9E,IAAI,aAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,aAAa,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC9C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,yBAAyB,EAAE,CAAC;YAC7C,UAAU,CAAC;gBACT,KAAK,EAAK,8BAA8B;gBACxC,MAAM,EAAI,MAAM,CAAC,GAAG,CAAC;gBACrB,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,4CAA4C,EAAE,GAAG,EAAE,oBAAoB,EAAE,CAAC;aAC/F,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,UAAU,CAAC;gBACT,KAAK,EAAK,kBAAkB;gBAC5B,MAAM,EAAI,MAAM,CAAC,GAAG,CAAC;gBACrB,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,0CAA0C,EAAE,CAAC;aAC3E,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAC7D,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QACrC,UAAU,CAAC;YACT,KAAK,EAAK,yCAAyC;YACnD,MAAM,EAAI,kBAAkB,aAAa,EAAE;YAC3C,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC;SAClD,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,CAAuB,WAAW,CAAC,CAAC;IAElD,MAAM,GAAG,GAAG,MAAM,UAAU,EAAE,CAAC;IAE/B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IACzD,IAAI,aAAa,GAAG,GAAG,EAAE,SAAS,IAAI,IAAI,CAAC;IAC3C,IAAI,CAAC,GAAG,IAAI,MAAM,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1C,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAE7D,MAAM,QAAQ,GAAG;QACf,OAAO,EAAK,OAAO,CAAC,IAAI,IAAS,QAAQ;QACzC,SAAS,EAAG,OAAO,CAAC,SAAS,IAAI,QAAQ;QACzC,SAAS,EAAG,aAAa;QACzB,UAAU,EAAE,UAAU,IAAI,GAAG,EAAE,UAAU,IAAI,MAAM;KACpD,CAAC;IAEF,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG;QACzB,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC;YACpB;gBACE,IAAI,EAAM,OAAO;gBACjB,IAAI,EAAM,SAAS;gBACnB,OAAO,EAAG,CAAC,CAAC,UAAU,EAAE,yCAAyC,CAAC;gBAClE,OAAO,EAAG,QAAQ,CAAC,OAAO;gBAC1B,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CACtB,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,6CAA6C,CAAC;aACjF;YACD;gBACE,IAAI,EAAK,MAAM;gBACf,IAAI,EAAK,WAAW;gBACpB,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC;gBACvB,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,mCAAmC,EAAE,KAAK,EAAE,QAAQ,EAAE;oBAC9D,EAAE,IAAI,EAAE,+BAA+B,EAAM,KAAK,EAAE,MAAM,EAAI;oBAC9D,EAAE,IAAI,EAAE,gCAAgC,EAAK,KAAK,EAAE,OAAO,EAAG;oBAC9D,EAAE,IAAI,EAAE,mCAAmC,EAAE,KAAK,EAAE,MAAM,EAAI;iBAC/D;gBACD,OAAO,EAAE,QAAQ,CAAC,SAAS;gBAC3B,IAAI,EAAK,CAAC,OAAO,CAAC,SAAS;aAC5B;YACD;gBACE,IAAI,EAAK,OAAO;gBAChB,IAAI,EAAK,WAAW;gBACpB,OAAO,EAAE,CAAC,CAAC,wBAAwB,CAAC;gBACpC,OAAO,EAAE,QAAQ,CAAC,SAAS;aAC5B;YACD;gBACE,IAAI,EAAK,MAAM;gBACf,IAAI,EAAK,YAAY;gBACrB,OAAO,EAAE,CAAC,CAAC,iBAAiB,CAAC;gBAC7B,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;gBACvC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU;gBAChE,IAAI,EAAK,CAAC,UAAU;aACrB;SACF,CAAC,CAAC;IAEP,MAAM,OAAO,GAAK,CAAC,OAAO,CAAC,OAAO,IAAO,QAAQ,CAAC,OAAO,CAAa,CAAC;IACvE,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,SAAS,IAAK,QAAQ,CAAC,SAAS,CAAW,CAAC;IACvE,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,SAAS,IAAK,QAAQ,CAAC,SAAS,CAAW,CAAC;IACvE,MAAM,EAAE,GAAU,CAAC,OAAO,CAAC,UAAU,IAAI,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAW,CAAC;IACtF,MAAM,OAAO,GAAK,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,MAAM,GAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE9C,IAAI,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,UAAU,CAAC;YACT,KAAK,EAAK,QAAQ,OAAO,iBAAiB;YAC1C,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,2DAA2D,EAAE,GAAG,EAAE,eAAe,OAAO,EAAE,EAAE,CAAC;SAClH,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,+EAA+E;IAC/E,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,YAAY,CAAC,yBAAyB,SAAS,eAAe,OAAO,EAAE,CAAC,CAAC;QACzE,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,OAAO,gBAAgB,CAAC,SAAS,CAAC,EAAE,EAAY,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAC;QAC3E,MAAM,IAAI,CAAC,kBAAkB,SAAS,aAAa,EAAO,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAC;QAC1E,MAAM,IAAI,CAAC,6CAA6C,EAAG,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAC;QAC3E,YAAY,CAAC;YACX,KAAK,EAAK,QAAQ,OAAO,oCAAoC;YAC7D,QAAQ,EAAE;gBACR,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE;gBACxB,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE;aAClE;SACF,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,+EAA+E;IAC/E,YAAY,CAAC,eAAe,SAAS,eAAe,OAAO,EAAE,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAEjC,MAAM,IAAI,CAAC,OAAO,gBAAgB,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,kBAAkB,SAAS,aAAa,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC;QACX,KAAK,EAAK,QAAQ,OAAO,UAAU;QACnC,QAAQ,EAAE;YACR,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAiB,OAAO,EAAE,wBAAwB,EAAsC;YAC9G,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,eAAe,EAAE;SACnH;QACD,IAAI,EAAE;YACJ,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,qBAAqB,EAAE;YAClD,GAAG,CAAC,SAAS,KAAK,MAAM;gBACtB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,uDAAuD,EAAE,CAAC;gBACpF,CAAC,CAAC,EAAE,CAAC;SACR;KACF,CAAC,CAAC;AACL,CAAC;AAED,iFAAiF;AAEjF,KAAK,UAAU,cAAc,CAC3B,SAAiB,EACjB,OAAiB,EACjB,OAAiB,EACjB,EAAiB;IAEjB,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAE5B,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,MAAM,cAAc,CAClB,GAAG,CAAC,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,EAAE,wBAAwB,EAAE;gBACpC,OAAO;gBACP,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,mBAAmB;gBAC3E,SAAS,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE;aACzF,CAAC,EACF,EAAE,GAAG,EAAE,OAAO,EAAE,CACjB,CAAC;YACF,MAAM;QACR,KAAK,MAAM;YACT,MAAM,cAAc,CAClB,GAAG,CAAC,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,EAAE,oBAAoB,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,EACtE,EAAE,GAAG,EAAE,OAAO,EAAE,CACjB,CAAC;YACF,MAAM;QACR,KAAK,OAAO;YACV,MAAM,cAAc,CAClB,GAAG,CAAC,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,EAAE,qBAAqB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,EACtD,EAAE,GAAG,EAAE,OAAO,EAAE,CACjB,CAAC;YACF,MAAM;QACR,KAAK,MAAM;YACT,MAAM,cAAc,CAClB,GAAG,CAAC,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,EAAE,wBAAwB,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,CAAC,CAAC,EAClG,EAAE,GAAG,EAAE,OAAO,EAAE,CACjB,CAAC;YACF,MAAM;IACV,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,KAAK,UAAU,eAAe,CAAC,MAAc,EAAE,SAAiB,EAAE,EAAU;IAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACtD,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IACjD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,kCAAkC,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC/C,OAAO,CAAC,YAAY,GAAG;QACrB,GAAG,OAAO,CAAC,YAAY;QACvB,CAAC,cAAc,SAAS,EAAE,CAAC,EAAE,mBAAmB,CAAC,EAAE,CAAC;KACrD,CAAC;IACF,MAAM,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,iFAAiF;AAEjF,KAAK,UAAU,WAAW,CACxB,SAAiB,EACjB,MAAiB,EACjB,SAAiB,EACjB,OAAiB;IAEjB,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,QAAQ;YAAE,MAAM,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAAE,MAAM;QAChE,KAAK,MAAM;YAAI,MAAM,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAAE,MAAM;QAChE,KAAK,OAAO;YAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAAC,MAAM;QAChE,KAAK,MAAM;YAAI,MAAM,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAAE,MAAM;IAClE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,MAAc,EAAE,SAAiB;IAC9D,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IACjD,KAAK,MAAM,OAAO,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,EAAE,CAAC;QAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;YAAE,SAAS;QAC3C,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,SAAS,EAAE,CAAC,EAAE,CAAC;gBAC7C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,yBAAyB,EAAE,mCAAmC,SAAS,KAAK,CAAC,CAAC;YAClG,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,+BAA+B,EAAE,yCAAyC,SAAS,KAAK,CAAC,CAAC;QAC9G,CAAC;QACD,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM;IACR,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,EAAE,oBAAoB,CAAC,EAAE,CAAC;QACvF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;YAAE,SAAS;QAC9C,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,SAAS,EAAE,CAAC,EAAE,CAAC;YAC7C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,yBAAyB,EAAE,wBAAwB,SAAS,yBAAyB,CAAC,CAAC;YACzG,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM;IACR,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,EAAE,CAAC;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;YAAE,SAAS;QAC3C,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,GAAG,GAAG,4EAA4E,SAAS,4BAA4B,GAAG,EAAE,CAAC;YAC7H,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM;IACR,CAAC;IACD,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,MAAc,EAAE,SAAiB;IAC9D,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IACjD,KAAK,MAAM,OAAO,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,EAAE,CAAC;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;YAAE,SAAS;QAC3C,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACvE,GAAG,GAAG,iDAAiD,GAAG,EAAE,CAAC;YAC7D,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,2BAA2B,CAAC,CAAC;YAChE,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM;IACR,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAClD,IAAI,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvC,GAAG,CAAC,eAAe,GAAG,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC;QAChF,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,CAAC,cAAc,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE,CAAC;QACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;YAAE,SAAS;QAC5C,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,SAAS,EAAE,CAAC,EAAE,CAAC;YAC7C,GAAG,GAAG,sBAAsB,SAAS,0BAA0B,GAAG,EAAE,CAAC;YACrE,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM;IACR,CAAC;IACD,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,MAAc,EAAE,SAAiB;IAC/D,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IACjD,KAAK,MAAM,OAAO,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,EAAE,CAAC;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;YAAE,SAAS;QAC3C,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACvE,GAAG,GAAG,iDAAiD,GAAG,EAAE,CAAC;YAC7D,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,2BAA2B,CAAC,CAAC;YAChE,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM;IACR,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAClD,IAAI,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvC,GAAG,CAAC,eAAe,GAAG,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC;QAChF,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;YAAE,SAAS;QAC5C,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,SAAS,EAAE,CAAC,EAAE,CAAC;YAC7C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,yBAAyB,EAAE,wBAAwB,SAAS,yBAAyB,CAAC,CAAC;YACzG,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM;IACR,CAAC;IACD,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,MAAc,EAAE,SAAiB;IAC9D,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAClD,IAAI,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvC,GAAG,CAAC,YAAY,GAAM,EAAE,GAAG,GAAG,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;QAC3F,GAAG,CAAC,eAAe,GAAG,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC;QACjF,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC,EACvC;;;;;;KAMC,CACF,CAAC;IACF,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,gEAAgE,CAAC,CAAC;IACnH,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,EACpC;;;;;;;;KAQC,CACF,CAAC;IACF,KAAK,MAAM,SAAS,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,EAAE,CAAC;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;YAAE,SAAS;QAC9C,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,GAAG,GAAG,4BAA4B,GAAG,EAAE,CAAC;YACxC,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM;IACR,CAAC;IACD,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,MAAc;IAC5C,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACxD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC;QAAE,OAAO;IAC9C,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACjD,QAAQ,CAAC,OAAO,GAAG,0BAA0B,CAAC;IAC9C,MAAM,YAAY,GAAG,QAAQ,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE,CAAC;IAC3D,QAAQ,CAAC,eAAe,GAAG;QACzB,GAAG,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC;QACnC,KAAK,EAAE;YACL,GAAG,YAAY;YACf,KAAK,EAAE,CAAC,SAAS,CAAC;YAClB,cAAc,EAAE,CAAC,kBAAkB,CAAC;SACrC;KACF,CAAC;IACF,MAAM,cAAc,GAAa,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACzF,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,cAAc,EAAE,wBAAwB,EAAE,yBAAyB,CAAC,CAAC,CAAC,CAAC;IACjH,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAiB;IACzC,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,QAAQ,CAAC,CAAC,OAAO,wBAAwB,CAAC;QAC/C,KAAK,MAAM,CAAC,CAAG,OAAO,oBAAoB,CAAC;QAC3C,KAAK,OAAO,CAAC,CAAE,OAAO,qBAAqB,CAAC;QAC5C,KAAK,MAAM,CAAC,CAAG,OAAO,wBAAwB,CAAC;QAC/C,OAAO,CAAC,CAAO,OAAO,UAAU,SAAS,SAAS,CAAC;IACrD,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,SAAiB,EAAE,EAAU,EAAE,OAAe;IAC5D,IAAI,SAAS,KAAK,MAAM;QAAE,OAAO,WAAW,OAAO,OAAO,EAAE,QAAQ,CAAC;IACrE,OAAO,GAAG,EAAE,iBAAiB,OAAO,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,aAAqB,EACrB,OAAqB,EACrB,SAAqB,EACrB,EAAqB;IAErB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,MAAM,GAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5C,MAAM,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IACrD,MAAM,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,8 @@
1
+ interface AddAuthOptions {
2
+ provider?: string;
3
+ yes?: boolean;
4
+ dryRun?: boolean;
5
+ }
6
+ export declare function addAuthCommand(options: AddAuthOptions): Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=add-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-auth.d.ts","sourceRoot":"","sources":["../../src/commands/add-auth.ts"],"names":[],"mappings":"AAoBA,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAO,OAAO,CAAC;IACnB,MAAM,CAAC,EAAI,OAAO,CAAC;CACpB;AAkDD,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAwJ3E"}
@@ -0,0 +1,182 @@
1
+ import inquirer from "inquirer";
2
+ import path from "path";
3
+ import { pathExists } from "../files.js";
4
+ import { detectPackageManager, pmAdd, run } from "../exec.js";
5
+ import { loadConfig } from "../config.js";
6
+ import { requireMonorepoRoot, MonorepoRootNotFoundError } from "../resolve-root";
7
+ import { q, createStepRunner, printSection, printSuccess, printError, } from "../ui.js";
8
+ import { clerkScaffolder, betterAuthScaffolder, workosScaffolder, writeAuthPackageBase, } from "../setups/auth/index";
9
+ // ─── Provider menu ────────────────────────────────────────────────────────────
10
+ const PROVIDERS = [
11
+ { value: "clerk", name: "Clerk — hosted UI, zero-config, generous free tier" },
12
+ { value: "better-auth", name: "Better Auth — open-source, self-hosted, SQLite / Postgres" },
13
+ { value: "workos", name: "WorkOS — enterprise SSO, SCIM, MFA, hosted AuthKit UI" },
14
+ ];
15
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
16
+ function getScaffolder(provider) {
17
+ switch (provider) {
18
+ case "clerk": return clerkScaffolder;
19
+ case "better-auth": return betterAuthScaffolder;
20
+ case "workos": return workosScaffolder;
21
+ }
22
+ }
23
+ function providerDocs(provider) {
24
+ switch (provider) {
25
+ case "clerk": return "https://clerk.com/docs";
26
+ case "better-auth": return "https://www.better-auth.com/docs";
27
+ case "workos": return "https://workos.com/docs/user-management";
28
+ }
29
+ }
30
+ async function listApps(root) {
31
+ const appsDir = path.join(root, "apps");
32
+ if (!(await pathExists(appsDir)))
33
+ return [];
34
+ const { default: fs } = await import("fs-extra");
35
+ const entries = await fs.readdir(appsDir, { withFileTypes: true });
36
+ return entries.filter((e) => e.isDirectory()).map((e) => e.name);
37
+ }
38
+ async function wireApps(root, apps, pm) {
39
+ const { default: fs } = await import("fs-extra");
40
+ const protocol = pm === "npm" ? "*" : "workspace:*";
41
+ for (const appName of apps) {
42
+ const pkgPath = path.join(root, "apps", appName, "package.json");
43
+ if (!(await pathExists(pkgPath)))
44
+ continue;
45
+ const pkg = await fs.readJson(pkgPath);
46
+ pkg.dependencies = { ...pkg.dependencies, "@workspace/auth": protocol };
47
+ await fs.writeJson(pkgPath, pkg, { spaces: 2 });
48
+ }
49
+ }
50
+ // ─── Main command ─────────────────────────────────────────────────────────────
51
+ export async function addAuthCommand(options) {
52
+ // ── Resolve root from wherever the user is running from ─────────────────────
53
+ let root;
54
+ try {
55
+ root = await requireMonorepoRoot();
56
+ }
57
+ catch (err) {
58
+ if (err instanceof MonorepoRootNotFoundError) {
59
+ printError({
60
+ title: "Could not find monorepo root",
61
+ detail: err.message,
62
+ recovery: [
63
+ { label: "Initialise a new workspace:", cmd: "nx-factory init" },
64
+ { label: "Or navigate to your workspace root first.", cmd: "" },
65
+ ],
66
+ });
67
+ }
68
+ else {
69
+ printError({
70
+ title: "Unexpected error resolving workspace root",
71
+ detail: String(err),
72
+ recovery: [{ label: "Try running from your monorepo root:", cmd: "cd <monorepo-root>" }],
73
+ });
74
+ }
75
+ process.exit(1);
76
+ }
77
+ // ── Guard: packages/auth must not already exist ──────────────────────────────
78
+ const authPkgDir = path.join(root, "packages", "auth");
79
+ if (await pathExists(authPkgDir)) {
80
+ printError({
81
+ title: "packages/auth already exists",
82
+ detail: "Remove or rename it before running add-auth again.",
83
+ recovery: [
84
+ { label: "Remove:", cmd: "rm -rf packages/auth" },
85
+ { label: "Then:", cmd: "nx-factory add-auth" },
86
+ ],
87
+ });
88
+ process.exit(1);
89
+ }
90
+ const cfg = await loadConfig();
91
+ const detectedPm = await detectPackageManager(root);
92
+ const pm = detectedPm ?? cfg?.pkgManager ?? "pnpm";
93
+ const apps = await listApps(root);
94
+ // ── Prompts ──────────────────────────────────────────────────────────────────
95
+ const defaults = {
96
+ provider: (options.provider ?? "clerk"),
97
+ selectedApps: apps,
98
+ };
99
+ const answers = options.yes
100
+ ? defaults
101
+ : await inquirer.prompt({
102
+ type: "list",
103
+ name: "provider",
104
+ message: q("Auth provider", "all production-ready — pick based on your needs"),
105
+ choices: PROVIDERS.map((p) => ({ name: p.name, value: p.value, short: p.value })),
106
+ default: defaults.provider,
107
+ when: !options.provider,
108
+ }, ...(apps.length > 0
109
+ ? [{
110
+ type: "checkbox",
111
+ name: "selectedApps",
112
+ message: q("Wire @workspace/auth into which apps?", "adds dep to package.json — run install after"),
113
+ choices: apps,
114
+ default: apps,
115
+ }]
116
+ : []));
117
+ const provider = (answers.provider ?? defaults.provider);
118
+ const selectedApps = (answers.selectedApps ?? defaults.selectedApps);
119
+ const scaffolder = getScaffolder(provider);
120
+ // ── Dry run ────────────────────────────────────────────────────────────────
121
+ if (options.dryRun) {
122
+ printSection(`[dry run] Creating packages/auth — ${scaffolder.label}`);
123
+ const step = createStepRunner(4, true);
124
+ await step("Write package.json, tsconfig.json, tsup.config.ts", async () => { });
125
+ await step(`Scaffold ${scaffolder.label} src/ files`, async () => { });
126
+ await step("Install provider npm packages", async () => { });
127
+ await step(selectedApps.length > 0 ? `Wire into: ${selectedApps.join(", ")}` : "No apps to wire", async () => { });
128
+ printSuccess({
129
+ title: "packages/auth ready (dry run — nothing written)",
130
+ commands: [{ cmd: `nx-factory add-auth --provider ${provider}`, comment: "run without --dry-run to apply" }],
131
+ });
132
+ return;
133
+ }
134
+ // ── Real scaffold ──────────────────────────────────────────────────────────
135
+ printSection(`Creating packages/auth — ${scaffolder.label}`);
136
+ const step = createStepRunner(4);
137
+ await step("Write package base files", async () => {
138
+ await writeAuthPackageBase(authPkgDir, scaffolder, pm);
139
+ });
140
+ await step(`Scaffold ${scaffolder.label} source files`, async () => {
141
+ await scaffolder.scaffold(authPkgDir, {
142
+ provider,
143
+ workspaceRoot: root,
144
+ workspaceName: cfg?.workspaceName ?? "workspace",
145
+ pm,
146
+ });
147
+ });
148
+ await step(`Install ${scaffolder.label} packages`, async () => {
149
+ const deps = Object.keys(scaffolder.dependencies);
150
+ const devDeps = Object.keys(scaffolder.devDependencies);
151
+ if (deps.length > 0) {
152
+ await run(pm, [pmAdd(pm), ...deps], { cwd: authPkgDir });
153
+ }
154
+ if (devDeps.length > 0) {
155
+ await run(pm, [pmAdd(pm), "-D", ...devDeps], { cwd: authPkgDir });
156
+ }
157
+ });
158
+ await step(selectedApps.length > 0
159
+ ? `Add @workspace/auth to: ${selectedApps.join(", ")}`
160
+ : "Skip app wiring (no apps found)", async () => {
161
+ if (selectedApps.length > 0)
162
+ await wireApps(root, selectedApps, pm);
163
+ });
164
+ // ── Success ────────────────────────────────────────────────────────────────
165
+ const nextSteps = [
166
+ { cmd: `${pm} install`, comment: "install new deps across the workspace" },
167
+ { cmd: "cat packages/auth/.env.example", comment: "copy vars to your app's .env.local" },
168
+ { cmd: "pnpm nx build @workspace/auth", comment: "build the auth package" },
169
+ ];
170
+ if (provider === "better-auth") {
171
+ nextSteps.push({ cmd: "npx better-auth migrate", comment: "create DB tables" });
172
+ }
173
+ printSuccess({
174
+ title: `packages/auth created (${scaffolder.label})`,
175
+ commands: nextSteps,
176
+ tips: [
177
+ { label: "Docs →", cmd: providerDocs(provider) },
178
+ { label: "Import →", cmd: `import { ... } from "@workspace/auth/server"` },
179
+ ],
180
+ });
181
+ }
182
+ //# sourceMappingURL=add-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-auth.js","sourceRoot":"","sources":["../../src/commands/add-auth.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"add-component.d.ts","sourceRoot":"","sources":["../../src/commands/add-component.ts"],"names":[],"mappings":"AAkBA,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4D7E"}
1
+ {"version":3,"file":"add-component.d.ts","sourceRoot":"","sources":["../../src/commands/add-component.ts"],"names":[],"mappings":"AAkBA,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+D7E"}
@@ -47,10 +47,13 @@ export async function addComponentCommand(components) {
47
47
  try {
48
48
  await run(pmx(pm), pmxArgs(pm, "shadcn@latest", ["add", "--yes", ...selectedComponents]), { cwd: uiPkgDir });
49
49
  await updateBarrelExports(uiPkgDir, selectedComponents);
50
- const importLine = `import { ${selectedComponents.map(toComponentName).join(", ")} } from "@workspace/${pkgName}";`;
50
+ const importCommands = selectedComponents.map((comp) => ({
51
+ cmd: `import { ${toComponentName(comp)} } from "@workspace/${pkgName}/components/ui/${comp}";`,
52
+ comment: "direct import (no barrel)",
53
+ }));
51
54
  printSuccess({
52
55
  title: `${selectedComponents.length} component${selectedComponents.length > 1 ? "s" : ""} added`,
53
- commands: [{ cmd: importLine, comment: "use in any app" }],
56
+ commands: importCommands,
54
57
  });
55
58
  }
56
59
  catch (err) {
@@ -84,21 +87,24 @@ async function detectUiPackageDir() {
84
87
  return null;
85
88
  }
86
89
  async function updateBarrelExports(uiPkgDir, components) {
87
- const indexPath = path.join(uiPkgDir, "src/index.ts");
90
+ const indexTsxPath = path.join(uiPkgDir, "index.tsx");
91
+ const indexTsPath = path.join(uiPkgDir, "index.ts");
92
+ const indexPath = (await pathExists(indexTsxPath)) ? indexTsxPath : indexTsPath;
88
93
  const { default: fs } = await import("fs-extra");
94
+ const pkgName = path.basename(uiPkgDir);
89
95
  let existing = "";
90
96
  if (await pathExists(indexPath)) {
91
97
  existing = await fs.readFile(indexPath, "utf-8");
92
98
  }
93
99
  const newExports = components
94
- .filter((comp) => !existing.includes(`./components/ui/${comp}`))
95
- .map((comp) => `export * from "./components/ui/${comp}";`)
100
+ .filter((comp) => !existing.includes(`@workspace/${pkgName}/components/ui/${comp}`))
101
+ .map((comp) => `export * from "@workspace/${pkgName}/components/ui/${comp}";`)
96
102
  .join("\n");
97
103
  if (newExports) {
98
104
  if (existing && !existing.endsWith("\n"))
99
105
  existing += "\n";
100
106
  await writeFile(indexPath, existing + newExports + "\n");
101
- console.log(` ${c.dim("✓")} ${c.dim("barrel exports updated in src/index.ts")}`);
107
+ console.log(` ${c.dim("✓")} ${c.dim("barrel exports updated in index.ts")}`);
102
108
  }
103
109
  }
104
110
  function toComponentName(kebab) {