diff --git a/.circleci/config.yml b/.circleci/config.yml
index 44d0c8c33..17a225a75 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -5,13 +5,16 @@ orbs:
flutter: circleci/flutter@2.0.2
node: circleci/node@5.1.0
+
commands:
setup_flutter:
steps:
- flutter/install_sdk_and_pub:
+ app-dir: packages/instabug_flutter
version: 3.10.5
- run:
name: Generate Pigeons
+ working_directory: packages/instabug_flutter
command: sh ./scripts/pigeon.sh
setup_ios:
steps:
@@ -25,7 +28,7 @@ commands:
command: sudo gem install cocoapods
- run:
name: Install Pods
- working_directory: example/ios
+ working_directory: packages/instabug_flutter/example/ios
command: pod install --repo-update
setup_captain:
parameters:
@@ -98,28 +101,238 @@ commands:
steps:
- run:
name: Generate Pigeons
- command: sh ./scripts/pigeon.sh
+ working_directory: packages/instabug_flutter
+ command: ./scripts/pigeon.sh
- run:
name: Build Pigeons
+ working_directory: packages/instabug_flutter
command: dart run build_runner build --delete-conflicting-outputs
+parameters:
+ is_changes_detected_for_instabug_dart_http_adapter:
+ type: boolean
+ default: false
+ is_changes_detected_for_instabug_dio_interceptor:
+ type: boolean
+ default: false
+ is_changes_detected_for_instabug_flutter:
+ type: boolean
+ default: false
jobs:
+ extract_pr_info:
+ docker:
+ - image: cimg/base:stable
+ steps:
+ - checkout
+ - run:
+ name: extract base branch
+ command: |
+ BASE_BRANCH=$(curl -s -H "Authorization: token ${DANGER_GITHUB_API_TOKEN}" $(echo ${CIRCLE_PULL_REQUEST} | sed "s/\/pull\//\/pulls\//" | sed "s/github.com/api.github.com\/repos/") | jq ".base.ref" | tr -d "\042" )
+ PR_NUMBER=$(echo ${CIRCLE_PULL_REQUEST} | cut -d "/" -f 7)
+ echo "export BASE_BRANCH=$BASE_BRANCH" >> $BASH_ENV
+ echo "export PR_NUMBER=$PR_NUMBER" >> $BASH_ENV
+ - run:
+ name: Verify Base Branch and PR number
+ command: |
+ # Verify that the BASE_BRANCH environment variable is set.
+ echo "Base Branch: $BASE_BRANCH"
+ echo "PR NUMBER: $PR_NUMBER"
+ printenv BASE_BRANCH
+ printenv PR_NUMBER
+ - run:
+ name: Persist environment variables
+ command: cp $BASH_ENV bash.env
+ - persist_to_workspace:
+ root: .
+ paths:
+ - bash.env
+ check_for_changes:
+ parameters:
+ path_to_check:
+ type: string
+ description: "The sub-path within the repo to check for changes."
+ result_env_var:
+ type: string
+ description: "The environment variable name to store the result of the check."
+ docker:
+ - image: cimg/base:stable
+ steps:
+ - checkout
+ - attach_workspace:
+ at: .
+ - run: |
+ cat bash.env >> $BASH_ENV
+ - run:
+ name: Verify Base Branch and PR number
+ command: |
+ # this should print the branch and pr number
+ echo "Base Branch: $BASE_BRANCH"
+ echo "PR NUMBER: $PR_NUMBER"
+ printenv BASE_BRANCH
+ printenv PR_NUMBER
+ - run:
+ name: Check for changes in << parameters.path_to_check >>
+ command: |
+ # Check for changes
+ if git diff --name-only origin/$BASE_BRANCH...HEAD | grep "<< parameters.path_to_check >>"; then
+ echo 'export << parameters.result_env_var >>=true' >> $BASH_ENV
+ echo "Changes detected in << parameters.path_to_check >>"
+ else
+ echo 'export << parameters.result_env_var >>=false' >> $BASH_ENV
+ echo "No changes detected in << parameters.path_to_check >>"
+ fi
+
+ # Instabug Dart Http Adapter
+ test_instabug_dart_http_adapter:
+ parameters:
+ is_changes_detected_for_instabug_dart_http_adapter:
+ type: boolean
+ default: false
+ docker:
+ - image: cirrusci/flutter
+ steps:
+ - checkout
+ - run:
+ name: Condition check for running tests
+ command: |
+ if [ "$IS_CHANGES_DETECTED_FOR_INSTABUG_DART_HTTP_ADAPTER" = "false" ] && [ << parameters.is_changes_detected_for_instabug_dart_http_adapter >> = false ]; then
+ echo "Skipping tests because no changes were detected."
+ circleci-agent step halt
+ fi
+ - run:
+ name: Flutter doctor
+ command: flutter doctor
+ - run:
+ name: Install Flutter Packages
+ working_directory: packages/instabug_dart_http_adapter
+ command: flutter pub get
+ - run:
+ name: Generate code with build runner
+ working_directory: packages/instabug_dart_http_adapter
+ command: dart run build_runner build --delete-conflicting-outputs
+ - run:
+ name: Run tests
+ working_directory: packages/instabug_dart_http_adapter
+ command: flutter test
+ - run:
+ name: Dart Analysis
+ working_directory: packages/instabug_dart_http_adapter
+ command: dart analyze --fatal-warnings lib
+ - run:
+ name: Publish dry run
+ working_directory: packages/instabug_dart_http_adapter
+ command: flutter pub publish --dry-run
+ release_instabug_dart_http_adapter:
+ docker:
+ - image: cirrusci/flutter
+ working_directory: packages/instabug_dart_http_adapter
+ steps:
+ - checkout
+ - run: chmod +x release.sh
+ - run: ./release.sh
+ # -----------------------------------------------------------------------
+
+
+ # Instabug Dio Interceptor
+
+ test_instabug_dio_interceptor:
+ parameters:
+ is_changes_detected_for_instabug_dio_interceptor:
+ type: boolean
+ default: false
+ docker:
+ - image: cirrusci/flutter
+ steps:
+ - checkout
+ - run:
+ name: Condition check for running tests
+ command: |
+ if [ "IS_CHANGES_DETECTED_FOR_INSTABUG_DIO_INTERCEPTOR" = "false" ] && [ << parameters.is_changes_detected_for_instabug_dio_interceptor >> = false ]; then
+ echo "Skipping tests because no changes were detected."
+ circleci-agent step halt
+ fi
+ - run:
+ name: Flutter doctor
+ command: flutter doctor
+ - run:
+ name: Install Flutter Packages
+ working_directory: packages/instabug_dio_interceptor
+ command: flutter pub get
+ - run:
+ name: Generate code with build runner
+ working_directory: packages/instabug_dart_http_adapter
+ command: dart run build_runner build --delete-conflicting-outputs
+ - run:
+ name: Run tests
+ working_directory: packages/instabug_dio_interceptor
+ command: flutter test
+ - run:
+ name: Dart Analysis
+ working_directory: packages/instabug_dio_interceptor
+ command: dart analyze .
+ - run:
+ name: Publish dry run
+ working_directory: packages/instabug_dio_interceptor
+ command: flutter pub publish --dry-run
+
+ release_instabug_dio_interceptor:
+ docker:
+ - image: cirrusci/flutter
+ working_directory: packages/instabug_dio_interceptor
+ steps:
+ - checkout
+ - run: ./release.sh
+
+ # -----------------------------------------------------------------------
+
+ # Instabug Flutter SDK
danger:
+ parameters:
+ is_changes_detected_for_instabug_dio_interceptor:
+ type: boolean
+ default: false
+ working_directory: packages/instabug_flutter
executor:
name: node/default
steps:
- checkout
+ - run:
+ name: Condition check for running tests
+ command: |
+ if [ "IS_CHANGES_DETECTED_FOR_INSTABUG_DIO_INTERCEPTOR" = "false" ] && [ << parameters.is_changes_detected_for_instabug_dio_interceptor >> = false ]; then
+ echo "Skipping tests because no changes were detected."
+ circleci-agent step halt
+ fi
+ - run:
+ name: Check directory
+ command: |
+ pwd
+ ls
- node/install-packages:
+ app-dir: packages/instabug_flutter
pkg-manager: yarn
override-ci-command: yarn install --frozen-lockfile --network-concurrency 1
- attach_workspace:
at: coverage
+ - run:
+ name: Check pwd n ls
+ command: |
+ pwd
+ ls
+ - run:
+ name: ck pwd n ls in packages/instabug_flutter
+ working_directory: packages/instabug_flutter
+ command: |
+ pwd
+ ls
- run:
name: Run Danger
- command: yarn danger ci
+ working_directory: packages/instabug_flutter
+ command: cd packages/instabug_flutter && yarn danger ci
test_flutter:
+ working_directory: packages/instabug_flutter
parameters:
version:
type: string
@@ -129,16 +342,19 @@ jobs:
- checkout
- install_flutter_and_dart_packages:
generate_pigeons: true
- - run: flutter test --coverage
- run:
- working_directory: coverage
+ working_directory: packages/instabug_flutter
+ command: flutter test --coverage
+ - run:
+ working_directory: packages/instabug_flutter/coverage
command: lcov --remove lcov.info '*.g.dart' '*.mocks.dart' -o lcov.info
- persist_to_workspace:
- root: coverage
+ root: packages/instabug_flutter/coverage
paths:
- lcov.info
test_android:
+ working_directory: packages/instabug_flutter
executor:
name: android/android-machine
resource-class: xlarge
@@ -149,14 +365,15 @@ jobs:
- android/start-emulator-and-run-tests:
system-image: system-images;android-30;google_apis;x86
additional-avd-args: -d "Nexus 5"
- post-emulator-launch-assemble-command: cd example && flutter build apk
- run-tests-working-directory: example/android
+ post-emulator-launch-assemble-command: cd packages/instabug_flutter/example && flutter build apk
+ run-tests-working-directory: packages/instabug_flutter/example/android
test-command: ./gradlew app:connectedAndroidTest -Ptarget=`pwd`/../test_driver/example.dart
- android/run-tests:
- working-directory: example/android
+ working-directory: packages/instabug_flutter/example/android
test-command: ./gradlew test
e2e_android_captain:
+ working_directory: packages/instabug_flutter
executor:
name: android/android-machine
resource-class: xlarge
@@ -169,10 +386,11 @@ jobs:
- android/start-emulator-and-run-tests:
system-image: system-images;android-30;google_apis;x86
additional-avd-args: -d "pixel_4"
- post-emulator-launch-assemble-command: cd example || true && flutter build apk --debug
- test-command: cd e2e || true && dotnet test
+ post-emulator-launch-assemble-command: cd packages/instabug_flutter/example || true && flutter build apk --debug
+ test-command: cd packages/instabug_flutter/example && e2e || true && dotnet test
test_ios:
+ working_directory: packages/instabug_flutter
macos:
xcode: 13.4.1
resource_class: macos.m1.medium.gen1
@@ -181,7 +399,7 @@ jobs:
- setup_ios
- run:
name: Build and run tests
- working_directory: example/ios
+ working_directory: packages/instabug_flutter/example/ios
command: |
xcodebuild -allowProvisioningUpdates \
-workspace Runner.xcworkspace \
@@ -201,15 +419,16 @@ jobs:
- setup_ios
- run:
name: Build Example App
- working_directory: example
+ working_directory: packages/instabug_flutter/example
command: flutter build ios --simulator
- run:
name: Run E2E Tests
no_output_timeout: 30m
- working_directory: e2e
+ working_directory: packages/instabug_flutter/e2e
command: dotnet test
format_flutter:
+ working_directory: packages/instabug_flutter
docker:
- image: cirrusci/flutter
steps:
@@ -221,6 +440,7 @@ jobs:
command: dart format . --set-exit-if-changed
lint_flutter:
+ working_directory: packages/instabug_flutter
docker:
- image: cirrusci/flutter
steps:
@@ -229,9 +449,13 @@ jobs:
generate_pigeons: true
- run:
name: Perform Static Analysis
- command: flutter analyze
+ command: |
+ ls
+ pwd
+ flutter analyze
verify_pub:
+ working_directory: packages/instabug_flutter
docker:
- image: cirrusci/flutter
steps:
@@ -243,7 +467,7 @@ jobs:
command: dart run pana --no-warning --exit-code-threshold 0
- run: flutter pub publish --dry-run
- release:
+ release_instabug_flutter:
macos:
xcode: 13.4.1
resource_class: macos.m1.medium.gen1
@@ -257,14 +481,14 @@ jobs:
command: softwareupdate --install-rosetta --agree-to-license
- flutter/install_sdk_and_pub:
version: 3.3.6
- app-dir: project
+ app-dir: project/packages/instabug_flutter
- run:
name: Install pub packages
- working_directory: ~/project
+ working_directory: ~/project/packages/instabug_flutter
command: dart pub get
- run:
name: Generate Pigeons
- working_directory: project
+ working_directory: ~/project/packages/instabug_flutter
command: sh ./scripts/pigeon.sh
- run:
name: Clone Escape
@@ -277,34 +501,108 @@ jobs:
cp -f .build/release/Escape /usr/local/bin/escape
- run:
name: Publish Package
- working_directory: project
+ working_directory: ~/project/packages/instabug_flutter
command: Escape flutter publish
+
+
workflows:
version: 2
- build-test-and-approval-deploy:
+ build-instabug_dart_http_adapter:
+ jobs:
+ - extract_pr_info
+ - check_for_changes:
+ path_to_check: "packages/instabug_dart_http_adapter"
+ result_env_var: "IS_CHANGES_DETECTED_FOR_INSTABUG_DART_HTTP_ADAPTER"
+ requires:
+ - extract_pr_info
+ - test_instabug_dart_http_adapter:
+ requires:
+ - check_for_changes
+ is_changes_detected_for_instabug_dart_http_adapter: << pipeline.parameters.is_changes_detected_for_instabug_dart_http_adapter >>
+ - hold_instabug_dart_http_adapter:
+ type: approval
+ requires:
+ - test_instabug_dart_http_adapter
+ filters:
+ branches:
+ only: master
+
+ - release_instabug_dart_http_adapter:
+ requires:
+ - hold_instabug_dart_http_adapter
+ filters:
+ branches:
+ only: master
+
+ build-instabug-dio-interceptor:
jobs:
+ - extract_pr_info
+ - check_for_changes:
+ path_to_check: "packages/instabug_dio_interceptor"
+ result_env_var: "IS_CHANGES_DETECTED_FOR_INSTABUG_DIO_INTERCEPTOR"
+ requires:
+ - extract_pr_info
+ - test_instabug_dio_interceptor:
+ requires:
+ - check_for_changes
+ is_changes_detected_for_instabug_dio_interceptor: << pipeline.parameters.is_changes_detected_for_instabug_dio_interceptor >>
+ - hold_instabug_dio_interceptor:
+ type: approval
+ requires:
+ - test_instabug_dio_interceptor
+ filters:
+ branches:
+ only: master
+ - release_instabug_dio_interceptor:
+ requires:
+ - hold_instabug_dio_interceptor
+ filters:
+ branches:
+ only: master
+
+ build-test-and-approval-deploy-instabug-flutter:
+ jobs:
+ - extract_pr_info
+ - check_for_changes:
+ path_to_check: "packages/instabug_flutter"
+ result_env_var: "IS_CHANGES_DETECTED_FOR_INSTABUG_FLUTTER"
+ requires:
+ - extract_pr_info
- danger:
requires:
- test_flutter-stable
+ - check_for_changes
- test_flutter:
name: test_flutter-stable
version: stable
- test_flutter:
name: test_flutter-2.10.5
version: 2.10.5
- - test_android
- - e2e_android_captain
- - test_ios
- - e2e_ios_captain
- - format_flutter
+ - test_android:
+ requires:
+ - check_for_changes
+ - e2e_android_captain:
+ requires:
+ - check_for_changes
+ - test_ios:
+ requires:
+ - check_for_changes
+ - e2e_ios_captain:
+ requires:
+ - check_for_changes
+ - format_flutter:
+ requires:
+ - check_for_changes
- lint_flutter:
requires:
- format_flutter
+ - check_for_changes
- verify_pub:
requires:
- lint_flutter
- - hold_release:
+ - check_for_changes
+ - hold_release_instabug_flutter:
type: approval
requires:
- danger
@@ -318,9 +616,10 @@ workflows:
filters:
branches:
only: master
- - release:
+ - release_instabug_flutter:
requires:
- - hold_release
+ - hold_release_instabug_flutter
filters:
branches:
only: master
+
diff --git a/.gitignore b/.gitignore
index 071964ca9..6085f5bc6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,86 +1,6 @@
-# Generated files
-*.mocks.dart
-*.g.dart
-android/**/generated/
-ios/**/Generated/
-
-# Miscellaneous
-*.class
-*.log
-*.pyc
-*.swp
-.DS_Store
-.atom/
-.buildlog/
-.history
-.svn/
-
-# IntelliJ related
-*.iml
-*.ipr
-*.iws
-.idea/
-
-# The .vscode folder contains launch configuration and tasks you configure in
-# VS Code which you may wish to be included in version control, so this line
-# is commented out by default.
-#.vscode/
-
-# Flutter/Dart/Pub related
-**/doc/api/
-.dart_tool/
-.flutter-plugins
-.flutter-plugins-dependencies
-.packages
-.pub-cache/
-.pub/
-/pubspec.lock
-build/
-coverage/
-
-# Node related
-node_modules
-
-# Android related
-**/android/**/gradle-wrapper.jar
-**/android/.gradle
-**/android/captures/
-android/gradlew
-android/gradlew.bat
-**/android/local.properties
-**/android/**/GeneratedPluginRegistrant.java
-
-# iOS/XCode related
-**/ios/**/*.mode1v3
-**/ios/**/*.mode2v3
-**/ios/**/*.moved-aside
-**/ios/**/*.pbxuser
-**/ios/**/*.perspectivev3
-**/ios/**/*sync/
-**/ios/**/.sconsign.dblite
-**/ios/**/.tags*
-**/ios/**/.vagrant/
-**/ios/**/DerivedData/
-**/ios/**/Icon?
-**/ios/**/Pods/
-**/ios/**/.symlinks/
-**/ios/**/profile
-**/ios/**/xcuserdata
-**/ios/.generated/
-**/ios/Flutter/App.framework
-**/ios/Flutter/Flutter.framework
-**/ios/Flutter/Flutter.podspec
-**/ios/Flutter/Generated.xcconfig
-**/ios/Flutter/app.flx
-**/ios/Flutter/app.zip
-**/ios/Flutter/flutter_assets/
-**/ios/Flutter/flutter_export_environment.sh
-**/ios/ServiceDefinitions.json
-**/ios/Runner/GeneratedPluginRegistrant.*
-
-# Exceptions to above rules.
-!**/ios/**/default.mode1v3
-!**/ios/**/default.mode2v3
-!**/ios/**/default.pbxuser
-!**/ios/**/default.perspectivev3
-!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
+**/.dart_tool
+**/.idea
+**/*.iml
+**/pubspec.lock
+**/pubspec_overrides.yaml
+**/.fvm
diff --git a/example/pubspec.lock b/example/pubspec.lock
deleted file mode 100644
index a22d74e64..000000000
--- a/example/pubspec.lock
+++ /dev/null
@@ -1,238 +0,0 @@
-# Generated by pub
-# See https://dart.dev/tools/pub/glossary#lockfile
-packages:
- async:
- dependency: transitive
- description:
- name: async
- sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
- url: "https://pub.dev"
- source: hosted
- version: "2.11.0"
- boolean_selector:
- dependency: transitive
- description:
- name: boolean_selector
- sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
- url: "https://pub.dev"
- source: hosted
- version: "2.1.1"
- characters:
- dependency: transitive
- description:
- name: characters
- sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
- url: "https://pub.dev"
- source: hosted
- version: "1.3.0"
- clock:
- dependency: transitive
- description:
- name: clock
- sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
- url: "https://pub.dev"
- source: hosted
- version: "1.1.1"
- collection:
- dependency: transitive
- description:
- name: collection
- sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
- url: "https://pub.dev"
- source: hosted
- version: "1.17.2"
- espresso:
- dependency: "direct dev"
- description:
- name: espresso
- sha256: "641bdfcaec98b2fe2f5c90d61a16cdf6879ddac4d7333a6467ef03d60933596b"
- url: "https://pub.dev"
- source: hosted
- version: "0.2.0+5"
- fake_async:
- dependency: transitive
- description:
- name: fake_async
- sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
- url: "https://pub.dev"
- source: hosted
- version: "1.3.1"
- file:
- dependency: transitive
- description:
- name: file
- sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
- url: "https://pub.dev"
- source: hosted
- version: "6.1.4"
- flutter:
- dependency: "direct main"
- description: flutter
- source: sdk
- version: "0.0.0"
- flutter_driver:
- dependency: "direct dev"
- description: flutter
- source: sdk
- version: "0.0.0"
- flutter_test:
- dependency: "direct dev"
- description: flutter
- source: sdk
- version: "0.0.0"
- fuchsia_remote_debug_protocol:
- dependency: transitive
- description: flutter
- source: sdk
- version: "0.0.0"
- instabug_flutter:
- dependency: "direct main"
- description:
- path: ".."
- relative: true
- source: path
- version: "12.7.0"
- matcher:
- dependency: transitive
- description:
- name: matcher
- sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
- url: "https://pub.dev"
- source: hosted
- version: "0.12.16"
- material_color_utilities:
- dependency: transitive
- description:
- name: material_color_utilities
- sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
- url: "https://pub.dev"
- source: hosted
- version: "0.5.0"
- meta:
- dependency: transitive
- description:
- name: meta
- sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
- url: "https://pub.dev"
- source: hosted
- version: "1.9.1"
- path:
- dependency: transitive
- description:
- name: path
- sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
- url: "https://pub.dev"
- source: hosted
- version: "1.8.3"
- platform:
- dependency: transitive
- description:
- name: platform
- sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76"
- url: "https://pub.dev"
- source: hosted
- version: "3.1.0"
- process:
- dependency: transitive
- description:
- name: process
- sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09"
- url: "https://pub.dev"
- source: hosted
- version: "4.2.4"
- sky_engine:
- dependency: transitive
- description: flutter
- source: sdk
- version: "0.0.99"
- source_span:
- dependency: transitive
- description:
- name: source_span
- sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
- url: "https://pub.dev"
- source: hosted
- version: "1.10.0"
- stack_trace:
- dependency: transitive
- description:
- name: stack_trace
- sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
- url: "https://pub.dev"
- source: hosted
- version: "1.11.0"
- stream_channel:
- dependency: transitive
- description:
- name: stream_channel
- sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
- url: "https://pub.dev"
- source: hosted
- version: "2.1.1"
- string_scanner:
- dependency: transitive
- description:
- name: string_scanner
- sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
- url: "https://pub.dev"
- source: hosted
- version: "1.2.0"
- sync_http:
- dependency: transitive
- description:
- name: sync_http
- sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961"
- url: "https://pub.dev"
- source: hosted
- version: "0.3.1"
- term_glyph:
- dependency: transitive
- description:
- name: term_glyph
- sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
- url: "https://pub.dev"
- source: hosted
- version: "1.2.1"
- test_api:
- dependency: transitive
- description:
- name: test_api
- sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
- url: "https://pub.dev"
- source: hosted
- version: "0.6.0"
- vector_math:
- dependency: transitive
- description:
- name: vector_math
- sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
- url: "https://pub.dev"
- source: hosted
- version: "2.1.4"
- vm_service:
- dependency: transitive
- description:
- name: vm_service
- sha256: c620a6f783fa22436da68e42db7ebbf18b8c44b9a46ab911f666ff09ffd9153f
- url: "https://pub.dev"
- source: hosted
- version: "11.7.1"
- web:
- dependency: transitive
- description:
- name: web
- sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
- url: "https://pub.dev"
- source: hosted
- version: "0.1.4-beta"
- webdriver:
- dependency: transitive
- description:
- name: webdriver
- sha256: "3c923e918918feeb90c4c9fdf1fe39220fa4c0e8e2c0fffaded174498ef86c49"
- url: "https://pub.dev"
- source: hosted
- version: "3.0.2"
-sdks:
- dart: ">=3.1.0-185.0.dev <4.0.0"
- flutter: ">=2.10.0"
diff --git a/melos.yaml b/melos.yaml
new file mode 100644
index 000000000..a5d4ebdfb
--- /dev/null
+++ b/melos.yaml
@@ -0,0 +1,40 @@
+name: instabug_flutter_mono
+
+packages:
+ - packages/*
+
+scripts:
+ analyze:
+ run: melos exec "dart analyze ."
+
+ format:
+ run: melos exec "dart format . --set-exit-if-changed"
+
+ pigeon:
+ run: melos exec "sh scripts/pigeon.sh"
+ packageFilters:
+ fileExists: 'scripts/pigeon.sh'
+
+ generate:
+ run: melos exec "dart run build_runner build -d"
+ description: Build all generated files for Dart & Flutter packages in this project.t
+ packageFilters:
+ dependsOn: build_runner
+
+ test:
+ run: melos exec "flutter test"
+ description: Tests all packages.
+ packageFilters:
+ dependsOn: flutter_test
+
+ dryPublish:
+ run: melos exec "flutter pub publish --dry-run"
+ description: Tests publishing (dry run).
+ packageFilters:
+ flutter: true
+
+ score:
+ run: melos exec "dart run pana --no-warning --exit-code-threshold 0"
+ packageFilters:
+ flutter: true
+ dependsOn: pana
diff --git a/packages/instabug_dart_http_adapter/.github/pull_request_template.md b/packages/instabug_dart_http_adapter/.github/pull_request_template.md
new file mode 100644
index 000000000..e30db4dd9
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/.github/pull_request_template.md
@@ -0,0 +1,15 @@
+## Description of the change
+> Description goes here
+## Type of change
+- [ ] Bug fix (non-breaking change that fixes an issue)
+- [ ] New feature (non-breaking change that adds functionality)
+- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
+## Related issues
+> Issue links go here
+## Checklists
+### Development
+- [ ] Lint rules pass locally
+- [ ] The code changed/added as part of this pull request has been covered with tests
+### Code review
+- [ ] This pull request has a descriptive title and information useful to a reviewer
+- [ ] Issue from task tracker has a link to this pull request
diff --git a/packages/instabug_dart_http_adapter/.gitignore b/packages/instabug_dart_http_adapter/.gitignore
new file mode 100644
index 000000000..37ccbd254
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/.gitignore
@@ -0,0 +1,80 @@
+# Generated files
+*.mocks.dart
+
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# The .vscode folder contains launch configuration and tasks you configure in
+# VS Code which you may wish to be included in version control, so this line
+# is commented out by default.
+#.vscode/
+
+# Flutter/Dart/Pub related
+**/doc/api/
+.dart_tool/
+.flutter-plugins
+.flutter-plugins-dependencies
+.packages
+.pub-cache/
+.pub/
+pubspec.lock
+build/
+coverage/
+
+# Android related
+**/android/**/gradle-wrapper.jar
+**/android/.gradle
+**/android/captures/
+**/android/gradlew
+**/android/gradlew.bat
+**/android/local.properties
+**/android/**/GeneratedPluginRegistrant.java
+
+# iOS/XCode related
+**/ios/**/*.mode1v3
+**/ios/**/*.mode2v3
+**/ios/**/*.moved-aside
+**/ios/**/*.pbxuser
+**/ios/**/*.perspectivev3
+**/ios/**/*sync/
+**/ios/**/.sconsign.dblite
+**/ios/**/.tags*
+**/ios/**/.vagrant/
+**/ios/**/DerivedData/
+**/ios/**/Icon?
+**/ios/**/Pods/
+**/ios/**/.symlinks/
+**/ios/**/profile
+**/ios/**/xcuserdata
+**/ios/.generated/
+**/ios/Flutter/App.framework
+**/ios/Flutter/Flutter.framework
+**/ios/Flutter/Flutter.podspec
+**/ios/Flutter/Generated.xcconfig
+**/ios/Flutter/app.flx
+**/ios/Flutter/app.zip
+**/ios/Flutter/flutter_assets/
+**/ios/Flutter/flutter_export_environment.sh
+**/ios/ServiceDefinitions.json
+**/ios/Runner/GeneratedPluginRegistrant.*
+
+# Exceptions to above rules.
+!**/ios/**/default.mode1v3
+!**/ios/**/default.mode2v3
+!**/ios/**/default.pbxuser
+!**/ios/**/default.perspectivev3
+!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
diff --git a/packages/instabug_dart_http_adapter/CHANGELOG.md b/packages/instabug_dart_http_adapter/CHANGELOG.md
new file mode 100644
index 000000000..44d8ceb99
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/CHANGELOG.md
@@ -0,0 +1,24 @@
+## [2.3.0] - 3/11/2022
+
+- Adds support for MultipartRequest.
+
+## [2.2.1] - 2/8/2022
+
+- Bumps [instabug_flutter](https://pub.dev/packages/instabug_flutter) to v11
+
+## [2.2.0] - 11/4/2022
+
+- Adds support for logging network requests using `send` method.
+
+## [2.1.0] - 5/1/2022
+
+- Fixes network log compilation error.
+- Adds payload size for network log.
+
+## [2.0.0] - 30/11/2021
+
+- Upgrades to null safety.
+
+## [1.0.0] - 29/7/2019
+
+- Adds implementation for the instabug_http_client library which supports Instabug network logging for the dart library: http.
diff --git a/LICENSE b/packages/instabug_dart_http_adapter/LICENSE
similarity index 100%
rename from LICENSE
rename to packages/instabug_dart_http_adapter/LICENSE
diff --git a/packages/instabug_dart_http_adapter/README.md b/packages/instabug_dart_http_adapter/README.md
new file mode 100644
index 000000000..c367d4e8b
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/README.md
@@ -0,0 +1,36 @@
+# instabug_http_client
+
+A dart package to support Instabug network logging for the external dart [http](https://pub.dev/packages/http) package.
+
+## Getting Started
+
+You can choose to attach all your network requests data to the Instabug reports being sent to the dashboard. See the details below on how to enable the feature for the `http` package.
+
+### Installation
+
+1. Add the dependency to your project `pubspec.yml`:
+
+```yaml
+dependencies:
+ instabug_http_client:
+```
+
+2. Install the package by running the following command.
+
+```bash
+flutter packages get
+```
+
+### Usage
+
+To enable logging, use the custom http client provided by Instabug:
+
+```dart
+final client = InstabugHttpClient();
+```
+
+Then proceed to use the package normally:
+
+```dart
+final response = await client.get(Uri.parse(URL));
+```
diff --git a/packages/instabug_dart_http_adapter/analysis_options.yaml b/packages/instabug_dart_http_adapter/analysis_options.yaml
new file mode 100644
index 000000000..afbab5962
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/analysis_options.yaml
@@ -0,0 +1,179 @@
+# Specify analysis options.
+#
+# Until there are meta linter rules, each desired lint must be explicitly enabled.
+# See: https://github.com/dart-lang/linter/issues/288
+#
+# For a list of lints, see: http://dart-lang.github.io/linter/lints/
+# See the configuration guide for more
+# https://github.com/dart-lang/sdk/tree/master/pkg/analyzer#configuring-the-analyzer
+#
+# There are other similar analysis options files in the flutter repos,
+# which should be kept in sync with this file:
+#
+# - analysis_options.yaml (this file)
+# - packages/flutter/lib/analysis_options_user.yaml
+# - https://github.com/flutter/plugins/blob/master/analysis_options.yaml
+# - https://github.com/flutter/engine/blob/master/analysis_options.yaml
+#
+# This file contains the analysis options used by Flutter tools, such as IntelliJ,
+# Android Studio, and the `flutter analyze` command.
+
+analyzer:
+ strong-mode:
+ implicit-dynamic: false
+ errors:
+ # treat missing required parameters as a warning (not a hint)
+ missing_required_param: warning
+ # treat missing returns as a warning (not a hint)
+ missing_return: warning
+ # allow having TODOs in the code
+ todo: ignore
+ # Ignore analyzer hints for updating pubspecs when using Future or
+ # Stream and not importing dart:async
+ # Please see https://github.com/flutter/flutter/pull/24528 for details.
+ sdk_version_async_exported_from_core: ignore
+ exclude:
+ - 'bin/cache/**'
+ # the following two are relative to the stocks example and the flutter package respectively
+ # see https://github.com/dart-lang/sdk/issues/28463
+ - 'lib/i18n/stock_messages_*.dart'
+ - 'lib/src/http/**'
+
+linter:
+ rules:
+ # these rules are documented on and in the same order as
+ # the Dart Lint rules page to make maintenance easier
+ # https://github.com/dart-lang/linter/blob/master/example/all.yaml
+ - always_declare_return_types
+ - always_put_control_body_on_new_line
+ # - always_put_required_named_parameters_first # we prefer having parameters in the same order as fields https://github.com/flutter/flutter/issues/10219
+ - always_require_non_null_named_parameters
+ - always_specify_types
+ - annotate_overrides
+ # - avoid_annotating_with_dynamic # conflicts with always_specify_types
+ # - avoid_as
+ # - avoid_bool_literals_in_conditional_expressions # not yet tested
+ # - avoid_catches_without_on_clauses # we do this commonly
+ # - avoid_catching_errors # we do this commonly
+ - avoid_classes_with_only_static_members
+ # - avoid_double_and_int_checks # only useful when targeting JS runtime
+ - avoid_empty_else
+ - avoid_field_initializers_in_const_classes
+ - avoid_function_literals_in_foreach_calls
+ # - avoid_implementing_value_types # not yet tested
+ - avoid_init_to_null
+ # - avoid_js_rounded_ints # only useful when targeting JS runtime
+ - avoid_null_checks_in_equality_operators
+ # - avoid_positional_boolean_parameters # not yet tested
+ # - avoid_private_typedef_functions # we prefer having typedef (discussion in https://github.com/flutter/flutter/pull/16356)
+ - avoid_relative_lib_imports
+ - avoid_renaming_method_parameters
+ - avoid_return_types_on_setters
+ # - avoid_returning_null # there are plenty of valid reasons to return null
+ # - avoid_returning_null_for_future # not yet tested
+ - avoid_returning_null_for_void
+ # - avoid_returning_this # there are plenty of valid reasons to return this
+ # - avoid_setters_without_getters # not yet tested
+ # - avoid_shadowing_type_parameters # not yet tested
+ # - avoid_single_cascade_in_expression_statements # not yet tested
+ - avoid_slow_async_io
+ - avoid_types_as_parameter_names
+ # - avoid_types_on_closure_parameters # conflicts with always_specify_types
+ - avoid_unused_constructor_parameters
+ - avoid_void_async
+ - await_only_futures
+ - camel_case_types
+ - cancel_subscriptions
+ # - cascade_invocations # not yet tested
+ # - close_sinks # not reliable enough
+ # - comment_references # blocked on https://github.com/flutter/flutter/issues/20765
+ # - constant_identifier_names # needs an opt-out https://github.com/dart-lang/linter/issues/204
+ - control_flow_in_finally
+ # - curly_braces_in_flow_control_structures # not yet tested
+ - directives_ordering
+ - empty_catches
+ - empty_constructor_bodies
+ - empty_statements
+ # - file_names # not yet tested
+ - flutter_style_todos
+ - hash_and_equals
+ - implementation_imports
+ # - invariant_booleans # too many false positives: https://github.com/dart-lang/linter/issues/811
+ - iterable_contains_unrelated_type
+ # - join_return_with_assignment # not yet tested
+ - library_names
+ - library_prefixes
+ # - lines_longer_than_80_chars # not yet tested
+ - list_remove_unrelated_type
+ # - literal_only_boolean_expressions # too many false positives: https://github.com/dart-lang/sdk/issues/34181
+ - no_adjacent_strings_in_list
+ - no_duplicate_case_values
+ - non_constant_identifier_names
+ # - null_closures # not yet tested
+ # - omit_local_variable_types # opposite of always_specify_types
+ # - one_member_abstracts # too many false positives
+ # - only_throw_errors # https://github.com/flutter/flutter/issues/5792
+ - overridden_fields
+ - package_api_docs
+ - package_names
+ - package_prefixed_library_names
+ # - parameter_assignments # we do this commonly
+ - prefer_adjacent_string_concatenation
+ - prefer_asserts_in_initializer_lists
+ - prefer_collection_literals
+ - prefer_conditional_assignment
+ - prefer_const_constructors
+ - prefer_const_constructors_in_immutables
+ - prefer_const_declarations
+ - prefer_const_literals_to_create_immutables
+ # - prefer_constructors_over_static_methods # not yet tested
+ - prefer_contains
+ - prefer_equal_for_default_values
+ # - prefer_expression_function_bodies # conflicts with https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#consider-using--for-short-functions-and-methods
+ - prefer_final_fields
+ - prefer_final_locals
+ - prefer_foreach
+ # - prefer_function_declarations_over_variables # not yet tested
+ - prefer_generic_function_type_aliases
+ - prefer_initializing_formals
+ # - prefer_int_literals # not yet tested
+ # - prefer_interpolation_to_compose_strings # not yet tested
+ - prefer_is_empty
+ - prefer_is_not_empty
+ - prefer_iterable_whereType
+ # - prefer_mixin # https://github.com/dart-lang/language/issues/32
+ - prefer_single_quotes
+ - prefer_typing_uninitialized_variables
+ - prefer_void_to_null
+ # - public_member_api_docs # enabled on a case-by-case basis; see e.g. packages/analysis_options.yaml
+ - recursive_getters
+ - slash_for_doc_comments
+ - sort_constructors_first
+ - sort_pub_dependencies
+ - sort_unnamed_constructors_first
+ # - super_goes_last # no longer needed w/ Dart 2
+ - test_types_in_equals
+ - throw_in_finally
+ # - type_annotate_public_apis # subset of always_specify_types
+ - type_init_formals
+ # - unawaited_futures # too many false positives
+ # - unnecessary_await_in_return # not yet tested
+ - unnecessary_brace_in_string_interps
+ - unnecessary_const
+ - unnecessary_getters_setters
+ # - unnecessary_lambdas # has false positives: https://github.com/dart-lang/linter/issues/498
+ - unnecessary_new
+ - unnecessary_null_aware_assignments
+ - unnecessary_null_in_if_null_operators
+ - unnecessary_overrides
+ - unnecessary_parenthesis
+ - unnecessary_statements
+ - unnecessary_this
+ - unrelated_type_equality_checks
+ # - use_function_type_syntax_for_parameters # not yet tested
+ - use_rethrow_when_possible
+ # - use_setters_to_change_properties # not yet tested
+ # - use_string_buffers # has false positives: https://github.com/dart-lang/sdk/issues/34182
+ # - use_to_and_as_if_applicable # has false positives, so we prefer to catch this by code-review
+ - valid_regexps
+ # - void_checks # not yet tested
diff --git a/packages/instabug_dart_http_adapter/example/.gitignore b/packages/instabug_dart_http_adapter/example/.gitignore
new file mode 100644
index 000000000..0fa6b675c
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/.gitignore
@@ -0,0 +1,46 @@
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# The .vscode folder contains launch configuration and tasks you configure in
+# VS Code which you may wish to be included in version control, so this line
+# is commented out by default.
+#.vscode/
+
+# Flutter/Dart/Pub related
+**/doc/api/
+**/ios/Flutter/.last_build_id
+.dart_tool/
+.flutter-plugins
+.flutter-plugins-dependencies
+.packages
+.pub-cache/
+.pub/
+/build/
+
+# Web related
+lib/generated_plugin_registrant.dart
+
+# Symbolication related
+app.*.symbols
+
+# Obfuscation related
+app.*.map.json
+
+# Android Studio will place build artifacts here
+/android/app/debug
+/android/app/profile
+/android/app/release
diff --git a/packages/instabug_dart_http_adapter/example/.metadata b/packages/instabug_dart_http_adapter/example/.metadata
new file mode 100644
index 000000000..5a023280a
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/.metadata
@@ -0,0 +1,10 @@
+# This file tracks properties of this Flutter project.
+# Used by Flutter tool to assess capabilities and perform upgrades etc.
+#
+# This file should be version controlled and should not be manually edited.
+
+version:
+ revision: 7e9793dee1b85a243edd0e06cb1658e98b077561
+ channel: stable
+
+project_type: app
diff --git a/packages/instabug_dart_http_adapter/example/README.md b/packages/instabug_dart_http_adapter/example/README.md
new file mode 100644
index 000000000..a13562602
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/README.md
@@ -0,0 +1,16 @@
+# example
+
+A new Flutter project.
+
+## Getting Started
+
+This project is a starting point for a Flutter application.
+
+A few resources to get you started if this is your first Flutter project:
+
+- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
+- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
+
+For help getting started with Flutter, view our
+[online documentation](https://flutter.dev/docs), which offers tutorials,
+samples, guidance on mobile development, and a full API reference.
diff --git a/packages/instabug_dart_http_adapter/example/analysis_options.yaml b/packages/instabug_dart_http_adapter/example/analysis_options.yaml
new file mode 100644
index 000000000..61b6c4de1
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/analysis_options.yaml
@@ -0,0 +1,29 @@
+# This file configures the analyzer, which statically analyzes Dart code to
+# check for errors, warnings, and lints.
+#
+# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
+# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
+# invoked from the command line by running `flutter analyze`.
+
+# The following line activates a set of recommended lints for Flutter apps,
+# packages, and plugins designed to encourage good coding practices.
+include: package:flutter_lints/flutter.yaml
+
+linter:
+ # The lint rules applied to this project can be customized in the
+ # section below to disable rules from the `package:flutter_lints/flutter.yaml`
+ # included above or to enable additional rules. A list of all available lints
+ # and their documentation is published at
+ # https://dart-lang.github.io/linter/lints/index.html.
+ #
+ # Instead of disabling a lint rule for the entire project in the
+ # section below, it can also be suppressed for a single line of code
+ # or a specific dart file by using the `// ignore: name_of_lint` and
+ # `// ignore_for_file: name_of_lint` syntax on the line or in the file
+ # producing the lint.
+ rules:
+ # avoid_print: false # Uncomment to disable the `avoid_print` rule
+ # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
+
+# Additional information about this file can be found at
+# https://dart.dev/guides/language/analysis-options
diff --git a/packages/instabug_dart_http_adapter/example/android/.gitignore b/packages/instabug_dart_http_adapter/example/android/.gitignore
new file mode 100644
index 000000000..6f568019d
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/android/.gitignore
@@ -0,0 +1,13 @@
+gradle-wrapper.jar
+/.gradle
+/captures/
+/gradlew
+/gradlew.bat
+/local.properties
+GeneratedPluginRegistrant.java
+
+# Remember to never publicly share your keystore.
+# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
+key.properties
+**/*.keystore
+**/*.jks
diff --git a/packages/instabug_dart_http_adapter/example/android/app/build.gradle b/packages/instabug_dart_http_adapter/example/android/app/build.gradle
new file mode 100644
index 000000000..5fe3c929f
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/android/app/build.gradle
@@ -0,0 +1,68 @@
+def localProperties = new Properties()
+def localPropertiesFile = rootProject.file('local.properties')
+if (localPropertiesFile.exists()) {
+ localPropertiesFile.withReader('UTF-8') { reader ->
+ localProperties.load(reader)
+ }
+}
+
+def flutterRoot = localProperties.getProperty('flutter.sdk')
+if (flutterRoot == null) {
+ throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
+}
+
+def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
+if (flutterVersionCode == null) {
+ flutterVersionCode = '1'
+}
+
+def flutterVersionName = localProperties.getProperty('flutter.versionName')
+if (flutterVersionName == null) {
+ flutterVersionName = '1.0'
+}
+
+apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android'
+apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
+
+android {
+ compileSdkVersion flutter.compileSdkVersion
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ kotlinOptions {
+ jvmTarget = '1.8'
+ }
+
+ sourceSets {
+ main.java.srcDirs += 'src/main/kotlin'
+ }
+
+ defaultConfig {
+ // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
+ applicationId "com.example.example"
+ minSdkVersion flutter.minSdkVersion
+ targetSdkVersion flutter.targetSdkVersion
+ versionCode flutterVersionCode.toInteger()
+ versionName flutterVersionName
+ }
+
+ buildTypes {
+ release {
+ // TODO: Add your own signing config for the release build.
+ // Signing with the debug keys for now, so `flutter run --release` works.
+ signingConfig signingConfigs.debug
+ }
+ }
+}
+
+flutter {
+ source '../..'
+}
+
+dependencies {
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+}
diff --git a/packages/instabug_dart_http_adapter/example/android/app/src/debug/AndroidManifest.xml b/packages/instabug_dart_http_adapter/example/android/app/src/debug/AndroidManifest.xml
new file mode 100644
index 000000000..c208884f3
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/android/app/src/debug/AndroidManifest.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/packages/instabug_dart_http_adapter/example/android/app/src/main/AndroidManifest.xml b/packages/instabug_dart_http_adapter/example/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..3f41384db
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/instabug_dart_http_adapter/example/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java b/packages/instabug_dart_http_adapter/example/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java
new file mode 100644
index 000000000..9213f130f
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java
@@ -0,0 +1,20 @@
+// Generated file.
+// If you wish to remove Flutter's multidex support, delete this entire file.
+
+package io.flutter.app;
+
+import android.content.Context;
+import androidx.annotation.CallSuper;
+import androidx.multidex.MultiDex;
+
+/**
+ * Extension of {@link io.flutter.app.FlutterApplication}, adding multidex support.
+ */
+public class FlutterMultiDexApplication extends FlutterApplication {
+ @Override
+ @CallSuper
+ protected void attachBaseContext(Context base) {
+ super.attachBaseContext(base);
+ MultiDex.install(this);
+ }
+}
diff --git a/packages/instabug_dart_http_adapter/example/android/app/src/main/kotlin/com/example/example/MainActivity.kt b/packages/instabug_dart_http_adapter/example/android/app/src/main/kotlin/com/example/example/MainActivity.kt
new file mode 100644
index 000000000..e793a000d
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/android/app/src/main/kotlin/com/example/example/MainActivity.kt
@@ -0,0 +1,6 @@
+package com.example.example
+
+import io.flutter.embedding.android.FlutterActivity
+
+class MainActivity: FlutterActivity() {
+}
diff --git a/packages/instabug_dart_http_adapter/example/android/app/src/main/res/drawable-v21/launch_background.xml b/packages/instabug_dart_http_adapter/example/android/app/src/main/res/drawable-v21/launch_background.xml
new file mode 100644
index 000000000..f74085f3f
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/android/app/src/main/res/drawable-v21/launch_background.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
diff --git a/example/android/app/src/main/res/drawable/launch_background.xml b/packages/instabug_dart_http_adapter/example/android/app/src/main/res/drawable/launch_background.xml
similarity index 100%
rename from example/android/app/src/main/res/drawable/launch_background.xml
rename to packages/instabug_dart_http_adapter/example/android/app/src/main/res/drawable/launch_background.xml
diff --git a/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/instabug_dart_http_adapter/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
similarity index 100%
rename from example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
rename to packages/instabug_dart_http_adapter/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
diff --git a/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/instabug_dart_http_adapter/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
similarity index 100%
rename from example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
rename to packages/instabug_dart_http_adapter/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
diff --git a/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/instabug_dart_http_adapter/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
similarity index 100%
rename from example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
rename to packages/instabug_dart_http_adapter/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
diff --git a/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/instabug_dart_http_adapter/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
similarity index 100%
rename from example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
rename to packages/instabug_dart_http_adapter/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
diff --git a/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/instabug_dart_http_adapter/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
similarity index 100%
rename from example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
rename to packages/instabug_dart_http_adapter/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
diff --git a/packages/instabug_dart_http_adapter/example/android/app/src/main/res/values-night/styles.xml b/packages/instabug_dart_http_adapter/example/android/app/src/main/res/values-night/styles.xml
new file mode 100644
index 000000000..3db14bb53
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/android/app/src/main/res/values-night/styles.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/packages/instabug_dart_http_adapter/example/android/app/src/main/res/values/styles.xml b/packages/instabug_dart_http_adapter/example/android/app/src/main/res/values/styles.xml
new file mode 100644
index 000000000..d460d1e92
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/android/app/src/main/res/values/styles.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/packages/instabug_dart_http_adapter/example/android/app/src/profile/AndroidManifest.xml b/packages/instabug_dart_http_adapter/example/android/app/src/profile/AndroidManifest.xml
new file mode 100644
index 000000000..c208884f3
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/android/app/src/profile/AndroidManifest.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/packages/instabug_dart_http_adapter/example/android/build.gradle b/packages/instabug_dart_http_adapter/example/android/build.gradle
new file mode 100644
index 000000000..4256f9173
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/android/build.gradle
@@ -0,0 +1,31 @@
+buildscript {
+ ext.kotlin_version = '1.6.10'
+ repositories {
+ google()
+ mavenCentral()
+ }
+
+ dependencies {
+ classpath 'com.android.tools.build:gradle:4.1.0'
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ }
+}
+
+rootProject.buildDir = '../build'
+subprojects {
+ project.buildDir = "${rootProject.buildDir}/${project.name}"
+}
+subprojects {
+ project.evaluationDependsOn(':app')
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
diff --git a/example/android/gradle.properties b/packages/instabug_dart_http_adapter/example/android/gradle.properties
similarity index 100%
rename from example/android/gradle.properties
rename to packages/instabug_dart_http_adapter/example/android/gradle.properties
diff --git a/packages/instabug_dart_http_adapter/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/instabug_dart_http_adapter/example/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 000000000..bc6a58afd
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Jun 23 08:50:38 CEST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
diff --git a/packages/instabug_dart_http_adapter/example/android/settings.gradle b/packages/instabug_dart_http_adapter/example/android/settings.gradle
new file mode 100644
index 000000000..44e62bcf0
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/android/settings.gradle
@@ -0,0 +1,11 @@
+include ':app'
+
+def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
+def properties = new Properties()
+
+assert localPropertiesFile.exists()
+localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
+
+def flutterSdkPath = properties.getProperty("flutter.sdk")
+assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
+apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
diff --git a/packages/instabug_dart_http_adapter/example/ios/.gitignore b/packages/instabug_dart_http_adapter/example/ios/.gitignore
new file mode 100644
index 000000000..7a7f9873a
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/ios/.gitignore
@@ -0,0 +1,34 @@
+**/dgph
+*.mode1v3
+*.mode2v3
+*.moved-aside
+*.pbxuser
+*.perspectivev3
+**/*sync/
+.sconsign.dblite
+.tags*
+**/.vagrant/
+**/DerivedData/
+Icon?
+**/Pods/
+**/.symlinks/
+profile
+xcuserdata
+**/.generated/
+Flutter/App.framework
+Flutter/Flutter.framework
+Flutter/Flutter.podspec
+Flutter/Generated.xcconfig
+Flutter/ephemeral/
+Flutter/app.flx
+Flutter/app.zip
+Flutter/flutter_assets/
+Flutter/flutter_export_environment.sh
+ServiceDefinitions.json
+Runner/GeneratedPluginRegistrant.*
+
+# Exceptions to above rules.
+!default.mode1v3
+!default.mode2v3
+!default.pbxuser
+!default.perspectivev3
diff --git a/packages/instabug_dart_http_adapter/example/ios/Flutter/AppFrameworkInfo.plist b/packages/instabug_dart_http_adapter/example/ios/Flutter/AppFrameworkInfo.plist
new file mode 100644
index 000000000..8d4492f97
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/ios/Flutter/AppFrameworkInfo.plist
@@ -0,0 +1,26 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ App
+ CFBundleIdentifier
+ io.flutter.flutter.app
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ App
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1.0
+ MinimumOSVersion
+ 9.0
+
+
diff --git a/packages/instabug_dart_http_adapter/example/ios/Flutter/Debug.xcconfig b/packages/instabug_dart_http_adapter/example/ios/Flutter/Debug.xcconfig
new file mode 100644
index 000000000..ec97fc6f3
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/ios/Flutter/Debug.xcconfig
@@ -0,0 +1,2 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
+#include "Generated.xcconfig"
diff --git a/packages/instabug_dart_http_adapter/example/ios/Flutter/Release.xcconfig b/packages/instabug_dart_http_adapter/example/ios/Flutter/Release.xcconfig
new file mode 100644
index 000000000..c4855bfe2
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/ios/Flutter/Release.xcconfig
@@ -0,0 +1,2 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
+#include "Generated.xcconfig"
diff --git a/packages/instabug_dart_http_adapter/example/ios/Podfile b/packages/instabug_dart_http_adapter/example/ios/Podfile
new file mode 100644
index 000000000..9411102b1
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/ios/Podfile
@@ -0,0 +1,41 @@
+# Uncomment this line to define a global platform for your project
+platform :ios, '10.0'
+
+# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
+ENV['COCOAPODS_DISABLE_STATS'] = 'true'
+
+project 'Runner', {
+ 'Debug' => :debug,
+ 'Profile' => :release,
+ 'Release' => :release,
+}
+
+def flutter_root
+ generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
+ unless File.exist?(generated_xcode_build_settings_path)
+ raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
+ end
+
+ File.foreach(generated_xcode_build_settings_path) do |line|
+ matches = line.match(/FLUTTER_ROOT\=(.*)/)
+ return matches[1].strip if matches
+ end
+ raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
+end
+
+require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
+
+flutter_ios_podfile_setup
+
+target 'Runner' do
+ use_frameworks!
+ use_modular_headers!
+
+ flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
+end
+
+post_install do |installer|
+ installer.pods_project.targets.each do |target|
+ flutter_additional_ios_build_settings(target)
+ end
+end
diff --git a/packages/instabug_dart_http_adapter/example/ios/Podfile.lock b/packages/instabug_dart_http_adapter/example/ios/Podfile.lock
new file mode 100644
index 000000000..579d9c628
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/ios/Podfile.lock
@@ -0,0 +1,29 @@
+PODS:
+ - Flutter (1.0.0)
+ - Instabug (11.0.2)
+ - instabug_flutter (0.0.1):
+ - Flutter
+ - Instabug (= 11.0.2)
+
+DEPENDENCIES:
+ - Flutter (from `Flutter`)
+ - instabug_flutter (from `.symlinks/plugins/instabug_flutter/ios`)
+
+SPEC REPOS:
+ trunk:
+ - Instabug
+
+EXTERNAL SOURCES:
+ Flutter:
+ :path: Flutter
+ instabug_flutter:
+ :path: ".symlinks/plugins/instabug_flutter/ios"
+
+SPEC CHECKSUMS:
+ Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
+ Instabug: d6c7a65211ad958f7ca871790774c1e00ca4f6df
+ instabug_flutter: 6fb6eb4620a10587ba5a67ddf0781d78fe984569
+
+PODFILE CHECKSUM: fe0e1ee7f3d1f7d00b11b474b62dd62134535aea
+
+COCOAPODS: 1.11.2
diff --git a/packages/instabug_dart_http_adapter/example/ios/Runner.xcodeproj/project.pbxproj b/packages/instabug_dart_http_adapter/example/ios/Runner.xcodeproj/project.pbxproj
new file mode 100644
index 000000000..1ddefc8fe
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/ios/Runner.xcodeproj/project.pbxproj
@@ -0,0 +1,552 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
+ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
+ 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
+ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
+ 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
+ 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
+ AD44C4DB39F7C3968B8C56EB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18B300F826F2074CB5E450C4 /* Pods_Runner.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ );
+ name = "Embed Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
+ 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
+ 18B300F826F2074CB5E450C4 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
+ 3E0436312822B722E186D653 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
+ 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
+ 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
+ 90FF03378459C589A4D9DA6E /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
+ 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
+ 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
+ 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ DE25EB3DE5B281AB8980A728 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 97C146EB1CF9000F007C117D /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AD44C4DB39F7C3968B8C56EB /* Pods_Runner.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 3456E8E25F114A239880D241 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 18B300F826F2074CB5E450C4 /* Pods_Runner.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ 4955E253C000584F8EA1A042 /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 90FF03378459C589A4D9DA6E /* Pods-Runner.debug.xcconfig */,
+ 3E0436312822B722E186D653 /* Pods-Runner.release.xcconfig */,
+ DE25EB3DE5B281AB8980A728 /* Pods-Runner.profile.xcconfig */,
+ );
+ name = Pods;
+ path = Pods;
+ sourceTree = "";
+ };
+ 9740EEB11CF90186004384FC /* Flutter */ = {
+ isa = PBXGroup;
+ children = (
+ 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
+ 9740EEB21CF90195004384FC /* Debug.xcconfig */,
+ 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
+ 9740EEB31CF90195004384FC /* Generated.xcconfig */,
+ );
+ name = Flutter;
+ sourceTree = "";
+ };
+ 97C146E51CF9000F007C117D = {
+ isa = PBXGroup;
+ children = (
+ 9740EEB11CF90186004384FC /* Flutter */,
+ 97C146F01CF9000F007C117D /* Runner */,
+ 97C146EF1CF9000F007C117D /* Products */,
+ 4955E253C000584F8EA1A042 /* Pods */,
+ 3456E8E25F114A239880D241 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ 97C146EF1CF9000F007C117D /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 97C146EE1CF9000F007C117D /* Runner.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 97C146F01CF9000F007C117D /* Runner */ = {
+ isa = PBXGroup;
+ children = (
+ 97C146FA1CF9000F007C117D /* Main.storyboard */,
+ 97C146FD1CF9000F007C117D /* Assets.xcassets */,
+ 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
+ 97C147021CF9000F007C117D /* Info.plist */,
+ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
+ 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
+ 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
+ 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
+ );
+ path = Runner;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 97C146ED1CF9000F007C117D /* Runner */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
+ buildPhases = (
+ F412A5213E8CA6290AF8A003 /* [CP] Check Pods Manifest.lock */,
+ 9740EEB61CF901F6004384FC /* Run Script */,
+ 97C146EA1CF9000F007C117D /* Sources */,
+ 97C146EB1CF9000F007C117D /* Frameworks */,
+ 97C146EC1CF9000F007C117D /* Resources */,
+ 9705A1C41CF9048500538489 /* Embed Frameworks */,
+ 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
+ 9BDEDB79123E51897883C720 /* [CP] Embed Pods Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = Runner;
+ productName = Runner;
+ productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 97C146E61CF9000F007C117D /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 1300;
+ ORGANIZATIONNAME = "";
+ TargetAttributes = {
+ 97C146ED1CF9000F007C117D = {
+ CreatedOnToolsVersion = 7.3.1;
+ LastSwiftMigration = 1100;
+ };
+ };
+ };
+ buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 97C146E51CF9000F007C117D;
+ productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 97C146ED1CF9000F007C117D /* Runner */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 97C146EC1CF9000F007C117D /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
+ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
+ 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
+ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Thin Binary";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
+ };
+ 9740EEB61CF901F6004384FC /* Run Script */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Run Script";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
+ };
+ 9BDEDB79123E51897883C720 /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ F412A5213E8CA6290AF8A003 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 97C146EA1CF9000F007C117D /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
+ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 97C146FB1CF9000F007C117D /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+ 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 97C147001CF9000F007C117D /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 249021D3217E4FDB00AE95B9 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Profile;
+ };
+ 249021D4217E4FDB00AE95B9 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = XNK224R4SF;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.example;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Profile;
+ };
+ 97C147031CF9000F007C117D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 97C147041CF9000F007C117D /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 97C147061CF9000F007C117D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = XNK224R4SF;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.example;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Debug;
+ };
+ 97C147071CF9000F007C117D /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = XNK224R4SF;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.example;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 97C147031CF9000F007C117D /* Debug */,
+ 97C147041CF9000F007C117D /* Release */,
+ 249021D3217E4FDB00AE95B9 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 97C147061CF9000F007C117D /* Debug */,
+ 97C147071CF9000F007C117D /* Release */,
+ 249021D4217E4FDB00AE95B9 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 97C146E61CF9000F007C117D /* Project object */;
+}
diff --git a/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/instabug_dart_http_adapter/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
similarity index 100%
rename from example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
rename to packages/instabug_dart_http_adapter/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/instabug_dart_http_adapter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
similarity index 100%
rename from example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
rename to packages/instabug_dart_http_adapter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
diff --git a/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/instabug_dart_http_adapter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
similarity index 100%
rename from example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
rename to packages/instabug_dart_http_adapter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
diff --git a/packages/instabug_dart_http_adapter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/instabug_dart_http_adapter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
new file mode 100644
index 000000000..c87d15a33
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/packages/instabug_dart_http_adapter/example/ios/Runner.xcworkspace/contents.xcworkspacedata
similarity index 100%
rename from example/ios/Runner.xcworkspace/contents.xcworkspacedata
rename to packages/instabug_dart_http_adapter/example/ios/Runner.xcworkspace/contents.xcworkspacedata
diff --git a/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/instabug_dart_http_adapter/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
similarity index 100%
rename from example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
rename to packages/instabug_dart_http_adapter/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
diff --git a/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/instabug_dart_http_adapter/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
similarity index 100%
rename from example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
rename to packages/instabug_dart_http_adapter/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
diff --git a/example/ios/Runner/AppDelegate.swift b/packages/instabug_dart_http_adapter/example/ios/Runner/AppDelegate.swift
similarity index 100%
rename from example/ios/Runner/AppDelegate.swift
rename to packages/instabug_dart_http_adapter/example/ios/Runner/AppDelegate.swift
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
similarity index 100%
rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
similarity index 100%
rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
similarity index 100%
rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
similarity index 100%
rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
similarity index 100%
rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
similarity index 100%
rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
similarity index 100%
rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
similarity index 100%
rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
similarity index 100%
rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
similarity index 100%
rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
similarity index 100%
rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
similarity index 100%
rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
similarity index 100%
rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
similarity index 100%
rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
similarity index 100%
rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
similarity index 100%
rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
similarity index 100%
rename from example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
similarity index 100%
rename from example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
similarity index 100%
rename from example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
similarity index 100%
rename from example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
similarity index 100%
rename from example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
diff --git a/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/packages/instabug_dart_http_adapter/example/ios/Runner/Base.lproj/LaunchScreen.storyboard
similarity index 100%
rename from example/ios/Runner/Base.lproj/LaunchScreen.storyboard
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Base.lproj/LaunchScreen.storyboard
diff --git a/example/ios/Runner/Base.lproj/Main.storyboard b/packages/instabug_dart_http_adapter/example/ios/Runner/Base.lproj/Main.storyboard
similarity index 100%
rename from example/ios/Runner/Base.lproj/Main.storyboard
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Base.lproj/Main.storyboard
diff --git a/packages/instabug_dart_http_adapter/example/ios/Runner/Info.plist b/packages/instabug_dart_http_adapter/example/ios/Runner/Info.plist
new file mode 100644
index 000000000..5baf7a1cc
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/ios/Runner/Info.plist
@@ -0,0 +1,47 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleDisplayName
+ Example
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ example
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ $(FLUTTER_BUILD_NAME)
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ $(FLUTTER_BUILD_NUMBER)
+ LSRequiresIPhoneOS
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIMainStoryboardFile
+ Main
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UIViewControllerBasedStatusBarAppearance
+
+
+
diff --git a/example/ios/Runner/Runner-Bridging-Header.h b/packages/instabug_dart_http_adapter/example/ios/Runner/Runner-Bridging-Header.h
similarity index 100%
rename from example/ios/Runner/Runner-Bridging-Header.h
rename to packages/instabug_dart_http_adapter/example/ios/Runner/Runner-Bridging-Header.h
diff --git a/packages/instabug_dart_http_adapter/example/lib/main.dart b/packages/instabug_dart_http_adapter/example/lib/main.dart
new file mode 100644
index 000000000..61172936c
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/lib/main.dart
@@ -0,0 +1,76 @@
+import 'dart:developer';
+
+import 'package:flutter/material.dart';
+import 'package:instabug_http_client/instabug_http_client.dart';
+import 'package:instabug_flutter/instabug_flutter.dart';
+
+Future main() async {
+ runApp(const MyApp());
+ Instabug.init(
+ token: 'ed6f659591566da19b67857e1b9d40ab',
+ invocationEvents: [InvocationEvent.floatingButton]);
+ final client = InstabugHttpClient();
+ final response = await client.get(Uri.parse('https://google.com'));
+ log(response.body);
+}
+
+class MyApp extends StatelessWidget {
+ const MyApp({Key? key}) : super(key: key);
+
+ @override
+ Widget build(BuildContext context) {
+ return MaterialApp(
+ title: 'Flutter Demo',
+ theme: ThemeData(
+ primarySwatch: Colors.blue,
+ ),
+ home: const MyHomePage(title: 'Flutter Demo Home Page'),
+ );
+ }
+}
+
+class MyHomePage extends StatefulWidget {
+ const MyHomePage({Key? key, required this.title}) : super(key: key);
+ final String title;
+
+ @override
+ State createState() => _MyHomePageState();
+}
+
+class _MyHomePageState extends State {
+ int _counter = 0;
+
+ void _incrementCounter() {
+ setState(() {
+ _counter++;
+ });
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ appBar: AppBar(
+ title: Text(widget.title),
+ ),
+ body: Center(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ const Text(
+ 'You have pushed the button this many times:',
+ ),
+ Text(
+ '$_counter',
+ style: Theme.of(context).textTheme.headlineMedium,
+ ),
+ ],
+ ),
+ ),
+ floatingActionButton: FloatingActionButton(
+ onPressed: _incrementCounter,
+ tooltip: 'Increment',
+ child: const Icon(Icons.add),
+ ),
+ );
+ }
+}
diff --git a/packages/instabug_dart_http_adapter/example/pubspec.yaml b/packages/instabug_dart_http_adapter/example/pubspec.yaml
new file mode 100644
index 000000000..dfeeae146
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/example/pubspec.yaml
@@ -0,0 +1,24 @@
+name: example
+description: Demonstrates how to use the instabug_http_client package.
+
+publish_to: "none"
+
+version: 1.0.0+1
+
+environment:
+ sdk: ">=2.12.0 <3.0.0"
+
+dependencies:
+ flutter:
+ sdk: flutter
+ cupertino_icons: ^1.0.2
+ instabug_http_client:
+ path: ../
+
+dev_dependencies:
+ flutter_test:
+ sdk: flutter
+ flutter_lints: ^1.0.0
+
+flutter:
+ uses-material-design: true
diff --git a/packages/instabug_dart_http_adapter/lib/instabug_http_client.dart b/packages/instabug_dart_http_adapter/lib/instabug_http_client.dart
new file mode 100644
index 000000000..3a507d0c2
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/lib/instabug_http_client.dart
@@ -0,0 +1,119 @@
+library instabug_http_client;
+
+import 'dart:convert';
+// to maintain supported versions prior to Flutter 3.3
+// ignore: unnecessary_import
+import 'dart:typed_data';
+
+import 'package:http/http.dart' as http;
+import 'package:instabug_http_client/instabug_http_logger.dart';
+import 'package:meta/meta.dart';
+
+class InstabugHttpClient extends InstabugHttpLogger implements http.Client {
+ InstabugHttpClient() : client = http.Client() {
+ logger = this;
+ }
+ @visibleForTesting
+ http.Client client;
+
+ @visibleForTesting
+ late InstabugHttpLogger logger;
+
+ @override
+ void close() => client.close();
+
+ @override
+ Future delete(Uri url,
+ {Map? headers, Object? body, Encoding? encoding}) {
+ final DateTime startTime = DateTime.now();
+ return client
+ .delete(url, body: body, headers: headers, encoding: encoding)
+ .then((http.Response response) {
+ logger.onLogger(response, startTime: startTime);
+ return response;
+ });
+ }
+
+ @override
+ Future get(Uri url, {Map? headers}) {
+ final DateTime startTime = DateTime.now();
+ return client.get(url, headers: headers).then((http.Response response) {
+ logger.onLogger(response, startTime: startTime);
+ return response;
+ });
+ }
+
+ @override
+ Future head(Uri url, {Map? headers}) {
+ final DateTime startTime = DateTime.now();
+ return client.head(url, headers: headers).then((http.Response response) {
+ logger.onLogger(response, startTime: startTime);
+ return response;
+ });
+ }
+
+ @override
+ Future patch(Uri url,
+ {Map? headers, Object? body, Encoding? encoding}) {
+ final DateTime startTime = DateTime.now();
+ return client
+ .patch(url, headers: headers, body: body, encoding: encoding)
+ .then((http.Response response) {
+ logger.onLogger(response, startTime: startTime);
+ return response;
+ });
+ }
+
+ @override
+ Future post(Uri url,
+ {Map? headers, Object? body, Encoding? encoding}) {
+ final DateTime startTime = DateTime.now();
+ return client
+ .post(url, headers: headers, body: body, encoding: encoding)
+ .then((http.Response response) {
+ logger.onLogger(response, startTime: startTime);
+ return response;
+ });
+ }
+
+ @override
+ Future put(Uri url,
+ {Map? headers, Object? body, Encoding? encoding}) {
+ final DateTime startTime = DateTime.now();
+ return client
+ .put(url, headers: headers, body: body, encoding: encoding)
+ .then((http.Response response) {
+ logger.onLogger(response, startTime: startTime);
+ return response;
+ });
+ }
+
+ @override
+ Future read(Uri url, {Map? headers}) =>
+ client.read(url, headers: headers);
+
+ @override
+ Future readBytes(Uri url, {Map? headers}) =>
+ client.readBytes(url, headers: headers);
+
+ @override
+ Future send(http.BaseRequest request) {
+ final DateTime startTime = DateTime.now();
+ return client.send(request).then((http.StreamedResponse streamedResponse) =>
+ http.Response.fromStream(streamedResponse)
+ .then((http.Response response) {
+ logger.onLogger(response, startTime: startTime);
+ // Need to return new StreamedResponse, as body only can be listened once
+ return http.StreamedResponse(
+ Stream>.value(response.bodyBytes),
+ response.statusCode,
+ contentLength: response.contentLength,
+ request: response.request,
+ headers: response.headers,
+ isRedirect: response.isRedirect,
+ persistentConnection: response.persistentConnection,
+ reasonPhrase: response.reasonPhrase,
+ );
+ }));
+ }
+}
diff --git a/packages/instabug_dart_http_adapter/lib/instabug_http_logger.dart b/packages/instabug_dart_http_adapter/lib/instabug_http_logger.dart
new file mode 100644
index 000000000..f88cd2781
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/lib/instabug_http_logger.dart
@@ -0,0 +1,69 @@
+import 'dart:convert';
+
+import 'package:http/http.dart' as http;
+import 'package:instabug_flutter/instabug_flutter.dart';
+
+class InstabugHttpLogger {
+ void onLogger(http.Response response, {DateTime? startTime}) {
+ final NetworkLogger networkLogger = NetworkLogger();
+
+ final Map requestHeaders = {};
+ response.request?.headers.forEach((String header, dynamic value) {
+ requestHeaders[header] = value;
+ });
+
+ final http.BaseRequest? request = response.request;
+
+ if (request == null) {
+ return;
+ }
+ final String requestBody = request is http.MultipartRequest
+ ? json.encode(request.fields)
+ : request is http.Request
+ ? request.body
+ : '';
+
+ final NetworkData requestData = NetworkData(
+ startTime: startTime!,
+ method: request.method,
+ url: request.url.toString(),
+ requestHeaders: requestHeaders,
+ requestBody: requestBody,
+ );
+
+ final DateTime endTime = DateTime.now();
+
+ final Map responseHeaders = {};
+ response.headers.forEach((String header, dynamic value) {
+ responseHeaders[header] = value;
+ });
+ int requestBodySize = 0;
+ if (requestHeaders.containsKey('content-length')) {
+ requestBodySize = int.parse(responseHeaders['content-length'] ?? '0');
+ } else {
+ requestBodySize = requestBody.length;
+ }
+
+ int responseBodySize = 0;
+ if (responseHeaders.containsKey('content-length')) {
+ responseBodySize = int.parse(responseHeaders['content-length'] ?? '0');
+ } else {
+ responseBodySize = response.body.length;
+ }
+
+ networkLogger.networkLog(requestData.copyWith(
+ status: response.statusCode,
+ duration: endTime.difference(requestData.startTime).inMicroseconds,
+ responseContentType: response.headers.containsKey('content-type')
+ ? response.headers['content-type']
+ : '',
+ responseHeaders: responseHeaders,
+ responseBody: response.body,
+ requestBodySize: requestBodySize,
+ responseBodySize: responseBodySize,
+ requestContentType: request.headers.containsKey('content-type')
+ ? request.headers['content-type']
+ : '',
+ ));
+ }
+}
diff --git a/packages/instabug_dart_http_adapter/pubspec.yaml b/packages/instabug_dart_http_adapter/pubspec.yaml
new file mode 100644
index 000000000..43e758025
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/pubspec.yaml
@@ -0,0 +1,26 @@
+name: instabug_http_client
+description:
+ This package is an add on to instabug_flutter. It intercepts any requests performed
+ with http Package and sends them to the report that will be sent to the dashboard.
+version: 2.3.0
+homepage: https://github.com/Instabug/Instabug-Flutter#readme
+
+environment:
+ sdk: '>=2.12.0 <4.0.0'
+
+dependencies:
+ flutter:
+ sdk: flutter
+ http: ^0.13.3
+ instabug_flutter: '>=11.0.0 <12.0.0'
+ meta: ^1.3.0
+
+dev_dependencies:
+ build_runner: ^2.1.1
+ flutter_test:
+ sdk: flutter
+ mockito: ^5.0.10
+# For information on the generic Dart part of this file, see the
+# following page: https://www.dartlang.org/tools/pub/pubspec
+
+# The following section is specific to Flutter.
diff --git a/packages/instabug_dart_http_adapter/release.sh b/packages/instabug_dart_http_adapter/release.sh
new file mode 100644
index 000000000..bde9963d8
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/release.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+VERSION=$(egrep -o "version: ([0-9]-*.*)+[0-9]" pubspec.yaml | cut -d ":" -f 2)
+if [ ! "${VERSION}" ] || [ -z "${VERSION}" ];then
+ echo "Instabug: err: Version Number not found."
+ exit 1
+else
+ mkdir -p .pub-cache
+ cat < $HOME/.pub-cache/credentials.json
+ {
+ "accessToken":"${ACCESS_TOKEN}",
+ "refreshToken":"${REFRESH_TOKEN}",
+ "tokenEndpoint":"https://accounts.google.com/o/oauth2/token",
+ "scopes":["https://www.googleapis.com/auth/userinfo.email","openid"],
+ "expiration":${EXPIRATION}
+ }
+EOF
+ flutter packages pub publish -f
+fi
\ No newline at end of file
diff --git a/packages/instabug_dart_http_adapter/test/instabug_http_client_test.dart b/packages/instabug_dart_http_adapter/test/instabug_http_client_test.dart
new file mode 100644
index 000000000..c1e6abf49
--- /dev/null
+++ b/packages/instabug_dart_http_adapter/test/instabug_http_client_test.dart
@@ -0,0 +1,173 @@
+import 'dart:convert';
+import 'dart:io';
+// to maintain supported versions prior to Flutter 3.3
+// ignore: unnecessary_import
+import 'dart:typed_data';
+
+import 'package:flutter_test/flutter_test.dart';
+import 'package:http/http.dart' as http;
+import 'package:http/testing.dart';
+import 'package:instabug_http_client/instabug_http_client.dart';
+import 'package:instabug_http_client/instabug_http_logger.dart';
+import 'package:mockito/annotations.dart';
+import 'package:mockito/mockito.dart';
+
+import 'instabug_http_client_test.mocks.dart';
+
+@GenerateMocks([
+ InstabugHttpLogger,
+ InstabugHttpClient,
+])
+Future main() async {
+ const Map fakeResponse = {
+ 'id': '123',
+ 'activationCode': '111111',
+ };
+ late Uri url;
+ final http.Response mockedResponse =
+ http.Response(json.encode(fakeResponse), 200);
+
+ late InstabugHttpClient instabugHttpClient;
+
+ setUp(() {
+ url = Uri.parse('http://www.instabug.com');
+ instabugHttpClient = InstabugHttpClient();
+ instabugHttpClient.client = MockInstabugHttpClient();
+ instabugHttpClient.logger = MockInstabugHttpLogger();
+ });
+
+ test('expect instabug http client GET to return response', () async {
+ when(instabugHttpClient.client.get(url))
+ .thenAnswer((_) async => mockedResponse);
+ final http.Response result = await instabugHttpClient.get(url);
+ expect(result, isInstanceOf());
+ expect(result, mockedResponse);
+ verify(instabugHttpClient.logger
+ .onLogger(mockedResponse, startTime: anyNamed('startTime')))
+ .called(1);
+ });
+
+ test('expect instabug http client HEAD to return response', () async {
+ when(instabugHttpClient.client.head(url))
+ .thenAnswer((_) async => mockedResponse);
+ final http.Response result = await instabugHttpClient.head(url);
+ expect(result, isInstanceOf());
+ expect(result, mockedResponse);
+ verify(instabugHttpClient.logger
+ .onLogger(mockedResponse, startTime: anyNamed('startTime')))
+ .called(1);
+ });
+
+ test('expect instabug http client DELETE to return response', () async {
+ when(instabugHttpClient.client.delete(url))
+ .thenAnswer((_) async => mockedResponse);
+ final http.Response result = await instabugHttpClient.delete(url);
+ expect(result, isInstanceOf());
+ expect(result, mockedResponse);
+ verify(instabugHttpClient.logger
+ .onLogger(mockedResponse, startTime: anyNamed('startTime')))
+ .called(1);
+ });
+
+ test('expect instabug http client PATCH to return response', () async {
+ when(instabugHttpClient.client.patch(url))
+ .thenAnswer((_) async => mockedResponse);
+ final http.Response result = await instabugHttpClient.patch(url);
+ expect(result, isInstanceOf());
+ expect(result, mockedResponse);
+ verify(instabugHttpClient.logger
+ .onLogger(mockedResponse, startTime: anyNamed('startTime')))
+ .called(1);
+ });
+
+ test('expect instabug http client POST to return response', () async {
+ when(instabugHttpClient.client.post(url))
+ .thenAnswer((_) async => mockedResponse);
+ final http.Response result = await instabugHttpClient.post(url);
+ expect(result, isInstanceOf());
+ expect(result, mockedResponse);
+ verify(instabugHttpClient.logger
+ .onLogger(mockedResponse, startTime: anyNamed('startTime')))
+ .called(1);
+ });
+
+ test('expect instabug http client PUT to return response', () async {
+ when(instabugHttpClient.client.put(url))
+ .thenAnswer((_) async => mockedResponse);
+ final http.Response result = await instabugHttpClient.put(url);
+ expect(result, isInstanceOf());
+ expect(result.body, mockedResponse.body);
+ verify(instabugHttpClient.logger
+ .onLogger(mockedResponse, startTime: anyNamed('startTime')))
+ .called(1);
+ });
+
+ test('expect instabug http client READ to return response', () async {
+ const String response = 'Some response string';
+ when(instabugHttpClient.client.read(url))
+ .thenAnswer((_) async => response);
+
+ final String result = await instabugHttpClient.read(url);
+ expect(result, isInstanceOf());
+ expect(result, response);
+ });
+
+ test('expect instabug http client READBYTES to return response', () async {
+ final Uint8List response = Uint8List(3);
+ instabugHttpClient.client =
+ MockClient((_) async => http.Response.bytes(response, 200));
+
+ final Uint8List result = await instabugHttpClient.readBytes(url);
+ expect(result, isInstanceOf());
+ expect(result, response);
+ });
+
+ test('expect instabug http client SEND to return response', () async {
+ final http.StreamedResponse response = http.StreamedResponse(
+ const Stream>.empty(), 200,
+ contentLength: 0);
+ final http.StreamedRequest request = http.StreamedRequest('POST', url)
+ ..headers[HttpHeaders.contentTypeHeader] =
+ 'application/json; charset=utf-8'
+ ..headers[HttpHeaders.userAgentHeader] = 'Dart';
+ when(instabugHttpClient.client.send(request))
+ .thenAnswer((_) async => response);
+ final Future responseFuture =
+ instabugHttpClient.send(request);
+ request
+ ..sink.add('{"hello": "world"}'.codeUnits)
+ ..sink.close();
+
+ final http.StreamedResponse result = await responseFuture;
+ expect(result, isInstanceOf());
+ expect(result.headers, response.headers);
+ expect(result.statusCode, response.statusCode);
+ expect(result.contentLength, response.contentLength);
+ expect(result.isRedirect, response.isRedirect);
+ expect(result.persistentConnection, response.persistentConnection);
+ expect(result.reasonPhrase, response.reasonPhrase);
+ expect(result.request, response.request);
+ expect(await result.stream.bytesToString(),
+ await response.stream.bytesToString());
+ final MockInstabugHttpLogger logger =
+ instabugHttpClient.logger as MockInstabugHttpLogger;
+ verify(logger.onLogger(any, startTime: anyNamed('startTime'))).called(1);
+ });
+
+ test('expect instabug http client CLOSE to be called', () async {
+ instabugHttpClient.close();
+
+ verify(instabugHttpClient.client.close());
+ });
+
+ test('stress test for GET method', () async {
+ when(instabugHttpClient.client.get(url))
+ .thenAnswer((_) async => mockedResponse);
+ for (int i = 0; i < 10000; i++) {
+ await instabugHttpClient.get(url);
+ }
+ verify(instabugHttpClient.logger
+ .onLogger(mockedResponse, startTime: anyNamed('startTime')))
+ .called(10000);
+ });
+}
diff --git a/packages/instabug_dio_interceptor/.github/pull_request_template.md b/packages/instabug_dio_interceptor/.github/pull_request_template.md
new file mode 100644
index 000000000..e30db4dd9
--- /dev/null
+++ b/packages/instabug_dio_interceptor/.github/pull_request_template.md
@@ -0,0 +1,15 @@
+## Description of the change
+> Description goes here
+## Type of change
+- [ ] Bug fix (non-breaking change that fixes an issue)
+- [ ] New feature (non-breaking change that adds functionality)
+- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
+## Related issues
+> Issue links go here
+## Checklists
+### Development
+- [ ] Lint rules pass locally
+- [ ] The code changed/added as part of this pull request has been covered with tests
+### Code review
+- [ ] This pull request has a descriptive title and information useful to a reviewer
+- [ ] Issue from task tracker has a link to this pull request
diff --git a/packages/instabug_dio_interceptor/.gitignore b/packages/instabug_dio_interceptor/.gitignore
new file mode 100644
index 000000000..dd68e214b
--- /dev/null
+++ b/packages/instabug_dio_interceptor/.gitignore
@@ -0,0 +1,75 @@
+# Generated files
+*.mocks.dart
+
+# Miscellaneous
+*.class
+*.lock
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# Visual Studio Code related
+.vscode/
+
+# Flutter/Dart/Pub related
+**/doc/api/
+.dart_tool/
+.flutter-plugins
+.packages
+.flutter-plugins-dependencies
+.pub-cache/
+.pub/
+build/
+
+# Android related
+**/android/**/gradle-wrapper.jar
+**/android/.gradle
+**/android/captures/
+**/android/gradlew
+**/android/gradlew.bat
+**/android/local.properties
+**/android/**/GeneratedPluginRegistrant.java
+
+# iOS/XCode related
+**/ios/**/*.mode1v3
+**/ios/**/*.mode2v3
+**/ios/**/*.moved-aside
+**/ios/**/*.pbxuser
+**/ios/**/*.perspectivev3
+**/ios/**/*sync/
+**/ios/**/.sconsign.dblite
+**/ios/**/.tags*
+**/ios/**/.vagrant/
+**/ios/**/DerivedData/
+**/ios/**/Icon?
+**/ios/**/Pods/
+**/ios/**/.symlinks/
+**/ios/**/profile
+**/ios/**/xcuserdata
+**/ios/.generated/
+**/ios/Flutter/App.framework
+**/ios/Flutter/Flutter.framework
+**/ios/Flutter/Generated.xcconfig
+**/ios/Flutter/app.flx
+**/ios/Flutter/app.zip
+**/ios/Flutter/flutter_assets/
+**/ios/ServiceDefinitions.json
+**/ios/Runner/GeneratedPluginRegistrant.*
+
+# Exceptions to above rules.
+!**/ios/**/default.mode1v3
+!**/ios/**/default.mode2v3
+!**/ios/**/default.pbxuser
+!**/ios/**/default.perspectivev3
+!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
diff --git a/packages/instabug_dio_interceptor/CHANGELOG.md b/packages/instabug_dio_interceptor/CHANGELOG.md
new file mode 100644
index 000000000..6280601c7
--- /dev/null
+++ b/packages/instabug_dio_interceptor/CHANGELOG.md
@@ -0,0 +1,38 @@
+# Changelog
+
+## Unreleased
+
+### Added
+
+- Add support for Instabug Flutter SDK v12 ([#26](https://github.com/Instabug/Instabug-Dio-Interceptor/pull/26)), closes [#25](https://github.com/Instabug/Instabug-Dio-Interceptor/issues/25).
+
+## v2.2.0 (2022-03-14)
+
+- Adds support for Dio v5
+- Relaxes dependencies version constraints
+
+## v2.1.1 (2022-08-01)
+
+- Bumps [instabug_flutter](https://pub.dev/packages/instabug_flutter) to v11
+
+## v2.1.0 (2022-01-06)
+
+- Fixes network log compilation error.
+- Adds payload size for network log.
+
+## v2.0.1 (2021-09-29)
+
+- Fixes an issue with APM network logger not reporting to the dashboard
+
+## v2.0.0 (2021-09-20)
+
+- Adds support for Dio v4.0
+- Upgrades to null safety
+
+## v1.0.0 (2019-07-29)
+
+- Updates instabug_flutter dependency name
+
+## v0.0.1 (2019-07-22)
+
+- Initial release
diff --git a/packages/instabug_dio_interceptor/LICENSE b/packages/instabug_dio_interceptor/LICENSE
new file mode 100644
index 000000000..e4ca5a0ed
--- /dev/null
+++ b/packages/instabug_dio_interceptor/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) Instabug
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/packages/instabug_dio_interceptor/README.md b/packages/instabug_dio_interceptor/README.md
new file mode 100644
index 000000000..4fc3ec30d
--- /dev/null
+++ b/packages/instabug_dio_interceptor/README.md
@@ -0,0 +1,17 @@
+# Instabug Dio Interceptor
+
+[](https://circleci.com/gh/Instabug/Instabug-Dio-Interceptor)
+[](https://pub.dev/packages/instabug_dio_interceptor)
+
+This package is an add on to [Instabug-Flutter](https://github.com/Instabug/Instabug-Flutter).
+
+It intercepts any requests performed with `Dio` Package and sends them to the report that will be sent to the dashboard.
+
+## Integration
+
+To enable network logging, simply add the `InstabugDioInterceptor` to the dio object interceptors as follows:
+
+```dart
+var dio = new Dio();
+dio.interceptors.add(InstabugDioInterceptor());
+```
diff --git a/packages/instabug_dio_interceptor/analysis_options.yaml b/packages/instabug_dio_interceptor/analysis_options.yaml
new file mode 100644
index 000000000..77be49907
--- /dev/null
+++ b/packages/instabug_dio_interceptor/analysis_options.yaml
@@ -0,0 +1,178 @@
+# Specify analysis options.
+#
+# Until there are meta linter rules, each desired lint must be explicitly enabled.
+# See: https://github.com/dart-lang/linter/issues/288
+#
+# For a list of lints, see: http://dart-lang.github.io/linter/lints/
+# See the configuration guide for more
+# https://github.com/dart-lang/sdk/tree/master/pkg/analyzer#configuring-the-analyzer
+#
+# There are other similar analysis options files in the flutter repos,
+# which should be kept in sync with this file:
+#
+# - analysis_options.yaml (this file)
+# - packages/flutter/lib/analysis_options_user.yaml
+# - https://github.com/flutter/plugins/blob/master/analysis_options.yaml
+# - https://github.com/flutter/engine/blob/master/analysis_options.yaml
+#
+# This file contains the analysis options used by Flutter tools, such as IntelliJ,
+# Android Studio, and the `flutter analyze` command.
+
+analyzer:
+ strong-mode:
+ implicit-dynamic: false
+ errors:
+ # treat missing required parameters as a warning (not a hint)
+ missing_required_param: warning
+ # treat missing returns as a warning (not a hint)
+ missing_return: warning
+ # allow having TODOs in the code
+ todo: ignore
+ # Ignore analyzer hints for updating pubspecs when using Future or
+ # Stream and not importing dart:async
+ # Please see https://github.com/flutter/flutter/pull/24528 for details.
+ sdk_version_async_exported_from_core: ignore
+ exclude:
+ - 'bin/cache/**'
+ # the following two are relative to the stocks example and the flutter package respectively
+ # see https://github.com/dart-lang/sdk/issues/28463
+ - 'lib/i18n/stock_messages_*.dart'
+ - 'lib/src/http/**'
+
+linter:
+ rules:
+ # these rules are documented on and in the same order as
+ # the Dart Lint rules page to make maintenance easier
+ # https://github.com/dart-lang/linter/blob/master/example/all.yaml
+ - always_declare_return_types
+ - always_put_control_body_on_new_line
+ # - always_put_required_named_parameters_first # we prefer having parameters in the same order as fields https://github.com/flutter/flutter/issues/10219
+ - always_require_non_null_named_parameters
+ - always_specify_types
+ - annotate_overrides
+ # - avoid_annotating_with_dynamic # conflicts with always_specify_types
+ # - avoid_bool_literals_in_conditional_expressions # not yet tested
+ # - avoid_catches_without_on_clauses # we do this commonly
+ # - avoid_catching_errors # we do this commonly
+ - avoid_classes_with_only_static_members
+ # - avoid_double_and_int_checks # only useful when targeting JS runtime
+ - avoid_empty_else
+ - avoid_field_initializers_in_const_classes
+ - avoid_function_literals_in_foreach_calls
+ # - avoid_implementing_value_types # not yet tested
+ - avoid_init_to_null
+ # - avoid_js_rounded_ints # only useful when targeting JS runtime
+ - avoid_null_checks_in_equality_operators
+ # - avoid_positional_boolean_parameters # not yet tested
+ # - avoid_private_typedef_functions # we prefer having typedef (discussion in https://github.com/flutter/flutter/pull/16356)
+ - avoid_relative_lib_imports
+ - avoid_renaming_method_parameters
+ - avoid_return_types_on_setters
+ # - avoid_returning_null # there are plenty of valid reasons to return null
+ # - avoid_returning_null_for_future # not yet tested
+ - avoid_returning_null_for_void
+ # - avoid_returning_this # there are plenty of valid reasons to return this
+ # - avoid_setters_without_getters # not yet tested
+ # - avoid_shadowing_type_parameters # not yet tested
+ # - avoid_single_cascade_in_expression_statements # not yet tested
+ - avoid_slow_async_io
+ - avoid_types_as_parameter_names
+ # - avoid_types_on_closure_parameters # conflicts with always_specify_types
+ - avoid_unused_constructor_parameters
+ - avoid_void_async
+ - await_only_futures
+ - camel_case_types
+ - cancel_subscriptions
+ # - cascade_invocations # not yet tested
+ # - close_sinks # not reliable enough
+ # - comment_references # blocked on https://github.com/flutter/flutter/issues/20765
+ # - constant_identifier_names # needs an opt-out https://github.com/dart-lang/linter/issues/204
+ - control_flow_in_finally
+ # - curly_braces_in_flow_control_structures # not yet tested
+ - directives_ordering
+ - empty_catches
+ - empty_constructor_bodies
+ - empty_statements
+ # - file_names # not yet tested
+ - flutter_style_todos
+ - hash_and_equals
+ - implementation_imports
+ # - invariant_booleans # too many false positives: https://github.com/dart-lang/linter/issues/811
+ - iterable_contains_unrelated_type
+ # - join_return_with_assignment # not yet tested
+ - library_names
+ - library_prefixes
+ # - lines_longer_than_80_chars # not yet tested
+ - list_remove_unrelated_type
+ # - literal_only_boolean_expressions # too many false positives: https://github.com/dart-lang/sdk/issues/34181
+ - no_adjacent_strings_in_list
+ - no_duplicate_case_values
+ - non_constant_identifier_names
+ # - null_closures # not yet tested
+ # - omit_local_variable_types # opposite of always_specify_types
+ # - one_member_abstracts # too many false positives
+ # - only_throw_errors # https://github.com/flutter/flutter/issues/5792
+ - overridden_fields
+ - package_api_docs
+ - package_names
+ - package_prefixed_library_names
+ # - parameter_assignments # we do this commonly
+ - prefer_adjacent_string_concatenation
+ - prefer_asserts_in_initializer_lists
+ - prefer_collection_literals
+ - prefer_conditional_assignment
+ - prefer_const_constructors
+ - prefer_const_constructors_in_immutables
+ - prefer_const_declarations
+ - prefer_const_literals_to_create_immutables
+ # - prefer_constructors_over_static_methods # not yet tested
+ - prefer_contains
+ - prefer_equal_for_default_values
+ # - prefer_expression_function_bodies # conflicts with https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#consider-using--for-short-functions-and-methods
+ - prefer_final_fields
+ - prefer_final_locals
+ - prefer_foreach
+ # - prefer_function_declarations_over_variables # not yet tested
+ - prefer_generic_function_type_aliases
+ - prefer_initializing_formals
+ # - prefer_int_literals # not yet tested
+ # - prefer_interpolation_to_compose_strings # not yet tested
+ - prefer_is_empty
+ - prefer_is_not_empty
+ - prefer_iterable_whereType
+ # - prefer_mixin # https://github.com/dart-lang/language/issues/32
+ - prefer_single_quotes
+ - prefer_typing_uninitialized_variables
+ - prefer_void_to_null
+ # - public_member_api_docs # enabled on a case-by-case basis; see e.g. packages/analysis_options.yaml
+ - recursive_getters
+ - slash_for_doc_comments
+ - sort_constructors_first
+ - sort_pub_dependencies
+ - sort_unnamed_constructors_first
+ # - super_goes_last # no longer needed w/ Dart 2
+ - test_types_in_equals
+ - throw_in_finally
+ # - type_annotate_public_apis # subset of always_specify_types
+ - type_init_formals
+ # - unawaited_futures # too many false positives
+ # - unnecessary_await_in_return # not yet tested
+ - unnecessary_brace_in_string_interps
+ - unnecessary_const
+ - unnecessary_getters_setters
+ # - unnecessary_lambdas # has false positives: https://github.com/dart-lang/linter/issues/498
+ - unnecessary_new
+ - unnecessary_null_aware_assignments
+ - unnecessary_null_in_if_null_operators
+ - unnecessary_overrides
+ - unnecessary_parenthesis
+ - unnecessary_statements
+ - unnecessary_this
+ - unrelated_type_equality_checks
+ # - use_function_type_syntax_for_parameters # not yet tested
+ - use_rethrow_when_possible
+ # - use_setters_to_change_properties # not yet tested
+ # - use_string_buffers # has false positives: https://github.com/dart-lang/sdk/issues/34182
+ # - use_to_and_as_if_applicable # has false positives, so we prefer to catch this by code-review
+ - valid_regexps
+ # - void_checks # not yet tested
diff --git a/packages/instabug_dio_interceptor/example/.gitignore b/packages/instabug_dio_interceptor/example/.gitignore
new file mode 100644
index 000000000..0fa6b675c
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/.gitignore
@@ -0,0 +1,46 @@
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# The .vscode folder contains launch configuration and tasks you configure in
+# VS Code which you may wish to be included in version control, so this line
+# is commented out by default.
+#.vscode/
+
+# Flutter/Dart/Pub related
+**/doc/api/
+**/ios/Flutter/.last_build_id
+.dart_tool/
+.flutter-plugins
+.flutter-plugins-dependencies
+.packages
+.pub-cache/
+.pub/
+/build/
+
+# Web related
+lib/generated_plugin_registrant.dart
+
+# Symbolication related
+app.*.symbols
+
+# Obfuscation related
+app.*.map.json
+
+# Android Studio will place build artifacts here
+/android/app/debug
+/android/app/profile
+/android/app/release
diff --git a/packages/instabug_dio_interceptor/example/.metadata b/packages/instabug_dio_interceptor/example/.metadata
new file mode 100644
index 000000000..5a023280a
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/.metadata
@@ -0,0 +1,10 @@
+# This file tracks properties of this Flutter project.
+# Used by Flutter tool to assess capabilities and perform upgrades etc.
+#
+# This file should be version controlled and should not be manually edited.
+
+version:
+ revision: 7e9793dee1b85a243edd0e06cb1658e98b077561
+ channel: stable
+
+project_type: app
diff --git a/packages/instabug_dio_interceptor/example/README.md b/packages/instabug_dio_interceptor/example/README.md
new file mode 100644
index 000000000..a13562602
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/README.md
@@ -0,0 +1,16 @@
+# example
+
+A new Flutter project.
+
+## Getting Started
+
+This project is a starting point for a Flutter application.
+
+A few resources to get you started if this is your first Flutter project:
+
+- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
+- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
+
+For help getting started with Flutter, view our
+[online documentation](https://flutter.dev/docs), which offers tutorials,
+samples, guidance on mobile development, and a full API reference.
diff --git a/packages/instabug_dio_interceptor/example/analysis_options.yaml b/packages/instabug_dio_interceptor/example/analysis_options.yaml
new file mode 100644
index 000000000..61b6c4de1
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/analysis_options.yaml
@@ -0,0 +1,29 @@
+# This file configures the analyzer, which statically analyzes Dart code to
+# check for errors, warnings, and lints.
+#
+# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
+# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
+# invoked from the command line by running `flutter analyze`.
+
+# The following line activates a set of recommended lints for Flutter apps,
+# packages, and plugins designed to encourage good coding practices.
+include: package:flutter_lints/flutter.yaml
+
+linter:
+ # The lint rules applied to this project can be customized in the
+ # section below to disable rules from the `package:flutter_lints/flutter.yaml`
+ # included above or to enable additional rules. A list of all available lints
+ # and their documentation is published at
+ # https://dart-lang.github.io/linter/lints/index.html.
+ #
+ # Instead of disabling a lint rule for the entire project in the
+ # section below, it can also be suppressed for a single line of code
+ # or a specific dart file by using the `// ignore: name_of_lint` and
+ # `// ignore_for_file: name_of_lint` syntax on the line or in the file
+ # producing the lint.
+ rules:
+ # avoid_print: false # Uncomment to disable the `avoid_print` rule
+ # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
+
+# Additional information about this file can be found at
+# https://dart.dev/guides/language/analysis-options
diff --git a/packages/instabug_dio_interceptor/example/android/.gitignore b/packages/instabug_dio_interceptor/example/android/.gitignore
new file mode 100644
index 000000000..6f568019d
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/android/.gitignore
@@ -0,0 +1,13 @@
+gradle-wrapper.jar
+/.gradle
+/captures/
+/gradlew
+/gradlew.bat
+/local.properties
+GeneratedPluginRegistrant.java
+
+# Remember to never publicly share your keystore.
+# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
+key.properties
+**/*.keystore
+**/*.jks
diff --git a/packages/instabug_dio_interceptor/example/android/app/build.gradle b/packages/instabug_dio_interceptor/example/android/app/build.gradle
new file mode 100644
index 000000000..5fe3c929f
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/android/app/build.gradle
@@ -0,0 +1,68 @@
+def localProperties = new Properties()
+def localPropertiesFile = rootProject.file('local.properties')
+if (localPropertiesFile.exists()) {
+ localPropertiesFile.withReader('UTF-8') { reader ->
+ localProperties.load(reader)
+ }
+}
+
+def flutterRoot = localProperties.getProperty('flutter.sdk')
+if (flutterRoot == null) {
+ throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
+}
+
+def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
+if (flutterVersionCode == null) {
+ flutterVersionCode = '1'
+}
+
+def flutterVersionName = localProperties.getProperty('flutter.versionName')
+if (flutterVersionName == null) {
+ flutterVersionName = '1.0'
+}
+
+apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android'
+apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
+
+android {
+ compileSdkVersion flutter.compileSdkVersion
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ kotlinOptions {
+ jvmTarget = '1.8'
+ }
+
+ sourceSets {
+ main.java.srcDirs += 'src/main/kotlin'
+ }
+
+ defaultConfig {
+ // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
+ applicationId "com.example.example"
+ minSdkVersion flutter.minSdkVersion
+ targetSdkVersion flutter.targetSdkVersion
+ versionCode flutterVersionCode.toInteger()
+ versionName flutterVersionName
+ }
+
+ buildTypes {
+ release {
+ // TODO: Add your own signing config for the release build.
+ // Signing with the debug keys for now, so `flutter run --release` works.
+ signingConfig signingConfigs.debug
+ }
+ }
+}
+
+flutter {
+ source '../..'
+}
+
+dependencies {
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+}
diff --git a/packages/instabug_dio_interceptor/example/android/app/src/debug/AndroidManifest.xml b/packages/instabug_dio_interceptor/example/android/app/src/debug/AndroidManifest.xml
new file mode 100644
index 000000000..c208884f3
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/android/app/src/debug/AndroidManifest.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/packages/instabug_dio_interceptor/example/android/app/src/main/AndroidManifest.xml b/packages/instabug_dio_interceptor/example/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..3f41384db
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/instabug_dio_interceptor/example/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java b/packages/instabug_dio_interceptor/example/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java
new file mode 100644
index 000000000..752fc185d
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java
@@ -0,0 +1,25 @@
+// Generated file.
+//
+// If you wish to remove Flutter's multidex support, delete this entire file.
+//
+// Modifications to this file should be done in a copy under a different name
+// as this file may be regenerated.
+
+package io.flutter.app;
+
+import android.app.Application;
+import android.content.Context;
+import androidx.annotation.CallSuper;
+import androidx.multidex.MultiDex;
+
+/**
+ * Extension of {@link android.app.Application}, adding multidex support.
+ */
+public class FlutterMultiDexApplication extends Application {
+ @Override
+ @CallSuper
+ protected void attachBaseContext(Context base) {
+ super.attachBaseContext(base);
+ MultiDex.install(this);
+ }
+}
diff --git a/packages/instabug_dio_interceptor/example/android/app/src/main/kotlin/com/example/example/MainActivity.kt b/packages/instabug_dio_interceptor/example/android/app/src/main/kotlin/com/example/example/MainActivity.kt
new file mode 100644
index 000000000..e793a000d
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/android/app/src/main/kotlin/com/example/example/MainActivity.kt
@@ -0,0 +1,6 @@
+package com.example.example
+
+import io.flutter.embedding.android.FlutterActivity
+
+class MainActivity: FlutterActivity() {
+}
diff --git a/packages/instabug_dio_interceptor/example/android/app/src/main/res/drawable-v21/launch_background.xml b/packages/instabug_dio_interceptor/example/android/app/src/main/res/drawable-v21/launch_background.xml
new file mode 100644
index 000000000..f74085f3f
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/android/app/src/main/res/drawable-v21/launch_background.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
diff --git a/packages/instabug_dio_interceptor/example/android/app/src/main/res/drawable/launch_background.xml b/packages/instabug_dio_interceptor/example/android/app/src/main/res/drawable/launch_background.xml
new file mode 100644
index 000000000..304732f88
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/android/app/src/main/res/drawable/launch_background.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
diff --git a/packages/instabug_dio_interceptor/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/instabug_dio_interceptor/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 000000000..db77bb4b7
Binary files /dev/null and b/packages/instabug_dio_interceptor/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/packages/instabug_dio_interceptor/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/instabug_dio_interceptor/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 000000000..17987b79b
Binary files /dev/null and b/packages/instabug_dio_interceptor/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/packages/instabug_dio_interceptor/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/instabug_dio_interceptor/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 000000000..09d439148
Binary files /dev/null and b/packages/instabug_dio_interceptor/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/packages/instabug_dio_interceptor/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/instabug_dio_interceptor/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 000000000..d5f1c8d34
Binary files /dev/null and b/packages/instabug_dio_interceptor/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/packages/instabug_dio_interceptor/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/instabug_dio_interceptor/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 000000000..4d6372eeb
Binary files /dev/null and b/packages/instabug_dio_interceptor/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/packages/instabug_dio_interceptor/example/android/app/src/main/res/values-night/styles.xml b/packages/instabug_dio_interceptor/example/android/app/src/main/res/values-night/styles.xml
new file mode 100644
index 000000000..3db14bb53
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/android/app/src/main/res/values-night/styles.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/packages/instabug_dio_interceptor/example/android/app/src/main/res/values/styles.xml b/packages/instabug_dio_interceptor/example/android/app/src/main/res/values/styles.xml
new file mode 100644
index 000000000..d460d1e92
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/android/app/src/main/res/values/styles.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/packages/instabug_dio_interceptor/example/android/app/src/profile/AndroidManifest.xml b/packages/instabug_dio_interceptor/example/android/app/src/profile/AndroidManifest.xml
new file mode 100644
index 000000000..c208884f3
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/android/app/src/profile/AndroidManifest.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/packages/instabug_dio_interceptor/example/android/build.gradle b/packages/instabug_dio_interceptor/example/android/build.gradle
new file mode 100644
index 000000000..4256f9173
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/android/build.gradle
@@ -0,0 +1,31 @@
+buildscript {
+ ext.kotlin_version = '1.6.10'
+ repositories {
+ google()
+ mavenCentral()
+ }
+
+ dependencies {
+ classpath 'com.android.tools.build:gradle:4.1.0'
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ }
+}
+
+rootProject.buildDir = '../build'
+subprojects {
+ project.buildDir = "${rootProject.buildDir}/${project.name}"
+}
+subprojects {
+ project.evaluationDependsOn(':app')
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
diff --git a/packages/instabug_dio_interceptor/example/android/gradle.properties b/packages/instabug_dio_interceptor/example/android/gradle.properties
new file mode 100644
index 000000000..94adc3a3f
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/android/gradle.properties
@@ -0,0 +1,3 @@
+org.gradle.jvmargs=-Xmx1536M
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/packages/instabug_dio_interceptor/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/instabug_dio_interceptor/example/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 000000000..bc6a58afd
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Jun 23 08:50:38 CEST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
diff --git a/packages/instabug_dio_interceptor/example/android/settings.gradle b/packages/instabug_dio_interceptor/example/android/settings.gradle
new file mode 100644
index 000000000..44e62bcf0
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/android/settings.gradle
@@ -0,0 +1,11 @@
+include ':app'
+
+def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
+def properties = new Properties()
+
+assert localPropertiesFile.exists()
+localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
+
+def flutterSdkPath = properties.getProperty("flutter.sdk")
+assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
+apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
diff --git a/packages/instabug_dio_interceptor/example/ios/.gitignore b/packages/instabug_dio_interceptor/example/ios/.gitignore
new file mode 100644
index 000000000..7a7f9873a
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/ios/.gitignore
@@ -0,0 +1,34 @@
+**/dgph
+*.mode1v3
+*.mode2v3
+*.moved-aside
+*.pbxuser
+*.perspectivev3
+**/*sync/
+.sconsign.dblite
+.tags*
+**/.vagrant/
+**/DerivedData/
+Icon?
+**/Pods/
+**/.symlinks/
+profile
+xcuserdata
+**/.generated/
+Flutter/App.framework
+Flutter/Flutter.framework
+Flutter/Flutter.podspec
+Flutter/Generated.xcconfig
+Flutter/ephemeral/
+Flutter/app.flx
+Flutter/app.zip
+Flutter/flutter_assets/
+Flutter/flutter_export_environment.sh
+ServiceDefinitions.json
+Runner/GeneratedPluginRegistrant.*
+
+# Exceptions to above rules.
+!default.mode1v3
+!default.mode2v3
+!default.pbxuser
+!default.perspectivev3
diff --git a/packages/instabug_dio_interceptor/example/ios/Flutter/AppFrameworkInfo.plist b/packages/instabug_dio_interceptor/example/ios/Flutter/AppFrameworkInfo.plist
new file mode 100644
index 000000000..9625e105d
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/ios/Flutter/AppFrameworkInfo.plist
@@ -0,0 +1,26 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ App
+ CFBundleIdentifier
+ io.flutter.flutter.app
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ App
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1.0
+ MinimumOSVersion
+ 11.0
+
+
diff --git a/packages/instabug_dio_interceptor/example/ios/Flutter/Debug.xcconfig b/packages/instabug_dio_interceptor/example/ios/Flutter/Debug.xcconfig
new file mode 100644
index 000000000..ec97fc6f3
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/ios/Flutter/Debug.xcconfig
@@ -0,0 +1,2 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
+#include "Generated.xcconfig"
diff --git a/packages/instabug_dio_interceptor/example/ios/Flutter/Release.xcconfig b/packages/instabug_dio_interceptor/example/ios/Flutter/Release.xcconfig
new file mode 100644
index 000000000..c4855bfe2
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/ios/Flutter/Release.xcconfig
@@ -0,0 +1,2 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
+#include "Generated.xcconfig"
diff --git a/packages/instabug_dio_interceptor/example/ios/Podfile b/packages/instabug_dio_interceptor/example/ios/Podfile
new file mode 100644
index 000000000..313ea4a15
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/ios/Podfile
@@ -0,0 +1,41 @@
+# Uncomment this line to define a global platform for your project
+platform :ios, '11.0'
+
+# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
+ENV['COCOAPODS_DISABLE_STATS'] = 'true'
+
+project 'Runner', {
+ 'Debug' => :debug,
+ 'Profile' => :release,
+ 'Release' => :release,
+}
+
+def flutter_root
+ generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
+ unless File.exist?(generated_xcode_build_settings_path)
+ raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
+ end
+
+ File.foreach(generated_xcode_build_settings_path) do |line|
+ matches = line.match(/FLUTTER_ROOT\=(.*)/)
+ return matches[1].strip if matches
+ end
+ raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
+end
+
+require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
+
+flutter_ios_podfile_setup
+
+target 'Runner' do
+ use_frameworks!
+ use_modular_headers!
+
+ flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
+end
+
+post_install do |installer|
+ installer.pods_project.targets.each do |target|
+ flutter_additional_ios_build_settings(target)
+ end
+end
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner.xcodeproj/project.pbxproj b/packages/instabug_dio_interceptor/example/ios/Runner.xcodeproj/project.pbxproj
new file mode 100644
index 000000000..90bc9fee8
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/ios/Runner.xcodeproj/project.pbxproj
@@ -0,0 +1,552 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
+ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
+ 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
+ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
+ 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
+ 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
+ AD44C4DB39F7C3968B8C56EB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18B300F826F2074CB5E450C4 /* Pods_Runner.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ );
+ name = "Embed Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
+ 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
+ 18B300F826F2074CB5E450C4 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
+ 3E0436312822B722E186D653 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
+ 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
+ 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
+ 90FF03378459C589A4D9DA6E /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
+ 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
+ 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
+ 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ DE25EB3DE5B281AB8980A728 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 97C146EB1CF9000F007C117D /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AD44C4DB39F7C3968B8C56EB /* Pods_Runner.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 3456E8E25F114A239880D241 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 18B300F826F2074CB5E450C4 /* Pods_Runner.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ 4955E253C000584F8EA1A042 /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 90FF03378459C589A4D9DA6E /* Pods-Runner.debug.xcconfig */,
+ 3E0436312822B722E186D653 /* Pods-Runner.release.xcconfig */,
+ DE25EB3DE5B281AB8980A728 /* Pods-Runner.profile.xcconfig */,
+ );
+ name = Pods;
+ path = Pods;
+ sourceTree = "";
+ };
+ 9740EEB11CF90186004384FC /* Flutter */ = {
+ isa = PBXGroup;
+ children = (
+ 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
+ 9740EEB21CF90195004384FC /* Debug.xcconfig */,
+ 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
+ 9740EEB31CF90195004384FC /* Generated.xcconfig */,
+ );
+ name = Flutter;
+ sourceTree = "";
+ };
+ 97C146E51CF9000F007C117D = {
+ isa = PBXGroup;
+ children = (
+ 9740EEB11CF90186004384FC /* Flutter */,
+ 97C146F01CF9000F007C117D /* Runner */,
+ 97C146EF1CF9000F007C117D /* Products */,
+ 4955E253C000584F8EA1A042 /* Pods */,
+ 3456E8E25F114A239880D241 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ 97C146EF1CF9000F007C117D /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 97C146EE1CF9000F007C117D /* Runner.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 97C146F01CF9000F007C117D /* Runner */ = {
+ isa = PBXGroup;
+ children = (
+ 97C146FA1CF9000F007C117D /* Main.storyboard */,
+ 97C146FD1CF9000F007C117D /* Assets.xcassets */,
+ 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
+ 97C147021CF9000F007C117D /* Info.plist */,
+ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
+ 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
+ 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
+ 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
+ );
+ path = Runner;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 97C146ED1CF9000F007C117D /* Runner */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
+ buildPhases = (
+ F412A5213E8CA6290AF8A003 /* [CP] Check Pods Manifest.lock */,
+ 9740EEB61CF901F6004384FC /* Run Script */,
+ 97C146EA1CF9000F007C117D /* Sources */,
+ 97C146EB1CF9000F007C117D /* Frameworks */,
+ 97C146EC1CF9000F007C117D /* Resources */,
+ 9705A1C41CF9048500538489 /* Embed Frameworks */,
+ 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
+ 9BDEDB79123E51897883C720 /* [CP] Embed Pods Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = Runner;
+ productName = Runner;
+ productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 97C146E61CF9000F007C117D /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 1300;
+ ORGANIZATIONNAME = "";
+ TargetAttributes = {
+ 97C146ED1CF9000F007C117D = {
+ CreatedOnToolsVersion = 7.3.1;
+ LastSwiftMigration = 1100;
+ };
+ };
+ };
+ buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 97C146E51CF9000F007C117D;
+ productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 97C146ED1CF9000F007C117D /* Runner */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 97C146EC1CF9000F007C117D /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
+ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
+ 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
+ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Thin Binary";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
+ };
+ 9740EEB61CF901F6004384FC /* Run Script */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Run Script";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
+ };
+ 9BDEDB79123E51897883C720 /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ F412A5213E8CA6290AF8A003 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 97C146EA1CF9000F007C117D /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
+ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 97C146FB1CF9000F007C117D /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+ 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 97C147001CF9000F007C117D /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 249021D3217E4FDB00AE95B9 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Profile;
+ };
+ 249021D4217E4FDB00AE95B9 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = XNK224R4SF;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.example;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Profile;
+ };
+ 97C147031CF9000F007C117D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 97C147041CF9000F007C117D /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 97C147061CF9000F007C117D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = XNK224R4SF;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.example;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Debug;
+ };
+ 97C147071CF9000F007C117D /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = XNK224R4SF;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.example;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 97C147031CF9000F007C117D /* Debug */,
+ 97C147041CF9000F007C117D /* Release */,
+ 249021D3217E4FDB00AE95B9 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 97C147061CF9000F007C117D /* Debug */,
+ 97C147071CF9000F007C117D /* Release */,
+ 249021D4217E4FDB00AE95B9 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 97C146E61CF9000F007C117D /* Project object */;
+}
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/instabug_dio_interceptor/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 000000000..919434a62
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/instabug_dio_interceptor/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 000000000..18d981003
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/instabug_dio_interceptor/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
new file mode 100644
index 000000000..f9b0d7c5e
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
@@ -0,0 +1,8 @@
+
+
+
+
+ PreviewsEnabled
+
+
+
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/instabug_dio_interceptor/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
new file mode 100644
index 000000000..c87d15a33
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/packages/instabug_dio_interceptor/example/ios/Runner.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 000000000..21a3cc14c
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/ios/Runner.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/instabug_dio_interceptor/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 000000000..18d981003
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/instabug_dio_interceptor/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
new file mode 100644
index 000000000..f9b0d7c5e
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
@@ -0,0 +1,8 @@
+
+
+
+
+ PreviewsEnabled
+
+
+
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/AppDelegate.swift b/packages/instabug_dio_interceptor/example/ios/Runner/AppDelegate.swift
new file mode 100644
index 000000000..70693e4a8
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/ios/Runner/AppDelegate.swift
@@ -0,0 +1,13 @@
+import UIKit
+import Flutter
+
+@UIApplicationMain
+@objc class AppDelegate: FlutterAppDelegate {
+ override func application(
+ _ application: UIApplication,
+ didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
+ ) -> Bool {
+ GeneratedPluginRegistrant.register(with: self)
+ return super.application(application, didFinishLaunchingWithOptions: launchOptions)
+ }
+}
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 000000000..d36b1fab2
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,122 @@
+{
+ "images" : [
+ {
+ "size" : "20x20",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-20x20@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-20x20@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-29x29@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-29x29@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-29x29@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-40x40@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-40x40@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-60x60@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-60x60@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-20x20@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-20x20@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-29x29@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-29x29@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-40x40@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-40x40@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-76x76@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-76x76@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "83.5x83.5",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-83.5x83.5@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "1024x1024",
+ "idiom" : "ios-marketing",
+ "filename" : "Icon-App-1024x1024@1x.png",
+ "scale" : "1x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
new file mode 100644
index 000000000..dc9ada472
Binary files /dev/null and b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
new file mode 100644
index 000000000..28c6bf030
Binary files /dev/null and b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
new file mode 100644
index 000000000..2ccbfd967
Binary files /dev/null and b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
new file mode 100644
index 000000000..f091b6b0b
Binary files /dev/null and b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
new file mode 100644
index 000000000..4cde12118
Binary files /dev/null and b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
new file mode 100644
index 000000000..d0ef06e7e
Binary files /dev/null and b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
new file mode 100644
index 000000000..dcdc2306c
Binary files /dev/null and b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
new file mode 100644
index 000000000..2ccbfd967
Binary files /dev/null and b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
new file mode 100644
index 000000000..c8f9ed8f5
Binary files /dev/null and b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
new file mode 100644
index 000000000..a6d6b8609
Binary files /dev/null and b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
new file mode 100644
index 000000000..a6d6b8609
Binary files /dev/null and b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
new file mode 100644
index 000000000..75b2d164a
Binary files /dev/null and b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
new file mode 100644
index 000000000..c4df70d39
Binary files /dev/null and b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
new file mode 100644
index 000000000..6a84f41e1
Binary files /dev/null and b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
new file mode 100644
index 000000000..d0e1f5853
Binary files /dev/null and b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
new file mode 100644
index 000000000..0bedcf2fd
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchImage.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchImage@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchImage@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
new file mode 100644
index 000000000..9da19eaca
Binary files /dev/null and b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
new file mode 100644
index 000000000..9da19eaca
Binary files /dev/null and b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
new file mode 100644
index 000000000..9da19eaca
Binary files /dev/null and b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
new file mode 100644
index 000000000..89c2725b7
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
@@ -0,0 +1,5 @@
+# Launch Screen Assets
+
+You can customize the launch screen with your own desired assets by replacing the image files in this directory.
+
+You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
\ No newline at end of file
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/packages/instabug_dio_interceptor/example/ios/Runner/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 000000000..f2e259c7c
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/ios/Runner/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Base.lproj/Main.storyboard b/packages/instabug_dio_interceptor/example/ios/Runner/Base.lproj/Main.storyboard
new file mode 100644
index 000000000..f3c28516f
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/ios/Runner/Base.lproj/Main.storyboard
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Info.plist b/packages/instabug_dio_interceptor/example/ios/Runner/Info.plist
new file mode 100644
index 000000000..907f329fe
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/ios/Runner/Info.plist
@@ -0,0 +1,49 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleDisplayName
+ Example
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ example
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ $(FLUTTER_BUILD_NAME)
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ $(FLUTTER_BUILD_NUMBER)
+ LSRequiresIPhoneOS
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIMainStoryboardFile
+ Main
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UIViewControllerBasedStatusBarAppearance
+
+ CADisableMinimumFrameDurationOnPhone
+
+
+
diff --git a/packages/instabug_dio_interceptor/example/ios/Runner/Runner-Bridging-Header.h b/packages/instabug_dio_interceptor/example/ios/Runner/Runner-Bridging-Header.h
new file mode 100644
index 000000000..308a2a560
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/ios/Runner/Runner-Bridging-Header.h
@@ -0,0 +1 @@
+#import "GeneratedPluginRegistrant.h"
diff --git a/packages/instabug_dio_interceptor/example/lib/main.dart b/packages/instabug_dio_interceptor/example/lib/main.dart
new file mode 100644
index 000000000..fcd29a3cb
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/lib/main.dart
@@ -0,0 +1,78 @@
+import 'package:dio/dio.dart';
+import 'package:flutter/material.dart';
+import 'package:instabug_dio_interceptor/instabug_dio_interceptor.dart';
+import 'package:instabug_flutter/instabug_flutter.dart';
+
+Future main() async {
+ runApp(const MyApp());
+
+ Instabug.init(
+ token: 'ed6f659591566da19b67857e1b9d40ab',
+ invocationEvents: [InvocationEvent.floatingButton],
+ );
+
+ final dio = Dio()..interceptors.add(InstabugDioInterceptor());
+ final response = await dio.get('https://google.com');
+ debugPrint(response.data);
+}
+
+class MyApp extends StatelessWidget {
+ const MyApp({Key? key}) : super(key: key);
+
+ @override
+ Widget build(BuildContext context) {
+ return MaterialApp(
+ title: 'Flutter Demo',
+ theme: ThemeData(
+ primarySwatch: Colors.blue,
+ ),
+ home: const MyHomePage(title: 'Flutter Demo Home Page'),
+ );
+ }
+}
+
+class MyHomePage extends StatefulWidget {
+ const MyHomePage({Key? key, required this.title}) : super(key: key);
+ final String title;
+
+ @override
+ State createState() => _MyHomePageState();
+}
+
+class _MyHomePageState extends State {
+ int _counter = 0;
+
+ void _incrementCounter() {
+ setState(() {
+ _counter++;
+ });
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ appBar: AppBar(
+ title: Text(widget.title),
+ ),
+ body: Center(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ const Text(
+ 'You have pushed the button this many times:',
+ ),
+ Text(
+ '$_counter',
+ style: Theme.of(context).textTheme.headlineMedium,
+ ),
+ ],
+ ),
+ ),
+ floatingActionButton: FloatingActionButton(
+ onPressed: _incrementCounter,
+ tooltip: 'Increment',
+ child: const Icon(Icons.add),
+ ),
+ );
+ }
+}
diff --git a/packages/instabug_dio_interceptor/example/pubspec.yaml b/packages/instabug_dio_interceptor/example/pubspec.yaml
new file mode 100644
index 000000000..d9507bd5e
--- /dev/null
+++ b/packages/instabug_dio_interceptor/example/pubspec.yaml
@@ -0,0 +1,25 @@
+name: example
+description: Demonstrates how to use the instabug_dio_interceptor package.
+
+publish_to: "none"
+
+version: 1.0.0+1
+
+environment:
+ sdk: ">=2.12.0 <3.0.0"
+
+dependencies:
+ flutter:
+ sdk: flutter
+ cupertino_icons: ^1.0.2
+ dio: ^5.0.0
+ instabug_dio_interceptor:
+ path: ../
+
+dev_dependencies:
+ flutter_test:
+ sdk: flutter
+ flutter_lints: ^1.0.0
+
+flutter:
+ uses-material-design: true
diff --git a/packages/instabug_dio_interceptor/lib/instabug_dio_interceptor.dart b/packages/instabug_dio_interceptor/lib/instabug_dio_interceptor.dart
new file mode 100644
index 000000000..1caabeee3
--- /dev/null
+++ b/packages/instabug_dio_interceptor/lib/instabug_dio_interceptor.dart
@@ -0,0 +1,87 @@
+import 'package:dio/dio.dart';
+import 'package:instabug_flutter/instabug_flutter.dart';
+
+class InstabugDioInterceptor extends Interceptor {
+ static final Map _requests = {};
+ static final NetworkLogger _networklogger = NetworkLogger();
+ @override
+ void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
+ final NetworkData data = NetworkData(
+ startTime: DateTime.now(),
+ url: options.uri.toString(),
+ method: options.method);
+ _requests[options.hashCode] = data;
+ handler.next(options);
+ }
+
+ @override
+ void onResponse(
+ Response response, ResponseInterceptorHandler handler) {
+ final NetworkData data = _map(response);
+ _networklogger.networkLog(data);
+ handler.next(response);
+ }
+
+ @override
+ // Keep `DioError` instead of `DioException` for backward-compatibility, for now.
+ // ignore: deprecated_member_use
+ void onError(DioError err, ErrorInterceptorHandler handler) {
+ if (err.response != null) {
+ final NetworkData data = _map(err.response!);
+ _networklogger.networkLog(data);
+ }
+
+ handler.next(err);
+ }
+
+ static NetworkData _getRequestData(int requestHashCode) {
+ final NetworkData data = _requests[requestHashCode]!;
+ _requests.remove(requestHashCode);
+ return data;
+ }
+
+ NetworkData _map(Response response) {
+ final NetworkData data = _getRequestData(response.requestOptions.hashCode);
+ final Map responseHeaders = {};
+ final DateTime endTime = DateTime.now();
+
+ response.headers
+ .forEach((String name, dynamic value) => responseHeaders[name] = value);
+
+ String responseContentType = '';
+ if (responseHeaders.containsKey('content-type')) {
+ responseContentType = responseHeaders['content-type'].toString();
+ }
+
+ int requestBodySize = 0;
+ if (response.requestOptions.headers.containsKey('content-length')) {
+ requestBodySize =
+ int.parse(response.requestOptions.headers['content-length'] ?? '0');
+ } else if (response.requestOptions.data != null) {
+ requestBodySize = response.requestOptions.data.toString().length;
+ }
+
+ int responseBodySize = 0;
+ if (responseHeaders.containsKey('content-length')) {
+ responseBodySize = int.parse(responseHeaders['content-length'][0] ?? '0');
+ } else if (response.data != null) {
+ responseBodySize = response.data.toString().length;
+ }
+
+ return data.copyWith(
+ endTime: endTime,
+ duration: endTime.difference(data.startTime).inMicroseconds,
+ url: response.requestOptions.uri.toString(),
+ method: response.requestOptions.method,
+ requestBody: response.requestOptions.data.toString(),
+ requestHeaders: response.requestOptions.headers,
+ requestContentType: response.requestOptions.contentType,
+ requestBodySize: requestBodySize,
+ status: response.statusCode,
+ responseBody: response.data.toString(),
+ responseHeaders: responseHeaders,
+ responseContentType: responseContentType,
+ responseBodySize: responseBodySize,
+ );
+ }
+}
diff --git a/packages/instabug_dio_interceptor/pubspec.yaml b/packages/instabug_dio_interceptor/pubspec.yaml
new file mode 100644
index 000000000..7f3672d0c
--- /dev/null
+++ b/packages/instabug_dio_interceptor/pubspec.yaml
@@ -0,0 +1,57 @@
+name: instabug_dio_interceptor
+description:
+ This package is an add on to instabug_flutter. It intercepts any requests performed
+ with Dio Package and sends them to the report that will be sent to the dashboard.
+version: 2.2.0
+homepage: https://github.com/Instabug/Instabug-Flutter#readme
+
+environment:
+ sdk: '>=2.12.0 <4.0.0'
+
+dependencies:
+ dio: '>=4.0.0 <6.0.0'
+ flutter:
+ sdk: flutter
+ instabug_flutter: '>=11.0.0 <13.0.0'
+dev_dependencies:
+ build_runner: ^2.0.3
+ flutter_test:
+ sdk: flutter
+ mockito: ^5.0.10
+
+# For information on the generic Dart part of this file, see the
+# following page: https://dart.dev/tools/pub/pubspec
+
+# The following section is specific to Flutter.
+flutter:
+
+ # To add assets to your package, add an assets section, like this:
+ # assets:
+ # - images/a_dot_burr.jpeg
+ # - images/a_dot_ham.jpeg
+ #
+ # For details regarding assets in packages, see
+ # https://flutter.dev/assets-and-images/#from-packages
+ #
+ # An image asset can refer to one or more resolution-specific "variants", see
+ # https://flutter.dev/assets-and-images/#resolution-aware.
+
+ # To add custom fonts to your package, add a fonts section here,
+ # in this "flutter" section. Each entry in this list should have a
+ # "family" key with the font family name, and a "fonts" key with a
+ # list giving the asset and other descriptors for the font. For
+ # example:
+ # fonts:
+ # - family: Schyler
+ # fonts:
+ # - asset: fonts/Schyler-Regular.ttf
+ # - asset: fonts/Schyler-Italic.ttf
+ # style: italic
+ # - family: Trajan Pro
+ # fonts:
+ # - asset: fonts/TrajanPro.ttf
+ # - asset: fonts/TrajanPro_Bold.ttf
+ # weight: 700
+ #
+ # For details regarding fonts in packages, see
+ # https://flutter.dev/custom-fonts/#from-packages
diff --git a/packages/instabug_dio_interceptor/release.sh b/packages/instabug_dio_interceptor/release.sh
new file mode 100755
index 000000000..6a01b00d8
--- /dev/null
+++ b/packages/instabug_dio_interceptor/release.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+VERSION=$(egrep -o "version: ([0-9]-*.*)+[0-9]" pubspec.yaml | cut -d ":" -f 2)
+if [ ! "${VERSION}" ] || [ -z "${VERSION}" ];then
+ echo "Instabug: err: Version Number not found."
+ exit 1
+else
+ mkdir -p .pub-cache
+ cat < $HOME/.pub-cache/credentials.json
+ {
+ "accessToken":"${ACCESS_TOKEN}",
+ "refreshToken":"${REFRESH_TOKEN}",
+ "tokenEndpoint":"https://accounts.google.com/o/oauth2/token",
+ "scopes":["https://www.googleapis.com/auth/userinfo.email","openid"],
+ "expiration":${EXPIRATION}
+ }
+EOF
+ flutter packages pub publish -f
+fi
+
diff --git a/packages/instabug_dio_interceptor/test/instabug_dio_interceptor_test.dart b/packages/instabug_dio_interceptor/test/instabug_dio_interceptor_test.dart
new file mode 100644
index 000000000..ee3dd404b
--- /dev/null
+++ b/packages/instabug_dio_interceptor/test/instabug_dio_interceptor_test.dart
@@ -0,0 +1,103 @@
+import 'package:dio/dio.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_test/flutter_test.dart';
+import 'package:instabug_dio_interceptor/instabug_dio_interceptor.dart';
+import 'package:instabug_flutter/instabug_flutter.dart';
+import 'package:instabug_flutter/src/generated/instabug.api.g.dart';
+import 'package:mockito/annotations.dart';
+
+import 'instabug_dio_interceptor_test.mocks.dart';
+import 'mock_adapter.dart';
+
+class MyInterceptor extends InstabugDioInterceptor {
+ int requestCount = 0;
+ int resposneCount = 0;
+ int errorCount = 0;
+
+ @override
+ void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
+ requestCount++;
+ super.onRequest(options, handler);
+ }
+
+ @override
+ void onResponse(
+ Response response, ResponseInterceptorHandler handler) {
+ resposneCount++;
+ super.onResponse(response, handler);
+ }
+
+ @override
+ // ignore: deprecated_member_use
+ void onError(DioError err, ErrorInterceptorHandler handler) {
+ errorCount++;
+ super.onError(err, handler);
+ }
+}
+
+@GenerateMocks([
+ InstabugHostApi,
+])
+void main() {
+ TestWidgetsFlutterBinding.ensureInitialized();
+ WidgetsFlutterBinding.ensureInitialized();
+
+ final MockInstabugHostApi mHost = MockInstabugHostApi();
+
+ late Dio dio;
+ late MyInterceptor instabugDioInterceptor;
+ const String appToken = '068ba9a8c3615035e163dc5f829c73be';
+
+ setUpAll(() {
+ Instabug.$setHostApi(mHost);
+ NetworkLogger.$setHostApi(mHost);
+ });
+
+ setUp(() {
+ dio = Dio();
+ dio.options.baseUrl = MockAdapter.mockBase;
+ dio.httpClientAdapter = MockAdapter();
+ final List events = [];
+ instabugDioInterceptor = MyInterceptor();
+ dio.interceptors.add(instabugDioInterceptor);
+ Instabug.init(token: appToken, invocationEvents: events);
+ });
+
+ test('onResponse Test', () async {
+ try {
+ await dio.get('/test');
+ // ignore: deprecated_member_use
+ } on DioError {
+ // ignor
+ }
+
+ expect(instabugDioInterceptor.requestCount, 1);
+ expect(instabugDioInterceptor.resposneCount, 1);
+ expect(instabugDioInterceptor.errorCount, 0);
+ });
+
+ test('onError Test', () async {
+ try {
+ await dio.get('/test-error');
+ // ignore: deprecated_member_use
+ } on DioError {
+ // ignor
+ }
+
+ expect(instabugDioInterceptor.requestCount, 1);
+ expect(instabugDioInterceptor.resposneCount, 0);
+ expect(instabugDioInterceptor.errorCount, 1);
+ });
+
+ test('Stress Test', () async {
+ for (int i = 0; i < 1000; i++) {
+ try {
+ await dio.get('/test');
+ // ignore: deprecated_member_use
+ } on DioError {
+ // ignor
+ }
+ }
+ expect(instabugDioInterceptor.requestCount, 1000);
+ });
+}
diff --git a/packages/instabug_dio_interceptor/test/mock_adapter.dart b/packages/instabug_dio_interceptor/test/mock_adapter.dart
new file mode 100644
index 000000000..a00e8c560
--- /dev/null
+++ b/packages/instabug_dio_interceptor/test/mock_adapter.dart
@@ -0,0 +1,40 @@
+import 'dart:async';
+import 'dart:convert';
+import 'dart:typed_data';
+
+import 'package:dio/dio.dart';
+import 'package:dio/io.dart';
+
+class MockAdapter implements HttpClientAdapter {
+ static const String mockHost = 'mockserver';
+ static const String mockBase = 'http://$mockHost';
+ final IOHttpClientAdapter _adapter = IOHttpClientAdapter();
+
+ @override
+ Future fetch(RequestOptions options,
+ Stream? requestStream, Future? cancelFuture) async {
+ final Uri uri = options.uri;
+
+ if (uri.host == mockHost) {
+ switch (uri.path) {
+ case '/test':
+ return ResponseBody.fromString(
+ jsonEncode({
+ 'errCode': 0,
+ 'data': {'path': uri.path}
+ }),
+ 200,
+ );
+
+ default:
+ return ResponseBody.fromString('', 404);
+ }
+ }
+ return _adapter.fetch(options, requestStream, cancelFuture);
+ }
+
+ @override
+ void close({bool force = false}) {
+ _adapter.close(force: force);
+ }
+}
diff --git a/packages/instabug_flutter/.gitignore b/packages/instabug_flutter/.gitignore
new file mode 100644
index 000000000..071964ca9
--- /dev/null
+++ b/packages/instabug_flutter/.gitignore
@@ -0,0 +1,86 @@
+# Generated files
+*.mocks.dart
+*.g.dart
+android/**/generated/
+ios/**/Generated/
+
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# The .vscode folder contains launch configuration and tasks you configure in
+# VS Code which you may wish to be included in version control, so this line
+# is commented out by default.
+#.vscode/
+
+# Flutter/Dart/Pub related
+**/doc/api/
+.dart_tool/
+.flutter-plugins
+.flutter-plugins-dependencies
+.packages
+.pub-cache/
+.pub/
+/pubspec.lock
+build/
+coverage/
+
+# Node related
+node_modules
+
+# Android related
+**/android/**/gradle-wrapper.jar
+**/android/.gradle
+**/android/captures/
+android/gradlew
+android/gradlew.bat
+**/android/local.properties
+**/android/**/GeneratedPluginRegistrant.java
+
+# iOS/XCode related
+**/ios/**/*.mode1v3
+**/ios/**/*.mode2v3
+**/ios/**/*.moved-aside
+**/ios/**/*.pbxuser
+**/ios/**/*.perspectivev3
+**/ios/**/*sync/
+**/ios/**/.sconsign.dblite
+**/ios/**/.tags*
+**/ios/**/.vagrant/
+**/ios/**/DerivedData/
+**/ios/**/Icon?
+**/ios/**/Pods/
+**/ios/**/.symlinks/
+**/ios/**/profile
+**/ios/**/xcuserdata
+**/ios/.generated/
+**/ios/Flutter/App.framework
+**/ios/Flutter/Flutter.framework
+**/ios/Flutter/Flutter.podspec
+**/ios/Flutter/Generated.xcconfig
+**/ios/Flutter/app.flx
+**/ios/Flutter/app.zip
+**/ios/Flutter/flutter_assets/
+**/ios/Flutter/flutter_export_environment.sh
+**/ios/ServiceDefinitions.json
+**/ios/Runner/GeneratedPluginRegistrant.*
+
+# Exceptions to above rules.
+!**/ios/**/default.mode1v3
+!**/ios/**/default.mode2v3
+!**/ios/**/default.pbxuser
+!**/ios/**/default.perspectivev3
+!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
diff --git a/.metadata b/packages/instabug_flutter/.metadata
similarity index 100%
rename from .metadata
rename to packages/instabug_flutter/.metadata
diff --git a/.pubignore b/packages/instabug_flutter/.pubignore
similarity index 100%
rename from .pubignore
rename to packages/instabug_flutter/.pubignore
diff --git a/CHANGELOG.md b/packages/instabug_flutter/CHANGELOG.md
similarity index 100%
rename from CHANGELOG.md
rename to packages/instabug_flutter/CHANGELOG.md
diff --git a/Gemfile b/packages/instabug_flutter/Gemfile
similarity index 100%
rename from Gemfile
rename to packages/instabug_flutter/Gemfile
diff --git a/Gemfile.lock b/packages/instabug_flutter/Gemfile.lock
similarity index 100%
rename from Gemfile.lock
rename to packages/instabug_flutter/Gemfile.lock
diff --git a/packages/instabug_flutter/LICENSE b/packages/instabug_flutter/LICENSE
new file mode 100644
index 000000000..80d729766
--- /dev/null
+++ b/packages/instabug_flutter/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) Instabug
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/README.md b/packages/instabug_flutter/README.md
similarity index 100%
rename from README.md
rename to packages/instabug_flutter/README.md
diff --git a/analysis_options.yaml b/packages/instabug_flutter/analysis_options.yaml
similarity index 100%
rename from analysis_options.yaml
rename to packages/instabug_flutter/analysis_options.yaml
diff --git a/android/.gitignore b/packages/instabug_flutter/android/.gitignore
similarity index 100%
rename from android/.gitignore
rename to packages/instabug_flutter/android/.gitignore
diff --git a/android/build.gradle b/packages/instabug_flutter/android/build.gradle
similarity index 100%
rename from android/build.gradle
rename to packages/instabug_flutter/android/build.gradle
diff --git a/android/gradle.properties b/packages/instabug_flutter/android/gradle.properties
similarity index 100%
rename from android/gradle.properties
rename to packages/instabug_flutter/android/gradle.properties
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/packages/instabug_flutter/android/gradle/wrapper/gradle-wrapper.properties
similarity index 100%
rename from android/gradle/wrapper/gradle-wrapper.properties
rename to packages/instabug_flutter/android/gradle/wrapper/gradle-wrapper.properties
diff --git a/android/proguard-rules.txt b/packages/instabug_flutter/android/proguard-rules.txt
similarity index 100%
rename from android/proguard-rules.txt
rename to packages/instabug_flutter/android/proguard-rules.txt
diff --git a/android/settings.gradle b/packages/instabug_flutter/android/settings.gradle
similarity index 100%
rename from android/settings.gradle
rename to packages/instabug_flutter/android/settings.gradle
diff --git a/android/src/main/AndroidManifest.xml b/packages/instabug_flutter/android/src/main/AndroidManifest.xml
similarity index 100%
rename from android/src/main/AndroidManifest.xml
rename to packages/instabug_flutter/android/src/main/AndroidManifest.xml
diff --git a/android/src/main/java/com/instabug/flutter/InstabugFlutterPlugin.java b/packages/instabug_flutter/android/src/main/java/com/instabug/flutter/InstabugFlutterPlugin.java
similarity index 100%
rename from android/src/main/java/com/instabug/flutter/InstabugFlutterPlugin.java
rename to packages/instabug_flutter/android/src/main/java/com/instabug/flutter/InstabugFlutterPlugin.java
diff --git a/android/src/main/java/com/instabug/flutter/modules/ApmApi.java b/packages/instabug_flutter/android/src/main/java/com/instabug/flutter/modules/ApmApi.java
similarity index 100%
rename from android/src/main/java/com/instabug/flutter/modules/ApmApi.java
rename to packages/instabug_flutter/android/src/main/java/com/instabug/flutter/modules/ApmApi.java
diff --git a/android/src/main/java/com/instabug/flutter/modules/BugReportingApi.java b/packages/instabug_flutter/android/src/main/java/com/instabug/flutter/modules/BugReportingApi.java
similarity index 100%
rename from android/src/main/java/com/instabug/flutter/modules/BugReportingApi.java
rename to packages/instabug_flutter/android/src/main/java/com/instabug/flutter/modules/BugReportingApi.java
diff --git a/android/src/main/java/com/instabug/flutter/modules/CrashReportingApi.java b/packages/instabug_flutter/android/src/main/java/com/instabug/flutter/modules/CrashReportingApi.java
similarity index 100%
rename from android/src/main/java/com/instabug/flutter/modules/CrashReportingApi.java
rename to packages/instabug_flutter/android/src/main/java/com/instabug/flutter/modules/CrashReportingApi.java
diff --git a/android/src/main/java/com/instabug/flutter/modules/FeatureRequestsApi.java b/packages/instabug_flutter/android/src/main/java/com/instabug/flutter/modules/FeatureRequestsApi.java
similarity index 100%
rename from android/src/main/java/com/instabug/flutter/modules/FeatureRequestsApi.java
rename to packages/instabug_flutter/android/src/main/java/com/instabug/flutter/modules/FeatureRequestsApi.java
diff --git a/android/src/main/java/com/instabug/flutter/modules/InstabugApi.java b/packages/instabug_flutter/android/src/main/java/com/instabug/flutter/modules/InstabugApi.java
similarity index 100%
rename from android/src/main/java/com/instabug/flutter/modules/InstabugApi.java
rename to packages/instabug_flutter/android/src/main/java/com/instabug/flutter/modules/InstabugApi.java
diff --git a/android/src/main/java/com/instabug/flutter/modules/InstabugLogApi.java b/packages/instabug_flutter/android/src/main/java/com/instabug/flutter/modules/InstabugLogApi.java
similarity index 100%
rename from android/src/main/java/com/instabug/flutter/modules/InstabugLogApi.java
rename to packages/instabug_flutter/android/src/main/java/com/instabug/flutter/modules/InstabugLogApi.java
diff --git a/android/src/main/java/com/instabug/flutter/modules/RepliesApi.java b/packages/instabug_flutter/android/src/main/java/com/instabug/flutter/modules/RepliesApi.java
similarity index 100%
rename from android/src/main/java/com/instabug/flutter/modules/RepliesApi.java
rename to packages/instabug_flutter/android/src/main/java/com/instabug/flutter/modules/RepliesApi.java
diff --git a/android/src/main/java/com/instabug/flutter/modules/SessionReplayApi.java b/packages/instabug_flutter/android/src/main/java/com/instabug/flutter/modules/SessionReplayApi.java
similarity index 100%
rename from android/src/main/java/com/instabug/flutter/modules/SessionReplayApi.java
rename to packages/instabug_flutter/android/src/main/java/com/instabug/flutter/modules/SessionReplayApi.java
diff --git a/android/src/main/java/com/instabug/flutter/modules/SurveysApi.java b/packages/instabug_flutter/android/src/main/java/com/instabug/flutter/modules/SurveysApi.java
similarity index 100%
rename from android/src/main/java/com/instabug/flutter/modules/SurveysApi.java
rename to packages/instabug_flutter/android/src/main/java/com/instabug/flutter/modules/SurveysApi.java
diff --git a/android/src/main/java/com/instabug/flutter/util/ArgsRegistry.java b/packages/instabug_flutter/android/src/main/java/com/instabug/flutter/util/ArgsRegistry.java
similarity index 100%
rename from android/src/main/java/com/instabug/flutter/util/ArgsRegistry.java
rename to packages/instabug_flutter/android/src/main/java/com/instabug/flutter/util/ArgsRegistry.java
diff --git a/android/src/main/java/com/instabug/flutter/util/Reflection.java b/packages/instabug_flutter/android/src/main/java/com/instabug/flutter/util/Reflection.java
similarity index 100%
rename from android/src/main/java/com/instabug/flutter/util/Reflection.java
rename to packages/instabug_flutter/android/src/main/java/com/instabug/flutter/util/Reflection.java
diff --git a/android/src/main/java/com/instabug/flutter/util/ThreadManager.java b/packages/instabug_flutter/android/src/main/java/com/instabug/flutter/util/ThreadManager.java
similarity index 100%
rename from android/src/main/java/com/instabug/flutter/util/ThreadManager.java
rename to packages/instabug_flutter/android/src/main/java/com/instabug/flutter/util/ThreadManager.java
diff --git a/android/src/test/java/com/instabug/flutter/ApmApiTest.java b/packages/instabug_flutter/android/src/test/java/com/instabug/flutter/ApmApiTest.java
similarity index 100%
rename from android/src/test/java/com/instabug/flutter/ApmApiTest.java
rename to packages/instabug_flutter/android/src/test/java/com/instabug/flutter/ApmApiTest.java
diff --git a/android/src/test/java/com/instabug/flutter/ArgsRegistryTest.java b/packages/instabug_flutter/android/src/test/java/com/instabug/flutter/ArgsRegistryTest.java
similarity index 100%
rename from android/src/test/java/com/instabug/flutter/ArgsRegistryTest.java
rename to packages/instabug_flutter/android/src/test/java/com/instabug/flutter/ArgsRegistryTest.java
diff --git a/android/src/test/java/com/instabug/flutter/BugReportingApiTest.java b/packages/instabug_flutter/android/src/test/java/com/instabug/flutter/BugReportingApiTest.java
similarity index 100%
rename from android/src/test/java/com/instabug/flutter/BugReportingApiTest.java
rename to packages/instabug_flutter/android/src/test/java/com/instabug/flutter/BugReportingApiTest.java
diff --git a/android/src/test/java/com/instabug/flutter/CrashReportingApiTest.java b/packages/instabug_flutter/android/src/test/java/com/instabug/flutter/CrashReportingApiTest.java
similarity index 100%
rename from android/src/test/java/com/instabug/flutter/CrashReportingApiTest.java
rename to packages/instabug_flutter/android/src/test/java/com/instabug/flutter/CrashReportingApiTest.java
diff --git a/android/src/test/java/com/instabug/flutter/FeatureRequestsApiTest.java b/packages/instabug_flutter/android/src/test/java/com/instabug/flutter/FeatureRequestsApiTest.java
similarity index 100%
rename from android/src/test/java/com/instabug/flutter/FeatureRequestsApiTest.java
rename to packages/instabug_flutter/android/src/test/java/com/instabug/flutter/FeatureRequestsApiTest.java
diff --git a/android/src/test/java/com/instabug/flutter/InstabugApiTest.java b/packages/instabug_flutter/android/src/test/java/com/instabug/flutter/InstabugApiTest.java
similarity index 100%
rename from android/src/test/java/com/instabug/flutter/InstabugApiTest.java
rename to packages/instabug_flutter/android/src/test/java/com/instabug/flutter/InstabugApiTest.java
diff --git a/android/src/test/java/com/instabug/flutter/InstabugLogApiTest.java b/packages/instabug_flutter/android/src/test/java/com/instabug/flutter/InstabugLogApiTest.java
similarity index 100%
rename from android/src/test/java/com/instabug/flutter/InstabugLogApiTest.java
rename to packages/instabug_flutter/android/src/test/java/com/instabug/flutter/InstabugLogApiTest.java
diff --git a/android/src/test/java/com/instabug/flutter/RepliesApiTest.java b/packages/instabug_flutter/android/src/test/java/com/instabug/flutter/RepliesApiTest.java
similarity index 100%
rename from android/src/test/java/com/instabug/flutter/RepliesApiTest.java
rename to packages/instabug_flutter/android/src/test/java/com/instabug/flutter/RepliesApiTest.java
diff --git a/android/src/test/java/com/instabug/flutter/SessionReplayApiTest.java b/packages/instabug_flutter/android/src/test/java/com/instabug/flutter/SessionReplayApiTest.java
similarity index 100%
rename from android/src/test/java/com/instabug/flutter/SessionReplayApiTest.java
rename to packages/instabug_flutter/android/src/test/java/com/instabug/flutter/SessionReplayApiTest.java
diff --git a/android/src/test/java/com/instabug/flutter/SurveysApiTest.java b/packages/instabug_flutter/android/src/test/java/com/instabug/flutter/SurveysApiTest.java
similarity index 100%
rename from android/src/test/java/com/instabug/flutter/SurveysApiTest.java
rename to packages/instabug_flutter/android/src/test/java/com/instabug/flutter/SurveysApiTest.java
diff --git a/android/src/test/java/com/instabug/flutter/util/Callback.java b/packages/instabug_flutter/android/src/test/java/com/instabug/flutter/util/Callback.java
similarity index 100%
rename from android/src/test/java/com/instabug/flutter/util/Callback.java
rename to packages/instabug_flutter/android/src/test/java/com/instabug/flutter/util/Callback.java
diff --git a/android/src/test/java/com/instabug/flutter/util/GlobalMocks.java b/packages/instabug_flutter/android/src/test/java/com/instabug/flutter/util/GlobalMocks.java
similarity index 100%
rename from android/src/test/java/com/instabug/flutter/util/GlobalMocks.java
rename to packages/instabug_flutter/android/src/test/java/com/instabug/flutter/util/GlobalMocks.java
diff --git a/android/src/test/java/com/instabug/flutter/util/MockReflected.java b/packages/instabug_flutter/android/src/test/java/com/instabug/flutter/util/MockReflected.java
similarity index 100%
rename from android/src/test/java/com/instabug/flutter/util/MockReflected.java
rename to packages/instabug_flutter/android/src/test/java/com/instabug/flutter/util/MockReflected.java
diff --git a/android/src/test/java/com/instabug/flutter/util/MockResult.java b/packages/instabug_flutter/android/src/test/java/com/instabug/flutter/util/MockResult.java
similarity index 100%
rename from android/src/test/java/com/instabug/flutter/util/MockResult.java
rename to packages/instabug_flutter/android/src/test/java/com/instabug/flutter/util/MockResult.java
diff --git a/android/upload_symbols.gradle b/packages/instabug_flutter/android/upload_symbols.gradle
similarity index 100%
rename from android/upload_symbols.gradle
rename to packages/instabug_flutter/android/upload_symbols.gradle
diff --git a/dangerfile.ts b/packages/instabug_flutter/dangerfile.ts
similarity index 100%
rename from dangerfile.ts
rename to packages/instabug_flutter/dangerfile.ts
diff --git a/e2e/.gitignore b/packages/instabug_flutter/e2e/.gitignore
similarity index 94%
rename from e2e/.gitignore
rename to packages/instabug_flutter/e2e/.gitignore
index a72f3ddc5..2afa2e272 100644
--- a/e2e/.gitignore
+++ b/packages/instabug_flutter/e2e/.gitignore
@@ -1,454 +1,454 @@
-## Ignore Visual Studio temporary files, build results, and
-## files generated by popular Visual Studio add-ons.
-##
-## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
-
-# User-specific files
-*.rsuser
-*.suo
-*.user
-*.userosscache
-*.sln.docstates
-
-# User-specific files (MonoDevelop/Xamarin Studio)
-*.userprefs
-
-# Mono auto generated files
-mono_crash.*
-
-# Build results
-[Dd]ebug/
-[Dd]ebugPublic/
-[Rr]elease/
-[Rr]eleases/
-x64/
-x86/
-[Ww][Ii][Nn]32/
-[Aa][Rr][Mm]/
-[Aa][Rr][Mm]64/
-bld/
-[Bb]in/
-[Oo]bj/
-[Ll]og/
-[Ll]ogs/
-
-# Visual Studio 2015/2017 cache/options directory
-.vs/
-# Uncomment if you have tasks that create the project's static files in wwwroot
-#wwwroot/
-
-# Visual Studio 2017 auto generated files
-Generated\ Files/
-
-# MSTest test Results
-[Tt]est[Rr]esult*/
-[Bb]uild[Ll]og.*
-
-# NUnit
-*.VisualState.xml
-TestResult.xml
-nunit-*.xml
-
-# Build Results of an ATL Project
-[Dd]ebugPS/
-[Rr]eleasePS/
-dlldata.c
-
-# Benchmark Results
-BenchmarkDotNet.Artifacts/
-
-# .NET
-project.lock.json
-project.fragment.lock.json
-artifacts/
-
-# Tye
-.tye/
-
-# ASP.NET Scaffolding
-ScaffoldingReadMe.txt
-
-# StyleCop
-StyleCopReport.xml
-
-# Files built by Visual Studio
-*_i.c
-*_p.c
-*_h.h
-*.ilk
-*.meta
-*.obj
-*.iobj
-*.pch
-*.pdb
-*.ipdb
-*.pgc
-*.pgd
-*.rsp
-*.sbr
-*.tlb
-*.tli
-*.tlh
-*.tmp
-*.tmp_proj
-*_wpftmp.csproj
-*.log
-*.vspscc
-*.vssscc
-.builds
-*.pidb
-*.svclog
-*.scc
-
-# Chutzpah Test files
-_Chutzpah*
-
-# Visual C++ cache files
-ipch/
-*.aps
-*.ncb
-*.opendb
-*.opensdf
-*.sdf
-*.cachefile
-*.VC.db
-*.VC.VC.opendb
-
-# Visual Studio profiler
-*.psess
-*.vsp
-*.vspx
-*.sap
-
-# Visual Studio Trace Files
-*.e2e
-
-# TFS 2012 Local Workspace
-$tf/
-
-# Guidance Automation Toolkit
-*.gpState
-
-# ReSharper is a .NET coding add-in
-_ReSharper*/
-*.[Rr]e[Ss]harper
-*.DotSettings.user
-
-# TeamCity is a build add-in
-_TeamCity*
-
-# DotCover is a Code Coverage Tool
-*.dotCover
-
-# AxoCover is a Code Coverage Tool
-.axoCover/*
-!.axoCover/settings.json
-
-# Coverlet is a free, cross platform Code Coverage Tool
-coverage*.json
-coverage*.xml
-coverage*.info
-
-# Visual Studio code coverage results
-*.coverage
-*.coveragexml
-
-# NCrunch
-_NCrunch_*
-.*crunch*.local.xml
-nCrunchTemp_*
-
-# MightyMoose
-*.mm.*
-AutoTest.Net/
-
-# Web workbench (sass)
-.sass-cache/
-
-# Installshield output folder
-[Ee]xpress/
-
-# DocProject is a documentation generator add-in
-DocProject/buildhelp/
-DocProject/Help/*.HxT
-DocProject/Help/*.HxC
-DocProject/Help/*.hhc
-DocProject/Help/*.hhk
-DocProject/Help/*.hhp
-DocProject/Help/Html2
-DocProject/Help/html
-
-# Click-Once directory
-publish/
-
-# Publish Web Output
-*.[Pp]ublish.xml
-*.azurePubxml
-# Note: Comment the next line if you want to checkin your web deploy settings,
-# but database connection strings (with potential passwords) will be unencrypted
-*.pubxml
-*.publishproj
-
-# Microsoft Azure Web App publish settings. Comment the next line if you want to
-# checkin your Azure Web App publish settings, but sensitive information contained
-# in these scripts will be unencrypted
-PublishScripts/
-
-# NuGet Packages
-*.nupkg
-# NuGet Symbol Packages
-*.snupkg
-# The packages folder can be ignored because of Package Restore
-**/[Pp]ackages/*
-# except build/, which is used as an MSBuild target.
-!**/[Pp]ackages/build/
-# Uncomment if necessary however generally it will be regenerated when needed
-#!**/[Pp]ackages/repositories.config
-# NuGet v3's project.json files produces more ignorable files
-*.nuget.props
-*.nuget.targets
-
-# Microsoft Azure Build Output
-csx/
-*.build.csdef
-
-# Microsoft Azure Emulator
-ecf/
-rcf/
-
-# Windows Store app package directories and files
-AppPackages/
-BundleArtifacts/
-Package.StoreAssociation.xml
-_pkginfo.txt
-*.appx
-*.appxbundle
-*.appxupload
-
-# Visual Studio cache files
-# files ending in .cache can be ignored
-*.[Cc]ache
-# but keep track of directories ending in .cache
-!?*.[Cc]ache/
-
-# Others
-ClientBin/
-~$*
-*~
-*.dbmdl
-*.dbproj.schemaview
-*.jfm
-*.pfx
-*.publishsettings
-orleans.codegen.cs
-
-# Including strong name files can present a security risk
-# (https://github.com/github/gitignore/pull/2483#issue-259490424)
-#*.snk
-
-# Since there are multiple workflows, uncomment next line to ignore bower_components
-# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
-#bower_components/
-
-# RIA/Silverlight projects
-Generated_Code/
-
-# Backup & report files from converting an old project file
-# to a newer Visual Studio version. Backup files are not needed,
-# because we have git ;-)
-_UpgradeReport_Files/
-Backup*/
-UpgradeLog*.XML
-UpgradeLog*.htm
-ServiceFabricBackup/
-*.rptproj.bak
-
-# SQL Server files
-*.mdf
-*.ldf
-*.ndf
-
-# Business Intelligence projects
-*.rdl.data
-*.bim.layout
-*.bim_*.settings
-*.rptproj.rsuser
-*- [Bb]ackup.rdl
-*- [Bb]ackup ([0-9]).rdl
-*- [Bb]ackup ([0-9][0-9]).rdl
-
-# Microsoft Fakes
-FakesAssemblies/
-
-# GhostDoc plugin setting file
-*.GhostDoc.xml
-
-# Node.js Tools for Visual Studio
-.ntvs_analysis.dat
-node_modules/
-
-# Visual Studio 6 build log
-*.plg
-
-# Visual Studio 6 workspace options file
-*.opt
-
-# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
-*.vbw
-
-# Visual Studio LightSwitch build output
-**/*.HTMLClient/GeneratedArtifacts
-**/*.DesktopClient/GeneratedArtifacts
-**/*.DesktopClient/ModelManifest.xml
-**/*.Server/GeneratedArtifacts
-**/*.Server/ModelManifest.xml
-_Pvt_Extensions
-
-# Paket dependency manager
-.paket/paket.exe
-paket-files/
-
-# FAKE - F# Make
-.fake/
-
-# CodeRush personal settings
-.cr/personal
-
-# Python Tools for Visual Studio (PTVS)
-__pycache__/
-*.pyc
-
-# Cake - Uncomment if you are using it
-# tools/**
-# !tools/packages.config
-
-# Tabs Studio
-*.tss
-
-# Telerik's JustMock configuration file
-*.jmconfig
-
-# BizTalk build output
-*.btp.cs
-*.btm.cs
-*.odx.cs
-*.xsd.cs
-
-# OpenCover UI analysis results
-OpenCover/
-
-# Azure Stream Analytics local run output
-ASALocalRun/
-
-# MSBuild Binary and Structured Log
-*.binlog
-
-# NVidia Nsight GPU debugger configuration file
-*.nvuser
-
-# MFractors (Xamarin productivity tool) working folder
-.mfractor/
-
-# Local History for Visual Studio
-.localhistory/
-
-# BeatPulse healthcheck temp database
-healthchecksdb
-
-# Backup folder for Package Reference Convert tool in Visual Studio 2017
-MigrationBackup/
-
-# Ionide (cross platform F# VS Code tools) working folder
-.ionide/
-
-# Fody - auto-generated XML schema
-FodyWeavers.xsd
-
-##
-## Visual studio for Mac
-##
-
-
-# globs
-Makefile.in
-*.userprefs
-*.usertasks
-config.make
-config.status
-aclocal.m4
-install-sh
-autom4te.cache/
-*.tar.gz
-tarballs/
-test-results/
-
-# Mac bundle stuff
-*.dmg
-*.app
-
-# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore
-# General
-.DS_Store
-.AppleDouble
-.LSOverride
-
-# Icon must end with two \r
-Icon
-
-
-# Thumbnails
-._*
-
-# Files that might appear in the root of a volume
-.DocumentRevisions-V100
-.fseventsd
-.Spotlight-V100
-.TemporaryItems
-.Trashes
-.VolumeIcon.icns
-.com.apple.timemachine.donotpresent
-
-# Directories potentially created on remote AFP share
-.AppleDB
-.AppleDesktop
-Network Trash Folder
-Temporary Items
-.apdisk
-
-# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore
-# Windows thumbnail cache files
-Thumbs.db
-ehthumbs.db
-ehthumbs_vista.db
-
-# Dump file
-*.stackdump
-
-# Folder config file
-[Dd]esktop.ini
-
-# Recycle Bin used on file shares
-$RECYCLE.BIN/
-
-# Windows Installer files
-*.cab
-*.msi
-*.msix
-*.msm
-*.msp
-
-# Windows shortcuts
-*.lnk
-
-# JetBrains Rider
-.idea/
-*.sln.iml
-
-##
-## Visual Studio Code
-##
-.vscode/*
-!.vscode/settings.json
-!.vscode/tasks.json
-!.vscode/launch.json
-!.vscode/extensions.json
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+##
+## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
+
+# User-specific files
+*.rsuser
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Mono auto generated files
+mono_crash.*
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+[Ww][Ii][Nn]32/
+[Aa][Rr][Mm]/
+[Aa][Rr][Mm]64/
+bld/
+[Bb]in/
+[Oo]bj/
+[Ll]og/
+[Ll]ogs/
+
+# Visual Studio 2015/2017 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
+
+# Visual Studio 2017 auto generated files
+Generated\ Files/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUnit
+*.VisualState.xml
+TestResult.xml
+nunit-*.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# Benchmark Results
+BenchmarkDotNet.Artifacts/
+
+# .NET
+project.lock.json
+project.fragment.lock.json
+artifacts/
+
+# Tye
+.tye/
+
+# ASP.NET Scaffolding
+ScaffoldingReadMe.txt
+
+# StyleCop
+StyleCopReport.xml
+
+# Files built by Visual Studio
+*_i.c
+*_p.c
+*_h.h
+*.ilk
+*.meta
+*.obj
+*.iobj
+*.pch
+*.pdb
+*.ipdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*_wpftmp.csproj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+*.sap
+
+# Visual Studio Trace Files
+*.e2e
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# AxoCover is a Code Coverage Tool
+.axoCover/*
+!.axoCover/settings.json
+
+# Coverlet is a free, cross platform Code Coverage Tool
+coverage*.json
+coverage*.xml
+coverage*.info
+
+# Visual Studio code coverage results
+*.coverage
+*.coveragexml
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# Note: Comment the next line if you want to checkin your web deploy settings,
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
+
+# NuGet Packages
+*.nupkg
+# NuGet Symbol Packages
+*.snupkg
+# The packages folder can be ignored because of Package Restore
+**/[Pp]ackages/*
+# except build/, which is used as an MSBuild target.
+!**/[Pp]ackages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/[Pp]ackages/repositories.config
+# NuGet v3's project.json files produces more ignorable files
+*.nuget.props
+*.nuget.targets
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
+AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+*.appx
+*.appxbundle
+*.appxupload
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!?*.[Cc]ache/
+
+# Others
+ClientBin/
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.jfm
+*.pfx
+*.publishsettings
+orleans.codegen.cs
+
+# Including strong name files can present a security risk
+# (https://github.com/github/gitignore/pull/2483#issue-259490424)
+#*.snk
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+ServiceFabricBackup/
+*.rptproj.bak
+
+# SQL Server files
+*.mdf
+*.ldf
+*.ndf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+*.rptproj.rsuser
+*- [Bb]ackup.rdl
+*- [Bb]ackup ([0-9]).rdl
+*- [Bb]ackup ([0-9][0-9]).rdl
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+node_modules/
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
+*.vbw
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
+# FAKE - F# Make
+.fake/
+
+# CodeRush personal settings
+.cr/personal
+
+# Python Tools for Visual Studio (PTVS)
+__pycache__/
+*.pyc
+
+# Cake - Uncomment if you are using it
+# tools/**
+# !tools/packages.config
+
+# Tabs Studio
+*.tss
+
+# Telerik's JustMock configuration file
+*.jmconfig
+
+# BizTalk build output
+*.btp.cs
+*.btm.cs
+*.odx.cs
+*.xsd.cs
+
+# OpenCover UI analysis results
+OpenCover/
+
+# Azure Stream Analytics local run output
+ASALocalRun/
+
+# MSBuild Binary and Structured Log
+*.binlog
+
+# NVidia Nsight GPU debugger configuration file
+*.nvuser
+
+# MFractors (Xamarin productivity tool) working folder
+.mfractor/
+
+# Local History for Visual Studio
+.localhistory/
+
+# BeatPulse healthcheck temp database
+healthchecksdb
+
+# Backup folder for Package Reference Convert tool in Visual Studio 2017
+MigrationBackup/
+
+# Ionide (cross platform F# VS Code tools) working folder
+.ionide/
+
+# Fody - auto-generated XML schema
+FodyWeavers.xsd
+
+##
+## Visual studio for Mac
+##
+
+
+# globs
+Makefile.in
+*.userprefs
+*.usertasks
+config.make
+config.status
+aclocal.m4
+install-sh
+autom4te.cache/
+*.tar.gz
+tarballs/
+test-results/
+
+# Mac bundle stuff
+*.dmg
+*.app
+
+# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore
+# General
+.DS_Store
+.AppleDouble
+.LSOverride
+
+# Icon must end with two \r
+Icon
+
+
+# Thumbnails
+._*
+
+# Files that might appear in the root of a volume
+.DocumentRevisions-V100
+.fseventsd
+.Spotlight-V100
+.TemporaryItems
+.Trashes
+.VolumeIcon.icns
+.com.apple.timemachine.donotpresent
+
+# Directories potentially created on remote AFP share
+.AppleDB
+.AppleDesktop
+Network Trash Folder
+Temporary Items
+.apdisk
+
+# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore
+# Windows thumbnail cache files
+Thumbs.db
+ehthumbs.db
+ehthumbs_vista.db
+
+# Dump file
+*.stackdump
+
+# Folder config file
+[Dd]esktop.ini
+
+# Recycle Bin used on file shares
+$RECYCLE.BIN/
+
+# Windows Installer files
+*.cab
+*.msi
+*.msix
+*.msm
+*.msp
+
+# Windows shortcuts
+*.lnk
+
+# JetBrains Rider
+.idea/
+*.sln.iml
+
+##
+## Visual Studio Code
+##
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
diff --git a/e2e/BugReportingTests.cs b/packages/instabug_flutter/e2e/BugReportingTests.cs
similarity index 100%
rename from e2e/BugReportingTests.cs
rename to packages/instabug_flutter/e2e/BugReportingTests.cs
diff --git a/e2e/E2E.csproj b/packages/instabug_flutter/e2e/E2E.csproj
similarity index 84%
rename from e2e/E2E.csproj
rename to packages/instabug_flutter/e2e/E2E.csproj
index 7e6759754..79187a89a 100644
--- a/e2e/E2E.csproj
+++ b/packages/instabug_flutter/e2e/E2E.csproj
@@ -1,23 +1,23 @@
-
-
-
- net6.0
- enable
- enable
-
- false
-
-
-
-
-
-
- runtime; build; native; contentfiles; analyzers; buildtransitive
- all
-
-
-
-
-
-
-
+
+
+
+ net6.0
+ enable
+ enable
+
+ false
+
+
+
+
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+
+
+
+
+
diff --git a/e2e/E2E.sln b/packages/instabug_flutter/e2e/E2E.sln
similarity index 90%
rename from e2e/E2E.sln
rename to packages/instabug_flutter/e2e/E2E.sln
index 23c0ba9eb..84eb6ba7f 100644
--- a/e2e/E2E.sln
+++ b/packages/instabug_flutter/e2e/E2E.sln
@@ -1,31 +1,31 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 25.0.1703.5
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "E2E", "E2E.csproj", "{99118060-0344-4CAD-AE3A-CC74A5E0F3C7}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Instabug.Captain", "..\..\Instabug.Captain\Instabug.Captain\Instabug.Captain.csproj", "{597F3BAD-11D3-43B7-A95C-6C41CD2096A8}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {99118060-0344-4CAD-AE3A-CC74A5E0F3C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {99118060-0344-4CAD-AE3A-CC74A5E0F3C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {99118060-0344-4CAD-AE3A-CC74A5E0F3C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {99118060-0344-4CAD-AE3A-CC74A5E0F3C7}.Release|Any CPU.Build.0 = Release|Any CPU
- {597F3BAD-11D3-43B7-A95C-6C41CD2096A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {597F3BAD-11D3-43B7-A95C-6C41CD2096A8}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {597F3BAD-11D3-43B7-A95C-6C41CD2096A8}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {597F3BAD-11D3-43B7-A95C-6C41CD2096A8}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {3E37F932-775C-4756-A8FF-28DFC6CAC624}
- EndGlobalSection
-EndGlobal
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 25.0.1703.5
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "E2E", "E2E.csproj", "{99118060-0344-4CAD-AE3A-CC74A5E0F3C7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Instabug.Captain", "..\..\..\..\Instabug.Captain\Instabug.Captain\Instabug.Captain.csproj", "{597F3BAD-11D3-43B7-A95C-6C41CD2096A8}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {99118060-0344-4CAD-AE3A-CC74A5E0F3C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {99118060-0344-4CAD-AE3A-CC74A5E0F3C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {99118060-0344-4CAD-AE3A-CC74A5E0F3C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {99118060-0344-4CAD-AE3A-CC74A5E0F3C7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {597F3BAD-11D3-43B7-A95C-6C41CD2096A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {597F3BAD-11D3-43B7-A95C-6C41CD2096A8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {597F3BAD-11D3-43B7-A95C-6C41CD2096A8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {597F3BAD-11D3-43B7-A95C-6C41CD2096A8}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {3E37F932-775C-4756-A8FF-28DFC6CAC624}
+ EndGlobalSection
+EndGlobal
diff --git a/e2e/FeatureRequestsTests.cs b/packages/instabug_flutter/e2e/FeatureRequestsTests.cs
similarity index 100%
rename from e2e/FeatureRequestsTests.cs
rename to packages/instabug_flutter/e2e/FeatureRequestsTests.cs
diff --git a/e2e/InstabugTests.cs b/packages/instabug_flutter/e2e/InstabugTests.cs
similarity index 100%
rename from e2e/InstabugTests.cs
rename to packages/instabug_flutter/e2e/InstabugTests.cs
diff --git a/e2e/SurveysTests.cs b/packages/instabug_flutter/e2e/SurveysTests.cs
similarity index 100%
rename from e2e/SurveysTests.cs
rename to packages/instabug_flutter/e2e/SurveysTests.cs
diff --git a/e2e/Utils/CaptainTest.cs b/packages/instabug_flutter/e2e/Utils/CaptainTest.cs
similarity index 100%
rename from e2e/Utils/CaptainTest.cs
rename to packages/instabug_flutter/e2e/Utils/CaptainTest.cs
diff --git a/example/.gitignore b/packages/instabug_flutter/example/.gitignore
similarity index 99%
rename from example/.gitignore
rename to packages/instabug_flutter/example/.gitignore
index 9d532b18a..e8f9beb0b 100644
--- a/example/.gitignore
+++ b/packages/instabug_flutter/example/.gitignore
@@ -30,6 +30,7 @@
.pub-cache/
.pub/
/build/
+.fvm
# Web related
lib/generated_plugin_registrant.dart
diff --git a/example/.metadata b/packages/instabug_flutter/example/.metadata
similarity index 100%
rename from example/.metadata
rename to packages/instabug_flutter/example/.metadata
diff --git a/example/README.md b/packages/instabug_flutter/example/README.md
similarity index 100%
rename from example/README.md
rename to packages/instabug_flutter/example/README.md
diff --git a/example/android/.gitignore b/packages/instabug_flutter/example/android/.gitignore
similarity index 87%
rename from example/android/.gitignore
rename to packages/instabug_flutter/example/android/.gitignore
index bf8d01f85..102e84571 100644
--- a/example/android/.gitignore
+++ b/packages/instabug_flutter/example/android/.gitignore
@@ -5,7 +5,9 @@
!/gradlew.bat
/local.properties
GeneratedPluginRegistrant.java
+.cxx
# Remember to never publicly share your keystore.
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
-key.properties
\ No newline at end of file
+local.properties
+key.properties
diff --git a/example/android/app/build.gradle b/packages/instabug_flutter/example/android/app/build.gradle
similarity index 100%
rename from example/android/app/build.gradle
rename to packages/instabug_flutter/example/android/app/build.gradle
diff --git a/example/android/app/src/androidTest/java/com/instabug/flutter/example/BugReportingUITest.java b/packages/instabug_flutter/example/android/app/src/androidTest/java/com/instabug/flutter/example/BugReportingUITest.java
similarity index 100%
rename from example/android/app/src/androidTest/java/com/instabug/flutter/example/BugReportingUITest.java
rename to packages/instabug_flutter/example/android/app/src/androidTest/java/com/instabug/flutter/example/BugReportingUITest.java
diff --git a/example/android/app/src/androidTest/java/com/instabug/flutter/example/FeatureRequestsUITest.java b/packages/instabug_flutter/example/android/app/src/androidTest/java/com/instabug/flutter/example/FeatureRequestsUITest.java
similarity index 100%
rename from example/android/app/src/androidTest/java/com/instabug/flutter/example/FeatureRequestsUITest.java
rename to packages/instabug_flutter/example/android/app/src/androidTest/java/com/instabug/flutter/example/FeatureRequestsUITest.java
diff --git a/example/android/app/src/androidTest/java/com/instabug/flutter/example/InstabugUITest.java b/packages/instabug_flutter/example/android/app/src/androidTest/java/com/instabug/flutter/example/InstabugUITest.java
similarity index 100%
rename from example/android/app/src/androidTest/java/com/instabug/flutter/example/InstabugUITest.java
rename to packages/instabug_flutter/example/android/app/src/androidTest/java/com/instabug/flutter/example/InstabugUITest.java
diff --git a/example/android/app/src/androidTest/java/com/instabug/flutter/example/SurveysUITest.java b/packages/instabug_flutter/example/android/app/src/androidTest/java/com/instabug/flutter/example/SurveysUITest.java
similarity index 100%
rename from example/android/app/src/androidTest/java/com/instabug/flutter/example/SurveysUITest.java
rename to packages/instabug_flutter/example/android/app/src/androidTest/java/com/instabug/flutter/example/SurveysUITest.java
diff --git a/example/android/app/src/androidTest/java/com/instabug/flutter/example/util/HasBackgroundColorMatcher.java b/packages/instabug_flutter/example/android/app/src/androidTest/java/com/instabug/flutter/example/util/HasBackgroundColorMatcher.java
similarity index 100%
rename from example/android/app/src/androidTest/java/com/instabug/flutter/example/util/HasBackgroundColorMatcher.java
rename to packages/instabug_flutter/example/android/app/src/androidTest/java/com/instabug/flutter/example/util/HasBackgroundColorMatcher.java
diff --git a/example/android/app/src/androidTest/java/com/instabug/flutter/example/util/InstabugAssertions.java b/packages/instabug_flutter/example/android/app/src/androidTest/java/com/instabug/flutter/example/util/InstabugAssertions.java
similarity index 100%
rename from example/android/app/src/androidTest/java/com/instabug/flutter/example/util/InstabugAssertions.java
rename to packages/instabug_flutter/example/android/app/src/androidTest/java/com/instabug/flutter/example/util/InstabugAssertions.java
diff --git a/example/android/app/src/androidTest/java/com/instabug/flutter/example/util/InstabugViewMatchers.java b/packages/instabug_flutter/example/android/app/src/androidTest/java/com/instabug/flutter/example/util/InstabugViewMatchers.java
similarity index 100%
rename from example/android/app/src/androidTest/java/com/instabug/flutter/example/util/InstabugViewMatchers.java
rename to packages/instabug_flutter/example/android/app/src/androidTest/java/com/instabug/flutter/example/util/InstabugViewMatchers.java
diff --git a/example/android/app/src/androidTest/java/com/instabug/flutter/example/util/IsToTheLeftMatcher.java b/packages/instabug_flutter/example/android/app/src/androidTest/java/com/instabug/flutter/example/util/IsToTheLeftMatcher.java
similarity index 100%
rename from example/android/app/src/androidTest/java/com/instabug/flutter/example/util/IsToTheLeftMatcher.java
rename to packages/instabug_flutter/example/android/app/src/androidTest/java/com/instabug/flutter/example/util/IsToTheLeftMatcher.java
diff --git a/example/android/app/src/androidTest/java/com/instabug/flutter/example/util/Keyboard.java b/packages/instabug_flutter/example/android/app/src/androidTest/java/com/instabug/flutter/example/util/Keyboard.java
similarity index 100%
rename from example/android/app/src/androidTest/java/com/instabug/flutter/example/util/Keyboard.java
rename to packages/instabug_flutter/example/android/app/src/androidTest/java/com/instabug/flutter/example/util/Keyboard.java
diff --git a/example/android/app/src/debug/AndroidManifest.xml b/packages/instabug_flutter/example/android/app/src/debug/AndroidManifest.xml
similarity index 100%
rename from example/android/app/src/debug/AndroidManifest.xml
rename to packages/instabug_flutter/example/android/app/src/debug/AndroidManifest.xml
diff --git a/example/android/app/src/main/AndroidManifest.xml b/packages/instabug_flutter/example/android/app/src/main/AndroidManifest.xml
similarity index 100%
rename from example/android/app/src/main/AndroidManifest.xml
rename to packages/instabug_flutter/example/android/app/src/main/AndroidManifest.xml
diff --git a/example/android/app/src/main/kotlin/com/example/InstabugSample/MainActivity.kt b/packages/instabug_flutter/example/android/app/src/main/kotlin/com/example/InstabugSample/MainActivity.kt
similarity index 100%
rename from example/android/app/src/main/kotlin/com/example/InstabugSample/MainActivity.kt
rename to packages/instabug_flutter/example/android/app/src/main/kotlin/com/example/InstabugSample/MainActivity.kt
diff --git a/packages/instabug_flutter/example/android/app/src/main/res/drawable/launch_background.xml b/packages/instabug_flutter/example/android/app/src/main/res/drawable/launch_background.xml
new file mode 100644
index 000000000..304732f88
--- /dev/null
+++ b/packages/instabug_flutter/example/android/app/src/main/res/drawable/launch_background.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
diff --git a/packages/instabug_flutter/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/instabug_flutter/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 000000000..db77bb4b7
Binary files /dev/null and b/packages/instabug_flutter/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/packages/instabug_flutter/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/instabug_flutter/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 000000000..17987b79b
Binary files /dev/null and b/packages/instabug_flutter/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/packages/instabug_flutter/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/instabug_flutter/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 000000000..09d439148
Binary files /dev/null and b/packages/instabug_flutter/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/packages/instabug_flutter/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/instabug_flutter/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 000000000..d5f1c8d34
Binary files /dev/null and b/packages/instabug_flutter/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/packages/instabug_flutter/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/instabug_flutter/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 000000000..4d6372eeb
Binary files /dev/null and b/packages/instabug_flutter/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/example/android/app/src/main/res/values/styles.xml b/packages/instabug_flutter/example/android/app/src/main/res/values/styles.xml
similarity index 100%
rename from example/android/app/src/main/res/values/styles.xml
rename to packages/instabug_flutter/example/android/app/src/main/res/values/styles.xml
diff --git a/example/android/app/src/profile/AndroidManifest.xml b/packages/instabug_flutter/example/android/app/src/profile/AndroidManifest.xml
similarity index 100%
rename from example/android/app/src/profile/AndroidManifest.xml
rename to packages/instabug_flutter/example/android/app/src/profile/AndroidManifest.xml
diff --git a/example/android/build.gradle b/packages/instabug_flutter/example/android/build.gradle
similarity index 100%
rename from example/android/build.gradle
rename to packages/instabug_flutter/example/android/build.gradle
diff --git a/packages/instabug_flutter/example/android/gradle.properties b/packages/instabug_flutter/example/android/gradle.properties
new file mode 100644
index 000000000..94adc3a3f
--- /dev/null
+++ b/packages/instabug_flutter/example/android/gradle.properties
@@ -0,0 +1,3 @@
+org.gradle.jvmargs=-Xmx1536M
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/example/android/gradle/wrapper/gradle-wrapper.jar b/packages/instabug_flutter/example/android/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
rename from example/android/gradle/wrapper/gradle-wrapper.jar
rename to packages/instabug_flutter/example/android/gradle/wrapper/gradle-wrapper.jar
diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/instabug_flutter/example/android/gradle/wrapper/gradle-wrapper.properties
similarity index 100%
rename from example/android/gradle/wrapper/gradle-wrapper.properties
rename to packages/instabug_flutter/example/android/gradle/wrapper/gradle-wrapper.properties
diff --git a/example/android/gradlew b/packages/instabug_flutter/example/android/gradlew
similarity index 100%
rename from example/android/gradlew
rename to packages/instabug_flutter/example/android/gradlew
diff --git a/example/android/gradlew.bat b/packages/instabug_flutter/example/android/gradlew.bat
similarity index 96%
rename from example/android/gradlew.bat
rename to packages/instabug_flutter/example/android/gradlew.bat
index aec99730b..8a0b282aa 100644
--- a/example/android/gradlew.bat
+++ b/packages/instabug_flutter/example/android/gradlew.bat
@@ -1,90 +1,90 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windowz variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/example/android/settings.gradle b/packages/instabug_flutter/example/android/settings.gradle
similarity index 100%
rename from example/android/settings.gradle
rename to packages/instabug_flutter/example/android/settings.gradle
diff --git a/example/android/settings_aar.gradle b/packages/instabug_flutter/example/android/settings_aar.gradle
similarity index 100%
rename from example/android/settings_aar.gradle
rename to packages/instabug_flutter/example/android/settings_aar.gradle
diff --git a/example/ios/.gitignore b/packages/instabug_flutter/example/ios/.gitignore
similarity index 100%
rename from example/ios/.gitignore
rename to packages/instabug_flutter/example/ios/.gitignore
diff --git a/example/ios/Flutter/AppFrameworkInfo.plist b/packages/instabug_flutter/example/ios/Flutter/AppFrameworkInfo.plist
similarity index 100%
rename from example/ios/Flutter/AppFrameworkInfo.plist
rename to packages/instabug_flutter/example/ios/Flutter/AppFrameworkInfo.plist
diff --git a/example/ios/Flutter/Debug.xcconfig b/packages/instabug_flutter/example/ios/Flutter/Debug.xcconfig
similarity index 100%
rename from example/ios/Flutter/Debug.xcconfig
rename to packages/instabug_flutter/example/ios/Flutter/Debug.xcconfig
diff --git a/example/ios/Flutter/Release.xcconfig b/packages/instabug_flutter/example/ios/Flutter/Release.xcconfig
similarity index 100%
rename from example/ios/Flutter/Release.xcconfig
rename to packages/instabug_flutter/example/ios/Flutter/Release.xcconfig
diff --git a/example/ios/InstabugTests/ApmApiTests.m b/packages/instabug_flutter/example/ios/InstabugTests/ApmApiTests.m
similarity index 100%
rename from example/ios/InstabugTests/ApmApiTests.m
rename to packages/instabug_flutter/example/ios/InstabugTests/ApmApiTests.m
diff --git a/example/ios/InstabugTests/ArgsRegistryTests.m b/packages/instabug_flutter/example/ios/InstabugTests/ArgsRegistryTests.m
similarity index 100%
rename from example/ios/InstabugTests/ArgsRegistryTests.m
rename to packages/instabug_flutter/example/ios/InstabugTests/ArgsRegistryTests.m
diff --git a/example/ios/InstabugTests/BugReportingApiTests.m b/packages/instabug_flutter/example/ios/InstabugTests/BugReportingApiTests.m
similarity index 100%
rename from example/ios/InstabugTests/BugReportingApiTests.m
rename to packages/instabug_flutter/example/ios/InstabugTests/BugReportingApiTests.m
diff --git a/example/ios/InstabugTests/CrashReportingApiTests.m b/packages/instabug_flutter/example/ios/InstabugTests/CrashReportingApiTests.m
similarity index 100%
rename from example/ios/InstabugTests/CrashReportingApiTests.m
rename to packages/instabug_flutter/example/ios/InstabugTests/CrashReportingApiTests.m
diff --git a/example/ios/InstabugTests/FeatureRequestsApiTests.m b/packages/instabug_flutter/example/ios/InstabugTests/FeatureRequestsApiTests.m
similarity index 100%
rename from example/ios/InstabugTests/FeatureRequestsApiTests.m
rename to packages/instabug_flutter/example/ios/InstabugTests/FeatureRequestsApiTests.m
diff --git a/example/ios/InstabugTests/Info.plist b/packages/instabug_flutter/example/ios/InstabugTests/Info.plist
similarity index 100%
rename from example/ios/InstabugTests/Info.plist
rename to packages/instabug_flutter/example/ios/InstabugTests/Info.plist
diff --git a/example/ios/InstabugTests/InstabugApiTests.m b/packages/instabug_flutter/example/ios/InstabugTests/InstabugApiTests.m
similarity index 100%
rename from example/ios/InstabugTests/InstabugApiTests.m
rename to packages/instabug_flutter/example/ios/InstabugTests/InstabugApiTests.m
diff --git a/example/ios/InstabugTests/InstabugLogApiTests.m b/packages/instabug_flutter/example/ios/InstabugTests/InstabugLogApiTests.m
similarity index 100%
rename from example/ios/InstabugTests/InstabugLogApiTests.m
rename to packages/instabug_flutter/example/ios/InstabugTests/InstabugLogApiTests.m
diff --git a/example/ios/InstabugTests/RepliesApiTests.m b/packages/instabug_flutter/example/ios/InstabugTests/RepliesApiTests.m
similarity index 100%
rename from example/ios/InstabugTests/RepliesApiTests.m
rename to packages/instabug_flutter/example/ios/InstabugTests/RepliesApiTests.m
diff --git a/example/ios/InstabugTests/SessionReplayApiTests.m b/packages/instabug_flutter/example/ios/InstabugTests/SessionReplayApiTests.m
similarity index 100%
rename from example/ios/InstabugTests/SessionReplayApiTests.m
rename to packages/instabug_flutter/example/ios/InstabugTests/SessionReplayApiTests.m
diff --git a/example/ios/InstabugTests/SurveysApiTests.m b/packages/instabug_flutter/example/ios/InstabugTests/SurveysApiTests.m
similarity index 100%
rename from example/ios/InstabugTests/SurveysApiTests.m
rename to packages/instabug_flutter/example/ios/InstabugTests/SurveysApiTests.m
diff --git a/example/ios/InstabugTests/Util/IBGNetworkLogger+Test.h b/packages/instabug_flutter/example/ios/InstabugTests/Util/IBGNetworkLogger+Test.h
similarity index 100%
rename from example/ios/InstabugTests/Util/IBGNetworkLogger+Test.h
rename to packages/instabug_flutter/example/ios/InstabugTests/Util/IBGNetworkLogger+Test.h
diff --git a/example/ios/InstabugTests/Util/IBGSurvey+Test.h b/packages/instabug_flutter/example/ios/InstabugTests/Util/IBGSurvey+Test.h
similarity index 100%
rename from example/ios/InstabugTests/Util/IBGSurvey+Test.h
rename to packages/instabug_flutter/example/ios/InstabugTests/Util/IBGSurvey+Test.h
diff --git a/example/ios/InstabugTests/Util/Instabug+Test.h b/packages/instabug_flutter/example/ios/InstabugTests/Util/Instabug+Test.h
similarity index 100%
rename from example/ios/InstabugTests/Util/Instabug+Test.h
rename to packages/instabug_flutter/example/ios/InstabugTests/Util/Instabug+Test.h
diff --git a/example/ios/InstabugUITests/BugReportingUITests.m b/packages/instabug_flutter/example/ios/InstabugUITests/BugReportingUITests.m
similarity index 100%
rename from example/ios/InstabugUITests/BugReportingUITests.m
rename to packages/instabug_flutter/example/ios/InstabugUITests/BugReportingUITests.m
diff --git a/example/ios/InstabugUITests/FeatureRequestsUITests.m b/packages/instabug_flutter/example/ios/InstabugUITests/FeatureRequestsUITests.m
similarity index 100%
rename from example/ios/InstabugUITests/FeatureRequestsUITests.m
rename to packages/instabug_flutter/example/ios/InstabugUITests/FeatureRequestsUITests.m
diff --git a/example/ios/InstabugUITests/Info.plist b/packages/instabug_flutter/example/ios/InstabugUITests/Info.plist
similarity index 100%
rename from example/ios/InstabugUITests/Info.plist
rename to packages/instabug_flutter/example/ios/InstabugUITests/Info.plist
diff --git a/example/ios/InstabugUITests/InstabugUITests.m b/packages/instabug_flutter/example/ios/InstabugUITests/InstabugUITests.m
similarity index 100%
rename from example/ios/InstabugUITests/InstabugUITests.m
rename to packages/instabug_flutter/example/ios/InstabugUITests/InstabugUITests.m
diff --git a/example/ios/InstabugUITests/SurveysUITests.m b/packages/instabug_flutter/example/ios/InstabugUITests/SurveysUITests.m
similarity index 100%
rename from example/ios/InstabugUITests/SurveysUITests.m
rename to packages/instabug_flutter/example/ios/InstabugUITests/SurveysUITests.m
diff --git a/example/ios/InstabugUITests/Util/InstabugUITestsUtils.h b/packages/instabug_flutter/example/ios/InstabugUITests/Util/InstabugUITestsUtils.h
similarity index 100%
rename from example/ios/InstabugUITests/Util/InstabugUITestsUtils.h
rename to packages/instabug_flutter/example/ios/InstabugUITests/Util/InstabugUITestsUtils.h
diff --git a/example/ios/InstabugUITests/Util/InstabugUITestsUtils.m b/packages/instabug_flutter/example/ios/InstabugUITests/Util/InstabugUITestsUtils.m
similarity index 100%
rename from example/ios/InstabugUITests/Util/InstabugUITestsUtils.m
rename to packages/instabug_flutter/example/ios/InstabugUITests/Util/InstabugUITestsUtils.m
diff --git a/example/ios/InstabugUITests/Util/XCUIElement+Instabug.h b/packages/instabug_flutter/example/ios/InstabugUITests/Util/XCUIElement+Instabug.h
similarity index 100%
rename from example/ios/InstabugUITests/Util/XCUIElement+Instabug.h
rename to packages/instabug_flutter/example/ios/InstabugUITests/Util/XCUIElement+Instabug.h
diff --git a/example/ios/InstabugUITests/Util/XCUIElement+Instabug.m b/packages/instabug_flutter/example/ios/InstabugUITests/Util/XCUIElement+Instabug.m
similarity index 100%
rename from example/ios/InstabugUITests/Util/XCUIElement+Instabug.m
rename to packages/instabug_flutter/example/ios/InstabugUITests/Util/XCUIElement+Instabug.m
diff --git a/example/ios/Podfile b/packages/instabug_flutter/example/ios/Podfile
similarity index 100%
rename from example/ios/Podfile
rename to packages/instabug_flutter/example/ios/Podfile
diff --git a/example/ios/Podfile.lock b/packages/instabug_flutter/example/ios/Podfile.lock
similarity index 100%
rename from example/ios/Podfile.lock
rename to packages/instabug_flutter/example/ios/Podfile.lock
diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/packages/instabug_flutter/example/ios/Runner.xcodeproj/project.pbxproj
similarity index 100%
rename from example/ios/Runner.xcodeproj/project.pbxproj
rename to packages/instabug_flutter/example/ios/Runner.xcodeproj/project.pbxproj
diff --git a/packages/instabug_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/instabug_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 000000000..919434a62
--- /dev/null
+++ b/packages/instabug_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/packages/instabug_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/instabug_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 000000000..18d981003
--- /dev/null
+++ b/packages/instabug_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/packages/instabug_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/instabug_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
new file mode 100644
index 000000000..f9b0d7c5e
--- /dev/null
+++ b/packages/instabug_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
@@ -0,0 +1,8 @@
+
+
+
+
+ PreviewsEnabled
+
+
+
diff --git a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/instabug_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
similarity index 100%
rename from example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
rename to packages/instabug_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
diff --git a/packages/instabug_flutter/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/packages/instabug_flutter/example/ios/Runner.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 000000000..21a3cc14c
--- /dev/null
+++ b/packages/instabug_flutter/example/ios/Runner.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/packages/instabug_flutter/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/instabug_flutter/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 000000000..18d981003
--- /dev/null
+++ b/packages/instabug_flutter/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/packages/instabug_flutter/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/instabug_flutter/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
new file mode 100644
index 000000000..f9b0d7c5e
--- /dev/null
+++ b/packages/instabug_flutter/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
@@ -0,0 +1,8 @@
+
+
+
+
+ PreviewsEnabled
+
+
+
diff --git a/packages/instabug_flutter/example/ios/Runner/AppDelegate.swift b/packages/instabug_flutter/example/ios/Runner/AppDelegate.swift
new file mode 100644
index 000000000..70693e4a8
--- /dev/null
+++ b/packages/instabug_flutter/example/ios/Runner/AppDelegate.swift
@@ -0,0 +1,13 @@
+import UIKit
+import Flutter
+
+@UIApplicationMain
+@objc class AppDelegate: FlutterAppDelegate {
+ override func application(
+ _ application: UIApplication,
+ didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
+ ) -> Bool {
+ GeneratedPluginRegistrant.register(with: self)
+ return super.application(application, didFinishLaunchingWithOptions: launchOptions)
+ }
+}
diff --git a/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 000000000..d36b1fab2
--- /dev/null
+++ b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,122 @@
+{
+ "images" : [
+ {
+ "size" : "20x20",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-20x20@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-20x20@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-29x29@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-29x29@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-29x29@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-40x40@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-40x40@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-60x60@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-60x60@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-20x20@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-20x20@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-29x29@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-29x29@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-40x40@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-40x40@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-76x76@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-76x76@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "83.5x83.5",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-83.5x83.5@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "1024x1024",
+ "idiom" : "ios-marketing",
+ "filename" : "Icon-App-1024x1024@1x.png",
+ "scale" : "1x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
diff --git a/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
new file mode 100644
index 000000000..dc9ada472
Binary files /dev/null and b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ
diff --git a/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
new file mode 100644
index 000000000..28c6bf030
Binary files /dev/null and b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ
diff --git a/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
new file mode 100644
index 000000000..2ccbfd967
Binary files /dev/null and b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ
diff --git a/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
new file mode 100644
index 000000000..f091b6b0b
Binary files /dev/null and b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ
diff --git a/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
new file mode 100644
index 000000000..4cde12118
Binary files /dev/null and b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ
diff --git a/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
new file mode 100644
index 000000000..d0ef06e7e
Binary files /dev/null and b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ
diff --git a/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
new file mode 100644
index 000000000..dcdc2306c
Binary files /dev/null and b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ
diff --git a/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
new file mode 100644
index 000000000..2ccbfd967
Binary files /dev/null and b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ
diff --git a/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
new file mode 100644
index 000000000..c8f9ed8f5
Binary files /dev/null and b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ
diff --git a/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
new file mode 100644
index 000000000..a6d6b8609
Binary files /dev/null and b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ
diff --git a/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
new file mode 100644
index 000000000..a6d6b8609
Binary files /dev/null and b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ
diff --git a/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
new file mode 100644
index 000000000..75b2d164a
Binary files /dev/null and b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ
diff --git a/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
new file mode 100644
index 000000000..c4df70d39
Binary files /dev/null and b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ
diff --git a/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
new file mode 100644
index 000000000..6a84f41e1
Binary files /dev/null and b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ
diff --git a/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
new file mode 100644
index 000000000..d0e1f5853
Binary files /dev/null and b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ
diff --git a/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
new file mode 100644
index 000000000..0bedcf2fd
--- /dev/null
+++ b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchImage.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchImage@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchImage@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
diff --git a/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
new file mode 100644
index 000000000..9da19eaca
Binary files /dev/null and b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ
diff --git a/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
new file mode 100644
index 000000000..9da19eaca
Binary files /dev/null and b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ
diff --git a/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
new file mode 100644
index 000000000..9da19eaca
Binary files /dev/null and b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ
diff --git a/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
new file mode 100644
index 000000000..89c2725b7
--- /dev/null
+++ b/packages/instabug_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
@@ -0,0 +1,5 @@
+# Launch Screen Assets
+
+You can customize the launch screen with your own desired assets by replacing the image files in this directory.
+
+You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
\ No newline at end of file
diff --git a/packages/instabug_flutter/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/packages/instabug_flutter/example/ios/Runner/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 000000000..f2e259c7c
--- /dev/null
+++ b/packages/instabug_flutter/example/ios/Runner/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/instabug_flutter/example/ios/Runner/Base.lproj/Main.storyboard b/packages/instabug_flutter/example/ios/Runner/Base.lproj/Main.storyboard
new file mode 100644
index 000000000..f3c28516f
--- /dev/null
+++ b/packages/instabug_flutter/example/ios/Runner/Base.lproj/Main.storyboard
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/example/ios/Runner/Info.plist b/packages/instabug_flutter/example/ios/Runner/Info.plist
similarity index 100%
rename from example/ios/Runner/Info.plist
rename to packages/instabug_flutter/example/ios/Runner/Info.plist
diff --git a/packages/instabug_flutter/example/ios/Runner/Runner-Bridging-Header.h b/packages/instabug_flutter/example/ios/Runner/Runner-Bridging-Header.h
new file mode 100644
index 000000000..308a2a560
--- /dev/null
+++ b/packages/instabug_flutter/example/ios/Runner/Runner-Bridging-Header.h
@@ -0,0 +1 @@
+#import "GeneratedPluginRegistrant.h"
diff --git a/example/lib/main.dart b/packages/instabug_flutter/example/lib/main.dart
similarity index 100%
rename from example/lib/main.dart
rename to packages/instabug_flutter/example/lib/main.dart
diff --git a/example/pubspec.yaml b/packages/instabug_flutter/example/pubspec.yaml
similarity index 100%
rename from example/pubspec.yaml
rename to packages/instabug_flutter/example/pubspec.yaml
diff --git a/example/test_driver/example.dart b/packages/instabug_flutter/example/test_driver/example.dart
similarity index 100%
rename from example/test_driver/example.dart
rename to packages/instabug_flutter/example/test_driver/example.dart
diff --git a/ios/.gitignore b/packages/instabug_flutter/ios/.gitignore
similarity index 100%
rename from ios/.gitignore
rename to packages/instabug_flutter/ios/.gitignore
diff --git a/ios/Assets/.gitkeep b/packages/instabug_flutter/ios/Assets/.gitkeep
similarity index 100%
rename from ios/Assets/.gitkeep
rename to packages/instabug_flutter/ios/Assets/.gitkeep
diff --git a/ios/Classes/InstabugFlutterPlugin.h b/packages/instabug_flutter/ios/Classes/InstabugFlutterPlugin.h
similarity index 100%
rename from ios/Classes/InstabugFlutterPlugin.h
rename to packages/instabug_flutter/ios/Classes/InstabugFlutterPlugin.h
diff --git a/ios/Classes/InstabugFlutterPlugin.m b/packages/instabug_flutter/ios/Classes/InstabugFlutterPlugin.m
similarity index 100%
rename from ios/Classes/InstabugFlutterPlugin.m
rename to packages/instabug_flutter/ios/Classes/InstabugFlutterPlugin.m
diff --git a/ios/Classes/Modules/ApmApi.h b/packages/instabug_flutter/ios/Classes/Modules/ApmApi.h
similarity index 100%
rename from ios/Classes/Modules/ApmApi.h
rename to packages/instabug_flutter/ios/Classes/Modules/ApmApi.h
diff --git a/ios/Classes/Modules/ApmApi.m b/packages/instabug_flutter/ios/Classes/Modules/ApmApi.m
similarity index 100%
rename from ios/Classes/Modules/ApmApi.m
rename to packages/instabug_flutter/ios/Classes/Modules/ApmApi.m
diff --git a/ios/Classes/Modules/BugReportingApi.h b/packages/instabug_flutter/ios/Classes/Modules/BugReportingApi.h
similarity index 100%
rename from ios/Classes/Modules/BugReportingApi.h
rename to packages/instabug_flutter/ios/Classes/Modules/BugReportingApi.h
diff --git a/ios/Classes/Modules/BugReportingApi.m b/packages/instabug_flutter/ios/Classes/Modules/BugReportingApi.m
similarity index 100%
rename from ios/Classes/Modules/BugReportingApi.m
rename to packages/instabug_flutter/ios/Classes/Modules/BugReportingApi.m
diff --git a/ios/Classes/Modules/CrashReportingApi.h b/packages/instabug_flutter/ios/Classes/Modules/CrashReportingApi.h
similarity index 100%
rename from ios/Classes/Modules/CrashReportingApi.h
rename to packages/instabug_flutter/ios/Classes/Modules/CrashReportingApi.h
diff --git a/ios/Classes/Modules/CrashReportingApi.m b/packages/instabug_flutter/ios/Classes/Modules/CrashReportingApi.m
similarity index 100%
rename from ios/Classes/Modules/CrashReportingApi.m
rename to packages/instabug_flutter/ios/Classes/Modules/CrashReportingApi.m
diff --git a/ios/Classes/Modules/FeatureRequestsApi.h b/packages/instabug_flutter/ios/Classes/Modules/FeatureRequestsApi.h
similarity index 100%
rename from ios/Classes/Modules/FeatureRequestsApi.h
rename to packages/instabug_flutter/ios/Classes/Modules/FeatureRequestsApi.h
diff --git a/ios/Classes/Modules/FeatureRequestsApi.m b/packages/instabug_flutter/ios/Classes/Modules/FeatureRequestsApi.m
similarity index 100%
rename from ios/Classes/Modules/FeatureRequestsApi.m
rename to packages/instabug_flutter/ios/Classes/Modules/FeatureRequestsApi.m
diff --git a/ios/Classes/Modules/InstabugApi.h b/packages/instabug_flutter/ios/Classes/Modules/InstabugApi.h
similarity index 100%
rename from ios/Classes/Modules/InstabugApi.h
rename to packages/instabug_flutter/ios/Classes/Modules/InstabugApi.h
diff --git a/ios/Classes/Modules/InstabugApi.m b/packages/instabug_flutter/ios/Classes/Modules/InstabugApi.m
similarity index 100%
rename from ios/Classes/Modules/InstabugApi.m
rename to packages/instabug_flutter/ios/Classes/Modules/InstabugApi.m
diff --git a/ios/Classes/Modules/InstabugLogApi.h b/packages/instabug_flutter/ios/Classes/Modules/InstabugLogApi.h
similarity index 100%
rename from ios/Classes/Modules/InstabugLogApi.h
rename to packages/instabug_flutter/ios/Classes/Modules/InstabugLogApi.h
diff --git a/ios/Classes/Modules/InstabugLogApi.m b/packages/instabug_flutter/ios/Classes/Modules/InstabugLogApi.m
similarity index 100%
rename from ios/Classes/Modules/InstabugLogApi.m
rename to packages/instabug_flutter/ios/Classes/Modules/InstabugLogApi.m
diff --git a/ios/Classes/Modules/RepliesApi.h b/packages/instabug_flutter/ios/Classes/Modules/RepliesApi.h
similarity index 100%
rename from ios/Classes/Modules/RepliesApi.h
rename to packages/instabug_flutter/ios/Classes/Modules/RepliesApi.h
diff --git a/ios/Classes/Modules/RepliesApi.m b/packages/instabug_flutter/ios/Classes/Modules/RepliesApi.m
similarity index 100%
rename from ios/Classes/Modules/RepliesApi.m
rename to packages/instabug_flutter/ios/Classes/Modules/RepliesApi.m
diff --git a/ios/Classes/Modules/SessionReplayApi.h b/packages/instabug_flutter/ios/Classes/Modules/SessionReplayApi.h
similarity index 100%
rename from ios/Classes/Modules/SessionReplayApi.h
rename to packages/instabug_flutter/ios/Classes/Modules/SessionReplayApi.h
diff --git a/ios/Classes/Modules/SessionReplayApi.m b/packages/instabug_flutter/ios/Classes/Modules/SessionReplayApi.m
similarity index 100%
rename from ios/Classes/Modules/SessionReplayApi.m
rename to packages/instabug_flutter/ios/Classes/Modules/SessionReplayApi.m
diff --git a/ios/Classes/Modules/SurveysApi.h b/packages/instabug_flutter/ios/Classes/Modules/SurveysApi.h
similarity index 100%
rename from ios/Classes/Modules/SurveysApi.h
rename to packages/instabug_flutter/ios/Classes/Modules/SurveysApi.h
diff --git a/ios/Classes/Modules/SurveysApi.m b/packages/instabug_flutter/ios/Classes/Modules/SurveysApi.m
similarity index 100%
rename from ios/Classes/Modules/SurveysApi.m
rename to packages/instabug_flutter/ios/Classes/Modules/SurveysApi.m
diff --git a/ios/Classes/Util/ArgsRegistry.h b/packages/instabug_flutter/ios/Classes/Util/ArgsRegistry.h
similarity index 100%
rename from ios/Classes/Util/ArgsRegistry.h
rename to packages/instabug_flutter/ios/Classes/Util/ArgsRegistry.h
diff --git a/ios/Classes/Util/ArgsRegistry.m b/packages/instabug_flutter/ios/Classes/Util/ArgsRegistry.m
similarity index 100%
rename from ios/Classes/Util/ArgsRegistry.m
rename to packages/instabug_flutter/ios/Classes/Util/ArgsRegistry.m
diff --git a/ios/Classes/Util/IBGNetworkLogger+CP.h b/packages/instabug_flutter/ios/Classes/Util/IBGNetworkLogger+CP.h
similarity index 100%
rename from ios/Classes/Util/IBGNetworkLogger+CP.h
rename to packages/instabug_flutter/ios/Classes/Util/IBGNetworkLogger+CP.h
diff --git a/ios/instabug_flutter.podspec b/packages/instabug_flutter/ios/instabug_flutter.podspec
similarity index 100%
rename from ios/instabug_flutter.podspec
rename to packages/instabug_flutter/ios/instabug_flutter.podspec
diff --git a/lib/instabug_flutter.dart b/packages/instabug_flutter/lib/instabug_flutter.dart
similarity index 100%
rename from lib/instabug_flutter.dart
rename to packages/instabug_flutter/lib/instabug_flutter.dart
diff --git a/lib/src/models/crash_data.dart b/packages/instabug_flutter/lib/src/models/crash_data.dart
similarity index 100%
rename from lib/src/models/crash_data.dart
rename to packages/instabug_flutter/lib/src/models/crash_data.dart
diff --git a/lib/src/models/exception_data.dart b/packages/instabug_flutter/lib/src/models/exception_data.dart
similarity index 100%
rename from lib/src/models/exception_data.dart
rename to packages/instabug_flutter/lib/src/models/exception_data.dart
diff --git a/lib/src/models/network_data.dart b/packages/instabug_flutter/lib/src/models/network_data.dart
similarity index 100%
rename from lib/src/models/network_data.dart
rename to packages/instabug_flutter/lib/src/models/network_data.dart
diff --git a/lib/src/models/trace.dart b/packages/instabug_flutter/lib/src/models/trace.dart
similarity index 100%
rename from lib/src/models/trace.dart
rename to packages/instabug_flutter/lib/src/models/trace.dart
diff --git a/lib/src/modules/apm.dart b/packages/instabug_flutter/lib/src/modules/apm.dart
similarity index 100%
rename from lib/src/modules/apm.dart
rename to packages/instabug_flutter/lib/src/modules/apm.dart
diff --git a/lib/src/modules/bug_reporting.dart b/packages/instabug_flutter/lib/src/modules/bug_reporting.dart
similarity index 100%
rename from lib/src/modules/bug_reporting.dart
rename to packages/instabug_flutter/lib/src/modules/bug_reporting.dart
diff --git a/lib/src/modules/crash_reporting.dart b/packages/instabug_flutter/lib/src/modules/crash_reporting.dart
similarity index 100%
rename from lib/src/modules/crash_reporting.dart
rename to packages/instabug_flutter/lib/src/modules/crash_reporting.dart
diff --git a/lib/src/modules/feature_requests.dart b/packages/instabug_flutter/lib/src/modules/feature_requests.dart
similarity index 100%
rename from lib/src/modules/feature_requests.dart
rename to packages/instabug_flutter/lib/src/modules/feature_requests.dart
diff --git a/lib/src/modules/instabug.dart b/packages/instabug_flutter/lib/src/modules/instabug.dart
similarity index 100%
rename from lib/src/modules/instabug.dart
rename to packages/instabug_flutter/lib/src/modules/instabug.dart
diff --git a/lib/src/modules/instabug_log.dart b/packages/instabug_flutter/lib/src/modules/instabug_log.dart
similarity index 100%
rename from lib/src/modules/instabug_log.dart
rename to packages/instabug_flutter/lib/src/modules/instabug_log.dart
diff --git a/lib/src/modules/network_logger.dart b/packages/instabug_flutter/lib/src/modules/network_logger.dart
similarity index 100%
rename from lib/src/modules/network_logger.dart
rename to packages/instabug_flutter/lib/src/modules/network_logger.dart
diff --git a/lib/src/modules/replies.dart b/packages/instabug_flutter/lib/src/modules/replies.dart
similarity index 100%
rename from lib/src/modules/replies.dart
rename to packages/instabug_flutter/lib/src/modules/replies.dart
diff --git a/lib/src/modules/session_replay.dart b/packages/instabug_flutter/lib/src/modules/session_replay.dart
similarity index 100%
rename from lib/src/modules/session_replay.dart
rename to packages/instabug_flutter/lib/src/modules/session_replay.dart
diff --git a/lib/src/modules/surveys.dart b/packages/instabug_flutter/lib/src/modules/surveys.dart
similarity index 100%
rename from lib/src/modules/surveys.dart
rename to packages/instabug_flutter/lib/src/modules/surveys.dart
diff --git a/lib/src/utils/enum_converter.dart b/packages/instabug_flutter/lib/src/utils/enum_converter.dart
similarity index 100%
rename from lib/src/utils/enum_converter.dart
rename to packages/instabug_flutter/lib/src/utils/enum_converter.dart
diff --git a/lib/src/utils/ibg_build_info.dart b/packages/instabug_flutter/lib/src/utils/ibg_build_info.dart
similarity index 100%
rename from lib/src/utils/ibg_build_info.dart
rename to packages/instabug_flutter/lib/src/utils/ibg_build_info.dart
diff --git a/lib/src/utils/ibg_date_time.dart b/packages/instabug_flutter/lib/src/utils/ibg_date_time.dart
similarity index 100%
rename from lib/src/utils/ibg_date_time.dart
rename to packages/instabug_flutter/lib/src/utils/ibg_date_time.dart
diff --git a/lib/src/utils/instabug_navigator_observer.dart b/packages/instabug_flutter/lib/src/utils/instabug_navigator_observer.dart
similarity index 100%
rename from lib/src/utils/instabug_navigator_observer.dart
rename to packages/instabug_flutter/lib/src/utils/instabug_navigator_observer.dart
diff --git a/lib/src/utils/network_manager.dart b/packages/instabug_flutter/lib/src/utils/network_manager.dart
similarity index 100%
rename from lib/src/utils/network_manager.dart
rename to packages/instabug_flutter/lib/src/utils/network_manager.dart
diff --git a/package.json b/packages/instabug_flutter/package.json
similarity index 100%
rename from package.json
rename to packages/instabug_flutter/package.json
diff --git a/pigeons/apm.api.dart b/packages/instabug_flutter/pigeons/apm.api.dart
similarity index 100%
rename from pigeons/apm.api.dart
rename to packages/instabug_flutter/pigeons/apm.api.dart
diff --git a/pigeons/bug_reporting.api.dart b/packages/instabug_flutter/pigeons/bug_reporting.api.dart
similarity index 100%
rename from pigeons/bug_reporting.api.dart
rename to packages/instabug_flutter/pigeons/bug_reporting.api.dart
diff --git a/pigeons/crash_reporting.api.dart b/packages/instabug_flutter/pigeons/crash_reporting.api.dart
similarity index 100%
rename from pigeons/crash_reporting.api.dart
rename to packages/instabug_flutter/pigeons/crash_reporting.api.dart
diff --git a/pigeons/feature_requests.api.dart b/packages/instabug_flutter/pigeons/feature_requests.api.dart
similarity index 100%
rename from pigeons/feature_requests.api.dart
rename to packages/instabug_flutter/pigeons/feature_requests.api.dart
diff --git a/pigeons/instabug.api.dart b/packages/instabug_flutter/pigeons/instabug.api.dart
similarity index 100%
rename from pigeons/instabug.api.dart
rename to packages/instabug_flutter/pigeons/instabug.api.dart
diff --git a/pigeons/instabug_log.api.dart b/packages/instabug_flutter/pigeons/instabug_log.api.dart
similarity index 100%
rename from pigeons/instabug_log.api.dart
rename to packages/instabug_flutter/pigeons/instabug_log.api.dart
diff --git a/pigeons/replies.api.dart b/packages/instabug_flutter/pigeons/replies.api.dart
similarity index 100%
rename from pigeons/replies.api.dart
rename to packages/instabug_flutter/pigeons/replies.api.dart
diff --git a/pigeons/session_replay.api.dart b/packages/instabug_flutter/pigeons/session_replay.api.dart
similarity index 100%
rename from pigeons/session_replay.api.dart
rename to packages/instabug_flutter/pigeons/session_replay.api.dart
diff --git a/pigeons/surveys.api.dart b/packages/instabug_flutter/pigeons/surveys.api.dart
similarity index 100%
rename from pigeons/surveys.api.dart
rename to packages/instabug_flutter/pigeons/surveys.api.dart
diff --git a/packages/instabug_flutter/pubspec.yaml b/packages/instabug_flutter/pubspec.yaml
new file mode 100644
index 000000000..177a7dace
--- /dev/null
+++ b/packages/instabug_flutter/pubspec.yaml
@@ -0,0 +1,38 @@
+name: instabug_flutter
+version: 12.7.0
+description: >-
+ Instabug empowers mobile teams to monitor, prioritize, and debug
+ performance and stability issues throughout the app development lifecycle.
+homepage: https://www.instabug.com/platforms/flutter
+repository: https://github.com/Instabug/Instabug-Flutter
+documentation: https://docs.instabug.com/docs/flutter-overview
+
+dependencies:
+ flutter:
+ sdk: flutter
+ meta: ^1.3.0
+ stack_trace: ^1.10.0
+
+dev_dependencies:
+ build_runner: ^2.0.3
+ flutter_test:
+ sdk: flutter
+ lint: ^1.0.0
+ # mockito v5.2.0 is needed for running Flutter 2 tests on CI
+ mockito: '>=5.2.0 <=5.4.2'
+ pana: ^0.21.0
+ # pigeon v3.0.0 is needed for running Flutter 2 tests on CI
+ pigeon: '>=3.0.0 <=10.1.5'
+
+flutter:
+ plugin:
+ platforms:
+ android:
+ package: com.instabug.flutter
+ pluginClass: InstabugFlutterPlugin
+ ios:
+ pluginClass: InstabugFlutterPlugin
+
+environment:
+ sdk: '>=2.12.0 <4.0.0'
+ flutter: ">=1.17.0"
diff --git a/scripts/pigeon.sh b/packages/instabug_flutter/scripts/pigeon.sh
old mode 100644
new mode 100755
similarity index 100%
rename from scripts/pigeon.sh
rename to packages/instabug_flutter/scripts/pigeon.sh
diff --git a/test/apm_test.dart b/packages/instabug_flutter/test/apm_test.dart
similarity index 100%
rename from test/apm_test.dart
rename to packages/instabug_flutter/test/apm_test.dart
diff --git a/test/bug_reporting_test.dart b/packages/instabug_flutter/test/bug_reporting_test.dart
similarity index 100%
rename from test/bug_reporting_test.dart
rename to packages/instabug_flutter/test/bug_reporting_test.dart
diff --git a/test/crash_reporting_test.dart b/packages/instabug_flutter/test/crash_reporting_test.dart
similarity index 100%
rename from test/crash_reporting_test.dart
rename to packages/instabug_flutter/test/crash_reporting_test.dart
diff --git a/test/feature_requests_test.dart b/packages/instabug_flutter/test/feature_requests_test.dart
similarity index 100%
rename from test/feature_requests_test.dart
rename to packages/instabug_flutter/test/feature_requests_test.dart
diff --git a/test/instabug_log_test.dart b/packages/instabug_flutter/test/instabug_log_test.dart
similarity index 100%
rename from test/instabug_log_test.dart
rename to packages/instabug_flutter/test/instabug_log_test.dart
diff --git a/test/instabug_test.dart b/packages/instabug_flutter/test/instabug_test.dart
similarity index 100%
rename from test/instabug_test.dart
rename to packages/instabug_flutter/test/instabug_test.dart
diff --git a/test/network_data_test.dart b/packages/instabug_flutter/test/network_data_test.dart
similarity index 100%
rename from test/network_data_test.dart
rename to packages/instabug_flutter/test/network_data_test.dart
diff --git a/test/network_logger_test.dart b/packages/instabug_flutter/test/network_logger_test.dart
similarity index 100%
rename from test/network_logger_test.dart
rename to packages/instabug_flutter/test/network_logger_test.dart
diff --git a/test/network_manager_test.dart b/packages/instabug_flutter/test/network_manager_test.dart
similarity index 100%
rename from test/network_manager_test.dart
rename to packages/instabug_flutter/test/network_manager_test.dart
diff --git a/test/replies_test.dart b/packages/instabug_flutter/test/replies_test.dart
similarity index 100%
rename from test/replies_test.dart
rename to packages/instabug_flutter/test/replies_test.dart
diff --git a/test/session_replay_test.dart b/packages/instabug_flutter/test/session_replay_test.dart
similarity index 100%
rename from test/session_replay_test.dart
rename to packages/instabug_flutter/test/session_replay_test.dart
diff --git a/test/surveys_test.dart b/packages/instabug_flutter/test/surveys_test.dart
similarity index 100%
rename from test/surveys_test.dart
rename to packages/instabug_flutter/test/surveys_test.dart
diff --git a/test/trace_test.dart b/packages/instabug_flutter/test/trace_test.dart
similarity index 100%
rename from test/trace_test.dart
rename to packages/instabug_flutter/test/trace_test.dart
diff --git a/yarn.lock b/packages/instabug_flutter/yarn.lock
similarity index 100%
rename from yarn.lock
rename to packages/instabug_flutter/yarn.lock
diff --git a/pubspec.yaml b/pubspec.yaml
index 6bdcc3e1b..d3dc40284 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,38 +1,7 @@
-name: instabug_flutter
-version: 12.7.0
-description: >-
- Instabug empowers mobile teams to monitor, prioritize, and debug
- performance and stability issues throughout the app development lifecycle.
-homepage: https://www.instabug.com/platforms/flutter
-repository: https://github.com/Instabug/Instabug-Flutter
-documentation: https://docs.instabug.com/docs/flutter-overview
-
-dependencies:
- flutter:
- sdk: flutter
- meta: ^1.3.0
- stack_trace: ^1.10.0
-
-dev_dependencies:
- build_runner: ^2.0.3
- flutter_test:
- sdk: flutter
- lint: ^1.0.0
- # mockito v5.2.0 is needed for running Flutter 2 tests on CI
- mockito: '>=5.2.0 <=5.4.2'
- pana: ^0.21.0
- # pigeon v3.0.0 is needed for running Flutter 2 tests on CI
- pigeon: '>=3.0.0 <=10.1.5'
-
-flutter:
- plugin:
- platforms:
- android:
- package: com.instabug.flutter
- pluginClass: InstabugFlutterPlugin
- ios:
- pluginClass: InstabugFlutterPlugin
+name: instabug_flutter_mono
+publish_to: none
environment:
- sdk: ">=2.12.0 <3.0.0"
- flutter: ">=1.17.0"
+ sdk: '>=2.12.0 <4.0.0'
+dev_dependencies:
+ melos: ^3.0.0