create-aron-app 0.1.7 → 0.1.8

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 (160) hide show
  1. package/README.md +24 -31
  2. package/dist/index.js +38 -49
  3. package/package.json +3 -3
  4. package/templates/.cursor/rules/backend.mdc +112 -0
  5. package/templates/.cursor/rules/coding_standards.mdc +85 -4
  6. package/templates/.cursor/rules/frontend_architecture.mdc +334 -0
  7. package/templates/.github/workflows/ci.yml +17 -6
  8. package/templates/apps/{react-router → web}/.react-router/types/+routes.ts +11 -6
  9. package/templates/apps/{react-router/.react-router/types/src/routes/(dashboard)/todos → web/.react-router/types/src/routes/(dashboard)/(todos)}/+types/[id].ts +5 -2
  10. package/templates/apps/{react-router/.react-router/types/src/routes/(dashboard)/todos → web/.react-router/types/src/routes/(dashboard)/(todos)}/+types/index.ts +5 -2
  11. package/templates/apps/web/.react-router/types/src/routes/(dashboard)/(todos)/+types/layout.ts +65 -0
  12. package/templates/apps/{react-router → web}/project.json +11 -4
  13. package/templates/apps/{react-router → web}/react-router.config.ts +1 -1
  14. package/templates/apps/web/src/libs/convex_query_client.ts +11 -0
  15. package/templates/apps/web/src/libs/react_query_client.ts +17 -0
  16. package/templates/apps/web/src/libs/server/auth.ts +32 -0
  17. package/templates/apps/web/src/libs/server/protected.ts +17 -0
  18. package/templates/apps/web/src/providers/api_auth_provider.tsx +26 -0
  19. package/templates/apps/web/src/providers/global_provider.tsx +28 -0
  20. package/templates/apps/web/src/providers/navigation_loading_bar_provider.tsx +72 -0
  21. package/templates/apps/web/src/root.tsx +68 -0
  22. package/templates/apps/web/src/routes/(dashboard)/(todos)/[id].tsx +33 -0
  23. package/templates/apps/web/src/routes/(dashboard)/(todos)/index.tsx +26 -0
  24. package/templates/apps/web/src/routes/(dashboard)/(todos)/layout.tsx +9 -0
  25. package/templates/apps/{react-router → web}/src/routes/(dashboard)/index.tsx +3 -2
  26. package/templates/apps/web/src/routes/(dashboard)/layout.tsx +20 -0
  27. package/templates/apps/{react-router → web}/src/routes.ts +4 -2
  28. package/templates/apps/{nextjs → web}/src/surfaces/sidebar/install.tsx +1 -5
  29. package/templates/apps/{react-router → web}/src/surfaces/sidebar/layout.tsx +24 -15
  30. package/templates/apps/{react-router → web}/src/surfaces/todos/all_todos/all_todos.tsx +1 -1
  31. package/templates/apps/{react-router → web}/src/surfaces/todos/all_todos/all_todos_controller.ts +1 -1
  32. package/templates/apps/web/src/surfaces/todos/all_todos/bootstrap.ts +21 -0
  33. package/templates/apps/{react-router → web}/src/surfaces/todos/single_todo/bootstrap.ts +4 -5
  34. package/templates/apps/{nextjs → web}/src/surfaces/todos/single_todo/header/create.tsx +4 -6
  35. package/templates/apps/{react-router → web}/src/surfaces/todos/single_todo/single_todo_controller.ts +1 -1
  36. package/templates/biome.json +5 -0
  37. package/templates/bun.lock +11 -1281
  38. package/templates/nx.json +0 -11
  39. package/templates/package.json +2 -3
  40. package/templates/shared/assets/src/styles/global.css +14 -8
  41. package/templates/shared/ui/src/base/collapsible.tsx +31 -0
  42. package/templates/shared/ui/src/base/hover-card.tsx +42 -0
  43. package/templates/shared/ui/src/base/input-group.tsx +168 -0
  44. package/templates/shared/ui/src/base/panel.tsx +93 -0
  45. package/templates/shared/ui/src/hooks/use_mobile.tsx +1 -1
  46. package/templates/shared/ui/src/hooks/use_query_params.tsx +6 -7
  47. package/templates/shared/ui/tsconfig.json +1 -1
  48. package/templates/shared/utils/src/convex.ts +2 -1
  49. package/templates/tsconfig.base.json +2 -4
  50. package/templates/.cursor/commands/builder.md +0 -0
  51. package/templates/.cursor/rules/api_architecture.mdc +0 -262
  52. package/templates/.cursor/rules/convex_rules.mdc +0 -331
  53. package/templates/.cursor/rules/frontend_architecture_core.mdc +0 -495
  54. package/templates/.cursor/rules/frontend_architecture_nextjs.mdc +0 -458
  55. package/templates/.cursor/rules/frontend_architecture_reactrouter.mdc +0 -473
  56. package/templates/apps/nextjs/.env.example +0 -10
  57. package/templates/apps/nextjs/index.d.ts +0 -6
  58. package/templates/apps/nextjs/next-env.d.ts +0 -5
  59. package/templates/apps/nextjs/next.config.js +0 -22
  60. package/templates/apps/nextjs/postcss.config.js +0 -17
  61. package/templates/apps/nextjs/project.json +0 -22
  62. package/templates/apps/nextjs/src/app/(auth)/layout.tsx +0 -21
  63. package/templates/apps/nextjs/src/app/(auth)/not-allowed/page.tsx +0 -23
  64. package/templates/apps/nextjs/src/app/(auth)/sign-in/[[...sign-in]]/page.tsx +0 -15
  65. package/templates/apps/nextjs/src/app/(dashboard)/layout.tsx +0 -22
  66. package/templates/apps/nextjs/src/app/(dashboard)/page.tsx +0 -12
  67. package/templates/apps/nextjs/src/app/(dashboard)/todos/[id]/page.tsx +0 -26
  68. package/templates/apps/nextjs/src/app/(dashboard)/todos/page.tsx +0 -19
  69. package/templates/apps/nextjs/src/app/app.css +0 -3
  70. package/templates/apps/nextjs/src/app/layout.tsx +0 -26
  71. package/templates/apps/nextjs/src/middleware.ts +0 -18
  72. package/templates/apps/nextjs/src/providers/convex_provider.tsx +0 -44
  73. package/templates/apps/nextjs/src/surfaces/home/home.tsx +0 -27
  74. package/templates/apps/nextjs/src/surfaces/home/layout.tsx +0 -44
  75. package/templates/apps/nextjs/src/surfaces/home/main/create.tsx +0 -34
  76. package/templates/apps/nextjs/src/surfaces/sidebar/layout.tsx +0 -118
  77. package/templates/apps/nextjs/src/surfaces/sidebar/nav_main/create.tsx +0 -19
  78. package/templates/apps/nextjs/src/surfaces/sidebar/nav_main/nav_config.ts +0 -22
  79. package/templates/apps/nextjs/src/surfaces/sidebar/nav_main/nav_main.tsx +0 -25
  80. package/templates/apps/nextjs/src/surfaces/sidebar/nav_secondary/create.tsx +0 -21
  81. package/templates/apps/nextjs/src/surfaces/sidebar/nav_secondary/nav_secondary.tsx +0 -33
  82. package/templates/apps/nextjs/src/surfaces/sidebar/sidebar.tsx +0 -23
  83. package/templates/apps/nextjs/src/surfaces/sidebar/ui/sidebar_nav_link.tsx +0 -39
  84. package/templates/apps/nextjs/src/surfaces/sidebar/user_menu/create.tsx +0 -28
  85. package/templates/apps/nextjs/src/surfaces/sidebar/user_menu/user_menu.tsx +0 -42
  86. package/templates/apps/nextjs/src/surfaces/todos/all_todos/all_todos.tsx +0 -29
  87. package/templates/apps/nextjs/src/surfaces/todos/all_todos/all_todos_controller.ts +0 -61
  88. package/templates/apps/nextjs/src/surfaces/todos/all_todos/bootstrap.ts +0 -21
  89. package/templates/apps/nextjs/src/surfaces/todos/all_todos/header/create.tsx +0 -23
  90. package/templates/apps/nextjs/src/surfaces/todos/all_todos/install.tsx +0 -23
  91. package/templates/apps/nextjs/src/surfaces/todos/all_todos/layout.tsx +0 -44
  92. package/templates/apps/nextjs/src/surfaces/todos/all_todos/main/create.tsx +0 -49
  93. package/templates/apps/nextjs/src/surfaces/todos/all_todos/main/main.tsx +0 -70
  94. package/templates/apps/nextjs/src/surfaces/todos/all_todos/main/new_todo_sheet/create.tsx +0 -56
  95. package/templates/apps/nextjs/src/surfaces/todos/all_todos/main/new_todo_sheet/new_todo_sheet.tsx +0 -99
  96. package/templates/apps/nextjs/src/surfaces/todos/single_todo/bootstrap.ts +0 -32
  97. package/templates/apps/nextjs/src/surfaces/todos/single_todo/header/header.tsx +0 -22
  98. package/templates/apps/nextjs/src/surfaces/todos/single_todo/install.tsx +0 -27
  99. package/templates/apps/nextjs/src/surfaces/todos/single_todo/layout.tsx +0 -55
  100. package/templates/apps/nextjs/src/surfaces/todos/single_todo/main/create.tsx +0 -38
  101. package/templates/apps/nextjs/src/surfaces/todos/single_todo/main/main.tsx +0 -49
  102. package/templates/apps/nextjs/src/surfaces/todos/single_todo/single_todo.tsx +0 -29
  103. package/templates/apps/nextjs/src/surfaces/todos/single_todo/single_todo_controller.ts +0 -13
  104. package/templates/apps/nextjs/src/utils/auth.ts +0 -18
  105. package/templates/apps/nextjs/src/utils/convex.ts +0 -11
  106. package/templates/apps/nextjs/src/utils/font.ts +0 -9
  107. package/templates/apps/nextjs/tsconfig.json +0 -42
  108. package/templates/apps/react-router/src/providers/api_auth_provider.tsx +0 -40
  109. package/templates/apps/react-router/src/root.tsx +0 -37
  110. package/templates/apps/react-router/src/routes/(dashboard)/layout.tsx +0 -37
  111. package/templates/apps/react-router/src/routes/(dashboard)/todos/[id].tsx +0 -19
  112. package/templates/apps/react-router/src/routes/(dashboard)/todos/index.tsx +0 -19
  113. package/templates/apps/react-router/src/surfaces/home/bootstrap.ts +0 -9
  114. package/templates/apps/react-router/src/surfaces/home/install.tsx +0 -17
  115. package/templates/apps/react-router/src/surfaces/sidebar/install.tsx +0 -23
  116. package/templates/apps/react-router/src/surfaces/sidebar/nav_secondary/create.tsx +0 -21
  117. package/templates/apps/react-router/src/surfaces/sidebar/nav_secondary/nav_secondary.tsx +0 -31
  118. package/templates/apps/react-router/src/surfaces/todos/all_todos/bootstrap.ts +0 -18
  119. package/templates/apps/react-router/src/surfaces/todos/all_todos/main/new_todo_sheet/schema.ts +0 -11
  120. package/templates/apps/react-router/src/surfaces/todos/single_todo/header/create.tsx +0 -32
  121. /package/templates/apps/{react-router → web}/.env.example +0 -0
  122. /package/templates/apps/{react-router → web}/.react-router/types/+future.ts +0 -0
  123. /package/templates/apps/{react-router → web}/.react-router/types/+server-build.d.ts +0 -0
  124. /package/templates/apps/{react-router → web}/.react-router/types/src/+types/root.ts +0 -0
  125. /package/templates/apps/{react-router → web}/.react-router/types/src/routes/(auth)/+types/layout.ts +0 -0
  126. /package/templates/apps/{react-router → web}/.react-router/types/src/routes/(auth)/sign-in/+types/index.ts +0 -0
  127. /package/templates/apps/{react-router → web}/.react-router/types/src/routes/(dashboard)/+types/index.ts +0 -0
  128. /package/templates/apps/{react-router → web}/.react-router/types/src/routes/(dashboard)/+types/layout.ts +0 -0
  129. /package/templates/apps/{react-router → web}/postcss.config.js +0 -0
  130. /package/templates/apps/{react-router → web}/public/favicon.ico +0 -0
  131. /package/templates/apps/{react-router → web}/src/app.css +0 -0
  132. /package/templates/apps/{react-router → web}/src/components/error_boundary.tsx +0 -0
  133. /package/templates/apps/{react-router → web}/src/routes/(auth)/layout.tsx +0 -0
  134. /package/templates/apps/{react-router → web}/src/routes/(auth)/sign-in/index.tsx +0 -0
  135. /package/templates/apps/{nextjs → web}/src/surfaces/home/bootstrap.ts +0 -0
  136. /package/templates/apps/{react-router → web}/src/surfaces/home/home.tsx +0 -0
  137. /package/templates/apps/{nextjs → web}/src/surfaces/home/install.tsx +0 -0
  138. /package/templates/apps/{react-router → web}/src/surfaces/home/layout.tsx +0 -0
  139. /package/templates/apps/{react-router → web}/src/surfaces/home/main/create.tsx +0 -0
  140. /package/templates/apps/{react-router → web}/src/surfaces/sidebar/nav_main/create.tsx +0 -0
  141. /package/templates/apps/{react-router → web}/src/surfaces/sidebar/nav_main/nav_main.tsx +0 -0
  142. /package/templates/apps/{react-router → web}/src/surfaces/sidebar/sidebar.tsx +0 -0
  143. /package/templates/apps/{react-router → web}/src/surfaces/sidebar/user_menu/create.tsx +0 -0
  144. /package/templates/apps/{react-router → web}/src/surfaces/sidebar/user_menu/user_menu.tsx +0 -0
  145. /package/templates/apps/{react-router → web}/src/surfaces/todos/all_todos/header/create.tsx +0 -0
  146. /package/templates/apps/{react-router → web}/src/surfaces/todos/all_todos/install.tsx +0 -0
  147. /package/templates/apps/{react-router → web}/src/surfaces/todos/all_todos/layout.tsx +0 -0
  148. /package/templates/apps/{react-router → web}/src/surfaces/todos/all_todos/main/create.tsx +0 -0
  149. /package/templates/apps/{react-router → web}/src/surfaces/todos/all_todos/main/main.tsx +0 -0
  150. /package/templates/apps/{react-router → web}/src/surfaces/todos/all_todos/main/new_todo_sheet/create.tsx +0 -0
  151. /package/templates/apps/{react-router → web}/src/surfaces/todos/all_todos/main/new_todo_sheet/new_todo_sheet.tsx +0 -0
  152. /package/templates/apps/{nextjs → web}/src/surfaces/todos/all_todos/main/new_todo_sheet/schema.ts +0 -0
  153. /package/templates/apps/{react-router → web}/src/surfaces/todos/single_todo/header/header.tsx +0 -0
  154. /package/templates/apps/{react-router → web}/src/surfaces/todos/single_todo/install.tsx +0 -0
  155. /package/templates/apps/{react-router → web}/src/surfaces/todos/single_todo/layout.tsx +0 -0
  156. /package/templates/apps/{react-router → web}/src/surfaces/todos/single_todo/main/create.tsx +0 -0
  157. /package/templates/apps/{react-router → web}/src/surfaces/todos/single_todo/main/main.tsx +0 -0
  158. /package/templates/apps/{react-router → web}/src/surfaces/todos/single_todo/single_todo.tsx +0 -0
  159. /package/templates/apps/{react-router → web}/tsconfig.json +0 -0
  160. /package/templates/apps/{react-router → web}/vite.config.ts +0 -0
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # create-aron-app
2
2
 
3
- > CLI scaffolding tool that stamps out a production-ready Nx monorepo with Convex, Clerk, and either Next.js 15 or React Router v7.
3
+ > CLI scaffolding tool that stamps out a production-ready Nx monorepo with Convex, Clerk, and React Router v7.
4
4
 
5
5
  ## Usage
6
6
 
@@ -14,41 +14,36 @@ bunx create-aron-app
14
14
 
15
15
  The CLI will ask a few questions and scaffold a new project:
16
16
 
17
- - **Project name** — lowercase alphanumeric + hyphens
18
- - **Framework** — Next.js 15 (App Router) or React Router v7 (SPA/Vite)
19
- - **Output directory** — where to create the project (defaults to `~/Desktop/<name>`)
20
- - **Package manager** — Bun (recommended), pnpm, npm, or Yarn
21
- - **Install dependencies** — run install automatically
22
- - **Initialize git** — create an initial commit
17
+ - **Output directory** — where to create the project (defaults to `~/Desktop/my-app`)
18
+ - **Initialize git** — create an initial commit and initial repository
23
19
 
24
20
  ## What gets scaffolded
25
21
 
26
- The output is an **Nx monorepo** with two apps:
22
+ The output is an **Nx monorepo** with a full-stack React Router v7 application:
27
23
 
28
24
  ```
29
25
  my-app/
30
26
  ├── apps/
31
27
  │ ├── api/ # Convex backend (convex-ents + Zod validation)
32
- │ └── web/ # Next.js 15 or React Router v7 frontend
28
+ │ └── react-router/ # React Router v7 frontend (Vite)
33
29
  ├── shared/
34
- │ ├── ui/ # ~20 shadcn/Radix UI components + hooks
35
- │ ├── utils/ # Convex client helpers, date utils
30
+ │ ├── ui/ # shadcn/Radix UI components + hooks
36
31
  │ └── assets/ # global.css (Tailwind 4)
37
32
  ├── emails/ # React Email templates
38
- ├── scripts/ # sync_convex_env.ts
39
33
  ├── .cursor/ # Pre-configured Cursor AI rules and skills
40
34
  └── .github/
41
35
  └── workflows/ci.yml
42
36
  ```
43
37
 
44
- A working **Todos** feature is wired end-to-end as the canonical example of the data model pattern.
38
+ A working **Todos** feature is wired end-to-end as the canonical example of the surface architecture pattern.
45
39
 
46
40
  ## Stack
47
41
 
48
42
  - **Backend** — [Convex](https://docs.convex.dev) with [`convex-ents`](https://labs.convex.dev/convex-ents) for relational modeling and Zod-validated function wrappers
49
- - **Frontend** — [Next.js 15](https://nextjs.org) (App Router) or [React Router v7](https://reactrouter.com) (SPA/Vite)
43
+ - **Frontend** — [React Router v7](https://reactrouter.com) with Vite
50
44
  - **Auth** — [Clerk](https://clerk.com) wired to both Convex and the frontend
51
- - **Data fetching** — [TanStack Query v5](https://tanstack.com/query)
45
+ - **Data fetching** — [TanStack Query v5](https://tanstack.com/query) with `@convex-dev/react-query`
46
+ - **State management** — [MobX](https://mobx.js.org) with surface architecture pattern
52
47
  - **UI** — Radix UI + Tailwind CSS 4 + shared component library
53
48
  - **Monorepo** — [Nx](https://nx.dev) with Bun workspaces
54
49
  - **Linting** — [Biome](https://biomejs.dev)
@@ -99,14 +94,14 @@ Publishing is also automated via GitHub Actions — creating a GitHub Release tr
99
94
  create-aron-app/
100
95
  ├── src/
101
96
  │ ├── index.ts # CLI entrypoint (prompts + orchestration)
102
- │ ├── types.ts # Shared TS types
103
97
  │ └── utils/
104
- ├── constant.ts # Framework/PM options + dependency lists
105
- │ └── helpers.ts # File ops, template merging helpers
106
- ├── templates/
107
- │ ├── _base/ # Shared monorepo skeleton (copied first)
108
- ├── nextjs/ # Next.js 15 App Router variant
109
- └── react-router/ # React Router v7 SPA variant
98
+ └── helpers.ts # File ops, template copy helpers
99
+ ├── templates/ # Complete React Router v7 monorepo template
100
+ ├── apps/
101
+ ├── api/ # Convex backend
102
+ │ └── react-router/ # React Router v7 app
103
+ ├── shared/ # Shared UI and assets
104
+ │ └── ... # nx.json, package.json, etc.
110
105
  ├── dist/ # Built CLI output
111
106
  └── .github/
112
107
  └── workflows/
@@ -115,12 +110,10 @@ create-aron-app/
115
110
 
116
111
  ### How scaffolding works
117
112
 
118
- 1. Copy `templates/_base/` into the output directory
119
- 2. Copy the framework-specific template into `apps/web/`
120
- 3. Rename `_gitignore` files to `.gitignore` (npm strips dotfiles on publish)
121
- 4. Merge framework deps into the root `package.json`
122
- 5. Inject the right Nx plugins into `nx.json`
123
- 6. Replace the `project:` placeholder with the actual project name in all `project.json` files
124
- 7. Promote `apps/web/.env.example` to the root as `.env.example`
125
- 8. Optionally: `git init` + initial commit
126
- 9. Optionally: `<pm> install`
113
+ 1. Copy the entire `templates/` directory to the output location
114
+ 2. Rename `_gitignore` files to `.gitignore` (npm strips dotfiles on publish)
115
+ 3. Set the project name in the root `package.json`
116
+ 4. Promote `apps/react-router/.env.example` to the root as `.env.example`
117
+ 5. Copy local `.env.router` to `.env.local` if it exists (for local development only)
118
+ 6. Optionally: `git init` + initial commit
119
+ 7. Run `bun install` to install dependencies
package/dist/index.js CHANGED
@@ -1,54 +1,43 @@
1
1
  #!/usr/bin/env node
2
- var jb=Object.create;var{getPrototypeOf:Lb,defineProperty:K1,getOwnPropertyNames:Pb}=Object;var _b=Object.prototype.hasOwnProperty;var f=(x,$,B)=>{B=x!=null?jb(Lb(x)):{};let m=$||!x||!x.__esModule?K1(B,"default",{value:x,enumerable:!0}):B;for(let I of Pb(x))if(!_b.call(m,I))K1(m,I,{get:()=>x[I],enumerable:!0});return m};var C1=(x,$)=>()=>($||x(($={exports:{}}).exports,$),$.exports);var i=C1((R9,N1)=>{var n={to(x,$){if(!$)return`\x1B[${x+1}G`;return`\x1B[${$+1};${x+1}H`},move(x,$){let B="";if(x<0)B+=`\x1B[${-x}D`;else if(x>0)B+=`\x1B[${x}C`;if($<0)B+=`\x1B[${-$}A`;else if($>0)B+=`\x1B[${$}B`;return B},up:(x=1)=>`\x1B[${x}A`,down:(x=1)=>`\x1B[${x}B`,forward:(x=1)=>`\x1B[${x}C`,backward:(x=1)=>`\x1B[${x}D`,nextLine:(x=1)=>"\x1B[E".repeat(x),prevLine:(x=1)=>"\x1B[F".repeat(x),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},wb={up:(x=1)=>"\x1B[S".repeat(x),down:(x=1)=>"\x1B[T".repeat(x)},hb={screen:"\x1B[2J",up:(x=1)=>"\x1B[1J".repeat(x),down:(x=1)=>"\x1B[J".repeat(x),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(x){let $="";for(let B=0;B<x;B++)$+=this.line+(B<x-1?n.up():"");if(x)$+=n.left;return $}};N1.exports={cursor:n,scroll:wb,erase:hb,beep:"\x07"}});var d=C1((j9,r)=>{var y=process||{},U1=y.argv||[],g=y.env||{},Eb=!(!!g.NO_COLOR||U1.includes("--no-color"))&&(!!g.FORCE_COLOR||U1.includes("--color")||y.platform==="win32"||(y.stdout||{}).isTTY&&g.TERM!=="dumb"||!!g.CI),Sb=(x,$,B=x)=>(m)=>{let I=""+m,G=I.indexOf($,x.length);return~G?x+fb(I,$,B,G)+$:x+I+$},fb=(x,$,B,m)=>{let I="",G=0;do I+=x.substring(G,m)+B,G=m+$.length,m=x.indexOf($,G);while(~m);return I+x.substring(G)},M1=(x=Eb)=>{let $=x?Sb:()=>String;return{isColorSupported:x,reset:$("\x1B[0m","\x1B[0m"),bold:$("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:$("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:$("\x1B[3m","\x1B[23m"),underline:$("\x1B[4m","\x1B[24m"),inverse:$("\x1B[7m","\x1B[27m"),hidden:$("\x1B[8m","\x1B[28m"),strikethrough:$("\x1B[9m","\x1B[29m"),black:$("\x1B[30m","\x1B[39m"),red:$("\x1B[31m","\x1B[39m"),green:$("\x1B[32m","\x1B[39m"),yellow:$("\x1B[33m","\x1B[39m"),blue:$("\x1B[34m","\x1B[39m"),magenta:$("\x1B[35m","\x1B[39m"),cyan:$("\x1B[36m","\x1B[39m"),white:$("\x1B[37m","\x1B[39m"),gray:$("\x1B[90m","\x1B[39m"),bgBlack:$("\x1B[40m","\x1B[49m"),bgRed:$("\x1B[41m","\x1B[49m"),bgGreen:$("\x1B[42m","\x1B[49m"),bgYellow:$("\x1B[43m","\x1B[49m"),bgBlue:$("\x1B[44m","\x1B[49m"),bgMagenta:$("\x1B[45m","\x1B[49m"),bgCyan:$("\x1B[46m","\x1B[49m"),bgWhite:$("\x1B[47m","\x1B[49m"),blackBright:$("\x1B[90m","\x1B[39m"),redBright:$("\x1B[91m","\x1B[39m"),greenBright:$("\x1B[92m","\x1B[39m"),yellowBright:$("\x1B[93m","\x1B[39m"),blueBright:$("\x1B[94m","\x1B[39m"),magentaBright:$("\x1B[95m","\x1B[39m"),cyanBright:$("\x1B[96m","\x1B[39m"),whiteBright:$("\x1B[97m","\x1B[39m"),bgBlackBright:$("\x1B[100m","\x1B[49m"),bgRedBright:$("\x1B[101m","\x1B[49m"),bgGreenBright:$("\x1B[102m","\x1B[49m"),bgYellowBright:$("\x1B[103m","\x1B[49m"),bgBlueBright:$("\x1B[104m","\x1B[49m"),bgMagentaBright:$("\x1B[105m","\x1B[49m"),bgCyanBright:$("\x1B[106m","\x1B[49m"),bgWhiteBright:$("\x1B[107m","\x1B[49m")}};r.exports=M1();r.exports.createColors=M1});import{existsSync as N9,rmSync as U9}from"node:fs";import{basename as M9,dirname as T9,resolve as V1}from"node:path";import{fileURLToPath as O9}from"node:url";var C=f(i(),1),h1=f(d(),1);import{stdin as _1,stdout as w1}from"node:process";import*as R from"node:readline";import T1 from"node:readline";import{WriteStream as kb}from"node:tty";function gb({onlyFirst:x=!1}={}){let $=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp($,x?void 0:"g")}var yb=gb();function E1(x){if(typeof x!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof x}\``);return x.replace(yb,"")}function S1(x){return x&&x.__esModule&&Object.prototype.hasOwnProperty.call(x,"default")?x.default:x}var f1={exports:{}};(function(x){var $={};x.exports=$,$.eastAsianWidth=function(m){var I=m.charCodeAt(0),G=m.length==2?m.charCodeAt(1):0,b=I;return 55296<=I&&I<=56319&&56320<=G&&G<=57343&&(I&=1023,G&=1023,b=I<<10|G,b+=65536),b==12288||65281<=b&&b<=65376||65504<=b&&b<=65510?"F":b==8361||65377<=b&&b<=65470||65474<=b&&b<=65479||65482<=b&&b<=65487||65490<=b&&b<=65495||65498<=b&&b<=65500||65512<=b&&b<=65518?"H":4352<=b&&b<=4447||4515<=b&&b<=4519||4602<=b&&b<=4607||9001<=b&&b<=9002||11904<=b&&b<=11929||11931<=b&&b<=12019||12032<=b&&b<=12245||12272<=b&&b<=12283||12289<=b&&b<=12350||12353<=b&&b<=12438||12441<=b&&b<=12543||12549<=b&&b<=12589||12593<=b&&b<=12686||12688<=b&&b<=12730||12736<=b&&b<=12771||12784<=b&&b<=12830||12832<=b&&b<=12871||12880<=b&&b<=13054||13056<=b&&b<=19903||19968<=b&&b<=42124||42128<=b&&b<=42182||43360<=b&&b<=43388||44032<=b&&b<=55203||55216<=b&&b<=55238||55243<=b&&b<=55291||63744<=b&&b<=64255||65040<=b&&b<=65049||65072<=b&&b<=65106||65108<=b&&b<=65126||65128<=b&&b<=65131||110592<=b&&b<=110593||127488<=b&&b<=127490||127504<=b&&b<=127546||127552<=b&&b<=127560||127568<=b&&b<=127569||131072<=b&&b<=194367||177984<=b&&b<=196605||196608<=b&&b<=262141?"W":32<=b&&b<=126||162<=b&&b<=163||165<=b&&b<=166||b==172||b==175||10214<=b&&b<=10221||10629<=b&&b<=10630?"Na":b==161||b==164||167<=b&&b<=168||b==170||173<=b&&b<=174||176<=b&&b<=180||182<=b&&b<=186||188<=b&&b<=191||b==198||b==208||215<=b&&b<=216||222<=b&&b<=225||b==230||232<=b&&b<=234||236<=b&&b<=237||b==240||242<=b&&b<=243||247<=b&&b<=250||b==252||b==254||b==257||b==273||b==275||b==283||294<=b&&b<=295||b==299||305<=b&&b<=307||b==312||319<=b&&b<=322||b==324||328<=b&&b<=331||b==333||338<=b&&b<=339||358<=b&&b<=359||b==363||b==462||b==464||b==466||b==468||b==470||b==472||b==474||b==476||b==593||b==609||b==708||b==711||713<=b&&b<=715||b==717||b==720||728<=b&&b<=731||b==733||b==735||768<=b&&b<=879||913<=b&&b<=929||931<=b&&b<=937||945<=b&&b<=961||963<=b&&b<=969||b==1025||1040<=b&&b<=1103||b==1105||b==8208||8211<=b&&b<=8214||8216<=b&&b<=8217||8220<=b&&b<=8221||8224<=b&&b<=8226||8228<=b&&b<=8231||b==8240||8242<=b&&b<=8243||b==8245||b==8251||b==8254||b==8308||b==8319||8321<=b&&b<=8324||b==8364||b==8451||b==8453||b==8457||b==8467||b==8470||8481<=b&&b<=8482||b==8486||b==8491||8531<=b&&b<=8532||8539<=b&&b<=8542||8544<=b&&b<=8555||8560<=b&&b<=8569||b==8585||8592<=b&&b<=8601||8632<=b&&b<=8633||b==8658||b==8660||b==8679||b==8704||8706<=b&&b<=8707||8711<=b&&b<=8712||b==8715||b==8719||b==8721||b==8725||b==8730||8733<=b&&b<=8736||b==8739||b==8741||8743<=b&&b<=8748||b==8750||8756<=b&&b<=8759||8764<=b&&b<=8765||b==8776||b==8780||b==8786||8800<=b&&b<=8801||8804<=b&&b<=8807||8810<=b&&b<=8811||8814<=b&&b<=8815||8834<=b&&b<=8835||8838<=b&&b<=8839||b==8853||b==8857||b==8869||b==8895||b==8978||9312<=b&&b<=9449||9451<=b&&b<=9547||9552<=b&&b<=9587||9600<=b&&b<=9615||9618<=b&&b<=9621||9632<=b&&b<=9633||9635<=b&&b<=9641||9650<=b&&b<=9651||9654<=b&&b<=9655||9660<=b&&b<=9661||9664<=b&&b<=9665||9670<=b&&b<=9672||b==9675||9678<=b&&b<=9681||9698<=b&&b<=9701||b==9711||9733<=b&&b<=9734||b==9737||9742<=b&&b<=9743||9748<=b&&b<=9749||b==9756||b==9758||b==9792||b==9794||9824<=b&&b<=9825||9827<=b&&b<=9829||9831<=b&&b<=9834||9836<=b&&b<=9837||b==9839||9886<=b&&b<=9887||9918<=b&&b<=9919||9924<=b&&b<=9933||9935<=b&&b<=9953||b==9955||9960<=b&&b<=9983||b==10045||b==10071||10102<=b&&b<=10111||11093<=b&&b<=11097||12872<=b&&b<=12879||57344<=b&&b<=63743||65024<=b&&b<=65039||b==65533||127232<=b&&b<=127242||127248<=b&&b<=127277||127280<=b&&b<=127337||127344<=b&&b<=127386||917760<=b&&b<=917999||983040<=b&&b<=1048573||1048576<=b&&b<=1114109?"A":"N"},$.characterLength=function(m){var I=this.eastAsianWidth(m);return I=="F"||I=="W"||I=="A"?2:1};function B(m){return m.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}$.length=function(m){for(var I=B(m),G=0,b=0;b<I.length;b++)G=G+this.characterLength(I[b]);return G},$.slice=function(m,I,G){textLen=$.length(m),I=I||0,G=G||1,I<0&&(I=textLen+I),G<0&&(G=textLen+G);for(var b="",Q=0,z=B(m),q=0;q<z.length;q++){var W=z[q],X=$.length(W);if(Q>=I-(X==2?1:0))if(Q+X<=G)b+=W;else break;Q+=X}return b}})(f1);var db=f1.exports,pb=S1(db),lb=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},ob=S1(lb);function k(x,$={}){if(typeof x!="string"||x.length===0||($={ambiguousIsNarrow:!0,...$},x=E1(x),x.length===0))return 0;x=x.replace(ob()," ");let B=$.ambiguousIsNarrow?1:2,m=0;for(let I of x){let G=I.codePointAt(0);if(G<=31||G>=127&&G<=159||G>=768&&G<=879)continue;switch(pb.eastAsianWidth(I)){case"F":case"W":m+=2;break;case"A":m+=B;break;default:m+=1}}return m}var s=10,O1=(x=0)=>($)=>`\x1B[${$+x}m`,A1=(x=0)=>($)=>`\x1B[${38+x};5;${$}m`,v1=(x=0)=>($,B,m)=>`\x1B[${38+x};2;${$};${B};${m}m`,Z={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(Z.modifier);var cb=Object.keys(Z.color),Fb=Object.keys(Z.bgColor);[...cb];function ab(){let x=new Map;for(let[$,B]of Object.entries(Z)){for(let[m,I]of Object.entries(B))Z[m]={open:`\x1B[${I[0]}m`,close:`\x1B[${I[1]}m`},B[m]=Z[m],x.set(I[0],I[1]);Object.defineProperty(Z,$,{value:B,enumerable:!1})}return Object.defineProperty(Z,"codes",{value:x,enumerable:!1}),Z.color.close="\x1B[39m",Z.bgColor.close="\x1B[49m",Z.color.ansi=O1(),Z.color.ansi256=A1(),Z.color.ansi16m=v1(),Z.bgColor.ansi=O1(s),Z.bgColor.ansi256=A1(s),Z.bgColor.ansi16m=v1(s),Object.defineProperties(Z,{rgbToAnsi256:{value:($,B,m)=>$===B&&B===m?$<8?16:$>248?231:Math.round(($-8)/247*24)+232:16+36*Math.round($/255*5)+6*Math.round(B/255*5)+Math.round(m/255*5),enumerable:!1},hexToRgb:{value:($)=>{let B=/[a-f\d]{6}|[a-f\d]{3}/i.exec($.toString(16));if(!B)return[0,0,0];let[m]=B;m.length===3&&(m=[...m].map((G)=>G+G).join(""));let I=Number.parseInt(m,16);return[I>>16&255,I>>8&255,I&255]},enumerable:!1},hexToAnsi256:{value:($)=>Z.rgbToAnsi256(...Z.hexToRgb($)),enumerable:!1},ansi256ToAnsi:{value:($)=>{if($<8)return 30+$;if($<16)return 90+($-8);let B,m,I;if($>=232)B=(($-232)*10+8)/255,m=B,I=B;else{$-=16;let Q=$%36;B=Math.floor($/36)/5,m=Math.floor(Q/6)/5,I=Q%6/5}let G=Math.max(B,m,I)*2;if(G===0)return 30;let b=30+(Math.round(I)<<2|Math.round(m)<<1|Math.round(B));return G===2&&(b+=60),b},enumerable:!1},rgbToAnsi:{value:($,B,m)=>Z.ansi256ToAnsi(Z.rgbToAnsi256($,B,m)),enumerable:!1},hexToAnsi:{value:($)=>Z.ansi256ToAnsi(Z.hexToAnsi256($)),enumerable:!1}}),Z}var nb=ab(),o=new Set(["\x1B","›"]),ib=39,D="\x07",k1="[",rb="]",g1="m",e=`${rb}8;;`,R1=(x)=>`${o.values().next().value}${k1}${x}${g1}`,j1=(x)=>`${o.values().next().value}${e}${x}${D}`,sb=(x)=>x.split(" ").map(($)=>k($)),u=(x,$,B)=>{let m=[...$],I=!1,G=!1,b=k(E1(x[x.length-1]));for(let[Q,z]of m.entries()){let q=k(z);if(b+q<=B?x[x.length-1]+=z:(x.push(z),b=0),o.has(z)&&(I=!0,G=m.slice(Q+1).join("").startsWith(e)),I){G?z===D&&(I=!1,G=!1):z===g1&&(I=!1);continue}b+=q,b===B&&Q<m.length-1&&(x.push(""),b=0)}!b&&x[x.length-1].length>0&&x.length>1&&(x[x.length-2]+=x.pop())},ub=(x)=>{let $=x.split(" "),B=$.length;for(;B>0&&!(k($[B-1])>0);)B--;return B===$.length?x:$.slice(0,B).join(" ")+$.slice(B).join("")},tb=(x,$,B={})=>{if(B.trim!==!1&&x.trim()==="")return"";let m="",I,G,b=sb(x),Q=[""];for(let[q,W]of x.split(" ").entries()){B.trim!==!1&&(Q[Q.length-1]=Q[Q.length-1].trimStart());let X=k(Q[Q.length-1]);if(q!==0&&(X>=$&&(B.wordWrap===!1||B.trim===!1)&&(Q.push(""),X=0),(X>0||B.trim===!1)&&(Q[Q.length-1]+=" ",X++)),B.hard&&b[q]>$){let T=$-X,A=1+Math.floor((b[q]-T-1)/$);Math.floor((b[q]-1)/$)<A&&Q.push(""),u(Q,W,$);continue}if(X+b[q]>$&&X>0&&b[q]>0){if(B.wordWrap===!1&&X<$){u(Q,W,$);continue}Q.push("")}if(X+b[q]>$&&B.wordWrap===!1){u(Q,W,$);continue}Q[Q.length-1]+=W}B.trim!==!1&&(Q=Q.map((q)=>ub(q)));let z=[...Q.join(`
3
- `)];for(let[q,W]of z.entries()){if(m+=W,o.has(W)){let{groups:T}=new RegExp(`(?:\\${k1}(?<code>\\d+)m|\\${e}(?<uri>.*)${D})`).exec(z.slice(q).join(""))||{groups:{}};if(T.code!==void 0){let A=Number.parseFloat(T.code);I=A===ib?void 0:A}else T.uri!==void 0&&(G=T.uri.length===0?void 0:T.uri)}let X=nb.codes.get(Number(I));z[q+1]===`
4
- `?(G&&(m+=j1("")),I&&X&&(m+=R1(X))):W===`
5
- `&&(I&&X&&(m+=R1(I)),G&&(m+=j1(G)))}return m};function L1(x,$,B){return String(x).normalize().replace(/\r\n/g,`
2
+ var u1=Object.create;var{getPrototypeOf:e1,defineProperty:K1,getOwnPropertyNames:D1}=Object;var bb=Object.prototype.hasOwnProperty;var A=(x,m,$)=>{$=x!=null?u1(e1(x)):{};let I=m||!x||!x.__esModule?K1($,"default",{value:x,enumerable:!0}):$;for(let B of D1(x))if(!bb.call(I,B))K1(I,B,{get:()=>x[B],enumerable:!0});return I};var S1=(x,m)=>()=>(m||x((m={exports:{}}).exports,m),m.exports);var o=S1((tb,W1)=>{var p={to(x,m){if(!m)return`\x1B[${x+1}G`;return`\x1B[${m+1};${x+1}H`},move(x,m){let $="";if(x<0)$+=`\x1B[${-x}D`;else if(x>0)$+=`\x1B[${x}C`;if(m<0)$+=`\x1B[${-m}A`;else if(m>0)$+=`\x1B[${m}B`;return $},up:(x=1)=>`\x1B[${x}A`,down:(x=1)=>`\x1B[${x}B`,forward:(x=1)=>`\x1B[${x}C`,backward:(x=1)=>`\x1B[${x}D`,nextLine:(x=1)=>"\x1B[E".repeat(x),prevLine:(x=1)=>"\x1B[F".repeat(x),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},xb={up:(x=1)=>"\x1B[S".repeat(x),down:(x=1)=>"\x1B[T".repeat(x)},mb={screen:"\x1B[2J",up:(x=1)=>"\x1B[1J".repeat(x),down:(x=1)=>"\x1B[J".repeat(x),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(x){let m="";for(let $=0;$<x;$++)m+=this.line+($<x-1?p.up():"");if(x)m+=p.left;return m}};W1.exports={cursor:p,scroll:xb,erase:mb,beep:"\x07"}});var L=S1((ub,a)=>{var _=process||{},H1=_.argv||[],T=_.env||{},$b=!(!!T.NO_COLOR||H1.includes("--no-color"))&&(!!T.FORCE_COLOR||H1.includes("--color")||_.platform==="win32"||(_.stdout||{}).isTTY&&T.TERM!=="dumb"||!!T.CI),Ib=(x,m,$=x)=>(I)=>{let B=""+I,G=B.indexOf(m,x.length);return~G?x+Bb(B,m,$,G)+m:x+B+m},Bb=(x,m,$,I)=>{let B="",G=0;do B+=x.substring(G,I)+$,G=I+m.length,I=x.indexOf(m,G);while(~I);return B+x.substring(G)},Q1=(x=$b)=>{let m=x?Ib:()=>String;return{isColorSupported:x,reset:m("\x1B[0m","\x1B[0m"),bold:m("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:m("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:m("\x1B[3m","\x1B[23m"),underline:m("\x1B[4m","\x1B[24m"),inverse:m("\x1B[7m","\x1B[27m"),hidden:m("\x1B[8m","\x1B[28m"),strikethrough:m("\x1B[9m","\x1B[29m"),black:m("\x1B[30m","\x1B[39m"),red:m("\x1B[31m","\x1B[39m"),green:m("\x1B[32m","\x1B[39m"),yellow:m("\x1B[33m","\x1B[39m"),blue:m("\x1B[34m","\x1B[39m"),magenta:m("\x1B[35m","\x1B[39m"),cyan:m("\x1B[36m","\x1B[39m"),white:m("\x1B[37m","\x1B[39m"),gray:m("\x1B[90m","\x1B[39m"),bgBlack:m("\x1B[40m","\x1B[49m"),bgRed:m("\x1B[41m","\x1B[49m"),bgGreen:m("\x1B[42m","\x1B[49m"),bgYellow:m("\x1B[43m","\x1B[49m"),bgBlue:m("\x1B[44m","\x1B[49m"),bgMagenta:m("\x1B[45m","\x1B[49m"),bgCyan:m("\x1B[46m","\x1B[49m"),bgWhite:m("\x1B[47m","\x1B[49m"),blackBright:m("\x1B[90m","\x1B[39m"),redBright:m("\x1B[91m","\x1B[39m"),greenBright:m("\x1B[92m","\x1B[39m"),yellowBright:m("\x1B[93m","\x1B[39m"),blueBright:m("\x1B[94m","\x1B[39m"),magentaBright:m("\x1B[95m","\x1B[39m"),cyanBright:m("\x1B[96m","\x1B[39m"),whiteBright:m("\x1B[97m","\x1B[39m"),bgBlackBright:m("\x1B[100m","\x1B[49m"),bgRedBright:m("\x1B[101m","\x1B[49m"),bgGreenBright:m("\x1B[102m","\x1B[49m"),bgYellowBright:m("\x1B[103m","\x1B[49m"),bgBlueBright:m("\x1B[104m","\x1B[49m"),bgMagentaBright:m("\x1B[105m","\x1B[49m"),bgCyanBright:m("\x1B[106m","\x1B[49m"),bgWhiteBright:m("\x1B[107m","\x1B[49m")}};a.exports=Q1();a.exports.createColors=Q1});import{existsSync as ab,rmSync as cb}from"node:fs";import{basename as nb,dirname as rb,resolve as J1}from"node:path";import{fileURLToPath as ib}from"node:url";var w=A(o(),1),U1=A(L(),1);import{stdin as N1,stdout as R1}from"node:process";import*as U from"node:readline";import X1 from"node:readline";import{WriteStream as Gb}from"node:tty";function Jb({onlyFirst:x=!1}={}){let m=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(m,x?void 0:"g")}var Yb=Jb();function V1(x){if(typeof x!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof x}\``);return x.replace(Yb,"")}function g1(x){return x&&x.__esModule&&Object.prototype.hasOwnProperty.call(x,"default")?x.default:x}var O1={exports:{}};(function(x){var m={};x.exports=m,m.eastAsianWidth=function(I){var B=I.charCodeAt(0),G=I.length==2?I.charCodeAt(1):0,b=B;return 55296<=B&&B<=56319&&56320<=G&&G<=57343&&(B&=1023,G&=1023,b=B<<10|G,b+=65536),b==12288||65281<=b&&b<=65376||65504<=b&&b<=65510?"F":b==8361||65377<=b&&b<=65470||65474<=b&&b<=65479||65482<=b&&b<=65487||65490<=b&&b<=65495||65498<=b&&b<=65500||65512<=b&&b<=65518?"H":4352<=b&&b<=4447||4515<=b&&b<=4519||4602<=b&&b<=4607||9001<=b&&b<=9002||11904<=b&&b<=11929||11931<=b&&b<=12019||12032<=b&&b<=12245||12272<=b&&b<=12283||12289<=b&&b<=12350||12353<=b&&b<=12438||12441<=b&&b<=12543||12549<=b&&b<=12589||12593<=b&&b<=12686||12688<=b&&b<=12730||12736<=b&&b<=12771||12784<=b&&b<=12830||12832<=b&&b<=12871||12880<=b&&b<=13054||13056<=b&&b<=19903||19968<=b&&b<=42124||42128<=b&&b<=42182||43360<=b&&b<=43388||44032<=b&&b<=55203||55216<=b&&b<=55238||55243<=b&&b<=55291||63744<=b&&b<=64255||65040<=b&&b<=65049||65072<=b&&b<=65106||65108<=b&&b<=65126||65128<=b&&b<=65131||110592<=b&&b<=110593||127488<=b&&b<=127490||127504<=b&&b<=127546||127552<=b&&b<=127560||127568<=b&&b<=127569||131072<=b&&b<=194367||177984<=b&&b<=196605||196608<=b&&b<=262141?"W":32<=b&&b<=126||162<=b&&b<=163||165<=b&&b<=166||b==172||b==175||10214<=b&&b<=10221||10629<=b&&b<=10630?"Na":b==161||b==164||167<=b&&b<=168||b==170||173<=b&&b<=174||176<=b&&b<=180||182<=b&&b<=186||188<=b&&b<=191||b==198||b==208||215<=b&&b<=216||222<=b&&b<=225||b==230||232<=b&&b<=234||236<=b&&b<=237||b==240||242<=b&&b<=243||247<=b&&b<=250||b==252||b==254||b==257||b==273||b==275||b==283||294<=b&&b<=295||b==299||305<=b&&b<=307||b==312||319<=b&&b<=322||b==324||328<=b&&b<=331||b==333||338<=b&&b<=339||358<=b&&b<=359||b==363||b==462||b==464||b==466||b==468||b==470||b==472||b==474||b==476||b==593||b==609||b==708||b==711||713<=b&&b<=715||b==717||b==720||728<=b&&b<=731||b==733||b==735||768<=b&&b<=879||913<=b&&b<=929||931<=b&&b<=937||945<=b&&b<=961||963<=b&&b<=969||b==1025||1040<=b&&b<=1103||b==1105||b==8208||8211<=b&&b<=8214||8216<=b&&b<=8217||8220<=b&&b<=8221||8224<=b&&b<=8226||8228<=b&&b<=8231||b==8240||8242<=b&&b<=8243||b==8245||b==8251||b==8254||b==8308||b==8319||8321<=b&&b<=8324||b==8364||b==8451||b==8453||b==8457||b==8467||b==8470||8481<=b&&b<=8482||b==8486||b==8491||8531<=b&&b<=8532||8539<=b&&b<=8542||8544<=b&&b<=8555||8560<=b&&b<=8569||b==8585||8592<=b&&b<=8601||8632<=b&&b<=8633||b==8658||b==8660||b==8679||b==8704||8706<=b&&b<=8707||8711<=b&&b<=8712||b==8715||b==8719||b==8721||b==8725||b==8730||8733<=b&&b<=8736||b==8739||b==8741||8743<=b&&b<=8748||b==8750||8756<=b&&b<=8759||8764<=b&&b<=8765||b==8776||b==8780||b==8786||8800<=b&&b<=8801||8804<=b&&b<=8807||8810<=b&&b<=8811||8814<=b&&b<=8815||8834<=b&&b<=8835||8838<=b&&b<=8839||b==8853||b==8857||b==8869||b==8895||b==8978||9312<=b&&b<=9449||9451<=b&&b<=9547||9552<=b&&b<=9587||9600<=b&&b<=9615||9618<=b&&b<=9621||9632<=b&&b<=9633||9635<=b&&b<=9641||9650<=b&&b<=9651||9654<=b&&b<=9655||9660<=b&&b<=9661||9664<=b&&b<=9665||9670<=b&&b<=9672||b==9675||9678<=b&&b<=9681||9698<=b&&b<=9701||b==9711||9733<=b&&b<=9734||b==9737||9742<=b&&b<=9743||9748<=b&&b<=9749||b==9756||b==9758||b==9792||b==9794||9824<=b&&b<=9825||9827<=b&&b<=9829||9831<=b&&b<=9834||9836<=b&&b<=9837||b==9839||9886<=b&&b<=9887||9918<=b&&b<=9919||9924<=b&&b<=9933||9935<=b&&b<=9953||b==9955||9960<=b&&b<=9983||b==10045||b==10071||10102<=b&&b<=10111||11093<=b&&b<=11097||12872<=b&&b<=12879||57344<=b&&b<=63743||65024<=b&&b<=65039||b==65533||127232<=b&&b<=127242||127248<=b&&b<=127277||127280<=b&&b<=127337||127344<=b&&b<=127386||917760<=b&&b<=917999||983040<=b&&b<=1048573||1048576<=b&&b<=1114109?"A":"N"},m.characterLength=function(I){var B=this.eastAsianWidth(I);return B=="F"||B=="W"||B=="A"?2:1};function $(I){return I.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}m.length=function(I){for(var B=$(I),G=0,b=0;b<B.length;b++)G=G+this.characterLength(B[b]);return G},m.slice=function(I,B,G){textLen=m.length(I),B=B||0,G=G||1,B<0&&(B=textLen+B),G<0&&(G=textLen+G);for(var b="",Y=0,K=$(I),S=0;S<K.length;S++){var q=K[S],X=m.length(q);if(Y>=B-(X==2?1:0))if(Y+X<=G)b+=q;else break;Y+=X}return b}})(O1);var Kb=O1.exports,Sb=g1(Kb),Wb=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},Hb=g1(Wb);function M(x,m={}){if(typeof x!="string"||x.length===0||(m={ambiguousIsNarrow:!0,...m},x=V1(x),x.length===0))return 0;x=x.replace(Hb()," ");let $=m.ambiguousIsNarrow?1:2,I=0;for(let B of x){let G=B.codePointAt(0);if(G<=31||G>=127&&G<=159||G>=768&&G<=879)continue;switch(Sb.eastAsianWidth(B)){case"F":case"W":I+=2;break;case"A":I+=$;break;default:I+=1}}return I}var c=10,q1=(x=0)=>(m)=>`\x1B[${m+x}m`,w1=(x=0)=>(m)=>`\x1B[${38+x};5;${m}m`,z1=(x=0)=>(m,$,I)=>`\x1B[${38+x};2;${m};${$};${I}m`,H={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(H.modifier);var Qb=Object.keys(H.color),Xb=Object.keys(H.bgColor);[...Qb];function qb(){let x=new Map;for(let[m,$]of Object.entries(H)){for(let[I,B]of Object.entries($))H[I]={open:`\x1B[${B[0]}m`,close:`\x1B[${B[1]}m`},$[I]=H[I],x.set(B[0],B[1]);Object.defineProperty(H,m,{value:$,enumerable:!1})}return Object.defineProperty(H,"codes",{value:x,enumerable:!1}),H.color.close="\x1B[39m",H.bgColor.close="\x1B[49m",H.color.ansi=q1(),H.color.ansi256=w1(),H.color.ansi16m=z1(),H.bgColor.ansi=q1(c),H.bgColor.ansi256=w1(c),H.bgColor.ansi16m=z1(c),Object.defineProperties(H,{rgbToAnsi256:{value:(m,$,I)=>m===$&&$===I?m<8?16:m>248?231:Math.round((m-8)/247*24)+232:16+36*Math.round(m/255*5)+6*Math.round($/255*5)+Math.round(I/255*5),enumerable:!1},hexToRgb:{value:(m)=>{let $=/[a-f\d]{6}|[a-f\d]{3}/i.exec(m.toString(16));if(!$)return[0,0,0];let[I]=$;I.length===3&&(I=[...I].map((G)=>G+G).join(""));let B=Number.parseInt(I,16);return[B>>16&255,B>>8&255,B&255]},enumerable:!1},hexToAnsi256:{value:(m)=>H.rgbToAnsi256(...H.hexToRgb(m)),enumerable:!1},ansi256ToAnsi:{value:(m)=>{if(m<8)return 30+m;if(m<16)return 90+(m-8);let $,I,B;if(m>=232)$=((m-232)*10+8)/255,I=$,B=$;else{m-=16;let Y=m%36;$=Math.floor(m/36)/5,I=Math.floor(Y/6)/5,B=Y%6/5}let G=Math.max($,I,B)*2;if(G===0)return 30;let b=30+(Math.round(B)<<2|Math.round(I)<<1|Math.round($));return G===2&&(b+=60),b},enumerable:!1},rgbToAnsi:{value:(m,$,I)=>H.ansi256ToAnsi(H.rgbToAnsi256(m,$,I)),enumerable:!1},hexToAnsi:{value:(m)=>H.ansi256ToAnsi(H.hexToAnsi256(m)),enumerable:!1}}),H}var wb=qb(),E=new Set(["\x1B","›"]),zb=39,i="\x07",h1="[",Zb="]",k1="m",F=`${Zb}8;;`,Z1=(x)=>`${E.values().next().value}${h1}${x}${k1}`,f1=(x)=>`${E.values().next().value}${F}${x}${i}`,fb=(x)=>x.split(" ").map((m)=>M(m)),n=(x,m,$)=>{let I=[...m],B=!1,G=!1,b=M(V1(x[x.length-1]));for(let[Y,K]of I.entries()){let S=M(K);if(b+S<=$?x[x.length-1]+=K:(x.push(K),b=0),E.has(K)&&(B=!0,G=I.slice(Y+1).join("").startsWith(F)),B){G?K===i&&(B=!1,G=!1):K===k1&&(B=!1);continue}b+=S,b===$&&Y<I.length-1&&(x.push(""),b=0)}!b&&x[x.length-1].length>0&&x.length>1&&(x[x.length-2]+=x.pop())},Cb=(x)=>{let m=x.split(" "),$=m.length;for(;$>0&&!(M(m[$-1])>0);)$--;return $===m.length?x:m.slice(0,$).join(" ")+m.slice($).join("")},Nb=(x,m,$={})=>{if($.trim!==!1&&x.trim()==="")return"";let I="",B,G,b=fb(x),Y=[""];for(let[S,q]of x.split(" ").entries()){$.trim!==!1&&(Y[Y.length-1]=Y[Y.length-1].trimStart());let X=M(Y[Y.length-1]);if(S!==0&&(X>=m&&($.wordWrap===!1||$.trim===!1)&&(Y.push(""),X=0),(X>0||$.trim===!1)&&(Y[Y.length-1]+=" ",X++)),$.hard&&b[S]>m){let N=m-X,g=1+Math.floor((b[S]-N-1)/m);Math.floor((b[S]-1)/m)<g&&Y.push(""),n(Y,q,m);continue}if(X+b[S]>m&&X>0&&b[S]>0){if($.wordWrap===!1&&X<m){n(Y,q,m);continue}Y.push("")}if(X+b[S]>m&&$.wordWrap===!1){n(Y,q,m);continue}Y[Y.length-1]+=q}$.trim!==!1&&(Y=Y.map((S)=>Cb(S)));let K=[...Y.join(`
3
+ `)];for(let[S,q]of K.entries()){if(I+=q,E.has(q)){let{groups:N}=new RegExp(`(?:\\${h1}(?<code>\\d+)m|\\${F}(?<uri>.*)${i})`).exec(K.slice(S).join(""))||{groups:{}};if(N.code!==void 0){let g=Number.parseFloat(N.code);B=g===zb?void 0:g}else N.uri!==void 0&&(G=N.uri.length===0?void 0:N.uri)}let X=wb.codes.get(Number(B));K[S+1]===`
4
+ `?(G&&(I+=f1("")),B&&X&&(I+=Z1(X))):q===`
5
+ `&&(B&&X&&(I+=Z1(B)),G&&(I+=f1(G)))}return I};function C1(x,m,$){return String(x).normalize().replace(/\r\n/g,`
6
6
  `).split(`
7
- `).map((m)=>tb(m,$,B)).join(`
8
- `)}var Db=["up","down","left","right","space","enter","cancel"],l={actions:new Set(Db),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["\x03","cancel"],["escape","cancel"]])};function b1(x,$){if(typeof x=="string")return l.aliases.get(x)===$;for(let B of x)if(B!==void 0&&b1(B,$))return!0;return!1}function eb(x,$){if(x===$)return;let B=x.split(`
9
- `),m=$.split(`
10
- `),I=[];for(let G=0;G<Math.max(B.length,m.length);G++)B[G]!==m[G]&&I.push(G);return I}var b9=globalThis.process.platform.startsWith("win"),t=Symbol("clack:cancel");function x1(x){return x===t}function p(x,$){let B=x;B.isTTY&&B.setRawMode($)}function y1({input:x=_1,output:$=w1,overwrite:B=!0,hideCursor:m=!0}={}){let I=R.createInterface({input:x,output:$,prompt:"",tabSize:1});R.emitKeypressEvents(x,I),x.isTTY&&x.setRawMode(!0);let G=(b,{name:Q,sequence:z})=>{let q=String(b);if(b1([q,Q,z],"cancel")){m&&$.write(C.cursor.show),process.exit(0);return}if(!B)return;R.moveCursor($,Q==="return"?0:-1,Q==="return"?-1:0,()=>{R.clearLine($,1,()=>{x.once("keypress",G)})})};return m&&$.write(C.cursor.hide),x.once("keypress",G),()=>{x.off("keypress",G),m&&$.write(C.cursor.show),x.isTTY&&!b9&&x.setRawMode(!1),I.terminal=!1,I.close()}}var x9=Object.defineProperty,$9=(x,$,B)=>($ in x)?x9(x,$,{enumerable:!0,configurable:!0,writable:!0,value:B}):x[$]=B,M=(x,$,B)=>($9(x,typeof $!="symbol"?$+"":$,B),B);class c{constructor(x,$=!0){M(this,"input"),M(this,"output"),M(this,"_abortSignal"),M(this,"rl"),M(this,"opts"),M(this,"_render"),M(this,"_track",!1),M(this,"_prevFrame",""),M(this,"_subscribers",new Map),M(this,"_cursor",0),M(this,"state","initial"),M(this,"error",""),M(this,"value");let{input:B=_1,output:m=w1,render:I,signal:G,...b}=x;this.opts=b,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=I.bind(this),this._track=$,this._abortSignal=G,this.input=B,this.output=m}unsubscribe(){this._subscribers.clear()}setSubscriber(x,$){let B=this._subscribers.get(x)??[];B.push($),this._subscribers.set(x,B)}on(x,$){this.setSubscriber(x,{cb:$})}once(x,$){this.setSubscriber(x,{cb:$,once:!0})}emit(x,...$){let B=this._subscribers.get(x)??[],m=[];for(let I of B)I.cb(...$),I.once&&m.push(()=>B.splice(B.indexOf(I),1));for(let I of m)I()}prompt(){return new Promise((x,$)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),x(t);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}let B=new kb(0);B._write=(m,I,G)=>{this._track&&(this.value=this.rl?.line.replace(/\t/g,""),this._cursor=this.rl?.cursor??0,this.emit("value",this.value)),G()},this.input.pipe(B),this.rl=T1.createInterface({input:this.input,output:B,tabSize:2,prompt:"",escapeCodeTimeout:50}),T1.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on("keypress",this.onKeypress),p(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(C.cursor.show),this.output.off("resize",this.render),p(this.input,!1),x(this.value)}),this.once("cancel",()=>{this.output.write(C.cursor.show),this.output.off("resize",this.render),p(this.input,!1),x(t)})})}onKeypress(x,$){if(this.state==="error"&&(this.state="active"),$?.name&&(!this._track&&l.aliases.has($.name)&&this.emit("cursor",l.aliases.get($.name)),l.actions.has($.name)&&this.emit("cursor",$.name)),x&&(x.toLowerCase()==="y"||x.toLowerCase()==="n")&&this.emit("confirm",x.toLowerCase()==="y"),x==="\t"&&this.opts.placeholder&&(this.value||(this.rl?.write(this.opts.placeholder),this.emit("value",this.opts.placeholder))),x&&this.emit("key",x.toLowerCase()),$?.name==="return"){if(this.opts.validate){let B=this.opts.validate(this.value);B&&(this.error=B instanceof Error?B.message:B,this.state="error",this.rl?.write(this.value))}this.state!=="error"&&(this.state="submit")}b1([x,$?.name,$?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
11
- `),p(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let x=L1(this._prevFrame,process.stdout.columns,{hard:!0}).split(`
12
- `).length-1;this.output.write(C.cursor.move(-999,x*-1))}render(){let x=L1(this._render(this)??"",process.stdout.columns,{hard:!0});if(x!==this._prevFrame){if(this.state==="initial")this.output.write(C.cursor.hide);else{let $=eb(this._prevFrame,x);if(this.restoreCursor(),$&&$?.length===1){let B=$[0];this.output.write(C.cursor.move(0,B)),this.output.write(C.erase.lines(1));let m=x.split(`
13
- `);this.output.write(m[B]),this._prevFrame=x,this.output.write(C.cursor.move(0,m.length-B-1));return}if($&&$?.length>1){let B=$[0];this.output.write(C.cursor.move(0,B)),this.output.write(C.erase.down());let m=x.split(`
14
- `).slice(B);this.output.write(m.join(`
15
- `)),this._prevFrame=x;return}this.output.write(C.erase.down())}this.output.write(x),this.state==="initial"&&(this.state="active"),this._prevFrame=x}}}class $1 extends c{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(x){super(x,!1),this.value=!!x.initialValue,this.on("value",()=>{this.value=this._value}),this.on("confirm",($)=>{this.output.write(C.cursor.move(0,-1)),this.value=$,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var B9=Object.defineProperty,m9=(x,$,B)=>($ in x)?B9(x,$,{enumerable:!0,configurable:!0,writable:!0,value:B}):x[$]=B,P1=(x,$,B)=>(m9(x,typeof $!="symbol"?$+"":$,B),B);class B1 extends c{constructor(x){super(x,!1),P1(this,"options"),P1(this,"cursor",0),this.options=x.options,this.cursor=this.options.findIndex(({value:$})=>$===x.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",($)=>{switch($){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}}class m1 extends c{get valueWithCursor(){if(this.state==="submit")return this.value;if(this.cursor>=this.value.length)return`${this.value}█`;let x=this.value.slice(0,this.cursor),[$,...B]=this.value.slice(this.cursor);return`${x}${h1.default.inverse($)}${B.join("")}`}get cursor(){return this._cursor}constructor(x){super(x),this.on("finalize",()=>{this.value||(this.value=x.defaultValue)})}}var H=f(d(),1),F=f(i(),1);import O from"node:process";function I9(){return O.platform!=="win32"?O.env.TERM!=="linux":!!O.env.CI||!!O.env.WT_SESSION||!!O.env.TERMINUS_SUBLIME||O.env.ConEmuTask==="{cmd::Cmder}"||O.env.TERM_PROGRAM==="Terminus-Sublime"||O.env.TERM_PROGRAM==="vscode"||O.env.TERM==="xterm-256color"||O.env.TERM==="alacritty"||O.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var I1=I9(),K=(x,$)=>I1?x:$,G9=K("◆","*"),d1=K("■","x"),p1=K("▲","x"),Q1=K("◇","o"),H9=K("┌","T"),Y=K("│","|"),h=K("└","—"),G1=K("●",">"),H1=K("○"," "),d9=K("◻","[•]"),p9=K("◼","[+]"),l9=K("◻","[ ]"),o9=K("▪","•"),c9=K("─","-"),F9=K("╮","+"),a9=K("├","+"),n9=K("╯","+"),Q9=K("●","•"),q9=K("◆","*"),z9=K("▲","!"),J9=K("■","x"),q1=(x)=>{switch(x){case"initial":case"active":return H.default.cyan(G9);case"cancel":return H.default.red(d1);case"error":return H.default.yellow(p1);case"submit":return H.default.green(Q1)}},X9=(x)=>{let{cursor:$,options:B,style:m}=x,I=x.maxItems??Number.POSITIVE_INFINITY,G=Math.max(process.stdout.rows-4,0),b=Math.min(G,Math.max(I,5)),Q=0;$>=Q+b-3?Q=Math.max(Math.min($-b+3,B.length-b),0):$<Q+2&&(Q=Math.max($-2,0));let z=b<B.length&&Q>0,q=b<B.length&&Q+b<B.length;return B.slice(Q,Q+b).map((W,X,T)=>{let A=X===0&&z,S=X===T.length-1&&q;return A||S?H.default.dim("..."):m(W,X+Q===$)})},l1=(x)=>new m1({validate:x.validate,placeholder:x.placeholder,defaultValue:x.defaultValue,initialValue:x.initialValue,render(){let $=`${H.default.gray(Y)}
16
- ${q1(this.state)} ${x.message}
17
- `,B=x.placeholder?H.default.inverse(x.placeholder[0])+H.default.dim(x.placeholder.slice(1)):H.default.inverse(H.default.hidden("_")),m=this.value?this.valueWithCursor:B;switch(this.state){case"error":return`${$.trim()}
18
- ${H.default.yellow(Y)} ${m}
19
- ${H.default.yellow(h)} ${H.default.yellow(this.error)}
20
- `;case"submit":return`${$}${H.default.gray(Y)} ${H.default.dim(this.value||x.placeholder)}`;case"cancel":return`${$}${H.default.gray(Y)} ${H.default.strikethrough(H.default.dim(this.value??""))}${this.value?.trim()?`
21
- ${H.default.gray(Y)}`:""}`;default:return`${$}${H.default.cyan(Y)} ${m}
22
- ${H.default.cyan(h)}
23
- `}}}).prompt();var o1=(x)=>{let $=x.active??"Yes",B=x.inactive??"No";return new $1({active:$,inactive:B,initialValue:x.initialValue??!0,render(){let m=`${H.default.gray(Y)}
24
- ${q1(this.state)} ${x.message}
25
- `,I=this.value?$:B;switch(this.state){case"submit":return`${m}${H.default.gray(Y)} ${H.default.dim(I)}`;case"cancel":return`${m}${H.default.gray(Y)} ${H.default.strikethrough(H.default.dim(I))}
26
- ${H.default.gray(Y)}`;default:return`${m}${H.default.cyan(Y)} ${this.value?`${H.default.green(G1)} ${$}`:`${H.default.dim(H1)} ${H.default.dim($)}`} ${H.default.dim("/")} ${this.value?`${H.default.dim(H1)} ${H.default.dim(B)}`:`${H.default.green(G1)} ${B}`}
27
- ${H.default.cyan(h)}
28
- `}}}).prompt()},c1=(x)=>{let $=(B,m)=>{let I=B.label??String(B.value);switch(m){case"selected":return`${H.default.dim(I)}`;case"active":return`${H.default.green(G1)} ${I} ${B.hint?H.default.dim(`(${B.hint})`):""}`;case"cancelled":return`${H.default.strikethrough(H.default.dim(I))}`;default:return`${H.default.dim(H1)} ${H.default.dim(I)}`}};return new B1({options:x.options,initialValue:x.initialValue,render(){let B=`${H.default.gray(Y)}
29
- ${q1(this.state)} ${x.message}
30
- `;switch(this.state){case"submit":return`${B}${H.default.gray(Y)} ${$(this.options[this.cursor],"selected")}`;case"cancel":return`${B}${H.default.gray(Y)} ${$(this.options[this.cursor],"cancelled")}
31
- ${H.default.gray(Y)}`;default:return`${B}${H.default.cyan(Y)} ${X9({cursor:this.cursor,options:this.options,maxItems:x.maxItems,style:(m,I)=>$(m,I?"active":"inactive")}).join(`
32
- ${H.default.cyan(Y)} `)}
33
- ${H.default.cyan(h)}
34
- `}}}).prompt()};var z1=(x="")=>{process.stdout.write(`${H.default.gray(h)} ${H.default.red(x)}
7
+ `).map((I)=>Nb(I,m,$)).join(`
8
+ `)}var Rb=["up","down","left","right","space","enter","cancel"],v={actions:new Set(Rb),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["\x03","cancel"],["escape","cancel"]])};function s(x,m){if(typeof x=="string")return v.aliases.get(x)===m;for(let $ of x)if($!==void 0&&s($,m))return!0;return!1}function Ub(x,m){if(x===m)return;let $=x.split(`
9
+ `),I=m.split(`
10
+ `),B=[];for(let G=0;G<Math.max($.length,I.length);G++)$[G]!==I[G]&&B.push(G);return B}var Vb=globalThis.process.platform.startsWith("win"),r=Symbol("clack:cancel");function t(x){return x===r}function j(x,m){let $=x;$.isTTY&&$.setRawMode(m)}function A1({input:x=N1,output:m=R1,overwrite:$=!0,hideCursor:I=!0}={}){let B=U.createInterface({input:x,output:m,prompt:"",tabSize:1});U.emitKeypressEvents(x,B),x.isTTY&&x.setRawMode(!0);let G=(b,{name:Y,sequence:K})=>{let S=String(b);if(s([S,Y,K],"cancel")){I&&m.write(w.cursor.show),process.exit(0);return}if(!$)return;U.moveCursor(m,Y==="return"?0:-1,Y==="return"?-1:0,()=>{U.clearLine(m,1,()=>{x.once("keypress",G)})})};return I&&m.write(w.cursor.hide),x.once("keypress",G),()=>{x.off("keypress",G),I&&m.write(w.cursor.show),x.isTTY&&!Vb&&x.setRawMode(!1),B.terminal=!1,B.close()}}var gb=Object.defineProperty,Ob=(x,m,$)=>(m in x)?gb(x,m,{enumerable:!0,configurable:!0,writable:!0,value:$}):x[m]=$,f=(x,m,$)=>(Ob(x,typeof m!="symbol"?m+"":m,$),$);class u{constructor(x,m=!0){f(this,"input"),f(this,"output"),f(this,"_abortSignal"),f(this,"rl"),f(this,"opts"),f(this,"_render"),f(this,"_track",!1),f(this,"_prevFrame",""),f(this,"_subscribers",new Map),f(this,"_cursor",0),f(this,"state","initial"),f(this,"error",""),f(this,"value");let{input:$=N1,output:I=R1,render:B,signal:G,...b}=x;this.opts=b,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=B.bind(this),this._track=m,this._abortSignal=G,this.input=$,this.output=I}unsubscribe(){this._subscribers.clear()}setSubscriber(x,m){let $=this._subscribers.get(x)??[];$.push(m),this._subscribers.set(x,$)}on(x,m){this.setSubscriber(x,{cb:m})}once(x,m){this.setSubscriber(x,{cb:m,once:!0})}emit(x,...m){let $=this._subscribers.get(x)??[],I=[];for(let B of $)B.cb(...m),B.once&&I.push(()=>$.splice($.indexOf(B),1));for(let B of I)B()}prompt(){return new Promise((x,m)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),x(r);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}let $=new Gb(0);$._write=(I,B,G)=>{this._track&&(this.value=this.rl?.line.replace(/\t/g,""),this._cursor=this.rl?.cursor??0,this.emit("value",this.value)),G()},this.input.pipe($),this.rl=X1.createInterface({input:this.input,output:$,tabSize:2,prompt:"",escapeCodeTimeout:50}),X1.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on("keypress",this.onKeypress),j(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(w.cursor.show),this.output.off("resize",this.render),j(this.input,!1),x(this.value)}),this.once("cancel",()=>{this.output.write(w.cursor.show),this.output.off("resize",this.render),j(this.input,!1),x(r)})})}onKeypress(x,m){if(this.state==="error"&&(this.state="active"),m?.name&&(!this._track&&v.aliases.has(m.name)&&this.emit("cursor",v.aliases.get(m.name)),v.actions.has(m.name)&&this.emit("cursor",m.name)),x&&(x.toLowerCase()==="y"||x.toLowerCase()==="n")&&this.emit("confirm",x.toLowerCase()==="y"),x==="\t"&&this.opts.placeholder&&(this.value||(this.rl?.write(this.opts.placeholder),this.emit("value",this.opts.placeholder))),x&&this.emit("key",x.toLowerCase()),m?.name==="return"){if(this.opts.validate){let $=this.opts.validate(this.value);$&&(this.error=$ instanceof Error?$.message:$,this.state="error",this.rl?.write(this.value))}this.state!=="error"&&(this.state="submit")}s([x,m?.name,m?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
11
+ `),j(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let x=C1(this._prevFrame,process.stdout.columns,{hard:!0}).split(`
12
+ `).length-1;this.output.write(w.cursor.move(-999,x*-1))}render(){let x=C1(this._render(this)??"",process.stdout.columns,{hard:!0});if(x!==this._prevFrame){if(this.state==="initial")this.output.write(w.cursor.hide);else{let m=Ub(this._prevFrame,x);if(this.restoreCursor(),m&&m?.length===1){let $=m[0];this.output.write(w.cursor.move(0,$)),this.output.write(w.erase.lines(1));let I=x.split(`
13
+ `);this.output.write(I[$]),this._prevFrame=x,this.output.write(w.cursor.move(0,I.length-$-1));return}if(m&&m?.length>1){let $=m[0];this.output.write(w.cursor.move(0,$)),this.output.write(w.erase.down());let I=x.split(`
14
+ `).slice($);this.output.write(I.join(`
15
+ `)),this._prevFrame=x;return}this.output.write(w.erase.down())}this.output.write(x),this.state==="initial"&&(this.state="active"),this._prevFrame=x}}}class e extends u{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(x){super(x,!1),this.value=!!x.initialValue,this.on("value",()=>{this.value=this._value}),this.on("confirm",(m)=>{this.output.write(w.cursor.move(0,-1)),this.value=m,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}class D extends u{get valueWithCursor(){if(this.state==="submit")return this.value;if(this.cursor>=this.value.length)return`${this.value}█`;let x=this.value.slice(0,this.cursor),[m,...$]=this.value.slice(this.cursor);return`${x}${U1.default.inverse(m)}${$.join("")}`}get cursor(){return this._cursor}constructor(x){super(x),this.on("finalize",()=>{this.value||(this.value=x.defaultValue)})}}var J=A(L(),1),y=A(o(),1);import C from"node:process";function hb(){return C.platform!=="win32"?C.env.TERM!=="linux":!!C.env.CI||!!C.env.WT_SESSION||!!C.env.TERMINUS_SUBLIME||C.env.ConEmuTask==="{cmd::Cmder}"||C.env.TERM_PROGRAM==="Terminus-Sublime"||C.env.TERM_PROGRAM==="vscode"||C.env.TERM==="xterm-256color"||C.env.TERM==="alacritty"||C.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var b1=hb(),Q=(x,m)=>b1?x:m,kb=Q("◆","*"),T1=Q("■","x"),_1=Q("▲","x"),x1=Q("◇","o"),Ab=Q("┌","T"),z=Q("│","|"),P=Q("└","—"),M1=Q("●",">"),P1=Q("○"," "),Sx=Q("◻","[•]"),Wx=Q("◼","[+]"),Hx=Q("◻","[ ]"),Qx=Q("▪","•"),Xx=Q("─","-"),qx=Q("╮","+"),wx=Q("├","+"),zx=Q("╯","+"),Mb=Q("●","•"),Pb=Q("◆","*"),Tb=Q("▲","!"),_b=Q("■","x"),L1=(x)=>{switch(x){case"initial":case"active":return J.default.cyan(kb);case"cancel":return J.default.red(T1);case"error":return J.default.yellow(_1);case"submit":return J.default.green(x1)}};var j1=(x)=>new D({validate:x.validate,placeholder:x.placeholder,defaultValue:x.defaultValue,initialValue:x.initialValue,render(){let m=`${J.default.gray(z)}
16
+ ${L1(this.state)} ${x.message}
17
+ `,$=x.placeholder?J.default.inverse(x.placeholder[0])+J.default.dim(x.placeholder.slice(1)):J.default.inverse(J.default.hidden("_")),I=this.value?this.valueWithCursor:$;switch(this.state){case"error":return`${m.trim()}
18
+ ${J.default.yellow(z)} ${I}
19
+ ${J.default.yellow(P)} ${J.default.yellow(this.error)}
20
+ `;case"submit":return`${m}${J.default.gray(z)} ${J.default.dim(this.value||x.placeholder)}`;case"cancel":return`${m}${J.default.gray(z)} ${J.default.strikethrough(J.default.dim(this.value??""))}${this.value?.trim()?`
21
+ ${J.default.gray(z)}`:""}`;default:return`${m}${J.default.cyan(z)} ${I}
22
+ ${J.default.cyan(P)}
23
+ `}}}).prompt();var v1=(x)=>{let m=x.active??"Yes",$=x.inactive??"No";return new e({active:m,inactive:$,initialValue:x.initialValue??!0,render(){let I=`${J.default.gray(z)}
24
+ ${L1(this.state)} ${x.message}
25
+ `,B=this.value?m:$;switch(this.state){case"submit":return`${I}${J.default.gray(z)} ${J.default.dim(B)}`;case"cancel":return`${I}${J.default.gray(z)} ${J.default.strikethrough(J.default.dim(B))}
26
+ ${J.default.gray(z)}`;default:return`${I}${J.default.cyan(z)} ${this.value?`${J.default.green(M1)} ${m}`:`${J.default.dim(P1)} ${J.default.dim(m)}`} ${J.default.dim("/")} ${this.value?`${J.default.dim(P1)} ${J.default.dim($)}`:`${J.default.green(M1)} ${$}`}
27
+ ${J.default.cyan(P)}
28
+ `}}}).prompt()};var m1=(x="")=>{process.stdout.write(`${J.default.gray(P)} ${J.default.red(x)}
35
29
 
36
- `)},F1=(x="")=>{process.stdout.write(`${H.default.gray(H9)} ${x}
37
- `)},a1=(x="")=>{process.stdout.write(`${H.default.gray(Y)}
38
- ${H.default.gray(h)} ${x}
30
+ `)},E1=(x="")=>{process.stdout.write(`${J.default.gray(Ab)} ${x}
31
+ `)},y1=(x="")=>{process.stdout.write(`${J.default.gray(z)}
32
+ ${J.default.gray(P)} ${x}
39
33
 
40
- `)},j={message:(x="",{symbol:$=H.default.gray(Y)}={})=>{let B=[`${H.default.gray(Y)}`];if(x){let[m,...I]=x.split(`
41
- `);B.push(`${$} ${m}`,...I.map((G)=>`${H.default.gray(Y)} ${G}`))}process.stdout.write(`${B.join(`
34
+ `)},V={message:(x="",{symbol:m=J.default.gray(z)}={})=>{let $=[`${J.default.gray(z)}`];if(x){let[I,...B]=x.split(`
35
+ `);$.push(`${m} ${I}`,...B.map((G)=>`${J.default.gray(z)} ${G}`))}process.stdout.write(`${$.join(`
42
36
  `)}
43
- `)},info:(x)=>{j.message(x,{symbol:H.default.blue(Q9)})},success:(x)=>{j.message(x,{symbol:H.default.green(q9)})},step:(x)=>{j.message(x,{symbol:H.default.green(Q1)})},warn:(x)=>{j.message(x,{symbol:H.default.yellow(z9)})},warning:(x)=>{j.warn(x)},error:(x)=>{j.message(x,{symbol:H.default.red(J9)})}},a=()=>{let x=I1?["◒","◐","◓","◑"]:["•","o","O","0"],$=I1?80:120,B=process.env.CI==="true",m,I,G=!1,b="",Q,z=(U)=>{let v=U>1?"Something went wrong":"Canceled";G&&W1(v,U)},q=()=>z(2),W=()=>z(1),X=()=>{process.on("uncaughtExceptionMonitor",q),process.on("unhandledRejection",q),process.on("SIGINT",W),process.on("SIGTERM",W),process.on("exit",z)},T=()=>{process.removeListener("uncaughtExceptionMonitor",q),process.removeListener("unhandledRejection",q),process.removeListener("SIGINT",W),process.removeListener("SIGTERM",W),process.removeListener("exit",z)},A=()=>{if(Q===void 0)return;B&&process.stdout.write(`
44
- `);let U=Q.split(`
45
- `);process.stdout.write(F.cursor.move(-999,U.length-1)),process.stdout.write(F.erase.down(U.length))},S=(U)=>U.replace(/\.+$/,""),Ab=(U="")=>{G=!0,m=y1(),b=S(U),process.stdout.write(`${H.default.gray(Y)}
46
- `);let v=0,w=0;X(),I=setInterval(()=>{if(B&&b===Q)return;A(),Q=b;let vb=H.default.magenta(x[v]),Rb=B?"...":".".repeat(Math.floor(w)).slice(0,3);process.stdout.write(`${vb} ${b}${Rb}`),v=v+1<x.length?v+1:0,w=w<x.length?w+0.125:0},$)},W1=(U="",v=0)=>{G=!1,clearInterval(I),A();let w=v===0?H.default.green(Q1):v===1?H.default.red(d1):H.default.red(p1);b=S(U??b),process.stdout.write(`${w} ${b}
47
- `),T(),m()};return{start:Ab,stop:W1,message:(U="")=>{b=S(U??b)}}},n1=async(x,$)=>{let B={},m=Object.keys(x);for(let I of m){let G=x[I],b=await G({results:B})?.catch((Q)=>{throw Q});if(typeof $?.onCancel=="function"&&x1(b)){B[I]="canceled",$.onCancel({results:B});continue}B[I]=b}return B};var J=f(d(),1);var i1=new Set(["node_modules",".git",".nx",".next","dist","build",".turbo","_base",".env.local",".env.next",".env.router",".env.convex"]),r1=[{value:"nextjs",label:"Next.js",hint:"App Router"},{value:"react-router",label:"React Router v7",hint:"Static Routing (SPA)"},{value:"api",label:"API only",hint:"Convex backend, no frontend"}],s1={nextjs:{dependencies:{"@clerk/nextjs":"^6.33.7",next:"~15.1.4",sharp:"^0.33.5"},devDependencies:{"@nx/next":"20.6.2"}},"react-router":{dependencies:{"@clerk/react-router":"^3.0.4","react-router":"^7.5.0","@react-router/node":"^7.13.1","@react-router/serve":"^7.13.1"},devDependencies:{"@react-router/dev":"^7.5.0","@tailwindcss/vite":"^4.1.11","@vitejs/plugin-react":"^4.3.4",vite:"^6.3.2","vite-plugin-devtools-json":"^1.0.0","vite-tsconfig-paths":"^5.1.4"}},api:{}},u1={nextjs:["@nx/next/plugin"],"react-router":[],api:[]},t1={nextjs:["frontend_architecture_nextjs.mdc"],"react-router":["frontend_architecture_reactrouter.mdc"],api:[]},D1=["frontend_architecture_core.mdc"],e1=["shadcn","clerk/clerk-custom-ui","clerk/clerk-nextjs-patterns"],bb=["shadcn","clerk-custom-ui","clerk-nextjs-patterns"],J1={dependencies:{"@clerk/nextjs":"","@clerk/react-router":"","@convex-dev/react-query":"","@hookform/resolvers":"","@radix-ui/react-accordion":"","@radix-ui/react-alert-dialog":"","@radix-ui/react-aspect-ratio":"","@radix-ui/react-checkbox":"","@radix-ui/react-collapsible":"","@radix-ui/react-dropdown-menu":"","@radix-ui/react-hover-card":"","@radix-ui/react-label":"","@radix-ui/react-popover":"","@radix-ui/react-progress":"","@radix-ui/react-radio-group":"","@radix-ui/react-scroll-area":"","@radix-ui/react-select":"","@radix-ui/react-separator":"","@radix-ui/react-slider":"","@radix-ui/react-switch":"","@radix-ui/react-tabs":"","@radix-ui/react-tooltip":"","@react-router/node":"","@react-router/serve":"","@stepperize/react":"","@tailwindcss/typography":"","@tanstack/react-query":"","@tanstack/react-store":"","@tanstack/react-table":"","class-variance-authority":"",cmdk:"",isbot:"","lucide-react":"",mobx:"","mobx-react":"","mobx-react-lite":"",next:"",react:"","react-dom":"","react-hook-form":"","react-resizable-panels":"","react-router":"",sharp:"",sonner:"","tw-animate-css":""},devDependencies:{"@nx/next":"","@react-router/dev":"","@tailwindcss/postcss":"","@tailwindcss/vite":"","@types/react":"","@types/react-dom":"","@vitejs/plugin-react":"",autoprefixer:"",postcss:"","tailwind-merge":"",tailwindcss:"","tailwindcss-animate":"",vite:"","vite-plugin-devtools-json":"","vite-tsconfig-paths":""}};import{execSync as Y9}from"node:child_process";import{cpSync as X1,existsSync as N,readdirSync as xb,readFileSync as L,renameSync as $b,rmSync as P,writeFileSync as _}from"node:fs";import{basename as V9,join as V}from"node:path";import{downloadTemplate as W9}from"giget";var Bb=(x)=>{return!N(x)||xb(x).length===0},E=(x,$)=>{Y9(x,{cwd:$,stdio:"ignore"})},K9=(x,$)=>{X1(x,$,{recursive:!0,filter:(B)=>!i1.has(V9(B))})},mb=async(x,$)=>{if(x.startsWith("/")||x.startsWith("./")||x.startsWith("../"))K9(x,$);else await W9(x,{dir:$,forceClean:!1})},Z1=(x)=>{let $=xb(x,{withFileTypes:!0});for(let B of $){let m=V(x,B.name);if(B.isDirectory())Z1(m);else if(B.isFile()&&B.name==="_gitignore")$b(m,V(x,".gitignore"))}},Ib=(x,$)=>{let B=["nextjs","react-router"];for(let m of B){if(m===$)continue;let I=V(x,"apps",m);if(N(I))P(I,{recursive:!0,force:!0})}},Gb=(x,$)=>{$b(V(x,"apps",$),V(x,"apps","web"))},Hb=(x,$)=>{let B=V(x,"apps","web","project.json");if(!N(B))return;let m=L(B,"utf-8");m=m.replace(/"name":\s*"[^"]+"/,'"name": "web"'),m=m.replaceAll(`apps/${$}`,"apps/web"),_(B,m,"utf-8")},Qb=(x,$)=>{let B=V(x,"package.json"),m=JSON.parse(L(B,"utf-8")),I=["nextjs","react-router"];for(let G of I){if(G===$)continue;let b=s1[G];for(let Q of Object.keys(b.dependencies??{}))delete m.dependencies?.[Q];for(let Q of Object.keys(b.devDependencies??{}))delete m.devDependencies?.[Q]}_(B,`${JSON.stringify(m,null,2)}
48
- `,"utf-8")},qb=(x,$)=>{let B=V(x,"nx.json");if(!N(B))return;let m=JSON.parse(L(B,"utf-8")),I=["nextjs","react-router"],G=new Set;for(let b of I){if(b===$)continue;for(let Q of u1[b])G.add(Q)}if(G.size>0)m.plugins=m.plugins.filter((b)=>{let Q=typeof b==="string"?b:b.plugin;return!G.has(Q)});_(B,`${JSON.stringify(m,null,2)}
49
- `,"utf-8")},zb=(x,$)=>{let B=V(x,"package.json"),m=JSON.parse(L(B,"utf-8"));m.name=$,_(B,`${JSON.stringify(m,null,2)}
50
- `,"utf-8")},Jb=(x)=>{let $=V(x,"apps/web/.env.example"),B=V(x,".env.example");if(N($))X1($,B)},C9={nextjs:".env.next","react-router":".env.router"},Xb=(x,$)=>{let B=["nextjs","react-router"];for(let m of B){if(m===$)continue;for(let I of t1[m]){let G=V(x,".cursor","rules",I);if(N(G))P(G,{force:!0})}}},Zb=(x,$)=>{let B=V(x,"tsconfig.base.json");if(!N(B))return;let m=L(B,"utf-8").replace(/,\s*([\]}])/g,"$1"),I=JSON.parse(m),b=I.compilerOptions.paths;if($==="api"){delete b["@/assets/*"],delete b["@/ui/*"],delete b["@/emails/*"],delete b["@/web/*"],delete b["@/router/*"];let Q=I.include;if(Q)I.include=Q.filter((z)=>!z.startsWith("./apps/nextjs/")&&!z.startsWith("./apps/react-router/")&&!z.startsWith("./apps/web/")&&!z.startsWith("./shared/assets/")&&!z.startsWith("./shared/ui/"))}else{if(b["@/web/*"])b["@/web/*"]=["./apps/web/src/*"];if($!=="react-router")delete b["@/router/*"];let Q=I.include;if(Q)I.include=Q.filter((z)=>!z.startsWith("./apps/nextjs/")&&!z.startsWith("./apps/react-router/"))}_(B,`${JSON.stringify(I,null,2)}
51
- `,"utf-8")},Yb=(x)=>{let $=V(x,"shared","ui");if(N($))P($,{recursive:!0,force:!0})},Vb=(x)=>{let $=V(x,"shared","assets");if(N($))P($,{recursive:!0,force:!0})},Wb=(x)=>{let $=V(x,"emails");if(N($))P($,{recursive:!0,force:!0})},Kb=(x)=>{let $=V(x,"package.json"),B=JSON.parse(L($,"utf-8"));for(let m of Object.keys(J1.dependencies))delete B.dependencies?.[m];for(let m of Object.keys(J1.devDependencies))delete B.devDependencies?.[m];_($,`${JSON.stringify(B,null,2)}
52
- `,"utf-8")},Cb=(x)=>{for(let $ of D1){let B=V(x,".cursor","rules",$);if(N(B))P(B,{force:!0})}},Nb=(x)=>{for(let $ of e1){let B=V(x,".cursor","agents","skills",$);if(N(B))P(B,{recursive:!0,force:!0})}},Ub=(x)=>{let $=V(x,"skills-lock.json");if(!N($))return;let B=JSON.parse(L($,"utf-8")),m=B.skills;if(m)for(let I of bb)delete m[I];_($,`${JSON.stringify(B,null,2)}
53
- `,"utf-8")},Mb=(x,$,B)=>{let m=C9[B];if(!m)return;let I=V(x,m);if(N(I))X1(I,V($,".env.local"))};var Ob=T9(O9(import.meta.url)),Tb=V1(Ob,"../templates"),Y1=process.argv.includes("--local");async function A9(){if(console.log(),F1(`${J.default.bgMagenta(J.default.white("New Aron Project Template"))} ${J.default.dim("— Convex · Clerk · Nx")}`),Y1){let q=V1(Ob,"../test-app");if(N9(q))U9(q,{recursive:!0,force:!0});j.info(`${J.default.dim("--local")} mode — output → ${J.default.cyan(q)}`)}let x=await n1({framework:()=>c1({message:"Frontend framework",options:r1,initialValue:"nextjs"}),dir:()=>Y1?Promise.resolve("./test-app"):l1({message:"Where should we create it?",initialValue:"~/Desktop/my-app",placeholder:"~/Desktop/my-app",validate(q){if(!q?.trim())return"Directory is required";let W=(q??"").replace(/^~/,process.env.HOME??"~");if(!Bb(W))return`${J.default.cyan(q)} already exists and is not empty`}}),git:()=>Y1?Promise.resolve(!1):o1({message:"Initialize a git repository?",initialValue:!0})},{onCancel(){z1("Cancelled."),process.exit(0)}}),{framework:$}=x,B=x.dir.replace(/^~/,process.env.HOME??"~"),m=V1(B),I=M9(m),G=a();G.start("Copying template…");try{if(await mb(Tb,m),Ib(m,$),$!=="api")Gb(m,$),Hb(m,$);if(Qb(m,$),qb(m,$),Zb(m,$),Xb(m,$),zb(m,I),Z1(m),$!=="api")Jb(m),Mb(Tb,m,$);else Yb(m),Vb(m),Wb(m),Kb(m),Cb(m),Nb(m),Ub(m);G.stop("Template copied")}catch(q){G.stop("Failed"),z1(q instanceof Error?q.message:String(q)),process.exit(1)}if(x.git){let q=a();q.start("Initializing git…");try{E("git init",m),E("git branch -M main",m),E("git add -A",m),E('git commit -m "chore: initial commit from template"',m),q.stop("Git initialized")}catch{q.stop(J.default.yellow("Git init skipped"))}}let b=a();b.start("Installing dependencies with bun…");try{E("bun install",m),b.stop("Dependencies installed")}catch{b.stop(J.default.yellow(`Install failed — run ${J.default.cyan("bun install")} manually`))}let Q=B.startsWith(process.env.HOME??"~")?`cd ~/${B.slice((process.env.HOME??"").length+1)}`:`cd ${B}`,z=[`${J.default.green("✓")} Created ${J.default.cyan(I)} at ${J.default.dim(m)}`,"",` ${J.default.bold("Next steps:")}`,` ${J.default.dim("1.")} ${Q}`,` ${J.default.dim("2.")} Copy ${J.default.cyan(".env.example")} → ${J.default.cyan(".env.local")} and add your keys`,` ${J.default.dim("3.")} ${J.default.cyan("nx dev api")} ${J.default.dim("(Convex backend)")}`];if($!=="api"){let q=$==="nextjs"?"Next.js":"React Router";z.push(` ${J.default.dim("4.")} ${J.default.cyan("nx dev web")} ${J.default.dim(`(${q} frontend)`)}`)}z.push("",` ${J.default.dim("Docs:")} ${J.default.underline("https://docs.convex.dev")} · ${J.default.underline("https://clerk.com/docs")}`),a1(z.join(`
54
- `))}A9().catch((x)=>{console.error(x),process.exit(1)});
37
+ `)},info:(x)=>{V.message(x,{symbol:J.default.blue(Mb)})},success:(x)=>{V.message(x,{symbol:J.default.green(Pb)})},step:(x)=>{V.message(x,{symbol:J.default.green(x1)})},warn:(x)=>{V.message(x,{symbol:J.default.yellow(Tb)})},warning:(x)=>{V.warn(x)},error:(x)=>{V.message(x,{symbol:J.default.red(_b)})}},l=()=>{let x=b1?["◒","◐","◓","◑"]:["•","o","O","0"],m=b1?80:120,$=process.env.CI==="true",I,B,G=!1,b="",Y,K=(Z)=>{let R=Z>1?"Something went wrong":"Canceled";G&&Y1(R,Z)},S=()=>K(2),q=()=>K(1),X=()=>{process.on("uncaughtExceptionMonitor",S),process.on("unhandledRejection",S),process.on("SIGINT",q),process.on("SIGTERM",q),process.on("exit",K)},N=()=>{process.removeListener("uncaughtExceptionMonitor",S),process.removeListener("unhandledRejection",S),process.removeListener("SIGINT",q),process.removeListener("SIGTERM",q),process.removeListener("exit",K)},g=()=>{if(Y===void 0)return;$&&process.stdout.write(`
38
+ `);let Z=Y.split(`
39
+ `);process.stdout.write(y.cursor.move(-999,Z.length-1)),process.stdout.write(y.erase.down(Z.length))},d=(Z)=>Z.replace(/\.+$/,""),F1=(Z="")=>{G=!0,I=A1(),b=d(Z),process.stdout.write(`${J.default.gray(z)}
40
+ `);let R=0,h=0;X(),B=setInterval(()=>{if($&&b===Y)return;g(),Y=b;let s1=J.default.magenta(x[R]),t1=$?"...":".".repeat(Math.floor(h)).slice(0,3);process.stdout.write(`${s1} ${b}${t1}`),R=R+1<x.length?R+1:0,h=h<x.length?h+0.125:0},m)},Y1=(Z="",R=0)=>{G=!1,clearInterval(B),g();let h=R===0?J.default.green(x1):R===1?J.default.red(T1):J.default.red(_1);b=d(Z??b),process.stdout.write(`${h} ${b}
41
+ `),N(),I()};return{start:F1,stop:Y1,message:(Z="")=>{b=d(Z??b)}}},l1=async(x,m)=>{let $={},I=Object.keys(x);for(let B of I){let G=x[B],b=await G({results:$})?.catch((Y)=>{throw Y});if(typeof m?.onCancel=="function"&&t(b)){$[B]="canceled",m.onCancel({results:$});continue}$[B]=b}return $};var W=A(L(),1);import{execSync as jb}from"node:child_process";import{cpSync as $1,existsSync as I1,readdirSync as d1,readFileSync as vb,renameSync as Eb,writeFileSync as yb}from"node:fs";import{basename as lb,join as O}from"node:path";import{downloadTemplate as db}from"giget";var pb=new Set(["node_modules",".git",".nx",".next","dist","build",".turbo","_base",".env.local",".env.next",".env.router",".env.convex"]),p1=(x)=>{return!I1(x)||d1(x).length===0},k=(x,m)=>{jb(x,{cwd:m,stdio:"ignore"})},ob=(x,m)=>{$1(x,m,{recursive:!0,filter:($)=>!pb.has(lb($))})},o1=async(x,m)=>{if(x.startsWith("/")||x.startsWith("./")||x.startsWith("../"))ob(x,m);else await db(x,{dir:m,forceClean:!1})},B1=(x)=>{let m=d1(x,{withFileTypes:!0});for(let $ of m){let I=O(x,$.name);if($.isDirectory())B1(I);else if($.isFile()&&$.name==="_gitignore")Eb(I,O(x,".gitignore"))}},a1=(x,m)=>{let $=O(x,"package.json"),I=JSON.parse(vb($,"utf-8"));I.name=m,yb($,`${JSON.stringify(I,null,2)}
42
+ `,"utf-8")},c1=(x)=>{let m=O(x,"apps/react-router/.env.example"),$=O(x,".env.example");if(I1(m))$1(m,$)},n1=(x,m)=>{let $=O(x,".env.router");if(I1($))$1($,O(m,".env.local"))};var i1=rb(ib(import.meta.url)),r1=J1(i1,"../templates"),G1=process.argv.includes("--local");async function Fb(){if(console.log(),E1(`${W.default.bgMagenta(W.default.white("New Aron Project Template"))} ${W.default.dim("— Convex · Clerk · React Router v7")}`),G1){let K=J1(i1,"../test-app");if(ab(K))cb(K,{recursive:!0,force:!0});V.info(`${W.default.dim("--local")} mode — output → ${W.default.cyan(K)}`)}let x=await l1({dir:()=>G1?Promise.resolve("./test-app"):j1({message:"Where should we create it?",initialValue:"~/Desktop/my-app",placeholder:"~/Desktop/my-app",validate(K){if(!K?.trim())return"Directory is required";let S=(K??"").replace(/^~/,process.env.HOME??"~");if(!p1(S))return`${W.default.cyan(K)} already exists and is not empty`}}),git:()=>G1?Promise.resolve(!1):v1({message:"Initialize a git repository?",initialValue:!0})},{onCancel(){m1("Cancelled."),process.exit(0)}}),m=x.dir.replace(/^~/,process.env.HOME??"~"),$=J1(m),I=nb($),B=l();B.start("Copying template…");try{await o1(r1,$),B1($),a1($,I),c1($),n1(r1,$),B.stop("Template copied")}catch(K){B.stop("Failed"),m1(K instanceof Error?K.message:String(K)),process.exit(1)}if(x.git){let K=l();K.start("Initializing git…");try{k("git init",$),k("git branch -M main",$),k("git add -A",$),k('git commit -m "chore: initial commit from template"',$),K.stop("Git initialized")}catch{K.stop(W.default.yellow("Git init skipped"))}}let G=l();G.start("Installing dependencies with bun…");try{k("bun install",$),G.stop("Dependencies installed")}catch{G.stop(W.default.yellow(`Install failed — run ${W.default.cyan("bun install")} manually`))}let b=m.startsWith(process.env.HOME??"~")?`cd ~/${m.slice((process.env.HOME??"").length+1)}`:`cd ${m}`,Y=[`${W.default.green("✓")} Created ${W.default.cyan(I)} at ${W.default.dim($)}`,"",` ${W.default.bold("Next steps:")}`,` ${W.default.dim("1.")} ${b}`,` ${W.default.dim("2.")} Copy ${W.default.cyan(".env.example")} → ${W.default.cyan(".env.local")} and add your keys`,` ${W.default.dim("3.")} ${W.default.cyan("nx dev api")} ${W.default.dim("(Convex backend)")}`,` ${W.default.dim("4.")} ${W.default.cyan("nx dev react-router")} ${W.default.dim("(React Router v7 frontend)")}`,"",` ${W.default.dim("Docs:")} ${W.default.underline("https://docs.convex.dev")} · ${W.default.underline("https://clerk.com/docs")}`];y1(Y.join(`
43
+ `))}Fb().catch((x)=>{console.error(x),process.exit(1)});
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "create-aron-app",
3
- "version": "0.1.7",
4
- "description": "Scaffold a new Convex + Next.js + Clerk full-stack project",
3
+ "version": "0.1.8",
4
+ "description": "Scaffold a new Convex + React Router + Clerk full-stack project",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "bin": {
@@ -36,7 +36,7 @@
36
36
  "create",
37
37
  "template",
38
38
  "convex",
39
- "nextjs",
39
+ "react-router",
40
40
  "clerk",
41
41
  "nx",
42
42
  "monorepo"
@@ -0,0 +1,112 @@
1
+ ---
2
+ description: Convex backend in apps/api — ents, zQuery/zMutation, CRUD layout, auth, and platform conventions that apply alongside project wrappers.
3
+ globs: templates/apps/api/**/*.ts,apps/api/**/*.ts
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Backend API (`apps/api`)
8
+
9
+ Convex backend using **convex-ents**, **`zQuery` / `zMutation`** from `@/api/functions`, and **Zod** (`z.*`, `zid()`) for public function args — not raw `v.*` validators on public handlers.
10
+
11
+ ---
12
+
13
+ ## Layout
14
+
15
+ ```
16
+ apps/api/
17
+ ├── <entity>/
18
+ │ ├── schema.ts # ent definition (table + edges + indexes)
19
+ │ ├── types.ts # Zod schemas + TS types
20
+ │ └── crud.ts # queries/mutations (GET → UPDATE → CREATE → DELETE)
21
+ ├── schema.ts # spreads all entity ents
22
+ ├── types.ts # shared context types
23
+ ├── functions.ts # zQuery / zMutation wrappers
24
+ └── auth.config.ts # JWT providers (required for ctx.auth)
25
+ ```
26
+
27
+ Example entity (`todos/`): `schema.ts`, `types.ts`, `crud.ts`.
28
+
29
+ ### New entity checklist
30
+
31
+ 1. Add `apps/api/<entity>/schema.ts` → export `<entity>Ents`
32
+ 2. Add `types.ts` — Zod input/output shapes
33
+ 3. Add `crud.ts` — `zQuery` / `zMutation` handlers
34
+ 4. Spread ents in `apps/api/schema.ts` via `defineEntSchema`
35
+
36
+ ---
37
+
38
+ ## Schema (`schema.ts` per entity)
39
+
40
+ - Export `{ tableName: defineEnt({...}).edge(...).index(...) }`
41
+ - Index names include all indexed fields, e.g. `by_user_id`
42
+ - Prefer **indexes** for lookups; avoid unbounded `filter` scans in production code
43
+
44
+ ---
45
+
46
+ ## Types (`types.ts`)
47
+
48
+ - Zod schemas and inferred types live here, not in ent schema files
49
+ - Use `zodToConvex` from convex-helpers when bridging Zod → Convex validators
50
+
51
+ ---
52
+
53
+ ## CRUD (`crud.ts`)
54
+
55
+ Order functions: **GET → UPDATE → CREATE → DELETE**.
56
+
57
+ - Authenticate with `ctx.auth.getUserIdentity()`; resolve the app user as your schema requires
58
+ - **Never** take `userId` from the client for authorization — derive from auth context
59
+ - Prefer **`identity.tokenIdentifier`** for stable auth-linked lookups (not `subject` alone)
60
+ - Use **`ConvexError`** for business errors; messages stay concise
61
+ - For expected present/missing entity semantics: **`getX` / `get`**, **`uniqueX` / `unique`** — no redundant null checks after `getX`
62
+
63
+ ### Ent helpers
64
+
65
+ | API | Use when |
66
+ |-----|----------|
67
+ | `getX(id)` | Row must exist |
68
+ | `get(id)` | Row may be missing |
69
+ | `uniqueX` / `firstX` | Index query must yield exactly one / at least one |
70
+
71
+ ### Edge patterns
72
+
73
+ ```typescript
74
+ const related = await entity.edge("relatedEntity");
75
+ return { ...entity, related };
76
+ ```
77
+
78
+ Standard update:
79
+
80
+ ```typescript
81
+ const { entityId, ...updates } = args;
82
+ const entity = await ctx.table("entities").getX(entityId);
83
+ return entity.patch(updates);
84
+ ```
85
+
86
+ ---
87
+
88
+ ## Documentation style
89
+
90
+ - **No** JSDoc on every exported function — names should read clearly
91
+ - **Only** inline comments for non-obvious business rules
92
+
93
+ ---
94
+
95
+ ## Convex platform notes (template-wide)
96
+
97
+ These apply to any `query`/`mutation`/`action` code; **this repo’s public API should still use `zQuery`/`zMutation`** per above.
98
+
99
+ - Register **internal** functions with `internalQuery` / `internalMutation` / `internalAction` — never expose sensitive ops as public `query`/`mutation`
100
+ - **Actions**: add `"use node"` only in files that need Node builtins; **never** mix `"use node"` with queries/mutations in the same file
101
+ - **Pagination**: use `paginationOptsValidator` and `.paginate()` for large lists — avoid unbounded `.collect()` on big tables
102
+ - **Scheduling**: only schedule **internal** function references
103
+ - **Queries**: do not use `Date.now()` in query logic if it should be reactive/cached predictably
104
+ - **DB**: no `.collect().length` for counts at scale — denormalize or bound reads
105
+
106
+ For HTTP routes in Convex, use `httpRouter` + `httpAction` and register exact paths.
107
+
108
+ ---
109
+
110
+ ## Client imports
111
+
112
+ Frontend code imports **`Doc` / `Id`** only through per-entity **`types.ts` aliases** (e.g. `Todo`, `TodoId`). Do not use `Ent<T>` outside the backend.