zard-cli 1.0.0-beta.11 → 1.0.0-beta.111

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 (257) hide show
  1. package/README.md +39 -167
  2. package/commands/add/component-installer.d.ts +4 -1
  3. package/commands/add/component-installer.d.ts.map +1 -1
  4. package/commands/add/component-installer.js +33 -5
  5. package/commands/add/component-installer.js.map +1 -1
  6. package/commands/add/component-selector.d.ts +6 -0
  7. package/commands/add/component-selector.d.ts.map +1 -1
  8. package/commands/add/component-selector.js +9 -27
  9. package/commands/add/component-selector.js.map +1 -1
  10. package/commands/add/dark-mode-setup.d.ts +2 -0
  11. package/commands/add/dark-mode-setup.d.ts.map +1 -1
  12. package/commands/add/dark-mode-setup.js +5 -11
  13. package/commands/add/dark-mode-setup.js.map +1 -1
  14. package/commands/add/dependency-resolver.d.ts +3 -2
  15. package/commands/add/dependency-resolver.d.ts.map +1 -1
  16. package/commands/add/dependency-resolver.js +23 -9
  17. package/commands/add/dependency-resolver.js.map +1 -1
  18. package/commands/add/index.d.ts.map +1 -1
  19. package/commands/add/index.js +137 -85
  20. package/commands/add/index.js.map +1 -1
  21. package/commands/add/wizard.d.ts +31 -0
  22. package/commands/add/wizard.d.ts.map +1 -0
  23. package/commands/add/wizard.js +289 -0
  24. package/commands/add/wizard.js.map +1 -0
  25. package/commands/init/config-prompter.d.ts +61 -56
  26. package/commands/init/config-prompter.d.ts.map +1 -1
  27. package/commands/init/config-prompter.js +84 -74
  28. package/commands/init/config-prompter.js.map +1 -1
  29. package/commands/init/dependencies.d.ts +1 -8
  30. package/commands/init/dependencies.d.ts.map +1 -1
  31. package/commands/init/dependencies.js +47 -16
  32. package/commands/init/dependencies.js.map +1 -1
  33. package/commands/init/index.d.ts.map +1 -1
  34. package/commands/init/index.js +150 -86
  35. package/commands/init/index.js.map +1 -1
  36. package/commands/init/project-kind.d.ts +82 -0
  37. package/commands/init/project-kind.d.ts.map +1 -0
  38. package/commands/init/project-kind.js +166 -0
  39. package/commands/init/project-kind.js.map +1 -0
  40. package/commands/init/steps.d.ts +16 -0
  41. package/commands/init/steps.d.ts.map +1 -0
  42. package/commands/init/steps.js +153 -0
  43. package/commands/init/steps.js.map +1 -0
  44. package/commands/init/tailwind-setup.d.ts +9 -2
  45. package/commands/init/tailwind-setup.d.ts.map +1 -1
  46. package/commands/init/tailwind-setup.js +33 -9
  47. package/commands/init/tailwind-setup.js.map +1 -1
  48. package/commands/init/theme-loader.d.ts.map +1 -1
  49. package/commands/init/theme-loader.js +1 -3
  50. package/commands/init/theme-loader.js.map +1 -1
  51. package/commands/init/tsconfig-updater.d.ts +8 -1
  52. package/commands/init/tsconfig-updater.d.ts.map +1 -1
  53. package/commands/init/tsconfig-updater.js +30 -11
  54. package/commands/init/tsconfig-updater.js.map +1 -1
  55. package/commands/init/update-angular-config.d.ts.map +1 -1
  56. package/commands/init/update-angular-config.js +28 -47
  57. package/commands/init/update-angular-config.js.map +1 -1
  58. package/commands/init/vite-setup.d.ts +10 -0
  59. package/commands/init/vite-setup.d.ts.map +1 -0
  60. package/commands/init/vite-setup.js +60 -0
  61. package/commands/init/vite-setup.js.map +1 -0
  62. package/commands/init/wizard.d.ts +30 -0
  63. package/commands/init/wizard.d.ts.map +1 -0
  64. package/commands/init/wizard.js +560 -0
  65. package/commands/init/wizard.js.map +1 -0
  66. package/core/icons/families.d.ts +38 -0
  67. package/core/icons/families.d.ts.map +1 -0
  68. package/core/icons/families.js +26 -0
  69. package/core/icons/families.js.map +1 -0
  70. package/core/icons/icon-map.d.ts +24 -0
  71. package/core/icons/icon-map.d.ts.map +1 -0
  72. package/core/icons/icon-map.js +130 -0
  73. package/core/icons/icon-map.js.map +1 -0
  74. package/core/icons/index.d.ts +107 -0
  75. package/core/icons/index.d.ts.map +1 -0
  76. package/core/icons/index.js +183 -0
  77. package/core/icons/index.js.map +1 -0
  78. package/core/registry/registry-data.d.ts.map +1 -1
  79. package/core/registry/registry-data.js +571 -84
  80. package/core/registry/registry-data.js.map +1 -1
  81. package/core/themes/theme-definitions.d.ts +5 -5
  82. package/core/themes/theme-definitions.d.ts.map +1 -1
  83. package/core/themes/theme-definitions.js +65 -61
  84. package/core/themes/theme-definitions.js.map +1 -1
  85. package/index.js +40 -4
  86. package/index.js.map +1 -1
  87. package/package.json +4 -7
  88. package/ui/blocks.d.ts +70 -0
  89. package/ui/blocks.d.ts.map +1 -0
  90. package/ui/blocks.js +116 -0
  91. package/ui/blocks.js.map +1 -0
  92. package/ui/brand.d.ts +14 -0
  93. package/ui/brand.d.ts.map +1 -0
  94. package/ui/brand.js +35 -0
  95. package/ui/brand.js.map +1 -0
  96. package/ui/engine/animation/index.d.ts +39 -0
  97. package/ui/engine/animation/index.d.ts.map +1 -0
  98. package/ui/engine/animation/index.js +103 -0
  99. package/ui/engine/animation/index.js.map +1 -0
  100. package/ui/engine/ansi/index.d.ts +52 -0
  101. package/ui/engine/ansi/index.d.ts.map +1 -0
  102. package/ui/engine/ansi/index.js +117 -0
  103. package/ui/engine/ansi/index.js.map +1 -0
  104. package/ui/engine/components/index.d.ts +211 -0
  105. package/ui/engine/components/index.d.ts.map +1 -0
  106. package/ui/engine/components/index.js +109 -0
  107. package/ui/engine/components/index.js.map +1 -0
  108. package/ui/engine/cursor/index.d.ts +17 -0
  109. package/ui/engine/cursor/index.d.ts.map +1 -0
  110. package/ui/engine/cursor/index.js +41 -0
  111. package/ui/engine/cursor/index.js.map +1 -0
  112. package/ui/engine/diff/index.d.ts +27 -0
  113. package/ui/engine/diff/index.d.ts.map +1 -0
  114. package/ui/engine/diff/index.js +57 -0
  115. package/ui/engine/diff/index.js.map +1 -0
  116. package/ui/engine/events/index.d.ts +24 -0
  117. package/ui/engine/events/index.d.ts.map +1 -0
  118. package/ui/engine/events/index.js +60 -0
  119. package/ui/engine/events/index.js.map +1 -0
  120. package/ui/engine/focus/index.d.ts +25 -0
  121. package/ui/engine/focus/index.d.ts.map +1 -0
  122. package/ui/engine/focus/index.js +77 -0
  123. package/ui/engine/focus/index.js.map +1 -0
  124. package/ui/engine/frame/index.d.ts +48 -0
  125. package/ui/engine/frame/index.d.ts.map +1 -0
  126. package/ui/engine/frame/index.js +0 -0
  127. package/ui/engine/frame/index.js.map +1 -0
  128. package/ui/engine/index.d.ts +28 -0
  129. package/ui/engine/index.d.ts.map +1 -0
  130. package/ui/engine/index.js +28 -0
  131. package/ui/engine/index.js.map +1 -0
  132. package/ui/engine/input/index.d.ts +36 -0
  133. package/ui/engine/input/index.d.ts.map +1 -0
  134. package/ui/engine/input/index.js +224 -0
  135. package/ui/engine/input/index.js.map +1 -0
  136. package/ui/engine/layout/index.d.ts +42 -0
  137. package/ui/engine/layout/index.d.ts.map +1 -0
  138. package/ui/engine/layout/index.js +241 -0
  139. package/ui/engine/layout/index.js.map +1 -0
  140. package/ui/engine/renderer/index.d.ts +43 -0
  141. package/ui/engine/renderer/index.d.ts.map +1 -0
  142. package/ui/engine/renderer/index.js +619 -0
  143. package/ui/engine/renderer/index.js.map +1 -0
  144. package/ui/engine/scheduler/index.d.ts +22 -0
  145. package/ui/engine/scheduler/index.d.ts.map +1 -0
  146. package/ui/engine/scheduler/index.js +77 -0
  147. package/ui/engine/scheduler/index.js.map +1 -0
  148. package/ui/engine/screen/index.d.ts +39 -0
  149. package/ui/engine/screen/index.d.ts.map +1 -0
  150. package/ui/engine/screen/index.js +255 -0
  151. package/ui/engine/screen/index.js.map +1 -0
  152. package/ui/engine/terminal/index.d.ts +84 -0
  153. package/ui/engine/terminal/index.d.ts.map +1 -0
  154. package/ui/engine/terminal/index.js +235 -0
  155. package/ui/engine/terminal/index.js.map +1 -0
  156. package/ui/engine/testing/index.d.ts +27 -0
  157. package/ui/engine/testing/index.d.ts.map +1 -0
  158. package/ui/engine/testing/index.js +63 -0
  159. package/ui/engine/testing/index.js.map +1 -0
  160. package/ui/engine/theme/index.d.ts +27 -0
  161. package/ui/engine/theme/index.d.ts.map +1 -0
  162. package/ui/engine/theme/index.js +129 -0
  163. package/ui/engine/theme/index.js.map +1 -0
  164. package/ui/engine/utils/index.d.ts +12 -0
  165. package/ui/engine/utils/index.d.ts.map +1 -0
  166. package/ui/engine/utils/index.js +143 -0
  167. package/ui/engine/utils/index.js.map +1 -0
  168. package/ui/gate.d.ts +19 -0
  169. package/ui/gate.d.ts.map +1 -0
  170. package/ui/gate.js +36 -0
  171. package/ui/gate.js.map +1 -0
  172. package/ui/index.d.ts +18 -0
  173. package/ui/index.d.ts.map +1 -0
  174. package/ui/index.js +18 -0
  175. package/ui/index.js.map +1 -0
  176. package/ui/log-sink.d.ts +24 -0
  177. package/ui/log-sink.d.ts.map +1 -0
  178. package/ui/log-sink.js +35 -0
  179. package/ui/log-sink.js.map +1 -0
  180. package/ui/output.d.ts +14 -0
  181. package/ui/output.d.ts.map +1 -0
  182. package/ui/output.js +28 -0
  183. package/ui/output.js.map +1 -0
  184. package/ui/report.d.ts +30 -0
  185. package/ui/report.d.ts.map +1 -0
  186. package/ui/report.js +45 -0
  187. package/ui/report.js.map +1 -0
  188. package/ui/runner.d.ts +66 -0
  189. package/ui/runner.d.ts.map +1 -0
  190. package/ui/runner.js +135 -0
  191. package/ui/runner.js.map +1 -0
  192. package/ui/style.d.ts +24 -0
  193. package/ui/style.d.ts.map +1 -0
  194. package/ui/style.js +44 -0
  195. package/ui/style.js.map +1 -0
  196. package/ui/testing/fake-tty.d.ts +26 -0
  197. package/ui/testing/fake-tty.d.ts.map +1 -0
  198. package/ui/testing/fake-tty.js +61 -0
  199. package/ui/testing/fake-tty.js.map +1 -0
  200. package/ui/text-input.d.ts +30 -0
  201. package/ui/text-input.d.ts.map +1 -0
  202. package/ui/text-input.js +87 -0
  203. package/ui/text-input.js.map +1 -0
  204. package/ui/theme.d.ts +10 -0
  205. package/ui/theme.d.ts.map +1 -0
  206. package/ui/theme.js +20 -0
  207. package/ui/theme.js.map +1 -0
  208. package/utils/config.d.ts +52 -69
  209. package/utils/config.d.ts.map +1 -1
  210. package/utils/config.js +58 -7
  211. package/utils/config.js.map +1 -1
  212. package/utils/errors.d.ts +27 -0
  213. package/utils/errors.d.ts.map +1 -0
  214. package/utils/errors.js +45 -0
  215. package/utils/errors.js.map +1 -0
  216. package/utils/get-package-info.js +4 -4
  217. package/utils/get-package-info.js.map +1 -1
  218. package/utils/get-project-info.d.ts +30 -0
  219. package/utils/get-project-info.d.ts.map +1 -1
  220. package/utils/get-project-info.js +195 -6
  221. package/utils/get-project-info.js.map +1 -1
  222. package/utils/http-client.d.ts +8 -0
  223. package/utils/http-client.d.ts.map +1 -0
  224. package/utils/http-client.js +68 -0
  225. package/utils/http-client.js.map +1 -0
  226. package/utils/icon-catalog.d.ts +33 -0
  227. package/utils/icon-catalog.d.ts.map +1 -0
  228. package/utils/icon-catalog.js +62 -0
  229. package/utils/icon-catalog.js.map +1 -0
  230. package/utils/logger.d.ts +16 -1
  231. package/utils/logger.d.ts.map +1 -1
  232. package/utils/logger.js +104 -12
  233. package/utils/logger.js.map +1 -1
  234. package/utils/package-manager.d.ts +44 -1
  235. package/utils/package-manager.d.ts.map +1 -1
  236. package/utils/package-manager.js +210 -14
  237. package/utils/package-manager.js.map +1 -1
  238. package/utils/registry.d.ts +44 -2
  239. package/utils/registry.d.ts.map +1 -1
  240. package/utils/registry.js +82 -27
  241. package/utils/registry.js.map +1 -1
  242. package/utils/schema-version.d.ts +20 -0
  243. package/utils/schema-version.d.ts.map +1 -0
  244. package/utils/schema-version.js +27 -0
  245. package/utils/schema-version.js.map +1 -0
  246. package/utils/source-file.d.ts +40 -0
  247. package/utils/source-file.d.ts.map +1 -0
  248. package/utils/source-file.js +104 -0
  249. package/utils/source-file.js.map +1 -0
  250. package/utils/theme-selector.d.ts +1 -1
  251. package/utils/theme-selector.d.ts.map +1 -1
  252. package/utils/theme-selector.js +6 -6
  253. package/utils/theme-selector.js.map +1 -1
  254. package/utils/fetch-component.d.ts +0 -3
  255. package/utils/fetch-component.d.ts.map +0 -1
  256. package/utils/fetch-component.js +0 -75
  257. package/utils/fetch-component.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"families.js","sourceRoot":"","sources":["../../../src/core/icons/families.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAuBH,MAAM,CAAC,MAAM,aAAa,GAAmC;IAC3D,MAAM,EAAE;QACN,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE,kBAAkB;QAC3B,MAAM,EAAE,QAAQ;KACjB;CACF,CAAC;AAEF,qFAAqF;AACrF,MAAM,CAAC,MAAM,kBAAkB,GAAe,QAAQ,CAAC;AAEvD,sEAAsE;AACtE,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * The translation table between icon sets.
3
+ *
4
+ * Each row is an icon by what it MEANS — `check`, `chevron-down` — and the
5
+ * value is the symbol each set exports for it. Only the `lucide` column exists
6
+ * today, the one set the library supports; supporting another one means filling
7
+ * in its column, and nothing else along the install path changes.
8
+ *
9
+ * This is the copy bundled with the CLI. It is published at
10
+ * `<registry>/icons.json`, and that is where the CLI reads it from at run time
11
+ * — the file here is what holds when the registry does not answer, and the
12
+ * floor the published table is generated from.
13
+ *
14
+ * The list covers every icon the components and demos use today. A new icon in
15
+ * the code with no row here is an error: `icons.spec.ts` compares this table
16
+ * against what `libs/zard` actually imports.
17
+ *
18
+ * The tokens come from the lucide name in kebab-case because that already is
19
+ * the icon's semantic name (`lucideChevronDown` → `chevron-down`) — the key
20
+ * belongs to the table, not to the set, and stays valid once lucide is no
21
+ * longer the only column.
22
+ */
23
+ export declare const ICON_MAP: Record<string, Record<string, string>>;
24
+ //# sourceMappingURL=icon-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-map.d.ts","sourceRoot":"","sources":["../../../src/core/icons/icon-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA0G3D,CAAC"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * The translation table between icon sets.
3
+ *
4
+ * Each row is an icon by what it MEANS — `check`, `chevron-down` — and the
5
+ * value is the symbol each set exports for it. Only the `lucide` column exists
6
+ * today, the one set the library supports; supporting another one means filling
7
+ * in its column, and nothing else along the install path changes.
8
+ *
9
+ * This is the copy bundled with the CLI. It is published at
10
+ * `<registry>/icons.json`, and that is where the CLI reads it from at run time
11
+ * — the file here is what holds when the registry does not answer, and the
12
+ * floor the published table is generated from.
13
+ *
14
+ * The list covers every icon the components and demos use today. A new icon in
15
+ * the code with no row here is an error: `icons.spec.ts` compares this table
16
+ * against what `libs/zard` actually imports.
17
+ *
18
+ * The tokens come from the lucide name in kebab-case because that already is
19
+ * the icon's semantic name (`lucideChevronDown` → `chevron-down`) — the key
20
+ * belongs to the table, not to the set, and stays valid once lucide is no
21
+ * longer the only column.
22
+ */
23
+ export const ICON_MAP = {
24
+ 'alert-triangle': { lucide: 'lucideAlertTriangle' },
25
+ 'app-window': { lucide: 'lucideAppWindow' },
26
+ archive: { lucide: 'lucideArchive' },
27
+ 'arrow-left': { lucide: 'lucideArrowLeft' },
28
+ 'arrow-right': { lucide: 'lucideArrowRight' },
29
+ 'arrow-up': { lucide: 'lucideArrowUp' },
30
+ 'arrow-up-right': { lucide: 'lucideArrowUpRight' },
31
+ 'audio-lines': { lucide: 'lucideAudioLines' },
32
+ 'badge-check': { lucide: 'lucideBadgeCheck' },
33
+ bell: { lucide: 'lucideBell' },
34
+ bluetooth: { lucide: 'lucideBluetooth' },
35
+ bold: { lucide: 'lucideBold' },
36
+ bookmark: { lucide: 'lucideBookmark' },
37
+ bot: { lucide: 'lucideBot' },
38
+ calculator: { lucide: 'lucideCalculator' },
39
+ calendar: { lucide: 'lucideCalendar' },
40
+ 'calendar-plus': { lucide: 'lucideCalendarPlus' },
41
+ check: { lucide: 'lucideCheck' },
42
+ 'chevron-down': { lucide: 'lucideChevronDown' },
43
+ 'chevron-left': { lucide: 'lucideChevronLeft' },
44
+ 'chevron-right': { lucide: 'lucideChevronRight' },
45
+ 'chevron-up': { lucide: 'lucideChevronUp' },
46
+ 'chevrons-up-down': { lucide: 'lucideChevronsUpDown' },
47
+ 'circle-alert': { lucide: 'lucideCircleAlert' },
48
+ 'circle-check': { lucide: 'lucideCircleCheck' },
49
+ 'circle-dashed': { lucide: 'lucideCircleDashed' },
50
+ 'circle-fading-arrow-up': { lucide: 'lucideCircleFadingArrowUp' },
51
+ 'circle-fading-plus': { lucide: 'lucideCircleFadingPlus' },
52
+ 'circle-help': { lucide: 'lucideCircleHelp' },
53
+ 'circle-small': { lucide: 'lucideCircleSmall' },
54
+ 'clipboard-paste': { lucide: 'lucideClipboardPaste' },
55
+ clock: { lucide: 'lucideClock' },
56
+ 'clock-2': { lucide: 'lucideClock2' },
57
+ cloud: { lucide: 'lucideCloud' },
58
+ code: { lucide: 'lucideCode' },
59
+ copy: { lucide: 'lucideCopy' },
60
+ 'corner-down-left': { lucide: 'lucideCornerDownLeft' },
61
+ 'credit-card': { lucide: 'lucideCreditCard' },
62
+ dot: { lucide: 'lucideDot' },
63
+ ellipsis: { lucide: 'lucideEllipsis' },
64
+ 'external-link': { lucide: 'lucideExternalLink' },
65
+ 'eye-off': { lucide: 'lucideEyeOff' },
66
+ file: { lucide: 'lucideFile' },
67
+ 'file-code': { lucide: 'lucideFileCode' },
68
+ 'file-code-2': { lucide: 'lucideFileCode2' },
69
+ 'file-text': { lucide: 'lucideFileText' },
70
+ folder: { lucide: 'lucideFolder' },
71
+ 'folder-code': { lucide: 'lucideFolderCode' },
72
+ 'folder-plus': { lucide: 'lucideFolderPlus' },
73
+ footprints: { lucide: 'lucideFootprints' },
74
+ 'git-branch': { lucide: 'lucideGitBranch' },
75
+ globe: { lucide: 'lucideGlobe' },
76
+ house: { lucide: 'lucideHouse' },
77
+ image: { lucide: 'lucideImage' },
78
+ inbox: { lucide: 'lucideInbox' },
79
+ info: { lucide: 'lucideInfo' },
80
+ italic: { lucide: 'lucideItalic' },
81
+ keyboard: { lucide: 'lucideKeyboard' },
82
+ layers: { lucide: 'lucideLayers' },
83
+ 'layout-grid': { lucide: 'lucideLayoutGrid' },
84
+ lightbulb: { lucide: 'lucideLightbulb' },
85
+ 'lightbulb-off': { lucide: 'lucideLightbulbOff' },
86
+ list: { lucide: 'lucideList' },
87
+ 'list-filter': { lucide: 'lucideListFilter' },
88
+ 'list-filter-plus': { lucide: 'lucideListFilterPlus' },
89
+ loader: { lucide: 'lucideLoader' },
90
+ 'loader-2': { lucide: 'lucideLoader2' },
91
+ 'loader-circle': { lucide: 'lucideLoaderCircle' },
92
+ 'log-out': { lucide: 'lucideLogOut' },
93
+ mail: { lucide: 'lucideMail' },
94
+ 'mail-check': { lucide: 'lucideMailCheck' },
95
+ minus: { lucide: 'lucideMinus' },
96
+ monitor: { lucide: 'lucideMonitor' },
97
+ 'octagon-x': { lucide: 'lucideOctagonX' },
98
+ 'panel-left': { lucide: 'lucidePanelLeft' },
99
+ pencil: { lucide: 'lucidePencil' },
100
+ plus: { lucide: 'lucidePlus' },
101
+ 'refresh-ccw': { lucide: 'lucideRefreshCcw' },
102
+ 'refresh-cw': { lucide: 'lucideRefreshCw' },
103
+ save: { lucide: 'lucideSave' },
104
+ scissors: { lucide: 'lucideScissors' },
105
+ search: { lucide: 'lucideSearch' },
106
+ settings: { lucide: 'lucideSettings' },
107
+ share: { lucide: 'lucideShare' },
108
+ 'shield-alert': { lucide: 'lucideShieldAlert' },
109
+ smartphone: { lucide: 'lucideSmartphone' },
110
+ smile: { lucide: 'lucideSmile' },
111
+ star: { lucide: 'lucideStar' },
112
+ sun: { lucide: 'lucideSun' },
113
+ tablet: { lucide: 'lucideTablet' },
114
+ tag: { lucide: 'lucideTag' },
115
+ terminal: { lucide: 'lucideTerminal' },
116
+ trash: { lucide: 'lucideTrash' },
117
+ 'trash-2': { lucide: 'lucideTrash2' },
118
+ 'trending-up': { lucide: 'lucideTrendingUp' },
119
+ 'triangle-alert': { lucide: 'lucideTriangleAlert' },
120
+ underline: { lucide: 'lucideUnderline' },
121
+ user: { lucide: 'lucideUser' },
122
+ 'user-round-x': { lucide: 'lucideUserRoundX' },
123
+ users: { lucide: 'lucideUsers' },
124
+ 'volume-off': { lucide: 'lucideVolumeOff' },
125
+ waves: { lucide: 'lucideWaves' },
126
+ x: { lucide: 'lucideX' },
127
+ 'zoom-in': { lucide: 'lucideZoomIn' },
128
+ 'zoom-out': { lucide: 'lucideZoomOut' },
129
+ };
130
+ //# sourceMappingURL=icon-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-map.js","sourceRoot":"","sources":["../../../src/core/icons/icon-map.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Ícones — o que os componentes desenham e como isso muda de família.
3
+ *
4
+ * Tudo aqui opera sobre um catálogo: o par (famílias declaradas, tabela de
5
+ * tradução). O catálogo local é a cópia embutida; o que vale em execução vem de
6
+ * `<registry>/icons.json`. É essa indireção que faz "suportar material" ser
7
+ * publicar uma coluna nova no registry, sem release da CLI e sem caçar `lucide`
8
+ * pelo código.
9
+ *
10
+ * `extractIcons` lê de um fonte quais ícones ele usa (o registry publica isso)
11
+ * `retargetIcons` reescreve um fonte de uma família para outra (a instalação usa)
12
+ * `iconPackagesFor` diz que pacotes o projeto precisa ter (o init usa)
13
+ */
14
+ import { type IconFamily, type IconFamilyInfo } from './families.js';
15
+ export { ICON_CORE_PACKAGE, ICON_FAMILIES, SOURCE_ICON_FAMILY, type IconFamily, type IconFamilyInfo, } from './families.js';
16
+ export { ICON_MAP } from './icon-map.js';
17
+ /** Um ícone pelo que ele significa: `check`, `chevron-down`. */
18
+ export type IconToken = string;
19
+ /**
20
+ * As famílias declaradas e a tabela que traduz entre elas.
21
+ *
22
+ * `icons` é indexado por token e depois por família — a mesma forma do
23
+ * `icon-map.ts`, que é a cópia local deste mesmo dado.
24
+ */
25
+ export interface IconCatalog {
26
+ readonly families: Readonly<Record<string, IconFamilyInfo>>;
27
+ readonly icons: Readonly<Record<string, Readonly<Record<string, string>>>>;
28
+ }
29
+ /** O catálogo embutido na CLI — vale quando o registry não responde. */
30
+ export declare const LOCAL_ICON_CATALOG: IconCatalog;
31
+ /** Uma lista de ícones nas duas formas: como o código os escreve e como a tabela os chama. */
32
+ export interface IconList {
33
+ /** Os símbolos como aparecem no código (`lucideCheck`). */
34
+ readonly symbols: string[];
35
+ /** Os mesmos ícones pela chave neutra da tabela (`check`). */
36
+ readonly tokens: IconToken[];
37
+ }
38
+ /**
39
+ * Os ícones de um componente, do jeito que o registry os publica.
40
+ *
41
+ * As duas listas são separadas porque servem a coisas diferentes: `symbols` e
42
+ * `tokens` são o que o `add` grava no projeto — é deles que sai a dependência
43
+ * do ng-icons —, enquanto `demos` são os ícones que só aparecem nos exemplos da
44
+ * documentação. Um componente pode não desenhar ícone nenhum e ainda assim ter
45
+ * demos cheios deles, e trocar de família precisa alcançar os dois.
46
+ */
47
+ export interface ComponentIcons extends IconList {
48
+ /** A família em que os arquivos publicados estão escritos. */
49
+ readonly family: IconFamily;
50
+ readonly demos: IconList;
51
+ }
52
+ export declare function iconFamilies(catalog?: IconCatalog): string[];
53
+ export declare function isIconFamily(value: string, catalog?: IconCatalog): boolean;
54
+ export declare function iconFamily(family: IconFamily, catalog?: IconCatalog): IconFamilyInfo | undefined;
55
+ /** Os pacotes npm que um projeto configurado com essa família precisa ter. */
56
+ export declare function iconPackagesFor(family: IconFamily, catalog?: IconCatalog): string[];
57
+ export declare function tokenFor(symbol: string, family?: IconFamily, catalog?: IconCatalog): IconToken | undefined;
58
+ export declare function symbolFor(token: IconToken, family: IconFamily, catalog?: IconCatalog): string | undefined;
59
+ /** Os tokens que ainda não têm símbolo declarado nessa família. */
60
+ export declare function missingTokensFor(family: IconFamily, catalog?: IconCatalog): IconToken[];
61
+ /**
62
+ * Os símbolos de ícone que um fonte importa.
63
+ *
64
+ * Só o import conta. Um `name="lucideCheck"` solto no template não desenha nada
65
+ * sem o `provideIcons` correspondente, então o import é ao mesmo tempo a lista
66
+ * completa e a lista sem falsos positivos — `@ng-icons/core` (NgIcon,
67
+ * provideIcons, IconName) fica de fora porque não é família nenhuma.
68
+ */
69
+ export declare function extractIcons(source: string, family?: IconFamily, catalog?: IconCatalog): string[];
70
+ /** Os ícones de um conjunto de arquivos, nas duas formas. */
71
+ export declare function listIcons(sources: readonly string[], family?: IconFamily, catalog?: IconCatalog): IconList;
72
+ /**
73
+ * O mapeamento de ícones de um componente, pronto para ir ao registry.
74
+ *
75
+ * Sai preenchido mesmo quando não há ícone nenhum: o campo estar sempre presente
76
+ * é o que distingue "este componente não desenha ícones" de "este registry foi
77
+ * publicado antes do mapeamento existir", e quem lê não precisa adivinhar qual
78
+ * dos dois é.
79
+ */
80
+ export declare function collectIcons(files: readonly string[], demos?: readonly string[], family?: IconFamily, catalog?: IconCatalog): ComponentIcons;
81
+ export interface RetargetResult {
82
+ readonly content: string;
83
+ /** Símbolos que a família de destino não declara — ficaram como estavam. */
84
+ readonly missing: string[];
85
+ }
86
+ /**
87
+ * Reescreve um fonte de uma família de ícones para outra.
88
+ *
89
+ * São duas trocas: o pacote de onde os símbolos vêm e cada símbolo em si. O
90
+ * símbolo é substituído em qualquer lugar em que apareça — o import, o
91
+ * `provideIcons({ lucideCheck })` e o `name="lucideCheck"` do template são a
92
+ * mesma palavra, e o shorthand do objeto continua válido depois da troca.
93
+ *
94
+ * Um símbolo sem equivalente na família de destino não é inventado: fica como
95
+ * está e sai em `missing`, para quem chamou avisar em vez de gravar um import
96
+ * que não resolve.
97
+ */
98
+ export declare function retargetIcons(source: string, from: IconFamily, to: IconFamily, catalog?: IconCatalog): RetargetResult;
99
+ /**
100
+ * A parte mecânica da troca, separada de quem decide o quê trocar.
101
+ *
102
+ * Fica exposta porque é onde os erros de reescrita moram — a substituição por
103
+ * palavra inteira e a ordem da alternância — e porque testá-la não depende de
104
+ * existir mais de uma família declarada.
105
+ */
106
+ export declare function rewriteIcons(source: string, fromPackage: string, toPackage: string, replacements: ReadonlyMap<string, string>): string;
107
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/icons/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Ícones — o que os componentes desenham e como isso muda de família.
3
+ *
4
+ * Tudo aqui opera sobre um catálogo: o par (famílias declaradas, tabela de
5
+ * tradução). O catálogo local é a cópia embutida; o que vale em execução vem de
6
+ * `<registry>/icons.json`. É essa indireção que faz "suportar material" ser
7
+ * publicar uma coluna nova no registry, sem release da CLI e sem caçar `lucide`
8
+ * pelo código.
9
+ *
10
+ * `extractIcons` lê de um fonte quais ícones ele usa (o registry publica isso)
11
+ * `retargetIcons` reescreve um fonte de uma família para outra (a instalação usa)
12
+ * `iconPackagesFor` diz que pacotes o projeto precisa ter (o init usa)
13
+ */
14
+ import { ICON_CORE_PACKAGE, ICON_FAMILIES, SOURCE_ICON_FAMILY, } from './families.js';
15
+ import { ICON_MAP } from './icon-map.js';
16
+ export { ICON_CORE_PACKAGE, ICON_FAMILIES, SOURCE_ICON_FAMILY, } from './families.js';
17
+ export { ICON_MAP } from './icon-map.js';
18
+ /** O catálogo embutido na CLI — vale quando o registry não responde. */
19
+ export const LOCAL_ICON_CATALOG = { families: ICON_FAMILIES, icons: ICON_MAP };
20
+ /**
21
+ * Índice reverso símbolo → token, montado por catálogo e memorizado.
22
+ *
23
+ * O catálogo remoto é um objeto só, buscado uma vez por execução, então a chave
24
+ * fraca basta e o índice não é remontado a cada arquivo instalado.
25
+ */
26
+ const reverseIndexes = new WeakMap();
27
+ function reverseIndex(catalog, family) {
28
+ let byFamily = reverseIndexes.get(catalog);
29
+ if (!byFamily) {
30
+ byFamily = new Map();
31
+ for (const [token, symbols] of Object.entries(catalog.icons)) {
32
+ for (const [name, symbol] of Object.entries(symbols)) {
33
+ const index = byFamily.get(name) ?? new Map();
34
+ index.set(symbol, token);
35
+ byFamily.set(name, index);
36
+ }
37
+ }
38
+ reverseIndexes.set(catalog, byFamily);
39
+ }
40
+ return byFamily.get(family) ?? new Map();
41
+ }
42
+ export function iconFamilies(catalog = LOCAL_ICON_CATALOG) {
43
+ return Object.keys(catalog.families).sort();
44
+ }
45
+ export function isIconFamily(value, catalog = LOCAL_ICON_CATALOG) {
46
+ return Object.prototype.hasOwnProperty.call(catalog.families, value);
47
+ }
48
+ export function iconFamily(family, catalog = LOCAL_ICON_CATALOG) {
49
+ return catalog.families[family];
50
+ }
51
+ /** Os pacotes npm que um projeto configurado com essa família precisa ter. */
52
+ export function iconPackagesFor(family, catalog = LOCAL_ICON_CATALOG) {
53
+ const info = iconFamily(family, catalog);
54
+ return info ? [ICON_CORE_PACKAGE, info.package] : [ICON_CORE_PACKAGE];
55
+ }
56
+ export function tokenFor(symbol, family = SOURCE_ICON_FAMILY, catalog = LOCAL_ICON_CATALOG) {
57
+ return reverseIndex(catalog, family).get(symbol);
58
+ }
59
+ export function symbolFor(token, family, catalog = LOCAL_ICON_CATALOG) {
60
+ return catalog.icons[token]?.[family];
61
+ }
62
+ /** Os tokens que ainda não têm símbolo declarado nessa família. */
63
+ export function missingTokensFor(family, catalog = LOCAL_ICON_CATALOG) {
64
+ return Object.keys(catalog.icons).filter(token => symbolFor(token, family, catalog) === undefined);
65
+ }
66
+ /**
67
+ * `import { lucideCheck, lucideX } from '@ng-icons/lucide'` — em uma linha ou em
68
+ * várias, com `type` na frente ou apelidado. O que interessa é o pacote (que dá
69
+ * a família) e os nomes importados dele.
70
+ */
71
+ const ICON_IMPORT = /import\s*(?:type\s+)?\{([^}]*)\}\s*from\s*['"]@ng-icons\/([a-z0-9-]+)['"]/g;
72
+ function familyByPackageSuffix(suffix, catalog) {
73
+ return Object.keys(catalog.families).find(name => catalog.families[name]?.package === `@ng-icons/${suffix}`);
74
+ }
75
+ /**
76
+ * Os símbolos de ícone que um fonte importa.
77
+ *
78
+ * Só o import conta. Um `name="lucideCheck"` solto no template não desenha nada
79
+ * sem o `provideIcons` correspondente, então o import é ao mesmo tempo a lista
80
+ * completa e a lista sem falsos positivos — `@ng-icons/core` (NgIcon,
81
+ * provideIcons, IconName) fica de fora porque não é família nenhuma.
82
+ */
83
+ export function extractIcons(source, family = SOURCE_ICON_FAMILY, catalog = LOCAL_ICON_CATALOG) {
84
+ const found = new Set();
85
+ for (const match of source.matchAll(ICON_IMPORT)) {
86
+ if (familyByPackageSuffix(match[2] ?? '', catalog) !== family)
87
+ continue;
88
+ for (const specifier of (match[1] ?? '').split(',')) {
89
+ // `type Foo`, `Foo as Bar` — o símbolo do pacote é sempre o primeiro nome.
90
+ const name = specifier
91
+ .trim()
92
+ .replace(/^type\s+/, '')
93
+ .split(/\s+as\s+/)[0]
94
+ ?.trim();
95
+ if (name)
96
+ found.add(name);
97
+ }
98
+ }
99
+ return [...found].sort();
100
+ }
101
+ /** Os ícones de um conjunto de arquivos, nas duas formas. */
102
+ export function listIcons(sources, family = SOURCE_ICON_FAMILY, catalog = LOCAL_ICON_CATALOG) {
103
+ const symbols = new Set();
104
+ for (const source of sources) {
105
+ for (const symbol of extractIcons(source, family, catalog))
106
+ symbols.add(symbol);
107
+ }
108
+ const sorted = [...symbols].sort();
109
+ return {
110
+ symbols: sorted,
111
+ tokens: sorted
112
+ .map(symbol => tokenFor(symbol, family, catalog))
113
+ .filter((token) => token !== undefined),
114
+ };
115
+ }
116
+ /**
117
+ * O mapeamento de ícones de um componente, pronto para ir ao registry.
118
+ *
119
+ * Sai preenchido mesmo quando não há ícone nenhum: o campo estar sempre presente
120
+ * é o que distingue "este componente não desenha ícones" de "este registry foi
121
+ * publicado antes do mapeamento existir", e quem lê não precisa adivinhar qual
122
+ * dos dois é.
123
+ */
124
+ export function collectIcons(files, demos = [], family = SOURCE_ICON_FAMILY, catalog = LOCAL_ICON_CATALOG) {
125
+ return {
126
+ family,
127
+ ...listIcons(files, family, catalog),
128
+ demos: listIcons(demos, family, catalog),
129
+ };
130
+ }
131
+ /**
132
+ * Reescreve um fonte de uma família de ícones para outra.
133
+ *
134
+ * São duas trocas: o pacote de onde os símbolos vêm e cada símbolo em si. O
135
+ * símbolo é substituído em qualquer lugar em que apareça — o import, o
136
+ * `provideIcons({ lucideCheck })` e o `name="lucideCheck"` do template são a
137
+ * mesma palavra, e o shorthand do objeto continua válido depois da troca.
138
+ *
139
+ * Um símbolo sem equivalente na família de destino não é inventado: fica como
140
+ * está e sai em `missing`, para quem chamou avisar em vez de gravar um import
141
+ * que não resolve.
142
+ */
143
+ export function retargetIcons(source, from, to, catalog = LOCAL_ICON_CATALOG) {
144
+ const origin = iconFamily(from, catalog);
145
+ const target = iconFamily(to, catalog);
146
+ if (from === to || !origin || !target)
147
+ return { content: source, missing: [] };
148
+ const missing = [];
149
+ const replacements = new Map();
150
+ for (const symbol of extractIcons(source, from, catalog)) {
151
+ const token = tokenFor(symbol, from, catalog);
152
+ const replacement = token !== undefined ? symbolFor(token, to, catalog) : undefined;
153
+ if (replacement === undefined)
154
+ missing.push(symbol);
155
+ else
156
+ replacements.set(symbol, replacement);
157
+ }
158
+ if (replacements.size === 0)
159
+ return { content: source, missing };
160
+ return { content: rewriteIcons(source, origin.package, target.package, replacements), missing };
161
+ }
162
+ /**
163
+ * A parte mecânica da troca, separada de quem decide o quê trocar.
164
+ *
165
+ * Fica exposta porque é onde os erros de reescrita moram — a substituição por
166
+ * palavra inteira e a ordem da alternância — e porque testá-la não depende de
167
+ * existir mais de uma família declarada.
168
+ */
169
+ export function rewriteIcons(source, fromPackage, toPackage, replacements) {
170
+ if (replacements.size === 0)
171
+ return source;
172
+ // A alternância é testada na ordem escrita, então os nomes longos vêm antes:
173
+ // com `lucideClock` na frente, `lucideClock2` seria examinado a partir do
174
+ // prefixo, e é o `\b` do fim que decide — mais barato não depender disso.
175
+ const pattern = new RegExp(`\\b(${[...replacements.keys()].sort((a, b) => b.length - a.length).join('|')})\\b`, 'g');
176
+ return source
177
+ .replace(new RegExp(`(['"])${escapeRegExp(fromPackage)}\\1`, 'g'), (_match, quote) => `${quote}${toPackage}${quote}`)
178
+ .replace(pattern, symbol => replacements.get(symbol) ?? symbol);
179
+ }
180
+ function escapeRegExp(value) {
181
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
182
+ }
183
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/icons/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,kBAAkB,GAGnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,kBAAkB,GAGnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAgBzC,wEAAwE;AACxE,MAAM,CAAC,MAAM,kBAAkB,GAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAyB5F;;;;;GAKG;AACH,MAAM,cAAc,GAAG,IAAI,OAAO,EAAoD,CAAC;AAEvF,SAAS,YAAY,CAAC,OAAoB,EAAE,MAAkB;IAC5D,IAAI,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAE3C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QAErB,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7D,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAqB,CAAC;gBACjE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACzB,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,UAAuB,kBAAkB;IACpE,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,UAAuB,kBAAkB;IACnF,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAkB,EAAE,UAAuB,kBAAkB;IACtF,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,eAAe,CAAC,MAAkB,EAAE,UAAuB,kBAAkB;IAC3F,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,MAAc,EACd,SAAqB,kBAAkB,EACvC,UAAuB,kBAAkB;IAEzC,OAAO,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,KAAgB,EAChB,MAAkB,EAClB,UAAuB,kBAAkB;IAEzC,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,gBAAgB,CAAC,MAAkB,EAAE,UAAuB,kBAAkB;IAC5F,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC;AACrG,CAAC;AAED;;;;GAIG;AACH,MAAM,WAAW,GAAG,4EAA4E,CAAC;AAEjG,SAAS,qBAAqB,CAAC,MAAc,EAAE,OAAoB;IACjE,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,aAAa,MAAM,EAAE,CAAC,CAAC;AAC/G,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAc,EACd,SAAqB,kBAAkB,EACvC,UAAuB,kBAAkB;IAEzC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACjD,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,KAAK,MAAM;YAAE,SAAS;QAExE,KAAK,MAAM,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACpD,2EAA2E;YAC3E,MAAM,IAAI,GAAG,SAAS;iBACnB,IAAI,EAAE;iBACN,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;iBACvB,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACrB,EAAE,IAAI,EAAE,CAAC;YACX,IAAI,IAAI;gBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,SAAS,CACvB,OAA0B,EAC1B,SAAqB,kBAAkB,EACvC,UAAuB,kBAAkB;IAEzC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,MAAM,MAAM,IAAI,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAEnC,OAAO;QACL,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,MAAM;aACX,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;aAChD,MAAM,CAAC,CAAC,KAAK,EAAsB,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;KAC9D,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAwB,EACxB,QAA2B,EAAE,EAC7B,SAAqB,kBAAkB,EACvC,UAAuB,kBAAkB;IAEzC,OAAO;QACL,MAAM;QACN,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;QACpC,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;KACzC,CAAC;AACJ,CAAC;AAQD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAc,EACd,IAAgB,EAChB,EAAc,EACd,UAAuB,kBAAkB;IAEzC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAEvC,IAAI,IAAI,KAAK,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAE/E,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE/C,KAAK,MAAM,MAAM,IAAI,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEpF,IAAI,WAAW,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;YAC/C,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAEjE,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC;AAClG,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAc,EACd,WAAmB,EACnB,SAAiB,EACjB,YAAyC;IAEzC,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAE3C,6EAA6E;IAC7E,0EAA0E;IAC1E,0EAA0E;IAC1E,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAErH,OAAO,MAAM;SACV,OAAO,CACN,IAAI,MAAM,CAAC,SAAS,YAAY,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,EACxD,CAAC,MAAM,EAAE,KAAa,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,SAAS,GAAG,KAAK,EAAE,CAC1D;SACA,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry-data.d.ts","sourceRoot":"","sources":["../../../src/core/registry/registry-data.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;CACL,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,iBAAiB,EAo1BvC,CAAC"}
1
+ {"version":3,"file":"registry-data.d.ts","sourceRoot":"","sources":["../../../src/core/registry/registry-data.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;CACL,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,iBAAiB,EA2zCvC,CAAC"}