// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

/// Utilities for interoperating with JavaScript.
///
/// > [!CAUTION]
/// > This package is discontinued. Prefer using
/// > [`dart:js_interop`](https://api.dart.dev/dart-js_interop/dart-js_interop-library.html)
/// > for JS interop. See the
/// > [JS interop documentation](https://dart.dev/interop/js-interop) for more
/// > details.
@Deprecated('Use dart:js_interop instead')
library;

export 'dart:js_util';
