vibe-design-system 2.5.27 → 2.5.28

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibe-design-system",
3
- "version": "2.5.27",
3
+ "version": "2.5.28",
4
4
  "description": "Auto-generate design systems for vibe coding projects",
5
5
  "type": "module",
6
6
  "bin": {
@@ -144,41 +144,34 @@ function injectProviderDecorators(projectRoot) {
144
144
 
145
145
  if (providersToAdd.length > 0) {
146
146
  let content = fs.readFileSync(previewPath, "utf-8");
147
- const alreadyHas = providersToAdd.every((p) => content.includes(p.name));
148
- if (!alreadyHas) {
149
- const importLines = [...new Map(providersToAdd.map((p) => [p.name, p])).values()]
150
- .map((p) => `import { ${p.name} } from "${p.importPath}";`)
151
- .join("\n");
152
- const lastImportIdx = content.search(/\nimport\s+.+?;\s*$/m);
153
- const insertAt = lastImportIdx >= 0 ? content.indexOf("\n", lastImportIdx) + 1 : content.indexOf("\n") + 1;
154
- content = content.slice(0, insertAt) + importLines + "\n" + content.slice(insertAt);
147
+ const uniqueProviders = [...new Map(providersToAdd.map((p) => [p.name, p])).values()];
148
+ if (!content.includes("import React") && !content.includes("import React from")) {
149
+ const firstImport = content.match(/^import\s+/m);
150
+ const insertAt = firstImport ? content.indexOf(firstImport[0]) : 0;
151
+ content = content.slice(0, insertAt) + "import React from \"react\";\n" + content.slice(insertAt);
155
152
  }
156
- const withProvidersCode = buildWithProvidersCode(providersToAdd);
157
- const idxPreview = content.indexOf("const preview");
158
- const idxWithProviders = content.indexOf("const withProviders");
159
- const wrongOrder = idxWithProviders !== -1 && idxPreview !== -1 && idxWithProviders > idxPreview;
160
- if (wrongOrder) {
161
- const blockMatch = content.match(/const withProviders\s*=[\s\S]+?;\s*\n/);
162
- if (blockMatch) {
163
- const block = blockMatch[0].trim();
164
- content = content.replace(blockMatch[0], "").replace(/\n{3,}/g, "\n\n");
165
- content = content.replace(/(\s*)(const preview\s*[^=]*=\s*\{)/, block + "\n\n$1$2");
166
- }
167
- } else if (!content.includes("withProviders")) {
168
- if (!content.includes("import React")) {
169
- const firstImport = content.match(/^import\s+/m);
170
- const insertAt = firstImport ? content.indexOf(firstImport[0]) : 0;
171
- content = content.slice(0, insertAt) + "import React from \"react\";\n" + content.slice(insertAt);
153
+ for (const p of uniqueProviders) {
154
+ if (!content.includes(p.name)) {
155
+ const lastImportIdx = content.search(/\nimport\s+.+?;\s*$/m);
156
+ const insertAt = lastImportIdx >= 0 ? content.indexOf("\n", lastImportIdx) + 1 : content.indexOf("\n") + 1;
157
+ content = content.slice(0, insertAt) + `import { ${p.name} } from "${p.importPath}";\n` + content.slice(insertAt);
172
158
  }
173
- content = content.replace(/(\s*)(const preview\s*[^=]*=\s*\{)/, withProvidersCode + "\n\n$1$2");
159
+ }
160
+ content = content.replace(/const withProviders\s*=\s*\([^)]*\)\s*=>\s*[\s\S]+?;\s*\n?/g, "").replace(/\n{3,}/g, "\n\n");
161
+ const withProvidersCode = buildWithProvidersCode(providersToAdd);
162
+ const insertBefore = content.indexOf("const preview");
163
+ if (insertBefore !== -1) {
164
+ content = content.slice(0, insertBefore) + withProvidersCode + "\n\n" + content.slice(insertBefore);
174
165
  if (content.includes("decorators:")) {
175
- content = content.replace(/decorators:\s*\[/, "decorators: [withProviders, ");
166
+ if (!content.includes("decorators: [withProviders")) {
167
+ content = content.replace(/decorators:\s*\[/, "decorators: [withProviders, ");
168
+ }
176
169
  } else {
177
170
  content = content.replace(/(const preview\s*[^=]*=\s*\{\s*)/, "$1\n decorators: [withProviders],\n ");
178
171
  }
179
172
  }
180
173
  fs.writeFileSync(previewPath, content, "utf-8");
181
- console.log("[VDS] Storybook preview: " + (wrongOrder ? "fixed withProviders order." : "added " + providersToAdd.map((p) => p.name).join(", ")));
174
+ console.log("[VDS] Storybook preview: " + uniqueProviders.map((p) => p.name).join(", "));
182
175
  }
183
176
 
184
177
  if (hooksWithoutProvider.size > 0) {