@fragments-sdk/cli 0.7.2 → 0.7.4
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/README.md +2 -0
- package/dist/bin.js +25 -17
- package/dist/bin.js.map +1 -1
- package/dist/chunk-AWYCDRPG.js +272 -0
- package/dist/chunk-AWYCDRPG.js.map +1 -0
- package/dist/chunk-EKLMXTWU.js +80 -0
- package/dist/chunk-EKLMXTWU.js.map +1 -0
- package/dist/{chunk-DH4ETVSM.js → chunk-NEJ2FBTN.js} +9 -7
- package/dist/{chunk-DH4ETVSM.js.map → chunk-NEJ2FBTN.js.map} +1 -1
- package/dist/{chunk-GHYYFAQN.js → chunk-P33AKQJW.js} +1 -76
- package/dist/chunk-P33AKQJW.js.map +1 -0
- package/dist/{chunk-3T6QL7IY.js → chunk-R6IZZSE7.js} +23 -275
- package/dist/chunk-R6IZZSE7.js.map +1 -0
- package/dist/{chunk-7KUSBMI4.js → chunk-S56I5FST.js} +174 -45
- package/dist/chunk-S56I5FST.js.map +1 -0
- package/dist/{chunk-DQHWLAUV.js → chunk-TOIE7VXF.js} +2 -2
- package/dist/{chunk-OOGTG5FM.js → chunk-UXLGIGSX.js} +56 -2
- package/dist/chunk-UXLGIGSX.js.map +1 -0
- package/dist/{chunk-GKX2HPZ6.js → chunk-YMPGYEWK.js} +9 -3
- package/dist/chunk-YMPGYEWK.js.map +1 -0
- package/dist/chunk-Z7EY4VHE.js +50 -0
- package/dist/{core-UQXZTBFZ.js → core-3NMNCLFW.js} +8 -5
- package/dist/discovery-Z4RDDFVR.js +28 -0
- package/dist/{generate-GP6ZLAQB.js → generate-23VLX7QN.js} +7 -4
- package/dist/{generate-GP6ZLAQB.js.map → generate-23VLX7QN.js.map} +1 -1
- package/dist/index.js +15 -11
- package/dist/index.js.map +1 -1
- package/dist/{init-W72WBSU2.js → init-VYVYMVHH.js} +10 -6
- package/dist/{init-W72WBSU2.js.map → init-VYVYMVHH.js.map} +1 -1
- package/dist/mcp-bin.js +5 -3
- package/dist/mcp-bin.js.map +1 -1
- package/dist/sass.node-4XJK6YBF.js +130708 -0
- package/dist/sass.node-4XJK6YBF.js.map +1 -0
- package/dist/scan-FZR6YVI5.js +15 -0
- package/dist/{service-PVGTYUKX.js → service-CFFBHW4X.js} +6 -4
- package/dist/service-CFFBHW4X.js.map +1 -0
- package/dist/{static-viewer-KILKIVN7.js → static-viewer-VA2JXSCX.js} +6 -4
- package/dist/static-viewer-VA2JXSCX.js.map +1 -0
- package/dist/{test-3YRYQRGV.js → test-VTD7R6G2.js} +8 -4
- package/dist/{test-3YRYQRGV.js.map → test-VTD7R6G2.js.map} +1 -1
- package/dist/{tokens-IXSQHPQK.js → tokens-7JA5CPDL.js} +10 -7
- package/dist/{tokens-IXSQHPQK.js.map → tokens-7JA5CPDL.js.map} +1 -1
- package/dist/{viewer-K42REJU2.js → viewer-WXTDDQGK.js} +403 -26
- package/dist/viewer-WXTDDQGK.js.map +1 -0
- package/package.json +5 -1
- package/src/build.ts +57 -5
- package/src/commands/init.ts +6 -2
- package/src/core/__tests__/token-resolver.test.ts +82 -0
- package/src/core/discovery.ts +7 -1
- package/src/core/token-parser.ts +102 -0
- package/src/core/token-resolver.ts +155 -0
- package/src/migrate/detect.ts +4 -0
- package/src/service/__tests__/patch-generator.test.ts +2 -2
- package/src/service/patch-generator.ts +8 -1
- package/src/viewer/components/App.tsx +63 -2
- package/src/viewer/components/Layout.tsx +1 -1
- package/src/viewer/components/LeftSidebar.tsx +35 -77
- package/src/viewer/preview-frame.html +1 -1
- package/src/viewer/render-utils.ts +141 -0
- package/src/viewer/styles/globals.css +2 -1
- package/src/viewer/vite-plugin.ts +399 -24
- package/dist/chunk-3T6QL7IY.js.map +0 -1
- package/dist/chunk-7KUSBMI4.js.map +0 -1
- package/dist/chunk-GHYYFAQN.js.map +0 -1
- package/dist/chunk-GKX2HPZ6.js.map +0 -1
- package/dist/chunk-OOGTG5FM.js.map +0 -1
- package/dist/scan-V54HWRDY.js +0 -12
- package/dist/viewer-K42REJU2.js.map +0 -1
- /package/dist/{chunk-DQHWLAUV.js.map → chunk-TOIE7VXF.js.map} +0 -0
- /package/dist/{core-UQXZTBFZ.js.map → chunk-Z7EY4VHE.js.map} +0 -0
- /package/dist/{scan-V54HWRDY.js.map → core-3NMNCLFW.js.map} +0 -0
- /package/dist/{service-PVGTYUKX.js.map → discovery-Z4RDDFVR.js.map} +0 -0
- /package/dist/{static-viewer-KILKIVN7.js.map → scan-FZR6YVI5.js.map} +0 -0
|
@@ -1,78 +1,5 @@
|
|
|
1
1
|
import { createRequire as __banner_createRequire } from 'module'; const require = __banner_createRequire(import.meta.url);
|
|
2
2
|
|
|
3
|
-
// src/core/constants.ts
|
|
4
|
-
var BRAND = {
|
|
5
|
-
/** Display name (e.g., "Fragments") */
|
|
6
|
-
name: "Fragments",
|
|
7
|
-
/** Lowercase name for file paths and CLI (e.g., "fragments") */
|
|
8
|
-
nameLower: "fragments",
|
|
9
|
-
/** File extension for fragment definition files (e.g., ".fragment.tsx") */
|
|
10
|
-
fileExtension: ".fragment.tsx",
|
|
11
|
-
/** Legacy file extension for segments (still supported for migration) */
|
|
12
|
-
legacyFileExtension: ".segment.tsx",
|
|
13
|
-
/** JSON file extension for compiled output */
|
|
14
|
-
jsonExtension: ".fragment.json",
|
|
15
|
-
/** Default output file name (e.g., "fragments.json") */
|
|
16
|
-
outFile: "fragments.json",
|
|
17
|
-
/** Config file name (e.g., "fragments.config.ts") */
|
|
18
|
-
configFile: "fragments.config.ts",
|
|
19
|
-
/** Legacy config file name (still supported for migration) */
|
|
20
|
-
legacyConfigFile: "segments.config.ts",
|
|
21
|
-
/** CLI command name (e.g., "fragments") */
|
|
22
|
-
cliCommand: "fragments",
|
|
23
|
-
/** Package scope (e.g., "@fragments") */
|
|
24
|
-
packageScope: "@fragments",
|
|
25
|
-
/** Directory for storing fragments, registry, and cache */
|
|
26
|
-
dataDir: ".fragments",
|
|
27
|
-
/** Components subdirectory within .fragments/ */
|
|
28
|
-
componentsDir: "components",
|
|
29
|
-
/** Registry file name */
|
|
30
|
-
registryFile: "registry.json",
|
|
31
|
-
/** Context file name (AI-ready markdown) */
|
|
32
|
-
contextFile: "context.md",
|
|
33
|
-
/** Screenshots subdirectory */
|
|
34
|
-
screenshotsDir: "screenshots",
|
|
35
|
-
/** Cache subdirectory (gitignored) */
|
|
36
|
-
cacheDir: "cache",
|
|
37
|
-
/** Diff output subdirectory (gitignored) */
|
|
38
|
-
diffDir: "diff",
|
|
39
|
-
/** Manifest filename */
|
|
40
|
-
manifestFile: "manifest.json",
|
|
41
|
-
/** Prefix for localStorage keys (e.g., "fragments-") */
|
|
42
|
-
storagePrefix: "fragments-",
|
|
43
|
-
/** Static viewer HTML file name */
|
|
44
|
-
viewerHtmlFile: "fragments-viewer.html",
|
|
45
|
-
/** MCP tool name prefix (e.g., "fragments_") */
|
|
46
|
-
mcpToolPrefix: "fragments_",
|
|
47
|
-
/** File extension for block definition files */
|
|
48
|
-
blockFileExtension: ".block.ts",
|
|
49
|
-
/** @deprecated Use blockFileExtension instead */
|
|
50
|
-
recipeFileExtension: ".recipe.ts",
|
|
51
|
-
/** Vite plugin namespace */
|
|
52
|
-
vitePluginNamespace: "fragments-core-shim"
|
|
53
|
-
};
|
|
54
|
-
var DEFAULTS = {
|
|
55
|
-
/** Default viewport dimensions */
|
|
56
|
-
viewport: {
|
|
57
|
-
width: 1280,
|
|
58
|
-
height: 800
|
|
59
|
-
},
|
|
60
|
-
/** Default diff threshold (percentage) */
|
|
61
|
-
diffThreshold: 5,
|
|
62
|
-
/** Browser pool size */
|
|
63
|
-
poolSize: 3,
|
|
64
|
-
/** Idle timeout before browser shutdown (ms) - 5 minutes */
|
|
65
|
-
idleTimeoutMs: 5 * 60 * 1e3,
|
|
66
|
-
/** Delay after render before capture (ms) */
|
|
67
|
-
captureDelayMs: 100,
|
|
68
|
-
/** Font loading timeout (ms) */
|
|
69
|
-
fontTimeoutMs: 3e3,
|
|
70
|
-
/** Default theme */
|
|
71
|
-
theme: "light",
|
|
72
|
-
/** Dev server port */
|
|
73
|
-
port: 6006
|
|
74
|
-
};
|
|
75
|
-
|
|
76
3
|
// src/core/schema.ts
|
|
77
4
|
import { z } from "zod";
|
|
78
5
|
var figmaStringMappingSchema = z.object({
|
|
@@ -229,8 +156,6 @@ var fragmentsConfigSchema = z.object({
|
|
|
229
156
|
var recipeDefinitionSchema = blockDefinitionSchema;
|
|
230
157
|
|
|
231
158
|
export {
|
|
232
|
-
BRAND,
|
|
233
|
-
DEFAULTS,
|
|
234
159
|
figmaPropMappingSchema,
|
|
235
160
|
fragmentMetaSchema,
|
|
236
161
|
fragmentUsageSchema,
|
|
@@ -246,4 +171,4 @@ export {
|
|
|
246
171
|
fragmentsConfigSchema,
|
|
247
172
|
recipeDefinitionSchema
|
|
248
173
|
};
|
|
249
|
-
//# sourceMappingURL=chunk-
|
|
174
|
+
//# sourceMappingURL=chunk-P33AKQJW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/schema.ts"],"sourcesContent":["import { z } from 'zod';\n\n/**\n * Zod schemas for runtime validation of fragment definitions\n */\n\n// Figma property mapping schemas\nconst figmaStringMappingSchema = z.object({\n __type: z.literal('figma-string'),\n figmaProperty: z.string().min(1),\n});\n\nconst figmaBooleanMappingSchema = z.object({\n __type: z.literal('figma-boolean'),\n figmaProperty: z.string().min(1),\n valueMapping: z.object({ true: z.unknown(), false: z.unknown() }).optional(),\n});\n\nconst figmaEnumMappingSchema = z.object({\n __type: z.literal('figma-enum'),\n figmaProperty: z.string().min(1),\n valueMapping: z.record(z.unknown()),\n});\n\nconst figmaInstanceMappingSchema = z.object({\n __type: z.literal('figma-instance'),\n figmaProperty: z.string().min(1),\n});\n\nconst figmaChildrenMappingSchema = z.object({\n __type: z.literal('figma-children'),\n layers: z.array(z.string().min(1)),\n});\n\nconst figmaTextContentMappingSchema = z.object({\n __type: z.literal('figma-text-content'),\n layer: z.string().min(1),\n});\n\nexport const figmaPropMappingSchema = z.discriminatedUnion('__type', [\n figmaStringMappingSchema,\n figmaBooleanMappingSchema,\n figmaEnumMappingSchema,\n figmaInstanceMappingSchema,\n figmaChildrenMappingSchema,\n figmaTextContentMappingSchema,\n]);\n\nexport const fragmentMetaSchema = z.object({\n name: z.string().min(1),\n description: z.string().min(1),\n category: z.string().min(1),\n tags: z.array(z.string()).optional(),\n status: z.enum(['stable', 'beta', 'deprecated', 'experimental']).optional(),\n since: z.string().optional(),\n figma: z.string().url().optional(),\n figmaProps: z.record(figmaPropMappingSchema).optional(),\n});\n\nexport const fragmentUsageSchema = z.object({\n when: z.array(z.string()).min(1),\n whenNot: z.array(z.string()).min(1),\n guidelines: z.array(z.string()).optional(),\n accessibility: z.array(z.string()).optional(),\n});\n\nexport const propTypeSchema: z.ZodType<string> = z.enum([\n 'string',\n 'number',\n 'boolean',\n 'enum',\n 'function',\n 'node',\n 'element',\n 'object',\n 'array',\n 'union',\n 'custom',\n]);\n\nexport const propDefinitionSchema = z.object({\n type: propTypeSchema,\n values: z.array(z.string()).readonly().optional(),\n default: z.unknown().optional(),\n description: z.string().optional(),\n required: z.boolean().optional(),\n constraints: z.array(z.string()).optional(),\n typeDetails: z.record(z.unknown()).optional(),\n});\n\nexport const relationshipTypeSchema = z.enum([\n 'alternative',\n 'sibling',\n 'parent',\n 'child',\n 'composition',\n 'complementary',\n 'used-by',\n]);\n\nexport const componentRelationSchema = z.object({\n component: z.string().min(1),\n relationship: relationshipTypeSchema,\n note: z.string().min(1),\n});\n\nexport const fragmentVariantSchema = z.object({\n name: z.string().min(1),\n description: z.string().min(1),\n render: z.function().returns(z.unknown()),\n code: z.string().optional(),\n figma: z.string().url().optional(),\n});\n\n/**\n * Schema for banned patterns in codebase\n */\nexport const fragmentBanSchema = z.object({\n pattern: z.string().min(1),\n message: z.string().min(1),\n});\n\n/**\n * Schema for agent-optimized contract metadata\n */\nexport const fragmentContractSchema = z.object({\n propsSummary: z.array(z.string()).optional(),\n a11yRules: z.array(z.string()).optional(),\n bans: z.array(fragmentBanSchema).optional(),\n scenarioTags: z.array(z.string()).optional(),\n});\n\n/**\n * Schema for provenance tracking of generated fragments\n */\nexport const fragmentGeneratedSchema = z.object({\n source: z.enum(['storybook', 'manual', 'ai']),\n sourceFile: z.string().optional(),\n confidence: z.number().min(0).max(1).optional(),\n timestamp: z.string().datetime().optional(),\n});\n\n/**\n * Schema for AI-specific metadata for playground context generation\n */\nexport const aiMetadataSchema = z.object({\n compositionPattern: z.enum(['compound', 'simple', 'controlled']).optional(),\n subComponents: z.array(z.string()).optional(),\n requiredChildren: z.array(z.string()).optional(),\n commonPatterns: z.array(z.string()).optional(),\n});\n\n/**\n * Schema for block definitions\n */\nexport const blockDefinitionSchema = z.object({\n name: z.string().min(1),\n description: z.string().min(1),\n category: z.string().min(1),\n components: z.array(z.string().min(1)).min(1),\n code: z.string().min(1),\n tags: z.array(z.string()).optional(),\n});\n\nexport const fragmentDefinitionSchema = z.object({\n component: z.any(), // Allow any component type (function, class, forwardRef, etc.)\n meta: fragmentMetaSchema,\n usage: fragmentUsageSchema,\n props: z.record(propDefinitionSchema),\n relations: z.array(componentRelationSchema).optional(),\n variants: z.array(fragmentVariantSchema), // Allow empty variants array\n contract: fragmentContractSchema.optional(),\n ai: aiMetadataSchema.optional(),\n _generated: fragmentGeneratedSchema.optional(),\n});\n\n/**\n * Config schema - validates required fields, passes through optional config objects.\n * Type definitions are in types.ts - schema just ensures basic structure.\n */\nexport const fragmentsConfigSchema = z.object({\n include: z.array(z.string()).min(1),\n exclude: z.array(z.string()).optional(),\n components: z.array(z.string()).optional(),\n outFile: z.string().optional(),\n framework: z.enum(['react', 'vue', 'svelte']).optional(),\n figmaFile: z.string().url().optional(),\n figmaToken: z.string().optional(),\n screenshots: z.object({}).passthrough().optional(),\n service: z.object({}).passthrough().optional(),\n registry: z.object({}).passthrough().optional(),\n tokens: z.object({\n include: z.array(z.string()).min(1),\n }).passthrough().optional(),\n});\n\n/**\n * @deprecated Use blockDefinitionSchema instead\n */\nexport const recipeDefinitionSchema = blockDefinitionSchema;\n"],"mappings":"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","names":[]}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { createRequire as __banner_createRequire } from 'module'; const require = __banner_createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
|
-
BRAND,
|
|
4
3
|
fragmentsConfigSchema
|
|
5
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-P33AKQJW.js";
|
|
5
|
+
import {
|
|
6
|
+
BRAND
|
|
7
|
+
} from "./chunk-EKLMXTWU.js";
|
|
6
8
|
|
|
7
9
|
// src/core/config.ts
|
|
8
10
|
import { existsSync } from "fs";
|
|
@@ -65,253 +67,6 @@ ${errors}`);
|
|
|
65
67
|
}
|
|
66
68
|
}
|
|
67
69
|
|
|
68
|
-
// src/core/discovery.ts
|
|
69
|
-
import { resolve as resolve2, dirname as dirname2 } from "path";
|
|
70
|
-
import { readFile } from "fs/promises";
|
|
71
|
-
import { existsSync as existsSync2 } from "fs";
|
|
72
|
-
import fg from "fast-glob";
|
|
73
|
-
async function discoverBlockFiles(configDir, exclude) {
|
|
74
|
-
const patterns = [
|
|
75
|
-
`**/*${BRAND.blockFileExtension}`,
|
|
76
|
-
`**/*${BRAND.recipeFileExtension}`
|
|
77
|
-
];
|
|
78
|
-
const files = await fg(patterns, {
|
|
79
|
-
cwd: configDir,
|
|
80
|
-
ignore: exclude ?? ["**/node_modules/**", "**/dist/**"],
|
|
81
|
-
absolute: false
|
|
82
|
-
});
|
|
83
|
-
return files.map((relativePath) => ({
|
|
84
|
-
relativePath,
|
|
85
|
-
absolutePath: resolve2(configDir, relativePath)
|
|
86
|
-
}));
|
|
87
|
-
}
|
|
88
|
-
async function discoverFragmentFiles(config, configDir) {
|
|
89
|
-
const files = await fg(config.include, {
|
|
90
|
-
cwd: configDir,
|
|
91
|
-
ignore: config.exclude ?? [],
|
|
92
|
-
absolute: false
|
|
93
|
-
});
|
|
94
|
-
return files.map((relativePath) => ({
|
|
95
|
-
relativePath,
|
|
96
|
-
absolutePath: resolve2(configDir, relativePath)
|
|
97
|
-
}));
|
|
98
|
-
}
|
|
99
|
-
async function discoverComponentFiles(config, configDir) {
|
|
100
|
-
if (!config.components || config.components.length === 0) {
|
|
101
|
-
return [];
|
|
102
|
-
}
|
|
103
|
-
const files = await fg(config.components, {
|
|
104
|
-
cwd: configDir,
|
|
105
|
-
ignore: [
|
|
106
|
-
...config.exclude ?? [],
|
|
107
|
-
// Exclude fragment files themselves
|
|
108
|
-
...config.include,
|
|
109
|
-
// Exclude test files
|
|
110
|
-
"**/*.test.*",
|
|
111
|
-
"**/*.spec.*",
|
|
112
|
-
"**/__tests__/**"
|
|
113
|
-
],
|
|
114
|
-
absolute: false
|
|
115
|
-
});
|
|
116
|
-
return files.map((relativePath) => ({
|
|
117
|
-
relativePath,
|
|
118
|
-
absolutePath: resolve2(configDir, relativePath)
|
|
119
|
-
}));
|
|
120
|
-
}
|
|
121
|
-
function extractComponentName(filePath) {
|
|
122
|
-
const parts = filePath.replace(/\\/g, "/").split("/");
|
|
123
|
-
const fileName = parts[parts.length - 1];
|
|
124
|
-
if (fileName === "index.tsx" || fileName === "index.ts") {
|
|
125
|
-
return parts[parts.length - 2] ?? "Unknown";
|
|
126
|
-
}
|
|
127
|
-
return fileName.replace(/\.(tsx?|jsx?)$/, "");
|
|
128
|
-
}
|
|
129
|
-
var DEFAULT_COMPONENT_PATTERNS = [
|
|
130
|
-
"src/components/**/*.tsx",
|
|
131
|
-
"src/components/**/index.tsx",
|
|
132
|
-
"components/**/*.tsx",
|
|
133
|
-
"lib/components/**/*.tsx",
|
|
134
|
-
"packages/*/src/components/**/*.tsx"
|
|
135
|
-
];
|
|
136
|
-
var DEFAULT_EXCLUDE_PATTERNS = [
|
|
137
|
-
"**/*.test.*",
|
|
138
|
-
"**/*.spec.*",
|
|
139
|
-
"**/*.stories.*",
|
|
140
|
-
"**/*.story.*",
|
|
141
|
-
"**/__tests__/**",
|
|
142
|
-
"**/__mocks__/**",
|
|
143
|
-
"**/node_modules/**",
|
|
144
|
-
"**/dist/**"
|
|
145
|
-
];
|
|
146
|
-
async function discoverComponentsFromSource(configDir, patterns, exclude) {
|
|
147
|
-
const searchPatterns = patterns && patterns.length > 0 ? patterns : DEFAULT_COMPONENT_PATTERNS;
|
|
148
|
-
const excludePatterns = [
|
|
149
|
-
...DEFAULT_EXCLUDE_PATTERNS,
|
|
150
|
-
...exclude ?? []
|
|
151
|
-
];
|
|
152
|
-
const files = await fg(searchPatterns, {
|
|
153
|
-
cwd: configDir,
|
|
154
|
-
ignore: excludePatterns,
|
|
155
|
-
absolute: false
|
|
156
|
-
});
|
|
157
|
-
const componentFiles = files.filter((file) => {
|
|
158
|
-
const name = extractComponentName(file);
|
|
159
|
-
return /^[A-Z]/.test(name);
|
|
160
|
-
});
|
|
161
|
-
const storyPatterns = [
|
|
162
|
-
"**/*.stories.tsx",
|
|
163
|
-
"**/*.stories.ts",
|
|
164
|
-
"**/*.story.tsx",
|
|
165
|
-
"**/*.story.ts"
|
|
166
|
-
];
|
|
167
|
-
const storyFiles = await fg(storyPatterns, {
|
|
168
|
-
cwd: configDir,
|
|
169
|
-
ignore: ["**/node_modules/**", "**/dist/**"],
|
|
170
|
-
absolute: false
|
|
171
|
-
});
|
|
172
|
-
const storyMap = /* @__PURE__ */ new Map();
|
|
173
|
-
for (const storyFile of storyFiles) {
|
|
174
|
-
const name = extractComponentName(storyFile.replace(/\.stories?\.(tsx?|jsx?)$/, ".tsx"));
|
|
175
|
-
storyMap.set(name, storyFile);
|
|
176
|
-
}
|
|
177
|
-
const components = [];
|
|
178
|
-
for (const file of componentFiles) {
|
|
179
|
-
const name = extractComponentName(file);
|
|
180
|
-
const absolutePath = resolve2(configDir, file);
|
|
181
|
-
const storyFile = storyMap.get(name);
|
|
182
|
-
components.push({
|
|
183
|
-
name,
|
|
184
|
-
sourcePath: absolutePath,
|
|
185
|
-
relativePath: file,
|
|
186
|
-
storyPath: storyFile ? resolve2(configDir, storyFile) : void 0
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
components.sort((a, b) => a.name.localeCompare(b.name));
|
|
190
|
-
return components;
|
|
191
|
-
}
|
|
192
|
-
async function discoverComponentsFromBarrel(barrelPath, configDir) {
|
|
193
|
-
const absoluteBarrelPath = resolve2(configDir, barrelPath);
|
|
194
|
-
if (!existsSync2(absoluteBarrelPath)) {
|
|
195
|
-
return [];
|
|
196
|
-
}
|
|
197
|
-
const content = await readFile(absoluteBarrelPath, "utf-8");
|
|
198
|
-
const components = [];
|
|
199
|
-
const exportRegex = /export\s+(?:\*|{([^}]+)})\s+from\s+['"]([^'"]+)['"]/g;
|
|
200
|
-
let match;
|
|
201
|
-
while ((match = exportRegex.exec(content)) !== null) {
|
|
202
|
-
const exportedNames = match[1];
|
|
203
|
-
const importPath = match[2];
|
|
204
|
-
const barrelDir = dirname2(absoluteBarrelPath);
|
|
205
|
-
let resolvedPath = resolve2(barrelDir, importPath);
|
|
206
|
-
if (!resolvedPath.endsWith(".tsx") && !resolvedPath.endsWith(".ts")) {
|
|
207
|
-
if (existsSync2(`${resolvedPath}.tsx`)) {
|
|
208
|
-
resolvedPath = `${resolvedPath}.tsx`;
|
|
209
|
-
} else if (existsSync2(`${resolvedPath}.ts`)) {
|
|
210
|
-
resolvedPath = `${resolvedPath}.ts`;
|
|
211
|
-
} else if (existsSync2(`${resolvedPath}/index.tsx`)) {
|
|
212
|
-
resolvedPath = `${resolvedPath}/index.tsx`;
|
|
213
|
-
} else if (existsSync2(`${resolvedPath}/index.ts`)) {
|
|
214
|
-
resolvedPath = `${resolvedPath}/index.ts`;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
if (!existsSync2(resolvedPath)) {
|
|
218
|
-
continue;
|
|
219
|
-
}
|
|
220
|
-
if (exportedNames) {
|
|
221
|
-
const names = exportedNames.split(",").map((n) => n.trim().split(/\s+as\s+/)[0].trim());
|
|
222
|
-
for (const name of names) {
|
|
223
|
-
if (/^[A-Z]/.test(name)) {
|
|
224
|
-
const relativePath = resolvedPath.replace(configDir + "/", "");
|
|
225
|
-
components.push({
|
|
226
|
-
name,
|
|
227
|
-
sourcePath: resolvedPath,
|
|
228
|
-
relativePath
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
} else {
|
|
233
|
-
const name = extractComponentName(importPath);
|
|
234
|
-
if (/^[A-Z]/.test(name)) {
|
|
235
|
-
const relativePath = resolvedPath.replace(configDir + "/", "");
|
|
236
|
-
components.push({
|
|
237
|
-
name,
|
|
238
|
-
sourcePath: resolvedPath,
|
|
239
|
-
relativePath
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
return components;
|
|
245
|
-
}
|
|
246
|
-
var DEFAULT_TOKEN_PATTERNS = [
|
|
247
|
-
"src/**/tokens/**/_variables.scss",
|
|
248
|
-
"src/**/tokens/**/variables.scss",
|
|
249
|
-
"src/**/styles/**/variables.scss",
|
|
250
|
-
"src/**/styles/**/tokens.scss",
|
|
251
|
-
"src/**/styles/**/variables.css",
|
|
252
|
-
"src/**/theme/**/_variables.scss",
|
|
253
|
-
"src/**/theme/**/tokens.css"
|
|
254
|
-
];
|
|
255
|
-
async function discoverTokenFiles(configDir, patterns, exclude) {
|
|
256
|
-
const searchPatterns = patterns && patterns.length > 0 ? patterns : DEFAULT_TOKEN_PATTERNS;
|
|
257
|
-
const files = await fg(searchPatterns, {
|
|
258
|
-
cwd: configDir,
|
|
259
|
-
ignore: exclude ?? ["**/node_modules/**", "**/dist/**"],
|
|
260
|
-
absolute: false
|
|
261
|
-
});
|
|
262
|
-
return files.map((relativePath) => ({
|
|
263
|
-
relativePath,
|
|
264
|
-
absolutePath: resolve2(configDir, relativePath)
|
|
265
|
-
}));
|
|
266
|
-
}
|
|
267
|
-
async function discoverInstalledFragments(projectRoot) {
|
|
268
|
-
const pkgJsonPath = resolve2(projectRoot, "package.json");
|
|
269
|
-
if (!existsSync2(pkgJsonPath)) return [];
|
|
270
|
-
const pkgJson = JSON.parse(await readFile(pkgJsonPath, "utf-8"));
|
|
271
|
-
const allDeps = { ...pkgJson.dependencies, ...pkgJson.devDependencies };
|
|
272
|
-
const results = [];
|
|
273
|
-
for (const depName of Object.keys(allDeps)) {
|
|
274
|
-
const depDir = resolve2(projectRoot, "node_modules", depName);
|
|
275
|
-
const depPkgPath = resolve2(depDir, "package.json");
|
|
276
|
-
if (!existsSync2(depPkgPath)) continue;
|
|
277
|
-
const depPkg = JSON.parse(await readFile(depPkgPath, "utf-8"));
|
|
278
|
-
if (!depPkg.fragments) continue;
|
|
279
|
-
const files = await fg(
|
|
280
|
-
[`src/**/*${BRAND.fileExtension}`, "src/**/*.stories.tsx"],
|
|
281
|
-
{ cwd: depDir, ignore: ["**/node_modules/**"], absolute: false }
|
|
282
|
-
);
|
|
283
|
-
for (const rel of files) {
|
|
284
|
-
results.push({
|
|
285
|
-
relativePath: `${depName}/${rel}`,
|
|
286
|
-
absolutePath: resolve2(depDir, rel)
|
|
287
|
-
});
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
return results;
|
|
291
|
-
}
|
|
292
|
-
async function discoverAllComponents(configDir, options = {}) {
|
|
293
|
-
const componentsMap = /* @__PURE__ */ new Map();
|
|
294
|
-
const sourceComponents = await discoverComponentsFromSource(
|
|
295
|
-
configDir,
|
|
296
|
-
options.patterns,
|
|
297
|
-
options.exclude
|
|
298
|
-
);
|
|
299
|
-
for (const comp of sourceComponents) {
|
|
300
|
-
componentsMap.set(comp.name, comp);
|
|
301
|
-
}
|
|
302
|
-
if (options.barrelFiles && options.barrelFiles.length > 0) {
|
|
303
|
-
for (const barrelFile of options.barrelFiles) {
|
|
304
|
-
const barrelComponents = await discoverComponentsFromBarrel(barrelFile, configDir);
|
|
305
|
-
for (const comp of barrelComponents) {
|
|
306
|
-
if (!componentsMap.has(comp.name)) {
|
|
307
|
-
componentsMap.set(comp.name, comp);
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
return Array.from(componentsMap.values()).sort((a, b) => a.name.localeCompare(b.name));
|
|
313
|
-
}
|
|
314
|
-
|
|
315
70
|
// src/core/generators/typescript-extractor.ts
|
|
316
71
|
import ts from "typescript";
|
|
317
72
|
import { readFileSync } from "fs";
|
|
@@ -562,8 +317,8 @@ function getJSDocDefault(node) {
|
|
|
562
317
|
|
|
563
318
|
// src/core/generators/registry.ts
|
|
564
319
|
import { readFileSync as readFileSync2 } from "fs";
|
|
565
|
-
import { relative, dirname as
|
|
566
|
-
import
|
|
320
|
+
import { relative, dirname as dirname2, basename, join } from "path";
|
|
321
|
+
import fg from "fast-glob";
|
|
567
322
|
async function generateRegistry(options) {
|
|
568
323
|
const {
|
|
569
324
|
projectRoot,
|
|
@@ -581,18 +336,18 @@ async function generateRegistry(options) {
|
|
|
581
336
|
} = registryOptions;
|
|
582
337
|
const errors = [];
|
|
583
338
|
const warnings = [];
|
|
584
|
-
const storyFiles = await
|
|
339
|
+
const storyFiles = await fg(storyPatterns, {
|
|
585
340
|
cwd: projectRoot,
|
|
586
341
|
ignore: ["**/node_modules/**"],
|
|
587
342
|
absolute: true
|
|
588
343
|
});
|
|
589
344
|
const storyMap = /* @__PURE__ */ new Map();
|
|
590
345
|
for (const storyPath of storyFiles) {
|
|
591
|
-
const storyDir =
|
|
592
|
-
const storyBase =
|
|
346
|
+
const storyDir = dirname2(storyPath);
|
|
347
|
+
const storyBase = basename(storyPath).replace(/\.stories\.(tsx?|jsx?)$/, "");
|
|
593
348
|
storyMap.set(`${storyDir}/${storyBase}`, storyPath);
|
|
594
349
|
}
|
|
595
|
-
const componentFiles = await
|
|
350
|
+
const componentFiles = await fg(componentPatterns, {
|
|
596
351
|
cwd: projectRoot,
|
|
597
352
|
ignore: [
|
|
598
353
|
"**/node_modules/**",
|
|
@@ -608,13 +363,13 @@ async function generateRegistry(options) {
|
|
|
608
363
|
BRAND.componentsDir,
|
|
609
364
|
`*${BRAND.fileExtension}`
|
|
610
365
|
);
|
|
611
|
-
const fragmentFiles = await
|
|
366
|
+
const fragmentFiles = await fg(fragmentPattern, {
|
|
612
367
|
cwd: projectRoot,
|
|
613
368
|
absolute: true
|
|
614
369
|
});
|
|
615
370
|
const fragmentMap = /* @__PURE__ */ new Map();
|
|
616
371
|
for (const fragmentPath of fragmentFiles) {
|
|
617
|
-
const fragmentName =
|
|
372
|
+
const fragmentName = basename(fragmentPath).replace(BRAND.fileExtension, "");
|
|
618
373
|
try {
|
|
619
374
|
const content = readFileSync2(fragmentPath, "utf-8");
|
|
620
375
|
const fragment = JSON.parse(content);
|
|
@@ -643,8 +398,8 @@ async function generateRegistry(options) {
|
|
|
643
398
|
if (publicOnly && !extracted.exports.includes(componentName)) {
|
|
644
399
|
continue;
|
|
645
400
|
}
|
|
646
|
-
const componentDir =
|
|
647
|
-
const baseNameWithoutExt =
|
|
401
|
+
const componentDir = dirname2(filePath);
|
|
402
|
+
const baseNameWithoutExt = basename(filePath).replace(/\.(tsx?|jsx?)$/, "");
|
|
648
403
|
const storyPath = storyMap.get(`${componentDir}/${baseNameWithoutExt}`);
|
|
649
404
|
if (requireStory && !storyPath) {
|
|
650
405
|
continue;
|
|
@@ -1025,7 +780,7 @@ function estimateTokens(text) {
|
|
|
1025
780
|
|
|
1026
781
|
// src/core/loader.ts
|
|
1027
782
|
import { unlink } from "fs/promises";
|
|
1028
|
-
import { dirname as
|
|
783
|
+
import { dirname as dirname3, basename as basename2, join as join2 } from "path";
|
|
1029
784
|
import { pathToFileURL } from "url";
|
|
1030
785
|
import { build } from "esbuild";
|
|
1031
786
|
var DEFINE_FRAGMENT_SHIM = `
|
|
@@ -1066,8 +821,8 @@ async function loadFragmentFile(absolutePath) {
|
|
|
1066
821
|
const module = await import(fileUrl);
|
|
1067
822
|
return module.default ?? null;
|
|
1068
823
|
}
|
|
1069
|
-
const sourceDir =
|
|
1070
|
-
const baseName =
|
|
824
|
+
const sourceDir = dirname3(absolutePath);
|
|
825
|
+
const baseName = basename2(absolutePath, `.${ext}`);
|
|
1071
826
|
const tempFile = join2(sourceDir, `.${baseName}.fragments-temp-${Date.now()}.cjs`);
|
|
1072
827
|
try {
|
|
1073
828
|
await build({
|
|
@@ -1520,8 +1275,8 @@ function extractLiteralValue(expr) {
|
|
|
1520
1275
|
}
|
|
1521
1276
|
|
|
1522
1277
|
// src/core/previewLoader.ts
|
|
1523
|
-
import { existsSync as
|
|
1524
|
-
import { join as join3, resolve as
|
|
1278
|
+
import { existsSync as existsSync3 } from "fs";
|
|
1279
|
+
import { join as join3, resolve as resolve2 } from "path";
|
|
1525
1280
|
var PREVIEW_FILES = [
|
|
1526
1281
|
"preview.tsx",
|
|
1527
1282
|
"preview.ts",
|
|
@@ -1531,7 +1286,7 @@ var PREVIEW_FILES = [
|
|
|
1531
1286
|
function findPreviewConfigPath(storybookDir) {
|
|
1532
1287
|
for (const fileName of PREVIEW_FILES) {
|
|
1533
1288
|
const filePath = join3(storybookDir, fileName);
|
|
1534
|
-
if (
|
|
1289
|
+
if (existsSync3(filePath)) {
|
|
1535
1290
|
return filePath;
|
|
1536
1291
|
}
|
|
1537
1292
|
}
|
|
@@ -1543,7 +1298,7 @@ function findStorybookDir(projectRoot) {
|
|
|
1543
1298
|
join3(projectRoot, "storybook")
|
|
1544
1299
|
];
|
|
1545
1300
|
for (const dir of possiblePaths) {
|
|
1546
|
-
if (
|
|
1301
|
+
if (existsSync3(dir)) {
|
|
1547
1302
|
return dir;
|
|
1548
1303
|
}
|
|
1549
1304
|
}
|
|
@@ -1593,18 +1348,11 @@ export default {
|
|
|
1593
1348
|
// src/core/importAnalyzer.ts
|
|
1594
1349
|
import ts3 from "typescript";
|
|
1595
1350
|
import { readFileSync as readFileSync3 } from "fs";
|
|
1596
|
-
import { dirname as
|
|
1351
|
+
import { dirname as dirname4, basename as basename3 } from "path";
|
|
1597
1352
|
|
|
1598
1353
|
export {
|
|
1599
1354
|
findConfigFile,
|
|
1600
1355
|
loadConfig,
|
|
1601
|
-
discoverBlockFiles,
|
|
1602
|
-
discoverFragmentFiles,
|
|
1603
|
-
discoverComponentFiles,
|
|
1604
|
-
extractComponentName,
|
|
1605
|
-
discoverTokenFiles,
|
|
1606
|
-
discoverInstalledFragments,
|
|
1607
|
-
discoverAllComponents,
|
|
1608
1356
|
loadFragmentFile,
|
|
1609
1357
|
parseFragmentFile,
|
|
1610
1358
|
findPreviewConfigPath,
|
|
@@ -1614,4 +1362,4 @@ export {
|
|
|
1614
1362
|
generateRegistry,
|
|
1615
1363
|
generateContextMd
|
|
1616
1364
|
};
|
|
1617
|
-
//# sourceMappingURL=chunk-
|
|
1365
|
+
//# sourceMappingURL=chunk-R6IZZSE7.js.map
|