zard-cli 1.0.0-beta.103 → 1.0.0-beta.105

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 (235) hide show
  1. package/commands/add/component-installer.d.ts +2 -0
  2. package/commands/add/component-installer.d.ts.map +1 -1
  3. package/commands/add/component-installer.js +9 -4
  4. package/commands/add/component-installer.js.map +1 -1
  5. package/commands/add/component-selector.d.ts +6 -0
  6. package/commands/add/component-selector.d.ts.map +1 -1
  7. package/commands/add/component-selector.js +9 -27
  8. package/commands/add/component-selector.js.map +1 -1
  9. package/commands/add/dark-mode-setup.d.ts.map +1 -1
  10. package/commands/add/dark-mode-setup.js +2 -11
  11. package/commands/add/dark-mode-setup.js.map +1 -1
  12. package/commands/add/dependency-resolver.d.ts +2 -1
  13. package/commands/add/dependency-resolver.d.ts.map +1 -1
  14. package/commands/add/dependency-resolver.js +19 -4
  15. package/commands/add/dependency-resolver.js.map +1 -1
  16. package/commands/add/index.d.ts.map +1 -1
  17. package/commands/add/index.js +116 -86
  18. package/commands/add/index.js.map +1 -1
  19. package/commands/add/wizard.d.ts +31 -0
  20. package/commands/add/wizard.d.ts.map +1 -0
  21. package/commands/add/wizard.js +289 -0
  22. package/commands/add/wizard.js.map +1 -0
  23. package/commands/init/config-prompter.d.ts +49 -3
  24. package/commands/init/config-prompter.d.ts.map +1 -1
  25. package/commands/init/config-prompter.js +84 -74
  26. package/commands/init/config-prompter.js.map +1 -1
  27. package/commands/init/dependencies.d.ts +1 -8
  28. package/commands/init/dependencies.d.ts.map +1 -1
  29. package/commands/init/dependencies.js +47 -18
  30. package/commands/init/dependencies.js.map +1 -1
  31. package/commands/init/index.d.ts.map +1 -1
  32. package/commands/init/index.js +147 -81
  33. package/commands/init/index.js.map +1 -1
  34. package/commands/init/project-kind.d.ts +82 -0
  35. package/commands/init/project-kind.d.ts.map +1 -0
  36. package/commands/init/project-kind.js +166 -0
  37. package/commands/init/project-kind.js.map +1 -0
  38. package/commands/init/steps.d.ts +16 -0
  39. package/commands/init/steps.d.ts.map +1 -0
  40. package/commands/init/steps.js +153 -0
  41. package/commands/init/steps.js.map +1 -0
  42. package/commands/init/tailwind-setup.d.ts +9 -2
  43. package/commands/init/tailwind-setup.d.ts.map +1 -1
  44. package/commands/init/tailwind-setup.js +33 -12
  45. package/commands/init/tailwind-setup.js.map +1 -1
  46. package/commands/init/tsconfig-updater.d.ts +8 -1
  47. package/commands/init/tsconfig-updater.d.ts.map +1 -1
  48. package/commands/init/tsconfig-updater.js +30 -11
  49. package/commands/init/tsconfig-updater.js.map +1 -1
  50. package/commands/init/update-angular-config.d.ts.map +1 -1
  51. package/commands/init/update-angular-config.js +28 -50
  52. package/commands/init/update-angular-config.js.map +1 -1
  53. package/commands/init/vite-setup.d.ts +10 -0
  54. package/commands/init/vite-setup.d.ts.map +1 -0
  55. package/commands/init/vite-setup.js +60 -0
  56. package/commands/init/vite-setup.js.map +1 -0
  57. package/commands/init/wizard.d.ts +30 -0
  58. package/commands/init/wizard.d.ts.map +1 -0
  59. package/commands/init/wizard.js +560 -0
  60. package/commands/init/wizard.js.map +1 -0
  61. package/core/icons/families.d.ts +38 -0
  62. package/core/icons/families.d.ts.map +1 -0
  63. package/core/icons/families.js +26 -0
  64. package/core/icons/families.js.map +1 -0
  65. package/core/icons/icon-map.d.ts +22 -0
  66. package/core/icons/icon-map.d.ts.map +1 -0
  67. package/core/icons/icon-map.js +128 -0
  68. package/core/icons/icon-map.js.map +1 -0
  69. package/core/icons/index.d.ts +107 -0
  70. package/core/icons/index.d.ts.map +1 -0
  71. package/core/icons/index.js +183 -0
  72. package/core/icons/index.js.map +1 -0
  73. package/core/registry/registry-data.d.ts.map +1 -1
  74. package/core/registry/registry-data.js +74 -0
  75. package/core/registry/registry-data.js.map +1 -1
  76. package/core/themes/theme-definitions.js +50 -50
  77. package/index.js +5 -3
  78. package/index.js.map +1 -1
  79. package/package.json +1 -4
  80. package/ui/blocks.d.ts +70 -0
  81. package/ui/blocks.d.ts.map +1 -0
  82. package/ui/blocks.js +116 -0
  83. package/ui/blocks.js.map +1 -0
  84. package/ui/brand.d.ts +14 -0
  85. package/ui/brand.d.ts.map +1 -0
  86. package/ui/brand.js +35 -0
  87. package/ui/brand.js.map +1 -0
  88. package/ui/engine/animation/index.d.ts +39 -0
  89. package/ui/engine/animation/index.d.ts.map +1 -0
  90. package/ui/engine/animation/index.js +103 -0
  91. package/ui/engine/animation/index.js.map +1 -0
  92. package/ui/engine/ansi/index.d.ts +52 -0
  93. package/ui/engine/ansi/index.d.ts.map +1 -0
  94. package/ui/engine/ansi/index.js +117 -0
  95. package/ui/engine/ansi/index.js.map +1 -0
  96. package/ui/engine/components/index.d.ts +211 -0
  97. package/ui/engine/components/index.d.ts.map +1 -0
  98. package/ui/engine/components/index.js +109 -0
  99. package/ui/engine/components/index.js.map +1 -0
  100. package/ui/engine/cursor/index.d.ts +17 -0
  101. package/ui/engine/cursor/index.d.ts.map +1 -0
  102. package/ui/engine/cursor/index.js +41 -0
  103. package/ui/engine/cursor/index.js.map +1 -0
  104. package/ui/engine/diff/index.d.ts +27 -0
  105. package/ui/engine/diff/index.d.ts.map +1 -0
  106. package/ui/engine/diff/index.js +57 -0
  107. package/ui/engine/diff/index.js.map +1 -0
  108. package/ui/engine/events/index.d.ts +24 -0
  109. package/ui/engine/events/index.d.ts.map +1 -0
  110. package/ui/engine/events/index.js +60 -0
  111. package/ui/engine/events/index.js.map +1 -0
  112. package/ui/engine/focus/index.d.ts +25 -0
  113. package/ui/engine/focus/index.d.ts.map +1 -0
  114. package/ui/engine/focus/index.js +77 -0
  115. package/ui/engine/focus/index.js.map +1 -0
  116. package/ui/engine/frame/index.d.ts +48 -0
  117. package/ui/engine/frame/index.d.ts.map +1 -0
  118. package/ui/engine/frame/index.js +0 -0
  119. package/ui/engine/frame/index.js.map +1 -0
  120. package/ui/engine/index.d.ts +28 -0
  121. package/ui/engine/index.d.ts.map +1 -0
  122. package/ui/engine/index.js +28 -0
  123. package/ui/engine/index.js.map +1 -0
  124. package/ui/engine/input/index.d.ts +36 -0
  125. package/ui/engine/input/index.d.ts.map +1 -0
  126. package/ui/engine/input/index.js +224 -0
  127. package/ui/engine/input/index.js.map +1 -0
  128. package/ui/engine/layout/index.d.ts +42 -0
  129. package/ui/engine/layout/index.d.ts.map +1 -0
  130. package/ui/engine/layout/index.js +241 -0
  131. package/ui/engine/layout/index.js.map +1 -0
  132. package/ui/engine/renderer/index.d.ts +43 -0
  133. package/ui/engine/renderer/index.d.ts.map +1 -0
  134. package/ui/engine/renderer/index.js +619 -0
  135. package/ui/engine/renderer/index.js.map +1 -0
  136. package/ui/engine/scheduler/index.d.ts +22 -0
  137. package/ui/engine/scheduler/index.d.ts.map +1 -0
  138. package/ui/engine/scheduler/index.js +77 -0
  139. package/ui/engine/scheduler/index.js.map +1 -0
  140. package/ui/engine/screen/index.d.ts +39 -0
  141. package/ui/engine/screen/index.d.ts.map +1 -0
  142. package/ui/engine/screen/index.js +255 -0
  143. package/ui/engine/screen/index.js.map +1 -0
  144. package/ui/engine/terminal/index.d.ts +84 -0
  145. package/ui/engine/terminal/index.d.ts.map +1 -0
  146. package/ui/engine/terminal/index.js +235 -0
  147. package/ui/engine/terminal/index.js.map +1 -0
  148. package/ui/engine/testing/index.d.ts +27 -0
  149. package/ui/engine/testing/index.d.ts.map +1 -0
  150. package/ui/engine/testing/index.js +63 -0
  151. package/ui/engine/testing/index.js.map +1 -0
  152. package/ui/engine/theme/index.d.ts +27 -0
  153. package/ui/engine/theme/index.d.ts.map +1 -0
  154. package/ui/engine/theme/index.js +129 -0
  155. package/ui/engine/theme/index.js.map +1 -0
  156. package/ui/engine/utils/index.d.ts +12 -0
  157. package/ui/engine/utils/index.d.ts.map +1 -0
  158. package/ui/engine/utils/index.js +143 -0
  159. package/ui/engine/utils/index.js.map +1 -0
  160. package/ui/gate.d.ts +19 -0
  161. package/ui/gate.d.ts.map +1 -0
  162. package/ui/gate.js +36 -0
  163. package/ui/gate.js.map +1 -0
  164. package/ui/index.d.ts +18 -0
  165. package/ui/index.d.ts.map +1 -0
  166. package/ui/index.js +18 -0
  167. package/ui/index.js.map +1 -0
  168. package/ui/log-sink.d.ts +24 -0
  169. package/ui/log-sink.d.ts.map +1 -0
  170. package/ui/log-sink.js +35 -0
  171. package/ui/log-sink.js.map +1 -0
  172. package/ui/output.d.ts +14 -0
  173. package/ui/output.d.ts.map +1 -0
  174. package/ui/output.js +28 -0
  175. package/ui/output.js.map +1 -0
  176. package/ui/report.d.ts +30 -0
  177. package/ui/report.d.ts.map +1 -0
  178. package/ui/report.js +45 -0
  179. package/ui/report.js.map +1 -0
  180. package/ui/runner.d.ts +66 -0
  181. package/ui/runner.d.ts.map +1 -0
  182. package/ui/runner.js +135 -0
  183. package/ui/runner.js.map +1 -0
  184. package/ui/style.d.ts +24 -0
  185. package/ui/style.d.ts.map +1 -0
  186. package/ui/style.js +44 -0
  187. package/ui/style.js.map +1 -0
  188. package/ui/testing/fake-tty.d.ts +26 -0
  189. package/ui/testing/fake-tty.d.ts.map +1 -0
  190. package/ui/testing/fake-tty.js +61 -0
  191. package/ui/testing/fake-tty.js.map +1 -0
  192. package/ui/text-input.d.ts +30 -0
  193. package/ui/text-input.d.ts.map +1 -0
  194. package/ui/text-input.js +87 -0
  195. package/ui/text-input.js.map +1 -0
  196. package/ui/theme.d.ts +10 -0
  197. package/ui/theme.d.ts.map +1 -0
  198. package/ui/theme.js +20 -0
  199. package/ui/theme.js.map +1 -0
  200. package/utils/config.d.ts +26 -0
  201. package/utils/config.d.ts.map +1 -1
  202. package/utils/config.js +41 -1
  203. package/utils/config.js.map +1 -1
  204. package/utils/errors.d.ts +11 -0
  205. package/utils/errors.d.ts.map +1 -1
  206. package/utils/errors.js +14 -0
  207. package/utils/errors.js.map +1 -1
  208. package/utils/get-project-info.d.ts +29 -0
  209. package/utils/get-project-info.d.ts.map +1 -1
  210. package/utils/get-project-info.js +176 -1
  211. package/utils/get-project-info.js.map +1 -1
  212. package/utils/icon-catalog.d.ts +33 -0
  213. package/utils/icon-catalog.d.ts.map +1 -0
  214. package/utils/icon-catalog.js +62 -0
  215. package/utils/icon-catalog.js.map +1 -0
  216. package/utils/logger.d.ts +13 -1
  217. package/utils/logger.d.ts.map +1 -1
  218. package/utils/logger.js +95 -15
  219. package/utils/logger.js.map +1 -1
  220. package/utils/package-manager.d.ts +42 -1
  221. package/utils/package-manager.d.ts.map +1 -1
  222. package/utils/package-manager.js +204 -11
  223. package/utils/package-manager.js.map +1 -1
  224. package/utils/registry.d.ts +42 -2
  225. package/utils/registry.d.ts.map +1 -1
  226. package/utils/registry.js +51 -9
  227. package/utils/registry.js.map +1 -1
  228. package/utils/schema-version.d.ts +20 -0
  229. package/utils/schema-version.d.ts.map +1 -0
  230. package/utils/schema-version.js +27 -0
  231. package/utils/schema-version.js.map +1 -0
  232. package/utils/source-file.d.ts +40 -0
  233. package/utils/source-file.d.ts.map +1 -0
  234. package/utils/source-file.js +104 -0
  235. package/utils/source-file.js.map +1 -0
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Edições de código-fonte que mais de um passo do init precisa fazer.
3
+ *
4
+ * Inserir um import parece trivial até o arquivo estar em CRLF: um `\n` cru
5
+ * gera terminações misturadas, faz o git marcar o arquivo inteiro como alterado
6
+ * e — quando a expressão que procura os imports esquece o `\r` — emenda a linha
7
+ * nova no fim da anterior.
8
+ */
9
+ /** A quebra de linha que o arquivo já usa. */
10
+ export function lineEndingOf(content) {
11
+ return content.includes('\r\n') ? '\r\n' : '\n';
12
+ }
13
+ /** O último `import ... from '...'` do arquivo, ou null se não houver nenhum. */
14
+ function lastImport(content) {
15
+ // `[\s\S]*?` em vez de `.*`: a lista de símbolos importados quebra em várias
16
+ // linhas com frequência, e um padrão preso a uma linha só não a alcançava —
17
+ // num arquivo assim o import novo era jogado para antes de todos os outros.
18
+ const importRegex = /^import\s[\s\S]*?from\s+'[^']*';\r?\n?/gm;
19
+ let last = null;
20
+ let match;
21
+ while ((match = importRegex.exec(content)) !== null)
22
+ last = match;
23
+ return last;
24
+ }
25
+ /**
26
+ * Insere uma linha de import logo depois do último import do arquivo.
27
+ *
28
+ * Devolve o conteúdo intocado quando o import já está lá, para que chamar duas
29
+ * vezes seja o mesmo que chamar uma.
30
+ */
31
+ export function withImport(content, importLine) {
32
+ if (content.includes(importLine))
33
+ return content;
34
+ const eol = lineEndingOf(content);
35
+ const last = lastImport(content);
36
+ if (!last)
37
+ return importLine + eol + content;
38
+ const end = last.index + last[0].length;
39
+ const alreadyBroken = /\r?\n$/.test(last[0]);
40
+ return content.slice(0, end) + (alreadyBroken ? '' : eol) + importLine + eol + content.slice(end);
41
+ }
42
+ /**
43
+ * O intervalo do array atribuído a `key`, achado contando colchetes.
44
+ *
45
+ * Uma expressão regular para no primeiro `]` que aparece, e em código real esse
46
+ * `]` costuma ser o de um array aninhado — `withInterceptors([...])` num
47
+ * `providers`, um plugin com opções num `plugins`. O que fosse inserido ali
48
+ * caía dentro do array errado, e o build quebrava com um erro de tipo que não
49
+ * menciona ZardUI em lugar nenhum.
50
+ *
51
+ * Strings e comentários são pulados, para que um `]` escrito dentro deles não
52
+ * conte como fechamento.
53
+ */
54
+ export function arrayRange(content, key) {
55
+ const opening = new RegExp(`\\b${key}\\s*:\\s*\\[`).exec(content);
56
+ if (!opening)
57
+ return null;
58
+ const open = opening.index + opening[0].length - 1;
59
+ let depth = 0;
60
+ for (let index = open; index < content.length; index++) {
61
+ const skipped = skipStringOrComment(content, index);
62
+ if (skipped !== index) {
63
+ index = skipped - 1;
64
+ continue;
65
+ }
66
+ const char = content[index];
67
+ if (char === '[')
68
+ depth++;
69
+ else if (char === ']' && --depth === 0) {
70
+ return { open, close: index, body: content.slice(open + 1, index) };
71
+ }
72
+ }
73
+ return null;
74
+ }
75
+ /**
76
+ * O índice logo após a string ou o comentário que começa em `index`.
77
+ *
78
+ * Devolve o próprio `index` quando não há nenhum ali — quem chama usa isso para
79
+ * saber que o caractere é código e deve ser considerado.
80
+ */
81
+ function skipStringOrComment(content, index) {
82
+ const char = content[index];
83
+ const next = content[index + 1];
84
+ if (char === '/' && next === '/') {
85
+ const end = content.indexOf('\n', index);
86
+ return end === -1 ? content.length : end;
87
+ }
88
+ if (char === '/' && next === '*') {
89
+ const end = content.indexOf('*/', index + 2);
90
+ return end === -1 ? content.length : end + 2;
91
+ }
92
+ if (char !== '"' && char !== "'" && char !== '`')
93
+ return index;
94
+ for (let cursor = index + 1; cursor < content.length; cursor++) {
95
+ if (content[cursor] === '\\') {
96
+ cursor++;
97
+ continue;
98
+ }
99
+ if (content[cursor] === char)
100
+ return cursor + 1;
101
+ }
102
+ return content.length;
103
+ }
104
+ //# sourceMappingURL=source-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-file.js","sourceRoot":"","sources":["../../src/utils/source-file.ts"],"names":[],"mappings":"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"}