# 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.50.0-dev.0

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

environment:
  sdk: ">=3.8.0-265.0.dev <4.0.0"
  flutter: ">=3.32.0-1.0.pre.73"

resolution: workspace

dependencies:
  async: ^2.0.0
  collection: ^1.15.0
  dap: ^1.1.0
  dart_service_protocol_shared: ^0.0.3
  dds_service_extensions: ^2.0.2
  devtools_app_shared:
  devtools_extensions:
  devtools_shared:
  dtd: ^4.0.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
  json_rpc_2: ^3.0.2
  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.4.0
  unified_analytics: ^7.0.0
  vm_service: ^15.0.2
  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.5.4
  devtools_test:
    path: ../devtools_test
  fake_async: ^1.3.1
  flutter_driver:
    sdk: flutter
  flutter_test:
    sdk: flutter
  integration_test:
    sdk: flutter
  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"

dependency_overrides:
  # Necessary while `stager` dep disallows `source_gen` 2.0.0. Remove when
  # `stager` allows `source_gen` 2.0.0.
  source_gen: ^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/
    # TODO(elliette): The inspector icons are also used in the Property Editor.
    # They should be moved to a common directory.
    - 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
