create-pixi-vn 2.0.3 → 2.0.5

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 (125) hide show
  1. package/dist/index.mjs +36 -36
  2. package/index.js +1 -1
  3. package/package.json +5 -4
  4. package/template-react-vite-muijoy/package-lock.json +4 -4
  5. package/template-react-vite-muijoy/package.json +1 -1
  6. package/template-react-vite-muijoy/src/assets/ink-manifest.gen.json +1 -0
  7. package/template-react-vite-muijoy/src/components/menus/main-menu.tsx +1 -2
  8. package/template-react-vite-muijoy/src/components/menus/save-menu/index.tsx +5 -6
  9. package/template-react-vite-muijoy/src/content/labels/start.label.ts +2 -4
  10. package/{template-react-vite-muijoy-tauri/src/lib/stores/useGameSaveScreenStore.ts → template-react-vite-muijoy/src/lib/stores/save-menu-pagination-store.ts} +3 -3
  11. package/template-react-vite-muijoy/src/pixi-vn-keys.gen.d.ts +20 -0
  12. package/template-react-vite-muijoy/vite.config.ts +1 -0
  13. package/template-react-vite-muijoy-ink/package-lock.json +3 -3
  14. package/template-react-vite-muijoy-ink/package.json +2 -2
  15. package/template-react-vite-muijoy-ink/src/components/menus/save-menu/index.tsx +5 -6
  16. package/{template-react-vite-muijoy-ink-tauri/src/lib/stores/useGameSaveScreenStore.ts → template-react-vite-muijoy-ink/src/lib/stores/save-menu-pagination-store.ts} +3 -3
  17. package/template-react-vite-muijoy-ink/src/pixi-vn-keys.gen.d.ts +22 -0
  18. package/template-react-vite-muijoy-ink/vite.config.ts +1 -0
  19. package/template-react-vite-muijoy-ink-tauri/package-lock.json +3 -3
  20. package/template-react-vite-muijoy-ink-tauri/package.json +2 -2
  21. package/template-react-vite-muijoy-ink-tauri/src/components/menus/save-menu/index.tsx +5 -6
  22. package/{template-react-vite-muijoy-ink/src/lib/stores/useGameSaveScreenStore.ts → template-react-vite-muijoy-ink-tauri/src/lib/stores/save-menu-pagination-store.ts} +3 -3
  23. package/template-react-vite-muijoy-ink-tauri/src/pixi-vn-keys.gen.d.ts +22 -0
  24. package/template-react-vite-muijoy-ink-tauri/vite.config.ts +1 -0
  25. package/template-react-vite-muijoy-tauri/package-lock.json +4 -4
  26. package/template-react-vite-muijoy-tauri/package.json +1 -1
  27. package/template-react-vite-muijoy-tauri/src/assets/ink-manifest.gen.json +1 -0
  28. package/template-react-vite-muijoy-tauri/src/components/menus/main-menu.tsx +1 -2
  29. package/template-react-vite-muijoy-tauri/src/components/menus/save-menu/index.tsx +5 -6
  30. package/template-react-vite-muijoy-tauri/src/content/labels/start.label.ts +2 -4
  31. package/{template-react-vite-muijoy/src/lib/stores/useGameSaveScreenStore.ts → template-react-vite-muijoy-tauri/src/lib/stores/save-menu-pagination-store.ts} +3 -3
  32. package/template-react-vite-muijoy-tauri/src/pixi-vn-keys.gen.d.ts +20 -0
  33. package/template-react-vite-muijoy-tauri/vite.config.ts +1 -0
  34. package/template-react-vite-muijoy-electron/.eslintrc.cjs +0 -29
  35. package/template-react-vite-muijoy-electron/.vscode/extensions.json +0 -9
  36. package/template-react-vite-muijoy-electron/.vscode/launch.json +0 -32
  37. package/template-react-vite-muijoy-electron/.vscode/settings.json +0 -49
  38. package/template-react-vite-muijoy-electron/README.md +0 -207
  39. package/template-react-vite-muijoy-electron/_gitignore +0 -107
  40. package/template-react-vite-muijoy-electron/forge.config.cts +0 -73
  41. package/template-react-vite-muijoy-electron/forge.env.d.ts +0 -1
  42. package/template-react-vite-muijoy-electron/index.html +0 -13
  43. package/template-react-vite-muijoy-electron/ionic.config.json +0 -7
  44. package/template-react-vite-muijoy-electron/package-lock.json +0 -16984
  45. package/template-react-vite-muijoy-electron/package.json +0 -85
  46. package/template-react-vite-muijoy-electron/public/apple-touch-icon.png +0 -0
  47. package/template-react-vite-muijoy-electron/public/favicon.ico +0 -0
  48. package/template-react-vite-muijoy-electron/public/mask-icon.svg +0 -890
  49. package/template-react-vite-muijoy-electron/public/pixi-vn.svg +0 -23
  50. package/template-react-vite-muijoy-electron/public/pwa-192x192.png +0 -0
  51. package/template-react-vite-muijoy-electron/public/pwa-512x512.png +0 -0
  52. package/template-react-vite-muijoy-electron/public/robots.txt +0 -3
  53. package/template-react-vite-muijoy-electron/src/App.css +0 -42
  54. package/template-react-vite-muijoy-electron/src/App.tsx +0 -16
  55. package/template-react-vite-muijoy-electron/src/AppRoutes.tsx +0 -66
  56. package/template-react-vite-muijoy-electron/src/Home.tsx +0 -27
  57. package/template-react-vite-muijoy-electron/src/Imports.tsx +0 -34
  58. package/template-react-vite-muijoy-electron/src/atoms/autoInfoState.ts +0 -50
  59. package/template-react-vite-muijoy-electron/src/atoms/dialogueCardHeightState.ts +0 -23
  60. package/template-react-vite-muijoy-electron/src/atoms/dialogueCardImageWidthState.ts +0 -23
  61. package/template-react-vite-muijoy-electron/src/atoms/hideInterfaceState.ts +0 -6
  62. package/template-react-vite-muijoy-electron/src/atoms/nextStepLoadingState.ts +0 -6
  63. package/template-react-vite-muijoy-electron/src/atoms/openGameSaveScreenState.ts +0 -6
  64. package/template-react-vite-muijoy-electron/src/atoms/openHistoryScreenState.ts +0 -6
  65. package/template-react-vite-muijoy-electron/src/atoms/openSettingsState.ts +0 -6
  66. package/template-react-vite-muijoy-electron/src/atoms/saveLoadAlertState.ts +0 -26
  67. package/template-react-vite-muijoy-electron/src/atoms/saveScreenPageState.ts +0 -23
  68. package/template-react-vite-muijoy-electron/src/atoms/skipEnabledState.ts +0 -6
  69. package/template-react-vite-muijoy-electron/src/atoms/typewriterDelayState.ts +0 -23
  70. package/template-react-vite-muijoy-electron/src/atoms/typewriterIsAnimatedState.ts +0 -6
  71. package/template-react-vite-muijoy-electron/src/components/ChoiceButton.tsx +0 -19
  72. package/template-react-vite-muijoy-electron/src/components/DragHandleDivider.tsx +0 -40
  73. package/template-react-vite-muijoy-electron/src/components/MenuButton.tsx +0 -37
  74. package/template-react-vite-muijoy-electron/src/components/ModalConfirmation.tsx +0 -70
  75. package/template-react-vite-muijoy-electron/src/components/ModalDialog.tsx +0 -103
  76. package/template-react-vite-muijoy-electron/src/components/NextButton.tsx +0 -94
  77. package/template-react-vite-muijoy-electron/src/components/SettingButton.tsx +0 -44
  78. package/template-react-vite-muijoy-electron/src/components/SliderResizer.tsx +0 -53
  79. package/template-react-vite-muijoy-electron/src/components/TextMenuButton.tsx +0 -41
  80. package/template-react-vite-muijoy-electron/src/components/Typewriter.tsx +0 -335
  81. package/template-react-vite-muijoy-electron/src/components/TypographyShadow.tsx +0 -15
  82. package/template-react-vite-muijoy-electron/src/i18n.ts +0 -29
  83. package/template-react-vite-muijoy-electron/src/index.css +0 -9
  84. package/template-react-vite-muijoy-electron/src/interceptors/EventInterceptor.tsx +0 -49
  85. package/template-react-vite-muijoy-electron/src/interceptors/SkipAutoInterceptor.tsx +0 -67
  86. package/template-react-vite-muijoy-electron/src/main.tsx +0 -39
  87. package/template-react-vite-muijoy-electron/src/models/Character.ts +0 -86
  88. package/template-react-vite-muijoy-electron/src/models/GameSaveData.ts +0 -9
  89. package/template-react-vite-muijoy-electron/src/pixi-vn.d.ts +0 -36
  90. package/template-react-vite-muijoy-electron/src/providers/ThemeProvider.tsx +0 -165
  91. package/template-react-vite-muijoy-electron/src/screens/ChoiceMenu.tsx +0 -130
  92. package/template-react-vite-muijoy-electron/src/screens/GameSaveScreen.tsx +0 -274
  93. package/template-react-vite-muijoy-electron/src/screens/HistoryScreen.tsx +0 -155
  94. package/template-react-vite-muijoy-electron/src/screens/LoadingScreen.tsx +0 -40
  95. package/template-react-vite-muijoy-electron/src/screens/MainMenu.tsx +0 -98
  96. package/template-react-vite-muijoy-electron/src/screens/NarrationScreen.tsx +0 -220
  97. package/template-react-vite-muijoy-electron/src/screens/QuickTools.tsx +0 -168
  98. package/template-react-vite-muijoy-electron/src/screens/Settings.tsx +0 -536
  99. package/template-react-vite-muijoy-electron/src/screens/modals/SaveLoadAlert.tsx +0 -135
  100. package/template-react-vite-muijoy-electron/src/screens/modals/TextInput.tsx +0 -61
  101. package/template-react-vite-muijoy-electron/src/use_query/useQueryInterface.ts +0 -73
  102. package/template-react-vite-muijoy-electron/src/use_query/useQueryLastSave.ts +0 -18
  103. package/template-react-vite-muijoy-electron/src/use_query/useQuerySaves.ts +0 -18
  104. package/template-react-vite-muijoy-electron/src/utilities/actions-utility.ts +0 -10
  105. package/template-react-vite-muijoy-electron/src/utilities/component-utility.ts +0 -25
  106. package/template-react-vite-muijoy-electron/src/utilities/indexedDB-utility.ts +0 -196
  107. package/template-react-vite-muijoy-electron/src/utilities/navigate-utility.ts +0 -18
  108. package/template-react-vite-muijoy-electron/src/utilities/save-utility.ts +0 -125
  109. package/template-react-vite-muijoy-electron/src/values/characters.ts +0 -11
  110. package/template-react-vite-muijoy-electron/src/values/translations/strings_en.json +0 -60
  111. package/template-react-vite-muijoy-electron/src/vite-env.d.ts +0 -4
  112. package/template-react-vite-muijoy-electron/src-electron/icons/icon.icns +0 -0
  113. package/template-react-vite-muijoy-electron/src-electron/icons/icon.ico +0 -0
  114. package/template-react-vite-muijoy-electron/src-electron/icons/icon.png +0 -0
  115. package/template-react-vite-muijoy-electron/src-electron/index.css +0 -7
  116. package/template-react-vite-muijoy-electron/src-electron/main.ts +0 -59
  117. package/template-react-vite-muijoy-electron/src-electron/preload.ts +0 -2
  118. package/template-react-vite-muijoy-electron/src-electron/renderer.ts +0 -31
  119. package/template-react-vite-muijoy-electron/tsconfig.json +0 -32
  120. package/template-react-vite-muijoy-electron/tsconfig.node.json +0 -11
  121. package/template-react-vite-muijoy-electron/vite.base.config.ts +0 -93
  122. package/template-react-vite-muijoy-electron/vite.config.ts +0 -54
  123. package/template-react-vite-muijoy-electron/vite.main.config.ts +0 -9
  124. package/template-react-vite-muijoy-electron/vite.preload.config.ts +0 -9
  125. package/template-react-vite-muijoy-electron/vite.renderer.config.ts +0 -9
package/dist/index.mjs CHANGED
@@ -1,65 +1,65 @@
1
- import{styleText as l}from"node:util";import B,{stdin as Ce,stdout as ve}from"node:process";import*as oe from"node:readline";import ut from"node:readline";import{ReadStream as Oe}from"node:tty";import I from"node:fs";import A from"node:path";import{execa as K}from"execa";import ct from"open";import Le from"which";import{fileURLToPath as lt}from"node:url";const pt=(()=>{const e=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return t=>{let r=0;for(e.lastIndex=0;e.test(t);)r+=1;return t.length-r}})(),ht=e=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,ft=e=>e===8987||e===9001||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12771||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=19903||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e>=131072&&e<=196605||e>=196608&&e<=262141,dt=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,mt=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,Ne=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,gt=/\t{1,1000}/y,je=new RegExp("[\\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"),vt=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,wt=new RegExp("\\p{M}+","gu"),$t={limit:1/0,ellipsis:""},De=(e,t={},r={})=>{const i=t.limit??1/0,n=t.ellipsis??"",a=t?.ellipsisWidth??(n?De(n,$t,r).width:0),s=0,o=r.controlWidth??0,u=r.tabWidth??8,c=r.emojiWidth??2,v=2,m=r.regularWidth??1,p=r.wideWidth??v,w=[[vt,m],[dt,s],[mt,o],[gt,u],[je,c],[Ne,p]];let f=0,h=0,g=e.length,E=0,j=!1,R=g,S=Math.max(0,i-a),_=0,y=0,d=0,b=0;e:for(;;){if(y>_||h>=g&&h>f){const x=e.slice(_,y)||e.slice(f,h);E=0;for(const $ of x.replaceAll(wt,"")){const C=$.codePointAt(0)||0;if(ht(C)?b=v:ft(C)?b=p:b=m,d+b>S&&(R=Math.min(R,Math.max(_,f)+E)),d+b>i){j=!0;break e}E+=$.length,d+=b}_=y=0}if(h>=g)break e;for(let x=0,$=w.length;x<$;x++){const[C,V]=w[x];if(C.lastIndex=h,C.test(e)){if(E=C===Ne?pt(e.slice(h,C.lastIndex)):C===je?1:C.lastIndex-h,b=E*V,d+b>S&&(R=Math.min(R,h+Math.floor((S-d)/V))),d+b>i){j=!0;break e}d+=b,_=f,y=h,h=f=C.lastIndex;continue e}}h+=1}return{width:j?S:d,index:j?R:g,truncated:j,ellipsed:j&&i>=a}},bt={limit:1/0,ellipsis:"",ellipsisWidth:0},J=(e,t={})=>De(e,bt,t).width,ue="\x1B",Me="\x9B",yt=39,we="\x07",Ve="[",It="]",Ue="m",$e=`${It}8;;`,Pe=new RegExp(`(?:\\${Ve}(?<code>\\d+)m|\\${$e}(?<uri>.*)${we})`,"y"),Ge=e=>{if(e>=30&&e<=37||e>=90&&e<=97)return 39;if(e>=40&&e<=47||e>=100&&e<=107)return 49;if(e===1||e===2)return 22;if(e===3)return 23;if(e===4)return 24;if(e===7)return 27;if(e===8)return 28;if(e===9)return 29;if(e===0)return 0},We=e=>`${ue}${Ve}${e}${Ue}`,Be=e=>`${ue}${$e}${e}${we}`,be=(e,t,r)=>{const i=t[Symbol.iterator]();let n=!1,a=!1,s=e.at(-1),o=s===void 0?0:J(s),u=i.next(),c=i.next(),v=0;for(;!u.done;){const m=u.value,p=J(m);o+p<=r?e[e.length-1]+=m:(e.push(m),o=0),(m===ue||m===Me)&&(n=!0,a=t.startsWith($e,v+1)),n?a?m===we&&(n=!1,a=!1):m===Ue&&(n=!1):(o+=p,o===r&&!c.done&&(e.push(""),o=0)),u=c,c=i.next(),v+=m.length}s=e.at(-1),!o&&s!==void 0&&s.length&&e.length>1&&(e[e.length-2]+=e.pop())},Et=e=>{const t=e.split(" ");let r=t.length;for(;r&&!J(t[r-1]);)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},St=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let i="",n,a;const s=e.split(" ");let o=[""],u=0;for(let m=0;m<s.length;m++){const p=s[m];if(r.trim!==!1){const f=o.at(-1)??"",h=f.trimStart();f.length!==h.length&&(o[o.length-1]=h,u=J(h))}m!==0&&(u>=t&&(r.wordWrap===!1||r.trim===!1)&&(o.push(""),u=0),(u||r.trim===!1)&&(o[o.length-1]+=" ",u++));const w=J(p);if(r.hard&&w>t){const f=t-u,h=1+Math.floor((w-f-1)/t);Math.floor((w-1)/t)<h&&o.push(""),be(o,p,t),u=J(o.at(-1)??"");continue}if(u+w>t&&u&&w){if(r.wordWrap===!1&&u<t){be(o,p,t),u=J(o.at(-1)??"");continue}o.push(""),u=0}if(u+w>t&&r.wordWrap===!1){be(o,p,t),u=J(o.at(-1)??"");continue}o[o.length-1]+=p,u+=w}r.trim!==!1&&(o=o.map(m=>Et(m)));const c=o.join(`
2
- `);let v=!1;for(let m=0;m<c.length;m++){const p=c[m];if(i+=p,v)v=!1;else if(v=p>="\uD800"&&p<="\uDBFF",v)continue;if(p===ue||p===Me){Pe.lastIndex=m+1;const f=Pe.exec(c)?.groups;if(f?.code!==void 0){const h=Number.parseFloat(f.code);n=h===yt?void 0:h}else f?.uri!==void 0&&(a=f.uri.length===0?void 0:f.uri)}if(c[m+1]===`
3
- `){a&&(i+=Be(""));const w=n?Ge(n):void 0;n&&w&&(i+=We(w))}else p===`
4
- `&&(n&&Ge(n)&&(i+=We(n)),a&&(i+=Be(a)))}return i},_t=/\r?\n/;function ee(e,t,r){return String(e).normalize().split(_t).map(i=>St(i,t,r)).join(`
5
- `)}function Ft(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var ye,Ke;function xt(){if(Ke)return ye;Ke=1;const e="\x1B",t=`${e}[`,r="\x07",i={to(s,o){return o?`${t}${o+1};${s+1}H`:`${t}${s+1}G`},move(s,o){let u="";return s<0?u+=`${t}${-s}D`:s>0&&(u+=`${t}${s}C`),o<0?u+=`${t}${-o}A`:o>0&&(u+=`${t}${o}B`),u},up:(s=1)=>`${t}${s}A`,down:(s=1)=>`${t}${s}B`,forward:(s=1)=>`${t}${s}C`,backward:(s=1)=>`${t}${s}D`,nextLine:(s=1)=>`${t}E`.repeat(s),prevLine:(s=1)=>`${t}F`.repeat(s),left:`${t}G`,hide:`${t}?25l`,show:`${t}?25h`,save:`${e}7`,restore:`${e}8`},n={up:(s=1)=>`${t}S`.repeat(s),down:(s=1)=>`${t}T`.repeat(s)},a={screen:`${t}2J`,up:(s=1)=>`${t}1J`.repeat(s),down:(s=1)=>`${t}J`.repeat(s),line:`${t}2K`,lineEnd:`${t}K`,lineStart:`${t}1K`,lines(s){let o="";for(let u=0;u<s;u++)o+=this.line+(u<s-1?i.up():"");return s&&(o+=i.left),o}};return ye={cursor:i,scroll:n,erase:a,beep:r},ye}var L=xt();function ce(e,t,r){if(!r.some(s=>!s.disabled))return e;const i=e+t,n=Math.max(r.length-1,0),a=i<0?n:i>n?0:i;return r[a].disabled?ce(a,t<0?-1:1,r):a}const kt=["up","down","left","right","space","enter","cancel"],H={actions:new Set(kt),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["","cancel"],["escape","cancel"]]),messages:{cancel:"Canceled",error:"Something went wrong"},withGuide:!0};function Ie(e,t){if(typeof e=="string")return H.aliases.get(e)===t;for(const r of e)if(r!==void 0&&Ie(r,t))return!0;return!1}function Tt(e,t){if(e===t)return;const r=e.split(`
1
+ import{styleText as l}from"node:util";import G,{stdin as Ce,stdout as ve}from"node:process";import*as oe from"node:readline";import ut from"node:readline";import{ReadStream as Oe}from"node:tty";import E from"node:fs";import A from"node:path";import{execa as K}from"execa";import ct from"open";import Le from"which";import{fileURLToPath as lt}from"node:url";const pt=(()=>{const e=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return t=>{let r=0;for(e.lastIndex=0;e.test(t);)r+=1;return t.length-r}})(),ft=e=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,ht=e=>e===8987||e===9001||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12771||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=19903||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e>=131072&&e<=196605||e>=196608&&e<=262141,dt=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,mt=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,Ne=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,gt=/\t{1,1000}/y,je=new RegExp("[\\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"),vt=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,wt=new RegExp("\\p{M}+","gu"),yt={limit:1/0,ellipsis:""},De=(e,t={},r={})=>{const i=t.limit??1/0,n=t.ellipsis??"",a=t?.ellipsisWidth??(n?De(n,yt,r).width:0),s=0,o=r.controlWidth??0,u=r.tabWidth??8,c=r.emojiWidth??2,v=2,m=r.regularWidth??1,p=r.wideWidth??v,w=[[vt,m],[dt,s],[mt,o],[gt,u],[je,c],[Ne,p]];let h=0,f=0,g=e.length,I=0,j=!1,k=g,S=Math.max(0,i-a),_=0,$=0,d=0,b=0;e:for(;;){if($>_||f>=g&&f>h){const T=e.slice(_,$)||e.slice(h,f);I=0;for(const y of T.replaceAll(wt,"")){const C=y.codePointAt(0)||0;if(ft(C)?b=v:ht(C)?b=p:b=m,d+b>S&&(k=Math.min(k,Math.max(_,h)+I)),d+b>i){j=!0;break e}I+=y.length,d+=b}_=$=0}if(f>=g)break e;for(let T=0,y=w.length;T<y;T++){const[C,V]=w[T];if(C.lastIndex=f,C.test(e)){if(I=C===Ne?pt(e.slice(f,C.lastIndex)):C===je?1:C.lastIndex-f,b=I*V,d+b>S&&(k=Math.min(k,f+Math.floor((S-d)/V))),d+b>i){j=!0;break e}d+=b,_=h,$=f,f=h=C.lastIndex;continue e}}f+=1}return{width:j?S:d,index:j?k:g,truncated:j,ellipsed:j&&i>=a}},bt={limit:1/0,ellipsis:"",ellipsisWidth:0},J=(e,t={})=>De(e,bt,t).width,ue="\x1B",Me="\x9B",$t=39,we="\x07",Ve="[",Et="]",Ue="m",ye=`${Et}8;;`,Pe=new RegExp(`(?:\\${Ve}(?<code>\\d+)m|\\${ye}(?<uri>.*)${we})`,"y"),Be=e=>{if(e>=30&&e<=37||e>=90&&e<=97)return 39;if(e>=40&&e<=47||e>=100&&e<=107)return 49;if(e===1||e===2)return 22;if(e===3)return 23;if(e===4)return 24;if(e===7)return 27;if(e===8)return 28;if(e===9)return 29;if(e===0)return 0},We=e=>`${ue}${Ve}${e}${Ue}`,Ge=e=>`${ue}${ye}${e}${we}`,be=(e,t,r)=>{const i=t[Symbol.iterator]();let n=!1,a=!1,s=e.at(-1),o=s===void 0?0:J(s),u=i.next(),c=i.next(),v=0;for(;!u.done;){const m=u.value,p=J(m);o+p<=r?e[e.length-1]+=m:(e.push(m),o=0),(m===ue||m===Me)&&(n=!0,a=t.startsWith(ye,v+1)),n?a?m===we&&(n=!1,a=!1):m===Ue&&(n=!1):(o+=p,o===r&&!c.done&&(e.push(""),o=0)),u=c,c=i.next(),v+=m.length}s=e.at(-1),!o&&s!==void 0&&s.length&&e.length>1&&(e[e.length-2]+=e.pop())},It=e=>{const t=e.split(" ");let r=t.length;for(;r&&!J(t[r-1]);)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},St=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let i="",n,a;const s=e.split(" ");let o=[""],u=0;for(let m=0;m<s.length;m++){const p=s[m];if(r.trim!==!1){const h=o.at(-1)??"",f=h.trimStart();h.length!==f.length&&(o[o.length-1]=f,u=J(f))}m!==0&&(u>=t&&(r.wordWrap===!1||r.trim===!1)&&(o.push(""),u=0),(u||r.trim===!1)&&(o[o.length-1]+=" ",u++));const w=J(p);if(r.hard&&w>t){const h=t-u,f=1+Math.floor((w-h-1)/t);Math.floor((w-1)/t)<f&&o.push(""),be(o,p,t),u=J(o.at(-1)??"");continue}if(u+w>t&&u&&w){if(r.wordWrap===!1&&u<t){be(o,p,t),u=J(o.at(-1)??"");continue}o.push(""),u=0}if(u+w>t&&r.wordWrap===!1){be(o,p,t),u=J(o.at(-1)??"");continue}o[o.length-1]+=p,u+=w}r.trim!==!1&&(o=o.map(m=>It(m)));const c=o.join(`
2
+ `);let v=!1;for(let m=0;m<c.length;m++){const p=c[m];if(i+=p,v)v=!1;else if(v=p>="\uD800"&&p<="\uDBFF",v)continue;if(p===ue||p===Me){Pe.lastIndex=m+1;const h=Pe.exec(c)?.groups;if(h?.code!==void 0){const f=Number.parseFloat(h.code);n=f===$t?void 0:f}else h?.uri!==void 0&&(a=h.uri.length===0?void 0:h.uri)}if(c[m+1]===`
3
+ `){a&&(i+=Ge(""));const w=n?Be(n):void 0;n&&w&&(i+=We(w))}else p===`
4
+ `&&(n&&Be(n)&&(i+=We(n)),a&&(i+=Ge(a)))}return i},_t=/\r?\n/;function ee(e,t,r){return String(e).normalize().split(_t).map(i=>St(i,t,r)).join(`
5
+ `)}function Ft(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var $e,Ke;function Tt(){if(Ke)return $e;Ke=1;const e="\x1B",t=`${e}[`,r="\x07",i={to(s,o){return o?`${t}${o+1};${s+1}H`:`${t}${s+1}G`},move(s,o){let u="";return s<0?u+=`${t}${-s}D`:s>0&&(u+=`${t}${s}C`),o<0?u+=`${t}${-o}A`:o>0&&(u+=`${t}${o}B`),u},up:(s=1)=>`${t}${s}A`,down:(s=1)=>`${t}${s}B`,forward:(s=1)=>`${t}${s}C`,backward:(s=1)=>`${t}${s}D`,nextLine:(s=1)=>`${t}E`.repeat(s),prevLine:(s=1)=>`${t}F`.repeat(s),left:`${t}G`,hide:`${t}?25l`,show:`${t}?25h`,save:`${e}7`,restore:`${e}8`},n={up:(s=1)=>`${t}S`.repeat(s),down:(s=1)=>`${t}T`.repeat(s)},a={screen:`${t}2J`,up:(s=1)=>`${t}1J`.repeat(s),down:(s=1)=>`${t}J`.repeat(s),line:`${t}2K`,lineEnd:`${t}K`,lineStart:`${t}1K`,lines(s){let o="";for(let u=0;u<s;u++)o+=this.line+(u<s-1?i.up():"");return s&&(o+=i.left),o}};return $e={cursor:i,scroll:n,erase:a,beep:r},$e}var L=Tt();function ce(e,t,r){if(!r.some(s=>!s.disabled))return e;const i=e+t,n=Math.max(r.length-1,0),a=i<0?n:i>n?0:i;return r[a].disabled?ce(a,t<0?-1:1,r):a}const xt=["up","down","left","right","space","enter","cancel"],H={actions:new Set(xt),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["","cancel"],["escape","cancel"]]),messages:{cancel:"Canceled",error:"Something went wrong"},withGuide:!0};function Ee(e,t){if(typeof e=="string")return H.aliases.get(e)===t;for(const r of e)if(r!==void 0&&Ee(r,t))return!0;return!1}function Rt(e,t){if(e===t)return;const r=e.split(`
6
6
  `),i=t.split(`
7
- `),n=Math.max(r.length,i.length),a=[];for(let s=0;s<n;s++)r[s]!==i[s]&&a.push(s);return{lines:a,numLinesBefore:r.length,numLinesAfter:i.length,numLines:n}}const At=globalThis.process.platform.startsWith("win"),Ee=Symbol("clack:cancel");function D(e){return e===Ee}function le(e,t){const r=e;r.isTTY&&r.setRawMode(t)}function Rt({input:e=Ce,output:t=ve,overwrite:r=!0,hideCursor:i=!0}={}){const n=oe.createInterface({input:e,output:t,prompt:"",tabSize:1});oe.emitKeypressEvents(e,n),e instanceof Oe&&e.isTTY&&e.setRawMode(!0);const a=(s,{name:o,sequence:u})=>{const c=String(s);if(Ie([c,o,u],"cancel")){i&&t.write(L.cursor.show),process.exit(0);return}if(!r)return;const v=o==="return"?0:-1,m=o==="return"?-1:0;oe.moveCursor(t,v,m,()=>{oe.clearLine(t,1,()=>{e.once("keypress",a)})})};return i&&t.write(L.cursor.hide),e.once("keypress",a),()=>{e.off("keypress",a),i&&t.write(L.cursor.show),e instanceof Oe&&e.isTTY&&!At&&e.setRawMode(!1),n.terminal=!1,n.close()}}const Se=e=>"columns"in e&&typeof e.columns=="number"?e.columns:80,He=e=>"rows"in e&&typeof e.rows=="number"?e.rows:20;function pe(e,t,r,i=r,n=r,a){const s=Se(e??ve);return ee(t,s-r.length,{hard:!0,trim:!1}).split(`
7
+ `),n=Math.max(r.length,i.length),a=[];for(let s=0;s<n;s++)r[s]!==i[s]&&a.push(s);return{lines:a,numLinesBefore:r.length,numLinesAfter:i.length,numLines:n}}const At=globalThis.process.platform.startsWith("win"),Ie=Symbol("clack:cancel");function D(e){return e===Ie}function le(e,t){const r=e;r.isTTY&&r.setRawMode(t)}function kt({input:e=Ce,output:t=ve,overwrite:r=!0,hideCursor:i=!0}={}){const n=oe.createInterface({input:e,output:t,prompt:"",tabSize:1});oe.emitKeypressEvents(e,n),e instanceof Oe&&e.isTTY&&e.setRawMode(!0);const a=(s,{name:o,sequence:u})=>{const c=String(s);if(Ee([c,o,u],"cancel")){i&&t.write(L.cursor.show),process.exit(0);return}if(!r)return;const v=o==="return"?0:-1,m=o==="return"?-1:0;oe.moveCursor(t,v,m,()=>{oe.clearLine(t,1,()=>{e.once("keypress",a)})})};return i&&t.write(L.cursor.hide),e.once("keypress",a),()=>{e.off("keypress",a),i&&t.write(L.cursor.show),e instanceof Oe&&e.isTTY&&!At&&e.setRawMode(!1),n.terminal=!1,n.close()}}const Se=e=>"columns"in e&&typeof e.columns=="number"?e.columns:80,He=e=>"rows"in e&&typeof e.rows=="number"?e.rows:20;function pe(e,t,r,i=r,n=r,a){const s=Se(e??ve);return ee(t,s-r.length,{hard:!0,trim:!1}).split(`
8
8
  `).map((o,u,c)=>{const v=o;return u===0?`${i}${v}`:u===c.length-1?`${n}${v}`:`${r}${v}`}).join(`
9
- `)}function Ct(e,t){if("~standard"in e){const r=e["~standard"].validate(t);if(r instanceof Promise)throw new TypeError("Schema validation must be synchronous. Update `validate()` and remove any asynchronous logic.");return r.issues?.at(0)?.message}return e(t)}class _e{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame="";_subscribers=new Map;_cursor=0;state="initial";error="";value;userInput="";constructor(t,r=!0){const{input:i=Ce,output:n=ve,render:a,signal:s,...o}=t;this.opts=o,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=a.bind(this),this._track=r,this._abortSignal=s,this.input=i,this.output=n}unsubscribe(){this._subscribers.clear()}setSubscriber(t,r){const i=this._subscribers.get(t)??[];i.push(r),this._subscribers.set(t,i)}on(t,r){this.setSubscriber(t,{cb:r})}once(t,r){this.setSubscriber(t,{cb:r,once:!0})}emit(t,...r){const i=this._subscribers.get(t)??[],n=[];for(const a of i)a.cb(...r),a.once&&n.push(()=>i.splice(i.indexOf(a),1));for(const a of n)a()}prompt(){return new Promise(t=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),t(Ee);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}this.rl=ut.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),le(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(L.cursor.show),this.output.off("resize",this.render),le(this.input,!1),t(this.value)}),this.once("cancel",()=>{this.output.write(L.cursor.show),this.output.off("resize",this.render),le(this.input,!1),t(Ee)})})}_isActionKey(t,r){return t===" "}_shouldSubmit(t,r){return!0}_setValue(t){this.value=t,this.emit("value",this.value)}_setUserInput(t,r){this.userInput=t??"",this.emit("userInput",this.userInput),r&&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,r){if(this._track&&r.name!=="return"&&(r.name&&this._isActionKey(t,r)&&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"),r?.name&&(!this._track&&H.aliases.has(r.name)&&this.emit("cursor",H.aliases.get(r.name)),H.actions.has(r.name)&&this.emit("cursor",r.name)),t&&(t.toLowerCase()==="y"||t.toLowerCase()==="n")&&this.emit("confirm",t.toLowerCase()==="y"),this.emit("key",t,r),r?.name==="return"&&this._shouldSubmit(t,r)){if(this.opts.validate){const i=Ct(this.opts.validate,this.value);i&&(this.error=i instanceof Error?i.message:i,this.state="error",this.rl?.write(this.userInput))}this.state!=="error"&&(this.state="submit")}Ie([t,r?.name,r?.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(`
9
+ `)}function Ct(e,t){if("~standard"in e){const r=e["~standard"].validate(t);if(r instanceof Promise)throw new TypeError("Schema validation must be synchronous. Update `validate()` and remove any asynchronous logic.");return r.issues?.at(0)?.message}return e(t)}class _e{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame="";_subscribers=new Map;_cursor=0;state="initial";error="";value;userInput="";constructor(t,r=!0){const{input:i=Ce,output:n=ve,render:a,signal:s,...o}=t;this.opts=o,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=a.bind(this),this._track=r,this._abortSignal=s,this.input=i,this.output=n}unsubscribe(){this._subscribers.clear()}setSubscriber(t,r){const i=this._subscribers.get(t)??[];i.push(r),this._subscribers.set(t,i)}on(t,r){this.setSubscriber(t,{cb:r})}once(t,r){this.setSubscriber(t,{cb:r,once:!0})}emit(t,...r){const i=this._subscribers.get(t)??[],n=[];for(const a of i)a.cb(...r),a.once&&n.push(()=>i.splice(i.indexOf(a),1));for(const a of n)a()}prompt(){return new Promise(t=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),t(Ie);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}this.rl=ut.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),le(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(L.cursor.show),this.output.off("resize",this.render),le(this.input,!1),t(this.value)}),this.once("cancel",()=>{this.output.write(L.cursor.show),this.output.off("resize",this.render),le(this.input,!1),t(Ie)})})}_isActionKey(t,r){return t===" "}_shouldSubmit(t,r){return!0}_setValue(t){this.value=t,this.emit("value",this.value)}_setUserInput(t,r){this.userInput=t??"",this.emit("userInput",this.userInput),r&&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,r){if(this._track&&r.name!=="return"&&(r.name&&this._isActionKey(t,r)&&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"),r?.name&&(!this._track&&H.aliases.has(r.name)&&this.emit("cursor",H.aliases.get(r.name)),H.actions.has(r.name)&&this.emit("cursor",r.name)),t&&(t.toLowerCase()==="y"||t.toLowerCase()==="n")&&this.emit("confirm",t.toLowerCase()==="y"),this.emit("key",t,r),r?.name==="return"&&this._shouldSubmit(t,r)){if(this.opts.validate){const i=Ct(this.opts.validate,this.value);i&&(this.error=i instanceof Error?i.message:i,this.state="error",this.rl?.write(this.userInput))}this.state!=="error"&&(this.state="submit")}Ee([t,r?.name,r?.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(`
10
10
  `),le(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){const t=ee(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
11
- `).length-1;this.output.write(L.cursor.move(-999,t*-1))}render(){const t=ee(this._render(this)??"",process.stdout.columns,{hard:!0,trim:!1});if(t!==this._prevFrame){if(this.state==="initial")this.output.write(L.cursor.hide);else{const r=Tt(this._prevFrame,t),i=He(this.output);if(this.restoreCursor(),r){const n=Math.max(0,r.numLinesAfter-i),a=Math.max(0,r.numLinesBefore-i);let s=r.lines.find(o=>o>=n);if(s===void 0){this._prevFrame=t;return}if(r.lines.length===1){this.output.write(L.cursor.move(0,s-a)),this.output.write(L.erase.lines(1));const o=t.split(`
11
+ `).length-1;this.output.write(L.cursor.move(-999,t*-1))}render(){const t=ee(this._render(this)??"",process.stdout.columns,{hard:!0,trim:!1});if(t!==this._prevFrame){if(this.state==="initial")this.output.write(L.cursor.hide);else{const r=Rt(this._prevFrame,t),i=He(this.output);if(this.restoreCursor(),r){const n=Math.max(0,r.numLinesAfter-i),a=Math.max(0,r.numLinesBefore-i);let s=r.lines.find(o=>o>=n);if(s===void 0){this._prevFrame=t;return}if(r.lines.length===1){this.output.write(L.cursor.move(0,s-a)),this.output.write(L.erase.lines(1));const o=t.split(`
12
12
  `);this.output.write(o[s]),this._prevFrame=t,this.output.write(L.cursor.move(0,o.length-s-1));return}else if(r.lines.length>1){if(n<a)s=n;else{const u=s-a;u>0&&this.output.write(L.cursor.move(0,u))}this.output.write(L.erase.down());const o=t.split(`
13
13
  `).slice(s);this.output.write(o.join(`
14
- `)),this._prevFrame=t;return}}this.output.write(L.erase.down())}this.output.write(t),this.state==="initial"&&(this.state="active"),this._prevFrame=t}}}class Ot extends _e{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",r=>{this.output.write(L.cursor.move(0,-1)),this.value=r,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}class Lt extends _e{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 r=this.options.findIndex(({value:n})=>n===t.initialValue),i=r===-1?0:r;this.cursor=this.options[i].disabled?ce(i,1,this.options):i,this.changeValue(),this.on("cursor",n=>{switch(n){case"left":case"up":this.cursor=ce(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=ce(this.cursor,1,this.options);break}this.changeValue()})}}let Nt=class extends _e{get userInputWithCursor(){if(this.state==="submit")return this.userInput;const t=this.userInput;if(this.cursor>=t.length)return`${this.userInput}\u2588`;const r=t.slice(0,this.cursor),[i,...n]=t.slice(this.cursor);return`${r}${l("inverse",i)}${n.join("")}`}get cursor(){return this._cursor}constructor(t){super({...t,initialUserInput:t.initialUserInput??t.initialValue}),this.on("userInput",r=>{this._setValue(r)}),this.on("finalize",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value="")})}};function jt(){return B.platform!=="win32"?B.env.TERM!=="linux":!!B.env.CI||!!B.env.WT_SESSION||!!B.env.TERMINUS_SUBLIME||B.env.ConEmuTask==="{cmd::Cmder}"||B.env.TERM_PROGRAM==="Terminus-Sublime"||B.env.TERM_PROGRAM==="vscode"||B.env.TERM==="xterm-256color"||B.env.TERM==="alacritty"||B.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}const Fe=jt(),Dt=()=>process.env.CI==="true",G=(e,t)=>Fe?e:t,Mt=G("\u25C6","*"),ze=G("\u25A0","x"),qe=G("\u25B2","x"),xe=G("\u25C7","o"),Vt=G("\u250C","T"),k=G("\u2502","|"),te=G("\u2514","\u2014"),ke=G("\u25CF",">"),he=G("\u25CB"," "),Ut=G("\u25CF","\u2022"),Pt=G("\u25C6","*"),Gt=G("\u25B2","!"),Wt=G("\u25A0","x"),Te=e=>{switch(e){case"initial":case"active":return l("cyan",Mt);case"cancel":return l("red",ze);case"error":return l("yellow",qe);case"submit":return l("green",xe)}},Bt=e=>{switch(e){case"initial":case"active":return l("cyan",k);case"cancel":return l("red",k);case"error":return l("yellow",k);case"submit":return l("green",k)}},Ye=(e,t,r,i,n,a=!1)=>{let s=t,o=0;if(a)for(let u=i-1;u>=r&&(s-=e[u].length,o++,!(s<=n));u--);else for(let u=r;u<i&&(s-=e[u].length,o++,!(s<=n));u++);return{lineCount:s,removals:o}},Kt=({cursor:e,options:t,style:r,output:i=process.stdout,maxItems:n=Number.POSITIVE_INFINITY,columnPadding:a=0,rowPadding:s=4})=>{const o=Se(i)-a,u=He(i),c=l("dim","..."),v=Math.max(u-s,0),m=Math.max(Math.min(n,v),5);let p=0;e>=m-3&&(p=Math.max(Math.min(e-m+3,t.length-m),0));let w=m<t.length&&p>0,f=m<t.length&&p+m<t.length;const h=Math.min(p+m,t.length),g=[];let E=0;w&&E++,f&&E++;const j=p+(w?1:0),R=h-(f?1:0);for(let _=j;_<R;_++){const y=ee(r(t[_],_===e),o,{hard:!0,trim:!1}).split(`
15
- `);g.push(y),E+=y.length}if(E>v){let _=0,y=0,d=E;const b=e-j;let x=v;const $=()=>Ye(g,d,0,b,x),C=()=>Ye(g,d,b+1,g.length,x,!0);w?({lineCount:d,removals:_}=$(),d>x&&(f||(x-=1),{lineCount:d,removals:y}=C())):(f||(x-=1),{lineCount:d,removals:y}=C(),d>x&&(x-=1,{lineCount:d,removals:_}=$())),_>0&&(w=!0,g.splice(0,_)),y>0&&(f=!0,g.splice(g.length-y,y))}const S=[];w&&S.push(c);for(const _ of g)for(const y of _)S.push(y);return f&&S.push(c),S},Je=e=>{const t=e.active??"Yes",r=e.inactive??"No";return new Ot({active:t,inactive:r,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue??!0,render(){const i=e.withGuide??H.withGuide,n=`${Te(this.state)} `,a=i?`${l("gray",k)} `:"",s=pe(e.output,e.message,a,n),o=`${i?`${l("gray",k)}
14
+ `)),this._prevFrame=t;return}}this.output.write(L.erase.down())}this.output.write(t),this.state==="initial"&&(this.state="active"),this._prevFrame=t}}}class Ot extends _e{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",r=>{this.output.write(L.cursor.move(0,-1)),this.value=r,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}class Lt extends _e{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 r=this.options.findIndex(({value:n})=>n===t.initialValue),i=r===-1?0:r;this.cursor=this.options[i].disabled?ce(i,1,this.options):i,this.changeValue(),this.on("cursor",n=>{switch(n){case"left":case"up":this.cursor=ce(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=ce(this.cursor,1,this.options);break}this.changeValue()})}}class Nt extends _e{get userInputWithCursor(){if(this.state==="submit")return this.userInput;const t=this.userInput;if(this.cursor>=t.length)return`${this.userInput}\u2588`;const r=t.slice(0,this.cursor),[i,...n]=t.slice(this.cursor);return`${r}${l("inverse",i)}${n.join("")}`}get cursor(){return this._cursor}constructor(t){super({...t,initialUserInput:t.initialUserInput??t.initialValue}),this.on("userInput",r=>{this._setValue(r)}),this.on("finalize",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value="")})}}function jt(){return G.platform!=="win32"?G.env.TERM!=="linux":!!G.env.CI||!!G.env.WT_SESSION||!!G.env.TERMINUS_SUBLIME||G.env.ConEmuTask==="{cmd::Cmder}"||G.env.TERM_PROGRAM==="Terminus-Sublime"||G.env.TERM_PROGRAM==="vscode"||G.env.TERM==="xterm-256color"||G.env.TERM==="alacritty"||G.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}const Fe=jt(),Dt=()=>process.env.CI==="true",B=(e,t)=>Fe?e:t,Mt=B("\u25C6","*"),ze=B("\u25A0","x"),Ye=B("\u25B2","x"),Te=B("\u25C7","o"),Vt=B("\u250C","T"),x=B("\u2502","|"),te=B("\u2514","\u2014"),xe=B("\u25CF",">"),fe=B("\u25CB"," "),Ut=B("\u25CF","\u2022"),Pt=B("\u25C6","*"),Bt=B("\u25B2","!"),Wt=B("\u25A0","x"),Re=e=>{switch(e){case"initial":case"active":return l("cyan",Mt);case"cancel":return l("red",ze);case"error":return l("yellow",Ye);case"submit":return l("green",Te)}},Gt=e=>{switch(e){case"initial":case"active":return l("cyan",x);case"cancel":return l("red",x);case"error":return l("yellow",x);case"submit":return l("green",x)}},qe=(e,t,r,i,n,a=!1)=>{let s=t,o=0;if(a)for(let u=i-1;u>=r&&(s-=e[u].length,o++,!(s<=n));u--);else for(let u=r;u<i&&(s-=e[u].length,o++,!(s<=n));u++);return{lineCount:s,removals:o}},Kt=({cursor:e,options:t,style:r,output:i=process.stdout,maxItems:n=Number.POSITIVE_INFINITY,columnPadding:a=0,rowPadding:s=4})=>{const o=Se(i)-a,u=He(i),c=l("dim","..."),v=Math.max(u-s,0),m=Math.max(Math.min(n,v),5);let p=0;e>=m-3&&(p=Math.max(Math.min(e-m+3,t.length-m),0));let w=m<t.length&&p>0,h=m<t.length&&p+m<t.length;const f=Math.min(p+m,t.length),g=[];let I=0;w&&I++,h&&I++;const j=p+(w?1:0),k=f-(h?1:0);for(let _=j;_<k;_++){const $=ee(r(t[_],_===e),o,{hard:!0,trim:!1}).split(`
15
+ `);g.push($),I+=$.length}if(I>v){let _=0,$=0,d=I;const b=e-j;let T=v;const y=()=>qe(g,d,0,b,T),C=()=>qe(g,d,b+1,g.length,T,!0);w?({lineCount:d,removals:_}=y(),d>T&&(h||(T-=1),{lineCount:d,removals:$}=C())):(h||(T-=1),{lineCount:d,removals:$}=C(),d>T&&(T-=1,{lineCount:d,removals:_}=y())),_>0&&(w=!0,g.splice(0,_)),$>0&&(h=!0,g.splice(g.length-$,$))}const S=[];w&&S.push(c);for(const _ of g)for(const $ of _)S.push($);return h&&S.push(c),S},Je=e=>{const t=e.active??"Yes",r=e.inactive??"No";return new Ot({active:t,inactive:r,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue??!0,render(){const i=e.withGuide??H.withGuide,n=`${Re(this.state)} `,a=i?`${l("gray",x)} `:"",s=pe(e.output,e.message,a,n),o=`${i?`${l("gray",x)}
16
16
  `:""}${s}
17
- `,u=this.value?t:r;switch(this.state){case"submit":{const c=i?`${l("gray",k)} `:"";return`${o}${c}${l("dim",u)}`}case"cancel":{const c=i?`${l("gray",k)} `:"";return`${o}${c}${l(["strikethrough","dim"],u)}${i?`
18
- ${l("gray",k)}`:""}`}default:{const c=i?`${l("cyan",k)} `:"",v=i?l("cyan",te):"";return`${o}${c}${this.value?`${l("green",ke)} ${t}`:`${l("dim",he)} ${l("dim",t)}`}${e.vertical?i?`
19
- ${l("cyan",k)} `:`
20
- `:` ${l("dim","/")} `}${this.value?`${l("dim",he)} ${l("dim",r)}`:`${l("green",ke)} ${r}`}
17
+ `,u=this.value?t:r;switch(this.state){case"submit":{const c=i?`${l("gray",x)} `:"";return`${o}${c}${l("dim",u)}`}case"cancel":{const c=i?`${l("gray",x)} `:"";return`${o}${c}${l(["strikethrough","dim"],u)}${i?`
18
+ ${l("gray",x)}`:""}`}default:{const c=i?`${l("cyan",x)} `:"",v=i?l("cyan",te):"";return`${o}${c}${this.value?`${l("green",xe)} ${t}`:`${l("dim",fe)} ${l("dim",t)}`}${e.vertical?i?`
19
+ ${l("cyan",x)} `:`
20
+ `:` ${l("dim","/")} `}${this.value?`${l("dim",fe)} ${l("dim",r)}`:`${l("green",xe)} ${r}`}
21
21
  ${v}
22
- `}}}}).prompt()},P={message:(e=[],{symbol:t=l("gray",k),secondarySymbol:r=l("gray",k),output:i=process.stdout,spacing:n=1,withGuide:a}={})=>{const s=[],o=a??H.withGuide,u=o?r:"",c=o?`${t} `:"",v=o?`${r} `:"";for(let p=0;p<n;p++)s.push(u);const m=Array.isArray(e)?e:e.split(`
23
- `);if(m.length>0){const[p,...w]=m;p.length>0?s.push(`${c}${p}`):s.push(o?t:"");for(const f of w)f.length>0?s.push(`${v}${f}`):s.push(o?r:"")}i.write(`${s.join(`
22
+ `}}}}).prompt()},P={message:(e=[],{symbol:t=l("gray",x),secondarySymbol:r=l("gray",x),output:i=process.stdout,spacing:n=1,withGuide:a}={})=>{const s=[],o=a??H.withGuide,u=o?r:"",c=o?`${t} `:"",v=o?`${r} `:"";for(let p=0;p<n;p++)s.push(u);const m=Array.isArray(e)?e:e.split(`
23
+ `);if(m.length>0){const[p,...w]=m;p.length>0?s.push(`${c}${p}`):s.push(o?t:"");for(const h of w)h.length>0?s.push(`${v}${h}`):s.push(o?r:"")}i.write(`${s.join(`
24
24
  `)}
25
- `)},info:(e,t)=>{P.message(e,{...t,symbol:l("blue",Ut)})},success:(e,t)=>{P.message(e,{...t,symbol:l("green",Pt)})},step:(e,t)=>{P.message(e,{...t,symbol:l("green",xe)})},warn:(e,t)=>{P.message(e,{...t,symbol:l("yellow",Gt)})},warning:(e,t)=>{P.warn(e,t)},error:(e,t)=>{P.message(e,{...t,symbol:l("red",Wt)})}},F=(e="",t)=>{const r=process.stdout,i=`${l("gray",te)} `;r.write(`${i}${l("red",e)}
25
+ `)},info:(e,t)=>{P.message(e,{...t,symbol:l("blue",Ut)})},success:(e,t)=>{P.message(e,{...t,symbol:l("green",Pt)})},step:(e,t)=>{P.message(e,{...t,symbol:l("green",Te)})},warn:(e,t)=>{P.message(e,{...t,symbol:l("yellow",Bt)})},warning:(e,t)=>{P.warn(e,t)},error:(e,t)=>{P.message(e,{...t,symbol:l("red",Wt)})}},F=(e="",t)=>{const r=process.stdout,i=`${l("gray",te)} `;r.write(`${i}${l("red",e)}
26
26
 
27
27
  `)},Ht=(e="",t)=>{const r=process.stdout,i=`${l("gray",Vt)} `;r.write(`${i}${e}
28
- `)},zt=(e="",t)=>{const r=process.stdout,i=`${l("gray",k)}
28
+ `)},zt=(e="",t)=>{const r=process.stdout,i=`${l("gray",x)}
29
29
  ${l("gray",te)} `;r.write(`${i}${e}
30
30
 
31
- `)},qt=e=>l("magenta",e),Yt=({indicator:e="dots",onCancel:t,output:r=process.stdout,cancelMessage:i,errorMessage:n,frames:a=Fe?["\u25D2","\u25D0","\u25D3","\u25D1"]:["\u2022","o","O","0"],delay:s=Fe?80:120,signal:o,...u}={})=>{const c=Dt();let v,m,p=!1,w=!1,f="",h,g=performance.now();const E=Se(r),j=u?.styleFrame??qt,R=T=>{const W=T>1?n??H.messages.error:i??H.messages.cancel;w=T===1,p&&(U(W,T),w&&typeof t=="function"&&t())},S=()=>R(2),_=()=>R(1),y=()=>{process.on("uncaughtExceptionMonitor",S),process.on("unhandledRejection",S),process.on("SIGINT",_),process.on("SIGTERM",_),process.on("exit",R),o&&o.addEventListener("abort",_)},d=()=>{process.removeListener("uncaughtExceptionMonitor",S),process.removeListener("unhandledRejection",S),process.removeListener("SIGINT",_),process.removeListener("SIGTERM",_),process.removeListener("exit",R),o&&o.removeEventListener("abort",_)},b=()=>{if(h===void 0)return;c&&r.write(`
32
- `);const T=ee(h,E,{hard:!0,trim:!1}).split(`
33
- `);T.length>1&&r.write(L.cursor.up(T.length-1)),r.write(L.cursor.to(0)),r.write(L.erase.down())},x=T=>T.replace(/\.+$/,""),$=T=>{const W=(performance.now()-T)/1e3,q=Math.floor(W/60),Y=Math.floor(W%60);return q>0?`[${q}m ${Y}s]`:`[${Y}s]`},C=u.withGuide??H.withGuide,V=(T="")=>{p=!0,v=Rt({output:r}),f=x(T),g=performance.now(),C&&r.write(`${l("gray",k)}
34
- `);let W=0,q=0;y(),m=setInterval(()=>{if(c&&f===h)return;b(),h=f;const Y=j(a[W]);let ae;if(c)ae=`${Y} ${f}...`;else if(e==="timer")ae=`${Y} ${f} ${$(g)}`;else{const ot=".".repeat(Math.floor(q)).slice(0,3);ae=`${Y} ${f}${ot}`}const at=ee(ae,E,{hard:!0,trim:!1});r.write(at),W=W+1<a.length?W+1:0,q=q<4?q+.125:0},s)},U=(T="",W=0,q=!1)=>{if(!p)return;p=!1,clearInterval(m),b();const Y=W===0?l("green",xe):W===1?l("red",ze):l("red",qe);f=T??f,q||(e==="timer"?r.write(`${Y} ${f} ${$(g)}
35
- `):r.write(`${Y} ${f}
36
- `)),d(),v()};return{start:V,stop:(T="")=>U(T,0),message:(T="")=>{f=x(T??f)},cancel:(T="")=>U(T,1),error:(T="")=>U(T,2),clear:()=>U("",0,!0),get isCancelled(){return w}}},fe=(e,t)=>e.includes(`
31
+ `)},Yt=e=>l("magenta",e),qt=({indicator:e="dots",onCancel:t,output:r=process.stdout,cancelMessage:i,errorMessage:n,frames:a=Fe?["\u25D2","\u25D0","\u25D3","\u25D1"]:["\u2022","o","O","0"],delay:s=Fe?80:120,signal:o,...u}={})=>{const c=Dt();let v,m,p=!1,w=!1,h="",f,g=performance.now();const I=Se(r),j=u?.styleFrame??Yt,k=R=>{const W=R>1?n??H.messages.error:i??H.messages.cancel;w=R===1,p&&(U(W,R),w&&typeof t=="function"&&t())},S=()=>k(2),_=()=>k(1),$=()=>{process.on("uncaughtExceptionMonitor",S),process.on("unhandledRejection",S),process.on("SIGINT",_),process.on("SIGTERM",_),process.on("exit",k),o&&o.addEventListener("abort",_)},d=()=>{process.removeListener("uncaughtExceptionMonitor",S),process.removeListener("unhandledRejection",S),process.removeListener("SIGINT",_),process.removeListener("SIGTERM",_),process.removeListener("exit",k),o&&o.removeEventListener("abort",_)},b=()=>{if(f===void 0)return;c&&r.write(`
32
+ `);const R=ee(f,I,{hard:!0,trim:!1}).split(`
33
+ `);R.length>1&&r.write(L.cursor.up(R.length-1)),r.write(L.cursor.to(0)),r.write(L.erase.down())},T=R=>R.replace(/\.+$/,""),y=R=>{const W=(performance.now()-R)/1e3,Y=Math.floor(W/60),q=Math.floor(W%60);return Y>0?`[${Y}m ${q}s]`:`[${q}s]`},C=u.withGuide??H.withGuide,V=(R="")=>{p=!0,v=kt({output:r}),h=T(R),g=performance.now(),C&&r.write(`${l("gray",x)}
34
+ `);let W=0,Y=0;$(),m=setInterval(()=>{if(c&&h===f)return;b(),f=h;const q=j(a[W]);let ae;if(c)ae=`${q} ${h}...`;else if(e==="timer")ae=`${q} ${h} ${y(g)}`;else{const ot=".".repeat(Math.floor(Y)).slice(0,3);ae=`${q} ${h}${ot}`}const at=ee(ae,I,{hard:!0,trim:!1});r.write(at),W=W+1<a.length?W+1:0,Y=Y<4?Y+.125:0},s)},U=(R="",W=0,Y=!1)=>{if(!p)return;p=!1,clearInterval(m),b();const q=W===0?l("green",Te):W===1?l("red",ze):l("red",Ye);h=R??h,Y||(e==="timer"?r.write(`${q} ${h} ${y(g)}
35
+ `):r.write(`${q} ${h}
36
+ `)),d(),v()};return{start:V,stop:(R="")=>U(R,0),message:(R="")=>{h=T(R??h)},cancel:(R="")=>U(R,1),error:(R="")=>U(R,2),clear:()=>U("",0,!0),get isCancelled(){return w}}},he=(e,t)=>e.includes(`
37
37
  `)?e.split(`
38
38
  `).map(r=>t(r)).join(`
39
- `):t(e),X=e=>{const t=(r,i)=>{const n=r.label??String(r.value);switch(i){case"disabled":return`${l("gray",he)} ${fe(n,a=>l("gray",a))}${r.hint?` ${l("dim",`(${r.hint??"disabled"})`)}`:""}`;case"selected":return`${fe(n,a=>l("dim",a))}`;case"active":return`${l("green",ke)} ${n}${r.hint?` ${l("dim",`(${r.hint})`)}`:""}`;case"cancelled":return`${fe(n,a=>l(["strikethrough","dim"],a))}`;default:return`${l("dim",he)} ${fe(n,a=>l("dim",a))}`}};return new Lt({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue,render(){const r=e.withGuide??H.withGuide,i=`${Te(this.state)} `,n=`${Bt(this.state)} `,a=pe(e.output,e.message,n,i),s=`${r?`${l("gray",k)}
39
+ `):t(e),X=e=>{const t=(r,i)=>{const n=r.label??String(r.value);switch(i){case"disabled":return`${l("gray",fe)} ${he(n,a=>l("gray",a))}${r.hint?` ${l("dim",`(${r.hint??"disabled"})`)}`:""}`;case"selected":return`${he(n,a=>l("dim",a))}`;case"active":return`${l("green",xe)} ${n}${r.hint?` ${l("dim",`(${r.hint})`)}`:""}`;case"cancelled":return`${he(n,a=>l(["strikethrough","dim"],a))}`;default:return`${l("dim",fe)} ${he(n,a=>l("dim",a))}`}};return new Lt({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue,render(){const r=e.withGuide??H.withGuide,i=`${Re(this.state)} `,n=`${Gt(this.state)} `,a=pe(e.output,e.message,n,i),s=`${r?`${l("gray",x)}
40
40
  `:""}${a}
41
- `;switch(this.state){case"submit":{const o=r?`${l("gray",k)} `:"",u=pe(e.output,t(this.options[this.cursor],"selected"),o);return`${s}${u}`}case"cancel":{const o=r?`${l("gray",k)} `:"",u=pe(e.output,t(this.options[this.cursor],"cancelled"),o);return`${s}${u}${r?`
42
- ${l("gray",k)}`:""}`}default:{const o=r?`${l("cyan",k)} `:"",u=r?l("cyan",te):"",c=s.split(`
41
+ `;switch(this.state){case"submit":{const o=r?`${l("gray",x)} `:"",u=pe(e.output,t(this.options[this.cursor],"selected"),o);return`${s}${u}`}case"cancel":{const o=r?`${l("gray",x)} `:"",u=pe(e.output,t(this.options[this.cursor],"cancelled"),o);return`${s}${u}${r?`
42
+ ${l("gray",x)}`:""}`}default:{const o=r?`${l("cyan",x)} `:"",u=r?l("cyan",te):"",c=s.split(`
43
43
  `).length,v=r?2:1;return`${s}${o}${Kt({output:e.output,cursor:this.cursor,options:this.options,maxItems:e.maxItems,columnPadding:o.length,rowPadding:c+v,style:(m,p)=>t(m,m.disabled?"disabled":p?"active":"inactive")}).join(`
44
44
  ${o}`)}
45
45
  ${u}
46
- `}}}}).prompt()};`${l("gray",k)}`;const de=async(e,t)=>{for(const r of e){if(r.enabled===!1)continue;const i=Yt(t);i.start(r.title);const n=await r.task(i.message);i.stop(n||r.title)}},se=e=>new Nt({validate:e.validate,placeholder:e.placeholder,defaultValue:e.defaultValue,initialValue:e.initialValue,output:e.output,signal:e.signal,input:e.input,render(){const t=e?.withGuide??H.withGuide,r=`${`${t?`${l("gray",k)}
47
- `:""}${Te(this.state)} `}${e.message}
48
- `,i=e.placeholder?l("inverse",e.placeholder[0])+l("dim",e.placeholder.slice(1)):l(["inverse","hidden"],"_"),n=this.userInput?this.userInputWithCursor:i,a=this.value??"";switch(this.state){case"error":{const s=this.error?` ${l("yellow",this.error)}`:"",o=t?`${l("yellow",k)} `:"",u=t?l("yellow",te):"";return`${r.trim()}
46
+ `}}}}).prompt()};`${l("gray",x)}`;const de=async(e,t)=>{for(const r of e){if(r.enabled===!1)continue;const i=qt(t);i.start(r.title);const n=await r.task(i.message);i.stop(n||r.title)}},se=e=>new Nt({validate:e.validate,placeholder:e.placeholder,defaultValue:e.defaultValue,initialValue:e.initialValue,output:e.output,signal:e.signal,input:e.input,render(){const t=e?.withGuide??H.withGuide,r=`${`${t?`${l("gray",x)}
47
+ `:""}${Re(this.state)} `}${e.message}
48
+ `,i=e.placeholder?l("inverse",e.placeholder[0])+l("dim",e.placeholder.slice(1)):l(["inverse","hidden"],"_"),n=this.userInput?this.userInputWithCursor:i,a=this.value??"";switch(this.state){case"error":{const s=this.error?` ${l("yellow",this.error)}`:"",o=t?`${l("yellow",x)} `:"",u=t?l("yellow",te):"";return`${r.trim()}
49
49
  ${o}${n}
50
50
  ${u}${s}
51
- `}case"submit":{const s=a?` ${l("dim",a)}`:"",o=t?l("gray",k):"";return`${r}${o}${s}`}case"cancel":{const s=a?` ${l(["strikethrough","dim"],a)}`:"",o=t?l("gray",k):"";return`${r}${o}${s}${a.trim()?`
52
- ${o}`:""}`}default:{const s=t?`${l("cyan",k)} `:"",o=t?l("cyan",te):"";return`${r}${s}${n}
51
+ `}case"submit":{const s=a?` ${l("dim",a)}`:"",o=t?l("gray",x):"";return`${r}${o}${s}`}case"cancel":{const s=a?` ${l(["strikethrough","dim"],a)}`:"",o=t?l("gray",x):"";return`${r}${o}${s}${a.trim()?`
52
+ ${o}`:""}`}default:{const s=t?`${l("cyan",x)} `:"",o=t?l("cyan",te):"";return`${r}${s}${n}
53
53
  ${o}
54
- `}}}}).prompt();let Q=!0;const re=typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{};let ne=0;if(re.process&&re.process.env&&re.process.stdout){const{FORCE_COLOR:e,NODE_DISABLE_COLORS:t,NO_COLOR:r,TERM:i,COLORTERM:n}=re.process.env;t||r||e==="0"?Q=!1:e==="1"||e==="2"||e==="3"?Q=!0:i==="dumb"?Q=!1:"CI"in re.process.env&&["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE","DRONE"].some(a=>a in re.process.env)?Q=!0:Q=process.stdout.isTTY,Q&&(process.platform==="win32"||n&&(n==="truecolor"||n==="24bit")?ne=3:i&&(i.endsWith("-256color")||i.endsWith("256"))?ne=2:ne=1)}let Ze={enabled:Q,supportLevel:ne};function me(e,t,r=1){const i=`\x1B[${e}m`,n=`\x1B[${t}m`,a=new RegExp(`\\x1b\\[${t}m`,"g");return s=>Ze.enabled&&Ze.supportLevel>=r?i+(""+s).replace(a,i)+n:""+s}const Jt=me(31,39),ge=me(36,39),Zt=me(90,39),Xt=me(91,39);var Ae,Xe;function Qt(){if(Xe)return Ae;Xe=1;function e(i,n){var a=i;n.slice(0,-1).forEach(function(o){a=a[o]||{}});var s=n[n.length-1];return s in a}function t(i){return typeof i=="number"||/^0x[0-9a-f]+$/i.test(i)?!0:/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(i)}function r(i,n){return n==="constructor"&&typeof i[n]=="function"||n==="__proto__"}return Ae=function(i,n){n||(n={});var a={bools:{},strings:{},unknownFn:null};typeof n.unknown=="function"&&(a.unknownFn=n.unknown),typeof n.boolean=="boolean"&&n.boolean?a.allBools=!0:[].concat(n.boolean).filter(Boolean).forEach(function(d){a.bools[d]=!0});var s={};function o(d){return s[d].some(function(b){return a.bools[b]})}Object.keys(n.alias||{}).forEach(function(d){s[d]=[].concat(n.alias[d]),s[d].forEach(function(b){s[b]=[d].concat(s[d].filter(function(x){return b!==x}))})}),[].concat(n.string).filter(Boolean).forEach(function(d){a.strings[d]=!0,s[d]&&[].concat(s[d]).forEach(function(b){a.strings[b]=!0})});var u=n.default||{},c={_:[]};function v(d,b){return a.allBools&&/^--[^=]+$/.test(b)||a.strings[d]||a.bools[d]||s[d]}function m(d,b,x){for(var $=d,C=0;C<b.length-1;C++){var V=b[C];if(r($,V))return;$[V]===void 0&&($[V]={}),($[V]===Object.prototype||$[V]===Number.prototype||$[V]===String.prototype)&&($[V]={}),$[V]===Array.prototype&&($[V]=[]),$=$[V]}var U=b[b.length-1];r($,U)||(($===Object.prototype||$===Number.prototype||$===String.prototype)&&($={}),$===Array.prototype&&($=[]),$[U]===void 0||a.bools[U]||typeof $[U]=="boolean"?$[U]=x:Array.isArray($[U])?$[U].push(x):$[U]=[$[U],x])}function p(d,b,x){if(!(x&&a.unknownFn&&!v(d,x)&&a.unknownFn(x)===!1)){var $=!a.strings[d]&&t(b)?Number(b):b;m(c,d.split("."),$),(s[d]||[]).forEach(function(C){m(c,C.split("."),$)})}}Object.keys(a.bools).forEach(function(d){p(d,u[d]===void 0?!1:u[d])});var w=[];i.indexOf("--")!==-1&&(w=i.slice(i.indexOf("--")+1),i=i.slice(0,i.indexOf("--")));for(var f=0;f<i.length;f++){var h=i[f],g,E;if(/^--.+=/.test(h)){var j=h.match(/^--([^=]+)=([\s\S]*)$/);g=j[1];var R=j[2];a.bools[g]&&(R=R!=="false"),p(g,R,h)}else if(/^--no-.+/.test(h))g=h.match(/^--no-(.+)/)[1],p(g,!1,h);else if(/^--.+/.test(h))g=h.match(/^--(.+)/)[1],E=i[f+1],E!==void 0&&!/^(-|--)[^-]/.test(E)&&!a.bools[g]&&!a.allBools&&(!s[g]||!o(g))?(p(g,E,h),f+=1):/^(true|false)$/.test(E)?(p(g,E==="true",h),f+=1):p(g,a.strings[g]?"":!0,h);else if(/^-[^-]+/.test(h)){for(var S=h.slice(1,-1).split(""),_=!1,y=0;y<S.length;y++){if(E=h.slice(y+2),E==="-"){p(S[y],E,h);continue}if(/[A-Za-z]/.test(S[y])&&E[0]==="="){p(S[y],E.slice(1),h),_=!0;break}if(/[A-Za-z]/.test(S[y])&&/-?\d+(\.\d*)?(e-?\d+)?$/.test(E)){p(S[y],E,h),_=!0;break}if(S[y+1]&&S[y+1].match(/\W/)){p(S[y],h.slice(y+2),h),_=!0;break}else p(S[y],a.strings[S[y]]?"":!0,h)}g=h.slice(-1)[0],!_&&g!=="-"&&(i[f+1]&&!/^(-|--)[^-]/.test(i[f+1])&&!a.bools[g]&&(!s[g]||!o(g))?(p(g,i[f+1],h),f+=1):i[f+1]&&/^(true|false)$/.test(i[f+1])?(p(g,i[f+1]==="true",h),f+=1):p(g,a.strings[g]?"":!0,h))}else if((!a.unknownFn||a.unknownFn(h)!==!1)&&c._.push(a.strings._||!t(h)?h:Number(h)),n.stopEarly){c._.push.apply(c._,i.slice(f+1));break}}return Object.keys(u).forEach(function(d){e(c,d.split("."))||(m(c,d.split("."),u[d]),(s[d]||[]).forEach(function(b){m(c,b.split("."),u[d])}))}),n["--"]?c["--"]=w.slice():w.forEach(function(d){c._.push(d)}),c},Ae}var er=Qt();const tr=Ft(er);async function rr({rootFolder:e}){const t=A.join(e,".git");try{if(I.existsSync(t)){P.warn("Git repository already exists.");return}}catch(i){P.error(`Error checking git folder: ${i}`);return}const r=await X({message:"Do you want to initialize a git repository? (recommended)",options:[{value:!0,label:"Yes",hint:"You can use GitHub to track changes and collaborate with others."},{value:!1,label:"No",hint:"It is not recommended to skip this step."}],initialValue:!0});if(D(r)&&(F("Operation cancelled."),process.exit(0)),r){const i=await de([{title:"Initializing git repository...",task:async n=>{const a=await K("git",["init","-b","main"],{cwd:e});n(a.stdout);const s=await K("git",["add","."],{cwd:e});n(s.stdout);const o=await K("git",["config","user.name"]).then(c=>c.stdout.trim()).catch(()=>""),u=await K("git",["config","user.email"]).then(c=>c.stdout.trim()).catch(()=>"");return o&&u&&(await K("git",["commit","-m","Initial commit"],{cwd:e}),n("Initial commit created.")),"Git repository initialized."}}]);D(i)&&(F("Operation cancelled."),process.exit(0)),P.message(`Now, you can use GitHub Desktop upload your project to GitHub.
55
- GitHub Desktop: https://github.com/apps/desktop`)}}var ie=(e=>(e.VisualStudioCode="vscode",e.Cursor="cursor",e.VSCodium="codium",e.Other="other",e))(ie||{});async function ir({rootFolder:e,fileToOpen:t}){const r=await X({message:"Which IDE do you want to use?",options:[{value:ie.VisualStudioCode,label:"Visual Studio Code"},{value:ie.Cursor,label:"Cursor"},{value:ie.VSCodium,label:"VSCodium"},{value:ie.Other,label:"Other"}],initialValue:ie.VisualStudioCode});if(D(r)&&(F("Operation cancelled."),process.exit(0)),r===void 0)return;let i,n;switch(r){case"vscode":n="Opening in Visual Studio Code...",i="code";break;case"cursor":n="Opening in Cursor...",i="cursor";break;case"codium":n="Opening in VSCodium...",i="codium";break;default:return}await de([{title:n,task:async a=>{try{await Le(i);const s=await K(i,[e]);if(a(s.stdout),t){const o=await K(i,[`${e}/${t}`]);a(o.stdout)}return`Opened project using ${r}`}catch{return`Could not open project using ${r}, since ${r} was not in your PATH`}}}])}var z=(e=>(e[e.VisualNovel=0]="VisualNovel",e[e.TextStory=1]="TextStory",e[e.PointAndClick=2]="PointAndClick",e[e.GameEngine=3]="GameEngine",e[e.Library=4]="Library",e))(z||{}),O=(e=>(e[e.Ink=0]="Ink",e[e.Renpy=1]="Renpy",e[e.Typescript=2]="Typescript",e))(O||{}),M=(e=>(e[e.React=0]="React",e[e.Vue=1]="Vue",e[e.Angular=2]="Angular",e))(M||{});const Qe="My Game",Z=[{type:z.VisualNovel,name:"Visual Novel",availableUI:[M.React],availableNarrativeLanguages:[O.Ink,O.Typescript],isMultidevice:!0,canReplaceUI:!0},{type:z.TextStory,name:"Text-based Story",availableUI:[M.React],availableNarrativeLanguages:[O.Ink,O.Typescript],isMultidevice:!0,canReplaceUI:!1},{type:z.PointAndClick,name:"Point & Click Adventure",availableUI:[M.React],availableNarrativeLanguages:[O.Ink,O.Typescript],isMultidevice:!0,canReplaceUI:!1},{type:z.GameEngine,name:"Game Engine",availableUI:[],availableNarrativeLanguages:[],isMultidevice:!1,canReplaceUI:!1},{type:z.Library,name:"Library",availableUI:[],availableNarrativeLanguages:[],isMultidevice:!1,canReplaceUI:!1}];async function sr({packageName:e}){const t=await X({message:"Select the type of game you want to create:",options:Z.map(c=>({label:c.name,value:c.type})),initialValue:Z[0].type});D(t)&&(F("Operation cancelled."),process.exit(0));const r=Z.find(c=>c.type===t)?.availableUI.map(c=>{let v="";switch(c){case M.React:v=ge("React");break;case M.Vue:v=Zt("Vue");break;case M.Angular:v=Jt("Angular");break}return{label:v,value:c}})||[];let i;r.length===1?(P.warning(`Only one UI framework available: ${r[0].label}. Using it by default.`),i=r[0].value):r.length>0?(i=await X({message:"Select the UI framework you want to use:",options:r,initialValue:Z.find(c=>c.type===t)?.availableUI[0]}),D(i)&&(F("Operation cancelled."),process.exit(0))):i=void 0;const n=Z.find(c=>c.type===t)?.availableNarrativeLanguages.map(c=>{let v="";switch(c){case O.Ink:v="Ink + Typescript";break;case O.Renpy:v=Xt("Renpy");break;case O.Typescript:v=ge("Typescript");break}return{label:v,value:c}})||[];let a;n.length===1?(P.warning(`Only one narrative language available: ${n[0].label}. Using it by default.`),a=n[0].value):n.length>0?(a=await X({message:"Select the narrative language you want to use:",options:n,initialValue:Z.find(c=>c.type===t)?.availableNarrativeLanguages[0]}),D(a)&&(F("Operation cancelled."),process.exit(0))):a=void 0;const s=Z.find(c=>c.type===t)?.isMultidevice;let o=!1,u="";return s&&(o=await X({message:"Which devices is the project intended for?",options:[{label:"Web page",value:!1},{label:"Web page + Desktop + Mobile (Tauri)",value:!0}],initialValue:!1}),D(o)&&(F("Operation cancelled."),process.exit(0)),o?(u=await se({message:"Project identifier:",initialValue:`com.${e}.app`,validate:c=>{if(!c)return"Identifier is required.";if(!/^[a-zA-Z0-9_.\-]+$/.test(c))return"Identifier can only contain letters, numbers, underscores, dots and dashes."}}),D(u)&&(F("Operation cancelled."),process.exit(0))):u=""),{gameType:t,UIFramework:i,narrativeLanguage:a,multidevice:o,identifier:u}}var N=(e=>(e.Delete="delete",e.Overwrite="overwrite",e.Skip="skip",e.Ask="ask",e.Cancel="cancel",e))(N||{});function nr(e){const t=I.readdirSync(e);return t.length===0||t.length===1&&t[0]===".git"}function et(e,t,r){if(!I.existsSync(t))return;const i=I.statSync(t);if(i.isFile())(r===N.Overwrite||r===N.Delete)&&I.rmSync(t,{force:!0});else if(i.isDirectory()){const n=I.readdirSync(e);for(const a of n){const s=A.join(e,a),o=A.join(t,a);et(s,o,r)}}}function Re(e,t,r){if(I.statSync(e).isDirectory()){I.mkdirSync(t,{recursive:!0});for(const i of I.readdirSync(e)){const n=A.join(e,i),a=A.join(t,i);Re(n,a,r)}}else{if(r!==void 0&&I.existsSync(t)){if(r===N.Skip)return;(r===N.Overwrite||r===N.Delete)&&I.rmSync(t,{force:!0})}I.copyFileSync(e,t)}}function ar(e){return/^(?:@[a-z\d\-*~][a-z\d\-*._~]*\/)?[a-z\d\-~][a-z\d\-._~]*$/.test(e)}function tt(e){return e.trim().toLowerCase().replace(/\s+/g,"-").replace(/^[._]/,"").replace(/[^a-z\d\-~]+/g,"-")}async function or(){const e=await se({message:"Project name:",defaultValue:Qe,placeholder:Qe,validate:s=>{if(!s)return"Project name cannot be empty"}});D(e)&&(F("Operation cancelled."),process.exit(0));const t=await se({message:"Project description:",defaultValue:"A new game project",placeholder:"A new game project"});D(t)&&(F("Operation cancelled."),process.exit(0));const r=await se({message:"Package name:",defaultValue:tt(e),placeholder:tt(e),validate:s=>{if(s&&!ar(s))return"Invalid package name. The name can only include URL-friendly characters."}});D(r)&&(F("Operation cancelled."),process.exit(0));const i=A.basename(A.resolve()),n=await se({message:"Target directory:",defaultValue:r,placeholder:`${r} (If is equal to ".", the current directory (${i}) will be used)`});D(n)&&(F("Operation cancelled."),process.exit(0));let a;return I.existsSync(n)&&!nr(n)?(a=await X({message:"Overwrite existing files?",options:[{hint:"Delete all existing files and create a new project",label:"Delete all",value:N.Delete},{hint:"Overwrite existing conflicting files",label:"Overwrite",value:N.Overwrite},{hint:"Skip existing conflicting files",label:"Skip",value:N.Skip},{hint:"Ask for each file",label:"Ask",value:N.Ask},{hint:"Cancel operation",label:"Cancel",value:N.Cancel}],initialValue:N.Overwrite}),(D(a)||a===N.Cancel)&&(F("Operation cancelled."),process.exit(0))):a=void 0,{projectName:e,foltderName:n,description:t,packageName:r,overwrite:a}}const rt={_gitignore:".gitignore"};function it(e,t,r,i,n){return e=e.replace(/my-app-package-name/g,t),e=e.replace(/my-app-description/g,r),e=e.replace(/my-app-project-name/g,i),n&&(e=e.replace(/com\.my-app-project-name\.app/g,n)),e}function st(e,t,r,i,n){I.existsSync(e)&&I.writeFileSync(e,it(I.readFileSync(e,"utf-8"),t,r,i,n))}async function ur({rootFolder:e,overwrite:t,template:r,packageName:i,description:n,projectName:a,identifier:s}){const o=await de([{title:`Creating project in ${e}...`,task:async()=>{I.existsSync(e)||I.mkdirSync(e,{recursive:!0});const u=A.resolve(lt(import.meta.url),"../..",`${r}`),c=(w,f)=>{const h=A.join(e,rt[w]??w);f?I.writeFileSync(h,f):Re(A.join(u,w),h,t)},v=I.readdirSync(u).map(async w=>{const f=A.join(u,w),h=A.join(e,rt[w]??w);if(I.existsSync(h))switch(t){case N.Ask:if(I.statSync(h).isFile()){const g=await Je({message:`File ${h} already exists. Do you want to overwrite it?`,initialValue:!1});if(D(g)&&(F("Operation cancelled."),process.exit(0)),!g)return;I.rmSync(h,{force:!0})}else{const g=I.readdirSync(f);for(const E of g){const j=A.join(f,E),R=A.join(h,E);if(I.existsSync(R)){const S=await Je({message:`File ${R} already exists. Do you want to overwrite it?`,initialValue:!1});if(D(S)&&(F("Operation cancelled."),process.exit(0)),!S)continue;I.rmSync(R,{force:!0})}Re(j,R,t)}return}break;case N.Skip:return;case N.Overwrite:case N.Delete:et(f,h,t);break}switch(w){case"package.json":case"vite.config.ts":case"index.html":case"README.md":{c(w,it(I.readFileSync(f,"utf-8"),i,n,a));break}case".git":case"package-lock.json":break;default:c(w)}});await Promise.all(v),st(A.join(e,".vscode","launch.json"),i,n,a);const m=A.join(e,"src-tauri");if(I.existsSync(m))for(const w of["Cargo.toml","tauri.conf.json"])st(A.join(m,w),i,n,a,s);const p=A.join(e,"_github");return I.existsSync(p)&&I.renameSync(p,A.join(e,".github")),"Project created"}}]);D(o)&&(F("Operation cancelled."),process.exit(0))}const cr=process.cwd();async function lr(){let e,{description:t,overwrite:r,packageName:i,projectName:n,foltderName:a}=await or(),{UIFramework:s,gameType:o,narrativeLanguage:u,multidevice:c,identifier:v}=await sr({packageName:i});const m=A.join(cr,a);let p;switch(o){case z.VisualNovel:switch(s){case M.React:switch(u){case O.Typescript:c?p="template-react-vite-muijoy-tauri":p="template-react-vite-muijoy",e="src/content/labels/start.label.ts";break;case O.Ink:c?p="template-react-vite-muijoy-ink-tauri":p="template-react-vite-muijoy-ink",e="ink/start.ink";break;case O.Renpy:F("Error: There are no templates for this narrative language"),process.exit(0);default:F("Error: Unknown narrative language"),process.exit(0)}break;case M.Vue:case M.Angular:F("Error: There are no templates for this game type and UI framework"),process.exit(0);default:F("Error: Unknown UI framework"),process.exit(0)}break;case z.TextStory:switch(s){case M.React:switch(u){case O.Typescript:c?p="template-story-react-vite-muijoy-tauri":p="template-story-react-vite-muijoy",e="src/labels/startLabel.ts";break;case O.Ink:c?p="template-story-react-vite-muijoy-ink-tauri":p="template-story-react-vite-muijoy-ink",e="src/ink/start.ink";break;case O.Renpy:F("Error: There are no templates for this narrative language"),process.exit(0);default:F("Error: Unknown narrative language"),process.exit(0)}break;case M.Vue:case M.Angular:F("Error: There are no templates for this game type and UI framework"),process.exit(0);default:F("Error: Unknown UI framework"),process.exit(0)}break;case z.PointAndClick:switch(s){case M.React:switch(u){case O.Typescript:c?p="template-nqtr-react-vite-muijoy-tauri":p="template-nqtr-react-vite-muijoy",e="src/labels/startLabel.ts";break;case O.Ink:c?p="template-nqtr-react-vite-muijoy-ink-tauri":p="template-nqtr-react-vite-muijoy-ink",e="src/ink/variousActionsLabels.ink";break;case O.Renpy:F("Error: There are no templates for this narrative language"),process.exit(0);default:F("Error: Unknown narrative language"),process.exit(0)}break;case M.Vue:case M.Angular:F("Error: There are no templates for this game type and UI framework"),process.exit(0);default:F("Error: Unknown UI framework"),process.exit(0)}break;case z.GameEngine:p="template-game-engine",e="src/index.ts";break;case z.Library:p="template-lib",e="src/index.ts";break;default:F("Error: Unknown game type"),process.exit(0)}await ur({rootFolder:m,template:p,packageName:i,description:t,projectName:n,overwrite:r,identifier:v});const w=Z.find(f=>f.type===o)?.canReplaceUI??!1;return{rootFolder:m,fileToOpen:e,canReplaceUI:w}}function pr(){console.info(`
54
+ `}}}}).prompt();let Q=!0;const re=typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{};let ne=0;if(re.process&&re.process.env&&re.process.stdout){const{FORCE_COLOR:e,NODE_DISABLE_COLORS:t,NO_COLOR:r,TERM:i,COLORTERM:n}=re.process.env;t||r||e==="0"?Q=!1:e==="1"||e==="2"||e==="3"?Q=!0:i==="dumb"?Q=!1:"CI"in re.process.env&&["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE","DRONE"].some(a=>a in re.process.env)?Q=!0:Q=process.stdout.isTTY,Q&&(process.platform==="win32"||n&&(n==="truecolor"||n==="24bit")?ne=3:i&&(i.endsWith("-256color")||i.endsWith("256"))?ne=2:ne=1)}let Ze={enabled:Q,supportLevel:ne};function me(e,t,r=1){const i=`\x1B[${e}m`,n=`\x1B[${t}m`,a=new RegExp(`\\x1b\\[${t}m`,"g");return s=>Ze.enabled&&Ze.supportLevel>=r?i+(""+s).replace(a,i)+n:""+s}const Jt=me(31,39),ge=me(36,39),Zt=me(90,39),Xt=me(91,39);var Ae,Xe;function Qt(){if(Xe)return Ae;Xe=1;function e(i,n){var a=i;n.slice(0,-1).forEach(function(o){a=a[o]||{}});var s=n[n.length-1];return s in a}function t(i){return typeof i=="number"||/^0x[0-9a-f]+$/i.test(i)?!0:/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(i)}function r(i,n){return n==="constructor"&&typeof i[n]=="function"||n==="__proto__"}return Ae=function(i,n){n||(n={});var a={bools:{},strings:{},unknownFn:null};typeof n.unknown=="function"&&(a.unknownFn=n.unknown),typeof n.boolean=="boolean"&&n.boolean?a.allBools=!0:[].concat(n.boolean).filter(Boolean).forEach(function(d){a.bools[d]=!0});var s={};function o(d){return s[d].some(function(b){return a.bools[b]})}Object.keys(n.alias||{}).forEach(function(d){s[d]=[].concat(n.alias[d]),s[d].forEach(function(b){s[b]=[d].concat(s[d].filter(function(T){return b!==T}))})}),[].concat(n.string).filter(Boolean).forEach(function(d){a.strings[d]=!0,s[d]&&[].concat(s[d]).forEach(function(b){a.strings[b]=!0})});var u=n.default||{},c={_:[]};function v(d,b){return a.allBools&&/^--[^=]+$/.test(b)||a.strings[d]||a.bools[d]||s[d]}function m(d,b,T){for(var y=d,C=0;C<b.length-1;C++){var V=b[C];if(r(y,V))return;y[V]===void 0&&(y[V]={}),(y[V]===Object.prototype||y[V]===Number.prototype||y[V]===String.prototype)&&(y[V]={}),y[V]===Array.prototype&&(y[V]=[]),y=y[V]}var U=b[b.length-1];r(y,U)||((y===Object.prototype||y===Number.prototype||y===String.prototype)&&(y={}),y===Array.prototype&&(y=[]),y[U]===void 0||a.bools[U]||typeof y[U]=="boolean"?y[U]=T:Array.isArray(y[U])?y[U].push(T):y[U]=[y[U],T])}function p(d,b,T){if(!(T&&a.unknownFn&&!v(d,T)&&a.unknownFn(T)===!1)){var y=!a.strings[d]&&t(b)?Number(b):b;m(c,d.split("."),y),(s[d]||[]).forEach(function(C){m(c,C.split("."),y)})}}Object.keys(a.bools).forEach(function(d){p(d,u[d]===void 0?!1:u[d])});var w=[];i.indexOf("--")!==-1&&(w=i.slice(i.indexOf("--")+1),i=i.slice(0,i.indexOf("--")));for(var h=0;h<i.length;h++){var f=i[h],g,I;if(/^--.+=/.test(f)){var j=f.match(/^--([^=]+)=([\s\S]*)$/);g=j[1];var k=j[2];a.bools[g]&&(k=k!=="false"),p(g,k,f)}else if(/^--no-.+/.test(f))g=f.match(/^--no-(.+)/)[1],p(g,!1,f);else if(/^--.+/.test(f))g=f.match(/^--(.+)/)[1],I=i[h+1],I!==void 0&&!/^(-|--)[^-]/.test(I)&&!a.bools[g]&&!a.allBools&&(!s[g]||!o(g))?(p(g,I,f),h+=1):/^(true|false)$/.test(I)?(p(g,I==="true",f),h+=1):p(g,a.strings[g]?"":!0,f);else if(/^-[^-]+/.test(f)){for(var S=f.slice(1,-1).split(""),_=!1,$=0;$<S.length;$++){if(I=f.slice($+2),I==="-"){p(S[$],I,f);continue}if(/[A-Za-z]/.test(S[$])&&I[0]==="="){p(S[$],I.slice(1),f),_=!0;break}if(/[A-Za-z]/.test(S[$])&&/-?\d+(\.\d*)?(e-?\d+)?$/.test(I)){p(S[$],I,f),_=!0;break}if(S[$+1]&&S[$+1].match(/\W/)){p(S[$],f.slice($+2),f),_=!0;break}else p(S[$],a.strings[S[$]]?"":!0,f)}g=f.slice(-1)[0],!_&&g!=="-"&&(i[h+1]&&!/^(-|--)[^-]/.test(i[h+1])&&!a.bools[g]&&(!s[g]||!o(g))?(p(g,i[h+1],f),h+=1):i[h+1]&&/^(true|false)$/.test(i[h+1])?(p(g,i[h+1]==="true",f),h+=1):p(g,a.strings[g]?"":!0,f))}else if((!a.unknownFn||a.unknownFn(f)!==!1)&&c._.push(a.strings._||!t(f)?f:Number(f)),n.stopEarly){c._.push.apply(c._,i.slice(h+1));break}}return Object.keys(u).forEach(function(d){e(c,d.split("."))||(m(c,d.split("."),u[d]),(s[d]||[]).forEach(function(b){m(c,b.split("."),u[d])}))}),n["--"]?c["--"]=w.slice():w.forEach(function(d){c._.push(d)}),c},Ae}var er=Qt();const tr=Ft(er);async function rr({rootFolder:e}){const t=A.join(e,".git");try{if(E.existsSync(t)){P.warn("Git repository already exists.");return}}catch(i){P.error(`Error checking git folder: ${i}`);return}const r=await X({message:"Do you want to initialize a git repository? (recommended)",options:[{value:!0,label:"Yes",hint:"You can use GitHub to track changes and collaborate with others."},{value:!1,label:"No",hint:"It is not recommended to skip this step."}],initialValue:!0});if(D(r)&&(F("Operation cancelled."),process.exit(0)),r){const i=await de([{title:"Initializing git repository...",task:async n=>{const a=await K("git",["init","-b","main"],{cwd:e});n(a.stdout);const s=await K("git",["add","."],{cwd:e});n(s.stdout);const o=await K("git",["config","user.name"]).then(c=>c.stdout.trim()).catch(()=>""),u=await K("git",["config","user.email"]).then(c=>c.stdout.trim()).catch(()=>"");return o&&u&&(await K("git",["commit","-m","Initial commit"],{cwd:e}),n("Initial commit created.")),"Git repository initialized."}}]);D(i)&&(F("Operation cancelled."),process.exit(0)),P.message(`Now, you can use GitHub Desktop upload your project to GitHub.
55
+ GitHub Desktop: https://github.com/apps/desktop`)}}var ie=(e=>(e.VisualStudioCode="vscode",e.Cursor="cursor",e.VSCodium="codium",e.Other="other",e))(ie||{});async function ir({rootFolder:e,fileToOpen:t}){const r=await X({message:"Which IDE do you want to use?",options:[{value:ie.VisualStudioCode,label:"Visual Studio Code"},{value:ie.Cursor,label:"Cursor"},{value:ie.VSCodium,label:"VSCodium"},{value:ie.Other,label:"Other"}],initialValue:ie.VisualStudioCode});if(D(r)&&(F("Operation cancelled."),process.exit(0)),r===void 0)return;let i,n;switch(r){case"vscode":n="Opening in Visual Studio Code...",i="code";break;case"cursor":n="Opening in Cursor...",i="cursor";break;case"codium":n="Opening in VSCodium...",i="codium";break;default:return}await de([{title:n,task:async a=>{try{await Le(i);const s=await K(i,[e]);if(a(s.stdout),t){const o=await K(i,[`${e}/${t}`]);a(o.stdout)}return`Opened project using ${r}`}catch{return`Could not open project using ${r}, since ${r} was not in your PATH`}}}])}var z=(e=>(e[e.VisualNovel=0]="VisualNovel",e[e.TextStory=1]="TextStory",e[e.PointAndClick=2]="PointAndClick",e[e.GameEngine=3]="GameEngine",e[e.Library=4]="Library",e))(z||{}),O=(e=>(e[e.Ink=0]="Ink",e[e.Renpy=1]="Renpy",e[e.Typescript=2]="Typescript",e))(O||{}),M=(e=>(e[e.React=0]="React",e[e.Vue=1]="Vue",e[e.Angular=2]="Angular",e))(M||{});const Qe="My Game",Z=[{type:z.VisualNovel,name:"Visual Novel",availableUI:[M.React],availableNarrativeLanguages:[O.Ink,O.Typescript],isMultidevice:!0,canReplaceUI:!0},{type:z.TextStory,name:"Text-based Story",availableUI:[M.React],availableNarrativeLanguages:[O.Ink,O.Typescript],isMultidevice:!0,canReplaceUI:!1},{type:z.PointAndClick,name:"Point & Click Adventure",availableUI:[M.React],availableNarrativeLanguages:[O.Ink,O.Typescript],isMultidevice:!0,canReplaceUI:!1},{type:z.GameEngine,name:"Game Engine",availableUI:[],availableNarrativeLanguages:[],isMultidevice:!1,canReplaceUI:!1},{type:z.Library,name:"Library",availableUI:[],availableNarrativeLanguages:[],isMultidevice:!1,canReplaceUI:!1}];async function sr({packageName:e}){const t=await X({message:"Select the type of game you want to create:",options:Z.map(c=>({label:c.name,value:c.type})),initialValue:Z[0].type});D(t)&&(F("Operation cancelled."),process.exit(0));const r=Z.find(c=>c.type===t)?.availableUI.map(c=>{let v="";switch(c){case M.React:v=ge("React");break;case M.Vue:v=Zt("Vue");break;case M.Angular:v=Jt("Angular");break}return{label:v,value:c}})||[];let i;r.length===1?(P.warning(`Only one UI framework available: ${r[0].label}. Using it by default.`),i=r[0].value):r.length>0?(i=await X({message:"Select the UI framework you want to use:",options:r,initialValue:Z.find(c=>c.type===t)?.availableUI[0]}),D(i)&&(F("Operation cancelled."),process.exit(0))):i=void 0;const n=Z.find(c=>c.type===t)?.availableNarrativeLanguages.map(c=>{let v="";switch(c){case O.Ink:v="Ink + Typescript";break;case O.Renpy:v=Xt("Renpy");break;case O.Typescript:v=ge("Typescript");break}return{label:v,value:c}})||[];let a;n.length===1?(P.warning(`Only one narrative language available: ${n[0].label}. Using it by default.`),a=n[0].value):n.length>0?(a=await X({message:"Select the narrative language you want to use:",options:n,initialValue:Z.find(c=>c.type===t)?.availableNarrativeLanguages[0]}),D(a)&&(F("Operation cancelled."),process.exit(0))):a=void 0;const s=Z.find(c=>c.type===t)?.isMultidevice;let o=!1,u="";return s&&(o=await X({message:"Which devices is the project intended for?",options:[{label:"Web page",value:!1},{label:"Web page + Desktop + Mobile (Tauri)",value:!0}],initialValue:!1}),D(o)&&(F("Operation cancelled."),process.exit(0)),o?(u=await se({message:"Project identifier:",initialValue:`com.${e}.app`,validate:c=>{if(!c)return"Identifier is required.";if(!/^[a-zA-Z0-9_.\-]+$/.test(c))return"Identifier can only contain letters, numbers, underscores, dots and dashes."}}),D(u)&&(F("Operation cancelled."),process.exit(0))):u=""),{gameType:t,UIFramework:i,narrativeLanguage:a,multidevice:o,identifier:u}}var N=(e=>(e.Delete="delete",e.Overwrite="overwrite",e.Skip="skip",e.Ask="ask",e.Cancel="cancel",e))(N||{});function nr(e){const t=E.readdirSync(e);return t.length===0||t.length===1&&t[0]===".git"}function et(e,t,r){if(!E.existsSync(t))return;const i=E.statSync(t);if(i.isFile())(r===N.Overwrite||r===N.Delete)&&E.rmSync(t,{force:!0});else if(i.isDirectory()){const n=E.readdirSync(e);for(const a of n){const s=A.join(e,a),o=A.join(t,a);et(s,o,r)}}}function ke(e,t,r){if(E.statSync(e).isDirectory()){E.mkdirSync(t,{recursive:!0});for(const i of E.readdirSync(e)){const n=A.join(e,i),a=A.join(t,i);ke(n,a,r)}}else{if(r!==void 0&&E.existsSync(t)){if(r===N.Skip)return;(r===N.Overwrite||r===N.Delete)&&E.rmSync(t,{force:!0})}E.copyFileSync(e,t)}}function ar(e){return/^(?:@[a-z\d\-*~][a-z\d\-*._~]*\/)?[a-z\d\-~][a-z\d\-._~]*$/.test(e)}function tt(e){return e.trim().toLowerCase().replace(/\s+/g,"-").replace(/^[._]/,"").replace(/[^a-z\d\-~]+/g,"-")}async function or(){const e=await se({message:"Project name:",defaultValue:Qe,placeholder:Qe,validate:s=>{if(!s)return"Project name cannot be empty"}});D(e)&&(F("Operation cancelled."),process.exit(0));const t=await se({message:"Project description:",defaultValue:"A new game project",placeholder:"A new game project"});D(t)&&(F("Operation cancelled."),process.exit(0));const r=await se({message:"Package name:",defaultValue:tt(e),placeholder:tt(e),validate:s=>{if(s&&!ar(s))return"Invalid package name. The name can only include URL-friendly characters."}});D(r)&&(F("Operation cancelled."),process.exit(0));const i=A.basename(A.resolve()),n=await se({message:"Target directory:",defaultValue:r,placeholder:`${r} (If is equal to ".", the current directory (${i}) will be used)`});D(n)&&(F("Operation cancelled."),process.exit(0));let a;return E.existsSync(n)&&!nr(n)?(a=await X({message:"Overwrite existing files?",options:[{hint:"Delete all existing files and create a new project",label:"Delete all",value:N.Delete},{hint:"Overwrite existing conflicting files",label:"Overwrite",value:N.Overwrite},{hint:"Skip existing conflicting files",label:"Skip",value:N.Skip},{hint:"Ask for each file",label:"Ask",value:N.Ask},{hint:"Cancel operation",label:"Cancel",value:N.Cancel}],initialValue:N.Overwrite}),(D(a)||a===N.Cancel)&&(F("Operation cancelled."),process.exit(0))):a=void 0,{projectName:e,foltderName:n,description:t,packageName:r,overwrite:a}}const rt={_gitignore:".gitignore"};function it(e,t,r,i,n){return e=e.replace(/my-app-package-name/g,t),e=e.replace(/my-app-description/g,r),e=e.replace(/my-app-project-name/g,i),n&&(e=e.replace(/com\.my-app-project-name\.app/g,n)),e}function st(e,t,r,i,n){E.existsSync(e)&&E.writeFileSync(e,it(E.readFileSync(e,"utf-8"),t,r,i,n))}async function ur({rootFolder:e,overwrite:t,template:r,packageName:i,description:n,projectName:a,identifier:s}){const o=await de([{title:`Creating project in ${e}...`,task:async()=>{E.existsSync(e)||E.mkdirSync(e,{recursive:!0});const u=A.resolve(lt(import.meta.url),"../..",`${r}`),c=(w,h)=>{const f=A.join(e,rt[w]??w);h?E.writeFileSync(f,h):ke(A.join(u,w),f,t)},v=E.readdirSync(u).map(async w=>{const h=A.join(u,w),f=A.join(e,rt[w]??w);if(E.existsSync(f))switch(t){case N.Ask:if(E.statSync(f).isFile()){const g=await Je({message:`File ${f} already exists. Do you want to overwrite it?`,initialValue:!1});if(D(g)&&(F("Operation cancelled."),process.exit(0)),!g)return;E.rmSync(f,{force:!0})}else{const g=E.readdirSync(h);for(const I of g){const j=A.join(h,I),k=A.join(f,I);if(E.existsSync(k)){const S=await Je({message:`File ${k} already exists. Do you want to overwrite it?`,initialValue:!1});if(D(S)&&(F("Operation cancelled."),process.exit(0)),!S)continue;E.rmSync(k,{force:!0})}ke(j,k,t)}return}break;case N.Skip:return;case N.Overwrite:case N.Delete:et(h,f,t);break}switch(w){case"package.json":case"vite.config.ts":case"index.html":case"README.md":{c(w,it(E.readFileSync(h,"utf-8"),i,n,a));break}case".git":case"package-lock.json":break;default:c(w)}});await Promise.all(v),st(A.join(e,".vscode","launch.json"),i,n,a);const m=A.join(e,"src-tauri");if(E.existsSync(m))for(const w of["Cargo.toml","tauri.conf.json"])st(A.join(m,w),i,n,a,s);const p=A.join(e,"_github");return E.existsSync(p)&&E.renameSync(p,A.join(e,".github")),"Project created"}}]);D(o)&&(F("Operation cancelled."),process.exit(0))}const cr=process.cwd();async function lr(){let e,{description:t,overwrite:r,packageName:i,projectName:n,foltderName:a}=await or(),{UIFramework:s,gameType:o,narrativeLanguage:u,multidevice:c,identifier:v}=await sr({packageName:i});const m=A.join(cr,a);let p;switch(o){case z.VisualNovel:switch(s){case M.React:switch(u){case O.Typescript:c?p="template-react-vite-muijoy-tauri":p="template-react-vite-muijoy",e="src/content/labels/start.label.ts";break;case O.Ink:c?p="template-react-vite-muijoy-ink-tauri":p="template-react-vite-muijoy-ink",e="ink/start.ink";break;case O.Renpy:F("Error: There are no templates for this narrative language"),process.exit(0);default:F("Error: Unknown narrative language"),process.exit(0)}break;case M.Vue:case M.Angular:F("Error: There are no templates for this game type and UI framework"),process.exit(0);default:F("Error: Unknown UI framework"),process.exit(0)}break;case z.TextStory:switch(s){case M.React:switch(u){case O.Typescript:c?p="template-story-react-vite-muijoy-tauri":p="template-story-react-vite-muijoy",e="src/labels/startLabel.ts";break;case O.Ink:c?p="template-story-react-vite-muijoy-ink-tauri":p="template-story-react-vite-muijoy-ink",e="src/ink/start.ink";break;case O.Renpy:F("Error: There are no templates for this narrative language"),process.exit(0);default:F("Error: Unknown narrative language"),process.exit(0)}break;case M.Vue:case M.Angular:F("Error: There are no templates for this game type and UI framework"),process.exit(0);default:F("Error: Unknown UI framework"),process.exit(0)}break;case z.PointAndClick:switch(s){case M.React:switch(u){case O.Typescript:c?p="template-nqtr-react-vite-muijoy-tauri":p="template-nqtr-react-vite-muijoy",e="src/labels/startLabel.ts";break;case O.Ink:c?p="template-nqtr-react-vite-muijoy-ink-tauri":p="template-nqtr-react-vite-muijoy-ink",e="src/ink/variousActionsLabels.ink";break;case O.Renpy:F("Error: There are no templates for this narrative language"),process.exit(0);default:F("Error: Unknown narrative language"),process.exit(0)}break;case M.Vue:case M.Angular:F("Error: There are no templates for this game type and UI framework"),process.exit(0);default:F("Error: Unknown UI framework"),process.exit(0)}break;case z.GameEngine:p="template-game-engine",e="src/index.ts";break;case z.Library:p="template-lib",e="src/index.ts";break;default:F("Error: Unknown game type"),process.exit(0)}await ur({rootFolder:m,template:p,packageName:i,description:t,projectName:n,overwrite:r,identifier:v});const w=Z.find(h=>h.type===o)?.canReplaceUI??!1;return{rootFolder:m,fileToOpen:e,canReplaceUI:w}}function pr(){console.info(`
56
56
  \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2557 \u2588\u2588\u2557
57
57
  \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551
58
58
  \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551
59
59
  \u2588\u2588\u2554\u2550\u2550\u2550\u255D \u2588\u2588\u2551 \u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551\u255A\u2550\u2550\u2550\u2550\u255D\u255A\u2588\u2588\u2557 \u2588\u2588\u2554\u255D\u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551
60
60
  \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u255D \u2588\u2588\u2557\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551
61
61
  \u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D
62
- `)}function hr(e){if(!e)return;const t=e.split(" ")[0].split("/");return{name:t[0],version:t[1]}}const fr=tr(process.argv.slice(2),{default:{help:!1},alias:{h:"help",t:"template"},string:["_"]}),nt=process.cwd(),dr=`Usage: create-pixi-vn [OPTION]... [DIRECTORY]
62
+ `)}function fr(e){if(!e)return;const t=e.split(" ")[0].split("/");return{name:t[0],version:t[1]}}const hr=tr(process.argv.slice(2),{default:{help:!1},alias:{h:"help",t:"template"},string:["_"]}),nt=process.cwd(),dr=`Usage: create-pixi-vn [OPTION]... [DIRECTORY]
63
63
 
64
64
  Create a new Pixi\u2019VN project.
65
65
  With no arguments, start the CLI in interactive mode.
@@ -68,7 +68,7 @@ Options:
68
68
  -t, --template NAME use a specific template
69
69
 
70
70
  Available templates:
71
- ${ge("basic-visual-novel react")}`;async function mr(){try{if(pr(),Ht(`Welcome to ${ge("Pixi\u2019VN")}! \u{1F3A8}\u2728`),fr.help){console.log(dr);return}const{rootFolder:e,fileToOpen:t,canReplaceUI:r}=await lr(),i=A.join(e,"package-lock.json");I.existsSync(i)&&I.rmSync(i);const n=hr(process.env.npm_config_user_agent),a=n?n.name:"npm",s=A.relative(nt,e);r&&(P.info("You will need to select a UI theme for your project."),await de([{title:"Installing shadcn globally...",task:async()=>{try{await Le(a),a==="yarn"?await K("yarn",["global","add","shadcn@latest"]):await K(a,["install","-g","shadcn@latest"])}catch{return"Could not install shadcn globally"}return"shadcn installed globally."}}]),P.step("Running ui:reinit..."),a==="yarn"?await K("yarn",["ui:reinit"],{cwd:e,stdio:"inherit"}):await K(a,["run","ui:reinit"],{cwd:e,stdio:"inherit"})),await rr({rootFolder:e}),await ir({rootFolder:e,fileToOpen:t});let o="To run the game:";switch(e!==nt&&(o+=`
71
+ ${ge("basic-visual-novel react")}`;async function mr(){try{if(pr(),Ht(`Welcome to ${ge("Pixi\u2019VN")}! \u{1F3A8}\u2728`),hr.help){console.log(dr);return}const{rootFolder:e,fileToOpen:t,canReplaceUI:r}=await lr(),i=A.join(e,"package-lock.json");E.existsSync(i)&&E.rmSync(i);const n=fr(process.env.npm_config_user_agent),a=n?n.name:"npm",s=A.relative(nt,e);r&&(P.info("You will need to select a UI theme for your project."),await de([{title:"Installing shadcn globally...",task:async()=>{try{await Le(a),a==="yarn"?await K("yarn",["global","add","shadcn@latest"]):await K(a,["install","-g","shadcn@latest"])}catch{return"Could not install shadcn globally"}return"shadcn installed globally."}}]),P.step("Running ui:reinit..."),a==="yarn"?await K("yarn",["ui:reinit"],{cwd:e,stdio:"inherit"}):await K(a,["run","ui:reinit"],{cwd:e,stdio:"inherit"})),await rr({rootFolder:e}),await ir({rootFolder:e,fileToOpen:t});let o="To run the game:";switch(e!==nt&&(o+=`
72
72
  cd ${s.includes(" ")?`"${s}"`:s}`),a){case"yarn":o+=`
73
73
  yarn`,o+=`
74
74
  yarn dev`;break;default:o+=`
package/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import './dist/index.mjs'
3
+ import "./dist/index.mjs";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "create-pixi-vn",
3
3
  "description": "Create a new Pixi’VN project",
4
- "version": "2.0.3",
4
+ "version": "2.0.5",
5
5
  "type": "module",
6
6
  "license": "GPL-3.0",
7
7
  "author": "DRincs-Productions",
@@ -15,7 +15,6 @@
15
15
  "template-react-vite-muijoy",
16
16
  "template-react-vite-muijoy-ink",
17
17
  "template-react-vite-muijoy-ink-tauri",
18
- "template-react-vite-muijoy-electron",
19
18
  "template-react-vite-muijoy-tauri",
20
19
  "template-story-react-vite-muijoy",
21
20
  "template-story-react-vite-muijoy-ink",
@@ -33,7 +32,8 @@
33
32
  "dev": "unbuild --stub",
34
33
  "build": "unbuild",
35
34
  "typecheck": "tsc --noEmit",
36
- "prepublishOnly": "npm run build"
35
+ "prepublishOnly": "npm run build",
36
+ "format": "biome format --write"
37
37
  },
38
38
  "engines": {
39
39
  "node": "^18.0.0 || >=20.0.0"
@@ -45,9 +45,10 @@
45
45
  "bugs": {
46
46
  "url": "https://github.com/DRincs-Productions/pixi-vn/issues"
47
47
  },
48
- "homepage": "https://pixi-vn.web.app/",
48
+ "homepage": "https://pixi-vn.com/",
49
49
  "funding": "https://github.com/DRincs-Productions/pixi-vn?sponsor=1",
50
50
  "devDependencies": {
51
+ "@biomejs/biome": "latest",
51
52
  "@clack/prompts": "^1.0.0",
52
53
  "@types/minimist": "^1.2.5",
53
54
  "@types/node": "^25.9.1",
@@ -10,7 +10,7 @@
10
10
  "license": "GPL-3.0",
11
11
  "dependencies": {
12
12
  "@base-ui/react": "^1.5.0",
13
- "@drincs/pixi-vn": "^1.8.11",
13
+ "@drincs/pixi-vn": "^1.8.12",
14
14
  "@drincs/pixi-vn-spine": "^0.2.1",
15
15
  "@tailwindcss/vite": "^4.3.0",
16
16
  "@tanstack/react-devtools": "^0.10.5",
@@ -2113,9 +2113,9 @@
2113
2113
  }
2114
2114
  },
2115
2115
  "node_modules/@drincs/pixi-vn": {
2116
- "version": "1.8.11",
2117
- "resolved": "https://registry.npmjs.org/@drincs/pixi-vn/-/pixi-vn-1.8.11.tgz",
2118
- "integrity": "sha512-T7FuV/v8qevXq+edFdSLQKyJnQrRhDN4PUzlqw5qe0tDIXycTbr/MMnBNEYRuBMEYUMtoYZb0tmKHY/5Xh8q0Q==",
2116
+ "version": "1.8.12",
2117
+ "resolved": "https://registry.npmjs.org/@drincs/pixi-vn/-/pixi-vn-1.8.12.tgz",
2118
+ "integrity": "sha512-1Ff8mZ+hYQzpA2F/LAH37f6cfEewJcYtE4hjLcJRQCv2ql+ti12JAAzCUItopUt8VWEKFGY43J8XILAc66wfjA==",
2119
2119
  "license": "LGPL-2.1",
2120
2120
  "workspaces": [
2121
2121
  "sandbox"
@@ -19,7 +19,7 @@
19
19
  },
20
20
  "dependencies": {
21
21
  "@base-ui/react": "^1.5.0",
22
- "@drincs/pixi-vn": "^1.8.11",
22
+ "@drincs/pixi-vn": "^1.8.13",
23
23
  "@drincs/pixi-vn-spine": "^0.2.1",
24
24
  "@tailwindcss/vite": "^4.3.0",
25
25
  "@tanstack/react-devtools": "^0.10.5",
@@ -4,7 +4,6 @@ import { Card, CardContent } from "@/components/ui/card";
4
4
  import { Spinner } from "@/components/ui/spinner";
5
5
  import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip";
6
6
  import { CANVAS_UI_LAYER_NAME, overlayTextShadowClass } from "@/constants";
7
- import { startLabel } from "@/content/labels/start.label";
8
7
  import { useSetSearchParamState } from "@/lib/hooks/navigation-hooks";
9
8
  import { useGameProps } from "@/lib/hooks/props-hooks";
10
9
  import { INTERFACE_DATA_USE_QUEY_KEY as INTERFACE_DATA_USE_QUERY_KEY } from "@/lib/query/interface-query";
@@ -144,7 +143,7 @@ export function MainMenu() {
144
143
  onClick={async () => {
145
144
  setLoading(true);
146
145
  await navigate({ to: "/game/narration" });
147
- Game.start(startLabel, gameProps)
146
+ Game.start("start", gameProps)
148
147
  .then(() =>
149
148
  queryClient.invalidateQueries({
150
149
  queryKey: [INTERFACE_DATA_USE_QUERY_KEY],
@@ -9,7 +9,7 @@ import {
9
9
  PaginationPrevious,
10
10
  } from "@/components/ui/pagination";
11
11
  import { ScrollArea } from "@/components/ui/scroll-area";
12
- import { GameSaveScreenStore } from "@/lib/stores/useGameSaveScreenStore";
12
+ import { SaveMenuPagination } from "@/lib/stores/save-menu-pagination-store";
13
13
  import { useSelector } from "@tanstack/react-store";
14
14
 
15
15
  const TOTAL_PAGES = 999;
@@ -29,7 +29,7 @@ function getPageNumbers(current: number, total: number): (number | "ellipsis")[]
29
29
  }
30
30
 
31
31
  export function GameSaveMenu() {
32
- const page = useSelector(GameSaveScreenStore.store, (state) => state.page);
32
+ const page = useSelector(SaveMenuPagination.store, (state) => state.page);
33
33
 
34
34
  const currentPage = page + 1;
35
35
  const pageNumbers = getPageNumbers(currentPage, TOTAL_PAGES);
@@ -50,7 +50,7 @@ export function GameSaveMenu() {
50
50
  <PaginationPrevious
51
51
  onClick={(e) => {
52
52
  e.preventDefault();
53
- if (currentPage > 1) GameSaveScreenStore.setPage(page - 1);
53
+ if (currentPage > 1) SaveMenuPagination.setPage(page - 1);
54
54
  }}
55
55
  aria-disabled={currentPage === 1}
56
56
  className={currentPage === 1 ? "pointer-events-none opacity-50" : ""}
@@ -67,7 +67,7 @@ export function GameSaveMenu() {
67
67
  isActive={p === currentPage}
68
68
  onClick={(e) => {
69
69
  e.preventDefault();
70
- GameSaveScreenStore.setPage((p as number) - 1);
70
+ SaveMenuPagination.setPage((p as number) - 1);
71
71
  }}
72
72
  >
73
73
  {p}
@@ -79,8 +79,7 @@ export function GameSaveMenu() {
79
79
  <PaginationNext
80
80
  onClick={(e) => {
81
81
  e.preventDefault();
82
- if (currentPage < TOTAL_PAGES)
83
- GameSaveScreenStore.setPage(page + 1);
82
+ if (currentPage < TOTAL_PAGES) SaveMenuPagination.setPage(page + 1);
84
83
  }}
85
84
  aria-disabled={currentPage === TOTAL_PAGES}
86
85
  className={
@@ -1,7 +1,5 @@
1
1
  import { BGM_CHANNEL_NAME } from "@/constants";
2
2
  import { james, mc, sly, steph, steph_fullname } from "@/content/characters";
3
- import { animation01 } from "@/content/labels/animations.label";
4
- import { secondPart } from "@/content/labels/second.label";
5
3
  import {
6
4
  Assets,
7
5
  moveIn,
@@ -489,7 +487,7 @@ export const startLabel = newLabel(
489
487
  narration.dialogGlue = true;
490
488
  narration.dialogue = `and returns with a HUGE tinfoil-covered platter.`;
491
489
  await sound.play("sfx_whoosh", { delay: 0.1 });
492
- await narration.call(animation01, props);
490
+ await narration.call("animation_01", props);
493
491
  },
494
492
  async () => {
495
493
  await showImageContainer("james", [
@@ -555,7 +553,7 @@ export const startLabel = newLabel(
555
553
  moveOut("steph", { direction: "left", ease: "easeInOut", duration: 0.5, delay: 0.1 });
556
554
  narration.dialogue = `You want continue to the next part?`;
557
555
  narration.choices = [
558
- newChoiceOption("Yes, I want to continue", secondPart, {}, { type: "jump" }),
556
+ newChoiceOption("Yes, I want to continue", "second_part", {}, { type: "jump" }),
559
557
  newCloseChoiceOption("No, I want to stop here"),
560
558
  ];
561
559
  },
@@ -1,14 +1,14 @@
1
1
  import { Store } from "@tanstack/store";
2
2
 
3
- type GameSaveScreenStoreState = {
3
+ type SaveMenuPaginationStorage = {
4
4
  /**
5
5
  * The current page of the save screen
6
6
  */
7
7
  page: number;
8
8
  };
9
9
 
10
- export namespace GameSaveScreenStore {
11
- export const store = new Store<GameSaveScreenStoreState>({
10
+ export namespace SaveMenuPagination {
11
+ export const store = new Store<SaveMenuPaginationStorage>({
12
12
  page: localStorage.getItem("save_screen_page")
13
13
  ? parseInt(localStorage.getItem("save_screen_page") as string, 10)
14
14
  : 0,
@@ -0,0 +1,20 @@
1
+ // @ts-nocheck
2
+ /* eslint-disable */
3
+ // noinspection JSUnusedGlobalSymbols
4
+ // This file is auto-generated by @drincs/pixi-vn vite plugin. Do not edit manually.
5
+ declare module "@drincs/pixi-vn/characters" {
6
+ interface PixivnCharacterIds {
7
+ "mc": never;
8
+ "james": never;
9
+ "steph": never;
10
+ "sly": never;
11
+ }
12
+ }
13
+ declare module "@drincs/pixi-vn/narration" {
14
+ interface PixivnLabelIds {
15
+ "animation_01": never;
16
+ "second_part": never;
17
+ "start": never;
18
+ }
19
+ }
20
+ export {};
@@ -35,6 +35,7 @@ export default defineConfig({
35
35
  content: "./src/content/index.ts",
36
36
  characters: "./src/content/characters.ts",
37
37
  labels: "./src/content/labels/*.label.ts",
38
+ typeFilePath: "./src/pixi-vn-keys.gen.d.ts",
38
39
  }),
39
40
  VitePWA({
40
41
  // generate icons with: npm run icon
@@ -2115,9 +2115,9 @@
2115
2115
  }
2116
2116
  },
2117
2117
  "node_modules/@drincs/pixi-vn": {
2118
- "version": "1.8.11",
2119
- "resolved": "https://registry.npmjs.org/@drincs/pixi-vn/-/pixi-vn-1.8.11.tgz",
2120
- "integrity": "sha512-T7FuV/v8qevXq+edFdSLQKyJnQrRhDN4PUzlqw5qe0tDIXycTbr/MMnBNEYRuBMEYUMtoYZb0tmKHY/5Xh8q0Q==",
2118
+ "version": "1.8.12",
2119
+ "resolved": "https://registry.npmjs.org/@drincs/pixi-vn/-/pixi-vn-1.8.12.tgz",
2120
+ "integrity": "sha512-1Ff8mZ+hYQzpA2F/LAH37f6cfEewJcYtE4hjLcJRQCv2ql+ti12JAAzCUItopUt8VWEKFGY43J8XILAc66wfjA==",
2121
2121
  "license": "LGPL-2.1",
2122
2122
  "workspaces": [
2123
2123
  "sandbox"
@@ -19,8 +19,8 @@
19
19
  },
20
20
  "dependencies": {
21
21
  "@base-ui/react": "^1.5.0",
22
- "@drincs/pixi-vn": "^1.8.11",
23
- "@drincs/pixi-vn-ink": "^1.0.4",
22
+ "@drincs/pixi-vn": "^1.8.13",
23
+ "@drincs/pixi-vn-ink": "^1.0.5",
24
24
  "@drincs/pixi-vn-spine": "^0.2.1",
25
25
  "@tailwindcss/vite": "^4.3.0",
26
26
  "@tanstack/react-devtools": "^0.10.5",