From: Ruben Beltran del Rio Date: Wed, 4 Oct 2023 11:39:56 +0000 (+0200) Subject: Initial Commit X-Git-Url: https://git.r.bdr.sh/rbdr/tree-sitter-api-notation/commitdiff_plain/dc87cd894bad9ad0202dcd4a89e7d0af47c53fc9 Initial Commit --- dc87cd894bad9ad0202dcd4a89e7d0af47c53fc9 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b8cf98d --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.tool-versions +node_modules +build diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..90deb28 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "tree-sitter-apinotation" +description = "apinotation grammar for the tree-sitter parsing library" +version = "0.0.1" +keywords = ["incremental", "parsing", "apinotation"] +categories = ["parsing", "text-editors"] +repository = "https://github.com/tree-sitter/tree-sitter-apinotation" +edition = "2018" +license = "MIT" + +build = "bindings/rust/build.rs" +include = [ + "bindings/rust/*", + "grammar.js", + "queries/*", + "src/*", +] + +[lib] +path = "bindings/rust/lib.rs" + +[dependencies] +tree-sitter = "~0.20.10" + +[build-dependencies] +cc = "1.0" diff --git a/binding.gyp b/binding.gyp new file mode 100644 index 0000000..9b1689e --- /dev/null +++ b/binding.gyp @@ -0,0 +1,19 @@ +{ + "targets": [ + { + "target_name": "tree_sitter_apinotation_binding", + "include_dirs": [ + " +#include "nan.h" + +using namespace v8; + +extern "C" TSLanguage * tree_sitter_apinotation(); + +namespace { + +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_apinotation()); + + Nan::Set(instance, Nan::New("name").ToLocalChecked(), Nan::New("apinotation").ToLocalChecked()); + Nan::Set(module, Nan::New("exports").ToLocalChecked(), instance); +} + +NODE_MODULE(tree_sitter_apinotation_binding, Init) + +} // namespace diff --git a/bindings/node/index.js b/bindings/node/index.js new file mode 100644 index 0000000..d7f66fd --- /dev/null +++ b/bindings/node/index.js @@ -0,0 +1,19 @@ +try { + module.exports = require("../../build/Release/tree_sitter_apinotation_binding"); +} catch (error1) { + if (error1.code !== 'MODULE_NOT_FOUND') { + throw error1; + } + try { + module.exports = require("../../build/Debug/tree_sitter_apinotation_binding"); + } catch (error2) { + if (error2.code !== 'MODULE_NOT_FOUND') { + throw error2; + } + throw error1 + } +} + +try { + module.exports.nodeTypeInfo = require("../../src/node-types.json"); +} catch (_) {} diff --git a/bindings/rust/build.rs b/bindings/rust/build.rs new file mode 100644 index 0000000..c6061f0 --- /dev/null +++ b/bindings/rust/build.rs @@ -0,0 +1,40 @@ +fn main() { + let src_dir = std::path::Path::new("src"); + + let mut c_config = cc::Build::new(); + c_config.include(&src_dir); + 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); + + // If your language uses an external scanner written in C, + // then include this block of code: + + /* + let scanner_path = src_dir.join("scanner.c"); + 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()); + + // If your language uses an external scanner written in C++, + // then include this block of code: + + /* + let mut cpp_config = cc::Build::new(); + cpp_config.cpp(true); + cpp_config.include(&src_dir); + cpp_config + .flag_if_supported("-Wno-unused-parameter") + .flag_if_supported("-Wno-unused-but-set-variable"); + let scanner_path = src_dir.join("scanner.cc"); + cpp_config.file(&scanner_path); + cpp_config.compile("scanner"); + println!("cargo:rerun-if-changed={}", scanner_path.to_str().unwrap()); + */ +} diff --git a/bindings/rust/lib.rs b/bindings/rust/lib.rs new file mode 100644 index 0000000..ee3d344 --- /dev/null +++ b/bindings/rust/lib.rs @@ -0,0 +1,52 @@ +//! This crate provides apinotation language support for the [tree-sitter][] parsing library. +//! +//! Typically, you will use the [language][language func] function to add this language to a +//! tree-sitter [Parser][], and then use the parser to parse some code: +//! +//! ``` +//! let code = ""; +//! let mut parser = tree_sitter::Parser::new(); +//! parser.set_language(tree_sitter_apinotation::language()).expect("Error loading apinotation grammar"); +//! let tree = parser.parse(code, None).unwrap(); +//! ``` +//! +//! [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; + +extern "C" { + fn tree_sitter_apinotation() -> Language; +} + +/// Get the tree-sitter [Language][] for this grammar. +/// +/// [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html +pub fn language() -> Language { + unsafe { tree_sitter_apinotation() } +} + +/// 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"); + +// 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"); + +#[cfg(test)] +mod tests { + #[test] + fn test_can_load_grammar() { + let mut parser = tree_sitter::Parser::new(); + parser + .set_language(super::language()) + .expect("Error loading apinotation language"); + } +} diff --git a/grammar.js b/grammar.js new file mode 100644 index 0000000..e74c27b --- /dev/null +++ b/grammar.js @@ -0,0 +1,105 @@ +module.exports = grammar({ + name: 'apinotation', + + rules: { + source_file: $ => repeat( + seq( + choice( + $.definition, + $.comment + ), + repeat($._newline) + ) + ), + definition: $ => prec.right(seq( + $.entry, + $._newline, + repeat( + choice( + $.member, + $.comment + ) + ) + )), + entry: $ => prec.right(seq( + $.identifier, + repeat( + seq( + token('.'), + $.identifier + ) + ) + )), + member: $ => seq( + $.member_type, + $._label, + optional($.type_annotation), + optional($.parameter_list), + optional($.return_statement), + optional($.throw_statement), + $._newline, + ), + member_type: $ => choice( + '::', + '->', + '<-', + '~>', + '<~', + '+>', + '<+', + '#', + '+', + '-' + ), + parameter_list: $ => seq( + '(', + optional($._identifier_list), + ')' + ), + return_statement: $ => seq( + '=>', + $.entry + ), + throw_statement: $ => seq( + '#>', + $._entry_list + ), + _entry_list: $ => prec.left(seq( + $.entry, + repeat( + seq( + ',', + $.entry + ) + ) + )), + _identifier_list: $ => seq( + $.identifier, + repeat( + seq( + ',', + $.identifier + ) + ) + ), + identifier: $ => prec.left(seq( + $._label, + optional($.type_annotation), + optional($.parameter_list), + optional($.return_statement), + optional($.throw_statement), + )), + type_annotation: $ => seq( + '<', + $._entry_list, + '>' + ), + comment: $ => seq( + '//', + /[^\n]*/, + $._newline, + ), + _label: $ => /[a-zA-Z0-9][a-zA-Z0-9_-]*/, + _newline: $ => token('\n') + } +}); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..005b050 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2143 @@ +{ + "name": "tree-sitter-api-notation", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "tree-sitter-api-notation", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "nan": "^2.18.0" + }, + "devDependencies": { + "tree-sitter-cli": "^0.20.8" + } + }, + "node_modules/.pnpm/nan@2.18.0/node_modules/nan": { + "version": "2.18.0", + "license": "MIT", + "devDependencies": { + "bindings": "~1.2.1", + "commander": "^2.8.1", + "glob": "^5.0.14", + "node-gyp": "~8.4.1", + "readable-stream": "^2.1.4", + "request": "=2.81.0", + "tap": "~0.7.1", + "xtend": "~4.0.0" + } + }, + "node_modules/.pnpm/tree-sitter-cli@0.20.8/node_modules/tree-sitter-cli": { + "version": "0.20.8", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "tree-sitter": "cli.js" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dev": true, + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha512-I/bSHSNEcFFqXLf91nchoNB9D1Kie3QKcWdchYUaoIg1+1bdWDkdfdlvdIOJbi9U8xR0y+MWc5D+won9v95WlQ==", + "dev": true, + "dependencies": { + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/are-we-there-yet/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, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha512-u1L0ZLywRziOVjUhRxI0Qg9G+4RnFB9H/Rq40YWn0dieDgO7vAYeJz6jKAO6t/aruzlDFLAPkQTT87e+f8Imaw==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha512-JnJpAS0p9RmixkOvW2XwDxxzs1bd4/VAGIl6Q0EC5YOo+p+hqIhtDhn/nmFnB/xUNXbLkpE2mOjgVIBRKD4xYw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bindings": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", + "integrity": "sha512-u4cBQNepWxYA55FunZSM7wMi55yQaN0otnhhilNoWHq0MfOfJeQx0v0mRRpolGOExPjZcl6FtB0BB8Xkb88F0g==", + "dev": true + }, + "node_modules/boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha512-KbiZEa9/vofNcVJXGwdWWn25reQ3V3dHBWbS07FTF3/TOehLnm9GEhJV4T6ZvGPkShRpmUqYwnaCrkj0mRnP6Q==", + "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", + "dev": true, + "dependencies": { + "hoek": "2.x.x" + }, + "engines": { + "node": ">=0.10.40" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/buffer-equal": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.2.tgz", + "integrity": "sha512-4hr0gS7+NK47X6WbA/okVFrN5qGh3WLT7N3hMRv7+hlkXnbUIdU2u05n6r0RQv6cq6xke06nVl70r0NW0WM2OQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/bunker": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/bunker/-/bunker-0.1.2.tgz", + "integrity": "sha512-YnahkcXBNT522S46k5LUA9P18lzvgkunbMl0qIJQ8oeRMQ+dAg3YI3k32q5TnO+AAUErFHO6R768To6jslgYmQ==", + "dev": true, + "dependencies": { + "burrito": ">=0.2.5 <0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/burrito": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/burrito/-/burrito-0.2.12.tgz", + "integrity": "sha512-ZhhT5iVTAgzQ+s8rily7m45Swxe/cU3dVCHTzqmHVWD/cc0Ds3W4Q4MExbkevY+fm0Me3lEwpehIy6TH7p+ehw==", + "dev": true, + "dependencies": { + "traverse": "~0.5.1", + "uglify-js": "~1.1.1" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/burrito/node_modules/traverse": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.5.2.tgz", + "integrity": "sha512-PUBVcfB3RqgLpzgTRGNiqK4duqrDbgGa1bobbUtzUwLiBNAjZ7vd5eCOdBxqZ/Fgezagr9o69IxP2fZp41RGFA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "node_modules/charm": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/charm/-/charm-0.1.2.tgz", + "integrity": "sha512-syedaZ9cPe7r3hoQA9twWYKu5AIyCswN5+szkmPBe9ccdLrj4bYaCnLVPTLd2kgVRc7+zoX4tyPgRnFKCj5YjQ==", + "dev": true + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha512-FFN5KwpvvQTTS5hWPxrU8/QE4kQUc6uwZcrnlMBN82t1MgAtq8mnoDwINBly9Tdr02seeIIhtdF+UH1feBYGog==", + "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", + "dev": true, + "dependencies": { + "boom": "2.x.x" + }, + "engines": { + "node": ">=0.10.40" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dashdash/node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-data-property": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", + "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/difflet": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/difflet/-/difflet-0.2.6.tgz", + "integrity": "sha512-ruldDDRmY1t678UOAJBng6sL77f62SqjHj0498YC0EJhxIe2yKkqJn2qEchwG3eU/dqJ/RxPZkAnYjePS4pDCw==", + "dev": true, + "dependencies": { + "charm": "0.1.x", + "deep-is": "0.1.x", + "traverse": "0.6.x" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true, + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha512-8HWGSLAPr+AG0hBpsqi5Ob8HrLStN/LWeqhpFl14d7FJgHK48TmgLoALPz69XSUR65YJzDfLUX/BM8+MLJLghQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/getpass/node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", + "dev": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha512-f8xf2GOR6Rgwc9FPTLNzgwB+JQ2/zMauYXSWmX5YV5acex6VomT0ocSuwR7BfXo5MpHi+jL+saaux2fwsGJDKQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha512-5Gbp6RAftMYYV3UEI4c4Vv3+a4dQ7taVyvHt+/L6kRt+f4HX1GweAk5UDWN0SvdVnRBzGQ6OG89pGaD9uSFnVw==", + "deprecated": "this library is no longer supported", + "dev": true, + "dependencies": { + "ajv": "^4.9.1", + "har-schema": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha512-X8xbmTc1cbPXcQV4WkLcRMALuyoxhfpFATmyuCxJPOAvrDS4DNnsTAOmKUxMTOWU6TzrTOkxPKwIx5ZOpJVSrg==", + "deprecated": "This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.", + "dev": true, + "dependencies": { + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" + }, + "engines": { + "node": ">=0.10.32" + } + }, + "node_modules/hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha512-V6Yw1rIcYV/4JsnggjBU0l4Kr+EXhpwqXRusENU1Xx6ro00IHPHYNynCuBTOZAPlr3AAmLvchH9I7N/VUdvOwQ==", + "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", + "dev": true, + "engines": { + "node": ">=0.10.40" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha512-iUn0NcRULlDGtqNLN1Jxmzayk8ogm7NToldASyZBpM2qggbphjXzNOiw3piN8tgz+e/DRs6X5gAzFwTI6BCRcg==", + "dev": true, + "dependencies": { + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "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 + }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "node_modules/json-stable-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz", + "integrity": "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==", + "dev": true, + "dependencies": { + "jsonify": "^0.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "node_modules/jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/jsprim/node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "dev": true, + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nan": { + "resolved": "node_modules/.pnpm/nan@2.18.0/node_modules/nan", + "link": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/node-gyp/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha512-VlF07iu3VV3+BTXj43Nmp6Irt/G7j/NgEctUS6IweH1RGhURjjCc2NWtzXFPXXWWfc7hgbXQdtiQu2LGp6MxUg==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "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, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha512-YHk5ez1hmMR5LOkb9iJkLKqoBlL7WD5M8ljC75ZfzXriuBIVNuecaXuU7e+hOwyqf24Wxhh7Vxgt7Hnw9288Tg==", + "dev": true + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/qs": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.1.tgz", + "integrity": "sha512-LQy1Q1fcva/UsnP/6Iaa4lVeM49WiOitu2T4hZCyA/elLKu37L99qcBJk4VCCk+rdLvnMzfKyiN3SZTqdAZGSQ==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha512-IZnsR7voF0miGSu29EXPRgPTuEsI/+aibNSBbN1pplrfartF5wDYGADz3iD9vmBVf2r00rckWZf8BtS5kk7Niw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dev": true, + "dependencies": { + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/runforcover": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/runforcover/-/runforcover-0.0.2.tgz", + "integrity": "sha512-yarCIK2HcAOadqnKW419+FA38qpWDCKcOr5RZU+jnyLL/hn3No9BHZY+YJDEzvQ0k8Oyl7ffLjZv9ZUxvyKoLQ==", + "dev": true, + "dependencies": { + "bunker": "0.1.X" + }, + "engines": { + "node": "*" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha512-7bgVOAnPj3XjrKY577S+puCKGCRlUrcrEdsMeRXlg9Ghf5df/xNi6sONUa43WrHUd3TjJBF7O04jYoiY0FVa0A==", + "deprecated": "This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.", + "dev": true, + "dependencies": { + "hoek": "2.x.x" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dev": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sshpk/node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stringstream": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", + "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==", + "dev": true + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/tap/-/tap-0.7.1.tgz", + "integrity": "sha512-Dh7fyYFJzj9VZP/Oa79kFWeq2KxPwjCNHNWc0mXJTqUq7PKLrhg7d/mR748Bty9TKHsbMxpFLHn1YJZVjxJaug==", + "dev": true, + "dependencies": { + "buffer-equal": "~0.0.0", + "deep-equal": "^1.0.0", + "difflet": "~0.2.0", + "glob": "^4.3.5", + "inherits": "*", + "mkdirp": "^0.5.0", + "nopt": "^3.0.1", + "runforcover": "~0.0.2", + "slide": "*", + "yamlish": "*" + }, + "bin": { + "tap": "bin/tap.js" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tap/node_modules/glob": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", + "integrity": "sha512-I0rTWUKSZKxPSIAIaqhSXTM/DiII6wame+rEC3cFA5Lqmr9YmdL7z6Hj9+bdWtTvoY1Su4/OiMLmb37Y7JzvJQ==", + "dev": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^2.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tap/node_modules/minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha512-jQo6o1qSVLEWaw3l+bwYA2X0uLuK2KjNh2wjgO7Q/9UJnXr1Q3yQKR8BI0/Bt/rPg75e6SMW4hW/6cBHVTZUjA==", + "deprecated": "Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue", + "dev": true, + "dependencies": { + "brace-expansion": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tap/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/tap/node_modules/nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/tar": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, + "dependencies": { + "punycode": "^1.4.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/traverse": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", + "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tree-sitter-cli": { + "resolved": "node_modules/.pnpm/tree-sitter-cli@0.20.8/node_modules/tree-sitter-cli", + "link": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "node_modules/uglify-js": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.1.1.tgz", + "integrity": "sha512-YYY9Dle1leC+btgrHnAR05eq0aRdcPJsXlYYD+SYw2lqc5HFuFNHg3wWEW4SNE0iXXEUl0fz43gTQ3r1YK76rg==", + "dev": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": "*" + } + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "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 + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "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 + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yamlish": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/yamlish/-/yamlish-0.0.7.tgz", + "integrity": "sha512-MfSpIJj5Hmm0Yz788MEW1NWfdOhZR/O0WPrdiUeWBKTtCNm0jZwMJZhScqveQoE6CvUoXOQBs5/1I/nC6Sbj/w==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..4b48420 --- /dev/null +++ b/package.json @@ -0,0 +1,36 @@ +{ + "name": "tree-sitter-api-notation", + "version": "1.0.0", + "description": "API Notation grammar for tree-sitter", + "main": "bindings/node", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": ["parser", "api-notation"], + "author": "Ruben Beltran del Rio", + "license": "MIT", + "dependencies": { + "nan": "^2.18.0" + }, + "devDependencies": { + "tree-sitter-cli": "^0.20.8" + }, + "scripts": { + "build": "tree-sitter generate && node-gyp build", + "parse": "tree-sitter parse", + "test": "tree-sitter test" + }, + "tree-sitter": [ + { + "scope": "source.api-notation", + "file-types": [ + "apinotation", + "api" + ], + "highlights": [ + "queries/highlights.scm" + ], + "injection-regex": "^(apinotation|api-notation)$" + } + ] +} diff --git a/queries/highlights.scm b/queries/highlights.scm new file mode 100644 index 0000000..9536ffd --- /dev/null +++ b/queries/highlights.scm @@ -0,0 +1,8 @@ +(type_annotation) @type +(member_type) @operator +(member) @property +(parameter_list) @function +(parameter_list (identifier) @parameter) +(identifier) @keyword +(throw_statement) @operator +(return_statement) @operator diff --git a/src/grammar.json b/src/grammar.json new file mode 100644 index 0000000..1d2d121 --- /dev/null +++ b/src/grammar.json @@ -0,0 +1,431 @@ +{ + "name": "apinotation", + "rules": { + "source_file": { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "definition" + }, + { + "type": "SYMBOL", + "name": "comment" + } + ] + }, + { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "_newline" + } + } + ] + } + }, + "definition": { + "type": "PREC_RIGHT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "entry" + }, + { + "type": "SYMBOL", + "name": "_newline" + }, + { + "type": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "member" + }, + { + "type": "SYMBOL", + "name": "comment" + } + ] + } + } + ] + } + }, + "entry": { + "type": "PREC_RIGHT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "TOKEN", + "content": { + "type": "STRING", + "value": "." + } + }, + { + "type": "SYMBOL", + "name": "identifier" + } + ] + } + } + ] + } + }, + "member": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "member_type" + }, + { + "type": "SYMBOL", + "name": "_label" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "type_annotation" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "parameter_list" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "return_statement" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "throw_statement" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SYMBOL", + "name": "_newline" + } + ] + }, + "member_type": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "::" + }, + { + "type": "STRING", + "value": "->" + }, + { + "type": "STRING", + "value": "<-" + }, + { + "type": "STRING", + "value": "~>" + }, + { + "type": "STRING", + "value": "<~" + }, + { + "type": "STRING", + "value": "+>" + }, + { + "type": "STRING", + "value": "<+" + }, + { + "type": "STRING", + "value": "#" + }, + { + "type": "STRING", + "value": "+" + }, + { + "type": "STRING", + "value": "-" + } + ] + }, + "parameter_list": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_identifier_list" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "return_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "=>" + }, + { + "type": "SYMBOL", + "name": "entry" + } + ] + }, + "throw_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "#>" + }, + { + "type": "SYMBOL", + "name": "_entry_list" + } + ] + }, + "_entry_list": { + "type": "PREC_LEFT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "entry" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "entry" + } + ] + } + } + ] + } + }, + "_identifier_list": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "identifier" + } + ] + } + } + ] + }, + "identifier": { + "type": "PREC_LEFT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_label" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "type_annotation" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "parameter_list" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "return_statement" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "throw_statement" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "type_annotation": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "<" + }, + { + "type": "SYMBOL", + "name": "_entry_list" + }, + { + "type": "STRING", + "value": ">" + } + ] + }, + "comment": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "//" + }, + { + "type": "PATTERN", + "value": "[^\\n]*" + }, + { + "type": "SYMBOL", + "name": "_newline" + } + ] + }, + "_label": { + "type": "PATTERN", + "value": "[a-zA-Z0-9][a-zA-Z0-9_-]*" + }, + "_newline": { + "type": "TOKEN", + "content": { + "type": "STRING", + "value": "\n" + } + } + }, + "extras": [ + { + "type": "PATTERN", + "value": "\\s" + } + ], + "conflicts": [], + "precedences": [], + "externals": [], + "inline": [], + "supertypes": [] +} + diff --git a/src/node-types.json b/src/node-types.json new file mode 100644 index 0000000..95b68ab --- /dev/null +++ b/src/node-types.json @@ -0,0 +1,263 @@ +[ + { + "type": "comment", + "named": true, + "fields": {} + }, + { + "type": "definition", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "comment", + "named": true + }, + { + "type": "entry", + "named": true + }, + { + "type": "member", + "named": true + } + ] + } + }, + { + "type": "entry", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + } + }, + { + "type": "identifier", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "parameter_list", + "named": true + }, + { + "type": "return_statement", + "named": true + }, + { + "type": "throw_statement", + "named": true + }, + { + "type": "type_annotation", + "named": true + } + ] + } + }, + { + "type": "member", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "member_type", + "named": true + }, + { + "type": "parameter_list", + "named": true + }, + { + "type": "return_statement", + "named": true + }, + { + "type": "throw_statement", + "named": true + }, + { + "type": "type_annotation", + "named": true + } + ] + } + }, + { + "type": "member_type", + "named": true, + "fields": {} + }, + { + "type": "parameter_list", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "identifier", + "named": true + } + ] + } + }, + { + "type": "return_statement", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "entry", + "named": true + } + ] + } + }, + { + "type": "source_file", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "comment", + "named": true + }, + { + "type": "definition", + "named": true + } + ] + } + }, + { + "type": "throw_statement", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "entry", + "named": true + } + ] + } + }, + { + "type": "type_annotation", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "entry", + "named": true + } + ] + } + }, + { + "type": "#", + "named": false + }, + { + "type": "#>", + "named": false + }, + { + "type": "(", + "named": false + }, + { + "type": ")", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "+>", + "named": false + }, + { + "type": ",", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "->", + "named": false + }, + { + "type": ".", + "named": false + }, + { + "type": "//", + "named": false + }, + { + "type": "::", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<+", + "named": false + }, + { + "type": "<-", + "named": false + }, + { + "type": "<~", + "named": false + }, + { + "type": "=>", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": "~>", + "named": false + } +] \ No newline at end of file diff --git a/src/parser.c b/src/parser.c new file mode 100644 index 0000000..aae9ba2 --- /dev/null +++ b/src/parser.c @@ -0,0 +1,2579 @@ +#include + +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmissing-field-initializers" +#endif + +#define LANGUAGE_VERSION 14 +#define STATE_COUNT 146 +#define LARGE_STATE_COUNT 2 +#define SYMBOL_COUNT 42 +#define ALIAS_COUNT 0 +#define TOKEN_COUNT 23 +#define EXTERNAL_TOKEN_COUNT 0 +#define FIELD_COUNT 0 +#define MAX_ALIAS_SEQUENCE_LENGTH 7 +#define PRODUCTION_ID_COUNT 1 + +enum { + anon_sym_DOT = 1, + anon_sym_COLON_COLON = 2, + anon_sym_DASH_GT = 3, + anon_sym_LT_DASH = 4, + anon_sym_TILDE_GT = 5, + anon_sym_LT_TILDE = 6, + anon_sym_PLUS_GT = 7, + anon_sym_LT_PLUS = 8, + anon_sym_POUND = 9, + anon_sym_PLUS = 10, + anon_sym_DASH = 11, + anon_sym_LPAREN = 12, + anon_sym_RPAREN = 13, + anon_sym_EQ_GT = 14, + anon_sym_POUND_GT = 15, + anon_sym_COMMA = 16, + anon_sym_LT = 17, + anon_sym_GT = 18, + anon_sym_SLASH_SLASH = 19, + aux_sym_comment_token1 = 20, + sym__label = 21, + sym__newline = 22, + sym_source_file = 23, + sym_definition = 24, + sym_entry = 25, + sym_member = 26, + sym_member_type = 27, + sym_parameter_list = 28, + sym_return_statement = 29, + sym_throw_statement = 30, + sym__entry_list = 31, + sym__identifier_list = 32, + sym_identifier = 33, + sym_type_annotation = 34, + sym_comment = 35, + aux_sym_source_file_repeat1 = 36, + aux_sym_source_file_repeat2 = 37, + aux_sym_definition_repeat1 = 38, + aux_sym_entry_repeat1 = 39, + aux_sym__entry_list_repeat1 = 40, + aux_sym__identifier_list_repeat1 = 41, +}; + +static const char * const ts_symbol_names[] = { + [ts_builtin_sym_end] = "end", + [anon_sym_DOT] = ".", + [anon_sym_COLON_COLON] = "::", + [anon_sym_DASH_GT] = "->", + [anon_sym_LT_DASH] = "<-", + [anon_sym_TILDE_GT] = "~>", + [anon_sym_LT_TILDE] = "<~", + [anon_sym_PLUS_GT] = "+>", + [anon_sym_LT_PLUS] = "<+", + [anon_sym_POUND] = "#", + [anon_sym_PLUS] = "+", + [anon_sym_DASH] = "-", + [anon_sym_LPAREN] = "(", + [anon_sym_RPAREN] = ")", + [anon_sym_EQ_GT] = "=>", + [anon_sym_POUND_GT] = "#>", + [anon_sym_COMMA] = ",", + [anon_sym_LT] = "<", + [anon_sym_GT] = ">", + [anon_sym_SLASH_SLASH] = "//", + [aux_sym_comment_token1] = "comment_token1", + [sym__label] = "_label", + [sym__newline] = "_newline", + [sym_source_file] = "source_file", + [sym_definition] = "definition", + [sym_entry] = "entry", + [sym_member] = "member", + [sym_member_type] = "member_type", + [sym_parameter_list] = "parameter_list", + [sym_return_statement] = "return_statement", + [sym_throw_statement] = "throw_statement", + [sym__entry_list] = "_entry_list", + [sym__identifier_list] = "_identifier_list", + [sym_identifier] = "identifier", + [sym_type_annotation] = "type_annotation", + [sym_comment] = "comment", + [aux_sym_source_file_repeat1] = "source_file_repeat1", + [aux_sym_source_file_repeat2] = "source_file_repeat2", + [aux_sym_definition_repeat1] = "definition_repeat1", + [aux_sym_entry_repeat1] = "entry_repeat1", + [aux_sym__entry_list_repeat1] = "_entry_list_repeat1", + [aux_sym__identifier_list_repeat1] = "_identifier_list_repeat1", +}; + +static const TSSymbol ts_symbol_map[] = { + [ts_builtin_sym_end] = ts_builtin_sym_end, + [anon_sym_DOT] = anon_sym_DOT, + [anon_sym_COLON_COLON] = anon_sym_COLON_COLON, + [anon_sym_DASH_GT] = anon_sym_DASH_GT, + [anon_sym_LT_DASH] = anon_sym_LT_DASH, + [anon_sym_TILDE_GT] = anon_sym_TILDE_GT, + [anon_sym_LT_TILDE] = anon_sym_LT_TILDE, + [anon_sym_PLUS_GT] = anon_sym_PLUS_GT, + [anon_sym_LT_PLUS] = anon_sym_LT_PLUS, + [anon_sym_POUND] = anon_sym_POUND, + [anon_sym_PLUS] = anon_sym_PLUS, + [anon_sym_DASH] = anon_sym_DASH, + [anon_sym_LPAREN] = anon_sym_LPAREN, + [anon_sym_RPAREN] = anon_sym_RPAREN, + [anon_sym_EQ_GT] = anon_sym_EQ_GT, + [anon_sym_POUND_GT] = anon_sym_POUND_GT, + [anon_sym_COMMA] = anon_sym_COMMA, + [anon_sym_LT] = anon_sym_LT, + [anon_sym_GT] = anon_sym_GT, + [anon_sym_SLASH_SLASH] = anon_sym_SLASH_SLASH, + [aux_sym_comment_token1] = aux_sym_comment_token1, + [sym__label] = sym__label, + [sym__newline] = sym__newline, + [sym_source_file] = sym_source_file, + [sym_definition] = sym_definition, + [sym_entry] = sym_entry, + [sym_member] = sym_member, + [sym_member_type] = sym_member_type, + [sym_parameter_list] = sym_parameter_list, + [sym_return_statement] = sym_return_statement, + [sym_throw_statement] = sym_throw_statement, + [sym__entry_list] = sym__entry_list, + [sym__identifier_list] = sym__identifier_list, + [sym_identifier] = sym_identifier, + [sym_type_annotation] = sym_type_annotation, + [sym_comment] = sym_comment, + [aux_sym_source_file_repeat1] = aux_sym_source_file_repeat1, + [aux_sym_source_file_repeat2] = aux_sym_source_file_repeat2, + [aux_sym_definition_repeat1] = aux_sym_definition_repeat1, + [aux_sym_entry_repeat1] = aux_sym_entry_repeat1, + [aux_sym__entry_list_repeat1] = aux_sym__entry_list_repeat1, + [aux_sym__identifier_list_repeat1] = aux_sym__identifier_list_repeat1, +}; + +static const TSSymbolMetadata ts_symbol_metadata[] = { + [ts_builtin_sym_end] = { + .visible = false, + .named = true, + }, + [anon_sym_DOT] = { + .visible = true, + .named = false, + }, + [anon_sym_COLON_COLON] = { + .visible = true, + .named = false, + }, + [anon_sym_DASH_GT] = { + .visible = true, + .named = false, + }, + [anon_sym_LT_DASH] = { + .visible = true, + .named = false, + }, + [anon_sym_TILDE_GT] = { + .visible = true, + .named = false, + }, + [anon_sym_LT_TILDE] = { + .visible = true, + .named = false, + }, + [anon_sym_PLUS_GT] = { + .visible = true, + .named = false, + }, + [anon_sym_LT_PLUS] = { + .visible = true, + .named = false, + }, + [anon_sym_POUND] = { + .visible = true, + .named = false, + }, + [anon_sym_PLUS] = { + .visible = true, + .named = false, + }, + [anon_sym_DASH] = { + .visible = true, + .named = false, + }, + [anon_sym_LPAREN] = { + .visible = true, + .named = false, + }, + [anon_sym_RPAREN] = { + .visible = true, + .named = false, + }, + [anon_sym_EQ_GT] = { + .visible = true, + .named = false, + }, + [anon_sym_POUND_GT] = { + .visible = true, + .named = false, + }, + [anon_sym_COMMA] = { + .visible = true, + .named = false, + }, + [anon_sym_LT] = { + .visible = true, + .named = false, + }, + [anon_sym_GT] = { + .visible = true, + .named = false, + }, + [anon_sym_SLASH_SLASH] = { + .visible = true, + .named = false, + }, + [aux_sym_comment_token1] = { + .visible = false, + .named = false, + }, + [sym__label] = { + .visible = false, + .named = true, + }, + [sym__newline] = { + .visible = false, + .named = true, + }, + [sym_source_file] = { + .visible = true, + .named = true, + }, + [sym_definition] = { + .visible = true, + .named = true, + }, + [sym_entry] = { + .visible = true, + .named = true, + }, + [sym_member] = { + .visible = true, + .named = true, + }, + [sym_member_type] = { + .visible = true, + .named = true, + }, + [sym_parameter_list] = { + .visible = true, + .named = true, + }, + [sym_return_statement] = { + .visible = true, + .named = true, + }, + [sym_throw_statement] = { + .visible = true, + .named = true, + }, + [sym__entry_list] = { + .visible = false, + .named = true, + }, + [sym__identifier_list] = { + .visible = false, + .named = true, + }, + [sym_identifier] = { + .visible = true, + .named = true, + }, + [sym_type_annotation] = { + .visible = true, + .named = true, + }, + [sym_comment] = { + .visible = true, + .named = true, + }, + [aux_sym_source_file_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_source_file_repeat2] = { + .visible = false, + .named = false, + }, + [aux_sym_definition_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_entry_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__entry_list_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__identifier_list_repeat1] = { + .visible = false, + .named = false, + }, +}; + +static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT][MAX_ALIAS_SEQUENCE_LENGTH] = { + [0] = {0}, +}; + +static const uint16_t ts_non_terminal_alias_map[] = { + 0, +}; + +static const TSStateId ts_primary_state_ids[STATE_COUNT] = { + [0] = 0, + [1] = 1, + [2] = 2, + [3] = 3, + [4] = 4, + [5] = 5, + [6] = 6, + [7] = 7, + [8] = 8, + [9] = 9, + [10] = 10, + [11] = 11, + [12] = 11, + [13] = 11, + [14] = 11, + [15] = 15, + [16] = 15, + [17] = 11, + [18] = 18, + [19] = 15, + [20] = 15, + [21] = 21, + [22] = 22, + [23] = 23, + [24] = 15, + [25] = 25, + [26] = 25, + [27] = 23, + [28] = 25, + [29] = 25, + [30] = 30, + [31] = 23, + [32] = 32, + [33] = 23, + [34] = 34, + [35] = 35, + [36] = 36, + [37] = 37, + [38] = 25, + [39] = 39, + [40] = 34, + [41] = 41, + [42] = 39, + [43] = 43, + [44] = 35, + [45] = 32, + [46] = 23, + [47] = 47, + [48] = 48, + [49] = 49, + [50] = 34, + [51] = 48, + [52] = 41, + [53] = 53, + [54] = 34, + [55] = 35, + [56] = 56, + [57] = 39, + [58] = 49, + [59] = 41, + [60] = 60, + [61] = 36, + [62] = 62, + [63] = 48, + [64] = 41, + [65] = 47, + [66] = 35, + [67] = 67, + [68] = 43, + [69] = 39, + [70] = 70, + [71] = 49, + [72] = 72, + [73] = 73, + [74] = 37, + [75] = 75, + [76] = 76, + [77] = 47, + [78] = 43, + [79] = 79, + [80] = 80, + [81] = 81, + [82] = 82, + [83] = 82, + [84] = 80, + [85] = 49, + [86] = 86, + [87] = 47, + [88] = 76, + [89] = 73, + [90] = 43, + [91] = 91, + [92] = 41, + [93] = 93, + [94] = 72, + [95] = 35, + [96] = 48, + [97] = 91, + [98] = 93, + [99] = 41, + [100] = 56, + [101] = 81, + [102] = 39, + [103] = 75, + [104] = 70, + [105] = 34, + [106] = 93, + [107] = 86, + [108] = 108, + [109] = 109, + [110] = 110, + [111] = 111, + [112] = 43, + [113] = 113, + [114] = 114, + [115] = 49, + [116] = 116, + [117] = 113, + [118] = 113, + [119] = 119, + [120] = 41, + [121] = 114, + [122] = 113, + [123] = 56, + [124] = 47, + [125] = 125, + [126] = 126, + [127] = 127, + [128] = 126, + [129] = 126, + [130] = 126, + [131] = 126, + [132] = 132, + [133] = 133, + [134] = 134, + [135] = 133, + [136] = 136, + [137] = 137, + [138] = 138, + [139] = 139, + [140] = 140, + [141] = 141, + [142] = 142, + [143] = 136, + [144] = 144, + [145] = 145, +}; + +static bool ts_lex(TSLexer *lexer, TSStateId state) { + START_LEXER(); + eof = lexer->eof(lexer); + switch (state) { + case 0: + if (eof) ADVANCE(10); + if (lookahead == '#') ADVANCE(20); + if (lookahead == '(') ADVANCE(23); + if (lookahead == ')') ADVANCE(24); + if (lookahead == '+') ADVANCE(21); + if (lookahead == ',') ADVANCE(27); + if (lookahead == '-') ADVANCE(22); + if (lookahead == '.') ADVANCE(11); + if (lookahead == '/') ADVANCE(4); + if (lookahead == ':') ADVANCE(5); + if (lookahead == '<') ADVANCE(29); + if (lookahead == '=') ADVANCE(7); + if (lookahead == '>') ADVANCE(30); + if (lookahead == '~') ADVANCE(8); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') SKIP(0) + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(34); + END_STATE(); + case 1: + if (lookahead == '\n') ADVANCE(35); + if (lookahead == '#') ADVANCE(6); + if (lookahead == '(') ADVANCE(23); + if (lookahead == ',') ADVANCE(27); + if (lookahead == '.') ADVANCE(11); + if (lookahead == '<') ADVANCE(28); + if (lookahead == '=') ADVANCE(7); + if (lookahead == '\t' || + lookahead == '\r' || + lookahead == ' ') SKIP(1) + END_STATE(); + case 2: + if (lookahead == '#') ADVANCE(6); + if (lookahead == '(') ADVANCE(23); + if (lookahead == ')') ADVANCE(24); + if (lookahead == ',') ADVANCE(27); + if (lookahead == '.') ADVANCE(11); + if (lookahead == '<') ADVANCE(28); + if (lookahead == '=') ADVANCE(7); + if (lookahead == '>') ADVANCE(30); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') SKIP(2) + END_STATE(); + case 3: + if (lookahead == '+') ADVANCE(18); + if (lookahead == '-') ADVANCE(14); + if (lookahead == '~') ADVANCE(16); + END_STATE(); + case 4: + if (lookahead == '/') ADVANCE(31); + END_STATE(); + case 5: + if (lookahead == ':') ADVANCE(12); + END_STATE(); + case 6: + if (lookahead == '>') ADVANCE(26); + END_STATE(); + case 7: + if (lookahead == '>') ADVANCE(25); + END_STATE(); + case 8: + if (lookahead == '>') ADVANCE(15); + END_STATE(); + case 9: + if (eof) ADVANCE(10); + if (lookahead == '\n') ADVANCE(35); + if (lookahead == '#') ADVANCE(19); + if (lookahead == '+') ADVANCE(21); + if (lookahead == ',') ADVANCE(27); + if (lookahead == '-') ADVANCE(22); + if (lookahead == '.') ADVANCE(11); + if (lookahead == '/') ADVANCE(4); + if (lookahead == ':') ADVANCE(5); + if (lookahead == '<') ADVANCE(3); + if (lookahead == '~') ADVANCE(8); + if (lookahead == '\t' || + lookahead == '\r' || + lookahead == ' ') SKIP(9) + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(34); + END_STATE(); + case 10: + ACCEPT_TOKEN(ts_builtin_sym_end); + END_STATE(); + case 11: + ACCEPT_TOKEN(anon_sym_DOT); + END_STATE(); + case 12: + ACCEPT_TOKEN(anon_sym_COLON_COLON); + END_STATE(); + case 13: + ACCEPT_TOKEN(anon_sym_DASH_GT); + END_STATE(); + case 14: + ACCEPT_TOKEN(anon_sym_LT_DASH); + END_STATE(); + case 15: + ACCEPT_TOKEN(anon_sym_TILDE_GT); + END_STATE(); + case 16: + ACCEPT_TOKEN(anon_sym_LT_TILDE); + END_STATE(); + case 17: + ACCEPT_TOKEN(anon_sym_PLUS_GT); + END_STATE(); + case 18: + ACCEPT_TOKEN(anon_sym_LT_PLUS); + END_STATE(); + case 19: + ACCEPT_TOKEN(anon_sym_POUND); + END_STATE(); + case 20: + ACCEPT_TOKEN(anon_sym_POUND); + if (lookahead == '>') ADVANCE(26); + END_STATE(); + case 21: + ACCEPT_TOKEN(anon_sym_PLUS); + if (lookahead == '>') ADVANCE(17); + END_STATE(); + case 22: + ACCEPT_TOKEN(anon_sym_DASH); + if (lookahead == '>') ADVANCE(13); + END_STATE(); + case 23: + ACCEPT_TOKEN(anon_sym_LPAREN); + END_STATE(); + case 24: + ACCEPT_TOKEN(anon_sym_RPAREN); + END_STATE(); + case 25: + ACCEPT_TOKEN(anon_sym_EQ_GT); + END_STATE(); + case 26: + ACCEPT_TOKEN(anon_sym_POUND_GT); + END_STATE(); + case 27: + ACCEPT_TOKEN(anon_sym_COMMA); + END_STATE(); + case 28: + ACCEPT_TOKEN(anon_sym_LT); + END_STATE(); + case 29: + ACCEPT_TOKEN(anon_sym_LT); + if (lookahead == '+') ADVANCE(18); + if (lookahead == '-') ADVANCE(14); + if (lookahead == '~') ADVANCE(16); + END_STATE(); + case 30: + ACCEPT_TOKEN(anon_sym_GT); + END_STATE(); + case 31: + ACCEPT_TOKEN(anon_sym_SLASH_SLASH); + END_STATE(); + case 32: + ACCEPT_TOKEN(aux_sym_comment_token1); + if (lookahead == '\t' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(32); + if (lookahead != 0 && + lookahead != '\n') ADVANCE(33); + END_STATE(); + case 33: + ACCEPT_TOKEN(aux_sym_comment_token1); + if (lookahead != 0 && + lookahead != '\n') ADVANCE(33); + END_STATE(); + case 34: + ACCEPT_TOKEN(sym__label); + if (lookahead == '-' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(34); + END_STATE(); + case 35: + ACCEPT_TOKEN(sym__newline); + if (lookahead == '\n') ADVANCE(35); + END_STATE(); + default: + return false; + } +} + +static const TSLexMode ts_lex_modes[STATE_COUNT] = { + [0] = {.lex_state = 0}, + [1] = {.lex_state = 0}, + [2] = {.lex_state = 9}, + [3] = {.lex_state = 9}, + [4] = {.lex_state = 9}, + [5] = {.lex_state = 9}, + [6] = {.lex_state = 9}, + [7] = {.lex_state = 9}, + [8] = {.lex_state = 9}, + [9] = {.lex_state = 9}, + [10] = {.lex_state = 9}, + [11] = {.lex_state = 2}, + [12] = {.lex_state = 2}, + [13] = {.lex_state = 1}, + [14] = {.lex_state = 1}, + [15] = {.lex_state = 2}, + [16] = {.lex_state = 2}, + [17] = {.lex_state = 1}, + [18] = {.lex_state = 1}, + [19] = {.lex_state = 1}, + [20] = {.lex_state = 1}, + [21] = {.lex_state = 0}, + [22] = {.lex_state = 0}, + [23] = {.lex_state = 2}, + [24] = {.lex_state = 1}, + [25] = {.lex_state = 2}, + [26] = {.lex_state = 2}, + [27] = {.lex_state = 2}, + [28] = {.lex_state = 1}, + [29] = {.lex_state = 1}, + [30] = {.lex_state = 1}, + [31] = {.lex_state = 1}, + [32] = {.lex_state = 2}, + [33] = {.lex_state = 1}, + [34] = {.lex_state = 2}, + [35] = {.lex_state = 2}, + [36] = {.lex_state = 2}, + [37] = {.lex_state = 2}, + [38] = {.lex_state = 1}, + [39] = {.lex_state = 2}, + [40] = {.lex_state = 2}, + [41] = {.lex_state = 2}, + [42] = {.lex_state = 2}, + [43] = {.lex_state = 2}, + [44] = {.lex_state = 2}, + [45] = {.lex_state = 1}, + [46] = {.lex_state = 1}, + [47] = {.lex_state = 2}, + [48] = {.lex_state = 2}, + [49] = {.lex_state = 2}, + [50] = {.lex_state = 1}, + [51] = {.lex_state = 0}, + [52] = {.lex_state = 1}, + [53] = {.lex_state = 9}, + [54] = {.lex_state = 1}, + [55] = {.lex_state = 1}, + [56] = {.lex_state = 1}, + [57] = {.lex_state = 1}, + [58] = {.lex_state = 1}, + [59] = {.lex_state = 1}, + [60] = {.lex_state = 9}, + [61] = {.lex_state = 1}, + [62] = {.lex_state = 1}, + [63] = {.lex_state = 1}, + [64] = {.lex_state = 0}, + [65] = {.lex_state = 0}, + [66] = {.lex_state = 1}, + [67] = {.lex_state = 1}, + [68] = {.lex_state = 0}, + [69] = {.lex_state = 1}, + [70] = {.lex_state = 2}, + [71] = {.lex_state = 0}, + [72] = {.lex_state = 2}, + [73] = {.lex_state = 2}, + [74] = {.lex_state = 1}, + [75] = {.lex_state = 2}, + [76] = {.lex_state = 2}, + [77] = {.lex_state = 1}, + [78] = {.lex_state = 1}, + [79] = {.lex_state = 9}, + [80] = {.lex_state = 2}, + [81] = {.lex_state = 2}, + [82] = {.lex_state = 2}, + [83] = {.lex_state = 1}, + [84] = {.lex_state = 1}, + [85] = {.lex_state = 9}, + [86] = {.lex_state = 0}, + [87] = {.lex_state = 9}, + [88] = {.lex_state = 1}, + [89] = {.lex_state = 1}, + [90] = {.lex_state = 9}, + [91] = {.lex_state = 0}, + [92] = {.lex_state = 9}, + [93] = {.lex_state = 0}, + [94] = {.lex_state = 1}, + [95] = {.lex_state = 1}, + [96] = {.lex_state = 9}, + [97] = {.lex_state = 0}, + [98] = {.lex_state = 0}, + [99] = {.lex_state = 9}, + [100] = {.lex_state = 9}, + [101] = {.lex_state = 1}, + [102] = {.lex_state = 1}, + [103] = {.lex_state = 1}, + [104] = {.lex_state = 1}, + [105] = {.lex_state = 1}, + [106] = {.lex_state = 0}, + [107] = {.lex_state = 0}, + [108] = {.lex_state = 0}, + [109] = {.lex_state = 0}, + [110] = {.lex_state = 1}, + [111] = {.lex_state = 1}, + [112] = {.lex_state = 9}, + [113] = {.lex_state = 0}, + [114] = {.lex_state = 0}, + [115] = {.lex_state = 9}, + [116] = {.lex_state = 1}, + [117] = {.lex_state = 0}, + [118] = {.lex_state = 0}, + [119] = {.lex_state = 0}, + [120] = {.lex_state = 0}, + [121] = {.lex_state = 0}, + [122] = {.lex_state = 0}, + [123] = {.lex_state = 0}, + [124] = {.lex_state = 9}, + [125] = {.lex_state = 0}, + [126] = {.lex_state = 0}, + [127] = {.lex_state = 0}, + [128] = {.lex_state = 0}, + [129] = {.lex_state = 0}, + [130] = {.lex_state = 0}, + [131] = {.lex_state = 0}, + [132] = {.lex_state = 32}, + [133] = {.lex_state = 0}, + [134] = {.lex_state = 9}, + [135] = {.lex_state = 0}, + [136] = {.lex_state = 0}, + [137] = {.lex_state = 9}, + [138] = {.lex_state = 9}, + [139] = {.lex_state = 9}, + [140] = {.lex_state = 9}, + [141] = {.lex_state = 9}, + [142] = {.lex_state = 0}, + [143] = {.lex_state = 0}, + [144] = {.lex_state = 0}, + [145] = {.lex_state = 0}, +}; + +static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { + [0] = { + [ts_builtin_sym_end] = ACTIONS(1), + [anon_sym_DOT] = ACTIONS(1), + [anon_sym_COLON_COLON] = ACTIONS(1), + [anon_sym_DASH_GT] = ACTIONS(1), + [anon_sym_LT_DASH] = ACTIONS(1), + [anon_sym_TILDE_GT] = ACTIONS(1), + [anon_sym_LT_TILDE] = ACTIONS(1), + [anon_sym_PLUS_GT] = ACTIONS(1), + [anon_sym_LT_PLUS] = ACTIONS(1), + [anon_sym_POUND] = ACTIONS(1), + [anon_sym_PLUS] = ACTIONS(1), + [anon_sym_DASH] = ACTIONS(1), + [anon_sym_LPAREN] = ACTIONS(1), + [anon_sym_RPAREN] = ACTIONS(1), + [anon_sym_EQ_GT] = ACTIONS(1), + [anon_sym_POUND_GT] = ACTIONS(1), + [anon_sym_COMMA] = ACTIONS(1), + [anon_sym_LT] = ACTIONS(1), + [anon_sym_GT] = ACTIONS(1), + [anon_sym_SLASH_SLASH] = ACTIONS(1), + [sym__label] = ACTIONS(1), + }, + [1] = { + [sym_source_file] = STATE(142), + [sym_definition] = STATE(53), + [sym_entry] = STATE(140), + [sym_identifier] = STATE(115), + [sym_comment] = STATE(53), + [aux_sym_source_file_repeat2] = STATE(21), + [ts_builtin_sym_end] = ACTIONS(3), + [anon_sym_SLASH_SLASH] = ACTIONS(5), + [sym__label] = ACTIONS(7), + }, +}; + +static const uint16_t ts_small_parse_table[] = { + [0] = 6, + ACTIONS(13), 1, + anon_sym_SLASH_SLASH, + ACTIONS(15), 1, + sym__label, + STATE(145), 1, + sym_member_type, + ACTIONS(9), 2, + ts_builtin_sym_end, + sym__newline, + STATE(4), 3, + sym_member, + sym_comment, + aux_sym_definition_repeat1, + ACTIONS(11), 10, + anon_sym_COLON_COLON, + anon_sym_DASH_GT, + anon_sym_LT_DASH, + anon_sym_TILDE_GT, + anon_sym_LT_TILDE, + anon_sym_PLUS_GT, + anon_sym_LT_PLUS, + anon_sym_POUND, + anon_sym_PLUS, + anon_sym_DASH, + [31] = 6, + ACTIONS(13), 1, + anon_sym_SLASH_SLASH, + ACTIONS(19), 1, + sym__label, + STATE(145), 1, + sym_member_type, + ACTIONS(17), 2, + ts_builtin_sym_end, + sym__newline, + STATE(2), 3, + sym_member, + sym_comment, + aux_sym_definition_repeat1, + ACTIONS(11), 10, + anon_sym_COLON_COLON, + anon_sym_DASH_GT, + anon_sym_LT_DASH, + anon_sym_TILDE_GT, + anon_sym_LT_TILDE, + anon_sym_PLUS_GT, + anon_sym_LT_PLUS, + anon_sym_POUND, + anon_sym_PLUS, + anon_sym_DASH, + [62] = 6, + ACTIONS(26), 1, + anon_sym_SLASH_SLASH, + ACTIONS(29), 1, + sym__label, + STATE(145), 1, + sym_member_type, + ACTIONS(21), 2, + ts_builtin_sym_end, + sym__newline, + STATE(4), 3, + sym_member, + sym_comment, + aux_sym_definition_repeat1, + ACTIONS(23), 10, + anon_sym_COLON_COLON, + anon_sym_DASH_GT, + anon_sym_LT_DASH, + anon_sym_TILDE_GT, + anon_sym_LT_TILDE, + anon_sym_PLUS_GT, + anon_sym_LT_PLUS, + anon_sym_POUND, + anon_sym_PLUS, + anon_sym_DASH, + [93] = 2, + ACTIONS(31), 2, + ts_builtin_sym_end, + sym__newline, + ACTIONS(33), 12, + anon_sym_COLON_COLON, + anon_sym_DASH_GT, + anon_sym_LT_DASH, + anon_sym_TILDE_GT, + anon_sym_LT_TILDE, + anon_sym_PLUS_GT, + anon_sym_LT_PLUS, + anon_sym_POUND, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_SLASH_SLASH, + sym__label, + [112] = 2, + ACTIONS(35), 2, + ts_builtin_sym_end, + sym__newline, + ACTIONS(37), 12, + anon_sym_COLON_COLON, + anon_sym_DASH_GT, + anon_sym_LT_DASH, + anon_sym_TILDE_GT, + anon_sym_LT_TILDE, + anon_sym_PLUS_GT, + anon_sym_LT_PLUS, + anon_sym_POUND, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_SLASH_SLASH, + sym__label, + [131] = 2, + ACTIONS(39), 2, + ts_builtin_sym_end, + sym__newline, + ACTIONS(41), 12, + anon_sym_COLON_COLON, + anon_sym_DASH_GT, + anon_sym_LT_DASH, + anon_sym_TILDE_GT, + anon_sym_LT_TILDE, + anon_sym_PLUS_GT, + anon_sym_LT_PLUS, + anon_sym_POUND, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_SLASH_SLASH, + sym__label, + [150] = 2, + ACTIONS(43), 2, + ts_builtin_sym_end, + sym__newline, + ACTIONS(45), 12, + anon_sym_COLON_COLON, + anon_sym_DASH_GT, + anon_sym_LT_DASH, + anon_sym_TILDE_GT, + anon_sym_LT_TILDE, + anon_sym_PLUS_GT, + anon_sym_LT_PLUS, + anon_sym_POUND, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_SLASH_SLASH, + sym__label, + [169] = 2, + ACTIONS(47), 2, + ts_builtin_sym_end, + sym__newline, + ACTIONS(49), 12, + anon_sym_COLON_COLON, + anon_sym_DASH_GT, + anon_sym_LT_DASH, + anon_sym_TILDE_GT, + anon_sym_LT_TILDE, + anon_sym_PLUS_GT, + anon_sym_LT_PLUS, + anon_sym_POUND, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_SLASH_SLASH, + sym__label, + [188] = 2, + ACTIONS(51), 2, + ts_builtin_sym_end, + sym__newline, + ACTIONS(53), 12, + anon_sym_COLON_COLON, + anon_sym_DASH_GT, + anon_sym_LT_DASH, + anon_sym_TILDE_GT, + anon_sym_LT_TILDE, + anon_sym_PLUS_GT, + anon_sym_LT_PLUS, + anon_sym_POUND, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_SLASH_SLASH, + sym__label, + [207] = 9, + ACTIONS(57), 1, + anon_sym_LPAREN, + ACTIONS(59), 1, + anon_sym_EQ_GT, + ACTIONS(61), 1, + anon_sym_POUND_GT, + ACTIONS(63), 1, + anon_sym_LT, + STATE(15), 1, + sym_type_annotation, + STATE(27), 1, + sym_parameter_list, + STATE(39), 1, + sym_return_statement, + STATE(75), 1, + sym_throw_statement, + ACTIONS(55), 4, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT, + [238] = 8, + ACTIONS(57), 1, + anon_sym_LPAREN, + ACTIONS(59), 1, + anon_sym_EQ_GT, + ACTIONS(63), 1, + anon_sym_LT, + STATE(16), 1, + sym_type_annotation, + STATE(23), 1, + sym_parameter_list, + STATE(42), 1, + sym_return_statement, + STATE(75), 1, + sym_throw_statement, + ACTIONS(55), 5, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_POUND_GT, + anon_sym_COMMA, + anon_sym_GT, + [267] = 9, + ACTIONS(55), 1, + sym__newline, + ACTIONS(67), 1, + anon_sym_LPAREN, + ACTIONS(69), 1, + anon_sym_EQ_GT, + ACTIONS(71), 1, + anon_sym_LT, + STATE(20), 1, + sym_type_annotation, + STATE(31), 1, + sym_parameter_list, + STATE(69), 1, + sym_return_statement, + STATE(103), 1, + sym_throw_statement, + ACTIONS(65), 3, + anon_sym_DOT, + anon_sym_POUND_GT, + anon_sym_COMMA, + [297] = 10, + ACTIONS(55), 1, + sym__newline, + ACTIONS(67), 1, + anon_sym_LPAREN, + ACTIONS(69), 1, + anon_sym_EQ_GT, + ACTIONS(71), 1, + anon_sym_LT, + ACTIONS(73), 1, + anon_sym_POUND_GT, + STATE(19), 1, + sym_type_annotation, + STATE(33), 1, + sym_parameter_list, + STATE(57), 1, + sym_return_statement, + STATE(103), 1, + sym_throw_statement, + ACTIONS(65), 2, + anon_sym_DOT, + anon_sym_COMMA, + [329] = 7, + ACTIONS(57), 1, + anon_sym_LPAREN, + ACTIONS(59), 1, + anon_sym_EQ_GT, + ACTIONS(61), 1, + anon_sym_POUND_GT, + STATE(26), 1, + sym_parameter_list, + STATE(35), 1, + sym_return_statement, + STATE(72), 1, + sym_throw_statement, + ACTIONS(75), 4, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT, + [354] = 6, + ACTIONS(57), 1, + anon_sym_LPAREN, + ACTIONS(59), 1, + anon_sym_EQ_GT, + STATE(25), 1, + sym_parameter_list, + STATE(44), 1, + sym_return_statement, + STATE(72), 1, + sym_throw_statement, + ACTIONS(75), 5, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_POUND_GT, + anon_sym_COMMA, + anon_sym_GT, + [377] = 10, + ACTIONS(55), 1, + sym__newline, + ACTIONS(65), 1, + anon_sym_DOT, + ACTIONS(67), 1, + anon_sym_LPAREN, + ACTIONS(69), 1, + anon_sym_EQ_GT, + ACTIONS(71), 1, + anon_sym_LT, + ACTIONS(77), 1, + anon_sym_POUND_GT, + STATE(24), 1, + sym_type_annotation, + STATE(46), 1, + sym_parameter_list, + STATE(102), 1, + sym_return_statement, + STATE(103), 1, + sym_throw_statement, + [408] = 9, + ACTIONS(67), 1, + anon_sym_LPAREN, + ACTIONS(69), 1, + anon_sym_EQ_GT, + ACTIONS(71), 1, + anon_sym_LT, + ACTIONS(77), 1, + anon_sym_POUND_GT, + ACTIONS(79), 1, + sym__newline, + STATE(30), 1, + sym_type_annotation, + STATE(62), 1, + sym_parameter_list, + STATE(111), 1, + sym_return_statement, + STATE(137), 1, + sym_throw_statement, + [436] = 8, + ACTIONS(67), 1, + anon_sym_LPAREN, + ACTIONS(69), 1, + anon_sym_EQ_GT, + ACTIONS(73), 1, + anon_sym_POUND_GT, + ACTIONS(75), 1, + sym__newline, + STATE(28), 1, + sym_parameter_list, + STATE(55), 1, + sym_return_statement, + STATE(94), 1, + sym_throw_statement, + ACTIONS(81), 2, + anon_sym_DOT, + anon_sym_COMMA, + [462] = 7, + ACTIONS(67), 1, + anon_sym_LPAREN, + ACTIONS(69), 1, + anon_sym_EQ_GT, + ACTIONS(75), 1, + sym__newline, + STATE(29), 1, + sym_parameter_list, + STATE(66), 1, + sym_return_statement, + STATE(94), 1, + sym_throw_statement, + ACTIONS(81), 3, + anon_sym_DOT, + anon_sym_POUND_GT, + anon_sym_COMMA, + [486] = 7, + ACTIONS(5), 1, + anon_sym_SLASH_SLASH, + ACTIONS(7), 1, + sym__label, + ACTIONS(83), 1, + ts_builtin_sym_end, + STATE(22), 1, + aux_sym_source_file_repeat2, + STATE(115), 1, + sym_identifier, + STATE(140), 1, + sym_entry, + STATE(53), 2, + sym_definition, + sym_comment, + [509] = 7, + ACTIONS(85), 1, + ts_builtin_sym_end, + ACTIONS(87), 1, + anon_sym_SLASH_SLASH, + ACTIONS(90), 1, + sym__label, + STATE(22), 1, + aux_sym_source_file_repeat2, + STATE(115), 1, + sym_identifier, + STATE(140), 1, + sym_entry, + STATE(53), 2, + sym_definition, + sym_comment, + [532] = 4, + ACTIONS(59), 1, + anon_sym_EQ_GT, + STATE(44), 1, + sym_return_statement, + STATE(72), 1, + sym_throw_statement, + ACTIONS(75), 5, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_POUND_GT, + anon_sym_COMMA, + anon_sym_GT, + [549] = 8, + ACTIONS(67), 1, + anon_sym_LPAREN, + ACTIONS(69), 1, + anon_sym_EQ_GT, + ACTIONS(75), 1, + sym__newline, + ACTIONS(77), 1, + anon_sym_POUND_GT, + ACTIONS(81), 1, + anon_sym_DOT, + STATE(38), 1, + sym_parameter_list, + STATE(94), 1, + sym_throw_statement, + STATE(95), 1, + sym_return_statement, + [574] = 4, + ACTIONS(59), 1, + anon_sym_EQ_GT, + STATE(34), 1, + sym_return_statement, + STATE(81), 1, + sym_throw_statement, + ACTIONS(93), 5, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_POUND_GT, + anon_sym_COMMA, + anon_sym_GT, + [591] = 5, + ACTIONS(59), 1, + anon_sym_EQ_GT, + ACTIONS(61), 1, + anon_sym_POUND_GT, + STATE(40), 1, + sym_return_statement, + STATE(81), 1, + sym_throw_statement, + ACTIONS(93), 4, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT, + [610] = 5, + ACTIONS(59), 1, + anon_sym_EQ_GT, + ACTIONS(61), 1, + anon_sym_POUND_GT, + STATE(35), 1, + sym_return_statement, + STATE(72), 1, + sym_throw_statement, + ACTIONS(75), 4, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT, + [629] = 6, + ACTIONS(69), 1, + anon_sym_EQ_GT, + ACTIONS(73), 1, + anon_sym_POUND_GT, + ACTIONS(93), 1, + sym__newline, + STATE(54), 1, + sym_return_statement, + STATE(101), 1, + sym_throw_statement, + ACTIONS(95), 2, + anon_sym_DOT, + anon_sym_COMMA, + [649] = 5, + ACTIONS(69), 1, + anon_sym_EQ_GT, + ACTIONS(93), 1, + sym__newline, + STATE(50), 1, + sym_return_statement, + STATE(101), 1, + sym_throw_statement, + ACTIONS(95), 3, + anon_sym_DOT, + anon_sym_POUND_GT, + anon_sym_COMMA, + [667] = 7, + ACTIONS(67), 1, + anon_sym_LPAREN, + ACTIONS(69), 1, + anon_sym_EQ_GT, + ACTIONS(77), 1, + anon_sym_POUND_GT, + ACTIONS(97), 1, + sym__newline, + STATE(67), 1, + sym_parameter_list, + STATE(110), 1, + sym_return_statement, + STATE(138), 1, + sym_throw_statement, + [689] = 5, + ACTIONS(69), 1, + anon_sym_EQ_GT, + ACTIONS(75), 1, + sym__newline, + STATE(66), 1, + sym_return_statement, + STATE(94), 1, + sym_throw_statement, + ACTIONS(81), 3, + anon_sym_DOT, + anon_sym_POUND_GT, + anon_sym_COMMA, + [707] = 1, + ACTIONS(99), 7, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_EQ_GT, + anon_sym_POUND_GT, + anon_sym_COMMA, + anon_sym_GT, + [717] = 6, + ACTIONS(69), 1, + anon_sym_EQ_GT, + ACTIONS(73), 1, + anon_sym_POUND_GT, + ACTIONS(75), 1, + sym__newline, + STATE(55), 1, + sym_return_statement, + STATE(94), 1, + sym_throw_statement, + ACTIONS(81), 2, + anon_sym_DOT, + anon_sym_COMMA, + [737] = 2, + STATE(70), 1, + sym_throw_statement, + ACTIONS(101), 5, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_POUND_GT, + anon_sym_COMMA, + anon_sym_GT, + [748] = 3, + ACTIONS(61), 1, + anon_sym_POUND_GT, + STATE(81), 1, + sym_throw_statement, + ACTIONS(93), 4, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT, + [761] = 1, + ACTIONS(103), 6, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_EQ_GT, + anon_sym_POUND_GT, + anon_sym_COMMA, + anon_sym_GT, + [770] = 1, + ACTIONS(105), 6, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_EQ_GT, + anon_sym_POUND_GT, + anon_sym_COMMA, + anon_sym_GT, + [779] = 6, + ACTIONS(69), 1, + anon_sym_EQ_GT, + ACTIONS(77), 1, + anon_sym_POUND_GT, + ACTIONS(93), 1, + sym__newline, + ACTIONS(95), 1, + anon_sym_DOT, + STATE(101), 1, + sym_throw_statement, + STATE(105), 1, + sym_return_statement, + [798] = 3, + ACTIONS(61), 1, + anon_sym_POUND_GT, + STATE(72), 1, + sym_throw_statement, + ACTIONS(75), 4, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT, + [811] = 3, + ACTIONS(61), 1, + anon_sym_POUND_GT, + STATE(70), 1, + sym_throw_statement, + ACTIONS(101), 4, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT, + [824] = 2, + STATE(48), 1, + aux_sym__entry_list_repeat1, + ACTIONS(107), 5, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_POUND_GT, + anon_sym_COMMA, + anon_sym_GT, + [835] = 2, + STATE(72), 1, + sym_throw_statement, + ACTIONS(75), 5, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_POUND_GT, + anon_sym_COMMA, + anon_sym_GT, + [846] = 3, + ACTIONS(109), 1, + anon_sym_DOT, + STATE(47), 1, + aux_sym_entry_repeat1, + ACTIONS(111), 4, + anon_sym_RPAREN, + anon_sym_POUND_GT, + anon_sym_COMMA, + anon_sym_GT, + [859] = 2, + STATE(81), 1, + sym_throw_statement, + ACTIONS(93), 5, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_POUND_GT, + anon_sym_COMMA, + anon_sym_GT, + [870] = 2, + ACTIONS(99), 1, + sym__newline, + ACTIONS(113), 5, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_EQ_GT, + anon_sym_POUND_GT, + anon_sym_COMMA, + [881] = 6, + ACTIONS(69), 1, + anon_sym_EQ_GT, + ACTIONS(75), 1, + sym__newline, + ACTIONS(77), 1, + anon_sym_POUND_GT, + ACTIONS(81), 1, + anon_sym_DOT, + STATE(94), 1, + sym_throw_statement, + STATE(95), 1, + sym_return_statement, + [900] = 3, + ACTIONS(115), 1, + anon_sym_DOT, + STATE(47), 1, + aux_sym_entry_repeat1, + ACTIONS(118), 4, + anon_sym_RPAREN, + anon_sym_POUND_GT, + anon_sym_COMMA, + anon_sym_GT, + [913] = 3, + ACTIONS(122), 1, + anon_sym_COMMA, + STATE(48), 1, + aux_sym__entry_list_repeat1, + ACTIONS(120), 4, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_POUND_GT, + anon_sym_GT, + [926] = 3, + ACTIONS(109), 1, + anon_sym_DOT, + STATE(43), 1, + aux_sym_entry_repeat1, + ACTIONS(125), 4, + anon_sym_RPAREN, + anon_sym_POUND_GT, + anon_sym_COMMA, + anon_sym_GT, + [939] = 3, + ACTIONS(101), 1, + sym__newline, + STATE(104), 1, + sym_throw_statement, + ACTIONS(127), 3, + anon_sym_DOT, + anon_sym_POUND_GT, + anon_sym_COMMA, + [951] = 3, + ACTIONS(129), 1, + anon_sym_COMMA, + STATE(51), 1, + aux_sym__entry_list_repeat1, + ACTIONS(120), 3, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_GT, + [963] = 3, + ACTIONS(107), 1, + sym__newline, + STATE(63), 1, + aux_sym__entry_list_repeat1, + ACTIONS(132), 3, + anon_sym_DOT, + anon_sym_POUND_GT, + anon_sym_COMMA, + [975] = 4, + ACTIONS(134), 1, + ts_builtin_sym_end, + ACTIONS(138), 1, + sym__newline, + STATE(60), 1, + aux_sym_source_file_repeat1, + ACTIONS(136), 2, + anon_sym_SLASH_SLASH, + sym__label, + [989] = 4, + ACTIONS(73), 1, + anon_sym_POUND_GT, + ACTIONS(101), 1, + sym__newline, + STATE(104), 1, + sym_throw_statement, + ACTIONS(127), 2, + anon_sym_DOT, + anon_sym_COMMA, + [1003] = 4, + ACTIONS(73), 1, + anon_sym_POUND_GT, + ACTIONS(93), 1, + sym__newline, + STATE(101), 1, + sym_throw_statement, + ACTIONS(95), 2, + anon_sym_DOT, + anon_sym_COMMA, + [1017] = 4, + ACTIONS(142), 1, + anon_sym_COMMA, + ACTIONS(144), 1, + sym__newline, + STATE(59), 1, + aux_sym__entry_list_repeat1, + ACTIONS(140), 2, + anon_sym_DOT, + anon_sym_POUND_GT, + [1031] = 4, + ACTIONS(73), 1, + anon_sym_POUND_GT, + ACTIONS(75), 1, + sym__newline, + STATE(94), 1, + sym_throw_statement, + ACTIONS(81), 2, + anon_sym_DOT, + anon_sym_COMMA, + [1045] = 4, + ACTIONS(125), 1, + sym__newline, + ACTIONS(146), 1, + anon_sym_DOT, + STATE(78), 1, + aux_sym_entry_repeat1, + ACTIONS(148), 2, + anon_sym_POUND_GT, + anon_sym_COMMA, + [1059] = 4, + ACTIONS(107), 1, + sym__newline, + ACTIONS(142), 1, + anon_sym_COMMA, + STATE(63), 1, + aux_sym__entry_list_repeat1, + ACTIONS(132), 2, + anon_sym_DOT, + anon_sym_POUND_GT, + [1073] = 4, + ACTIONS(85), 1, + ts_builtin_sym_end, + ACTIONS(152), 1, + sym__newline, + STATE(79), 1, + aux_sym_source_file_repeat1, + ACTIONS(150), 2, + anon_sym_SLASH_SLASH, + sym__label, + [1087] = 2, + ACTIONS(103), 1, + sym__newline, + ACTIONS(154), 4, + anon_sym_DOT, + anon_sym_EQ_GT, + anon_sym_POUND_GT, + anon_sym_COMMA, + [1097] = 5, + ACTIONS(69), 1, + anon_sym_EQ_GT, + ACTIONS(77), 1, + anon_sym_POUND_GT, + ACTIONS(97), 1, + sym__newline, + STATE(110), 1, + sym_return_statement, + STATE(138), 1, + sym_throw_statement, + [1113] = 4, + ACTIONS(120), 1, + sym__newline, + ACTIONS(158), 1, + anon_sym_COMMA, + STATE(63), 1, + aux_sym__entry_list_repeat1, + ACTIONS(156), 2, + anon_sym_DOT, + anon_sym_POUND_GT, + [1127] = 2, + STATE(51), 1, + aux_sym__entry_list_repeat1, + ACTIONS(107), 4, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT, + [1137] = 3, + ACTIONS(161), 1, + anon_sym_DOT, + STATE(65), 1, + aux_sym_entry_repeat1, + ACTIONS(118), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT, + [1149] = 3, + ACTIONS(93), 1, + sym__newline, + STATE(101), 1, + sym_throw_statement, + ACTIONS(95), 3, + anon_sym_DOT, + anon_sym_POUND_GT, + anon_sym_COMMA, + [1161] = 5, + ACTIONS(69), 1, + anon_sym_EQ_GT, + ACTIONS(77), 1, + anon_sym_POUND_GT, + ACTIONS(164), 1, + sym__newline, + STATE(116), 1, + sym_return_statement, + STATE(139), 1, + sym_throw_statement, + [1177] = 3, + ACTIONS(166), 1, + anon_sym_DOT, + STATE(65), 1, + aux_sym_entry_repeat1, + ACTIONS(111), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT, + [1189] = 3, + ACTIONS(75), 1, + sym__newline, + STATE(94), 1, + sym_throw_statement, + ACTIONS(81), 3, + anon_sym_DOT, + anon_sym_POUND_GT, + anon_sym_COMMA, + [1201] = 1, + ACTIONS(168), 5, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_POUND_GT, + anon_sym_COMMA, + anon_sym_GT, + [1209] = 3, + ACTIONS(166), 1, + anon_sym_DOT, + STATE(68), 1, + aux_sym_entry_repeat1, + ACTIONS(125), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT, + [1221] = 1, + ACTIONS(93), 5, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_POUND_GT, + anon_sym_COMMA, + anon_sym_GT, + [1229] = 1, + ACTIONS(120), 5, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_POUND_GT, + anon_sym_COMMA, + anon_sym_GT, + [1237] = 2, + ACTIONS(105), 1, + sym__newline, + ACTIONS(170), 4, + anon_sym_DOT, + anon_sym_EQ_GT, + anon_sym_POUND_GT, + anon_sym_COMMA, + [1247] = 1, + ACTIONS(75), 5, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_POUND_GT, + anon_sym_COMMA, + anon_sym_GT, + [1255] = 1, + ACTIONS(118), 5, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_POUND_GT, + anon_sym_COMMA, + anon_sym_GT, + [1263] = 4, + ACTIONS(118), 1, + sym__newline, + ACTIONS(172), 1, + anon_sym_DOT, + STATE(77), 1, + aux_sym_entry_repeat1, + ACTIONS(175), 2, + anon_sym_POUND_GT, + anon_sym_COMMA, + [1277] = 4, + ACTIONS(111), 1, + sym__newline, + ACTIONS(146), 1, + anon_sym_DOT, + STATE(77), 1, + aux_sym_entry_repeat1, + ACTIONS(177), 2, + anon_sym_POUND_GT, + anon_sym_COMMA, + [1291] = 4, + ACTIONS(179), 1, + ts_builtin_sym_end, + ACTIONS(183), 1, + sym__newline, + STATE(79), 1, + aux_sym_source_file_repeat1, + ACTIONS(181), 2, + anon_sym_SLASH_SLASH, + sym__label, + [1305] = 1, + ACTIONS(186), 5, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_POUND_GT, + anon_sym_COMMA, + anon_sym_GT, + [1313] = 1, + ACTIONS(101), 5, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_POUND_GT, + anon_sym_COMMA, + anon_sym_GT, + [1321] = 1, + ACTIONS(188), 5, + anon_sym_DOT, + anon_sym_RPAREN, + anon_sym_POUND_GT, + anon_sym_COMMA, + anon_sym_GT, + [1329] = 2, + ACTIONS(188), 1, + sym__newline, + ACTIONS(190), 3, + anon_sym_DOT, + anon_sym_POUND_GT, + anon_sym_COMMA, + [1338] = 2, + ACTIONS(186), 1, + sym__newline, + ACTIONS(192), 3, + anon_sym_DOT, + anon_sym_POUND_GT, + anon_sym_COMMA, + [1347] = 4, + ACTIONS(125), 1, + sym__newline, + ACTIONS(148), 1, + anon_sym_COMMA, + ACTIONS(194), 1, + anon_sym_DOT, + STATE(90), 1, + aux_sym_entry_repeat1, + [1360] = 4, + ACTIONS(196), 1, + anon_sym_RPAREN, + ACTIONS(198), 1, + sym__label, + STATE(108), 1, + sym_identifier, + STATE(135), 1, + sym__identifier_list, + [1373] = 4, + ACTIONS(118), 1, + sym__newline, + ACTIONS(175), 1, + anon_sym_COMMA, + ACTIONS(200), 1, + anon_sym_DOT, + STATE(87), 1, + aux_sym_entry_repeat1, + [1386] = 2, + ACTIONS(118), 1, + sym__newline, + ACTIONS(175), 3, + anon_sym_DOT, + anon_sym_POUND_GT, + anon_sym_COMMA, + [1395] = 2, + ACTIONS(120), 1, + sym__newline, + ACTIONS(156), 3, + anon_sym_DOT, + anon_sym_POUND_GT, + anon_sym_COMMA, + [1404] = 4, + ACTIONS(111), 1, + sym__newline, + ACTIONS(177), 1, + anon_sym_COMMA, + ACTIONS(194), 1, + anon_sym_DOT, + STATE(87), 1, + aux_sym_entry_repeat1, + [1417] = 4, + ACTIONS(198), 1, + sym__label, + STATE(71), 1, + sym_identifier, + STATE(123), 1, + sym_entry, + STATE(136), 1, + sym__entry_list, + [1430] = 3, + ACTIONS(107), 1, + sym__newline, + STATE(96), 1, + aux_sym__entry_list_repeat1, + ACTIONS(132), 2, + anon_sym_DOT, + anon_sym_COMMA, + [1441] = 4, + ACTIONS(203), 1, + sym__label, + STATE(83), 1, + sym__entry_list, + STATE(85), 1, + sym_identifier, + STATE(100), 1, + sym_entry, + [1454] = 2, + ACTIONS(93), 1, + sym__newline, + ACTIONS(95), 3, + anon_sym_DOT, + anon_sym_POUND_GT, + anon_sym_COMMA, + [1463] = 4, + ACTIONS(77), 1, + anon_sym_POUND_GT, + ACTIONS(93), 1, + sym__newline, + ACTIONS(95), 1, + anon_sym_DOT, + STATE(101), 1, + sym_throw_statement, + [1476] = 4, + ACTIONS(120), 1, + sym__newline, + ACTIONS(156), 1, + anon_sym_DOT, + ACTIONS(205), 1, + anon_sym_COMMA, + STATE(96), 1, + aux_sym__entry_list_repeat1, + [1489] = 4, + ACTIONS(198), 1, + sym__label, + STATE(71), 1, + sym_identifier, + STATE(123), 1, + sym_entry, + STATE(143), 1, + sym__entry_list, + [1502] = 3, + ACTIONS(198), 1, + sym__label, + STATE(71), 1, + sym_identifier, + STATE(82), 2, + sym_entry, + sym__entry_list, + [1513] = 4, + ACTIONS(107), 1, + sym__newline, + ACTIONS(132), 1, + anon_sym_DOT, + ACTIONS(208), 1, + anon_sym_COMMA, + STATE(96), 1, + aux_sym__entry_list_repeat1, + [1526] = 4, + ACTIONS(140), 1, + anon_sym_DOT, + ACTIONS(144), 1, + sym__newline, + ACTIONS(208), 1, + anon_sym_COMMA, + STATE(99), 1, + aux_sym__entry_list_repeat1, + [1539] = 2, + ACTIONS(101), 1, + sym__newline, + ACTIONS(127), 3, + anon_sym_DOT, + anon_sym_POUND_GT, + anon_sym_COMMA, + [1548] = 4, + ACTIONS(75), 1, + sym__newline, + ACTIONS(77), 1, + anon_sym_POUND_GT, + ACTIONS(81), 1, + anon_sym_DOT, + STATE(94), 1, + sym_throw_statement, + [1561] = 2, + ACTIONS(75), 1, + sym__newline, + ACTIONS(81), 3, + anon_sym_DOT, + anon_sym_POUND_GT, + anon_sym_COMMA, + [1570] = 2, + ACTIONS(168), 1, + sym__newline, + ACTIONS(210), 3, + anon_sym_DOT, + anon_sym_POUND_GT, + anon_sym_COMMA, + [1579] = 4, + ACTIONS(77), 1, + anon_sym_POUND_GT, + ACTIONS(101), 1, + sym__newline, + ACTIONS(127), 1, + anon_sym_DOT, + STATE(104), 1, + sym_throw_statement, + [1592] = 3, + ACTIONS(203), 1, + sym__label, + STATE(85), 1, + sym_identifier, + STATE(83), 2, + sym_entry, + sym__entry_list, + [1603] = 4, + ACTIONS(198), 1, + sym__label, + ACTIONS(212), 1, + anon_sym_RPAREN, + STATE(108), 1, + sym_identifier, + STATE(133), 1, + sym__identifier_list, + [1616] = 3, + ACTIONS(214), 1, + anon_sym_RPAREN, + ACTIONS(216), 1, + anon_sym_COMMA, + STATE(119), 1, + aux_sym__identifier_list_repeat1, + [1626] = 3, + ACTIONS(218), 1, + anon_sym_RPAREN, + ACTIONS(220), 1, + anon_sym_COMMA, + STATE(109), 1, + aux_sym__identifier_list_repeat1, + [1636] = 3, + ACTIONS(77), 1, + anon_sym_POUND_GT, + ACTIONS(164), 1, + sym__newline, + STATE(139), 1, + sym_throw_statement, + [1646] = 3, + ACTIONS(77), 1, + anon_sym_POUND_GT, + ACTIONS(97), 1, + sym__newline, + STATE(138), 1, + sym_throw_statement, + [1656] = 3, + ACTIONS(111), 1, + sym__newline, + ACTIONS(223), 1, + anon_sym_DOT, + STATE(124), 1, + aux_sym_entry_repeat1, + [1666] = 3, + ACTIONS(225), 1, + sym__label, + STATE(58), 1, + sym_identifier, + STATE(89), 1, + sym_entry, + [1676] = 3, + ACTIONS(227), 1, + sym__label, + STATE(49), 1, + sym_identifier, + STATE(80), 1, + sym_entry, + [1686] = 3, + ACTIONS(125), 1, + sym__newline, + ACTIONS(223), 1, + anon_sym_DOT, + STATE(112), 1, + aux_sym_entry_repeat1, + [1696] = 3, + ACTIONS(77), 1, + anon_sym_POUND_GT, + ACTIONS(229), 1, + sym__newline, + STATE(141), 1, + sym_throw_statement, + [1706] = 3, + ACTIONS(203), 1, + sym__label, + STATE(85), 1, + sym_identifier, + STATE(89), 1, + sym_entry, + [1716] = 3, + ACTIONS(227), 1, + sym__label, + STATE(49), 1, + sym_identifier, + STATE(73), 1, + sym_entry, + [1726] = 3, + ACTIONS(216), 1, + anon_sym_COMMA, + ACTIONS(231), 1, + anon_sym_RPAREN, + STATE(109), 1, + aux_sym__identifier_list_repeat1, + [1736] = 3, + ACTIONS(107), 1, + anon_sym_GT, + ACTIONS(233), 1, + anon_sym_COMMA, + STATE(51), 1, + aux_sym__entry_list_repeat1, + [1746] = 3, + ACTIONS(225), 1, + sym__label, + STATE(58), 1, + sym_identifier, + STATE(84), 1, + sym_entry, + [1756] = 3, + ACTIONS(198), 1, + sym__label, + STATE(71), 1, + sym_identifier, + STATE(73), 1, + sym_entry, + [1766] = 3, + ACTIONS(144), 1, + anon_sym_GT, + ACTIONS(233), 1, + anon_sym_COMMA, + STATE(120), 1, + aux_sym__entry_list_repeat1, + [1776] = 3, + ACTIONS(118), 1, + sym__newline, + ACTIONS(235), 1, + anon_sym_DOT, + STATE(124), 1, + aux_sym_entry_repeat1, + [1786] = 2, + ACTIONS(198), 1, + sym__label, + STATE(127), 1, + sym_identifier, + [1793] = 2, + ACTIONS(7), 1, + sym__label, + STATE(88), 1, + sym_identifier, + [1800] = 1, + ACTIONS(218), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [1805] = 2, + ACTIONS(227), 1, + sym__label, + STATE(76), 1, + sym_identifier, + [1812] = 2, + ACTIONS(198), 1, + sym__label, + STATE(76), 1, + sym_identifier, + [1819] = 2, + ACTIONS(203), 1, + sym__label, + STATE(88), 1, + sym_identifier, + [1826] = 2, + ACTIONS(225), 1, + sym__label, + STATE(88), 1, + sym_identifier, + [1833] = 1, + ACTIONS(238), 1, + aux_sym_comment_token1, + [1837] = 1, + ACTIONS(240), 1, + anon_sym_RPAREN, + [1841] = 1, + ACTIONS(242), 1, + sym__newline, + [1845] = 1, + ACTIONS(244), 1, + anon_sym_RPAREN, + [1849] = 1, + ACTIONS(246), 1, + anon_sym_GT, + [1853] = 1, + ACTIONS(97), 1, + sym__newline, + [1857] = 1, + ACTIONS(164), 1, + sym__newline, + [1861] = 1, + ACTIONS(229), 1, + sym__newline, + [1865] = 1, + ACTIONS(248), 1, + sym__newline, + [1869] = 1, + ACTIONS(250), 1, + sym__newline, + [1873] = 1, + ACTIONS(252), 1, + ts_builtin_sym_end, + [1877] = 1, + ACTIONS(254), 1, + anon_sym_GT, + [1881] = 1, + ACTIONS(256), 1, + sym__label, + [1885] = 1, + ACTIONS(258), 1, + sym__label, +}; + +static const uint32_t ts_small_parse_table_map[] = { + [SMALL_STATE(2)] = 0, + [SMALL_STATE(3)] = 31, + [SMALL_STATE(4)] = 62, + [SMALL_STATE(5)] = 93, + [SMALL_STATE(6)] = 112, + [SMALL_STATE(7)] = 131, + [SMALL_STATE(8)] = 150, + [SMALL_STATE(9)] = 169, + [SMALL_STATE(10)] = 188, + [SMALL_STATE(11)] = 207, + [SMALL_STATE(12)] = 238, + [SMALL_STATE(13)] = 267, + [SMALL_STATE(14)] = 297, + [SMALL_STATE(15)] = 329, + [SMALL_STATE(16)] = 354, + [SMALL_STATE(17)] = 377, + [SMALL_STATE(18)] = 408, + [SMALL_STATE(19)] = 436, + [SMALL_STATE(20)] = 462, + [SMALL_STATE(21)] = 486, + [SMALL_STATE(22)] = 509, + [SMALL_STATE(23)] = 532, + [SMALL_STATE(24)] = 549, + [SMALL_STATE(25)] = 574, + [SMALL_STATE(26)] = 591, + [SMALL_STATE(27)] = 610, + [SMALL_STATE(28)] = 629, + [SMALL_STATE(29)] = 649, + [SMALL_STATE(30)] = 667, + [SMALL_STATE(31)] = 689, + [SMALL_STATE(32)] = 707, + [SMALL_STATE(33)] = 717, + [SMALL_STATE(34)] = 737, + [SMALL_STATE(35)] = 748, + [SMALL_STATE(36)] = 761, + [SMALL_STATE(37)] = 770, + [SMALL_STATE(38)] = 779, + [SMALL_STATE(39)] = 798, + [SMALL_STATE(40)] = 811, + [SMALL_STATE(41)] = 824, + [SMALL_STATE(42)] = 835, + [SMALL_STATE(43)] = 846, + [SMALL_STATE(44)] = 859, + [SMALL_STATE(45)] = 870, + [SMALL_STATE(46)] = 881, + [SMALL_STATE(47)] = 900, + [SMALL_STATE(48)] = 913, + [SMALL_STATE(49)] = 926, + [SMALL_STATE(50)] = 939, + [SMALL_STATE(51)] = 951, + [SMALL_STATE(52)] = 963, + [SMALL_STATE(53)] = 975, + [SMALL_STATE(54)] = 989, + [SMALL_STATE(55)] = 1003, + [SMALL_STATE(56)] = 1017, + [SMALL_STATE(57)] = 1031, + [SMALL_STATE(58)] = 1045, + [SMALL_STATE(59)] = 1059, + [SMALL_STATE(60)] = 1073, + [SMALL_STATE(61)] = 1087, + [SMALL_STATE(62)] = 1097, + [SMALL_STATE(63)] = 1113, + [SMALL_STATE(64)] = 1127, + [SMALL_STATE(65)] = 1137, + [SMALL_STATE(66)] = 1149, + [SMALL_STATE(67)] = 1161, + [SMALL_STATE(68)] = 1177, + [SMALL_STATE(69)] = 1189, + [SMALL_STATE(70)] = 1201, + [SMALL_STATE(71)] = 1209, + [SMALL_STATE(72)] = 1221, + [SMALL_STATE(73)] = 1229, + [SMALL_STATE(74)] = 1237, + [SMALL_STATE(75)] = 1247, + [SMALL_STATE(76)] = 1255, + [SMALL_STATE(77)] = 1263, + [SMALL_STATE(78)] = 1277, + [SMALL_STATE(79)] = 1291, + [SMALL_STATE(80)] = 1305, + [SMALL_STATE(81)] = 1313, + [SMALL_STATE(82)] = 1321, + [SMALL_STATE(83)] = 1329, + [SMALL_STATE(84)] = 1338, + [SMALL_STATE(85)] = 1347, + [SMALL_STATE(86)] = 1360, + [SMALL_STATE(87)] = 1373, + [SMALL_STATE(88)] = 1386, + [SMALL_STATE(89)] = 1395, + [SMALL_STATE(90)] = 1404, + [SMALL_STATE(91)] = 1417, + [SMALL_STATE(92)] = 1430, + [SMALL_STATE(93)] = 1441, + [SMALL_STATE(94)] = 1454, + [SMALL_STATE(95)] = 1463, + [SMALL_STATE(96)] = 1476, + [SMALL_STATE(97)] = 1489, + [SMALL_STATE(98)] = 1502, + [SMALL_STATE(99)] = 1513, + [SMALL_STATE(100)] = 1526, + [SMALL_STATE(101)] = 1539, + [SMALL_STATE(102)] = 1548, + [SMALL_STATE(103)] = 1561, + [SMALL_STATE(104)] = 1570, + [SMALL_STATE(105)] = 1579, + [SMALL_STATE(106)] = 1592, + [SMALL_STATE(107)] = 1603, + [SMALL_STATE(108)] = 1616, + [SMALL_STATE(109)] = 1626, + [SMALL_STATE(110)] = 1636, + [SMALL_STATE(111)] = 1646, + [SMALL_STATE(112)] = 1656, + [SMALL_STATE(113)] = 1666, + [SMALL_STATE(114)] = 1676, + [SMALL_STATE(115)] = 1686, + [SMALL_STATE(116)] = 1696, + [SMALL_STATE(117)] = 1706, + [SMALL_STATE(118)] = 1716, + [SMALL_STATE(119)] = 1726, + [SMALL_STATE(120)] = 1736, + [SMALL_STATE(121)] = 1746, + [SMALL_STATE(122)] = 1756, + [SMALL_STATE(123)] = 1766, + [SMALL_STATE(124)] = 1776, + [SMALL_STATE(125)] = 1786, + [SMALL_STATE(126)] = 1793, + [SMALL_STATE(127)] = 1800, + [SMALL_STATE(128)] = 1805, + [SMALL_STATE(129)] = 1812, + [SMALL_STATE(130)] = 1819, + [SMALL_STATE(131)] = 1826, + [SMALL_STATE(132)] = 1833, + [SMALL_STATE(133)] = 1837, + [SMALL_STATE(134)] = 1841, + [SMALL_STATE(135)] = 1845, + [SMALL_STATE(136)] = 1849, + [SMALL_STATE(137)] = 1853, + [SMALL_STATE(138)] = 1857, + [SMALL_STATE(139)] = 1861, + [SMALL_STATE(140)] = 1865, + [SMALL_STATE(141)] = 1869, + [SMALL_STATE(142)] = 1873, + [SMALL_STATE(143)] = 1877, + [SMALL_STATE(144)] = 1881, + [SMALL_STATE(145)] = 1885, +}; + +static const TSParseActionEntry ts_parse_actions[] = { + [0] = {.entry = {.count = 0, .reusable = false}}, + [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), + [3] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 0), + [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(132), + [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), + [9] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_definition, 3), + [11] = {.entry = {.count = 1, .reusable = false}}, SHIFT(144), + [13] = {.entry = {.count = 1, .reusable = false}}, SHIFT(132), + [15] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_definition, 3), + [17] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_definition, 2), + [19] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_definition, 2), + [21] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_definition_repeat1, 2), + [23] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_definition_repeat1, 2), SHIFT_REPEAT(144), + [26] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_definition_repeat1, 2), SHIFT_REPEAT(132), + [29] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_definition_repeat1, 2), + [31] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_member, 4), + [33] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_member, 4), + [35] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_member, 7), + [37] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_member, 7), + [39] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_member, 6), + [41] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_member, 6), + [43] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_member, 3), + [45] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_member, 3), + [47] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 3), + [49] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_comment, 3), + [51] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_member, 5), + [53] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_member, 5), + [55] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_identifier, 1), + [57] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), + [59] = {.entry = {.count = 1, .reusable = true}}, SHIFT(114), + [61] = {.entry = {.count = 1, .reusable = true}}, SHIFT(98), + [63] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91), + [65] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_identifier, 1), + [67] = {.entry = {.count = 1, .reusable = false}}, SHIFT(107), + [69] = {.entry = {.count = 1, .reusable = false}}, SHIFT(121), + [71] = {.entry = {.count = 1, .reusable = false}}, SHIFT(97), + [73] = {.entry = {.count = 1, .reusable = false}}, SHIFT(106), + [75] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_identifier, 2), + [77] = {.entry = {.count = 1, .reusable = false}}, SHIFT(93), + [79] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), + [81] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_identifier, 2), + [83] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1), + [85] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat2, 2), + [87] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat2, 2), SHIFT_REPEAT(132), + [90] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat2, 2), SHIFT_REPEAT(17), + [93] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_identifier, 3), + [95] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_identifier, 3), + [97] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), + [99] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_annotation, 3), + [101] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_identifier, 4), + [103] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameter_list, 2), + [105] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameter_list, 3), + [107] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__entry_list, 2), + [109] = {.entry = {.count = 1, .reusable = true}}, SHIFT(128), + [111] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_entry, 2), + [113] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_annotation, 3), + [115] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_entry_repeat1, 2), SHIFT_REPEAT(128), + [118] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_entry_repeat1, 2), + [120] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__entry_list_repeat1, 2), + [122] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__entry_list_repeat1, 2), SHIFT_REPEAT(118), + [125] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_entry, 1), + [127] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_identifier, 4), + [129] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__entry_list_repeat1, 2), SHIFT_REPEAT(122), + [132] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__entry_list, 2), + [134] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat2, 1), + [136] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_source_file_repeat2, 1), + [138] = {.entry = {.count = 1, .reusable = true}}, SHIFT(60), + [140] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__entry_list, 1), + [142] = {.entry = {.count = 1, .reusable = false}}, SHIFT(113), + [144] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__entry_list, 1), + [146] = {.entry = {.count = 1, .reusable = false}}, SHIFT(131), + [148] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_entry, 1), + [150] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_source_file_repeat2, 2), + [152] = {.entry = {.count = 1, .reusable = true}}, SHIFT(79), + [154] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parameter_list, 2), + [156] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__entry_list_repeat1, 2), + [158] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__entry_list_repeat1, 2), SHIFT_REPEAT(113), + [161] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_entry_repeat1, 2), SHIFT_REPEAT(129), + [164] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), + [166] = {.entry = {.count = 1, .reusable = true}}, SHIFT(129), + [168] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_identifier, 5), + [170] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parameter_list, 3), + [172] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_entry_repeat1, 2), SHIFT_REPEAT(131), + [175] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_entry_repeat1, 2), + [177] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_entry, 2), + [179] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), + [181] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), + [183] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(79), + [186] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 2), + [188] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_throw_statement, 2), + [190] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_throw_statement, 2), + [192] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_return_statement, 2), + [194] = {.entry = {.count = 1, .reusable = false}}, SHIFT(130), + [196] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), + [198] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), + [200] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_entry_repeat1, 2), SHIFT_REPEAT(130), + [203] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), + [205] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__entry_list_repeat1, 2), SHIFT_REPEAT(117), + [208] = {.entry = {.count = 1, .reusable = false}}, SHIFT(117), + [210] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_identifier, 5), + [212] = {.entry = {.count = 1, .reusable = true}}, SHIFT(61), + [214] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__identifier_list, 1), + [216] = {.entry = {.count = 1, .reusable = true}}, SHIFT(125), + [218] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__identifier_list_repeat1, 2), + [220] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__identifier_list_repeat1, 2), SHIFT_REPEAT(125), + [223] = {.entry = {.count = 1, .reusable = false}}, SHIFT(126), + [225] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), + [227] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), + [229] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), + [231] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__identifier_list, 2), + [233] = {.entry = {.count = 1, .reusable = true}}, SHIFT(122), + [235] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_entry_repeat1, 2), SHIFT_REPEAT(126), + [238] = {.entry = {.count = 1, .reusable = true}}, SHIFT(134), + [240] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74), + [242] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), + [244] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), + [246] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), + [248] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), + [250] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), + [252] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [254] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), + [256] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_member_type, 1), + [258] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), +}; + +#ifdef __cplusplus +extern "C" { +#endif +#ifdef _WIN32 +#define extern __declspec(dllexport) +#endif + +extern const TSLanguage *tree_sitter_apinotation(void) { + static const TSLanguage language = { + .version = LANGUAGE_VERSION, + .symbol_count = SYMBOL_COUNT, + .alias_count = ALIAS_COUNT, + .token_count = TOKEN_COUNT, + .external_token_count = EXTERNAL_TOKEN_COUNT, + .state_count = STATE_COUNT, + .large_state_count = LARGE_STATE_COUNT, + .production_id_count = PRODUCTION_ID_COUNT, + .field_count = FIELD_COUNT, + .max_alias_sequence_length = MAX_ALIAS_SEQUENCE_LENGTH, + .parse_table = &ts_parse_table[0][0], + .small_parse_table = ts_small_parse_table, + .small_parse_table_map = ts_small_parse_table_map, + .parse_actions = ts_parse_actions, + .symbol_names = ts_symbol_names, + .symbol_metadata = ts_symbol_metadata, + .public_symbol_map = ts_symbol_map, + .alias_map = ts_non_terminal_alias_map, + .alias_sequences = &ts_alias_sequences[0][0], + .lex_modes = ts_lex_modes, + .lex_fn = ts_lex, + .primary_state_ids = ts_primary_state_ids, + }; + return &language; +} +#ifdef __cplusplus +} +#endif diff --git a/src/tree_sitter/parser.h b/src/tree_sitter/parser.h new file mode 100644 index 0000000..2b14ac1 --- /dev/null +++ b/src/tree_sitter/parser.h @@ -0,0 +1,224 @@ +#ifndef TREE_SITTER_PARSER_H_ +#define TREE_SITTER_PARSER_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#define ts_builtin_sym_error ((TSSymbol)-1) +#define ts_builtin_sym_end 0 +#define TREE_SITTER_SERIALIZATION_BUFFER_SIZE 1024 + +typedef uint16_t TSStateId; + +#ifndef TREE_SITTER_API_H_ +typedef uint16_t TSSymbol; +typedef uint16_t TSFieldId; +typedef struct TSLanguage TSLanguage; +#endif + +typedef struct { + TSFieldId field_id; + uint8_t child_index; + bool inherited; +} TSFieldMapEntry; + +typedef struct { + uint16_t index; + uint16_t length; +} TSFieldMapSlice; + +typedef struct { + bool visible; + bool named; + bool supertype; +} TSSymbolMetadata; + +typedef struct TSLexer TSLexer; + +struct TSLexer { + int32_t lookahead; + TSSymbol result_symbol; + void (*advance)(TSLexer *, bool); + void (*mark_end)(TSLexer *); + uint32_t (*get_column)(TSLexer *); + bool (*is_at_included_range_start)(const TSLexer *); + bool (*eof)(const TSLexer *); +}; + +typedef enum { + TSParseActionTypeShift, + TSParseActionTypeReduce, + TSParseActionTypeAccept, + TSParseActionTypeRecover, +} TSParseActionType; + +typedef union { + struct { + uint8_t type; + TSStateId state; + bool extra; + bool repetition; + } shift; + struct { + uint8_t type; + uint8_t child_count; + TSSymbol symbol; + int16_t dynamic_precedence; + uint16_t production_id; + } reduce; + uint8_t type; +} TSParseAction; + +typedef struct { + uint16_t lex_state; + uint16_t external_lex_state; +} TSLexMode; + +typedef union { + TSParseAction action; + struct { + uint8_t count; + bool reusable; + } entry; +} TSParseActionEntry; + +struct TSLanguage { + uint32_t version; + uint32_t symbol_count; + uint32_t alias_count; + uint32_t token_count; + uint32_t external_token_count; + uint32_t state_count; + uint32_t large_state_count; + uint32_t production_id_count; + uint32_t field_count; + uint16_t max_alias_sequence_length; + const uint16_t *parse_table; + const uint16_t *small_parse_table; + const uint32_t *small_parse_table_map; + const TSParseActionEntry *parse_actions; + const char * const *symbol_names; + const char * const *field_names; + const TSFieldMapSlice *field_map_slices; + const TSFieldMapEntry *field_map_entries; + const TSSymbolMetadata *symbol_metadata; + const TSSymbol *public_symbol_map; + const uint16_t *alias_map; + const TSSymbol *alias_sequences; + const TSLexMode *lex_modes; + bool (*lex_fn)(TSLexer *, TSStateId); + bool (*keyword_lex_fn)(TSLexer *, TSStateId); + TSSymbol keyword_capture_token; + struct { + const bool *states; + const TSSymbol *symbol_map; + void *(*create)(void); + void (*destroy)(void *); + bool (*scan)(void *, TSLexer *, const bool *symbol_whitelist); + unsigned (*serialize)(void *, char *); + void (*deserialize)(void *, const char *, unsigned); + } external_scanner; + const TSStateId *primary_state_ids; +}; + +/* + * Lexer Macros + */ + +#define START_LEXER() \ + bool result = false; \ + bool skip = false; \ + bool eof = false; \ + int32_t lookahead; \ + goto start; \ + next_state: \ + lexer->advance(lexer, skip); \ + start: \ + skip = false; \ + lookahead = lexer->lookahead; + +#define ADVANCE(state_value) \ + { \ + state = state_value; \ + goto next_state; \ + } + +#define SKIP(state_value) \ + { \ + skip = true; \ + state = state_value; \ + goto next_state; \ + } + +#define ACCEPT_TOKEN(symbol_value) \ + result = true; \ + lexer->result_symbol = symbol_value; \ + lexer->mark_end(lexer); + +#define END_STATE() return result; + +/* + * Parse Table Macros + */ + +#define SMALL_STATE(id) id - LARGE_STATE_COUNT + +#define STATE(id) id + +#define ACTIONS(id) id + +#define SHIFT(state_value) \ + {{ \ + .shift = { \ + .type = TSParseActionTypeShift, \ + .state = state_value \ + } \ + }} + +#define SHIFT_REPEAT(state_value) \ + {{ \ + .shift = { \ + .type = TSParseActionTypeShift, \ + .state = state_value, \ + .repetition = true \ + } \ + }} + +#define SHIFT_EXTRA() \ + {{ \ + .shift = { \ + .type = TSParseActionTypeShift, \ + .extra = true \ + } \ + }} + +#define REDUCE(symbol_val, child_count_val, ...) \ + {{ \ + .reduce = { \ + .type = TSParseActionTypeReduce, \ + .symbol = symbol_val, \ + .child_count = child_count_val, \ + __VA_ARGS__ \ + }, \ + }} + +#define RECOVER() \ + {{ \ + .type = TSParseActionTypeRecover \ + }} + +#define ACCEPT_INPUT() \ + {{ \ + .type = TSParseActionTypeAccept \ + }} + +#ifdef __cplusplus +} +#endif + +#endif // TREE_SITTER_PARSER_H_ diff --git a/test/corpus/notation.txt b/test/corpus/notation.txt new file mode 100644 index 0000000..435e9dc --- /dev/null +++ b/test/corpus/notation.txt @@ -0,0 +1,180 @@ +================== +Block +================== + +// An example +Forum.Models.Post + +glyphs > + -id + -created_at + -parent_id + -text + -author + // Comments are also + // Allowed in the middle + ~>textUpdated(text ) + ->authorUpdated(author ) + <~textWillUpdate(text ) + <-postWillRender(post ) + +>authorUpdated(author ) + <+textWillUpdate(text ) + ::getAll(parent_id ) => Promise> #> NotFoundError,DisplayError + ::get(id ) => Promise + #update(text ) => Promise + #transform(transformer (T) => boolean>) + +--- + +(source_file + (comment) + (definition + (entry + (identifier) + (identifier) + (identifier) + ) + (member + (member_type) + (type_annotation + (entry + (identifier + (type_annotation + (entry + (identifier))))))) + (member + (member_type) + (type_annotation + (entry + (identifier)))) + (member + (member_type) + (type_annotation + (entry + (identifier)))) + (member + (member_type) + (type_annotation + (entry + (identifier)))) + (member + (member_type) + (type_annotation + (entry + (identifier)))) + (member + (member_type) + (type_annotation + (entry + (identifier)))) + (comment) + (comment) + (member + (member_type) + (parameter_list + (identifier + (type_annotation + (entry + (identifier)))))) + (member + (member_type) + (parameter_list + (identifier + (type_annotation + (entry + (identifier)))))) + (member + (member_type) + (parameter_list + (identifier + (type_annotation + (entry + (identifier)))))) + (member + (member_type) + (parameter_list + (identifier + (type_annotation + (entry + (identifier) + (identifier) + (identifier)))))) + (member + (member_type) + (parameter_list + (identifier + (type_annotation + (entry + (identifier)))))) + (member + (member_type) + (parameter_list + (identifier + (type_annotation + (entry + (identifier)))))) + (member + (member_type) + (parameter_list + (identifier + (type_annotation + (entry + (identifier))))) + (return_statement + (entry + (identifier + (type_annotation + (entry + (identifier + (type_annotation + (entry + (identifier) + (identifier) + (identifier))))))))) + (throw_statement + (entry + (identifier)) + (entry + (identifier)))) + (member + (member_type) + (parameter_list + (identifier + (type_annotation + (entry + (identifier))))) + (return_statement + (entry + (identifier + (type_annotation + (entry + (identifier) + (identifier) + (identifier))))))) + (member + (member_type) + (parameter_list + (identifier + (type_annotation + (entry + (identifier))))) + (return_statement + (entry + (identifier + (type_annotation + (entry + (identifier))))))) + (member + (member_type) + (parameter_list + (identifier + (type_annotation + (entry + (identifier + (type_annotation + (entry + (identifier))) + (parameter_list + (identifier)) + (return_statement + (entry + (identifier))))))))))) diff --git a/test/highlight/notation.api b/test/highlight/notation.api new file mode 100644 index 0000000..b798549 --- /dev/null +++ b/test/highlight/notation.api @@ -0,0 +1,48 @@ +Forum.Models.Post +// <- keyword +// ^ keyword +// ^ keyword + +glyphs > + //<- operator + //^ property + // ^ type + // ^ keyword + // ^ type + // ^ keyword + // ^ type + + -id + -created_at + -parent_id + -text + -author + ~>textUpdated(text ) + //<- operator + //^ property + // ^ function + // ^ parameter + // ^ type + // ^ keyword + // ^ type + // ^ function + ->authorUpdated(author ) + <~textWillUpdate(text ) + <-postWillRender(post ) + +>authorUpdated(author ) + <+textWillUpdate(text ) + ::getAll(parent_id ) => Promise> #> NotFoundError,DisplayError + //<- operator + //^ property + // ^ function + // ^ parameter + // ^ type + // ^ keyword + // ^ type + // ^ function + // ^ operator + // ^ keyword + // ^ operator + // ^ keyword + ::get(id ) => Promise + #update(text ) => Promise + #transform(transformer (T) => boolean>)