@buoy-gg/assets 7.0.35 → 7.0.38

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 (165) hide show
  1. package/README.md +41 -12
  2. package/lib/commonjs/capture/expo.js +1 -46
  3. package/lib/commonjs/capture/install.js +1 -78
  4. package/lib/commonjs/capture/isBuoyAsset.js +1 -0
  5. package/lib/commonjs/capture/measure.js +1 -186
  6. package/lib/commonjs/capture/metroGraph.js +1 -148
  7. package/lib/commonjs/capture/registry.js +1 -127
  8. package/lib/commonjs/components/AssetDetail.js +1 -214
  9. package/lib/commonjs/components/AssetImage.js +1 -0
  10. package/lib/commonjs/components/AssetRow.js +1 -233
  11. package/lib/commonjs/components/AssetsFilterBar.js +1 -96
  12. package/lib/commonjs/components/AssetsHeader.js +1 -72
  13. package/lib/commonjs/components/AssetsIcon.js +1 -19
  14. package/lib/commonjs/components/AssetsListControls.js +1 -96
  15. package/lib/commonjs/components/AssetsModal.js +1 -347
  16. package/lib/commonjs/components/ScanNotice.js +1 -0
  17. package/lib/commonjs/components/optionalExpoImage.js +1 -0
  18. package/lib/commonjs/components/optionalExpoImage.web.js +1 -0
  19. package/lib/commonjs/export.js +1 -62
  20. package/lib/commonjs/format.js +1 -59
  21. package/lib/commonjs/hooks/useAssetRecords.js +1 -22
  22. package/lib/commonjs/hooks/useAssetScanStatus.js +1 -0
  23. package/lib/commonjs/index.js +1 -313
  24. package/lib/commonjs/preset.js +1 -39
  25. package/lib/commonjs/remote.js +1 -65
  26. package/lib/commonjs/state.js +1 -51
  27. package/lib/commonjs/store/assetStore.js +1 -241
  28. package/lib/commonjs/store/baseline.js +1 -173
  29. package/lib/commonjs/store/insights.js +1 -120
  30. package/lib/commonjs/sync/assetsSyncAdapter.js +1 -157
  31. package/lib/commonjs/types.js +1 -2
  32. package/lib/commonjs/utils/deviceScale.js +1 -50
  33. package/lib/commonjs/utils/testIDs.js +1 -114
  34. package/lib/module/capture/expo.js +1 -41
  35. package/lib/module/capture/install.js +1 -72
  36. package/lib/module/capture/isBuoyAsset.js +1 -0
  37. package/lib/module/capture/measure.js +1 -179
  38. package/lib/module/capture/metroGraph.js +1 -141
  39. package/lib/module/capture/registry.js +1 -120
  40. package/lib/module/components/AssetDetail.js +1 -210
  41. package/lib/module/components/AssetImage.js +1 -0
  42. package/lib/module/components/AssetRow.js +1 -229
  43. package/lib/module/components/AssetsFilterBar.js +1 -92
  44. package/lib/module/components/AssetsHeader.js +1 -68
  45. package/lib/module/components/AssetsIcon.js +1 -12
  46. package/lib/module/components/AssetsListControls.js +1 -92
  47. package/lib/module/components/AssetsModal.js +1 -342
  48. package/lib/module/components/ScanNotice.js +1 -0
  49. package/lib/module/components/optionalExpoImage.js +1 -0
  50. package/lib/module/components/optionalExpoImage.web.js +1 -0
  51. package/lib/module/export.js +1 -57
  52. package/lib/module/format.js +1 -51
  53. package/lib/module/hooks/useAssetRecords.js +1 -18
  54. package/lib/module/hooks/useAssetScanStatus.js +1 -0
  55. package/lib/module/index.js +1 -63
  56. package/lib/module/preset.js +1 -35
  57. package/lib/module/remote.js +1 -58
  58. package/lib/module/state.js +1 -47
  59. package/lib/module/store/assetStore.js +1 -226
  60. package/lib/module/store/baseline.js +1 -165
  61. package/lib/module/store/insights.js +1 -116
  62. package/lib/module/sync/assetsSyncAdapter.js +1 -153
  63. package/lib/module/types.js +1 -2
  64. package/lib/module/utils/deviceScale.js +1 -46
  65. package/lib/module/utils/testIDs.js +1 -103
  66. package/lib/typescript/capture/isBuoyAsset.d.ts +9 -0
  67. package/lib/typescript/capture/registry.d.ts +1 -1
  68. package/lib/typescript/components/AssetDetail.d.ts +2 -2
  69. package/lib/typescript/components/AssetImage.d.ts +9 -0
  70. package/lib/typescript/components/AssetsFilterBar.d.ts +3 -2
  71. package/lib/typescript/components/AssetsHeader.d.ts +2 -1
  72. package/lib/typescript/components/AssetsListControls.d.ts +2 -9
  73. package/lib/typescript/components/ScanNotice.d.ts +7 -0
  74. package/lib/typescript/components/optionalExpoImage.d.ts +13 -0
  75. package/lib/typescript/components/optionalExpoImage.web.d.ts +3 -0
  76. package/lib/typescript/hooks/useAssetScanStatus.d.ts +6 -0
  77. package/lib/typescript/state.d.ts +2 -0
  78. package/lib/typescript/store/assetStore.d.ts +3 -1
  79. package/lib/typescript/types.d.ts +3 -0
  80. package/lib/typescript/utils/testIDs.d.ts +2 -5
  81. package/package.json +8 -4
  82. package/lib/commonjs/capture/expo.js.map +0 -1
  83. package/lib/commonjs/capture/install.js.map +0 -1
  84. package/lib/commonjs/capture/measure.js.map +0 -1
  85. package/lib/commonjs/capture/metroGraph.js.map +0 -1
  86. package/lib/commonjs/capture/registry.js.map +0 -1
  87. package/lib/commonjs/components/AssetDetail.js.map +0 -1
  88. package/lib/commonjs/components/AssetRow.js.map +0 -1
  89. package/lib/commonjs/components/AssetsFilterBar.js.map +0 -1
  90. package/lib/commonjs/components/AssetsHeader.js.map +0 -1
  91. package/lib/commonjs/components/AssetsIcon.js.map +0 -1
  92. package/lib/commonjs/components/AssetsListControls.js.map +0 -1
  93. package/lib/commonjs/components/AssetsModal.js.map +0 -1
  94. package/lib/commonjs/components/BaselineBar.js +0 -115
  95. package/lib/commonjs/components/BaselineBar.js.map +0 -1
  96. package/lib/commonjs/export.js.map +0 -1
  97. package/lib/commonjs/format.js.map +0 -1
  98. package/lib/commonjs/hooks/useAssetRecords.js.map +0 -1
  99. package/lib/commonjs/index.js.map +0 -1
  100. package/lib/commonjs/preset.js.map +0 -1
  101. package/lib/commonjs/remote.js.map +0 -1
  102. package/lib/commonjs/state.js.map +0 -1
  103. package/lib/commonjs/store/assetStore.js.map +0 -1
  104. package/lib/commonjs/store/baseline.js.map +0 -1
  105. package/lib/commonjs/store/insights.js.map +0 -1
  106. package/lib/commonjs/sync/assetsSyncAdapter.js.map +0 -1
  107. package/lib/commonjs/types.js.map +0 -1
  108. package/lib/commonjs/utils/deviceScale.js.map +0 -1
  109. package/lib/commonjs/utils/testIDs.js.map +0 -1
  110. package/lib/module/capture/expo.js.map +0 -1
  111. package/lib/module/capture/install.js.map +0 -1
  112. package/lib/module/capture/measure.js.map +0 -1
  113. package/lib/module/capture/metroGraph.js.map +0 -1
  114. package/lib/module/capture/registry.js.map +0 -1
  115. package/lib/module/components/AssetDetail.js.map +0 -1
  116. package/lib/module/components/AssetRow.js.map +0 -1
  117. package/lib/module/components/AssetsFilterBar.js.map +0 -1
  118. package/lib/module/components/AssetsHeader.js.map +0 -1
  119. package/lib/module/components/AssetsIcon.js.map +0 -1
  120. package/lib/module/components/AssetsListControls.js.map +0 -1
  121. package/lib/module/components/AssetsModal.js.map +0 -1
  122. package/lib/module/components/BaselineBar.js +0 -111
  123. package/lib/module/components/BaselineBar.js.map +0 -1
  124. package/lib/module/export.js.map +0 -1
  125. package/lib/module/format.js.map +0 -1
  126. package/lib/module/hooks/useAssetRecords.js.map +0 -1
  127. package/lib/module/index.js.map +0 -1
  128. package/lib/module/preset.js.map +0 -1
  129. package/lib/module/remote.js.map +0 -1
  130. package/lib/module/state.js.map +0 -1
  131. package/lib/module/store/assetStore.js.map +0 -1
  132. package/lib/module/store/baseline.js.map +0 -1
  133. package/lib/module/store/insights.js.map +0 -1
  134. package/lib/module/sync/assetsSyncAdapter.js.map +0 -1
  135. package/lib/module/types.js.map +0 -1
  136. package/lib/module/utils/deviceScale.js.map +0 -1
  137. package/lib/module/utils/testIDs.js.map +0 -1
  138. package/lib/typescript/capture/expo.d.ts.map +0 -1
  139. package/lib/typescript/capture/install.d.ts.map +0 -1
  140. package/lib/typescript/capture/measure.d.ts.map +0 -1
  141. package/lib/typescript/capture/metroGraph.d.ts.map +0 -1
  142. package/lib/typescript/capture/registry.d.ts.map +0 -1
  143. package/lib/typescript/components/AssetDetail.d.ts.map +0 -1
  144. package/lib/typescript/components/AssetRow.d.ts.map +0 -1
  145. package/lib/typescript/components/AssetsFilterBar.d.ts.map +0 -1
  146. package/lib/typescript/components/AssetsHeader.d.ts.map +0 -1
  147. package/lib/typescript/components/AssetsIcon.d.ts.map +0 -1
  148. package/lib/typescript/components/AssetsListControls.d.ts.map +0 -1
  149. package/lib/typescript/components/AssetsModal.d.ts.map +0 -1
  150. package/lib/typescript/components/BaselineBar.d.ts +0 -13
  151. package/lib/typescript/components/BaselineBar.d.ts.map +0 -1
  152. package/lib/typescript/export.d.ts.map +0 -1
  153. package/lib/typescript/format.d.ts.map +0 -1
  154. package/lib/typescript/hooks/useAssetRecords.d.ts.map +0 -1
  155. package/lib/typescript/index.d.ts.map +0 -1
  156. package/lib/typescript/preset.d.ts.map +0 -1
  157. package/lib/typescript/remote.d.ts.map +0 -1
  158. package/lib/typescript/state.d.ts.map +0 -1
  159. package/lib/typescript/store/assetStore.d.ts.map +0 -1
  160. package/lib/typescript/store/baseline.d.ts.map +0 -1
  161. package/lib/typescript/store/insights.d.ts.map +0 -1
  162. package/lib/typescript/sync/assetsSyncAdapter.d.ts.map +0 -1
  163. package/lib/typescript/types.d.ts.map +0 -1
  164. package/lib/typescript/utils/deviceScale.d.ts.map +0 -1
  165. package/lib/typescript/utils/testIDs.d.ts.map +0 -1
@@ -1,62 +1 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.formatAssetMarkdown = formatAssetMarkdown;
7
- exports.formatInventoryMarkdown = formatInventoryMarkdown;
8
- var _format = require("./format");
9
- var _assetStore = require("./store/assetStore");
10
- /**
11
- * Markdown reports for the shared ToolbarCopyButton — the paste-into-your-
12
- * issue-tracker view of the inventory.
13
- */
14
-
15
- function formatAssetMarkdown(record) {
16
- const lines = [`# Asset: ${record.name}.${record.type}`, "", `- Kind: ${record.kind}`, `- Status: ${record.loaded ? "loaded at runtime" : "in bundle, never loaded"}`];
17
- if (record.kind === "image") lines.push(`- Dimensions: ${(0, _format.formatDimensions)(record)} (logical)`);
18
- if (record.scales.length) lines.push(`- Scales: ${(0, _format.formatScales)(record.scales)}`);
19
- if (record.sizeBytes != null && record.sizeSource === "measured") {
20
- lines.push(`- Size (all variants): ${(0, _format.formatBytes)(record.sizeBytes)}`);
21
- }
22
- const estimate = (0, _assetStore.estDecodedBytes)(record);
23
- if (estimate > 0) lines.push(`- Decoded memory: ~${(0, _format.formatBytes)(estimate)}`);
24
- if (record.hash) lines.push(`- Hash: ${record.hash}`);
25
- if (record.httpServerLocation) lines.push(`- Location: ${record.httpServerLocation}`);
26
- if (record.fileSystemLocation) lines.push(`- Source dir: ${record.fileSystemLocation}`);
27
- if (record.resolvedUri) lines.push(`- Resolved URI: ${record.resolvedUri}`);
28
- return lines.join("\n");
29
- }
30
- function formatInventoryMarkdown(records, stats, insights, scanStatus, diff) {
31
- const lines = ["# Asset inventory", "", `${stats.total} assets · ${stats.loaded} loaded · ${stats.neverLoaded} never loaded` + (stats.totalBytes > 0 ? ` · ${(0, _format.formatBytes)(stats.totalBytes)} measured (${stats.measuredCount}/${stats.total})` : "")];
32
- if (scanStatus.fontFamilies.length) {
33
- lines.push(`Fonts loaded: ${scanStatus.fontFamilies.join(", ")}`);
34
- }
35
- if (!scanStatus.graphSupported) {
36
- lines.push(scanStatus.graphError ? `_Metro bundle graph unavailable (${scanStatus.graphError}) — runtime-registered assets only._` : "_No Metro bundle graph — runtime-registered assets only (release build)._");
37
- }
38
- if (diff) {
39
- const net = diff.netBytes != null ? `${diff.netBytes >= 0 ? "+" : "−"}${(0, _format.formatBytes)(Math.abs(diff.netBytes))} net` : "net size unknown";
40
- lines.push("", `## Since baseline (${new Date(diff.baselineSavedAt).toISOString()})`, `- ${diff.added.length} added · ${diff.removed.length} removed · ${diff.grown.length} grew · ${net}`);
41
- for (const gone of diff.removed.slice(0, 20)) {
42
- lines.push(`- removed: ${gone.name}.${gone.type}`);
43
- }
44
- }
45
- const findings = [];
46
- if (insights.neverLoaded.length) findings.push(`- ${insights.neverLoaded.length} shipped but never loaded`);
47
- if (insights.duplicates.length) findings.push(`- ${insights.duplicates.length} duplicate content groups`);
48
- if (insights.webpCandidates.length) findings.push(`- ${insights.webpCandidates.length} WebP conversion candidates`);
49
- if (insights.scaleGaps.length) findings.push(`- ${insights.scaleGaps.length} scale-coverage gaps`);
50
- if (insights.overDecode.length) findings.push(`- ${insights.overDecode.length} images decoding larger than 2× the screen`);
51
- if (insights.heavyGifs.length) findings.push(`- ${insights.heavyGifs.length} heavy GIFs (convert to video/Lottie)`);
52
- if (insights.heavyFonts.length) findings.push(`- ${insights.heavyFonts.length} heavy fonts (subset candidates)`);
53
- if (insights.scaleAnomalies.length) findings.push(`- ${insights.scaleAnomalies.length} scale-variant anomalies (check exports)`);
54
- if (findings.length) lines.push("", "## Findings", ...findings);
55
- lines.push("", "## Assets (largest first)", "", "| Asset | Kind | Dimensions | Scales | Size | Loaded |", "| --- | --- | --- | --- | --- | --- |");
56
- for (const r of records) {
57
- const size = r.sizeBytes != null && r.sizeSource === "measured" ? (0, _format.formatBytes)(r.sizeBytes) : (0, _assetStore.estDecodedBytes)(r) > 0 ? `~${(0, _format.formatBytes)((0, _assetStore.estDecodedBytes)(r))}` : "—";
58
- lines.push(`| ${r.name}.${r.type} | ${r.kind} | ${r.kind === "image" ? (0, _format.formatDimensions)(r) : "—"} | ${(0, _format.formatScales)(r.scales)} | ${size} | ${r.loaded ? "yes" : "NO"} |`);
59
- }
60
- return lines.join("\n");
61
- }
62
- //# sourceMappingURL=export.js.map
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.formatAssetMarkdown=formatAssetMarkdown,exports.formatInventoryMarkdown=formatInventoryMarkdown;var _format=require("./format"),_assetStore=require("./store/assetStore");function formatAssetMarkdown(e){const t=[`# Asset: ${e.name}.${e.type}`,"",`- Kind: ${e.kind}`,"- Status: "+(e.loaded?"loaded at runtime":"not observed in the runtime registry")];"image"===e.kind&&t.push(`- Dimensions: ${(0,_format.formatDimensions)(e)} (logical)`),e.scales.length&&t.push(`- Scales: ${(0,_format.formatScales)(e.scales)}`),null!=e.sizeBytes&&"measured"===e.sizeSource&&t.push(`- Size (all variants): ${(0,_format.formatBytes)(e.sizeBytes)}`);const s=(0,_assetStore.estDecodedBytes)(e);return s>0&&t.push(`- Decoded memory: ~${(0,_format.formatBytes)(s)}`),e.hash&&t.push(`- Hash: ${e.hash}`),e.httpServerLocation&&t.push(`- Location: ${e.httpServerLocation}`),e.fileSystemLocation&&t.push(`- Source dir: ${e.fileSystemLocation}`),e.resolvedUri&&t.push(`- Resolved URI: ${e.resolvedUri}`),t.join("\n")}function formatInventoryMarkdown(e,t,s,o,a){const n=["# Asset inventory","",`${t.total} assets · ${t.loaded} loaded · ${t.neverLoaded} not observed`+(t.totalBytes>0?` · ${(0,_format.formatBytes)(t.totalBytes)} measured (${t.measuredCount}/${t.total})`:"")];if(o.fontFamilies.length&&n.push(`Fonts loaded: ${o.fontFamilies.join(", ")}`),o.graphSupported||n.push(o.graphError?`_Metro bundle graph unavailable (${o.graphError}) — runtime-registered assets only._`:"_No Metro bundle graph — runtime-registered assets only (release build)._"),a){const e=null!=a.netBytes?`${a.netBytes>=0?"+":"−"}${(0,_format.formatBytes)(Math.abs(a.netBytes))} net`:"net size unknown";n.push("",`## Since baseline (${new Date(a.baselineSavedAt).toISOString()})`,`- ${a.added.length} added · ${a.removed.length} removed · ${a.grown.length} grew · ${e}`);for(const e of a.removed.slice(0,20))n.push(`- removed: ${e.name}.${e.type}`)}const r=[];s.neverLoaded.length&&r.push(`- ${s.neverLoaded.length} shipped but not observed`),s.duplicates.length&&r.push(`- ${s.duplicates.length} duplicate content groups`),s.webpCandidates.length&&r.push(`- ${s.webpCandidates.length} WebP conversion candidates`),s.scaleGaps.length&&r.push(`- ${s.scaleGaps.length} scale-coverage gaps`),s.overDecode.length&&r.push(`- ${s.overDecode.length} images decoding larger than 2× the screen`),s.heavyGifs.length&&r.push(`- ${s.heavyGifs.length} heavy GIFs (convert to video/Lottie)`),s.heavyFonts.length&&r.push(`- ${s.heavyFonts.length} heavy fonts (subset candidates)`),s.scaleAnomalies.length&&r.push(`- ${s.scaleAnomalies.length} scale-variant anomalies (check exports)`),r.length&&n.push("","## Findings",...r),n.push("","## Assets (largest first)","","| Asset | Kind | Dimensions | Scales | Size | Loaded |","| --- | --- | --- | --- | --- | --- |");for(const t of e){const e=null!=t.sizeBytes&&"measured"===t.sizeSource?(0,_format.formatBytes)(t.sizeBytes):(0,_assetStore.estDecodedBytes)(t)>0?`~${(0,_format.formatBytes)((0,_assetStore.estDecodedBytes)(t))}`:"—";n.push(`| ${t.name}.${t.type} | ${t.kind} | ${"image"===t.kind?(0,_format.formatDimensions)(t):"—"} | ${(0,_format.formatScales)(t.scales)} | ${e} | ${t.loaded?"yes":"NO"} |`)}return n.join("\n")}
@@ -1,59 +1 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.KIND_LABELS = exports.KIND_COLORS = void 0;
7
- exports.formatBytes = formatBytes;
8
- exports.formatDimensions = formatDimensions;
9
- exports.formatScales = formatScales;
10
- exports.formatSize = formatSize;
11
- /**
12
- * Shared formatting helpers for rows, detail view, and markdown export.
13
- */
14
-
15
- function formatBytes(bytes) {
16
- if (bytes == null || bytes <= 0) return "—";
17
- if (bytes < 1024) return `${bytes} B`;
18
- if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
19
- return `${(bytes / (1024 * 1024)).toFixed(2)} MB`;
20
- }
21
- function formatScales(scales) {
22
- const unique = [...new Set(scales)].sort((a, b) => a - b);
23
- if (!unique.length) return "—";
24
- if (unique.length === 1) return `@${unique[0]}x`;
25
- if (unique.length <= 3) return unique.map(s => `@${s}x`).join(" ");
26
- return `@${unique[0]}x–@${unique[unique.length - 1]}x`;
27
- }
28
- function formatDimensions(record) {
29
- if (record.width == null || record.height == null) return "—";
30
- return `${Math.round(record.width)}×${Math.round(record.height)}`;
31
- }
32
-
33
- /** Display size: measured bytes, or "~" decoded estimate for unmeasured images. */
34
- function formatSize(record, estDecoded) {
35
- if (record.sizeBytes != null && record.sizeSource === "measured") {
36
- return formatBytes(record.sizeBytes);
37
- }
38
- if (estDecoded > 0) return `~${formatBytes(estDecoded)}`;
39
- return "—";
40
- }
41
- const KIND_LABELS = exports.KIND_LABELS = {
42
- image: "IMG",
43
- font: "FONT",
44
- video: "VID",
45
- audio: "AUD",
46
- data: "DATA",
47
- other: "MISC"
48
- };
49
-
50
- /** Family accent per kind — the card's left edge, like network's method bar. */
51
- const KIND_COLORS = exports.KIND_COLORS = {
52
- image: "#2DD4BF",
53
- font: "#C084FC",
54
- video: "#FF9F1C",
55
- audio: "#FF3366",
56
- data: "#00D4FF",
57
- other: "#8E8E93"
58
- };
59
- //# sourceMappingURL=format.js.map
1
+ "use strict";function formatBytes(t){return null==t||t<=0?"—":t<1024?`${t} B`:t<1048576?`${(t/1024).toFixed(1)} KB`:`${(t/1048576).toFixed(2)} MB`}function formatScales(t){const e=[...new Set(t)].sort((t,e)=>t-e);return e.length?1===e.length?`@${e[0]}x`:e.length<=3?e.map(t=>`@${t}x`).join(" "):`@${e[0]}x–@${e[e.length-1]}x`:"—"}function formatDimensions(t){return null==t.width||null==t.height?"—":`${Math.round(t.width)}×${Math.round(t.height)}`}function formatSize(t,e){return null!=t.sizeBytes&&"measured"===t.sizeSource?formatBytes(t.sizeBytes):e>0?`~${formatBytes(e)}`:"—"}Object.defineProperty(exports,"__esModule",{value:!0}),exports.KIND_LABELS=exports.KIND_COLORS=void 0,exports.formatBytes=formatBytes,exports.formatDimensions=formatDimensions,exports.formatScales=formatScales,exports.formatSize=formatSize;const KIND_LABELS=exports.KIND_LABELS={image:"IMG",font:"FONT",video:"VID",audio:"AUD",data:"DATA",other:"MISC"},KIND_COLORS=exports.KIND_COLORS={image:"#2DD4BF",font:"#C084FC",video:"#FF9F1C",audio:"#FF3366",data:"#00D4FF",other:"#8E8E93"};
@@ -1,22 +1 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useAssetRecords = useAssetRecords;
7
- var _react = require("react");
8
- var _assetStore = require("../store/assetStore");
9
- var _insights = require("../store/insights");
10
- /**
11
- * React bindings for the asset store.
12
- */
13
-
14
- function useAssetRecords() {
15
- const snapshot = (0, _react.useSyncExternalStore)(_assetStore.subscribe, _assetStore.getSnapshot, _assetStore.getSnapshot);
16
- return (0, _react.useMemo)(() => ({
17
- records: snapshot,
18
- stats: (0, _assetStore.computeStats)(snapshot),
19
- insights: (0, _insights.computeInsights)(snapshot)
20
- }), [snapshot]);
21
- }
22
- //# sourceMappingURL=useAssetRecords.js.map
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useAssetRecords=useAssetRecords;var _react=require("react"),_assetStore=require("../store/assetStore"),_insights=require("../store/insights");function useAssetRecords(){const e=(0,_react.useSyncExternalStore)(_assetStore.subscribe,_assetStore.getSnapshot,_assetStore.getSnapshot);return(0,_react.useMemo)(()=>({records:e,stats:(0,_assetStore.computeStats)(e),insights:(0,_insights.computeInsights)(e)}),[e])}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getAssetScanSnapshot=getAssetScanSnapshot,exports.useAssetScanStatus=useAssetScanStatus;var _react=require("react"),_install=require("../capture/install"),_assetStore=require("../store/assetStore");let previousRecords,previousStatus;function getAssetScanSnapshot(){const t=(0,_assetStore.getSnapshot)();return t!==previousRecords&&(previousRecords=t,previousStatus=(0,_install.getScanStatus)()),previousStatus}function useAssetScanStatus(){return(0,_react.useSyncExternalStore)(_assetStore.subscribe,getAssetScanSnapshot,getAssetScanSnapshot)}
@@ -1,313 +1 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "ASSETS_ICON_COLOR", {
7
- enumerable: true,
8
- get: function () {
9
- return _AssetsIcon.ASSETS_ICON_COLOR;
10
- }
11
- });
12
- Object.defineProperty(exports, "ASSETS_TEST_IDS", {
13
- enumerable: true,
14
- get: function () {
15
- return _testIDs.ASSETS_TEST_IDS;
16
- }
17
- });
18
- Object.defineProperty(exports, "AssetsIcon", {
19
- enumerable: true,
20
- get: function () {
21
- return _AssetsIcon.AssetsIcon;
22
- }
23
- });
24
- Object.defineProperty(exports, "AssetsModal", {
25
- enumerable: true,
26
- get: function () {
27
- return _AssetsModal.AssetsModal;
28
- }
29
- });
30
- Object.defineProperty(exports, "AssetsToolView", {
31
- enumerable: true,
32
- get: function () {
33
- return _AssetsModal.AssetsToolView;
34
- }
35
- });
36
- Object.defineProperty(exports, "assetBadgeTestID", {
37
- enumerable: true,
38
- get: function () {
39
- return _testIDs.assetBadgeTestID;
40
- }
41
- });
42
- Object.defineProperty(exports, "assetDetailRowTestID", {
43
- enumerable: true,
44
- get: function () {
45
- return _testIDs.assetDetailRowTestID;
46
- }
47
- });
48
- Object.defineProperty(exports, "assetFilterTestID", {
49
- enumerable: true,
50
- get: function () {
51
- return _testIDs.assetFilterTestID;
52
- }
53
- });
54
- Object.defineProperty(exports, "assetFindingTestID", {
55
- enumerable: true,
56
- get: function () {
57
- return _testIDs.assetFindingTestID;
58
- }
59
- });
60
- Object.defineProperty(exports, "assetFontChipTestID", {
61
- enumerable: true,
62
- get: function () {
63
- return _testIDs.assetFontChipTestID;
64
- }
65
- });
66
- Object.defineProperty(exports, "assetRowTestID", {
67
- enumerable: true,
68
- get: function () {
69
- return _testIDs.assetRowTestID;
70
- }
71
- });
72
- Object.defineProperty(exports, "assetSlug", {
73
- enumerable: true,
74
- get: function () {
75
- return _testIDs.assetSlug;
76
- }
77
- });
78
- Object.defineProperty(exports, "assetsSyncAdapter", {
79
- enumerable: true,
80
- get: function () {
81
- return _assetsSyncAdapter.assetsSyncAdapter;
82
- }
83
- });
84
- Object.defineProperty(exports, "assetsToolPreset", {
85
- enumerable: true,
86
- get: function () {
87
- return _preset.assetsToolPreset;
88
- }
89
- });
90
- Object.defineProperty(exports, "clearBaseline", {
91
- enumerable: true,
92
- get: function () {
93
- return _baseline.clearBaseline;
94
- }
95
- });
96
- Object.defineProperty(exports, "clearRecords", {
97
- enumerable: true,
98
- get: function () {
99
- return _assetStore.clearRecords;
100
- }
101
- });
102
- Object.defineProperty(exports, "computeDiff", {
103
- enumerable: true,
104
- get: function () {
105
- return _baseline.computeDiff;
106
- }
107
- });
108
- Object.defineProperty(exports, "computeInsights", {
109
- enumerable: true,
110
- get: function () {
111
- return _insights.computeInsights;
112
- }
113
- });
114
- Object.defineProperty(exports, "computeStats", {
115
- enumerable: true,
116
- get: function () {
117
- return _assetStore.computeStats;
118
- }
119
- });
120
- Object.defineProperty(exports, "createAssetsTool", {
121
- enumerable: true,
122
- get: function () {
123
- return _preset.createAssetsTool;
124
- }
125
- });
126
- Object.defineProperty(exports, "disableAssetsCapture", {
127
- enumerable: true,
128
- get: function () {
129
- return _remote.disableAssetsCapture;
130
- }
131
- });
132
- Object.defineProperty(exports, "estDecodedBytes", {
133
- enumerable: true,
134
- get: function () {
135
- return _assetStore.estDecodedBytes;
136
- }
137
- });
138
- Object.defineProperty(exports, "fetchAssetGraph", {
139
- enumerable: true,
140
- get: function () {
141
- return _metroGraph.fetchAssetGraph;
142
- }
143
- });
144
- Object.defineProperty(exports, "formatAssetMarkdown", {
145
- enumerable: true,
146
- get: function () {
147
- return _export.formatAssetMarkdown;
148
- }
149
- });
150
- Object.defineProperty(exports, "formatInventoryMarkdown", {
151
- enumerable: true,
152
- get: function () {
153
- return _export.formatInventoryMarkdown;
154
- }
155
- });
156
- Object.defineProperty(exports, "getDevServerOrigin", {
157
- enumerable: true,
158
- get: function () {
159
- return _metroGraph.getDevServerOrigin;
160
- }
161
- });
162
- Object.defineProperty(exports, "getDiff", {
163
- enumerable: true,
164
- get: function () {
165
- return _baseline.getDiff;
166
- }
167
- });
168
- Object.defineProperty(exports, "getLoadedFontFamilies", {
169
- enumerable: true,
170
- get: function () {
171
- return _expo.getLoadedFontFamilies;
172
- }
173
- });
174
- Object.defineProperty(exports, "getLocalAssets", {
175
- enumerable: true,
176
- get: function () {
177
- return _expo.getLocalAssets;
178
- }
179
- });
180
- Object.defineProperty(exports, "getRecord", {
181
- enumerable: true,
182
- get: function () {
183
- return _assetStore.getRecord;
184
- }
185
- });
186
- Object.defineProperty(exports, "getScanStatus", {
187
- enumerable: true,
188
- get: function () {
189
- return _install.getScanStatus;
190
- }
191
- });
192
- Object.defineProperty(exports, "getSnapshot", {
193
- enumerable: true,
194
- get: function () {
195
- return _assetStore.getSnapshot;
196
- }
197
- });
198
- Object.defineProperty(exports, "installAssetCapture", {
199
- enumerable: true,
200
- get: function () {
201
- return _install.installAssetCapture;
202
- }
203
- });
204
- Object.defineProperty(exports, "loadBaseline", {
205
- enumerable: true,
206
- get: function () {
207
- return _baseline.loadBaseline;
208
- }
209
- });
210
- Object.defineProperty(exports, "measureSizes", {
211
- enumerable: true,
212
- get: function () {
213
- return _measure.measureSizes;
214
- }
215
- });
216
- Object.defineProperty(exports, "replaceAssetsFromSnapshot", {
217
- enumerable: true,
218
- get: function () {
219
- return _remote.replaceAssetsFromSnapshot;
220
- }
221
- });
222
- Object.defineProperty(exports, "rescan", {
223
- enumerable: true,
224
- get: function () {
225
- return _install.rescan;
226
- }
227
- });
228
- Object.defineProperty(exports, "saveBaseline", {
229
- enumerable: true,
230
- get: function () {
231
- return _baseline.saveBaseline;
232
- }
233
- });
234
- Object.defineProperty(exports, "setRemoteAssetsHandler", {
235
- enumerable: true,
236
- get: function () {
237
- return _remote.setRemoteAssetsHandler;
238
- }
239
- });
240
- Object.defineProperty(exports, "subscribe", {
241
- enumerable: true,
242
- get: function () {
243
- return _assetStore.subscribe;
244
- }
245
- });
246
- Object.defineProperty(exports, "useAssetRecords", {
247
- enumerable: true,
248
- get: function () {
249
- return _useAssetRecords.useAssetRecords;
250
- }
251
- });
252
- var _preset = require("./preset");
253
- var _AssetsModal = require("./components/AssetsModal");
254
- var _AssetsIcon = require("./components/AssetsIcon");
255
- var _install = require("./capture/install");
256
- var _measure = require("./capture/measure");
257
- var _metroGraph = require("./capture/metroGraph");
258
- var _expo = require("./capture/expo");
259
- var _assetStore = require("./store/assetStore");
260
- var _insights = require("./store/insights");
261
- var _baseline = require("./store/baseline");
262
- var _useAssetRecords = require("./hooks/useAssetRecords");
263
- var _export = require("./export");
264
- var _assetsSyncAdapter = require("./sync/assetsSyncAdapter");
265
- var _remote = require("./remote");
266
- var _testIDs = require("./utils/testIDs");
267
- /**
268
- * @buoy-gg/assets — bundled-asset inventory for React Native / Expo.
269
- *
270
- * Enumerates every asset in the app (images, fonts, video, audio, …) via the
271
- * runtime asset registry, enriched in dev with the Metro graph (full-bundle
272
- * coverage, byte sizes, never-loaded detection) and on Expo with loaded font
273
- * families + the updates localAssets map. Zero configuration: importing this
274
- * package installs the (cheap, synchronous) registry capture.
275
- */
276
-
277
- // ---------------------------------------------------------------------------
278
- // Tool preset (FloatingDevTools)
279
- // ---------------------------------------------------------------------------
280
-
281
- // ---------------------------------------------------------------------------
282
- // Components
283
- // ---------------------------------------------------------------------------
284
-
285
- // ---------------------------------------------------------------------------
286
- // Capture / scanning
287
- // ---------------------------------------------------------------------------
288
-
289
- // ---------------------------------------------------------------------------
290
- // Store
291
- // ---------------------------------------------------------------------------
292
-
293
- // ---------------------------------------------------------------------------
294
- // Reports
295
- // ---------------------------------------------------------------------------
296
-
297
- // ---------------------------------------------------------------------------
298
- // External sync (desktop dashboard + MCP)
299
- // ---------------------------------------------------------------------------
300
-
301
- // ---------------------------------------------------------------------------
302
- // Automation handles
303
- // ---------------------------------------------------------------------------
304
-
305
- // ---------------------------------------------------------------------------
306
- // Types
307
- // ---------------------------------------------------------------------------
308
-
309
- // Side effect: install the registry capture at import (walk + patch — cheap,
310
- // synchronous, no network). The Metro graph fetch waits for the modal/action.
311
-
312
- (0, _install.installAssetCapture)();
313
- //# sourceMappingURL=index.js.map
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"ASSETS_ICON_COLOR",{enumerable:!0,get:function(){return _AssetsIcon.ASSETS_ICON_COLOR}}),Object.defineProperty(exports,"ASSETS_TEST_IDS",{enumerable:!0,get:function(){return _testIDs.ASSETS_TEST_IDS}}),Object.defineProperty(exports,"AssetsIcon",{enumerable:!0,get:function(){return _AssetsIcon.AssetsIcon}}),Object.defineProperty(exports,"AssetsModal",{enumerable:!0,get:function(){return _AssetsModal.AssetsModal}}),Object.defineProperty(exports,"AssetsToolView",{enumerable:!0,get:function(){return _AssetsModal.AssetsToolView}}),Object.defineProperty(exports,"assetBadgeTestID",{enumerable:!0,get:function(){return _testIDs.assetBadgeTestID}}),Object.defineProperty(exports,"assetDetailRowTestID",{enumerable:!0,get:function(){return _testIDs.assetDetailRowTestID}}),Object.defineProperty(exports,"assetFilterTestID",{enumerable:!0,get:function(){return _testIDs.assetFilterTestID}}),Object.defineProperty(exports,"assetFindingTestID",{enumerable:!0,get:function(){return _testIDs.assetFindingTestID}}),Object.defineProperty(exports,"assetFontChipTestID",{enumerable:!0,get:function(){return _testIDs.assetFontChipTestID}}),Object.defineProperty(exports,"assetRowTestID",{enumerable:!0,get:function(){return _testIDs.assetRowTestID}}),Object.defineProperty(exports,"assetSlug",{enumerable:!0,get:function(){return _testIDs.assetSlug}}),Object.defineProperty(exports,"assetsSyncAdapter",{enumerable:!0,get:function(){return _assetsSyncAdapter.assetsSyncAdapter}}),Object.defineProperty(exports,"assetsToolPreset",{enumerable:!0,get:function(){return _preset.assetsToolPreset}}),Object.defineProperty(exports,"clearBaseline",{enumerable:!0,get:function(){return _baseline.clearBaseline}}),Object.defineProperty(exports,"clearRecords",{enumerable:!0,get:function(){return _assetStore.clearRecords}}),Object.defineProperty(exports,"computeDiff",{enumerable:!0,get:function(){return _baseline.computeDiff}}),Object.defineProperty(exports,"computeInsights",{enumerable:!0,get:function(){return _insights.computeInsights}}),Object.defineProperty(exports,"computeStats",{enumerable:!0,get:function(){return _assetStore.computeStats}}),Object.defineProperty(exports,"createAssetsTool",{enumerable:!0,get:function(){return _preset.createAssetsTool}}),Object.defineProperty(exports,"disableAssetsCapture",{enumerable:!0,get:function(){return _remote.disableAssetsCapture}}),Object.defineProperty(exports,"estDecodedBytes",{enumerable:!0,get:function(){return _assetStore.estDecodedBytes}}),Object.defineProperty(exports,"fetchAssetGraph",{enumerable:!0,get:function(){return _metroGraph.fetchAssetGraph}}),Object.defineProperty(exports,"formatAssetMarkdown",{enumerable:!0,get:function(){return _export.formatAssetMarkdown}}),Object.defineProperty(exports,"formatInventoryMarkdown",{enumerable:!0,get:function(){return _export.formatInventoryMarkdown}}),Object.defineProperty(exports,"getDevServerOrigin",{enumerable:!0,get:function(){return _metroGraph.getDevServerOrigin}}),Object.defineProperty(exports,"getDiff",{enumerable:!0,get:function(){return _baseline.getDiff}}),Object.defineProperty(exports,"getLoadedFontFamilies",{enumerable:!0,get:function(){return _expo.getLoadedFontFamilies}}),Object.defineProperty(exports,"getLocalAssets",{enumerable:!0,get:function(){return _expo.getLocalAssets}}),Object.defineProperty(exports,"getRecord",{enumerable:!0,get:function(){return _assetStore.getRecord}}),Object.defineProperty(exports,"getScanStatus",{enumerable:!0,get:function(){return _install.getScanStatus}}),Object.defineProperty(exports,"getSnapshot",{enumerable:!0,get:function(){return _assetStore.getSnapshot}}),Object.defineProperty(exports,"installAssetCapture",{enumerable:!0,get:function(){return _install.installAssetCapture}}),Object.defineProperty(exports,"loadBaseline",{enumerable:!0,get:function(){return _baseline.loadBaseline}}),Object.defineProperty(exports,"measureSizes",{enumerable:!0,get:function(){return _measure.measureSizes}}),Object.defineProperty(exports,"replaceAssetsFromSnapshot",{enumerable:!0,get:function(){return _remote.replaceAssetsFromSnapshot}}),Object.defineProperty(exports,"rescan",{enumerable:!0,get:function(){return _install.rescan}}),Object.defineProperty(exports,"saveBaseline",{enumerable:!0,get:function(){return _baseline.saveBaseline}}),Object.defineProperty(exports,"setRemoteAssetsHandler",{enumerable:!0,get:function(){return _remote.setRemoteAssetsHandler}}),Object.defineProperty(exports,"subscribe",{enumerable:!0,get:function(){return _assetStore.subscribe}}),Object.defineProperty(exports,"useAssetRecords",{enumerable:!0,get:function(){return _useAssetRecords.useAssetRecords}});var _preset=require("./preset"),_AssetsModal=require("./components/AssetsModal"),_AssetsIcon=require("./components/AssetsIcon"),_install=require("./capture/install"),_measure=require("./capture/measure"),_metroGraph=require("./capture/metroGraph"),_expo=require("./capture/expo"),_assetStore=require("./store/assetStore"),_insights=require("./store/insights"),_baseline=require("./store/baseline"),_useAssetRecords=require("./hooks/useAssetRecords"),_export=require("./export"),_assetsSyncAdapter=require("./sync/assetsSyncAdapter"),_remote=require("./remote"),_testIDs=require("./utils/testIDs");(0,_install.installAssetCapture)();
@@ -1,39 +1 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createAssetsTool = exports.assetsToolPreset = void 0;
7
- var _AssetsIcon = require("./components/AssetsIcon");
8
- var _AssetsModal = require("./components/AssetsModal");
9
- var _sharedUi = require("@buoy-gg/shared-ui");
10
- var _jsxRuntime = require("react/jsx-runtime");
11
- /**
12
- * Pre-configured Assets tool for FloatingDevTools.
13
- *
14
- * @example
15
- * ```tsx
16
- * import { assetsToolPreset } from '@buoy-gg/assets';
17
- *
18
- * <FloatingDevTools apps={[assetsToolPreset]} />
19
- * ```
20
- */
21
-
22
- const assetsToolPreset = exports.assetsToolPreset = (0, _sharedUi.defineToolPreset)({
23
- id: "assets",
24
- name: "ASSETS",
25
- description: "Every bundled asset — sizes, scale coverage, unused detection",
26
- slot: "both",
27
- icon: ({
28
- size,
29
- color
30
- }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_AssetsIcon.AssetsIcon, {
31
- size: size,
32
- color: color || _AssetsIcon.ASSETS_ICON_COLOR
33
- }),
34
- component: _AssetsModal.AssetsModal
35
- });
36
-
37
- /** Create a custom Assets tool configuration. */
38
- const createAssetsTool = exports.createAssetsTool = (0, _sharedUi.createToolFactory)(assetsToolPreset);
39
- //# sourceMappingURL=preset.js.map
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.createAssetsTool=exports.assetsToolPreset=void 0;var _AssetsIcon=require("./components/AssetsIcon"),_AssetsModal=require("./components/AssetsModal"),_sharedUi=require("@buoy-gg/shared-ui"),_jsxRuntime=require("react/jsx-runtime");const assetsToolPreset=exports.assetsToolPreset=(0,_sharedUi.defineToolPreset)({id:"assets",name:"ASSETS",description:"Every bundled asset — sizes, scale coverage, unused detection",slot:"both",icon:({size:s,color:e})=>(0,_jsxRuntime.jsx)(_AssetsIcon.AssetsIcon,{size:s,color:e||_AssetsIcon.ASSETS_ICON_COLOR}),component:_AssetsModal.AssetsModal}),createAssetsTool=exports.createAssetsTool=(0,_sharedUi.createToolFactory)(assetsToolPreset);
@@ -1,65 +1 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.disableAssetsCapture = disableAssetsCapture;
7
- exports.remoteAssetsDispatch = remoteAssetsDispatch;
8
- exports.replaceAssetsFromSnapshot = replaceAssetsFromSnapshot;
9
- exports.setRemoteAssetsHandler = setRemoteAssetsHandler;
10
- var _state = require("./state");
11
- var _assetStore = require("./store/assetStore");
12
- /**
13
- * Remote-dispatch seam for dashboard mirrors (Buoy Desktop).
14
- *
15
- * On device this stays null and every action runs locally. A dashboard sets
16
- * a handler that forwards action name + params over external-sync to the
17
- * SAME adapter actions the MCP uses (sync/assetsSyncAdapter.ts), so one
18
- * action vocabulary serves phone UI, desktop UI, and LLM automation.
19
- */
20
-
21
- function setRemoteAssetsHandler(handler) {
22
- (0, _state.assetsState)().remoteDispatch = handler;
23
- }
24
- function remoteAssetsDispatch() {
25
- return (0, _state.assetsState)().remoteDispatch;
26
- }
27
-
28
- /** Dashboards never scan their own bundle — the store is purely a mirror. */
29
- function disableAssetsCapture() {
30
- (0, _state.assetsState)().captureDisabled = true;
31
- }
32
-
33
- /** Replace the whole store from a synced adapter snapshot. */
34
- function replaceAssetsFromSnapshot(payload) {
35
- const s = (0, _state.assetsState)();
36
- const wire = payload.records ?? [];
37
- s.records = wire.map(w => ({
38
- id: w.id,
39
- key: w.key,
40
- registryId: w.registryId ?? undefined,
41
- name: w.name,
42
- type: w.type,
43
- kind: w.kind,
44
- hash: w.hash ?? undefined,
45
- httpServerLocation: w.location ?? undefined,
46
- width: w.width ?? undefined,
47
- height: w.height ?? undefined,
48
- scales: w.scales,
49
- resolvedUri: w.uri ?? undefined,
50
- loaded: w.loaded,
51
- origin: w.registryId != null ? "registry" : "graph",
52
- sizeBytes: w.sizeBytes ?? undefined,
53
- sizeSource: w.sizeSource ?? undefined,
54
- firstSeenAt: Date.now()
55
- }));
56
- s.byKey = new Map(s.records.map(r => [r.key, r]));
57
- s.byId = new Map(s.records.map(r => [r.id, r]));
58
- if (payload.scanStatus) {
59
- s.mirrorScanStatus = payload.scanStatus;
60
- s.fontFamilies = payload.scanStatus.fontFamilies ?? [];
61
- }
62
- s.mirrorDiff = payload.diff ?? null;
63
- (0, _assetStore.invalidate)();
64
- }
65
- //# sourceMappingURL=remote.js.map
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.disableAssetsCapture=disableAssetsCapture,exports.remoteAssetsDispatch=remoteAssetsDispatch,exports.replaceAssetsFromSnapshot=replaceAssetsFromSnapshot,exports.setRemoteAssetsHandler=setRemoteAssetsHandler;var _state=require("./state"),_assetStore=require("./store/assetStore");function setRemoteAssetsHandler(e){(0,_state.assetsState)().remoteDispatch=e}function remoteAssetsDispatch(){return(0,_state.assetsState)().remoteDispatch}function disableAssetsCapture(){(0,_state.assetsState)().captureDisabled=!0}function replaceAssetsFromSnapshot(e){const s=(0,_state.assetsState)(),t=e.records??[];s.records=t.map(e=>({id:e.id,key:e.key,registryId:e.registryId??void 0,name:e.name,type:e.type,kind:e.kind,hash:e.hash??void 0,httpServerLocation:e.location??void 0,width:e.width??void 0,height:e.height??void 0,scales:e.scales,resolvedUri:e.uri??void 0,loaded:e.loaded,origin:null!=e.registryId?"registry":"graph",sizeBytes:e.sizeBytes??void 0,sizeSource:e.sizeSource??void 0,firstSeenAt:Date.now()})),s.byKey=new Map(s.records.map(e=>[e.key,e])),s.byId=new Map(s.records.map(e=>[e.id,e])),e.scanStatus&&(s.fontFamilies=[...new Set(e.scanStatus.fontFamilies??[])],s.mirrorScanStatus={...e.scanStatus,fontFamilies:s.fontFamilies}),s.mirrorDiff=e.diff??null,(0,_assetStore.invalidate)()}
@@ -1,51 +1 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.assetsState = assetsState;
7
- /**
8
- * Global singleton state for the Assets tool.
9
- *
10
- * Same rationale as the images tool: the package can be evaluated as two
11
- * module instances (lib vs src resolution), and the registerAsset patch must
12
- * share one store with whichever copy the UI renders from. All mutable state
13
- * lives on globalThis under a well-known symbol.
14
- */
15
-
16
- const KEY = Symbol.for("buoy.assets.globalState.v1");
17
- function assetsState() {
18
- const g = globalThis;
19
- if (!g[KEY]) {
20
- g[KEY] = {
21
- records: [],
22
- byKey: new Map(),
23
- byId: new Map(),
24
- nextId: 1,
25
- listeners: new Set(),
26
- snapshot: [],
27
- emitScheduled: false,
28
- installed: false,
29
- patched: false,
30
- registryAvailable: false,
31
- graphSupported: false,
32
- graphCount: null,
33
- graphError: null,
34
- graphFetchInFlight: false,
35
- lastScanAt: null,
36
- measuring: false,
37
- measuredCount: 0,
38
- fontFamilies: [],
39
- localAssetCount: null,
40
- baseline: null,
41
- baselineLoaded: false,
42
- captureDisabled: false,
43
- remoteDispatch: null,
44
- mirrorScanStatus: null,
45
- mirrorPixelRatio: null,
46
- mirrorDiff: null
47
- };
48
- }
49
- return g[KEY];
50
- }
51
- //# sourceMappingURL=state.js.map
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.assetsState=assetsState;const KEY=Symbol.for("buoy.assets.globalState.v1");function assetsState(){const e=globalThis;return e[KEY]||(e[KEY]={records:[],byKey:new Map,byId:new Map,nextId:1,listeners:new Set,snapshot:[],emitScheduled:!1,installed:!1,patched:!1,registryAvailable:!1,graphSupported:!1,graphCount:null,graphError:null,graphFetchInFlight:!1,lastScanAt:null,measuring:!1,measuredCount:0,fontFamilies:[],localAssetCount:null,baseline:null,baselineLoaded:!1,captureDisabled:!1,remoteDispatch:null,mirrorScanStatus:null,mirrorPixelRatio:null,mirrorDiff:null}),e[KEY]}