@buoy-gg/bug-links 0.0.0-stage → 7.0.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BuoyBugLinks.podspec +18 -0
- package/LICENSE +58 -0
- package/README.md +25 -2
- package/android/build.gradle +31 -0
- package/android/consumer-rules.pro +8 -0
- package/android/src/main/AndroidManifest.xml +1 -0
- package/android/src/main/java/gg/buoy/buglinks/frames/BuoyFramesModule.kt +53 -0
- package/android/src/main/java/gg/buoy/buglinks/frames/BuoyFramesPackage.kt +11 -0
- package/android/src/main/java/gg/buoy/buglinks/frames/FrameEngine.kt +707 -0
- package/android/src/main/java/gg/buoy/buglinks/frames/FrameWalker.kt +181 -0
- package/ios/BuoyFrames.m +17 -0
- package/ios/BuoyFrames.swift +640 -0
- package/ios/BuoyFramesWalk.swift +213 -0
- package/lib/commonjs/components/BugLinksBody.js +1 -0
- package/lib/commonjs/components/TeamBugs.js +1 -0
- package/lib/commonjs/components/focus.js +1 -0
- package/lib/commonjs/components/overlays.js +1 -0
- package/lib/commonjs/components/topBanners.js +1 -0
- package/lib/commonjs/engine/client.js +1 -0
- package/lib/commonjs/engine/credential.js +1 -0
- package/lib/commonjs/engine/linksStore.js +1 -0
- package/lib/commonjs/engine/loader.js +1 -0
- package/lib/commonjs/engine/opener.js +1 -0
- package/lib/commonjs/engine/otherTabs.js +1 -0
- package/lib/commonjs/engine/phoneCheck.js +1 -0
- package/lib/commonjs/engine/phoneCrypto.js +1 -0
- package/lib/commonjs/engine/randomBytes.js +1 -0
- package/lib/commonjs/engine/reporter.js +1 -0
- package/lib/commonjs/engine/sandbox.js +1 -0
- package/lib/commonjs/engine/settings.js +1 -0
- package/lib/commonjs/engine/tabStorage.js +1 -0
- package/lib/commonjs/engine/teamKeys.js +1 -0
- package/lib/commonjs/engine/teamList.js +1 -0
- package/lib/commonjs/index.js +1 -0
- package/lib/commonjs/media/BuoyMask.js +1 -0
- package/lib/commonjs/media/frames.js +1 -0
- package/lib/commonjs/media/nativeFrames.js +1 -0
- package/lib/commonjs/media/nativeFrames.web.js +1 -0
- package/lib/commonjs/media/webFrames.js +14 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/preset.js +1 -0
- package/lib/commonjs/sync/bugLinksSyncAdapter.js +1 -0
- package/lib/module/components/BugLinksBody.js +1 -0
- package/lib/module/components/TeamBugs.js +1 -0
- package/lib/module/components/focus.js +1 -0
- package/lib/module/components/overlays.js +1 -0
- package/lib/module/components/topBanners.js +1 -0
- package/lib/module/engine/client.js +1 -0
- package/lib/module/engine/credential.js +1 -0
- package/lib/module/engine/linksStore.js +1 -0
- package/lib/module/engine/loader.js +1 -0
- package/lib/module/engine/opener.js +1 -0
- package/lib/module/engine/otherTabs.js +1 -0
- package/lib/module/engine/phoneCheck.js +1 -0
- package/lib/module/engine/phoneCrypto.js +1 -0
- package/lib/module/engine/randomBytes.js +1 -0
- package/lib/module/engine/reporter.js +1 -0
- package/lib/module/engine/sandbox.js +1 -0
- package/lib/module/engine/settings.js +1 -0
- package/lib/module/engine/tabStorage.js +1 -0
- package/lib/module/engine/teamKeys.js +1 -0
- package/lib/module/engine/teamList.js +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/media/BuoyMask.js +1 -0
- package/lib/module/media/frames.js +1 -0
- package/lib/module/media/nativeFrames.js +1 -0
- package/lib/module/media/nativeFrames.web.js +1 -0
- package/lib/module/media/webFrames.js +14 -0
- package/lib/module/preset.js +1 -0
- package/lib/module/sync/bugLinksSyncAdapter.js +1 -0
- package/lib/typescript/components/BugLinksBody.d.ts +2 -0
- package/lib/typescript/components/TeamBugs.d.ts +8 -0
- package/lib/typescript/components/focus.d.ts +6 -0
- package/lib/typescript/components/overlays.d.ts +10 -0
- package/lib/typescript/components/topBanners.d.ts +35 -0
- package/lib/typescript/engine/client.d.ts +78 -0
- package/lib/typescript/engine/credential.d.ts +11 -0
- package/lib/typescript/engine/linksStore.d.ts +132 -0
- package/lib/typescript/engine/loader.d.ts +172 -0
- package/lib/typescript/engine/opener.d.ts +21 -0
- package/lib/typescript/engine/otherTabs.d.ts +52 -0
- package/lib/typescript/engine/phoneCheck.d.ts +8 -0
- package/lib/typescript/engine/phoneCrypto.d.ts +16 -0
- package/lib/typescript/engine/randomBytes.d.ts +7 -0
- package/lib/typescript/engine/reporter.d.ts +53 -0
- package/lib/typescript/engine/sandbox.d.ts +83 -0
- package/lib/typescript/engine/settings.d.ts +42 -0
- package/lib/typescript/engine/tabStorage.d.ts +6 -0
- package/lib/typescript/engine/teamKeys.d.ts +37 -0
- package/lib/typescript/engine/teamList.d.ts +63 -0
- package/lib/typescript/index.d.ts +23 -0
- package/lib/typescript/media/BuoyMask.d.ts +19 -0
- package/lib/typescript/media/frames.d.ts +34 -0
- package/lib/typescript/media/nativeFrames.d.ts +2 -0
- package/lib/typescript/media/nativeFrames.web.d.ts +2 -0
- package/lib/typescript/media/webFrames.d.ts +178 -0
- package/lib/typescript/preset.d.ts +50 -0
- package/lib/typescript/sync/bugLinksSyncAdapter.d.ts +41 -0
- package/lib/web/index.mjs +20 -0
- 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
|
-
#
|
|
1
|
+
# @buoy-gg/bug-links
|
|
2
2
|
|
|
3
|
-
|
|
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
|
+
}
|