zard-cli 1.0.0-beta.115 → 1.0.0-beta.117

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 (202) hide show
  1. package/commands/add/component-installer.js +3 -3
  2. package/commands/add/component-installer.js.map +1 -1
  3. package/commands/add/component-selector.d.ts +3 -3
  4. package/commands/add/component-selector.js +3 -3
  5. package/commands/add/dependency-resolver.js +10 -7
  6. package/commands/add/dependency-resolver.js.map +1 -1
  7. package/commands/add/index.d.ts.map +1 -1
  8. package/commands/add/index.js +12 -20
  9. package/commands/add/index.js.map +1 -1
  10. package/commands/add/wizard.d.ts +8 -7
  11. package/commands/add/wizard.d.ts.map +1 -1
  12. package/commands/add/wizard.js +2 -2
  13. package/commands/add/wizard.js.map +1 -1
  14. package/commands/init/config-prompter.d.ts +18 -13
  15. package/commands/init/config-prompter.d.ts.map +1 -1
  16. package/commands/init/config-prompter.js +25 -19
  17. package/commands/init/config-prompter.js.map +1 -1
  18. package/commands/init/dependencies.d.ts.map +1 -1
  19. package/commands/init/dependencies.js +21 -24
  20. package/commands/init/dependencies.js.map +1 -1
  21. package/commands/init/index.js +20 -20
  22. package/commands/init/index.js.map +1 -1
  23. package/commands/init/project-kind.d.ts +39 -39
  24. package/commands/init/project-kind.d.ts.map +1 -1
  25. package/commands/init/project-kind.js +44 -44
  26. package/commands/init/project-kind.js.map +1 -1
  27. package/commands/init/steps.d.ts +3 -4
  28. package/commands/init/steps.d.ts.map +1 -1
  29. package/commands/init/steps.js +25 -24
  30. package/commands/init/steps.js.map +1 -1
  31. package/commands/init/tailwind-setup.d.ts +5 -5
  32. package/commands/init/tailwind-setup.js +14 -14
  33. package/commands/init/tailwind-setup.js.map +1 -1
  34. package/commands/init/tsconfig-updater.d.ts +4 -4
  35. package/commands/init/tsconfig-updater.js +12 -12
  36. package/commands/init/tsconfig-updater.js.map +1 -1
  37. package/commands/init/update-angular-config.js +4 -4
  38. package/commands/init/vite-setup.d.ts +5 -4
  39. package/commands/init/vite-setup.d.ts.map +1 -1
  40. package/commands/init/vite-setup.js +11 -10
  41. package/commands/init/vite-setup.js.map +1 -1
  42. package/commands/init/wizard.d.ts +5 -5
  43. package/commands/init/wizard.d.ts.map +1 -1
  44. package/commands/init/wizard.js +29 -29
  45. package/commands/init/wizard.js.map +1 -1
  46. package/core/icons/families.d.ts +20 -20
  47. package/core/icons/families.d.ts.map +1 -1
  48. package/core/icons/families.js +11 -11
  49. package/core/icons/families.js.map +1 -1
  50. package/core/icons/icon-map.d.ts.map +1 -1
  51. package/core/icons/icon-map.js +7 -4
  52. package/core/icons/icon-map.js.map +1 -1
  53. package/core/icons/index.d.ts +50 -50
  54. package/core/icons/index.d.ts.map +1 -1
  55. package/core/icons/index.js +45 -45
  56. package/core/icons/index.js.map +1 -1
  57. package/core/registry/registry-data.d.ts.map +1 -1
  58. package/core/registry/registry-data.js +82 -15
  59. package/core/registry/registry-data.js.map +1 -1
  60. package/core/themes/theme-definitions.d.ts.map +1 -1
  61. package/core/themes/theme-definitions.js +10 -0
  62. package/core/themes/theme-definitions.js.map +1 -1
  63. package/index.js +3 -2
  64. package/index.js.map +1 -1
  65. package/package.json +6 -8
  66. package/ui/blocks.d.ts +29 -28
  67. package/ui/blocks.d.ts.map +1 -1
  68. package/ui/blocks.js +27 -27
  69. package/ui/blocks.js.map +1 -1
  70. package/ui/brand.d.ts +5 -5
  71. package/ui/brand.d.ts.map +1 -1
  72. package/ui/brand.js +6 -6
  73. package/ui/brand.js.map +1 -1
  74. package/ui/engine/animation/index.d.ts +2 -3
  75. package/ui/engine/animation/index.d.ts.map +1 -1
  76. package/ui/engine/animation/index.js +2 -3
  77. package/ui/engine/animation/index.js.map +1 -1
  78. package/ui/engine/ansi/index.d.ts +10 -11
  79. package/ui/engine/ansi/index.d.ts.map +1 -1
  80. package/ui/engine/ansi/index.js +6 -7
  81. package/ui/engine/ansi/index.js.map +1 -1
  82. package/ui/engine/components/index.d.ts +3 -3
  83. package/ui/engine/components/index.js +4 -4
  84. package/ui/engine/cursor/index.d.ts +3 -4
  85. package/ui/engine/cursor/index.d.ts.map +1 -1
  86. package/ui/engine/cursor/index.js +2 -3
  87. package/ui/engine/cursor/index.js.map +1 -1
  88. package/ui/engine/diff/index.d.ts +2 -3
  89. package/ui/engine/diff/index.d.ts.map +1 -1
  90. package/ui/engine/diff/index.js +5 -6
  91. package/ui/engine/diff/index.js.map +1 -1
  92. package/ui/engine/events/index.d.ts +2 -2
  93. package/ui/engine/events/index.js +3 -3
  94. package/ui/engine/events/index.js.map +1 -1
  95. package/ui/engine/focus/index.d.ts +2 -2
  96. package/ui/engine/focus/index.js +2 -2
  97. package/ui/engine/frame/index.d.ts +4 -4
  98. package/ui/engine/frame/index.js +0 -0
  99. package/ui/engine/index.d.ts +7 -7
  100. package/ui/engine/index.js +7 -7
  101. package/ui/engine/input/index.d.ts +2 -2
  102. package/ui/engine/input/index.js +11 -11
  103. package/ui/engine/input/index.js.map +1 -1
  104. package/ui/engine/layout/index.d.ts +3 -3
  105. package/ui/engine/layout/index.js +7 -7
  106. package/ui/engine/layout/index.js.map +1 -1
  107. package/ui/engine/renderer/index.d.ts +4 -4
  108. package/ui/engine/renderer/index.d.ts.map +1 -1
  109. package/ui/engine/renderer/index.js +3 -3
  110. package/ui/engine/scheduler/index.d.ts +3 -3
  111. package/ui/engine/scheduler/index.js +5 -5
  112. package/ui/engine/scheduler/index.js.map +1 -1
  113. package/ui/engine/screen/index.d.ts +5 -5
  114. package/ui/engine/screen/index.d.ts.map +1 -1
  115. package/ui/engine/screen/index.js +7 -7
  116. package/ui/engine/screen/index.js.map +1 -1
  117. package/ui/engine/terminal/index.d.ts +29 -29
  118. package/ui/engine/terminal/index.d.ts.map +1 -1
  119. package/ui/engine/terminal/index.js +47 -47
  120. package/ui/engine/terminal/index.js.map +1 -1
  121. package/ui/engine/testing/index.d.ts +4 -4
  122. package/ui/engine/testing/index.d.ts.map +1 -1
  123. package/ui/engine/testing/index.js +2 -2
  124. package/ui/engine/theme/index.d.ts +2 -3
  125. package/ui/engine/theme/index.d.ts.map +1 -1
  126. package/ui/engine/theme/index.js +3 -4
  127. package/ui/engine/theme/index.js.map +1 -1
  128. package/ui/engine/utils/index.d.ts +2 -2
  129. package/ui/engine/utils/index.js +4 -4
  130. package/ui/engine/utils/index.js.map +1 -1
  131. package/ui/gate.d.ts +7 -7
  132. package/ui/gate.d.ts.map +1 -1
  133. package/ui/gate.js +5 -5
  134. package/ui/index.d.ts +3 -3
  135. package/ui/index.js +3 -3
  136. package/ui/log-sink.d.ts +9 -9
  137. package/ui/log-sink.d.ts.map +1 -1
  138. package/ui/log-sink.js +9 -9
  139. package/ui/log-sink.js.map +1 -1
  140. package/ui/output.d.ts +6 -6
  141. package/ui/output.d.ts.map +1 -1
  142. package/ui/output.js +6 -6
  143. package/ui/output.js.map +1 -1
  144. package/ui/report.d.ts +8 -8
  145. package/ui/report.d.ts.map +1 -1
  146. package/ui/report.js +7 -7
  147. package/ui/report.js.map +1 -1
  148. package/ui/runner.d.ts +25 -25
  149. package/ui/runner.d.ts.map +1 -1
  150. package/ui/runner.js +27 -27
  151. package/ui/runner.js.map +1 -1
  152. package/ui/style.d.ts +7 -7
  153. package/ui/style.d.ts.map +1 -1
  154. package/ui/style.js +8 -8
  155. package/ui/style.js.map +1 -1
  156. package/ui/testing/fake-tty.d.ts +4 -4
  157. package/ui/testing/fake-tty.js +4 -4
  158. package/ui/text-input.d.ts +14 -13
  159. package/ui/text-input.d.ts.map +1 -1
  160. package/ui/text-input.js +15 -13
  161. package/ui/text-input.js.map +1 -1
  162. package/ui/theme.d.ts +4 -4
  163. package/ui/theme.js +4 -4
  164. package/utils/angular-compat.d.ts +21 -0
  165. package/utils/angular-compat.d.ts.map +1 -0
  166. package/utils/angular-compat.js +52 -0
  167. package/utils/angular-compat.js.map +1 -0
  168. package/utils/config.d.ts +6 -6
  169. package/utils/config.d.ts.map +1 -1
  170. package/utils/config.js +20 -20
  171. package/utils/config.js.map +1 -1
  172. package/utils/errors.d.ts +5 -5
  173. package/utils/errors.js +5 -5
  174. package/utils/get-project-info.d.ts +6 -6
  175. package/utils/get-project-info.d.ts.map +1 -1
  176. package/utils/get-project-info.js +35 -35
  177. package/utils/get-project-info.js.map +1 -1
  178. package/utils/http-client.d.ts.map +1 -1
  179. package/utils/http-client.js +18 -3
  180. package/utils/http-client.js.map +1 -1
  181. package/utils/icon-catalog.d.ts +16 -15
  182. package/utils/icon-catalog.d.ts.map +1 -1
  183. package/utils/icon-catalog.js +21 -20
  184. package/utils/icon-catalog.js.map +1 -1
  185. package/utils/logger.d.ts +3 -3
  186. package/utils/logger.js +9 -9
  187. package/utils/logger.js.map +1 -1
  188. package/utils/package-manager.d.ts +25 -25
  189. package/utils/package-manager.js +48 -48
  190. package/utils/package-manager.js.map +1 -1
  191. package/utils/registry.d.ts +14 -14
  192. package/utils/registry.d.ts.map +1 -1
  193. package/utils/registry.js +23 -19
  194. package/utils/registry.js.map +1 -1
  195. package/utils/schema-version.d.ts +11 -10
  196. package/utils/schema-version.d.ts.map +1 -1
  197. package/utils/schema-version.js +11 -10
  198. package/utils/schema-version.js.map +1 -1
  199. package/utils/source-file.d.ts +21 -21
  200. package/utils/source-file.d.ts.map +1 -1
  201. package/utils/source-file.js +24 -24
  202. package/utils/source-file.js.map +1 -1
@@ -1,6 +1,6 @@
1
1
  /**
2
- * utils — helpers puros de string/Unicode. Sem I/O, sem dependências.
3
- * (Fatia vertical / PoC: implementação real, suficiente para ASCII + wide + emoji.)
2
+ * utils — pure string/Unicode helpers. No I/O, no dependencies.
3
+ * Enough for ASCII, wide characters and emoji.
4
4
  */
5
5
  export declare function graphemes(text: string): string[];
6
6
  export declare function charWidth(grapheme: string): 0 | 1 | 2;
@@ -1,6 +1,6 @@
1
1
  /**
2
- * utils — helpers puros de string/Unicode. Sem I/O, sem dependências.
3
- * (Fatia vertical / PoC: implementação real, suficiente para ASCII + wide + emoji.)
2
+ * utils — pure string/Unicode helpers. No I/O, no dependencies.
3
+ * Enough for ASCII, wide characters and emoji.
4
4
  */
5
5
  const SEG = typeof Intl.Segmenter === 'function'
6
6
  ? new Intl.Segmenter('en', { granularity: 'grapheme' })
@@ -30,7 +30,7 @@ function isWide(cp) {
30
30
  (cp >= 0xfe30 && cp <= 0xfe6f) ||
31
31
  (cp >= 0xff00 && cp <= 0xff60) || // Fullwidth forms
32
32
  (cp >= 0xffe0 && cp <= 0xffe6) ||
33
- (cp >= 0x1f300 && cp <= 0x1faff) || // emoji & símbolos
33
+ (cp >= 0x1f300 && cp <= 0x1faff) || // emoji & symbols
34
34
  (cp >= 0x20000 && cp <= 0x3fffd) // CJK Ext B+
35
35
  );
36
36
  }
@@ -104,7 +104,7 @@ export function wrapText(text, width) {
104
104
  return out.length ? out : [''];
105
105
  }
106
106
  function splitWords(line) {
107
- // mantém os espaços agregados à palavra seguinte para preservar recuos simples
107
+ // keeps spaces attached to the following word so simple indents survive
108
108
  return line.length ? (line.match(/\s*\S+\s*|\s+/g) ?? [line]) : [''];
109
109
  }
110
110
  export function truncate(text, width, ellipsis = '…') {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ui/engine/utils/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ui/engine/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,GAAG,GACP,OAAQ,IAAgC,CAAC,SAAS,KAAK,UAAU;IAC/D,CAAC,CAAC,IAAK,IAA2B,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;IAC/E,CAAC,CAAC,IAAI,CAAC;AAEX,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACvD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,+EAA+E;AAC/E,SAAS,MAAM,CAAC,EAAU;IACxB,OAAO,CACL,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,cAAc;QAChD,EAAE,KAAK,MAAM;QACb,EAAE,KAAK,MAAM;QACb,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,uBAAuB;QACzD,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,yBAAyB;QAC3D,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,YAAY;QAC9C,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,cAAc;QAChD,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,KAAK;QACvC,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,mBAAmB;QACrD,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,aAAa;QAC/C,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;QAC9B,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;QAC9B,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,kBAAkB;QACpD,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;QAC9B,CAAC,EAAE,IAAI,OAAO,IAAI,EAAE,IAAI,OAAO,CAAC,IAAI,kBAAkB;QACtD,CAAC,EAAE,IAAI,OAAO,IAAI,EAAE,IAAI,OAAO,CAAC,CAAC,aAAa;KAC/C,CAAC;AACJ,CAAC;AAED,yCAAyC;AACzC,SAAS,WAAW,CAAC,EAAU;IAC7B,OAAO,CACL,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;QAC9B,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;QAC9B,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;QAC9B,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;QAC9B,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;QAC9B,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;QAC9B,EAAE,KAAK,MAAM,CACd,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAgB;IACxC,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC,WAAW;IAClE,IAAI,WAAW,CAAC,EAAE,CAAC;QAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,MAAM,CAAC,EAAE,CAAC;QAAE,OAAO,CAAC,CAAC;IACzB,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,KAAa;IAClD,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,KAAK,GAAG,EAAE,GAAG,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACpC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACf,IAAI,GAAG,EAAE,CAAC;gBACV,KAAK,GAAG,CAAC,CAAC;YACZ,CAAC;YACD,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;gBACf,wDAAwD;gBACxD,IAAI,IAAI,EAAE,CAAC;oBACT,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACf,IAAI,GAAG,EAAE,CAAC;oBACV,KAAK,GAAG,CAAC,CAAC;gBACZ,CAAC;gBACD,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;oBACxB,IAAI,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;wBACvB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACf,IAAI,GAAG,EAAE,CAAC;wBACV,KAAK,GAAG,CAAC,CAAC;oBACZ,CAAC;oBACD,IAAI,IAAI,CAAC,CAAC;oBACV,KAAK,IAAI,EAAE,CAAC;gBACd,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,IAAI,IAAI,CAAC;gBACb,KAAK,IAAI,EAAE,CAAC;YACd,CAAC;QACH,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,wEAAwE;IACxE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,KAAa,EAAE,QAAQ,GAAG,GAAG;IAClE,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,KAAK;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC;IACvC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM;YAAE,MAAM;QAC3B,GAAG,IAAI,CAAC,CAAC;QACT,CAAC,IAAI,EAAE,CAAC;IACV,CAAC;IACD,OAAO,GAAG,GAAG,QAAQ,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW;IACnE,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG;YAAE,GAAG,IAAI,CAAC,CAAC;QAC9C,GAAG,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,IAAI,GAAG;YAAE,MAAM;IACxB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,OAAO,GAAG,4BAA4B,CAAC;AAC7C,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC"}
package/ui/gate.d.ts CHANGED
@@ -1,18 +1,18 @@
1
1
  /**
2
- * Gate — deixa um fluxo async esperar por uma resposta do teclado.
2
+ * Gate — lets an async flow wait for an answer from the keyboard.
3
3
  *
4
- * Wizards lineares (escolher → resolver → confirmar → instalar) ficam muito
5
- * mais legíveis escritos como uma função async do que como uma máquina de
6
- * estados no `onKey`. O gate é a peça que falta: o fluxo aguarda `wait()`, o
7
- * handler de teclado chama `settle()` quando o usuário decide.
4
+ * Linear wizards (choose → resolve → confirm → install) read far better written
5
+ * as one async function than as a state machine inside `onKey`. The gate is the
6
+ * missing piece: the flow awaits `wait()`, and the key handler calls `settle()`
7
+ * when the user decides.
8
8
  */
9
9
  export interface Gate<T> {
10
10
  wait(): Promise<T>;
11
- /** Entrega a resposta. Chamadas seguintes são ignoradas. */
11
+ /** Delivers the answer. Later calls are ignored. */
12
12
  settle(value: T): void;
13
13
  /** Interrompe quem espera, propagando o erro. */
14
14
  fail(error: unknown): void;
15
- /** true enquanto alguém aguarda uma resposta. */
15
+ /** True while somebody is waiting for an answer. */
16
16
  readonly pending: boolean;
17
17
  }
18
18
  export declare function createGate<T>(): Gate<T>;
package/ui/gate.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/ui/gate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,IAAI,CAAC,CAAC;IACrB,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,4DAA4D;IAC5D,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACvB,iDAAiD;IACjD,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,UAAU,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CA2BvC"}
1
+ {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/ui/gate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,IAAI,CAAC,CAAC;IACrB,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,oDAAoD;IACpD,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACvB,iDAAiD;IACjD,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,UAAU,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CA2BvC"}
package/ui/gate.js CHANGED
@@ -1,10 +1,10 @@
1
1
  /**
2
- * Gate — deixa um fluxo async esperar por uma resposta do teclado.
2
+ * Gate — lets an async flow wait for an answer from the keyboard.
3
3
  *
4
- * Wizards lineares (escolher → resolver → confirmar → instalar) ficam muito
5
- * mais legíveis escritos como uma função async do que como uma máquina de
6
- * estados no `onKey`. O gate é a peça que falta: o fluxo aguarda `wait()`, o
7
- * handler de teclado chama `settle()` quando o usuário decide.
4
+ * Linear wizards (choose → resolve → confirm → install) read far better written
5
+ * as one async function than as a state machine inside `onKey`. The gate is the
6
+ * missing piece: the flow awaits `wait()`, and the key handler calls `settle()`
7
+ * when the user decides.
8
8
  */
9
9
  export function createGate() {
10
10
  let resolveFn = null;
package/ui/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
- * Superfície pública da UI da CLI.
2
+ * The public surface of the CLI's UI.
3
3
  *
4
- * Os comandos importam daqui — nunca de `./engine` diretamente — para que a
5
- * troca ou atualização da engine fique contida nesta camada.
4
+ * Commands import from here — never from `./engine` directly — so that replacing
5
+ * or upgrading the engine stays contained in this layer.
6
6
  */
7
7
  export * from './engine/index.js';
8
8
  export * from './blocks.js';
package/ui/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
- * Superfície pública da UI da CLI.
2
+ * The public surface of the CLI's UI.
3
3
  *
4
- * Os comandos importam daqui — nunca de `./engine` diretamente — para que a
5
- * troca ou atualização da engine fique contida nesta camada.
4
+ * Commands import from here — never from `./engine` directly — so that replacing
5
+ * or upgrading the engine stays contained in this layer.
6
6
  */
7
7
  export * from './engine/index.js';
8
8
  export * from './blocks.js';
package/ui/log-sink.d.ts CHANGED
@@ -1,24 +1,24 @@
1
1
  /**
2
- * Sink de mensagens — desvia a saída do logger enquanto a tela interativa está
3
- * montada.
2
+ * Message sink — diverts the logger's output while the interactive screen is
3
+ * mounted.
4
4
  *
5
- * Em alt-screen, qualquer `console.log` disparado por um módulo interno
6
- * (tsconfig-updater, theme-loader, package manager…) rasgaria o frame que a
7
- * engine acabou de pintar. Durante a captura as mensagens ficam retidas aqui e
8
- * são reemitidas no histórico do terminal depois do unmount, junto do resumo.
5
+ * In the alt-screen, any `console.log` fired by an internal module
6
+ * (tsconfig-updater, theme-loader, package manager…) would tear the frame the
7
+ * engine just painted. While capturing, messages are held here and re-emitted
8
+ * into the terminal's history after unmount, alongside the summary.
9
9
  */
10
10
  export type LogLevel = 'info' | 'warn' | 'error' | 'success' | 'debug';
11
11
  export interface LogRecord {
12
12
  readonly level: LogLevel;
13
13
  readonly message: string;
14
14
  }
15
- /** Passa a reter as mensagens do logger em vez de escrevê-las no terminal. */
15
+ /** Starts holding the logger's messages instead of writing them to the terminal. */
16
16
  export declare function beginCapture(): void;
17
17
  /** Encerra a captura e devolve o que foi retido, na ordem em que chegou. */
18
18
  export declare function endCapture(): LogRecord[];
19
19
  export declare function isCapturing(): boolean;
20
- /** Retém uma mensagem. Devolve false quando não há captura ativa. */
20
+ /** Holds one message. Returns false when no capture is active. */
21
21
  export declare function capture(level: LogLevel, message: string): boolean;
22
- /** Mensagens retidas até agora, sem encerrar a captura (para exibir na UI). */
22
+ /** The messages held so far, without ending the capture (for display in the UI). */
23
23
  export declare function captured(): readonly LogRecord[];
24
24
  //# sourceMappingURL=log-sink.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"log-sink.d.ts","sourceRoot":"","sources":["../../src/ui/log-sink.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEvE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAID,8EAA8E;AAC9E,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAED,4EAA4E;AAC5E,wBAAgB,UAAU,IAAI,SAAS,EAAE,CAIxC;AAED,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED,qEAAqE;AACrE,wBAAgB,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAIjE;AAED,+EAA+E;AAC/E,wBAAgB,QAAQ,IAAI,SAAS,SAAS,EAAE,CAE/C"}
1
+ {"version":3,"file":"log-sink.d.ts","sourceRoot":"","sources":["../../src/ui/log-sink.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEvE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAID,oFAAoF;AACpF,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAED,4EAA4E;AAC5E,wBAAgB,UAAU,IAAI,SAAS,EAAE,CAIxC;AAED,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED,kEAAkE;AAClE,wBAAgB,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAIjE;AAED,oFAAoF;AACpF,wBAAgB,QAAQ,IAAI,SAAS,SAAS,EAAE,CAE/C"}
package/ui/log-sink.js CHANGED
@@ -1,14 +1,14 @@
1
1
  /**
2
- * Sink de mensagens — desvia a saída do logger enquanto a tela interativa está
3
- * montada.
2
+ * Message sink — diverts the logger's output while the interactive screen is
3
+ * mounted.
4
4
  *
5
- * Em alt-screen, qualquer `console.log` disparado por um módulo interno
6
- * (tsconfig-updater, theme-loader, package manager…) rasgaria o frame que a
7
- * engine acabou de pintar. Durante a captura as mensagens ficam retidas aqui e
8
- * são reemitidas no histórico do terminal depois do unmount, junto do resumo.
5
+ * In the alt-screen, any `console.log` fired by an internal module
6
+ * (tsconfig-updater, theme-loader, package manager…) would tear the frame the
7
+ * engine just painted. While capturing, messages are held here and re-emitted
8
+ * into the terminal's history after unmount, alongside the summary.
9
9
  */
10
10
  let buffer = null;
11
- /** Passa a reter as mensagens do logger em vez de escrevê-las no terminal. */
11
+ /** Starts holding the logger's messages instead of writing them to the terminal. */
12
12
  export function beginCapture() {
13
13
  buffer = [];
14
14
  }
@@ -21,14 +21,14 @@ export function endCapture() {
21
21
  export function isCapturing() {
22
22
  return buffer !== null;
23
23
  }
24
- /** Retém uma mensagem. Devolve false quando não há captura ativa. */
24
+ /** Holds one message. Returns false when no capture is active. */
25
25
  export function capture(level, message) {
26
26
  if (buffer === null)
27
27
  return false;
28
28
  buffer.push({ level, message });
29
29
  return true;
30
30
  }
31
- /** Mensagens retidas até agora, sem encerrar a captura (para exibir na UI). */
31
+ /** The messages held so far, without ending the capture (for display in the UI). */
32
32
  export function captured() {
33
33
  return buffer ?? [];
34
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"log-sink.js","sourceRoot":"","sources":["../../src/ui/log-sink.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,IAAI,MAAM,GAAuB,IAAI,CAAC;AAEtC,8EAA8E;AAC9E,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,EAAE,CAAC;AACd,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,UAAU;IACxB,MAAM,QAAQ,GAAG,MAAM,IAAI,EAAE,CAAC;IAC9B,MAAM,GAAG,IAAI,CAAC;IACd,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,MAAM,KAAK,IAAI,CAAC;AACzB,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,OAAO,CAAC,KAAe,EAAE,OAAe;IACtD,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAClC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,QAAQ;IACtB,OAAO,MAAM,IAAI,EAAE,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"log-sink.js","sourceRoot":"","sources":["../../src/ui/log-sink.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,IAAI,MAAM,GAAuB,IAAI,CAAC;AAEtC,oFAAoF;AACpF,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,EAAE,CAAC;AACd,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,UAAU;IACxB,MAAM,QAAQ,GAAG,MAAM,IAAI,EAAE,CAAC;IAC9B,MAAM,GAAG,IAAI,CAAC;IACd,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,MAAM,KAAK,IAAI,CAAC;AACzB,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,OAAO,CAAC,KAAe,EAAE,OAAe;IACtD,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAClC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,QAAQ;IACtB,OAAO,MAAM,IAAI,EAAE,CAAC;AACtB,CAAC"}
package/ui/output.d.ts CHANGED
@@ -1,14 +1,14 @@
1
1
  /**
2
- * Saída em linha — a única porta por onde a CLI escreve texto solto no
3
- * terminal, fora da tela interativa.
2
+ * Line output — the only door through which the CLI writes loose text to the
3
+ * terminal, outside the interactive screen.
4
4
  *
5
- * Concentrar a escrita aqui garante que o logger, o resumo final e as
6
- * mensagens reemitidas do sink usem exatamente a mesma marcação de nível e a
7
- * mesma paleta.
5
+ * Concentrating writes here guarantees the logger, the final summary and the
6
+ * messages re-emitted from the sink all use exactly the same level markers and
7
+ * the same palette.
8
8
  */
9
9
  import { type LogRecord } from './log-sink.js';
10
10
  export declare function writeLine(text?: string): void;
11
11
  export declare function formatRecord(record: LogRecord): string;
12
- /** Reemite no histórico do terminal as mensagens retidas durante a tela. */
12
+ /** Re-emits into the terminal's history the messages held while the screen was up. */
13
13
  export declare function flushRecords(records: readonly LogRecord[]): void;
14
14
  //# sourceMappingURL=output.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/ui/output.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAiB,MAAM,eAAe,CAAC;AAW9D,wBAAgB,SAAS,CAAC,IAAI,SAAK,GAAG,IAAI,CAEzC;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAEtD;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,IAAI,CAEhE"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/ui/output.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAiB,MAAM,eAAe,CAAC;AAW9D,wBAAgB,SAAS,CAAC,IAAI,SAAK,GAAG,IAAI,CAEzC;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAEtD;AAED,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,IAAI,CAEhE"}
package/ui/output.js CHANGED
@@ -1,10 +1,10 @@
1
1
  /**
2
- * Saída em linha — a única porta por onde a CLI escreve texto solto no
3
- * terminal, fora da tela interativa.
2
+ * Line output — the only door through which the CLI writes loose text to the
3
+ * terminal, outside the interactive screen.
4
4
  *
5
- * Concentrar a escrita aqui garante que o logger, o resumo final e as
6
- * mensagens reemitidas do sink usem exatamente a mesma marcação de nível e a
7
- * mesma paleta.
5
+ * Concentrating writes here guarantees the logger, the final summary and the
6
+ * messages re-emitted from the sink all use exactly the same level markers and
7
+ * the same palette.
8
8
  */
9
9
  import { style } from './style.js';
10
10
  const MARKS = {
@@ -20,7 +20,7 @@ export function writeLine(text = '') {
20
20
  export function formatRecord(record) {
21
21
  return MARKS[record.level](record.message);
22
22
  }
23
- /** Reemite no histórico do terminal as mensagens retidas durante a tela. */
23
+ /** Re-emits into the terminal's history the messages held while the screen was up. */
24
24
  export function flushRecords(records) {
25
25
  for (const record of records)
26
26
  writeLine(formatRecord(record));
package/ui/output.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/ui/output.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,KAAK,GAA+C;IACxD,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;IAC7C,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;IAChD,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;IAC7C,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;IAC7C,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;CAC5C,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,IAAI,GAAG,EAAE;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAiB;IAC5C,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,YAAY,CAAC,OAA6B;IACxD,KAAK,MAAM,MAAM,IAAI,OAAO;QAAE,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/ui/output.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,KAAK,GAA+C;IACxD,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;IAC7C,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;IAChD,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;IAC7C,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;IAC7C,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;CAC5C,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,IAAI,GAAG,EAAE;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAiB;IAC5C,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,YAAY,CAAC,OAA6B;IACxD,KAAK,MAAM,MAAM,IAAI,OAAO;QAAE,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;AAChE,CAAC"}
package/ui/report.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  /**
2
- * Resumo pós-execução — o que permanece no histórico depois do alt-screen.
2
+ * The post-run summary — what stays in the history after the alt-screen.
3
3
  *
4
- * Ao sair da tela cheia, tudo que o wizard desenhou desaparece. O que o usuário
5
- * precisa reter (o que foi escrito, o que rodar em seguida, o que deu errado)
6
- * é reimpresso aqui, no fluxo normal do terminal, onde continua rolável e
7
- * copiável depois que o comando termina.
4
+ * On leaving the full screen, everything the wizard drew disappears. What the
5
+ * user needs to keep (what was written, what to run next, what went wrong) is
6
+ * reprinted here, in the terminal's normal flow, where it stays scrollable and
7
+ * copyable after the command ends.
8
8
  */
9
9
  import { type LogRecord } from './log-sink.js';
10
10
  export type ReportStatus = 'success' | 'cancelled' | 'error';
@@ -17,11 +17,11 @@ export interface Report {
17
17
  readonly status: ReportStatus;
18
18
  /** Uma frase: o desfecho do comando. */
19
19
  readonly headline: string;
20
- /** Itens do que foi efetivamente feito. */
20
+ /** What was actually done. */
21
21
  readonly items?: readonly string[];
22
- /** Texto de apoio, exibido em tom secundário. */
22
+ /** Supporting text, shown in a secondary tone. */
23
23
  readonly notes?: readonly string[];
24
- /** Próximos passos sugeridos. */
24
+ /** Suggested next steps. */
25
25
  readonly commands?: readonly ReportCommand[];
26
26
  /** Mensagens retidas enquanto a tela estava montada. */
27
27
  readonly logs?: readonly LogRecord[];
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/ui/report.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAI/C,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;AAE7D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,wCAAwC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,iDAAiD;IACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,iCAAiC;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAC7C,wDAAwD;IACxD,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;CACtC;AAQD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CA+BhD"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/ui/report.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAI/C,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;AAE7D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,wCAAwC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8BAA8B;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,kDAAkD;IAClD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,4BAA4B;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAC7C,wDAAwD;IACxD,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;CACtC;AAQD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CA+BhD"}
package/ui/report.js CHANGED
@@ -1,10 +1,10 @@
1
1
  /**
2
- * Resumo pós-execução — o que permanece no histórico depois do alt-screen.
2
+ * The post-run summary — what stays in the history after the alt-screen.
3
3
  *
4
- * Ao sair da tela cheia, tudo que o wizard desenhou desaparece. O que o usuário
5
- * precisa reter (o que foi escrito, o que rodar em seguida, o que deu errado)
6
- * é reimpresso aqui, no fluxo normal do terminal, onde continua rolável e
7
- * copiável depois que o comando termina.
4
+ * On leaving the full screen, everything the wizard drew disappears. What the
5
+ * user needs to keep (what was written, what to run next, what went wrong) is
6
+ * reprinted here, in the terminal's normal flow, where it stays scrollable and
7
+ * copyable after the command ends.
8
8
  */
9
9
  import { flushRecords, writeLine } from './output.js';
10
10
  import { style } from './style.js';
@@ -37,8 +37,8 @@ export function printReport(report) {
37
37
  writeLine(` ${style.foreground(command)}${suffix}`);
38
38
  }
39
39
  }
40
- // Duas linhas, não uma: o prompt do shell volta logo abaixo e, colado, o
41
- // último comando sugerido parece parte dele.
40
+ // Two lines, not one: the shell prompt comes back right below and, pressed up
41
+ // against it, the last suggested command looks like part of it.
42
42
  writeLine();
43
43
  writeLine();
44
44
  }
package/ui/report.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/ui/report.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAwBnC,MAAM,QAAQ,GAAmD;IAC/D,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IAC5D,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IAC9D,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;CAC1D,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,SAAS,EAAE,CAAC;IACZ,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEpD,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QACxB,SAAS,EAAE,CAAC;QACZ,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACzB,SAAS,EAAE,CAAC;QACZ,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK;YAAE,SAAS,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACzB,SAAS,EAAE,CAAC;QACZ,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK;YAAE,SAAS,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC5B,SAAS,EAAE,CAAC;QACZ,KAAK,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,SAAS,CAAC,KAAK,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,6CAA6C;IAC7C,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/ui/report.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAwBnC,MAAM,QAAQ,GAAmD;IAC/D,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IAC5D,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IAC9D,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;CAC1D,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,SAAS,EAAE,CAAC;IACZ,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEpD,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QACxB,SAAS,EAAE,CAAC;QACZ,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACzB,SAAS,EAAE,CAAC;QACZ,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK;YAAE,SAAS,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACzB,SAAS,EAAE,CAAC;QACZ,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK;YAAE,SAAS,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC5B,SAAS,EAAE,CAAC;QACZ,KAAK,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,SAAS,CAAC,KAAK,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,gEAAgE;IAChE,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,CAAC;AACd,CAAC"}
package/ui/runner.d.ts CHANGED
@@ -1,26 +1,26 @@
1
1
  /**
2
- * Runner — a ponte entre o loop de frames da engine e o fluxo async da CLI.
2
+ * Runner — the bridge between the engine's frame loop and the CLI's async flow.
3
3
  *
4
- * Os comandos são sequenciais (`const config = await promptForConfig(...)`),
5
- * enquanto a engine é um laço de render dirigido por eventos. O runner concilia
6
- * os dois: monta a tela, entrega o controle ao `onKey`/`run` e resolve uma
7
- * Promise quando o fluxo chama `done()`.
4
+ * Commands are sequential (`const config = await promptForConfig(...)`), while
5
+ * the engine is an event-driven render loop. The runner reconciles the two: it
6
+ * mounts the screen, hands control to `onKey`/`run`, and resolves a Promise when
7
+ * the flow calls `done()`.
8
8
  *
9
- * Três invariantes valem para qualquer wizard:
10
- * 1. o terminal é restaurado em todos os caminhos de saída — inclusive erro,
11
- * SIGINT e crash do processo;
12
- * 2. sem TTY a tela nunca é montada: quem chamou recebe NonInteractiveError e
13
- * segue pelo caminho headless;
14
- * 3. o que o logger escreveria durante a montagem fica retido no sink e é
15
- * reemitido depois, para não rasgar o frame.
9
+ * Three invariants hold for every wizard:
10
+ * 1. the terminal is restored on every exit path — errors, SIGINT and a
11
+ * process crash included;
12
+ * 2. with no TTY the screen is never mounted: the caller gets a
13
+ * NonInteractiveError and follows the headless path;
14
+ * 3. whatever the logger would write during the mount is held in the sink and
15
+ * re-emitted afterwards, so the frame is not torn.
16
16
  */
17
17
  import { type KeyEvent, type Node, type Screen, type TerminalStreams } from './engine/index.js';
18
18
  import { type LogRecord } from './log-sink.js';
19
- /** Sinaliza que o comando precisa seguir sem UI interativa (CI, pipe, --yes). */
19
+ /** Signals that the command has to carry on without an interactive UI (CI, pipe, --yes). */
20
20
  export declare class NonInteractiveError extends Error {
21
21
  constructor(message?: string);
22
22
  }
23
- /** O usuário abandonou o wizard (Ctrl+C ou um passo que cancela o fluxo). */
23
+ /** The user abandoned the wizard (Ctrl+C, or a step that cancels the flow). */
24
24
  export declare class WizardCancelledError extends Error {
25
25
  constructor(message?: string);
26
26
  }
@@ -31,21 +31,21 @@ export interface WizardContext<T> {
31
31
  cancel(message?: string): void;
32
32
  /** Agenda um novo frame depois de alterar o estado. */
33
33
  refresh(): void;
34
- /** Acesso à tela para casos que precisam do scheduler ou das capacidades. */
34
+ /** Access to the screen, for cases that need the scheduler or the capabilities. */
35
35
  readonly screen: Screen;
36
36
  }
37
37
  export interface WizardOptions<T> {
38
- /** View pura reconstruída a cada frame. */
38
+ /** Pure view, rebuilt every frame. */
39
39
  view: () => Node;
40
- /** Teclas que a view trata por conta própria. */
40
+ /** Keys the view handles on its own. */
41
41
  onKey?: (event: KeyEvent, ctx: WizardContext<T>) => void;
42
42
  /**
43
- * Trabalho assíncrono executado com a tela viva — instalar pacotes, escrever
44
- * arquivos. A UI continua animando enquanto a promise não resolve.
43
+ * Async work run with the screen alive — installing packages, writing files.
44
+ * The UI keeps animating until the promise resolves.
45
45
  */
46
46
  run?: (ctx: WizardContext<T>) => Promise<void> | void;
47
47
  fps?: number;
48
- /** Como achar o terminal. Injetável para teste; o padrão resolve sozinho. */
48
+ /** How to find the terminal. Injectable for tests; the default resolves it itself. */
49
49
  resolveStreams?: () => TerminalStreams | null;
50
50
  }
51
51
  export interface WizardResult<T> {
@@ -54,12 +54,12 @@ export interface WizardResult<T> {
54
54
  readonly logs: readonly LogRecord[];
55
55
  }
56
56
  /**
57
- * true quando existe um terminal onde montar a tela.
57
+ * True when there is a terminal to mount the screen on.
58
58
  *
59
- * Não basta olhar `process.stdout.isTTY && process.stdin.isTTY`: era isso que
60
- * fazia `npx zard-cli init` sair em modo texto no macOS e no Linux, onde o npm
61
- * executa o binário por um shell e entrega o stdin como pipe. O terminal de
62
- * controle continua alcançável, e é ele que decide.
59
+ * Looking at `process.stdout.isTTY && process.stdin.isTTY` is not enough: that
60
+ * is what made `npx zard-cli init` fall back to text mode on macOS and Linux,
61
+ * where npm runs the binary through a shell and hands over stdin as a pipe. The
62
+ * controlling terminal is still reachable, and it is what decides.
63
63
  */
64
64
  export declare function isInteractive(resolve?: () => TerminalStreams | null): boolean;
65
65
  export declare function runWizard<T>(options: WizardOptions<T>): Promise<WizardResult<T>>;
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/ui/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAIL,KAAK,QAAQ,EACb,KAAK,IAAI,EACT,KAAK,MAAM,EACX,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAA4B,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAIzE,iFAAiF;AACjF,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,SAAsC;CAI1D;AAED,6EAA6E;AAC7E,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,SAAyB;CAI7C;AAED,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,wDAAwD;IACxD,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACrB,yDAAyD;IACzD,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,uDAAuD;IACvD,OAAO,IAAI,IAAI,CAAC;IAChB,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,iDAAiD;IACjD,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACzD;;;OAGG;IACH,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,cAAc,CAAC,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;CACrC;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,MAAM,eAAe,GAAG,IAA6B,GAAG,OAAO,CAMrG;AAED,wBAAsB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAwFtF"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/ui/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAIL,KAAK,QAAQ,EACb,KAAK,IAAI,EACT,KAAK,MAAM,EACX,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAA4B,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAIzE,4FAA4F;AAC5F,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,SAAsC;CAI1D;AAED,+EAA+E;AAC/E,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,SAAyB;CAI7C;AAED,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,wDAAwD;IACxD,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACrB,yDAAyD;IACzD,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,uDAAuD;IACvD,OAAO,IAAI,IAAI,CAAC;IAChB,mFAAmF;IACnF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,sCAAsC;IACtC,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,wCAAwC;IACxC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACzD;;;OAGG;IACH,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sFAAsF;IACtF,cAAc,CAAC,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;CACrC;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,MAAM,eAAe,GAAG,IAA6B,GAAG,OAAO,CAMrG;AAED,wBAAsB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAwFtF"}
package/ui/runner.js CHANGED
@@ -1,31 +1,31 @@
1
1
  /**
2
- * Runner — a ponte entre o loop de frames da engine e o fluxo async da CLI.
2
+ * Runner — the bridge between the engine's frame loop and the CLI's async flow.
3
3
  *
4
- * Os comandos são sequenciais (`const config = await promptForConfig(...)`),
5
- * enquanto a engine é um laço de render dirigido por eventos. O runner concilia
6
- * os dois: monta a tela, entrega o controle ao `onKey`/`run` e resolve uma
7
- * Promise quando o fluxo chama `done()`.
4
+ * Commands are sequential (`const config = await promptForConfig(...)`), while
5
+ * the engine is an event-driven render loop. The runner reconciles the two: it
6
+ * mounts the screen, hands control to `onKey`/`run`, and resolves a Promise when
7
+ * the flow calls `done()`.
8
8
  *
9
- * Três invariantes valem para qualquer wizard:
10
- * 1. o terminal é restaurado em todos os caminhos de saída — inclusive erro,
11
- * SIGINT e crash do processo;
12
- * 2. sem TTY a tela nunca é montada: quem chamou recebe NonInteractiveError e
13
- * segue pelo caminho headless;
14
- * 3. o que o logger escreveria durante a montagem fica retido no sink e é
15
- * reemitido depois, para não rasgar o frame.
9
+ * Three invariants hold for every wizard:
10
+ * 1. the terminal is restored on every exit path — errors, SIGINT and a
11
+ * process crash included;
12
+ * 2. with no TTY the screen is never mounted: the caller gets a
13
+ * NonInteractiveError and follows the headless path;
14
+ * 3. whatever the logger would write during the mount is held in the sink and
15
+ * re-emitted afterwards, so the frame is not torn.
16
16
  */
17
17
  import { createScreen, createTerminal, resolveTerminalStreams, } from './engine/index.js';
18
18
  import { beginCapture, endCapture } from './log-sink.js';
19
19
  import { flushRecords } from './output.js';
20
20
  import { zardTheme } from './theme.js';
21
- /** Sinaliza que o comando precisa seguir sem UI interativa (CI, pipe, --yes). */
21
+ /** Signals that the command has to carry on without an interactive UI (CI, pipe, --yes). */
22
22
  export class NonInteractiveError extends Error {
23
23
  constructor(message = 'This terminal is not interactive.') {
24
24
  super(message);
25
25
  this.name = 'NonInteractiveError';
26
26
  }
27
27
  }
28
- /** O usuário abandonou o wizard (Ctrl+C ou um passo que cancela o fluxo). */
28
+ /** The user abandoned the wizard (Ctrl+C, or a step that cancels the flow). */
29
29
  export class WizardCancelledError extends Error {
30
30
  constructor(message = 'Operation cancelled.') {
31
31
  super(message);
@@ -33,12 +33,12 @@ export class WizardCancelledError extends Error {
33
33
  }
34
34
  }
35
35
  /**
36
- * true quando existe um terminal onde montar a tela.
36
+ * True when there is a terminal to mount the screen on.
37
37
  *
38
- * Não basta olhar `process.stdout.isTTY && process.stdin.isTTY`: era isso que
39
- * fazia `npx zard-cli init` sair em modo texto no macOS e no Linux, onde o npm
40
- * executa o binário por um shell e entrega o stdin como pipe. O terminal de
41
- * controle continua alcançável, e é ele que decide.
38
+ * Looking at `process.stdout.isTTY && process.stdin.isTTY` is not enough: that
39
+ * is what made `npx zard-cli init` fall back to text mode on macOS and Linux,
40
+ * where npm runs the binary through a shell and hands over stdin as a pipe. The
41
+ * controlling terminal is still reachable, and it is what decides.
42
42
  */
43
43
  export function isInteractive(resolve = resolveTerminalStreams) {
44
44
  const streams = resolve();
@@ -55,8 +55,8 @@ export async function runWizard(options) {
55
55
  theme: zardTheme,
56
56
  fps: options.fps ?? 30,
57
57
  terminal: createTerminal({ stdin: streams.input, stdout: streams.output }),
58
- // O teardown é nosso: interceptamos Ctrl+C para encerrar o wizard com uma
59
- // mensagem, em vez de matar o processo direto de dentro da engine.
58
+ // Teardown is ours: we intercept Ctrl+C to end the wizard with a message,
59
+ // instead of killing the process from inside the engine.
60
60
  handleExitSignals: false,
61
61
  });
62
62
  let settled = false;
@@ -66,15 +66,15 @@ export async function runWizard(options) {
66
66
  return;
67
67
  teardownDone = true;
68
68
  screen.unmount();
69
- // Depois do unmount: é ele que devolve o terminal ao estado normal, e
70
- // fechar os streams antes deixaria o alt-screen e o raw mode ligados.
69
+ // After the unmount: that is what returns the terminal to its normal state,
70
+ // and closing the streams first would leave the alt-screen and raw mode on.
71
71
  streams.close();
72
72
  process.off('exit', teardown);
73
73
  process.off('SIGINT', onSignal);
74
74
  process.off('SIGTERM', onSignal);
75
75
  };
76
- // Rede de segurança: se o processo morrer com a tela montada, o terminal
77
- // ainda volta ao normal (cursor visível, sem raw mode, fora do alt-screen).
76
+ // Safety net: if the process dies with the screen mounted, the terminal still
77
+ // returns to normal (cursor visible, no raw mode, out of the alt-screen).
78
78
  function onSignal() {
79
79
  teardown();
80
80
  process.exit(130);
@@ -123,8 +123,8 @@ export async function runWizard(options) {
123
123
  return { value, logs: endCapture() };
124
124
  }
125
125
  catch (error) {
126
- // Última chance de mostrar o que foi retido: a tela já caiu e quem trata o
127
- // erro acima só verá a mensagem da exceção.
126
+ // Last chance to show what was held: the screen is already down and whoever
127
+ // handles the error above will only see the exception's message.
128
128
  flushRecords(endCapture());
129
129
  throw error;
130
130
  }