@fragments-sdk/cli 0.10.1 → 0.12.1
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/dist/ai-client-I6MDWNYA.js +21 -0
- package/dist/bin.js +292 -367
- package/dist/bin.js.map +1 -1
- package/dist/{chunk-PW7QTQA6.js → chunk-4OC7FTJB.js} +2 -2
- package/dist/{chunk-HRFUSSZI.js → chunk-AM4MRTMN.js} +2 -2
- package/dist/{chunk-5G3VZH43.js → chunk-GVDSFQ4E.js} +281 -351
- package/dist/chunk-GVDSFQ4E.js.map +1 -0
- package/dist/chunk-JJ2VRTBU.js +626 -0
- package/dist/chunk-JJ2VRTBU.js.map +1 -0
- package/dist/{chunk-D5PYOXEI.js → chunk-LVWFOLUZ.js} +148 -13
- package/dist/{chunk-D5PYOXEI.js.map → chunk-LVWFOLUZ.js.map} +1 -1
- package/dist/{chunk-WXSR2II7.js → chunk-OQKMEFOS.js} +58 -6
- package/dist/chunk-OQKMEFOS.js.map +1 -0
- package/dist/chunk-SXTKFDCR.js +104 -0
- package/dist/chunk-SXTKFDCR.js.map +1 -0
- package/dist/chunk-T5OMVL7E.js +443 -0
- package/dist/chunk-T5OMVL7E.js.map +1 -0
- package/dist/{chunk-ZM4ZQZWZ.js → chunk-TPWGL2XS.js} +39 -37
- package/dist/chunk-TPWGL2XS.js.map +1 -0
- package/dist/{chunk-OQO55NKV.js → chunk-WFS63PCW.js} +85 -11
- package/dist/chunk-WFS63PCW.js.map +1 -0
- package/dist/core/index.js +9 -1
- package/dist/{discovery-NEOY4MPN.js → discovery-ZJQSXF56.js} +3 -3
- package/dist/{generate-FBHSXR3D.js → generate-RJFS2JWA.js} +4 -4
- package/dist/index.js +7 -6
- package/dist/index.js.map +1 -1
- package/dist/init-ZSX3NRCZ.js +636 -0
- package/dist/init-ZSX3NRCZ.js.map +1 -0
- package/dist/mcp-bin.js +2 -2
- package/dist/{scan-CJF2DOQW.js → scan-3PMCJ4RB.js} +6 -6
- package/dist/scan-generate-SYU4PYZD.js +1115 -0
- package/dist/scan-generate-SYU4PYZD.js.map +1 -0
- package/dist/{service-TQYWY65E.js → service-VMGNJZ42.js} +3 -3
- package/dist/snapshot-XOISO2IS.js +139 -0
- package/dist/snapshot-XOISO2IS.js.map +1 -0
- package/dist/{static-viewer-NUBFPKWH.js → static-viewer-5GXH2MGE.js} +3 -3
- package/dist/static-viewer-5GXH2MGE.js.map +1 -0
- package/dist/{test-Z5LVO724.js → test-SI4NSHQX.js} +4 -4
- package/dist/{tokens-CE46OTMD.js → tokens-T6SIVUT5.js} +5 -5
- package/dist/{viewer-DNMNC5VS.js → viewer-7ZEAFBVN.js} +80 -58
- package/dist/viewer-7ZEAFBVN.js.map +1 -0
- package/package.json +6 -14
- package/src/ai-client.ts +156 -0
- package/src/bin.ts +74 -2
- package/src/build.ts +95 -33
- package/src/commands/__tests__/drift-sync.test.ts +252 -0
- package/src/commands/__tests__/scan-generate.test.ts +497 -45
- package/src/commands/enhance.ts +11 -35
- package/src/commands/init.ts +296 -193
- package/src/commands/scan-generate.ts +740 -139
- package/src/commands/scan.ts +37 -32
- package/src/commands/setup.ts +143 -52
- package/src/commands/snapshot.ts +197 -0
- package/src/commands/sync.ts +357 -0
- package/src/commands/validate.ts +43 -1
- package/src/core/component-extractor.test.ts +282 -0
- package/src/core/component-extractor.ts +1030 -0
- package/src/core/discovery.ts +93 -7
- package/src/service/enhance/props-extractor.ts +235 -13
- package/src/validators.ts +236 -0
- package/src/viewer/__tests__/viewer-integration.test.ts +85 -74
- package/src/viewer/server.ts +37 -22
- package/src/viewer/vite-plugin.ts +25 -9
- package/dist/chunk-5G3VZH43.js.map +0 -1
- package/dist/chunk-OQO55NKV.js.map +0 -1
- package/dist/chunk-WXSR2II7.js.map +0 -1
- package/dist/chunk-ZM4ZQZWZ.js.map +0 -1
- package/dist/init-NDQXUWDU.js +0 -796
- package/dist/init-NDQXUWDU.js.map +0 -1
- package/dist/scan-generate-SJAN5MVI.js +0 -691
- package/dist/scan-generate-SJAN5MVI.js.map +0 -1
- package/dist/viewer-DNMNC5VS.js.map +0 -1
- package/src/ai.ts +0 -266
- package/src/commands/init-framework.ts +0 -414
- package/src/mcp/bin.ts +0 -36
- package/src/migrate/bin.ts +0 -114
- package/src/theme/index.ts +0 -77
- package/src/viewer/__tests__/a11y-fixes.test.ts +0 -358
- package/src/viewer/__tests__/jsx-parser.test.ts +0 -502
- package/src/viewer/__tests__/render-utils.test.ts +0 -232
- package/src/viewer/__tests__/style-utils.test.ts +0 -404
- package/src/viewer/assets/fragments-logo.ts +0 -4
- package/src/viewer/assets/fragments_logo.png +0 -0
- package/src/viewer/bin.ts +0 -86
- package/src/viewer/cli/health.ts +0 -256
- package/src/viewer/cli/index.ts +0 -33
- package/src/viewer/cli/scan.ts +0 -124
- package/src/viewer/cli/utils.ts +0 -174
- package/src/viewer/components/AccessibilityPanel.tsx +0 -1457
- package/src/viewer/components/ActionCapture.tsx +0 -172
- package/src/viewer/components/ActionsPanel.tsx +0 -332
- package/src/viewer/components/AllVariantsPreview.tsx +0 -78
- package/src/viewer/components/App.tsx +0 -582
- package/src/viewer/components/BottomPanel.tsx +0 -288
- package/src/viewer/components/CodePanel.naming.test.tsx +0 -59
- package/src/viewer/components/CodePanel.tsx +0 -118
- package/src/viewer/components/CommandPalette.tsx +0 -392
- package/src/viewer/components/ComponentDocView.tsx +0 -164
- package/src/viewer/components/ComponentGraph.tsx +0 -380
- package/src/viewer/components/ComponentHeader.tsx +0 -88
- package/src/viewer/components/ContractPanel.tsx +0 -241
- package/src/viewer/components/EmptyVariantMessage.tsx +0 -54
- package/src/viewer/components/ErrorBoundary.tsx +0 -97
- package/src/viewer/components/FigmaEmbed.tsx +0 -238
- package/src/viewer/components/FragmentEditor.tsx +0 -525
- package/src/viewer/components/FragmentRenderer.tsx +0 -61
- package/src/viewer/components/HeaderSearch.tsx +0 -24
- package/src/viewer/components/HealthDashboard.tsx +0 -441
- package/src/viewer/components/HmrStatusIndicator.tsx +0 -61
- package/src/viewer/components/Icons.tsx +0 -479
- package/src/viewer/components/InteractionsPanel.tsx +0 -757
- package/src/viewer/components/IsolatedPreviewFrame.tsx +0 -346
- package/src/viewer/components/IsolatedRender.tsx +0 -113
- package/src/viewer/components/KeyboardShortcutsHelp.tsx +0 -53
- package/src/viewer/components/LandingPage.tsx +0 -421
- package/src/viewer/components/Layout.tsx +0 -27
- package/src/viewer/components/LeftSidebar.tsx +0 -472
- package/src/viewer/components/LoadErrorMessage.tsx +0 -102
- package/src/viewer/components/MultiViewportPreview.tsx +0 -522
- package/src/viewer/components/NoVariantsMessage.tsx +0 -59
- package/src/viewer/components/PanelShell.tsx +0 -161
- package/src/viewer/components/PerformancePanel.tsx +0 -304
- package/src/viewer/components/PreviewArea.tsx +0 -472
- package/src/viewer/components/PreviewAside.tsx +0 -168
- package/src/viewer/components/PreviewFrameHost.tsx +0 -303
- package/src/viewer/components/PreviewPane.tsx +0 -149
- package/src/viewer/components/PreviewToolbar.tsx +0 -80
- package/src/viewer/components/PropsEditor.tsx +0 -506
- package/src/viewer/components/PropsTable.tsx +0 -111
- package/src/viewer/components/RelationsSection.tsx +0 -88
- package/src/viewer/components/ResizablePanel.tsx +0 -271
- package/src/viewer/components/RightSidebar.tsx +0 -102
- package/src/viewer/components/RuntimeToolsRegistrar.tsx +0 -17
- package/src/viewer/components/ScreenshotButton.tsx +0 -90
- package/src/viewer/components/Sidebar.tsx +0 -169
- package/src/viewer/components/SkeletonLoader.tsx +0 -161
- package/src/viewer/components/ThemeProvider.tsx +0 -42
- package/src/viewer/components/Toast.tsx +0 -3
- package/src/viewer/components/TokenStylePanel.tsx +0 -699
- package/src/viewer/components/TopToolbar.tsx +0 -159
- package/src/viewer/components/UsageSection.tsx +0 -95
- package/src/viewer/components/VariantMatrix.tsx +0 -388
- package/src/viewer/components/VariantRenderer.tsx +0 -131
- package/src/viewer/components/VariantTabs.tsx +0 -40
- package/src/viewer/components/ViewerHeader.tsx +0 -69
- package/src/viewer/components/ViewerStateSync.tsx +0 -52
- package/src/viewer/components/ViewportSelector.tsx +0 -172
- package/src/viewer/components/WebMCPDevTools.tsx +0 -503
- package/src/viewer/components/WebMCPIntegration.tsx +0 -47
- package/src/viewer/components/WebMCPStatusIndicator.tsx +0 -60
- package/src/viewer/components/_future/CreatePage.tsx +0 -836
- package/src/viewer/components/viewer-utils.ts +0 -16
- package/src/viewer/composition-renderer.ts +0 -381
- package/src/viewer/constants/index.ts +0 -1
- package/src/viewer/constants/ui.ts +0 -166
- package/src/viewer/entry.tsx +0 -335
- package/src/viewer/hooks/index.ts +0 -2
- package/src/viewer/hooks/useA11yCache.ts +0 -383
- package/src/viewer/hooks/useA11yService.ts +0 -364
- package/src/viewer/hooks/useActions.ts +0 -138
- package/src/viewer/hooks/useAppState.ts +0 -147
- package/src/viewer/hooks/useCompiledFragments.ts +0 -42
- package/src/viewer/hooks/useFigmaIntegration.ts +0 -132
- package/src/viewer/hooks/useHmrStatus.ts +0 -109
- package/src/viewer/hooks/useKeyboardShortcuts.ts +0 -270
- package/src/viewer/hooks/usePreviewBridge.ts +0 -347
- package/src/viewer/hooks/useScrollSpy.ts +0 -78
- package/src/viewer/hooks/useUrlState.ts +0 -318
- package/src/viewer/hooks/useViewSettings.ts +0 -111
- package/src/viewer/index.html +0 -28
- package/src/viewer/intelligence/healthReport.ts +0 -505
- package/src/viewer/intelligence/styleDrift.ts +0 -340
- package/src/viewer/intelligence/usageScanner.ts +0 -309
- package/src/viewer/jsx-parser.ts +0 -486
- package/src/viewer/preview-frame-entry.tsx +0 -25
- package/src/viewer/preview-frame.html +0 -125
- package/src/viewer/public/favicon.ico +0 -0
- package/src/viewer/render-template.html +0 -68
- package/src/viewer/styles/globals.css +0 -278
- package/src/viewer/types/a11y.ts +0 -197
- package/src/viewer/utils/a11y-fixes.ts +0 -509
- package/src/viewer/utils/actionExport.ts +0 -372
- package/src/viewer/utils/colorSchemes.ts +0 -201
- package/src/viewer/utils/detectRelationships.ts +0 -256
- package/src/viewer/vendor/shared/src/ComponentDocContent.module.scss +0 -10
- package/src/viewer/vendor/shared/src/ComponentDocContent.module.scss.d.ts +0 -2
- package/src/viewer/vendor/shared/src/ComponentDocContent.tsx +0 -274
- package/src/viewer/vendor/shared/src/DocsHeaderBar.tsx +0 -129
- package/src/viewer/vendor/shared/src/DocsPageAsideHost.tsx +0 -89
- package/src/viewer/vendor/shared/src/DocsPageShell.tsx +0 -124
- package/src/viewer/vendor/shared/src/DocsSearchCommand.tsx +0 -99
- package/src/viewer/vendor/shared/src/DocsSidebarNav.tsx +0 -66
- package/src/viewer/vendor/shared/src/PropsTable.module.scss +0 -68
- package/src/viewer/vendor/shared/src/PropsTable.module.scss.d.ts +0 -2
- package/src/viewer/vendor/shared/src/PropsTable.tsx +0 -76
- package/src/viewer/vendor/shared/src/VariantPreviewCard.module.scss +0 -114
- package/src/viewer/vendor/shared/src/VariantPreviewCard.module.scss.d.ts +0 -2
- package/src/viewer/vendor/shared/src/VariantPreviewCard.tsx +0 -137
- package/src/viewer/vendor/shared/src/docs-data/index.ts +0 -32
- package/src/viewer/vendor/shared/src/docs-data/mcp-configs.ts +0 -72
- package/src/viewer/vendor/shared/src/docs-data/palettes.ts +0 -75
- package/src/viewer/vendor/shared/src/docs-data/setup-examples.ts +0 -55
- package/src/viewer/vendor/shared/src/docs-layout.scss +0 -28
- package/src/viewer/vendor/shared/src/docs-layout.scss.d.ts +0 -2
- package/src/viewer/vendor/shared/src/index.ts +0 -34
- package/src/viewer/vendor/shared/src/types.ts +0 -53
- package/src/viewer/webmcp/__tests__/analytics.test.ts +0 -108
- package/src/viewer/webmcp/analytics.ts +0 -165
- package/src/viewer/webmcp/index.ts +0 -3
- package/src/viewer/webmcp/posthog-bridge.ts +0 -39
- package/src/viewer/webmcp/runtime-tools.ts +0 -152
- package/src/viewer/webmcp/scan-utils.ts +0 -135
- package/src/viewer/webmcp/use-tool-analytics.ts +0 -69
- package/src/viewer/webmcp/viewer-state.ts +0 -45
- /package/dist/{discovery-NEOY4MPN.js.map → ai-client-I6MDWNYA.js.map} +0 -0
- /package/dist/{chunk-PW7QTQA6.js.map → chunk-4OC7FTJB.js.map} +0 -0
- /package/dist/{chunk-HRFUSSZI.js.map → chunk-AM4MRTMN.js.map} +0 -0
- /package/dist/{scan-CJF2DOQW.js.map → discovery-ZJQSXF56.js.map} +0 -0
- /package/dist/{generate-FBHSXR3D.js.map → generate-RJFS2JWA.js.map} +0 -0
- /package/dist/{service-TQYWY65E.js.map → scan-3PMCJ4RB.js.map} +0 -0
- /package/dist/{static-viewer-NUBFPKWH.js.map → service-VMGNJZ42.js.map} +0 -0
- /package/dist/{test-Z5LVO724.js.map → test-SI4NSHQX.js.map} +0 -0
- /package/dist/{tokens-CE46OTMD.js.map → tokens-T6SIVUT5.js.map} +0 -0
|
@@ -5,16 +5,16 @@ import {
|
|
|
5
5
|
generatePreviewModule,
|
|
6
6
|
loadConfig,
|
|
7
7
|
parseFragmentFile
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-AM4MRTMN.js";
|
|
9
9
|
import {
|
|
10
10
|
discoverFragmentFiles,
|
|
11
11
|
discoverInstalledFragments
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-OQKMEFOS.js";
|
|
13
13
|
import "./chunk-D2CDBRNU.js";
|
|
14
14
|
import {
|
|
15
15
|
BRAND,
|
|
16
16
|
generateContext
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-WFS63PCW.js";
|
|
18
18
|
import "./chunk-Z7EY4VHE.js";
|
|
19
19
|
|
|
20
20
|
// src/viewer/server.ts
|
|
@@ -25,13 +25,14 @@ import {
|
|
|
25
25
|
} from "vite";
|
|
26
26
|
import react from "@vitejs/plugin-react";
|
|
27
27
|
import { resolve as resolve2, dirname as dirname2, join } from "path";
|
|
28
|
-
import { existsSync, realpathSync } from "fs";
|
|
28
|
+
import { existsSync as existsSync2, realpathSync } from "fs";
|
|
29
29
|
import { readFile as readFile2 } from "fs/promises";
|
|
30
30
|
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
31
31
|
|
|
32
32
|
// src/viewer/vite-plugin.ts
|
|
33
33
|
import { resolve, dirname } from "path";
|
|
34
34
|
import { fileURLToPath } from "url";
|
|
35
|
+
import { existsSync } from "fs";
|
|
35
36
|
import { readFile } from "fs/promises";
|
|
36
37
|
import { transform } from "esbuild";
|
|
37
38
|
import svgr from "vite-plugin-svgr";
|
|
@@ -354,13 +355,25 @@ function compareNumericValues(value1, value2, tolerance) {
|
|
|
354
355
|
|
|
355
356
|
// src/viewer/vite-plugin.ts
|
|
356
357
|
var __dirname = dirname(fileURLToPath(import.meta.url));
|
|
357
|
-
var
|
|
358
|
+
var monorepoViewerSrc = resolve(__dirname, "..", "..", "viewer", "src");
|
|
359
|
+
var npmViewerSrc = (() => {
|
|
360
|
+
const cliNm = resolve(__dirname, "..", "node_modules", "@fragments-sdk", "viewer", "src");
|
|
361
|
+
if (existsSync(cliNm)) return cliNm;
|
|
362
|
+
let dir = resolve(__dirname, "..");
|
|
363
|
+
for (let i = 0; i < 5; i++) {
|
|
364
|
+
const candidate = resolve(dir, "node_modules", "@fragments-sdk", "viewer", "src");
|
|
365
|
+
if (existsSync(candidate)) return candidate;
|
|
366
|
+
dir = resolve(dir, "..");
|
|
367
|
+
}
|
|
368
|
+
return null;
|
|
369
|
+
})();
|
|
370
|
+
var viewerAssetsRoot = existsSync(monorepoViewerSrc) ? monorepoViewerSrc : npmViewerSrc ?? monorepoViewerSrc;
|
|
358
371
|
var pendingRenders = /* @__PURE__ */ new Map();
|
|
359
372
|
var sharedRenderPool = null;
|
|
360
373
|
var browserPoolModule = null;
|
|
361
374
|
async function getSharedRenderPool() {
|
|
362
375
|
if (!browserPoolModule) {
|
|
363
|
-
browserPoolModule = await import("./service-
|
|
376
|
+
browserPoolModule = await import("./service-VMGNJZ42.js");
|
|
364
377
|
}
|
|
365
378
|
if (!sharedRenderPool) {
|
|
366
379
|
sharedRenderPool = new browserPoolModule.BrowserPool({
|
|
@@ -603,7 +616,7 @@ function fragmentsPlugin(options) {
|
|
|
603
616
|
const address = _server.httpServer?.address();
|
|
604
617
|
const port = typeof address === "object" && address ? address.port : 6006;
|
|
605
618
|
const renderViewport = viewport || { width: 800, height: 600 };
|
|
606
|
-
const { FigmaClient, bufferToBase64Url } = await import("./service-
|
|
619
|
+
const { FigmaClient, bufferToBase64Url } = await import("./service-VMGNJZ42.js");
|
|
607
620
|
const figmaClient = new FigmaClient({
|
|
608
621
|
accessToken: figmaToken
|
|
609
622
|
});
|
|
@@ -694,7 +707,7 @@ function fragmentsPlugin(options) {
|
|
|
694
707
|
);
|
|
695
708
|
return;
|
|
696
709
|
}
|
|
697
|
-
const { FigmaClient } = await import("./service-
|
|
710
|
+
const { FigmaClient } = await import("./service-VMGNJZ42.js");
|
|
698
711
|
const figmaClient = new FigmaClient({ accessToken: figmaToken });
|
|
699
712
|
const { fileKey, nodeId } = figmaClient.parseUrl(figmaUrl);
|
|
700
713
|
const figmaDesignProps = await figmaClient.getNodeProperties(
|
|
@@ -735,7 +748,7 @@ function fragmentsPlugin(options) {
|
|
|
735
748
|
}));
|
|
736
749
|
return;
|
|
737
750
|
}
|
|
738
|
-
const { getSharedTokenRegistry } = await import("./service-
|
|
751
|
+
const { getSharedTokenRegistry } = await import("./service-VMGNJZ42.js");
|
|
739
752
|
const registry = getSharedTokenRegistry();
|
|
740
753
|
if (!registry.isInitialized()) {
|
|
741
754
|
await registry.initialize(config.tokens, projectRoot);
|
|
@@ -795,7 +808,7 @@ function fragmentsPlugin(options) {
|
|
|
795
808
|
}));
|
|
796
809
|
return;
|
|
797
810
|
}
|
|
798
|
-
const { getSharedTokenRegistry } = await import("./service-
|
|
811
|
+
const { getSharedTokenRegistry } = await import("./service-VMGNJZ42.js");
|
|
799
812
|
const registry = getSharedTokenRegistry();
|
|
800
813
|
if (!registry.isInitialized()) {
|
|
801
814
|
await registry.initialize(config.tokens, projectRoot);
|
|
@@ -857,7 +870,7 @@ function fragmentsPlugin(options) {
|
|
|
857
870
|
res.end(JSON.stringify({ error: "Could not resolve fragment file path" }));
|
|
858
871
|
return;
|
|
859
872
|
}
|
|
860
|
-
const { getSharedTokenRegistry } = await import("./service-
|
|
873
|
+
const { getSharedTokenRegistry } = await import("./service-VMGNJZ42.js");
|
|
861
874
|
const registry = getSharedTokenRegistry();
|
|
862
875
|
if (!registry.isInitialized()) {
|
|
863
876
|
await registry.initialize(config.tokens, projectRoot);
|
|
@@ -1035,7 +1048,7 @@ function fragmentsPlugin(options) {
|
|
|
1035
1048
|
}
|
|
1036
1049
|
if (!config.tokens || !config.tokens.include || config.tokens.include.length === 0) {
|
|
1037
1050
|
try {
|
|
1038
|
-
const { discoverTokenFiles } = await import("./discovery-
|
|
1051
|
+
const { discoverTokenFiles } = await import("./discovery-ZJQSXF56.js");
|
|
1039
1052
|
const discovered = await discoverTokenFiles(projectRoot);
|
|
1040
1053
|
if (discovered.length > 0) {
|
|
1041
1054
|
config.tokens = {
|
|
@@ -1072,7 +1085,7 @@ function fragmentsPlugin(options) {
|
|
|
1072
1085
|
const {
|
|
1073
1086
|
getSharedTokenRegistry,
|
|
1074
1087
|
generateTokenPatches
|
|
1075
|
-
} = await import("./service-
|
|
1088
|
+
} = await import("./service-VMGNJZ42.js");
|
|
1076
1089
|
const registry = getSharedTokenRegistry();
|
|
1077
1090
|
if (!registry.isInitialized()) {
|
|
1078
1091
|
await registry.initialize(config.tokens, projectRoot);
|
|
@@ -1860,10 +1873,11 @@ async function loadFragmentsForContext(_server, _fragmentFiles, _config, configD
|
|
|
1860
1873
|
}
|
|
1861
1874
|
}
|
|
1862
1875
|
async function serveViewerHTML(res, server) {
|
|
1863
|
-
const
|
|
1864
|
-
const
|
|
1876
|
+
const viewerSrc = viewerAssetsRoot;
|
|
1877
|
+
const viewerPkgRoot = resolve(viewerSrc, "..");
|
|
1878
|
+
const entryPath = resolve(viewerSrc, "entry.tsx");
|
|
1865
1879
|
try {
|
|
1866
|
-
let html = await readFile(resolve(
|
|
1880
|
+
let html = await readFile(resolve(viewerPkgRoot, "index.html"), "utf-8");
|
|
1867
1881
|
html = html.replace("/src/entry.tsx", entryPath);
|
|
1868
1882
|
html = await server.transformIndexHtml("/fragments/", html);
|
|
1869
1883
|
res.writeHead(200, { "Content-Type": "text/html" });
|
|
@@ -1875,10 +1889,10 @@ async function serveViewerHTML(res, server) {
|
|
|
1875
1889
|
}
|
|
1876
1890
|
}
|
|
1877
1891
|
async function servePreviewFrameHTML(res, server) {
|
|
1878
|
-
const
|
|
1879
|
-
const entryPath = resolve(
|
|
1892
|
+
const viewerSrc = viewerAssetsRoot;
|
|
1893
|
+
const entryPath = resolve(viewerSrc, "preview-frame-entry.tsx");
|
|
1880
1894
|
try {
|
|
1881
|
-
let html = await readFile(resolve(
|
|
1895
|
+
let html = await readFile(resolve(viewerSrc, "preview-frame.html"), "utf-8");
|
|
1882
1896
|
html = html.replace("/src/preview-frame-entry.tsx", entryPath);
|
|
1883
1897
|
html = await server.transformIndexHtml("/fragments/preview/", html);
|
|
1884
1898
|
res.writeHead(200, { "Content-Type": "text/html" });
|
|
@@ -1971,10 +1985,10 @@ async function captureA11yAudit(url, viewport) {
|
|
|
1971
1985
|
}
|
|
1972
1986
|
}
|
|
1973
1987
|
async function serveRenderHTML(res, server, renderScript) {
|
|
1974
|
-
const
|
|
1988
|
+
const viewerRoot = viewerAssetsRoot;
|
|
1975
1989
|
try {
|
|
1976
1990
|
let html = await readFile(
|
|
1977
|
-
resolve(
|
|
1991
|
+
resolve(viewerRoot, "render-template.html"),
|
|
1978
1992
|
"utf-8"
|
|
1979
1993
|
);
|
|
1980
1994
|
html = html.replace(
|
|
@@ -2180,7 +2194,7 @@ async function loadFullFragmentForCompare(_server, _fragmentFiles, componentName
|
|
|
2180
2194
|
}
|
|
2181
2195
|
}
|
|
2182
2196
|
async function compareImages(image1Base64, image2Base64, threshold) {
|
|
2183
|
-
const { DiffEngine, base64UrlToBuffer, bufferToBase64Url } = await import("./service-
|
|
2197
|
+
const { DiffEngine, base64UrlToBuffer, bufferToBase64Url } = await import("./service-VMGNJZ42.js");
|
|
2184
2198
|
const { PNG } = await import("pngjs");
|
|
2185
2199
|
const buffer1 = base64UrlToBuffer(image1Base64);
|
|
2186
2200
|
const buffer2 = base64UrlToBuffer(image2Base64);
|
|
@@ -2278,68 +2292,73 @@ async function resizePng(buffer, srcWidth, srcHeight, targetWidth, targetHeight)
|
|
|
2278
2292
|
// src/viewer/server.ts
|
|
2279
2293
|
var __dirname2 = dirname2(fileURLToPath2(import.meta.url));
|
|
2280
2294
|
var cliPackageRoot = resolve2(__dirname2, "..");
|
|
2281
|
-
var viewerRoot = resolve2(cliPackageRoot, "src/viewer");
|
|
2282
2295
|
var packagesRoot = resolve2(cliPackageRoot, "..");
|
|
2283
2296
|
var localUiLibRoot = resolve2(packagesRoot, "../libs/ui/src");
|
|
2284
|
-
var localSharedLibRoot = resolve2(packagesRoot, "../libs/shared/src");
|
|
2285
|
-
var vendoredSharedLibRoot = resolve2(viewerRoot, "vendor/shared/src");
|
|
2286
2297
|
var localWebMCPRoot = resolve2(packagesRoot, "webmcp/src");
|
|
2287
2298
|
var localContextRoot = resolve2(packagesRoot, "context/src");
|
|
2299
|
+
function resolveViewerRoot(nodeModulesDir) {
|
|
2300
|
+
const monorepoPath = resolve2(packagesRoot, "viewer");
|
|
2301
|
+
if (existsSync2(join(monorepoPath, "src/shared/index.ts"))) {
|
|
2302
|
+
return monorepoPath;
|
|
2303
|
+
}
|
|
2304
|
+
const npmPath = join(nodeModulesDir, "@fragments-sdk/viewer");
|
|
2305
|
+
if (existsSync2(npmPath)) {
|
|
2306
|
+
return npmPath;
|
|
2307
|
+
}
|
|
2308
|
+
const cliNpmPath = join(cliPackageRoot, "node_modules/@fragments-sdk/viewer");
|
|
2309
|
+
if (existsSync2(cliNpmPath)) {
|
|
2310
|
+
return cliNpmPath;
|
|
2311
|
+
}
|
|
2312
|
+
return monorepoPath;
|
|
2313
|
+
}
|
|
2288
2314
|
function resolveUiLib(nodeModulesDir) {
|
|
2289
2315
|
const localIndex = join(localUiLibRoot, "index.ts");
|
|
2290
|
-
if (
|
|
2316
|
+
if (existsSync2(localIndex)) {
|
|
2291
2317
|
return localUiLibRoot;
|
|
2292
2318
|
}
|
|
2293
2319
|
const installedUi = join(nodeModulesDir, "@fragments-sdk/ui/src/index.ts");
|
|
2294
|
-
if (
|
|
2320
|
+
if (existsSync2(installedUi)) {
|
|
2295
2321
|
return resolve2(dirname2(installedUi));
|
|
2296
2322
|
}
|
|
2297
2323
|
const installedUiDist = join(nodeModulesDir, "@fragments-sdk/ui");
|
|
2298
|
-
if (
|
|
2324
|
+
if (existsSync2(installedUiDist)) {
|
|
2299
2325
|
return installedUiDist;
|
|
2300
2326
|
}
|
|
2301
2327
|
return localUiLibRoot;
|
|
2302
2328
|
}
|
|
2303
2329
|
function resolveWebMCPLib(nodeModulesDir) {
|
|
2304
2330
|
const localIndex = join(localWebMCPRoot, "index.ts");
|
|
2305
|
-
if (
|
|
2331
|
+
if (existsSync2(localIndex)) {
|
|
2306
2332
|
return localWebMCPRoot;
|
|
2307
2333
|
}
|
|
2308
2334
|
const installedSrc = join(nodeModulesDir, "@fragments-sdk/webmcp/src/index.ts");
|
|
2309
|
-
if (
|
|
2335
|
+
if (existsSync2(installedSrc)) {
|
|
2310
2336
|
return resolve2(dirname2(installedSrc));
|
|
2311
2337
|
}
|
|
2312
2338
|
const installedDist = join(nodeModulesDir, "@fragments-sdk/webmcp");
|
|
2313
|
-
if (
|
|
2339
|
+
if (existsSync2(installedDist)) {
|
|
2314
2340
|
return installedDist;
|
|
2315
2341
|
}
|
|
2316
2342
|
return localWebMCPRoot;
|
|
2317
2343
|
}
|
|
2318
2344
|
function resolveContextLib(nodeModulesDir) {
|
|
2319
2345
|
const localIndex = join(localContextRoot, "index.ts");
|
|
2320
|
-
if (
|
|
2346
|
+
if (existsSync2(localIndex)) {
|
|
2321
2347
|
return localContextRoot;
|
|
2322
2348
|
}
|
|
2323
2349
|
const installedSrc = join(nodeModulesDir, "@fragments-sdk/context/src/index.ts");
|
|
2324
|
-
if (
|
|
2350
|
+
if (existsSync2(installedSrc)) {
|
|
2325
2351
|
return resolve2(dirname2(installedSrc));
|
|
2326
2352
|
}
|
|
2327
2353
|
const installedDist = join(nodeModulesDir, "@fragments-sdk/context");
|
|
2328
|
-
if (
|
|
2354
|
+
if (existsSync2(installedDist)) {
|
|
2329
2355
|
return installedDist;
|
|
2330
2356
|
}
|
|
2331
2357
|
return localContextRoot;
|
|
2332
2358
|
}
|
|
2333
|
-
function
|
|
2334
|
-
const
|
|
2335
|
-
|
|
2336
|
-
return localSharedLibRoot;
|
|
2337
|
-
}
|
|
2338
|
-
const vendoredIndex = join(vendoredSharedLibRoot, "index.ts");
|
|
2339
|
-
if (existsSync(vendoredIndex)) {
|
|
2340
|
-
return vendoredSharedLibRoot;
|
|
2341
|
-
}
|
|
2342
|
-
return localSharedLibRoot;
|
|
2359
|
+
function resolveViewerLib(nodeModulesDir) {
|
|
2360
|
+
const viewerRoot = resolveViewerRoot(nodeModulesDir);
|
|
2361
|
+
return resolve2(viewerRoot, "src");
|
|
2343
2362
|
}
|
|
2344
2363
|
function cjsInteropPlugin(nodeModulesPath) {
|
|
2345
2364
|
const virtualModules = {
|
|
@@ -2423,7 +2442,7 @@ function optionalPeerDepsPlugin(uiLibRoot) {
|
|
|
2423
2442
|
const availableDeps = /* @__PURE__ */ new Set();
|
|
2424
2443
|
for (const dep of optionalDeps) {
|
|
2425
2444
|
const depPath = join(uiLibRoot, "..", "node_modules", ...dep.split("/"));
|
|
2426
|
-
if (
|
|
2445
|
+
if (existsSync2(depPath)) availableDeps.add(dep);
|
|
2427
2446
|
}
|
|
2428
2447
|
return {
|
|
2429
2448
|
name: "fragments:optional-peer-deps",
|
|
@@ -2461,7 +2480,7 @@ function optionalPeerDepsPlugin(uiLibRoot) {
|
|
|
2461
2480
|
async function detectTsconfigPaths(projectRoot) {
|
|
2462
2481
|
const aliases = {};
|
|
2463
2482
|
const tsconfigPath = join(projectRoot, "tsconfig.json");
|
|
2464
|
-
if (!
|
|
2483
|
+
if (!existsSync2(tsconfigPath)) return aliases;
|
|
2465
2484
|
try {
|
|
2466
2485
|
const content = await readFile2(tsconfigPath, "utf-8");
|
|
2467
2486
|
const cleaned = content.replace(/\/\/.*$/gm, "").replace(/\/\*[\s\S]*?\*\//g, "");
|
|
@@ -2486,10 +2505,10 @@ async function detectStorybookAliases(projectRoot) {
|
|
|
2486
2505
|
const aliases = {};
|
|
2487
2506
|
const assetsDir = resolve2(projectRoot, "assets");
|
|
2488
2507
|
const fontsDir = resolve2(projectRoot, "assets/fonts");
|
|
2489
|
-
if (
|
|
2508
|
+
if (existsSync2(fontsDir)) {
|
|
2490
2509
|
aliases["/fonts"] = fontsDir;
|
|
2491
2510
|
}
|
|
2492
|
-
if (
|
|
2511
|
+
if (existsSync2(assetsDir)) {
|
|
2493
2512
|
aliases["/assets"] = assetsDir;
|
|
2494
2513
|
}
|
|
2495
2514
|
return aliases;
|
|
@@ -2529,16 +2548,17 @@ async function createDevServer(options = {}) {
|
|
|
2529
2548
|
}
|
|
2530
2549
|
const nodeModulesPath = findNodeModules(projectRoot);
|
|
2531
2550
|
const uiLibRoot = resolveUiLib(nodeModulesPath);
|
|
2532
|
-
const
|
|
2551
|
+
const viewerRoot = resolveViewerRoot(nodeModulesPath);
|
|
2552
|
+
const viewerLibRoot = resolveViewerLib(nodeModulesPath);
|
|
2533
2553
|
const webmcpLibRoot = resolveWebMCPLib(nodeModulesPath);
|
|
2534
2554
|
const contextLibRoot = resolveContextLib(nodeModulesPath);
|
|
2535
|
-
const isWebMCPSource =
|
|
2536
|
-
const isContextSource =
|
|
2555
|
+
const isWebMCPSource = existsSync2(join(webmcpLibRoot, "react/index.ts"));
|
|
2556
|
+
const isContextSource = existsSync2(join(contextLibRoot, "types/index.ts"));
|
|
2537
2557
|
console.log(`\u{1F4C1} Using node_modules: ${nodeModulesPath}`);
|
|
2538
2558
|
const tsconfigAliases = await detectTsconfigPaths(projectRoot);
|
|
2539
2559
|
const storybookAliases = await detectStorybookAliases(projectRoot);
|
|
2540
2560
|
const storybookDir = resolve2(projectRoot, ".storybook");
|
|
2541
|
-
const hasStorybookDir =
|
|
2561
|
+
const hasStorybookDir = existsSync2(storybookDir);
|
|
2542
2562
|
if (Object.keys(tsconfigAliases).length > 0) {
|
|
2543
2563
|
console.log(`\u{1F4CE} Detected ${Object.keys(tsconfigAliases).length} tsconfig path alias(es)`);
|
|
2544
2564
|
}
|
|
@@ -2570,7 +2590,7 @@ async function createDevServer(options = {}) {
|
|
|
2570
2590
|
allow: [
|
|
2571
2591
|
viewerRoot,
|
|
2572
2592
|
uiLibRoot,
|
|
2573
|
-
|
|
2593
|
+
viewerLibRoot,
|
|
2574
2594
|
webmcpLibRoot,
|
|
2575
2595
|
contextLibRoot,
|
|
2576
2596
|
projectRoot,
|
|
@@ -2626,8 +2646,10 @@ async function createDevServer(options = {}) {
|
|
|
2626
2646
|
...storybookAliases,
|
|
2627
2647
|
// Resolve @fragments-sdk/ui to local source or installed package
|
|
2628
2648
|
"@fragments-sdk/ui": uiLibRoot,
|
|
2629
|
-
// Resolve @fragments-sdk/
|
|
2630
|
-
"@fragments-sdk/shared":
|
|
2649
|
+
// Resolve @fragments-sdk/viewer subpaths to viewer package source
|
|
2650
|
+
"@fragments-sdk/viewer/shared": join(viewerLibRoot, "shared/index.ts"),
|
|
2651
|
+
"@fragments-sdk/viewer/app": join(viewerLibRoot, "app/index.ts"),
|
|
2652
|
+
"@fragments-sdk/viewer/docs-data": join(viewerLibRoot, "shared/docs-data/index.ts"),
|
|
2631
2653
|
// Resolve @fragments-sdk/webmcp subpaths to monorepo source or installed package
|
|
2632
2654
|
"@fragments-sdk/webmcp/react": isWebMCPSource ? join(webmcpLibRoot, "react/index.ts") : join(webmcpLibRoot, "dist/react/index.js"),
|
|
2633
2655
|
"@fragments-sdk/webmcp/fragments": isWebMCPSource ? join(webmcpLibRoot, "fragments/index.ts") : join(webmcpLibRoot, "dist/fragments/index.js"),
|
|
@@ -2666,7 +2688,7 @@ function findNodeModules(startDir) {
|
|
|
2666
2688
|
let current = startDir;
|
|
2667
2689
|
while (current !== dirname2(current)) {
|
|
2668
2690
|
const nodeModulesPath = join(current, "node_modules");
|
|
2669
|
-
if (
|
|
2691
|
+
if (existsSync2(join(nodeModulesPath, "react"))) {
|
|
2670
2692
|
return nodeModulesPath;
|
|
2671
2693
|
}
|
|
2672
2694
|
current = dirname2(current);
|
|
@@ -2682,7 +2704,7 @@ function findViteConfig(projectRoot) {
|
|
|
2682
2704
|
];
|
|
2683
2705
|
for (const file of configFiles) {
|
|
2684
2706
|
const path = join(projectRoot, file);
|
|
2685
|
-
if (
|
|
2707
|
+
if (existsSync2(path)) {
|
|
2686
2708
|
return path;
|
|
2687
2709
|
}
|
|
2688
2710
|
}
|
|
@@ -2705,4 +2727,4 @@ export {
|
|
|
2705
2727
|
createDevServer,
|
|
2706
2728
|
fragmentsPlugin
|
|
2707
2729
|
};
|
|
2708
|
-
//# sourceMappingURL=viewer-
|
|
2730
|
+
//# sourceMappingURL=viewer-7ZEAFBVN.js.map
|