@rshono/create 1.0.0-rc.20 → 1.0.0-rc.21

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 (3) hide show
  1. package/dist/api.mjs +3 -3
  2. package/dist/cli.mjs +252 -221
  3. package/package.json +5 -5
package/dist/api.mjs CHANGED
@@ -147,7 +147,7 @@ __webpack_require__.d(__webpack_exports__, {
147
147
 
148
148
  ;// CONCATENATED MODULE: ./src/generated/framework.ts
149
149
  // GENERATED by scripts/codegen.mjs from packages/core — do not edit. Run `pnpm --filter @rshono/create codegen`.
150
- /** The framework release a scaffolded app is pinned to: this package and rshono ship together. */ const RSHONO_VERSION = '1.0.0-rc.20';
150
+ /** The framework release a scaffolded app is pinned to: this package and rshono ship together. */ const RSHONO_VERSION = '1.0.0-rc.21';
151
151
  /**
152
152
  * The Node range rshono declares, restated in every scaffolded app's `engines` — so a CI image or a contributor
153
153
  * on an older Node hears it from their package manager rather than from a stack trace.
@@ -156,11 +156,11 @@ __webpack_require__.d(__webpack_exports__, {
156
156
  * The dependency versions rshono is tested against, copied from its own manifest. Exact where it is exact:
157
157
  * React's RSC internals are coupled across builds, and a generated app has no workspace overrides.
158
158
  */ const FRAMEWORK_DEPS = {
159
- hono: '^4.13.5',
159
+ hono: '^4.13.7',
160
160
  react: '19.2.8',
161
161
  'react-dom': '19.2.8',
162
162
  typescript: '^7.0.2',
163
- '@types/node': '^26.4.0',
163
+ '@types/node': '^26.5.1',
164
164
  '@types/react': '^19.2.18'
165
165
  };
166
166
  /** Every `deploy` target the installed framework knows, with the command that ships what it built. */ const DEPLOY_TARGETS = [
package/dist/cli.mjs CHANGED
@@ -482,7 +482,7 @@ function main_wrapAnsi(string, columns, options) {
482
482
  var src = __webpack_require__(347);
483
483
  ;// CONCATENATED MODULE: external "node:tty"
484
484
 
485
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@clack+core@1.4.3/node_modules/@clack/core/dist/index.mjs
485
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@clack+core@1.5.1/node_modules/@clack/core/dist/index.mjs
486
486
 
487
487
 
488
488
 
@@ -548,6 +548,7 @@ const dist_settings = {
548
548
  error: "Something went wrong"
549
549
  },
550
550
  withGuide: true,
551
+ accessible: void 0,
551
552
  date: {
552
553
  monthNames: [...dist_t],
553
554
  messages: {
@@ -572,11 +573,17 @@ function updateSettings(n) {
572
573
  const e = n.messages;
573
574
  e.cancel !== void 0 && (dist_settings.messages.cancel = e.cancel), e.error !== void 0 && (dist_settings.messages.error = e.error);
574
575
  }
575
- if (n.withGuide !== void 0 && (dist_settings.withGuide = n.withGuide !== false), n.date !== void 0) {
576
+ if (n.withGuide !== void 0 && (dist_settings.withGuide = n.withGuide !== false), n.accessible !== void 0 && (dist_settings.accessible = n.accessible === true), n.date !== void 0) {
576
577
  const e = n.date;
577
578
  e.monthNames !== void 0 && (dist_settings.date.monthNames = [...e.monthNames]), e.messages !== void 0 && (e.messages.required !== void 0 && (dist_settings.date.messages.required = e.messages.required), e.messages.invalidMonth !== void 0 && (dist_settings.date.messages.invalidMonth = e.messages.invalidMonth), e.messages.invalidDay !== void 0 && (dist_settings.date.messages.invalidDay = e.messages.invalidDay), e.messages.afterMin !== void 0 && (dist_settings.date.messages.afterMin = e.messages.afterMin), e.messages.beforeMax !== void 0 && (dist_settings.date.messages.beforeMax = e.messages.beforeMax));
578
579
  }
579
580
  }
581
+ function isAccessible(n) {
582
+ if (n !== void 0) return n;
583
+ if (dist_settings.accessible !== void 0) return dist_settings.accessible;
584
+ const e = process.env.ACCESSIBLE;
585
+ return e !== void 0 && e !== "" && e !== "0" && e !== "false";
586
+ }
580
587
  function isActionKey(n, e) {
581
588
  if (typeof n == "string")
582
589
  return dist_settings.aliases.get(n) === e;
@@ -614,7 +621,7 @@ function dist_block({
614
621
  input: e = stdin,
615
622
  output: r = stdout,
616
623
  overwrite: o = true,
617
- hideCursor: t = true
624
+ hideCursor: n = true
618
625
  } = {}) {
619
626
  const s = l.createInterface({
620
627
  input: e,
@@ -623,51 +630,47 @@ function dist_block({
623
630
  tabSize: 1
624
631
  });
625
632
  l.emitKeypressEvents(e, s), e instanceof ReadStream && e.isTTY && e.setRawMode(true);
626
- const n = (f, { name: a, sequence: p }) => {
633
+ const t = (f, { name: a, sequence: w }) => {
627
634
  const c = String(f);
628
- if (isActionKey([c, a, p], "cancel")) {
629
- t && r.write(cursor.show), process.exit(0);
635
+ if (isActionKey([c, a, w], "cancel")) {
636
+ n && r.write(cursor.show), process.exit(0);
630
637
  return;
631
638
  }
632
639
  if (!o) return;
633
640
  const i = a === "return" ? 0 : -1, m = a === "return" ? -1 : 0;
634
641
  l.moveCursor(r, i, m, () => {
635
642
  l.clearLine(r, 1, () => {
636
- e.once("keypress", n);
643
+ e.once("keypress", t);
637
644
  });
638
645
  });
639
646
  };
640
- return t && r.write(cursor.hide), e.once("keypress", n), () => {
641
- e.off("keypress", n), t && r.write(cursor.show), e instanceof ReadStream && e.isTTY && !dist_R && e.setRawMode(false), s.terminal = false, s.close();
647
+ return n && r.write(cursor.hide), e.once("keypress", t), () => {
648
+ e.off("keypress", t), n && r.write(cursor.show), e instanceof ReadStream && e.isTTY && !dist_R && e.setRawMode(false), s.terminal = false, s.close();
642
649
  };
643
650
  }
644
651
  const dist_getColumns = (e) => "columns" in e && typeof e.columns == "number" ? e.columns : 80, getRows = (e) => "rows" in e && typeof e.rows == "number" ? e.rows : 20;
645
- function dist_wrapTextWithPrefix(e, r, o, t = o, s = o, n) {
652
+ function dist_wrapTextWithPrefix(e, r, o, n = o, s = o, t) {
646
653
  const f = dist_getColumns(e ?? external_node_process_stdout);
647
654
  return main_wrapAnsi(r, f - o.length, {
648
655
  hard: true,
649
656
  trim: false
650
657
  }).split(`
651
658
  `).map((c, i, m) => {
652
- const d = n ? n(c, i) : c;
653
- return i === 0 ? `${t}${d}` : i === m.length - 1 ? `${s}${d}` : `${o}${d}`;
659
+ const d = t ? t(c, i) : c;
660
+ return i === 0 ? `${n}${d}` : i === m.length - 1 ? `${s}${d}` : `${o}${d}`;
654
661
  }).join(`
655
662
  `);
656
663
  }
657
664
 
658
- function dist_runValidation(e, n) {
665
+ function dist_runValidation(e, a) {
659
666
  if ("~standard" in e) {
660
- const a = e["~standard"].validate(n);
661
- if (a instanceof Promise)
662
- throw new TypeError(
663
- "Schema validation must be synchronous. Update `validate()` and remove any asynchronous logic."
664
- );
665
- return a.issues?.at(0)?.message;
667
+ const n = e["~standard"].validate(a);
668
+ return n instanceof Promise ? n.then((r) => r.issues?.at(0)?.message) : n.issues?.at(0)?.message;
666
669
  }
667
- return e(n);
670
+ return e(a);
668
671
  }
669
672
 
670
- class dist_V {
673
+ class dist_y {
671
674
  input;
672
675
  output;
673
676
  _abortSignal;
@@ -682,9 +685,17 @@ class dist_V {
682
685
  error = "";
683
686
  value;
684
687
  userInput = "";
688
+ /**
689
+ * Whether accessible (static, screen-reader friendly) output is enabled for
690
+ * this prompt, resolved from the `accessible` option, the global setting,
691
+ * and the `ACCESSIBLE` env var.
692
+ */
693
+ get accessible() {
694
+ return isAccessible(this.opts.accessible);
695
+ }
685
696
  constructor(t, e = true) {
686
- const { input: i = external_node_process_stdin, output: n = external_node_process_stdout, render: s, signal: r, ...o } = t;
687
- this.opts = o, this.onKeypress = this.onKeypress.bind(this), this.close = this.close.bind(this), this.render = this.render.bind(this), this._render = s.bind(this), this._track = e, this._abortSignal = r, this.input = i, this.output = n;
697
+ const { input: i = external_node_process_stdin, output: s = external_node_process_stdout, render: r, signal: n, ...o } = t;
698
+ this.opts = o, this.onKeypress = this.onKeypress.bind(this), this.close = this.close.bind(this), this.render = this.render.bind(this), this._render = r.bind(this), this._track = e, this._abortSignal = n, this.input = i, this.output = s;
688
699
  }
689
700
  /**
690
701
  * Unsubscribe all listeners
@@ -722,11 +733,11 @@ class dist_V {
722
733
  * @param data - The data to pass to the callback
723
734
  */
724
735
  emit(t, ...e) {
725
- const i = this._subscribers.get(t) ?? [], n = [];
726
- for (const s of i)
727
- s.cb(...e), s.once && n.push(() => i.splice(i.indexOf(s), 1));
728
- for (const s of n)
729
- s();
736
+ const i = this._subscribers.get(t) ?? [], s = [];
737
+ for (const r of i)
738
+ r.cb(...e), r.once && s.push(() => i.splice(i.indexOf(r), 1));
739
+ for (const r of s)
740
+ r();
730
741
  }
731
742
  prompt() {
732
743
  return new Promise((t) => {
@@ -769,15 +780,18 @@ class dist_V {
769
780
  _clearUserInput() {
770
781
  this.rl?.write(null, { ctrl: true, name: "u" }), this._setUserInput("");
771
782
  }
772
- onKeypress(t, e) {
773
- if (this._track && e.name !== "return" && (e.name && this._isActionKey(t, e) && this.rl?.write(null, { ctrl: true, name: "h" }), this._cursor = this.rl?.cursor ?? 0, this._setUserInput(this.rl?.line)), this.state === "error" && (this.state = "active"), e?.name && (!this._track && dist_settings.aliases.has(e.name) && this.emit("cursor", dist_settings.aliases.get(e.name)), dist_settings.actions.has(e.name) && this.emit("cursor", e.name)), t && (t.toLowerCase() === "y" || t.toLowerCase() === "n") && this.emit("confirm", t.toLowerCase() === "y"), this.emit("key", t, e), e?.name === "return" && this._shouldSubmit(t, e)) {
774
- if (this.opts.validate) {
775
- const i = dist_runValidation(this.opts.validate, this.value);
776
- i && (this.error = i instanceof Error ? i.message : i, this.state = "error", this.rl?.write(this.userInput));
783
+ async onKeypress(t, e) {
784
+ if (this.state !== "validating") {
785
+ if (this._track && e.name !== "return" && (e.name && this._isActionKey(t, e) && this.rl?.write(null, { ctrl: true, name: "h" }), this._cursor = this.rl?.cursor ?? 0, this._setUserInput(this.rl?.line)), this.state === "error" && (this.state = "active"), e?.name && (!this._track && dist_settings.aliases.has(e.name) && this.emit("cursor", dist_settings.aliases.get(e.name)), dist_settings.actions.has(e.name) && this.emit("cursor", e.name)), t && (t.toLowerCase() === "y" || t.toLowerCase() === "n") && this.emit("confirm", t.toLowerCase() === "y"), this.emit("key", t, e), e?.name === "return" && this._shouldSubmit(t, e)) {
786
+ if (this.opts.validate) {
787
+ const i = dist_runValidation(this.opts.validate, this.value);
788
+ let s;
789
+ i instanceof Promise ? (this.state = "validating", this.render(), s = await i) : s = i, s && (this.error = s instanceof Error ? s.message : s, this.state = "error", this.rl?.write(this.userInput));
790
+ }
791
+ this.state !== "error" && (this.state = "submit");
777
792
  }
778
- this.state !== "error" && (this.state = "submit");
793
+ isActionKey([t, e?.name, e?.sequence], "cancel") && (this.state = "cancel"), (this.state === "submit" || this.state === "cancel") && this.emit("finalize"), this.render(), (this.state === "submit" || this.state === "cancel") && this.close();
779
794
  }
780
- isActionKey([t, e?.name, e?.sequence], "cancel") && (this.state = "cancel"), (this.state === "submit" || this.state === "cancel") && this.emit("finalize"), this.render(), (this.state === "submit" || this.state === "cancel") && this.close();
781
795
  }
782
796
  close() {
783
797
  this.input.unpipe(), this.input.removeListener("keypress", this.onKeypress), this.output.write(`
@@ -799,28 +813,28 @@ class dist_V {
799
813
  else {
800
814
  const e = diffLines(this._prevFrame, t), i = getRows(this.output);
801
815
  if (this.restoreCursor(), e) {
802
- const n = Math.max(0, e.numLinesAfter - i), s = Math.max(0, e.numLinesBefore - i);
803
- let r = e.lines.find((o) => o >= n);
804
- if (r === void 0) {
816
+ const s = Math.max(0, e.numLinesAfter - i), r = Math.max(0, e.numLinesBefore - i);
817
+ let n = e.lines.find((o) => o >= s);
818
+ if (n === void 0) {
805
819
  this._prevFrame = t;
806
820
  return;
807
821
  }
808
822
  if (e.lines.length === 1) {
809
- this.output.write(src.cursor.move(0, r - s)), this.output.write(src.erase.lines(1));
823
+ this.output.write(src.cursor.move(0, n - r)), this.output.write(src.erase.lines(1));
810
824
  const o = t.split(`
811
825
  `);
812
- this.output.write(o[r]), this._prevFrame = t, this.output.write(src.cursor.move(0, o.length - r - 1));
826
+ this.output.write(o[n]), this._prevFrame = t, this.output.write(src.cursor.move(0, o.length - n - 1));
813
827
  return;
814
828
  } else if (e.lines.length > 1) {
815
- if (n < s)
816
- r = n;
829
+ if (s < r)
830
+ n = s;
817
831
  else {
818
- const h = r - s;
832
+ const h = n - r;
819
833
  h > 0 && this.output.write(src.cursor.move(0, h));
820
834
  }
821
835
  this.output.write(src.erase.down());
822
836
  const f = t.split(`
823
- `).slice(r);
837
+ `).slice(n);
824
838
  this.output.write(f.join(`
825
839
  `)), this._prevFrame = t;
826
840
  return;
@@ -839,14 +853,14 @@ function p$1(l, e) {
839
853
  const i = e.findIndex((s) => s.value === l);
840
854
  return i !== -1 ? i : 0;
841
855
  }
842
- function dist_g(l, e) {
856
+ function dist_m(l, e) {
843
857
  return (e.label ?? String(e.value)).toLowerCase().includes(l.toLowerCase());
844
858
  }
845
- function dist_m(l, e) {
859
+ function dist_g(l, e) {
846
860
  if (e)
847
861
  return l ? e : e[0];
848
862
  }
849
- let T$1 = class T extends dist_V {
863
+ let T$1 = class T extends dist_y {
850
864
  filteredOptions;
851
865
  multiple;
852
866
  isNavigating = false;
@@ -857,6 +871,7 @@ let T$1 = class T extends dist_V {
857
871
  #t;
858
872
  #i;
859
873
  #n;
874
+ #l;
860
875
  get cursor() {
861
876
  return this.#e;
862
877
  }
@@ -872,29 +887,34 @@ let T$1 = class T extends dist_V {
872
887
  return typeof this.#i == "function" ? this.#i() : this.#i;
873
888
  }
874
889
  constructor(e) {
875
- super(e), this.#i = e.options, this.#n = e.placeholder;
890
+ super(e), this.#i = e.options, this.#n = e.placeholder, this.#l = e.completeOnTab === true;
876
891
  const t = this.options;
877
- this.filteredOptions = [...t], this.multiple = e.multiple === true, this.#t = typeof e.options == "function" ? e.filter : e.filter ?? dist_g;
892
+ this.filteredOptions = [...t], this.multiple = e.multiple === true, this.#t = typeof e.options == "function" ? e.filter : e.filter ?? dist_m;
878
893
  let i;
879
894
  if (e.initialValue && Array.isArray(e.initialValue) ? this.multiple ? i = e.initialValue : i = e.initialValue.slice(0, 1) : !this.multiple && this.options.length > 0 && (i = [this.options[0]?.value]), i)
880
895
  for (const s of i) {
881
- const n = t.findIndex((o) => o.value === s);
896
+ const n = t.findIndex((r) => r.value === s);
882
897
  n !== -1 && (this.toggleSelected(s), this.#e = n);
883
898
  }
884
- this.focusedValue = this.options[this.#e]?.value, this.on("key", (s, n) => this.#l(s, n)), this.on("userInput", (s) => this.#u(s));
899
+ this.focusedValue = this.options[this.#e]?.value, this.on("key", (s, n) => this.#u(s, n)), this.on("userInput", (s) => this.#o(s));
885
900
  }
886
901
  _isActionKey(e, t) {
887
902
  return e === " " || this.multiple && this.isNavigating && t.name === "space" && e !== void 0 && e !== "";
888
903
  }
889
- #l(e, t) {
890
- const i = t.name === "up", s = t.name === "down", n = t.name === "return", o = this.userInput === "" || this.userInput === " ", u = this.#n, a = this.options, f = u !== void 0 && u !== "" && a.some(
891
- (r) => !r.disabled && (this.#t ? this.#t(u, r) : true)
904
+ #u(e, t) {
905
+ const i = t.name === "up", s = t.name === "down", n = t.name === "return", r = this.userInput === "" || this.userInput === " ", u = this.#n, d = this.options, c = u !== void 0 && u !== "" && d.some(
906
+ (o) => !o.disabled && (this.#t ? this.#t(u, o) : true)
892
907
  );
893
- if (t.name === "tab" && o && f) {
908
+ if (t.name === "tab" && r && c) {
894
909
  this.userInput === " " && this._clearUserInput(), this._setUserInput(u, true), this.isNavigating = false;
895
910
  return;
896
911
  }
897
- i || s ? (this.#e = findCursor(this.#e, i ? -1 : 1, this.filteredOptions), this.focusedValue = this.filteredOptions[this.#e]?.value, this.multiple || (this.selectedValues = [this.focusedValue]), this.isNavigating = true) : n ? this.value = dist_m(this.multiple, this.selectedValues) : this.multiple ? this.focusedValue !== void 0 && (t.name === "tab" || this.isNavigating && t.name === "space") ? this.toggleSelected(this.focusedValue) : this.isNavigating = false : (this.focusedValue && (this.selectedValues = [this.focusedValue]), this.isNavigating = false);
912
+ if (t.name === "tab" && this.#l && !this.multiple && this.focusedValue !== void 0) {
913
+ const o = String(this.focusedValue);
914
+ this._clearUserInput(), this._setUserInput(o, true), this.isNavigating = false;
915
+ return;
916
+ }
917
+ i || s ? (this.#e = findCursor(this.#e, i ? -1 : 1, this.filteredOptions), this.focusedValue = this.filteredOptions[this.#e]?.value, this.multiple || (this.selectedValues = [this.focusedValue]), this.isNavigating = true) : n ? this.value = dist_g(this.multiple, this.selectedValues) : this.multiple ? this.focusedValue !== void 0 && (t.name === "tab" || this.isNavigating && t.name === "space") ? this.toggleSelected(this.focusedValue) : this.isNavigating = false : (this.focusedValue && (this.selectedValues = [this.focusedValue]), this.isNavigating = false);
898
918
  }
899
919
  deselectAll() {
900
920
  this.selectedValues = [];
@@ -902,7 +922,7 @@ let T$1 = class T extends dist_V {
902
922
  toggleSelected(e) {
903
923
  this.filteredOptions.length !== 0 && (this.multiple ? this.selectedValues.includes(e) ? this.selectedValues = this.selectedValues.filter((t) => t !== e) : this.selectedValues = [...this.selectedValues, e] : this.selectedValues = [e]);
904
924
  }
905
- #u(e) {
925
+ #o(e) {
906
926
  if (e !== this.#s) {
907
927
  this.#s = e;
908
928
  const t = this.options;
@@ -915,7 +935,7 @@ let T$1 = class T extends dist_V {
915
935
  }
916
936
  };
917
937
 
918
- class dist_r extends dist_V {
938
+ class dist_r extends dist_y {
919
939
  get cursor() {
920
940
  return this.value ? 0 : 1;
921
941
  }
@@ -994,7 +1014,7 @@ function dist_T(r, t, i, s) {
994
1014
  max: e && t.year === e.year && t.month === e.month ? e.day : dist_c(t.year, t.month)
995
1015
  };
996
1016
  }
997
- class U extends dist_V {
1017
+ class U extends dist_y {
998
1018
  #i;
999
1019
  #o;
1000
1020
  #t;
@@ -1160,7 +1180,7 @@ class U extends dist_V {
1160
1180
  }
1161
1181
  }
1162
1182
 
1163
- let u$2 = class u extends dist_V {
1183
+ let u$2 = class u extends dist_y {
1164
1184
  options;
1165
1185
  cursor = 0;
1166
1186
  #t;
@@ -1218,7 +1238,7 @@ let u$2 = class u extends dist_V {
1218
1238
  };
1219
1239
 
1220
1240
  const dist_o = /* @__PURE__ */ new Set(["up", "down", "left", "right"]);
1221
- class dist_h extends dist_V {
1241
+ class dist_h extends dist_y {
1222
1242
  #t = false;
1223
1243
  #s;
1224
1244
  focused = "editor";
@@ -1313,7 +1333,7 @@ ${i}` : `${s}${external_node_util_styleText("inverse", r)}${i}`;
1313
1333
  }
1314
1334
  }
1315
1335
 
1316
- class dist_a extends dist_V {
1336
+ class dist_a extends dist_y {
1317
1337
  options;
1318
1338
  cursor = 0;
1319
1339
  get _value() {
@@ -1364,7 +1384,7 @@ class dist_a extends dist_V {
1364
1384
  }
1365
1385
  }
1366
1386
 
1367
- let u$1 = class u extends dist_V {
1387
+ let u$1 = class u extends dist_y {
1368
1388
  _mask = "\u2022";
1369
1389
  get cursor() {
1370
1390
  return this._cursor;
@@ -1393,7 +1413,7 @@ let u$1 = class u extends dist_V {
1393
1413
  }
1394
1414
  };
1395
1415
 
1396
- let n$1 = class n extends dist_V {
1416
+ let n$1 = class n extends dist_y {
1397
1417
  options;
1398
1418
  cursor = 0;
1399
1419
  get _selectedValue() {
@@ -1422,7 +1442,7 @@ let n$1 = class n extends dist_V {
1422
1442
  }
1423
1443
  };
1424
1444
 
1425
- class dist_u extends dist_V {
1445
+ class dist_u extends dist_y {
1426
1446
  options;
1427
1447
  cursor = 0;
1428
1448
  constructor(t) {
@@ -1440,7 +1460,7 @@ class dist_u extends dist_V {
1440
1460
  }
1441
1461
  }
1442
1462
 
1443
- class dist_n extends dist_V {
1463
+ class dist_n extends dist_y {
1444
1464
  get userInputWithCursor() {
1445
1465
  if (this.state === "submit")
1446
1466
  return this.userInput;
@@ -1471,7 +1491,7 @@ class dist_n extends dist_V {
1471
1491
 
1472
1492
  ;// CONCATENATED MODULE: external "node:path"
1473
1493
 
1474
- ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@clack+prompts@1.7.0/node_modules/@clack/prompts/dist/index.mjs
1494
+ ;// CONCATENATED MODULE: ../../node_modules/.pnpm/@clack+prompts@1.8.1/node_modules/@clack/prompts/dist/index.mjs
1475
1495
 
1476
1496
 
1477
1497
 
@@ -1509,6 +1529,8 @@ const unicode = isUnicodeSupported(), isCI = () => process.env.CI === "true", is
1509
1529
  return external_node_util_styleText("yellow", S_STEP_ERROR);
1510
1530
  case "submit":
1511
1531
  return external_node_util_styleText("green", S_STEP_SUBMIT);
1532
+ case "validating":
1533
+ return external_node_util_styleText("dim", S_STEP_ACTIVE);
1512
1534
  }
1513
1535
  }, symbolBar = (o) => {
1514
1536
  switch (o) {
@@ -1595,16 +1617,16 @@ const limitOptions = ({
1595
1617
  return c && x.push(M), x;
1596
1618
  };
1597
1619
 
1598
- function prompts_dist_P(t) {
1620
+ function dist_E(t) {
1599
1621
  return t.label ?? String(t.value ?? "");
1600
1622
  }
1601
- function dist_E(t, c) {
1623
+ function prompts_dist_P(t, c) {
1602
1624
  if (!t)
1603
1625
  return true;
1604
- const n = (c.label ?? String(c.value ?? "")).toLowerCase(), i = (c.hint ?? "").toLowerCase(), l = String(c.value).toLowerCase(), o = t.toLowerCase();
1605
- return n.includes(o) || i.includes(o) || l.includes(o);
1626
+ const n = (c.label ?? String(c.value ?? "")).toLowerCase(), i = (c.hint ?? "").toLowerCase(), r = String(c.value).toLowerCase(), o = t.toLowerCase();
1627
+ return n.includes(o) || i.includes(o) || r.includes(o);
1606
1628
  }
1607
- function dist_N(t, c) {
1629
+ function dist_j(t, c) {
1608
1630
  const n = [];
1609
1631
  for (const i of c)
1610
1632
  t.includes(i.value) && n.push(i);
@@ -1615,14 +1637,15 @@ const autocomplete = (t) => new AutocompletePrompt({
1615
1637
  initialValue: t.initialValue ? [t.initialValue] : void 0,
1616
1638
  initialUserInput: t.initialUserInput,
1617
1639
  placeholder: t.placeholder,
1618
- filter: t.filter ?? ((n, i) => dist_E(n, i)),
1640
+ completeOnTab: t.completeOnTab,
1641
+ filter: t.filter ?? ((n, i) => prompts_dist_P(n, i)),
1619
1642
  signal: t.signal,
1620
1643
  input: t.input,
1621
1644
  output: t.output,
1622
1645
  validate: t.validate,
1623
1646
  render() {
1624
- const n = t.withGuide ?? settings.withGuide, i = n ? [`${styleText("gray", S_BAR)}`, `${symbol(this.state)} ${t.message}`] : [`${symbol(this.state)} ${t.message}`], l = this.userInput, o = this.options, m = t.placeholder, p = l === "" && m !== void 0, $ = (r, s) => {
1625
- const a = prompts_dist_P(r), u = r.hint && r.value === this.focusedValue ? styleText("dim", ` (${r.hint})`) : "";
1647
+ const n = t.withGuide ?? settings.withGuide, i = n ? [`${styleText("gray", S_BAR)}`, `${symbol(this.state)} ${t.message}`] : [`${symbol(this.state)} ${t.message}`], r = this.userInput, o = this.options, m = t.placeholder, p = r === "" && m !== void 0, $ = (l, s) => {
1648
+ const a = dist_E(l), u = l.hint && l.value === this.focusedValue ? styleText("dim", ` (${l.hint})`) : "";
1626
1649
  switch (s) {
1627
1650
  case "active":
1628
1651
  return `${styleText("green", S_RADIO_ACTIVE)} ${a}${u}`;
@@ -1634,39 +1657,40 @@ const autocomplete = (t) => new AutocompletePrompt({
1634
1657
  };
1635
1658
  switch (this.state) {
1636
1659
  case "submit": {
1637
- const r = dist_N(this.selectedValues, o), s = r.length > 0 ? ` ${styleText("dim", r.map(prompts_dist_P).join(", "))}` : "", a = n ? styleText("gray", S_BAR) : "";
1660
+ const l = dist_j(this.selectedValues, o), s = l.length > 0 ? ` ${styleText("dim", l.map(dist_E).join(", "))}` : "", a = n ? styleText("gray", S_BAR) : "";
1638
1661
  return `${i.join(`
1639
1662
  `)}
1640
1663
  ${a}${s}`;
1641
1664
  }
1642
1665
  case "cancel": {
1643
- const r = l ? ` ${styleText(["strikethrough", "dim"], l)}` : "", s = n ? styleText("gray", S_BAR) : "";
1666
+ const l = r ? ` ${styleText(["strikethrough", "dim"], r)}` : "", s = n ? styleText("gray", S_BAR) : "";
1644
1667
  return `${i.join(`
1645
1668
  `)}
1646
- ${s}${r}`;
1669
+ ${s}${l}`;
1647
1670
  }
1648
1671
  default: {
1649
- const r = this.state === "error" ? "yellow" : "cyan", s = n ? `${styleText(r, S_BAR)} ` : "", a = n ? styleText(r, S_BAR_END) : "";
1672
+ const l = this.state === "error" ? "yellow" : "cyan", s = n ? `${styleText(l, S_BAR)} ` : "", a = n ? styleText(l, S_BAR_END) : "";
1650
1673
  let u = "";
1651
1674
  if (this.isNavigating || p) {
1652
- const d = p ? m : l;
1675
+ const d = p ? m : r;
1653
1676
  u = d !== "" ? ` ${styleText("dim", d)}` : "";
1654
1677
  } else
1655
1678
  u = ` ${this.userInputWithCursor}`;
1656
1679
  const V = this.filteredOptions.length !== o.length ? styleText(
1657
1680
  "dim",
1658
1681
  ` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? "" : "es"})`
1659
- ) : "", y = this.filteredOptions.length === 0 && l ? [`${s}${styleText("yellow", "No matches found")}`] : [], b = this.state === "error" ? [`${s}${styleText("yellow", this.error)}`] : [];
1682
+ ) : "", b = this.filteredOptions.length === 0 && r ? [`${s}${styleText("yellow", "No matches found")}`] : [], y = this.state === "error" ? [`${s}${styleText("yellow", this.error)}`] : [];
1660
1683
  n && i.push(`${s.trimEnd()}`), i.push(
1661
1684
  `${s}${styleText("dim", "Search:")}${u}${V}`,
1662
- ...y,
1663
- ...b
1685
+ ...b,
1686
+ ...y
1664
1687
  );
1665
- const v = [
1688
+ const S = [
1666
1689
  `${styleText("dim", "\u2191/\u2193")} to select`,
1690
+ ...t.completeOnTab ? [`${styleText("dim", "Tab:")} complete`] : [],
1667
1691
  `${styleText("dim", "Enter:")} confirm`,
1668
1692
  `${styleText("dim", "Type:")} to search`
1669
- ], g = [`${s}${v.join(" \u2022 ")}`, a], O = this.filteredOptions.length === 0 ? [] : limitOptions({
1693
+ ], g = [`${s}${S.join(" \u2022 ")}`, a], O = this.filteredOptions.length === 0 ? [] : limitOptions({
1670
1694
  cursor: this.cursor,
1671
1695
  options: this.filteredOptions,
1672
1696
  columnPadding: n ? 3 : 0,
@@ -1689,14 +1713,14 @@ ${s}${r}`;
1689
1713
  }
1690
1714
  }
1691
1715
  }).prompt(), autocompleteMultiselect = (t) => {
1692
- const c = (i, l, o, m) => {
1693
- const p = o.includes(i.value), $ = i.label ?? String(i.value ?? ""), r = i.hint && m !== void 0 && i.value === m ? styleText("dim", ` (${i.hint})`) : "", s = p ? styleText("green", S_CHECKBOX_SELECTED) : styleText("dim", S_CHECKBOX_INACTIVE);
1694
- return i.disabled ? `${styleText("gray", S_CHECKBOX_INACTIVE)} ${styleText(["strikethrough", "gray"], $)}` : l ? `${s} ${$}${r}` : `${s} ${styleText("dim", $)}`;
1716
+ const c = (i, r, o, m) => {
1717
+ const p = o.includes(i.value), $ = i.label ?? String(i.value ?? ""), l = i.hint && m !== void 0 && i.value === m ? styleText("dim", ` (${i.hint})`) : "", s = p ? styleText("green", S_CHECKBOX_SELECTED) : styleText("dim", S_CHECKBOX_INACTIVE);
1718
+ return i.disabled ? `${styleText("gray", S_CHECKBOX_INACTIVE)} ${styleText(["strikethrough", "gray"], $)}` : r ? `${s} ${$}${l}` : `${s} ${styleText("dim", $)}`;
1695
1719
  }, n = new AutocompletePrompt({
1696
1720
  options: t.options,
1697
1721
  multiple: true,
1698
1722
  placeholder: t.placeholder,
1699
- filter: t.filter ?? ((i, l) => dist_E(i, l)),
1723
+ filter: t.filter ?? ((i, r) => prompts_dist_P(i, r)),
1700
1724
  validate: () => {
1701
1725
  if (t.required && n.selectedValues.length === 0)
1702
1726
  return "Please select at least one item";
@@ -1706,39 +1730,39 @@ ${s}${r}`;
1706
1730
  input: t.input,
1707
1731
  output: t.output,
1708
1732
  render() {
1709
- const i = t.withGuide ?? settings.withGuide, l = `${i ? `${styleText("gray", S_BAR)}
1733
+ const i = t.withGuide ?? settings.withGuide, r = `${i ? `${styleText("gray", S_BAR)}
1710
1734
  ` : ""}${symbol(this.state)} ${t.message}
1711
- `, o = this.userInput, m = t.placeholder, p = o === "" && m !== void 0, $ = this.isNavigating || p ? styleText("dim", p ? m : o) : this.userInputWithCursor, r = this.options, s = this.filteredOptions.length !== r.length ? styleText(
1735
+ `, o = this.userInput, m = t.placeholder, p = o === "" && m !== void 0, $ = this.isNavigating || p ? styleText("dim", p ? m : o) : this.userInputWithCursor, l = this.options, s = this.filteredOptions.length !== l.length ? styleText(
1712
1736
  "dim",
1713
1737
  ` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? "" : "es"})`
1714
1738
  ) : "";
1715
1739
  switch (this.state) {
1716
1740
  case "submit":
1717
- return `${l}${i ? `${styleText("gray", S_BAR)} ` : ""}${styleText(
1741
+ return `${r}${i ? `${styleText("gray", S_BAR)} ` : ""}${styleText(
1718
1742
  "dim",
1719
1743
  `${this.selectedValues.length} items selected`
1720
1744
  )}`;
1721
1745
  case "cancel":
1722
- return `${l}${i ? `${styleText("gray", S_BAR)} ` : ""}${styleText(
1746
+ return `${r}${i ? `${styleText("gray", S_BAR)} ` : ""}${styleText(
1723
1747
  ["strikethrough", "dim"],
1724
1748
  o
1725
1749
  )}`;
1726
1750
  default: {
1727
- const a = this.state === "error" ? "yellow" : "cyan", u = i ? `${styleText(a, S_BAR)} ` : "", V = i ? styleText(a, S_BAR_END) : "", y = [
1751
+ const a = this.state === "error" ? "yellow" : "cyan", u = i ? `${styleText(a, S_BAR)} ` : "", V = i ? styleText(a, S_BAR_END) : "", b = [
1728
1752
  `${styleText("dim", "\u2191/\u2193")} to navigate`,
1729
1753
  `${styleText("dim", this.isNavigating ? "Space/Tab:" : "Tab:")} select`,
1730
1754
  `${styleText("dim", "Enter:")} confirm`,
1731
1755
  `${styleText("dim", "Type:")} to search`
1732
- ], b = this.filteredOptions.length === 0 && o ? [`${u}${styleText("yellow", "No matches found")}`] : [], v = this.state === "error" ? [`${u}${styleText("yellow", this.error)}`] : [], g = [
1733
- ...`${l}${i ? styleText(a, S_BAR) : ""}`.split(`
1756
+ ], y = this.filteredOptions.length === 0 && o ? [`${u}${styleText("yellow", "No matches found")}`] : [], S = this.state === "error" ? [`${u}${styleText("yellow", this.error)}`] : [], g = [
1757
+ ...`${r}${i ? styleText(a, S_BAR) : ""}`.split(`
1734
1758
  `),
1735
1759
  `${u}${styleText("dim", "Search:")} ${$}${s}`,
1736
- ...b,
1737
- ...v
1738
- ], O = [`${u}${y.join(" \u2022 ")}`, V], d = limitOptions({
1760
+ ...y,
1761
+ ...S
1762
+ ], O = [`${u}${b.join(" \u2022 ")}`, V], d = limitOptions({
1739
1763
  cursor: this.cursor,
1740
1764
  options: this.filteredOptions,
1741
- style: (f, _) => c(f, _, this.selectedValues, this.focusedValue),
1765
+ style: (f, L) => c(f, L, this.selectedValues, this.focusedValue),
1742
1766
  maxItems: t.maxItems,
1743
1767
  output: t.output,
1744
1768
  rowPadding: g.length + O.length
@@ -1756,24 +1780,24 @@ ${s}${r}`;
1756
1780
  return n.prompt();
1757
1781
  };
1758
1782
 
1759
- const J = (/* unused pure expression or super */ null && ([
1783
+ const K = (/* unused pure expression or super */ null && ([
1760
1784
  S_CORNER_TOP_LEFT,
1761
1785
  S_CORNER_TOP_RIGHT,
1762
1786
  S_CORNER_BOTTOM_LEFT,
1763
1787
  S_CORNER_BOTTOM_RIGHT
1764
- ])), K = (/* unused pure expression or super */ null && ([S_BAR_START, S_BAR_START_RIGHT, S_BAR_END, S_BAR_END_RIGHT]));
1788
+ ])), Q = (/* unused pure expression or super */ null && ([S_BAR_START, S_BAR_START_RIGHT, S_BAR_END, S_BAR_END_RIGHT]));
1765
1789
  function A$1(n, e, t, o) {
1766
1790
  let i = t, f = t;
1767
1791
  return o === "center" ? i = Math.floor((e - n) / 2) : o === "right" && (i = e - n - t), f = e - i - n, [i, f];
1768
1792
  }
1769
- const Q = (n) => n;
1793
+ const dist_U = (n) => n;
1770
1794
  const box = (n = "", e = "", t) => {
1771
- const o = t?.output ?? process.stdout, i = getColumns(o), R = 1 * 2, u = t?.titlePadding ?? 1, h = t?.contentPadding ?? 2, w = t?.width === void 0 || t.width === "auto" ? 1 : Math.min(1, t.width), m = t?.withGuide ?? settings.withGuide ? `${S_BAR} ` : "", b = t?.formatBorder ?? Q, a = (t?.rounded ? J : K).map(b), _ = b(S_BAR_H), B = b(S_BAR), p = l(m), x = l(e), O = i - p;
1772
- let r = Math.floor(i * w) - p;
1795
+ const o = t?.output ?? process.stdout, i = getColumns(o), R = 1 * 2, u = t?.titlePadding ?? 1, h = t?.contentPadding ?? 2, w = t?.width === void 0 || t.width === "auto" ? 1 : Math.min(1, t.width), m = t?.withGuide ?? settings.withGuide ? `${styleText("gray", S_BAR)} ` : "", b = t?.formatBorder ?? dist_U, a = (t?.rounded ? K : Q).map(b), _ = b(S_BAR_H), p = b(S_BAR), x = l(m), B = l(e), y = i - x;
1796
+ let r = Math.floor(i * w) - x;
1773
1797
  if (t?.width === "auto") {
1774
1798
  const c = n.split(`
1775
1799
  `);
1776
- let s = x + u * 2;
1800
+ let s = B + u * 2;
1777
1801
  for (const G of c) {
1778
1802
  const P = l(G) + h * 2;
1779
1803
  P > s && (s = P);
@@ -1781,9 +1805,9 @@ const box = (n = "", e = "", t) => {
1781
1805
  const g = s + R;
1782
1806
  g < r && (r = g);
1783
1807
  }
1784
- r % 2 !== 0 && (r < O ? r++ : r--);
1785
- const d = r - R, S = d - u * 2, T = x > S ? `${e.slice(0, S - 3)}...` : e, [y, W] = A$1(
1786
- l(T),
1808
+ r % 2 !== 0 && (r < y ? r++ : r--);
1809
+ const d = r - R, T = d - u * 2, S = B > T ? `${e.slice(0, T - 3)}...` : e, [O, W] = A$1(
1810
+ l(S),
1787
1811
  d,
1788
1812
  u,
1789
1813
  t?.titleAlign
@@ -1792,7 +1816,7 @@ const box = (n = "", e = "", t) => {
1792
1816
  trim: false
1793
1817
  });
1794
1818
  o.write(
1795
- `${m}${a[0]}${_.repeat(y)}${T}${_.repeat(W)}${a[1]}
1819
+ `${m}${a[0]}${_.repeat(O)}${S}${_.repeat(W)}${a[1]}
1796
1820
  `
1797
1821
  );
1798
1822
  const E = L.split(`
@@ -1805,7 +1829,7 @@ const box = (n = "", e = "", t) => {
1805
1829
  t?.contentAlign
1806
1830
  );
1807
1831
  o.write(
1808
- `${m}${B}${" ".repeat(s)}${c}${" ".repeat(g)}${B}
1832
+ `${m}${p}${" ".repeat(s)}${c}${" ".repeat(g)}${p}
1809
1833
  `
1810
1834
  );
1811
1835
  }
@@ -1813,39 +1837,39 @@ const box = (n = "", e = "", t) => {
1813
1837
  `);
1814
1838
  };
1815
1839
 
1816
- const dist_confirm = (i) => {
1817
- const a = i.active ?? "Yes", s = i.inactive ?? "No";
1840
+ const dist_confirm = (e) => {
1841
+ const a = e.active ?? "Yes", o = e.inactive ?? "No";
1818
1842
  return new dist_r({
1819
1843
  active: a,
1820
- inactive: s,
1821
- signal: i.signal,
1822
- input: i.input,
1823
- output: i.output,
1824
- initialValue: i.initialValue ?? true,
1844
+ inactive: o,
1845
+ signal: e.signal,
1846
+ input: e.input,
1847
+ output: e.output,
1848
+ initialValue: e.initialValue ?? true,
1825
1849
  render() {
1826
- const e = i.withGuide ?? dist_settings.withGuide, u = `${symbol(this.state)} `, l = e ? `${external_node_util_styleText("gray", S_BAR)} ` : "", f = dist_wrapTextWithPrefix(
1827
- i.output,
1828
- i.message,
1850
+ const i = e.withGuide ?? dist_settings.withGuide, u = `${symbol(this.state)} `, l = i ? `${external_node_util_styleText("gray", S_BAR)} ` : "", f = dist_wrapTextWithPrefix(
1851
+ e.output,
1852
+ e.message,
1829
1853
  l,
1830
1854
  u
1831
- ), o = `${e ? `${external_node_util_styleText("gray", S_BAR)}
1855
+ ), s = `${i ? `${external_node_util_styleText("gray", S_BAR)}
1832
1856
  ` : ""}${f}
1833
- `, c = this.value ? a : s;
1857
+ `, c = this.value ? a : o;
1834
1858
  switch (this.state) {
1835
1859
  case "submit": {
1836
- const r = e ? `${external_node_util_styleText("gray", S_BAR)} ` : "";
1837
- return `${o}${r}${external_node_util_styleText("dim", c)}`;
1860
+ const r = i ? `${external_node_util_styleText("gray", S_BAR)} ` : "";
1861
+ return `${s}${r}${external_node_util_styleText("dim", c)}`;
1838
1862
  }
1839
1863
  case "cancel": {
1840
- const r = e ? `${external_node_util_styleText("gray", S_BAR)} ` : "";
1841
- return `${o}${r}${external_node_util_styleText(["strikethrough", "dim"], c)}${e ? `
1864
+ const r = i ? `${external_node_util_styleText("gray", S_BAR)} ` : "";
1865
+ return `${s}${r}${external_node_util_styleText(["strikethrough", "dim"], c)}${i ? `
1842
1866
  ${external_node_util_styleText("gray", S_BAR)}` : ""}`;
1843
1867
  }
1844
1868
  default: {
1845
- const r = e ? `${external_node_util_styleText("cyan", S_BAR)} ` : "", g = e ? external_node_util_styleText("cyan", S_BAR_END) : "";
1846
- return `${o}${r}${this.value ? `${external_node_util_styleText("green", S_RADIO_ACTIVE)} ${a}` : `${external_node_util_styleText("dim", S_RADIO_INACTIVE)} ${external_node_util_styleText("dim", a)}`}${i.vertical ? e ? `
1869
+ const r = i ? `${external_node_util_styleText("cyan", S_BAR)} ` : "", g = i ? external_node_util_styleText("cyan", S_BAR_END) : "";
1870
+ return `${s}${r}${this.value ? `${external_node_util_styleText("green", S_RADIO_ACTIVE)} ${a}` : `${external_node_util_styleText("dim", S_RADIO_INACTIVE)} ${external_node_util_styleText("dim", a)}`}${e.vertical ? i ? `
1847
1871
  ${external_node_util_styleText("cyan", S_BAR)} ` : `
1848
- ` : ` ${external_node_util_styleText("dim", "/")} `}${this.value ? `${external_node_util_styleText("dim", S_RADIO_INACTIVE)} ${external_node_util_styleText("dim", s)}` : `${external_node_util_styleText("green", S_RADIO_ACTIVE)} ${s}`}
1872
+ ` : ` ${external_node_util_styleText("dim", "/")} `}${this.value ? `${external_node_util_styleText("dim", S_RADIO_INACTIVE)} ${external_node_util_styleText("dim", o)}` : `${external_node_util_styleText("green", S_RADIO_ACTIVE)} ${o}`}
1849
1873
  ${g}
1850
1874
  `;
1851
1875
  }
@@ -1947,7 +1971,7 @@ const multiselect = (i) => {
1947
1971
  const u = (t, a) => {
1948
1972
  const r = t.label ?? String(t.value);
1949
1973
  return a === "disabled" ? `${styleText("gray", S_CHECKBOX_INACTIVE)} ${prompts_dist_m(r, (o) => styleText(["strikethrough", "gray"], o))}${t.hint ? ` ${styleText("dim", `(${t.hint ?? "disabled"})`)}` : ""}` : a === "active" ? `${styleText("cyan", S_CHECKBOX_ACTIVE)} ${r}${t.hint ? ` ${styleText("dim", `(${t.hint})`)}` : ""}` : a === "selected" ? `${styleText("green", S_CHECKBOX_SELECTED)} ${prompts_dist_m(r, (o) => styleText("dim", o))}${t.hint ? ` ${styleText("dim", `(${t.hint})`)}` : ""}` : a === "cancelled" ? `${prompts_dist_m(r, (o) => styleText(["strikethrough", "dim"], o))}` : a === "active-selected" ? `${styleText("green", S_CHECKBOX_SELECTED)} ${r}${t.hint ? ` ${styleText("dim", `(${t.hint})`)}` : ""}` : a === "submitted" ? `${prompts_dist_m(r, (o) => styleText("dim", o))}` : `${styleText("dim", S_CHECKBOX_INACTIVE)} ${prompts_dist_m(r, (o) => styleText("dim", o))}`;
1950
- }, d = i.required ?? true, v = i.showInstructions ?? true;
1974
+ }, d = i.required ?? true, x = i.showInstructions ?? true;
1951
1975
  return new MultiSelectPrompt({
1952
1976
  options: i.options,
1953
1977
  signal: i.signal,
@@ -1978,7 +2002,7 @@ ${styleText(
1978
2002
  `${symbol(this.state)} `
1979
2003
  ), r = `${t ? `${styleText("gray", S_BAR)}
1980
2004
  ` : ""}${a}
1981
- `, o = this.value ?? [], p = (n, l) => {
2005
+ `, o = this.value ?? [], g = (n, l) => {
1982
2006
  if (n.disabled)
1983
2007
  return u(n, "disabled");
1984
2008
  const s = o.includes(n.value);
@@ -2008,7 +2032,7 @@ ${styleText("gray", S_BAR)}` : ""}`;
2008
2032
  case "error": {
2009
2033
  const n = t ? `${styleText("yellow", S_BAR)} ` : "", l = this.error.split(`
2010
2034
  `).map(
2011
- ($, C) => C === 0 ? `${t ? `${styleText("yellow", S_BAR_END)} ` : ""}${styleText("yellow", $)}` : ` ${$}`
2035
+ ($, v) => v === 0 ? `${t ? `${styleText("yellow", S_BAR_END)} ` : ""}${styleText("yellow", $)}` : ` ${$}`
2012
2036
  ).join(`
2013
2037
  `), s = r.split(`
2014
2038
  `).length, h = l.split(`
@@ -2020,7 +2044,7 @@ ${styleText("gray", S_BAR)}` : ""}`;
2020
2044
  maxItems: i.maxItems,
2021
2045
  columnPadding: n.length,
2022
2046
  rowPadding: s + h,
2023
- style: p
2047
+ style: g
2024
2048
  }).join(`
2025
2049
  ${n}`)}
2026
2050
  ${l}
@@ -2028,7 +2052,7 @@ ${l}
2028
2052
  }
2029
2053
  default: {
2030
2054
  const n = t ? `${styleText("cyan", S_BAR)} ` : "", l = r.split(`
2031
- `).length, s = v ? formatInstructionFooter(MULTISELECT_INSTRUCTIONS, t) : t ? [styleText("cyan", S_BAR_END)] : [], h = s.join(`
2055
+ `).length, s = x ? formatInstructionFooter(MULTISELECT_INSTRUCTIONS, t) : t ? [styleText("cyan", S_BAR_END)] : [], h = s.join(`
2032
2056
  `), $ = s.length + 1;
2033
2057
  return `${r}${n}${limitOptions({
2034
2058
  output: i.output,
@@ -2037,7 +2061,7 @@ ${l}
2037
2061
  maxItems: i.maxItems,
2038
2062
  columnPadding: n.length,
2039
2063
  rowPadding: l + $,
2040
- style: p
2064
+ style: g
2041
2065
  }).join(`
2042
2066
  ${n}`)}
2043
2067
  ${h}
@@ -2049,10 +2073,10 @@ ${h}
2049
2073
  };
2050
2074
 
2051
2075
  const groupMultiselect = (o) => {
2052
- const { selectableGroups: h = true, groupSpacing: x = 0 } = o, m = (n, l, g = []) => {
2053
- const a = n.label ?? String(n.value), t = typeof n.group == "string", s = t && (g[g.indexOf(n) + 1] ?? { group: true }), u = t && s && s.group === true;
2076
+ const { selectableGroups: f = true, groupSpacing: x = 0 } = o, d = (n, l, p = []) => {
2077
+ const a = n.label ?? String(n.value), t = typeof n.group == "string", s = t && (p[p.indexOf(n) + 1] ?? { group: true }), u = t && s && s.group === true;
2054
2078
  let r = "", c = "";
2055
- t && (h ? (r = u ? `${S_BAR_END} ` : `${S_BAR} `, c = u ? " " : `${S_BAR} `) : r = " ");
2079
+ t && (f ? (r = u ? `${S_BAR_END} ` : `${S_BAR} `, c = u ? " " : `${S_BAR} `) : r = " ");
2056
2080
  let i = "";
2057
2081
  if (x > 0 && !t && (i = `
2058
2082
  `.repeat(x)), l === "active")
@@ -2070,7 +2094,7 @@ const groupMultiselect = (o) => {
2070
2094
  `${i}${r} `,
2071
2095
  `${i}${r}${styleText("cyan", S_CHECKBOX_ACTIVE)} `,
2072
2096
  `${i}${c} `,
2073
- (d) => styleText("dim", d)
2097
+ (m) => styleText("dim", m)
2074
2098
  );
2075
2099
  if (l === "group-active-selected")
2076
2100
  return wrapTextWithPrefix(
@@ -2079,17 +2103,17 @@ const groupMultiselect = (o) => {
2079
2103
  `${i}${r} `,
2080
2104
  `${i}${r}${styleText("green", S_CHECKBOX_SELECTED)} `,
2081
2105
  `${i}${c} `,
2082
- (d) => styleText("dim", d)
2106
+ (m) => styleText("dim", m)
2083
2107
  );
2084
2108
  if (l === "selected") {
2085
- const d = t || h ? styleText("green", S_CHECKBOX_SELECTED) : "";
2109
+ const m = t || f ? styleText("green", S_CHECKBOX_SELECTED) : "";
2086
2110
  return wrapTextWithPrefix(
2087
2111
  o.output,
2088
2112
  `${a}${n.hint ? ` (${n.hint})` : ""}`,
2089
2113
  `${i}${styleText("dim", r)} `,
2090
- `${i}${styleText("dim", r)}${d} `,
2114
+ `${i}${styleText("dim", r)}${m} `,
2091
2115
  `${i}${styleText("dim", c)} `,
2092
- (S) => styleText("dim", S)
2116
+ (I) => styleText("dim", I)
2093
2117
  );
2094
2118
  }
2095
2119
  if (l === "cancelled")
@@ -2104,16 +2128,16 @@ const groupMultiselect = (o) => {
2104
2128
  );
2105
2129
  if (l === "submitted")
2106
2130
  return `${styleText("dim", a)}`;
2107
- const f = t || h ? styleText("dim", S_CHECKBOX_INACTIVE) : "";
2131
+ const h = t || f ? styleText("dim", S_CHECKBOX_INACTIVE) : "";
2108
2132
  return wrapTextWithPrefix(
2109
2133
  o.output,
2110
2134
  a,
2111
2135
  `${i}${styleText("dim", r)} `,
2112
- `${i}${styleText("dim", r)}${f} `,
2136
+ `${i}${styleText("dim", r)}${h} `,
2113
2137
  `${i}${styleText("dim", c)} `,
2114
- (d) => styleText("dim", d)
2138
+ (m) => styleText("dim", m)
2115
2139
  );
2116
- }, y = o.required ?? true, I = o.showInstructions ?? true;
2140
+ }, y = o.required ?? true, S = o.showInstructions ?? true;
2117
2141
  return new GroupMultiSelectPrompt({
2118
2142
  options: o.options,
2119
2143
  signal: o.signal,
@@ -2122,7 +2146,7 @@ const groupMultiselect = (o) => {
2122
2146
  initialValues: o.initialValues,
2123
2147
  required: y,
2124
2148
  cursorAt: o.cursorAt,
2125
- selectableGroups: h,
2149
+ selectableGroups: f,
2126
2150
  validate(n) {
2127
2151
  if (y && (n === void 0 || n.length === 0))
2128
2152
  return `Please select at least one option.
@@ -2140,24 +2164,24 @@ ${styleText(
2140
2164
  render() {
2141
2165
  const n = o.withGuide ?? settings.withGuide, l = `${n ? `${styleText("gray", S_BAR)}
2142
2166
  ` : ""}${symbol(this.state)} ${o.message}
2143
- `, g = this.value ?? [], a = (t, s) => {
2144
- const u = this.options, r = g.includes(t.value) || t.group === true && this.isGroupSelected(`${t.value}`);
2145
- return !s && typeof t.group == "string" && this.options[this.cursor]?.value === t.group ? m(t, r ? "group-active-selected" : "group-active", u) : s && r ? m(t, "active-selected", u) : r ? m(t, "selected", u) : m(t, s ? "active" : "inactive", u);
2167
+ `, p = this.value ?? [], a = (t, s) => {
2168
+ const u = this.options, r = p.includes(t.value) || t.group === true && this.isGroupSelected(`${t.value}`);
2169
+ return !s && typeof t.group == "string" && this.options[this.cursor]?.value === t.group ? d(t, r ? "group-active-selected" : "group-active", u) : s && r ? d(t, "active-selected", u) : r ? d(t, "selected", u) : d(t, s ? "active" : "inactive", u);
2146
2170
  };
2147
2171
  switch (this.state) {
2148
2172
  case "submit": {
2149
- const t = this.options.filter(({ value: u }) => g.includes(u)).map((u) => m(u, "submitted")), s = t.length === 0 ? "" : ` ${t.join(styleText("dim", ", "))}`;
2173
+ const t = this.options.filter(({ value: u }) => p.includes(u)).map((u) => d(u, "submitted")), s = t.length === 0 ? "" : ` ${t.join(styleText("dim", ", "))}`;
2150
2174
  return `${l}${n ? styleText("gray", S_BAR) : ""}${s}`;
2151
2175
  }
2152
2176
  case "cancel": {
2153
- const t = this.options.filter(({ value: s }) => g.includes(s)).map((s) => m(s, "cancelled")).join(styleText("dim", ", "));
2177
+ const t = this.options.filter(({ value: s }) => p.includes(s)).map((s) => d(s, "cancelled")).join(styleText("dim", ", "));
2154
2178
  return `${l}${n ? `${styleText("gray", S_BAR)} ` : ""}${t.trim() ? `${t}${n ? `
2155
2179
  ${styleText("gray", S_BAR)}` : ""}` : ""}`;
2156
2180
  }
2157
2181
  case "error": {
2158
2182
  const t = n ? `${styleText("yellow", S_BAR)} ` : "", s = this.error.split(`
2159
2183
  `).map(
2160
- (i, f) => f === 0 ? `${n ? `${styleText("yellow", S_BAR_END)} ` : ""}${styleText("yellow", i)}` : ` ${i}`
2184
+ (i, h) => h === 0 ? `${n ? `${styleText("yellow", S_BAR_END)} ` : ""}${styleText("yellow", i)}` : ` ${i}`
2161
2185
  ).join(`
2162
2186
  `), u = l.split(`
2163
2187
  `).length, r = s.split(`
@@ -2177,7 +2201,7 @@ ${s}
2177
2201
  }
2178
2202
  default: {
2179
2203
  const t = n ? `${styleText("cyan", S_BAR)} ` : "", s = l.split(`
2180
- `).length, u = I ? formatInstructionFooter(MULTISELECT_INSTRUCTIONS, n) : n ? [styleText("cyan", S_BAR_END)] : [], r = u.join(`
2204
+ `).length, u = S ? formatInstructionFooter(MULTISELECT_INSTRUCTIONS, n) : n ? [styleText("cyan", S_BAR_END)] : [], r = u.join(`
2181
2205
  `), c = u.length + 1, i = limitOptions({
2182
2206
  output: o.output,
2183
2207
  options: this.options,
@@ -2270,16 +2294,16 @@ const multiline = (e) => new MultiLinePrompt({
2270
2294
  render() {
2271
2295
  const i = e?.withGuide ?? settings.withGuide, o = `${`${i ? `${styleText("gray", S_BAR)}
2272
2296
  ` : ""}${symbol(this.state)} `}${e.message}
2273
- `, m = e.placeholder && e.placeholder.length > 0 ? (
2297
+ `, h = e.placeholder && e.placeholder.length > 0 ? (
2274
2298
  // biome-ignore lint/style/noNonNullAssertion: guarded by placeholder.length > 0
2275
2299
  styleText("inverse", e.placeholder[0]) + styleText("dim", e.placeholder.slice(1))
2276
- ) : styleText(["inverse", "hidden"], "_"), a = this.userInput ? this.userInputWithCursor : m, l = this.value ?? "", c = e.showSubmit ? `
2300
+ ) : styleText(["inverse", "hidden"], "_"), a = this.userInput ? this.userInputWithCursor : h, l = this.value ?? "", d = e.showSubmit ? `
2277
2301
  ${styleText(this.focused === "submit" ? "cyan" : "dim", "[ submit ]")}` : "";
2278
2302
  switch (this.state) {
2279
2303
  case "error": {
2280
2304
  const n = `${styleText("yellow", S_BAR)} `, r = i ? wrapTextWithPrefix(e.output, a, n, void 0) : a, u = styleText("yellow", S_BAR_END);
2281
2305
  return `${o}${r}
2282
- ${u} ${styleText("yellow", this.error)}${c}
2306
+ ${u} ${styleText("yellow", this.error)}${d}
2283
2307
  `;
2284
2308
  }
2285
2309
  case "submit": {
@@ -2307,7 +2331,7 @@ ${u} ${styleText("yellow", this.error)}${c}
2307
2331
  default: {
2308
2332
  const n = i ? `${styleText("cyan", S_BAR)} ` : "", r = i ? styleText("cyan", S_BAR_END) : "", u = i ? wrapTextWithPrefix(e.output, a, n) : a;
2309
2333
  return `${o}${u}
2310
- ${r}${c}
2334
+ ${r}${d}
2311
2335
  `;
2312
2336
  }
2313
2337
  }
@@ -2346,36 +2370,36 @@ ${external_node_util_styleText("gray", l$1 + S_BAR_H.repeat(t + 2) + S_CORNER_BO
2346
2370
  );
2347
2371
  };
2348
2372
 
2349
- const dist_password = (r) => new PasswordPrompt({
2350
- validate: r.validate,
2351
- mask: r.mask ?? S_PASSWORD_MASK,
2352
- signal: r.signal,
2353
- input: r.input,
2354
- output: r.output,
2373
+ const dist_password = (e) => new PasswordPrompt({
2374
+ validate: e.validate,
2375
+ mask: e.mask ?? S_PASSWORD_MASK,
2376
+ signal: e.signal,
2377
+ input: e.input,
2378
+ output: e.output,
2355
2379
  render() {
2356
- const e = r.withGuide ?? settings.withGuide, o = `${e ? `${styleText("gray", S_BAR)}
2357
- ` : ""}${symbol(this.state)} ${r.message}
2358
- `, c = this.userInputWithCursor, i = this.masked;
2380
+ const r = e.withGuide ?? settings.withGuide, o = `${r ? `${styleText("gray", S_BAR)}
2381
+ ` : ""}${symbol(this.state)} ${e.message}
2382
+ `, m = this.userInputWithCursor, i = this.masked;
2359
2383
  switch (this.state) {
2360
2384
  case "error": {
2361
- const s = e ? `${styleText("yellow", S_BAR)} ` : "", n = e ? `${styleText("yellow", S_BAR_END)} ` : "", l = i ?? "";
2362
- return r.clearOnError && this.clear(), `${o.trim()}
2363
- ${s}${l}
2385
+ const s = r ? `${styleText("yellow", S_BAR)} ` : "", n = r ? `${styleText("yellow", S_BAR_END)} ` : "", d = i ?? "";
2386
+ return e.clearOnError && this.clear(), `${o.trim()}
2387
+ ${s}${d}
2364
2388
  ${n}${styleText("yellow", this.error)}
2365
2389
  `;
2366
2390
  }
2367
2391
  case "submit": {
2368
- const s = e ? `${styleText("gray", S_BAR)} ` : "", n = i ? styleText("dim", i) : "";
2392
+ const s = r ? `${styleText("gray", S_BAR)} ` : "", n = i ? styleText("dim", i) : "";
2369
2393
  return `${o}${s}${n}`;
2370
2394
  }
2371
2395
  case "cancel": {
2372
- const s = e ? `${styleText("gray", S_BAR)} ` : "", n = i ? styleText(["strikethrough", "dim"], i) : "";
2373
- return `${o}${s}${n}${i && e ? `
2396
+ const s = r ? `${styleText("gray", S_BAR)} ` : "", n = i ? styleText(["strikethrough", "dim"], i) : "";
2397
+ return `${o}${s}${n}${i && r ? `
2374
2398
  ${styleText("gray", S_BAR)}` : ""}`;
2375
2399
  }
2376
2400
  default: {
2377
- const s = e ? `${styleText("cyan", S_BAR)} ` : "", n = e ? styleText("cyan", S_BAR_END) : "";
2378
- return `${o}${s}${c}
2401
+ const s = r ? `${styleText("cyan", S_BAR)} ` : "", n = r ? styleText("cyan", S_BAR_END) : "";
2402
+ return `${o}${s}${m}
2379
2403
  ${n}
2380
2404
  `;
2381
2405
  }
@@ -2389,6 +2413,7 @@ const dist_path = (e) => {
2389
2413
  ...e,
2390
2414
  initialUserInput: e.initialValue ?? e.root ?? process.cwd(),
2391
2415
  maxItems: 5,
2416
+ completeOnTab: true,
2392
2417
  validate(t) {
2393
2418
  if (!Array.isArray(t)) {
2394
2419
  if (!t)
@@ -2612,19 +2637,19 @@ ${external_node_util_styleText("gray", S_BAR)}` : ""}`;
2612
2637
  }
2613
2638
  default: {
2614
2639
  const r = n ? `${external_node_util_styleText("cyan", S_BAR)} ` : "", a = u.split(`
2615
- `).length, p = d ? formatInstructionFooter(SELECT_INSTRUCTIONS, n) : n ? [external_node_util_styleText("cyan", S_BAR_END)] : [], b = p.join(`
2616
- `), f = p.length + 1;
2640
+ `).length, p = d ? formatInstructionFooter(SELECT_INSTRUCTIONS, n) : n ? [external_node_util_styleText("cyan", S_BAR_END)] : [], f = p.join(`
2641
+ `), b = p.length + 1;
2617
2642
  return `${u}${r}${limitOptions({
2618
2643
  output: t.output,
2619
2644
  cursor: this.cursor,
2620
2645
  options: this.options,
2621
2646
  maxItems: t.maxItems,
2622
2647
  columnPadding: r.length,
2623
- rowPadding: a + f,
2648
+ rowPadding: a + b,
2624
2649
  style: (g, x) => o(g, g.disabled ? "disabled" : x ? "active" : "inactive")
2625
2650
  }).join(`
2626
2651
  ${r}`)}
2627
- ${b}
2652
+ ${f}
2628
2653
  `;
2629
2654
  }
2630
2655
  }
@@ -2633,7 +2658,7 @@ ${b}
2633
2658
  };
2634
2659
 
2635
2660
  const selectKey = (t) => {
2636
- const l = (e, a = "inactive") => {
2661
+ const c = (e, a = "inactive") => {
2637
2662
  if (e === void 0)
2638
2663
  return "";
2639
2664
  const n = e.label ?? String(e.value);
@@ -2652,33 +2677,33 @@ const selectKey = (t) => {
2652
2677
  `;
2653
2678
  switch (this.state) {
2654
2679
  case "submit": {
2655
- const n = e ? `${styleText("gray", S_BAR)} ` : "", s = this.options.find((u) => u.value === this.value) ?? t.options[0], c = wrapTextWithPrefix(
2680
+ const n = e ? `${styleText("gray", S_BAR)} ` : "", r = this.options.find((u) => u.value === this.value) ?? t.options[0], l = wrapTextWithPrefix(
2656
2681
  t.output,
2657
- l(s, "selected"),
2682
+ c(r, "selected"),
2658
2683
  n
2659
2684
  );
2660
- return `${a}${c}`;
2685
+ return `${a}${l}`;
2661
2686
  }
2662
2687
  case "cancel": {
2663
- const n = e ? `${styleText("gray", S_BAR)} ` : "", s = wrapTextWithPrefix(
2688
+ const n = e ? `${styleText("gray", S_BAR)} ` : "", r = wrapTextWithPrefix(
2664
2689
  t.output,
2665
- l(this.options[0], "cancelled"),
2690
+ c(this.options[0], "cancelled"),
2666
2691
  n
2667
2692
  );
2668
- return `${a}${s}${e ? `
2693
+ return `${a}${r}${e ? `
2669
2694
  ${styleText("gray", S_BAR)}` : ""}`;
2670
2695
  }
2671
2696
  default: {
2672
- const n = e ? `${styleText("cyan", S_BAR)} ` : "", s = e ? styleText("cyan", S_BAR_END) : "", c = this.options.map(
2697
+ const n = e ? `${styleText("cyan", S_BAR)} ` : "", r = e ? styleText("cyan", S_BAR_END) : "", l = this.options.map(
2673
2698
  (u, d) => wrapTextWithPrefix(
2674
2699
  t.output,
2675
- l(u, d === this.cursor ? "active" : "inactive"),
2700
+ c(u, d === this.cursor ? "active" : "inactive"),
2676
2701
  n
2677
2702
  )
2678
2703
  ).join(`
2679
2704
  `);
2680
- return `${a}${c}
2681
- ${s}
2705
+ return `${a}${l}
2706
+ ${r}
2682
2707
  `;
2683
2708
  }
2684
2709
  }
@@ -2841,42 +2866,48 @@ ${e.value}` : e.value;
2841
2866
  };
2842
2867
  };
2843
2868
 
2844
- const dist_text = (e) => new dist_n({
2845
- validate: e.validate,
2846
- placeholder: e.placeholder,
2847
- defaultValue: e.defaultValue,
2848
- initialValue: e.initialValue,
2849
- output: e.output,
2850
- signal: e.signal,
2851
- input: e.input,
2869
+ const dist_text = (t) => new dist_n({
2870
+ validate: t.validate,
2871
+ placeholder: t.placeholder,
2872
+ defaultValue: t.defaultValue,
2873
+ initialValue: t.initialValue,
2874
+ output: t.output,
2875
+ signal: t.signal,
2876
+ input: t.input,
2852
2877
  render() {
2853
- const i = e?.withGuide ?? dist_settings.withGuide, s = `${`${i ? `${external_node_util_styleText("gray", S_BAR)}
2854
- ` : ""}${symbol(this.state)} `}${e.message}
2855
- `, c = e.placeholder && e.placeholder.length > 0 ? (
2878
+ const r = t?.withGuide ?? dist_settings.withGuide, l = `${`${r ? `${external_node_util_styleText("gray", S_BAR)}
2879
+ ` : ""}${symbol(this.state)} `}${t.message}
2880
+ `, d = t.placeholder && t.placeholder.length > 0 ? (
2856
2881
  // biome-ignore lint/style/noNonNullAssertion: guarded by placeholder.length > 0
2857
- external_node_util_styleText("inverse", e.placeholder[0]) + external_node_util_styleText("dim", e.placeholder.slice(1))
2858
- ) : external_node_util_styleText(["inverse", "hidden"], "_"), o = this.userInput ? this.userInputWithCursor : c, l = this.value ?? "";
2882
+ external_node_util_styleText("inverse", t.placeholder[0]) + external_node_util_styleText("dim", t.placeholder.slice(1))
2883
+ ) : external_node_util_styleText(["inverse", "hidden"], "_"), o = this.userInput ? this.userInputWithCursor : d, s = this.value ?? "";
2859
2884
  switch (this.state) {
2885
+ case "validating": {
2886
+ const n = r ? `${external_node_util_styleText("cyan", S_BAR)} ` : "", i = r ? external_node_util_styleText("cyan", S_BAR_END) : "", c = external_node_util_styleText("dim", o), $ = external_node_util_styleText("dim", "Validating...");
2887
+ return `${l}${n}${c}
2888
+ ${i} ${$}
2889
+ `;
2890
+ }
2860
2891
  case "error": {
2861
- const n = this.error ? ` ${external_node_util_styleText("yellow", this.error)}` : "", r = i ? `${external_node_util_styleText("yellow", S_BAR)} ` : "", d = i ? external_node_util_styleText("yellow", S_BAR_END) : "";
2862
- return `${s.trim()}
2863
- ${r}${o}
2864
- ${d}${n}
2892
+ const n = this.error ? ` ${external_node_util_styleText("yellow", this.error)}` : "", i = r ? `${external_node_util_styleText("yellow", S_BAR)} ` : "", c = r ? external_node_util_styleText("yellow", S_BAR_END) : "";
2893
+ return `${l.trim()}
2894
+ ${i}${o}
2895
+ ${c}${n}
2865
2896
  `;
2866
2897
  }
2867
2898
  case "submit": {
2868
- const n = l ? ` ${external_node_util_styleText("dim", l)}` : "", r = i ? external_node_util_styleText("gray", S_BAR) : "";
2869
- return `${s}${r}${n}`;
2899
+ const n = s ? `${r ? " " : ""}${external_node_util_styleText("dim", s)}` : "", i = r ? external_node_util_styleText("gray", S_BAR) : "";
2900
+ return `${l}${i}${n}`;
2870
2901
  }
2871
2902
  case "cancel": {
2872
- const n = l ? ` ${external_node_util_styleText(["strikethrough", "dim"], l)}` : "", r = i ? external_node_util_styleText("gray", S_BAR) : "";
2873
- return `${s}${r}${n}${l.trim() ? `
2874
- ${r}` : ""}`;
2903
+ const n = s ? ` ${external_node_util_styleText(["strikethrough", "dim"], s)}` : "", i = r ? external_node_util_styleText("gray", S_BAR) : "";
2904
+ return `${l}${i}${n}${s.trim() ? `
2905
+ ${i}` : ""}`;
2875
2906
  }
2876
2907
  default: {
2877
- const n = i ? `${external_node_util_styleText("cyan", S_BAR)} ` : "", r = i ? external_node_util_styleText("cyan", S_BAR_END) : "";
2878
- return `${s}${n}${o}
2879
- ${r}
2908
+ const n = r ? `${external_node_util_styleText("cyan", S_BAR)} ` : "", i = r ? external_node_util_styleText("cyan", S_BAR_END) : "";
2909
+ return `${l}${n}${o}
2910
+ ${i}
2880
2911
  `;
2881
2912
  }
2882
2913
  }
@@ -2941,7 +2972,7 @@ function hasGit(cwd) {
2941
2972
 
2942
2973
  ;// CONCATENATED MODULE: ./src/generated/framework.ts
2943
2974
  // GENERATED by scripts/codegen.mjs from packages/core — do not edit. Run `pnpm --filter @rshono/create codegen`.
2944
- /** The framework release a scaffolded app is pinned to: this package and rshono ship together. */ const RSHONO_VERSION = '1.0.0-rc.20';
2975
+ /** The framework release a scaffolded app is pinned to: this package and rshono ship together. */ const RSHONO_VERSION = '1.0.0-rc.21';
2945
2976
  /**
2946
2977
  * The Node range rshono declares, restated in every scaffolded app's `engines` — so a CI image or a contributor
2947
2978
  * on an older Node hears it from their package manager rather than from a stack trace.
@@ -2950,11 +2981,11 @@ function hasGit(cwd) {
2950
2981
  * The dependency versions rshono is tested against, copied from its own manifest. Exact where it is exact:
2951
2982
  * React's RSC internals are coupled across builds, and a generated app has no workspace overrides.
2952
2983
  */ const FRAMEWORK_DEPS = {
2953
- hono: '^4.13.5',
2984
+ hono: '^4.13.7',
2954
2985
  react: '19.2.8',
2955
2986
  'react-dom': '19.2.8',
2956
2987
  typescript: '^7.0.2',
2957
- '@types/node': '^26.4.0',
2988
+ '@types/node': '^26.5.1',
2958
2989
  '@types/react': '^19.2.18'
2959
2990
  };
2960
2991
  /** Every `deploy` target the installed framework knows, with the command that ships what it built. */ const DEPLOY_TARGETS = [
@@ -3927,7 +3958,7 @@ function fail(message) {
3927
3958
  async function main() {
3928
3959
  const { values, positionals } = parse();
3929
3960
  if (values.help) return console.log(HELP);
3930
- if (values.version) return console.log("1.0.0-rc.20");
3961
+ if (values.version) return console.log("1.0.0-rc.21");
3931
3962
  // A pipe, a CI job or an agent gets the defaults rather than a prompt nothing can answer. Both streams have to
3932
3963
  // be a terminal: the prompts draw on stdout but read from stdin.
3933
3964
  const interactive = Boolean(process.stdin.isTTY && process.stdout.isTTY) && !values.yes;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rshono/create",
3
- "version": "1.0.0-rc.20",
3
+ "version": "1.0.0-rc.21",
4
4
  "description": "Scaffold a new rshono app — Hono + Rspack + React Server Components",
5
5
  "author": "Lasse <lasse@lassetange.com> (https://www.lassetange.com)",
6
6
  "license": "MIT",
@@ -42,11 +42,11 @@
42
42
  "access": "public"
43
43
  },
44
44
  "devDependencies": {
45
- "@clack/prompts": "^1.7.0",
46
- "@rspack/core": "2.2.2",
47
- "@types/node": "^26.4.0",
45
+ "@clack/prompts": "^1.8.1",
46
+ "@rspack/core": "2.2.6",
47
+ "@types/node": "^26.5.1",
48
48
  "typescript": "^7.0.2",
49
- "@rshono/core": "1.0.0-rc.20"
49
+ "@rshono/core": "1.0.0-rc.21"
50
50
  },
51
51
  "scripts": {
52
52
  "build": "node scripts/codegen.mjs && node scripts/build.mjs",