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 + +[![Build Status](https://github.com/Swatinem/rollup-plugin-dts/workflows/CI/badge.svg)](https://github.com/Swatinem/rollup-plugin-dts/actions?workflow=CI) +[![Coverage Status](https://img.shields.io/codecov/c/github/Swatinem/rollup-plugin-dts.svg)](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" }