trix-ui 0.2.14 → 0.3.0

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 (241) hide show
  1. package/dist/commands/add/analysis.d.ts +4 -4
  2. package/dist/commands/add/analysis.js +56 -56
  3. package/dist/commands/add/command.d.ts +2 -2
  4. package/dist/commands/add/command.js +205 -202
  5. package/dist/commands/add/command.js.map +1 -1
  6. package/dist/commands/add/config.d.ts +2 -2
  7. package/dist/commands/add/config.js +11 -11
  8. package/dist/commands/add/install.d.ts +27 -27
  9. package/dist/commands/add/install.js +80 -80
  10. package/dist/commands/add/package-manager.d.ts +1 -1
  11. package/dist/commands/add/package-manager.js +4 -4
  12. package/dist/commands/add/project-files.d.ts +2 -2
  13. package/dist/commands/add/project-files.js +17 -17
  14. package/dist/commands/add/prompts.d.ts +3 -3
  15. package/dist/commands/add/prompts.js +28 -28
  16. package/dist/commands/add/registry.d.ts +4 -4
  17. package/dist/commands/add/registry.js +6 -6
  18. package/dist/commands/add/types.d.ts +33 -33
  19. package/dist/commands/add/types.js +1 -1
  20. package/dist/commands/add/ui.d.ts +4 -4
  21. package/dist/commands/add/ui.js +55 -55
  22. package/dist/commands/add/validation.d.ts +3 -3
  23. package/dist/commands/add/validation.js +30 -30
  24. package/dist/commands/add-collection.d.ts +1 -1
  25. package/dist/commands/add-collection.js +1 -1
  26. package/dist/commands/add-composite.d.ts +2 -2
  27. package/dist/commands/add-composite.js +205 -201
  28. package/dist/commands/add-composite.js.map +1 -1
  29. package/dist/commands/add-section.d.ts +2 -2
  30. package/dist/commands/add-section.js +205 -201
  31. package/dist/commands/add-section.js.map +1 -1
  32. package/dist/commands/add-wrapper.d.ts +2 -2
  33. package/dist/commands/add-wrapper.js +205 -201
  34. package/dist/commands/add-wrapper.js.map +1 -1
  35. package/dist/commands/add.d.ts +1 -1
  36. package/dist/commands/add.js +1 -1
  37. package/dist/commands/build.d.ts +2 -2
  38. package/dist/commands/build.js +104 -104
  39. package/dist/commands/build.js.map +1 -1
  40. package/dist/commands/doctor.d.ts +2 -2
  41. package/dist/commands/doctor.js +67 -67
  42. package/dist/commands/doctor.js.map +1 -1
  43. package/dist/commands/init/command.d.ts +8 -2
  44. package/dist/commands/init/command.js +186 -114
  45. package/dist/commands/init/command.js.map +1 -1
  46. package/dist/commands/init/config.d.ts +9 -2
  47. package/dist/commands/init/config.js +45 -25
  48. package/dist/commands/init/config.js.map +1 -1
  49. package/dist/commands/init/constants.d.ts +3 -3
  50. package/dist/commands/init/constants.js +105 -105
  51. package/dist/commands/init/dependencies.d.ts +22 -5
  52. package/dist/commands/init/dependencies.js +86 -52
  53. package/dist/commands/init/dependencies.js.map +1 -1
  54. package/dist/commands/init/filesystem.d.ts +7 -1
  55. package/dist/commands/init/filesystem.js +16 -10
  56. package/dist/commands/init/filesystem.js.map +1 -1
  57. package/dist/commands/init/lockfile.d.ts +1 -1
  58. package/dist/commands/init/lockfile.js +1 -1
  59. package/dist/commands/init/package-json.d.ts +17 -6
  60. package/dist/commands/init/package-json.js +28 -18
  61. package/dist/commands/init/package-json.js.map +1 -1
  62. package/dist/commands/init/project.d.ts +15 -3
  63. package/dist/commands/init/project.js +120 -97
  64. package/dist/commands/init/project.js.map +1 -1
  65. package/dist/commands/init/tailwind.d.ts +14 -3
  66. package/dist/commands/init/tailwind.js +141 -33
  67. package/dist/commands/init/tailwind.js.map +1 -1
  68. package/dist/commands/init/templates.d.ts +15 -3
  69. package/dist/commands/init/templates.js +27 -15
  70. package/dist/commands/init/templates.js.map +1 -1
  71. package/dist/commands/init/tsconfig.d.ts +14 -2
  72. package/dist/commands/init/tsconfig.js +561 -273
  73. package/dist/commands/init/tsconfig.js.map +1 -1
  74. package/dist/commands/init/types.d.ts +34 -33
  75. package/dist/commands/init/types.js +1 -1
  76. package/dist/commands/init/ui.d.ts +12 -3
  77. package/dist/commands/init/ui.js +45 -33
  78. package/dist/commands/init/ui.js.map +1 -1
  79. package/dist/commands/init/vite.d.ts +1 -1
  80. package/dist/commands/init/vite.js +17 -27
  81. package/dist/commands/init/vite.js.map +1 -1
  82. package/dist/commands/init.d.ts +1 -1
  83. package/dist/commands/init.js +1 -1
  84. package/dist/commands/list.d.ts +2 -2
  85. package/dist/commands/list.js +69 -62
  86. package/dist/commands/list.js.map +1 -1
  87. package/dist/commands/remove.d.ts +2 -2
  88. package/dist/commands/remove.js +95 -93
  89. package/dist/commands/remove.js.map +1 -1
  90. package/dist/commands/shared/add-collection.d.ts +50 -50
  91. package/dist/commands/shared/add-collection.js +206 -206
  92. package/dist/commands/shared/list-entries.d.ts +6 -6
  93. package/dist/commands/shared/list-entries.js +12 -12
  94. package/dist/commands/shared/name-utils.d.ts +1 -1
  95. package/dist/commands/shared/name-utils.js +13 -13
  96. package/dist/commands/shared/remove-entries.d.ts +16 -16
  97. package/dist/commands/shared/remove-entries.js +41 -41
  98. package/dist/icons/index.d.ts +1 -1
  99. package/dist/icons/index.js +1 -1
  100. package/dist/icons/libraries.d.ts +37 -37
  101. package/dist/icons/libraries.js +34 -34
  102. package/dist/index.d.ts +1 -2
  103. package/dist/index.js +29 -30
  104. package/dist/index.js.map +1 -1
  105. package/dist/lib/config.d.ts +45 -45
  106. package/dist/lib/config.js +97 -97
  107. package/dist/lib/fs.d.ts +82 -76
  108. package/dist/lib/fs.js +299 -302
  109. package/dist/lib/fs.js.map +1 -1
  110. package/dist/lib/highlighter.d.ts +6 -6
  111. package/dist/lib/highlighter.js +7 -7
  112. package/dist/lib/install.d.ts +19 -19
  113. package/dist/lib/install.js +101 -55
  114. package/dist/lib/install.js.map +1 -1
  115. package/dist/lib/lockfile.d.ts +63 -63
  116. package/dist/lib/lockfile.js +179 -173
  117. package/dist/lib/lockfile.js.map +1 -1
  118. package/dist/lib/logger.d.ts +8 -8
  119. package/dist/lib/logger.js +41 -41
  120. package/dist/lib/logger.js.map +1 -1
  121. package/dist/lib/paths.d.ts +14 -14
  122. package/dist/lib/paths.js +41 -31
  123. package/dist/lib/paths.js.map +1 -1
  124. package/dist/lib/registry.d.ts +35 -35
  125. package/dist/lib/registry.js +180 -180
  126. package/dist/schema/index.d.ts +1128 -1128
  127. package/dist/schema/index.js +237 -238
  128. package/dist/schema/index.js.map +1 -1
  129. package/dist/styles/create-style-map.d.ts +4 -4
  130. package/dist/styles/create-style-map.js +68 -68
  131. package/dist/styles/transform-style-map.d.ts +3 -3
  132. package/dist/styles/transform-style-map.js +428 -428
  133. package/dist/styles/transform.d.ts +10 -10
  134. package/dist/styles/transform.js +15 -15
  135. package/dist/utils/index.d.ts +6 -6
  136. package/dist/utils/index.js +5 -5
  137. package/dist/utils/transformers/transform-icons.d.ts +2 -2
  138. package/dist/utils/transformers/transform-icons.js +164 -164
  139. package/dist/utils/transformers/transform-menu.d.ts +2 -2
  140. package/dist/utils/transformers/transform-menu.js +39 -39
  141. package/dist/utils/transformers/transform-render.d.ts +2 -2
  142. package/dist/utils/transformers/transform-render.js +97 -97
  143. package/dist/utils/transformers/types.d.ts +14 -14
  144. package/dist/utils/transformers/types.js +1 -1
  145. package/package.json +69 -69
  146. package/dist/__tests__/contracts/registry.test.d.ts +0 -1
  147. package/dist/__tests__/contracts/registry.test.js +0 -42
  148. package/dist/__tests__/contracts/registry.test.js.map +0 -1
  149. package/dist/__tests__/e2e/cli.test.d.ts +0 -1
  150. package/dist/__tests__/e2e/cli.test.js +0 -67
  151. package/dist/__tests__/e2e/cli.test.js.map +0 -1
  152. package/dist/__tests__/helpers/fs.d.ts +0 -5
  153. package/dist/__tests__/helpers/fs.js +0 -26
  154. package/dist/__tests__/helpers/fs.js.map +0 -1
  155. package/dist/__tests__/integration/commands.integration.test.d.ts +0 -1
  156. package/dist/__tests__/integration/commands.integration.test.js +0 -184
  157. package/dist/__tests__/integration/commands.integration.test.js.map +0 -1
  158. package/dist/commands/__tests__/add-composite.test.d.ts +0 -2
  159. package/dist/commands/__tests__/add-composite.test.js +0 -171
  160. package/dist/commands/__tests__/add-composite.test.js.map +0 -1
  161. package/dist/commands/__tests__/add-entry.mocks.d.ts +0 -23
  162. package/dist/commands/__tests__/add-entry.mocks.js +0 -64
  163. package/dist/commands/__tests__/add-entry.mocks.js.map +0 -1
  164. package/dist/commands/__tests__/add-section.test.d.ts +0 -2
  165. package/dist/commands/__tests__/add-section.test.js +0 -191
  166. package/dist/commands/__tests__/add-section.test.js.map +0 -1
  167. package/dist/commands/__tests__/add-wrapper.test.d.ts +0 -2
  168. package/dist/commands/__tests__/add-wrapper.test.js +0 -171
  169. package/dist/commands/__tests__/add-wrapper.test.js.map +0 -1
  170. package/dist/commands/__tests__/cli-mocks.d.ts +0 -1
  171. package/dist/commands/__tests__/cli-mocks.js +0 -24
  172. package/dist/commands/__tests__/cli-mocks.js.map +0 -1
  173. package/dist/commands/__tests__/doctor.mocks.d.ts +0 -6
  174. package/dist/commands/__tests__/doctor.mocks.js +0 -20
  175. package/dist/commands/__tests__/doctor.mocks.js.map +0 -1
  176. package/dist/commands/__tests__/doctor.test.d.ts +0 -2
  177. package/dist/commands/__tests__/doctor.test.js +0 -80
  178. package/dist/commands/__tests__/doctor.test.js.map +0 -1
  179. package/dist/commands/__tests__/list.mocks.d.ts +0 -8
  180. package/dist/commands/__tests__/list.mocks.js +0 -20
  181. package/dist/commands/__tests__/list.mocks.js.map +0 -1
  182. package/dist/commands/__tests__/list.test.d.ts +0 -2
  183. package/dist/commands/__tests__/list.test.js +0 -60
  184. package/dist/commands/__tests__/list.test.js.map +0 -1
  185. package/dist/commands/__tests__/remove.mocks.d.ts +0 -9
  186. package/dist/commands/__tests__/remove.mocks.js +0 -26
  187. package/dist/commands/__tests__/remove.mocks.js.map +0 -1
  188. package/dist/commands/__tests__/remove.test.d.ts +0 -2
  189. package/dist/commands/__tests__/remove.test.js +0 -116
  190. package/dist/commands/__tests__/remove.test.js.map +0 -1
  191. package/dist/commands/add/__tests__/__mocks__/cli-mocks.d.ts +0 -1
  192. package/dist/commands/add/__tests__/__mocks__/cli-mocks.js +0 -21
  193. package/dist/commands/add/__tests__/__mocks__/cli-mocks.js.map +0 -1
  194. package/dist/commands/add/__tests__/add.mocks.d.ts +0 -19
  195. package/dist/commands/add/__tests__/add.mocks.js +0 -60
  196. package/dist/commands/add/__tests__/add.mocks.js.map +0 -1
  197. package/dist/commands/add/__tests__/add.test.d.ts +0 -2
  198. package/dist/commands/add/__tests__/add.test.js +0 -141
  199. package/dist/commands/add/__tests__/add.test.js.map +0 -1
  200. package/dist/commands/init/__tests__/init.mocks.d.ts +0 -24
  201. package/dist/commands/init/__tests__/init.mocks.js +0 -84
  202. package/dist/commands/init/__tests__/init.mocks.js.map +0 -1
  203. package/dist/commands/init/__tests__/init.test.d.ts +0 -2
  204. package/dist/commands/init/__tests__/init.test.js +0 -283
  205. package/dist/commands/init/__tests__/init.test.js.map +0 -1
  206. package/dist/commands/init/__tests__/tailwind.test.d.ts +0 -1
  207. package/dist/commands/init/__tests__/tailwind.test.js +0 -56
  208. package/dist/commands/init/__tests__/tailwind.test.js.map +0 -1
  209. package/dist/commands/init/__tests__/tsconfig.test.d.ts +0 -1
  210. package/dist/commands/init/__tests__/tsconfig.test.js +0 -108
  211. package/dist/commands/init/__tests__/tsconfig.test.js.map +0 -1
  212. package/dist/commands/init/__tests__/vite.test.d.ts +0 -1
  213. package/dist/commands/init/__tests__/vite.test.js +0 -66
  214. package/dist/commands/init/__tests__/vite.test.js.map +0 -1
  215. package/dist/commands/list-sections.d.ts +0 -2
  216. package/dist/commands/list-sections.js +0 -20
  217. package/dist/commands/list-sections.js.map +0 -1
  218. package/dist/commands/list-wrappers.d.ts +0 -2
  219. package/dist/commands/list-wrappers.js +0 -20
  220. package/dist/commands/list-wrappers.js.map +0 -1
  221. package/dist/commands/remove-section.d.ts +0 -2
  222. package/dist/commands/remove-section.js +0 -37
  223. package/dist/commands/remove-section.js.map +0 -1
  224. package/dist/commands/remove-wrapper.d.ts +0 -2
  225. package/dist/commands/remove-wrapper.js +0 -37
  226. package/dist/commands/remove-wrapper.js.map +0 -1
  227. package/dist/lib/__tests__/config.test.d.ts +0 -1
  228. package/dist/lib/__tests__/config.test.js +0 -49
  229. package/dist/lib/__tests__/config.test.js.map +0 -1
  230. package/dist/lib/__tests__/install.test.d.ts +0 -1
  231. package/dist/lib/__tests__/install.test.js +0 -149
  232. package/dist/lib/__tests__/install.test.js.map +0 -1
  233. package/dist/lib/__tests__/lockfile.test.d.ts +0 -1
  234. package/dist/lib/__tests__/lockfile.test.js +0 -89
  235. package/dist/lib/__tests__/lockfile.test.js.map +0 -1
  236. package/dist/lib/__tests__/paths.test.d.ts +0 -1
  237. package/dist/lib/__tests__/paths.test.js +0 -39
  238. package/dist/lib/__tests__/paths.test.js.map +0 -1
  239. package/dist/lib/__tests__/registry.test.d.ts +0 -1
  240. package/dist/lib/__tests__/registry.test.js +0 -76
  241. package/dist/lib/__tests__/registry.test.js.map +0 -1
@@ -1,174 +1,180 @@
1
- import path from "node:path";
2
- import { fileExists, readJsonFile, writeJsonFile } from "./fs.js";
3
- const LOCKFILE_VERSION = 1;
4
- const LOCKFILE_DIRNAME = ".ui";
5
- const LOCKFILE_FILENAME = "lock.json";
6
- const LEGACY_LOCKFILE_FILENAME = "trix-ui.lock.json";
7
- /**
8
- * Get the lockfile path
9
- */
10
- export function resolveLockfilePath(cwd) {
11
- return path.join(cwd, LOCKFILE_DIRNAME, LOCKFILE_FILENAME);
12
- }
13
- function resolveLegacyLockfilePath(cwd) {
14
- return path.join(cwd, LEGACY_LOCKFILE_FILENAME);
15
- }
16
- /**
17
- * Check if lockfile exists
18
- */
19
- export async function lockfileExists(cwd) {
20
- const currentPath = resolveLockfilePath(cwd);
21
- if (await fileExists(currentPath)) {
22
- return true;
23
- }
24
- return fileExists(resolveLegacyLockfilePath(cwd));
25
- }
26
- /**
27
- * Create an empty lockfile
28
- */
29
- export function createEmptyLockfile() {
30
- return {
31
- version: LOCKFILE_VERSION,
32
- components: {},
33
- sections: {},
34
- wrappers: {},
35
- composites: {},
36
- updatedAt: new Date().toISOString(),
37
- };
38
- }
39
- /**
40
- * Load lockfile from disk
41
- */
42
- export async function loadLockfile(cwd) {
43
- const lockfilePath = resolveLockfilePath(cwd);
44
- let resolvedPath = lockfilePath;
45
- if (!(await fileExists(lockfilePath))) {
46
- const legacyPath = resolveLegacyLockfilePath(cwd);
47
- if (await fileExists(legacyPath)) {
48
- resolvedPath = legacyPath;
49
- }
50
- else {
51
- // Return empty lockfile if it doesn't exist
52
- return createEmptyLockfile();
53
- }
54
- }
55
- try {
56
- const lockfile = await readJsonFile(resolvedPath);
57
- // Validate lockfile structure
58
- if (typeof lockfile.version !== "number") {
59
- throw new Error("Invalid lockfile: missing or invalid 'version' field");
60
- }
61
- if (lockfile.version > LOCKFILE_VERSION) {
62
- throw new Error(`Lockfile version ${lockfile.version} is not supported. ` +
63
- `Please update trix-ui to the latest version.`);
64
- }
65
- // Ensure all required fields exist
66
- return {
67
- version: lockfile.version,
68
- components: lockfile.components || {},
69
- sections: lockfile.sections || {},
70
- wrappers: lockfile.wrappers || {},
71
- composites: lockfile.composites || {},
72
- updatedAt: lockfile.updatedAt,
73
- };
74
- }
75
- catch (error) {
76
- throw new Error(`Failed to load lockfile: ${error.message}\n` +
77
- `The lockfile may be corrupted. Try deleting ${LOCKFILE_DIRNAME}/${LOCKFILE_FILENAME} and running 'trix-ui init' again.`);
78
- }
79
- }
80
- /**
81
- * Save lockfile to disk
82
- */
83
- export async function saveLockfile(cwd, lockfile) {
84
- const lockfilePath = resolveLockfilePath(cwd);
85
- // Update timestamp
86
- lockfile.updatedAt = new Date().toISOString();
87
- try {
88
- await writeJsonFile(lockfilePath, lockfile, true);
89
- }
90
- catch (error) {
91
- throw new Error(`Failed to save lockfile: ${error.message}`);
92
- }
93
- }
94
- /**
95
- * Add component to lockfile
96
- */
97
- export async function addComponentToLockfile(cwd, type, name, component) {
98
- const lockfile = await loadLockfile(cwd);
99
- lockfile[type][name] = {
100
- ...component,
101
- installedAt: new Date().toISOString(),
102
- };
103
- await saveLockfile(cwd, lockfile);
104
- }
105
- /**
106
- * Remove component from lockfile
107
- */
108
- export async function removeComponentFromLockfile(cwd, type, name) {
109
- const lockfile = await loadLockfile(cwd);
110
- delete lockfile[type][name];
111
- await saveLockfile(cwd, lockfile);
112
- }
113
- /**
114
- * Check if component is installed
115
- */
116
- export async function isComponentInstalled(cwd, type, name) {
117
- const lockfile = await loadLockfile(cwd);
118
- return name in lockfile[type];
119
- }
120
- /**
121
- * Get installed component info
122
- */
123
- export async function getInstalledComponent(cwd, type, name) {
124
- const lockfile = await loadLockfile(cwd);
125
- return lockfile[type][name] || null;
126
- }
127
- /**
128
- * List all installed components
129
- */
130
- export async function listInstalledComponents(cwd, type) {
131
- const lockfile = await loadLockfile(cwd);
132
- if (type) {
133
- return lockfile[type];
134
- }
135
- // Return all types combined
136
- return {
137
- ...lockfile.components,
138
- ...lockfile.sections,
139
- ...lockfile.wrappers,
140
- ...lockfile.composites,
141
- };
142
- }
143
- /**
144
- * Validate lockfile integrity
145
- */
146
- export async function validateLockfile(cwd, config) {
147
- const errors = [];
148
- const warnings = [];
149
- try {
150
- const lockfile = await loadLockfile(cwd);
151
- // Check version compatibility
152
- if (lockfile.version > LOCKFILE_VERSION) {
153
- errors.push(`Lockfile version ${lockfile.version} is newer than supported version ${LOCKFILE_VERSION}`);
154
- }
155
- // Verify installed files exist
156
- for (const [name, component] of Object.entries(lockfile.components)) {
157
- for (const file of component.files || []) {
158
- const filePath = path.join(cwd, config.paths.components, file);
159
- if (!(await fileExists(filePath))) {
160
- warnings.push(`Component '${name}' file missing: ${file}`);
161
- }
162
- }
163
- }
164
- }
165
- catch (error) {
166
- errors.push(error.message);
167
- }
168
- return {
169
- valid: errors.length === 0,
170
- errors,
171
- warnings,
172
- };
173
- }
1
+ import path from "node:path";
2
+ import { fileExists, readJsonFile, writeJsonFile } from "./fs.js";
3
+ import { fromPosix } from "./paths.js";
4
+ const LOCKFILE_VERSION = 1;
5
+ const LOCKFILE_DIRNAME = ".ui";
6
+ const LOCKFILE_FILENAME = "lock.json";
7
+ const LEGACY_LOCKFILE_FILENAME = "trix-ui.lock.json";
8
+ /**
9
+ * Get the lockfile path
10
+ */
11
+ export function resolveLockfilePath(cwd) {
12
+ return path.join(cwd, LOCKFILE_DIRNAME, LOCKFILE_FILENAME);
13
+ }
14
+ function resolveLegacyLockfilePath(cwd) {
15
+ return path.join(cwd, LEGACY_LOCKFILE_FILENAME);
16
+ }
17
+ /**
18
+ * Check if lockfile exists
19
+ */
20
+ export async function lockfileExists(cwd) {
21
+ const currentPath = resolveLockfilePath(cwd);
22
+ if (await fileExists(currentPath)) {
23
+ return true;
24
+ }
25
+ return fileExists(resolveLegacyLockfilePath(cwd));
26
+ }
27
+ /**
28
+ * Create an empty lockfile
29
+ */
30
+ export function createEmptyLockfile() {
31
+ return {
32
+ version: LOCKFILE_VERSION,
33
+ components: {},
34
+ sections: {},
35
+ wrappers: {},
36
+ composites: {},
37
+ updatedAt: new Date().toISOString(),
38
+ };
39
+ }
40
+ /**
41
+ * Load lockfile from disk
42
+ */
43
+ export async function loadLockfile(cwd) {
44
+ const lockfilePath = resolveLockfilePath(cwd);
45
+ let resolvedPath = lockfilePath;
46
+ if (!(await fileExists(lockfilePath))) {
47
+ const legacyPath = resolveLegacyLockfilePath(cwd);
48
+ if (await fileExists(legacyPath)) {
49
+ resolvedPath = legacyPath;
50
+ }
51
+ else {
52
+ // Return empty lockfile if it doesn't exist
53
+ return createEmptyLockfile();
54
+ }
55
+ }
56
+ try {
57
+ const lockfile = await readJsonFile(resolvedPath);
58
+ // Validate lockfile structure
59
+ if (typeof lockfile.version !== "number") {
60
+ throw new Error("Invalid lockfile: missing or invalid 'version' field");
61
+ }
62
+ if (lockfile.version > LOCKFILE_VERSION) {
63
+ throw new Error(`Lockfile version ${lockfile.version} is not supported. ` +
64
+ `Please update trix-ui to the latest version.`);
65
+ }
66
+ // Ensure all required fields exist
67
+ return {
68
+ version: lockfile.version,
69
+ components: lockfile.components || {},
70
+ sections: lockfile.sections || {},
71
+ wrappers: lockfile.wrappers || {},
72
+ composites: lockfile.composites || {},
73
+ updatedAt: lockfile.updatedAt,
74
+ };
75
+ }
76
+ catch (error) {
77
+ throw new Error(`Failed to load lockfile: ${error.message}\n` +
78
+ `The lockfile may be corrupted. Try deleting ${LOCKFILE_DIRNAME}/${LOCKFILE_FILENAME} and running 'trix-ui init' again.`);
79
+ }
80
+ }
81
+ /**
82
+ * Save lockfile to disk
83
+ */
84
+ export async function saveLockfile(cwd, lockfile) {
85
+ const lockfilePath = resolveLockfilePath(cwd);
86
+ // Update timestamp
87
+ lockfile.updatedAt = new Date().toISOString();
88
+ try {
89
+ await writeJsonFile(lockfilePath, lockfile, true);
90
+ }
91
+ catch (error) {
92
+ throw new Error(`Failed to save lockfile: ${error.message}`);
93
+ }
94
+ }
95
+ /**
96
+ * Add component to lockfile
97
+ */
98
+ export async function addComponentToLockfile(cwd, type, name, component) {
99
+ const lockfile = await loadLockfile(cwd);
100
+ lockfile[type][name] = {
101
+ ...component,
102
+ installedAt: new Date().toISOString(),
103
+ };
104
+ await saveLockfile(cwd, lockfile);
105
+ }
106
+ /**
107
+ * Remove component from lockfile
108
+ */
109
+ export async function removeComponentFromLockfile(cwd, type, name) {
110
+ const lockfile = await loadLockfile(cwd);
111
+ delete lockfile[type][name];
112
+ await saveLockfile(cwd, lockfile);
113
+ }
114
+ /**
115
+ * Check if component is installed
116
+ */
117
+ export async function isComponentInstalled(cwd, type, name) {
118
+ const lockfile = await loadLockfile(cwd);
119
+ return name in lockfile[type];
120
+ }
121
+ /**
122
+ * Get installed component info
123
+ */
124
+ export async function getInstalledComponent(cwd, type, name) {
125
+ const lockfile = await loadLockfile(cwd);
126
+ return lockfile[type][name] || null;
127
+ }
128
+ /**
129
+ * List all installed components
130
+ */
131
+ export async function listInstalledComponents(cwd, type) {
132
+ const lockfile = await loadLockfile(cwd);
133
+ if (type) {
134
+ return lockfile[type];
135
+ }
136
+ // Return all types combined
137
+ return {
138
+ ...lockfile.components,
139
+ ...lockfile.sections,
140
+ ...lockfile.wrappers,
141
+ ...lockfile.composites,
142
+ };
143
+ }
144
+ /**
145
+ * Validate lockfile integrity
146
+ */
147
+ export async function validateLockfile(cwd, _config) {
148
+ const errors = [];
149
+ const warnings = [];
150
+ try {
151
+ const lockfile = await loadLockfile(cwd);
152
+ // Check version compatibility
153
+ if (lockfile.version > LOCKFILE_VERSION) {
154
+ errors.push(`Lockfile version ${lockfile.version} is newer than supported version ${LOCKFILE_VERSION}`);
155
+ }
156
+ const validateEntries = async (label, entries) => {
157
+ for (const [name, entry] of Object.entries(entries)) {
158
+ for (const file of entry.files || []) {
159
+ const filePath = path.resolve(cwd, fromPosix(file));
160
+ if (!(await fileExists(filePath))) {
161
+ warnings.push(`${label} '${name}' file missing: ${file}`);
162
+ }
163
+ }
164
+ }
165
+ };
166
+ await validateEntries("Component", lockfile.components);
167
+ await validateEntries("Section", lockfile.sections);
168
+ await validateEntries("Wrapper", lockfile.wrappers);
169
+ await validateEntries("Composite", lockfile.composites);
170
+ }
171
+ catch (error) {
172
+ errors.push(error.message);
173
+ }
174
+ return {
175
+ valid: errors.length === 0,
176
+ errors,
177
+ warnings,
178
+ };
179
+ }
174
180
  //# sourceMappingURL=lockfile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lockfile.js","sourceRoot":"","sources":["../../src/lib/lockfile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lockfile.js","sourceRoot":"","sources":["../../src/lib/lockfile.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- export declare const logger: {
2
- error(...args: unknown[]): void;
3
- warn(...args: unknown[]): void;
4
- info(...args: unknown[]): void;
5
- success(...args: unknown[]): void;
6
- log(...args: unknown[]): void;
7
- break(): void;
8
- };
1
+ export declare const logger: {
2
+ error(...args: unknown[]): void;
3
+ warn(...args: unknown[]): void;
4
+ info(...args: unknown[]): void;
5
+ success(...args: unknown[]): void;
6
+ log(...args: unknown[]): void;
7
+ break(): void;
8
+ };
@@ -1,42 +1,42 @@
1
- import { highlighter } from "./highlighter.js";
2
- function formatArgs(args) {
3
- return args
4
- .map((arg) => {
5
- if (typeof arg === "string")
6
- return arg;
7
- if (arg instanceof Error) {
8
- return arg.stack ?? arg.message;
9
- }
10
- if (typeof arg === "object" && arg !== null) {
11
- try {
12
- return JSON.stringify(arg, null, 2);
13
- }
14
- catch {
15
- return "[Unserializable Object]";
16
- }
17
- }
18
- return String(arg);
19
- })
20
- .join(" ");
21
- }
22
- export const logger = {
23
- error(...args) {
24
- console.log(highlighter.error(formatArgs(args)));
25
- },
26
- warn(...args) {
27
- console.log(highlighter.warn(formatArgs(args)));
28
- },
29
- info(...args) {
30
- console.log(highlighter.info(formatArgs(args)));
31
- },
32
- success(...args) {
33
- console.log(highlighter.success(formatArgs(args)));
34
- },
35
- log(...args) {
36
- console.log(formatArgs(args));
37
- },
38
- break() {
39
- console.log("");
40
- },
41
- };
1
+ import { highlighter } from "./highlighter.js";
2
+ function formatArgs(args) {
3
+ return args
4
+ .map((arg) => {
5
+ if (typeof arg === "string")
6
+ return arg;
7
+ if (arg instanceof Error) {
8
+ return arg.stack ?? arg.message;
9
+ }
10
+ if (typeof arg === "object" && arg !== null) {
11
+ try {
12
+ return JSON.stringify(arg, null, 2);
13
+ }
14
+ catch {
15
+ return "[Unserializable Object]";
16
+ }
17
+ }
18
+ return String(arg);
19
+ })
20
+ .join(" ");
21
+ }
22
+ export const logger = {
23
+ error(...args) {
24
+ console.error(highlighter.error(formatArgs(args)));
25
+ },
26
+ warn(...args) {
27
+ console.warn(highlighter.warn(formatArgs(args)));
28
+ },
29
+ info(...args) {
30
+ console.log(highlighter.info(formatArgs(args)));
31
+ },
32
+ success(...args) {
33
+ console.log(highlighter.success(formatArgs(args)));
34
+ },
35
+ log(...args) {
36
+ console.log(formatArgs(args));
37
+ },
38
+ break() {
39
+ console.log("");
40
+ },
41
+ };
42
42
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,SAAS,UAAU,CAAC,IAAe;IACjC,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAA;QAEvC,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAA;QACjC,CAAC;QAED,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YACrC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,yBAAyB,CAAA;YAClC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;IACpB,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAA;AACd,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,CAAC,GAAG,IAAe;QACtB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,CAAC,GAAG,IAAe;QACrB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjD,CAAC;IAED,IAAI,CAAC,GAAG,IAAe;QACrB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjD,CAAC;IAED,OAAO,CAAC,GAAG,IAAe;QACxB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACpD,CAAC;IAED,GAAG,CAAC,GAAG,IAAe;QACpB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IAC/B,CAAC;IAED,KAAK;QACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACjB,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,SAAS,UAAU,CAAC,IAAe;IACjC,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAA;QAEvC,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAA;QACjC,CAAC;QAED,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YACrC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,yBAAyB,CAAA;YAClC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;IACpB,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAA;AACd,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,CAAC,GAAG,IAAe;QACtB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACpD,CAAC;IAED,IAAI,CAAC,GAAG,IAAe;QACrB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,CAAC,GAAG,IAAe;QACrB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjD,CAAC;IAED,OAAO,CAAC,GAAG,IAAe;QACxB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACpD,CAAC;IAED,GAAG,CAAC,GAAG,IAAe;QACpB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IAC/B,CAAC;IAED,KAAK;QACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACjB,CAAC;CACF,CAAA"}
@@ -1,14 +1,14 @@
1
- export declare function toPosix(filePath: string): string;
2
- export declare function fromPosix(posixPath: string): string;
3
- export declare function getBundledRegistryPath(): string;
4
- export declare function getBundledTemplatesPath(): string;
5
- export declare function resolveTemplatePath(relativePath: string, templateRoot: string): string;
6
- export declare function getTemplatePath(relativePath: string): string;
7
- export declare function resolveTargetPath(cwd: string, target: string, paths: {
8
- components: string;
9
- sections: string;
10
- wrappers: string;
11
- composites: string;
12
- utils: string;
13
- styles: string;
14
- }): string;
1
+ export declare function toPosix(filePath: string): string;
2
+ export declare function fromPosix(posixPath: string): string;
3
+ export declare function getBundledRegistryPath(): string;
4
+ export declare function getBundledTemplatesPath(): string;
5
+ export declare function resolveTemplatePath(relativePath: string, templateRoot: string): string;
6
+ export declare function getTemplatePath(relativePath: string): string;
7
+ export declare function resolveTargetPath(cwd: string, target: string, paths: {
8
+ components: string;
9
+ sections: string;
10
+ wrappers: string;
11
+ composites: string;
12
+ utils: string;
13
+ styles: string;
14
+ }): string;
package/dist/lib/paths.js CHANGED
@@ -1,32 +1,42 @@
1
- import path from "node:path";
2
- import { fileURLToPath } from "node:url";
3
- export function toPosix(filePath) {
4
- return filePath.split(path.sep).join("/");
5
- }
6
- export function fromPosix(posixPath) {
7
- return posixPath.split("/").join(path.sep);
8
- }
9
- export function getBundledRegistryPath() {
10
- return fileURLToPath(new URL("../../registry/index.json", import.meta.url));
11
- }
12
- export function getBundledTemplatesPath() {
13
- return fileURLToPath(new URL("../../templates", import.meta.url));
14
- }
15
- export function resolveTemplatePath(relativePath, templateRoot) {
16
- const normalized = relativePath.replace(/^[\\/]+/, "");
17
- return path.resolve(templateRoot, normalized);
18
- }
19
- export function getTemplatePath(relativePath) {
20
- return resolveTemplatePath(relativePath, getBundledTemplatesPath());
21
- }
22
- export function resolveTargetPath(cwd, target, paths) {
23
- const resolved = target
24
- .replace("{{components}}", paths.components)
25
- .replace("{{sections}}", paths.sections)
26
- .replace("{{wrappers}}", paths.wrappers)
27
- .replace("{{composites}}", paths.composites)
28
- .replace("{{lib}}", paths.utils)
29
- .replace("{{styles}}", paths.styles);
30
- return path.resolve(cwd, resolved);
31
- }
1
+ import path from "node:path";
2
+ import { fileURLToPath } from "node:url";
3
+ function assertWithinRoot(resolvedPath, rootPath, label) {
4
+ const relative = path.relative(rootPath, resolvedPath);
5
+ if (relative.startsWith("..") || path.isAbsolute(relative)) {
6
+ throw new Error(`${label} resolves outside of the root directory: ${resolvedPath}`);
7
+ }
8
+ }
9
+ export function toPosix(filePath) {
10
+ return filePath.split(path.sep).join("/");
11
+ }
12
+ export function fromPosix(posixPath) {
13
+ return posixPath.split("/").join(path.sep);
14
+ }
15
+ export function getBundledRegistryPath() {
16
+ return fileURLToPath(new URL("../../registry/index.json", import.meta.url));
17
+ }
18
+ export function getBundledTemplatesPath() {
19
+ return fileURLToPath(new URL("../../templates", import.meta.url));
20
+ }
21
+ export function resolveTemplatePath(relativePath, templateRoot) {
22
+ const normalized = relativePath.replace(/^[\\/]+/, "");
23
+ const resolved = path.resolve(templateRoot, normalized);
24
+ assertWithinRoot(resolved, templateRoot, "Template path");
25
+ return resolved;
26
+ }
27
+ export function getTemplatePath(relativePath) {
28
+ return resolveTemplatePath(relativePath, getBundledTemplatesPath());
29
+ }
30
+ export function resolveTargetPath(cwd, target, paths) {
31
+ const resolved = target
32
+ .replace("{{components}}", paths.components)
33
+ .replace("{{sections}}", paths.sections)
34
+ .replace("{{wrappers}}", paths.wrappers)
35
+ .replace("{{composites}}", paths.composites)
36
+ .replace("{{lib}}", paths.utils)
37
+ .replace("{{styles}}", paths.styles);
38
+ const resolvedPath = path.resolve(cwd, resolved);
39
+ assertWithinRoot(resolvedPath, cwd, "Target path");
40
+ return resolvedPath;
41
+ }
32
42
  //# sourceMappingURL=paths.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,MAAM,UAAU,OAAO,CAAC,QAAgB;IACtC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC3C,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,SAAiB;IACzC,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,2BAA2B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAC7E,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AACnE,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,YAAoB,EACpB,YAAoB;IAEpB,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;IACtD,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;AAC/C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,YAAoB;IAClD,OAAO,mBAAmB,CAAC,YAAY,EAAE,uBAAuB,EAAE,CAAC,CAAA;AACrE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,GAAW,EACX,MAAc,EACd,KAOC;IAED,MAAM,QAAQ,GAAG,MAAM;SACpB,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,UAAU,CAAC;SAC3C,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC;SACvC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC;SACvC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,UAAU,CAAC;SAC3C,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC;SAC/B,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAEtC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;AACpC,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,SAAS,gBAAgB,CACvB,YAAoB,EACpB,QAAgB,EAChB,KAAa;IAEb,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;IAEtD,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CACb,GAAG,KAAK,4CAA4C,YAAY,EAAE,CACnE,CAAA;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,QAAgB;IACtC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC3C,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,SAAiB;IACzC,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,2BAA2B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAC7E,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AACnE,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,YAAoB,EACpB,YAAoB;IAEpB,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;IACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;IACvD,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,eAAe,CAAC,CAAA;IACzD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,YAAoB;IAClD,OAAO,mBAAmB,CAAC,YAAY,EAAE,uBAAuB,EAAE,CAAC,CAAA;AACrE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,GAAW,EACX,MAAc,EACd,KAOC;IAED,MAAM,QAAQ,GAAG,MAAM;SACpB,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,UAAU,CAAC;SAC3C,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC;SACvC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC;SACvC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,UAAU,CAAC;SAC3C,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC;SAC/B,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAEtC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAChD,gBAAgB,CAAC,YAAY,EAAE,GAAG,EAAE,aAAa,CAAC,CAAA;IAClD,OAAO,YAAY,CAAA;AACrB,CAAC"}