From 3a58dc89281fbaff22c49484db9375c9a12c5640 Mon Sep 17 00:00:00 2001 From: maunzCache Date: Sun, 30 Mar 2025 14:02:12 +0200 Subject: [PATCH] fix: align project with upstream layout --- .gitattributes | 6 +- .gitignore | 53 ++++- Cargo.lock | 1 + Cargo.toml | 30 ++- binding.gyp | 30 ++- bindings/node/binding.cc | 35 ++- bindings/node/binding_test.js | 8 +- bindings/node/index.d.ts | 1 - bindings/node/index.js | 20 +- bindings/rust/build.rs | 17 +- bindings/rust/lib.rs | 43 ++-- dialects/terraform/grammar.js | 8 + dialects/terraform/package.json | 28 +-- dialects/terraform/tree-sitter.json | 7 +- grammar.js | 8 + make_grammar.js | 1 + package-lock.json | 349 +++++++++++++++++++++++++++- package.json | 46 +++- tree-sitter.json | 7 +- 19 files changed, 575 insertions(+), 123 deletions(-) diff --git a/.gitattributes b/.gitattributes index 7e2cae0..9220f16 100644 --- a/.gitattributes +++ b/.gitattributes @@ -6,7 +6,7 @@ src/parser.c linguist-generated src/tree_sitter/* linguist-generated # C bindings -bindings/c/* linguist-generated +bindings/c/** linguist-generated CMakeLists.txt linguist-generated Makefile linguist-generated @@ -35,3 +35,7 @@ go.sum linguist-generated bindings/swift/** linguist-generated Package.swift linguist-generated Package.resolved linguist-generated + +# Zig bindings +build.zig linguist-generated +build.zig.zon linguist-generated \ No newline at end of file diff --git a/.gitignore b/.gitignore index bb217d6..e575030 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,54 @@ -node_modules +# Rust artifacts +target/ + +# Node artifacts +build/ +prebuilds/ +node_modules/ + +# Swift artifacts +.build/ + +# Go artifacts +_obj/ + +# Python artifacts +.venv/ +dist/ +*.egg-info +*.whl + +# C artifacts +*.a +*.so +*.so.* +*.dylib +*.dll +*.pc +*.exp +*.lib + +# Zig artifacts +.zig-cache/ +zig-cache/ +zig-out/ + +# Example dirs +/examples/*/ + +# Grammar volatiles +*.wasm +*.obj +*.o + +# Archives +*.tar.gz +*.tgz +*.zip + +# Project misc. queries -build -target npm-debug.log log.html .env .DS_Store -/.build diff --git a/Cargo.lock b/Cargo.lock index 8016bd4..ccd01a2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -183,6 +183,7 @@ version = "0.0.1" dependencies = [ "cc", "tree-sitter", + "tree-sitter-language", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index e9328e0..4102e8f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,21 +1,33 @@ [package] name = "tree-sitter-hcl" -description = "hcl grammar for the tree-sitter parsing library" +description = "HCL grammar for tree-sitter" version = "0.0.1" -keywords = ["incremental", "parsing", "hcl"] -categories = ["parsing", "text-editors"] -repository = "https://github.com/MichaHoffmann/tree-sitter-hcl" -edition = "2018" -license = "Apache" +license = "Apache-2.0" +readme = "README.md" +keywords = ["incremental", "parsing", "tree-sitter", "hcl"] +categories = ["parser-implementations", "parsing", "text-editors"] +repository = "https://github.com/tree-sitter-grammars/tree-sitter-hcl" +edition = "2021" +autoexamples = false build = "bindings/rust/build.rs" -include = ["bindings/rust/*", "grammar.js", "queries/*", "src/*"] +include = [ + "bindings/rust/*", + "grammar.js", + "queries/*", + "src/*", + "tree-sitter.json", + "LICENSE", +] [lib] path = "bindings/rust/lib.rs" [dependencies] -tree-sitter = "0.25" +tree-sitter-language = "0.1" [build-dependencies] -cc = "1.0" +cc = "1.2" + +[dev-dependencies] +tree-sitter = "0.25" \ No newline at end of file diff --git a/binding.gyp b/binding.gyp index 5a766d1..45c18d3 100644 --- a/binding.gyp +++ b/binding.gyp @@ -2,18 +2,34 @@ "targets": [ { "target_name": "tree_sitter_hcl_binding", + "dependencies": [ + " -#include "nan.h" +#include -using namespace v8; +typedef struct TSLanguage TSLanguage; -extern "C" TSLanguage * tree_sitter_hcl(); +extern "C" TSLanguage *tree_sitter_hcl(); -namespace { +// "tree-sitter", "language" hashed with BLAKE2 +const napi_type_tag LANGUAGE_TYPE_TAG = { + 0x8AF2E5212AD58ABF, 0xD5006CAD83ABBA16 +}; -NAN_METHOD(New) {} - -void Init(Local exports, Local module) { - Local tpl = Nan::New(New); - tpl->SetClassName(Nan::New("Language").ToLocalChecked()); - tpl->InstanceTemplate()->SetInternalFieldCount(1); - - Local constructor = Nan::GetFunction(tpl).ToLocalChecked(); - Local instance = constructor->NewInstance(Nan::GetCurrentContext()).ToLocalChecked(); - Nan::SetInternalFieldPointer(instance, 0, tree_sitter_hcl()); - - Nan::Set(instance, Nan::New("name").ToLocalChecked(), Nan::New("hcl").ToLocalChecked()); - Nan::Set(module, Nan::New("exports").ToLocalChecked(), instance); +Napi::Object Init(Napi::Env env, Napi::Object exports) { + auto language = Napi::External::New(env, tree_sitter_hcl()); + language.TypeTag(&LANGUAGE_TYPE_TAG); + exports["language"] = language; + return exports; } -NODE_MODULE(tree_sitter_hcl_binding, Init) - -} // namespace +NODE_API_MODULE(tree_sitter_PARSER_NAME_binding, Init) \ No newline at end of file diff --git a/bindings/node/binding_test.js b/bindings/node/binding_test.js index 55becac..beadfc1 100644 --- a/bindings/node/binding_test.js +++ b/bindings/node/binding_test.js @@ -1,9 +1,9 @@ +/// + const assert = require("node:assert"); const { test } = require("node:test"); -const Parser = require("tree-sitter"); - test("can load grammar", () => { - const parser = new Parser(); + const parser = new (require("tree-sitter"))(); assert.doesNotThrow(() => parser.setLanguage(require("."))); -}); +}); \ No newline at end of file diff --git a/bindings/node/index.d.ts b/bindings/node/index.d.ts index efe259e..528e060 100644 --- a/bindings/node/index.d.ts +++ b/bindings/node/index.d.ts @@ -19,7 +19,6 @@ type NodeInfo = }); type Language = { - name: string; language: unknown; nodeTypeInfo: NodeInfo[]; }; diff --git a/bindings/node/index.js b/bindings/node/index.js index 8cf95f1..e92af32 100644 --- a/bindings/node/index.js +++ b/bindings/node/index.js @@ -1,19 +1,7 @@ -try { - module.exports = require("../../build/Release/tree_sitter_hcl_binding"); -} catch (error1) { - if (error1.code !== 'MODULE_NOT_FOUND') { - throw error1; - } - try { - module.exports = require("../../build/Debug/tree_sitter_hcl_binding"); - } catch (error2) { - if (error2.code !== 'MODULE_NOT_FOUND') { - throw error2; - } - throw error1 - } -} +const root = require("path").join(__dirname, "..", ".."); + +module.exports = require("node-gyp-build")(root); try { module.exports.nodeTypeInfo = require("../../src/node-types.json"); -} catch (_) {} +} catch (_) {} \ No newline at end of file diff --git a/bindings/rust/build.rs b/bindings/rust/build.rs index 8851fed..81fe5c1 100644 --- a/bindings/rust/build.rs +++ b/bindings/rust/build.rs @@ -2,18 +2,25 @@ fn main() { let src_dir = std::path::Path::new("src"); let mut c_config = cc::Build::new(); - c_config.include(src_dir); + c_config.std("c11").include(src_dir); + + #[cfg(target_env = "msvc")] + c_config.flag("-utf-8"); + c_config .flag_if_supported("-Wno-unused-parameter") .flag_if_supported("-Wno-unused-but-set-variable") .flag_if_supported("-Wno-trigraphs"); + let parser_path = src_dir.join("parser.c"); c_config.file(&parser_path); + println!("cargo:rerun-if-changed={}", parser_path.to_str().unwrap()); let scanner_path = src_dir.join("scanner.c"); - c_config.file(&scanner_path); - println!("cargo:rerun-if-changed={}", scanner_path.to_str().unwrap()); + if scanner_path.exists() { + c_config.file(&scanner_path); + println!("cargo:rerun-if-changed={}", scanner_path.to_str().unwrap()); + } - c_config.compile("parser"); - println!("cargo:rerun-if-changed={}", parser_path.to_str().unwrap()); + c_config.compile("tree-sitter-hcl"); } diff --git a/bindings/rust/lib.rs b/bindings/rust/lib.rs index 9e2ac29..e3d3c67 100644 --- a/bindings/rust/lib.rs +++ b/bindings/rust/lib.rs @@ -1,44 +1,45 @@ //! This crate provides hcl language support for the [tree-sitter][] parsing library. //! -//! Typically, you will use the [language][language func] function to add this language to a +//! Typically, you will use the [LANGUAGE][] constant to add this language to a //! tree-sitter [Parser][], and then use the parser to parse some code: //! //! ``` -//! let code = ""; +//! let code = r#" +//! "#; //! let mut parser = tree_sitter::Parser::new(); -//! parser.set_language(tree_sitter_hcl::language()).expect("Error loading hcl grammar"); +//! let language = tree_sitter_PARSER_NAME::LANGUAGE; +//! parser +//! .set_language(&language.into()) +//! .expect("Error loading TITLE_PARSER_NAME parser"); //! let tree = parser.parse(code, None).unwrap(); +//! assert!(!tree.root_node().has_error()); //! ``` //! -//! [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html -//! [language func]: fn.language.html //! [Parser]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Parser.html //! [tree-sitter]: https://tree-sitter.github.io/ -use tree_sitter::Language; +use tree_sitter_language::LanguageFn; extern "C" { - fn tree_sitter_hcl() -> Language; + fn tree_sitter_hcl() -> *const (); } -/// Get the tree-sitter [Language][] for this grammar. +/// The tree-sitter [`LanguageFn`][LanguageFn] for this grammar. /// -/// [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html -pub fn language() -> Language { - unsafe { tree_sitter_hcl() } -} +/// [LanguageFn]: https://docs.rs/tree-sitter-language/*/tree_sitter_language/struct.LanguageFn.html +pub const LANGUAGE: LanguageFn = unsafe { LanguageFn::from_raw(tree_sitter_hcl) }; /// The content of the [`node-types.json`][] file for this grammar. /// -/// [`node-types.json`]: https://tree-sitter.github.io/tree-sitter/using-parsers#static-node-types -pub const NODE_TYPES: &'static str = include_str!("../../src/node-types.json"); +/// [`node-types.json`]: https://tree-sitter.github.io/tree-sitter/using-parsers/6-static-node-types +pub const NODE_TYPES: &str = include_str!("../../src/node-types.json"); -// Uncomment these to include any queries that this grammar contains +// NOTE: uncomment these to include any queries that this grammar contains: -// pub const HIGHLIGHTS_QUERY: &'static str = include_str!("../../queries/highlights.scm"); -// pub const INJECTIONS_QUERY: &'static str = include_str!("../../queries/injections.scm"); -// pub const LOCALS_QUERY: &'static str = include_str!("../../queries/locals.scm"); -// pub const TAGS_QUERY: &'static str = include_str!("../../queries/tags.scm"); +// pub const HIGHLIGHTS_QUERY: &str = include_str!("../../queries/highlights.scm"); +// pub const INJECTIONS_QUERY: &str = include_str!("../../queries/injections.scm"); +// pub const LOCALS_QUERY: &str = include_str!("../../queries/locals.scm"); +// pub const TAGS_QUERY: &str = include_str!("../../queries/tags.scm"); #[cfg(test)] mod tests { @@ -46,7 +47,7 @@ mod tests { fn test_can_load_grammar() { let mut parser = tree_sitter::Parser::new(); parser - .set_language(&super::language()) - .expect("Error loading hcl language"); + .set_language(&super::LANGUAGE.into()) + .expect("Error loading hcl parser"); } } diff --git a/dialects/terraform/grammar.js b/dialects/terraform/grammar.js index 47337f6..c9e60c7 100644 --- a/dialects/terraform/grammar.js +++ b/dialects/terraform/grammar.js @@ -1,3 +1,11 @@ +/** + * @file HCL grammar for tree-sitter + * @license Apache-2.0 + */ + +/// +// @ts-check + const make_grammar = require('../../make_grammar'); module.exports = make_grammar('terraform'); diff --git a/dialects/terraform/package.json b/dialects/terraform/package.json index 727a24e..847e764 100644 --- a/dialects/terraform/package.json +++ b/dialects/terraform/package.json @@ -1,9 +1,9 @@ { - "name": "tree-sitter-terraform", + "name": "@tree-sitter-grammars/tree-sitter-terraform", "version": "0.0.1", "description": "Terraform grammar for tree-sitter", - "repository": "github:tree-sitter/tree-sitter-terraform", - "license": "MIT", + "repository": "github:tree-sitter/tree-sitter-hcl", + "license": "Apache-2.0", "main": "bindings/node", "types": "bindings/node", "keywords": [ @@ -14,22 +14,24 @@ ], "files": [ "grammar.js", + "tree-sitter.json", "binding.gyp", "prebuilds/**", "bindings/node/*", "queries/*", - "src/**" + "src/**", + "*.wasm" ], "dependencies": { - "node-addon-api": "^7.1.0", - "node-gyp-build": "^4.8.0" + "node-addon-api": "^8.2.1", + "node-gyp-build": "^4.8.2" }, "devDependencies": { - "prebuildify": "^6.0.0", - "tree-sitter-cli": "^0.24" + "prebuildify": "^6.0.1", + "tree-sitter-cli": "^0.25" }, "peerDependencies": { - "tree-sitter": "^0.24" + "tree-sitter": "^0.21.1" }, "peerDependenciesMeta": { "tree-sitter": { @@ -38,10 +40,8 @@ }, "scripts": { "install": "node-gyp-build", - "prebuildify": "prebuildify --napi --strip", - "build": "tree-sitter generate", - "build-wasm": "tree-sitter build --wasm", - "test": "tree-sitter test", - "parse": "tree-sitter parse" + "prestart": "tree-sitter build --wasm", + "start": "tree-sitter playground", + "test": "node --test bindings/node/*_test.js" } } diff --git a/dialects/terraform/tree-sitter.json b/dialects/terraform/tree-sitter.json index 678db04..eb84563 100644 --- a/dialects/terraform/tree-sitter.json +++ b/dialects/terraform/tree-sitter.json @@ -11,10 +11,10 @@ ], "metadata": { "version": "0.0.1", - "license": "MIT", + "license": "Apache-2.0", "description": "Terraform grammar for tree-sitter", "links": { - "repository": "https://github.com/tree-sitter/tree-sitter-terraform" + "repository": "https://github.com/tree-sitter/tree-sitter-hcl" } }, "bindings": { @@ -23,6 +23,7 @@ "node": false, "python": false, "rust": false, - "swift": false + "swift": false, + "zig": false } } diff --git a/grammar.js b/grammar.js index 26f524d..ee9ef33 100644 --- a/grammar.js +++ b/grammar.js @@ -1,3 +1,11 @@ +/** + * @file HCL grammar for tree-sitter + * @license Apache-2.0 + */ + +/// +// @ts-check + const make_grammar = require('./make_grammar'); module.exports = make_grammar('hcl'); diff --git a/make_grammar.js b/make_grammar.js index 5235c25..8bbbbd1 100644 --- a/make_grammar.js +++ b/make_grammar.js @@ -12,6 +12,7 @@ module.exports = function make_grammar(dialect) { string_lit: 2, quoted_template: 1, }; + return grammar({ name: dialect, diff --git a/package-lock.json b/package-lock.json index 24b8d10..0260782 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,28 +1,347 @@ { - "name": "tree-sitter-hcl", + "name": "@tree-sitter-grammars/tree-sitter-hcl", "version": "0.2.0-snapshot", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "tree-sitter-hcl", + "name": "@tree-sitter-grammars/tree-sitter-hcl", "version": "0.2.0-snapshot", - "license": "ISC", + "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "nan": "^2.14.2", + "node-addon-api": "^8.2.1", + "node-gyp-build": "^4.8.2" + }, + "devDependencies": { + "prebuildify": "^6.0.1", "tree-sitter-cli": "^0.25" + }, + "peerDependencies": { + "tree-sitter": "^0.21.1" + }, + "peerDependenciesMeta": { + "tree-sitter": { + "optional": true + } } }, - "node_modules/nan": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.0.tgz", - "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==", + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT" }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true, + "license": "ISC" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true, + "license": "MIT" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-abi": { + "version": "3.74.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.74.0.tgz", + "integrity": "sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.3.1.tgz", + "integrity": "sha512-lytcDEdxKjGJPTLEfW4mYMigRezMlyJY8W4wxJK8zE533Jlb8L8dRuObJFWg2P+AuOIxoCgKF+2Oq4d4Zd0OUA==", + "license": "MIT", + "engines": { + "node": "^18 || ^20 || >= 21" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/npm-run-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz", + "integrity": "sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/prebuildify": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/prebuildify/-/prebuildify-6.0.1.tgz", + "integrity": "sha512-8Y2oOOateom/s8dNBsGIcnm6AxPmLH4/nanQzL5lQMU+sC0CMhzARZHizwr36pUPLdvBnOkCNQzxg4djuFSgIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "mkdirp-classic": "^0.5.3", + "node-abi": "^3.3.0", + "npm-run-path": "^3.1.0", + "pump": "^3.0.0", + "tar-fs": "^2.1.0" + }, + "bin": { + "prebuildify": "bin.js" + } + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/tar-fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz", + "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/tree-sitter-cli": { "version": "0.25.3", "resolved": "https://registry.npmjs.org/tree-sitter-cli/-/tree-sitter-cli-0.25.3.tgz", "integrity": "sha512-Bk6ZUXG+cKnwZpfR/te4NDrKld90p6350eqWlbLwSpV9/8vmL/x8LCw+3k7quY9oMDaYoMXHMvokXJbkM5A7bA==", + "dev": true, "hasInstallScript": true, "license": "MIT", "bin": { @@ -31,6 +350,20 @@ "engines": { "node": ">=12.0.0" } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" } } } diff --git a/package.json b/package.json index 16a82a3..abeac43 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,48 @@ { - "name": "tree-sitter-hcl", + "name": "@tree-sitter-grammars/tree-sitter-hcl", "version": "0.2.0-snapshot", - "description": "", - "main": "bindings/node", + "description": "HCL grammar for tree-sitter", + "repository": "github:tree-sitter-grammars/tree-sitter-hcl", + "license": "Apache-2.0", "author": "", - "license": "ISC", + "main": "bindings/node", + "types": "bindings/node", + "keywords": [ + "incremental", + "parsing", + "tree-sitter", + "hcl" + ], + "files": [ + "grammar.js", + "tree-sitter.json", + "binding.gyp", + "prebuilds/**", + "bindings/node/*", + "queries/*", + "src/**", + "*.wasm" + ], "dependencies": { - "nan": "^2.14.2", + "node-addon-api": "^8.2.1", + "node-gyp-build": "^4.8.2" + }, + "devDependencies": { + "prebuildify": "^6.0.1", "tree-sitter-cli": "^0.25" + }, + "peerDependencies": { + "tree-sitter": "^0.21.1" + }, + "peerDependenciesMeta": { + "tree-sitter": { + "optional": true + } + }, + "scripts": { + "install": "node-gyp-build", + "prestart": "tree-sitter build --wasm", + "start": "tree-sitter playground", + "test": "node --test bindings/node/*_test.js" } } diff --git a/tree-sitter.json b/tree-sitter.json index d5e696a..ff6eb44 100644 --- a/tree-sitter.json +++ b/tree-sitter.json @@ -14,8 +14,8 @@ ], "metadata": { "version": "0.2.0-snapshot", - "license": "ISC", - "description": "", + "license": "Apache-2.0", + "description": "HCL grammar for tree-sitter", "links": { "repository": "https://github.com/tree-sitter/tree-sitter-hcl" } @@ -26,6 +26,7 @@ "node": true, "python": false, "rust": true, - "swift": true + "swift": true, + "zig": false } }