# Copyright 2025 The Flutter Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd.
name: devtools_app
description: Web-based performance tooling for Dart and Flutter.
publish_to: none

# Note: this version should only be updated by running the 'dt update-version'
# command that updates the version here and in 'devtools.dart'.
version: 2.43.0-dev.0

repository: https://github.com/flutter/devtools/tree/master/packages/devtools_app

environment:
  sdk: ">=3.7.0-160.0.dev <4.0.0"
  flutter: ">=3.27.0-1.0.pre.563"

resolution: workspace

dependencies:
  async: ^2.0.0
  collection: ^1.15.0
  dap: ^1.1.0
  dds_service_extensions: ^2.0.0
  devtools_app_shared:
  devtools_extensions:
  devtools_shared:
  dtd: ^2.4.0
  file: ^7.0.0
  file_selector: ^1.0.0
  fixnum: ^1.1.0
  flutter:
    sdk: flutter
  flutter_markdown: ^0.7.1
  flutter_web_plugins:
    sdk: flutter
  http: ^1.1.0
  image: ^4.1.3
  intl: ^0.19.0
  logging: ^1.1.1
  meta: ^1.9.1
  mime: ^2.0.0
  path: ^1.8.0
  perfetto_ui_compiled:
    path: ../../third_party/packages/perfetto_ui_compiled
  pointer_interceptor: ^0.10.1+1
  provider: ^6.0.2
  source_map_stack_trace: ^2.1.2
  source_maps: ^0.10.12
  sse: ^4.1.2
  stack_trace: ^1.12.0
  string_scanner: ^1.1.0
  unified_analytics: ^7.0.0
  vm_service: ^14.2.5
  vm_service_protos: ^1.0.0
  vm_snapshot_analysis: ^0.7.6
  web: ^1.0.0
  web_socket_channel: ^3.0.0

dev_dependencies:
  args: ^2.4.2
  build_runner: ^2.3.3
  devtools_test:
    path: ../devtools_test
  fake_async: ^1.3.1
  flutter_driver:
    sdk: flutter
  flutter_test:
    sdk: flutter
  integration_test:
    sdk: flutter
  json_rpc_2: ^3.0.2
  mockito: ^5.4.1
  stager: ^1.0.1
  stream_channel: ^2.1.1
  test: ^1.21.0
  web_benchmarks: ^4.0.0
  webkit_inspection_protocol: ">=0.5.0 <2.0.0"

flutter:
  uses-material-design: true
  assets:
    - assets/
    - assets/img/
    - assets/img/doc/
    - assets/img/layout_explorer/
    - assets/img/layout_explorer/cross_axis_alignment/
    - assets/img/layout_explorer/main_axis_alignment/
    - assets/img/legend/
    - icons/
    - icons/actions/
    - icons/app_bar/
    - icons/custom/
    - icons/material_symbols/
    - icons/general/
    - icons/gutter/
    - icons/inspector/
    - icons/inspector/widget_icons/
    - icons/memory/
    - icons/perf/
    # We have to explicitly list every asset under `packages/perfetto_ui_compiled/`
    # since directory support is not available for assets under `packages/`.
    # See (https://github.com/flutter/flutter/issues/112019).
    - packages/perfetto_ui_compiled/dist/index.html
    - packages/perfetto_ui_compiled/dist/service_worker.js
    - packages/perfetto_ui_compiled/dist/devtools/devtools_dark.css
    - packages/perfetto_ui_compiled/dist/devtools/devtools_light.css
    - packages/perfetto_ui_compiled/dist/devtools/devtools_shared.css
    - packages/perfetto_ui_compiled/dist/devtools/devtools_theme_handler.js
    # The version number for all the Perfetto asset paths below is updated by running
    # `dt update-perfetto`.
    - packages/perfetto_ui_compiled/dist/v34.0-16f63abe3/engine_bundle.js
    - packages/perfetto_ui_compiled/dist/v34.0-16f63abe3/frontend_bundle.js
    - packages/perfetto_ui_compiled/dist/v34.0-16f63abe3/manifest.json
    - packages/perfetto_ui_compiled/dist/v34.0-16f63abe3/perfetto.css
    - packages/perfetto_ui_compiled/dist/v34.0-16f63abe3/trace_processor.wasm
    - packages/perfetto_ui_compiled/dist/v34.0-16f63abe3/assets/brand.png
    - packages/perfetto_ui_compiled/dist/v34.0-16f63abe3/assets/favicon.png
    - packages/perfetto_ui_compiled/dist/v34.0-16f63abe3/assets/logo-128.png
    - packages/perfetto_ui_compiled/dist/v34.0-16f63abe3/assets/logo-3d.png
    - packages/perfetto_ui_compiled/dist/v34.0-16f63abe3/assets/scheduling_latency.png
    - packages/perfetto_ui_compiled/dist/v34.0-16f63abe3/assets/MaterialSymbolsOutlined.woff2
    - packages/perfetto_ui_compiled/dist/v34.0-16f63abe3/assets/Roboto-100.woff2
    - packages/perfetto_ui_compiled/dist/v34.0-16f63abe3/assets/Roboto-300.woff2
    - packages/perfetto_ui_compiled/dist/v34.0-16f63abe3/assets/Roboto-400.woff2
    - packages/perfetto_ui_compiled/dist/v34.0-16f63abe3/assets/Roboto-500.woff2
    - packages/perfetto_ui_compiled/dist/v34.0-16f63abe3/assets/RobotoCondensed-Light.woff2
    - packages/perfetto_ui_compiled/dist/v34.0-16f63abe3/assets/RobotoCondensed-Regular.woff2
    - packages/perfetto_ui_compiled/dist/v34.0-16f63abe3/assets/RobotoMono-Regular.woff2

  fonts:
    - family: Roboto
      fonts:
        - asset: fonts/Roboto/Roboto-Thin.ttf
          weight: 100
        - asset: fonts/Roboto/Roboto-Light.ttf
          weight: 300
        - asset: fonts/Roboto/Roboto-Regular.ttf
          weight: 400
        - asset: fonts/Roboto/Roboto-Medium.ttf
          weight: 500
        - asset: fonts/Roboto/Roboto-Bold.ttf
          weight: 700
        - asset: fonts/Roboto/Roboto-Black.ttf
          weight: 900
    - family: RobotoMono
      fonts:
        - asset: fonts/Roboto_Mono/RobotoMono-Thin.ttf
          weight: 100
        - asset: fonts/Roboto_Mono/RobotoMono-Light.ttf
          weight: 300
        - asset: fonts/Roboto_Mono/RobotoMono-Regular.ttf
          weight: 400
        - asset: fonts/Roboto_Mono/RobotoMono-Medium.ttf
          weight: 500
        - asset: fonts/Roboto_Mono/RobotoMono-Bold.ttf
          weight: 700
    - family: Octicons
      fonts:
        - asset: fonts/Octicons.ttf
