@buoy-gg/bug-links 0.0.0-stage → 7.0.81

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 (100) hide show
  1. package/BuoyBugLinks.podspec +18 -0
  2. package/LICENSE +58 -0
  3. package/README.md +25 -2
  4. package/android/build.gradle +31 -0
  5. package/android/consumer-rules.pro +8 -0
  6. package/android/src/main/AndroidManifest.xml +1 -0
  7. package/android/src/main/java/gg/buoy/buglinks/frames/BuoyFramesModule.kt +53 -0
  8. package/android/src/main/java/gg/buoy/buglinks/frames/BuoyFramesPackage.kt +11 -0
  9. package/android/src/main/java/gg/buoy/buglinks/frames/FrameEngine.kt +707 -0
  10. package/android/src/main/java/gg/buoy/buglinks/frames/FrameWalker.kt +181 -0
  11. package/ios/BuoyFrames.m +17 -0
  12. package/ios/BuoyFrames.swift +640 -0
  13. package/ios/BuoyFramesWalk.swift +213 -0
  14. package/lib/commonjs/components/BugLinksBody.js +1 -0
  15. package/lib/commonjs/components/TeamBugs.js +1 -0
  16. package/lib/commonjs/components/focus.js +1 -0
  17. package/lib/commonjs/components/overlays.js +1 -0
  18. package/lib/commonjs/components/topBanners.js +1 -0
  19. package/lib/commonjs/engine/client.js +1 -0
  20. package/lib/commonjs/engine/credential.js +1 -0
  21. package/lib/commonjs/engine/linksStore.js +1 -0
  22. package/lib/commonjs/engine/loader.js +1 -0
  23. package/lib/commonjs/engine/opener.js +1 -0
  24. package/lib/commonjs/engine/otherTabs.js +1 -0
  25. package/lib/commonjs/engine/phoneCheck.js +1 -0
  26. package/lib/commonjs/engine/phoneCrypto.js +1 -0
  27. package/lib/commonjs/engine/randomBytes.js +1 -0
  28. package/lib/commonjs/engine/reporter.js +1 -0
  29. package/lib/commonjs/engine/sandbox.js +1 -0
  30. package/lib/commonjs/engine/settings.js +1 -0
  31. package/lib/commonjs/engine/tabStorage.js +1 -0
  32. package/lib/commonjs/engine/teamKeys.js +1 -0
  33. package/lib/commonjs/engine/teamList.js +1 -0
  34. package/lib/commonjs/index.js +1 -0
  35. package/lib/commonjs/media/BuoyMask.js +1 -0
  36. package/lib/commonjs/media/frames.js +1 -0
  37. package/lib/commonjs/media/nativeFrames.js +1 -0
  38. package/lib/commonjs/media/nativeFrames.web.js +1 -0
  39. package/lib/commonjs/media/webFrames.js +14 -0
  40. package/lib/commonjs/package.json +1 -0
  41. package/lib/commonjs/preset.js +1 -0
  42. package/lib/commonjs/sync/bugLinksSyncAdapter.js +1 -0
  43. package/lib/module/components/BugLinksBody.js +1 -0
  44. package/lib/module/components/TeamBugs.js +1 -0
  45. package/lib/module/components/focus.js +1 -0
  46. package/lib/module/components/overlays.js +1 -0
  47. package/lib/module/components/topBanners.js +1 -0
  48. package/lib/module/engine/client.js +1 -0
  49. package/lib/module/engine/credential.js +1 -0
  50. package/lib/module/engine/linksStore.js +1 -0
  51. package/lib/module/engine/loader.js +1 -0
  52. package/lib/module/engine/opener.js +1 -0
  53. package/lib/module/engine/otherTabs.js +1 -0
  54. package/lib/module/engine/phoneCheck.js +1 -0
  55. package/lib/module/engine/phoneCrypto.js +1 -0
  56. package/lib/module/engine/randomBytes.js +1 -0
  57. package/lib/module/engine/reporter.js +1 -0
  58. package/lib/module/engine/sandbox.js +1 -0
  59. package/lib/module/engine/settings.js +1 -0
  60. package/lib/module/engine/tabStorage.js +1 -0
  61. package/lib/module/engine/teamKeys.js +1 -0
  62. package/lib/module/engine/teamList.js +1 -0
  63. package/lib/module/index.js +1 -0
  64. package/lib/module/media/BuoyMask.js +1 -0
  65. package/lib/module/media/frames.js +1 -0
  66. package/lib/module/media/nativeFrames.js +1 -0
  67. package/lib/module/media/nativeFrames.web.js +1 -0
  68. package/lib/module/media/webFrames.js +14 -0
  69. package/lib/module/preset.js +1 -0
  70. package/lib/module/sync/bugLinksSyncAdapter.js +1 -0
  71. package/lib/typescript/components/BugLinksBody.d.ts +2 -0
  72. package/lib/typescript/components/TeamBugs.d.ts +8 -0
  73. package/lib/typescript/components/focus.d.ts +6 -0
  74. package/lib/typescript/components/overlays.d.ts +10 -0
  75. package/lib/typescript/components/topBanners.d.ts +35 -0
  76. package/lib/typescript/engine/client.d.ts +78 -0
  77. package/lib/typescript/engine/credential.d.ts +11 -0
  78. package/lib/typescript/engine/linksStore.d.ts +132 -0
  79. package/lib/typescript/engine/loader.d.ts +172 -0
  80. package/lib/typescript/engine/opener.d.ts +21 -0
  81. package/lib/typescript/engine/otherTabs.d.ts +52 -0
  82. package/lib/typescript/engine/phoneCheck.d.ts +8 -0
  83. package/lib/typescript/engine/phoneCrypto.d.ts +16 -0
  84. package/lib/typescript/engine/randomBytes.d.ts +7 -0
  85. package/lib/typescript/engine/reporter.d.ts +53 -0
  86. package/lib/typescript/engine/sandbox.d.ts +83 -0
  87. package/lib/typescript/engine/settings.d.ts +42 -0
  88. package/lib/typescript/engine/tabStorage.d.ts +6 -0
  89. package/lib/typescript/engine/teamKeys.d.ts +37 -0
  90. package/lib/typescript/engine/teamList.d.ts +63 -0
  91. package/lib/typescript/index.d.ts +23 -0
  92. package/lib/typescript/media/BuoyMask.d.ts +19 -0
  93. package/lib/typescript/media/frames.d.ts +34 -0
  94. package/lib/typescript/media/nativeFrames.d.ts +2 -0
  95. package/lib/typescript/media/nativeFrames.web.d.ts +2 -0
  96. package/lib/typescript/media/webFrames.d.ts +178 -0
  97. package/lib/typescript/preset.d.ts +50 -0
  98. package/lib/typescript/sync/bugLinksSyncAdapter.d.ts +41 -0
  99. package/lib/web/index.mjs +20 -0
  100. package/package.json +119 -3
@@ -0,0 +1,18 @@
1
+ require "json"
2
+
3
+ package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
+
5
+ Pod::Spec.new do |s|
6
+ s.name = "BuoyBugLinks"
7
+ s.version = package["version"]
8
+ s.summary = "Pictures and video for Buoy Bug Links."
9
+ s.homepage = "https://buoy.gg"
10
+ s.license = { :type => "Proprietary" }
11
+ s.author = "Buoy"
12
+ s.platforms = { :ios => "15.1" }
13
+ s.source = { :git => "https://github.com/Buoy-gg/buoy.git", :tag => s.version.to_s }
14
+ s.source_files = "ios/**/*.{h,m,mm,swift}"
15
+ s.swift_version = "5.9"
16
+ s.frameworks = "UIKit", "WebKit", "MapKit", "AVFoundation", "ImageIO", "UniformTypeIdentifiers"
17
+ s.dependency "React-Core"
18
+ end
package/LICENSE ADDED
@@ -0,0 +1,58 @@
1
+ PROPRIETARY SOFTWARE LICENSE
2
+
3
+ Copyright (c) 2024-present Buoy. All rights reserved.
4
+
5
+ This software and its source code are proprietary and confidential.
6
+
7
+ NOTICE: This is NOT open source software. This software is licensed,
8
+ not sold, and is protected by copyright laws and international treaties.
9
+
10
+ TERMS AND CONDITIONS:
11
+
12
+ 1. LICENSE GRANT
13
+ Subject to the terms of this Agreement and payment of applicable fees,
14
+ Buoy grants you a limited, non-exclusive, non-transferable license
15
+ to use the compiled software packages in your applications.
16
+
17
+ 2. RESTRICTIONS
18
+ You may NOT:
19
+ - Copy, modify, or distribute the source code
20
+ - Reverse engineer, decompile, or disassemble the software
21
+ - Remove or alter any proprietary notices or labels
22
+ - Sublicense, rent, lease, or lend the software
23
+ - Use the software to create competing products
24
+ - Share access credentials with unauthorized parties
25
+
26
+ 3. OWNERSHIP
27
+ React Buoy retains all right, title, and interest in the software,
28
+ including all intellectual property rights. This license does not
29
+ grant you any rights to trademarks or service marks.
30
+
31
+ 4. TERMINATION
32
+ This license is effective until terminated. Your rights under this
33
+ license will terminate automatically without notice if you fail to
34
+ comply with any of its terms. Upon termination, you must cease all
35
+ use and destroy all copies of the software.
36
+
37
+ 5. DISCLAIMER OF WARRANTIES
38
+ THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
39
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
40
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT.
41
+
42
+ 6. LIMITATION OF LIABILITY
43
+ IN NO EVENT SHALL BUOY BE LIABLE FOR ANY INDIRECT, INCIDENTAL,
44
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN
45
+ CONNECTION WITH THIS LICENSE OR THE USE OF THE SOFTWARE.
46
+
47
+ 7. GOVERNING LAW
48
+ This Agreement shall be governed by and construed in accordance with
49
+ the laws of the United States, without regard to its conflict of
50
+ law provisions.
51
+
52
+ For licensing inquiries and subscription information:
53
+ - Website: https://buoy.gg
54
+ - Email: AustinLovesWorking@gmail.com
55
+
56
+ Unauthorized reproduction or distribution of this software, or any
57
+ portion of it, may result in severe civil and criminal penalties,
58
+ and will be prosecuted to the maximum extent possible under the law.
package/README.md CHANGED
@@ -1,3 +1,26 @@
1
- # Temporary Holding Version
1
+ # @buoy-gg/bug-links
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Report a bug in one tap. Your team gets a link that loads the same bug.
4
+
5
+ - **One tap.** The bug button saves the app's state, its web calls, the console, your taps and the screen.
6
+ - **Private data stays home.** Buoy takes out passwords, tokens, keys, emails and phone numbers. It does this on the phone. Typed text and SecureStore values never go in a bug.
7
+ - **Locked.** The bug is locked on the phone. The key is the part of the link after `#`. So buoy.gg can't read it.
8
+ - **Loads the bug.** A teammate loads the link in their own dev build. The state, clock and screen come back. Each web call gets the same answer it got before.
9
+
10
+ ## Install
11
+
12
+ ```sh
13
+ npm install @buoy-gg/bug-links
14
+ ```
15
+
16
+ It shows up in `FloatingDevTools` on its own. To keep the bug button next to the Buoy bubble:
17
+
18
+ ```tsx
19
+ <FloatingDevTools defaultFloatingTools={["report-bug"]} />
20
+ ```
21
+
22
+ Bug Links needs safe random numbers. Every Expo app has them. A plain React Native app needs `react-native-get-random-values` or `react-native-quick-crypto`.
23
+
24
+ ## Docs
25
+
26
+ https://buoy.gg/buoy/latest/docs/tools/bug-links
@@ -0,0 +1,31 @@
1
+ // Bug Links pictures and video on Android. A plain RN library module, so it
2
+ // autolinks in bare RN and in Expo dev builds.
3
+ def safeExtGet(prop, fallback) {
4
+ rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
5
+ }
6
+
7
+ apply plugin: "com.android.library"
8
+ apply plugin: "org.jetbrains.kotlin.android"
9
+
10
+ android {
11
+ namespace "gg.buoy.buglinks"
12
+ compileSdkVersion safeExtGet("compileSdkVersion", 35)
13
+ defaultConfig {
14
+ minSdkVersion safeExtGet("minSdkVersion", 24)
15
+ consumerProguardFiles "consumer-rules.pro"
16
+ }
17
+ compileOptions {
18
+ sourceCompatibility JavaVersion.VERSION_17
19
+ targetCompatibility JavaVersion.VERSION_17
20
+ }
21
+ kotlinOptions { jvmTarget = "17" }
22
+ }
23
+
24
+ repositories {
25
+ google()
26
+ mavenCentral()
27
+ }
28
+
29
+ dependencies {
30
+ implementation "com.facebook.react:react-android"
31
+ }
@@ -0,0 +1,8 @@
1
+ # The frame walk finds RN's text and image views by class name, and reads the
2
+ # Modal's dialog. Keep those names in release builds.
3
+ -keepnames class com.facebook.react.views.** { *; }
4
+ -keepclassmembers class com.facebook.react.views.modal.ReactModalHostView { *** dialog; }
5
+ -keep class gg.buoy.buglinks.** { *; }
6
+ # Sentry's Mask and Unmask views are found by class name.
7
+ -keepnames class io.sentry.react.replay.RNSentryReplayMask
8
+ -keepnames class io.sentry.react.replay.RNSentryReplayUnmask
@@ -0,0 +1 @@
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android" />
@@ -0,0 +1,53 @@
1
+ // The RN side of FrameEngine. A plain RN module, so it works on the old
2
+ // architecture and, through the interop layer, the new one.
3
+ package gg.buoy.buglinks.frames
4
+
5
+ import com.facebook.react.bridge.Promise
6
+ import com.facebook.react.bridge.ReactApplicationContext
7
+ import com.facebook.react.bridge.ReactContextBaseJavaModule
8
+ import com.facebook.react.bridge.ReactMethod
9
+ import com.facebook.react.bridge.ReadableMap
10
+ import com.facebook.react.bridge.UiThreadUtil
11
+
12
+ class BuoyFramesModule(context: ReactApplicationContext) : ReactContextBaseJavaModule(context) {
13
+ private val engine = FrameEngine(context)
14
+
15
+ override fun getName() = "BuoyFrames"
16
+
17
+ // Every method returns nothing. The new architecture refuses a module whose
18
+ // async methods return a value, and `= runOnUiThread { }` returns one.
19
+ @ReactMethod fun configure(options: ReadableMap) { ui { engine.configure(options) } }
20
+
21
+ @ReactMethod fun status(p: Promise) { ui { p.resolve(engine.status()) } }
22
+
23
+ @ReactMethod fun takeMedia(p: Promise) { ui { p.resolve(engine.takeMedia()) } }
24
+
25
+ @ReactMethod fun captureLast(p: Promise) {
26
+ ui {
27
+ engine.captureLast { ok, reason ->
28
+ p.resolve(com.facebook.react.bridge.Arguments.createMap().apply { putBoolean("ok", ok); putString("reason", reason) })
29
+ }
30
+ }
31
+ }
32
+
33
+ @ReactMethod fun probe(p: Promise) { ui { engine.probe { p.resolve(it) } } }
34
+
35
+ @ReactMethod fun resume() { ui { engine.resume() } }
36
+
37
+ @ReactMethod fun startVideo(always: Boolean) { ui { engine.startVideo(always) } }
38
+
39
+ @ReactMethod fun stopVideo() { ui { engine.stopVideo() } }
40
+
41
+ @ReactMethod fun mark() { ui { engine.mark() } }
42
+
43
+ @ReactMethod fun clear() { ui { engine.clear() } }
44
+
45
+ private fun ui(block: () -> Unit) {
46
+ UiThreadUtil.runOnUiThread { block() }
47
+ }
48
+
49
+ override fun invalidate() {
50
+ ui { engine.destroy() }
51
+ super.invalidate()
52
+ }
53
+ }
@@ -0,0 +1,11 @@
1
+ package gg.buoy.buglinks.frames
2
+
3
+ import com.facebook.react.ReactPackage
4
+ import com.facebook.react.bridge.NativeModule
5
+ import com.facebook.react.bridge.ReactApplicationContext
6
+ import com.facebook.react.uimanager.ViewManager
7
+
8
+ class BuoyFramesPackage : ReactPackage {
9
+ override fun createNativeModules(context: ReactApplicationContext): List<NativeModule> = listOf(BuoyFramesModule(context))
10
+ override fun createViewManagers(context: ReactApplicationContext): List<ViewManager<*, *>> = emptyList()
11
+ }