@mx-space/cli 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/README.md +101 -28
  2. package/ROADMAP.md +4 -3
  3. package/dist/{auth-OeKZZ_2x.mjs → auth-Duj8jJn9.mjs} +3 -3
  4. package/dist/{auth-OeKZZ_2x.mjs.map → auth-Duj8jJn9.mjs.map} +1 -1
  5. package/dist/bin/mxs.d.mts +2 -1
  6. package/dist/bin/mxs.mjs +250 -48
  7. package/dist/bin/mxs.mjs.map +1 -1
  8. package/dist/{config-store-WL7dNMS6.mjs → config-store-DmwX2iZU.mjs} +15 -76
  9. package/dist/config-store-DmwX2iZU.mjs.map +1 -0
  10. package/dist/{create-Cxnqt_Wt.mjs → create-Cqt1rrSZ.mjs} +5 -5
  11. package/dist/{create-Cxnqt_Wt.mjs.map → create-Cqt1rrSZ.mjs.map} +1 -1
  12. package/dist/{create-BWA2WGrW.mjs → create-D7cR9xcN.mjs} +3 -3
  13. package/dist/{create-BWA2WGrW.mjs.map → create-D7cR9xcN.mjs.map} +1 -1
  14. package/dist/{create-C85MSrtt.mjs → create-DAt3FXLf.mjs} +5 -5
  15. package/dist/{create-C85MSrtt.mjs.map → create-DAt3FXLf.mjs.map} +1 -1
  16. package/dist/{create-DUOSAqBm.mjs → create-_H8YO7ze.mjs} +3 -3
  17. package/dist/{create-DUOSAqBm.mjs.map → create-_H8YO7ze.mjs.map} +1 -1
  18. package/dist/{create-BVHnXtIH.mjs → create-kYlrs4d6.mjs} +4 -4
  19. package/dist/{create-BVHnXtIH.mjs.map → create-kYlrs4d6.mjs.map} +1 -1
  20. package/dist/{delete-Cjxehwj7.mjs → delete-DVNebWqO.mjs} +4 -4
  21. package/dist/{delete-Cjxehwj7.mjs.map → delete-DVNebWqO.mjs.map} +1 -1
  22. package/dist/{delete-CGy-cV6k.mjs → delete-D_NRteuq.mjs} +4 -4
  23. package/dist/{delete-CGy-cV6k.mjs.map → delete-D_NRteuq.mjs.map} +1 -1
  24. package/dist/{delete-CKqlAUT8.mjs → delete-DmKPzzsQ.mjs} +4 -4
  25. package/dist/{delete-CKqlAUT8.mjs.map → delete-DmKPzzsQ.mjs.map} +1 -1
  26. package/dist/{delete-CcyrLNZv.mjs → delete-ZIjkquZj.mjs} +4 -4
  27. package/dist/{delete-CcyrLNZv.mjs.map → delete-ZIjkquZj.mjs.map} +1 -1
  28. package/dist/{delete-BEXOOFAJ.mjs → delete-aCVSWuKi.mjs} +4 -4
  29. package/dist/{delete-BEXOOFAJ.mjs.map → delete-aCVSWuKi.mjs.map} +1 -1
  30. package/dist/{onboarding-C1t1yoay.mjs → dist-DJF1Ntdn.mjs} +95 -173
  31. package/dist/dist-DJF1Ntdn.mjs.map +1 -0
  32. package/dist/{document-output-C5PWbz2p.mjs → document-output-BtY8T7eY.mjs} +3 -3
  33. package/dist/{document-output-C5PWbz2p.mjs.map → document-output-BtY8T7eY.mjs.map} +1 -1
  34. package/dist/{edit-t108N11Q.mjs → edit-BWX7X4sy.mjs} +8 -8
  35. package/dist/{edit-t108N11Q.mjs.map → edit-BWX7X4sy.mjs.map} +1 -1
  36. package/dist/{edit-BRaZ6GGg.mjs → edit-CHCuoiWT.mjs} +9 -9
  37. package/dist/{edit-BRaZ6GGg.mjs.map → edit-CHCuoiWT.mjs.map} +1 -1
  38. package/dist/{edit-BuKMUNVC.mjs → edit-DjRE8Gk-.mjs} +4 -4
  39. package/dist/{edit-BuKMUNVC.mjs.map → edit-DjRE8Gk-.mjs.map} +1 -1
  40. package/dist/{edit-DFnOnk4i.mjs → edit-R6H5RtWd.mjs} +8 -8
  41. package/dist/{edit-DFnOnk4i.mjs.map → edit-R6H5RtWd.mjs.map} +1 -1
  42. package/dist/{editor-xrF-j3UE.mjs → editor-Dywlo4-8.mjs} +2 -2
  43. package/dist/{editor-xrF-j3UE.mjs.map → editor-Dywlo4-8.mjs.map} +1 -1
  44. package/dist/{envelope-overlays-DPAlMNW1.mjs → envelope-overlays-D1gmGVe5.mjs} +2 -2
  45. package/dist/{envelope-overlays-DPAlMNW1.mjs.map → envelope-overlays-D1gmGVe5.mjs.map} +1 -1
  46. package/dist/{get-GdRz82RW.mjs → get-CiLnUGHw.mjs} +4 -4
  47. package/dist/{get-GdRz82RW.mjs.map → get-CiLnUGHw.mjs.map} +1 -1
  48. package/dist/{get-Doi-NKAh.mjs → get-CkBqVyGi.mjs} +5 -5
  49. package/dist/{get-Doi-NKAh.mjs.map → get-CkBqVyGi.mjs.map} +1 -1
  50. package/dist/{get-DxTU7Nom.mjs → get-DNdde54z.mjs} +3 -3
  51. package/dist/{get-DxTU7Nom.mjs.map → get-DNdde54z.mjs.map} +1 -1
  52. package/dist/{get-DnDvLa9S.mjs → get-DbH58EkF.mjs} +4 -4
  53. package/dist/{get-DnDvLa9S.mjs.map → get-DbH58EkF.mjs.map} +1 -1
  54. package/dist/{get-CwcNFb39.mjs → get-IQQv4_rP.mjs} +3 -3
  55. package/dist/{get-CwcNFb39.mjs.map → get-IQQv4_rP.mjs.map} +1 -1
  56. package/dist/{get-BYoAlJwB.mjs → get-xtByxURm.mjs} +4 -4
  57. package/dist/{get-BYoAlJwB.mjs.map → get-xtByxURm.mjs.map} +1 -1
  58. package/dist/index.d.mts +19 -2
  59. package/dist/index.mjs +9 -9
  60. package/dist/{list-DVunNsXr.mjs → list-Bnlg9SfR.mjs} +3 -3
  61. package/dist/{list-DVunNsXr.mjs.map → list-Bnlg9SfR.mjs.map} +1 -1
  62. package/dist/{list-CtME3aDw.mjs → list-C6z1iw4a.mjs} +3 -3
  63. package/dist/{list-CtME3aDw.mjs.map → list-C6z1iw4a.mjs.map} +1 -1
  64. package/dist/{list-CLAcZYZ4.mjs → list-CD9j9did.mjs} +3 -3
  65. package/dist/{list-CLAcZYZ4.mjs.map → list-CD9j9did.mjs.map} +1 -1
  66. package/dist/{list-DbNCVZbz.mjs → list-DVMtBAHG.mjs} +3 -3
  67. package/dist/{list-DbNCVZbz.mjs.map → list-DVMtBAHG.mjs.map} +1 -1
  68. package/dist/{list-DHG-MzOM.mjs → list-DW5TcGxS.mjs} +3 -3
  69. package/dist/{list-DHG-MzOM.mjs.map → list-DW5TcGxS.mjs.map} +1 -1
  70. package/dist/{list-DN81zVDA.mjs → list-lmpHwOQx.mjs} +3 -3
  71. package/dist/{list-DN81zVDA.mjs.map → list-lmpHwOQx.mjs.map} +1 -1
  72. package/dist/{litexml-codec-CDoRloiR.mjs → litexml-codec-D-1oggXL.mjs} +3 -3
  73. package/dist/{litexml-codec-CDoRloiR.mjs.map → litexml-codec-D-1oggXL.mjs.map} +1 -1
  74. package/dist/{login-mjliJn8U.mjs → login-D-SoeV01.mjs} +20 -9
  75. package/dist/{login-mjliJn8U.mjs.map → login-D-SoeV01.mjs.map} +1 -1
  76. package/dist/logout-D63ZU-1Q.mjs +17 -0
  77. package/dist/logout-D63ZU-1Q.mjs.map +1 -0
  78. package/dist/ls-Bz3BCcwU.mjs +32 -0
  79. package/dist/ls-Bz3BCcwU.mjs.map +1 -0
  80. package/dist/mark-N-IpKK17.mjs +28 -0
  81. package/dist/mark-N-IpKK17.mjs.map +1 -0
  82. package/dist/onboarding-FPMcuqn8.mjs +212 -0
  83. package/dist/onboarding-FPMcuqn8.mjs.map +1 -0
  84. package/dist/{output-CTnO1lYt.d.mts → output-DQMhacTo.d.mts} +1 -1
  85. package/dist/output-Dg8PISJM.mjs +299 -0
  86. package/dist/output-Dg8PISJM.mjs.map +1 -0
  87. package/dist/{payload-CN11pUto.mjs → payload-CjlZ9CeZ.mjs} +3 -3
  88. package/dist/{payload-CN11pUto.mjs.map → payload-CjlZ9CeZ.mjs.map} +1 -1
  89. package/dist/{publish-CN3NTJ_r.mjs → publish-C9O5obZ6.mjs} +4 -4
  90. package/dist/{publish-CN3NTJ_r.mjs.map → publish-C9O5obZ6.mjs.map} +1 -1
  91. package/dist/{publish-akQWYsnL.mjs → publish-yuM6YGSb.mjs} +4 -4
  92. package/dist/{publish-akQWYsnL.mjs.map → publish-yuM6YGSb.mjs.map} +1 -1
  93. package/dist/{resolve-Bp1AfBmM.mjs → resolve-B4-fMQ6I.mjs} +3 -3
  94. package/dist/{resolve-Bp1AfBmM.mjs.map → resolve-B4-fMQ6I.mjs.map} +1 -1
  95. package/dist/{resolve-BogJOR7R.mjs → resolve-DIu9N2sD.mjs} +2 -2
  96. package/dist/{resolve-BogJOR7R.mjs.map → resolve-DIu9N2sD.mjs.map} +1 -1
  97. package/dist/{resolve-CyjMlaoJ.mjs → resolve-TBYXBS4i.mjs} +3 -3
  98. package/dist/{resolve-CyjMlaoJ.mjs.map → resolve-TBYXBS4i.mjs.map} +1 -1
  99. package/dist/{resolve-Bw5Po9yK.mjs → resolve-U6RJ3AnQ.mjs} +3 -3
  100. package/dist/{resolve-Bw5Po9yK.mjs.map → resolve-U6RJ3AnQ.mjs.map} +1 -1
  101. package/dist/{resolve-helpers-CahPoJ0Y.mjs → resolve-helpers-C7PIVziv.mjs} +2 -2
  102. package/dist/{resolve-helpers-CahPoJ0Y.mjs.map → resolve-helpers-C7PIVziv.mjs.map} +1 -1
  103. package/dist/rm-D9GvLhhF.mjs +32 -0
  104. package/dist/rm-D9GvLhhF.mjs.map +1 -0
  105. package/dist/{set-ClbrGFGv.mjs → set-jD79hpuF.mjs} +3 -3
  106. package/dist/{set-ClbrGFGv.mjs.map → set-jD79hpuF.mjs.map} +1 -1
  107. package/dist/{shared-C2EAn5h_.mjs → shared-SryY2QPY.mjs} +12 -8
  108. package/dist/shared-SryY2QPY.mjs.map +1 -0
  109. package/dist/show-C5Zk0tcK.mjs +38 -0
  110. package/dist/show-C5Zk0tcK.mjs.map +1 -0
  111. package/dist/status-evZpPR3N.mjs +22 -0
  112. package/dist/status-evZpPR3N.mjs.map +1 -0
  113. package/dist/{update-CHmckeo8.mjs → update--7NPzL_w.mjs} +4 -4
  114. package/dist/{update-CHmckeo8.mjs.map → update--7NPzL_w.mjs.map} +1 -1
  115. package/dist/{update-qfiC-9Og.mjs → update-0q5hxJFh.mjs} +5 -5
  116. package/dist/{update-qfiC-9Og.mjs.map → update-0q5hxJFh.mjs.map} +1 -1
  117. package/dist/{update-Duh-iVOZ.mjs → update-CPJXcOg_.mjs} +6 -6
  118. package/dist/{update-Duh-iVOZ.mjs.map → update-CPJXcOg_.mjs.map} +1 -1
  119. package/dist/{update-CJjwg09n.mjs → update-DN78pXGZ.mjs} +4 -4
  120. package/dist/{update-CJjwg09n.mjs.map → update-DN78pXGZ.mjs.map} +1 -1
  121. package/dist/{update-dc-72pUN.mjs → update-hhAcAz_M.mjs} +6 -6
  122. package/dist/{update-dc-72pUN.mjs.map → update-hhAcAz_M.mjs.map} +1 -1
  123. package/dist/use-CHDCEe38.mjs +28 -0
  124. package/dist/use-CHDCEe38.mjs.map +1 -0
  125. package/dist/{whoami-UwcdRchK.mjs → whoami-BHDYyY5D.mjs} +4 -5
  126. package/dist/whoami-BHDYyY5D.mjs.map +1 -0
  127. package/package.json +1 -1
  128. package/dist/chunk-hT5z_Zn9.mjs +0 -35
  129. package/dist/config-store-WL7dNMS6.mjs.map +0 -1
  130. package/dist/logout-Bslt_ZJ4.mjs +0 -11
  131. package/dist/logout-Bslt_ZJ4.mjs.map +0 -1
  132. package/dist/onboarding-C1t1yoay.mjs.map +0 -1
  133. package/dist/output-BM7aBFwt.mjs +0 -120
  134. package/dist/output-BM7aBFwt.mjs.map +0 -1
  135. package/dist/shared-C2EAn5h_.mjs.map +0 -1
  136. package/dist/status-Cvyrrx-J.mjs +0 -22
  137. package/dist/status-Cvyrrx-J.mjs.map +0 -1
  138. package/dist/whoami-UwcdRchK.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-store-WL7dNMS6.mjs","names":["fs","readJsonIfExists","fs"],"sources":["../src/core/config-dir.ts","../src/core/profile.ts","../src/core/config-store.ts"],"sourcesContent":["import os from 'node:os'\nimport path from 'node:path'\n\nexport function getConfigDir(): string {\n const xdg = process.env.XDG_CONFIG_HOME\n const base = xdg && xdg.length > 0 ? xdg : path.join(os.homedir(), '.config')\n return path.join(base, 'mxs')\n}\n","import { type Dirent, promises as fs } from 'node:fs'\nimport path from 'node:path'\n\nimport { getConfigDir } from './config-dir'\nimport type { ConfigShape, CredentialsShape } from './config-store'\nimport { MxsError } from './errors'\n\nexport { getConfigDir }\n\nexport const PROFILE_NAME_RE = /^[\\d_a-z-]{1,32}$/\n\nexport const RESERVED_PROFILE_NAMES = new Set(['current'])\n\nexport function validateProfileName(name: string): void {\n if (!name || name.length === 0) {\n throw new MxsError({\n code: 'validation.failed',\n message: 'profile name must not be empty',\n })\n }\n if (RESERVED_PROFILE_NAMES.has(name)) {\n throw new MxsError({\n code: 'validation.failed',\n message: `profile name '${name}' is reserved`,\n })\n }\n if (!PROFILE_NAME_RE.test(name)) {\n throw new MxsError({\n code: 'validation.failed',\n message: `profile name '${name}' is invalid; must match ^[a-z0-9_-]{1,32}$`,\n })\n }\n}\n\nexport function getProfilesDir(): string {\n return path.join(getConfigDir(), 'profiles')\n}\n\nexport function getCurrentPath(): string {\n return path.join(getConfigDir(), 'current')\n}\n\nexport function getProfileDir(name: string): string {\n return path.join(getProfilesDir(), name)\n}\n\nexport function getProfileConfigPath(name: string): string {\n return path.join(getProfileDir(name), 'config.json')\n}\n\nexport function getProfileCredentialsPath(name: string): string {\n return path.join(getProfileDir(name), 'credentials.json')\n}\n\nexport async function listProfiles(): Promise<string[]> {\n const dir = getProfilesDir()\n let entries: Dirent[]\n try {\n entries = await fs.readdir(dir, { withFileTypes: true })\n } catch (err: any) {\n if (err?.code === 'ENOENT') return []\n throw err\n }\n return entries\n .filter((e) => e.isDirectory() && !e.name.startsWith('.'))\n .map((e) => e.name)\n .sort()\n}\n\nexport async function getCurrentProfile(): Promise<string | null> {\n const p = getCurrentPath()\n try {\n const raw = await fs.readFile(p, 'utf8')\n const name = raw.trim()\n return name.length > 0 ? name : null\n } catch (err: any) {\n if (err?.code === 'ENOENT') return null\n throw err\n }\n}\n\nexport async function setCurrentProfile(name: string): Promise<void> {\n validateProfileName(name)\n const dir = getProfileDir(name)\n try {\n const stat = await fs.stat(dir)\n if (!stat.isDirectory()) {\n throw new MxsError({\n code: 'validation.failed',\n message: `profile '${name}' does not exist`,\n })\n }\n } catch (err: any) {\n if (err instanceof MxsError) throw err\n if (err?.code === 'ENOENT') {\n throw new MxsError({\n code: 'validation.failed',\n message: `profile '${name}' does not exist`,\n })\n }\n throw err\n }\n await fs.writeFile(getCurrentPath(), `${name}\\n`, { encoding: 'utf8' })\n}\n\nasync function readJsonIfExists<T>(p: string): Promise<T | null> {\n try {\n const raw = await fs.readFile(p, 'utf8')\n return JSON.parse(raw) as T\n } catch (err: any) {\n if (err?.code === 'ENOENT') return null\n if (err instanceof SyntaxError) {\n throw new MxsError({\n code: 'generic',\n message: `failed to parse ${p}: ${err.message}`,\n })\n }\n throw err\n }\n}\n\nasync function ensureProfileDir(name: string): Promise<void> {\n const dir = getProfileDir(name)\n await fs.mkdir(dir, { recursive: true, mode: 0o700 })\n try {\n await fs.chmod(dir, 0o700)\n } catch {}\n}\n\nexport type ProfileConfigShape = ConfigShape\nexport type ProfileCredentialsShape = CredentialsShape\n\nexport async function readProfileConfig(\n name: string,\n): Promise<ProfileConfigShape> {\n const data = await readJsonIfExists<ProfileConfigShape>(\n getProfileConfigPath(name),\n )\n return data ?? {}\n}\n\nexport async function writeProfileConfig(\n name: string,\n cfg: ProfileConfigShape,\n): Promise<void> {\n await ensureProfileDir(name)\n const p = getProfileConfigPath(name)\n await fs.writeFile(p, JSON.stringify(cfg, null, 2), { mode: 0o644 })\n try {\n await fs.chmod(p, 0o644)\n } catch {}\n}\n\nexport async function readProfileCredentials(\n name: string,\n): Promise<ProfileCredentialsShape | null> {\n const p = getProfileCredentialsPath(name)\n const data = await readJsonIfExists<ProfileCredentialsShape>(p)\n if (data) {\n await enforceProfileCredentialsMode(p)\n }\n return data\n}\n\nexport async function writeProfileCredentials(\n name: string,\n creds: ProfileCredentialsShape,\n): Promise<void> {\n await ensureProfileDir(name)\n const p = getProfileCredentialsPath(name)\n await fs.writeFile(p, JSON.stringify(creds, null, 2), { mode: 0o600 })\n await fs.chmod(p, 0o600)\n}\n\nexport async function removeProfile(name: string): Promise<void> {\n const dir = getProfileDir(name)\n try {\n await fs.stat(dir)\n } catch (err: any) {\n if (err?.code === 'ENOENT') {\n throw new MxsError({\n code: 'resource.not_found',\n message: `profile '${name}' does not exist`,\n })\n }\n throw err\n }\n await fs.rm(dir, { recursive: true, force: true })\n}\n\nexport async function enforceProfileCredentialsMode(\n p: string,\n): Promise<boolean> {\n let stats\n try {\n stats = await fs.stat(p)\n } catch (err: any) {\n if (err?.code === 'ENOENT') return false\n throw err\n }\n const mode = stats.mode & 0o777\n if (mode !== 0o600) {\n process.stderr.write(\n `mxs: credentials file ${p} had mode ${mode.toString(8)}; chmod 600\\n`,\n )\n await fs.chmod(p, 0o600)\n return true\n }\n return false\n}\n","import { promises as fs } from 'node:fs'\nimport path from 'node:path'\n\nimport { getConfigDir } from './config-dir'\nimport { MxsError } from './errors'\nimport {\n getCurrentProfile,\n getProfileConfigPath,\n getProfileCredentialsPath,\n getProfileDir,\n readProfileConfig,\n readProfileCredentials,\n} from './profile'\n\nexport { getConfigDir }\n\nexport interface ConfigShape {\n api_url?: string\n api_base?: string\n auth_base?: string\n api_version?: number\n client_id?: string\n production?: boolean\n}\n\nexport interface CredentialsShape {\n access_token: string\n refresh_token?: string\n expires_at: number\n user?: {\n id?: string\n email?: string\n name?: string\n }\n}\n\nexport interface ResolvedConfig {\n apiUrl: string\n apiBase: string\n authBase: string\n apiVersion: number\n clientId: string\n token?: string\n apiKey?: string\n configPath: string\n credentialsPath: string\n profileName: string | null\n isProduction: boolean\n profileExplicit: boolean\n urlOverridden: boolean\n}\n\nexport interface StoreOverrides {\n apiUrl?: string\n token?: string\n apiKey?: string\n profile?: string\n}\n\nconst DEFAULT_CLIENT_ID = 'mxs-cli'\n\nexport function getLegacyConfigPath(): string {\n return path.join(getConfigDir(), 'config.json')\n}\n\nexport function getLegacyCredentialsPath(): string {\n return path.join(getConfigDir(), 'credentials.json')\n}\n\n/** @deprecated Use getLegacyConfigPath for migration logic only */\nexport function getConfigPath(): string {\n return getLegacyConfigPath()\n}\n\n/** @deprecated Use getLegacyCredentialsPath for migration logic only */\nexport function getCredentialsPath(): string {\n return getLegacyCredentialsPath()\n}\n\nasync function readJsonIfExists<T>(p: string): Promise<T | null> {\n try {\n const raw = await fs.readFile(p, 'utf8')\n return JSON.parse(raw) as T\n } catch (err: any) {\n if (err?.code === 'ENOENT') return null\n if (err instanceof SyntaxError) {\n throw new MxsError({\n code: 'generic',\n message: `failed to parse ${p}: ${err.message}`,\n })\n }\n throw err\n }\n}\n\nexport async function readConfig(): Promise<ConfigShape> {\n const data = await readJsonIfExists<ConfigShape>(getLegacyConfigPath())\n return data ?? {}\n}\n\nexport async function writeConfig(cfg: ConfigShape): Promise<void> {\n const dir = getConfigDir()\n await fs.mkdir(dir, { recursive: true })\n await fs.writeFile(getLegacyConfigPath(), JSON.stringify(cfg, null, 2), {\n mode: 0o644,\n })\n try {\n await fs.chmod(getLegacyConfigPath(), 0o644)\n } catch {}\n}\n\nexport async function readCredentials(): Promise<CredentialsShape | null> {\n const p = getLegacyCredentialsPath()\n const data = await readJsonIfExists<CredentialsShape>(p)\n if (data) {\n await enforceCredentialsMode(p)\n }\n return data\n}\n\nexport async function writeCredentials(cred: CredentialsShape): Promise<void> {\n const dir = getConfigDir()\n await fs.mkdir(dir, { recursive: true })\n const p = getLegacyCredentialsPath()\n await fs.writeFile(p, JSON.stringify(cred, null, 2), { mode: 0o600 })\n await fs.chmod(p, 0o600)\n}\n\nexport async function deleteCredentials(): Promise<void> {\n const p = getLegacyCredentialsPath()\n try {\n await fs.unlink(p)\n } catch (err: any) {\n if (err?.code !== 'ENOENT') throw err\n }\n}\n\nexport async function enforceCredentialsMode(\n p = getLegacyCredentialsPath(),\n): Promise<boolean> {\n let stats\n try {\n stats = await fs.stat(p)\n } catch (err: any) {\n if (err?.code === 'ENOENT') return false\n throw err\n }\n const mode = stats.mode & 0o777\n if (mode !== 0o600) {\n process.stderr.write(\n `mxs: credentials file ${p} had mode ${mode.toString(8)}; chmod 600\\n`,\n )\n await fs.chmod(p, 0o600)\n return true\n }\n return false\n}\n\nexport function normalizeApiUrl(input: string): string {\n let url = input.trim()\n if (!url) {\n throw new MxsError({\n code: 'config.missing.api_url',\n message: 'API URL is empty',\n })\n }\n if (!/^https?:\\/\\//i.test(url)) {\n const isLocal = /^(?:localhost|127\\.0\\.0\\.1|::1)(?::\\d+)?$/i.test(url)\n url = isLocal ? `http://${url}` : `https://${url}`\n }\n return url.replace(/\\/+$/, '')\n}\n\nexport async function resolveConfig(\n overrides: StoreOverrides = {},\n): Promise<ResolvedConfig> {\n const envApiUrl = process.env.MXS_API_URL?.trim()\n const envToken = process.env.MXS_TOKEN?.trim()\n const envApiKey = process.env.MXS_API_KEY?.trim()\n const envProfile = process.env.MXS_PROFILE?.trim()\n\n const urlOverridden = Boolean(overrides.apiUrl || envApiUrl)\n const profileExplicit = Boolean(overrides.profile || envProfile)\n\n const profileName: string | null =\n overrides.profile?.trim() ||\n envProfile ||\n (await getCurrentProfile()) ||\n null\n\n if (profileName && !urlOverridden) {\n try {\n const stat = await fs.stat(getProfileDir(profileName))\n if (!stat.isDirectory()) {\n throw new MxsError({\n code: 'profile.not_found',\n message: `profile '${profileName}' does not exist`,\n hint: 'run `mxs profile ls` to see configured profiles, or `mxs auth login --profile <name>` to create one',\n })\n }\n } catch (err: any) {\n if (err instanceof MxsError) throw err\n if (err?.code === 'ENOENT') {\n throw new MxsError({\n code: 'profile.not_found',\n message: `profile '${profileName}' does not exist`,\n hint: 'run `mxs profile ls` to see configured profiles, or `mxs auth login --profile <name>` to create one',\n })\n }\n throw err\n }\n }\n\n let profileConfig: ConfigShape = {}\n if (profileName) {\n profileConfig = await readProfileConfig(profileName)\n }\n\n const rawApiUrl = overrides.apiUrl || envApiUrl || profileConfig.api_url\n if (!rawApiUrl) {\n throw new MxsError({\n code: 'config.missing.api_url',\n message: 'API URL is not configured',\n hint: 'set MXS_API_URL or pass --api-url <url>, or run `mxs auth login` in an interactive shell',\n })\n }\n const apiUrl = normalizeApiUrl(rawApiUrl)\n const apiVersion = profileConfig.api_version ?? 2\n const apiBase = urlOverridden\n ? `${apiUrl}/api/v${apiVersion}`\n : profileConfig.api_base || `${apiUrl}/api/v${apiVersion}`\n const authBase = urlOverridden\n ? `${apiBase}/auth`\n : profileConfig.auth_base || `${apiBase}/auth`\n\n let token: string | undefined\n if (urlOverridden) {\n token = overrides.token || envToken || undefined\n } else {\n let profileCreds: Awaited<ReturnType<typeof readProfileCredentials>> = null\n if (profileName) {\n profileCreds = await readProfileCredentials(profileName)\n }\n token = overrides.token || envToken || profileCreds?.access_token\n }\n\n const apiKey = overrides.apiKey || envApiKey\n\n const isProduction = urlOverridden\n ? false\n : profileName\n ? Boolean(profileConfig.production)\n : false\n\n return {\n apiUrl,\n apiBase,\n authBase,\n apiVersion,\n clientId: profileConfig.client_id || DEFAULT_CLIENT_ID,\n token,\n apiKey,\n configPath: profileName\n ? getProfileConfigPath(profileName)\n : getLegacyConfigPath(),\n credentialsPath: profileName\n ? getProfileCredentialsPath(profileName)\n : getLegacyCredentialsPath(),\n profileName,\n isProduction,\n profileExplicit,\n urlOverridden,\n }\n}\n"],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import { i as emitSuccess } from "./output-BM7aBFwt.mjs";
2
- import { t as deleteCredentials } from "./config-store-WL7dNMS6.mjs";
3
- //#region src/commands/auth/logout.ts
4
- async function run(_flags, out) {
5
- await deleteCredentials();
6
- emitSuccess({ ok: true }, out);
7
- }
8
- //#endregion
9
- export { run };
10
-
11
- //# sourceMappingURL=logout-Bslt_ZJ4.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logout-Bslt_ZJ4.mjs","names":[],"sources":["../src/commands/auth/logout.ts"],"sourcesContent":["import { deleteCredentials } from '../../core/config-store'\nimport { emitSuccess, type OutputOptions } from '../../core/output'\nimport { type GlobalFlags } from '../internal/shared'\n\nexport async function run(_flags: GlobalFlags, out: OutputOptions) {\n await deleteCredentials()\n emitSuccess({ ok: true }, out)\n}\n"],"mappings":";;;AAIA,eAAsB,IAAI,QAAqB,KAAoB;CACjE,MAAM,kBAAkB;CACxB,YAAY,EAAE,IAAI,KAAK,GAAG,GAAG;AAC/B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"onboarding-C1t1yoay.mjs","names":["NO_TRUNCATION","fastStringTruncatedWidth","stringWidth","z","Y","q","w","R","D","x","O","p","M","V","H","Q","#s","v","#n","#u","#t","#e","#i","#r","it","ot","ut","at","ht","e","X","Lt","J","vt","T","Ft","E","Ht","Ut","Kt","B","qt","wt","bt","Zt","te","h","St","Ct","Jt","Yt","Xt","nt","zt","text"],"sources":["../src/core/api-client.ts","../../../node_modules/.pnpm/fast-string-truncated-width@3.0.3/node_modules/fast-string-truncated-width/dist/utils.js","../../../node_modules/.pnpm/fast-string-truncated-width@3.0.3/node_modules/fast-string-truncated-width/dist/index.js","../../../node_modules/.pnpm/fast-string-width@3.0.2/node_modules/fast-string-width/dist/index.js","../../../node_modules/.pnpm/fast-wrap-ansi@0.2.0/node_modules/fast-wrap-ansi/lib/main.js","../../../node_modules/.pnpm/sisteransi@1.0.5/node_modules/sisteransi/src/index.js","../../../node_modules/.pnpm/@clack+core@1.3.1/node_modules/@clack/core/dist/index.mjs","../../../node_modules/.pnpm/@clack+prompts@1.4.0/node_modules/@clack/prompts/dist/index.mjs","../src/core/onboarding.ts"],"sourcesContent":["import {\n type AuthHttp,\n defaultHttp,\n ensureFreshToken,\n refreshAccessToken,\n} from './auth'\nimport {\n type CredentialsShape,\n readCredentials,\n writeCredentials,\n} from './config-store'\nimport { MxsError } from './errors'\n\nexport interface ApiClientContext {\n apiBase: string\n authBase: string\n clientId: string\n token?: string\n apiKey?: string\n autoRefresh?: boolean\n verbose?: boolean\n http?: AuthHttp\n}\n\nexport interface RequestOptions {\n method?: 'GET' | 'POST' | 'PATCH' | 'PUT' | 'DELETE'\n body?: unknown\n query?: Record<string, unknown>\n headers?: Record<string, string>\n signal?: AbortSignal\n}\n\nexport interface ApiResponse<T> {\n ok: boolean\n status: number\n data: T\n}\n\nexport class ApiClient {\n private http: AuthHttp\n private token?: string\n private refreshed = false\n\n constructor(private ctx: ApiClientContext) {\n this.http = ctx.http ?? defaultHttp()\n this.token = ctx.token\n }\n\n get apiBase(): string {\n return this.ctx.apiBase\n }\n\n async request<T = unknown>(\n path: string,\n options: RequestOptions = {},\n ): Promise<ApiResponse<T>> {\n if (this.ctx.autoRefresh && this.token) {\n await this.tryRefresh()\n }\n const url = buildUrl(this.ctx.apiBase, path, options.query)\n const method = options.method ?? 'GET'\n const headers: Record<string, string> = {\n accept: 'application/json',\n ...options.headers,\n }\n if (this.token) headers.authorization = `Bearer ${this.token}`\n if (this.ctx.apiKey) headers['x-api-key'] = this.ctx.apiKey\n if (options.body !== undefined && !(options.body instanceof FormData)) {\n headers['content-type'] ??= 'application/json'\n }\n const startedAt = Date.now()\n let res = await this.http.fetch(url, {\n method,\n headers,\n body:\n options.body === undefined\n ? undefined\n : options.body instanceof FormData\n ? options.body\n : JSON.stringify(options.body),\n signal: options.signal,\n })\n if (this.ctx.verbose) {\n process.stderr.write(\n `${method} ${url} → ${res.status} (${Date.now() - startedAt}ms)\\n`,\n )\n }\n\n if (res.status === 401 && !this.refreshed && this.token) {\n const refreshed = await this.tryRefresh()\n if (refreshed) {\n this.refreshed = true\n headers.authorization = `Bearer ${refreshed.access_token}`\n this.token = refreshed.access_token\n res = await this.http.fetch(url, {\n method,\n headers,\n body:\n options.body === undefined\n ? undefined\n : options.body instanceof FormData\n ? options.body\n : JSON.stringify(options.body),\n signal: options.signal,\n })\n }\n }\n\n const data = await parseBody<T>(res)\n if (res.ok) return { ok: true, status: res.status, data }\n\n throw toMxsError(res.status, data)\n }\n\n private async tryRefresh(): Promise<CredentialsShape | null> {\n const current = await readCredentials()\n if (!current) return null\n if (this.token && current.access_token !== this.token) return null\n const refreshed = await refreshAccessToken(\n this.ctx.authBase,\n this.ctx.clientId,\n current,\n this.http,\n )\n if (!refreshed) return null\n await writeCredentials(refreshed)\n this.token = refreshed.access_token\n return refreshed\n }\n}\n\nexport async function createApiClient(\n ctx: ApiClientContext,\n): Promise<ApiClient> {\n if (!ctx.token) return new ApiClient(ctx)\n const fresh = await ensureFreshToken(\n ctx.authBase,\n ctx.clientId,\n ctx.http ?? defaultHttp(),\n ).catch(() => null)\n if (fresh) {\n return new ApiClient({ ...ctx, token: fresh.access_token })\n }\n return new ApiClient(ctx)\n}\n\nfunction buildUrl(\n base: string,\n path: string,\n query?: Record<string, unknown>,\n): string {\n const url = new URL(\n path.startsWith('/') ? path.slice(1) : path,\n base.endsWith('/') ? base : `${base}/`,\n )\n if (query) {\n for (const [k, v] of Object.entries(query)) {\n if (v === undefined || v === null) continue\n url.searchParams.set(k, String(v))\n }\n }\n return url.toString()\n}\n\nasync function parseBody<T>(res: Response): Promise<T> {\n const ct = res.headers.get('content-type') ?? ''\n if (ct.includes('application/json')) {\n try {\n return (await res.json()) as T\n } catch {\n return undefined as T\n }\n }\n return (await res.text()) as unknown as T\n}\n\nfunction toMxsError(status: number, body: unknown): MxsError {\n if (status === 401) {\n return new MxsError({\n code: 'auth.expired',\n message: 'authentication required',\n hint: 'run `mxs auth login`',\n details: body,\n })\n }\n if (status === 403) {\n return new MxsError({\n code: 'auth.denied',\n message: 'permission denied',\n details: body,\n })\n }\n if (status === 404) {\n return new MxsError({\n code: 'resource.not_found',\n message: 'resource not found',\n details: body,\n })\n }\n if (status === 422 || status === 400) {\n return new MxsError({\n code: 'validation.failed',\n message: extractMessage(body) ?? 'validation failed',\n details: body,\n })\n }\n if (status >= 500) {\n return new MxsError({\n code: 'server.error',\n message: extractMessage(body) ?? `server error (${status})`,\n details: body,\n })\n }\n return new MxsError({\n code: 'generic',\n message: extractMessage(body) ?? `request failed (${status})`,\n details: body,\n })\n}\n\nfunction extractMessage(body: unknown): string | null {\n if (!body || typeof body !== 'object') return null\n const msg = (body as Record<string, unknown>).message\n if (typeof msg === 'string') return msg\n if (Array.isArray(msg) && typeof msg[0] === 'string') return msg.join('; ')\n return null\n}\n","/* MAIN */\nconst getCodePointsLength = (() => {\n const SURROGATE_PAIR_RE = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n return (input) => {\n let surrogatePairsNr = 0;\n SURROGATE_PAIR_RE.lastIndex = 0;\n while (SURROGATE_PAIR_RE.test(input)) {\n surrogatePairsNr += 1;\n }\n return input.length - surrogatePairsNr;\n };\n})();\nconst isFullWidth = (x) => {\n return x === 0x3000 || x >= 0xFF01 && x <= 0xFF60 || x >= 0xFFE0 && x <= 0xFFE6;\n};\nconst isWideNotCJKTNotEmoji = (x) => {\n return x === 0x231B || x === 0x2329 || x >= 0x2FF0 && x <= 0x2FFF || x >= 0x3001 && x <= 0x303E || x >= 0x3099 && x <= 0x30FF || x >= 0x3105 && x <= 0x312F || x >= 0x3131 && x <= 0x318E || x >= 0x3190 && x <= 0x31E3 || x >= 0x31EF && x <= 0x321E || x >= 0x3220 && x <= 0x3247 || x >= 0x3250 && x <= 0x4DBF || x >= 0xFE10 && x <= 0xFE19 || x >= 0xFE30 && x <= 0xFE52 || x >= 0xFE54 && x <= 0xFE66 || x >= 0xFE68 && x <= 0xFE6B || x >= 0x1F200 && x <= 0x1F202 || x >= 0x1F210 && x <= 0x1F23B || x >= 0x1F240 && x <= 0x1F248 || x >= 0x20000 && x <= 0x2FFFD || x >= 0x30000 && x <= 0x3FFFD;\n};\n/* EXPORT */\nexport { getCodePointsLength, isFullWidth, isWideNotCJKTNotEmoji };\n","/* IMPORT */\nimport { getCodePointsLength, isFullWidth, isWideNotCJKTNotEmoji } from './utils.js';\n/* HELPERS */\nconst ANSI_RE = /[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\\u001b\\]8;[^;]*;.*?(?:\\u0007|\\u001b\\u005c)/y;\nconst CONTROL_RE = /[\\x00-\\x08\\x0A-\\x1F\\x7F-\\x9F]{1,1000}/y;\nconst CJKT_WIDE_RE = /(?:(?![\\uFF61-\\uFF9F\\uFF00-\\uFFEF])[\\p{Script=Han}\\p{Script=Hiragana}\\p{Script=Katakana}\\p{Script=Hangul}\\p{Script=Tangut}]){1,1000}/yu;\nconst TAB_RE = /\\t{1,1000}/y;\nconst EMOJI_RE = /[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation}|\\p{Emoji}\\uFE0F\\u20E3?))*/yu;\nconst LATIN_RE = /(?:[\\x20-\\x7E\\xA0-\\xFF](?!\\uFE0F)){1,1000}/y;\nconst MODIFIER_RE = /\\p{M}+/gu;\nconst NO_TRUNCATION = { limit: Infinity, ellipsis: '' };\n/* MAIN */\nconst getStringTruncatedWidth = (input, truncationOptions = {}, widthOptions = {}) => {\n /* CONSTANTS */\n const LIMIT = truncationOptions.limit ?? Infinity;\n const ELLIPSIS = truncationOptions.ellipsis ?? '';\n const ELLIPSIS_WIDTH = truncationOptions?.ellipsisWidth ?? (ELLIPSIS ? getStringTruncatedWidth(ELLIPSIS, NO_TRUNCATION, widthOptions).width : 0);\n const ANSI_WIDTH = 0;\n const CONTROL_WIDTH = widthOptions.controlWidth ?? 0;\n const TAB_WIDTH = widthOptions.tabWidth ?? 8;\n const EMOJI_WIDTH = widthOptions.emojiWidth ?? 2;\n const FULL_WIDTH_WIDTH = 2;\n const REGULAR_WIDTH = widthOptions.regularWidth ?? 1;\n const WIDE_WIDTH = widthOptions.wideWidth ?? FULL_WIDTH_WIDTH;\n const PARSE_BLOCKS = [\n [LATIN_RE, REGULAR_WIDTH],\n [ANSI_RE, ANSI_WIDTH],\n [CONTROL_RE, CONTROL_WIDTH],\n [TAB_RE, TAB_WIDTH],\n [EMOJI_RE, EMOJI_WIDTH],\n [CJKT_WIDE_RE, WIDE_WIDTH],\n ];\n /* STATE */\n let indexPrev = 0;\n let index = 0;\n let length = input.length;\n let lengthExtra = 0;\n let truncationEnabled = false;\n let truncationIndex = length;\n let truncationLimit = Math.max(0, LIMIT - ELLIPSIS_WIDTH);\n let unmatchedStart = 0;\n let unmatchedEnd = 0;\n let width = 0;\n let widthExtra = 0;\n /* PARSE LOOP */\n outer: while (true) {\n /* UNMATCHED */\n if ((unmatchedEnd > unmatchedStart) || (index >= length && index > indexPrev)) {\n const unmatched = input.slice(unmatchedStart, unmatchedEnd) || input.slice(indexPrev, index);\n lengthExtra = 0;\n for (const char of unmatched.replaceAll(MODIFIER_RE, '')) {\n const codePoint = char.codePointAt(0) || 0;\n if (isFullWidth(codePoint)) {\n widthExtra = FULL_WIDTH_WIDTH;\n }\n else if (isWideNotCJKTNotEmoji(codePoint)) {\n widthExtra = WIDE_WIDTH;\n }\n else {\n widthExtra = REGULAR_WIDTH;\n }\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, Math.max(unmatchedStart, indexPrev) + lengthExtra);\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break outer;\n }\n lengthExtra += char.length;\n width += widthExtra;\n }\n unmatchedStart = unmatchedEnd = 0;\n }\n /* EXITING */\n if (index >= length) {\n break outer;\n }\n /* PARSE BLOCKS */\n for (let i = 0, l = PARSE_BLOCKS.length; i < l; i++) {\n const [BLOCK_RE, BLOCK_WIDTH] = PARSE_BLOCKS[i];\n BLOCK_RE.lastIndex = index;\n if (BLOCK_RE.test(input)) {\n lengthExtra = BLOCK_RE === CJKT_WIDE_RE ? getCodePointsLength(input.slice(index, BLOCK_RE.lastIndex)) : BLOCK_RE === EMOJI_RE ? 1 : BLOCK_RE.lastIndex - index;\n widthExtra = lengthExtra * BLOCK_WIDTH;\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, index + Math.floor((truncationLimit - width) / BLOCK_WIDTH));\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break outer;\n }\n width += widthExtra;\n unmatchedStart = indexPrev;\n unmatchedEnd = index;\n index = indexPrev = BLOCK_RE.lastIndex;\n continue outer;\n }\n }\n /* UNMATCHED INDEX */\n index += 1;\n }\n /* RETURN */\n return {\n width: truncationEnabled ? truncationLimit : width,\n index: truncationEnabled ? truncationIndex : length,\n truncated: truncationEnabled,\n ellipsed: truncationEnabled && LIMIT >= ELLIPSIS_WIDTH\n };\n};\n/* EXPORT */\nexport default getStringTruncatedWidth;\n","/* IMPORT */\nimport fastStringTruncatedWidth from 'fast-string-truncated-width';\n/* HELPERS */\nconst NO_TRUNCATION = {\n limit: Infinity,\n ellipsis: '',\n ellipsisWidth: 0,\n};\n/* MAIN */\nconst fastStringWidth = (input, options = {}) => {\n return fastStringTruncatedWidth(input, NO_TRUNCATION, options).width;\n};\n/* EXPORT */\nexport default fastStringWidth;\n","import stringWidth from 'fast-string-width';\nconst ESC = '\\x1B';\nconst CSI = '\\x9B';\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\nconst GROUP_REGEX = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`, 'y');\nconst getClosingCode = (openingCode) => {\n if (openingCode >= 30 && openingCode <= 37)\n return 39;\n if (openingCode >= 90 && openingCode <= 97)\n return 39;\n if (openingCode >= 40 && openingCode <= 47)\n return 49;\n if (openingCode >= 100 && openingCode <= 107)\n return 49;\n if (openingCode === 1 || openingCode === 2)\n return 22;\n if (openingCode === 3)\n return 23;\n if (openingCode === 4)\n return 24;\n if (openingCode === 7)\n return 27;\n if (openingCode === 8)\n return 28;\n if (openingCode === 9)\n return 29;\n if (openingCode === 0)\n return 0;\n return undefined;\n};\nconst wrapAnsiCode = (code) => `${ESC}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = (url) => `${ESC}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;\nconst wrapWord = (rows, word, columns) => {\n const characters = word[Symbol.iterator]();\n let isInsideEscape = false;\n let isInsideLinkEscape = false;\n let lastRow = rows.at(-1);\n let visible = lastRow === undefined ? 0 : stringWidth(lastRow);\n let currentCharacter = characters.next();\n let nextCharacter = characters.next();\n let rawCharacterIndex = 0;\n while (!currentCharacter.done) {\n const character = currentCharacter.value;\n const characterLength = stringWidth(character);\n if (visible + characterLength <= columns) {\n rows[rows.length - 1] += character;\n }\n else {\n rows.push(character);\n visible = 0;\n }\n if (character === ESC || character === CSI) {\n isInsideEscape = true;\n isInsideLinkEscape = word.startsWith(ANSI_ESCAPE_LINK, rawCharacterIndex + 1);\n }\n if (isInsideEscape) {\n if (isInsideLinkEscape) {\n if (character === ANSI_ESCAPE_BELL) {\n isInsideEscape = false;\n isInsideLinkEscape = false;\n }\n }\n else if (character === ANSI_SGR_TERMINATOR) {\n isInsideEscape = false;\n }\n }\n else {\n visible += characterLength;\n if (visible === columns && !nextCharacter.done) {\n rows.push('');\n visible = 0;\n }\n }\n currentCharacter = nextCharacter;\n nextCharacter = characters.next();\n rawCharacterIndex += character.length;\n }\n lastRow = rows.at(-1);\n if (!visible && lastRow !== undefined && lastRow.length && rows.length > 1) {\n rows[rows.length - 2] += rows.pop();\n }\n};\nconst stringVisibleTrimSpacesRight = (string) => {\n const words = string.split(' ');\n let last = words.length;\n while (last) {\n if (stringWidth(words[last - 1])) {\n break;\n }\n last--;\n }\n if (last === words.length) {\n return string;\n }\n return words.slice(0, last).join(' ') + words.slice(last).join('');\n};\nconst exec = (string, columns, options = {}) => {\n if (options.trim !== false && string.trim() === '') {\n return '';\n }\n let returnValue = '';\n let escapeCode;\n let escapeUrl;\n const words = string.split(' ');\n let rows = [''];\n let rowLength = 0;\n for (let index = 0; index < words.length; index++) {\n const word = words[index];\n if (options.trim !== false) {\n const row = rows.at(-1) ?? '';\n const trimmed = row.trimStart();\n if (row.length !== trimmed.length) {\n rows[rows.length - 1] = trimmed;\n rowLength = stringWidth(trimmed);\n }\n }\n if (index !== 0) {\n if (rowLength >= columns &&\n (options.wordWrap === false || options.trim === false)) {\n rows.push('');\n rowLength = 0;\n }\n if (rowLength || options.trim === false) {\n rows[rows.length - 1] += ' ';\n rowLength++;\n }\n }\n const wordLength = stringWidth(word);\n if (options.hard && wordLength > columns) {\n const remainingColumns = columns - rowLength;\n const breaksStartingThisLine = 1 + Math.floor((wordLength - remainingColumns - 1) / columns);\n const breaksStartingNextLine = Math.floor((wordLength - 1) / columns);\n if (breaksStartingNextLine < breaksStartingThisLine) {\n rows.push('');\n }\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n if (rowLength + wordLength > columns && rowLength && wordLength) {\n if (options.wordWrap === false && rowLength < columns) {\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n rows.push('');\n rowLength = 0;\n }\n if (rowLength + wordLength > columns && options.wordWrap === false) {\n wrapWord(rows, word, columns);\n rowLength = stringWidth(rows.at(-1) ?? '');\n continue;\n }\n rows[rows.length - 1] += word;\n rowLength += wordLength;\n }\n if (options.trim !== false) {\n rows = rows.map((row) => stringVisibleTrimSpacesRight(row));\n }\n const preString = rows.join('\\n');\n let inSurrogate = false;\n for (let i = 0; i < preString.length; i++) {\n const character = preString[i];\n returnValue += character;\n if (!inSurrogate) {\n inSurrogate = character >= '\\ud800' && character <= '\\udbff';\n if (inSurrogate) {\n continue;\n }\n }\n else {\n inSurrogate = false;\n }\n if (character === ESC || character === CSI) {\n GROUP_REGEX.lastIndex = i + 1;\n const groupsResult = GROUP_REGEX.exec(preString);\n const groups = groupsResult?.groups;\n if (groups?.code !== undefined) {\n const code = Number.parseFloat(groups.code);\n escapeCode = code === END_CODE ? undefined : code;\n }\n else if (groups?.uri !== undefined) {\n escapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n }\n }\n if (preString[i + 1] === '\\n') {\n if (escapeUrl) {\n returnValue += wrapAnsiHyperlink('');\n }\n const closingCode = escapeCode ? getClosingCode(escapeCode) : undefined;\n if (escapeCode && closingCode) {\n returnValue += wrapAnsiCode(closingCode);\n }\n }\n else if (character === '\\n') {\n if (escapeCode && getClosingCode(escapeCode)) {\n returnValue += wrapAnsiCode(escapeCode);\n }\n if (escapeUrl) {\n returnValue += wrapAnsiHyperlink(escapeUrl);\n }\n }\n }\n return returnValue;\n};\nconst CRLF_OR_LF = /\\r?\\n/;\nexport function wrapAnsi(string, columns, options) {\n return String(string)\n .normalize()\n .split(CRLF_OR_LF)\n .map((line) => exec(line, columns, options))\n .join('\\n');\n}\n//# sourceMappingURL=main.js.map","'use strict';\n\nconst ESC = '\\x1B';\nconst CSI = `${ESC}[`;\nconst beep = '\\u0007';\n\nconst cursor = {\n to(x, y) {\n if (!y) return `${CSI}${x + 1}G`;\n return `${CSI}${y + 1};${x + 1}H`;\n },\n move(x, y) {\n let ret = '';\n\n if (x < 0) ret += `${CSI}${-x}D`;\n else if (x > 0) ret += `${CSI}${x}C`;\n\n if (y < 0) ret += `${CSI}${-y}A`;\n else if (y > 0) ret += `${CSI}${y}B`;\n\n return ret;\n },\n up: (count = 1) => `${CSI}${count}A`,\n down: (count = 1) => `${CSI}${count}B`,\n forward: (count = 1) => `${CSI}${count}C`,\n backward: (count = 1) => `${CSI}${count}D`,\n nextLine: (count = 1) => `${CSI}E`.repeat(count),\n prevLine: (count = 1) => `${CSI}F`.repeat(count),\n left: `${CSI}G`,\n hide: `${CSI}?25l`,\n show: `${CSI}?25h`,\n save: `${ESC}7`,\n restore: `${ESC}8`\n}\n\nconst scroll = {\n up: (count = 1) => `${CSI}S`.repeat(count),\n down: (count = 1) => `${CSI}T`.repeat(count)\n}\n\nconst erase = {\n screen: `${CSI}2J`,\n up: (count = 1) => `${CSI}1J`.repeat(count),\n down: (count = 1) => `${CSI}J`.repeat(count),\n line: `${CSI}2K`,\n lineEnd: `${CSI}K`,\n lineStart: `${CSI}1K`,\n lines(count) {\n let clear = '';\n for (let i = 0; i < count; i++)\n clear += this.line + (i < count - 1 ? cursor.up() : '');\n if (count)\n clear += cursor.left;\n return clear;\n }\n}\n\nmodule.exports = { cursor, scroll, erase, beep };\n","import{styleText as v}from\"node:util\";import{stdout as x,stdin as D}from\"node:process\";import*as b from\"node:readline\";import E from\"node:readline\";import{wrapAnsi as M}from\"fast-wrap-ansi\";import{cursor as p,erase as V}from\"sisteransi\";import{ReadStream as O}from\"node:tty\";function f(r,t,s){if(!s.some(o=>!o.disabled))return r;const e=r+t,i=Math.max(s.length-1,0),n=e<0?i:e>i?0:e;return s[n].disabled?f(n,t<0?-1:1,s):n}function I(r,t,s,e){const i=e.split(`\n`);let n=0,o=r;for(const a of i){if(o<=a.length)break;o-=a.length+1,n++}for(n=Math.max(0,Math.min(i.length-1,n+s)),o=Math.min(o,i[n].length)+t;o<0&&n>0;)n--,o+=i[n].length+1;for(;o>i[n].length&&n<i.length-1;)o-=i[n].length+1,n++;o=Math.max(0,Math.min(i[n].length,o));let u=0;for(let a=0;a<n;a++)u+=i[a].length+1;return u+o}const G=[\"up\",\"down\",\"left\",\"right\",\"space\",\"enter\",\"cancel\"],K=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],h={actions:new Set(G),aliases:new Map([[\"k\",\"up\"],[\"j\",\"down\"],[\"h\",\"left\"],[\"l\",\"right\"],[\"\u0003\",\"cancel\"],[\"escape\",\"cancel\"]]),messages:{cancel:\"Canceled\",error:\"Something went wrong\"},withGuide:!0,date:{monthNames:[...K],messages:{required:\"Please enter a valid date\",invalidMonth:\"There are only 12 months in a year\",invalidDay:(r,t)=>`There are only ${r} days in ${t}`,afterMin:r=>`Date must be on or after ${r.toISOString().slice(0,10)}`,beforeMax:r=>`Date must be on or before ${r.toISOString().slice(0,10)}`}}};function j(r){if(r.aliases!==void 0){const t=r.aliases;for(const s in t){if(!Object.hasOwn(t,s))continue;const e=t[s];h.actions.has(e)&&(h.aliases.has(s)||h.aliases.set(s,e))}}if(r.messages!==void 0){const t=r.messages;t.cancel!==void 0&&(h.messages.cancel=t.cancel),t.error!==void 0&&(h.messages.error=t.error)}if(r.withGuide!==void 0&&(h.withGuide=r.withGuide!==!1),r.date!==void 0){const t=r.date;t.monthNames!==void 0&&(h.date.monthNames=[...t.monthNames]),t.messages!==void 0&&(t.messages.required!==void 0&&(h.date.messages.required=t.messages.required),t.messages.invalidMonth!==void 0&&(h.date.messages.invalidMonth=t.messages.invalidMonth),t.messages.invalidDay!==void 0&&(h.date.messages.invalidDay=t.messages.invalidDay),t.messages.afterMin!==void 0&&(h.date.messages.afterMin=t.messages.afterMin),t.messages.beforeMax!==void 0&&(h.date.messages.beforeMax=t.messages.beforeMax))}}function C(r,t){if(typeof r==\"string\")return h.aliases.get(r)===t;for(const s of r)if(s!==void 0&&C(s,t))return!0;return!1}function z(r,t){if(r===t)return;const s=r.split(`\n`),e=t.split(`\n`),i=Math.max(s.length,e.length),n=[];for(let o=0;o<i;o++)s[o]!==e[o]&&n.push(o);return{lines:n,numLinesBefore:s.length,numLinesAfter:e.length,numLines:i}}const Y=globalThis.process.platform.startsWith(\"win\"),k=Symbol(\"clack:cancel\");function q(r){return r===k}function w(r,t){const s=r;s.isTTY&&s.setRawMode(t)}function R({input:r=D,output:t=x,overwrite:s=!0,hideCursor:e=!0}={}){const i=b.createInterface({input:r,output:t,prompt:\"\",tabSize:1});b.emitKeypressEvents(r,i),r instanceof O&&r.isTTY&&r.setRawMode(!0);const n=(o,{name:u,sequence:a})=>{const l=String(o);if(C([l,u,a],\"cancel\")){e&&t.write(p.show),process.exit(0);return}if(!s)return;const c=u===\"return\"?0:-1,y=u===\"return\"?-1:0;b.moveCursor(t,c,y,()=>{b.clearLine(t,1,()=>{r.once(\"keypress\",n)})})};return e&&t.write(p.hide),r.once(\"keypress\",n),()=>{r.off(\"keypress\",n),e&&t.write(p.show),r instanceof O&&r.isTTY&&!Y&&r.setRawMode(!1),i.terminal=!1,i.close()}}const A=r=>\"columns\"in r&&typeof r.columns==\"number\"?r.columns:80,L=r=>\"rows\"in r&&typeof r.rows==\"number\"?r.rows:20;function W(r,t,s,e=s,i=s,n){const o=A(r??x);return M(t,o-s.length,{hard:!0,trim:!1}).split(`\n`).map((u,a,l)=>{const c=n?n(u,a):u;return a===0?`${e}${c}`:a===l.length-1?`${i}${c}`:`${s}${c}`}).join(`\n`)}let m=class{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame=\"\";_subscribers=new Map;_cursor=0;state=\"initial\";error=\"\";value;userInput=\"\";constructor(t,s=!0){const{input:e=D,output:i=x,render:n,signal:o,...u}=t;this.opts=u,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=n.bind(this),this._track=s,this._abortSignal=o,this.input=e,this.output=i}unsubscribe(){this._subscribers.clear()}setSubscriber(t,s){const e=this._subscribers.get(t)??[];e.push(s),this._subscribers.set(t,e)}on(t,s){this.setSubscriber(t,{cb:s})}once(t,s){this.setSubscriber(t,{cb:s,once:!0})}emit(t,...s){const e=this._subscribers.get(t)??[],i=[];for(const n of e)n.cb(...s),n.once&&i.push(()=>e.splice(e.indexOf(n),1));for(const n of i)n()}prompt(){return new Promise(t=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state=\"cancel\",this.close(),t(k);this._abortSignal.addEventListener(\"abort\",()=>{this.state=\"cancel\",this.close()},{once:!0})}this.rl=E.createInterface({input:this.input,tabSize:2,prompt:\"\",escapeCodeTimeout:50,terminal:!0}),this.rl.prompt(),this.opts.initialUserInput!==void 0&&this._setUserInput(this.opts.initialUserInput,!0),this.input.on(\"keypress\",this.onKeypress),w(this.input,!0),this.output.on(\"resize\",this.render),this.render(),this.once(\"submit\",()=>{this.output.write(p.show),this.output.off(\"resize\",this.render),w(this.input,!1),t(this.value)}),this.once(\"cancel\",()=>{this.output.write(p.show),this.output.off(\"resize\",this.render),w(this.input,!1),t(k)})})}_isActionKey(t,s){return t===\"\t\"}_shouldSubmit(t,s){return!0}_setValue(t){this.value=t,this.emit(\"value\",this.value)}_setUserInput(t,s){this.userInput=t??\"\",this.emit(\"userInput\",this.userInput),s&&this._track&&this.rl&&(this.rl.write(this.userInput),this._cursor=this.rl.cursor)}_clearUserInput(){this.rl?.write(null,{ctrl:!0,name:\"u\"}),this._setUserInput(\"\")}onKeypress(t,s){if(this._track&&s.name!==\"return\"&&(s.name&&this._isActionKey(t,s)&&this.rl?.write(null,{ctrl:!0,name:\"h\"}),this._cursor=this.rl?.cursor??0,this._setUserInput(this.rl?.line)),this.state===\"error\"&&(this.state=\"active\"),s?.name&&(!this._track&&h.aliases.has(s.name)&&this.emit(\"cursor\",h.aliases.get(s.name)),h.actions.has(s.name)&&this.emit(\"cursor\",s.name)),t&&(t.toLowerCase()===\"y\"||t.toLowerCase()===\"n\")&&this.emit(\"confirm\",t.toLowerCase()===\"y\"),this.emit(\"key\",t?.toLowerCase(),s),s?.name===\"return\"&&this._shouldSubmit(t,s)){if(this.opts.validate){const e=this.opts.validate(this.value);e&&(this.error=e instanceof Error?e.message:e,this.state=\"error\",this.rl?.write(this.userInput))}this.state!==\"error\"&&(this.state=\"submit\")}C([t,s?.name,s?.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(`\n`),w(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){const t=M(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`\n`).length-1;this.output.write(p.move(-999,t*-1))}render(){const t=M(this._render(this)??\"\",process.stdout.columns,{hard:!0,trim:!1});if(t!==this._prevFrame){if(this.state===\"initial\")this.output.write(p.hide);else{const s=z(this._prevFrame,t),e=L(this.output);if(this.restoreCursor(),s){const i=Math.max(0,s.numLinesAfter-e),n=Math.max(0,s.numLinesBefore-e);let o=s.lines.find(u=>u>=i);if(o===void 0){this._prevFrame=t;return}if(s.lines.length===1){this.output.write(p.move(0,o-n)),this.output.write(V.lines(1));const u=t.split(`\n`);this.output.write(u[o]),this._prevFrame=t,this.output.write(p.move(0,u.length-o-1));return}else if(s.lines.length>1){if(i<n)o=i;else{const a=o-n;a>0&&this.output.write(p.move(0,a))}this.output.write(V.down());const u=t.split(`\n`).slice(o);this.output.write(u.join(`\n`)),this._prevFrame=t;return}}this.output.write(V.down())}this.output.write(t),this.state===\"initial\"&&(this.state=\"active\"),this._prevFrame=t}}};function B(r,t){if(r===void 0||t.length===0)return 0;const s=t.findIndex(e=>e.value===r);return s!==-1?s:0}function J(r,t){return(t.label??String(t.value)).toLowerCase().includes(r.toLowerCase())}function H(r,t){if(t)return r?t:t[0]}let Q=class extends m{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#s=0;#r=\"\";#t;#n;#u;get cursor(){return this.#s}get userInputWithCursor(){if(!this.userInput)return v([\"inverse\",\"hidden\"],\"_\");if(this._cursor>=this.userInput.length)return`${this.userInput}\\u2588`;const t=this.userInput.slice(0,this._cursor),[s,...e]=this.userInput.slice(this._cursor);return`${t}${v(\"inverse\",s)}${e.join(\"\")}`}get options(){return typeof this.#n==\"function\"?this.#n():this.#n}constructor(t){super(t),this.#n=t.options,this.#u=t.placeholder;const s=this.options;this.filteredOptions=[...s],this.multiple=t.multiple===!0,this.#t=typeof t.options==\"function\"?t.filter:t.filter??J;let e;if(t.initialValue&&Array.isArray(t.initialValue)?this.multiple?e=t.initialValue:e=t.initialValue.slice(0,1):!this.multiple&&this.options.length>0&&(e=[this.options[0].value]),e)for(const i of e){const n=s.findIndex(o=>o.value===i);n!==-1&&(this.toggleSelected(i),this.#s=n)}this.focusedValue=this.options[this.#s]?.value,this.on(\"key\",(i,n)=>this.#e(i,n)),this.on(\"userInput\",i=>this.#i(i))}_isActionKey(t,s){return t===\"\t\"||this.multiple&&this.isNavigating&&s.name===\"space\"&&t!==void 0&&t!==\"\"}#e(t,s){const e=s.name===\"up\",i=s.name===\"down\",n=s.name===\"return\",o=this.userInput===\"\"||this.userInput===\"\t\",u=this.#u,a=this.options,l=u!==void 0&&u!==\"\"&&a.some(c=>!c.disabled&&(this.#t?this.#t(u,c):!0));if(s.name===\"tab\"&&o&&l){this.userInput===\"\t\"&&this._clearUserInput(),this._setUserInput(u,!0),this.isNavigating=!1;return}e||i?(this.#s=f(this.#s,e?-1:1,this.filteredOptions),this.focusedValue=this.filteredOptions[this.#s]?.value,this.multiple||(this.selectedValues=[this.focusedValue]),this.isNavigating=!0):n?this.value=H(this.multiple,this.selectedValues):this.multiple?this.focusedValue!==void 0&&(s.name===\"tab\"||this.isNavigating&&s.name===\"space\")?this.toggleSelected(this.focusedValue):this.isNavigating=!1:(this.focusedValue&&(this.selectedValues=[this.focusedValue]),this.isNavigating=!1)}deselectAll(){this.selectedValues=[]}toggleSelected(t){this.filteredOptions.length!==0&&(this.multiple?this.selectedValues.includes(t)?this.selectedValues=this.selectedValues.filter(s=>s!==t):this.selectedValues=[...this.selectedValues,t]:this.selectedValues=[t])}#i(t){if(t!==this.#r){this.#r=t;const s=this.options;t&&this.#t?this.filteredOptions=s.filter(n=>this.#t?.(t,n)):this.filteredOptions=[...s];const e=B(this.focusedValue,this.filteredOptions);this.#s=f(e,0,this.filteredOptions);const i=this.filteredOptions[this.#s];i&&!i.disabled?this.focusedValue=i.value:this.focusedValue=void 0,this.multiple||(this.focusedValue!==void 0?this.toggleSelected(this.focusedValue):this.deselectAll())}}};class X extends m{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(t){super(t,!1),this.value=!!t.initialValue,this.on(\"userInput\",()=>{this.value=this._value}),this.on(\"confirm\",s=>{this.output.write(p.move(0,-1)),this.value=s,this.state=\"submit\",this.close()}),this.on(\"cursor\",()=>{this.value=!this.value})}}const Z={Y:{type:\"year\",len:4},M:{type:\"month\",len:2},D:{type:\"day\",len:2}};function P(r){return[...r].map(t=>Z[t])}function tt(r){const t=new Intl.DateTimeFormat(r,{year:\"numeric\",month:\"2-digit\",day:\"2-digit\"}).formatToParts(new Date(2e3,0,15)),s=[];let e=\"/\";for(const i of t)i.type===\"literal\"?e=i.value.trim()||i.value:(i.type===\"year\"||i.type===\"month\"||i.type===\"day\")&&s.push({type:i.type,len:i.type===\"year\"?4:2});return{segments:s,separator:e}}function $(r){return Number.parseInt((r||\"0\").replace(/_/g,\"0\"),10)||0}function S(r){return{year:$(r.year),month:$(r.month),day:$(r.day)}}function U(r,t){return new Date(r||2001,t||1,0).getDate()}function F(r){const{year:t,month:s,day:e}=S(r);if(!t||t<0||t>9999||!s||s<1||s>12||!e||e<1)return;const i=new Date(Date.UTC(t,s-1,e));if(!(i.getUTCFullYear()!==t||i.getUTCMonth()!==s-1||i.getUTCDate()!==e))return{year:t,month:s,day:e}}function N(r){const t=F(r);return t?new Date(Date.UTC(t.year,t.month-1,t.day)):void 0}function st(r,t,s,e){const i=s?{year:s.getUTCFullYear(),month:s.getUTCMonth()+1,day:s.getUTCDate()}:null,n=e?{year:e.getUTCFullYear(),month:e.getUTCMonth()+1,day:e.getUTCDate()}:null;return r===\"year\"?{min:i?.year??1,max:n?.year??9999}:r===\"month\"?{min:i&&t.year===i.year?i.month:1,max:n&&t.year===n.year?n.month:12}:{min:i&&t.year===i.year&&t.month===i.month?i.day:1,max:n&&t.year===n.year&&t.month===n.month?n.day:U(t.year,t.month)}}class et extends m{#s;#r;#t;#n;#u;#e={segmentIndex:0,positionInSegment:0};#i=!0;#o=null;inlineError=\"\";get segmentCursor(){return{...this.#e}}get segmentValues(){return{...this.#t}}get segments(){return this.#s}get separator(){return this.#r}get formattedValue(){return this.#c(this.#t)}#c(t){return this.#s.map(s=>t[s.type]).join(this.#r)}#a(){this._setUserInput(this.#c(this.#t)),this._setValue(N(this.#t)??void 0)}constructor(t){const s=t.format?{segments:P(t.format),separator:t.separator??\"/\"}:tt(t.locale),e=t.separator??s.separator,i=t.format?P(t.format):s.segments,n=t.initialValue??t.defaultValue,o=n?{year:String(n.getUTCFullYear()).padStart(4,\"0\"),month:String(n.getUTCMonth()+1).padStart(2,\"0\"),day:String(n.getUTCDate()).padStart(2,\"0\")}:{year:\"____\",month:\"__\",day:\"__\"},u=i.map(a=>o[a.type]).join(e);super({...t,initialUserInput:u},!1),this.#s=i,this.#r=e,this.#t=o,this.#n=t.minDate,this.#u=t.maxDate,this.#a(),this.on(\"cursor\",a=>this.#d(a)),this.on(\"key\",(a,l)=>this.#f(a,l)),this.on(\"finalize\",()=>this.#g(t))}#h(){const t=Math.max(0,Math.min(this.#e.segmentIndex,this.#s.length-1)),s=this.#s[t];if(s)return this.#e.positionInSegment=Math.max(0,Math.min(this.#e.positionInSegment,s.len-1)),{segment:s,index:t}}#l(t){this.inlineError=\"\",this.#o=null;const s=this.#h();s&&(this.#e.segmentIndex=Math.max(0,Math.min(this.#s.length-1,s.index+t)),this.#e.positionInSegment=0,this.#i=!0)}#p(t){const s=this.#h();if(!s)return;const{segment:e}=s,i=this.#t[e.type],n=!i||i.replace(/_/g,\"\")===\"\",o=Number.parseInt((i||\"0\").replace(/_/g,\"0\"),10)||0,u=st(e.type,S(this.#t),this.#n,this.#u);let a;n?a=t===1?u.min:u.max:a=Math.max(Math.min(u.max,o+t),u.min),this.#t={...this.#t,[e.type]:a.toString().padStart(e.len,\"0\")},this.#i=!0,this.#o=null,this.#a()}#d(t){if(t)switch(t){case\"right\":return this.#l(1);case\"left\":return this.#l(-1);case\"up\":return this.#p(1);case\"down\":return this.#p(-1)}}#f(t,s){if(s?.name===\"backspace\"||s?.sequence===\"\\x7F\"||s?.sequence===\"\\b\"||t===\"\\x7F\"||t===\"\\b\"){this.inlineError=\"\";const e=this.#h();if(!e)return;if(!this.#t[e.segment.type].replace(/_/g,\"\")){this.#l(-1);return}this.#t[e.segment.type]=\"_\".repeat(e.segment.len),this.#i=!0,this.#e.positionInSegment=0,this.#a();return}if(s?.name===\"tab\"){this.inlineError=\"\";const e=this.#h();if(!e)return;const i=s.shift?-1:1,n=e.index+i;n>=0&&n<this.#s.length&&(this.#e.segmentIndex=n,this.#e.positionInSegment=0,this.#i=!0);return}if(t&&/^[0-9]$/.test(t)){const e=this.#h();if(!e)return;const{segment:i}=e,n=!this.#t[i.type].replace(/_/g,\"\");if(this.#i&&this.#o!==null&&!n){const d=this.#o+t,g={...this.#t,[i.type]:d},_=this.#m(g,i);if(_){this.inlineError=_,this.#o=null,this.#i=!1;return}this.inlineError=\"\",this.#t[i.type]=d,this.#o=null,this.#i=!1,this.#a(),e.index<this.#s.length-1&&(this.#e.segmentIndex=e.index+1,this.#e.positionInSegment=0,this.#i=!0);return}this.#i&&!n&&(this.#t[i.type]=\"_\".repeat(i.len),this.#e.positionInSegment=0),this.#i=!1,this.#o=null;const o=this.#t[i.type],u=o.indexOf(\"_\"),a=u>=0?u:Math.min(this.#e.positionInSegment,i.len-1);if(a<0||a>=i.len)return;let l=o.slice(0,a)+t+o.slice(a+1),c=!1;if(a===0&&o===\"__\"&&(i.type===\"month\"||i.type===\"day\")){const d=Number.parseInt(t,10);l=`0${t}`,c=d<=(i.type===\"month\"?1:2)}if(i.type===\"year\"&&(l=(o.replace(/_/g,\"\")+t).padStart(i.len,\"_\")),!l.includes(\"_\")){const d={...this.#t,[i.type]:l},g=this.#m(d,i);if(g){this.inlineError=g;return}}this.inlineError=\"\",this.#t[i.type]=l;const y=l.includes(\"_\")?void 0:F(this.#t);if(y){const{year:d,month:g}=y,_=U(d,g);this.#t={year:String(Math.max(0,Math.min(9999,d))).padStart(4,\"0\"),month:String(Math.max(1,Math.min(12,g))).padStart(2,\"0\"),day:String(Math.max(1,Math.min(_,y.day))).padStart(2,\"0\")}}this.#a();const T=l.indexOf(\"_\");c?(this.#i=!0,this.#o=t):T>=0?this.#e.positionInSegment=T:u>=0&&e.index<this.#s.length-1?(this.#e.segmentIndex=e.index+1,this.#e.positionInSegment=0,this.#i=!0):this.#e.positionInSegment=Math.min(a+1,i.len-1)}}#m(t,s){const{month:e,day:i}=S(t);if(s.type===\"month\"&&(e<0||e>12))return h.date.messages.invalidMonth;if(s.type===\"day\"&&(i<0||i>31))return h.date.messages.invalidDay(31,\"any month\")}#g(t){const{year:s,month:e,day:i}=S(this.#t);if(s&&e&&i){const n=U(s,e);this.#t={...this.#t,day:String(Math.min(i,n)).padStart(2,\"0\")}}this.value=N(this.#t)??t.defaultValue??void 0}}class it extends m{options;cursor=0;#s;getGroupItems(t){return this.options.filter(s=>s.group===t)}isGroupSelected(t){const s=this.getGroupItems(t),e=this.value;return e===void 0?!1:s.every(i=>e.includes(i.value))}toggleValue(){const t=this.options[this.cursor];if(this.value===void 0&&(this.value=[]),t.group===!0){const s=t.value,e=this.getGroupItems(s);this.isGroupSelected(s)?this.value=this.value.filter(i=>e.findIndex(n=>n.value===i)===-1):this.value=[...this.value,...e.map(i=>i.value)],this.value=Array.from(new Set(this.value))}else{const s=this.value.includes(t.value);this.value=s?this.value.filter(e=>e!==t.value):[...this.value,t.value]}}constructor(t){super(t,!1);const{options:s}=t;this.#s=t.selectableGroups!==!1,this.options=Object.entries(s).flatMap(([e,i])=>[{value:e,group:!0,label:e},...i.map(n=>({...n,group:e}))]),this.value=[...t.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:e})=>e===t.cursorAt),this.#s?0:1),this.on(\"cursor\",e=>{switch(e){case\"left\":case\"up\":{this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;const i=this.options[this.cursor]?.group===!0;!this.#s&&i&&(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;const i=this.options[this.cursor]?.group===!0;!this.#s&&i&&(this.cursor=this.cursor===this.options.length-1?0:this.cursor+1);break}case\"space\":this.toggleValue();break}})}}class rt extends m{#s=!1;#r;focused=\"editor\";get userInputWithCursor(){if(this.state===\"submit\")return this.userInput;const t=this.userInput;if(this.cursor>=t.length)return`${t}\\u2588`;const s=t.slice(0,this.cursor),e=t[this.cursor],i=t.slice(this.cursor+1);return e===`\n`?`${s}\\u2588\n${i}`:`${s}${v(\"inverse\",e)}${i}`}get cursor(){return this._cursor}#t(t){if(this.userInput.length===0){this._setUserInput(t);return}this._setUserInput(this.userInput.slice(0,this.cursor)+t+this.userInput.slice(this.cursor))}#n(t){const s=this.value??\"\";switch(t){case\"up\":this._cursor=I(this._cursor,0,-1,s);return;case\"down\":this._cursor=I(this._cursor,0,1,s);return;case\"left\":this._cursor=I(this._cursor,-1,0,s);return;case\"right\":this._cursor=I(this._cursor,1,0,s);return}}_shouldSubmit(t,s){if(this.#r)return this.focused===\"submit\"?!0:(this.#t(`\n`),this._cursor++,!1);const e=this.#s;return this.#s=!0,e?(this.userInput[this.cursor-1]===`\n`&&(this._setUserInput(this.userInput.slice(0,this.cursor-1)+this.userInput.slice(this.cursor)),this._cursor--),!0):(this.#t(`\n`),this._cursor++,!1)}constructor(t){super(t,!1),this.#r=t.showSubmit??!1,this.on(\"key\",(s,e)=>{if(e?.name&&h.actions.has(e.name)){this.#n(e.name);return}if(s===\"\t\"&&this.#r){this.focused=this.focused===\"editor\"?\"submit\":\"editor\";return}if(e?.name!==\"return\"){if(this.#s=!1,e?.name===\"backspace\"&&this.cursor>0){this._setUserInput(this.userInput.slice(0,this.cursor-1)+this.userInput.slice(this.cursor)),this._cursor--;return}if(e?.name===\"delete\"&&this.cursor<this.userInput.length){this._setUserInput(this.userInput.slice(0,this.cursor)+this.userInput.slice(this.cursor+1));return}s&&(this.#r&&this.focused===\"submit\"&&(this.focused=\"editor\"),this.#t(s??\"\"),this._cursor++)}}),this.on(\"userInput\",s=>{this._setValue(s)}),this.on(\"finalize\",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value=\"\")})}}let nt=class extends m{options;cursor=0;get _value(){return this.options[this.cursor].value}get _enabledOptions(){return this.options.filter(t=>t.disabled!==!0)}toggleAll(){const t=this._enabledOptions,s=this.value!==void 0&&this.value.length===t.length;this.value=s?[]:t.map(e=>e.value)}toggleInvert(){const t=this.value;if(!t)return;const s=this._enabledOptions.filter(e=>!t.includes(e.value));this.value=s.map(e=>e.value)}toggleValue(){this.value===void 0&&(this.value=[]);const t=this.value.includes(this._value);this.value=t?this.value.filter(s=>s!==this._value):[...this.value,this._value]}constructor(t){super(t,!1),this.options=t.options,this.value=[...t.initialValues??[]];const s=Math.max(this.options.findIndex(({value:e})=>e===t.cursorAt),0);this.cursor=this.options[s].disabled?f(s,1,this.options):s,this.on(\"key\",e=>{e===\"a\"&&this.toggleAll(),e===\"i\"&&this.toggleInvert()}),this.on(\"cursor\",e=>{switch(e){case\"left\":case\"up\":this.cursor=f(this.cursor,-1,this.options);break;case\"down\":case\"right\":this.cursor=f(this.cursor,1,this.options);break;case\"space\":this.toggleValue();break}})}};class ot extends m{_mask=\"\\u2022\";get cursor(){return this._cursor}get masked(){return this.userInput.replaceAll(/./g,this._mask)}get userInputWithCursor(){if(this.state===\"submit\"||this.state===\"cancel\")return this.masked;const t=this.userInput;if(this.cursor>=t.length)return`${this.masked}${v([\"inverse\",\"hidden\"],\"_\")}`;const s=this.masked,e=s.slice(0,this.cursor),i=s.slice(this.cursor);return`${e}${v(\"inverse\",i[0])}${i.slice(1)}`}clear(){this._clearUserInput()}constructor({mask:t,...s}){super(s),this._mask=t??\"\\u2022\",this.on(\"userInput\",e=>{this._setValue(e)})}}class ut extends m{options;cursor=0;get _selectedValue(){return this.options[this.cursor]}changeValue(){this.value=this._selectedValue.value}constructor(t){super(t,!1),this.options=t.options;const s=this.options.findIndex(({value:i})=>i===t.initialValue),e=s===-1?0:s;this.cursor=this.options[e].disabled?f(e,1,this.options):e,this.changeValue(),this.on(\"cursor\",i=>{switch(i){case\"left\":case\"up\":this.cursor=f(this.cursor,-1,this.options);break;case\"down\":case\"right\":this.cursor=f(this.cursor,1,this.options);break}this.changeValue()})}}class at extends m{options;cursor=0;constructor(t){super(t,!1),this.options=t.options;const s=t.caseSensitive===!0,e=this.options.map(({value:[i]})=>s?i:i?.toLowerCase());this.cursor=Math.max(e.indexOf(t.initialValue),0),this.on(\"key\",(i,n)=>{if(!i)return;const o=s&&n.shift?i.toUpperCase():i;if(!e.includes(o))return;const u=this.options.find(({value:[a]})=>s?a===o:a?.toLowerCase()===i);u&&(this.value=u.value,this.state=\"submit\",this.emit(\"submit\"))})}}class ht extends m{get userInputWithCursor(){if(this.state===\"submit\")return this.userInput;const t=this.userInput;if(this.cursor>=t.length)return`${this.userInput}\\u2588`;const s=t.slice(0,this.cursor),[e,...i]=t.slice(this.cursor);return`${s}${v(\"inverse\",e)}${i.join(\"\")}`}get cursor(){return this._cursor}constructor(t){super({...t,initialUserInput:t.initialUserInput??t.initialValue}),this.on(\"userInput\",s=>{this._setValue(s)}),this.on(\"finalize\",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value=\"\")})}}export{Q as AutocompletePrompt,X as ConfirmPrompt,et as DatePrompt,it as GroupMultiSelectPrompt,rt as MultiLinePrompt,nt as MultiSelectPrompt,ot as PasswordPrompt,m as Prompt,at as SelectKeyPrompt,ut as SelectPrompt,ht as TextPrompt,R as block,A as getColumns,L as getRows,q as isCancel,h as settings,j as updateSettings,W as wrapTextWithPrefix};\n//# sourceMappingURL=index.mjs.map\n","import{getColumns as X,getRows as Lt,AutocompletePrompt as vt,settings as T,ConfirmPrompt as Dt,wrapTextWithPrefix as E,DatePrompt as Wt,isCancel as Ft,GroupMultiSelectPrompt as Ht,MultiLinePrompt as Ut,MultiSelectPrompt as Kt,PasswordPrompt as qt,block as Jt,SelectPrompt as Yt,SelectKeyPrompt as Xt,TextPrompt as zt}from\"@clack/core\";export{isCancel,settings,updateSettings}from\"@clack/core\";import{styleText as e,stripVTControlCharacters as nt}from\"node:util\";import V from\"node:process\";import{wrapAnsi as J}from\"fast-wrap-ansi\";import B from\"fast-string-width\";import{existsSync as Qt,lstatSync as wt,readdirSync as Zt}from\"node:fs\";import{dirname as bt,join as te}from\"node:path\";import{cursor as St,erase as Ct}from\"sisteransi\";function ee(){return V.platform!==\"win32\"?V.env.TERM!==\"linux\":!!V.env.CI||!!V.env.WT_SESSION||!!V.env.TERMINUS_SUBLIME||V.env.ConEmuTask===\"{cmd::Cmder}\"||V.env.TERM_PROGRAM===\"Terminus-Sublime\"||V.env.TERM_PROGRAM===\"vscode\"||V.env.TERM===\"xterm-256color\"||V.env.TERM===\"alacritty\"||V.env.TERMINAL_EMULATOR===\"JetBrains-JediTerm\"}const tt=ee(),ot=()=>process.env.CI===\"true\",It=t=>t.isTTY===!0,w=(t,i)=>tt?t:i,Tt=w(\"\\u25C6\",\"*\"),at=w(\"\\u25A0\",\"x\"),ut=w(\"\\u25B2\",\"x\"),H=w(\"\\u25C7\",\"o\"),lt=w(\"\\u250C\",\"T\"),$=w(\"\\u2502\",\"|\"),x=w(\"\\u2514\",\"\\u2014\"),_t=w(\"\\u2510\",\"T\"),xt=w(\"\\u2518\",\"\\u2014\"),z=w(\"\\u25CF\",\">\"),U=w(\"\\u25CB\",\" \"),et=w(\"\\u25FB\",\"[\\u2022]\"),K=w(\"\\u25FC\",\"[+]\"),Y=w(\"\\u25FB\",\"[ ]\"),Et=w(\"\\u25AA\",\"\\u2022\"),st=w(\"\\u2500\",\"-\"),ct=w(\"\\u256E\",\"+\"),Gt=w(\"\\u251C\",\"+\"),$t=w(\"\\u256F\",\"+\"),dt=w(\"\\u2570\",\"+\"),Mt=w(\"\\u256D\",\"+\"),ht=w(\"\\u25CF\",\"\\u2022\"),pt=w(\"\\u25C6\",\"*\"),mt=w(\"\\u25B2\",\"!\"),gt=w(\"\\u25A0\",\"x\"),P=t=>{switch(t){case\"initial\":case\"active\":return e(\"cyan\",Tt);case\"cancel\":return e(\"red\",at);case\"error\":return e(\"yellow\",ut);case\"submit\":return e(\"green\",H)}},yt=t=>{switch(t){case\"initial\":case\"active\":return e(\"cyan\",$);case\"cancel\":return e(\"red\",$);case\"error\":return e(\"yellow\",$);case\"submit\":return e(\"green\",$)}},Ot=(t,i,s,r,u,n=!1)=>{let a=i,c=0;if(n)for(let o=r-1;o>=s&&(a-=t[o].length,c++,!(a<=u));o--);else for(let o=s;o<r&&(a-=t[o].length,c++,!(a<=u));o++);return{lineCount:a,removals:c}},F=({cursor:t,options:i,style:s,output:r=process.stdout,maxItems:u=Number.POSITIVE_INFINITY,columnPadding:n=0,rowPadding:a=4})=>{const c=X(r)-n,o=Lt(r),l=e(\"dim\",\"...\"),d=Math.max(o-a,0),g=Math.max(Math.min(u,d),5);let p=0;t>=g-3&&(p=Math.max(Math.min(t-g+3,i.length-g),0));let f=g<i.length&&p>0,h=g<i.length&&p+g<i.length;const I=Math.min(p+g,i.length),m=[];let y=0;f&&y++,h&&y++;const v=p+(f?1:0),C=I-(h?1:0);for(let b=v;b<C;b++){const G=J(s(i[b],b===t),c,{hard:!0,trim:!1}).split(`\n`);m.push(G),y+=G.length}if(y>d){let b=0,G=0,M=y;const N=t-v;let O=d;const j=()=>Ot(m,M,0,N,O),k=()=>Ot(m,M,N+1,m.length,O,!0);f?({lineCount:M,removals:b}=j(),M>O&&(h||(O-=1),{lineCount:M,removals:G}=k())):(h||(O-=1),{lineCount:M,removals:G}=k(),M>O&&(O-=1,{lineCount:M,removals:b}=j())),b>0&&(f=!0,m.splice(0,b)),G>0&&(h=!0,m.splice(m.length-G,G))}const S=[];f&&S.push(l);for(const b of m)for(const G of b)S.push(G);return h&&S.push(l),S};function Pt(t){return t.label??String(t.value??\"\")}function Rt(t,i){if(!t)return!0;const s=(i.label??String(i.value??\"\")).toLowerCase(),r=(i.hint??\"\").toLowerCase(),u=String(i.value).toLowerCase(),n=t.toLowerCase();return s.includes(n)||r.includes(n)||u.includes(n)}function se(t,i){const s=[];for(const r of i)t.includes(r.value)&&s.push(r);return s}const At=t=>new vt({options:t.options,initialValue:t.initialValue?[t.initialValue]:void 0,initialUserInput:t.initialUserInput,placeholder:t.placeholder,filter:t.filter??((i,s)=>Rt(i,s)),signal:t.signal,input:t.input,output:t.output,validate:t.validate,render(){const i=t.withGuide??T.withGuide,s=i?[`${e(\"gray\",$)}`,`${P(this.state)} ${t.message}`]:[`${P(this.state)} ${t.message}`],r=this.userInput,u=this.options,n=t.placeholder,a=r===\"\"&&n!==void 0,c=(o,l)=>{const d=Pt(o),g=o.hint&&o.value===this.focusedValue?e(\"dim\",` (${o.hint})`):\"\";switch(l){case\"active\":return`${e(\"green\",z)} ${d}${g}`;case\"inactive\":return`${e(\"dim\",U)} ${e(\"dim\",d)}`;case\"disabled\":return`${e(\"gray\",U)} ${e([\"strikethrough\",\"gray\"],d)}`}};switch(this.state){case\"submit\":{const o=se(this.selectedValues,u),l=o.length>0?` ${e(\"dim\",o.map(Pt).join(\", \"))}`:\"\",d=i?e(\"gray\",$):\"\";return`${s.join(`\n`)}\n${d}${l}`}case\"cancel\":{const o=r?` ${e([\"strikethrough\",\"dim\"],r)}`:\"\",l=i?e(\"gray\",$):\"\";return`${s.join(`\n`)}\n${l}${o}`}default:{const o=this.state===\"error\"?\"yellow\":\"cyan\",l=i?`${e(o,$)} `:\"\",d=i?e(o,x):\"\";let g=\"\";if(this.isNavigating||a){const v=a?n:r;g=v!==\"\"?` ${e(\"dim\",v)}`:\"\"}else g=` ${this.userInputWithCursor}`;const p=this.filteredOptions.length!==u.length?e(\"dim\",` (${this.filteredOptions.length} match${this.filteredOptions.length===1?\"\":\"es\"})`):\"\",f=this.filteredOptions.length===0&&r?[`${l}${e(\"yellow\",\"No matches found\")}`]:[],h=this.state===\"error\"?[`${l}${e(\"yellow\",this.error)}`]:[];i&&s.push(`${l.trimEnd()}`),s.push(`${l}${e(\"dim\",\"Search:\")}${g}${p}`,...f,...h);const I=[`${e(\"dim\",\"\\u2191/\\u2193\")} to select`,`${e(\"dim\",\"Enter:\")} confirm`,`${e(\"dim\",\"Type:\")} to search`],m=[`${l}${I.join(\" \\u2022 \")}`,d],y=this.filteredOptions.length===0?[]:F({cursor:this.cursor,options:this.filteredOptions,columnPadding:i?3:0,rowPadding:s.length+m.length,style:(v,C)=>c(v,v.disabled?\"disabled\":C?\"active\":\"inactive\"),maxItems:t.maxItems,output:t.output});return[...s,...y.map(v=>`${l}${v}`),...m].join(`\n`)}}}}).prompt(),ie=t=>{const i=(r,u,n,a)=>{const c=n.includes(r.value),o=r.label??String(r.value??\"\"),l=r.hint&&a!==void 0&&r.value===a?e(\"dim\",` (${r.hint})`):\"\",d=c?e(\"green\",K):e(\"dim\",Y);return r.disabled?`${e(\"gray\",Y)} ${e([\"strikethrough\",\"gray\"],o)}`:u?`${d} ${o}${l}`:`${d} ${e(\"dim\",o)}`},s=new vt({options:t.options,multiple:!0,placeholder:t.placeholder,filter:t.filter??((r,u)=>Rt(r,u)),validate:()=>{if(t.required&&s.selectedValues.length===0)return\"Please select at least one item\"},initialValue:t.initialValues,signal:t.signal,input:t.input,output:t.output,render(){const r=t.withGuide??T.withGuide,u=`${r?`${e(\"gray\",$)}\n`:\"\"}${P(this.state)} ${t.message}\n`,n=this.userInput,a=t.placeholder,c=n===\"\"&&a!==void 0,o=this.isNavigating||c?e(\"dim\",c?a:n):this.userInputWithCursor,l=this.options,d=this.filteredOptions.length!==l.length?e(\"dim\",` (${this.filteredOptions.length} match${this.filteredOptions.length===1?\"\":\"es\"})`):\"\";switch(this.state){case\"submit\":return`${u}${r?`${e(\"gray\",$)} `:\"\"}${e(\"dim\",`${this.selectedValues.length} items selected`)}`;case\"cancel\":return`${u}${r?`${e(\"gray\",$)} `:\"\"}${e([\"strikethrough\",\"dim\"],n)}`;default:{const g=this.state===\"error\"?\"yellow\":\"cyan\",p=r?`${e(g,$)} `:\"\",f=r?e(g,x):\"\",h=[`${e(\"dim\",\"\\u2191/\\u2193\")} to navigate`,`${e(\"dim\",this.isNavigating?\"Space/Tab:\":\"Tab:\")} select`,`${e(\"dim\",\"Enter:\")} confirm`,`${e(\"dim\",\"Type:\")} to search`],I=this.filteredOptions.length===0&&n?[`${p}${e(\"yellow\",\"No matches found\")}`]:[],m=this.state===\"error\"?[`${p}${e(\"yellow\",this.error)}`]:[],y=[...`${u}${r?e(g,$):\"\"}`.split(`\n`),`${p}${e(\"dim\",\"Search:\")} ${o}${d}`,...I,...m],v=[`${p}${h.join(\" \\u2022 \")}`,f],C=F({cursor:this.cursor,options:this.filteredOptions,style:(S,b)=>i(S,b,this.selectedValues,this.focusedValue),maxItems:t.maxItems,output:t.output,rowPadding:y.length+v.length});return[...y,...C.map(S=>`${p}${S}`),...v].join(`\n`)}}}});return s.prompt()},re=[Mt,ct,dt,$t],ne=[lt,_t,x,xt];function Vt(t,i,s,r){let u=s,n=s;return r===\"center\"?u=Math.floor((i-t)/2):r===\"right\"&&(u=i-t-s),n=i-u-t,[u,n]}const oe=t=>t,ae=(t=\"\",i=\"\",s)=>{const r=s?.output??process.stdout,u=X(r),n=2,a=s?.titlePadding??1,c=s?.contentPadding??2,o=s?.width===void 0||s.width===\"auto\"?1:Math.min(1,s.width),l=s?.withGuide??T.withGuide?`${$} `:\"\",d=s?.formatBorder??oe,g=(s?.rounded?re:ne).map(d),p=d(st),f=d($),h=B(l),I=B(i),m=u-h;let y=Math.floor(u*o)-h;if(s?.width===\"auto\"){const O=t.split(`\n`);let j=I+a*2;for(const rt of O){const W=B(rt)+c*2;W>j&&(j=W)}const k=j+n;k<y&&(y=k)}y%2!==0&&(y<m?y++:y--);const v=y-n,C=v-a*2,S=I>C?`${i.slice(0,C-3)}...`:i,[b,G]=Vt(B(S),v,a,s?.titleAlign),M=J(t,v-c*2,{hard:!0,trim:!1});r.write(`${l}${g[0]}${p.repeat(b)}${S}${p.repeat(G)}${g[1]}\n`);const N=M.split(`\n`);for(const O of N){const[j,k]=Vt(B(O),v,c,s?.contentAlign);r.write(`${l}${f}${\" \".repeat(j)}${O}${\" \".repeat(k)}${f}\n`)}r.write(`${l}${g[2]}${p.repeat(v)}${g[3]}\n`)},ue=t=>{const i=t.active??\"Yes\",s=t.inactive??\"No\";return new Dt({active:i,inactive:s,signal:t.signal,input:t.input,output:t.output,initialValue:t.initialValue??!0,render(){const r=t.withGuide??T.withGuide,u=`${P(this.state)} `,n=r?`${e(\"gray\",$)} `:\"\",a=E(t.output,t.message,n,u),c=`${r?`${e(\"gray\",$)}\n`:\"\"}${a}\n`,o=this.value?i:s;switch(this.state){case\"submit\":{const l=r?`${e(\"gray\",$)} `:\"\";return`${c}${l}${e(\"dim\",o)}`}case\"cancel\":{const l=r?`${e(\"gray\",$)} `:\"\";return`${c}${l}${e([\"strikethrough\",\"dim\"],o)}${r?`\n${e(\"gray\",$)}`:\"\"}`}default:{const l=r?`${e(\"cyan\",$)} `:\"\",d=r?e(\"cyan\",x):\"\";return`${c}${l}${this.value?`${e(\"green\",z)} ${i}`:`${e(\"dim\",U)} ${e(\"dim\",i)}`}${t.vertical?r?`\n${e(\"cyan\",$)} `:`\n`:` ${e(\"dim\",\"/\")} `}${this.value?`${e(\"dim\",U)} ${e(\"dim\",s)}`:`${e(\"green\",z)} ${s}`}\n${d}\n`}}}}).prompt()},le=t=>{const i=t.validate;return new Wt({...t,validate(s){if(s===void 0)return t.defaultValue!==void 0?void 0:i?i(s):T.date.messages.required;const r=u=>u.toISOString().slice(0,10);if(t.minDate&&r(s)<r(t.minDate))return T.date.messages.afterMin(t.minDate);if(t.maxDate&&r(s)>r(t.maxDate))return T.date.messages.beforeMax(t.maxDate);if(i)return i(s)},render(){const s=(t?.withGuide??T.withGuide)!==!1,r=`${`${s?`${e(\"gray\",$)}\n`:\"\"}${P(this.state)} `}${t.message}\n`,u=this.state!==\"initial\"?this.state:\"active\",n=ce(this,u),a=this.value instanceof Date?this.formattedValue:\"\";switch(this.state){case\"error\":{const c=this.error?` ${e(\"yellow\",this.error)}`:\"\",o=s?`${e(\"yellow\",$)} `:\"\",l=s?e(\"yellow\",x):\"\";return`${r.trim()}\n${o}${n}\n${l}${c}\n`}case\"submit\":{const c=a?` ${e(\"dim\",a)}`:\"\",o=s?e(\"gray\",$):\"\";return`${r}${o}${c}`}case\"cancel\":{const c=a?` ${e([\"strikethrough\",\"dim\"],a)}`:\"\",o=s?e(\"gray\",$):\"\";return`${r}${o}${c}${a.trim()?`\n${o}`:\"\"}`}default:{const c=s?`${e(\"cyan\",$)} `:\"\",o=s?e(\"cyan\",x):\"\",l=s?`${e(\"cyan\",$)} `:\"\",d=this.inlineError?`\n${l}${e(\"yellow\",this.inlineError)}`:\"\";return`${r}${c}${n}${d}\n${o}\n`}}}}).prompt()};function ce(t,i){const s=t.segmentValues,r=t.segmentCursor;if(i===\"submit\"||i===\"cancel\")return t.formattedValue;const u=e(\"gray\",t.separator);return t.segments.map((n,a)=>{const c=a===r.segmentIndex&&![\"submit\",\"cancel\"].includes(i),o=de[n.type];return $e(s[n.type],{isActive:c,label:o})}).join(u)}function $e(t,i){const s=!t||t.replace(/_/g,\"\")===\"\";return i.isActive?e(\"inverse\",s?i.label:t.replace(/_/g,\" \")):s?e(\"dim\",i.label):t.replace(/_/g,e(\"dim\",\" \"))}const de={year:\"yyyy\",month:\"mm\",day:\"dd\"},he=async(t,i)=>{const s={},r=Object.keys(t);for(const u of r){const n=t[u],a=await n({results:s})?.catch(c=>{throw c});if(typeof i?.onCancel==\"function\"&&Ft(a)){s[u]=\"canceled\",i.onCancel({results:s});continue}s[u]=a}return s},pe=t=>{const{selectableGroups:i=!0,groupSpacing:s=0}=t,r=(n,a,c=[])=>{const o=n.label??String(n.value),l=typeof n.group==\"string\",d=l&&(c[c.indexOf(n)+1]??{group:!0}),g=l&&d&&d.group===!0;let p=\"\",f=\"\";l&&(i?(p=g?`${x} `:`${$} `,f=g?\" \":`${$} `):p=\" \");let h=\"\";if(s>0&&!l&&(h=`\n`.repeat(s)),a===\"active\")return E(t.output,`${o}${n.hint?` ${e(\"dim\",`(${n.hint})`)}`:\"\"}`,`${h}${e(\"dim\",p)} `,`${h}${e(\"dim\",p)}${e(\"cyan\",et)} `,`${h}${e(\"dim\",f)} `);if(a===\"group-active\")return E(t.output,o,`${h}${p} `,`${h}${p}${e(\"cyan\",et)} `,`${h}${f} `,m=>e(\"dim\",m));if(a===\"group-active-selected\")return E(t.output,o,`${h}${p} `,`${h}${p}${e(\"green\",K)} `,`${h}${f} `,m=>e(\"dim\",m));if(a===\"selected\"){const m=l||i?e(\"green\",K):\"\";return E(t.output,`${o}${n.hint?` (${n.hint})`:\"\"}`,`${h}${e(\"dim\",p)} `,`${h}${e(\"dim\",p)}${m} `,`${h}${e(\"dim\",f)} `,y=>e(\"dim\",y))}if(a===\"cancelled\")return`${e([\"strikethrough\",\"dim\"],o)}`;if(a===\"active-selected\")return E(t.output,`${o}${n.hint?` ${e(\"dim\",`(${n.hint})`)}`:\"\"}`,`${h}${e(\"dim\",p)} `,`${h}${e(\"dim\",p)}${e(\"green\",K)} `,`${h}${e(\"dim\",f)} `);if(a===\"submitted\")return`${e(\"dim\",o)}`;const I=l||i?e(\"dim\",Y):\"\";return E(t.output,o,`${h}${e(\"dim\",p)} `,`${h}${e(\"dim\",p)}${I} `,`${h}${e(\"dim\",f)} `,m=>e(\"dim\",m))},u=t.required??!0;return new Ht({options:t.options,signal:t.signal,input:t.input,output:t.output,initialValues:t.initialValues,required:u,cursorAt:t.cursorAt,selectableGroups:i,validate(n){if(u&&(n===void 0||n.length===0))return`Please select at least one option.\n${e(\"reset\",e(\"dim\",`Press ${e([\"gray\",\"bgWhite\",\"inverse\"],\" space \")} to select, ${e(\"gray\",e([\"bgWhite\",\"inverse\"],\" enter \"))} to submit`))}`},render(){const n=t.withGuide??T.withGuide,a=`${n?`${e(\"gray\",$)}\n`:\"\"}${P(this.state)} ${t.message}\n`,c=this.value??[],o=(l,d)=>{const g=this.options,p=c.includes(l.value)||l.group===!0&&this.isGroupSelected(`${l.value}`);return!d&&typeof l.group==\"string\"&&this.options[this.cursor].value===l.group?r(l,p?\"group-active-selected\":\"group-active\",g):d&&p?r(l,\"active-selected\",g):p?r(l,\"selected\",g):r(l,d?\"active\":\"inactive\",g)};switch(this.state){case\"submit\":{const l=this.options.filter(({value:g})=>c.includes(g)).map(g=>r(g,\"submitted\")),d=l.length===0?\"\":` ${l.join(e(\"dim\",\", \"))}`;return`${a}${n?e(\"gray\",$):\"\"}${d}`}case\"cancel\":{const l=this.options.filter(({value:d})=>c.includes(d)).map(d=>r(d,\"cancelled\")).join(e(\"dim\",\", \"));return`${a}${n?`${e(\"gray\",$)} `:\"\"}${l.trim()?`${l}${n?`\n${e(\"gray\",$)}`:\"\"}`:\"\"}`}case\"error\":{const l=n?`${e(\"yellow\",$)} `:\"\",d=this.error.split(`\n`).map((h,I)=>I===0?`${n?`${e(\"yellow\",x)} `:\"\"}${e(\"yellow\",h)}`:` ${h}`).join(`\n`),g=a.split(`\n`).length,p=d.split(`\n`).length+1,f=F({output:t.output,options:this.options,cursor:this.cursor,maxItems:t.maxItems,columnPadding:l.length,rowPadding:g+p,style:o}).join(`\n${l}`);return`${a}${l}${f}\n${d}\n`}default:{const l=n?`${e(\"cyan\",$)} `:\"\",d=a.split(`\n`).length,g=(n?1:0)+1,p=F({output:t.output,options:this.options,cursor:this.cursor,maxItems:t.maxItems,columnPadding:l.length,rowPadding:d+g,style:o}).join(`\n${l}`);return`${a}${l}${p}\n${n?e(\"cyan\",x):\"\"}\n`}}}}).prompt()},R={message:(t=[],{symbol:i=e(\"gray\",$),secondarySymbol:s=e(\"gray\",$),output:r=process.stdout,spacing:u=1,withGuide:n}={})=>{const a=[],c=n??T.withGuide,o=c?s:\"\",l=c?`${i} `:\"\",d=c?`${s} `:\"\";for(let p=0;p<u;p++)a.push(o);const g=Array.isArray(t)?t:t.split(`\n`);if(g.length>0){const[p,...f]=g;p.length>0?a.push(`${l}${p}`):a.push(c?i:\"\");for(const h of f)h.length>0?a.push(`${d}${h}`):a.push(c?s:\"\")}r.write(`${a.join(`\n`)}\n`)},info:(t,i)=>{R.message(t,{...i,symbol:e(\"blue\",ht)})},success:(t,i)=>{R.message(t,{...i,symbol:e(\"green\",pt)})},step:(t,i)=>{R.message(t,{...i,symbol:e(\"green\",H)})},warn:(t,i)=>{R.message(t,{...i,symbol:e(\"yellow\",mt)})},warning:(t,i)=>{R.warn(t,i)},error:(t,i)=>{R.message(t,{...i,symbol:e(\"red\",gt)})}},me=(t=\"\",i)=>{const s=i?.output??process.stdout,r=i?.withGuide??T.withGuide?`${e(\"gray\",x)} `:\"\";s.write(`${r}${e(\"red\",t)}\n\n`)},ge=(t=\"\",i)=>{const s=i?.output??process.stdout,r=i?.withGuide??T.withGuide?`${e(\"gray\",lt)} `:\"\";s.write(`${r}${t}\n`)},ye=(t=\"\",i)=>{const s=i?.output??process.stdout,r=i?.withGuide??T.withGuide?`${e(\"gray\",$)}\n${e(\"gray\",x)} `:\"\";s.write(`${r}${t}\n\n`)},fe=t=>new Ut({validate:t.validate,placeholder:t.placeholder,defaultValue:t.defaultValue,initialValue:t.initialValue,showSubmit:t.showSubmit,output:t.output,signal:t.signal,input:t.input,render(){const i=t?.withGuide??T.withGuide,s=`${`${i?`${e(\"gray\",$)}\n`:\"\"}${P(this.state)} `}${t.message}\n`,r=t.placeholder?e(\"inverse\",t.placeholder[0])+e(\"dim\",t.placeholder.slice(1)):e([\"inverse\",\"hidden\"],\"_\"),u=this.userInput?this.userInputWithCursor:r,n=this.value??\"\",a=t.showSubmit?`\n ${e(this.focused===\"submit\"?\"cyan\":\"dim\",\"[ submit ]\")}`:\"\";switch(this.state){case\"error\":{const c=`${e(\"yellow\",$)} `,o=i?E(t.output,u,c,void 0):u,l=e(\"yellow\",x);return`${s}${o}\n${l} ${e(\"yellow\",this.error)}${a}\n`}case\"submit\":{const c=`${e(\"gray\",$)} `,o=i?E(t.output,n,c,void 0,void 0,l=>e(\"dim\",l)):n?e(\"dim\",n):\"\";return`${s}${o}`}case\"cancel\":{const c=`${e(\"gray\",$)} `,o=i?E(t.output,n,c,void 0,void 0,l=>e([\"strikethrough\",\"dim\"],l)):n?e([\"strikethrough\",\"dim\"],n):\"\";return`${s}${o}`}default:{const c=i?`${e(\"cyan\",$)} `:\"\",o=i?e(\"cyan\",x):\"\",l=i?E(t.output,u,c):u;return`${s}${l}\n${o}${a}\n`}}}}).prompt(),Q=(t,i)=>t.split(`\n`).map(s=>i(s)).join(`\n`),ve=t=>{const i=(r,u)=>{const n=r.label??String(r.value);return u===\"disabled\"?`${e(\"gray\",Y)} ${Q(n,a=>e([\"strikethrough\",\"gray\"],a))}${r.hint?` ${e(\"dim\",`(${r.hint??\"disabled\"})`)}`:\"\"}`:u===\"active\"?`${e(\"cyan\",et)} ${n}${r.hint?` ${e(\"dim\",`(${r.hint})`)}`:\"\"}`:u===\"selected\"?`${e(\"green\",K)} ${Q(n,a=>e(\"dim\",a))}${r.hint?` ${e(\"dim\",`(${r.hint})`)}`:\"\"}`:u===\"cancelled\"?`${Q(n,a=>e([\"strikethrough\",\"dim\"],a))}`:u===\"active-selected\"?`${e(\"green\",K)} ${n}${r.hint?` ${e(\"dim\",`(${r.hint})`)}`:\"\"}`:u===\"submitted\"?`${Q(n,a=>e(\"dim\",a))}`:`${e(\"dim\",Y)} ${Q(n,a=>e(\"dim\",a))}`},s=t.required??!0;return new Kt({options:t.options,signal:t.signal,input:t.input,output:t.output,initialValues:t.initialValues,required:s,cursorAt:t.cursorAt,validate(r){if(s&&(r===void 0||r.length===0))return`Please select at least one option.\n${e(\"reset\",e(\"dim\",`Press ${e([\"gray\",\"bgWhite\",\"inverse\"],\" space \")} to select, ${e(\"gray\",e(\"bgWhite\",e(\"inverse\",\" enter \")))} to submit`))}`},render(){const r=t.withGuide??T.withGuide,u=E(t.output,t.message,r?`${yt(this.state)} `:\"\",`${P(this.state)} `),n=`${r?`${e(\"gray\",$)}\n`:\"\"}${u}\n`,a=this.value??[],c=(o,l)=>{if(o.disabled)return i(o,\"disabled\");const d=a.includes(o.value);return l&&d?i(o,\"active-selected\"):d?i(o,\"selected\"):i(o,l?\"active\":\"inactive\")};switch(this.state){case\"submit\":{const o=this.options.filter(({value:d})=>a.includes(d)).map(d=>i(d,\"submitted\")).join(e(\"dim\",\", \"))||e(\"dim\",\"none\"),l=E(t.output,o,r?`${e(\"gray\",$)} `:\"\");return`${n}${l}`}case\"cancel\":{const o=this.options.filter(({value:d})=>a.includes(d)).map(d=>i(d,\"cancelled\")).join(e(\"dim\",\", \"));if(o.trim()===\"\")return`${n}${e(\"gray\",$)}`;const l=E(t.output,o,r?`${e(\"gray\",$)} `:\"\");return`${n}${l}${r?`\n${e(\"gray\",$)}`:\"\"}`}case\"error\":{const o=r?`${e(\"yellow\",$)} `:\"\",l=this.error.split(`\n`).map((p,f)=>f===0?`${r?`${e(\"yellow\",x)} `:\"\"}${e(\"yellow\",p)}`:` ${p}`).join(`\n`),d=n.split(`\n`).length,g=l.split(`\n`).length+1;return`${n}${o}${F({output:t.output,options:this.options,cursor:this.cursor,maxItems:t.maxItems,columnPadding:o.length,rowPadding:d+g,style:c}).join(`\n${o}`)}\n${l}\n`}default:{const o=r?`${e(\"cyan\",$)} `:\"\",l=n.split(`\n`).length,d=r?2:1;return`${n}${o}${F({output:t.output,options:this.options,cursor:this.cursor,maxItems:t.maxItems,columnPadding:o.length,rowPadding:l+d,style:c}).join(`\n${o}`)}\n${r?e(\"cyan\",x):\"\"}\n`}}}}).prompt()},we=t=>e(\"dim\",t),be=(t,i,s)=>{const r={hard:!0,trim:!1},u=J(t,i,r).split(`\n`),n=u.reduce((o,l)=>Math.max(B(l),o),0),a=u.map(s).reduce((o,l)=>Math.max(B(l),o),0),c=i-(a-n);return J(t,c,r)},Se=(t=\"\",i=\"\",s)=>{const r=s?.output??V.stdout,u=s?.withGuide??T.withGuide,n=s?.format??we,a=[\"\",...be(t,X(r)-6,n).split(`\n`).map(n),\"\"],c=B(i),o=Math.max(a.reduce((p,f)=>{const h=B(f);return h>p?h:p},0),c)+2,l=a.map(p=>`${e(\"gray\",$)} ${p}${\" \".repeat(o-B(p))}${e(\"gray\",$)}`).join(`\n`),d=u?`${e(\"gray\",$)}\n`:\"\",g=u?Gt:dt;r.write(`${d}${e(\"green\",H)} ${e(\"reset\",i)} ${e(\"gray\",st.repeat(Math.max(o-c-1,1))+ct)}\n${l}\n${e(\"gray\",g+st.repeat(o+2)+$t)}\n`)},Ce=t=>new qt({validate:t.validate,mask:t.mask??Et,signal:t.signal,input:t.input,output:t.output,render(){const i=t.withGuide??T.withGuide,s=`${i?`${e(\"gray\",$)}\n`:\"\"}${P(this.state)} ${t.message}\n`,r=this.userInputWithCursor,u=this.masked;switch(this.state){case\"error\":{const n=i?`${e(\"yellow\",$)} `:\"\",a=i?`${e(\"yellow\",x)} `:\"\",c=u??\"\";return t.clearOnError&&this.clear(),`${s.trim()}\n${n}${c}\n${a}${e(\"yellow\",this.error)}\n`}case\"submit\":{const n=i?`${e(\"gray\",$)} `:\"\",a=u?e(\"dim\",u):\"\";return`${s}${n}${a}`}case\"cancel\":{const n=i?`${e(\"gray\",$)} `:\"\",a=u?e([\"strikethrough\",\"dim\"],u):\"\";return`${s}${n}${a}${u&&i?`\n${e(\"gray\",$)}`:\"\"}`}default:{const n=i?`${e(\"cyan\",$)} `:\"\",a=i?e(\"cyan\",x):\"\";return`${s}${n}${r}\n${a}\n`}}}}).prompt(),Ie=t=>{const i=t.validate;return At({...t,initialUserInput:t.initialValue??t.root??process.cwd(),maxItems:5,validate(s){if(!Array.isArray(s)){if(!s)return\"Please select a path\";if(i)return i(s)}},options(){const s=this.userInput;if(s===\"\")return[];try{let r;Qt(s)?wt(s).isDirectory()&&(!t.directory||s.endsWith(\"/\"))?r=s:r=bt(s):r=bt(s);const u=s.length>1&&s.endsWith(\"/\")?s.slice(0,-1):s;return Zt(r).map(n=>{const a=te(r,n),c=wt(a);return{name:n,path:a,isDirectory:c.isDirectory()}}).filter(({path:n,isDirectory:a})=>n.startsWith(u)&&(a||!t.directory)).map(n=>({value:n.path}))}catch{return[]}}})},Te=t=>e(\"magenta\",t),ft=({indicator:t=\"dots\",onCancel:i,output:s=process.stdout,cancelMessage:r,errorMessage:u,frames:n=tt?[\"\\u25D2\",\"\\u25D0\",\"\\u25D3\",\"\\u25D1\"]:[\"\\u2022\",\"o\",\"O\",\"0\"],delay:a=tt?80:120,signal:c,...o}={})=>{const l=ot();let d,g,p=!1,f=!1,h=\"\",I,m=performance.now();const y=X(s),v=o?.styleFrame??Te,C=_=>{const A=_>1?u??T.messages.error:r??T.messages.cancel;f=_===1,p&&(W(A,_),f&&typeof i==\"function\"&&i())},S=()=>C(2),b=()=>C(1),G=()=>{process.on(\"uncaughtExceptionMonitor\",S),process.on(\"unhandledRejection\",S),process.on(\"SIGINT\",b),process.on(\"SIGTERM\",b),process.on(\"exit\",C),c&&c.addEventListener(\"abort\",b)},M=()=>{process.removeListener(\"uncaughtExceptionMonitor\",S),process.removeListener(\"unhandledRejection\",S),process.removeListener(\"SIGINT\",b),process.removeListener(\"SIGTERM\",b),process.removeListener(\"exit\",C),c&&c.removeEventListener(\"abort\",b)},N=()=>{if(I===void 0)return;l&&s.write(`\n`);const _=J(I,y,{hard:!0,trim:!1}).split(`\n`);_.length>1&&s.write(St.up(_.length-1)),s.write(St.to(0)),s.write(Ct.down())},O=_=>_.replace(/\\.+$/,\"\"),j=_=>{const A=(performance.now()-_)/1e3,L=Math.floor(A/60),D=Math.floor(A%60);return L>0?`[${L}m ${D}s]`:`[${D}s]`},k=o.withGuide??T.withGuide,rt=(_=\"\")=>{p=!0,d=Jt({output:s}),h=O(_),m=performance.now(),k&&s.write(`${e(\"gray\",$)}\n`);let A=0,L=0;G(),g=setInterval(()=>{if(l&&h===I)return;N(),I=h;const D=v(n[A]);let Z;if(l)Z=`${D} ${h}...`;else if(t===\"timer\")Z=`${D} ${h} ${j(m)}`;else{const kt=\".\".repeat(Math.floor(L)).slice(0,3);Z=`${D} ${h}${kt}`}const Bt=J(Z,y,{hard:!0,trim:!1});s.write(Bt),A=A+1<n.length?A+1:0,L=L<4?L+.125:0},a)},W=(_=\"\",A=0,L=!1)=>{if(!p)return;p=!1,clearInterval(g),N();const D=A===0?e(\"green\",H):A===1?e(\"red\",at):e(\"red\",ut);h=_??h,L||(t===\"timer\"?s.write(`${D} ${h} ${j(m)}\n`):s.write(`${D} ${h}\n`)),M(),d()};return{start:rt,stop:(_=\"\")=>W(_,0),message:(_=\"\")=>{h=O(_??h)},cancel:(_=\"\")=>W(_,1),error:(_=\"\")=>W(_,2),clear:()=>W(\"\",0,!0),get isCancelled(){return f}}},jt={light:w(\"\\u2500\",\"-\"),heavy:w(\"\\u2501\",\"=\"),block:w(\"\\u2588\",\"#\")};function _e({style:t=\"heavy\",max:i=100,size:s=40,...r}={}){const u=ft(r);let n=0,a=\"\";const c=Math.max(1,i),o=Math.max(1,s),l=f=>{switch(f){case\"initial\":case\"active\":return h=>e(\"magenta\",h);case\"error\":case\"cancel\":return h=>e(\"red\",h);case\"submit\":return h=>e(\"green\",h);default:return h=>e(\"magenta\",h)}},d=(f,h)=>{const I=Math.floor(n/c*o);return`${l(f)(jt[t].repeat(I))}${e(\"dim\",jt[t].repeat(o-I))} ${h}`},g=(f=\"\")=>{a=f,u.start(d(\"initial\",f))},p=(f=1,h)=>{n=Math.min(c,f+n),u.message(d(\"active\",h??a)),a=h??a};return{start:g,stop:u.stop,cancel:u.cancel,error:u.error,clear:u.clear,advance:p,isCancelled:u.isCancelled,message:f=>p(0,f)}}const it=(t,i)=>t.includes(`\n`)?t.split(`\n`).map(s=>i(s)).join(`\n`):i(t),xe=t=>{const i=(s,r)=>{const u=s.label??String(s.value);switch(r){case\"disabled\":return`${e(\"gray\",U)} ${it(u,n=>e(\"gray\",n))}${s.hint?` ${e(\"dim\",`(${s.hint??\"disabled\"})`)}`:\"\"}`;case\"selected\":return`${it(u,n=>e(\"dim\",n))}`;case\"active\":return`${e(\"green\",z)} ${u}${s.hint?` ${e(\"dim\",`(${s.hint})`)}`:\"\"}`;case\"cancelled\":return`${it(u,n=>e([\"strikethrough\",\"dim\"],n))}`;default:return`${e(\"dim\",U)} ${it(u,n=>e(\"dim\",n))}`}};return new Yt({options:t.options,signal:t.signal,input:t.input,output:t.output,initialValue:t.initialValue,render(){const s=t.withGuide??T.withGuide,r=`${P(this.state)} `,u=`${yt(this.state)} `,n=E(t.output,t.message,u,r),a=`${s?`${e(\"gray\",$)}\n`:\"\"}${n}\n`;switch(this.state){case\"submit\":{const c=s?`${e(\"gray\",$)} `:\"\",o=E(t.output,i(this.options[this.cursor],\"selected\"),c);return`${a}${o}`}case\"cancel\":{const c=s?`${e(\"gray\",$)} `:\"\",o=E(t.output,i(this.options[this.cursor],\"cancelled\"),c);return`${a}${o}${s?`\n${e(\"gray\",$)}`:\"\"}`}default:{const c=s?`${e(\"cyan\",$)} `:\"\",o=s?e(\"cyan\",x):\"\",l=a.split(`\n`).length,d=s?2:1;return`${a}${c}${F({output:t.output,cursor:this.cursor,options:this.options,maxItems:t.maxItems,columnPadding:c.length,rowPadding:l+d,style:(g,p)=>i(g,g.disabled?\"disabled\":p?\"active\":\"inactive\")}).join(`\n${c}`)}\n${o}\n`}}}}).prompt()},Ee=t=>{const i=(s,r=\"inactive\")=>{const u=s.label??String(s.value);return r===\"selected\"?`${e(\"dim\",u)}`:r===\"cancelled\"?`${e([\"strikethrough\",\"dim\"],u)}`:r===\"active\"?`${e([\"bgCyan\",\"gray\"],` ${s.value} `)} ${u}${s.hint?` ${e(\"dim\",`(${s.hint})`)}`:\"\"}`:`${e([\"gray\",\"bgWhite\",\"inverse\"],` ${s.value} `)} ${u}${s.hint?` ${e(\"dim\",`(${s.hint})`)}`:\"\"}`};return new Xt({options:t.options,signal:t.signal,input:t.input,output:t.output,initialValue:t.initialValue,caseSensitive:t.caseSensitive,render(){const s=t.withGuide??T.withGuide,r=`${s?`${e(\"gray\",$)}\n`:\"\"}${P(this.state)} ${t.message}\n`;switch(this.state){case\"submit\":{const u=s?`${e(\"gray\",$)} `:\"\",n=this.options.find(c=>c.value===this.value)??t.options[0],a=E(t.output,i(n,\"selected\"),u);return`${r}${a}`}case\"cancel\":{const u=s?`${e(\"gray\",$)} `:\"\",n=E(t.output,i(this.options[0],\"cancelled\"),u);return`${r}${n}${s?`\n${e(\"gray\",$)}`:\"\"}`}default:{const u=s?`${e(\"cyan\",$)} `:\"\",n=s?e(\"cyan\",x):\"\",a=this.options.map((c,o)=>E(t.output,i(c,o===this.cursor?\"active\":\"inactive\"),u)).join(`\n`);return`${r}${a}\n${n}\n`}}}}).prompt()},Nt=`${e(\"gray\",$)} `,q={message:async(t,{symbol:i=e(\"gray\",$)}={})=>{process.stdout.write(`${e(\"gray\",$)}\n${i} `);let s=3;for await(let r of t){r=r.replace(/\\n/g,`\n${Nt}`),r.includes(`\n`)&&(s=3+nt(r.slice(r.lastIndexOf(`\n`))).length);const u=nt(r).length;s+u<process.stdout.columns?(s+=u,process.stdout.write(r)):(process.stdout.write(`\n${Nt}${r.trimStart()}`),s=3+nt(r.trimStart()).length)}process.stdout.write(`\n`)},info:t=>q.message(t,{symbol:e(\"blue\",ht)}),success:t=>q.message(t,{symbol:e(\"green\",pt)}),step:t=>q.message(t,{symbol:e(\"green\",H)}),warn:t=>q.message(t,{symbol:e(\"yellow\",mt)}),warning:t=>q.warn(t),error:t=>q.message(t,{symbol:e(\"red\",gt)})},Ge=async(t,i)=>{for(const s of t){if(s.enabled===!1)continue;const r=ft(i);r.start(s.title);const u=await s.task(r.message);r.stop(u||s.title)}},Me=t=>t.replace(/\\x1b\\[(?:\\d+;)*\\d*[ABCDEFGHfJKSTsu]|\\x1b\\[(s|u)/g,\"\"),Oe=t=>{const i=t.output??process.stdout,s=X(i),r=e(\"gray\",$),u=t.spacing??1,n=3,a=t.retainLog===!0,c=!ot()&&It(i);i.write(`${r}\n`),i.write(`${e(\"green\",H)} ${t.title}\n`);for(let m=0;m<u;m++)i.write(`${r}\n`);const o=[{value:\"\",full:\"\"}];let l=!1;const d=m=>{if(o.length===0)return;let y=0;m&&(y+=u+2);for(const v of o){const{value:C,result:S}=v;let b=S?.message??C;if(b.length===0)continue;S===void 0&&v.header!==void 0&&v.header!==\"\"&&(b+=`\n${v.header}`);const G=b.split(`\n`).reduce((M,N)=>N===\"\"?M+1:M+Math.ceil((N.length+n)/s),0);y+=G}y>0&&(y+=1,i.write(Ct.lines(y)))},g=(m,y,v)=>{const C=v?`${m.full}\n${m.value}`:m.value;m.header!==void 0&&m.header!==\"\"&&R.message(m.header.split(`\n`).map(S=>e(\"bold\",S)),{output:i,secondarySymbol:r,symbol:r,spacing:0}),R.message(C.split(`\n`).map(S=>e(\"dim\",S)),{output:i,secondarySymbol:r,symbol:r,spacing:y??u})},p=()=>{for(const m of o){const{header:y,value:v,full:C}=m;(y===void 0||y.length===0)&&v.length===0||g(m,void 0,a===!0&&C.length>0)}},f=(m,y,v)=>{if(d(!1),(v?.raw!==!0||!l)&&m.value!==\"\"&&(m.value+=`\n`),m.value+=Me(y),l=v?.raw===!0,t.limit!==void 0){const C=m.value.split(`\n`),S=C.length-t.limit;if(S>0){const b=C.splice(0,S);a&&(m.full+=(m.full===\"\"?\"\":`\n`)+b.join(`\n`))}m.value=C.join(`\n`)}c&&h()},h=()=>{for(const m of o)m.result?m.result.status===\"error\"?R.error(m.result.message,{output:i,secondarySymbol:r,spacing:0}):R.success(m.result.message,{output:i,secondarySymbol:r,spacing:0}):m.value!==\"\"&&g(m,0)},I=(m,y)=>{d(!1),m.result=y,c&&h()};return{message(m,y){f(o[0],m,y)},group(m){const y={header:m,value:\"\",full:\"\"};return o.push(y),{message(v,C){f(y,v,C)},error(v){I(y,{status:\"error\",message:v})},success(v){I(y,{status:\"success\",message:v})}}},error(m,y){d(!0),R.error(m,{output:i,secondarySymbol:r,spacing:1}),y?.showLog!==!1&&p(),o.splice(1,o.length-1),o[0].value=\"\",o[0].full=\"\"},success(m,y){d(!0),R.success(m,{output:i,secondarySymbol:r,spacing:1}),y?.showLog===!0&&p(),o.splice(1,o.length-1),o[0].value=\"\",o[0].full=\"\"}}},Pe=t=>new zt({validate:t.validate,placeholder:t.placeholder,defaultValue:t.defaultValue,initialValue:t.initialValue,output:t.output,signal:t.signal,input:t.input,render(){const i=t?.withGuide??T.withGuide,s=`${`${i?`${e(\"gray\",$)}\n`:\"\"}${P(this.state)} `}${t.message}\n`,r=t.placeholder?e(\"inverse\",t.placeholder[0])+e(\"dim\",t.placeholder.slice(1)):e([\"inverse\",\"hidden\"],\"_\"),u=this.userInput?this.userInputWithCursor:r,n=this.value??\"\";switch(this.state){case\"error\":{const a=this.error?` ${e(\"yellow\",this.error)}`:\"\",c=i?`${e(\"yellow\",$)} `:\"\",o=i?e(\"yellow\",x):\"\";return`${s.trim()}\n${c}${u}\n${o}${a}\n`}case\"submit\":{const a=n?` ${e(\"dim\",n)}`:\"\",c=i?e(\"gray\",$):\"\";return`${s}${c}${a}`}case\"cancel\":{const a=n?` ${e([\"strikethrough\",\"dim\"],n)}`:\"\",c=i?e(\"gray\",$):\"\";return`${s}${c}${a}${n.trim()?`\n${c}`:\"\"}`}default:{const a=i?`${e(\"cyan\",$)} `:\"\",c=i?e(\"cyan\",x):\"\";return`${s}${a}${u}\n${c}\n`}}}}).prompt();export{$ as S_BAR,x as S_BAR_END,xt as S_BAR_END_RIGHT,st as S_BAR_H,lt as S_BAR_START,_t as S_BAR_START_RIGHT,et as S_CHECKBOX_ACTIVE,Y as S_CHECKBOX_INACTIVE,K as S_CHECKBOX_SELECTED,Gt as S_CONNECT_LEFT,dt as S_CORNER_BOTTOM_LEFT,$t as S_CORNER_BOTTOM_RIGHT,Mt as S_CORNER_TOP_LEFT,ct as S_CORNER_TOP_RIGHT,gt as S_ERROR,ht as S_INFO,Et as S_PASSWORD_MASK,z as S_RADIO_ACTIVE,U as S_RADIO_INACTIVE,Tt as S_STEP_ACTIVE,at as S_STEP_CANCEL,ut as S_STEP_ERROR,H as S_STEP_SUBMIT,pt as S_SUCCESS,mt as S_WARN,At as autocomplete,ie as autocompleteMultiselect,ae as box,me as cancel,ue as confirm,le as date,he as group,pe as groupMultiselect,ge as intro,ot as isCI,It as isTTY,F as limitOptions,R as log,fe as multiline,ve as multiselect,Se as note,ye as outro,Ce as password,Ie as path,_e as progress,xe as select,Ee as selectKey,ft as spinner,q as stream,P as symbol,yt as symbolBar,Oe as taskLog,Ge as tasks,Pe as text,tt as unicode,w as unicodeOr};\n//# sourceMappingURL=index.mjs.map\n","import { text } from '@clack/prompts'\n\nimport { type AuthHttp, defaultHttp, probeAuthEndpoint } from './auth'\nimport { normalizeApiUrl, readConfig, writeConfig } from './config-store'\nimport { MxsError } from './errors'\n\nexport interface OnboardingResult {\n apiUrl: string\n apiBase: string\n authBase: string\n apiVersion: number\n}\n\nexport interface OnboardingOptions {\n http?: AuthHttp\n initialApiUrl?: string\n isTTY?: boolean\n prompt?: (question: string) => Promise<string>\n}\n\nexport async function runOnboarding(\n opts: OnboardingOptions = {},\n): Promise<OnboardingResult> {\n const tty = opts.isTTY ?? Boolean(process.stdin.isTTY && process.stdout.isTTY)\n let input = opts.initialApiUrl\n if (!input) {\n if (!tty) {\n throw new MxsError({\n code: 'config.missing.api_url',\n message: 'API URL is not configured',\n hint: 'set MXS_API_URL or pass --api-url <url>, or run `mxs auth login` in an interactive shell',\n })\n }\n if (opts.prompt) {\n input = await opts.prompt('API URL of your mx-core server')\n } else {\n const answer = await text({\n message: 'API URL of your mx-core server',\n placeholder: 'https://blog.example.com',\n validate: (v) => (!v || v.trim().length === 0 ? 'required' : undefined),\n })\n if (typeof answer !== 'string') {\n throw new MxsError({\n code: 'config.missing.api_url',\n message: 'onboarding aborted',\n })\n }\n input = answer\n }\n }\n\n const apiUrl = normalizeApiUrl(input)\n const probed = await probeAuthEndpoint(apiUrl, opts.http ?? defaultHttp())\n\n const existing = await readConfig()\n await writeConfig({\n ...existing,\n api_url: probed.apiUrl,\n api_base: probed.apiBase,\n auth_base: probed.authBase,\n api_version: probed.apiVersion,\n client_id: existing.client_id ?? 'mxs-cli',\n })\n\n return probed\n}\n"],"x_google_ignoreList":[1,2,3,4,5,6,7],"mappings":"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"}
@@ -1,120 +0,0 @@
1
- //#region src/core/errors.ts
2
- var MxsError = class extends Error {
3
- code;
4
- details;
5
- hint;
6
- constructor(options) {
7
- super(options.message, options.cause ? { cause: options.cause } : void 0);
8
- this.name = "MxsError";
9
- this.code = options.code;
10
- this.details = options.details;
11
- this.hint = options.hint;
12
- }
13
- toJSON() {
14
- return {
15
- ok: false,
16
- code: this.code,
17
- message: this.message,
18
- ...this.details === void 0 ? {} : { details: this.details },
19
- ...this.hint === void 0 ? {} : { hint: this.hint }
20
- };
21
- }
22
- };
23
- function exitCodeForError(err) {
24
- if (!(err instanceof MxsError)) return 1;
25
- const code = err.code;
26
- if (code === "argv.parse") return 2;
27
- if (code === "auth.missing" || code === "auth.expired" || code === "auth.denied" || code === "auth.probe") return 3;
28
- if (code === "network.timeout" || code === "network.dns" || code === "network.refused") return 4;
29
- if (code === "validation.failed" || code === "validation.xml" || code === "config.missing.api_url" || code === "config.missing.token") return 5;
30
- if (code === "server.error") return 6;
31
- if (code === "resource.not_found") return 7;
32
- return 1;
33
- }
34
- //#endregion
35
- //#region src/core/output.ts
36
- const defaultOutputOptions = {
37
- json: false,
38
- output: "pretty-json",
39
- quiet: false,
40
- verbose: false
41
- };
42
- function isTTY(stream) {
43
- return Boolean(stream.isTTY);
44
- }
45
- function color(stream, code, text) {
46
- if (!isTTY(stream)) return text;
47
- return `[${code}m${text}`;
48
- }
49
- function emitSuccess(data, opts) {
50
- if (opts.json || opts.output === "json") {
51
- process.stdout.write(`${JSON.stringify({
52
- ok: true,
53
- data
54
- })}\n`);
55
- return;
56
- }
57
- if (data === null || data === void 0) return;
58
- if (typeof data === "string") {
59
- process.stdout.write(`${data}\n`);
60
- return;
61
- }
62
- process.stdout.write(`${JSON.stringify(data, null, 2)}\n`);
63
- }
64
- function emitInfo(message, opts) {
65
- if (opts.quiet || opts.json) return;
66
- process.stderr.write(`${message}\n`);
67
- }
68
- function emitWarn(message, opts) {
69
- if (opts.json) return;
70
- process.stderr.write(`${color(process.stderr, 33, "warn")}: ${message}\n`);
71
- }
72
- function emitError(err, opts) {
73
- if (err instanceof MxsError) {
74
- if (opts.json) {
75
- process.stdout.write(`${JSON.stringify(err.toJSON())}\n`);
76
- return;
77
- }
78
- process.stderr.write(`${color(process.stderr, 31, "✘")} ${err.message}\n`);
79
- if (err.details) {
80
- const detailLines = formatDetails(err.details);
81
- for (const line of detailLines) process.stderr.write(` · ${line}\n`);
82
- }
83
- if (err.hint) process.stderr.write(`\nhint: ${err.hint}\n`);
84
- return;
85
- }
86
- const message = err instanceof Error ? err.message : String(err);
87
- if (opts.json) {
88
- process.stdout.write(`${JSON.stringify({
89
- ok: false,
90
- code: "generic",
91
- message
92
- })}\n`);
93
- return;
94
- }
95
- process.stderr.write(`${color(process.stderr, 31, "✘")} ${message}\n`);
96
- }
97
- function formatDetails(details) {
98
- if (!details || typeof details !== "object") return [String(details)];
99
- if (Array.isArray(details)) return details.map((item) => formatIssue(item));
100
- if ("issues" in details && Array.isArray(details.issues)) return details.issues.map((issue) => formatIssue(issue));
101
- return [JSON.stringify(details)];
102
- }
103
- function formatIssue(issue) {
104
- if (!issue || typeof issue !== "object") return String(issue);
105
- const obj = issue;
106
- const path = Array.isArray(obj.path) ? obj.path.join(".") : "";
107
- const message = typeof obj.message === "string" ? obj.message : JSON.stringify(obj);
108
- const line = typeof obj.line === "number" ? ` (line ${obj.line})` : "";
109
- const suggestions = Array.isArray(obj.suggestions) ? ` — did you mean ${obj.suggestions.join(", ")}?` : "";
110
- return `${path ? `${path}: ` : ""}${message}${line}${suggestions}`;
111
- }
112
- function renderTable(rows, columns) {
113
- if (rows.length === 0) return "(no rows)";
114
- const widths = columns.map((col) => Math.max(col.length, ...rows.map((row) => String(row[col] ?? "").length)));
115
- return `${columns.map((col, i) => col.padEnd(widths[i] ?? 0)).join(" ")}\n${widths.map((w) => "-".repeat(w)).join(" ")}\n${rows.map((row) => columns.map((col, i) => String(row[col] ?? "").padEnd(widths[i] ?? 0)).join(" ")).join("\n")}`;
116
- }
117
- //#endregion
118
- export { emitWarn as a, exitCodeForError as c, emitSuccess as i, emitError as n, renderTable as o, emitInfo as r, MxsError as s, defaultOutputOptions as t };
119
-
120
- //# sourceMappingURL=output-BM7aBFwt.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"output-BM7aBFwt.mjs","names":[],"sources":["../src/core/errors.ts","../src/core/output.ts"],"sourcesContent":["export type MxsErrorCode =\n | 'generic'\n | 'argv.parse'\n | 'auth.missing'\n | 'auth.expired'\n | 'auth.denied'\n | 'auth.probe'\n | 'network.timeout'\n | 'network.dns'\n | 'network.refused'\n | 'validation.failed'\n | 'validation.xml'\n | 'server.error'\n | 'resource.not_found'\n | 'config.missing.api_url'\n | 'config.missing.token'\n | 'config.migration.failed'\n | 'profile.not_found'\n | (string & {})\n\nexport interface MxsErrorOptions {\n code: MxsErrorCode\n message: string\n details?: unknown\n hint?: string\n cause?: unknown\n}\n\nexport class MxsError extends Error {\n readonly code: MxsErrorCode\n readonly details?: unknown\n readonly hint?: string\n\n constructor(options: MxsErrorOptions) {\n super(options.message, options.cause ? { cause: options.cause } : undefined)\n this.name = 'MxsError'\n this.code = options.code\n this.details = options.details\n this.hint = options.hint\n }\n\n toJSON() {\n return {\n ok: false as const,\n code: this.code,\n message: this.message,\n ...(this.details === undefined ? {} : { details: this.details }),\n ...(this.hint === undefined ? {} : { hint: this.hint }),\n }\n }\n}\n\nexport function exitCodeForError(err: unknown): number {\n if (!(err instanceof MxsError)) return 1\n const code = err.code\n if (code === 'argv.parse') return 2\n if (\n code === 'auth.missing' ||\n code === 'auth.expired' ||\n code === 'auth.denied' ||\n code === 'auth.probe'\n )\n return 3\n if (\n code === 'network.timeout' ||\n code === 'network.dns' ||\n code === 'network.refused'\n )\n return 4\n if (\n code === 'validation.failed' ||\n code === 'validation.xml' ||\n code === 'config.missing.api_url' ||\n code === 'config.missing.token'\n )\n return 5\n if (code === 'server.error') return 6\n if (code === 'resource.not_found') return 7\n return 1\n}\n","import { MxsError } from './errors'\n\nexport interface OutputOptions {\n json: boolean\n output?: string\n quiet: boolean\n verbose: boolean\n}\n\nexport const defaultOutputOptions: OutputOptions = {\n json: false,\n output: 'pretty-json',\n quiet: false,\n verbose: false,\n}\n\nfunction isTTY(stream: NodeJS.WriteStream): boolean {\n return Boolean(stream.isTTY)\n}\n\nfunction color(stream: NodeJS.WriteStream, code: number, text: string): string {\n if (!isTTY(stream)) return text\n return `\u001b[${code}m${text}\u001b[0m`\n}\n\nexport function emitSuccess(data: unknown, opts: OutputOptions): void {\n if (opts.json || opts.output === 'json') {\n process.stdout.write(`${JSON.stringify({ ok: true, data })}\\n`)\n return\n }\n if (data === null || data === undefined) {\n return\n }\n if (typeof data === 'string') {\n process.stdout.write(`${data}\\n`)\n return\n }\n process.stdout.write(`${JSON.stringify(data, null, 2)}\\n`)\n}\n\nexport function emitInfo(message: string, opts: OutputOptions): void {\n if (opts.quiet || opts.json) return\n process.stderr.write(`${message}\\n`)\n}\n\nexport function emitWarn(message: string, opts: OutputOptions): void {\n if (opts.json) return\n process.stderr.write(`${color(process.stderr, 33, 'warn')}: ${message}\\n`)\n}\n\nexport function emitError(err: unknown, opts: OutputOptions): void {\n if (err instanceof MxsError) {\n if (opts.json) {\n process.stdout.write(`${JSON.stringify(err.toJSON())}\\n`)\n return\n }\n process.stderr.write(`${color(process.stderr, 31, '✘')} ${err.message}\\n`)\n if (err.details) {\n const detailLines = formatDetails(err.details)\n for (const line of detailLines) {\n process.stderr.write(` · ${line}\\n`)\n }\n }\n if (err.hint) {\n process.stderr.write(`\\nhint: ${err.hint}\\n`)\n }\n return\n }\n const message = err instanceof Error ? err.message : String(err)\n if (opts.json) {\n process.stdout.write(\n `${JSON.stringify({ ok: false, code: 'generic', message })}\\n`,\n )\n return\n }\n process.stderr.write(`${color(process.stderr, 31, '✘')} ${message}\\n`)\n}\n\nfunction formatDetails(details: unknown): string[] {\n if (!details || typeof details !== 'object') return [String(details)]\n if (Array.isArray(details)) {\n return details.map((item) => formatIssue(item))\n }\n if (\n 'issues' in (details as Record<string, unknown>) &&\n Array.isArray((details as any).issues)\n ) {\n return (details as any).issues.map((issue: unknown) => formatIssue(issue))\n }\n return [JSON.stringify(details)]\n}\n\nfunction formatIssue(issue: unknown): string {\n if (!issue || typeof issue !== 'object') return String(issue)\n const obj = issue as Record<string, unknown>\n const path = Array.isArray(obj.path) ? obj.path.join('.') : ''\n const message =\n typeof obj.message === 'string' ? obj.message : JSON.stringify(obj)\n const line = typeof obj.line === 'number' ? ` (line ${obj.line})` : ''\n const suggestions = Array.isArray(obj.suggestions)\n ? ` — did you mean ${obj.suggestions.join(', ')}?`\n : ''\n return `${path ? `${path}: ` : ''}${message}${line}${suggestions}`\n}\n\nexport function renderTable(\n rows: Record<string, unknown>[],\n columns: string[],\n): string {\n if (rows.length === 0) return '(no rows)'\n const widths = columns.map((col) =>\n Math.max(col.length, ...rows.map((row) => String(row[col] ?? '').length)),\n )\n const header = columns.map((col, i) => col.padEnd(widths[i] ?? 0)).join(' ')\n const sep = widths.map((w) => '-'.repeat(w)).join(' ')\n const body = rows\n .map((row) =>\n columns\n .map((col, i) => String(row[col] ?? '').padEnd(widths[i] ?? 0))\n .join(' '),\n )\n .join('\\n')\n return `${header}\\n${sep}\\n${body}`\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"shared-C2EAn5h_.mjs","names":[],"sources":["../src/commands/internal/shared.ts"],"sourcesContent":["import { ApiClient } from '../../core/api-client'\nimport { readConfig, resolveConfig, writeConfig } from '../../core/config-store'\nimport { MxsError } from '../../core/errors'\nimport { runOnboarding } from '../../core/onboarding'\nimport { emitInfo, type OutputOptions } from '../../core/output'\n\nexport interface GlobalFlags {\n json?: boolean\n apiUrl?: string\n token?: string\n apiKey?: string\n lang?: string\n quiet?: boolean\n verbose?: boolean\n dryRun?: boolean\n}\n\nexport async function resolveContext(flags: GlobalFlags, out: OutputOptions) {\n let resolved\n try {\n resolved = await resolveConfig({\n apiUrl: flags.apiUrl,\n token: flags.token,\n apiKey: flags.apiKey,\n })\n } catch (err) {\n if (err instanceof MxsError && err.code === 'config.missing.api_url') {\n const probed = await runOnboarding()\n emitInfo(`saved ${probed.apiUrl} to config`, out)\n resolved = await resolveConfig({\n apiUrl: flags.apiUrl,\n token: flags.token,\n apiKey: flags.apiKey,\n })\n } else {\n throw err\n }\n }\n return resolved\n}\n\nexport function buildApiClient(\n resolved: Awaited<ReturnType<typeof resolveConfig>>,\n flags: GlobalFlags,\n) {\n return new ApiClient({\n apiBase: resolved.apiBase,\n authBase: resolved.authBase,\n clientId: resolved.clientId,\n token: resolved.token,\n apiKey: resolved.apiKey,\n autoRefresh:\n Boolean(resolved.token) &&\n !resolved.apiKey &&\n !flags.token &&\n !process.env.MXS_TOKEN,\n verbose: flags.verbose,\n })\n}\n\nexport function withLangQuery(\n flags: GlobalFlags,\n query: Record<string, unknown> = {},\n): Record<string, unknown> {\n if (!flags.lang) return query\n return { ...query, lang: flags.lang }\n}\n\nexport async function persistApiVersion(version: number) {\n const cfg = await readConfig()\n if (cfg.api_version === version) return\n await writeConfig({ ...cfg, api_version: version })\n}\n"],"mappings":";;;;AAiBA,eAAsB,eAAe,OAAoB,KAAoB;CAC3E,IAAI;CACJ,IAAI;EACF,WAAW,MAAM,cAAc;GAC7B,QAAQ,MAAM;GACd,OAAO,MAAM;GACb,QAAQ,MAAM;EAChB,CAAC;CACH,SAAS,KAAK;EACZ,IAAI,eAAe,YAAY,IAAI,SAAS,0BAA0B;GAEpE,SAAS,UAAS,MADG,cAAc,GACV,OAAO,aAAa,GAAG;GAChD,WAAW,MAAM,cAAc;IAC7B,QAAQ,MAAM;IACd,OAAO,MAAM;IACb,QAAQ,MAAM;GAChB,CAAC;EACH,OACE,MAAM;CAEV;CACA,OAAO;AACT;AAEA,SAAgB,eACd,UACA,OACA;CACA,OAAO,IAAI,UAAU;EACnB,SAAS,SAAS;EAClB,UAAU,SAAS;EACnB,UAAU,SAAS;EACnB,OAAO,SAAS;EAChB,QAAQ,SAAS;EACjB,aACE,QAAQ,SAAS,KAAK,KACtB,CAAC,SAAS,UACV,CAAC,MAAM,SACP,CAAC,QAAQ,IAAI;EACf,SAAS,MAAM;CACjB,CAAC;AACH;AAEA,SAAgB,cACd,OACA,QAAiC,CAAC,GACT;CACzB,IAAI,CAAC,MAAM,MAAM,OAAO;CACxB,OAAO;EAAE,GAAG;EAAO,MAAM,MAAM;CAAK;AACtC"}
@@ -1,22 +0,0 @@
1
- import { i as emitSuccess } from "./output-BM7aBFwt.mjs";
2
- import { s as readCredentials } from "./config-store-WL7dNMS6.mjs";
3
- import { i as isExpiringSoon } from "./auth-OeKZZ_2x.mjs";
4
- //#region src/commands/auth/status.ts
5
- async function run(_flags, out) {
6
- const cred = await readCredentials();
7
- if (!cred) {
8
- emitSuccess({ authenticated: false }, out);
9
- return;
10
- }
11
- emitSuccess({
12
- authenticated: true,
13
- expires_at: cred.expires_at,
14
- expiring_soon: isExpiringSoon(cred),
15
- has_refresh: Boolean(cred.refresh_token),
16
- user: cred.user ?? null
17
- }, out);
18
- }
19
- //#endregion
20
- export { run };
21
-
22
- //# sourceMappingURL=status-Cvyrrx-J.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status-Cvyrrx-J.mjs","names":[],"sources":["../src/commands/auth/status.ts"],"sourcesContent":["import { isExpiringSoon } from '../../core/auth'\nimport { readCredentials } from '../../core/config-store'\nimport { emitSuccess, type OutputOptions } from '../../core/output'\nimport { type GlobalFlags } from '../internal/shared'\n\nexport async function run(_flags: GlobalFlags, out: OutputOptions) {\n const cred = await readCredentials()\n if (!cred) {\n emitSuccess({ authenticated: false }, out)\n return\n }\n emitSuccess(\n {\n authenticated: true,\n expires_at: cred.expires_at,\n expiring_soon: isExpiringSoon(cred),\n has_refresh: Boolean(cred.refresh_token),\n user: cred.user ?? null,\n },\n out,\n )\n}\n"],"mappings":";;;;AAKA,eAAsB,IAAI,QAAqB,KAAoB;CACjE,MAAM,OAAO,MAAM,gBAAgB;CACnC,IAAI,CAAC,MAAM;EACT,YAAY,EAAE,eAAe,MAAM,GAAG,GAAG;EACzC;CACF;CACA,YACE;EACE,eAAe;EACf,YAAY,KAAK;EACjB,eAAe,eAAe,IAAI;EAClC,aAAa,QAAQ,KAAK,aAAa;EACvC,MAAM,KAAK,QAAQ;CACrB,GACA,GACF;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"whoami-UwcdRchK.mjs","names":[],"sources":["../src/commands/auth/whoami.ts"],"sourcesContent":["import { readCredentials } from '../../core/config-store'\nimport { MxsError } from '../../core/errors'\nimport { emitSuccess, type OutputOptions } from '../../core/output'\nimport { buildApiClient, type GlobalFlags, resolveContext } from '../internal/shared'\n\nexport async function run(flags: GlobalFlags, out: OutputOptions) {\n const ctx = await resolveContext(flags, out)\n const cred = await readCredentials()\n if (!cred && !ctx.token && !ctx.apiKey) {\n throw new MxsError({\n code: 'auth.missing',\n message: 'not authenticated',\n hint: 'run `mxs auth login`',\n })\n }\n const client = buildApiClient(ctx, flags)\n const session =\n ctx.token && !ctx.apiKey\n ? await client.request('/auth/session').then((res) => res.data)\n : null\n emitSuccess(\n {\n user: session ?? cred?.user ?? null,\n api_url: ctx.apiUrl,\n },\n out,\n )\n}\n"],"mappings":";;;;AAKA,eAAsB,IAAI,OAAoB,KAAoB;CAChE,MAAM,MAAM,MAAM,eAAe,OAAO,GAAG;CAC3C,MAAM,OAAO,MAAM,gBAAgB;CACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,IAAI,QAC9B,MAAM,IAAI,SAAS;EACjB,MAAM;EACN,SAAS;EACT,MAAM;CACR,CAAC;CAEH,MAAM,SAAS,eAAe,KAAK,KAAK;CAKxC,YACE;EACE,OALF,IAAI,SAAS,CAAC,IAAI,SACd,MAAM,OAAO,QAAQ,eAAe,EAAE,MAAM,QAAQ,IAAI,IAAI,IAC5D,SAGe,MAAM,QAAQ;EAC/B,SAAS,IAAI;CACf,GACA,GACF;AACF"}