diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml
index 1632cff2ab..363689184c 100644
--- a/.github/workflows/build-and-test.yml
+++ b/.github/workflows/build-and-test.yml
@@ -159,7 +159,7 @@ jobs:
needs: check-for-run-condition
if: ${{ needs.check-for-run-condition.outputs.should-run == 'true' }}
# owner/repository of workflow has to be static, see https://github.community/t/env-variables-in-uses/17466
- uses: iotaledger/identity.rs/.github/workflows/shared-build-wasm.yml@dev
+ uses: iotaledger/identity.rs/.github/workflows/shared-build-wasm.yml@support/v0.6
with:
output-artifact-name: identity-wasm-bindings-build
@@ -202,6 +202,6 @@ jobs:
- build-wasm
if: ${{ needs.check-for-run-condition.outputs.should-run == 'true' }}
# owner/repository of workflow has to be static, see https://github.community/t/env-variables-in-uses/17466
- uses: iotaledger/identity.rs/.github/workflows/shared-build-and-test-stronghold-nodejs.yml@dev
+ uses: iotaledger/identity.rs/.github/workflows/shared-build-and-test-stronghold-nodejs.yml@support/v0.6
with:
input-artifact-name: identity-wasm-bindings-build
diff --git a/bindings/stronghold-nodejs/.gitignore b/bindings/stronghold-nodejs/.gitignore
index c941c40805..710d5d3a6d 100644
--- a/bindings/stronghold-nodejs/.gitignore
+++ b/bindings/stronghold-nodejs/.gitignore
@@ -12,3 +12,5 @@ npm/
# compiled files from napi and ts
napi-dist/
dist/
+
+!examples/build/rollup-plugin-dts/dist/
\ No newline at end of file
diff --git a/bindings/stronghold-nodejs/Cargo.lock b/bindings/stronghold-nodejs/Cargo.lock
index 989f3b1093..5d37ac2af3 100644
--- a/bindings/stronghold-nodejs/Cargo.lock
+++ b/bindings/stronghold-nodejs/Cargo.lock
@@ -134,7 +134,7 @@ dependencies = [
"bee-pow",
"bee-ternary",
"bytemuck",
- "digest",
+ "digest 0.9.0",
"hex",
"iota-crypto 0.9.1",
"serde",
@@ -185,7 +185,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174"
dependencies = [
"crypto-mac 0.8.0",
- "digest",
+ "digest 0.9.0",
"opaque-debug",
]
@@ -198,6 +198,15 @@ dependencies = [
"generic-array",
]
+[[package]]
+name = "block-buffer"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e"
+dependencies = [
+ "generic-array",
+]
+
[[package]]
name = "bumpalo"
version = "3.10.0"
@@ -297,6 +306,16 @@ dependencies = [
"libc",
]
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "typenum",
+]
+
[[package]]
name = "crypto-mac"
version = "0.8.0"
@@ -343,7 +362,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61"
dependencies = [
"byteorder",
- "digest",
+ "digest 0.9.0",
"rand_core 0.5.1",
"subtle",
"zeroize",
@@ -394,6 +413,17 @@ dependencies = [
"generic-array",
]
+[[package]]
+name = "digest"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f"
+dependencies = [
+ "block-buffer 0.10.3",
+ "crypto-common",
+ "subtle",
+]
+
[[package]]
name = "dirs"
version = "4.0.0"
@@ -444,10 +474,24 @@ dependencies = [
"curve25519-dalek",
"hex",
"rand_core 0.5.1",
- "sha2",
+ "sha2 0.9.9",
"thiserror",
]
+[[package]]
+name = "ed25519-zebra"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c24f403d068ad0b359e577a77f92392118be3f3c927538f2bb544a5ecd828c6"
+dependencies = [
+ "curve25519-dalek",
+ "hashbrown 0.12.3",
+ "hex",
+ "rand_core 0.6.3",
+ "sha2 0.9.9",
+ "zeroize",
+]
+
[[package]]
name = "fern"
version = "0.6.1"
@@ -460,11 +504,10 @@ dependencies = [
[[package]]
name = "form_urlencoded"
-version = "1.0.1"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191"
+checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
dependencies = [
- "matches",
"percent-encoding",
]
@@ -611,6 +654,15 @@ dependencies = [
"serde",
]
+[[package]]
+name = "hashbrown"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+dependencies = [
+ "ahash",
+]
+
[[package]]
name = "heck"
version = "0.4.0"
@@ -634,12 +686,11 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
[[package]]
name = "hkdf"
-version = "0.11.0"
+version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01706d578d5c281058480e673ae4086a9f4710d8df1ad80a5b03e39ece5f886b"
+checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437"
dependencies = [
- "digest",
- "hmac",
+ "hmac 0.12.1",
]
[[package]]
@@ -649,12 +700,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b"
dependencies = [
"crypto-mac 0.11.1",
- "digest",
+ "digest 0.9.0",
+]
+
+[[package]]
+name = "hmac"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
+dependencies = [
+ "digest 0.10.6",
]
[[package]]
name = "identity-diff"
-version = "0.5.0"
+version = "0.6.1"
dependencies = [
"serde",
"serde_json",
@@ -664,7 +724,7 @@ dependencies = [
[[package]]
name = "identity-stronghold-nodejs"
-version = "0.5.0"
+version = "0.6.0"
dependencies = [
"identity_account_storage",
"identity_core",
@@ -678,15 +738,15 @@ dependencies = [
[[package]]
name = "identity_account_storage"
-version = "0.5.0"
+version = "0.6.1"
dependencies = [
"async-trait",
"futures",
- "hashbrown",
+ "hashbrown 0.11.2",
"identity_core",
"identity_did",
"identity_iota_core",
- "iota-crypto 0.8.0",
+ "iota-crypto 0.9.1",
"iota_stronghold",
"once_cell",
"parking_lot",
@@ -701,10 +761,10 @@ dependencies = [
[[package]]
name = "identity_core"
-version = "0.5.0"
+version = "0.6.1"
dependencies = [
"identity-diff",
- "iota-crypto 0.8.0",
+ "iota-crypto 0.9.1",
"js-sys",
"multibase",
"serde",
@@ -719,7 +779,7 @@ dependencies = [
[[package]]
name = "identity_did"
-version = "0.5.0"
+version = "0.6.1"
dependencies = [
"did_url",
"form_urlencoded",
@@ -732,12 +792,12 @@ dependencies = [
[[package]]
name = "identity_iota_core"
-version = "0.5.0"
+version = "0.6.1"
dependencies = [
"bee-message",
"identity_core",
"identity_did",
- "iota-crypto 0.8.0",
+ "iota-crypto 0.9.1",
"lazy_static",
"serde",
"strum",
@@ -762,7 +822,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6012d540c5baa3589337a98ce73408de9b5a25ec9fc2c6fd6be8f0d39e0ca5a"
dependencies = [
"autocfg",
- "hashbrown",
+ "hashbrown 0.11.2",
"serde",
]
@@ -773,20 +833,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ee273ae67ff1bc7c59317c0ab280e0e76259e6bd83e140ac4c2ecebec994f740"
dependencies = [
"aead",
- "aes",
- "aes-gcm",
"blake2",
"chacha20poly1305",
"curve25519-dalek",
- "digest",
- "ed25519-zebra",
+ "digest 0.9.0",
"generic-array",
"getrandom 0.2.6",
- "hmac",
- "pbkdf2",
- "serde",
- "sha2",
- "unicode-normalization",
+ "hmac 0.11.0",
+ "sha2 0.9.9",
"x25519-dalek",
]
@@ -796,22 +850,56 @@ version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c98a3248cde6b42cb479a52089fe4fc20d12de51b8edd923294cd5240ec89b0"
dependencies = [
+ "aead",
+ "aes",
+ "aes-gcm",
"bee-ternary",
"blake2",
- "digest",
- "ed25519-zebra",
+ "curve25519-dalek",
+ "digest 0.9.0",
+ "ed25519-zebra 2.2.0",
+ "generic-array",
+ "getrandom 0.2.6",
+ "hmac 0.11.0",
"lazy_static",
+ "pbkdf2 0.8.0",
+ "sha2 0.9.9",
+ "x25519-dalek",
+]
+
+[[package]]
+name = "iota-crypto"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f03717e934972fad6f1c9b4cd25f662e1753b58a7f76e3dceadeb646e034b252"
+dependencies = [
+ "aead",
+ "aes",
+ "aes-gcm",
+ "chacha20poly1305",
+ "curve25519-dalek",
+ "digest 0.10.6",
+ "ed25519-zebra 3.1.0",
+ "generic-array",
+ "getrandom 0.2.6",
+ "hmac 0.12.1",
+ "pbkdf2 0.11.0",
+ "serde",
+ "sha2 0.10.6",
+ "unicode-normalization",
+ "x25519-dalek",
+ "zeroize",
]
[[package]]
name = "iota_stronghold"
-version = "0.5.1"
+version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "273197e986052cac7fed586142e40497ffec2e3536a7416d23bf694f90068b96"
+checksum = "89ebdd443fde5c02437469c1a318aa4d56cba83db3913743862a0e3b54ab5736"
dependencies = [
"bincode",
"hkdf",
- "iota-crypto 0.8.0",
+ "iota-crypto 0.12.1",
"serde",
"stronghold-derive",
"stronghold-rlu",
@@ -1051,11 +1139,20 @@ dependencies = [
"crypto-mac 0.11.1",
]
+[[package]]
+name = "pbkdf2"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917"
+dependencies = [
+ "digest 0.10.6",
+]
+
[[package]]
name = "percent-encoding"
-version = "2.1.0"
+version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
+checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
[[package]]
name = "pin-project-lite"
@@ -1285,13 +1382,24 @@ version = "0.9.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800"
dependencies = [
- "block-buffer",
+ "block-buffer 0.9.0",
"cfg-if",
"cpufeatures 0.2.2",
- "digest",
+ "digest 0.9.0",
"opaque-debug",
]
+[[package]]
+name = "sha2"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0"
+dependencies = [
+ "cfg-if",
+ "cpufeatures 0.2.2",
+ "digest 0.10.6",
+]
+
[[package]]
name = "slab"
version = "0.4.6"
@@ -1351,9 +1459,9 @@ dependencies = [
[[package]]
name = "stronghold-utils"
-version = "0.4.0"
+version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "30d8493a083506300a7a112d927f48068e4c733f0b46c63569dea6ab6dfe175c"
+checksum = "be1ce0d6205e8ea89771f2b32d64aeaecbc930320919e95ec4efcc0aa96cd951"
dependencies = [
"rand",
"stronghold-derive",
diff --git a/bindings/stronghold-nodejs/examples/build/replace_paths.js b/bindings/stronghold-nodejs/examples/build/replace_paths.js
new file mode 100644
index 0000000000..6f36f21cb6
--- /dev/null
+++ b/bindings/stronghold-nodejs/examples/build/replace_paths.js
@@ -0,0 +1,55 @@
+const fs = require("fs");
+const path = require("path");
+
+/**
+ * Replaces aliases defined in the `tsconfig.json` `paths` configuration in `js` and `ts` files.
+ * If more than one path is defined. The second path is used. Otherwise the first path.
+ * @param {string} tsconfig - Path to tsconfig that should be processed
+ * @param {string} dist - Folder of files that should be processed
+ * @param {'resolve'=} mode - In "resolve" mode relative paths will be replaced paths relative to the processed file. Note: `basePath` in the tsconfig will not be considered.
+ */
+
+function replace(tsconfig, dist, mode) {
+ // Read tsconfig file.
+ const tsconfigPath = path.join(__dirname, "..", tsconfig);
+ console.log(`\n using ${tsconfigPath}`);
+ let data = JSON.parse(fs.readFileSync(path.join(__dirname, "..", tsconfig), "utf8"));
+ let a = data.compilerOptions.paths;
+ let keys = Object.keys(a);
+
+ // Get `.js` and `.ts` file names from directory.
+ const distPath = path.join(__dirname, `../${dist}`);
+ console.log(`\n working in ${distPath}`);
+ let files = readdirSync(distPath);
+ files = files.filter((fileName) => fileName.endsWith(".ts") || fileName.endsWith(".js"));
+
+ // Replace the Alias with the second path if present, otherwise use first path.
+ for (let file of files) {
+ console.log(`\n processing ${file}`);
+ let fileData = fs.readFileSync(file, "utf8");
+ for (let key of keys) {
+ let value = a[key][1] ?? a[key][0];
+
+ const absoluteIncludePath = path.resolve(path.dirname(tsconfigPath), value);
+ if (mode == "resolve" && fs.existsSync(absoluteIncludePath)) {
+ const absoluteFilePath = path.resolve(path.dirname(file));
+ console.log(`\t calculating path from ${absoluteFilePath} to ${absoluteIncludePath}`);
+ // replace `\` with `/` to convert windows paths to node compatible imports
+ value = path.relative(absoluteFilePath, absoluteIncludePath).replace(/\\/g, "/");
+ }
+
+ console.log(`\t replace ${key} with ${value}`);
+ fileData = fileData.replaceAll(key, value);
+ }
+ fs.writeFileSync(file, fileData, "utf8");
+ }
+}
+
+const readdirSync = (p, a = []) => {
+ if (fs.statSync(p).isDirectory()) {
+ fs.readdirSync(p).map(f => readdirSync(a[a.push(path.join(p, f)) - 1], a));
+ }
+ return a;
+};
+
+replace(process.argv[2], process.argv[3], process.argv[4]);
\ No newline at end of file
diff --git a/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/COPYING b/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/COPYING
new file mode 100644
index 0000000000..f288702d2f
--- /dev/null
+++ b/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/COPYING
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
diff --git a/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/COPYING.LESSER b/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/COPYING.LESSER
new file mode 100644
index 0000000000..0a041280bd
--- /dev/null
+++ b/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/COPYING.LESSER
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/README.md b/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/README.md
new file mode 100644
index 0000000000..240f9ba7b9
--- /dev/null
+++ b/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/README.md
@@ -0,0 +1,84 @@
+# rollup-plugin-dts
+
+[](https://github.com/Swatinem/rollup-plugin-dts/actions?workflow=CI)
+[](https://codecov.io/gh/Swatinem/rollup-plugin-dts)
+
+This is a plugin that lets you roll-up your `.d.ts` definition files.
+
+## Usage
+
+Install the package from `npm`:
+
+ $ npm install --save-dev rollup-plugin-dts
+
+Add it to your `rollup.config.js`:
+
+```js
+import dts from "rollup-plugin-dts";
+
+const config = [
+ // …
+ {
+ input: "./my-input/index.d.ts",
+ output: [{ file: "dist/my-library.d.ts", format: "es" }],
+ plugins: [dts()],
+ },
+];
+
+export default config;
+```
+
+And then instruct typescript where to find your definitions inside your `package.json`:
+
+```json
+ "types": "dist/my-library.d.ts",
+```
+
+**NOTE** that the plugin will automatically mark any external library
+(`@types` for example) as `external`, so those will be excluded from bundling.
+
+## What to expect
+
+While this plugin is fairly complete, it does not support all imaginable use-cases.
+In particular, the plugin works best with already existing `.d.ts` files generated
+by the typescript compiler from idiomatic code.
+
+Working with `.ts(x)` or even `.js(x)` (when setting `allowJs: true`) does work,
+but is not recommended.
+
+The plugin does its own import resolution through the typescript compiler, and
+usage together with other resolution plugins, such as `node-resolve` can lead
+to errors and is not recommended.
+
+All external dependencies from `node_modules` are automatically excluded from
+bundling. This can be overridden using the `respectExternal` setting, but it is
+generally not recommended. While rollup of external `@types` generally works,
+it is not recommended.
+
+## Why?
+
+Well, ideally TypeScript should just do all this itself, and it even has a
+[proposal](https://github.com/Microsoft/TypeScript/issues/4433) to do that.
+But there hasn’t been any progress in ~3 years.
+
+Some projects, like [rollup itself](https://github.com/rollup/rollup/blob/24fe07f39da8e4225f4bc4f797331930d8405ec2/src/rollup/types.d.ts)
+go the route of completely separating their public interfaces in a separate file.
+
+## Alternatives
+
+- [API Extractor](https://api-extractor.com/)
+- [dts-bundle-generator](https://github.com/timocov/dts-bundle-generator)
+- [rollup-plugin-ts](https://github.com/wessberg/rollup-plugin-ts)
+- [tsc-prog](https://github.com/jeremyben/tsc-prog)
+
+[See](https://github.com/Swatinem/rollup-plugin-dts/issues/5)
+[some](https://github.com/Swatinem/rollup-plugin-dts/issues/13)
+[discussions](https://github.com/timocov/dts-bundle-generator/issues/68)
+about some of these projects and their tradeoffs.
+
+## [How does it work](./docs/how-it-works.md)
+
+## License
+
+The code is licensed under the copyleft **LGPL-3.0**. I have no intention to
+license this under any non-copyleft license.
diff --git a/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/dist/rollup-plugin-dts.cjs b/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/dist/rollup-plugin-dts.cjs
new file mode 100644
index 0000000000..b9e5d1bd66
--- /dev/null
+++ b/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/dist/rollup-plugin-dts.cjs
@@ -0,0 +1,1762 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var path = require('path');
+var ts = require('typescript');
+var module$1 = require('module');
+var MagicString = require('magic-string');
+
+function _interopNamespaceDefault(e) {
+ var n = Object.create(null);
+ if (e) {
+ Object.keys(e).forEach(function (k) {
+ if (k !== 'default') {
+ var d = Object.getOwnPropertyDescriptor(e, k);
+ Object.defineProperty(n, k, d.get ? d : {
+ enumerable: true,
+ get: function () { return e[k]; }
+ });
+ }
+ });
+ }
+ n.default = e;
+ return Object.freeze(n);
+}
+
+var path__namespace = /*#__PURE__*/_interopNamespaceDefault(path);
+
+function resolveDefaultOptions(options) {
+ return {
+ ...options,
+ compilerOptions: options.compilerOptions ?? {},
+ respectExternal: options.respectExternal ?? false,
+ };
+}
+
+const DTS_EXTENSIONS = /\.d\.(c|m)?tsx?$/;
+const dts = ".d.ts";
+const formatHost = {
+ getCurrentDirectory: () => ts.sys.getCurrentDirectory(),
+ getNewLine: () => ts.sys.newLine,
+ getCanonicalFileName: ts.sys.useCaseSensitiveFileNames ? (f) => f : (f) => f.toLowerCase(),
+};
+const DEFAULT_OPTIONS = {
+ // Ensure ".d.ts" modules are generated
+ declaration: true,
+ // Skip ".js" generation
+ noEmit: false,
+ emitDeclarationOnly: true,
+ // Skip code generation when error occurs
+ noEmitOnError: true,
+ // Avoid extra work
+ checkJs: false,
+ declarationMap: false,
+ skipLibCheck: true,
+ // Ensure TS2742 errors are visible
+ preserveSymlinks: true,
+ // Ensure we can parse the latest code
+ target: ts.ScriptTarget.ESNext,
+};
+const configByPath = new Map();
+const logCache = (...args) => (process.env.DTS_LOG_CACHE ? console.log("[cache]", ...args) : null);
+/**
+ * Caches the config for every path between two given paths.
+ *
+ * It starts from the first path and walks up the directory tree until it reaches the second path.
+ */
+function cacheConfig([fromPath, toPath], config) {
+ logCache(fromPath);
+ configByPath.set(fromPath, config);
+ while (fromPath !== toPath &&
+ // make sure we're not stuck in an infinite loop
+ fromPath !== path__namespace.dirname(fromPath)) {
+ fromPath = path__namespace.dirname(fromPath);
+ logCache("up", fromPath);
+ if (configByPath.has(fromPath))
+ return logCache("has", fromPath);
+ configByPath.set(fromPath, config);
+ }
+}
+function getCompilerOptions(input, overrideOptions, overrideConfigPath) {
+ const compilerOptions = { ...DEFAULT_OPTIONS, ...overrideOptions };
+ let dirName = path__namespace.dirname(input);
+ let dtsFiles = [];
+ // if a custom config is provided we'll use that as the cache key since it will always be used
+ const cacheKey = overrideConfigPath || dirName;
+ if (!configByPath.has(cacheKey)) {
+ logCache("miss", cacheKey);
+ const configPath = overrideConfigPath
+ ? path__namespace.resolve(process.cwd(), overrideConfigPath)
+ : ts.findConfigFile(dirName, ts.sys.fileExists);
+ if (!configPath) {
+ return { dtsFiles, dirName, compilerOptions };
+ }
+ let inputDirName = dirName;
+ dirName = path__namespace.dirname(configPath);
+ const { config, error } = ts.readConfigFile(configPath, ts.sys.readFile);
+ if (error) {
+ console.error(ts.formatDiagnostic(error, formatHost));
+ return { dtsFiles, dirName, compilerOptions };
+ }
+ logCache("tsconfig", config);
+ const configContents = ts.parseJsonConfigFileContent(config, ts.sys, dirName);
+ if (overrideConfigPath) {
+ // if a custom config is provided, we always only use that one
+ cacheConfig([overrideConfigPath, overrideConfigPath], configContents);
+ }
+ else {
+ // cache the config for all directories between input and resolved config path
+ cacheConfig([inputDirName, dirName], configContents);
+ }
+ }
+ else {
+ logCache("HIT", cacheKey);
+ }
+ const { fileNames, options, errors } = configByPath.get(cacheKey);
+ dtsFiles = fileNames.filter((name) => DTS_EXTENSIONS.test(name));
+ if (errors.length) {
+ console.error(ts.formatDiagnostics(errors, formatHost));
+ return { dtsFiles, dirName, compilerOptions };
+ }
+ return {
+ dtsFiles,
+ dirName,
+ compilerOptions: {
+ ...options,
+ ...compilerOptions,
+ },
+ };
+}
+function createProgram$1(fileName, overrideOptions, tsconfig) {
+ const { dtsFiles, compilerOptions } = getCompilerOptions(fileName, overrideOptions, tsconfig);
+ return ts.createProgram([fileName].concat(Array.from(dtsFiles)), compilerOptions, ts.createCompilerHost(compilerOptions, true));
+}
+function createPrograms(input, overrideOptions, tsconfig) {
+ const programs = [];
+ let inputs = [];
+ let dtsFiles = new Set();
+ let dirName = "";
+ let compilerOptions = {};
+ for (let main of input) {
+ if (DTS_EXTENSIONS.test(main)) {
+ continue;
+ }
+ main = path__namespace.resolve(main);
+ const options = getCompilerOptions(main, overrideOptions, tsconfig);
+ options.dtsFiles.forEach(dtsFiles.add, dtsFiles);
+ if (!inputs.length) {
+ inputs.push(main);
+ ({ dirName, compilerOptions } = options);
+ continue;
+ }
+ if (options.dirName === dirName) {
+ inputs.push(main);
+ }
+ else {
+ const host = ts.createCompilerHost(compilerOptions, true);
+ const program = ts.createProgram(inputs.concat(Array.from(dtsFiles)), compilerOptions, host);
+ programs.push(program);
+ inputs = [main];
+ ({ dirName, compilerOptions } = options);
+ }
+ }
+ if (inputs.length) {
+ const host = ts.createCompilerHost(compilerOptions, true);
+ const program = ts.createProgram(inputs.concat(Array.from(dtsFiles)), compilerOptions, host);
+ programs.push(program);
+ }
+ return programs;
+}
+
+function getCodeFrame() {
+ let codeFrameColumns = undefined;
+ try {
+ ({ codeFrameColumns } = require("@babel/code-frame"));
+ return codeFrameColumns;
+ }
+ catch {
+ try {
+ const esmRequire = module$1.createRequire((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('rollup-plugin-dts.cjs', document.baseURI).href)));
+ ({ codeFrameColumns } = esmRequire("@babel/code-frame"));
+ return codeFrameColumns;
+ }
+ catch { }
+ }
+ return undefined;
+}
+function getLocation(node) {
+ const sourceFile = node.getSourceFile();
+ const start = sourceFile.getLineAndCharacterOfPosition(node.getStart());
+ const end = sourceFile.getLineAndCharacterOfPosition(node.getEnd());
+ return {
+ start: { line: start.line + 1, column: start.character + 1 },
+ end: { line: end.line + 1, column: end.character + 1 },
+ };
+}
+function frameNode(node) {
+ const codeFrame = getCodeFrame();
+ const sourceFile = node.getSourceFile();
+ const code = sourceFile.getFullText();
+ const location = getLocation(node);
+ if (codeFrame) {
+ return ("\n" +
+ codeFrame(code, location, {
+ highlightCode: true,
+ }));
+ }
+ else {
+ return `\n${location.start.line}:${location.start.column}: \`${node.getFullText().trim()}\``;
+ }
+}
+class UnsupportedSyntaxError extends Error {
+ constructor(node, message = "Syntax not yet supported") {
+ super(`${message}\n${frameNode(node)}`);
+ }
+}
+
+class NamespaceFixer {
+ constructor(sourceFile) {
+ this.sourceFile = sourceFile;
+ }
+ findNamespaces() {
+ const namespaces = [];
+ const items = {};
+ for (const node of this.sourceFile.statements) {
+ const location = {
+ start: node.getStart(),
+ end: node.getEnd(),
+ };
+ // Well, this is a big hack:
+ // For some global `namespace` and `module` declarations, we generate
+ // some fake IIFE code, so rollup can correctly scan its scope.
+ // However, rollup will then insert bogus semicolons,
+ // these `EmptyStatement`s, which are a syntax error and we want to
+ // remove them. Well, we do that here…
+ if (ts.isEmptyStatement(node)) {
+ namespaces.unshift({
+ name: "",
+ exports: [],
+ location,
+ });
+ continue;
+ }
+ // When generating multiple chunks, rollup links those via import
+ // statements, obviously. But rollup uses full filenames with typescript extension,
+ // which typescript does not like. So make sure to change those to javascript extension here.
+ // `.d.ts` -> `.js`
+ // `.d.cts` -> `.cjs`
+ // `.d.mts` -> `.mjs`
+ if ((ts.isImportDeclaration(node) || ts.isExportDeclaration(node)) &&
+ node.moduleSpecifier &&
+ ts.isStringLiteral(node.moduleSpecifier)) {
+ let { text } = node.moduleSpecifier;
+ if (text.startsWith(".") && (text.endsWith(".d.ts") || text.endsWith(".d.cts") || text.endsWith(".d.mts"))) {
+ let start = node.moduleSpecifier.getStart() + 1; // +1 to account for the quote
+ let end = node.moduleSpecifier.getEnd() - 1; // -1 to account for the quote
+ namespaces.unshift({
+ name: "",
+ exports: [],
+ location: {
+ start,
+ end,
+ },
+ textBeforeCodeAfter: text
+ .replace(/\.d\.ts$/, ".js")
+ .replace(/\.d\.cts$/, ".cjs")
+ .replace(/\.d\.mts$/, ".mjs"),
+ });
+ }
+ }
+ // Remove redundant `{ Foo as Foo }` exports from a namespace which we
+ // added in pre-processing to fix up broken renaming
+ if (ts.isModuleDeclaration(node) && node.body && ts.isModuleBlock(node.body)) {
+ for (const stmt of node.body.statements) {
+ if (ts.isExportDeclaration(stmt) && stmt.exportClause) {
+ if (ts.isNamespaceExport(stmt.exportClause)) {
+ continue;
+ }
+ for (const decl of stmt.exportClause.elements) {
+ if (decl.propertyName && decl.propertyName.getText() == decl.name.getText()) {
+ namespaces.unshift({
+ name: "",
+ exports: [],
+ location: {
+ start: decl.propertyName.getEnd(),
+ end: decl.name.getEnd(),
+ },
+ });
+ }
+ }
+ }
+ }
+ }
+ if (ts.isClassDeclaration(node)) {
+ items[node.name.getText()] = { type: "class", generics: node.typeParameters };
+ }
+ else if (ts.isFunctionDeclaration(node)) {
+ // a function has generics, but these don’t need to be specified explicitly,
+ // since functions are treated as values.
+ items[node.name.getText()] = { type: "function" };
+ }
+ else if (ts.isInterfaceDeclaration(node)) {
+ items[node.name.getText()] = { type: "interface", generics: node.typeParameters };
+ }
+ else if (ts.isTypeAliasDeclaration(node)) {
+ items[node.name.getText()] = { type: "type", generics: node.typeParameters };
+ }
+ else if (ts.isModuleDeclaration(node) && ts.isIdentifier(node.name)) {
+ items[node.name.getText()] = { type: "namespace" };
+ }
+ else if (ts.isEnumDeclaration(node)) {
+ items[node.name.getText()] = { type: "enum" };
+ }
+ if (!ts.isVariableStatement(node)) {
+ continue;
+ }
+ const { declarations } = node.declarationList;
+ if (declarations.length !== 1) {
+ continue;
+ }
+ const decl = declarations[0];
+ const name = decl.name.getText();
+ if (!decl.initializer || !ts.isCallExpression(decl.initializer)) {
+ items[name] = { type: "var" };
+ continue;
+ }
+ const obj = decl.initializer.arguments[0];
+ if (!decl.initializer.expression.getFullText().includes("/*#__PURE__*/Object.freeze") ||
+ !ts.isObjectLiteralExpression(obj)) {
+ continue;
+ }
+ const exports = [];
+ for (const prop of obj.properties) {
+ if (!ts.isPropertyAssignment(prop) ||
+ !(ts.isIdentifier(prop.name) || ts.isStringLiteral(prop.name)) ||
+ (prop.name.text !== "__proto__" && !ts.isIdentifier(prop.initializer))) {
+ throw new UnsupportedSyntaxError(prop, "Expected a property assignment");
+ }
+ if (prop.name.text === "__proto__") {
+ continue;
+ }
+ exports.push({
+ exportedName: prop.name.text,
+ localName: prop.initializer.getText(),
+ });
+ }
+ // sort in reverse order, since we will do string manipulation
+ namespaces.unshift({
+ name,
+ exports,
+ location,
+ });
+ }
+ return { namespaces, itemTypes: items };
+ }
+ fix() {
+ let code = this.sourceFile.getFullText();
+ const { namespaces, itemTypes } = this.findNamespaces();
+ for (const ns of namespaces) {
+ const codeAfter = code.slice(ns.location.end);
+ code = code.slice(0, ns.location.start);
+ for (const { exportedName, localName } of ns.exports) {
+ if (exportedName === localName) {
+ const { type, generics } = itemTypes[localName] || {};
+ if (type === "interface" || type === "type") {
+ // an interface is just a type
+ const typeParams = renderTypeParams(generics);
+ code += `type ${ns.name}_${exportedName}${typeParams.in} = ${localName}${typeParams.out};\n`;
+ }
+ else if (type === "enum" || type === "class") {
+ // enums and classes are both types and values
+ const typeParams = renderTypeParams(generics);
+ code += `type ${ns.name}_${exportedName}${typeParams.in} = ${localName}${typeParams.out};\n`;
+ code += `declare const ${ns.name}_${exportedName}: typeof ${localName};\n`;
+ }
+ else {
+ // functions and vars are just values
+ code += `declare const ${ns.name}_${exportedName}: typeof ${localName};\n`;
+ }
+ }
+ }
+ if (ns.name) {
+ code += `declare namespace ${ns.name} {\n`;
+ code += ` export {\n`;
+ for (const { exportedName, localName } of ns.exports) {
+ if (exportedName === localName) {
+ code += ` ${ns.name}_${exportedName} as ${exportedName},\n`;
+ }
+ else {
+ code += ` ${localName} as ${exportedName},\n`;
+ }
+ }
+ code += ` };\n`;
+ code += `}`;
+ }
+ code += ns.textBeforeCodeAfter ?? "";
+ code += codeAfter;
+ }
+ return code;
+ }
+}
+function renderTypeParams(typeParameters) {
+ if (!typeParameters || !typeParameters.length) {
+ return { in: "", out: "" };
+ }
+ return {
+ in: `<${typeParameters.map((param) => param.getText()).join(", ")}>`,
+ out: `<${typeParameters.map((param) => param.name.getText()).join(", ")}>`,
+ };
+}
+
+let IDs = 1;
+/**
+ * Create a new `Program` for the given `node`:
+ */
+function createProgram(node) {
+ return withStartEnd({
+ type: "Program",
+ sourceType: "module",
+ body: [],
+ }, { start: node.getFullStart(), end: node.getEnd() });
+}
+/**
+ * Creates a reference to `id`:
+ * `_ = ${id}`
+ */
+function createReference(id) {
+ const ident = {
+ type: "Identifier",
+ name: String(IDs++),
+ };
+ return {
+ ident,
+ expr: {
+ type: "AssignmentPattern",
+ left: ident,
+ right: id,
+ },
+ };
+}
+function createIdentifier(node) {
+ return withStartEnd({
+ type: "Identifier",
+ name: node.getText(),
+ }, node);
+}
+/**
+ * Create a new Scope which is always included
+ * `(function (_ = MARKER) {})()`
+ */
+function createIIFE(range) {
+ const fn = withStartEnd({
+ type: "FunctionExpression",
+ id: null,
+ params: [],
+ body: { type: "BlockStatement", body: [] },
+ }, range);
+ const iife = withStartEnd({
+ type: "ExpressionStatement",
+ expression: {
+ type: "CallExpression",
+ callee: { type: "Identifier", name: String(IDs++) },
+ arguments: [fn],
+ optional: false,
+ },
+ }, range);
+ return { fn, iife };
+}
+/**
+ * Create a dummy ReturnStatement with an ArrayExpression:
+ * `return [];`
+ */
+function createReturn() {
+ const expr = {
+ type: "ArrayExpression",
+ elements: [],
+ };
+ return {
+ expr,
+ stmt: {
+ type: "ReturnStatement",
+ argument: expr,
+ },
+ };
+}
+/**
+ * Create a new Declaration and Scope for `id`:
+ * `function ${id}(_ = MARKER) {}`
+ */
+function createDeclaration(id, range) {
+ return withStartEnd({
+ type: "FunctionDeclaration",
+ id: withStartEnd({
+ type: "Identifier",
+ name: ts.idText(id),
+ }, id),
+ params: [],
+ body: { type: "BlockStatement", body: [] },
+ }, range);
+}
+function convertExpression(node) {
+ if (ts.isLiteralExpression(node)) {
+ return { type: "Literal", value: node.text };
+ }
+ if (ts.isPropertyAccessExpression(node)) {
+ if (ts.isPrivateIdentifier(node.name)) {
+ throw new UnsupportedSyntaxError(node.name);
+ }
+ return withStartEnd({
+ type: "MemberExpression",
+ computed: false,
+ optional: false,
+ object: convertExpression(node.expression),
+ property: convertExpression(node.name),
+ }, {
+ start: node.expression.getStart(),
+ end: node.name.getEnd(),
+ });
+ }
+ if (ts.isIdentifier(node)) {
+ return createIdentifier(node);
+ }
+ else if (node.kind == ts.SyntaxKind.NullKeyword) {
+ return { type: "Literal", value: null };
+ }
+ else {
+ throw new UnsupportedSyntaxError(node);
+ }
+}
+function withStartEnd(esNode, nodeOrRange) {
+ let range = "start" in nodeOrRange ? nodeOrRange : { start: nodeOrRange.getStart(), end: nodeOrRange.getEnd() };
+ return Object.assign(esNode, range);
+}
+function matchesModifier(node, flags) {
+ const nodeFlags = ts.getCombinedModifierFlags(node);
+ return (nodeFlags & flags) === flags;
+}
+
+/**
+ * The pre-process step has the following goals:
+ * - [x] Fixes the "modifiers", removing any `export` modifier and adding any
+ * missing `declare` modifier.
+ * - [x] Splitting compound `VariableStatement` into its parts.
+ * - [x] Moving declarations for the same "name" to be next to each other.
+ * - [x] Removing any triple-slash directives and recording them.
+ * - [x] Create a synthetic name for any nameless "export default".
+ * - [x] Resolve inline `import()` statements and generate top-level imports for
+ * them.
+ * - [x] Generate a separate `export {}` statement for any item which had its
+ * modifiers rewritten.
+ * - [ ] Duplicate the identifiers of a namespace `export`, so that renaming does
+ * not break it
+ */
+function preProcess({ sourceFile }) {
+ const code = new MagicString(sourceFile.getFullText());
+ /** All the names that are declared in the `SourceFile`. */
+ const declaredNames = new Set();
+ /** All the names that are exported. */
+ const exportedNames = new Set();
+ /** The name of the default export. */
+ let defaultExport = "";
+ /** Inlined exports from `fileId` -> . */
+ const inlineImports = new Map();
+ /** The ranges that each name covers, for re-ordering. */
+ const nameRanges = new Map();
+ /**
+ * Pass 1:
+ *
+ * - Remove statements that we can’t handle.
+ * - Collect a `Set` of all the declared names.
+ * - Collect a `Set` of all the exported names.
+ * - Maybe collect the name of the default export if present.
+ * - Fix the modifiers of all the items.
+ * - Collect the ranges of each named statement.
+ * - Duplicate the identifiers of a namespace `export`, so that renaming does
+ * not break it
+ */
+ for (const node of sourceFile.statements) {
+ if (ts.isEmptyStatement(node)) {
+ code.remove(node.getStart(), node.getEnd());
+ continue;
+ }
+ if (ts.isEnumDeclaration(node) ||
+ ts.isFunctionDeclaration(node) ||
+ ts.isInterfaceDeclaration(node) ||
+ ts.isClassDeclaration(node) ||
+ ts.isTypeAliasDeclaration(node) ||
+ ts.isModuleDeclaration(node)) {
+ // collect the declared name
+ if (node.name) {
+ const name = node.name.getText();
+ declaredNames.add(name);
+ // collect the exported name, maybe as `default`.
+ if (matchesModifier(node, ts.ModifierFlags.ExportDefault)) {
+ defaultExport = name;
+ }
+ else if (matchesModifier(node, ts.ModifierFlags.Export)) {
+ exportedNames.add(name);
+ }
+ if (!(node.flags & ts.NodeFlags.GlobalAugmentation)) {
+ pushNamedNode(name, [getStart(node), getEnd(node)]);
+ }
+ }
+ // duplicate exports of namespaces
+ if (ts.isModuleDeclaration(node)) {
+ duplicateExports(code, node);
+ }
+ fixModifiers(code, node);
+ }
+ else if (ts.isVariableStatement(node)) {
+ const { declarations } = node.declarationList;
+ // collect all the names, also check if they are exported
+ const isExport = matchesModifier(node, ts.ModifierFlags.Export);
+ for (const decl of node.declarationList.declarations) {
+ if (ts.isIdentifier(decl.name)) {
+ const name = decl.name.getText();
+ declaredNames.add(name);
+ if (isExport) {
+ exportedNames.add(name);
+ }
+ }
+ }
+ fixModifiers(code, node);
+ // collect the ranges for re-ordering
+ if (declarations.length == 1) {
+ const decl = declarations[0];
+ if (ts.isIdentifier(decl.name)) {
+ pushNamedNode(decl.name.getText(), [getStart(node), getEnd(node)]);
+ }
+ }
+ else {
+ // we do reordering after splitting
+ const decls = declarations.slice();
+ const first = decls.shift();
+ pushNamedNode(first.name.getText(), [getStart(node), first.getEnd()]);
+ for (const decl of decls) {
+ if (ts.isIdentifier(decl.name)) {
+ pushNamedNode(decl.name.getText(), [decl.getFullStart(), decl.getEnd()]);
+ }
+ }
+ }
+ // split the variable declaration into different statements
+ const { flags } = node.declarationList;
+ const type = flags & ts.NodeFlags.Let ? "let" : flags & ts.NodeFlags.Const ? "const" : "var";
+ const prefix = `declare ${type} `;
+ const list = node.declarationList
+ .getChildren()
+ .find((c) => c.kind === ts.SyntaxKind.SyntaxList)
+ .getChildren();
+ let commaPos = 0;
+ for (const node of list) {
+ if (node.kind === ts.SyntaxKind.CommaToken) {
+ commaPos = node.getStart();
+ code.remove(commaPos, node.getEnd());
+ }
+ else if (commaPos) {
+ code.appendLeft(commaPos, ";\n");
+ const start = node.getFullStart();
+ const slice = code.slice(start, node.getStart());
+ let whitespace = slice.length - slice.trimStart().length;
+ if (whitespace) {
+ code.overwrite(start, start + whitespace, prefix);
+ }
+ else {
+ code.appendLeft(start, prefix);
+ }
+ }
+ }
+ }
+ }
+ /**
+ * Pass 2:
+ *
+ * Now that we have a Set of all the declared names, we can use that to
+ * generate and de-conflict names for the following steps:
+ *
+ * - Resolve all the inline imports.
+ * - Give any name-less `default export` a name.
+ */
+ for (const node of sourceFile.statements) {
+ // recursively check inline imports
+ checkInlineImport(node);
+ if (!matchesModifier(node, ts.ModifierFlags.ExportDefault)) {
+ continue;
+ }
+ // only function and class can be default exported, and be missing a name
+ if (ts.isFunctionDeclaration(node) || ts.isClassDeclaration(node)) {
+ if (node.name) {
+ continue;
+ }
+ if (!defaultExport) {
+ defaultExport = uniqName("export_default");
+ }
+ const children = node.getChildren();
+ const idx = children.findIndex((node) => node.kind === ts.SyntaxKind.ClassKeyword || node.kind === ts.SyntaxKind.FunctionKeyword);
+ const token = children[idx];
+ const nextToken = children[idx + 1];
+ const isPunctuation = nextToken.kind >= ts.SyntaxKind.FirstPunctuation && nextToken.kind <= ts.SyntaxKind.LastPunctuation;
+ if (isPunctuation) {
+ code.appendLeft(nextToken.getStart(), defaultExport);
+ }
+ else {
+ code.appendRight(token.getEnd(), ` ${defaultExport}`);
+ }
+ }
+ }
+ // and re-order all the name ranges to be contiguous
+ for (const ranges of nameRanges.values()) {
+ // we have to move all the nodes in front of the *last* one, which is a bit
+ // unintuitive but is a workaround for:
+ // https://github.com/Rich-Harris/magic-string/issues/180
+ const last = ranges.pop();
+ const start = last[0];
+ for (const node of ranges) {
+ code.move(node[0], node[1], start);
+ }
+ }
+ // render all the inline imports, and all the exports
+ if (defaultExport) {
+ code.append(`\nexport default ${defaultExport};\n`);
+ }
+ if (exportedNames.size) {
+ code.append(`\nexport { ${[...exportedNames].join(", ")} };\n`);
+ }
+ for (const [fileId, importName] of inlineImports.entries()) {
+ code.prepend(`import * as ${importName} from "${fileId}";\n`);
+ }
+ const lineStarts = sourceFile.getLineStarts();
+ // and collect/remove all the typeReferenceDirectives
+ const typeReferences = new Set();
+ for (const ref of sourceFile.typeReferenceDirectives) {
+ typeReferences.add(ref.fileName);
+ const { line } = sourceFile.getLineAndCharacterOfPosition(ref.pos);
+ const start = lineStarts[line];
+ let end = sourceFile.getLineEndOfPosition(ref.pos);
+ if (code.slice(end, end + 1) == "\n") {
+ end += 1;
+ }
+ code.remove(start, end);
+ }
+ // and collect/remove all the fileReferenceDirectives
+ const fileReferences = new Set();
+ for (const ref of sourceFile.referencedFiles) {
+ fileReferences.add(ref.fileName);
+ const { line } = sourceFile.getLineAndCharacterOfPosition(ref.pos);
+ const start = lineStarts[line];
+ let end = sourceFile.getLineEndOfPosition(ref.pos);
+ if (code.slice(end, end + 1) == "\n") {
+ end += 1;
+ }
+ code.remove(start, end);
+ }
+ return {
+ code,
+ typeReferences,
+ fileReferences,
+ };
+ function checkInlineImport(node) {
+ ts.forEachChild(node, checkInlineImport);
+ if (ts.isImportTypeNode(node)) {
+ if (!ts.isLiteralTypeNode(node.argument) || !ts.isStringLiteral(node.argument.literal)) {
+ throw new UnsupportedSyntaxError(node, "inline imports should have a literal argument");
+ }
+ const fileId = node.argument.literal.text;
+ const children = node.getChildren();
+ const start = children.find((t) => t.kind === ts.SyntaxKind.ImportKeyword).getStart();
+ let end = node.getEnd();
+ const token = children.find((t) => t.kind === ts.SyntaxKind.DotToken || t.kind === ts.SyntaxKind.LessThanToken);
+ if (token) {
+ end = token.getStart();
+ }
+ const importName = createNamespaceImport(fileId);
+ code.overwrite(start, end, importName);
+ }
+ }
+ function createNamespaceImport(fileId) {
+ let importName = inlineImports.get(fileId);
+ if (!importName) {
+ importName = uniqName(fileId.replace(/[^a-zA-Z0-9_$]/g, () => "_"));
+ inlineImports.set(fileId, importName);
+ }
+ return importName;
+ }
+ function uniqName(hint) {
+ let name = hint;
+ while (declaredNames.has(name)) {
+ name = `_${name}`;
+ }
+ declaredNames.add(name);
+ return name;
+ }
+ function pushNamedNode(name, range) {
+ let nodes = nameRanges.get(name);
+ if (!nodes) {
+ nodes = [range];
+ nameRanges.set(name, nodes);
+ }
+ else {
+ const last = nodes[nodes.length - 1];
+ if (last[1] === range[0]) {
+ last[1] = range[1];
+ }
+ else {
+ nodes.push(range);
+ }
+ }
+ }
+}
+function fixModifiers(code, node) {
+ // remove the `export` and `default` modifier, add a `declare` if its missing.
+ let hasDeclare = false;
+ const needsDeclare = ts.isEnumDeclaration(node) ||
+ ts.isClassDeclaration(node) ||
+ ts.isFunctionDeclaration(node) ||
+ ts.isModuleDeclaration(node) ||
+ ts.isVariableStatement(node);
+ for (const mod of node.modifiers ?? []) {
+ switch (mod.kind) {
+ case ts.SyntaxKind.ExportKeyword: // fall through
+ case ts.SyntaxKind.DefaultKeyword:
+ // TODO: be careful about that `+ 1`
+ code.remove(mod.getStart(), mod.getEnd() + 1);
+ break;
+ case ts.SyntaxKind.DeclareKeyword:
+ hasDeclare = true;
+ }
+ }
+ if (needsDeclare && !hasDeclare) {
+ code.appendRight(node.getStart(), "declare ");
+ }
+}
+function duplicateExports(code, module) {
+ if (!module.body || !ts.isModuleBlock(module.body)) {
+ return;
+ }
+ for (const node of module.body.statements) {
+ if (ts.isExportDeclaration(node) && node.exportClause) {
+ if (ts.isNamespaceExport(node.exportClause)) {
+ continue;
+ }
+ for (const decl of node.exportClause.elements) {
+ if (!decl.propertyName) {
+ code.appendLeft(decl.name.getEnd(), ` as ${decl.name.getText()}`);
+ }
+ }
+ }
+ }
+}
+function getStart(node) {
+ const start = node.getFullStart();
+ return start + (newlineAt(node, start) ? 1 : 0);
+}
+function getEnd(node) {
+ const end = node.getEnd();
+ return end + (newlineAt(node, end) ? 1 : 0);
+}
+function newlineAt(node, idx) {
+ return node.getSourceFile().getFullText()[idx] == "\n";
+}
+
+const IGNORE_TYPENODES = new Set([
+ ts.SyntaxKind.LiteralType,
+ ts.SyntaxKind.VoidKeyword,
+ ts.SyntaxKind.UnknownKeyword,
+ ts.SyntaxKind.AnyKeyword,
+ ts.SyntaxKind.BooleanKeyword,
+ ts.SyntaxKind.NumberKeyword,
+ ts.SyntaxKind.StringKeyword,
+ ts.SyntaxKind.ObjectKeyword,
+ ts.SyntaxKind.NullKeyword,
+ ts.SyntaxKind.UndefinedKeyword,
+ ts.SyntaxKind.SymbolKeyword,
+ ts.SyntaxKind.NeverKeyword,
+ ts.SyntaxKind.ThisKeyword,
+ ts.SyntaxKind.ThisType,
+ ts.SyntaxKind.BigIntKeyword,
+]);
+class DeclarationScope {
+ constructor({ id, range }) {
+ /**
+ * As we walk the AST, we need to keep track of type variable bindings that
+ * shadow the outer identifiers. To achieve this, we keep a stack of scopes,
+ * represented as Sets of variable names.
+ */
+ this.scopes = [];
+ if (id) {
+ this.declaration = createDeclaration(id, range);
+ }
+ else {
+ const { iife, fn } = createIIFE(range);
+ this.iife = iife;
+ this.declaration = fn;
+ }
+ const ret = createReturn();
+ this.declaration.body.body.push(ret.stmt);
+ this.returnExpr = ret.expr;
+ }
+ pushScope() {
+ this.scopes.push(new Set());
+ }
+ popScope(n = 1) {
+ for (let i = 0; i < n; i++) {
+ this.scopes.pop();
+ }
+ }
+ pushTypeVariable(id) {
+ const name = id.getText();
+ this.scopes[this.scopes.length - 1]?.add(name);
+ }
+ pushReference(id) {
+ let name;
+ // We convert references from TS AST to ESTree
+ // to hand them off to rollup.
+ // This means we have to check the left-most identifier inside our scope
+ // tree and avoid to create the reference in that case
+ if (id.type === "Identifier") {
+ name = id.name;
+ }
+ else if (id.type === "MemberExpression") {
+ if (id.object.type === "Identifier") {
+ name = id.object.name;
+ }
+ }
+ if (name) {
+ for (const scope of this.scopes) {
+ if (scope.has(name)) {
+ return;
+ }
+ }
+ }
+ const { ident, expr } = createReference(id);
+ this.declaration.params.push(expr);
+ this.returnExpr.elements.push(ident);
+ }
+ pushIdentifierReference(id) {
+ this.pushReference(createIdentifier(id));
+ }
+ convertEntityName(node) {
+ if (ts.isIdentifier(node)) {
+ return createIdentifier(node);
+ }
+ return withStartEnd({
+ type: "MemberExpression",
+ computed: false,
+ optional: false,
+ object: this.convertEntityName(node.left),
+ property: createIdentifier(node.right),
+ }, node);
+ }
+ convertPropertyAccess(node) {
+ // hm, we only care about property access expressions here…
+ if (!ts.isIdentifier(node.expression) && !ts.isPropertyAccessExpression(node.expression)) {
+ throw new UnsupportedSyntaxError(node.expression);
+ }
+ if (ts.isPrivateIdentifier(node.name)) {
+ throw new UnsupportedSyntaxError(node.name);
+ }
+ let object = ts.isIdentifier(node.expression)
+ ? createIdentifier(node.expression)
+ : this.convertPropertyAccess(node.expression);
+ return withStartEnd({
+ type: "MemberExpression",
+ computed: false,
+ optional: false,
+ object,
+ property: createIdentifier(node.name),
+ }, node);
+ }
+ convertComputedPropertyName(node) {
+ if (!node.name || !ts.isComputedPropertyName(node.name)) {
+ return;
+ }
+ const { expression } = node.name;
+ if (ts.isLiteralExpression(expression) || ts.isPrefixUnaryExpression(expression)) {
+ return;
+ }
+ if (ts.isIdentifier(expression)) {
+ return this.pushReference(createIdentifier(expression));
+ }
+ if (ts.isPropertyAccessExpression(expression)) {
+ return this.pushReference(this.convertPropertyAccess(expression));
+ }
+ throw new UnsupportedSyntaxError(expression);
+ }
+ convertParametersAndType(node) {
+ this.convertComputedPropertyName(node);
+ const typeVariables = this.convertTypeParameters(node.typeParameters);
+ for (const param of node.parameters) {
+ this.convertTypeNode(param.type);
+ }
+ this.convertTypeNode(node.type);
+ this.popScope(typeVariables);
+ }
+ convertHeritageClauses(node) {
+ for (const heritage of node.heritageClauses || []) {
+ for (const type of heritage.types) {
+ this.pushReference(convertExpression(type.expression));
+ this.convertTypeArguments(type);
+ }
+ }
+ }
+ convertTypeArguments(node) {
+ if (!node.typeArguments) {
+ return;
+ }
+ for (const arg of node.typeArguments) {
+ this.convertTypeNode(arg);
+ }
+ }
+ convertMembers(members) {
+ for (const node of members) {
+ if (ts.isPropertyDeclaration(node) || ts.isPropertySignature(node) || ts.isIndexSignatureDeclaration(node)) {
+ if (ts.isPropertyDeclaration(node) && node.initializer && ts.isPropertyAccessExpression(node.initializer)) {
+ this.pushReference(this.convertPropertyAccess(node.initializer));
+ }
+ this.convertComputedPropertyName(node);
+ this.convertTypeNode(node.type);
+ continue;
+ }
+ if (ts.isMethodDeclaration(node) ||
+ ts.isMethodSignature(node) ||
+ ts.isConstructorDeclaration(node) ||
+ ts.isConstructSignatureDeclaration(node) ||
+ ts.isCallSignatureDeclaration(node) ||
+ ts.isGetAccessorDeclaration(node) ||
+ ts.isSetAccessorDeclaration(node)) {
+ this.convertParametersAndType(node);
+ }
+ else {
+ throw new UnsupportedSyntaxError(node);
+ }
+ }
+ }
+ convertTypeParameters(params) {
+ if (!params) {
+ return 0;
+ }
+ for (const node of params) {
+ this.convertTypeNode(node.constraint);
+ this.convertTypeNode(node.default);
+ this.pushScope();
+ this.pushTypeVariable(node.name);
+ }
+ return params.length;
+ }
+ convertTypeNode(node) {
+ if (!node) {
+ return;
+ }
+ if (IGNORE_TYPENODES.has(node.kind)) {
+ return;
+ }
+ if (ts.isTypeReferenceNode(node)) {
+ this.pushReference(this.convertEntityName(node.typeName));
+ this.convertTypeArguments(node);
+ return;
+ }
+ if (ts.isTypeLiteralNode(node)) {
+ return this.convertMembers(node.members);
+ }
+ if (ts.isArrayTypeNode(node)) {
+ return this.convertTypeNode(node.elementType);
+ }
+ if (ts.isTupleTypeNode(node)) {
+ for (const type of node.elements) {
+ this.convertTypeNode(type);
+ }
+ return;
+ }
+ if (ts.isNamedTupleMember(node) ||
+ ts.isParenthesizedTypeNode(node) ||
+ ts.isTypeOperatorNode(node) ||
+ ts.isTypePredicateNode(node)) {
+ return this.convertTypeNode(node.type);
+ }
+ if (ts.isUnionTypeNode(node) || ts.isIntersectionTypeNode(node)) {
+ for (const type of node.types) {
+ this.convertTypeNode(type);
+ }
+ return;
+ }
+ if (ts.isMappedTypeNode(node)) {
+ const { typeParameter, type, nameType } = node;
+ this.convertTypeNode(typeParameter.constraint);
+ this.pushScope();
+ this.pushTypeVariable(typeParameter.name);
+ this.convertTypeNode(type);
+ if (nameType) {
+ this.convertTypeNode(nameType);
+ }
+ this.popScope();
+ return;
+ }
+ if (ts.isConditionalTypeNode(node)) {
+ this.convertTypeNode(node.checkType);
+ this.pushScope();
+ this.convertTypeNode(node.extendsType);
+ this.convertTypeNode(node.trueType);
+ this.convertTypeNode(node.falseType);
+ this.popScope();
+ return;
+ }
+ if (ts.isIndexedAccessTypeNode(node)) {
+ this.convertTypeNode(node.objectType);
+ this.convertTypeNode(node.indexType);
+ return;
+ }
+ if (ts.isFunctionOrConstructorTypeNode(node)) {
+ this.convertParametersAndType(node);
+ return;
+ }
+ if (ts.isTypeQueryNode(node)) {
+ this.pushReference(this.convertEntityName(node.exprName));
+ return;
+ }
+ if (ts.isRestTypeNode(node)) {
+ this.convertTypeNode(node.type);
+ return;
+ }
+ if (ts.isOptionalTypeNode(node)) {
+ this.convertTypeNode(node.type);
+ return;
+ }
+ if (ts.isTemplateLiteralTypeNode(node)) {
+ for (const span of node.templateSpans) {
+ this.convertTypeNode(span.type);
+ }
+ return;
+ }
+ if (ts.isInferTypeNode(node)) {
+ const { typeParameter } = node;
+ this.convertTypeNode(typeParameter.constraint);
+ this.pushTypeVariable(typeParameter.name);
+ return;
+ }
+ else {
+ throw new UnsupportedSyntaxError(node);
+ }
+ }
+ convertNamespace(node, relaxedModuleBlock = false) {
+ this.pushScope();
+ if (relaxedModuleBlock && node.body && ts.isModuleDeclaration(node.body)) {
+ this.convertNamespace(node.body, true);
+ return;
+ }
+ if (!node.body || !ts.isModuleBlock(node.body)) {
+ throw new UnsupportedSyntaxError(node, `namespace must have a "ModuleBlock" body.`);
+ }
+ const { statements } = node.body;
+ // first, hoist all the declarations for correct shadowing
+ for (const stmt of statements) {
+ if (ts.isEnumDeclaration(stmt) ||
+ ts.isFunctionDeclaration(stmt) ||
+ ts.isClassDeclaration(stmt) ||
+ ts.isInterfaceDeclaration(stmt) ||
+ ts.isTypeAliasDeclaration(stmt) ||
+ ts.isModuleDeclaration(stmt)) {
+ if (stmt.name && ts.isIdentifier(stmt.name)) {
+ this.pushTypeVariable(stmt.name);
+ }
+ else {
+ throw new UnsupportedSyntaxError(stmt, `non-Identifier name not supported`);
+ }
+ continue;
+ }
+ if (ts.isVariableStatement(stmt)) {
+ for (const decl of stmt.declarationList.declarations) {
+ if (ts.isIdentifier(decl.name)) {
+ this.pushTypeVariable(decl.name);
+ }
+ else {
+ throw new UnsupportedSyntaxError(decl, `non-Identifier name not supported`);
+ }
+ }
+ continue;
+ }
+ if (ts.isExportDeclaration(stmt)) ;
+ else {
+ throw new UnsupportedSyntaxError(stmt, `namespace child (hoisting) not supported yet`);
+ }
+ }
+ // and then walk all the children like normal…
+ for (const stmt of statements) {
+ if (ts.isVariableStatement(stmt)) {
+ for (const decl of stmt.declarationList.declarations) {
+ if (decl.type) {
+ this.convertTypeNode(decl.type);
+ }
+ }
+ continue;
+ }
+ if (ts.isFunctionDeclaration(stmt)) {
+ this.convertParametersAndType(stmt);
+ continue;
+ }
+ if (ts.isInterfaceDeclaration(stmt) || ts.isClassDeclaration(stmt)) {
+ const typeVariables = this.convertTypeParameters(stmt.typeParameters);
+ this.convertHeritageClauses(stmt);
+ this.convertMembers(stmt.members);
+ this.popScope(typeVariables);
+ continue;
+ }
+ if (ts.isTypeAliasDeclaration(stmt)) {
+ const typeVariables = this.convertTypeParameters(stmt.typeParameters);
+ this.convertTypeNode(stmt.type);
+ this.popScope(typeVariables);
+ continue;
+ }
+ if (ts.isModuleDeclaration(stmt)) {
+ this.convertNamespace(stmt, relaxedModuleBlock);
+ continue;
+ }
+ if (ts.isEnumDeclaration(stmt)) {
+ // noop
+ continue;
+ }
+ if (ts.isExportDeclaration(stmt)) {
+ if (stmt.exportClause) {
+ if (ts.isNamespaceExport(stmt.exportClause)) {
+ throw new UnsupportedSyntaxError(stmt.exportClause);
+ }
+ for (const decl of stmt.exportClause.elements) {
+ const id = decl.propertyName || decl.name;
+ this.pushIdentifierReference(id);
+ }
+ }
+ }
+ else {
+ throw new UnsupportedSyntaxError(stmt, `namespace child (walking) not supported yet`);
+ }
+ }
+ this.popScope();
+ }
+}
+
+function convert({ sourceFile }) {
+ const transformer = new Transformer(sourceFile);
+ return transformer.transform();
+}
+class Transformer {
+ constructor(sourceFile) {
+ this.sourceFile = sourceFile;
+ this.declarations = new Map();
+ this.ast = createProgram(sourceFile);
+ for (const stmt of sourceFile.statements) {
+ this.convertStatement(stmt);
+ }
+ }
+ transform() {
+ return {
+ ast: this.ast,
+ };
+ }
+ pushStatement(node) {
+ this.ast.body.push(node);
+ }
+ createDeclaration(node, id) {
+ const range = { start: node.getFullStart(), end: node.getEnd() };
+ if (!id) {
+ const scope = new DeclarationScope({ range });
+ this.pushStatement(scope.iife);
+ return scope;
+ }
+ const name = id.getText();
+ // We have re-ordered and grouped declarations in `reorderStatements`,
+ // so we can assume same-name statements are next to each other, so we just
+ // bump the `end` range.
+ const scope = new DeclarationScope({ id, range });
+ const existingScope = this.declarations.get(name);
+ if (existingScope) {
+ existingScope.pushIdentifierReference(id);
+ existingScope.declaration.end = range.end;
+ // we possibly have other declarations, such as an ExportDeclaration in
+ // between, which should also be updated to the correct start/end.
+ let selfIdx = this.ast.body.findIndex((node) => node == existingScope.declaration);
+ for (let i = selfIdx + 1; i < this.ast.body.length; i++) {
+ const decl = this.ast.body[i];
+ decl.start = decl.end = range.end;
+ }
+ }
+ else {
+ this.pushStatement(scope.declaration);
+ this.declarations.set(name, scope);
+ }
+ return existingScope || scope;
+ }
+ convertStatement(node) {
+ if (ts.isEnumDeclaration(node)) {
+ return this.convertEnumDeclaration(node);
+ }
+ if (ts.isFunctionDeclaration(node)) {
+ return this.convertFunctionDeclaration(node);
+ }
+ if (ts.isInterfaceDeclaration(node) || ts.isClassDeclaration(node)) {
+ return this.convertClassOrInterfaceDeclaration(node);
+ }
+ if (ts.isTypeAliasDeclaration(node)) {
+ return this.convertTypeAliasDeclaration(node);
+ }
+ if (ts.isVariableStatement(node)) {
+ return this.convertVariableStatement(node);
+ }
+ if (ts.isExportDeclaration(node) || ts.isExportAssignment(node)) {
+ return this.convertExportDeclaration(node);
+ }
+ if (ts.isModuleDeclaration(node)) {
+ return this.convertNamespaceDeclaration(node);
+ }
+ if (node.kind == ts.SyntaxKind.NamespaceExportDeclaration) {
+ // just ignore `export as namespace FOO` statements…
+ return this.removeStatement(node);
+ }
+ if (ts.isImportDeclaration(node) || ts.isImportEqualsDeclaration(node)) {
+ return this.convertImportDeclaration(node);
+ }
+ else {
+ throw new UnsupportedSyntaxError(node);
+ }
+ }
+ removeStatement(node) {
+ this.pushStatement(withStartEnd({
+ type: "ExpressionStatement",
+ expression: { type: "Literal", value: "pls remove me" },
+ }, node));
+ }
+ convertNamespaceDeclaration(node) {
+ // we want to keep `declare global` augmentations, and we want to
+ // pull in all the things referenced inside.
+ // so for this case, we need to figure out some way so that rollup does
+ // the right thing and not rename these…
+ const isGlobalAugmentation = node.flags & ts.NodeFlags.GlobalAugmentation;
+ if (isGlobalAugmentation || !ts.isIdentifier(node.name)) {
+ const scope = this.createDeclaration(node);
+ scope.convertNamespace(node, true);
+ return;
+ }
+ const scope = this.createDeclaration(node, node.name);
+ scope.pushIdentifierReference(node.name);
+ scope.convertNamespace(node);
+ }
+ convertEnumDeclaration(node) {
+ const scope = this.createDeclaration(node, node.name);
+ scope.pushIdentifierReference(node.name);
+ }
+ convertFunctionDeclaration(node) {
+ if (!node.name) {
+ throw new UnsupportedSyntaxError(node, `FunctionDeclaration should have a name`);
+ }
+ const scope = this.createDeclaration(node, node.name);
+ scope.pushIdentifierReference(node.name);
+ scope.convertParametersAndType(node);
+ }
+ convertClassOrInterfaceDeclaration(node) {
+ if (!node.name) {
+ throw new UnsupportedSyntaxError(node, `ClassDeclaration / InterfaceDeclaration should have a name`);
+ }
+ const scope = this.createDeclaration(node, node.name);
+ const typeVariables = scope.convertTypeParameters(node.typeParameters);
+ scope.convertHeritageClauses(node);
+ scope.convertMembers(node.members);
+ scope.popScope(typeVariables);
+ }
+ convertTypeAliasDeclaration(node) {
+ const scope = this.createDeclaration(node, node.name);
+ const typeVariables = scope.convertTypeParameters(node.typeParameters);
+ scope.convertTypeNode(node.type);
+ scope.popScope(typeVariables);
+ }
+ convertVariableStatement(node) {
+ const { declarations } = node.declarationList;
+ if (declarations.length !== 1) {
+ throw new UnsupportedSyntaxError(node, `VariableStatement with more than one declaration not yet supported`);
+ }
+ for (const decl of declarations) {
+ if (!ts.isIdentifier(decl.name)) {
+ throw new UnsupportedSyntaxError(node, `VariableDeclaration must have a name`);
+ }
+ const scope = this.createDeclaration(node, decl.name);
+ scope.convertTypeNode(decl.type);
+ }
+ }
+ convertExportDeclaration(node) {
+ if (ts.isExportAssignment(node)) {
+ this.pushStatement(withStartEnd({
+ type: "ExportDefaultDeclaration",
+ declaration: convertExpression(node.expression),
+ }, node));
+ return;
+ }
+ const source = node.moduleSpecifier ? convertExpression(node.moduleSpecifier) : undefined;
+ if (!node.exportClause) {
+ // export * from './other'
+ this.pushStatement(withStartEnd({
+ type: "ExportAllDeclaration",
+ source,
+ exported: null,
+ }, node));
+ }
+ else if (ts.isNamespaceExport(node.exportClause)) {
+ // export * as name from './other'
+ this.pushStatement(withStartEnd({
+ type: "ExportAllDeclaration",
+ source,
+ exported: createIdentifier(node.exportClause.name),
+ }, node));
+ }
+ else {
+ // export { name } from './other'
+ const specifiers = [];
+ for (const elem of node.exportClause.elements) {
+ specifiers.push(this.convertExportSpecifier(elem));
+ }
+ this.pushStatement(withStartEnd({
+ type: "ExportNamedDeclaration",
+ declaration: null,
+ specifiers,
+ source,
+ }, node));
+ }
+ }
+ convertImportDeclaration(node) {
+ if (ts.isImportEqualsDeclaration(node)) {
+ // assume its like `import default`
+ if (!ts.isExternalModuleReference(node.moduleReference)) {
+ throw new UnsupportedSyntaxError(node, "ImportEquals should have a literal source.");
+ }
+ this.pushStatement(withStartEnd({
+ type: "ImportDeclaration",
+ specifiers: [
+ {
+ type: "ImportDefaultSpecifier",
+ local: createIdentifier(node.name),
+ },
+ ],
+ source: convertExpression(node.moduleReference.expression),
+ }, node));
+ return;
+ }
+ const source = convertExpression(node.moduleSpecifier);
+ const specifiers = node.importClause && node.importClause.namedBindings
+ ? this.convertNamedImportBindings(node.importClause.namedBindings)
+ : [];
+ if (node.importClause && node.importClause.name) {
+ specifiers.push({
+ type: "ImportDefaultSpecifier",
+ local: createIdentifier(node.importClause.name),
+ });
+ }
+ this.pushStatement(withStartEnd({
+ type: "ImportDeclaration",
+ specifiers,
+ source,
+ }, node));
+ }
+ convertNamedImportBindings(node) {
+ if (ts.isNamedImports(node)) {
+ return node.elements.map((el) => {
+ const local = createIdentifier(el.name);
+ const imported = el.propertyName ? createIdentifier(el.propertyName) : local;
+ return {
+ type: "ImportSpecifier",
+ local,
+ imported,
+ };
+ });
+ }
+ return [
+ {
+ type: "ImportNamespaceSpecifier",
+ local: createIdentifier(node.name),
+ },
+ ];
+ }
+ convertExportSpecifier(node) {
+ const exported = createIdentifier(node.name);
+ return {
+ type: "ExportSpecifier",
+ exported: exported,
+ local: node.propertyName ? createIdentifier(node.propertyName) : exported,
+ };
+ }
+}
+
+function parse(fileName, code) {
+ return ts.createSourceFile(fileName, code, ts.ScriptTarget.Latest, true);
+}
+/**
+ * This is the *transform* part of `rollup-plugin-dts`.
+ *
+ * It sets a few input and output options, and otherwise is the core part of the
+ * plugin responsible for bundling `.d.ts` files.
+ *
+ * That itself is a multi-step process:
+ *
+ * 1. The plugin has a preprocessing step that moves code around and cleans it
+ * up a bit, so that later steps can work with it easier. See `preprocess.ts`.
+ * 2. It then converts the TypeScript AST into a ESTree-like AST that rollup
+ * understands. See `Transformer.ts`.
+ * 3. After rollup is finished, the plugin will postprocess the output in a
+ * `renderChunk` hook. As rollup usually outputs javascript, it can output
+ * some code that is invalid in the context of a `.d.ts` file. In particular,
+ * the postprocess convert any javascript code that was created for namespace
+ * exports into TypeScript namespaces. See `NamespaceFixer.ts`.
+ */
+const transform = () => {
+ const allTypeReferences = new Map();
+ const allFileReferences = new Map();
+ return {
+ name: "dts-transform",
+ options(options) {
+ const { onwarn } = options;
+ return {
+ ...options,
+ onwarn(warning, warn) {
+ if (warning.code != "CIRCULAR_DEPENDENCY") {
+ if (onwarn) {
+ onwarn(warning, warn);
+ }
+ else {
+ warn(warning);
+ }
+ }
+ },
+ treeshake: {
+ moduleSideEffects: "no-external",
+ propertyReadSideEffects: true,
+ unknownGlobalSideEffects: false,
+ },
+ };
+ },
+ outputOptions(options) {
+ return {
+ ...options,
+ chunkFileNames: options.chunkFileNames || "[name]-[hash].d.ts",
+ entryFileNames: options.entryFileNames || "[name].d.ts",
+ format: "es",
+ exports: "named",
+ compact: false,
+ freeze: true,
+ interop: "esModule",
+ generatedCode: Object.assign({ symbols: false }, options.generatedCode),
+ strict: false,
+ };
+ },
+ transform(code, fileName) {
+ let sourceFile = parse(fileName, code);
+ const preprocessed = preProcess({ sourceFile });
+ // `sourceFile.fileName` here uses forward slashes
+ allTypeReferences.set(sourceFile.fileName, preprocessed.typeReferences);
+ allFileReferences.set(sourceFile.fileName, preprocessed.fileReferences);
+ code = preprocessed.code.toString();
+ sourceFile = parse(fileName, code);
+ const converted = convert({ sourceFile });
+ if (process.env.DTS_DUMP_AST) {
+ console.log(fileName);
+ console.log(code);
+ console.log(JSON.stringify(converted.ast.body, undefined, 2));
+ }
+ return { code, ast: converted.ast, map: preprocessed.code.generateMap() };
+ },
+ renderChunk(code, chunk, options) {
+ const source = parse(chunk.fileName, code);
+ const fixer = new NamespaceFixer(source);
+ const typeReferences = new Set();
+ const fileReferences = new Set();
+ for (const fileName of Object.keys(chunk.modules)) {
+ for (const ref of allTypeReferences.get(fileName.split("\\").join("/")) || []) {
+ typeReferences.add(ref);
+ }
+ for (const ref of allFileReferences.get(fileName.split("\\").join("/")) || []) {
+ if (ref.startsWith(".")) {
+ // Need absolute path of the target file here
+ const absolutePathToOriginal = path__namespace.join(path__namespace.dirname(fileName), ref);
+ const chunkFolder = (options.file && path__namespace.dirname(options.file)) ||
+ (chunk.facadeModuleId && path__namespace.dirname(chunk.facadeModuleId)) ||
+ ".";
+ let targetRelPath = path__namespace.relative(chunkFolder, absolutePathToOriginal).split("\\").join("/");
+ if (targetRelPath[0] !== ".") {
+ targetRelPath = "./" + targetRelPath;
+ }
+ fileReferences.add(targetRelPath);
+ }
+ else {
+ fileReferences.add(ref);
+ }
+ }
+ }
+ code = writeBlock(Array.from(fileReferences, (ref) => `/// `));
+ code += writeBlock(Array.from(typeReferences, (ref) => `/// `));
+ code += fixer.fix();
+ if (!code) {
+ code += "\nexport { }";
+ }
+ return { code, map: { mappings: "" } };
+ },
+ };
+};
+function writeBlock(codes) {
+ if (codes.length) {
+ return codes.join("\n") + "\n";
+ }
+ return "";
+}
+
+const TS_EXTENSIONS = /\.([cm]ts|[tj]sx?)$/;
+function getModule({ programs, resolvedOptions: { compilerOptions, tsconfig } }, fileName, code) {
+ // Create any `ts.SourceFile` objects on-demand for ".d.ts" modules,
+ // but only when there are zero ".ts" entry points.
+ if (!programs.length && DTS_EXTENSIONS.test(fileName)) {
+ return { code };
+ }
+ // Rollup doesn't tell you the entry point of each module in the bundle,
+ // so we need to ask every TypeScript program for the given filename.
+ const existingProgram = programs.find((p) => !!p.getSourceFile(fileName));
+ if (existingProgram) {
+ // we know this exists b/c of the .filter above, so this non-null assertion is safe
+ const source = existingProgram.getSourceFile(fileName);
+ return {
+ code: source.getFullText(),
+ source,
+ program: existingProgram,
+ };
+ }
+ else if (ts.sys.fileExists(fileName)) {
+ const newProgram = createProgram$1(fileName, compilerOptions, tsconfig);
+ programs.push(newProgram);
+ // we created hte program from this fileName, so the source file must exist :P
+ const source = newProgram.getSourceFile(fileName);
+ return {
+ code: source.getFullText(),
+ source,
+ program: newProgram,
+ };
+ }
+ else {
+ // the file isn't part of an existing program and doesn't exist on disk
+ return null;
+ }
+}
+function rollupPluginDts(options = {}) {
+ const transformPlugin = transform();
+ const ctx = { programs: [], resolvedOptions: resolveDefaultOptions(options) };
+ return {
+ name: "dts",
+ // pass outputOptions & renderChunk hooks to the inner transform plugin
+ outputOptions: transformPlugin.outputOptions,
+ renderChunk: transformPlugin.renderChunk,
+ options(options) {
+ let { input = [] } = options;
+ if (!Array.isArray(input)) {
+ input = typeof input === "string" ? [input] : Object.values(input);
+ }
+ else if (input.length > 1) {
+ // when dealing with multiple unnamed inputs, transform the inputs into
+ // an explicit object, which strips the file extension
+ options.input = {};
+ for (const filename of input) {
+ let name = filename.replace(/((\.d)?\.(c|m)?(t|j)sx?)$/, "");
+ if (path__namespace.isAbsolute(filename)) {
+ name = path__namespace.basename(name);
+ }
+ else {
+ name = path__namespace.normalize(name);
+ }
+ options.input[name] = filename;
+ }
+ }
+ ctx.programs = createPrograms(Object.values(input), ctx.resolvedOptions.compilerOptions, ctx.resolvedOptions.tsconfig);
+ return transformPlugin.options.call(this, options);
+ },
+ transform(code, id) {
+ if (!TS_EXTENSIONS.test(id)) {
+ return null;
+ }
+ const watchFiles = (module) => {
+ if (module.program) {
+ const sourceDirectory = path__namespace.dirname(id);
+ const sourceFilesInProgram = module.program
+ .getSourceFiles()
+ .map((sourceFile) => sourceFile.fileName)
+ .filter((fileName) => fileName.startsWith(sourceDirectory));
+ sourceFilesInProgram.forEach(this.addWatchFile);
+ }
+ };
+ const handleDtsFile = () => {
+ const module = getModule(ctx, id, code);
+ if (module) {
+ watchFiles(module);
+ return transformPlugin.transform.call(this, module.code, id);
+ }
+ return null;
+ };
+ const treatTsAsDts = () => {
+ const declarationId = id.replace(TS_EXTENSIONS, dts);
+ let module = getModule(ctx, declarationId, code);
+ if (module) {
+ watchFiles(module);
+ return transformPlugin.transform.call(this, module.code, declarationId);
+ }
+ return null;
+ };
+ const generateDtsFromTs = () => {
+ const module = getModule(ctx, id, code);
+ if (!module || !module.source || !module.program)
+ return null;
+ watchFiles(module);
+ const declarationId = id.replace(TS_EXTENSIONS, dts);
+ let generated;
+ const { emitSkipped, diagnostics } = module.program.emit(module.source, (_, declarationText) => {
+ generated = transformPlugin.transform.call(this, declarationText, declarationId);
+ }, undefined, // cancellationToken
+ true);
+ if (emitSkipped) {
+ const errors = diagnostics.filter((diag) => diag.category === ts.DiagnosticCategory.Error);
+ if (errors.length) {
+ console.error(ts.formatDiagnostics(errors, formatHost));
+ this.error("Failed to compile. Check the logs above.");
+ }
+ }
+ return generated;
+ };
+ // if it's a .d.ts file, handle it as-is
+ if (DTS_EXTENSIONS.test(id))
+ return handleDtsFile();
+ // first attempt to treat .ts files as .d.ts files, and otherwise use the typescript compiler to generate the declarations
+ return treatTsAsDts() ?? generateDtsFromTs();
+ },
+ resolveId(source, importer) {
+ if (!importer) {
+ return;
+ }
+ // normalize directory separators to forward slashes, as apparently typescript expects that?
+ importer = importer.split("\\").join("/");
+ let resolvedCompilerOptions = ctx.resolvedOptions.compilerOptions;
+ if (ctx.resolvedOptions.tsconfig) {
+ // Here we have a chicken and egg problem.
+ // `source` would be resolved by `ts.nodeModuleNameResolver` a few lines below, but
+ // `ts.nodeModuleNameResolver` requires `compilerOptions` which we have to resolve here,
+ // since we have a custom `tsconfig.json`.
+ // So, we use Node's resolver algorithm so we can see where the request is coming from so we
+ // can load the custom `tsconfig.json` from the correct path.
+ const resolvedSource = source.startsWith(".") ? path__namespace.resolve(path__namespace.dirname(importer), source) : source;
+ resolvedCompilerOptions = getCompilerOptions(resolvedSource, ctx.resolvedOptions.compilerOptions, ctx.resolvedOptions.tsconfig).compilerOptions;
+ }
+ // resolve this via typescript
+ const { resolvedModule } = ts.resolveModuleName(source, importer, resolvedCompilerOptions, ts.sys);
+ if (!resolvedModule) {
+ return;
+ }
+ if (!ctx.resolvedOptions.respectExternal && resolvedModule.isExternalLibraryImport) {
+ // here, we define everything that comes from `node_modules` as `external`.
+ return { id: source, external: true };
+ }
+ else {
+ // using `path.resolve` here converts paths back to the system specific separators
+ return { id: path__namespace.resolve(resolvedModule.resolvedFileName) };
+ }
+ },
+ };
+}
+
+exports.default = rollupPluginDts;
diff --git a/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/dist/rollup-plugin-dts.d.ts b/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/dist/rollup-plugin-dts.d.ts
new file mode 100644
index 0000000000..6c5a0a29d1
--- /dev/null
+++ b/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/dist/rollup-plugin-dts.d.ts
@@ -0,0 +1,128 @@
+import * as rollup from 'rollup';
+import ts from 'typescript';
+
+interface Options {
+ /**
+ * The plugin will by default flag *all* external libraries as `external`,
+ * and thus prevent them from be bundled.
+ * If you set the `respectExternal` option to `true`, the plugin will not do
+ * any default classification, but rather use the `external` option as
+ * configured via rollup.
+ */
+ respectExternal?: boolean;
+ /**
+ * In case you want to use TypeScript path-mapping feature, using the
+ * `baseUrl` and `paths` properties, you can pass in `compilerOptions`.
+ */
+ compilerOptions?: ts.CompilerOptions;
+ /**
+ * Path to tsconfig.json, by default, will try to load 'tsconfig.json'
+ */
+ tsconfig?: string;
+}
+
+declare function rollupPluginDts(options?: Options): {
+ name: string;
+ outputOptions: (this: rollup.PluginContext, options: rollup.OutputOptions) => {
+ chunkFileNames: string | ((chunkInfo: rollup.PreRenderedChunk) => string);
+ entryFileNames: string | ((chunkInfo: rollup.PreRenderedChunk) => string);
+ format: "es";
+ exports: "named";
+ compact: false;
+ freeze: true;
+ interop: "esModule";
+ generatedCode: {
+ symbols: boolean;
+ } & (rollup.GeneratedCodePreset | rollup.GeneratedCodeOptions | undefined);
+ strict: false;
+ amd?: rollup.AmdOptions | undefined;
+ assetFileNames?: string | ((chunkInfo: rollup.PreRenderedAsset) => string) | undefined;
+ banner?: string | rollup.AddonFunction | undefined;
+ dir?: string | undefined;
+ dynamicImportFunction?: string | undefined;
+ dynamicImportInCjs?: boolean | undefined;
+ esModule?: boolean | "if-default-prop" | undefined;
+ experimentalDeepDynamicChunkOptimization?: boolean | undefined;
+ experimentalMinChunkSize?: number | undefined;
+ extend?: boolean | undefined;
+ externalImportAssertions?: boolean | undefined;
+ externalLiveBindings?: boolean | undefined;
+ file?: string | undefined;
+ footer?: string | rollup.AddonFunction | undefined;
+ globals?: rollup.GlobalsOption | undefined;
+ hoistTransitiveImports?: boolean | undefined;
+ indent?: string | boolean | undefined;
+ inlineDynamicImports?: boolean | undefined;
+ intro?: string | rollup.AddonFunction | undefined;
+ manualChunks?: rollup.ManualChunksOption | undefined;
+ minifyInternalExports?: boolean | undefined;
+ name?: string | undefined;
+ namespaceToStringTag?: boolean | undefined;
+ noConflict?: boolean | undefined;
+ outro?: string | rollup.AddonFunction | undefined;
+ paths?: rollup.OptionsPaths | undefined;
+ plugins?: rollup.OutputPluginOption;
+ preferConst?: boolean | undefined;
+ preserveModules?: boolean | undefined;
+ preserveModulesRoot?: string | undefined;
+ sanitizeFileName?: boolean | ((fileName: string) => string) | undefined;
+ sourcemap?: boolean | "inline" | "hidden" | undefined;
+ sourcemapBaseUrl?: string | undefined;
+ sourcemapExcludeSources?: boolean | undefined;
+ sourcemapFile?: string | undefined;
+ sourcemapPathTransform?: rollup.SourcemapPathTransformOption | undefined;
+ systemNullSetters?: boolean | undefined;
+ validate?: boolean | undefined;
+ };
+ renderChunk: (this: rollup.PluginContext, code: string, chunk: rollup.RenderedChunk, options: rollup.NormalizedOutputOptions) => {
+ code: string;
+ map: {
+ mappings: "";
+ };
+ };
+ options(this: rollup.MinimalPluginContext, options: rollup.InputOptions): {
+ onwarn(warning: rollup.RollupLog, warn: rollup.WarningHandler): void;
+ treeshake: {
+ moduleSideEffects: "no-external";
+ propertyReadSideEffects: true;
+ unknownGlobalSideEffects: false;
+ };
+ acorn?: Record | undefined;
+ acornInjectPlugins?: (() => unknown)[] | (() => unknown) | undefined;
+ cache?: false | rollup.RollupCache | undefined;
+ context?: string | undefined;
+ experimentalCacheExpiry?: number | undefined;
+ external?: rollup.ExternalOption | undefined;
+ inlineDynamicImports?: boolean | undefined;
+ input?: rollup.InputOption | undefined;
+ makeAbsoluteExternalsRelative?: boolean | "ifRelativeSource" | undefined;
+ manualChunks?: rollup.ManualChunksOption | undefined;
+ maxParallelFileOps?: number | undefined;
+ maxParallelFileReads?: number | undefined;
+ moduleContext?: ((id: string) => string | rollup.NullValue) | {
+ [id: string]: string;
+ } | undefined;
+ perf?: boolean | undefined;
+ plugins?: rollup.InputPluginOption;
+ preserveEntrySignatures?: rollup.PreserveEntrySignaturesOption | undefined;
+ preserveModules?: boolean | undefined;
+ preserveSymlinks?: boolean | undefined;
+ shimMissingExports?: boolean | undefined;
+ strictDeprecations?: boolean | undefined;
+ watch?: false | rollup.WatcherOptions | undefined;
+ };
+ transform(this: rollup.TransformPluginContext, code: string, id: string): {
+ code: string;
+ ast: any;
+ map: any;
+ } | null;
+ resolveId(this: rollup.PluginContext, source: string, importer: string | undefined): {
+ id: string;
+ external: true;
+ } | {
+ id: string;
+ external?: undefined;
+ } | undefined;
+};
+
+export { Options, rollupPluginDts as default };
diff --git a/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/dist/rollup-plugin-dts.mjs b/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/dist/rollup-plugin-dts.mjs
new file mode 100644
index 0000000000..dbc400f2e5
--- /dev/null
+++ b/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/dist/rollup-plugin-dts.mjs
@@ -0,0 +1,1739 @@
+import * as path from 'path';
+import ts from 'typescript';
+import { createRequire } from 'module';
+import MagicString from 'magic-string';
+
+function resolveDefaultOptions(options) {
+ return {
+ ...options,
+ compilerOptions: options.compilerOptions ?? {},
+ respectExternal: options.respectExternal ?? false,
+ };
+}
+
+const DTS_EXTENSIONS = /\.d\.(c|m)?tsx?$/;
+const dts = ".d.ts";
+const formatHost = {
+ getCurrentDirectory: () => ts.sys.getCurrentDirectory(),
+ getNewLine: () => ts.sys.newLine,
+ getCanonicalFileName: ts.sys.useCaseSensitiveFileNames ? (f) => f : (f) => f.toLowerCase(),
+};
+const DEFAULT_OPTIONS = {
+ // Ensure ".d.ts" modules are generated
+ declaration: true,
+ // Skip ".js" generation
+ noEmit: false,
+ emitDeclarationOnly: true,
+ // Skip code generation when error occurs
+ noEmitOnError: true,
+ // Avoid extra work
+ checkJs: false,
+ declarationMap: false,
+ skipLibCheck: true,
+ // Ensure TS2742 errors are visible
+ preserveSymlinks: true,
+ // Ensure we can parse the latest code
+ target: ts.ScriptTarget.ESNext,
+};
+const configByPath = new Map();
+const logCache = (...args) => (process.env.DTS_LOG_CACHE ? console.log("[cache]", ...args) : null);
+/**
+ * Caches the config for every path between two given paths.
+ *
+ * It starts from the first path and walks up the directory tree until it reaches the second path.
+ */
+function cacheConfig([fromPath, toPath], config) {
+ logCache(fromPath);
+ configByPath.set(fromPath, config);
+ while (fromPath !== toPath &&
+ // make sure we're not stuck in an infinite loop
+ fromPath !== path.dirname(fromPath)) {
+ fromPath = path.dirname(fromPath);
+ logCache("up", fromPath);
+ if (configByPath.has(fromPath))
+ return logCache("has", fromPath);
+ configByPath.set(fromPath, config);
+ }
+}
+function getCompilerOptions(input, overrideOptions, overrideConfigPath) {
+ const compilerOptions = { ...DEFAULT_OPTIONS, ...overrideOptions };
+ let dirName = path.dirname(input);
+ let dtsFiles = [];
+ // if a custom config is provided we'll use that as the cache key since it will always be used
+ const cacheKey = overrideConfigPath || dirName;
+ if (!configByPath.has(cacheKey)) {
+ logCache("miss", cacheKey);
+ const configPath = overrideConfigPath
+ ? path.resolve(process.cwd(), overrideConfigPath)
+ : ts.findConfigFile(dirName, ts.sys.fileExists);
+ if (!configPath) {
+ return { dtsFiles, dirName, compilerOptions };
+ }
+ let inputDirName = dirName;
+ dirName = path.dirname(configPath);
+ const { config, error } = ts.readConfigFile(configPath, ts.sys.readFile);
+ if (error) {
+ console.error(ts.formatDiagnostic(error, formatHost));
+ return { dtsFiles, dirName, compilerOptions };
+ }
+ logCache("tsconfig", config);
+ const configContents = ts.parseJsonConfigFileContent(config, ts.sys, dirName);
+ if (overrideConfigPath) {
+ // if a custom config is provided, we always only use that one
+ cacheConfig([overrideConfigPath, overrideConfigPath], configContents);
+ }
+ else {
+ // cache the config for all directories between input and resolved config path
+ cacheConfig([inputDirName, dirName], configContents);
+ }
+ }
+ else {
+ logCache("HIT", cacheKey);
+ }
+ const { fileNames, options, errors } = configByPath.get(cacheKey);
+ dtsFiles = fileNames.filter((name) => DTS_EXTENSIONS.test(name));
+ if (errors.length) {
+ console.error(ts.formatDiagnostics(errors, formatHost));
+ return { dtsFiles, dirName, compilerOptions };
+ }
+ return {
+ dtsFiles,
+ dirName,
+ compilerOptions: {
+ ...options,
+ ...compilerOptions,
+ },
+ };
+}
+function createProgram$1(fileName, overrideOptions, tsconfig) {
+ const { dtsFiles, compilerOptions } = getCompilerOptions(fileName, overrideOptions, tsconfig);
+ return ts.createProgram([fileName].concat(Array.from(dtsFiles)), compilerOptions, ts.createCompilerHost(compilerOptions, true));
+}
+function createPrograms(input, overrideOptions, tsconfig) {
+ const programs = [];
+ let inputs = [];
+ let dtsFiles = new Set();
+ let dirName = "";
+ let compilerOptions = {};
+ for (let main of input) {
+ if (DTS_EXTENSIONS.test(main)) {
+ continue;
+ }
+ main = path.resolve(main);
+ const options = getCompilerOptions(main, overrideOptions, tsconfig);
+ options.dtsFiles.forEach(dtsFiles.add, dtsFiles);
+ if (!inputs.length) {
+ inputs.push(main);
+ ({ dirName, compilerOptions } = options);
+ continue;
+ }
+ if (options.dirName === dirName) {
+ inputs.push(main);
+ }
+ else {
+ const host = ts.createCompilerHost(compilerOptions, true);
+ const program = ts.createProgram(inputs.concat(Array.from(dtsFiles)), compilerOptions, host);
+ programs.push(program);
+ inputs = [main];
+ ({ dirName, compilerOptions } = options);
+ }
+ }
+ if (inputs.length) {
+ const host = ts.createCompilerHost(compilerOptions, true);
+ const program = ts.createProgram(inputs.concat(Array.from(dtsFiles)), compilerOptions, host);
+ programs.push(program);
+ }
+ return programs;
+}
+
+function getCodeFrame() {
+ let codeFrameColumns = undefined;
+ try {
+ ({ codeFrameColumns } = require("@babel/code-frame"));
+ return codeFrameColumns;
+ }
+ catch {
+ try {
+ const esmRequire = createRequire(import.meta.url);
+ ({ codeFrameColumns } = esmRequire("@babel/code-frame"));
+ return codeFrameColumns;
+ }
+ catch { }
+ }
+ return undefined;
+}
+function getLocation(node) {
+ const sourceFile = node.getSourceFile();
+ const start = sourceFile.getLineAndCharacterOfPosition(node.getStart());
+ const end = sourceFile.getLineAndCharacterOfPosition(node.getEnd());
+ return {
+ start: { line: start.line + 1, column: start.character + 1 },
+ end: { line: end.line + 1, column: end.character + 1 },
+ };
+}
+function frameNode(node) {
+ const codeFrame = getCodeFrame();
+ const sourceFile = node.getSourceFile();
+ const code = sourceFile.getFullText();
+ const location = getLocation(node);
+ if (codeFrame) {
+ return ("\n" +
+ codeFrame(code, location, {
+ highlightCode: true,
+ }));
+ }
+ else {
+ return `\n${location.start.line}:${location.start.column}: \`${node.getFullText().trim()}\``;
+ }
+}
+class UnsupportedSyntaxError extends Error {
+ constructor(node, message = "Syntax not yet supported") {
+ super(`${message}\n${frameNode(node)}`);
+ }
+}
+
+class NamespaceFixer {
+ constructor(sourceFile) {
+ this.sourceFile = sourceFile;
+ }
+ findNamespaces() {
+ const namespaces = [];
+ const items = {};
+ for (const node of this.sourceFile.statements) {
+ const location = {
+ start: node.getStart(),
+ end: node.getEnd(),
+ };
+ // Well, this is a big hack:
+ // For some global `namespace` and `module` declarations, we generate
+ // some fake IIFE code, so rollup can correctly scan its scope.
+ // However, rollup will then insert bogus semicolons,
+ // these `EmptyStatement`s, which are a syntax error and we want to
+ // remove them. Well, we do that here…
+ if (ts.isEmptyStatement(node)) {
+ namespaces.unshift({
+ name: "",
+ exports: [],
+ location,
+ });
+ continue;
+ }
+ // When generating multiple chunks, rollup links those via import
+ // statements, obviously. But rollup uses full filenames with typescript extension,
+ // which typescript does not like. So make sure to change those to javascript extension here.
+ // `.d.ts` -> `.js`
+ // `.d.cts` -> `.cjs`
+ // `.d.mts` -> `.mjs`
+ if ((ts.isImportDeclaration(node) || ts.isExportDeclaration(node)) &&
+ node.moduleSpecifier &&
+ ts.isStringLiteral(node.moduleSpecifier)) {
+ let { text } = node.moduleSpecifier;
+ if (text.startsWith(".") && (text.endsWith(".d.ts") || text.endsWith(".d.cts") || text.endsWith(".d.mts"))) {
+ let start = node.moduleSpecifier.getStart() + 1; // +1 to account for the quote
+ let end = node.moduleSpecifier.getEnd() - 1; // -1 to account for the quote
+ namespaces.unshift({
+ name: "",
+ exports: [],
+ location: {
+ start,
+ end,
+ },
+ textBeforeCodeAfter: text
+ .replace(/\.d\.ts$/, ".js")
+ .replace(/\.d\.cts$/, ".cjs")
+ .replace(/\.d\.mts$/, ".mjs"),
+ });
+ }
+ }
+ // Remove redundant `{ Foo as Foo }` exports from a namespace which we
+ // added in pre-processing to fix up broken renaming
+ if (ts.isModuleDeclaration(node) && node.body && ts.isModuleBlock(node.body)) {
+ for (const stmt of node.body.statements) {
+ if (ts.isExportDeclaration(stmt) && stmt.exportClause) {
+ if (ts.isNamespaceExport(stmt.exportClause)) {
+ continue;
+ }
+ for (const decl of stmt.exportClause.elements) {
+ if (decl.propertyName && decl.propertyName.getText() == decl.name.getText()) {
+ namespaces.unshift({
+ name: "",
+ exports: [],
+ location: {
+ start: decl.propertyName.getEnd(),
+ end: decl.name.getEnd(),
+ },
+ });
+ }
+ }
+ }
+ }
+ }
+ if (ts.isClassDeclaration(node)) {
+ items[node.name.getText()] = { type: "class", generics: node.typeParameters };
+ }
+ else if (ts.isFunctionDeclaration(node)) {
+ // a function has generics, but these don’t need to be specified explicitly,
+ // since functions are treated as values.
+ items[node.name.getText()] = { type: "function" };
+ }
+ else if (ts.isInterfaceDeclaration(node)) {
+ items[node.name.getText()] = { type: "interface", generics: node.typeParameters };
+ }
+ else if (ts.isTypeAliasDeclaration(node)) {
+ items[node.name.getText()] = { type: "type", generics: node.typeParameters };
+ }
+ else if (ts.isModuleDeclaration(node) && ts.isIdentifier(node.name)) {
+ items[node.name.getText()] = { type: "namespace" };
+ }
+ else if (ts.isEnumDeclaration(node)) {
+ items[node.name.getText()] = { type: "enum" };
+ }
+ if (!ts.isVariableStatement(node)) {
+ continue;
+ }
+ const { declarations } = node.declarationList;
+ if (declarations.length !== 1) {
+ continue;
+ }
+ const decl = declarations[0];
+ const name = decl.name.getText();
+ if (!decl.initializer || !ts.isCallExpression(decl.initializer)) {
+ items[name] = { type: "var" };
+ continue;
+ }
+ const obj = decl.initializer.arguments[0];
+ if (!decl.initializer.expression.getFullText().includes("/*#__PURE__*/Object.freeze") ||
+ !ts.isObjectLiteralExpression(obj)) {
+ continue;
+ }
+ const exports = [];
+ for (const prop of obj.properties) {
+ if (!ts.isPropertyAssignment(prop) ||
+ !(ts.isIdentifier(prop.name) || ts.isStringLiteral(prop.name)) ||
+ (prop.name.text !== "__proto__" && !ts.isIdentifier(prop.initializer))) {
+ throw new UnsupportedSyntaxError(prop, "Expected a property assignment");
+ }
+ if (prop.name.text === "__proto__") {
+ continue;
+ }
+ exports.push({
+ exportedName: prop.name.text,
+ localName: prop.initializer.getText(),
+ });
+ }
+ // sort in reverse order, since we will do string manipulation
+ namespaces.unshift({
+ name,
+ exports,
+ location,
+ });
+ }
+ return { namespaces, itemTypes: items };
+ }
+ fix() {
+ let code = this.sourceFile.getFullText();
+ const { namespaces, itemTypes } = this.findNamespaces();
+ for (const ns of namespaces) {
+ const codeAfter = code.slice(ns.location.end);
+ code = code.slice(0, ns.location.start);
+ for (const { exportedName, localName } of ns.exports) {
+ if (exportedName === localName) {
+ const { type, generics } = itemTypes[localName] || {};
+ if (type === "interface" || type === "type") {
+ // an interface is just a type
+ const typeParams = renderTypeParams(generics);
+ code += `type ${ns.name}_${exportedName}${typeParams.in} = ${localName}${typeParams.out};\n`;
+ }
+ else if (type === "enum" || type === "class") {
+ // enums and classes are both types and values
+ const typeParams = renderTypeParams(generics);
+ code += `type ${ns.name}_${exportedName}${typeParams.in} = ${localName}${typeParams.out};\n`;
+ code += `declare const ${ns.name}_${exportedName}: typeof ${localName};\n`;
+ }
+ else {
+ // functions and vars are just values
+ code += `declare const ${ns.name}_${exportedName}: typeof ${localName};\n`;
+ }
+ }
+ }
+ if (ns.name) {
+ code += `declare namespace ${ns.name} {\n`;
+ code += ` export {\n`;
+ for (const { exportedName, localName } of ns.exports) {
+ if (exportedName === localName) {
+ code += ` ${ns.name}_${exportedName} as ${exportedName},\n`;
+ }
+ else {
+ code += ` ${localName} as ${exportedName},\n`;
+ }
+ }
+ code += ` };\n`;
+ code += `}`;
+ }
+ code += ns.textBeforeCodeAfter ?? "";
+ code += codeAfter;
+ }
+ return code;
+ }
+}
+function renderTypeParams(typeParameters) {
+ if (!typeParameters || !typeParameters.length) {
+ return { in: "", out: "" };
+ }
+ return {
+ in: `<${typeParameters.map((param) => param.getText()).join(", ")}>`,
+ out: `<${typeParameters.map((param) => param.name.getText()).join(", ")}>`,
+ };
+}
+
+let IDs = 1;
+/**
+ * Create a new `Program` for the given `node`:
+ */
+function createProgram(node) {
+ return withStartEnd({
+ type: "Program",
+ sourceType: "module",
+ body: [],
+ }, { start: node.getFullStart(), end: node.getEnd() });
+}
+/**
+ * Creates a reference to `id`:
+ * `_ = ${id}`
+ */
+function createReference(id) {
+ const ident = {
+ type: "Identifier",
+ name: String(IDs++),
+ };
+ return {
+ ident,
+ expr: {
+ type: "AssignmentPattern",
+ left: ident,
+ right: id,
+ },
+ };
+}
+function createIdentifier(node) {
+ return withStartEnd({
+ type: "Identifier",
+ name: node.getText(),
+ }, node);
+}
+/**
+ * Create a new Scope which is always included
+ * `(function (_ = MARKER) {})()`
+ */
+function createIIFE(range) {
+ const fn = withStartEnd({
+ type: "FunctionExpression",
+ id: null,
+ params: [],
+ body: { type: "BlockStatement", body: [] },
+ }, range);
+ const iife = withStartEnd({
+ type: "ExpressionStatement",
+ expression: {
+ type: "CallExpression",
+ callee: { type: "Identifier", name: String(IDs++) },
+ arguments: [fn],
+ optional: false,
+ },
+ }, range);
+ return { fn, iife };
+}
+/**
+ * Create a dummy ReturnStatement with an ArrayExpression:
+ * `return [];`
+ */
+function createReturn() {
+ const expr = {
+ type: "ArrayExpression",
+ elements: [],
+ };
+ return {
+ expr,
+ stmt: {
+ type: "ReturnStatement",
+ argument: expr,
+ },
+ };
+}
+/**
+ * Create a new Declaration and Scope for `id`:
+ * `function ${id}(_ = MARKER) {}`
+ */
+function createDeclaration(id, range) {
+ return withStartEnd({
+ type: "FunctionDeclaration",
+ id: withStartEnd({
+ type: "Identifier",
+ name: ts.idText(id),
+ }, id),
+ params: [],
+ body: { type: "BlockStatement", body: [] },
+ }, range);
+}
+function convertExpression(node) {
+ if (ts.isLiteralExpression(node)) {
+ return { type: "Literal", value: node.text };
+ }
+ if (ts.isPropertyAccessExpression(node)) {
+ if (ts.isPrivateIdentifier(node.name)) {
+ throw new UnsupportedSyntaxError(node.name);
+ }
+ return withStartEnd({
+ type: "MemberExpression",
+ computed: false,
+ optional: false,
+ object: convertExpression(node.expression),
+ property: convertExpression(node.name),
+ }, {
+ start: node.expression.getStart(),
+ end: node.name.getEnd(),
+ });
+ }
+ if (ts.isIdentifier(node)) {
+ return createIdentifier(node);
+ }
+ else if (node.kind == ts.SyntaxKind.NullKeyword) {
+ return { type: "Literal", value: null };
+ }
+ else {
+ throw new UnsupportedSyntaxError(node);
+ }
+}
+function withStartEnd(esNode, nodeOrRange) {
+ let range = "start" in nodeOrRange ? nodeOrRange : { start: nodeOrRange.getStart(), end: nodeOrRange.getEnd() };
+ return Object.assign(esNode, range);
+}
+function matchesModifier(node, flags) {
+ const nodeFlags = ts.getCombinedModifierFlags(node);
+ return (nodeFlags & flags) === flags;
+}
+
+/**
+ * The pre-process step has the following goals:
+ * - [x] Fixes the "modifiers", removing any `export` modifier and adding any
+ * missing `declare` modifier.
+ * - [x] Splitting compound `VariableStatement` into its parts.
+ * - [x] Moving declarations for the same "name" to be next to each other.
+ * - [x] Removing any triple-slash directives and recording them.
+ * - [x] Create a synthetic name for any nameless "export default".
+ * - [x] Resolve inline `import()` statements and generate top-level imports for
+ * them.
+ * - [x] Generate a separate `export {}` statement for any item which had its
+ * modifiers rewritten.
+ * - [ ] Duplicate the identifiers of a namespace `export`, so that renaming does
+ * not break it
+ */
+function preProcess({ sourceFile }) {
+ const code = new MagicString(sourceFile.getFullText());
+ /** All the names that are declared in the `SourceFile`. */
+ const declaredNames = new Set();
+ /** All the names that are exported. */
+ const exportedNames = new Set();
+ /** The name of the default export. */
+ let defaultExport = "";
+ /** Inlined exports from `fileId` -> . */
+ const inlineImports = new Map();
+ /** The ranges that each name covers, for re-ordering. */
+ const nameRanges = new Map();
+ /**
+ * Pass 1:
+ *
+ * - Remove statements that we can’t handle.
+ * - Collect a `Set` of all the declared names.
+ * - Collect a `Set` of all the exported names.
+ * - Maybe collect the name of the default export if present.
+ * - Fix the modifiers of all the items.
+ * - Collect the ranges of each named statement.
+ * - Duplicate the identifiers of a namespace `export`, so that renaming does
+ * not break it
+ */
+ for (const node of sourceFile.statements) {
+ if (ts.isEmptyStatement(node)) {
+ code.remove(node.getStart(), node.getEnd());
+ continue;
+ }
+ if (ts.isEnumDeclaration(node) ||
+ ts.isFunctionDeclaration(node) ||
+ ts.isInterfaceDeclaration(node) ||
+ ts.isClassDeclaration(node) ||
+ ts.isTypeAliasDeclaration(node) ||
+ ts.isModuleDeclaration(node)) {
+ // collect the declared name
+ if (node.name) {
+ const name = node.name.getText();
+ declaredNames.add(name);
+ // collect the exported name, maybe as `default`.
+ if (matchesModifier(node, ts.ModifierFlags.ExportDefault)) {
+ defaultExport = name;
+ }
+ else if (matchesModifier(node, ts.ModifierFlags.Export)) {
+ exportedNames.add(name);
+ }
+ if (!(node.flags & ts.NodeFlags.GlobalAugmentation)) {
+ pushNamedNode(name, [getStart(node), getEnd(node)]);
+ }
+ }
+ // duplicate exports of namespaces
+ if (ts.isModuleDeclaration(node)) {
+ duplicateExports(code, node);
+ }
+ fixModifiers(code, node);
+ }
+ else if (ts.isVariableStatement(node)) {
+ const { declarations } = node.declarationList;
+ // collect all the names, also check if they are exported
+ const isExport = matchesModifier(node, ts.ModifierFlags.Export);
+ for (const decl of node.declarationList.declarations) {
+ if (ts.isIdentifier(decl.name)) {
+ const name = decl.name.getText();
+ declaredNames.add(name);
+ if (isExport) {
+ exportedNames.add(name);
+ }
+ }
+ }
+ fixModifiers(code, node);
+ // collect the ranges for re-ordering
+ if (declarations.length == 1) {
+ const decl = declarations[0];
+ if (ts.isIdentifier(decl.name)) {
+ pushNamedNode(decl.name.getText(), [getStart(node), getEnd(node)]);
+ }
+ }
+ else {
+ // we do reordering after splitting
+ const decls = declarations.slice();
+ const first = decls.shift();
+ pushNamedNode(first.name.getText(), [getStart(node), first.getEnd()]);
+ for (const decl of decls) {
+ if (ts.isIdentifier(decl.name)) {
+ pushNamedNode(decl.name.getText(), [decl.getFullStart(), decl.getEnd()]);
+ }
+ }
+ }
+ // split the variable declaration into different statements
+ const { flags } = node.declarationList;
+ const type = flags & ts.NodeFlags.Let ? "let" : flags & ts.NodeFlags.Const ? "const" : "var";
+ const prefix = `declare ${type} `;
+ const list = node.declarationList
+ .getChildren()
+ .find((c) => c.kind === ts.SyntaxKind.SyntaxList)
+ .getChildren();
+ let commaPos = 0;
+ for (const node of list) {
+ if (node.kind === ts.SyntaxKind.CommaToken) {
+ commaPos = node.getStart();
+ code.remove(commaPos, node.getEnd());
+ }
+ else if (commaPos) {
+ code.appendLeft(commaPos, ";\n");
+ const start = node.getFullStart();
+ const slice = code.slice(start, node.getStart());
+ let whitespace = slice.length - slice.trimStart().length;
+ if (whitespace) {
+ code.overwrite(start, start + whitespace, prefix);
+ }
+ else {
+ code.appendLeft(start, prefix);
+ }
+ }
+ }
+ }
+ }
+ /**
+ * Pass 2:
+ *
+ * Now that we have a Set of all the declared names, we can use that to
+ * generate and de-conflict names for the following steps:
+ *
+ * - Resolve all the inline imports.
+ * - Give any name-less `default export` a name.
+ */
+ for (const node of sourceFile.statements) {
+ // recursively check inline imports
+ checkInlineImport(node);
+ if (!matchesModifier(node, ts.ModifierFlags.ExportDefault)) {
+ continue;
+ }
+ // only function and class can be default exported, and be missing a name
+ if (ts.isFunctionDeclaration(node) || ts.isClassDeclaration(node)) {
+ if (node.name) {
+ continue;
+ }
+ if (!defaultExport) {
+ defaultExport = uniqName("export_default");
+ }
+ const children = node.getChildren();
+ const idx = children.findIndex((node) => node.kind === ts.SyntaxKind.ClassKeyword || node.kind === ts.SyntaxKind.FunctionKeyword);
+ const token = children[idx];
+ const nextToken = children[idx + 1];
+ const isPunctuation = nextToken.kind >= ts.SyntaxKind.FirstPunctuation && nextToken.kind <= ts.SyntaxKind.LastPunctuation;
+ if (isPunctuation) {
+ code.appendLeft(nextToken.getStart(), defaultExport);
+ }
+ else {
+ code.appendRight(token.getEnd(), ` ${defaultExport}`);
+ }
+ }
+ }
+ // and re-order all the name ranges to be contiguous
+ for (const ranges of nameRanges.values()) {
+ // we have to move all the nodes in front of the *last* one, which is a bit
+ // unintuitive but is a workaround for:
+ // https://github.com/Rich-Harris/magic-string/issues/180
+ const last = ranges.pop();
+ const start = last[0];
+ for (const node of ranges) {
+ code.move(node[0], node[1], start);
+ }
+ }
+ // render all the inline imports, and all the exports
+ if (defaultExport) {
+ code.append(`\nexport default ${defaultExport};\n`);
+ }
+ if (exportedNames.size) {
+ code.append(`\nexport { ${[...exportedNames].join(", ")} };\n`);
+ }
+ for (const [fileId, importName] of inlineImports.entries()) {
+ code.prepend(`import * as ${importName} from "${fileId}";\n`);
+ }
+ const lineStarts = sourceFile.getLineStarts();
+ // and collect/remove all the typeReferenceDirectives
+ const typeReferences = new Set();
+ for (const ref of sourceFile.typeReferenceDirectives) {
+ typeReferences.add(ref.fileName);
+ const { line } = sourceFile.getLineAndCharacterOfPosition(ref.pos);
+ const start = lineStarts[line];
+ let end = sourceFile.getLineEndOfPosition(ref.pos);
+ if (code.slice(end, end + 1) == "\n") {
+ end += 1;
+ }
+ code.remove(start, end);
+ }
+ // and collect/remove all the fileReferenceDirectives
+ const fileReferences = new Set();
+ for (const ref of sourceFile.referencedFiles) {
+ fileReferences.add(ref.fileName);
+ const { line } = sourceFile.getLineAndCharacterOfPosition(ref.pos);
+ const start = lineStarts[line];
+ let end = sourceFile.getLineEndOfPosition(ref.pos);
+ if (code.slice(end, end + 1) == "\n") {
+ end += 1;
+ }
+ code.remove(start, end);
+ }
+ return {
+ code,
+ typeReferences,
+ fileReferences,
+ };
+ function checkInlineImport(node) {
+ ts.forEachChild(node, checkInlineImport);
+ if (ts.isImportTypeNode(node)) {
+ if (!ts.isLiteralTypeNode(node.argument) || !ts.isStringLiteral(node.argument.literal)) {
+ throw new UnsupportedSyntaxError(node, "inline imports should have a literal argument");
+ }
+ const fileId = node.argument.literal.text;
+ const children = node.getChildren();
+ const start = children.find((t) => t.kind === ts.SyntaxKind.ImportKeyword).getStart();
+ let end = node.getEnd();
+ const token = children.find((t) => t.kind === ts.SyntaxKind.DotToken || t.kind === ts.SyntaxKind.LessThanToken);
+ if (token) {
+ end = token.getStart();
+ }
+ const importName = createNamespaceImport(fileId);
+ code.overwrite(start, end, importName);
+ }
+ }
+ function createNamespaceImport(fileId) {
+ let importName = inlineImports.get(fileId);
+ if (!importName) {
+ importName = uniqName(fileId.replace(/[^a-zA-Z0-9_$]/g, () => "_"));
+ inlineImports.set(fileId, importName);
+ }
+ return importName;
+ }
+ function uniqName(hint) {
+ let name = hint;
+ while (declaredNames.has(name)) {
+ name = `_${name}`;
+ }
+ declaredNames.add(name);
+ return name;
+ }
+ function pushNamedNode(name, range) {
+ let nodes = nameRanges.get(name);
+ if (!nodes) {
+ nodes = [range];
+ nameRanges.set(name, nodes);
+ }
+ else {
+ const last = nodes[nodes.length - 1];
+ if (last[1] === range[0]) {
+ last[1] = range[1];
+ }
+ else {
+ nodes.push(range);
+ }
+ }
+ }
+}
+function fixModifiers(code, node) {
+ // remove the `export` and `default` modifier, add a `declare` if its missing.
+ let hasDeclare = false;
+ const needsDeclare = ts.isEnumDeclaration(node) ||
+ ts.isClassDeclaration(node) ||
+ ts.isFunctionDeclaration(node) ||
+ ts.isModuleDeclaration(node) ||
+ ts.isVariableStatement(node);
+ for (const mod of node.modifiers ?? []) {
+ switch (mod.kind) {
+ case ts.SyntaxKind.ExportKeyword: // fall through
+ case ts.SyntaxKind.DefaultKeyword:
+ // TODO: be careful about that `+ 1`
+ code.remove(mod.getStart(), mod.getEnd() + 1);
+ break;
+ case ts.SyntaxKind.DeclareKeyword:
+ hasDeclare = true;
+ }
+ }
+ if (needsDeclare && !hasDeclare) {
+ code.appendRight(node.getStart(), "declare ");
+ }
+}
+function duplicateExports(code, module) {
+ if (!module.body || !ts.isModuleBlock(module.body)) {
+ return;
+ }
+ for (const node of module.body.statements) {
+ if (ts.isExportDeclaration(node) && node.exportClause) {
+ if (ts.isNamespaceExport(node.exportClause)) {
+ continue;
+ }
+ for (const decl of node.exportClause.elements) {
+ if (!decl.propertyName) {
+ code.appendLeft(decl.name.getEnd(), ` as ${decl.name.getText()}`);
+ }
+ }
+ }
+ }
+}
+function getStart(node) {
+ const start = node.getFullStart();
+ return start + (newlineAt(node, start) ? 1 : 0);
+}
+function getEnd(node) {
+ const end = node.getEnd();
+ return end + (newlineAt(node, end) ? 1 : 0);
+}
+function newlineAt(node, idx) {
+ return node.getSourceFile().getFullText()[idx] == "\n";
+}
+
+const IGNORE_TYPENODES = new Set([
+ ts.SyntaxKind.LiteralType,
+ ts.SyntaxKind.VoidKeyword,
+ ts.SyntaxKind.UnknownKeyword,
+ ts.SyntaxKind.AnyKeyword,
+ ts.SyntaxKind.BooleanKeyword,
+ ts.SyntaxKind.NumberKeyword,
+ ts.SyntaxKind.StringKeyword,
+ ts.SyntaxKind.ObjectKeyword,
+ ts.SyntaxKind.NullKeyword,
+ ts.SyntaxKind.UndefinedKeyword,
+ ts.SyntaxKind.SymbolKeyword,
+ ts.SyntaxKind.NeverKeyword,
+ ts.SyntaxKind.ThisKeyword,
+ ts.SyntaxKind.ThisType,
+ ts.SyntaxKind.BigIntKeyword,
+]);
+class DeclarationScope {
+ constructor({ id, range }) {
+ /**
+ * As we walk the AST, we need to keep track of type variable bindings that
+ * shadow the outer identifiers. To achieve this, we keep a stack of scopes,
+ * represented as Sets of variable names.
+ */
+ this.scopes = [];
+ if (id) {
+ this.declaration = createDeclaration(id, range);
+ }
+ else {
+ const { iife, fn } = createIIFE(range);
+ this.iife = iife;
+ this.declaration = fn;
+ }
+ const ret = createReturn();
+ this.declaration.body.body.push(ret.stmt);
+ this.returnExpr = ret.expr;
+ }
+ pushScope() {
+ this.scopes.push(new Set());
+ }
+ popScope(n = 1) {
+ for (let i = 0; i < n; i++) {
+ this.scopes.pop();
+ }
+ }
+ pushTypeVariable(id) {
+ const name = id.getText();
+ this.scopes[this.scopes.length - 1]?.add(name);
+ }
+ pushReference(id) {
+ let name;
+ // We convert references from TS AST to ESTree
+ // to hand them off to rollup.
+ // This means we have to check the left-most identifier inside our scope
+ // tree and avoid to create the reference in that case
+ if (id.type === "Identifier") {
+ name = id.name;
+ }
+ else if (id.type === "MemberExpression") {
+ if (id.object.type === "Identifier") {
+ name = id.object.name;
+ }
+ }
+ if (name) {
+ for (const scope of this.scopes) {
+ if (scope.has(name)) {
+ return;
+ }
+ }
+ }
+ const { ident, expr } = createReference(id);
+ this.declaration.params.push(expr);
+ this.returnExpr.elements.push(ident);
+ }
+ pushIdentifierReference(id) {
+ this.pushReference(createIdentifier(id));
+ }
+ convertEntityName(node) {
+ if (ts.isIdentifier(node)) {
+ return createIdentifier(node);
+ }
+ return withStartEnd({
+ type: "MemberExpression",
+ computed: false,
+ optional: false,
+ object: this.convertEntityName(node.left),
+ property: createIdentifier(node.right),
+ }, node);
+ }
+ convertPropertyAccess(node) {
+ // hm, we only care about property access expressions here…
+ if (!ts.isIdentifier(node.expression) && !ts.isPropertyAccessExpression(node.expression)) {
+ throw new UnsupportedSyntaxError(node.expression);
+ }
+ if (ts.isPrivateIdentifier(node.name)) {
+ throw new UnsupportedSyntaxError(node.name);
+ }
+ let object = ts.isIdentifier(node.expression)
+ ? createIdentifier(node.expression)
+ : this.convertPropertyAccess(node.expression);
+ return withStartEnd({
+ type: "MemberExpression",
+ computed: false,
+ optional: false,
+ object,
+ property: createIdentifier(node.name),
+ }, node);
+ }
+ convertComputedPropertyName(node) {
+ if (!node.name || !ts.isComputedPropertyName(node.name)) {
+ return;
+ }
+ const { expression } = node.name;
+ if (ts.isLiteralExpression(expression) || ts.isPrefixUnaryExpression(expression)) {
+ return;
+ }
+ if (ts.isIdentifier(expression)) {
+ return this.pushReference(createIdentifier(expression));
+ }
+ if (ts.isPropertyAccessExpression(expression)) {
+ return this.pushReference(this.convertPropertyAccess(expression));
+ }
+ throw new UnsupportedSyntaxError(expression);
+ }
+ convertParametersAndType(node) {
+ this.convertComputedPropertyName(node);
+ const typeVariables = this.convertTypeParameters(node.typeParameters);
+ for (const param of node.parameters) {
+ this.convertTypeNode(param.type);
+ }
+ this.convertTypeNode(node.type);
+ this.popScope(typeVariables);
+ }
+ convertHeritageClauses(node) {
+ for (const heritage of node.heritageClauses || []) {
+ for (const type of heritage.types) {
+ this.pushReference(convertExpression(type.expression));
+ this.convertTypeArguments(type);
+ }
+ }
+ }
+ convertTypeArguments(node) {
+ if (!node.typeArguments) {
+ return;
+ }
+ for (const arg of node.typeArguments) {
+ this.convertTypeNode(arg);
+ }
+ }
+ convertMembers(members) {
+ for (const node of members) {
+ if (ts.isPropertyDeclaration(node) || ts.isPropertySignature(node) || ts.isIndexSignatureDeclaration(node)) {
+ if (ts.isPropertyDeclaration(node) && node.initializer && ts.isPropertyAccessExpression(node.initializer)) {
+ this.pushReference(this.convertPropertyAccess(node.initializer));
+ }
+ this.convertComputedPropertyName(node);
+ this.convertTypeNode(node.type);
+ continue;
+ }
+ if (ts.isMethodDeclaration(node) ||
+ ts.isMethodSignature(node) ||
+ ts.isConstructorDeclaration(node) ||
+ ts.isConstructSignatureDeclaration(node) ||
+ ts.isCallSignatureDeclaration(node) ||
+ ts.isGetAccessorDeclaration(node) ||
+ ts.isSetAccessorDeclaration(node)) {
+ this.convertParametersAndType(node);
+ }
+ else {
+ throw new UnsupportedSyntaxError(node);
+ }
+ }
+ }
+ convertTypeParameters(params) {
+ if (!params) {
+ return 0;
+ }
+ for (const node of params) {
+ this.convertTypeNode(node.constraint);
+ this.convertTypeNode(node.default);
+ this.pushScope();
+ this.pushTypeVariable(node.name);
+ }
+ return params.length;
+ }
+ convertTypeNode(node) {
+ if (!node) {
+ return;
+ }
+ if (IGNORE_TYPENODES.has(node.kind)) {
+ return;
+ }
+ if (ts.isTypeReferenceNode(node)) {
+ this.pushReference(this.convertEntityName(node.typeName));
+ this.convertTypeArguments(node);
+ return;
+ }
+ if (ts.isTypeLiteralNode(node)) {
+ return this.convertMembers(node.members);
+ }
+ if (ts.isArrayTypeNode(node)) {
+ return this.convertTypeNode(node.elementType);
+ }
+ if (ts.isTupleTypeNode(node)) {
+ for (const type of node.elements) {
+ this.convertTypeNode(type);
+ }
+ return;
+ }
+ if (ts.isNamedTupleMember(node) ||
+ ts.isParenthesizedTypeNode(node) ||
+ ts.isTypeOperatorNode(node) ||
+ ts.isTypePredicateNode(node)) {
+ return this.convertTypeNode(node.type);
+ }
+ if (ts.isUnionTypeNode(node) || ts.isIntersectionTypeNode(node)) {
+ for (const type of node.types) {
+ this.convertTypeNode(type);
+ }
+ return;
+ }
+ if (ts.isMappedTypeNode(node)) {
+ const { typeParameter, type, nameType } = node;
+ this.convertTypeNode(typeParameter.constraint);
+ this.pushScope();
+ this.pushTypeVariable(typeParameter.name);
+ this.convertTypeNode(type);
+ if (nameType) {
+ this.convertTypeNode(nameType);
+ }
+ this.popScope();
+ return;
+ }
+ if (ts.isConditionalTypeNode(node)) {
+ this.convertTypeNode(node.checkType);
+ this.pushScope();
+ this.convertTypeNode(node.extendsType);
+ this.convertTypeNode(node.trueType);
+ this.convertTypeNode(node.falseType);
+ this.popScope();
+ return;
+ }
+ if (ts.isIndexedAccessTypeNode(node)) {
+ this.convertTypeNode(node.objectType);
+ this.convertTypeNode(node.indexType);
+ return;
+ }
+ if (ts.isFunctionOrConstructorTypeNode(node)) {
+ this.convertParametersAndType(node);
+ return;
+ }
+ if (ts.isTypeQueryNode(node)) {
+ this.pushReference(this.convertEntityName(node.exprName));
+ return;
+ }
+ if (ts.isRestTypeNode(node)) {
+ this.convertTypeNode(node.type);
+ return;
+ }
+ if (ts.isOptionalTypeNode(node)) {
+ this.convertTypeNode(node.type);
+ return;
+ }
+ if (ts.isTemplateLiteralTypeNode(node)) {
+ for (const span of node.templateSpans) {
+ this.convertTypeNode(span.type);
+ }
+ return;
+ }
+ if (ts.isInferTypeNode(node)) {
+ const { typeParameter } = node;
+ this.convertTypeNode(typeParameter.constraint);
+ this.pushTypeVariable(typeParameter.name);
+ return;
+ }
+ else {
+ throw new UnsupportedSyntaxError(node);
+ }
+ }
+ convertNamespace(node, relaxedModuleBlock = false) {
+ this.pushScope();
+ if (relaxedModuleBlock && node.body && ts.isModuleDeclaration(node.body)) {
+ this.convertNamespace(node.body, true);
+ return;
+ }
+ if (!node.body || !ts.isModuleBlock(node.body)) {
+ throw new UnsupportedSyntaxError(node, `namespace must have a "ModuleBlock" body.`);
+ }
+ const { statements } = node.body;
+ // first, hoist all the declarations for correct shadowing
+ for (const stmt of statements) {
+ if (ts.isEnumDeclaration(stmt) ||
+ ts.isFunctionDeclaration(stmt) ||
+ ts.isClassDeclaration(stmt) ||
+ ts.isInterfaceDeclaration(stmt) ||
+ ts.isTypeAliasDeclaration(stmt) ||
+ ts.isModuleDeclaration(stmt)) {
+ if (stmt.name && ts.isIdentifier(stmt.name)) {
+ this.pushTypeVariable(stmt.name);
+ }
+ else {
+ throw new UnsupportedSyntaxError(stmt, `non-Identifier name not supported`);
+ }
+ continue;
+ }
+ if (ts.isVariableStatement(stmt)) {
+ for (const decl of stmt.declarationList.declarations) {
+ if (ts.isIdentifier(decl.name)) {
+ this.pushTypeVariable(decl.name);
+ }
+ else {
+ throw new UnsupportedSyntaxError(decl, `non-Identifier name not supported`);
+ }
+ }
+ continue;
+ }
+ if (ts.isExportDeclaration(stmt)) ;
+ else {
+ throw new UnsupportedSyntaxError(stmt, `namespace child (hoisting) not supported yet`);
+ }
+ }
+ // and then walk all the children like normal…
+ for (const stmt of statements) {
+ if (ts.isVariableStatement(stmt)) {
+ for (const decl of stmt.declarationList.declarations) {
+ if (decl.type) {
+ this.convertTypeNode(decl.type);
+ }
+ }
+ continue;
+ }
+ if (ts.isFunctionDeclaration(stmt)) {
+ this.convertParametersAndType(stmt);
+ continue;
+ }
+ if (ts.isInterfaceDeclaration(stmt) || ts.isClassDeclaration(stmt)) {
+ const typeVariables = this.convertTypeParameters(stmt.typeParameters);
+ this.convertHeritageClauses(stmt);
+ this.convertMembers(stmt.members);
+ this.popScope(typeVariables);
+ continue;
+ }
+ if (ts.isTypeAliasDeclaration(stmt)) {
+ const typeVariables = this.convertTypeParameters(stmt.typeParameters);
+ this.convertTypeNode(stmt.type);
+ this.popScope(typeVariables);
+ continue;
+ }
+ if (ts.isModuleDeclaration(stmt)) {
+ this.convertNamespace(stmt, relaxedModuleBlock);
+ continue;
+ }
+ if (ts.isEnumDeclaration(stmt)) {
+ // noop
+ continue;
+ }
+ if (ts.isExportDeclaration(stmt)) {
+ if (stmt.exportClause) {
+ if (ts.isNamespaceExport(stmt.exportClause)) {
+ throw new UnsupportedSyntaxError(stmt.exportClause);
+ }
+ for (const decl of stmt.exportClause.elements) {
+ const id = decl.propertyName || decl.name;
+ this.pushIdentifierReference(id);
+ }
+ }
+ }
+ else {
+ throw new UnsupportedSyntaxError(stmt, `namespace child (walking) not supported yet`);
+ }
+ }
+ this.popScope();
+ }
+}
+
+function convert({ sourceFile }) {
+ const transformer = new Transformer(sourceFile);
+ return transformer.transform();
+}
+class Transformer {
+ constructor(sourceFile) {
+ this.sourceFile = sourceFile;
+ this.declarations = new Map();
+ this.ast = createProgram(sourceFile);
+ for (const stmt of sourceFile.statements) {
+ this.convertStatement(stmt);
+ }
+ }
+ transform() {
+ return {
+ ast: this.ast,
+ };
+ }
+ pushStatement(node) {
+ this.ast.body.push(node);
+ }
+ createDeclaration(node, id) {
+ const range = { start: node.getFullStart(), end: node.getEnd() };
+ if (!id) {
+ const scope = new DeclarationScope({ range });
+ this.pushStatement(scope.iife);
+ return scope;
+ }
+ const name = id.getText();
+ // We have re-ordered and grouped declarations in `reorderStatements`,
+ // so we can assume same-name statements are next to each other, so we just
+ // bump the `end` range.
+ const scope = new DeclarationScope({ id, range });
+ const existingScope = this.declarations.get(name);
+ if (existingScope) {
+ existingScope.pushIdentifierReference(id);
+ existingScope.declaration.end = range.end;
+ // we possibly have other declarations, such as an ExportDeclaration in
+ // between, which should also be updated to the correct start/end.
+ let selfIdx = this.ast.body.findIndex((node) => node == existingScope.declaration);
+ for (let i = selfIdx + 1; i < this.ast.body.length; i++) {
+ const decl = this.ast.body[i];
+ decl.start = decl.end = range.end;
+ }
+ }
+ else {
+ this.pushStatement(scope.declaration);
+ this.declarations.set(name, scope);
+ }
+ return existingScope || scope;
+ }
+ convertStatement(node) {
+ if (ts.isEnumDeclaration(node)) {
+ return this.convertEnumDeclaration(node);
+ }
+ if (ts.isFunctionDeclaration(node)) {
+ return this.convertFunctionDeclaration(node);
+ }
+ if (ts.isInterfaceDeclaration(node) || ts.isClassDeclaration(node)) {
+ return this.convertClassOrInterfaceDeclaration(node);
+ }
+ if (ts.isTypeAliasDeclaration(node)) {
+ return this.convertTypeAliasDeclaration(node);
+ }
+ if (ts.isVariableStatement(node)) {
+ return this.convertVariableStatement(node);
+ }
+ if (ts.isExportDeclaration(node) || ts.isExportAssignment(node)) {
+ return this.convertExportDeclaration(node);
+ }
+ if (ts.isModuleDeclaration(node)) {
+ return this.convertNamespaceDeclaration(node);
+ }
+ if (node.kind == ts.SyntaxKind.NamespaceExportDeclaration) {
+ // just ignore `export as namespace FOO` statements…
+ return this.removeStatement(node);
+ }
+ if (ts.isImportDeclaration(node) || ts.isImportEqualsDeclaration(node)) {
+ return this.convertImportDeclaration(node);
+ }
+ else {
+ throw new UnsupportedSyntaxError(node);
+ }
+ }
+ removeStatement(node) {
+ this.pushStatement(withStartEnd({
+ type: "ExpressionStatement",
+ expression: { type: "Literal", value: "pls remove me" },
+ }, node));
+ }
+ convertNamespaceDeclaration(node) {
+ // we want to keep `declare global` augmentations, and we want to
+ // pull in all the things referenced inside.
+ // so for this case, we need to figure out some way so that rollup does
+ // the right thing and not rename these…
+ const isGlobalAugmentation = node.flags & ts.NodeFlags.GlobalAugmentation;
+ if (isGlobalAugmentation || !ts.isIdentifier(node.name)) {
+ const scope = this.createDeclaration(node);
+ scope.convertNamespace(node, true);
+ return;
+ }
+ const scope = this.createDeclaration(node, node.name);
+ scope.pushIdentifierReference(node.name);
+ scope.convertNamespace(node);
+ }
+ convertEnumDeclaration(node) {
+ const scope = this.createDeclaration(node, node.name);
+ scope.pushIdentifierReference(node.name);
+ }
+ convertFunctionDeclaration(node) {
+ if (!node.name) {
+ throw new UnsupportedSyntaxError(node, `FunctionDeclaration should have a name`);
+ }
+ const scope = this.createDeclaration(node, node.name);
+ scope.pushIdentifierReference(node.name);
+ scope.convertParametersAndType(node);
+ }
+ convertClassOrInterfaceDeclaration(node) {
+ if (!node.name) {
+ throw new UnsupportedSyntaxError(node, `ClassDeclaration / InterfaceDeclaration should have a name`);
+ }
+ const scope = this.createDeclaration(node, node.name);
+ const typeVariables = scope.convertTypeParameters(node.typeParameters);
+ scope.convertHeritageClauses(node);
+ scope.convertMembers(node.members);
+ scope.popScope(typeVariables);
+ }
+ convertTypeAliasDeclaration(node) {
+ const scope = this.createDeclaration(node, node.name);
+ const typeVariables = scope.convertTypeParameters(node.typeParameters);
+ scope.convertTypeNode(node.type);
+ scope.popScope(typeVariables);
+ }
+ convertVariableStatement(node) {
+ const { declarations } = node.declarationList;
+ if (declarations.length !== 1) {
+ throw new UnsupportedSyntaxError(node, `VariableStatement with more than one declaration not yet supported`);
+ }
+ for (const decl of declarations) {
+ if (!ts.isIdentifier(decl.name)) {
+ throw new UnsupportedSyntaxError(node, `VariableDeclaration must have a name`);
+ }
+ const scope = this.createDeclaration(node, decl.name);
+ scope.convertTypeNode(decl.type);
+ }
+ }
+ convertExportDeclaration(node) {
+ if (ts.isExportAssignment(node)) {
+ this.pushStatement(withStartEnd({
+ type: "ExportDefaultDeclaration",
+ declaration: convertExpression(node.expression),
+ }, node));
+ return;
+ }
+ const source = node.moduleSpecifier ? convertExpression(node.moduleSpecifier) : undefined;
+ if (!node.exportClause) {
+ // export * from './other'
+ this.pushStatement(withStartEnd({
+ type: "ExportAllDeclaration",
+ source,
+ exported: null,
+ }, node));
+ }
+ else if (ts.isNamespaceExport(node.exportClause)) {
+ // export * as name from './other'
+ this.pushStatement(withStartEnd({
+ type: "ExportAllDeclaration",
+ source,
+ exported: createIdentifier(node.exportClause.name),
+ }, node));
+ }
+ else {
+ // export { name } from './other'
+ const specifiers = [];
+ for (const elem of node.exportClause.elements) {
+ specifiers.push(this.convertExportSpecifier(elem));
+ }
+ this.pushStatement(withStartEnd({
+ type: "ExportNamedDeclaration",
+ declaration: null,
+ specifiers,
+ source,
+ }, node));
+ }
+ }
+ convertImportDeclaration(node) {
+ if (ts.isImportEqualsDeclaration(node)) {
+ // assume its like `import default`
+ if (!ts.isExternalModuleReference(node.moduleReference)) {
+ throw new UnsupportedSyntaxError(node, "ImportEquals should have a literal source.");
+ }
+ this.pushStatement(withStartEnd({
+ type: "ImportDeclaration",
+ specifiers: [
+ {
+ type: "ImportDefaultSpecifier",
+ local: createIdentifier(node.name),
+ },
+ ],
+ source: convertExpression(node.moduleReference.expression),
+ }, node));
+ return;
+ }
+ const source = convertExpression(node.moduleSpecifier);
+ const specifiers = node.importClause && node.importClause.namedBindings
+ ? this.convertNamedImportBindings(node.importClause.namedBindings)
+ : [];
+ if (node.importClause && node.importClause.name) {
+ specifiers.push({
+ type: "ImportDefaultSpecifier",
+ local: createIdentifier(node.importClause.name),
+ });
+ }
+ this.pushStatement(withStartEnd({
+ type: "ImportDeclaration",
+ specifiers,
+ source,
+ }, node));
+ }
+ convertNamedImportBindings(node) {
+ if (ts.isNamedImports(node)) {
+ return node.elements.map((el) => {
+ const local = createIdentifier(el.name);
+ const imported = el.propertyName ? createIdentifier(el.propertyName) : local;
+ return {
+ type: "ImportSpecifier",
+ local,
+ imported,
+ };
+ });
+ }
+ return [
+ {
+ type: "ImportNamespaceSpecifier",
+ local: createIdentifier(node.name),
+ },
+ ];
+ }
+ convertExportSpecifier(node) {
+ const exported = createIdentifier(node.name);
+ return {
+ type: "ExportSpecifier",
+ exported: exported,
+ local: node.propertyName ? createIdentifier(node.propertyName) : exported,
+ };
+ }
+}
+
+function parse(fileName, code) {
+ return ts.createSourceFile(fileName, code, ts.ScriptTarget.Latest, true);
+}
+/**
+ * This is the *transform* part of `rollup-plugin-dts`.
+ *
+ * It sets a few input and output options, and otherwise is the core part of the
+ * plugin responsible for bundling `.d.ts` files.
+ *
+ * That itself is a multi-step process:
+ *
+ * 1. The plugin has a preprocessing step that moves code around and cleans it
+ * up a bit, so that later steps can work with it easier. See `preprocess.ts`.
+ * 2. It then converts the TypeScript AST into a ESTree-like AST that rollup
+ * understands. See `Transformer.ts`.
+ * 3. After rollup is finished, the plugin will postprocess the output in a
+ * `renderChunk` hook. As rollup usually outputs javascript, it can output
+ * some code that is invalid in the context of a `.d.ts` file. In particular,
+ * the postprocess convert any javascript code that was created for namespace
+ * exports into TypeScript namespaces. See `NamespaceFixer.ts`.
+ */
+const transform = () => {
+ const allTypeReferences = new Map();
+ const allFileReferences = new Map();
+ return {
+ name: "dts-transform",
+ options(options) {
+ const { onwarn } = options;
+ return {
+ ...options,
+ onwarn(warning, warn) {
+ if (warning.code != "CIRCULAR_DEPENDENCY") {
+ if (onwarn) {
+ onwarn(warning, warn);
+ }
+ else {
+ warn(warning);
+ }
+ }
+ },
+ treeshake: {
+ moduleSideEffects: "no-external",
+ propertyReadSideEffects: true,
+ unknownGlobalSideEffects: false,
+ },
+ };
+ },
+ outputOptions(options) {
+ return {
+ ...options,
+ chunkFileNames: options.chunkFileNames || "[name]-[hash].d.ts",
+ entryFileNames: options.entryFileNames || "[name].d.ts",
+ format: "es",
+ exports: "named",
+ compact: false,
+ freeze: true,
+ interop: "esModule",
+ generatedCode: Object.assign({ symbols: false }, options.generatedCode),
+ strict: false,
+ };
+ },
+ transform(code, fileName) {
+ let sourceFile = parse(fileName, code);
+ const preprocessed = preProcess({ sourceFile });
+ // `sourceFile.fileName` here uses forward slashes
+ allTypeReferences.set(sourceFile.fileName, preprocessed.typeReferences);
+ allFileReferences.set(sourceFile.fileName, preprocessed.fileReferences);
+ code = preprocessed.code.toString();
+ sourceFile = parse(fileName, code);
+ const converted = convert({ sourceFile });
+ if (process.env.DTS_DUMP_AST) {
+ console.log(fileName);
+ console.log(code);
+ console.log(JSON.stringify(converted.ast.body, undefined, 2));
+ }
+ return { code, ast: converted.ast, map: preprocessed.code.generateMap() };
+ },
+ renderChunk(code, chunk, options) {
+ const source = parse(chunk.fileName, code);
+ const fixer = new NamespaceFixer(source);
+ const typeReferences = new Set();
+ const fileReferences = new Set();
+ for (const fileName of Object.keys(chunk.modules)) {
+ for (const ref of allTypeReferences.get(fileName.split("\\").join("/")) || []) {
+ typeReferences.add(ref);
+ }
+ for (const ref of allFileReferences.get(fileName.split("\\").join("/")) || []) {
+ if (ref.startsWith(".")) {
+ // Need absolute path of the target file here
+ const absolutePathToOriginal = path.join(path.dirname(fileName), ref);
+ const chunkFolder = (options.file && path.dirname(options.file)) ||
+ (chunk.facadeModuleId && path.dirname(chunk.facadeModuleId)) ||
+ ".";
+ let targetRelPath = path.relative(chunkFolder, absolutePathToOriginal).split("\\").join("/");
+ if (targetRelPath[0] !== ".") {
+ targetRelPath = "./" + targetRelPath;
+ }
+ fileReferences.add(targetRelPath);
+ }
+ else {
+ fileReferences.add(ref);
+ }
+ }
+ }
+ code = writeBlock(Array.from(fileReferences, (ref) => `/// `));
+ code += writeBlock(Array.from(typeReferences, (ref) => `/// `));
+ code += fixer.fix();
+ if (!code) {
+ code += "\nexport { }";
+ }
+ return { code, map: { mappings: "" } };
+ },
+ };
+};
+function writeBlock(codes) {
+ if (codes.length) {
+ return codes.join("\n") + "\n";
+ }
+ return "";
+}
+
+const TS_EXTENSIONS = /\.([cm]ts|[tj]sx?)$/;
+function getModule({ programs, resolvedOptions: { compilerOptions, tsconfig } }, fileName, code) {
+ // Create any `ts.SourceFile` objects on-demand for ".d.ts" modules,
+ // but only when there are zero ".ts" entry points.
+ if (!programs.length && DTS_EXTENSIONS.test(fileName)) {
+ return { code };
+ }
+ // Rollup doesn't tell you the entry point of each module in the bundle,
+ // so we need to ask every TypeScript program for the given filename.
+ const existingProgram = programs.find((p) => !!p.getSourceFile(fileName));
+ if (existingProgram) {
+ // we know this exists b/c of the .filter above, so this non-null assertion is safe
+ const source = existingProgram.getSourceFile(fileName);
+ return {
+ code: source.getFullText(),
+ source,
+ program: existingProgram,
+ };
+ }
+ else if (ts.sys.fileExists(fileName)) {
+ const newProgram = createProgram$1(fileName, compilerOptions, tsconfig);
+ programs.push(newProgram);
+ // we created hte program from this fileName, so the source file must exist :P
+ const source = newProgram.getSourceFile(fileName);
+ return {
+ code: source.getFullText(),
+ source,
+ program: newProgram,
+ };
+ }
+ else {
+ // the file isn't part of an existing program and doesn't exist on disk
+ return null;
+ }
+}
+function rollupPluginDts(options = {}) {
+ const transformPlugin = transform();
+ const ctx = { programs: [], resolvedOptions: resolveDefaultOptions(options) };
+ return {
+ name: "dts",
+ // pass outputOptions & renderChunk hooks to the inner transform plugin
+ outputOptions: transformPlugin.outputOptions,
+ renderChunk: transformPlugin.renderChunk,
+ options(options) {
+ let { input = [] } = options;
+ if (!Array.isArray(input)) {
+ input = typeof input === "string" ? [input] : Object.values(input);
+ }
+ else if (input.length > 1) {
+ // when dealing with multiple unnamed inputs, transform the inputs into
+ // an explicit object, which strips the file extension
+ options.input = {};
+ for (const filename of input) {
+ let name = filename.replace(/((\.d)?\.(c|m)?(t|j)sx?)$/, "");
+ if (path.isAbsolute(filename)) {
+ name = path.basename(name);
+ }
+ else {
+ name = path.normalize(name);
+ }
+ options.input[name] = filename;
+ }
+ }
+ ctx.programs = createPrograms(Object.values(input), ctx.resolvedOptions.compilerOptions, ctx.resolvedOptions.tsconfig);
+ return transformPlugin.options.call(this, options);
+ },
+ transform(code, id) {
+ if (!TS_EXTENSIONS.test(id)) {
+ return null;
+ }
+ const watchFiles = (module) => {
+ if (module.program) {
+ const sourceDirectory = path.dirname(id);
+ const sourceFilesInProgram = module.program
+ .getSourceFiles()
+ .map((sourceFile) => sourceFile.fileName)
+ .filter((fileName) => fileName.startsWith(sourceDirectory));
+ sourceFilesInProgram.forEach(this.addWatchFile);
+ }
+ };
+ const handleDtsFile = () => {
+ const module = getModule(ctx, id, code);
+ if (module) {
+ watchFiles(module);
+ return transformPlugin.transform.call(this, module.code, id);
+ }
+ return null;
+ };
+ const treatTsAsDts = () => {
+ const declarationId = id.replace(TS_EXTENSIONS, dts);
+ let module = getModule(ctx, declarationId, code);
+ if (module) {
+ watchFiles(module);
+ return transformPlugin.transform.call(this, module.code, declarationId);
+ }
+ return null;
+ };
+ const generateDtsFromTs = () => {
+ const module = getModule(ctx, id, code);
+ if (!module || !module.source || !module.program)
+ return null;
+ watchFiles(module);
+ const declarationId = id.replace(TS_EXTENSIONS, dts);
+ let generated;
+ const { emitSkipped, diagnostics } = module.program.emit(module.source, (_, declarationText) => {
+ generated = transformPlugin.transform.call(this, declarationText, declarationId);
+ }, undefined, // cancellationToken
+ true);
+ if (emitSkipped) {
+ const errors = diagnostics.filter((diag) => diag.category === ts.DiagnosticCategory.Error);
+ if (errors.length) {
+ console.error(ts.formatDiagnostics(errors, formatHost));
+ this.error("Failed to compile. Check the logs above.");
+ }
+ }
+ return generated;
+ };
+ // if it's a .d.ts file, handle it as-is
+ if (DTS_EXTENSIONS.test(id))
+ return handleDtsFile();
+ // first attempt to treat .ts files as .d.ts files, and otherwise use the typescript compiler to generate the declarations
+ return treatTsAsDts() ?? generateDtsFromTs();
+ },
+ resolveId(source, importer) {
+ if (!importer) {
+ return;
+ }
+ // normalize directory separators to forward slashes, as apparently typescript expects that?
+ importer = importer.split("\\").join("/");
+ let resolvedCompilerOptions = ctx.resolvedOptions.compilerOptions;
+ if (ctx.resolvedOptions.tsconfig) {
+ // Here we have a chicken and egg problem.
+ // `source` would be resolved by `ts.nodeModuleNameResolver` a few lines below, but
+ // `ts.nodeModuleNameResolver` requires `compilerOptions` which we have to resolve here,
+ // since we have a custom `tsconfig.json`.
+ // So, we use Node's resolver algorithm so we can see where the request is coming from so we
+ // can load the custom `tsconfig.json` from the correct path.
+ const resolvedSource = source.startsWith(".") ? path.resolve(path.dirname(importer), source) : source;
+ resolvedCompilerOptions = getCompilerOptions(resolvedSource, ctx.resolvedOptions.compilerOptions, ctx.resolvedOptions.tsconfig).compilerOptions;
+ }
+ // resolve this via typescript
+ const { resolvedModule } = ts.resolveModuleName(source, importer, resolvedCompilerOptions, ts.sys);
+ if (!resolvedModule) {
+ return;
+ }
+ if (!ctx.resolvedOptions.respectExternal && resolvedModule.isExternalLibraryImport) {
+ // here, we define everything that comes from `node_modules` as `external`.
+ return { id: source, external: true };
+ }
+ else {
+ // using `path.resolve` here converts paths back to the system specific separators
+ return { id: path.resolve(resolvedModule.resolvedFileName) };
+ }
+ },
+ };
+}
+
+export { rollupPluginDts as default };
diff --git a/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/package-lock.json b/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/package-lock.json
new file mode 100644
index 0000000000..14d2be80fa
--- /dev/null
+++ b/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/package-lock.json
@@ -0,0 +1,1586 @@
+{
+ "name": "rollup-plugin-dts",
+ "version": "5.2.0",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "rollup-plugin-dts",
+ "version": "5.2.0",
+ "license": "LGPL-3.0",
+ "dependencies": {
+ "magic-string": "^0.29.0"
+ },
+ "devDependencies": {
+ "@babel/code-frame": "^7.18.6",
+ "@types/babel__code-frame": "^7.0.3",
+ "@types/d3-drag": "^3.0.2",
+ "@types/estree": "1.0.0",
+ "@types/node": "^18.13.0",
+ "@types/react": "^18.0.28",
+ "c8": "^7.12.0",
+ "rollup": "3.15.0",
+ "typescript": "4.9.5"
+ },
+ "engines": {
+ "node": ">=v14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/Swatinem"
+ },
+ "optionalDependencies": {
+ "@babel/code-frame": "^7.18.6"
+ },
+ "peerDependencies": {
+ "rollup": "^3.0.0",
+ "typescript": "^4.1"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+ "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/highlight": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.19.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
+ "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+ "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.18.6",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@bcoe/v8-coverage": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
+ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+ "dev": true
+ },
+ "node_modules/@istanbuljs/schema": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
+ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.14",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.17",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
+ "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/resolve-uri": "3.1.0",
+ "@jridgewell/sourcemap-codec": "1.4.14"
+ }
+ },
+ "node_modules/@types/babel__code-frame": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/@types/babel__code-frame/-/babel__code-frame-7.0.3.tgz",
+ "integrity": "sha512-2TN6oiwtNjOezilFVl77zwdNPwQWaDBBCCWWxyo1ctiO3vAtd7H/aB/CBJdw9+kqq3+latD0SXoedIuHySSZWw==",
+ "dev": true
+ },
+ "node_modules/@types/d3-drag": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.2.tgz",
+ "integrity": "sha512-qmODKEDvyKWVHcWWCOVcuVcOwikLVsyc4q4EBJMREsoQnR2Qoc2cZQUyFUPgO9q4S3qdSqJKBsuefv+h0Qy+tw==",
+ "dev": true,
+ "dependencies": {
+ "@types/d3-selection": "*"
+ }
+ },
+ "node_modules/@types/d3-selection": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.4.tgz",
+ "integrity": "sha512-ZeykX7286BCyMg9sH5fIAORyCB6hcATPSRQpN47jwBA2bMbAT0s+EvtDP5r1FZYJ95R8QoEE1CKJX+n0/M5Vhg==",
+ "dev": true
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz",
+ "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==",
+ "dev": true
+ },
+ "node_modules/@types/istanbul-lib-coverage": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
+ "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
+ "dev": true
+ },
+ "node_modules/@types/node": {
+ "version": "18.14.6",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz",
+ "integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==",
+ "dev": true
+ },
+ "node_modules/@types/prop-types": {
+ "version": "15.7.5",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
+ "dev": true
+ },
+ "node_modules/@types/react": {
+ "version": "18.0.28",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz",
+ "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==",
+ "dev": true,
+ "dependencies": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@types/scheduler": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
+ "dev": true
+ },
+ "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/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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/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/c8": {
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/c8/-/c8-7.13.0.tgz",
+ "integrity": "sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA==",
+ "dev": true,
+ "dependencies": {
+ "@bcoe/v8-coverage": "^0.2.3",
+ "@istanbuljs/schema": "^0.1.3",
+ "find-up": "^5.0.0",
+ "foreground-child": "^2.0.0",
+ "istanbul-lib-coverage": "^3.2.0",
+ "istanbul-lib-report": "^3.0.0",
+ "istanbul-reports": "^3.1.4",
+ "rimraf": "^3.0.2",
+ "test-exclude": "^6.0.0",
+ "v8-to-istanbul": "^9.0.0",
+ "yargs": "^16.2.0",
+ "yargs-parser": "^20.2.9"
+ },
+ "bin": {
+ "c8": "bin/c8.js"
+ },
+ "engines": {
+ "node": ">=10.12.0"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "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/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "dev": true
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
+ "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==",
+ "dev": true
+ },
+ "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/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/foreground-child": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz",
+ "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "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/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "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/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/html-escaper": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
+ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
+ "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/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/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/istanbul-lib-coverage": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
+ "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-report": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+ "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
+ "dev": true,
+ "dependencies": {
+ "istanbul-lib-coverage": "^3.0.0",
+ "make-dir": "^3.0.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-report/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-report/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-reports": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
+ "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
+ "dev": true,
+ "dependencies": {
+ "html-escaper": "^2.0.0",
+ "istanbul-lib-report": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.29.0",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.4.13"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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/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-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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/rollup": {
+ "version": "3.15.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.15.0.tgz",
+ "integrity": "sha512-F9hrCAhnp5/zx/7HYmftvsNBkMfLfk/dXUh73hPSM2E3CRgap65orDNJbLetoiUFwSAk6iHPLvBrZ5iHYvzqsg==",
+ "dev": true,
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=14.18.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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/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/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/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/test-exclude": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
+ "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+ "dev": true,
+ "dependencies": {
+ "@istanbuljs/schema": "^0.1.2",
+ "glob": "^7.1.4",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "4.9.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
+ "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
+ "dev": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=4.2.0"
+ }
+ },
+ "node_modules/v8-to-istanbul": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz",
+ "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.12",
+ "@types/istanbul-lib-coverage": "^2.0.1",
+ "convert-source-map": "^1.6.0"
+ },
+ "engines": {
+ "node": ">=10.12.0"
+ }
+ },
+ "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/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "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/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+ "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.18.6"
+ }
+ },
+ "@babel/helper-validator-identifier": {
+ "version": "7.19.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
+ "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
+ "dev": true
+ },
+ "@babel/highlight": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+ "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.18.6",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@bcoe/v8-coverage": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
+ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+ "dev": true
+ },
+ "@istanbuljs/schema": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
+ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+ "dev": true
+ },
+ "@jridgewell/resolve-uri": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+ "dev": true
+ },
+ "@jridgewell/sourcemap-codec": {
+ "version": "1.4.14",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
+ },
+ "@jridgewell/trace-mapping": {
+ "version": "0.3.17",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
+ "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/resolve-uri": "3.1.0",
+ "@jridgewell/sourcemap-codec": "1.4.14"
+ }
+ },
+ "@types/babel__code-frame": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/@types/babel__code-frame/-/babel__code-frame-7.0.3.tgz",
+ "integrity": "sha512-2TN6oiwtNjOezilFVl77zwdNPwQWaDBBCCWWxyo1ctiO3vAtd7H/aB/CBJdw9+kqq3+latD0SXoedIuHySSZWw==",
+ "dev": true
+ },
+ "@types/d3-drag": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.2.tgz",
+ "integrity": "sha512-qmODKEDvyKWVHcWWCOVcuVcOwikLVsyc4q4EBJMREsoQnR2Qoc2cZQUyFUPgO9q4S3qdSqJKBsuefv+h0Qy+tw==",
+ "dev": true,
+ "requires": {
+ "@types/d3-selection": "*"
+ }
+ },
+ "@types/d3-selection": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.4.tgz",
+ "integrity": "sha512-ZeykX7286BCyMg9sH5fIAORyCB6hcATPSRQpN47jwBA2bMbAT0s+EvtDP5r1FZYJ95R8QoEE1CKJX+n0/M5Vhg==",
+ "dev": true
+ },
+ "@types/estree": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz",
+ "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==",
+ "dev": true
+ },
+ "@types/istanbul-lib-coverage": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
+ "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
+ "dev": true
+ },
+ "@types/node": {
+ "version": "18.14.6",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz",
+ "integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==",
+ "dev": true
+ },
+ "@types/prop-types": {
+ "version": "15.7.5",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
+ "dev": true
+ },
+ "@types/react": {
+ "version": "18.0.28",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz",
+ "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==",
+ "dev": true,
+ "requires": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "@types/scheduler": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
+ "dev": true
+ },
+ "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
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "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
+ },
+ "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,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "c8": {
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/c8/-/c8-7.13.0.tgz",
+ "integrity": "sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA==",
+ "dev": true,
+ "requires": {
+ "@bcoe/v8-coverage": "^0.2.3",
+ "@istanbuljs/schema": "^0.1.3",
+ "find-up": "^5.0.0",
+ "foreground-child": "^2.0.0",
+ "istanbul-lib-coverage": "^3.2.0",
+ "istanbul-lib-report": "^3.0.0",
+ "istanbul-reports": "^3.1.4",
+ "rimraf": "^3.0.2",
+ "test-exclude": "^6.0.0",
+ "v8-to-istanbul": "^9.0.0",
+ "yargs": "^16.2.0",
+ "yargs-parser": "^20.2.9"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "dev": true
+ },
+ "cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ }
+ },
+ "csstype": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
+ "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==",
+ "dev": true
+ },
+ "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
+ },
+ "escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true
+ },
+ "find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "foreground-child": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz",
+ "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "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
+ },
+ "fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
+ "optional": true
+ },
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "requires": {
+ "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"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true
+ },
+ "html-escaper": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
+ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
+ "dev": true
+ },
+ "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,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "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
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "istanbul-lib-coverage": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
+ "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
+ "dev": true
+ },
+ "istanbul-lib-report": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+ "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
+ "dev": true,
+ "requires": {
+ "istanbul-lib-coverage": "^3.0.0",
+ "make-dir": "^3.0.0",
+ "supports-color": "^7.1.0"
+ },
+ "dependencies": {
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "istanbul-reports": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
+ "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
+ "dev": true,
+ "requires": {
+ "html-escaper": "^2.0.0",
+ "istanbul-lib-report": "^3.0.0"
+ }
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^5.0.0"
+ }
+ },
+ "magic-string": {
+ "version": "0.29.0",
+ "requires": {
+ "@jridgewell/sourcemap-codec": "^1.4.13"
+ }
+ },
+ "make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dev": true,
+ "requires": {
+ "semver": "^6.0.0"
+ }
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "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,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "requires": {
+ "yocto-queue": "^0.1.0"
+ }
+ },
+ "p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^3.0.2"
+ }
+ },
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true
+ },
+ "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
+ },
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true
+ },
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true
+ },
+ "rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "rollup": {
+ "version": "3.15.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.15.0.tgz",
+ "integrity": "sha512-F9hrCAhnp5/zx/7HYmftvsNBkMfLfk/dXUh73hPSM2E3CRgap65orDNJbLetoiUFwSAk6iHPLvBrZ5iHYvzqsg==",
+ "dev": true,
+ "requires": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^3.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true
+ },
+ "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
+ },
+ "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,
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ }
+ },
+ "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,
+ "requires": {
+ "ansi-regex": "^5.0.1"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "test-exclude": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
+ "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+ "dev": true,
+ "requires": {
+ "@istanbuljs/schema": "^0.1.2",
+ "glob": "^7.1.4",
+ "minimatch": "^3.0.4"
+ }
+ },
+ "typescript": {
+ "version": "4.9.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
+ "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
+ "dev": true
+ },
+ "v8-to-istanbul": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz",
+ "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/trace-mapping": "^0.3.12",
+ "@types/istanbul-lib-coverage": "^2.0.1",
+ "convert-source-map": "^1.6.0"
+ }
+ },
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ }
+ }
+ },
+ "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
+ },
+ "y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true
+ },
+ "yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "dev": true,
+ "requires": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ }
+ },
+ "yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "dev": true
+ },
+ "yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true
+ }
+ }
+}
diff --git a/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/package.json b/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/package.json
new file mode 100644
index 0000000000..830bec1ae3
--- /dev/null
+++ b/bindings/stronghold-nodejs/examples/build/rollup-plugin-dts/package.json
@@ -0,0 +1,72 @@
+{
+ "name": "rollup-plugin-dts",
+ "version": "5.2.0",
+ "description": "A rollup plugin that will bundle up your .d.ts definition files.",
+ "keywords": [
+ "rollup-plugin",
+ "typescript",
+ "dts",
+ "@types"
+ ],
+ "author": "Arpad Borsos ",
+ "license": "LGPL-3.0",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/Swatinem/rollup-plugin-dts.git"
+ },
+ "bugs": {
+ "url": "https://github.com/Swatinem/rollup-plugin-dts/issues"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/Swatinem"
+ },
+ "homepage": "https://github.com/Swatinem/rollup-plugin-dts#readme",
+ "engines": {
+ "node": ">=v14"
+ },
+ "type": "module",
+ "main": "./dist/rollup-plugin-dts.cjs",
+ "exports": {
+ "types": "./dist/rollup-plugin-dts.d.ts",
+ "import": "./dist/rollup-plugin-dts.mjs",
+ "require": "./dist/rollup-plugin-dts.cjs"
+ },
+ "types": "./dist/rollup-plugin-dts.d.ts",
+ "sideEffects": false,
+ "files": [
+ "dist"
+ ],
+ "scripts": {
+ "clean": "node -e \"(async () => { try { await require('fs/promises').rm('dist', { recursive: true }); } catch {} })()\"",
+ "prebuild": "npm run clean",
+ "build": "tsc && rollup --bundleConfigAsCjs -c .build/rollup.config.js",
+ "prepublishOnly": "npm run test",
+ "pretest": "npm run build",
+ "test": "c8 node .build/tests/index.js"
+ },
+ "prettier": {
+ "printWidth": 120,
+ "trailingComma": "all"
+ },
+ "devDependencies": {
+ "@babel/code-frame": "^7.18.6",
+ "@types/babel__code-frame": "^7.0.3",
+ "@types/d3-drag": "^3.0.2",
+ "@types/estree": "1.0.0",
+ "@types/node": "^18.13.0",
+ "@types/react": "^18.0.28",
+ "c8": "^7.12.0",
+ "rollup": "3.15.0",
+ "typescript": "4.9.5"
+ },
+ "peerDependencies": {
+ "rollup": "^3.0.0",
+ "typescript": "^4.1"
+ },
+ "optionalDependencies": {
+ "@babel/code-frame": "^7.18.6"
+ },
+ "dependencies": {
+ "magic-string": "^0.29.0"
+ }
+}
diff --git a/bindings/stronghold-nodejs/examples/tsconfig.json b/bindings/stronghold-nodejs/examples/tsconfig.json
new file mode 100644
index 0000000000..5cf5d3a308
--- /dev/null
+++ b/bindings/stronghold-nodejs/examples/tsconfig.json
@@ -0,0 +1,11 @@
+{
+ "compilerOptions": {
+ "moduleResolution": "node",
+ "outDir": "dist",
+ "paths": {
+ "../../node": ["../../../../../../wasm/node"],
+ "../../dist": ["../../../../../dist"]
+ }
+ },
+ "exclude": ["node_modules", "dist", "build"]
+}
\ No newline at end of file
diff --git a/bindings/stronghold-nodejs/package-lock.json b/bindings/stronghold-nodejs/package-lock.json
index eebe55543b..880e5cff3b 100644
--- a/bindings/stronghold-nodejs/package-lock.json
+++ b/bindings/stronghold-nodejs/package-lock.json
@@ -1,7 +1,7 @@
{
"name": "@iota/identity-stronghold-nodejs",
"version": "0.6.0",
- "lockfileVersion": 2,
+ "lockfileVersion": 3,
"requires": true,
"packages": {
"": {
@@ -9,179 +9,80 @@
"version": "0.6.0",
"license": "Apache-2.0",
"devDependencies": {
- "@napi-rs/cli": "^2.4.2",
- "@rollup/plugin-commonjs": "^21.0.2",
- "@rollup/plugin-typescript": "^8.3.1",
- "@types/node": "^17.0.19",
+ "@napi-rs/cli": "~2.4.2",
+ "@rollup/plugin-commonjs": "^24.0.1",
+ "@rollup/plugin-typescript": "^11.0.0",
+ "@types/mocha": "^10.0.1",
+ "@types/node": "^18.14.6",
"cross-env": "^7.0.3",
- "mocha": "^9.2.1",
- "rollup": "^2.68.0",
+ "mocha": "^10.2.0",
+ "rollup": "^3.18.0",
"rollup-plugin-copy": "^3.4.0",
- "rollup-plugin-dts": "^4.1.0",
- "ts-mocha": "^9.0.2",
- "ts-node": "^10.5.0",
- "txm": "^8.0.1"
+ "ts-mocha": "^10.0.0",
+ "ts-node": "^10.9.1",
+ "txm": "^8.0.1",
+ "typescript": "^4.9.5"
},
"engines": {
"node": ">= 16"
},
"peerDependencies": {
- "@iota/identity-wasm": "0.5.0"
+ "@iota/identity-wasm": "0.6.0"
}
},
- "node_modules/@babel/code-frame": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
- "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "@babel/highlight": "^7.16.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
- "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight": {
- "version": "7.16.10",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz",
- "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.16.7",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "node_modules/@cspotcode/source-map-support": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
+ "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
"dev": true,
- "optional": true,
"dependencies": {
- "color-convert": "^1.9.0"
+ "@jridgewell/trace-mapping": "0.3.9"
},
"engines": {
- "node": ">=4"
+ "node": ">=12"
}
},
- "node_modules/@babel/highlight/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "optional": true,
+ "node_modules/@iota/identity-wasm": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@iota/identity-wasm/-/identity-wasm-0.6.0.tgz",
+ "integrity": "sha512-NRCJx8m1RmayBwz94Ais9YphCao6+5Q5CtCsOBpfMm1j+2Pgmeknq0uXG0CQSvG3lxtulmrr7qgYEPgf1j320g==",
+ "peer": true,
"dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "node-fetch": "^2.6.7"
},
"engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/@babel/highlight/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true,
- "optional": true
- },
- "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/@babel/highlight/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=4"
+ "node": ">=16"
}
},
- "node_modules/@babel/highlight/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
"dev": true,
- "optional": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
"engines": {
- "node": ">=4"
+ "node": ">=6.0.0"
}
},
- "node_modules/@cspotcode/source-map-consumer": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz",
- "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==",
- "dev": true,
- "engines": {
- "node": ">= 12"
- }
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.14",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+ "dev": true
},
- "node_modules/@cspotcode/source-map-support": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz",
- "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==",
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
+ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
"dev": true,
"dependencies": {
- "@cspotcode/source-map-consumer": "0.8.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@iota/identity-wasm": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/@iota/identity-wasm/-/identity-wasm-0.5.0.tgz",
- "integrity": "sha512-rEMWaK6ZivHdCx/6PXebCQhN2QrcH1sx/Oc+MzI2ZiDLP3HDkWJhopU/i52zvw67gBc0kPjXG7z1n2UNAseRiA==",
- "peer": true,
- "dependencies": {
- "node-fetch": "^2.6.7"
- },
- "engines": {
- "node": ">=16"
+ "@jridgewell/resolve-uri": "^3.0.3",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
}
},
"node_modules/@napi-rs/cli": {
- "version": "2.4.4",
- "resolved": "https://registry.npmjs.org/@napi-rs/cli/-/cli-2.4.4.tgz",
- "integrity": "sha512-f+tvwCv1ka24dBqI2DgBhR7Oxl3DKHOp4onxLXwyBFt6iCADnr3YZIr1/2Iq5r3uqxFgaf01bfPsRQZPkEp0kQ==",
+ "version": "2.4.5",
+ "resolved": "https://registry.npmjs.org/@napi-rs/cli/-/cli-2.4.5.tgz",
+ "integrity": "sha512-CLa3PSHh4Y760OXkHidzfHavVtfbQyfMhj3sWpta3SZjbWMk0tbdPhRez9y8KVApVVWjBxz5agEeFMfxxr+KTg==",
"dev": true,
"bin": {
"napi": "scripts/index.js"
@@ -230,65 +131,116 @@
}
},
"node_modules/@rollup/plugin-commonjs": {
- "version": "21.0.2",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.2.tgz",
- "integrity": "sha512-d/OmjaLVO4j/aQX69bwpWPpbvI3TJkQuxoAk7BH8ew1PyoMBLTOuvJTjzG8oEoW7drIIqB0KCJtfFLu/2GClWg==",
+ "version": "24.0.1",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-24.0.1.tgz",
+ "integrity": "sha512-15LsiWRZk4eOGqvrJyu3z3DaBu5BhXIMeWnijSRvd8irrrg9SHpQ1pH+BUK4H6Z9wL9yOxZJMTLU+Au86XHxow==",
"dev": true,
"dependencies": {
- "@rollup/pluginutils": "^3.1.0",
+ "@rollup/pluginutils": "^5.0.1",
"commondir": "^1.0.1",
- "estree-walker": "^2.0.1",
- "glob": "^7.1.6",
- "is-reference": "^1.2.1",
- "magic-string": "^0.25.7",
- "resolve": "^1.17.0"
+ "estree-walker": "^2.0.2",
+ "glob": "^8.0.3",
+ "is-reference": "1.2.1",
+ "magic-string": "^0.27.0"
},
"engines": {
- "node": ">= 8.0.0"
+ "node": ">=14.0.0"
},
"peerDependencies": {
- "rollup": "^2.38.3"
+ "rollup": "^2.68.0||^3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
}
},
- "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
- "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
- "dev": true
+ "node_modules/@rollup/plugin-commonjs/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@rollup/plugin-commonjs/node_modules/glob": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^5.0.1",
+ "once": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@rollup/plugin-commonjs/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
},
"node_modules/@rollup/plugin-typescript": {
- "version": "8.3.1",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.3.1.tgz",
- "integrity": "sha512-84rExe3ICUBXzqNX48WZV2Jp3OddjTMX97O2Py6D1KJaGSwWp0mDHXj+bCGNJqWHIEKDIT2U0sDjhP4czKi6cA==",
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.0.0.tgz",
+ "integrity": "sha512-goPyCWBiimk1iJgSTgsehFD5OOFHiAknrRJjqFCudcW8JtWiBlK284Xnn4flqMqg6YAjVG/EE+3aVzrL5qNSzQ==",
"dev": true,
"dependencies": {
- "@rollup/pluginutils": "^3.1.0",
- "resolve": "^1.17.0"
+ "@rollup/pluginutils": "^5.0.1",
+ "resolve": "^1.22.1"
},
"engines": {
- "node": ">=8.0.0"
+ "node": ">=14.0.0"
},
"peerDependencies": {
- "rollup": "^2.14.0",
+ "rollup": "^2.14.0||^3.0.0",
"tslib": "*",
"typescript": ">=3.7.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ },
+ "tslib": {
+ "optional": true
+ }
}
},
"node_modules/@rollup/pluginutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
- "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz",
+ "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==",
"dev": true,
"dependencies": {
- "@types/estree": "0.0.39",
- "estree-walker": "^1.0.1",
- "picomatch": "^2.2.2"
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^2.3.1"
},
"engines": {
- "node": ">= 8.0.0"
+ "node": ">=14.0.0"
},
"peerDependencies": {
- "rollup": "^1.20.0||^2.0.0"
+ "rollup": "^1.20.0||^2.0.0||^3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
}
},
"node_modules/@tsconfig/node10": {
@@ -325,9 +277,9 @@
}
},
"node_modules/@types/estree": {
- "version": "0.0.39",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
- "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz",
+ "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==",
"dev": true
},
"node_modules/@types/fs-extra": {
@@ -371,6 +323,12 @@
"integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
"dev": true
},
+ "node_modules/@types/mocha": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz",
+ "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==",
+ "dev": true
+ },
"node_modules/@types/ms": {
"version": "0.7.31",
"resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz",
@@ -378,9 +336,9 @@
"dev": true
},
"node_modules/@types/node": {
- "version": "17.0.19",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.19.tgz",
- "integrity": "sha512-PfeQhvcMR4cPFVuYfBN4ifG7p9c+Dlh3yUZR6k+5yQK7wX3gDgVxBly4/WkBRs9x4dmcy1TVl08SY67wwtEvmA==",
+ "version": "18.14.6",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz",
+ "integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==",
"dev": true
},
"node_modules/@types/unist": {
@@ -389,12 +347,6 @@
"integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==",
"dev": true
},
- "node_modules/@ungap/promise-all-settled": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
- "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
- "dev": true
- },
"node_modules/acorn": {
"version": "8.7.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
@@ -750,9 +702,9 @@
}
},
"node_modules/debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "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"
@@ -861,9 +813,9 @@
}
},
"node_modules/estree-walker": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
- "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"dev": true
},
"node_modules/extend": {
@@ -1040,15 +992,6 @@
"integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==",
"dev": true
},
- "node_modules/growl": {
- "version": "1.10.5",
- "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
- "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
- "dev": true,
- "engines": {
- "node": ">=4.x"
- }
- },
"node_modules/has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -1140,9 +1083,9 @@
}
},
"node_modules/is-core-module": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
- "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
+ "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
"dev": true,
"dependencies": {
"has": "^1.0.3"
@@ -1235,13 +1178,6 @@
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
"dev": true
},
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true,
- "optional": true
- },
"node_modules/js-yaml": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
@@ -1317,12 +1253,15 @@
}
},
"node_modules/magic-string": {
- "version": "0.25.7",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
- "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+ "version": "0.27.0",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz",
+ "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
"dev": true,
"dependencies": {
- "sourcemap-codec": "^1.4.4"
+ "@jridgewell/sourcemap-codec": "^1.4.13"
+ },
+ "engines": {
+ "node": ">=12"
}
},
"node_modules/make-error": {
@@ -1861,48 +1800,54 @@
}
},
"node_modules/mocha": {
- "version": "9.2.1",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.1.tgz",
- "integrity": "sha512-T7uscqjJVS46Pq1XDXyo9Uvey9gd3huT/DD9cYBb4K2Xc/vbKRPUWK067bxDQRK0yIz6Jxk73IrnimvASzBNAQ==",
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz",
+ "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==",
"dev": true,
"dependencies": {
- "@ungap/promise-all-settled": "1.1.2",
"ansi-colors": "4.1.1",
"browser-stdout": "1.3.1",
"chokidar": "3.5.3",
- "debug": "4.3.3",
+ "debug": "4.3.4",
"diff": "5.0.0",
"escape-string-regexp": "4.0.0",
"find-up": "5.0.0",
"glob": "7.2.0",
- "growl": "1.10.5",
"he": "1.2.0",
"js-yaml": "4.1.0",
"log-symbols": "4.1.0",
- "minimatch": "3.0.4",
+ "minimatch": "5.0.1",
"ms": "2.1.3",
- "nanoid": "3.2.0",
+ "nanoid": "3.3.3",
"serialize-javascript": "6.0.0",
"strip-json-comments": "3.1.1",
"supports-color": "8.1.1",
- "which": "2.0.2",
- "workerpool": "6.2.0",
+ "workerpool": "6.2.1",
"yargs": "16.2.0",
"yargs-parser": "20.2.4",
"yargs-unparser": "2.0.0"
},
"bin": {
"_mocha": "bin/_mocha",
- "mocha": "bin/mocha"
+ "mocha": "bin/mocha.js"
},
"engines": {
- "node": ">= 12.0.0"
+ "node": ">= 14.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/mochajs"
}
},
+ "node_modules/mocha/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
"node_modules/mocha/node_modules/diff": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
@@ -1912,6 +1857,18 @@
"node": ">=0.3.1"
}
},
+ "node_modules/mocha/node_modules/minimatch": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz",
+ "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/mri": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
@@ -1928,9 +1885,9 @@
"dev": true
},
"node_modules/nanoid": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz",
- "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==",
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz",
+ "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==",
"dev": true,
"bin": {
"nanoid": "bin/nanoid.cjs"
@@ -1940,9 +1897,9 @@
}
},
"node_modules/node-fetch": {
- "version": "2.6.7",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
- "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz",
+ "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==",
"peer": true,
"dependencies": {
"whatwg-url": "^5.0.0"
@@ -2118,12 +2075,12 @@
}
},
"node_modules/resolve": {
- "version": "1.22.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
- "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
+ "version": "1.22.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
+ "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
"dev": true,
"dependencies": {
- "is-core-module": "^2.8.1",
+ "is-core-module": "^2.9.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
@@ -2145,15 +2102,16 @@
}
},
"node_modules/rollup": {
- "version": "2.70.2",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.2.tgz",
- "integrity": "sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg==",
+ "version": "3.18.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.18.0.tgz",
+ "integrity": "sha512-J8C6VfEBjkvYPESMQYxKHxNOh4A5a3FlP+0BETGo34HEcE4eTlgCrO2+eWzlu2a/sHs2QUkZco+wscH7jhhgWg==",
"dev": true,
"bin": {
"rollup": "dist/bin/rollup"
},
"engines": {
- "node": ">=10.0.0"
+ "node": ">=14.18.0",
+ "npm": ">=8.0.0"
},
"optionalDependencies": {
"fsevents": "~2.3.2"
@@ -2175,40 +2133,6 @@
"node": ">=8.3"
}
},
- "node_modules/rollup-plugin-dts": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-4.2.1.tgz",
- "integrity": "sha512-eaxQZNUJ5iQcxNGlpJ1CUgG4OSVqWjDZ3nNSWBIoGrpcote2aNphSe1RJOaSYkb8dwn3o+rYm1vvld/5z3EGSQ==",
- "dev": true,
- "dependencies": {
- "magic-string": "^0.26.1"
- },
- "engines": {
- "node": ">=v12.22.11"
- },
- "funding": {
- "url": "https://github.com/sponsors/Swatinem"
- },
- "optionalDependencies": {
- "@babel/code-frame": "^7.16.7"
- },
- "peerDependencies": {
- "rollup": "^2.70",
- "typescript": "^4.6"
- }
- },
- "node_modules/rollup-plugin-dts/node_modules/magic-string": {
- "version": "0.26.1",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz",
- "integrity": "sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==",
- "dev": true,
- "dependencies": {
- "sourcemap-codec": "^1.4.8"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -2301,12 +2225,6 @@
"source-map": "^0.6.0"
}
},
- "node_modules/sourcemap-codec": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
- "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
- "dev": true
- },
"node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
@@ -2397,7 +2315,7 @@
"node_modules/tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
"peer": true
},
"node_modules/trough": {
@@ -2411,9 +2329,9 @@
}
},
"node_modules/ts-mocha": {
- "version": "9.0.2",
- "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-9.0.2.tgz",
- "integrity": "sha512-WyQjvnzwrrubl0JT7EC1yWmNpcsU3fOuBFfdps30zbmFBgKniSaSOyZMZx+Wq7kytUs5CY+pEbSYEbGfIKnXTw==",
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-10.0.0.tgz",
+ "integrity": "sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==",
"dev": true,
"dependencies": {
"ts-node": "7.0.1"
@@ -2428,7 +2346,7 @@
"tsconfig-paths": "^3.5.0"
},
"peerDependencies": {
- "mocha": "^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X"
+ "mocha": "^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X"
}
},
"node_modules/ts-mocha/node_modules/diff": {
@@ -2472,12 +2390,12 @@
}
},
"node_modules/ts-node": {
- "version": "10.5.0",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.5.0.tgz",
- "integrity": "sha512-6kEJKwVxAJ35W4akuiysfKwKmjkbYxwQMTBaAxo9KKAx/Yd26mPUyhGz3ji+EsJoAgrLqVsYHNuuYwQe22lbtw==",
+ "version": "10.9.1",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
+ "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
"dev": true,
"dependencies": {
- "@cspotcode/source-map-support": "0.7.0",
+ "@cspotcode/source-map-support": "^0.8.0",
"@tsconfig/node10": "^1.0.7",
"@tsconfig/node12": "^1.0.7",
"@tsconfig/node14": "^1.0.0",
@@ -2488,12 +2406,13 @@
"create-require": "^1.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
- "v8-compile-cache-lib": "^3.0.0",
+ "v8-compile-cache-lib": "^3.0.1",
"yn": "3.1.1"
},
"bin": {
"ts-node": "dist/bin.js",
"ts-node-cwd": "dist/bin-cwd.js",
+ "ts-node-esm": "dist/bin-esm.js",
"ts-node-script": "dist/bin-script.js",
"ts-node-transpile-only": "dist/bin-transpile.js",
"ts-script": "dist/bin-script-deprecated.js"
@@ -2527,10 +2446,11 @@
}
},
"node_modules/tslib": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
- "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
+ "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==",
"dev": true,
+ "optional": true,
"peer": true
},
"node_modules/txm": {
@@ -2566,11 +2486,10 @@
}
},
"node_modules/typescript": {
- "version": "4.6.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz",
- "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==",
+ "version": "4.9.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
+ "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
"dev": true,
- "peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -2660,9 +2579,9 @@
}
},
"node_modules/v8-compile-cache-lib": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz",
- "integrity": "sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
+ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
"dev": true
},
"node_modules/vfile": {
@@ -2698,13 +2617,13 @@
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
"peer": true
},
"node_modules/whatwg-url": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
"peer": true,
"dependencies": {
"tr46": "~0.0.3",
@@ -2727,9 +2646,9 @@
}
},
"node_modules/workerpool": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz",
- "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz",
+ "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==",
"dev": true
},
"node_modules/wrap-ansi": {
@@ -2827,1949 +2746,5 @@
"url": "https://github.com/sponsors/sindresorhus"
}
}
- },
- "dependencies": {
- "@babel/code-frame": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
- "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
- "dev": true,
- "optional": true,
- "requires": {
- "@babel/highlight": "^7.16.7"
- }
- },
- "@babel/helper-validator-identifier": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
- "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
- "dev": true,
- "optional": true
- },
- "@babel/highlight": {
- "version": "7.16.10",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz",
- "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==",
- "dev": true,
- "optional": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.16.7",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "optional": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "optional": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "optional": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true,
- "optional": true
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true,
- "optional": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true,
- "optional": true
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "optional": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "@cspotcode/source-map-consumer": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz",
- "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==",
- "dev": true
- },
- "@cspotcode/source-map-support": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz",
- "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==",
- "dev": true,
- "requires": {
- "@cspotcode/source-map-consumer": "0.8.0"
- }
- },
- "@iota/identity-wasm": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/@iota/identity-wasm/-/identity-wasm-0.5.0.tgz",
- "integrity": "sha512-rEMWaK6ZivHdCx/6PXebCQhN2QrcH1sx/Oc+MzI2ZiDLP3HDkWJhopU/i52zvw67gBc0kPjXG7z1n2UNAseRiA==",
- "peer": true,
- "requires": {
- "node-fetch": "^2.6.7"
- }
- },
- "@napi-rs/cli": {
- "version": "2.4.4",
- "resolved": "https://registry.npmjs.org/@napi-rs/cli/-/cli-2.4.4.tgz",
- "integrity": "sha512-f+tvwCv1ka24dBqI2DgBhR7Oxl3DKHOp4onxLXwyBFt6iCADnr3YZIr1/2Iq5r3uqxFgaf01bfPsRQZPkEp0kQ==",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@rollup/plugin-commonjs": {
- "version": "21.0.2",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.2.tgz",
- "integrity": "sha512-d/OmjaLVO4j/aQX69bwpWPpbvI3TJkQuxoAk7BH8ew1PyoMBLTOuvJTjzG8oEoW7drIIqB0KCJtfFLu/2GClWg==",
- "dev": true,
- "requires": {
- "@rollup/pluginutils": "^3.1.0",
- "commondir": "^1.0.1",
- "estree-walker": "^2.0.1",
- "glob": "^7.1.6",
- "is-reference": "^1.2.1",
- "magic-string": "^0.25.7",
- "resolve": "^1.17.0"
- },
- "dependencies": {
- "estree-walker": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
- "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
- "dev": true
- }
- }
- },
- "@rollup/plugin-typescript": {
- "version": "8.3.1",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.3.1.tgz",
- "integrity": "sha512-84rExe3ICUBXzqNX48WZV2Jp3OddjTMX97O2Py6D1KJaGSwWp0mDHXj+bCGNJqWHIEKDIT2U0sDjhP4czKi6cA==",
- "dev": true,
- "requires": {
- "@rollup/pluginutils": "^3.1.0",
- "resolve": "^1.17.0"
- }
- },
- "@rollup/pluginutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
- "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
- "dev": true,
- "requires": {
- "@types/estree": "0.0.39",
- "estree-walker": "^1.0.1",
- "picomatch": "^2.2.2"
- }
- },
- "@tsconfig/node10": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz",
- "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==",
- "dev": true
- },
- "@tsconfig/node12": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz",
- "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==",
- "dev": true
- },
- "@tsconfig/node14": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz",
- "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==",
- "dev": true
- },
- "@tsconfig/node16": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz",
- "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==",
- "dev": true
- },
- "@types/debug": {
- "version": "4.1.7",
- "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz",
- "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==",
- "dev": true,
- "requires": {
- "@types/ms": "*"
- }
- },
- "@types/estree": {
- "version": "0.0.39",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
- "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
- "dev": true
- },
- "@types/fs-extra": {
- "version": "8.1.2",
- "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.2.tgz",
- "integrity": "sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg==",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/glob": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
- "dev": true,
- "requires": {
- "@types/minimatch": "*",
- "@types/node": "*"
- }
- },
- "@types/json5": {
- "version": "0.0.29",
- "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
- "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
- "dev": true,
- "optional": true
- },
- "@types/mdast": {
- "version": "3.0.10",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz",
- "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==",
- "dev": true,
- "requires": {
- "@types/unist": "*"
- }
- },
- "@types/minimatch": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
- "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
- "dev": true
- },
- "@types/ms": {
- "version": "0.7.31",
- "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz",
- "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==",
- "dev": true
- },
- "@types/node": {
- "version": "17.0.19",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.19.tgz",
- "integrity": "sha512-PfeQhvcMR4cPFVuYfBN4ifG7p9c+Dlh3yUZR6k+5yQK7wX3gDgVxBly4/WkBRs9x4dmcy1TVl08SY67wwtEvmA==",
- "dev": true
- },
- "@types/unist": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz",
- "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==",
- "dev": true
- },
- "@ungap/promise-all-settled": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
- "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
- "dev": true
- },
- "acorn": {
- "version": "8.7.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
- "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==",
- "dev": true
- },
- "acorn-walk": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
- "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
- "dev": true
- },
- "ansi-colors": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
- "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
- "dev": true
- },
- "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
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "anymatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
- "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
- "dev": true,
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- }
- },
- "arg": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
- "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
- "dev": true
- },
- "argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "dev": true
- },
- "arrify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
- "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
- "dev": true
- },
- "async": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz",
- "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==",
- "dev": true
- },
- "bail": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
- "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==",
- "dev": true
- },
- "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
- },
- "binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true
- },
- "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,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "browser-stdout": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
- "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
- "dev": true
- },
- "buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true
- },
- "camelcase": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "dependencies": {
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "character-entities": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.1.tgz",
- "integrity": "sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ==",
- "dev": true
- },
- "chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "dev": true,
- "requires": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "fsevents": "~2.3.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- }
- },
- "cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
- "dev": true,
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "colorette": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
- "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==",
- "dev": true
- },
- "commondir": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
- "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
- },
- "create-require": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
- "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
- "dev": true
- },
- "cross-env": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
- "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.1"
- }
- },
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "dependencies": {
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true
- }
- }
- },
- "debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- },
- "dependencies": {
- "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
- }
- }
- },
- "decamelize": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
- "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
- "dev": true
- },
- "decode-named-character-reference": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.1.tgz",
- "integrity": "sha512-YV/0HQHreRwKb7uBopyIkLG17jG6Sv2qUchk9qSoVJ2f+flwRsPNBO0hAnjt6mTNYUT+vw9Gy2ihXg4sUWPi2w==",
- "dev": true,
- "requires": {
- "character-entities": "^2.0.0"
- }
- },
- "dequal": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz",
- "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==",
- "dev": true
- },
- "diff": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
- "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
- "dev": true
- },
- "diff-match-patch": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz",
- "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "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
- },
- "escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true
- },
- "estree-walker": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
- "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
- "dev": true
- },
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.11",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
- "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- }
- },
- "fastq": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
- "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
- "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
- "dev": true
- },
- "fs-extra": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
- "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "dev": true
- },
- "fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "optional": true
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true
- },
- "glob": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
- "globby": {
- "version": "10.0.1",
- "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz",
- "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==",
- "dev": true,
- "requires": {
- "@types/glob": "^7.1.1",
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.0.3",
- "glob": "^7.1.3",
- "ignore": "^5.1.1",
- "merge2": "^1.2.3",
- "slash": "^3.0.0"
- }
- },
- "graceful-fs": {
- "version": "4.2.9",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz",
- "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==",
- "dev": true
- },
- "growl": {
- "version": "1.10.5",
- "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
- "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
- "dev": true
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "he": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
- "dev": true
- },
- "ignore": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
- "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "requires": {
- "binary-extensions": "^2.0.0"
- }
- },
- "is-buffer": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
- "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
- "dev": true
- },
- "is-core-module": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
- "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
- "dev": true,
- "requires": {
- "has": "^1.0.3"
- }
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
- "dev": true
- },
- "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
- },
- "is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
- },
- "is-plain-obj": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
- "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
- "dev": true
- },
- "is-plain-object": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz",
- "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==",
- "dev": true
- },
- "is-reference": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
- "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
- "dev": true,
- "requires": {
- "@types/estree": "*"
- }
- },
- "is-unicode-supported": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
- },
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true,
- "optional": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json5": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
- "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
- "dev": true,
- "optional": true,
- "requires": {
- "minimist": "^1.2.0"
- }
- },
- "jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.6"
- }
- },
- "kleur": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz",
- "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==",
- "dev": true
- },
- "locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "log-symbols": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
- "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
- "dev": true,
- "requires": {
- "chalk": "^4.1.0",
- "is-unicode-supported": "^0.1.0"
- }
- },
- "magic-string": {
- "version": "0.25.7",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
- "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
- "dev": true,
- "requires": {
- "sourcemap-codec": "^1.4.4"
- }
- },
- "make-error": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
- "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
- "dev": true
- },
- "mdast-util-from-markdown": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz",
- "integrity": "sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==",
- "dev": true,
- "requires": {
- "@types/mdast": "^3.0.0",
- "@types/unist": "^2.0.0",
- "decode-named-character-reference": "^1.0.0",
- "mdast-util-to-string": "^3.1.0",
- "micromark": "^3.0.0",
- "micromark-util-decode-numeric-character-reference": "^1.0.0",
- "micromark-util-decode-string": "^1.0.0",
- "micromark-util-normalize-identifier": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "unist-util-stringify-position": "^3.0.0",
- "uvu": "^0.5.0"
- }
- },
- "mdast-util-to-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz",
- "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==",
- "dev": true
- },
- "merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true
- },
- "micromark": {
- "version": "3.0.10",
- "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.0.10.tgz",
- "integrity": "sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg==",
- "dev": true,
- "requires": {
- "@types/debug": "^4.0.0",
- "debug": "^4.0.0",
- "decode-named-character-reference": "^1.0.0",
- "micromark-core-commonmark": "^1.0.1",
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-chunked": "^1.0.0",
- "micromark-util-combine-extensions": "^1.0.0",
- "micromark-util-decode-numeric-character-reference": "^1.0.0",
- "micromark-util-encode": "^1.0.0",
- "micromark-util-normalize-identifier": "^1.0.0",
- "micromark-util-resolve-all": "^1.0.0",
- "micromark-util-sanitize-uri": "^1.0.0",
- "micromark-util-subtokenize": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.1",
- "uvu": "^0.5.0"
- }
- },
- "micromark-core-commonmark": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz",
- "integrity": "sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==",
- "dev": true,
- "requires": {
- "decode-named-character-reference": "^1.0.0",
- "micromark-factory-destination": "^1.0.0",
- "micromark-factory-label": "^1.0.0",
- "micromark-factory-space": "^1.0.0",
- "micromark-factory-title": "^1.0.0",
- "micromark-factory-whitespace": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-chunked": "^1.0.0",
- "micromark-util-classify-character": "^1.0.0",
- "micromark-util-html-tag-name": "^1.0.0",
- "micromark-util-normalize-identifier": "^1.0.0",
- "micromark-util-resolve-all": "^1.0.0",
- "micromark-util-subtokenize": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.1",
- "uvu": "^0.5.0"
- }
- },
- "micromark-factory-destination": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz",
- "integrity": "sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==",
- "dev": true,
- "requires": {
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- }
- },
- "micromark-factory-label": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz",
- "integrity": "sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==",
- "dev": true,
- "requires": {
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0"
- }
- },
- "micromark-factory-space": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz",
- "integrity": "sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==",
- "dev": true,
- "requires": {
- "micromark-util-character": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- }
- },
- "micromark-factory-title": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz",
- "integrity": "sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==",
- "dev": true,
- "requires": {
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0"
- }
- },
- "micromark-factory-whitespace": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz",
- "integrity": "sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==",
- "dev": true,
- "requires": {
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- }
- },
- "micromark-util-character": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.1.0.tgz",
- "integrity": "sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==",
- "dev": true,
- "requires": {
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- }
- },
- "micromark-util-chunked": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz",
- "integrity": "sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==",
- "dev": true,
- "requires": {
- "micromark-util-symbol": "^1.0.0"
- }
- },
- "micromark-util-classify-character": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz",
- "integrity": "sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==",
- "dev": true,
- "requires": {
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- }
- },
- "micromark-util-combine-extensions": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz",
- "integrity": "sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==",
- "dev": true,
- "requires": {
- "micromark-util-chunked": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- }
- },
- "micromark-util-decode-numeric-character-reference": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz",
- "integrity": "sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==",
- "dev": true,
- "requires": {
- "micromark-util-symbol": "^1.0.0"
- }
- },
- "micromark-util-decode-string": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz",
- "integrity": "sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==",
- "dev": true,
- "requires": {
- "decode-named-character-reference": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-decode-numeric-character-reference": "^1.0.0",
- "micromark-util-symbol": "^1.0.0"
- }
- },
- "micromark-util-encode": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz",
- "integrity": "sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==",
- "dev": true
- },
- "micromark-util-html-tag-name": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.0.0.tgz",
- "integrity": "sha512-NenEKIshW2ZI/ERv9HtFNsrn3llSPZtY337LID/24WeLqMzeZhBEE6BQ0vS2ZBjshm5n40chKtJ3qjAbVV8S0g==",
- "dev": true
- },
- "micromark-util-normalize-identifier": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz",
- "integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==",
- "dev": true,
- "requires": {
- "micromark-util-symbol": "^1.0.0"
- }
- },
- "micromark-util-resolve-all": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz",
- "integrity": "sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==",
- "dev": true,
- "requires": {
- "micromark-util-types": "^1.0.0"
- }
- },
- "micromark-util-sanitize-uri": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz",
- "integrity": "sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==",
- "dev": true,
- "requires": {
- "micromark-util-character": "^1.0.0",
- "micromark-util-encode": "^1.0.0",
- "micromark-util-symbol": "^1.0.0"
- }
- },
- "micromark-util-subtokenize": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz",
- "integrity": "sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==",
- "dev": true,
- "requires": {
- "micromark-util-chunked": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0"
- }
- },
- "micromark-util-symbol": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz",
- "integrity": "sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==",
- "dev": true
- },
- "micromark-util-types": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.2.tgz",
- "integrity": "sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
- "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
- "dev": true,
- "requires": {
- "braces": "^3.0.1",
- "picomatch": "^2.2.3"
- }
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
- "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
- "dev": true
- },
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "mocha": {
- "version": "9.2.1",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.1.tgz",
- "integrity": "sha512-T7uscqjJVS46Pq1XDXyo9Uvey9gd3huT/DD9cYBb4K2Xc/vbKRPUWK067bxDQRK0yIz6Jxk73IrnimvASzBNAQ==",
- "dev": true,
- "requires": {
- "@ungap/promise-all-settled": "1.1.2",
- "ansi-colors": "4.1.1",
- "browser-stdout": "1.3.1",
- "chokidar": "3.5.3",
- "debug": "4.3.3",
- "diff": "5.0.0",
- "escape-string-regexp": "4.0.0",
- "find-up": "5.0.0",
- "glob": "7.2.0",
- "growl": "1.10.5",
- "he": "1.2.0",
- "js-yaml": "4.1.0",
- "log-symbols": "4.1.0",
- "minimatch": "3.0.4",
- "ms": "2.1.3",
- "nanoid": "3.2.0",
- "serialize-javascript": "6.0.0",
- "strip-json-comments": "3.1.1",
- "supports-color": "8.1.1",
- "which": "2.0.2",
- "workerpool": "6.2.0",
- "yargs": "16.2.0",
- "yargs-parser": "20.2.4",
- "yargs-unparser": "2.0.0"
- },
- "dependencies": {
- "diff": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
- "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
- "dev": true
- }
- }
- },
- "mri": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
- "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
- "dev": true
- },
- "ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true
- },
- "nanoid": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz",
- "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==",
- "dev": true
- },
- "node-fetch": {
- "version": "2.6.7",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
- "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
- "peer": true,
- "requires": {
- "whatwg-url": "^5.0.0"
- }
- },
- "normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true
- },
- "randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.1.0"
- }
- },
- "readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
- "requires": {
- "picomatch": "^2.2.1"
- }
- },
- "remark-parse": {
- "version": "10.0.1",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz",
- "integrity": "sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==",
- "dev": true,
- "requires": {
- "@types/mdast": "^3.0.0",
- "mdast-util-from-markdown": "^1.0.0",
- "unified": "^10.0.0"
- }
- },
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
- "dev": true
- },
- "resolve": {
- "version": "1.22.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
- "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
- "dev": true,
- "requires": {
- "is-core-module": "^2.8.1",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- }
- },
- "reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "dev": true
- },
- "rollup": {
- "version": "2.70.2",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.2.tgz",
- "integrity": "sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg==",
- "dev": true,
- "requires": {
- "fsevents": "~2.3.2"
- }
- },
- "rollup-plugin-copy": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/rollup-plugin-copy/-/rollup-plugin-copy-3.4.0.tgz",
- "integrity": "sha512-rGUmYYsYsceRJRqLVlE9FivJMxJ7X6jDlP79fmFkL8sJs7VVMSVyA2yfyL+PGyO/vJs4A87hwhgVfz61njI+uQ==",
- "dev": true,
- "requires": {
- "@types/fs-extra": "^8.0.1",
- "colorette": "^1.1.0",
- "fs-extra": "^8.1.0",
- "globby": "10.0.1",
- "is-plain-object": "^3.0.0"
- }
- },
- "rollup-plugin-dts": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-4.2.1.tgz",
- "integrity": "sha512-eaxQZNUJ5iQcxNGlpJ1CUgG4OSVqWjDZ3nNSWBIoGrpcote2aNphSe1RJOaSYkb8dwn3o+rYm1vvld/5z3EGSQ==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.16.7",
- "magic-string": "^0.26.1"
- },
- "dependencies": {
- "magic-string": {
- "version": "0.26.1",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz",
- "integrity": "sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==",
- "dev": true,
- "requires": {
- "sourcemap-codec": "^1.4.8"
- }
- }
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "sade": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
- "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
- "dev": true,
- "requires": {
- "mri": "^1.1.0"
- }
- },
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true
- },
- "serialize-javascript": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
- "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
- "dev": true,
- "requires": {
- "randombytes": "^2.1.0"
- }
- },
- "slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "sourcemap-codec": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
- "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
- "dev": true
- },
- "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,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "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,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
- "dev": true,
- "optional": true
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true
- },
- "supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=",
- "peer": true
- },
- "trough": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz",
- "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==",
- "dev": true
- },
- "ts-mocha": {
- "version": "9.0.2",
- "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-9.0.2.tgz",
- "integrity": "sha512-WyQjvnzwrrubl0JT7EC1yWmNpcsU3fOuBFfdps30zbmFBgKniSaSOyZMZx+Wq7kytUs5CY+pEbSYEbGfIKnXTw==",
- "dev": true,
- "requires": {
- "ts-node": "7.0.1",
- "tsconfig-paths": "^3.5.0"
- },
- "dependencies": {
- "diff": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
- "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
- "dev": true
- },
- "ts-node": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz",
- "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==",
- "dev": true,
- "requires": {
- "arrify": "^1.0.0",
- "buffer-from": "^1.1.0",
- "diff": "^3.1.0",
- "make-error": "^1.1.1",
- "minimist": "^1.2.0",
- "mkdirp": "^0.5.1",
- "source-map-support": "^0.5.6",
- "yn": "^2.0.0"
- }
- },
- "yn": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz",
- "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=",
- "dev": true
- }
- }
- },
- "ts-node": {
- "version": "10.5.0",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.5.0.tgz",
- "integrity": "sha512-6kEJKwVxAJ35W4akuiysfKwKmjkbYxwQMTBaAxo9KKAx/Yd26mPUyhGz3ji+EsJoAgrLqVsYHNuuYwQe22lbtw==",
- "dev": true,
- "requires": {
- "@cspotcode/source-map-support": "0.7.0",
- "@tsconfig/node10": "^1.0.7",
- "@tsconfig/node12": "^1.0.7",
- "@tsconfig/node14": "^1.0.0",
- "@tsconfig/node16": "^1.0.2",
- "acorn": "^8.4.1",
- "acorn-walk": "^8.1.1",
- "arg": "^4.1.0",
- "create-require": "^1.1.0",
- "diff": "^4.0.1",
- "make-error": "^1.1.1",
- "v8-compile-cache-lib": "^3.0.0",
- "yn": "3.1.1"
- }
- },
- "tsconfig-paths": {
- "version": "3.12.0",
- "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz",
- "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==",
- "dev": true,
- "optional": true,
- "requires": {
- "@types/json5": "^0.0.29",
- "json5": "^1.0.1",
- "minimist": "^1.2.0",
- "strip-bom": "^3.0.0"
- }
- },
- "tslib": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
- "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
- "dev": true,
- "peer": true
- },
- "txm": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/txm/-/txm-8.0.1.tgz",
- "integrity": "sha512-unvGVsgWIP10c3KYrfBMdBWILWsIjnDV4ljO32Juk1qpTzbZCNlpkjGMb+ix6VDH49JKa2V6gSzBnx0gzypp7A==",
- "dev": true,
- "requires": {
- "async": "^3.2.1",
- "diff-match-patch": "^1.0.5",
- "kleur": "^4.1.4",
- "remark-parse": "^10.0.1",
- "supports-color": "^9.1.0",
- "unified": "^10.1.1"
- },
- "dependencies": {
- "supports-color": {
- "version": "9.2.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.1.tgz",
- "integrity": "sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==",
- "dev": true
- }
- }
- },
- "typescript": {
- "version": "4.6.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz",
- "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==",
- "dev": true,
- "peer": true
- },
- "unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dev": true,
- "requires": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "dependencies": {
- "is-plain-obj": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz",
- "integrity": "sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==",
- "dev": true
- }
- }
- },
- "unist-util-stringify-position": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.2.tgz",
- "integrity": "sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==",
- "dev": true,
- "requires": {
- "@types/unist": "^2.0.0"
- }
- },
- "universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
- "dev": true
- },
- "uvu": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.3.tgz",
- "integrity": "sha512-brFwqA3FXzilmtnIyJ+CxdkInkY/i4ErvP7uV0DnUVxQcQ55reuHphorpF+tZoVHK2MniZ/VJzI7zJQoc9T9Yw==",
- "dev": true,
- "requires": {
- "dequal": "^2.0.0",
- "diff": "^5.0.0",
- "kleur": "^4.0.3",
- "sade": "^1.7.3"
- },
- "dependencies": {
- "diff": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
- "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
- "dev": true
- }
- }
- },
- "v8-compile-cache-lib": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz",
- "integrity": "sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==",
- "dev": true
- },
- "vfile": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.2.tgz",
- "integrity": "sha512-w0PLIugRY3Crkgw89TeMvHCzqCs/zpreR31hl4D92y6SOE07+bfJe+dK5Q2akwS+i/c801kzjoOr9gMcTe6IAA==",
- "dev": true,
- "requires": {
- "@types/unist": "^2.0.0",
- "is-buffer": "^2.0.0",
- "unist-util-stringify-position": "^3.0.0",
- "vfile-message": "^3.0.0"
- }
- },
- "vfile-message": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.2.tgz",
- "integrity": "sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA==",
- "dev": true,
- "requires": {
- "@types/unist": "^2.0.0",
- "unist-util-stringify-position": "^3.0.0"
- }
- },
- "webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=",
- "peer": true
- },
- "whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
- "peer": true,
- "requires": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "workerpool": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz",
- "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==",
- "dev": true
- },
- "wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
- },
- "y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true
- },
- "yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
- "dev": true,
- "requires": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
- }
- },
- "yargs-parser": {
- "version": "20.2.4",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
- "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
- "dev": true
- },
- "yargs-unparser": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
- "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
- "dev": true,
- "requires": {
- "camelcase": "^6.0.0",
- "decamelize": "^4.0.0",
- "flat": "^5.0.2",
- "is-plain-obj": "^2.1.0"
- }
- },
- "yn": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
- "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true
- }
}
}
diff --git a/bindings/stronghold-nodejs/package.json b/bindings/stronghold-nodejs/package.json
index 1c411e59b5..8ca2681afa 100644
--- a/bindings/stronghold-nodejs/package.json
+++ b/bindings/stronghold-nodejs/package.json
@@ -21,18 +21,19 @@
},
"license": "Apache-2.0",
"devDependencies": {
- "@napi-rs/cli": "^2.4.2",
- "@rollup/plugin-commonjs": "^21.0.2",
- "@rollup/plugin-typescript": "^8.3.1",
- "@types/node": "^17.0.19",
+ "@napi-rs/cli": "~2.4.2",
+ "@rollup/plugin-commonjs": "^24.0.1",
+ "@rollup/plugin-typescript": "^11.0.0",
+ "@types/mocha": "^10.0.1",
+ "@types/node": "^18.14.6",
"cross-env": "^7.0.3",
- "mocha": "^9.2.1",
- "rollup": "^2.68.0",
+ "mocha": "^10.2.0",
+ "rollup": "^3.18.0",
"rollup-plugin-copy": "^3.4.0",
- "rollup-plugin-dts": "^4.1.0",
- "ts-mocha": "^9.0.2",
- "ts-node": "^10.5.0",
- "txm": "^8.0.1"
+ "ts-mocha": "^10.0.0",
+ "ts-node": "^10.9.1",
+ "txm": "^8.0.1",
+ "typescript": "^4.9.5"
},
"engines": {
"node": ">= 16"
@@ -40,13 +41,14 @@
"scripts": {
"artifacts": "napi artifacts",
"build": "npm run build:napi && npm run build:ts",
- "build:ts": "rollup -c --failAfterWarnings",
+ "build:ts": "npm i --prefix examples/build/rollup-plugin-dts && rollup -c --failAfterWarnings",
"build:napi": "cross-env-shell napi build --platform --release --js napi-dist/napi.js --dts napi.d.ts $NPM_BUILD_NAPI_ARGS napi-dist",
"build:napi:debug": "napi build --platform",
+ "build:examples": "tsc --project ./examples && node ./examples/build/replace_paths tsconfig.json dist resolve",
"prepublishOnly": "napi prepublish -t npm --skip-gh-release",
"create-npm-dir": "napi create-npm-dir --target ./ ",
"test": "npm run test:readme && npm run test:examples",
- "test:examples": "ts-mocha ./examples/src/tests/*.ts --parallel --jobs 4 --retries 3 --timeout 180000 --exit",
+ "test:examples": "npm run build:examples && mocha ./examples/dist/**/tests/*.js --retries 3 --timeout 180000 --exit",
"test:readme": "mocha ./tests/txm_readme.js --retries 3 --timeout 180000 --exit"
},
"peerDependencies": {
diff --git a/bindings/stronghold-nodejs/rollup.config.js b/bindings/stronghold-nodejs/rollup.config.mjs
similarity index 65%
rename from bindings/stronghold-nodejs/rollup.config.js
rename to bindings/stronghold-nodejs/rollup.config.mjs
index d3602ae2cd..e1a364b6a2 100644
--- a/bindings/stronghold-nodejs/rollup.config.js
+++ b/bindings/stronghold-nodejs/rollup.config.mjs
@@ -1,6 +1,7 @@
import typescript from '@rollup/plugin-typescript';
import commonjs from '@rollup/plugin-commonjs';
-import dts from "rollup-plugin-dts";
+// temporary workaround until https://github.com/Swatinem/rollup-plugin-dts/issues/254 is released
+import dts from "./examples/build/rollup-plugin-dts/dist/rollup-plugin-dts.mjs";
import copy from 'rollup-plugin-copy'
export default [{
@@ -12,14 +13,20 @@ export default [{
external: ['@iota/identity-wasm/node', 'fs', 'path'], // so it's not included
plugins: [
typescript(),
- commonjs(),
+ commonjs({
+ ignore: (id) => {
+ // exclude binary files
+ return id.endsWith('.node');
+ },
+ }),
copy({
targets: [
{ src: 'napi-dist/*.node', dest: 'dist' }
]
})
],
-}, {
+},
+{
// path to your declaration files root
input: './dist/index.d.ts',
output: [{ file: 'dist/index.d.ts', format: 'es' }],
diff --git a/identity_did/Cargo.toml b/identity_did/Cargo.toml
index e631dee47e..16106cb533 100644
--- a/identity_did/Cargo.toml
+++ b/identity_did/Cargo.toml
@@ -14,7 +14,7 @@ description = "Agnostic implementation of the Decentralized Identifiers (DID) st
dataurl = { version = "0.1.2", default-features = false, optional = true }
did_url = { version = "0.1", default-features = false, features = ["std", "serde"] }
flate2 = { version = "1.0.23", default-features = false, features = ["rust_backend"], optional = true }
-form_urlencoded = { version = "1.0.1", default-features = false }
+form_urlencoded = { version = "=1.1.0" }
identity_core = { version = "=0.6.1", path = "../identity_core" }
indexmap = { version = "1.7", default-features = false, features = ["std", "serde-1"] }
roaring = { version = "0.9.0", default-features = false, optional = true }
diff --git a/identity_iota_client/Cargo.toml b/identity_iota_client/Cargo.toml
index f02df999dd..aa6522f614 100644
--- a/identity_iota_client/Cargo.toml
+++ b/identity_iota_client/Cargo.toml
@@ -14,7 +14,7 @@ description = "Tangle Client integration for the IOTA DID Method."
async-trait = { version = "0.1", default-features = false }
bee-rest-api = { version = "0.1.7", default-features = false }
brotli = { version = "3.3", default-features = false, features = ["std"] }
-form_urlencoded = { version = "1.0" }
+form_urlencoded = { version = "=1.1.0" }
futures = { version = "0.3" }
identity_core = { version = "=0.6.1", path = "../identity_core", default-features = false }
identity_credential = { version = "=0.6.1", path = "../identity_credential" }