Giter Club home page Giter Club logo

deno_ast's Introduction

deno_ast

Discord Chat

Source text parsing, lexing, and AST related functionality for Deno.

use deno_ast::parse_module;
use deno_ast::MediaType;
use deno_ast::ParseParams;
use deno_ast::SourceTextInfo;

let source_text = "class MyClass {}";
let text_info = SourceTextInfo::new(source_text.into());
let parsed_source = parse_module(ParseParams {
  specifier: deno_ast::ModuleSpecifier::parse("file:///my_file.ts").unwrap(),
  media_type: MediaType::TypeScript,
  text_info,
  capture_tokens: true,
  maybe_syntax: None,
  scope_analysis: false,
}).expect("should parse");

// returns the comments
parsed_source.comments();
// returns the tokens if captured
parsed_source.tokens();
// returns the module (AST)
parsed_source.module();
// returns the `SourceTextInfo`
parsed_source.text_info();

swc upgrades

We upgrade swc about once a month. Upgrading swc is a very involved process that often requires many changes in downstream Deno crates. We also test the new version of swc in all downstream crates before merging a PR into deno_ast that updates swc.

Please do not open a PR for upgrading swc unless you have stated you are going to work on it in the issue tracker and have run the tests on all downstream crates.

To upgrade swc:

  1. Checkout the following repositories in sibling directories to this repository (ex. /home/david/dev/deno_graph, /home/david/dev/deno_ast):
  2. Ensure they all have upstream remotes set for the urls specified above. For example, your deno_graph repo should have git remote add upstream https://github.com/denoland/deno_graph.
  3. Run ./scripts/update_swc_deps.ts
  4. Run ./scripts/01_setup.ts
  5. Run ./scripts/02_build.ts and fix any build errors.
  6. Run ./scripts/03_test.ts and fix any failing tests.
    • At this point, all the tests should be passing in all the repositories.
  7. Open a PR for upgrading deno_ast.
  8. Merge the PR and publish a new version of deno_ast using the release workflow.
  9. At this point, bump the version of deno_ast and open PRs for deno_graph, deno_lint, and dprint-plugin-typescript (note: ./scripts/04_confirm.ts might be helpful to automate some of this. Read its source code to understand it so that you can deal with any problems that may arise).
  10. Merge the PR deno_graph and publish using its release workflow.
  11. Open PRs to deno_emit, deno_doc, and eszip.
  12. Merge those PRs and do releases. Also merge and release deno_lint and dprint-plugin-typescript (Bartek and David have access to publish dprint-plugin-typescript).
  13. Open a PR to Deno with the versions bumped and merge the PR.

deno_ast's People

Contributors

await-ovo avatar bartlomieju avatar cd-work avatar cre3per avatar denobot avatar dsherret avatar jollytoad avatar kitsonk avatar lucacasonato avatar magurotuna avatar marvinhagemeister avatar maxxcs avatar ultirequiem avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.