@buoy-gg/assets 7.0.36 → 7.0.39

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 (127) hide show
  1. package/README.md +41 -12
  2. package/lib/commonjs/capture/expo.js +1 -1
  3. package/lib/commonjs/capture/expo.js.map +1 -1
  4. package/lib/commonjs/capture/install.js +13 -0
  5. package/lib/commonjs/capture/install.js.map +1 -1
  6. package/lib/commonjs/capture/isBuoyAsset.js +23 -0
  7. package/lib/commonjs/capture/isBuoyAsset.js.map +1 -0
  8. package/lib/commonjs/capture/metroGraph.js +36 -9
  9. package/lib/commonjs/capture/metroGraph.js.map +1 -1
  10. package/lib/commonjs/capture/registry.js.map +1 -1
  11. package/lib/commonjs/components/AssetDetail.js +8 -11
  12. package/lib/commonjs/components/AssetDetail.js.map +1 -1
  13. package/lib/commonjs/components/AssetImage.js +66 -0
  14. package/lib/commonjs/components/AssetImage.js.map +1 -0
  15. package/lib/commonjs/components/AssetRow.js +5 -6
  16. package/lib/commonjs/components/AssetRow.js.map +1 -1
  17. package/lib/commonjs/components/AssetsFilterBar.js +10 -1
  18. package/lib/commonjs/components/AssetsFilterBar.js.map +1 -1
  19. package/lib/commonjs/components/AssetsHeader.js +4 -3
  20. package/lib/commonjs/components/AssetsHeader.js.map +1 -1
  21. package/lib/commonjs/components/AssetsListControls.js +3 -18
  22. package/lib/commonjs/components/AssetsListControls.js.map +1 -1
  23. package/lib/commonjs/components/AssetsModal.js +69 -38
  24. package/lib/commonjs/components/AssetsModal.js.map +1 -1
  25. package/lib/commonjs/components/ScanNotice.js +85 -0
  26. package/lib/commonjs/components/ScanNotice.js.map +1 -0
  27. package/lib/commonjs/components/optionalExpoImage.js +16 -0
  28. package/lib/commonjs/components/optionalExpoImage.js.map +1 -0
  29. package/lib/commonjs/components/optionalExpoImage.web.js +11 -0
  30. package/lib/commonjs/components/optionalExpoImage.web.js.map +1 -0
  31. package/lib/commonjs/export.js +3 -3
  32. package/lib/commonjs/export.js.map +1 -1
  33. package/lib/commonjs/hooks/useAssetScanStatus.js +28 -0
  34. package/lib/commonjs/hooks/useAssetScanStatus.js.map +1 -0
  35. package/lib/commonjs/remote.js +5 -2
  36. package/lib/commonjs/remote.js.map +1 -1
  37. package/lib/commonjs/state.js.map +1 -1
  38. package/lib/commonjs/store/assetStore.js +15 -0
  39. package/lib/commonjs/store/assetStore.js.map +1 -1
  40. package/lib/commonjs/store/baseline.js +2 -0
  41. package/lib/commonjs/store/baseline.js.map +1 -1
  42. package/lib/commonjs/utils/testIDs.js +2 -6
  43. package/lib/commonjs/utils/testIDs.js.map +1 -1
  44. package/lib/module/capture/expo.js +1 -1
  45. package/lib/module/capture/expo.js.map +1 -1
  46. package/lib/module/capture/install.js +14 -1
  47. package/lib/module/capture/install.js.map +1 -1
  48. package/lib/module/capture/isBuoyAsset.js +18 -0
  49. package/lib/module/capture/isBuoyAsset.js.map +1 -0
  50. package/lib/module/capture/metroGraph.js +36 -9
  51. package/lib/module/capture/metroGraph.js.map +1 -1
  52. package/lib/module/capture/registry.js.map +1 -1
  53. package/lib/module/components/AssetDetail.js +9 -12
  54. package/lib/module/components/AssetDetail.js.map +1 -1
  55. package/lib/module/components/AssetImage.js +62 -0
  56. package/lib/module/components/AssetImage.js.map +1 -0
  57. package/lib/module/components/AssetRow.js +6 -7
  58. package/lib/module/components/AssetRow.js.map +1 -1
  59. package/lib/module/components/AssetsFilterBar.js +10 -1
  60. package/lib/module/components/AssetsFilterBar.js.map +1 -1
  61. package/lib/module/components/AssetsHeader.js +4 -3
  62. package/lib/module/components/AssetsHeader.js.map +1 -1
  63. package/lib/module/components/AssetsListControls.js +3 -18
  64. package/lib/module/components/AssetsListControls.js.map +1 -1
  65. package/lib/module/components/AssetsModal.js +71 -40
  66. package/lib/module/components/AssetsModal.js.map +1 -1
  67. package/lib/module/components/ScanNotice.js +81 -0
  68. package/lib/module/components/ScanNotice.js.map +1 -0
  69. package/lib/module/components/optionalExpoImage.js +12 -0
  70. package/lib/module/components/optionalExpoImage.js.map +1 -0
  71. package/lib/module/components/optionalExpoImage.web.js +7 -0
  72. package/lib/module/components/optionalExpoImage.web.js.map +1 -0
  73. package/lib/module/export.js +3 -3
  74. package/lib/module/export.js.map +1 -1
  75. package/lib/module/hooks/useAssetScanStatus.js +23 -0
  76. package/lib/module/hooks/useAssetScanStatus.js.map +1 -0
  77. package/lib/module/remote.js +5 -2
  78. package/lib/module/remote.js.map +1 -1
  79. package/lib/module/state.js.map +1 -1
  80. package/lib/module/store/assetStore.js +14 -0
  81. package/lib/module/store/assetStore.js.map +1 -1
  82. package/lib/module/store/baseline.js +2 -0
  83. package/lib/module/store/baseline.js.map +1 -1
  84. package/lib/module/utils/testIDs.js +2 -6
  85. package/lib/module/utils/testIDs.js.map +1 -1
  86. package/lib/typescript/capture/install.d.ts.map +1 -1
  87. package/lib/typescript/capture/isBuoyAsset.d.ts +9 -0
  88. package/lib/typescript/capture/isBuoyAsset.d.ts.map +1 -0
  89. package/lib/typescript/capture/metroGraph.d.ts.map +1 -1
  90. package/lib/typescript/capture/registry.d.ts +1 -1
  91. package/lib/typescript/capture/registry.d.ts.map +1 -1
  92. package/lib/typescript/components/AssetDetail.d.ts +2 -2
  93. package/lib/typescript/components/AssetDetail.d.ts.map +1 -1
  94. package/lib/typescript/components/AssetImage.d.ts +9 -0
  95. package/lib/typescript/components/AssetImage.d.ts.map +1 -0
  96. package/lib/typescript/components/AssetRow.d.ts.map +1 -1
  97. package/lib/typescript/components/AssetsFilterBar.d.ts +3 -2
  98. package/lib/typescript/components/AssetsFilterBar.d.ts.map +1 -1
  99. package/lib/typescript/components/AssetsHeader.d.ts +2 -1
  100. package/lib/typescript/components/AssetsHeader.d.ts.map +1 -1
  101. package/lib/typescript/components/AssetsListControls.d.ts +2 -9
  102. package/lib/typescript/components/AssetsListControls.d.ts.map +1 -1
  103. package/lib/typescript/components/AssetsModal.d.ts.map +1 -1
  104. package/lib/typescript/components/ScanNotice.d.ts +7 -0
  105. package/lib/typescript/components/ScanNotice.d.ts.map +1 -0
  106. package/lib/typescript/components/optionalExpoImage.d.ts +13 -0
  107. package/lib/typescript/components/optionalExpoImage.d.ts.map +1 -0
  108. package/lib/typescript/components/optionalExpoImage.web.d.ts +3 -0
  109. package/lib/typescript/components/optionalExpoImage.web.d.ts.map +1 -0
  110. package/lib/typescript/hooks/useAssetScanStatus.d.ts +6 -0
  111. package/lib/typescript/hooks/useAssetScanStatus.d.ts.map +1 -0
  112. package/lib/typescript/state.d.ts +2 -0
  113. package/lib/typescript/state.d.ts.map +1 -1
  114. package/lib/typescript/store/assetStore.d.ts +3 -1
  115. package/lib/typescript/store/assetStore.d.ts.map +1 -1
  116. package/lib/typescript/store/baseline.d.ts.map +1 -1
  117. package/lib/typescript/types.d.ts +3 -0
  118. package/lib/typescript/types.d.ts.map +1 -1
  119. package/lib/typescript/utils/testIDs.d.ts +2 -5
  120. package/lib/typescript/utils/testIDs.d.ts.map +1 -1
  121. package/package.json +7 -3
  122. package/lib/commonjs/components/BaselineBar.js +0 -115
  123. package/lib/commonjs/components/BaselineBar.js.map +0 -1
  124. package/lib/module/components/BaselineBar.js +0 -111
  125. package/lib/module/components/BaselineBar.js.map +0 -1
  126. package/lib/typescript/components/BaselineBar.d.ts +0 -13
  127. package/lib/typescript/components/BaselineBar.d.ts.map +0 -1
package/README.md CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/@buoy-gg/assets?style=flat-square&labelColor=1c1c1c&color=10B981)](https://www.npmjs.com/package/@buoy-gg/assets) [![npm downloads](https://img.shields.io/npm/dm/@buoy-gg/assets?style=flat-square&labelColor=1c1c1c&color=10B981)](https://www.npmjs.com/package/@buoy-gg/assets)
4
4
 
5
- **See everything your app ships — every bundled image, font, video and audio file, with sizes, duplicate detection, and the ones nobody ever loads.**
5
+ Inspect assets visible to the runtime registry and, in development, the Metro dependency graph. Compare sizes and find possible duplicates.
6
6
 
7
- Part of [Buoy](https://github.com/Buoy-gg/buoy) — devtools that live inside your React Native app. Install it and it auto-appears in the floating menu from [`@buoy-gg/core`](https://www.npmjs.com/package/@buoy-gg/core).
7
+ Part of [Buoy](https://github.com/Buoy-gg/buoy). Install the package, complete account setup, and follow the integration steps below.
8
8
 
9
- How many megabytes of images are you shipping? Is that hero PNG in the bundle twice? React Native gives you no inventory of your bundled assets — the usual answer is unzipping a release build and spelunking through APK Analyzer after the bloat already shipped. This tool is that inventory, live in your app. Pure JS, zero configuration — no register import, no config.
9
+ Use the inventory to investigate large registered assets and possible duplication. Development builds can also query Metro; release builds have less source information.
10
10
 
11
11
  ## Install
12
12
 
@@ -14,6 +14,24 @@ How many megabytes of images are you shipping? Is that hero PNG in the bundle tw
14
14
  npm install @buoy-gg/core @buoy-gg/assets
15
15
  ```
16
16
 
17
+ ## Before you start
18
+
19
+ Use a development build with `@buoy-gg/core` and a Free or Pro Buoy account key. From your app’s directory, sign in:
20
+
21
+ ```bash
22
+ npx --package=@buoy-gg/core buoy login
23
+ ```
24
+
25
+ For Expo, initialize Buoy before rendering the menu:
26
+
27
+ ```tsx
28
+ import { Buoy } from "@buoy-gg/core";
29
+
30
+ Buoy.init({ licenseKey: process.env.EXPO_PUBLIC_BUOY_KEY });
31
+ ```
32
+
33
+ The login command writes the Expo key to `.env.local`. For React Native CLI, pass the key from your app’s environment configuration; React Native does not load `.env.local` automatically. Mount `FloatingDevTools` inside the same providers as your screens and restart the development server after installation. The [Quick Start](https://buoy.gg/buoy/latest/docs/quick-start) shows the complete root component setup.
34
+
17
35
  ## Quick start
18
36
 
19
37
  ```tsx
@@ -29,27 +47,38 @@ export default function App() {
29
47
  }
30
48
  ```
31
49
 
32
- The ASSETS tool appears in the menu. Open it and browse everything the app ships, largest first.
50
+ The ASSETS tool appears in the menu. Open it and browse discovered assets, largest first.
51
+
52
+ Buoy's own package assets are excluded from the inventory and its totals. App assets and assets from other libraries remain visible.
53
+
54
+ SVG thumbnails and detail previews use `expo-image` when it is installed and available in the native app. It is an optional peer; `react-native-svg` is not required. Without a compatible renderer, the tool shows a preview-unavailable label. Desktop and web use browser image rendering. Some SVG paths may not render correctly with the iOS system decoder.
55
+
56
+ Registered assets appear immediately. A spinner and a "found so far" count stay visible while the tool queries the development server for more assets. After eight seconds, a message explains that discovery is taking longer than usual. Size checks run afterward. If discovery fails or exceeds 90 seconds, the existing list stays available with a Retry button.
57
+
58
+ ## Check the integration
59
+
60
+ Find a known bundled asset and compare its source and dimensions. “Not observed” means not seen in React Native’s asset registry during this app run; it does not prove an asset is unused or safe to delete. Runtime coverage is not a complete inventory of native resources.
33
61
 
34
62
  ## What you get
35
63
 
36
- - **The whole inventory, largest first** — every bundled asset with a thumbnail, dimensions, `@1x/@2x/@3x` scale coverage, and its size. Filter by kind, search by name, sort by size/name/type
37
- - **Real byte sizes** — in dev, every scale variant is measured from the Metro server; release builds still get decoded-memory estimates
38
- - **Shipped-but-never-loaded detection** — the tool diffs the full bundle graph against what actually registered at runtime. Static grep tools can't know what's *loaded*; this does
64
+ - **Inventory, largest first** — discovered assets with a thumbnail, dimensions, `@1x/@2x/@3x` scale coverage, and its size. Filter by kind, search by name, sort by size/name/type
65
+ - **Size information** — development builds can measure available variants through Metro. Release decoded-memory estimates are not encoded file sizes
66
+ - **Unobserved assets** — compare the available development bundle graph with assets registered during the session. Review candidates before deleting them
39
67
  - **Duplicate content** — identical bytes shipped under different names, flagged by content hash (one of the cheapest app-size wins there is)
40
- - **Baseline diff** — save a baseline, make your change, and see exactly what it added: new assets, removed assets, grown assets, net bytes. App-size regression prevention without CI tooling
41
68
  - **Audit findings** — images that decode larger than the device screen, heavy GIFs (every frame decodes into memory), unsubset icon fonts, WebP conversion candidates, missing/broken scale variants
42
69
  - **Loaded font families** — build-time embedded and runtime loaded (via the expo-font native module when present)
43
70
  - **Markdown report** — the full inventory with findings, ready to paste into an issue or PR
44
71
 
45
72
  ## How it relates to @buoy-gg/images
46
73
 
47
- [`@buoy-gg/images`](https://www.npmjs.com/package/@buoy-gg/images) shows what your app **renders** at runtime — per-load cache verdicts, timings, failures. This tool shows what your app **ships** in the bundle. They complement each other: images finds the slow load; assets finds the megabytes you never needed to ship.
74
+ [`@buoy-gg/images`](https://www.npmjs.com/package/@buoy-gg/images) shows what your app **renders** at runtime — per-load cache verdicts, timings, failures. Assets inspects the available asset inventory. Use both views to investigate loading behavior and bundle size.
48
75
 
49
76
  ## Desktop & AI
50
77
 
51
- The same live session streams to [Buoy Desktop](https://github.com/Buoy-gg/Buoy-Desktop) (free, macOS/Windows/Linux) and to Claude Code or Cursor via the [Buoy MCP server](https://buoy.gg/buoy/latest/docs/mcp) — `get_assets` for the inventory and findings, `asset_action` for rescans and the baseline workflow.
78
+ To connect a React Native app to [Buoy Desktop](https://github.com/Buoy-gg/Buoy-Desktop) or MCP, install `@buoy-gg/external-sync` and follow the [Desktop connection guide](https://buoy.gg/buoy/latest/docs/desktop). Sign in to Desktop separately. [MCP setup](https://buoy.gg/buoy/latest/docs/mcp) also requires a process account and Pro access. Available remote actions depend on the tool and app integration.
79
+
80
+ ## Account and plan requirements
52
81
 
53
- ## Free vs Pro
82
+ Use a Free or Pro Buoy account. History limits and paid features vary by tool; see [pricing](https://buoy.gg/pricing). Production access requires Pro where supported. Development-only hooks and actions remain unavailable in release builds.
54
83
 
55
- Every tool is free. [Pro](https://buoy.gg/pricing) unlocks production builds, the MCP server, and unlimited capture. Every weekend, Pro features unlock free for anyone holding a key — including a free one (`npx buoy login`).
84
+ Use **Duplicates** at the top of the asset list to show every asset that shares a content hash with another asset. The count includes all copies. Selecting it clears the search; select **All** or tap **Duplicates** again to return to the full list.
@@ -23,7 +23,7 @@ function expoModules() {
23
23
  function getLoadedFontFamilies() {
24
24
  try {
25
25
  const fonts = expoModules()?.ExpoFontLoader?.getLoadedFonts?.();
26
- return Array.isArray(fonts) ? [...fonts].sort() : [];
26
+ return Array.isArray(fonts) ? [...new Set(fonts)].sort() : [];
27
27
  } catch {
28
28
  return [];
29
29
  }
@@ -1 +1 @@
1
- {"version":3,"names":["expoModules","globalThis","expo","modules","getLoadedFontFamilies","fonts","ExpoFontLoader","getLoadedFonts","Array","isArray","sort","getLocalAssets","map","ExpoUpdates","localAssets","Object","keys","length"],"sourceRoot":"../../../src","sources":["capture/expo.ts"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;;AASA,SAASA,WAAWA,CAAA,EAA0B;EAC5C,OAAQC,UAAU,CAA2BC,IAAI,EAAEC,OAAO;AAC5D;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,qBAAqBA,CAAA,EAAa;EAChD,IAAI;IACF,MAAMC,KAAK,GAAGL,WAAW,CAAC,CAAC,EAAEM,cAAc,EAAEC,cAAc,GAAG,CAAC;IAC/D,OAAOC,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,GAAG,CAAC,GAAGA,KAAK,CAAC,CAACK,IAAI,CAAC,CAAC,GAAG,EAAE;EACtD,CAAC,CAAC,MAAM;IACN,OAAO,EAAE;EACX;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,cAAcA,CAAA,EAAkC;EAC9D,IAAI;IACF,MAAMC,GAAG,GAAGZ,WAAW,CAAC,CAAC,EAAEa,WAAW,EAAEC,WAAW;IACnD,IAAIF,GAAG,IAAI,OAAOA,GAAG,KAAK,QAAQ,IAAIG,MAAM,CAACC,IAAI,CAACJ,GAAG,CAAC,CAACK,MAAM,GAAG,CAAC,EAAE,OAAOL,GAAG;IAC7E,OAAO,IAAI;EACb,CAAC,CAAC,MAAM;IACN,OAAO,IAAI;EACb;AACF","ignoreList":[]}
1
+ {"version":3,"names":["expoModules","globalThis","expo","modules","getLoadedFontFamilies","fonts","ExpoFontLoader","getLoadedFonts","Array","isArray","Set","sort","getLocalAssets","map","ExpoUpdates","localAssets","Object","keys","length"],"sourceRoot":"../../../src","sources":["capture/expo.ts"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;;AASA,SAASA,WAAWA,CAAA,EAA0B;EAC5C,OAAQC,UAAU,CAA2BC,IAAI,EAAEC,OAAO;AAC5D;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,qBAAqBA,CAAA,EAAa;EAChD,IAAI;IACF,MAAMC,KAAK,GAAGL,WAAW,CAAC,CAAC,EAAEM,cAAc,EAAEC,cAAc,GAAG,CAAC;IAC/D,OAAOC,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,GAAG,CAAC,GAAG,IAAIK,GAAG,CAACL,KAAK,CAAC,CAAC,CAACM,IAAI,CAAC,CAAC,GAAG,EAAE;EAC/D,CAAC,CAAC,MAAM;IACN,OAAO,EAAE;EACX;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,cAAcA,CAAA,EAAkC;EAC9D,IAAI;IACF,MAAMC,GAAG,GAAGb,WAAW,CAAC,CAAC,EAAEc,WAAW,EAAEC,WAAW;IACnD,IAAIF,GAAG,IAAI,OAAOA,GAAG,KAAK,QAAQ,IAAIG,MAAM,CAACC,IAAI,CAACJ,GAAG,CAAC,CAACK,MAAM,GAAG,CAAC,EAAE,OAAOL,GAAG;IAC7E,OAAO,IAAI;EACb,CAAC,CAAC,MAAM;IACN,OAAO,IAAI;EACb;AACF","ignoreList":[]}
@@ -46,6 +46,17 @@ function refreshEnrichment() {
46
46
  async function rescan() {
47
47
  const s = (0, _state.assetsState)();
48
48
  if (s.captureDisabled) return getScanStatus();
49
+ if (s.scanPromise) return s.scanPromise;
50
+ s.scanPromise = runScan();
51
+ try {
52
+ return await s.scanPromise;
53
+ } finally {
54
+ s.scanPromise = undefined;
55
+ }
56
+ }
57
+ async function runScan() {
58
+ const s = (0, _state.assetsState)();
59
+ (0, _assetStore.removeBuoyRecords)();
49
60
  installAssetCapture();
50
61
  (0, _registry.walkRegistry)();
51
62
  refreshEnrichment();
@@ -68,6 +79,8 @@ function getScanStatus() {
68
79
  graphSupported: s.graphSupported || (0, _metroGraph.getDevServerOrigin)() != null,
69
80
  graphCount: s.graphCount,
70
81
  graphError: s.graphError,
82
+ graphFetchInFlight: s.graphFetchInFlight,
83
+ graphFetchStartedAt: s.graphFetchStartedAt ?? null,
71
84
  lastScanAt: s.lastScanAt,
72
85
  measuring: s.measuring,
73
86
  measuredCount: s.measuredCount,
@@ -1 +1 @@
1
- {"version":3,"names":["_state","require","_assetStore","_expo","_measure","_metroGraph","_registry","installAssetCapture","s","assetsState","captureDisabled","installed","registryAvailable","getRegistryModule","patched","patchRegisterAsset","walkRegistry","refreshEnrichment","lastScanAt","Date","now","invalidate","fontFamilies","getLoadedFontFamilies","localAssets","getLocalAssets","localAssetCount","Object","keys","length","rescan","getScanStatus","fetchAssetGraph","measureSizes","mirrorScanStatus","registryCount","record","records","registryId","graphSupported","getDevServerOrigin","graphCount","graphError","measuring","measuredCount"],"sourceRoot":"../../../src","sources":["capture/install.ts"],"mappings":";;;;;;;;AASA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AACA,IAAAK,SAAA,GAAAL,OAAA;AAdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUO,SAASM,mBAAmBA,CAAA,EAAS;EAC1C,MAAMC,CAAC,GAAG,IAAAC,kBAAW,EAAC,CAAC;EACvB,IAAID,CAAC,CAACE,eAAe,IAAIF,CAAC,CAACG,SAAS,EAAE;EACtCH,CAAC,CAACG,SAAS,GAAG,IAAI;EAClBH,CAAC,CAACI,iBAAiB,GAAG,IAAAC,2BAAiB,EAAC,CAAC,IAAI,IAAI;EACjDL,CAAC,CAACM,OAAO,GAAG,IAAAC,4BAAkB,EAAC,CAAC;EAChC,IAAAC,sBAAY,EAAC,CAAC;EACdC,iBAAiB,CAAC,CAAC;EACnBT,CAAC,CAACU,UAAU,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;EACzB,IAAAC,sBAAU,EAAC,CAAC;AACd;AAEA,SAASJ,iBAAiBA,CAAA,EAAS;EACjC,MAAMT,CAAC,GAAG,IAAAC,kBAAW,EAAC,CAAC;EACvBD,CAAC,CAACc,YAAY,GAAG,IAAAC,2BAAqB,EAAC,CAAC;EACxC,MAAMC,WAAW,GAAG,IAAAC,oBAAc,EAAC,CAAC;EACpCjB,CAAC,CAACkB,eAAe,GAAGF,WAAW,GAAGG,MAAM,CAACC,IAAI,CAACJ,WAAW,CAAC,CAACK,MAAM,GAAG,IAAI;AAC1E;;AAEA;AACA;AACA;AACA;AACO,eAAeC,MAAMA,CAAA,EAA8B;EACxD,MAAMtB,CAAC,GAAG,IAAAC,kBAAW,EAAC,CAAC;EACvB,IAAID,CAAC,CAACE,eAAe,EAAE,OAAOqB,aAAa,CAAC,CAAC;EAC7CxB,mBAAmB,CAAC,CAAC;EACrB,IAAAS,sBAAY,EAAC,CAAC;EACdC,iBAAiB,CAAC,CAAC;EACnB,MAAM,IAAAe,2BAAe,EAAC,CAAC;EACvBxB,CAAC,CAACU,UAAU,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;EACzB,IAAAC,sBAAU,EAAC,CAAC;EACZ,KAAK,IAAAY,qBAAY,EAAC,CAAC;EACnB,OAAOF,aAAa,CAAC,CAAC;AACxB;AAEO,SAASA,aAAaA,CAAA,EAAqB;EAChD,MAAMvB,CAAC,GAAG,IAAAC,kBAAW,EAAC,CAAC;EACvB;EACA,IAAID,CAAC,CAAC0B,gBAAgB,EAAE,OAAO1B,CAAC,CAAC0B,gBAAgB;EACjD,IAAIC,aAAa,GAAG,CAAC;EACrB,KAAK,MAAMC,MAAM,IAAI5B,CAAC,CAAC6B,OAAO,EAAE,IAAID,MAAM,CAACE,UAAU,IAAI,IAAI,EAAEH,aAAa,EAAE;EAC9E,OAAO;IACLvB,iBAAiB,EAAEJ,CAAC,CAACI,iBAAiB;IACtCE,OAAO,EAAEN,CAAC,CAACM,OAAO;IAClBqB,aAAa;IACbI,cAAc,EAAE/B,CAAC,CAAC+B,cAAc,IAAI,IAAAC,8BAAkB,EAAC,CAAC,IAAI,IAAI;IAChEC,UAAU,EAAEjC,CAAC,CAACiC,UAAU;IACxBC,UAAU,EAAElC,CAAC,CAACkC,UAAU;IACxBxB,UAAU,EAAEV,CAAC,CAACU,UAAU;IACxByB,SAAS,EAAEnC,CAAC,CAACmC,SAAS;IACtBC,aAAa,EAAEpC,CAAC,CAACoC,aAAa;IAC9BtB,YAAY,EAAEd,CAAC,CAACc,YAAY;IAC5BI,eAAe,EAAElB,CAAC,CAACkB;EACrB,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["_state","require","_assetStore","_expo","_measure","_metroGraph","_registry","installAssetCapture","s","assetsState","captureDisabled","installed","registryAvailable","getRegistryModule","patched","patchRegisterAsset","walkRegistry","refreshEnrichment","lastScanAt","Date","now","invalidate","fontFamilies","getLoadedFontFamilies","localAssets","getLocalAssets","localAssetCount","Object","keys","length","rescan","getScanStatus","scanPromise","runScan","undefined","removeBuoyRecords","fetchAssetGraph","measureSizes","mirrorScanStatus","registryCount","record","records","registryId","graphSupported","getDevServerOrigin","graphCount","graphError","graphFetchInFlight","graphFetchStartedAt","measuring","measuredCount"],"sourceRoot":"../../../src","sources":["capture/install.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isBuoyAsset = isBuoyAsset;
7
+ exports.isBuoyAssetPath = isBuoyAssetPath;
8
+ /** Identify Buoy-owned resources by package location, never by asset name. */
9
+ function isBuoyAssetPath(value) {
10
+ if (!value) return false;
11
+ let path = value;
12
+ try {
13
+ path = decodeURIComponent(path);
14
+ } catch {
15
+ // Keep readable path segments when an unrelated escape is malformed.
16
+ }
17
+ path = path.replace(/\\/g, "/");
18
+ return /(?:^|\/)node_modules\/@buoy-gg\/[^/]+(?:\/|$)/.test(path) || /(?:^|\/)buoy-packages\/packages\/[^/]+(?:\/|$)/.test(path) || /(?:^|\/)packages\/floating-tools-core\/(?:src|lib\/(?:module|commonjs))\/icons\/assets(?:\/|$)/.test(path);
19
+ }
20
+ function isBuoyAsset(asset) {
21
+ return [asset.key, asset.httpServerLocation, asset.fileSystemLocation, ...(asset.files ?? [])].some(isBuoyAssetPath);
22
+ }
23
+ //# sourceMappingURL=isBuoyAsset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isBuoyAssetPath","value","path","decodeURIComponent","replace","test","isBuoyAsset","asset","key","httpServerLocation","fileSystemLocation","files","some"],"sourceRoot":"../../../src","sources":["capture/isBuoyAsset.ts"],"mappings":";;;;;;;AAAA;AACO,SAASA,eAAeA,CAACC,KAAyB,EAAW;EAClE,IAAI,CAACA,KAAK,EAAE,OAAO,KAAK;EACxB,IAAIC,IAAI,GAAGD,KAAK;EAChB,IAAI;IACFC,IAAI,GAAGC,kBAAkB,CAACD,IAAI,CAAC;EACjC,CAAC,CAAC,MAAM;IACN;EAAA;EAEFA,IAAI,GAAGA,IAAI,CAACE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;EAC/B,OAAO,+CAA+C,CAACC,IAAI,CAACH,IAAI,CAAC,IAC/D,gDAAgD,CAACG,IAAI,CAACH,IAAI,CAAC,IAC3D,gGAAgG,CAACG,IAAI,CAACH,IAAI,CAAC;AAC/G;AAEO,SAASI,WAAWA,CAACC,KAK3B,EAAW;EACV,OAAO,CAACA,KAAK,CAACC,GAAG,EAAED,KAAK,CAACE,kBAAkB,EAAEF,KAAK,CAACG,kBAAkB,EAAE,IAAIH,KAAK,CAACI,KAAK,IAAI,EAAE,CAAC,CAAC,CAC3FC,IAAI,CAACZ,eAAe,CAAC;AAC1B","ignoreList":[]}
@@ -23,6 +23,29 @@ var _assetStore = require("../store/assetStore");
23
23
  * "shipped but never loaded" set. Dev-only: no server, no graph.
24
24
  */
25
25
 
26
+ const GRAPH_TIMEOUT_MS = 90_000;
27
+
28
+ /** Bound the whole discovery pass, including response body reads. */
29
+ async function fetchGraphPayload(url, remainingMs) {
30
+ const controller = new AbortController();
31
+ let timer;
32
+ try {
33
+ return await Promise.race([(async () => {
34
+ const response = await fetch(url, {
35
+ signal: controller.signal
36
+ });
37
+ if (!response.ok) throw new Error(`Metro responded ${response.status} for ${url}`);
38
+ return response.json();
39
+ })(), new Promise((_, reject) => {
40
+ timer = setTimeout(() => {
41
+ reject(new Error("Asset discovery timed out. Try again."));
42
+ controller.abort();
43
+ }, Math.max(0, remainingMs));
44
+ })]);
45
+ } finally {
46
+ clearTimeout(timer);
47
+ }
48
+ }
26
49
  function getScriptURL() {
27
50
  try {
28
51
  const {
@@ -84,17 +107,16 @@ async function fetchAssetGraph() {
84
107
  message: "Graph fetch already running"
85
108
  };
86
109
  s.graphFetchInFlight = true;
110
+ s.graphFetchStartedAt = Date.now();
111
+ s.graphError = null;
112
+ (0, _assetStore.invalidate)();
113
+ const deadline = s.graphFetchStartedAt + GRAPH_TIMEOUT_MS;
87
114
  try {
88
115
  let data = null;
89
116
  let lastError = "";
90
117
  for (const url of candidates) {
91
118
  try {
92
- const response = await fetch(url);
93
- if (!response.ok) {
94
- lastError = `Metro responded ${response.status} for ${url}`;
95
- continue;
96
- }
97
- const parsed = await response.json();
119
+ const parsed = await fetchGraphPayload(url, deadline - Date.now());
98
120
  if (Array.isArray(parsed)) {
99
121
  data = parsed;
100
122
  break;
@@ -102,15 +124,17 @@ async function fetchAssetGraph() {
102
124
  lastError = "Unexpected .assets payload shape";
103
125
  } catch (error) {
104
126
  lastError = String(error?.message ?? error);
127
+ if (Date.now() >= deadline) break;
105
128
  }
106
129
  }
107
130
  if (!Array.isArray(data)) throw new Error(lastError || "No graph endpoint answered");
108
131
  const graph = data;
132
+ let count = 0;
109
133
  for (const asset of graph) {
110
134
  if (!asset || typeof asset.name !== "string" || typeof asset.type !== "string") {
111
135
  continue;
112
136
  }
113
- (0, _assetStore.upsertRecord)({
137
+ const record = (0, _assetStore.upsertRecord)({
114
138
  key: (0, _assetStore.assetKey)(asset.httpServerLocation, asset.name, asset.type),
115
139
  name: asset.name,
116
140
  type: asset.type,
@@ -124,14 +148,15 @@ async function fetchAssetGraph() {
124
148
  files: asset.files,
125
149
  fileHashes: asset.fileHashes
126
150
  });
151
+ if (record) count++;
127
152
  }
128
153
  s.graphSupported = true;
129
- s.graphCount = graph.length;
154
+ s.graphCount = count;
130
155
  s.graphError = null;
131
156
  (0, _assetStore.invalidate)();
132
157
  return {
133
158
  ok: true,
134
- count: graph.length
159
+ count
135
160
  };
136
161
  } catch (error) {
137
162
  s.graphSupported = getDevServerOrigin() != null;
@@ -143,6 +168,8 @@ async function fetchAssetGraph() {
143
168
  };
144
169
  } finally {
145
170
  s.graphFetchInFlight = false;
171
+ s.graphFetchStartedAt = null;
172
+ (0, _assetStore.invalidate)();
146
173
  }
147
174
  }
148
175
  //# sourceMappingURL=metroGraph.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_state","require","_assetStore","getScriptURL","NativeModules","sourceCode","SourceCode","url","getConstants","scriptURL","getDevServerOrigin","match","getGraphURLCandidates","test","origin","queryIndex","indexOf","query","slice","candidates","includes","push","replace","fetchAssetGraph","s","assetsState","length","graphSupported","graphError","invalidate","ok","message","graphFetchInFlight","data","lastError","response","fetch","status","parsed","json","Array","isArray","error","String","Error","graph","asset","name","type","upsertRecord","key","assetKey","httpServerLocation","hash","width","undefined","height","scales","fileSystemLocation","files","fileHashes","graphCount","count"],"sourceRoot":"../../../src","sources":["capture/metroGraph.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_state","require","_assetStore","GRAPH_TIMEOUT_MS","fetchGraphPayload","url","remainingMs","controller","AbortController","timer","Promise","race","response","fetch","signal","ok","Error","status","json","_","reject","setTimeout","abort","Math","max","clearTimeout","getScriptURL","NativeModules","sourceCode","SourceCode","getConstants","scriptURL","getDevServerOrigin","match","getGraphURLCandidates","test","origin","queryIndex","indexOf","query","slice","candidates","includes","push","replace","fetchAssetGraph","s","assetsState","length","graphSupported","graphError","invalidate","message","graphFetchInFlight","graphFetchStartedAt","Date","now","deadline","data","lastError","parsed","Array","isArray","error","String","graph","count","asset","name","type","record","upsertRecord","key","assetKey","httpServerLocation","hash","width","undefined","height","scales","fileSystemLocation","files","fileHashes","graphCount"],"sourceRoot":"../../../src","sources":["capture/metroGraph.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_assetStore","require","cachedRegistry","getRegistryModule","undefined","mod","getAssetByID","resolveRegistryAsset","registryId","Image","resolved","resolveAssetSource","uri","scale","upsertFromPackagerAsset","asset","upsertRecord","key","assetKey","httpServerLocation","name","type","origin","hash","width","height","scales","resolvedUri","resolvedScale","loaded","walkRegistry","registry","id","PATCH_MARKER","patchRegisterAsset","original","registerAsset","wrapped","call"],"sourceRoot":"../../../src","sources":["capture/registry.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_assetStore","require","cachedRegistry","getRegistryModule","undefined","mod","getAssetByID","resolveRegistryAsset","registryId","Image","resolved","resolveAssetSource","uri","scale","upsertFromPackagerAsset","asset","upsertRecord","key","assetKey","httpServerLocation","name","type","origin","hash","width","height","scales","resolvedUri","resolvedScale","loaded","walkRegistry","registry","id","PATCH_MARKER","patchRegisterAsset","original","registerAsset","wrapped","call"],"sourceRoot":"../../../src","sources":["capture/registry.ts"],"mappings":"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","ignoreList":[]}
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.AssetDetail = AssetDetail;
7
7
  var _reactNative = require("react-native");
8
8
  var _sharedUi = require("@buoy-gg/shared-ui");
9
- var _measure = require("../capture/measure");
9
+ var _AssetImage = require("./AssetImage");
10
10
  var _format = require("../format");
11
11
  var _assetStore = require("../store/assetStore");
12
12
  var _testIDs = require("../utils/testIDs");
@@ -15,8 +15,8 @@ var _jsxRuntime = require("react/jsx-runtime");
15
15
  * AssetDetail — full metadata for one asset: preview, identity, dimensions,
16
16
  * per-scale sizes, resolution info, and which audit findings apply.
17
17
  *
18
- * Image previews render through the numeric registry id (works in every
19
- * environment); fonts render a pangram with fontFamily set to the asset name
18
+ * Image previews use registry ids or asset URLs, with optional expo-image for
19
+ * native SVGs; fonts render a pangram with fontFamily set to the asset name
20
20
  * — a best-effort guess (family ≠ filename for many fonts) that falls back
21
21
  * to the system font silently when it misses.
22
22
  */
@@ -44,16 +44,13 @@ function Preview({
44
44
  record
45
45
  }) {
46
46
  if (record.kind === "image") {
47
- const source = (0, _measure.displaySource)(record);
48
- if (source == null) return null;
49
47
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
50
48
  style: styles.previewBox,
51
49
  testID: _testIDs.ASSETS_TEST_IDS.detailPreview,
52
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Image, {
50
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_AssetImage.AssetImage, {
53
51
  testID: "buoy-internal-assets-preview",
54
- source: source,
55
- style: styles.previewImage,
56
- resizeMode: "contain"
52
+ record: record,
53
+ style: styles.previewImage
57
54
  })
58
55
  });
59
56
  }
@@ -77,7 +74,7 @@ function AssetDetail({
77
74
  }) {
78
75
  const findings = [];
79
76
  if (insights.neverLoaded.includes(record.id)) {
80
- findings.push("Never loaded — shipped in the bundle but no code required it");
77
+ findings.push("Not observed in the runtime registry this app run. This does not prove the asset is unused.");
81
78
  }
82
79
  if (insights.scaleGaps.includes(record.id)) {
83
80
  findings.push("Scale gap — no variant covers this device's pixel ratio");
@@ -124,7 +121,7 @@ function AssetDetail({
124
121
  value: record.kind
125
122
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
126
123
  label: "Status",
127
- value: record.loaded ? "Loaded (registered at runtime)" : "In bundle, never loaded"
124
+ value: record.loaded ? "Loaded (registered at runtime)" : "Not observed in the runtime registry"
128
125
  }), record.kind === "image" ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
129
126
  label: "Dimensions",
130
127
  value: `${(0, _format.formatDimensions)(record)} (logical)`
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_sharedUi","_measure","_format","_assetStore","_testIDs","_jsxRuntime","Row","label","value","testID","assetDetailRowTestID","jsxs","View","style","styles","kvRow","children","jsx","Text","kvLabel","kvValue","selectable","Preview","record","kind","source","displaySource","previewBox","ASSETS_TEST_IDS","detailPreview","Image","previewImage","resizeMode","detailFontPreview","fontPreview","fontFamily","name","AssetDetail","insights","findings","neverLoaded","includes","id","push","scaleGaps","webpCandidates","duplicate","duplicates","find","d","ids","length","overDecode","heavyGifs","heavyFonts","scaleAnomalies","estimate","estDecodedBytes","ScrollView","scroll","contentContainerStyle","content","detailScroll","detailFindings","map","finding","index","findingText","assetFindingTestID","type","loaded","formatDimensions","scales","formatScales","sizesByScale","Object","entries","scale","bytes","formatBytes","sizeBytes","sizeSource","registryId","String","hash","httpServerLocation","fileSystemLocation","resolvedUri","StyleSheet","create","flex","padding","gap","borderRadius","backgroundColor","night","color","bg","alignItems","justifyContent","minHeight","width","height","text","fontSize","textAlign","borderWidth","borderColor","border","surface","textSecondary","lineHeight","textTertiary","fontWeight","letterSpacing","textTransform"],"sourceRoot":"../../../src","sources":["components/AssetDetail.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_sharedUi","_AssetImage","_format","_assetStore","_testIDs","_jsxRuntime","Row","label","value","testID","assetDetailRowTestID","jsxs","View","style","styles","kvRow","children","jsx","Text","kvLabel","kvValue","selectable","Preview","record","kind","previewBox","ASSETS_TEST_IDS","detailPreview","AssetImage","previewImage","detailFontPreview","fontPreview","fontFamily","name","AssetDetail","insights","findings","neverLoaded","includes","id","push","scaleGaps","webpCandidates","duplicate","duplicates","find","d","ids","length","overDecode","heavyGifs","heavyFonts","scaleAnomalies","estimate","estDecodedBytes","ScrollView","scroll","contentContainerStyle","content","detailScroll","detailFindings","map","finding","index","findingText","assetFindingTestID","type","loaded","formatDimensions","scales","formatScales","sizesByScale","Object","entries","scale","bytes","formatBytes","sizeBytes","sizeSource","registryId","String","hash","httpServerLocation","fileSystemLocation","resolvedUri","StyleSheet","create","flex","padding","gap","borderRadius","backgroundColor","night","color","bg","alignItems","justifyContent","minHeight","width","height","text","fontSize","textAlign","borderWidth","borderColor","border","surface","textSecondary","lineHeight","textTertiary","fontWeight","letterSpacing","textTransform"],"sourceRoot":"../../../src","sources":["components/AssetDetail.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AssetImage = AssetImage;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ var _sharedUi = require("@buoy-gg/shared-ui");
10
+ var _measure = require("../capture/measure");
11
+ var _optionalExpoImage = require("./optionalExpoImage");
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ function AssetImage({
14
+ record,
15
+ style,
16
+ testID,
17
+ compact = false
18
+ }) {
19
+ const source = (0, _measure.displaySource)(record);
20
+ const svg = record.type.toLowerCase() === "svg";
21
+ const ExpoImage = svg && _reactNative.Platform.OS !== "web" ? (0, _optionalExpoImage.getExpoPreviewImage)() : null;
22
+ const sourceKey = `${record.key}:${record.hash ?? ""}:${typeof source === "number" ? source : source?.uri ?? ""}`;
23
+ const [failedSource, setFailedSource] = (0, _react.useState)(null);
24
+ const unavailable = source == null || failedSource === sourceKey || svg && _reactNative.Platform.OS !== "web" && !ExpoImage;
25
+ if (unavailable) {
26
+ const label = svg ? "SVG preview unavailable" : "Image preview unavailable";
27
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
28
+ style: [style, styles.fallback],
29
+ accessibilityLabel: label,
30
+ testID: `${testID}-unavailable`,
31
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
32
+ style: styles.text,
33
+ children: compact ? svg ? "SVG" : "IMG" : label
34
+ })
35
+ });
36
+ }
37
+ const onError = () => setFailedSource(sourceKey);
38
+ if (ExpoImage) {
39
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(ExpoImage, {
40
+ source: source,
41
+ style: style,
42
+ contentFit: "contain",
43
+ onError: onError,
44
+ testID: testID
45
+ });
46
+ }
47
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Image, {
48
+ source: source,
49
+ style: style,
50
+ resizeMode: "contain",
51
+ onError: onError,
52
+ testID: testID
53
+ });
54
+ }
55
+ const styles = _reactNative.StyleSheet.create({
56
+ fallback: {
57
+ alignItems: "center",
58
+ justifyContent: "center"
59
+ },
60
+ text: {
61
+ color: _sharedUi.night.color.textSecondary,
62
+ fontSize: 10,
63
+ textAlign: "center"
64
+ }
65
+ });
66
+ //# sourceMappingURL=AssetImage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","_sharedUi","_measure","_optionalExpoImage","_jsxRuntime","AssetImage","record","style","testID","compact","source","displaySource","svg","type","toLowerCase","ExpoImage","Platform","OS","getExpoPreviewImage","sourceKey","key","hash","uri","failedSource","setFailedSource","useState","unavailable","label","jsx","View","styles","fallback","accessibilityLabel","children","Text","text","onError","contentFit","Image","resizeMode","StyleSheet","create","alignItems","justifyContent","color","night","textSecondary","fontSize","textAlign"],"sourceRoot":"../../../src","sources":["components/AssetImage.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAEA,IAAAI,kBAAA,GAAAJ,OAAA;AAA0D,IAAAK,WAAA,GAAAL,OAAA;AAEnD,SAASM,UAAUA,CAAC;EAAEC,MAAM;EAAEC,KAAK;EAAEC,MAAM;EAAEC,OAAO,GAAG;AAK9D,CAAC,EAAE;EACD,MAAMC,MAAM,GAAG,IAAAC,sBAAa,EAACL,MAAM,CAAC;EACpC,MAAMM,GAAG,GAAGN,MAAM,CAACO,IAAI,CAACC,WAAW,CAAC,CAAC,KAAK,KAAK;EAC/C,MAAMC,SAAS,GAAGH,GAAG,IAAII,qBAAQ,CAACC,EAAE,KAAK,KAAK,GAAG,IAAAC,sCAAmB,EAAC,CAAC,GAAG,IAAI;EAC7E,MAAMC,SAAS,GAAG,GAAGb,MAAM,CAACc,GAAG,IAAId,MAAM,CAACe,IAAI,IAAI,EAAE,IAAI,OAAOX,MAAM,KAAK,QAAQ,GAAGA,MAAM,GAAGA,MAAM,EAAEY,GAAG,IAAI,EAAE,EAAE;EACjH,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAG,IAAAC,eAAQ,EAAgB,IAAI,CAAC;EACrE,MAAMC,WAAW,GAAGhB,MAAM,IAAI,IAAI,IAAIa,YAAY,KAAKJ,SAAS,IAC7DP,GAAG,IAAII,qBAAQ,CAACC,EAAE,KAAK,KAAK,IAAI,CAACF,SAAU;EAE9C,IAAIW,WAAW,EAAE;IACf,MAAMC,KAAK,GAAGf,GAAG,GAAG,yBAAyB,GAAG,2BAA2B;IAC3E,oBACE,IAAAR,WAAA,CAAAwB,GAAA,EAAC5B,YAAA,CAAA6B,IAAI;MAACtB,KAAK,EAAE,CAACA,KAAK,EAAEuB,MAAM,CAACC,QAAQ,CAAE;MAACC,kBAAkB,EAAEL,KAAM;MAACnB,MAAM,EAAE,GAAGA,MAAM,cAAe;MAAAyB,QAAA,eAChG,IAAA7B,WAAA,CAAAwB,GAAA,EAAC5B,YAAA,CAAAkC,IAAI;QAAC3B,KAAK,EAAEuB,MAAM,CAACK,IAAK;QAAAF,QAAA,EAAExB,OAAO,GAAIG,GAAG,GAAG,KAAK,GAAG,KAAK,GAAIe;MAAK,CAAO;IAAC,CACtE,CAAC;EAEX;EAEA,MAAMS,OAAO,GAAGA,CAAA,KAAMZ,eAAe,CAACL,SAAS,CAAC;EAChD,IAAIJ,SAAS,EAAE;IACb,oBAAO,IAAAX,WAAA,CAAAwB,GAAA,EAACb,SAAS;MAACL,MAAM,EAAEA,MAAO;MAACH,KAAK,EAAEA,KAAM;MAAC8B,UAAU,EAAC,SAAS;MAACD,OAAO,EAAEA,OAAQ;MAAC5B,MAAM,EAAEA;IAAO,CAAE,CAAC;EAC3G;EACA,oBAAO,IAAAJ,WAAA,CAAAwB,GAAA,EAAC5B,YAAA,CAAAsC,KAAK;IAAC5B,MAAM,EAAEA,MAAO;IAACH,KAAK,EAAEA,KAAM;IAACgC,UAAU,EAAC,SAAS;IAACH,OAAO,EAAEA,OAAQ;IAAC5B,MAAM,EAAEA;EAAO,CAAE,CAAC;AACvG;AAEA,MAAMsB,MAAM,GAAGU,uBAAU,CAACC,MAAM,CAAC;EAC/BV,QAAQ,EAAE;IAAEW,UAAU,EAAE,QAAQ;IAAEC,cAAc,EAAE;EAAS,CAAC;EAC5DR,IAAI,EAAE;IAAES,KAAK,EAAEC,eAAK,CAACD,KAAK,CAACE,aAAa;IAAEC,QAAQ,EAAE,EAAE;IAAEC,SAAS,EAAE;EAAS;AAC9E,CAAC,CAAC","ignoreList":[]}
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.AssetRow = AssetRow;
7
7
  var _reactNative = require("react-native");
8
8
  var _sharedUi = require("@buoy-gg/shared-ui");
9
- var _measure = require("../capture/measure");
9
+ var _AssetImage = require("./AssetImage");
10
10
  var _format = require("../format");
11
11
  var _assetStore = require("../store/assetStore");
12
12
  var _testIDs = require("../utils/testIDs");
@@ -51,10 +51,9 @@ function AssetRow({
51
51
  onPress
52
52
  }) {
53
53
  const accent = _format.KIND_COLORS[record.kind];
54
- const thumbSource = record.kind === "image" ? (0, _measure.displaySource)(record) : null;
55
54
  const badges = [];
56
55
  if (!record.loaded) badges.push({
57
- label: "UNUSED"
56
+ label: "NOT OBSERVED"
58
57
  });
59
58
  if (flags.oversize) badges.push({
60
59
  label: "OVERSIZE",
@@ -85,14 +84,14 @@ function AssetRow({
85
84
  style: styles.body,
86
85
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
87
86
  style: styles.thumbBox,
88
- children: thumbSource != null ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Image
87
+ children: record.kind === "image" ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_AssetImage.AssetImage
89
88
  // buoy-internal- prefix: the images tool skips its own toolchain's
90
89
  // views, so previewing an asset never records a render of itself.
91
90
  , {
92
91
  testID: "buoy-internal-assets-thumb",
93
- source: thumbSource,
92
+ record: record,
94
93
  style: styles.thumb,
95
- resizeMode: "contain"
94
+ compact: true
96
95
  }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
97
96
  style: [styles.thumbFallback, {
98
97
  color: accent