@buoy-gg/core 6.0.1 → 7.0.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.
Files changed (40) hide show
  1. package/README.md +7 -1
  2. package/lib/commonjs/floatingMenu/DevToolsSettingsModal.js +64 -0
  3. package/lib/commonjs/floatingMenu/FloatingDevTools.js +34 -10
  4. package/lib/commonjs/floatingMenu/FloatingDevTools.web.js +7 -1
  5. package/lib/commonjs/floatingMenu/autoDiscoverPresets.js +30 -15
  6. package/lib/commonjs/floatingMenu/autoExternalSync.js +43 -34
  7. package/lib/commonjs/floatingMenu/optionalRequire.js +33 -0
  8. package/lib/commonjs/floatingMenu/useDesktopSyncStatus.js +28 -0
  9. package/lib/module/floatingMenu/DevToolsSettingsModal.js +65 -1
  10. package/lib/module/floatingMenu/FloatingDevTools.js +35 -11
  11. package/lib/module/floatingMenu/FloatingDevTools.web.js +7 -1
  12. package/lib/module/floatingMenu/autoDiscoverPresets.js +31 -15
  13. package/lib/module/floatingMenu/autoExternalSync.js +44 -34
  14. package/lib/module/floatingMenu/optionalRequire.js +29 -0
  15. package/lib/module/floatingMenu/useDesktopSyncStatus.js +25 -0
  16. package/lib/typescript/commonjs/floatingMenu/DevToolsSettingsModal.d.ts.map +1 -1
  17. package/lib/typescript/commonjs/floatingMenu/FloatingDevTools.d.ts +18 -4
  18. package/lib/typescript/commonjs/floatingMenu/FloatingDevTools.d.ts.map +1 -1
  19. package/lib/typescript/commonjs/floatingMenu/FloatingDevTools.web.d.ts +6 -1
  20. package/lib/typescript/commonjs/floatingMenu/FloatingDevTools.web.d.ts.map +1 -1
  21. package/lib/typescript/commonjs/floatingMenu/autoDiscoverPresets.d.ts.map +1 -1
  22. package/lib/typescript/commonjs/floatingMenu/autoExternalSync.d.ts +7 -1
  23. package/lib/typescript/commonjs/floatingMenu/autoExternalSync.d.ts.map +1 -1
  24. package/lib/typescript/commonjs/floatingMenu/optionalRequire.d.ts +12 -0
  25. package/lib/typescript/commonjs/floatingMenu/optionalRequire.d.ts.map +1 -0
  26. package/lib/typescript/commonjs/floatingMenu/useDesktopSyncStatus.d.ts +14 -0
  27. package/lib/typescript/commonjs/floatingMenu/useDesktopSyncStatus.d.ts.map +1 -0
  28. package/lib/typescript/module/floatingMenu/DevToolsSettingsModal.d.ts.map +1 -1
  29. package/lib/typescript/module/floatingMenu/FloatingDevTools.d.ts +18 -4
  30. package/lib/typescript/module/floatingMenu/FloatingDevTools.d.ts.map +1 -1
  31. package/lib/typescript/module/floatingMenu/FloatingDevTools.web.d.ts +6 -1
  32. package/lib/typescript/module/floatingMenu/FloatingDevTools.web.d.ts.map +1 -1
  33. package/lib/typescript/module/floatingMenu/autoDiscoverPresets.d.ts.map +1 -1
  34. package/lib/typescript/module/floatingMenu/autoExternalSync.d.ts +7 -1
  35. package/lib/typescript/module/floatingMenu/autoExternalSync.d.ts.map +1 -1
  36. package/lib/typescript/module/floatingMenu/optionalRequire.d.ts +12 -0
  37. package/lib/typescript/module/floatingMenu/optionalRequire.d.ts.map +1 -0
  38. package/lib/typescript/module/floatingMenu/useDesktopSyncStatus.d.ts +14 -0
  39. package/lib/typescript/module/floatingMenu/useDesktopSyncStatus.d.ts.map +1 -0
  40. package/package.json +18 -7
@@ -30,6 +30,11 @@ export interface FloatingDevToolsProps {
30
30
  apps?: WebToolConfig[];
31
31
  /** Disable onboarding hints (not implemented yet) */
32
32
  disableHints?: boolean;
33
+ /**
34
+ * API parity with native. Desktop sync is native-only, so headless mode
35
+ * on web simply renders nothing.
36
+ */
37
+ headless?: boolean;
33
38
  }
34
39
  /**
35
40
  * Unified FloatingDevTools component - self-contained, no wrapping required.
@@ -43,6 +48,6 @@ export interface FloatingDevToolsProps {
43
48
  * <FloatingDevTools environment="qa" userRole="admin" />
44
49
  * ```
45
50
  */
46
- export declare function FloatingDevTools({ environment: _environment, userRole, availableEnvironments: _availableEnvironments, onEnvironmentSwitch: _onEnvironmentSwitch, apps, disableHints: _disableHints, }: FloatingDevToolsProps): import("react").JSX.Element;
51
+ export declare function FloatingDevTools({ environment: _environment, userRole, availableEnvironments: _availableEnvironments, onEnvironmentSwitch: _onEnvironmentSwitch, apps, disableHints: _disableHints, headless, }: FloatingDevToolsProps): import("react").JSX.Element | null;
47
52
  export type { WebToolConfig, Environment, UserRole };
48
53
  //# sourceMappingURL=FloatingDevTools.web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FloatingDevTools.web.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/FloatingDevTools.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,QAAQ,EAId,MAAM,+BAA+B,CAAC;AAWvC,MAAM,WAAW,qBAAqB;IAEpC,0DAA0D;IAC1D,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gDAAgD;IAChD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,WAAW,EAAE,CAAC;IACtC,4CAA4C;IAC5C,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;IAGjD,gEAAgE;IAChE,IAAI,CAAC,EAAE,aAAa,EAAE,CAAC;IAGvB,qDAAqD;IACrD,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,WAAW,EAAE,YAAY,EACzB,QAAQ,EACR,qBAAqB,EAAE,sBAAsB,EAC7C,mBAAmB,EAAE,oBAAoB,EACzC,IAAI,EACJ,YAAY,EAAE,aAAa,GAC5B,EAAE,qBAAqB,+BAuHvB;AAMD,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"FloatingDevTools.web.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/FloatingDevTools.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,QAAQ,EAId,MAAM,+BAA+B,CAAC;AAWvC,MAAM,WAAW,qBAAqB;IAEpC,0DAA0D;IAC1D,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gDAAgD;IAChD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,WAAW,EAAE,CAAC;IACtC,4CAA4C;IAC5C,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;IAGjD,gEAAgE;IAChE,IAAI,CAAC,EAAE,aAAa,EAAE,CAAC;IAGvB,qDAAqD;IACrD,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,WAAW,EAAE,YAAY,EACzB,QAAQ,EACR,qBAAqB,EAAE,sBAAsB,EAC7C,mBAAmB,EAAE,oBAAoB,EACzC,IAAI,EACJ,YAAY,EAAE,aAAa,EAC3B,QAAgB,GACjB,EAAE,qBAAqB,sCA4HvB;AAMD,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"autoDiscoverPresets.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/autoDiscoverPresets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,EAAE,CA8MpD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,YAAY,EAAE,GAC1B,YAAY,EAAE,CAahB"}
1
+ {"version":3,"file":"autoDiscoverPresets.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/autoDiscoverPresets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,EAAE,CA4NpD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,YAAY,EAAE,GAC1B,YAAY,EAAE,CAahB"}
@@ -2,7 +2,13 @@ import type { EnvVarConfig } from "./FloatingDevTools";
2
2
  /** Whether zero-config sync can run (the external-sync package is installed). */
3
3
  export declare function isExternalSyncAvailable(): boolean;
4
4
  export interface ExternalSyncOptions {
5
- /** Broker URL. @default "http://localhost:42831" (the Buoy Desktop app) */
5
+ /**
6
+ * Broker URL. @default derived from Metro's scriptURL host (the machine
7
+ * that served the bundle — where Buoy Desktop runs) on port 42831, so
8
+ * physical devices work zero-config (Android over USB: run
9
+ * `adb reverse tcp:42831 tcp:42831`). Pass explicitly for tunnels or a
10
+ * broker on another machine.
11
+ */
6
12
  socketURL?: string;
7
13
  /** Shown in the desktop device list. @default "<app name> (<platform>)" */
8
14
  deviceName?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"autoExternalSync.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/autoExternalSync.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA8GvD,iFAAiF;AACjF,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAED,MAAM,WAAW,mBAAmB;IAClC,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAuBD,UAAU,qBAAqB;IAC7B,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,6EAA6E;IAC7E,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC;IACjC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,eAAe,EACf,KAAK,EACL,UAAU,GACX,EAAE,qBAAqB,QAqGvB"}
1
+ {"version":3,"file":"autoExternalSync.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/autoExternalSync.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAmHvD,iFAAiF;AACjF,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAuBD,UAAU,qBAAqB;IAC7B,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,6EAA6E;IAC7E,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC;IACjC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,eAAe,EACf,KAAK,EACL,UAAU,GACX,EAAE,qBAAqB,QA0GvB"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Call from the CATCH block of a guarded optional require (the require
3
+ * literal itself must stay lexically inside try{} for Metro to treat the
4
+ * dependency as optional — this helper only inspects the failure).
5
+ *
6
+ * Silent when the package simply isn't installed. Warns once per module
7
+ * (dev only) when the package IS present but threw during import — a broken
8
+ * transitive resolve (subpath exports, version skew) or a top-level crash —
9
+ * which otherwise fails silently and makes tools vanish with no clue.
10
+ */
11
+ export declare function reportOptionalRequireError(moduleName: string, err: unknown): void;
12
+ //# sourceMappingURL=optionalRequire.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optionalRequire.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/optionalRequire.ts"],"names":[],"mappings":"AASA;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,OAAO,GACX,IAAI,CAgBN"}
@@ -0,0 +1,14 @@
1
+ export interface DesktopSyncStatus {
2
+ /** Final (platform-rewritten) broker URL being dialed; null before init. */
3
+ targetURL: string | null;
4
+ state: "idle" | "connecting" | "connected" | "retrying";
5
+ lastError: string | null;
6
+ since: number;
7
+ }
8
+ /**
9
+ * Live desktop-sync status for the settings modal. Returns null when
10
+ * external-sync isn't installed or predates the sync-status store — the
11
+ * caller hides the status row in that case.
12
+ */
13
+ export declare function useDesktopSyncStatus(): DesktopSyncStatus | null;
14
+ //# sourceMappingURL=useDesktopSyncStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDesktopSyncStatus.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/useDesktopSyncStatus.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,CAAC;IACxD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf;AAID;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,GAAG,IAAI,CAK/D"}
@@ -1 +1 @@
1
- {"version":3,"file":"DevToolsSettingsModal.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/DevToolsSettingsModal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6C,EAAE,EAAE,MAAM,OAAO,CAAC;AAsJtE;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,uFAAuF;IACvF,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QACvC,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,kDAAkD;IAClD,cAAc,CAAC,EAAE,sBAAsB,CAAC;CACzC;AAED,UAAU,0BAA0B;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACxD,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,aAAa,CAAC,EAAE;QACd,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;KAChC,EAAE,CAAC;CACL;AA2DD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,0BAA0B,CA+8BhE,CAAC;AAwDF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;CAuD/B,CAAC"}
1
+ {"version":3,"file":"DevToolsSettingsModal.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/DevToolsSettingsModal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6C,EAAE,EAAE,MAAM,OAAO,CAAC;AAuJtE;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,uFAAuF;IACvF,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QACvC,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,kDAAkD;IAClD,cAAc,CAAC,EAAE,sBAAsB,CAAC;CACzC;AAED,UAAU,0BAA0B;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACxD,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,aAAa,CAAC,EAAE;QACd,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;KAChC,EAAE,CAAC;CACL;AA2DD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,0BAA0B,CAwiChE,CAAC;AAwDF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;CAuD/B,CAAC"}
@@ -234,9 +234,11 @@ export interface FloatingDevToolsProps extends Omit<FloatingMenuProps, "apps"> {
234
234
  * Zero-config sync to the Buoy Desktop dashboard.
235
235
  *
236
236
  * Enabled by default in dev builds whenever @buoy-gg/external-sync is
237
- * installed: connects to the desktop broker (localhost:42831 — a silent
238
- * no-op when the desktop app isn't running) and registers a sync adapter
239
- * for every installed tool automatically. Nothing else to render.
237
+ * installed: connects to the desktop broker on port 42831 of the Metro
238
+ * host (derived from the bundle's scriptURL, so physical devices reach
239
+ * the dev machine automatically; retries quietly when the desktop app
240
+ * isn't running) and registers a sync adapter for every installed tool.
241
+ * Nothing else to render.
240
242
  *
241
243
  * Pass `false` to disable, or options to customize the device identity /
242
244
  * broker URL:
@@ -247,6 +249,18 @@ export interface FloatingDevToolsProps extends Omit<FloatingMenuProps, "apps"> {
247
249
  * ```
248
250
  */
249
251
  externalSync?: boolean | ExternalSyncOptions;
252
+ /**
253
+ * Headless (sync-only) mode: mount the desktop sync adapters and route
254
+ * tracking but render NO on-device UI — no floating bubble, dial, or
255
+ * overlays. For builds that ship to non-developers (field/associate
256
+ * builds) where the desktop dashboard is the only debugging surface.
257
+ *
258
+ * `requireLicense` is ignored in headless mode (there is no UI to gate);
259
+ * the production free-tier gate still applies. Native only.
260
+ *
261
+ * @default false
262
+ */
263
+ headless?: boolean;
250
264
  }
251
265
  /**
252
266
  * Unified floating development tools component with automatic preset discovery.
@@ -302,5 +316,5 @@ export interface FloatingDevToolsProps extends Omit<FloatingMenuProps, "apps"> {
302
316
  *
303
317
  * @param props - FloatingDevTools props
304
318
  */
305
- export declare const FloatingDevTools: ({ apps, requiredEnvVars, requiredStorageKeys, children, disableHints, defaultFloatingTools, defaultDialTools, requireLicense, licenseKey: licenseKeyProp, zustandStores, environment, externalSync, ...props }: FloatingDevToolsProps) => React.JSX.Element | null;
319
+ export declare const FloatingDevTools: ({ apps, requiredEnvVars, requiredStorageKeys, children, disableHints, defaultFloatingTools, defaultDialTools, requireLicense, licenseKey: licenseKeyProp, zustandStores, environment, externalSync, headless, ...props }: FloatingDevToolsProps) => React.JSX.Element | null;
306
320
  //# sourceMappingURL=FloatingDevTools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FloatingDevTools.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/FloatingDevTools.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+D,MAAM,OAAO,CAAC;AAGpF,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAMtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI5C,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,YAAY,GACpB,MAAM,GACN;IACE,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GACD;IACE,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EACR,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,OAAO,GACP,KAAK,CAAC;IACV,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEN;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;CAC1C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAC5E;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC;IAEtB;;;;;;;;;;;;;;OAcG;IACH,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC;IAEjC;;;;;;;;;;;;OAYG;IACH,mBAAmB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAEzC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;;;;;;;;;;OAaG;IACH,oBAAoB,CAAC,EAAE,qBAAqB,CAAC;IAE7C;;;;;;;;;;;;;;OAcG;IACH,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IAErC;;;;;;;;;;;;;;;;OAgBG;IACH,qBAAqB,CAAC,EAAE,OAAO,oBAAoB,EAAE,WAAW,EAAE,CAAC;IAEnE;;;;;;;;;;;;;OAaG;IACH,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,oBAAoB,EAAE,WAAW,KAAK,IAAI,CAAC;IAEtF;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;;;;;;;;;;;;;OAkBG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEpC;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,mBAAmB,CAAC;CAC9C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,eAAO,MAAM,gBAAgB,GAAI,gNAc9B,qBAAqB,6BAoQvB,CAAC"}
1
+ {"version":3,"file":"FloatingDevTools.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/FloatingDevTools.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+D,MAAM,OAAO,CAAC;AAGpF,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAMtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAK5C,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,YAAY,GACpB,MAAM,GACN;IACE,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GACD;IACE,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EACR,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,OAAO,GACP,KAAK,CAAC;IACV,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEN;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;CAC1C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAC5E;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC;IAEtB;;;;;;;;;;;;;;OAcG;IACH,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC;IAEjC;;;;;;;;;;;;OAYG;IACH,mBAAmB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAEzC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;;;;;;;;;;OAaG;IACH,oBAAoB,CAAC,EAAE,qBAAqB,CAAC;IAE7C;;;;;;;;;;;;;;OAcG;IACH,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IAErC;;;;;;;;;;;;;;;;OAgBG;IACH,qBAAqB,CAAC,EAAE,OAAO,oBAAoB,EAAE,WAAW,EAAE,CAAC;IAEnE;;;;;;;;;;;;;OAaG;IACH,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,oBAAoB,EAAE,WAAW,KAAK,IAAI,CAAC;IAEtF;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;;;;;;;;;;;;;OAkBG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEpC;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,mBAAmB,CAAC;IAE7C;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,eAAO,MAAM,gBAAgB,GAAI,0NAe9B,qBAAqB,6BAmSvB,CAAC"}
@@ -30,6 +30,11 @@ export interface FloatingDevToolsProps {
30
30
  apps?: WebToolConfig[];
31
31
  /** Disable onboarding hints (not implemented yet) */
32
32
  disableHints?: boolean;
33
+ /**
34
+ * API parity with native. Desktop sync is native-only, so headless mode
35
+ * on web simply renders nothing.
36
+ */
37
+ headless?: boolean;
33
38
  }
34
39
  /**
35
40
  * Unified FloatingDevTools component - self-contained, no wrapping required.
@@ -43,6 +48,6 @@ export interface FloatingDevToolsProps {
43
48
  * <FloatingDevTools environment="qa" userRole="admin" />
44
49
  * ```
45
50
  */
46
- export declare function FloatingDevTools({ environment: _environment, userRole, availableEnvironments: _availableEnvironments, onEnvironmentSwitch: _onEnvironmentSwitch, apps, disableHints: _disableHints, }: FloatingDevToolsProps): import("react").JSX.Element;
51
+ export declare function FloatingDevTools({ environment: _environment, userRole, availableEnvironments: _availableEnvironments, onEnvironmentSwitch: _onEnvironmentSwitch, apps, disableHints: _disableHints, headless, }: FloatingDevToolsProps): import("react").JSX.Element | null;
47
52
  export type { WebToolConfig, Environment, UserRole };
48
53
  //# sourceMappingURL=FloatingDevTools.web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FloatingDevTools.web.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/FloatingDevTools.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,QAAQ,EAId,MAAM,+BAA+B,CAAC;AAWvC,MAAM,WAAW,qBAAqB;IAEpC,0DAA0D;IAC1D,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gDAAgD;IAChD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,WAAW,EAAE,CAAC;IACtC,4CAA4C;IAC5C,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;IAGjD,gEAAgE;IAChE,IAAI,CAAC,EAAE,aAAa,EAAE,CAAC;IAGvB,qDAAqD;IACrD,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,WAAW,EAAE,YAAY,EACzB,QAAQ,EACR,qBAAqB,EAAE,sBAAsB,EAC7C,mBAAmB,EAAE,oBAAoB,EACzC,IAAI,EACJ,YAAY,EAAE,aAAa,GAC5B,EAAE,qBAAqB,+BAuHvB;AAMD,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"FloatingDevTools.web.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/FloatingDevTools.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,QAAQ,EAId,MAAM,+BAA+B,CAAC;AAWvC,MAAM,WAAW,qBAAqB;IAEpC,0DAA0D;IAC1D,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gDAAgD;IAChD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,WAAW,EAAE,CAAC;IACtC,4CAA4C;IAC5C,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;IAGjD,gEAAgE;IAChE,IAAI,CAAC,EAAE,aAAa,EAAE,CAAC;IAGvB,qDAAqD;IACrD,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,WAAW,EAAE,YAAY,EACzB,QAAQ,EACR,qBAAqB,EAAE,sBAAsB,EAC7C,mBAAmB,EAAE,oBAAoB,EACzC,IAAI,EACJ,YAAY,EAAE,aAAa,EAC3B,QAAgB,GACjB,EAAE,qBAAqB,sCA4HvB;AAMD,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"autoDiscoverPresets.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/autoDiscoverPresets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,EAAE,CA8MpD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,YAAY,EAAE,GAC1B,YAAY,EAAE,CAahB"}
1
+ {"version":3,"file":"autoDiscoverPresets.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/autoDiscoverPresets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,EAAE,CA4NpD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,YAAY,EAAE,GAC1B,YAAY,EAAE,CAahB"}
@@ -2,7 +2,13 @@ import type { EnvVarConfig } from "./FloatingDevTools";
2
2
  /** Whether zero-config sync can run (the external-sync package is installed). */
3
3
  export declare function isExternalSyncAvailable(): boolean;
4
4
  export interface ExternalSyncOptions {
5
- /** Broker URL. @default "http://localhost:42831" (the Buoy Desktop app) */
5
+ /**
6
+ * Broker URL. @default derived from Metro's scriptURL host (the machine
7
+ * that served the bundle — where Buoy Desktop runs) on port 42831, so
8
+ * physical devices work zero-config (Android over USB: run
9
+ * `adb reverse tcp:42831 tcp:42831`). Pass explicitly for tunnels or a
10
+ * broker on another machine.
11
+ */
6
12
  socketURL?: string;
7
13
  /** Shown in the desktop device list. @default "<app name> (<platform>)" */
8
14
  deviceName?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"autoExternalSync.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/autoExternalSync.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA8GvD,iFAAiF;AACjF,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAED,MAAM,WAAW,mBAAmB;IAClC,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAuBD,UAAU,qBAAqB;IAC7B,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,6EAA6E;IAC7E,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC;IACjC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,eAAe,EACf,KAAK,EACL,UAAU,GACX,EAAE,qBAAqB,QAqGvB"}
1
+ {"version":3,"file":"autoExternalSync.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/autoExternalSync.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAmHvD,iFAAiF;AACjF,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAuBD,UAAU,qBAAqB;IAC7B,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,6EAA6E;IAC7E,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC;IACjC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,eAAe,EACf,KAAK,EACL,UAAU,GACX,EAAE,qBAAqB,QA0GvB"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Call from the CATCH block of a guarded optional require (the require
3
+ * literal itself must stay lexically inside try{} for Metro to treat the
4
+ * dependency as optional — this helper only inspects the failure).
5
+ *
6
+ * Silent when the package simply isn't installed. Warns once per module
7
+ * (dev only) when the package IS present but threw during import — a broken
8
+ * transitive resolve (subpath exports, version skew) or a top-level crash —
9
+ * which otherwise fails silently and makes tools vanish with no clue.
10
+ */
11
+ export declare function reportOptionalRequireError(moduleName: string, err: unknown): void;
12
+ //# sourceMappingURL=optionalRequire.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optionalRequire.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/optionalRequire.ts"],"names":[],"mappings":"AASA;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,OAAO,GACX,IAAI,CAgBN"}
@@ -0,0 +1,14 @@
1
+ export interface DesktopSyncStatus {
2
+ /** Final (platform-rewritten) broker URL being dialed; null before init. */
3
+ targetURL: string | null;
4
+ state: "idle" | "connecting" | "connected" | "retrying";
5
+ lastError: string | null;
6
+ since: number;
7
+ }
8
+ /**
9
+ * Live desktop-sync status for the settings modal. Returns null when
10
+ * external-sync isn't installed or predates the sync-status store — the
11
+ * caller hides the status row in that case.
12
+ */
13
+ export declare function useDesktopSyncStatus(): DesktopSyncStatus | null;
14
+ //# sourceMappingURL=useDesktopSyncStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDesktopSyncStatus.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/useDesktopSyncStatus.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,CAAC;IACxD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf;AAID;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,GAAG,IAAI,CAK/D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buoy-gg/core",
3
- "version": "6.0.1",
3
+ "version": "7.0.1",
4
4
  "description": "Buoy devtools for React Native — a floating in-app dev menu; every tool streams live to your phone, desktop, and AI agent.",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -22,10 +22,10 @@
22
22
  ],
23
23
  "sideEffects": false,
24
24
  "dependencies": {
25
- "@buoy-gg/license": "6.0.1",
26
- "@buoy-gg/floating-tools-core": "6.0.1",
27
- "@buoy-gg/floating-tools-react": "6.0.1",
28
- "@buoy-gg/shared-ui": "6.0.1"
25
+ "@buoy-gg/shared-ui": "7.0.1",
26
+ "@buoy-gg/license": "7.0.1",
27
+ "@buoy-gg/floating-tools-react": "7.0.1",
28
+ "@buoy-gg/floating-tools-core": "7.0.1"
29
29
  },
30
30
  "peerDependencies": {
31
31
  "react": "*",
@@ -59,17 +59,28 @@
59
59
  },
60
60
  "repository": {
61
61
  "type": "git",
62
- "url": "https://github.com/LovesWorking/react-native-buoy.git",
62
+ "url": "https://github.com/Buoy-gg/buoy.git",
63
63
  "directory": "packages/devtools-floating-menu"
64
64
  },
65
65
  "bugs": {
66
66
  "url": "https://github.com/LovesWorking/react-native-buoy/issues"
67
67
  },
68
- "homepage": "https://github.com/LovesWorking/react-native-buoy/tree/main/packages/devtools-floating-menu#readme",
68
+ "homepage": "https://buoy.gg",
69
69
  "publishConfig": {
70
70
  "access": "public",
71
71
  "tag": "latest"
72
72
  },
73
+ "keywords": [
74
+ "react-native",
75
+ "expo",
76
+ "devtools",
77
+ "debugging",
78
+ "react-native-devtools",
79
+ "flipper-alternative",
80
+ "floating-menu",
81
+ "developer-menu",
82
+ "in-app-devtools"
83
+ ],
73
84
  "scripts": {
74
85
  "build": "bob build",
75
86
  "typecheck": "tsc --noEmit",