# Third-party Dart packages

There are two types of third-party dependencies in the Fuchsia tree:

- Extracted from [pub][pub].
- Synced from Git.

## Pub dependencies

Pub dependencies are hosted at [`//third-party/dart-pkg`][dart-3p]. That project
is regularly kept up-to-date with [a script][dart-3p-script] that relies on the
`pub` tool to resolve versions and fetch sources for the packages that are used
in the tree.
This script uses a set of canonical local packages which are assumed to be
providing the necessary package coverage for the entire tree.

Additionally, projects may request third-party dependencies to be imported
through the following procedure:

1. Create a `dart_dependencies.yaml` file in the project.
2. Add the desired dependencies in that file:

   ```
   name: my_project
   dependencies:
     foo: ^4.0.0
     bar: >=0.1.0
   ```

3. Add a reference to the file in `//scripts/dart/update_3p_packages.py`.
4. Run that script.
5. Merge your changes to `dart_dependencies.yaml` to master.
6. Merge the files, downloaded by running the `update_3p_packages.py` script, and the script itself to master.
7. In the `//topaz/manifest/dart` manifest, update the project node `third_part/dart-pkg` revision attribute with the SHA from your commit in Step 6.
8. Merge your change to the `//topaz/manifest/dart` manifest file to master.

[pub]: https://pub.dartlang.org/ "Pub"
[dart-3p]: https://fuchsia.googlesource.com/third_party/dart-pkg/+/master "Third-party dependencies"
[dart-3p-script]: /scripts/dart/update_3p_packages.py "Dependencies script"
