ES2023

Dart bindings for the ECMAScript 2023 specification.

Overview

ES2023 provides Dart bindings for the ECMAScript 2023 specification, enabling developers to work with the core JavaScript types and APIs from within Dart applications.

Installation

Add this package to your pubspec.yaml:

dependencies:
  es2023: ^0.1.0

Then run:

dart pub get

Usage

Basic Example

import 'dart:js_interop';

import 'package:es2023/es2023.dart';
import 'package:web/web.dart';

void main() {
  window.setInterval(
    (() => displayTime()).toJS,
    null,
    100,
  );
}

void displayTime() {
  final root = document.querySelector('#root');
  final now = Date.$2();
  root?.textContent =
      '${now.toLocaleDateString$2()} ${now.toLocaleTimeString$2()}';
}

The example above shows how to create an instance of the JavaScript type Date and use its methods toLocaleDateString() and toLocaleTimeString().

In the Dart code, the methods have a suffix $2. This is added in case that the method is overloading in JavaScript, which is not supported in Dart.

To run the example (requires package webdev globally installed):

webdev serve example

How the package is created

The bindings are generated using the packages

  • ts-ast-export: Generates a representation of a TypeScript definition file in JSON format.
  • ts_interop: Creates Dart bindings from the JSON file.

Both packages are work in progress.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

Changelog

See CHANGELOG.md for a detailed history of changes.