diff --git a/.gitignore b/.gitignore
index f10862a..7c38bc9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
/.env
+masto_posts.db
\ No newline at end of file
diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml
index 1f65fa8..a81bcfb 100644
--- a/.idea/dataSources.xml
+++ b/.idea/dataSources.xml
@@ -1,12 +1,17 @@
-
+
sqlite.xerial
true
org.sqlite.JDBC
- jdbc:sqlite:$PROJECT_DIR$/masto_posts.db
+ jdbc:sqlite:$PROJECT_DIR$/mastodon_multi_accounts.db
$ProjectFileDir$
+
+
+ file://$APPLICATION_CONFIG_DIR$/jdbc-drivers/Xerial SQLiteJDBC/3.38.0/sqlite-jdbc-3.38.0.jar
+
+
\ No newline at end of file
diff --git a/masto_posts.db b/mastodon_multi_accounts.db
similarity index 55%
rename from masto_posts.db
rename to mastodon_multi_accounts.db
index 91925c2..00fc4e7 100644
Binary files a/masto_posts.db and b/mastodon_multi_accounts.db differ
diff --git a/node_modules/.bin/sshpk-conv b/node_modules/.bin/sshpk-conv
new file mode 120000
index 0000000..a2a295c
--- /dev/null
+++ b/node_modules/.bin/sshpk-conv
@@ -0,0 +1 @@
+../sshpk/bin/sshpk-conv
\ No newline at end of file
diff --git a/node_modules/.bin/sshpk-sign b/node_modules/.bin/sshpk-sign
new file mode 120000
index 0000000..766b9b3
--- /dev/null
+++ b/node_modules/.bin/sshpk-sign
@@ -0,0 +1 @@
+../sshpk/bin/sshpk-sign
\ No newline at end of file
diff --git a/node_modules/.bin/sshpk-verify b/node_modules/.bin/sshpk-verify
new file mode 120000
index 0000000..bfd7e3a
--- /dev/null
+++ b/node_modules/.bin/sshpk-verify
@@ -0,0 +1 @@
+../sshpk/bin/sshpk-verify
\ No newline at end of file
diff --git a/node_modules/.bin/uuid b/node_modules/.bin/uuid
new file mode 120000
index 0000000..b3e45bc
--- /dev/null
+++ b/node_modules/.bin/uuid
@@ -0,0 +1 @@
+../uuid/bin/uuid
\ No newline at end of file
diff --git a/node_modules/.yarn-integrity b/node_modules/.yarn-integrity
index 761ebaf..ca71e28 100644
--- a/node_modules/.yarn-integrity
+++ b/node_modules/.yarn-integrity
@@ -6,21 +6,29 @@
"flags": [],
"linkedModules": [],
"topLevelPatterns": [
+ "@databases/sqlite@^4.0.0",
"cookie-parser@~1.4.4",
"debug@~2.6.9",
"express@~4.16.1",
"http-errors@~1.6.3",
"jade@~1.11.0",
+ "mastodon@^1.2.2",
"morgan@~1.9.1",
"nodemon@^2.0.19",
"sqlite3@^5.0.8"
],
"lockfileEntries": {
+ "@databases/escape-identifier@^1.0.3": "https://registry.yarnpkg.com/@databases/escape-identifier/-/escape-identifier-1.0.3.tgz#17e8ca54ca47135a7fd1a372bce51e2aa6a4aa03",
+ "@databases/sql@^3.2.0": "https://registry.yarnpkg.com/@databases/sql/-/sql-3.2.0.tgz#ac55ddaed5408c98e3891362ac5b70d06d7a89ff",
+ "@databases/sqlite@^4.0.0": "https://registry.yarnpkg.com/@databases/sqlite/-/sqlite-4.0.0.tgz#1b0720556fafc17e61ed26604f57e96c023eb5b5",
+ "@databases/validate-unicode@^1.0.0": "https://registry.yarnpkg.com/@databases/validate-unicode/-/validate-unicode-1.0.0.tgz#9c7680901e82d5c572edead678ac8ad489511ec0",
"@gar/promisify@^1.0.1": "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6",
"@mapbox/node-pre-gyp@^1.0.0": "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz#09a8781a3a036151cdebbe8719d6f8b25d4058bc",
"@npmcli/fs@^1.0.0": "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257",
"@npmcli/move-file@^1.0.1": "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674",
"@tootallnate/once@1": "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82",
+ "@types/node@*": "https://registry.yarnpkg.com/@types/node/-/node-18.0.3.tgz#463fc47f13ec0688a33aec75d078a0541a447199",
+ "@types/sqlite3@^3.1.5": "https://registry.yarnpkg.com/@types/sqlite3/-/sqlite3-3.1.8.tgz#e64310c5841fc01c1a8795d960d951e4cf940296",
"abbrev@1": "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8",
"accepts@~1.3.5": "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e",
"acorn-globals@^1.0.3": "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf",
@@ -30,6 +38,7 @@
"agent-base@^6.0.2": "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77",
"agentkeepalive@^4.1.3": "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717",
"aggregate-error@^3.0.0": "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a",
+ "ajv@^6.12.3": "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4",
"align-text@^0.1.1": "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117",
"align-text@^0.1.3": "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117",
"amdefine@>=0.0.4": "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5",
@@ -40,15 +49,24 @@
"are-we-there-yet@^3.0.0": "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz#ba20bd6b553e31d62fc8c31bd23d22b95734390d",
"array-flatten@1.1.1": "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2",
"asap@~1.0.0": "https://registry.yarnpkg.com/asap/-/asap-1.0.0.tgz#b2a45da5fdfa20b0496fc3768cc27c12fa916a7d",
+ "asn1@~0.2.3": "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d",
+ "assert-plus@1.0.0": "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525",
+ "assert-plus@^1.0.0": "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525",
+ "asynckit@^0.4.0": "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79",
+ "aws-sign2@~0.7.0": "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8",
+ "aws4@^1.8.0": "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59",
"balanced-match@^1.0.0": "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee",
"basic-auth@~2.0.0": "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a",
+ "bcrypt-pbkdf@^1.0.0": "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e",
"binary-extensions@^2.0.0": "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d",
+ "bluebird@^3.1.5": "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f",
"body-parser@1.18.3": "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4",
"brace-expansion@^1.1.7": "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd",
"braces@~3.0.2": "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107",
"bytes@3.0.0": "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048",
"cacache@^15.2.0": "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb",
"camelcase@^1.0.2": "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39",
+ "caseless@~0.12.0": "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc",
"center-align@^0.1.1": "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad",
"character-parser@1.2.1": "https://registry.yarnpkg.com/character-parser/-/character-parser-1.2.1.tgz#c0dde4ab182713b919b970959a123ecc1a30fcd6",
"chokidar@^3.5.2": "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd",
@@ -58,6 +76,8 @@
"cliui@^2.1.0": "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1",
"color-support@^1.1.2": "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2",
"color-support@^1.1.3": "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2",
+ "combined-stream@^1.0.6": "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f",
+ "combined-stream@~1.0.6": "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f",
"commander@2.8.x": "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4",
"commander@~2.6.0": "https://registry.yarnpkg.com/commander/-/commander-2.6.0.tgz#9df7e52fb2a0cb0fb89058ee80c3104225f37e1d",
"concat-map@0.0.1": "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b",
@@ -70,9 +90,11 @@
"cookie-signature@1.0.6": "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c",
"cookie@0.3.1": "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb",
"cookie@0.4.1": "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1",
+ "core-util-is@1.0.2": "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7",
"css-parse@1.0.4": "https://registry.yarnpkg.com/css-parse/-/css-parse-1.0.4.tgz#38b0503fbf9da9f54e9c1dbda60e145c77117bdd",
"css-stringify@1.0.5": "https://registry.yarnpkg.com/css-stringify/-/css-stringify-1.0.5.tgz#b0d042946db2953bb9d292900a6cb5f6d0122031",
"css@~1.0.8": "https://registry.yarnpkg.com/css/-/css-1.0.8.tgz#9386811ca82bccc9ee7fb5a732b1e2a317c8a3e7",
+ "dashdash@^1.12.0": "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0",
"debug@2.6.9": "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f",
"debug@4": "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865",
"debug@^3.2.7": "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a",
@@ -80,11 +102,13 @@
"debug@^4.3.3": "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865",
"debug@~2.6.9": "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f",
"decamelize@^1.0.0": "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290",
+ "delayed-stream@~1.0.0": "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619",
"delegates@^1.0.0": "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a",
"depd@^1.1.2": "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9",
"depd@~1.1.2": "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9",
"destroy@~1.0.4": "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80",
"detect-libc@^2.0.0": "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd",
+ "ecc-jsbn@~0.1.1": "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9",
"ee-first@1.1.1": "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d",
"emoji-regex@^8.0.0": "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37",
"encodeurl@~1.0.2": "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59",
@@ -94,8 +118,15 @@
"escape-html@~1.0.3": "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988",
"etag@~1.8.1": "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887",
"express@~4.16.1": "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e",
+ "extend@~3.0.2": "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa",
+ "extsprintf@1.3.0": "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05",
+ "extsprintf@^1.2.0": "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07",
+ "fast-deep-equal@^3.1.1": "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525",
+ "fast-json-stable-stringify@^2.0.0": "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633",
"fill-range@^7.0.1": "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40",
"finalhandler@1.1.1": "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105",
+ "forever-agent@~0.6.1": "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91",
+ "form-data@~2.3.2": "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6",
"forwarded@0.2.0": "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811",
"fresh@0.5.2": "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7",
"fs-minipass@^2.0.0": "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb",
@@ -103,11 +134,14 @@
"fsevents@~2.3.2": "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a",
"gauge@^3.0.0": "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395",
"gauge@^4.0.3": "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce",
+ "getpass@^0.1.1": "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa",
"glob-parent@~5.1.2": "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4",
"glob@^7.1.3": "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b",
"glob@^7.1.4": "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b",
"graceful-fs@^4.2.6": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c",
"graceful-readlink@>= 1.0.0": "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725",
+ "har-schema@^2.0.0": "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92",
+ "har-validator@~5.1.3": "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd",
"has-flag@^3.0.0": "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd",
"has-unicode@^2.0.1": "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9",
"http-cache-semantics@^4.1.0": "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390",
@@ -115,6 +149,7 @@
"http-errors@~1.6.2": "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d",
"http-errors@~1.6.3": "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d",
"http-proxy-agent@^4.0.1": "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a",
+ "http-signature@~1.2.0": "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1",
"https-proxy-agent@^5.0.0": "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6",
"humanize-ms@^1.2.1": "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed",
"iconv-lite@0.4.23": "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63",
@@ -139,8 +174,15 @@
"is-number@^7.0.0": "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b",
"is-promise@^2.0.0": "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1",
"is-promise@~1": "https://registry.yarnpkg.com/is-promise/-/is-promise-1.0.1.tgz#31573761c057e33c2e91aab9e96da08cefbe76e5",
+ "is-typedarray@~1.0.0": "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a",
"isexe@^2.0.0": "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10",
+ "isstream@~0.1.2": "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a",
"jade@~1.11.0": "https://registry.yarnpkg.com/jade/-/jade-1.11.0.tgz#9c80e538c12d3fb95c8d9bb9559fa0cc040405fd",
+ "jsbn@~0.1.0": "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513",
+ "json-schema-traverse@^0.4.1": "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660",
+ "json-schema@0.4.0": "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5",
+ "json-stringify-safe@~5.0.1": "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb",
+ "jsprim@^1.2.2": "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb",
"jstransformer@0.0.2": "https://registry.yarnpkg.com/jstransformer/-/jstransformer-0.0.2.tgz#7aae29a903d196cfa0973d885d3e47947ecd76ab",
"kind-of@^3.0.2": "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64",
"lazy-cache@^1.0.3": "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e",
@@ -148,13 +190,17 @@
"lru-cache@^6.0.0": "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94",
"make-dir@^3.1.0": "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f",
"make-fetch-happen@^9.1.0": "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968",
+ "mastodon@^1.2.2": "https://registry.yarnpkg.com/mastodon/-/mastodon-1.2.2.tgz#e3a99b21af7ad37b20a5ca6583c9d76ac7716fe5",
"media-typer@0.3.0": "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748",
"merge-descriptors@1.0.1": "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61",
"methods@~1.1.2": "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee",
"mime-db@1.52.0": "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70",
+ "mime-types@^2.1.12": "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a",
+ "mime-types@~2.1.19": "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a",
"mime-types@~2.1.24": "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a",
"mime-types@~2.1.34": "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a",
"mime@1.4.1": "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6",
+ "mime@^1.3.4": "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1",
"minimatch@^3.0.4": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b",
"minimatch@^3.1.1": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b",
"minimist@^1.2.6": "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44",
@@ -190,6 +236,7 @@
"normalize-path@~3.0.0": "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65",
"npmlog@^5.0.1": "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0",
"npmlog@^6.0.0": "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830",
+ "oauth-sign@~0.9.0": "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455",
"object-assign@^4.1.1": "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863",
"on-finished@~2.3.0": "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947",
"on-headers@~1.0.1": "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f",
@@ -199,27 +246,39 @@
"parseurl@~1.3.2": "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4",
"path-is-absolute@^1.0.0": "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f",
"path-to-regexp@0.1.7": "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c",
+ "performance-now@^2.1.0": "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b",
"picomatch@^2.0.4": "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42",
"picomatch@^2.2.1": "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42",
"promise-inflight@^1.0.1": "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3",
"promise-retry@^2.0.1": "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22",
+ "promise@^6.0.0": "https://registry.yarnpkg.com/promise/-/promise-6.1.0.tgz#2ce729f6b94b45c26891ad0602c5c90e04c6eef6",
"promise@^6.0.1": "https://registry.yarnpkg.com/promise/-/promise-6.1.0.tgz#2ce729f6b94b45c26891ad0602c5c90e04c6eef6",
"promise@~2.0": "https://registry.yarnpkg.com/promise/-/promise-2.0.0.tgz#46648aa9d605af5d2e70c3024bf59436da02b80e",
"proxy-addr@~2.0.4": "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025",
+ "psl@^1.1.28": "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7",
"pstree.remy@^1.1.8": "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a",
+ "punycode@^2.1.0": "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec",
+ "punycode@^2.1.1": "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec",
"qs@6.5.2": "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36",
+ "qs@~6.5.2": "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad",
"range-parser@~1.2.0": "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031",
"raw-body@2.3.3": "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3",
"readable-stream@^3.6.0": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198",
"readdirp@~3.6.0": "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7",
"repeat-string@^1.5.2": "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637",
+ "request@^2.68.0": "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3",
"retry@^0.12.0": "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b",
"right-align@^0.1.1": "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef",
"rimraf@^3.0.2": "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a",
"safe-buffer@5.1.2": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d",
+ "safe-buffer@^5.0.1": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6",
+ "safe-buffer@^5.1.2": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6",
"safe-buffer@~5.2.0": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6",
"safer-buffer@>= 2.1.2 < 3": "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a",
"safer-buffer@>= 2.1.2 < 3.0.0": "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a",
+ "safer-buffer@^2.0.2": "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a",
+ "safer-buffer@^2.1.0": "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a",
+ "safer-buffer@~2.1.0": "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a",
"semver@^5.7.1": "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7",
"semver@^6.0.0": "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d",
"semver@^7.3.5": "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f",
@@ -237,7 +296,9 @@
"source-map@0.4.x": "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b",
"source-map@~0.1.7": "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346",
"source-map@~0.5.1": "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc",
+ "sqlite3@^5.0.0": "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.0.8.tgz#b4b7eab7156debec80866ef492e01165b4688272",
"sqlite3@^5.0.8": "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.0.8.tgz#b4b7eab7156debec80866ef492e01165b4688272",
+ "sshpk@^1.7.0": "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5",
"ssri@^8.0.0": "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af",
"ssri@^8.0.1": "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af",
"statuses@>= 1.4.0 < 2": "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c",
@@ -250,10 +311,15 @@
"tar@^6.0.2": "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621",
"tar@^6.1.11": "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621",
"tar@^6.1.2": "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621",
+ "then-queue@^1.3.0": "https://registry.yarnpkg.com/then-queue/-/then-queue-1.3.0.tgz#19f63c2a93335ba54ea942f7eca3d6b8899015fb",
"to-regex-range@^5.0.1": "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4",
"touch@^3.1.0": "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b",
+ "tough-cookie@~2.5.0": "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2",
"tr46@~0.0.3": "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a",
"transformers@2.1.0": "https://registry.yarnpkg.com/transformers/-/transformers-2.1.0.tgz#5d23cb35561dd85dc67fb8482309b47d53cce9a7",
+ "tunnel-agent@^0.6.0": "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd",
+ "tweetnacl@^0.14.3": "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64",
+ "tweetnacl@~0.14.0": "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64",
"type-is@~1.6.16": "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131",
"uglify-js@^2.4.19": "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd",
"uglify-js@~2.2.5": "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.2.5.tgz#a6e02a70d839792b9780488b7b8b184c095c99c7",
@@ -263,9 +329,12 @@
"unique-slug@^2.0.0": "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c",
"unpipe@1.0.0": "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec",
"unpipe@~1.0.0": "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec",
+ "uri-js@^4.2.2": "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e",
"util-deprecate@^1.0.1": "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf",
"utils-merge@1.0.1": "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713",
+ "uuid@^3.3.2": "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee",
"vary@~1.1.2": "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc",
+ "verror@1.10.0": "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400",
"void-elements@~2.0.1": "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec",
"webidl-conversions@^3.0.0": "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871",
"whatwg-url@^5.0.0": "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d",
diff --git a/node_modules/@databases/escape-identifier/LICENSE.md b/node_modules/@databases/escape-identifier/LICENSE.md
new file mode 100644
index 0000000..a2b8362
--- /dev/null
+++ b/node_modules/@databases/escape-identifier/LICENSE.md
@@ -0,0 +1,21 @@
+# The MIT License (MIT)
+
+Copyright (c) 2019 Forbes Lindesay
+
+> Permission is hereby granted, free of charge, to any person obtaining a copy
+> of this software and associated documentation files (the "Software"), to deal
+> in the Software without restriction, including without limitation the rights
+> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+> copies of the Software, and to permit persons to whom the Software is
+> furnished to do so, subject to the following conditions:
+>
+> The above copyright notice and this permission notice shall be included in
+> all copies or substantial portions of the Software.
+>
+> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+> SOFTWARE.
\ No newline at end of file
diff --git a/node_modules/@databases/escape-identifier/README.md b/node_modules/@databases/escape-identifier/README.md
new file mode 100644
index 0000000..d448c33
--- /dev/null
+++ b/node_modules/@databases/escape-identifier/README.md
@@ -0,0 +1,3 @@
+# @databases/escape-identifier
+
+For documentation, see https://www.atdatabases.org/docs/escape-identifier
\ No newline at end of file
diff --git a/node_modules/@databases/escape-identifier/lib/__tests__/index.test.d.ts b/node_modules/@databases/escape-identifier/lib/__tests__/index.test.d.ts
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/@databases/escape-identifier/lib/__tests__/index.test.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/@databases/escape-identifier/lib/__tests__/index.test.js b/node_modules/@databases/escape-identifier/lib/__tests__/index.test.js
new file mode 100644
index 0000000..831e6ae
--- /dev/null
+++ b/node_modules/@databases/escape-identifier/lib/__tests__/index.test.js
@@ -0,0 +1,41 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const __1 = require("..");
+test(`escapePostgresIdentifier`, () => {
+ const e = (id) => expect((0, __1.escapePostgresIdentifier)(id));
+ e(`foo`).toBe('"foo"');
+ e(`foo_'bar'_BAZ`).toBe('"foo_\'bar\'_BAZ"');
+ e(`foo bar bing`).toBe('"foo bar bing"');
+ e(`hello "world"`).toBe('"hello ""world"""');
+ // {
+ // const start = Date.now();
+ // for (let i = 0; i < 10_000_000; i++) {
+ // escapePostgresIdentifier(`hello "world"`);
+ // }
+ // const end = Date.now();
+ // console.log(end - start);
+ // }
+ // {
+ // const start = Date.now();
+ // for (let i = 0; i < 10_000_000; i++) {
+ // escapePostgresIdentifier(`hello_world`);
+ // }
+ // const end = Date.now();
+ // console.log(end - start);
+ // }
+});
+test(`escapeMySqlIdentifier`, () => {
+ const e = (id) => expect((0, __1.escapeMySqlIdentifier)(id));
+ e(`foo`).toBe('`foo`');
+ e(`foo_'bar'_BAZ`).toBe("`foo_'bar'_BAZ`");
+ e(`foo bar bing`).toBe('`foo bar bing`');
+ e(`hello \`world\``).toBe('`hello ``world```');
+});
+test(`escapeSQLiteIdentifier`, () => {
+ const e = (id) => expect((0, __1.escapeSQLiteIdentifier)(id));
+ e(`foo`).toBe('"foo"');
+ e(`foo_'bar'_BAZ`).toBe('"foo_\'bar\'_BAZ"');
+ e(`foo bar bing`).toBe('"foo bar bing"');
+ e(`hello "world"`).toBe('"hello ""world"""');
+});
+//# sourceMappingURL=index.test.js.map
\ No newline at end of file
diff --git a/node_modules/@databases/escape-identifier/lib/__tests__/index.test.js.map b/node_modules/@databases/escape-identifier/lib/__tests__/index.test.js.map
new file mode 100644
index 0000000..63494ab
--- /dev/null
+++ b/node_modules/@databases/escape-identifier/lib/__tests__/index.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/__tests__/index.test.ts"],"names":[],"mappings":";;AAAA,0BAIY;AAEZ,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACpC,MAAM,CAAC,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,MAAM,CAAC,IAAA,4BAAwB,EAAC,EAAE,CAAC,CAAC,CAAC;IAE/D,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC7C,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACzC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC7C,IAAI;IACJ,8BAA8B;IAC9B,2CAA2C;IAC3C,iDAAiD;IACjD,MAAM;IACN,4BAA4B;IAC5B,8BAA8B;IAC9B,IAAI;IACJ,IAAI;IACJ,8BAA8B;IAC9B,2CAA2C;IAC3C,+CAA+C;IAC/C,MAAM;IACN,4BAA4B;IAC5B,8BAA8B;IAC9B,IAAI;AACN,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACjC,MAAM,CAAC,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,MAAM,CAAC,IAAA,yBAAqB,EAAC,EAAE,CAAC,CAAC,CAAC;IAE5D,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC3C,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACzC,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE;IAClC,MAAM,CAAC,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,MAAM,CAAC,IAAA,0BAAsB,EAAC,EAAE,CAAC,CAAC,CAAC;IAE7D,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC7C,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACzC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@databases/escape-identifier/lib/index.d.ts b/node_modules/@databases/escape-identifier/lib/index.d.ts
new file mode 100644
index 0000000..0fa0557
--- /dev/null
+++ b/node_modules/@databases/escape-identifier/lib/index.d.ts
@@ -0,0 +1,22 @@
+/**
+ * Escapes a Postgres identifier.
+ *
+ * https://www.postgresql.org/docs/9.1/sql-syntax-lexical.html
+ */
+export declare function escapePostgresIdentifier(str: string, { extended }?: {
+ extended?: boolean;
+}): string;
+/**
+ * Escapes a MySQL identifier.
+ *
+ * https://dev.mysql.com/doc/refman/5.7/en/identifiers.html
+ */
+export declare function escapeMySqlIdentifier(str: string, { extended }?: {
+ extended?: boolean;
+}): string;
+/**
+ * Escapes an SQLite identifier.
+ *
+ * https://sqlite.org/lang_keywords.html
+ */
+export declare function escapeSQLiteIdentifier(str: string): string;
diff --git a/node_modules/@databases/escape-identifier/lib/index.js b/node_modules/@databases/escape-identifier/lib/index.js
new file mode 100644
index 0000000..c9b2899
--- /dev/null
+++ b/node_modules/@databases/escape-identifier/lib/index.js
@@ -0,0 +1,93 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.escapeSQLiteIdentifier = exports.escapeMySqlIdentifier = exports.escapePostgresIdentifier = void 0;
+const validate_unicode_1 = require("@databases/validate-unicode");
+/**
+ * Escapes a Postgres identifier.
+ *
+ * https://www.postgresql.org/docs/9.1/sql-syntax-lexical.html
+ */
+function escapePostgresIdentifier(str, { extended = false } = {}) {
+ (0, validate_unicode_1.default)(str);
+ minLength(str, 'Postgres');
+ maxLength(str, 60, 'Postgres', 'https://www.postgresql.org/docs/9.3/sql-syntax-lexical.html');
+ if (extended) {
+ assertUnicode(str, 'Postgres');
+ }
+ else {
+ assertAscii(str, 'Postgres', true);
+ }
+ return quoteString(str, `"`);
+}
+exports.escapePostgresIdentifier = escapePostgresIdentifier;
+/**
+ * Escapes a MySQL identifier.
+ *
+ * https://dev.mysql.com/doc/refman/5.7/en/identifiers.html
+ */
+function escapeMySqlIdentifier(str, { extended = false } = {}) {
+ (0, validate_unicode_1.default)(str);
+ minLength(str, 'MySQL');
+ maxLength(str, 64, 'MySQL', 'http://dev.mysql.com/doc/refman/5.7/en/identifiers.html');
+ if (str[str.length - 1] === ' ') {
+ throw new Error('MySQL identifiers may not end in whitespace');
+ }
+ if (extended) {
+ // U+0001 .. U+007F
+ // U+0080 .. U+FFFF
+ assertUnicode(str, 'MySQL');
+ }
+ else {
+ // U+0001 .. U+007F
+ assertAscii(str, 'MySQL', true);
+ }
+ return quoteString(str, '`');
+}
+exports.escapeMySqlIdentifier = escapeMySqlIdentifier;
+/**
+ * Escapes an SQLite identifier.
+ *
+ * https://sqlite.org/lang_keywords.html
+ */
+function escapeSQLiteIdentifier(str) {
+ (0, validate_unicode_1.default)(str);
+ minLength(str, 'SQLite');
+ if (str.length > 63) {
+ throw new Error('SQLite identifiers are limited to 63 characters in @databases.');
+ }
+ assertAscii(str, 'SQLite', false);
+ return quoteString(str, `"`);
+}
+exports.escapeSQLiteIdentifier = escapeSQLiteIdentifier;
+function quoteString(str, quoteChar) {
+ if (!str.includes(quoteChar))
+ return quoteChar + str + quoteChar;
+ return (quoteChar + str.split(quoteChar).join(quoteChar + quoteChar) + quoteChar);
+}
+const NON_ASCII = /[^\u0001-\u007f]/;
+function assertAscii(str, db, unicodeAvailable) {
+ if (NON_ASCII.test(str)) {
+ throw new Error(`${db} identifiers must only contain ASCII characters${unicodeAvailable
+ ? ` (to use unicode, pass {extended: true} when escaping the identifier)`
+ : ``}`);
+ }
+}
+const NON_UNICODE = /[^\u0001-\uffff]/;
+function assertUnicode(str, db) {
+ // U+0001 .. U+007F
+ // U+0080 .. U+FFFF
+ if (NON_UNICODE.test(str)) {
+ throw new Error(`${db} identifiers must only contain characters in the range: U+0001 .. U+FFFF`);
+ }
+}
+function minLength(str, db) {
+ if (!str) {
+ throw new Error(`${db} identifiers must be at least 1 character long.`);
+ }
+}
+function maxLength(str, length, db, ref) {
+ if (str.length > length) {
+ throw new Error(`${db} identifiers must not be longer than ${length} characters. ${str}`);
+ }
+}
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@databases/escape-identifier/lib/index.js.map b/node_modules/@databases/escape-identifier/lib/index.js.map
new file mode 100644
index 0000000..ab6fbb7
--- /dev/null
+++ b/node_modules/@databases/escape-identifier/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,kEAA6D;AAE7D;;;;GAIG;AACH,SAAgB,wBAAwB,CACtC,GAAW,EACX,EAAC,QAAQ,GAAG,KAAK,KAA0B,EAAE;IAE7C,IAAA,0BAAkB,EAAC,GAAG,CAAC,CAAC;IACxB,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC3B,SAAS,CACP,GAAG,EACH,EAAE,EACF,UAAU,EACV,6DAA6D,CAC9D,CAAC;IAEF,IAAI,QAAQ,EAAE;QACZ,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;KAChC;SAAM;QACL,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;KACpC;IAED,OAAO,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AApBD,4DAoBC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CACnC,GAAW,EACX,EAAC,QAAQ,GAAG,KAAK,KAA0B,EAAE;IAE7C,IAAA,0BAAkB,EAAC,GAAG,CAAC,CAAC;IACxB,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACxB,SAAS,CACP,GAAG,EACH,EAAE,EACF,OAAO,EACP,yDAAyD,CAC1D,CAAC;IAEF,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;KAChE;IAED,IAAI,QAAQ,EAAE;QACZ,mBAAmB;QACnB,mBAAmB;QACnB,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;KAC7B;SAAM;QACL,mBAAmB;QACnB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;KACjC;IAED,OAAO,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AA3BD,sDA2BC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,GAAW;IAChD,IAAA,0BAAkB,EAAC,GAAG,CAAC,CAAC;IACxB,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACzB,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE;QACnB,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;KACH;IAED,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAElC,OAAO,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAZD,wDAYC;AAED,SAAS,WAAW,CAAC,GAAW,EAAE,SAAiB;IACjD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,GAAG,GAAG,GAAG,SAAS,CAAC;IACjE,OAAO,CACL,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,SAAS,CACzE,CAAC;AACJ,CAAC;AAED,MAAM,SAAS,GAAG,kBAAkB,CAAC;AACrC,SAAS,WAAW,CAAC,GAAW,EAAE,EAAU,EAAE,gBAAyB;IACrE,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACvB,MAAM,IAAI,KAAK,CACb,GAAG,EAAE,kDACH,gBAAgB;YACd,CAAC,CAAC,uEAAuE;YACzE,CAAC,CAAC,EACN,EAAE,CACH,CAAC;KACH;AACH,CAAC;AAED,MAAM,WAAW,GAAG,kBAAkB,CAAC;AACvC,SAAS,aAAa,CAAC,GAAW,EAAE,EAAU;IAC5C,mBAAmB;IACnB,mBAAmB;IACnB,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACzB,MAAM,IAAI,KAAK,CACb,GAAG,EAAE,0EAA0E,CAChF,CAAC;KACH;AACH,CAAC;AAED,SAAS,SAAS,CAAC,GAAW,EAAE,EAAU;IACxC,IAAI,CAAC,GAAG,EAAE;QACR,MAAM,IAAI,KAAK,CAAC,GAAG,EAAE,iDAAiD,CAAC,CAAC;KACzE;AACH,CAAC;AACD,SAAS,SAAS,CAAC,GAAW,EAAE,MAAc,EAAE,EAAU,EAAE,GAAW;IACrE,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE;QACvB,MAAM,IAAI,KAAK,CACb,GAAG,EAAE,wCAAwC,MAAM,gBAAgB,GAAG,EAAE,CACzE,CAAC;KACH;AACH,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@databases/escape-identifier/lib/tsconfig.tsbuildinfo b/node_modules/@databases/escape-identifier/lib/tsconfig.tsbuildinfo
new file mode 100644
index 0000000..914c93c
--- /dev/null
+++ b/node_modules/@databases/escape-identifier/lib/tsconfig.tsbuildinfo
@@ -0,0 +1 @@
+{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../validate-unicode/lib/index.d.ts","../src/index.ts","../src/__tests__/index.test.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/big.js/index.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/querystring/decode.d.ts","../../../node_modules/querystring/encode.d.ts","../../../node_modules/querystring/index.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/cosmiconfig/index.d.ts","../../../node_modules/@types/cross-spawn/index.d.ts","../../../node_modules/@types/cuid/index.d.ts","../../../node_modules/@types/deep-equal/index.d.ts","../../../node_modules/@types/github-slugger/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/glob/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/rxjs/internal/Subscription.d.ts","../../../node_modules/rxjs/internal/types.d.ts","../../../node_modules/rxjs/internal/Subscriber.d.ts","../../../node_modules/rxjs/internal/Operator.d.ts","../../../node_modules/rxjs/internal/observable/iif.d.ts","../../../node_modules/rxjs/internal/observable/throwError.d.ts","../../../node_modules/rxjs/internal/Observable.d.ts","../../../node_modules/rxjs/internal/Subject.d.ts","../../../node_modules/rxjs/internal/observable/ConnectableObservable.d.ts","../../../node_modules/rxjs/internal/operators/groupBy.d.ts","../../../node_modules/rxjs/internal/symbol/observable.d.ts","../../../node_modules/rxjs/internal/BehaviorSubject.d.ts","../../../node_modules/rxjs/internal/ReplaySubject.d.ts","../../../node_modules/rxjs/internal/AsyncSubject.d.ts","../../../node_modules/rxjs/internal/Scheduler.d.ts","../../../node_modules/rxjs/internal/scheduler/Action.d.ts","../../../node_modules/rxjs/internal/scheduler/AsyncScheduler.d.ts","../../../node_modules/rxjs/internal/scheduler/AsyncAction.d.ts","../../../node_modules/rxjs/internal/scheduler/AsapScheduler.d.ts","../../../node_modules/rxjs/internal/scheduler/asap.d.ts","../../../node_modules/rxjs/internal/scheduler/async.d.ts","../../../node_modules/rxjs/internal/scheduler/QueueScheduler.d.ts","../../../node_modules/rxjs/internal/scheduler/queue.d.ts","../../../node_modules/rxjs/internal/scheduler/AnimationFrameScheduler.d.ts","../../../node_modules/rxjs/internal/scheduler/animationFrame.d.ts","../../../node_modules/rxjs/internal/scheduler/VirtualTimeScheduler.d.ts","../../../node_modules/rxjs/internal/Notification.d.ts","../../../node_modules/rxjs/internal/util/pipe.d.ts","../../../node_modules/rxjs/internal/util/noop.d.ts","../../../node_modules/rxjs/internal/util/identity.d.ts","../../../node_modules/rxjs/internal/util/isObservable.d.ts","../../../node_modules/rxjs/internal/util/ArgumentOutOfRangeError.d.ts","../../../node_modules/rxjs/internal/util/EmptyError.d.ts","../../../node_modules/rxjs/internal/util/ObjectUnsubscribedError.d.ts","../../../node_modules/rxjs/internal/util/UnsubscriptionError.d.ts","../../../node_modules/rxjs/internal/util/TimeoutError.d.ts","../../../node_modules/rxjs/internal/observable/bindCallback.d.ts","../../../node_modules/rxjs/internal/observable/bindNodeCallback.d.ts","../../../node_modules/rxjs/internal/InnerSubscriber.d.ts","../../../node_modules/rxjs/internal/OuterSubscriber.d.ts","../../../node_modules/rxjs/internal/observable/combineLatest.d.ts","../../../node_modules/rxjs/internal/observable/concat.d.ts","../../../node_modules/rxjs/internal/observable/defer.d.ts","../../../node_modules/rxjs/internal/observable/empty.d.ts","../../../node_modules/rxjs/internal/observable/forkJoin.d.ts","../../../node_modules/rxjs/internal/observable/from.d.ts","../../../node_modules/rxjs/internal/observable/fromEvent.d.ts","../../../node_modules/rxjs/internal/observable/fromEventPattern.d.ts","../../../node_modules/rxjs/internal/observable/generate.d.ts","../../../node_modules/rxjs/internal/observable/interval.d.ts","../../../node_modules/rxjs/internal/observable/merge.d.ts","../../../node_modules/rxjs/internal/observable/never.d.ts","../../../node_modules/rxjs/internal/observable/of.d.ts","../../../node_modules/rxjs/internal/observable/onErrorResumeNext.d.ts","../../../node_modules/rxjs/internal/observable/pairs.d.ts","../../../node_modules/rxjs/internal/observable/partition.d.ts","../../../node_modules/rxjs/internal/observable/race.d.ts","../../../node_modules/rxjs/internal/observable/range.d.ts","../../../node_modules/rxjs/internal/observable/timer.d.ts","../../../node_modules/rxjs/internal/observable/using.d.ts","../../../node_modules/rxjs/internal/observable/zip.d.ts","../../../node_modules/rxjs/internal/scheduled/scheduled.d.ts","../../../node_modules/rxjs/internal/config.d.ts","../../../node_modules/rxjs/index.d.ts","../../../node_modules/@types/through/index.d.ts","../../../node_modules/@types/inquirer/lib/objects/choice.d.ts","../../../node_modules/@types/inquirer/lib/objects/separator.d.ts","../../../node_modules/@types/inquirer/lib/objects/choices.d.ts","../../../node_modules/@types/inquirer/lib/utils/screen-manager.d.ts","../../../node_modules/@types/inquirer/lib/prompts/base.d.ts","../../../node_modules/@types/inquirer/lib/utils/paginator.d.ts","../../../node_modules/@types/inquirer/lib/prompts/checkbox.d.ts","../../../node_modules/@types/inquirer/lib/prompts/confirm.d.ts","../../../node_modules/@types/inquirer/lib/prompts/editor.d.ts","../../../node_modules/@types/inquirer/lib/prompts/expand.d.ts","../../../node_modules/@types/inquirer/lib/prompts/input.d.ts","../../../node_modules/@types/inquirer/lib/prompts/list.d.ts","../../../node_modules/@types/inquirer/lib/prompts/number.d.ts","../../../node_modules/@types/inquirer/lib/prompts/password.d.ts","../../../node_modules/@types/inquirer/lib/prompts/rawlist.d.ts","../../../node_modules/@types/inquirer/lib/ui/baseUI.d.ts","../../../node_modules/@types/inquirer/lib/ui/bottom-bar.d.ts","../../../node_modules/@types/inquirer/lib/ui/prompt.d.ts","../../../node_modules/@types/inquirer/lib/utils/events.d.ts","../../../node_modules/@types/inquirer/lib/utils/readline.d.ts","../../../node_modules/@types/inquirer/lib/utils/utils.d.ts","../../../node_modules/@types/inquirer/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/jest-diff/build/cleanupSemantic.d.ts","../../../node_modules/jest-diff/build/types.d.ts","../../../node_modules/jest-diff/build/diffLines.d.ts","../../../node_modules/jest-diff/build/printDiffs.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/pretty-format/build/types.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/mdast/index.d.ts","../../../node_modules/@types/mkdirp/index.d.ts","../../../node_modules/@types/ms/index.d.ts","../../../node_modules/@types/mysql/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/parse-json/index.d.ts","../../../node_modules/@types/pluralize/index.d.ts","../../../node_modules/@types/prettier/index.d.ts","../../../node_modules/@types/prop-types/index.d.ts","../../../node_modules/@types/react/global.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@types/scheduler/tracing.d.ts","../../../node_modules/@types/react/index.d.ts","../../../node_modules/@types/rimraf/index.d.ts","../../../node_modules/@types/scheduler/index.d.ts","../../../node_modules/@types/semver/classes/semver.d.ts","../../../node_modules/@types/semver/functions/parse.d.ts","../../../node_modules/@types/semver/functions/valid.d.ts","../../../node_modules/@types/semver/functions/clean.d.ts","../../../node_modules/@types/semver/functions/inc.d.ts","../../../node_modules/@types/semver/functions/diff.d.ts","../../../node_modules/@types/semver/functions/major.d.ts","../../../node_modules/@types/semver/functions/minor.d.ts","../../../node_modules/@types/semver/functions/patch.d.ts","../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../node_modules/@types/semver/functions/compare.d.ts","../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../node_modules/@types/semver/functions/sort.d.ts","../../../node_modules/@types/semver/functions/rsort.d.ts","../../../node_modules/@types/semver/functions/gt.d.ts","../../../node_modules/@types/semver/functions/lt.d.ts","../../../node_modules/@types/semver/functions/eq.d.ts","../../../node_modules/@types/semver/functions/neq.d.ts","../../../node_modules/@types/semver/functions/gte.d.ts","../../../node_modules/@types/semver/functions/lte.d.ts","../../../node_modules/@types/semver/functions/cmp.d.ts","../../../node_modules/@types/semver/functions/coerce.d.ts","../../../node_modules/@types/semver/classes/comparator.d.ts","../../../node_modules/@types/semver/classes/range.d.ts","../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../node_modules/@types/semver/ranges/valid.d.ts","../../../node_modules/@types/semver/ranges/outside.d.ts","../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../node_modules/@types/semver/ranges/subset.d.ts","../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../node_modules/@types/semver/index.d.ts","../../../node_modules/@types/sqlite3/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/uppercamelcase/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"aa9fb4c70f369237c2f45f9d969c9a59e0eae9a192962eb48581fe864aa609db","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"e54c8715a4954cfdc66cd69489f2b725c09ebf37492dbd91cff0a1688b1159e8","affectsGlobalScope":true},{"version":"51b8b27c21c066bf877646e320bf6a722b80d1ade65e686923cd9d4494aef1ca","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"2c8c5ee58f30e7c944e04ab1fb5506fdbb4dd507c9efa6972cf4b91cec90c503","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"1b3fe904465430e030c93239a348f05e1be80640d91f2f004c3512c2c2c89f34","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"4632665b87204bb1caa8b44d165bce0c50dfab177df5b561b345a567cabacf9a","affectsGlobalScope":true},"a0aae06a0bdebd3106ede6f864ba0c5d94ce64cdde938d55825b5a850479b29a","80eeb9c3febb1013666c56eb5d1a613a068250ebafa9cb9a81b542c1cd47723f","a9ef2787de854add3a540914ea717b86be454f56b248754a00d784810283fe84","98f40132aab59240e3daa408377a6f779aa81f4340f4451959cd2eba3750e456","8dfed5c91ad36e69e6da6b7e49be929d4e19666db2b651aa839c485170a2902c","4aaf84a5ac87bad3211f041fab85de5cc42e5954c3ed56842faf6f08167e6202","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","3b043cf9a81854a72963fdb57d1884fc4da1cf5be69b5e0a4c5b751e58cb6d88","71c56bdaa82d7ce75a72d3c06c04fe10becec09bd9c4ef21776a2a055d3f428e","23a6a8de10b40eb59194c822e6d6bfa43c88d45792283ae63f42950736931f27","d555cd63a3fc837840db192596273fdf52fb28092b0a33bec98e89a0334b3a4c",{"version":"3e432cdf56538889e5742d388cdf03d670bfb17f4547dbbb1daf90701ec790d5","affectsGlobalScope":true},"85d545d430795d54a8b2896f67f9aeb7bf19fd74a1469ae0627311eb72f0dfa2","a473cf45c3d9809518f8af913312139d9f4db6887dc554e0d06d0f4e52722e6b","10b3076ac94d93d107062c0874fcc02305d8b915961cf848df17778535774f39","3d68ecf05475492f041c88395372c3a01b30351619bebcd38287ab185be7f7e4",{"version":"36c956a3a6dc279f1e6b77aa4b97b7b229b7d828102573ef5002de456ff5e1d9","affectsGlobalScope":true},"45ac321f2e15d268fd74a90ddaa6467dcaaff2c5b13f95b4b85831520fb7a491","6e8b894365ab993dbb55c58542598d1548fdda072c974f98b89c218891e2ba09","ddd6169dff8e5263397a9399ba7ba92521d3959f8f9dcdc27f24403dc7b751ba","508e1e25ca40ea6cde332d3232c826fcd82f456f45ae535d817754684f048f9e",{"version":"2866a528b2708aa272ec3eaafd3c980abb23aec1ef831cfc5eb2186b98c37ce5","affectsGlobalScope":true},{"version":"8f8f6ee2a0c94077f79439f51640a625ac7e2f5dd6866bd3b5a41705c836adfc","affectsGlobalScope":true},"ee97aed5b4667a5c3003a1da4b108827fc64b888391417617d89b02ff134de9a","839421b494b57cd2bc0074e914130277051850eba6def6c25870056e6652640b","e18a4b529c9a05593e612130554d93a2b78b949cf1cf48c0b183071258f0e95a","88587b5c94b0c4f5d78026e4beeb93383b3933c860d9840b55d6bf47d7b632bb","a473ecd14d9bafbd6a33105524b033237bbf1d6ce2cd81eb71cc54bec2d83d55","9e8947666e44137405fd378f3a8a0515a492e967e552406c02b991c98c78fc61","0cff7901aedfe78e314f7d44088f07e2afa1b6e4f0473a4169b8456ca2fb245d","7a2a3ff87ffd4313a6a2f3b012e801dd249ee58152cedf90c8718dcd2c811fe3","69640cc2e76dad52daeb9914e6b70c5c9a5591a3a65190a2d3ea432cf0015e16","a39a4c527b7a2dc7a2661b711a534c10c76852c5ad6ae320767d3f7d2621b67d","1bb5c9857b2ee32c199dd85bc0f4c0299112485d6e5dc91428eabfdee0dbd68c",{"version":"5daba568741c8ed283d67bf370c626a91e09fdfbc6d4abe22a7f93e2cf5138b9","affectsGlobalScope":true},"7f77304372efe3c9967e5f9ea2061f1b4bf41dc3cda3c83cdd676f2e5af6b7e6","662661bbf9ccd869f3bca82d34234b2abdc95c657e2187c35352d42dddb24c2d","5caa645cc390a0a8d5a031072b6b4e49218c17017cd80a63bd2557b19be13c5f","4c4334eb5d8fae83416a361d787b55a5743916aed8af812a909898bc7333e709","352104835f5c468c7d8a277f2c8c02fac239a37cd2293181fe421faa153878d3","4fd3c4debadce3e9ab9dec3eb45f7f5e2e3d4ad65cf975a6d938d883cfb25a50","0953427f9c2498f71dd912fdd8a81b19cf6925de3e1ad67ab9a77b9a0f79bf0b","a4aa075328fe61190b8547e74fae18179591a67fedb2ad274c63044a00716743","7df562288f949945cf69c21cd912100c2afedeeb7cdb219085f7f4b46cb7dde4","9d16690485ff1eb4f6fc57aebe237728fd8e03130c460919da3a35f4d9bd97f5","ad7e61eca7f2f8bf47e72695f9f6663b75e41d87ef49abdb17c0cb843862f8aa","ecba2e44af95b0599c269a92628cec22e752868bce37396740deb51a5c547a26","46a9fb41a8f3bc7539eeebc15a6e04b9e55d7537a081615ad3614220d34c3e0f","40c6ed5dc58e1c6afa7dcd23b1697bf290cc5b1170c63d0a4dd12f52aa39291c","71d6da3b0150ecdcd16c08b3b546fe4cc7f53df642eccfeb03c813ee788fae0c","a364b4a8a015ae377052fa4fac94204d79a69d879567f444c7ceff1b7a18482d","c5ec3b97d9db756c689cd11f4a11eaa9e6077b2768e3e9b54ff727a93c03a909","c14e9e86f18189c7d32b5dd03b4cf3f40bed68f0509dec06d75d41b82c065fe2","bdb07038733b2d74a75ba9c381dcb92774cd6f161ee125bfa921eae7d883ccc9","ad93e960a3a07dff7394bf0c8a558006a9ff2d0725ab28fc33dec227d4cb251e",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true},"1d4ac8cbd56a1d3b2077d1503afa0a82c608efd7a7afe393e0c8ec525c6e1cd7","dd591498148d18c594e87cbbad92511e7a479517ab9d4987520ef5da5cfb963f","5e3a55837aa1f42af2d2334c9b750f59f5f50a2205471875f5dd6aadc3e49ddb","1cf1de1897be298c82af4e8e49e5743f3bab2bd25e5f5362ded0b9ec28b78f62","2e345cb6511f4c4c60c274df6626c94f3182939034f06cdf414bfbccc584f822","78a1efd7214a25b84e08af80fe2b027c3049e52b26dfcaf777b82c759d8548c9","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","725b884357ba84171341a8e4cc08edf11417854fd069842ca6d22afb2e340e45","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","6cb35d83d21a7e72bd00398c93302749bcd38349d0cc5e76ff3a90c6d1498a4d",{"version":"369dd7668d0e6c91550bce0c325f37ce6402e5dd40ecfca66fbb5283e23e559d","affectsGlobalScope":true},"2632057d8b983ee33295566088c080384d7d69a492bc60b008d6a6dfd3508d6b","4bf71cf2a94492fc71e97800bdf2bcb0a9a0fa5fce921c8fe42c67060780cbfa","0996ff06f64cb05b6dac158a6ada2e16f8c2ccd20f9ff6f3c3e871f1ba5fb6d9","5c492d01a19fea5ebfff9d27e786bc533e5078909521ca17ae41236f16f9686a","a6ee930b81c65ec79aca49025b797817dde6f2d2e9b0e0106f0844e18e2cc819","84fce15473e993e6b656db9dd3c9196b80f545647458e6621675e840fd700d29","7d5336ee766aa72dffb1cc2a515f61d18a4fb61b7a2757cbccfb7b286b783dfb","63e96248ab63f6e7a86e31aa3e654ed6de1c3f99e3b668e04800df05874e8b77","80da0f61195385d22b666408f6cccbc261c066d401611a286f07dfddf7764017","06a20cc7d937074863861ea1159ac783ff97b13952b4b5d1811c7d8ab5c94776","ab6de4af0e293eae73b67dad251af097d7bcc0b8b62de84e3674e831514cb056","18cbd79079af97af66c9c07c61b481fce14a4e7282eca078c474b40c970ba1d0","e7b45405689d87e745a217b648d3646fb47a6aaba9c8d775204de90c7ea9ff35","669b754ec246dd7471e19b655b73bda6c2ca5bb7ccb1a4dff44a9ae45b6a716a","bcfaca4a8ff50f57fd36df91fba5d34056883f213baff7192cbfc4d3805d2084","76a564b360b267502219a89514953058494713ee0923a63b2024e542c18b40e5","8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","a20629551ed7923f35f7556c4c15d0c8b2ebe7afaa68ceaab079a1707ba64be2","d6de66600c97cd499526ddecea6e12166ab1c0e8d9bf36fb2339fd39c8b3372a","8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","a8932876de2e3138a5a27f9426b225a4d27f0ba0a1e2764ba20930b4c3faf4b9","df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","027d600e00c5f5e1816c207854285d736f2f5fa28276e2829db746d5d6811ba1","5443113a16ef378446e08d6500bb48b35de582426459abdb5c9704f5c7d327d9","0fb581ecb53304a3c95bb930160b4fa610537470cce850371cbaad5a458ca0d9","7da4e290c009d7967343a7f8c3f145a3d2c157c62483362183ba9f637a536489","eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","914560d0c4c6aa947cfe7489fe970c94ba25383c414bbe0168b44fd20dbf0df4","4fb3405055b54566dea2135845c3a776339e7e170d692401d97fd41ad9a20e5d","8d607832a6ef0eac30657173441367dd76c96bf7800d77193428b922e060c3af","20ff7207f0bb5cdde5fee8e83315ade7e5b8100cfa2087d20d39069a3d7d06f4","7ca4c534eab7cff43d81327e369a23464bc37ef38ce5337ceff24a42c6c84eb2","5252dec18a34078398be4e321dee884dc7f47930e5225262543a799b591b36d2","23caed4dff98bd28157d2b798b43f1dfefe727f18641648c01ce4e0e929a1630","f67e013d5374826596d7c23dbae1cdb14375a27cd72e16c5fb46a4b445059329","ea3401b70e2302683bbf4c18b69ef2292b60f4d8f8e6d920413b81fb7bde0f65","71afe26642c0fb86b9f8b1af4af5deb5181b43b6542a3ff2314871b53d04c749","0d7f01634e6234d84cf0106508efdb8ae00e5ed126eff9606d37b031ac1de654","f8d209086bad78af6bd7fef063c1ed449c815e6f8d36058115f222d9f788b848","3ad003278d569d1953779e2f838f7798f02e793f6a1eceac8e0065f1a202669b","fb2c5eceffcd918dbb86332afa0199f5e7b6cf6ee42809e930a827b28ef25afe","f664aaff6a981eeca68f1ff2d9fd21b6664f47bf45f3ae19874df5a6683a8d8a","ce066f85d73e09e9adbd0049bcf6471c7eefbfc2ec4b5692b5bcef1e36babd2a","09d302513cacfbcc54b67088739bd8ac1c3c57917f83f510b2d1adcb99fd7d2a","3faa54e978b92a6f726440c13fe3ab35993dc74d697c7709681dc1764a25219f","2bd0489e968925eb0c4c0fb12ef090be5165c86bd088e1e803102c38d4a717d8","88924207132b9ba339c1adb1ed3ea07e47b3149ff8a2e21a3ea1f91cee68589d","b8800b93d8ab532f8915be73f8195b9d4ef06376d8a82e8cdc17c400553172d6","d7d469703b78beba76d511957f8c8b534c3bbb02bea7ab4705c65ef573532fb8","74c8c3057669c03264263d911d0f82e876cef50b05be21c54fef23c900de0420","b303eda2ff2d582a9c3c5ecb708fb57355cdc25e8c8197a9f66d4d1bf09fda19","4e5dc89fa22ff43da3dee1db97d5add0591ebaff9e4adef6c8b6f0b41f0f60f0","ec4e82cb42a902fe83dc13153c7a260bee95684541f8d7ef26cb0629a2f4ca31","5f36e24cd92b0ff3e2a243685a8a780c9413941c36739f04b428cc4e15de629d","40a26494e6ab10a91851791169582ab77fed4fbd799518968177e7eefe08c7a9","208e125b45bc561765a74f6f1019d88e44e94678769824cf93726e1bac457961","b3985971de086ef3aa698ef19009a53527b72e65851b782dc188ac341a1e1390","c81d421aabb6113cd98b9d4f11e9a03273b363b841f294b457f37c15d513151d","30063e3a184ff31254bbafa782c78a2d6636943dfe59e1a34f451827fd7a68dc","c05d4cae0bceed02c9d013360d3e65658297acb1b7a90252fe366f2bf4f9ccc9","6f14b92848889abba03a474e0750f7350cc91fc190c107408ca48679a03975ae","a588d0765b1d18bf00a498b75a83e095aef75a9300b6c1e91cbf39e408f2fe2f","656424ca784760c679bf2677d8aaf55d1cb8452cd0ac04bbe1c0f659f45f8c11","5d2651c679f59706bf484e7d423f0ec2d9c79897e2e68c91a3f582f21328d193","30d49e69cb62f350ff0bc5dda1c557429c425014955c19c557f101c0de9272e7","d3747dbed45540212e9a906c2fb8b5beb691f2cd0861af58a66dc01871004f38","05a21cbb7cbe1ec502e7baca1f4846a4e860d96bad112f3e316b995ba99715b7","1eaee2b52f1c0e1848845a79050c1d06ae554d8050c35e3bf479f13d6ee19dd5","fd219904eea67c470dfebbaf44129b0db858207c3c3b55514bdc84de547b1687","4de232968f584b960b4101b4cdae593456aff149c5d0c70c2389248e9eb9fbac","933c42f6ed2768265dfb42faa817ce8d902710c57a21a1859a9c3fe5e985080e","c5430542eeebb207d651e8b00a08e4bb680c47ecb73dd388d8fa597a1fc5de5b","a6c5c9906262cf10549989c0061e5a44afdc1f61da77d5e09418a9ecea0018fe","bc6e433cb982bf63eaa523dbbbd30fe12960a09861b352d77baf77ad6dd8886d","9af64ab00918f552388252977c1569fe31890686ca1fdb8e20f58d3401c9a50c","3d3cc03b5c6e056c24aac76789f4bc67caee98a4f0774ab82bc8ba34d16be916","747ce36fa27a750a05096f3610e59c9b5a55e13defec545c01a75fd13d67b620","1a8f503c64bdb36308f245960d9e4acac4cf65d8b6bd0534f88230ebf0be7883","a2c1f4012459547d62116d724e7ec820bb2e6848da40ea0747bf160ffd99b283","0dc197e52512a7cbea4823cc33c23b0337af97bd59b38bf83be047f37cd8c9a8","492c93ade227fe4545fabb3035b9dd5d57d8b4fde322e5217fdaef20aa1b80a8","83c54a3b3e836d1773b8c23ff76ce6e0aae1a2209fc772b75e9de173fec9eac0","475e411f48f74c14b1f6e50cc244387a5cc8ce52340dddfae897c96e03f86527","5573ce7aa683a81c9a727294ffdb47d82d7715a148bfe9f4ddcf2f6cdfef1f0a","2cd9edbb4a6411a9f5258237dd73323db978d7aa9ebf1d1b0ac79771ac233e24","de18acda71730bac52f4b256ce7511bb56cc21f6f114c59c46782eff2f632857","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","69da61a7b5093dac77fa3bec8be95dcf9a74c95a0e9161edb98bb24e30e439d2","561eca7a381b96d6ccac6e4061e6d2ae53f5bc44203f3fd9f5b26864c32ae6e9","62ea38627e3ebab429f7616812a9394d327c2bc271003dfba985de9b4137369f","b4439890c168d646357928431100daac5cbdee1d345a34e6bf6eca9f3abe22bc","5d72971a459517c44c1379dab9ed248e87a61ba0a1e0f25c9d67e1e640cd9a09","02d734976af36f4273d930bea88b3e62adf6b078cf120c1c63d49aa8d8427c5c",{"version":"516a426e3960379f310107635b8f3a7e8c307c6c665080b128039d9299ec4087","affectsGlobalScope":true},"cddf5c26907c0b8378bc05543161c11637b830da9fadf59e02a11e675d11e180","2a2e2c6463bcf3c59f31bc9ab4b6ef963bbf7dffb049cd017e2c1834e3adca63","875d567ecf2f865a1b19d30f2acf3203817e19fd95f7675351d046914ee39ac8","6a9c5127096b35264eb7cd21b2417bfc1d42cceca9ba4ce2bb0c3410b7816042","7c3419a20bfe129d5f5c470f0c78ec50a4a26625c0085a89350548f3163d8cd0","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","8f7a2387ecc680872d09a6edbca1612d699f77ee5a5129944935c3798a613d04","65455ea1b00bae7bd26d3c8c2401eb3d10401c09c55192d6f3b8b2275eda20c2","f7b46d22a307739c145e5fddf537818038fdfffd580d79ed717f4d4d37249380",{"version":"ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6","affectsGlobalScope":true},"4ee363f83d7be2202f34fcd84c44da71bf3a9329fee8a05f976f75083a52ea94","f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",{"version":"2612ddb9dec0fdb148b20bff58d3737fe467e01b8662b4dc5f1304f792a87706","affectsGlobalScope":true},"3034db2891e04de367126370bebec88ac3b4e3b1eb8b7dc30671ccddb717eed2","74b0245c42990ed8a849df955db3f4362c81b13f799ebc981b7bec2d5b414a57","d9e55d93aa33fad61bd5c63800972d00ba8879ec5d29f6f3bce67d16d86abc33","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","77c1d91a129ba60b8c405f9f539e42df834afb174fe0785f89d92a2c7c16b77a","c544d81603149987796b24cca297c965db427b84b2580fb27e52fb37ddc1f470","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","9eb2875a1e4c583066af7d6194ea8162191b2756e5d87ccb3c562fdf74d06869","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","6eef5113135a0f2bbac8259909a5bbb7666bcde022c28f4ab95145623cbe1f72","058b8dd97b7c67b6bf33e7bda7b1e247b019b675d4b6449d14ac002091a8b4f8","89c8a7b88c378663a8124664f2d9b8c2887e186b55aa066edf6d67177ca1aa04","5a30ba65ad753eb2ef65355dbb3011b28b192cb9df2ef0b5f595b51ca7faf353","5192f9a6469f849e0863616b668fde54bcd6704394b4bfbd115691865f66d761","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","86d425f7fcd8d100dafa6286cc289af88cbb639ecbdbd25c3018a8f0f7b09fe5","9795e0a3a45d5b6f1a791ee54b7c8b58bc931e8900966cea2dff9c5bae56073b","5890be29879d02424b7654f40592915189034948f7a18c5ad121c006d4e92811","0ab49086f10c75a1cb3b18bffe799dae021774146d8a2d5a4bb42dda67b64f9b","81c77839e152b8f715ec67b0a8b910bcc2d6cf916794c3519f8798c40efd12ac","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","464843c00fb3dd4735b28255c5c9fe713f16b8e47a3db09ba1647687440f7aef","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","d0f6d36b2d86f934560c48d8bfdc7ab60c67cfb2ab6dc1916706aa68e83d6dc2","502cca269275c29bf4b7cf2175ed724d07fda07132a38095f5a89726661a8265","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","d3edfa3fc810d29d0c125447f8119d3d33dec1a2e6118c01776e7513b5cdbea6","f7e133b20ee2669b6c0e5d7f0cd510868c57cd64b283e68c7f598e30ce9d76d2","09c4b2e2d3070239d563fc690f0cc5db04a2d9b66a23e61aef8b5274e3e9910c"],"options":{"composite":true,"declaration":true,"jsx":1,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUnusedLocals":true,"noUnusedParameters":false,"outDir":"./","rootDir":"../src","sourceMap":true,"strict":true,"target":6,"tsBuildInfoFile":"./tsconfig.tsbuildinfo"},"fileIdsList":[[43],[43,44,45,46,47],[43,45],[96],[54,96],[62,96,102],[63,96],[77,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,186,187,188,189,190],[191],[170,171,191],[77,168,173,191],[77,174,175,191],[77,174,191],[77,168,174,191],[77,180,191],[77,191],[169,185,191],[168,185,191],[77,168],[173],[77],[168,191],[192],[193],[199,201],[203],[62,79,82,96],[62,63,70,79],[54,62,70],[89],[58,63,71],[79],[60,62,70],[62],[62,64,79,88],[63],[70,79,88],[62,63,65,70,79,82,88],[65,79,82,88],[50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,88,89,90,91,92,93,94,95],[88],[60,62,79],[52],[84],[77,89,91],[70],[76],[62,64,79,88,91],[212,213,214,215],[63,96,103],[219,258],[219,243,258],[258],[219],[219,244,258],[219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257],[244,258],[62,96],[79,96],[262],[195,196],[195,196,197,198],[200],[85,86],[105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,124,125,127,129,130,131,132,133,134,135,136,137,138,139,140,141,142,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167],[105,107,112],[107,144],[106,111],[105,106,107,108,109,110],[106,107],[107,143],[105,106,107,112],[105,106,120],[105,106,107,108,111],[105,106],[106],[105,107,111,112],[106,107,108,111,144],[111],[111,151],[105,106,107,111],[106,107,108,111],[105,106,107,111,112],[168],[105,106,119],[121,122],[105,106,120,121],[105,106,119,120,122],[121],[105,106,121,122],[128],[123],[126],[105,111],[41],[40]],"referencedMap":[[45,1],[48,2],[44,1],[46,3],[47,1],[97,4],[98,5],[103,6],[104,7],[191,8],[170,9],[172,10],[171,9],[174,11],[176,12],[177,13],[178,14],[179,12],[180,13],[181,12],[182,15],[183,13],[184,12],[185,16],[186,17],[187,18],[188,19],[175,20],[189,21],[173,21],[190,22],[193,23],[194,24],[202,25],[204,26],[205,7],[207,27],[54,28],[55,29],[56,30],[57,31],[58,32],[59,33],[61,34],[62,34],[63,35],[64,36],[65,37],[66,38],[67,39],[96,40],[68,34],[69,41],[70,42],[73,43],[74,44],[77,34],[78,45],[79,34],[82,46],[84,46],[88,47],[90,32],[93,48],[94,32],[216,49],[217,50],[243,51],[244,52],[219,53],[222,53],[241,51],[242,51],[232,54],[231,54],[229,51],[224,51],[237,51],[235,51],[239,51],[223,51],[236,51],[240,51],[225,51],[226,51],[238,51],[220,51],[227,51],[228,51],[230,51],[234,51],[245,55],[233,51],[221,51],[258,56],[252,55],[254,57],[253,55],[246,55],[247,55],[249,55],[251,55],[255,57],[256,57],[248,57],[250,57],[259,58],[169,59],[263,60],[197,61],[199,62],[198,61],[201,63],[87,64],[168,65],[118,66],[116,66],[143,67],[131,68],[111,69],[108,70],[144,71],[117,72],[119,73],[112,74],[107,75],[105,76],[113,77],[141,68],[142,68],[145,78],[146,68],[147,68],[148,68],[149,68],[150,68],[151,79],[152,80],[153,68],[109,68],[154,68],[155,68],[156,79],[157,68],[158,68],[159,81],[160,68],[161,78],[162,68],[110,68],[163,68],[164,68],[165,82],[114,83],[166,84],[120,85],[128,86],[123,86],[122,87],[121,88],[126,89],[130,90],[129,91],[124,92],[125,89],[127,93],[106,94],[135,79],[132,76],[42,95],[41,96]],"exportedModulesMap":[[45,1],[48,2],[44,1],[46,3],[47,1],[97,4],[98,5],[103,6],[104,7],[191,8],[170,9],[172,10],[171,9],[174,11],[176,12],[177,13],[178,14],[179,12],[180,13],[181,12],[182,15],[183,13],[184,12],[185,16],[186,17],[187,18],[188,19],[175,20],[189,21],[173,21],[190,22],[193,23],[194,24],[202,25],[204,26],[205,7],[207,27],[54,28],[55,29],[56,30],[57,31],[58,32],[59,33],[61,34],[62,34],[63,35],[64,36],[65,37],[66,38],[67,39],[96,40],[68,34],[69,41],[70,42],[73,43],[74,44],[77,34],[78,45],[79,34],[82,46],[84,46],[88,47],[90,32],[93,48],[94,32],[216,49],[217,50],[243,51],[244,52],[219,53],[222,53],[241,51],[242,51],[232,54],[231,54],[229,51],[224,51],[237,51],[235,51],[239,51],[223,51],[236,51],[240,51],[225,51],[226,51],[238,51],[220,51],[227,51],[228,51],[230,51],[234,51],[245,55],[233,51],[221,51],[258,56],[252,55],[254,57],[253,55],[246,55],[247,55],[249,55],[251,55],[255,57],[256,57],[248,57],[250,57],[259,58],[169,59],[263,60],[197,61],[199,62],[198,61],[201,63],[87,64],[168,65],[118,66],[116,66],[143,67],[131,68],[111,69],[108,70],[144,71],[117,72],[119,73],[112,74],[107,75],[105,76],[113,77],[141,68],[142,68],[145,78],[146,68],[147,68],[148,68],[149,68],[150,68],[151,79],[152,80],[153,68],[109,68],[154,68],[155,68],[156,79],[157,68],[158,68],[159,81],[160,68],[161,78],[162,68],[110,68],[163,68],[164,68],[165,82],[114,83],[166,84],[120,85],[128,86],[123,86],[122,87],[121,88],[126,89],[130,90],[129,91],[124,92],[125,89],[127,93],[106,94],[135,79],[132,76],[42,95],[41,96]],"semanticDiagnosticsPerFile":[45,43,48,44,46,47,49,97,98,99,100,101,103,104,191,170,172,171,174,176,177,178,179,180,181,182,183,184,185,186,187,188,175,189,173,190,192,193,194,202,204,102,205,206,207,50,52,53,54,55,56,57,58,59,60,61,62,63,64,51,95,65,66,67,96,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,88,89,90,91,92,93,94,208,209,210,211,212,213,216,217,218,215,243,244,219,222,241,242,232,231,229,224,237,235,239,223,236,240,225,226,238,220,227,228,230,234,245,233,221,258,257,252,254,253,246,247,249,251,255,256,248,250,259,260,169,203,261,262,263,214,195,197,199,198,196,201,200,85,86,87,168,118,116,143,131,111,108,144,117,119,112,107,105,167,113,141,142,145,146,147,148,149,150,151,152,153,109,154,155,156,157,158,159,160,161,162,110,163,164,165,114,166,120,128,123,122,121,126,130,129,124,125,127,115,106,136,137,138,140,139,134,135,133,132,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,30,31,32,33,7,38,34,35,36,37,1,39,42,41,40]},"version":"4.4.2"}
\ No newline at end of file
diff --git a/node_modules/@databases/escape-identifier/package.json b/node_modules/@databases/escape-identifier/package.json
new file mode 100644
index 0000000..f7cfb67
--- /dev/null
+++ b/node_modules/@databases/escape-identifier/package.json
@@ -0,0 +1,21 @@
+{
+ "name": "@databases/escape-identifier",
+ "version": "1.0.3",
+ "description": "",
+ "main": "./lib/index.js",
+ "types": "./lib/index.d.ts",
+ "dependencies": {
+ "@databases/validate-unicode": "^1.0.0"
+ },
+ "scripts": {},
+ "repository": "https://github.com/ForbesLindesay/atdatabases/tree/master/packages/escape-identifier",
+ "bugs": "https://github.com/ForbesLindesay/atdatabases/issues",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "files": [
+ "lib/"
+ ],
+ "homepage": "https://www.atdatabases.org/docs/escape-identifier"
+}
diff --git a/node_modules/@databases/sql/LICENSE.md b/node_modules/@databases/sql/LICENSE.md
new file mode 100644
index 0000000..a2b8362
--- /dev/null
+++ b/node_modules/@databases/sql/LICENSE.md
@@ -0,0 +1,21 @@
+# The MIT License (MIT)
+
+Copyright (c) 2019 Forbes Lindesay
+
+> Permission is hereby granted, free of charge, to any person obtaining a copy
+> of this software and associated documentation files (the "Software"), to deal
+> in the Software without restriction, including without limitation the rights
+> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+> copies of the Software, and to permit persons to whom the Software is
+> furnished to do so, subject to the following conditions:
+>
+> The above copyright notice and this permission notice shall be included in
+> all copies or substantial portions of the Software.
+>
+> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+> SOFTWARE.
\ No newline at end of file
diff --git a/node_modules/@databases/sql/README.md b/node_modules/@databases/sql/README.md
new file mode 100644
index 0000000..220ece7
--- /dev/null
+++ b/node_modules/@databases/sql/README.md
@@ -0,0 +1,3 @@
+# @databases/sql
+
+For documentation, see https://www.atdatabases.org/docs/sql
\ No newline at end of file
diff --git a/node_modules/@databases/sql/lib/__tests__/index.test.d.ts b/node_modules/@databases/sql/lib/__tests__/index.test.d.ts
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/@databases/sql/lib/__tests__/index.test.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/@databases/sql/lib/__tests__/index.test.js b/node_modules/@databases/sql/lib/__tests__/index.test.js
new file mode 100644
index 0000000..b36322b
--- /dev/null
+++ b/node_modules/@databases/sql/lib/__tests__/index.test.js
@@ -0,0 +1,70 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const __1 = require("../");
+test('correctly renders sql', () => {
+ const query = __1.default `
+ SELECT *
+ FROM foo
+ WHERE id = ${10}
+ AND created_at > ${new Date(1545238400939)};
+ `;
+ expect(query.format({
+ escapeIdentifier: () => {
+ throw new Error('not implemented');
+ },
+ formatValue: (value) => ({ placeholder: '?', value }),
+ })).toMatchInlineSnapshot(`
+ Object {
+ "text": "SELECT *
+ FROM foo
+ WHERE id = ?
+ AND created_at > ?;",
+ "values": Array [
+ 10,
+ 2018-12-19T16:53:20.939Z,
+ ],
+ }
+ `);
+});
+test('can join parts of query', () => {
+ const conditions = [
+ __1.default `id = ${10}`,
+ __1.default `created_at > ${new Date(1545238400939)}`,
+ ];
+ const query = __1.default `
+ SELECT *
+ FROM foo
+ WHERE ${__1.default.join(conditions, __1.default ` AND `)};
+ `;
+ expect(query.format({
+ escapeIdentifier: () => {
+ throw new Error('not implemented');
+ },
+ formatValue: (value) => ({ placeholder: '?', value }),
+ })).toMatchInlineSnapshot(`
+ Object {
+ "text": "SELECT *
+ FROM foo
+ WHERE id = ? AND created_at > ?;",
+ "values": Array [
+ 10,
+ 2018-12-19T16:53:20.939Z,
+ ],
+ }
+ `);
+});
+test('can read in a file', () => {
+ const query = __1.default.file(`${__dirname}/fixture.sql`);
+ expect(query.format({
+ escapeIdentifier: () => {
+ throw new Error('not implemented');
+ },
+ formatValue: (value) => ({ placeholder: '?', value }),
+ })).toMatchInlineSnapshot(`
+ Object {
+ "text": "SELECT * FROM my_table;",
+ "values": Array [],
+ }
+ `);
+});
+//# sourceMappingURL=index.test.js.map
\ No newline at end of file
diff --git a/node_modules/@databases/sql/lib/__tests__/index.test.js.map b/node_modules/@databases/sql/lib/__tests__/index.test.js.map
new file mode 100644
index 0000000..641f538
--- /dev/null
+++ b/node_modules/@databases/sql/lib/__tests__/index.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/__tests__/index.test.ts"],"names":[],"mappings":";;AAAA,2BAAsB;AAEtB,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACjC,MAAM,KAAK,GAAG,WAAG,CAAA;;;mBAGA,EAAE;yBACI,IAAI,IAAI,CAAC,aAAa,CAAC;GAC7C,CAAC;IACF,MAAM,CACJ,KAAK,CAAC,MAAM,CAAC;QACX,gBAAgB,EAAE,GAAG,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QACD,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAC,WAAW,EAAE,GAAG,EAAE,KAAK,EAAC,CAAC;KACpD,CAAC,CACH,CAAC,qBAAqB,CAAC;;;;;;;;;;;GAWvB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACnC,MAAM,UAAU,GAAG;QACjB,WAAG,CAAA,QAAQ,EAAE,EAAE;QACf,WAAG,CAAA,gBAAgB,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE;KAC7C,CAAC;IACF,MAAM,KAAK,GAAG,WAAG,CAAA;;;cAGL,WAAG,CAAC,IAAI,CAAC,UAAU,EAAE,WAAG,CAAA,OAAO,CAAC;GAC3C,CAAC;IACF,MAAM,CACJ,KAAK,CAAC,MAAM,CAAC;QACX,gBAAgB,EAAE,GAAG,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QACD,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAC,WAAW,EAAE,GAAG,EAAE,KAAK,EAAC,CAAC;KACpD,CAAC,CACH,CAAC,qBAAqB,CAAC;;;;;;;;;;GAUvB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAC9B,MAAM,KAAK,GAAG,WAAG,CAAC,IAAI,CAAC,GAAG,SAAS,cAAc,CAAC,CAAC;IACnD,MAAM,CACJ,KAAK,CAAC,MAAM,CAAC;QACX,gBAAgB,EAAE,GAAG,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QACD,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAC,WAAW,EAAE,GAAG,EAAE,KAAK,EAAC,CAAC;KACpD,CAAC,CACH,CAAC,qBAAqB,CAAC;;;;;GAKvB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@databases/sql/lib/index.d.ts b/node_modules/@databases/sql/lib/index.d.ts
new file mode 100644
index 0000000..d06d8df
--- /dev/null
+++ b/node_modules/@databases/sql/lib/index.d.ts
@@ -0,0 +1,8 @@
+import { SQL as SQLBase, SQLQuery, SQLItem, SQLItemType, FormatConfig, isSqlQuery } from './web';
+export type { SQLQuery, SQLItem, FormatConfig };
+export { isSqlQuery, SQLItemType };
+export interface SQL extends SQLBase {
+ file(filename: string): SQLQuery;
+}
+declare const sql: SQL;
+export default sql;
diff --git a/node_modules/@databases/sql/lib/index.js b/node_modules/@databases/sql/lib/index.js
new file mode 100644
index 0000000..73f5171
--- /dev/null
+++ b/node_modules/@databases/sql/lib/index.js
@@ -0,0 +1,17 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.SQLItemType = exports.isSqlQuery = void 0;
+const fs_1 = require("fs");
+const web_1 = require("./web");
+Object.defineProperty(exports, "SQLItemType", { enumerable: true, get: function () { return web_1.SQLItemType; } });
+Object.defineProperty(exports, "isSqlQuery", { enumerable: true, get: function () { return web_1.isSqlQuery; } });
+// Create the SQL interface we export.
+const sql = Object.assign(web_1.default, {
+ file: (filename) => web_1.default.__dangerous__rawValue(fs_1.readFileSync(filename, 'utf8')),
+});
+exports.default = sql;
+module.exports = sql;
+module.exports.default = sql;
+module.exports.isSqlQuery = web_1.isSqlQuery;
+module.exports.SQLItemType = web_1.SQLItemType;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@databases/sql/lib/index.js.map b/node_modules/@databases/sql/lib/index.js.map
new file mode 100644
index 0000000..c811882
--- /dev/null
+++ b/node_modules/@databases/sql/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2BAAgC;AAChC,+BAOe;AAGK,4FANlB,iBAAW,OAMkB;AAAvB,2FAJN,gBAAU,OAIM;AAKlB,sCAAsC;AACtC,MAAM,GAAG,GAAQ,MAAM,CAAC,MAAM,CAAC,aAAO,EAAE;IACtC,IAAI,EAAE,CAAC,QAAgB,EAAE,EAAE,CACzB,aAAO,CAAC,qBAAqB,CAAC,iBAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;CAChE,CAAC,CAAC;AAEH,kBAAe,GAAG,CAAC;AAEnB,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;AACrB,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC;AAC7B,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,gBAAU,CAAC;AACvC,MAAM,CAAC,OAAO,CAAC,WAAW,GAAG,iBAAW,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@databases/sql/lib/tsconfig.tsbuildinfo b/node_modules/@databases/sql/lib/tsconfig.tsbuildinfo
new file mode 100644
index 0000000..1b81290
--- /dev/null
+++ b/node_modules/@databases/sql/lib/tsconfig.tsbuildinfo
@@ -0,0 +1,3437 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "b3584bc5798ed422ce2516df360ffa9cf2d80b5eae852867db9ba3743145f895",
+ "signature": "b3584bc5798ed422ce2516df360ffa9cf2d80b5eae852867db9ba3743145f895",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.d.ts": {
+ "version": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "signature": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2016.d.ts": {
+ "version": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "signature": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.d.ts": {
+ "version": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "signature": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.d.ts": {
+ "version": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "signature": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "feeeb1dd8a80fb76be42b0426e8f3ffa9bdef3c2f3c12c147e7660b1c5ba8b3b",
+ "signature": "feeeb1dd8a80fb76be42b0426e8f3ffa9bdef3c2f3c12c147e7660b1c5ba8b3b",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.core.d.ts": {
+ "version": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "signature": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.collection.d.ts": {
+ "version": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "signature": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.generator.d.ts": {
+ "version": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "signature": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts": {
+ "version": "8b2a5df1ce95f78f6b74f1a555ccdb6baab0486b42d8345e0871dd82811f9b9a",
+ "signature": "8b2a5df1ce95f78f6b74f1a555ccdb6baab0486b42d8345e0871dd82811f9b9a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.promise.d.ts": {
+ "version": "2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c",
+ "signature": "2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts": {
+ "version": "810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357",
+ "signature": "810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts": {
+ "version": "62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6",
+ "signature": "62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts": {
+ "version": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "signature": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": {
+ "version": "9d122b7e8c1a5c72506eea50c0973cba55b92b5532d5cafa8a6ce2c547d57551",
+ "signature": "9d122b7e8c1a5c72506eea50c0973cba55b92b5532d5cafa8a6ce2c547d57551",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts": {
+ "version": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "signature": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.object.d.ts": {
+ "version": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "signature": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": {
+ "version": "7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98",
+ "signature": "7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.string.d.ts": {
+ "version": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "signature": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.intl.d.ts": {
+ "version": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "signature": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": {
+ "version": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "signature": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": {
+ "version": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "signature": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": {
+ "version": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "signature": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.intl.d.ts": {
+ "version": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "signature": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.promise.d.ts": {
+ "version": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "signature": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts": {
+ "version": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "signature": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
+ "version": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "signature": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/typescript/lib/lib.esnext.intl.d.ts": {
+ "version": "506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e",
+ "signature": "506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e",
+ "affectsGlobalScope": true
+ },
+ "../src/web.ts": {
+ "version": "58cc32a5336fe98206320d85376ee12f354b4918f45f32f8d2da3079cee0c097",
+ "signature": "0f0cf97336e01b853d828e7a6f9b14238ef005edfe465cf39291e81dea223fdc",
+ "affectsGlobalScope": false
+ },
+ "../src/index.ts": {
+ "version": "9ae150b937db722a99079305cde16d146c56eb599694ea8c90ce9d724ca56171",
+ "signature": "f43a81d60817f3790fe2ea876f4ccee827d80845d9b731f5185cf2ad5b055661",
+ "affectsGlobalScope": false
+ },
+ "../src/__tests__/index.test.ts": {
+ "version": "d5a1985a4407ea976a2d8f46a804a62b495ba4dd2580af8ba18a597d5ee814c3",
+ "signature": "8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@babel/types/lib/index.d.ts": {
+ "version": "b668b7fb7c52a05fb9233a27ba5099a73cd8e157b037d67399336635495ab483",
+ "signature": "b668b7fb7c52a05fb9233a27ba5099a73cd8e157b037d67399336635495ab483",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/babel__generator/index.d.ts": {
+ "version": "b25c5f2970d06c729f464c0aeaa64b1a5b5f1355aa93554bb5f9c199b8624b1e",
+ "signature": "b25c5f2970d06c729f464c0aeaa64b1a5b5f1355aa93554bb5f9c199b8624b1e",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@babel/parser/typings/babel-parser.d.ts": {
+ "version": "6da9e714516d081abaa435946d77c8d74dba888530412dc71601e83d2c8a512e",
+ "signature": "6da9e714516d081abaa435946d77c8d74dba888530412dc71601e83d2c8a512e",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/babel__template/index.d.ts": {
+ "version": "3051751533eee92572241b3cef28333212401408c4e7aa21718714b793c0f4ed",
+ "signature": "3051751533eee92572241b3cef28333212401408c4e7aa21718714b793c0f4ed",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/babel__traverse/index.d.ts": {
+ "version": "691aea9772797ca98334eb743e7686e29325b02c6931391bcee4cc7bf27a9f3b",
+ "signature": "691aea9772797ca98334eb743e7686e29325b02c6931391bcee4cc7bf27a9f3b",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/babel__core/index.d.ts": {
+ "version": "6f1d39d26959517da3bd105c552eded4c34702705c64d75b03f54d864b6e41c2",
+ "signature": "6f1d39d26959517da3bd105c552eded4c34702705c64d75b03f54d864b6e41c2",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/big.js/index.d.ts": {
+ "version": "23a6a8de10b40eb59194c822e6d6bfa43c88d45792283ae63f42950736931f27",
+ "signature": "23a6a8de10b40eb59194c822e6d6bfa43c88d45792283ae63f42950736931f27",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/globals.d.ts": {
+ "version": "25b4a0c4fab47c373ee49df4c239826ee3430019fc0c1b5e59edc3e398b7468d",
+ "signature": "25b4a0c4fab47c373ee49df4c239826ee3430019fc0c1b5e59edc3e398b7468d",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/node/async_hooks.d.ts": {
+ "version": "d20f08527645f62facb2d66c2b7bd31ea964b59c897d00bddb1efe8c13890b72",
+ "signature": "d20f08527645f62facb2d66c2b7bd31ea964b59c897d00bddb1efe8c13890b72",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/buffer.d.ts": {
+ "version": "5726b5ce952dc5beaeb08d5f64236632501568a54a390363d2339ba1dc5393b1",
+ "signature": "5726b5ce952dc5beaeb08d5f64236632501568a54a390363d2339ba1dc5393b1",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/child_process.d.ts": {
+ "version": "674bedbfd2004e233e2a266a3d2286e524f0d58787a98522d834d6ccda1d215a",
+ "signature": "674bedbfd2004e233e2a266a3d2286e524f0d58787a98522d834d6ccda1d215a",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/cluster.d.ts": {
+ "version": "714637d594e1a38a075091fe464ca91c6abc0b154784b4287f6883200e28ccef",
+ "signature": "714637d594e1a38a075091fe464ca91c6abc0b154784b4287f6883200e28ccef",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/console.d.ts": {
+ "version": "23edba5f47d3409810c563fe8034ae2c59e718e1ef8570f4152ccdde1915a096",
+ "signature": "23edba5f47d3409810c563fe8034ae2c59e718e1ef8570f4152ccdde1915a096",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/node/constants.d.ts": {
+ "version": "0e9c55f894ca2d9cf63b5b0d43a8cec1772dd560233fd16275bc7a485eb82f83",
+ "signature": "0e9c55f894ca2d9cf63b5b0d43a8cec1772dd560233fd16275bc7a485eb82f83",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/crypto.d.ts": {
+ "version": "d53b352a01645c470a0d8c31bf290ba791fc28ade0ce187a4a50f5c2f826f75e",
+ "signature": "d53b352a01645c470a0d8c31bf290ba791fc28ade0ce187a4a50f5c2f826f75e",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/dgram.d.ts": {
+ "version": "5f0a09de75bd965c21dc6d73671ba88830272f9ed62897bb0aa9754b369b1eed",
+ "signature": "5f0a09de75bd965c21dc6d73671ba88830272f9ed62897bb0aa9754b369b1eed",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/dns.d.ts": {
+ "version": "2b34e7fcba9e1f24e7f54ba5c8be5a8895b0b8b444ccf6548e04acdee0899317",
+ "signature": "2b34e7fcba9e1f24e7f54ba5c8be5a8895b0b8b444ccf6548e04acdee0899317",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/domain.d.ts": {
+ "version": "06d2be99c3dd2ff52114d02ee443ba486ab482423df1941d3c97d6a92e924d70",
+ "signature": "06d2be99c3dd2ff52114d02ee443ba486ab482423df1941d3c97d6a92e924d70",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/node/events.d.ts": {
+ "version": "bfd4f140c07091b5e8a963c89e6fa3f44b6cfcbc11471b465cf63e2d020ad0eb",
+ "signature": "bfd4f140c07091b5e8a963c89e6fa3f44b6cfcbc11471b465cf63e2d020ad0eb",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/node/fs.d.ts": {
+ "version": "a106a0bea088b70879ac88ff606dc253c0cc474ea05ad3a282b8bfb1091ae576",
+ "signature": "a106a0bea088b70879ac88ff606dc253c0cc474ea05ad3a282b8bfb1091ae576",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/fs/promises.d.ts": {
+ "version": "c98ce957db9eebd75f53edda3f6893e05ab2d2283b5667b18e31bcdb6427ed10",
+ "signature": "c98ce957db9eebd75f53edda3f6893e05ab2d2283b5667b18e31bcdb6427ed10",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/http.d.ts": {
+ "version": "1f08bd8305d4a789a68f71ab622156dfff993aa51a2aa58b9ccf166cc6f9fcf7",
+ "signature": "1f08bd8305d4a789a68f71ab622156dfff993aa51a2aa58b9ccf166cc6f9fcf7",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/http2.d.ts": {
+ "version": "9aff68f1b847b846d3d50a58c9f8f99389bedd0258d1b1c201f11b97ecfd36f8",
+ "signature": "9aff68f1b847b846d3d50a58c9f8f99389bedd0258d1b1c201f11b97ecfd36f8",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/https.d.ts": {
+ "version": "1978992206803f5761e99e893d93b25abc818c5fe619674fdf2ae02b29f641ba",
+ "signature": "1978992206803f5761e99e893d93b25abc818c5fe619674fdf2ae02b29f641ba",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/inspector.d.ts": {
+ "version": "05fbe81f09fc455a2c343d2458d2b3c600c90b92b22926be765ee79326be9466",
+ "signature": "05fbe81f09fc455a2c343d2458d2b3c600c90b92b22926be765ee79326be9466",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/module.d.ts": {
+ "version": "8e7d6dae9e19bbe47600dcfd4418db85b30ae7351474ea0aad5e628f9845d340",
+ "signature": "8e7d6dae9e19bbe47600dcfd4418db85b30ae7351474ea0aad5e628f9845d340",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/net.d.ts": {
+ "version": "f20ea392f7f27feb7a90e5a24319a4e365b07bf83c39a547711fe7ff9df68657",
+ "signature": "f20ea392f7f27feb7a90e5a24319a4e365b07bf83c39a547711fe7ff9df68657",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/os.d.ts": {
+ "version": "32542c4660ecda892a333a533feedba31738ee538ef6a78eb73af647137bc3fc",
+ "signature": "32542c4660ecda892a333a533feedba31738ee538ef6a78eb73af647137bc3fc",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/path.d.ts": {
+ "version": "0ecacea5047d1a7d350e7049dbd22f26435be5e8736a81a56afec5b3264db1ca",
+ "signature": "0ecacea5047d1a7d350e7049dbd22f26435be5e8736a81a56afec5b3264db1ca",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/perf_hooks.d.ts": {
+ "version": "ffcb4ebde21f83370ed402583888b28651d2eb7f05bfec9482eb46d82adedd7f",
+ "signature": "ffcb4ebde21f83370ed402583888b28651d2eb7f05bfec9482eb46d82adedd7f",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/process.d.ts": {
+ "version": "06c004006016a51c4d1855527a523562c329dc44c473931c65f10373281f730e",
+ "signature": "06c004006016a51c4d1855527a523562c329dc44c473931c65f10373281f730e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/node/punycode.d.ts": {
+ "version": "a7b43c69f9602d198825e403ee34e5d64f83c48b391b2897e8c0e6f72bca35f8",
+ "signature": "a7b43c69f9602d198825e403ee34e5d64f83c48b391b2897e8c0e6f72bca35f8",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/querystring.d.ts": {
+ "version": "f4a3fc4efc6944e7b7bd4ccfa45e0df68b6359808e6cf9d061f04fd964a7b2d3",
+ "signature": "f4a3fc4efc6944e7b7bd4ccfa45e0df68b6359808e6cf9d061f04fd964a7b2d3",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/readline.d.ts": {
+ "version": "73cad675aead7a2c05cf934e7e700c61d84b2037ac1d576c3f751199b25331da",
+ "signature": "73cad675aead7a2c05cf934e7e700c61d84b2037ac1d576c3f751199b25331da",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/repl.d.ts": {
+ "version": "8c3137ba3583ec18484429ec1c8eff89efdc42730542f157b38b102fdccc0c71",
+ "signature": "8c3137ba3583ec18484429ec1c8eff89efdc42730542f157b38b102fdccc0c71",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/stream.d.ts": {
+ "version": "d84300d886b45a198c346158e4ff7ae361cc7bc1c3deab44afb3db7de56b5d25",
+ "signature": "d84300d886b45a198c346158e4ff7ae361cc7bc1c3deab44afb3db7de56b5d25",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/string_decoder.d.ts": {
+ "version": "94ca7beec4e274d32362b54e0133152f7b4be9487db7b005070c03880b6363aa",
+ "signature": "94ca7beec4e274d32362b54e0133152f7b4be9487db7b005070c03880b6363aa",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/timers.d.ts": {
+ "version": "2d713cbcbd5bcc38d91546eaeea7bb1c8686dc4a2995a28556d957b1b9de11d9",
+ "signature": "2d713cbcbd5bcc38d91546eaeea7bb1c8686dc4a2995a28556d957b1b9de11d9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/tls.d.ts": {
+ "version": "bbf21f210782db4193359010a4710786add43e3b50aa42fc0d371f45b4e4d8d3",
+ "signature": "bbf21f210782db4193359010a4710786add43e3b50aa42fc0d371f45b4e4d8d3",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/trace_events.d.ts": {
+ "version": "0b7733d83619ac4e3963e2a9f7c75dc1e9af6850cb2354c9554977813092c10a",
+ "signature": "0b7733d83619ac4e3963e2a9f7c75dc1e9af6850cb2354c9554977813092c10a",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/tty.d.ts": {
+ "version": "3ce933f0c3955f67f67eb7d6b5c83c2c54a18472c1d6f2bb651e51dd40c84837",
+ "signature": "3ce933f0c3955f67f67eb7d6b5c83c2c54a18472c1d6f2bb651e51dd40c84837",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/url.d.ts": {
+ "version": "631e96db896d645f7132c488ad34a16d71fd2be9f44696f8c98289ee1c8cbfa9",
+ "signature": "631e96db896d645f7132c488ad34a16d71fd2be9f44696f8c98289ee1c8cbfa9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/util.d.ts": {
+ "version": "2c77230d381cba81eb6f87cda2fbfff6c0427c6546c2e2590110effff37c58f7",
+ "signature": "2c77230d381cba81eb6f87cda2fbfff6c0427c6546c2e2590110effff37c58f7",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/v8.d.ts": {
+ "version": "da86ee9a2f09a4583db1d5e37815894967e1f694ad9f3c25e84e0e4d40411e14",
+ "signature": "da86ee9a2f09a4583db1d5e37815894967e1f694ad9f3c25e84e0e4d40411e14",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/vm.d.ts": {
+ "version": "141a943e5690105898a67537a470f70b56d0e183441b56051d929e902376b7b2",
+ "signature": "141a943e5690105898a67537a470f70b56d0e183441b56051d929e902376b7b2",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/worker_threads.d.ts": {
+ "version": "ddc086b1adac44e2fccf55422da1e90fa970e659d77f99712422a421564b4877",
+ "signature": "ddc086b1adac44e2fccf55422da1e90fa970e659d77f99712422a421564b4877",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/zlib.d.ts": {
+ "version": "515ef1d99036ff0dafa5bf738e02222edea94e0d97a0aa0ff277ac5e96b57977",
+ "signature": "515ef1d99036ff0dafa5bf738e02222edea94e0d97a0aa0ff277ac5e96b57977",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/globals.global.d.ts": {
+ "version": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "signature": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/node/wasi.d.ts": {
+ "version": "780058f4a804c8bdcdd2f60e7af64b2bc57d149c1586ee3db732a84d659a50bf",
+ "signature": "780058f4a804c8bdcdd2f60e7af64b2bc57d149c1586ee3db732a84d659a50bf",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/ts3.6/base.d.ts": {
+ "version": "ae68a04912ee5a0f589276f9ec60b095f8c40d48128a4575b3fdd7d93806931c",
+ "signature": "ae68a04912ee5a0f589276f9ec60b095f8c40d48128a4575b3fdd7d93806931c",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/assert.d.ts": {
+ "version": "19d580a3b42ad5caeaee266ae958260e23f2df0549ee201c886c8bd7a4f01d4e",
+ "signature": "19d580a3b42ad5caeaee266ae958260e23f2df0549ee201c886c8bd7a4f01d4e",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/base.d.ts": {
+ "version": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "signature": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/node/index.d.ts": {
+ "version": "9c4c395e927045b324877acdc4bfb95f128f36bc9f073266a2f0342495075a4f",
+ "signature": "9c4c395e927045b324877acdc4bfb95f128f36bc9f073266a2f0342495075a4f",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/cosmiconfig/index.d.ts": {
+ "version": "dd591498148d18c594e87cbbad92511e7a479517ab9d4987520ef5da5cfb963f",
+ "signature": "dd591498148d18c594e87cbbad92511e7a479517ab9d4987520ef5da5cfb963f",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/cross-spawn/index.d.ts": {
+ "version": "5e3a55837aa1f42af2d2334c9b750f59f5f50a2205471875f5dd6aadc3e49ddb",
+ "signature": "5e3a55837aa1f42af2d2334c9b750f59f5f50a2205471875f5dd6aadc3e49ddb",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/cuid/index.d.ts": {
+ "version": "1cf1de1897be298c82af4e8e49e5743f3bab2bd25e5f5362ded0b9ec28b78f62",
+ "signature": "1cf1de1897be298c82af4e8e49e5743f3bab2bd25e5f5362ded0b9ec28b78f62",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/deep-equal/index.d.ts": {
+ "version": "2e345cb6511f4c4c60c274df6626c94f3182939034f06cdf414bfbccc584f822",
+ "signature": "2e345cb6511f4c4c60c274df6626c94f3182939034f06cdf414bfbccc584f822",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/github-slugger/index.d.ts": {
+ "version": "78a1efd7214a25b84e08af80fe2b027c3049e52b26dfcaf777b82c759d8548c9",
+ "signature": "78a1efd7214a25b84e08af80fe2b027c3049e52b26dfcaf777b82c759d8548c9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/minimatch/index.d.ts": {
+ "version": "95c22bc19835e28e2e524a4bb8898eb5f2107b640d7279a6d3aade261916bbf2",
+ "signature": "95c22bc19835e28e2e524a4bb8898eb5f2107b640d7279a6d3aade261916bbf2",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/glob/index.d.ts": {
+ "version": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "signature": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/graceful-fs/index.d.ts": {
+ "version": "3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba",
+ "signature": "3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/Subscription.d.ts": {
+ "version": "6cb35d83d21a7e72bd00398c93302749bcd38349d0cc5e76ff3a90c6d1498a4d",
+ "signature": "6cb35d83d21a7e72bd00398c93302749bcd38349d0cc5e76ff3a90c6d1498a4d",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/types.d.ts": {
+ "version": "051451ceae7f29c8f17b810e6a6d8d270c67b401866f487cdc50c5c1a8b3f511",
+ "signature": "051451ceae7f29c8f17b810e6a6d8d270c67b401866f487cdc50c5c1a8b3f511",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts": {
+ "version": "2632057d8b983ee33295566088c080384d7d69a492bc60b008d6a6dfd3508d6b",
+ "signature": "2632057d8b983ee33295566088c080384d7d69a492bc60b008d6a6dfd3508d6b",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/Operator.d.ts": {
+ "version": "4bf71cf2a94492fc71e97800bdf2bcb0a9a0fa5fce921c8fe42c67060780cbfa",
+ "signature": "4bf71cf2a94492fc71e97800bdf2bcb0a9a0fa5fce921c8fe42c67060780cbfa",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/iif.d.ts": {
+ "version": "0996ff06f64cb05b6dac158a6ada2e16f8c2ccd20f9ff6f3c3e871f1ba5fb6d9",
+ "signature": "0996ff06f64cb05b6dac158a6ada2e16f8c2ccd20f9ff6f3c3e871f1ba5fb6d9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/throwError.d.ts": {
+ "version": "5c492d01a19fea5ebfff9d27e786bc533e5078909521ca17ae41236f16f9686a",
+ "signature": "5c492d01a19fea5ebfff9d27e786bc533e5078909521ca17ae41236f16f9686a",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/Observable.d.ts": {
+ "version": "a6ee930b81c65ec79aca49025b797817dde6f2d2e9b0e0106f0844e18e2cc819",
+ "signature": "a6ee930b81c65ec79aca49025b797817dde6f2d2e9b0e0106f0844e18e2cc819",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/Subject.d.ts": {
+ "version": "84fce15473e993e6b656db9dd3c9196b80f545647458e6621675e840fd700d29",
+ "signature": "84fce15473e993e6b656db9dd3c9196b80f545647458e6621675e840fd700d29",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/ConnectableObservable.d.ts": {
+ "version": "7d5336ee766aa72dffb1cc2a515f61d18a4fb61b7a2757cbccfb7b286b783dfb",
+ "signature": "7d5336ee766aa72dffb1cc2a515f61d18a4fb61b7a2757cbccfb7b286b783dfb",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/operators/groupBy.d.ts": {
+ "version": "63e96248ab63f6e7a86e31aa3e654ed6de1c3f99e3b668e04800df05874e8b77",
+ "signature": "63e96248ab63f6e7a86e31aa3e654ed6de1c3f99e3b668e04800df05874e8b77",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/symbol/observable.d.ts": {
+ "version": "ed164267a8b206892d69768f51e6e7157ad0a6e89745fbd39f3e81c4700e9a9e",
+ "signature": "ed164267a8b206892d69768f51e6e7157ad0a6e89745fbd39f3e81c4700e9a9e",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/rxjs/internal/BehaviorSubject.d.ts": {
+ "version": "06a20cc7d937074863861ea1159ac783ff97b13952b4b5d1811c7d8ab5c94776",
+ "signature": "06a20cc7d937074863861ea1159ac783ff97b13952b4b5d1811c7d8ab5c94776",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/ReplaySubject.d.ts": {
+ "version": "ab6de4af0e293eae73b67dad251af097d7bcc0b8b62de84e3674e831514cb056",
+ "signature": "ab6de4af0e293eae73b67dad251af097d7bcc0b8b62de84e3674e831514cb056",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/AsyncSubject.d.ts": {
+ "version": "18cbd79079af97af66c9c07c61b481fce14a4e7282eca078c474b40c970ba1d0",
+ "signature": "18cbd79079af97af66c9c07c61b481fce14a4e7282eca078c474b40c970ba1d0",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/Scheduler.d.ts": {
+ "version": "e7b45405689d87e745a217b648d3646fb47a6aaba9c8d775204de90c7ea9ff35",
+ "signature": "e7b45405689d87e745a217b648d3646fb47a6aaba9c8d775204de90c7ea9ff35",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/scheduler/Action.d.ts": {
+ "version": "669b754ec246dd7471e19b655b73bda6c2ca5bb7ccb1a4dff44a9ae45b6a716a",
+ "signature": "669b754ec246dd7471e19b655b73bda6c2ca5bb7ccb1a4dff44a9ae45b6a716a",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/scheduler/AsyncScheduler.d.ts": {
+ "version": "bcfaca4a8ff50f57fd36df91fba5d34056883f213baff7192cbfc4d3805d2084",
+ "signature": "bcfaca4a8ff50f57fd36df91fba5d34056883f213baff7192cbfc4d3805d2084",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/scheduler/AsyncAction.d.ts": {
+ "version": "76a564b360b267502219a89514953058494713ee0923a63b2024e542c18b40e5",
+ "signature": "76a564b360b267502219a89514953058494713ee0923a63b2024e542c18b40e5",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/scheduler/AsapScheduler.d.ts": {
+ "version": "8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25",
+ "signature": "8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/scheduler/asap.d.ts": {
+ "version": "a20629551ed7923f35f7556c4c15d0c8b2ebe7afaa68ceaab079a1707ba64be2",
+ "signature": "a20629551ed7923f35f7556c4c15d0c8b2ebe7afaa68ceaab079a1707ba64be2",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/scheduler/async.d.ts": {
+ "version": "d6de66600c97cd499526ddecea6e12166ab1c0e8d9bf36fb2339fd39c8b3372a",
+ "signature": "d6de66600c97cd499526ddecea6e12166ab1c0e8d9bf36fb2339fd39c8b3372a",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/scheduler/QueueScheduler.d.ts": {
+ "version": "8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f",
+ "signature": "8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/scheduler/queue.d.ts": {
+ "version": "a8932876de2e3138a5a27f9426b225a4d27f0ba0a1e2764ba20930b4c3faf4b9",
+ "signature": "a8932876de2e3138a5a27f9426b225a4d27f0ba0a1e2764ba20930b4c3faf4b9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/scheduler/AnimationFrameScheduler.d.ts": {
+ "version": "df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b",
+ "signature": "df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/scheduler/animationFrame.d.ts": {
+ "version": "027d600e00c5f5e1816c207854285d736f2f5fa28276e2829db746d5d6811ba1",
+ "signature": "027d600e00c5f5e1816c207854285d736f2f5fa28276e2829db746d5d6811ba1",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/scheduler/VirtualTimeScheduler.d.ts": {
+ "version": "5443113a16ef378446e08d6500bb48b35de582426459abdb5c9704f5c7d327d9",
+ "signature": "5443113a16ef378446e08d6500bb48b35de582426459abdb5c9704f5c7d327d9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/Notification.d.ts": {
+ "version": "0fb581ecb53304a3c95bb930160b4fa610537470cce850371cbaad5a458ca0d9",
+ "signature": "0fb581ecb53304a3c95bb930160b4fa610537470cce850371cbaad5a458ca0d9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/util/pipe.d.ts": {
+ "version": "7da4e290c009d7967343a7f8c3f145a3d2c157c62483362183ba9f637a536489",
+ "signature": "7da4e290c009d7967343a7f8c3f145a3d2c157c62483362183ba9f637a536489",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/util/noop.d.ts": {
+ "version": "eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991",
+ "signature": "eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/util/identity.d.ts": {
+ "version": "914560d0c4c6aa947cfe7489fe970c94ba25383c414bbe0168b44fd20dbf0df4",
+ "signature": "914560d0c4c6aa947cfe7489fe970c94ba25383c414bbe0168b44fd20dbf0df4",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/util/isObservable.d.ts": {
+ "version": "4fb3405055b54566dea2135845c3a776339e7e170d692401d97fd41ad9a20e5d",
+ "signature": "4fb3405055b54566dea2135845c3a776339e7e170d692401d97fd41ad9a20e5d",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/util/ArgumentOutOfRangeError.d.ts": {
+ "version": "8d607832a6ef0eac30657173441367dd76c96bf7800d77193428b922e060c3af",
+ "signature": "8d607832a6ef0eac30657173441367dd76c96bf7800d77193428b922e060c3af",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/util/EmptyError.d.ts": {
+ "version": "20ff7207f0bb5cdde5fee8e83315ade7e5b8100cfa2087d20d39069a3d7d06f4",
+ "signature": "20ff7207f0bb5cdde5fee8e83315ade7e5b8100cfa2087d20d39069a3d7d06f4",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/util/ObjectUnsubscribedError.d.ts": {
+ "version": "7ca4c534eab7cff43d81327e369a23464bc37ef38ce5337ceff24a42c6c84eb2",
+ "signature": "7ca4c534eab7cff43d81327e369a23464bc37ef38ce5337ceff24a42c6c84eb2",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/util/UnsubscriptionError.d.ts": {
+ "version": "5252dec18a34078398be4e321dee884dc7f47930e5225262543a799b591b36d2",
+ "signature": "5252dec18a34078398be4e321dee884dc7f47930e5225262543a799b591b36d2",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/util/TimeoutError.d.ts": {
+ "version": "23caed4dff98bd28157d2b798b43f1dfefe727f18641648c01ce4e0e929a1630",
+ "signature": "23caed4dff98bd28157d2b798b43f1dfefe727f18641648c01ce4e0e929a1630",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/bindCallback.d.ts": {
+ "version": "f67e013d5374826596d7c23dbae1cdb14375a27cd72e16c5fb46a4b445059329",
+ "signature": "f67e013d5374826596d7c23dbae1cdb14375a27cd72e16c5fb46a4b445059329",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/bindNodeCallback.d.ts": {
+ "version": "ea3401b70e2302683bbf4c18b69ef2292b60f4d8f8e6d920413b81fb7bde0f65",
+ "signature": "ea3401b70e2302683bbf4c18b69ef2292b60f4d8f8e6d920413b81fb7bde0f65",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/InnerSubscriber.d.ts": {
+ "version": "71afe26642c0fb86b9f8b1af4af5deb5181b43b6542a3ff2314871b53d04c749",
+ "signature": "71afe26642c0fb86b9f8b1af4af5deb5181b43b6542a3ff2314871b53d04c749",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/OuterSubscriber.d.ts": {
+ "version": "0d7f01634e6234d84cf0106508efdb8ae00e5ed126eff9606d37b031ac1de654",
+ "signature": "0d7f01634e6234d84cf0106508efdb8ae00e5ed126eff9606d37b031ac1de654",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/combineLatest.d.ts": {
+ "version": "f8d209086bad78af6bd7fef063c1ed449c815e6f8d36058115f222d9f788b848",
+ "signature": "f8d209086bad78af6bd7fef063c1ed449c815e6f8d36058115f222d9f788b848",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/concat.d.ts": {
+ "version": "3ad003278d569d1953779e2f838f7798f02e793f6a1eceac8e0065f1a202669b",
+ "signature": "3ad003278d569d1953779e2f838f7798f02e793f6a1eceac8e0065f1a202669b",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/defer.d.ts": {
+ "version": "fb2c5eceffcd918dbb86332afa0199f5e7b6cf6ee42809e930a827b28ef25afe",
+ "signature": "fb2c5eceffcd918dbb86332afa0199f5e7b6cf6ee42809e930a827b28ef25afe",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/empty.d.ts": {
+ "version": "f664aaff6a981eeca68f1ff2d9fd21b6664f47bf45f3ae19874df5a6683a8d8a",
+ "signature": "f664aaff6a981eeca68f1ff2d9fd21b6664f47bf45f3ae19874df5a6683a8d8a",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/forkJoin.d.ts": {
+ "version": "ce066f85d73e09e9adbd0049bcf6471c7eefbfc2ec4b5692b5bcef1e36babd2a",
+ "signature": "ce066f85d73e09e9adbd0049bcf6471c7eefbfc2ec4b5692b5bcef1e36babd2a",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/from.d.ts": {
+ "version": "09d302513cacfbcc54b67088739bd8ac1c3c57917f83f510b2d1adcb99fd7d2a",
+ "signature": "09d302513cacfbcc54b67088739bd8ac1c3c57917f83f510b2d1adcb99fd7d2a",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/fromEvent.d.ts": {
+ "version": "3faa54e978b92a6f726440c13fe3ab35993dc74d697c7709681dc1764a25219f",
+ "signature": "3faa54e978b92a6f726440c13fe3ab35993dc74d697c7709681dc1764a25219f",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/fromEventPattern.d.ts": {
+ "version": "2bd0489e968925eb0c4c0fb12ef090be5165c86bd088e1e803102c38d4a717d8",
+ "signature": "2bd0489e968925eb0c4c0fb12ef090be5165c86bd088e1e803102c38d4a717d8",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/generate.d.ts": {
+ "version": "88924207132b9ba339c1adb1ed3ea07e47b3149ff8a2e21a3ea1f91cee68589d",
+ "signature": "88924207132b9ba339c1adb1ed3ea07e47b3149ff8a2e21a3ea1f91cee68589d",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/interval.d.ts": {
+ "version": "b8800b93d8ab532f8915be73f8195b9d4ef06376d8a82e8cdc17c400553172d6",
+ "signature": "b8800b93d8ab532f8915be73f8195b9d4ef06376d8a82e8cdc17c400553172d6",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/merge.d.ts": {
+ "version": "d7d469703b78beba76d511957f8c8b534c3bbb02bea7ab4705c65ef573532fb8",
+ "signature": "d7d469703b78beba76d511957f8c8b534c3bbb02bea7ab4705c65ef573532fb8",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/never.d.ts": {
+ "version": "74c8c3057669c03264263d911d0f82e876cef50b05be21c54fef23c900de0420",
+ "signature": "74c8c3057669c03264263d911d0f82e876cef50b05be21c54fef23c900de0420",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/of.d.ts": {
+ "version": "b303eda2ff2d582a9c3c5ecb708fb57355cdc25e8c8197a9f66d4d1bf09fda19",
+ "signature": "b303eda2ff2d582a9c3c5ecb708fb57355cdc25e8c8197a9f66d4d1bf09fda19",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/onErrorResumeNext.d.ts": {
+ "version": "4e5dc89fa22ff43da3dee1db97d5add0591ebaff9e4adef6c8b6f0b41f0f60f0",
+ "signature": "4e5dc89fa22ff43da3dee1db97d5add0591ebaff9e4adef6c8b6f0b41f0f60f0",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/pairs.d.ts": {
+ "version": "ec4e82cb42a902fe83dc13153c7a260bee95684541f8d7ef26cb0629a2f4ca31",
+ "signature": "ec4e82cb42a902fe83dc13153c7a260bee95684541f8d7ef26cb0629a2f4ca31",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/partition.d.ts": {
+ "version": "5f36e24cd92b0ff3e2a243685a8a780c9413941c36739f04b428cc4e15de629d",
+ "signature": "5f36e24cd92b0ff3e2a243685a8a780c9413941c36739f04b428cc4e15de629d",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/race.d.ts": {
+ "version": "40a26494e6ab10a91851791169582ab77fed4fbd799518968177e7eefe08c7a9",
+ "signature": "40a26494e6ab10a91851791169582ab77fed4fbd799518968177e7eefe08c7a9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/range.d.ts": {
+ "version": "208e125b45bc561765a74f6f1019d88e44e94678769824cf93726e1bac457961",
+ "signature": "208e125b45bc561765a74f6f1019d88e44e94678769824cf93726e1bac457961",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/timer.d.ts": {
+ "version": "b3985971de086ef3aa698ef19009a53527b72e65851b782dc188ac341a1e1390",
+ "signature": "b3985971de086ef3aa698ef19009a53527b72e65851b782dc188ac341a1e1390",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/using.d.ts": {
+ "version": "c81d421aabb6113cd98b9d4f11e9a03273b363b841f294b457f37c15d513151d",
+ "signature": "c81d421aabb6113cd98b9d4f11e9a03273b363b841f294b457f37c15d513151d",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/observable/zip.d.ts": {
+ "version": "30063e3a184ff31254bbafa782c78a2d6636943dfe59e1a34f451827fd7a68dc",
+ "signature": "30063e3a184ff31254bbafa782c78a2d6636943dfe59e1a34f451827fd7a68dc",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/scheduled/scheduled.d.ts": {
+ "version": "c05d4cae0bceed02c9d013360d3e65658297acb1b7a90252fe366f2bf4f9ccc9",
+ "signature": "c05d4cae0bceed02c9d013360d3e65658297acb1b7a90252fe366f2bf4f9ccc9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/internal/config.d.ts": {
+ "version": "6f14b92848889abba03a474e0750f7350cc91fc190c107408ca48679a03975ae",
+ "signature": "6f14b92848889abba03a474e0750f7350cc91fc190c107408ca48679a03975ae",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/rxjs/index.d.ts": {
+ "version": "a588d0765b1d18bf00a498b75a83e095aef75a9300b6c1e91cbf39e408f2fe2f",
+ "signature": "a588d0765b1d18bf00a498b75a83e095aef75a9300b6c1e91cbf39e408f2fe2f",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/through/index.d.ts": {
+ "version": "656424ca784760c679bf2677d8aaf55d1cb8452cd0ac04bbe1c0f659f45f8c11",
+ "signature": "656424ca784760c679bf2677d8aaf55d1cb8452cd0ac04bbe1c0f659f45f8c11",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/inquirer/lib/objects/choice.d.ts": {
+ "version": "5d2651c679f59706bf484e7d423f0ec2d9c79897e2e68c91a3f582f21328d193",
+ "signature": "5d2651c679f59706bf484e7d423f0ec2d9c79897e2e68c91a3f582f21328d193",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/inquirer/lib/objects/separator.d.ts": {
+ "version": "30d49e69cb62f350ff0bc5dda1c557429c425014955c19c557f101c0de9272e7",
+ "signature": "30d49e69cb62f350ff0bc5dda1c557429c425014955c19c557f101c0de9272e7",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/inquirer/lib/objects/choices.d.ts": {
+ "version": "d3747dbed45540212e9a906c2fb8b5beb691f2cd0861af58a66dc01871004f38",
+ "signature": "d3747dbed45540212e9a906c2fb8b5beb691f2cd0861af58a66dc01871004f38",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/inquirer/lib/utils/screen-manager.d.ts": {
+ "version": "05a21cbb7cbe1ec502e7baca1f4846a4e860d96bad112f3e316b995ba99715b7",
+ "signature": "05a21cbb7cbe1ec502e7baca1f4846a4e860d96bad112f3e316b995ba99715b7",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/inquirer/lib/prompts/base.d.ts": {
+ "version": "1eaee2b52f1c0e1848845a79050c1d06ae554d8050c35e3bf479f13d6ee19dd5",
+ "signature": "1eaee2b52f1c0e1848845a79050c1d06ae554d8050c35e3bf479f13d6ee19dd5",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/inquirer/lib/utils/paginator.d.ts": {
+ "version": "fd219904eea67c470dfebbaf44129b0db858207c3c3b55514bdc84de547b1687",
+ "signature": "fd219904eea67c470dfebbaf44129b0db858207c3c3b55514bdc84de547b1687",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/inquirer/lib/prompts/checkbox.d.ts": {
+ "version": "4de232968f584b960b4101b4cdae593456aff149c5d0c70c2389248e9eb9fbac",
+ "signature": "4de232968f584b960b4101b4cdae593456aff149c5d0c70c2389248e9eb9fbac",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/inquirer/lib/prompts/confirm.d.ts": {
+ "version": "933c42f6ed2768265dfb42faa817ce8d902710c57a21a1859a9c3fe5e985080e",
+ "signature": "933c42f6ed2768265dfb42faa817ce8d902710c57a21a1859a9c3fe5e985080e",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/inquirer/lib/prompts/editor.d.ts": {
+ "version": "c5430542eeebb207d651e8b00a08e4bb680c47ecb73dd388d8fa597a1fc5de5b",
+ "signature": "c5430542eeebb207d651e8b00a08e4bb680c47ecb73dd388d8fa597a1fc5de5b",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/inquirer/lib/prompts/expand.d.ts": {
+ "version": "a6c5c9906262cf10549989c0061e5a44afdc1f61da77d5e09418a9ecea0018fe",
+ "signature": "a6c5c9906262cf10549989c0061e5a44afdc1f61da77d5e09418a9ecea0018fe",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/inquirer/lib/prompts/input.d.ts": {
+ "version": "bc6e433cb982bf63eaa523dbbbd30fe12960a09861b352d77baf77ad6dd8886d",
+ "signature": "bc6e433cb982bf63eaa523dbbbd30fe12960a09861b352d77baf77ad6dd8886d",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/inquirer/lib/prompts/list.d.ts": {
+ "version": "9af64ab00918f552388252977c1569fe31890686ca1fdb8e20f58d3401c9a50c",
+ "signature": "9af64ab00918f552388252977c1569fe31890686ca1fdb8e20f58d3401c9a50c",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/inquirer/lib/prompts/number.d.ts": {
+ "version": "3d3cc03b5c6e056c24aac76789f4bc67caee98a4f0774ab82bc8ba34d16be916",
+ "signature": "3d3cc03b5c6e056c24aac76789f4bc67caee98a4f0774ab82bc8ba34d16be916",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/inquirer/lib/prompts/password.d.ts": {
+ "version": "747ce36fa27a750a05096f3610e59c9b5a55e13defec545c01a75fd13d67b620",
+ "signature": "747ce36fa27a750a05096f3610e59c9b5a55e13defec545c01a75fd13d67b620",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/inquirer/lib/prompts/rawlist.d.ts": {
+ "version": "1a8f503c64bdb36308f245960d9e4acac4cf65d8b6bd0534f88230ebf0be7883",
+ "signature": "1a8f503c64bdb36308f245960d9e4acac4cf65d8b6bd0534f88230ebf0be7883",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/inquirer/lib/ui/baseUI.d.ts": {
+ "version": "a2c1f4012459547d62116d724e7ec820bb2e6848da40ea0747bf160ffd99b283",
+ "signature": "a2c1f4012459547d62116d724e7ec820bb2e6848da40ea0747bf160ffd99b283",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/inquirer/lib/ui/bottom-bar.d.ts": {
+ "version": "0dc197e52512a7cbea4823cc33c23b0337af97bd59b38bf83be047f37cd8c9a8",
+ "signature": "0dc197e52512a7cbea4823cc33c23b0337af97bd59b38bf83be047f37cd8c9a8",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/inquirer/lib/ui/prompt.d.ts": {
+ "version": "492c93ade227fe4545fabb3035b9dd5d57d8b4fde322e5217fdaef20aa1b80a8",
+ "signature": "492c93ade227fe4545fabb3035b9dd5d57d8b4fde322e5217fdaef20aa1b80a8",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/inquirer/lib/utils/events.d.ts": {
+ "version": "83c54a3b3e836d1773b8c23ff76ce6e0aae1a2209fc772b75e9de173fec9eac0",
+ "signature": "83c54a3b3e836d1773b8c23ff76ce6e0aae1a2209fc772b75e9de173fec9eac0",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/inquirer/lib/utils/readline.d.ts": {
+ "version": "475e411f48f74c14b1f6e50cc244387a5cc8ce52340dddfae897c96e03f86527",
+ "signature": "475e411f48f74c14b1f6e50cc244387a5cc8ce52340dddfae897c96e03f86527",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/inquirer/lib/utils/utils.d.ts": {
+ "version": "5573ce7aa683a81c9a727294ffdb47d82d7715a148bfe9f4ddcf2f6cdfef1f0a",
+ "signature": "5573ce7aa683a81c9a727294ffdb47d82d7715a148bfe9f4ddcf2f6cdfef1f0a",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/inquirer/index.d.ts": {
+ "version": "2cd9edbb4a6411a9f5258237dd73323db978d7aa9ebf1d1b0ac79771ac233e24",
+ "signature": "2cd9edbb4a6411a9f5258237dd73323db978d7aa9ebf1d1b0ac79771ac233e24",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/istanbul-lib-coverage/index.d.ts": {
+ "version": "de18acda71730bac52f4b256ce7511bb56cc21f6f114c59c46782eff2f632857",
+ "signature": "de18acda71730bac52f4b256ce7511bb56cc21f6f114c59c46782eff2f632857",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/istanbul-lib-report/index.d.ts": {
+ "version": "7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee",
+ "signature": "7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/istanbul-reports/index.d.ts": {
+ "version": "905c3e8f7ddaa6c391b60c05b2f4c3931d7127ad717a080359db3df510b7bdab",
+ "signature": "905c3e8f7ddaa6c391b60c05b2f4c3931d7127ad717a080359db3df510b7bdab",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/jest-diff/build/cleanupSemantic.d.ts": {
+ "version": "d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322",
+ "signature": "d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/jest-diff/build/types.d.ts": {
+ "version": "69da61a7b5093dac77fa3bec8be95dcf9a74c95a0e9161edb98bb24e30e439d2",
+ "signature": "69da61a7b5093dac77fa3bec8be95dcf9a74c95a0e9161edb98bb24e30e439d2",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/jest-diff/build/diffLines.d.ts": {
+ "version": "561eca7a381b96d6ccac6e4061e6d2ae53f5bc44203f3fd9f5b26864c32ae6e9",
+ "signature": "561eca7a381b96d6ccac6e4061e6d2ae53f5bc44203f3fd9f5b26864c32ae6e9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/jest-diff/build/printDiffs.d.ts": {
+ "version": "62ea38627e3ebab429f7616812a9394d327c2bc271003dfba985de9b4137369f",
+ "signature": "62ea38627e3ebab429f7616812a9394d327c2bc271003dfba985de9b4137369f",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/jest-diff/build/index.d.ts": {
+ "version": "b4439890c168d646357928431100daac5cbdee1d345a34e6bf6eca9f3abe22bc",
+ "signature": "b4439890c168d646357928431100daac5cbdee1d345a34e6bf6eca9f3abe22bc",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/pretty-format/build/types.d.ts": {
+ "version": "5d72971a459517c44c1379dab9ed248e87a61ba0a1e0f25c9d67e1e640cd9a09",
+ "signature": "5d72971a459517c44c1379dab9ed248e87a61ba0a1e0f25c9d67e1e640cd9a09",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/pretty-format/build/index.d.ts": {
+ "version": "02d734976af36f4273d930bea88b3e62adf6b078cf120c1c63d49aa8d8427c5c",
+ "signature": "02d734976af36f4273d930bea88b3e62adf6b078cf120c1c63d49aa8d8427c5c",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/jest/index.d.ts": {
+ "version": "ce2169125f42515a26fa60977b6d56ae407f3462e28832fbf6a9013f6a828bab",
+ "signature": "ce2169125f42515a26fa60977b6d56ae407f3462e28832fbf6a9013f6a828bab",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/unist/index.d.ts": {
+ "version": "1320ee42b30487cceb6da9f230354fc34826111f76bf12f0ad76c717c12625b0",
+ "signature": "1320ee42b30487cceb6da9f230354fc34826111f76bf12f0ad76c717c12625b0",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/mdast/index.d.ts": {
+ "version": "9a6d65d77455efaaaeff945bea30c38b8fe0922b807ba45cd23792392f1bfe76",
+ "signature": "9a6d65d77455efaaaeff945bea30c38b8fe0922b807ba45cd23792392f1bfe76",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/mkdirp/index.d.ts": {
+ "version": "c535422967fe3cf8adfee4e1a543870aede1fa77fd055a382e6f6582a2d866eb",
+ "signature": "c535422967fe3cf8adfee4e1a543870aede1fa77fd055a382e6f6582a2d866eb",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/ms/index.d.ts": {
+ "version": "6a9c5127096b35264eb7cd21b2417bfc1d42cceca9ba4ce2bb0c3410b7816042",
+ "signature": "6a9c5127096b35264eb7cd21b2417bfc1d42cceca9ba4ce2bb0c3410b7816042",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/mysql/index.d.ts": {
+ "version": "c1046058da50621bb461aa788e69782f3ce7eb81ef776933f718f4fda70f5a05",
+ "signature": "c1046058da50621bb461aa788e69782f3ce7eb81ef776933f718f4fda70f5a05",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/normalize-package-data/index.d.ts": {
+ "version": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "signature": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/parse-json/index.d.ts": {
+ "version": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "signature": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/pluralize/index.d.ts": {
+ "version": "8f7a2387ecc680872d09a6edbca1612d699f77ee5a5129944935c3798a613d04",
+ "signature": "8f7a2387ecc680872d09a6edbca1612d699f77ee5a5129944935c3798a613d04",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/prettier/index.d.ts": {
+ "version": "08b428a44bc98005536a12456518797e9afe2a08e8b5d9785641713a54475881",
+ "signature": "08b428a44bc98005536a12456518797e9afe2a08e8b5d9785641713a54475881",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/prop-types/index.d.ts": {
+ "version": "a7e32dcb90bf0c1b7a1e4ac89b0f7747cbcba25e7beddc1ebf17be1e161842ad",
+ "signature": "a7e32dcb90bf0c1b7a1e4ac89b0f7747cbcba25e7beddc1ebf17be1e161842ad",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/react/global.d.ts": {
+ "version": "ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6",
+ "signature": "ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/csstype/index.d.ts": {
+ "version": "0a6f28e1d77b99b0ef7da2f0bf50f301ea8a7eb7b4f573e458e725452a477bd2",
+ "signature": "0a6f28e1d77b99b0ef7da2f0bf50f301ea8a7eb7b4f573e458e725452a477bd2",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/scheduler/tracing.d.ts": {
+ "version": "f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",
+ "signature": "f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/react/index.d.ts": {
+ "version": "5d708266116e778d6a4140fca2ac36f71d99b4c68bc3be63a45ba8bf5ade5348",
+ "signature": "5d708266116e778d6a4140fca2ac36f71d99b4c68bc3be63a45ba8bf5ade5348",
+ "affectsGlobalScope": true
+ },
+ "../../../node_modules/@types/rimraf/index.d.ts": {
+ "version": "6462324ef579c47415610a63f1aa8b72f5b5114f8fe8307967f9add2bca634f5",
+ "signature": "6462324ef579c47415610a63f1aa8b72f5b5114f8fe8307967f9add2bca634f5",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/scheduler/index.d.ts": {
+ "version": "3169db033165677f1d414baf0c82ba27801089ca1b66d97af464512a47df31b5",
+ "signature": "3169db033165677f1d414baf0c82ba27801089ca1b66d97af464512a47df31b5",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/classes/semver.d.ts": {
+ "version": "d9e55d93aa33fad61bd5c63800972d00ba8879ec5d29f6f3bce67d16d86abc33",
+ "signature": "d9e55d93aa33fad61bd5c63800972d00ba8879ec5d29f6f3bce67d16d86abc33",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/parse.d.ts": {
+ "version": "2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069",
+ "signature": "2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/valid.d.ts": {
+ "version": "42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff",
+ "signature": "42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/clean.d.ts": {
+ "version": "d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301",
+ "signature": "d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/inc.d.ts": {
+ "version": "77c1d91a129ba60b8c405f9f539e42df834afb174fe0785f89d92a2c7c16b77a",
+ "signature": "77c1d91a129ba60b8c405f9f539e42df834afb174fe0785f89d92a2c7c16b77a",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/diff.d.ts": {
+ "version": "c544d81603149987796b24cca297c965db427b84b2580fb27e52fb37ddc1f470",
+ "signature": "c544d81603149987796b24cca297c965db427b84b2580fb27e52fb37ddc1f470",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/major.d.ts": {
+ "version": "906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a",
+ "signature": "906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/minor.d.ts": {
+ "version": "5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351",
+ "signature": "5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/patch.d.ts": {
+ "version": "c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6",
+ "signature": "c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/prerelease.d.ts": {
+ "version": "758e82e32536b66a139e34bb7e067dd860b563070f9746a0ae5cd802588f4def",
+ "signature": "758e82e32536b66a139e34bb7e067dd860b563070f9746a0ae5cd802588f4def",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/compare.d.ts": {
+ "version": "e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe",
+ "signature": "e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/rcompare.d.ts": {
+ "version": "9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0",
+ "signature": "9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/compare-loose.d.ts": {
+ "version": "0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6",
+ "signature": "0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/compare-build.d.ts": {
+ "version": "9eb2875a1e4c583066af7d6194ea8162191b2756e5d87ccb3c562fdf74d06869",
+ "signature": "9eb2875a1e4c583066af7d6194ea8162191b2756e5d87ccb3c562fdf74d06869",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/sort.d.ts": {
+ "version": "c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d",
+ "signature": "c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/rsort.d.ts": {
+ "version": "2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af",
+ "signature": "2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/gt.d.ts": {
+ "version": "479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579",
+ "signature": "479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/lt.d.ts": {
+ "version": "ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54",
+ "signature": "ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/eq.d.ts": {
+ "version": "f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9",
+ "signature": "f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/neq.d.ts": {
+ "version": "86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8",
+ "signature": "86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/gte.d.ts": {
+ "version": "2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954",
+ "signature": "2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/lte.d.ts": {
+ "version": "a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1",
+ "signature": "a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/cmp.d.ts": {
+ "version": "b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898",
+ "signature": "b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/coerce.d.ts": {
+ "version": "61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa",
+ "signature": "61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/classes/comparator.d.ts": {
+ "version": "5349dc09f88a35d52dc0bf24c44ebfd10dcb13e052d79133a56e1ac127162a4d",
+ "signature": "5349dc09f88a35d52dc0bf24c44ebfd10dcb13e052d79133a56e1ac127162a4d",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/classes/range.d.ts": {
+ "version": "6eef5113135a0f2bbac8259909a5bbb7666bcde022c28f4ab95145623cbe1f72",
+ "signature": "6eef5113135a0f2bbac8259909a5bbb7666bcde022c28f4ab95145623cbe1f72",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/functions/satisfies.d.ts": {
+ "version": "058b8dd97b7c67b6bf33e7bda7b1e247b019b675d4b6449d14ac002091a8b4f8",
+ "signature": "058b8dd97b7c67b6bf33e7bda7b1e247b019b675d4b6449d14ac002091a8b4f8",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/ranges/max-satisfying.d.ts": {
+ "version": "89c8a7b88c378663a8124664f2d9b8c2887e186b55aa066edf6d67177ca1aa04",
+ "signature": "89c8a7b88c378663a8124664f2d9b8c2887e186b55aa066edf6d67177ca1aa04",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/ranges/min-satisfying.d.ts": {
+ "version": "5a30ba65ad753eb2ef65355dbb3011b28b192cb9df2ef0b5f595b51ca7faf353",
+ "signature": "5a30ba65ad753eb2ef65355dbb3011b28b192cb9df2ef0b5f595b51ca7faf353",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/ranges/to-comparators.d.ts": {
+ "version": "5192f9a6469f849e0863616b668fde54bcd6704394b4bfbd115691865f66d761",
+ "signature": "5192f9a6469f849e0863616b668fde54bcd6704394b4bfbd115691865f66d761",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/ranges/min-version.d.ts": {
+ "version": "f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17",
+ "signature": "f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/ranges/valid.d.ts": {
+ "version": "0123340327efb174818f4b78bf6a9b12f8470754e6afac9e4d32a2ad27521f7b",
+ "signature": "0123340327efb174818f4b78bf6a9b12f8470754e6afac9e4d32a2ad27521f7b",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/ranges/outside.d.ts": {
+ "version": "9795e0a3a45d5b6f1a791ee54b7c8b58bc931e8900966cea2dff9c5bae56073b",
+ "signature": "9795e0a3a45d5b6f1a791ee54b7c8b58bc931e8900966cea2dff9c5bae56073b",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/ranges/gtr.d.ts": {
+ "version": "5890be29879d02424b7654f40592915189034948f7a18c5ad121c006d4e92811",
+ "signature": "5890be29879d02424b7654f40592915189034948f7a18c5ad121c006d4e92811",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/ranges/ltr.d.ts": {
+ "version": "0ab49086f10c75a1cb3b18bffe799dae021774146d8a2d5a4bb42dda67b64f9b",
+ "signature": "0ab49086f10c75a1cb3b18bffe799dae021774146d8a2d5a4bb42dda67b64f9b",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/ranges/intersects.d.ts": {
+ "version": "81c77839e152b8f715ec67b0a8b910bcc2d6cf916794c3519f8798c40efd12ac",
+ "signature": "81c77839e152b8f715ec67b0a8b910bcc2d6cf916794c3519f8798c40efd12ac",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/ranges/simplify.d.ts": {
+ "version": "a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29",
+ "signature": "a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/ranges/subset.d.ts": {
+ "version": "464843c00fb3dd4735b28255c5c9fe713f16b8e47a3db09ba1647687440f7aef",
+ "signature": "464843c00fb3dd4735b28255c5c9fe713f16b8e47a3db09ba1647687440f7aef",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/internals/identifiers.d.ts": {
+ "version": "34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0",
+ "signature": "34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/semver/index.d.ts": {
+ "version": "03d2e70c34640b553ed580286eb234835695ea1e473d837a4ced672648d453cd",
+ "signature": "03d2e70c34640b553ed580286eb234835695ea1e473d837a4ced672648d453cd",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/sqlite3/index.d.ts": {
+ "version": "502cca269275c29bf4b7cf2175ed724d07fda07132a38095f5a89726661a8265",
+ "signature": "502cca269275c29bf4b7cf2175ed724d07fda07132a38095f5a89726661a8265",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/stack-utils/index.d.ts": {
+ "version": "c6c4fea9acc55d5e38ff2b70d57ab0b5cdbd08f8bc5d7a226e322cea128c5b57",
+ "signature": "c6c4fea9acc55d5e38ff2b70d57ab0b5cdbd08f8bc5d7a226e322cea128c5b57",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/uppercamelcase/index.d.ts": {
+ "version": "d3edfa3fc810d29d0c125447f8119d3d33dec1a2e6118c01776e7513b5cdbea6",
+ "signature": "d3edfa3fc810d29d0c125447f8119d3d33dec1a2e6118c01776e7513b5cdbea6",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/yargs-parser/index.d.ts": {
+ "version": "3bdd93ec24853e61bfa4c63ebaa425ff3e474156e87a47d90122e1d8cc717c1f",
+ "signature": "3bdd93ec24853e61bfa4c63ebaa425ff3e474156e87a47d90122e1d8cc717c1f",
+ "affectsGlobalScope": false
+ },
+ "../../../node_modules/@types/yargs/index.d.ts": {
+ "version": "5a2a25feca554a8f289ed62114771b8c63d89f2b58325e2f8b7043e4e0160d11",
+ "signature": "5a2a25feca554a8f289ed62114771b8c63d89f2b58325e2f8b7043e4e0160d11",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "target": 6,
+ "module": 1,
+ "declaration": true,
+ "sourceMap": true,
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": false,
+ "noImplicitReturns": true,
+ "noFallthroughCasesInSwitch": true,
+ "jsx": 1,
+ "lib": [
+ "lib.es2016.d.ts",
+ "lib.dom.d.ts"
+ ],
+ "pretty": true,
+ "composite": true,
+ "rootDir": "../src",
+ "outDir": "./",
+ "tsBuildInfoFile": "./tsconfig.tsbuildinfo",
+ "configFilePath": "../tsconfig.json"
+ },
+ "referencedMap": {
+ "../../../node_modules/@babel/parser/typings/babel-parser.d.ts": [
+ "../../../node_modules/@babel/types/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/babel__core/index.d.ts": [
+ "../../../node_modules/@babel/parser/typings/babel-parser.d.ts",
+ "../../../node_modules/@babel/types/lib/index.d.ts",
+ "../../../node_modules/@types/babel__generator/index.d.ts",
+ "../../../node_modules/@types/babel__template/index.d.ts",
+ "../../../node_modules/@types/babel__traverse/index.d.ts"
+ ],
+ "../../../node_modules/@types/babel__generator/index.d.ts": [
+ "../../../node_modules/@babel/types/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/babel__template/index.d.ts": [
+ "../../../node_modules/@babel/parser/typings/babel-parser.d.ts",
+ "../../../node_modules/@babel/types/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/babel__traverse/index.d.ts": [
+ "../../../node_modules/@babel/types/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/cosmiconfig/index.d.ts": [
+ "../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../node_modules/@types/cross-spawn/index.d.ts": [
+ "../../../node_modules/@types/node/child_process.d.ts",
+ "../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../node_modules/@types/glob/index.d.ts": [
+ "../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../node_modules/@types/graceful-fs/index.d.ts": [
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/index.d.ts": [
+ "../../../node_modules/@types/inquirer/lib/objects/choice.d.ts",
+ "../../../node_modules/@types/inquirer/lib/objects/choices.d.ts",
+ "../../../node_modules/@types/inquirer/lib/objects/separator.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/base.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/checkbox.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/confirm.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/editor.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/expand.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/input.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/list.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/number.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/password.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/rawlist.d.ts",
+ "../../../node_modules/@types/inquirer/lib/ui/bottom-bar.d.ts",
+ "../../../node_modules/@types/inquirer/lib/ui/prompt.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/events.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/paginator.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/readline.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/screen-manager.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/utils.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts",
+ "../../../node_modules/@types/through/index.d.ts",
+ "../../../node_modules/rxjs/index.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/objects/choice.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/objects/choices.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/objects/choice.d.ts",
+ "../../../node_modules/@types/inquirer/lib/objects/separator.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/objects/separator.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/prompts/base.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/screen-manager.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts",
+ "../../../node_modules/rxjs/index.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/prompts/checkbox.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/base.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/paginator.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/prompts/confirm.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/base.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/prompts/editor.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/base.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts",
+ "../../../node_modules/rxjs/index.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/prompts/expand.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/base.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/paginator.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/prompts/input.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/base.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/prompts/list.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/base.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/paginator.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/prompts/number.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/input.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/prompts/password.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/base.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/prompts/rawlist.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/base.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/paginator.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/ui/baseUI.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/ui/bottom-bar.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/ui/baseUI.d.ts",
+ "../../../node_modules/@types/through/index.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/ui/prompt.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/ui/baseUI.d.ts",
+ "../../../node_modules/rxjs/index.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/utils/events.d.ts": [
+ "../../../node_modules/@types/node/readline.d.ts",
+ "../../../node_modules/rxjs/index.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/utils/paginator.d.ts": [
+ "../../../node_modules/@types/inquirer/lib/utils/screen-manager.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/utils/readline.d.ts": [
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/utils/screen-manager.d.ts": [
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/utils/utils.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/rxjs/index.d.ts"
+ ],
+ "../../../node_modules/@types/istanbul-lib-report/index.d.ts": [
+ "../../../node_modules/@types/istanbul-lib-coverage/index.d.ts"
+ ],
+ "../../../node_modules/@types/istanbul-reports/index.d.ts": [
+ "../../../node_modules/@types/istanbul-lib-report/index.d.ts"
+ ],
+ "../../../node_modules/@types/jest/index.d.ts": [
+ "../../../node_modules/jest-diff/build/index.d.ts",
+ "../../../node_modules/pretty-format/build/index.d.ts"
+ ],
+ "../../../node_modules/@types/mdast/index.d.ts": [
+ "../../../node_modules/@types/unist/index.d.ts"
+ ],
+ "../../../node_modules/@types/mkdirp/index.d.ts": [
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../node_modules/@types/mysql/index.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts"
+ ],
+ "../../../node_modules/@types/node/assert.d.ts": [
+ "../../../node_modules/@types/node/assert.d.ts"
+ ],
+ "../../../node_modules/@types/node/async_hooks.d.ts": [
+ "../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../node_modules/@types/node/base.d.ts": [
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../node_modules/@types/node/buffer.d.ts": [
+ "../../../node_modules/@types/node/buffer.d.ts"
+ ],
+ "../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../node_modules/@types/node/child_process.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../node_modules/@types/node/child_process.d.ts",
+ "../../../node_modules/@types/node/cluster.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../node_modules/@types/node/console.d.ts": [
+ "../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../node_modules/@types/node/constants.d.ts": [
+ "../../../node_modules/@types/node/constants.d.ts",
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../node_modules/@types/node/dgram.d.ts",
+ "../../../node_modules/@types/node/dns.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../node_modules/@types/node/dns.d.ts": [
+ "../../../node_modules/@types/node/dns.d.ts"
+ ],
+ "../../../node_modules/@types/node/domain.d.ts": [
+ "../../../node_modules/@types/node/domain.d.ts",
+ "../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../node_modules/@types/node/events.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../node_modules/@types/node/fs.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts"
+ ],
+ "../../../node_modules/@types/node/http.d.ts": [
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/http2.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/http2.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/https.d.ts": [
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/https.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/index.d.ts": [
+ "../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/inspector.d.ts"
+ ],
+ "../../../node_modules/@types/node/module.d.ts": [
+ "../../../node_modules/@types/node/module.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/net.d.ts": [
+ "../../../node_modules/@types/node/dns.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/os.d.ts": [
+ "../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../node_modules/@types/node/path.d.ts": [
+ "../../../node_modules/@types/node/path.d.ts"
+ ],
+ "../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../node_modules/@types/node/perf_hooks.d.ts"
+ ],
+ "../../../node_modules/@types/node/process.d.ts": [
+ "../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../node_modules/@types/node/punycode.d.ts": [
+ "../../../node_modules/@types/node/punycode.d.ts"
+ ],
+ "../../../node_modules/@types/node/querystring.d.ts": [
+ "../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../node_modules/@types/node/readline.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/node/repl.d.ts": [
+ "../../../node_modules/@types/node/readline.d.ts",
+ "../../../node_modules/@types/node/repl.d.ts",
+ "../../../node_modules/@types/node/util.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../node_modules/@types/node/stream.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/string_decoder.d.ts": [
+ "../../../node_modules/@types/node/string_decoder.d.ts"
+ ],
+ "../../../node_modules/@types/node/timers.d.ts": [
+ "../../../node_modules/@types/node/timers.d.ts"
+ ],
+ "../../../node_modules/@types/node/tls.d.ts": [
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts"
+ ],
+ "../../../node_modules/@types/node/trace_events.d.ts": [
+ "../../../node_modules/@types/node/trace_events.d.ts"
+ ],
+ "../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../node_modules/@types/node/buffer.d.ts",
+ "../../../node_modules/@types/node/child_process.d.ts",
+ "../../../node_modules/@types/node/cluster.d.ts",
+ "../../../node_modules/@types/node/console.d.ts",
+ "../../../node_modules/@types/node/constants.d.ts",
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/dgram.d.ts",
+ "../../../node_modules/@types/node/dns.d.ts",
+ "../../../node_modules/@types/node/domain.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../node_modules/@types/node/globals.d.ts",
+ "../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/http2.d.ts",
+ "../../../node_modules/@types/node/https.d.ts",
+ "../../../node_modules/@types/node/inspector.d.ts",
+ "../../../node_modules/@types/node/module.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/os.d.ts",
+ "../../../node_modules/@types/node/path.d.ts",
+ "../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../node_modules/@types/node/process.d.ts",
+ "../../../node_modules/@types/node/punycode.d.ts",
+ "../../../node_modules/@types/node/querystring.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts",
+ "../../../node_modules/@types/node/repl.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../node_modules/@types/node/timers.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts",
+ "../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../node_modules/@types/node/tty.d.ts",
+ "../../../node_modules/@types/node/url.d.ts",
+ "../../../node_modules/@types/node/util.d.ts",
+ "../../../node_modules/@types/node/v8.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts",
+ "../../../node_modules/@types/node/wasi.d.ts",
+ "../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../node_modules/@types/node/tty.d.ts": [
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../node_modules/@types/node/url.d.ts": [
+ "../../../node_modules/@types/node/querystring.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/util.d.ts": [
+ "../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../node_modules/@types/node/v8.d.ts": [
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/v8.d.ts"
+ ],
+ "../../../node_modules/@types/node/vm.d.ts": [
+ "../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../node_modules/@types/node/wasi.d.ts": [
+ "../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/url.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts",
+ "../../../node_modules/@types/node/worker_threads.d.ts"
+ ],
+ "../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../node_modules/@types/react/index.d.ts": [
+ "../../../node_modules/@types/prop-types/index.d.ts",
+ "../../../node_modules/@types/react/global.d.ts",
+ "../../../node_modules/@types/scheduler/tracing.d.ts",
+ "../../../node_modules/csstype/index.d.ts"
+ ],
+ "../../../node_modules/@types/rimraf/index.d.ts": [
+ "../../../node_modules/@types/glob/index.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/classes/comparator.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/classes/range.d.ts": [
+ "../../../node_modules/@types/semver/classes/comparator.d.ts",
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/classes/semver.d.ts": [
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/clean.d.ts": [
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/cmp.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/coerce.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/compare-build.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/compare-loose.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/compare.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/diff.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/eq.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/gt.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/gte.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/inc.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/lt.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/lte.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/major.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/minor.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/neq.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/parse.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/patch.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/prerelease.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/rcompare.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/rsort.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/satisfies.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/sort.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/valid.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/index.d.ts": [
+ "../../../node_modules/@types/semver/classes/comparator.d.ts",
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/functions/clean.d.ts",
+ "../../../node_modules/@types/semver/functions/cmp.d.ts",
+ "../../../node_modules/@types/semver/functions/coerce.d.ts",
+ "../../../node_modules/@types/semver/functions/compare-build.d.ts",
+ "../../../node_modules/@types/semver/functions/compare-loose.d.ts",
+ "../../../node_modules/@types/semver/functions/compare.d.ts",
+ "../../../node_modules/@types/semver/functions/diff.d.ts",
+ "../../../node_modules/@types/semver/functions/eq.d.ts",
+ "../../../node_modules/@types/semver/functions/gt.d.ts",
+ "../../../node_modules/@types/semver/functions/gte.d.ts",
+ "../../../node_modules/@types/semver/functions/inc.d.ts",
+ "../../../node_modules/@types/semver/functions/lt.d.ts",
+ "../../../node_modules/@types/semver/functions/lte.d.ts",
+ "../../../node_modules/@types/semver/functions/major.d.ts",
+ "../../../node_modules/@types/semver/functions/minor.d.ts",
+ "../../../node_modules/@types/semver/functions/neq.d.ts",
+ "../../../node_modules/@types/semver/functions/parse.d.ts",
+ "../../../node_modules/@types/semver/functions/patch.d.ts",
+ "../../../node_modules/@types/semver/functions/prerelease.d.ts",
+ "../../../node_modules/@types/semver/functions/rcompare.d.ts",
+ "../../../node_modules/@types/semver/functions/rsort.d.ts",
+ "../../../node_modules/@types/semver/functions/satisfies.d.ts",
+ "../../../node_modules/@types/semver/functions/sort.d.ts",
+ "../../../node_modules/@types/semver/functions/valid.d.ts",
+ "../../../node_modules/@types/semver/internals/identifiers.d.ts",
+ "../../../node_modules/@types/semver/ranges/gtr.d.ts",
+ "../../../node_modules/@types/semver/ranges/intersects.d.ts",
+ "../../../node_modules/@types/semver/ranges/ltr.d.ts",
+ "../../../node_modules/@types/semver/ranges/max-satisfying.d.ts",
+ "../../../node_modules/@types/semver/ranges/min-satisfying.d.ts",
+ "../../../node_modules/@types/semver/ranges/min-version.d.ts",
+ "../../../node_modules/@types/semver/ranges/outside.d.ts",
+ "../../../node_modules/@types/semver/ranges/simplify.d.ts",
+ "../../../node_modules/@types/semver/ranges/subset.d.ts",
+ "../../../node_modules/@types/semver/ranges/to-comparators.d.ts",
+ "../../../node_modules/@types/semver/ranges/valid.d.ts"
+ ],
+ "../../../node_modules/@types/semver/ranges/gtr.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/ranges/intersects.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/ranges/ltr.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/ranges/max-satisfying.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/ranges/min-satisfying.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/ranges/min-version.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/ranges/outside.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/ranges/simplify.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/ranges/subset.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/ranges/to-comparators.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/ranges/valid.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/sqlite3/index.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../node_modules/@types/through/index.d.ts": [
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/yargs/index.d.ts": [
+ "../../../node_modules/@types/yargs-parser/index.d.ts"
+ ],
+ "../../../node_modules/jest-diff/build/diffLines.d.ts": [
+ "../../../node_modules/jest-diff/build/cleanupSemantic.d.ts",
+ "../../../node_modules/jest-diff/build/types.d.ts"
+ ],
+ "../../../node_modules/jest-diff/build/index.d.ts": [
+ "../../../node_modules/jest-diff/build/cleanupSemantic.d.ts",
+ "../../../node_modules/jest-diff/build/diffLines.d.ts",
+ "../../../node_modules/jest-diff/build/printDiffs.d.ts",
+ "../../../node_modules/jest-diff/build/types.d.ts"
+ ],
+ "../../../node_modules/jest-diff/build/printDiffs.d.ts": [
+ "../../../node_modules/jest-diff/build/cleanupSemantic.d.ts",
+ "../../../node_modules/jest-diff/build/types.d.ts"
+ ],
+ "../../../node_modules/pretty-format/build/index.d.ts": [
+ "../../../node_modules/pretty-format/build/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/index.d.ts": [
+ "../../../node_modules/rxjs/internal/AsyncSubject.d.ts",
+ "../../../node_modules/rxjs/internal/BehaviorSubject.d.ts",
+ "../../../node_modules/rxjs/internal/Notification.d.ts",
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/Operator.d.ts",
+ "../../../node_modules/rxjs/internal/ReplaySubject.d.ts",
+ "../../../node_modules/rxjs/internal/Scheduler.d.ts",
+ "../../../node_modules/rxjs/internal/Subject.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/config.d.ts",
+ "../../../node_modules/rxjs/internal/observable/ConnectableObservable.d.ts",
+ "../../../node_modules/rxjs/internal/observable/bindCallback.d.ts",
+ "../../../node_modules/rxjs/internal/observable/bindNodeCallback.d.ts",
+ "../../../node_modules/rxjs/internal/observable/combineLatest.d.ts",
+ "../../../node_modules/rxjs/internal/observable/concat.d.ts",
+ "../../../node_modules/rxjs/internal/observable/defer.d.ts",
+ "../../../node_modules/rxjs/internal/observable/empty.d.ts",
+ "../../../node_modules/rxjs/internal/observable/forkJoin.d.ts",
+ "../../../node_modules/rxjs/internal/observable/from.d.ts",
+ "../../../node_modules/rxjs/internal/observable/fromEvent.d.ts",
+ "../../../node_modules/rxjs/internal/observable/fromEventPattern.d.ts",
+ "../../../node_modules/rxjs/internal/observable/generate.d.ts",
+ "../../../node_modules/rxjs/internal/observable/iif.d.ts",
+ "../../../node_modules/rxjs/internal/observable/interval.d.ts",
+ "../../../node_modules/rxjs/internal/observable/merge.d.ts",
+ "../../../node_modules/rxjs/internal/observable/never.d.ts",
+ "../../../node_modules/rxjs/internal/observable/of.d.ts",
+ "../../../node_modules/rxjs/internal/observable/onErrorResumeNext.d.ts",
+ "../../../node_modules/rxjs/internal/observable/pairs.d.ts",
+ "../../../node_modules/rxjs/internal/observable/partition.d.ts",
+ "../../../node_modules/rxjs/internal/observable/race.d.ts",
+ "../../../node_modules/rxjs/internal/observable/range.d.ts",
+ "../../../node_modules/rxjs/internal/observable/throwError.d.ts",
+ "../../../node_modules/rxjs/internal/observable/timer.d.ts",
+ "../../../node_modules/rxjs/internal/observable/using.d.ts",
+ "../../../node_modules/rxjs/internal/observable/zip.d.ts",
+ "../../../node_modules/rxjs/internal/operators/groupBy.d.ts",
+ "../../../node_modules/rxjs/internal/scheduled/scheduled.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/VirtualTimeScheduler.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/animationFrame.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/asap.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/async.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/queue.d.ts",
+ "../../../node_modules/rxjs/internal/symbol/observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts",
+ "../../../node_modules/rxjs/internal/util/ArgumentOutOfRangeError.d.ts",
+ "../../../node_modules/rxjs/internal/util/EmptyError.d.ts",
+ "../../../node_modules/rxjs/internal/util/ObjectUnsubscribedError.d.ts",
+ "../../../node_modules/rxjs/internal/util/TimeoutError.d.ts",
+ "../../../node_modules/rxjs/internal/util/UnsubscriptionError.d.ts",
+ "../../../node_modules/rxjs/internal/util/identity.d.ts",
+ "../../../node_modules/rxjs/internal/util/isObservable.d.ts",
+ "../../../node_modules/rxjs/internal/util/noop.d.ts",
+ "../../../node_modules/rxjs/internal/util/pipe.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/AsyncSubject.d.ts": [
+ "../../../node_modules/rxjs/internal/Subject.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/BehaviorSubject.d.ts": [
+ "../../../node_modules/rxjs/internal/Subject.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/InnerSubscriber.d.ts": [
+ "../../../node_modules/rxjs/internal/OuterSubscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/Notification.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/Observable.d.ts": [
+ "../../../node_modules/rxjs/internal/Operator.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/observable/iif.d.ts",
+ "../../../node_modules/rxjs/internal/observable/throwError.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/Operator.d.ts": [
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/OuterSubscriber.d.ts": [
+ "../../../node_modules/rxjs/internal/InnerSubscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/ReplaySubject.d.ts": [
+ "../../../node_modules/rxjs/internal/Subject.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/Scheduler.d.ts": [
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/Action.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/Subject.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/Operator.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts": [
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/Subscription.d.ts": [
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/ConnectableObservable.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/Subject.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/bindCallback.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/bindNodeCallback.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/combineLatest.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/Operator.d.ts",
+ "../../../node_modules/rxjs/internal/OuterSubscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/concat.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/defer.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/empty.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/forkJoin.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/from.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/fromEvent.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/fromEventPattern.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/observable/fromEvent.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/generate.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/iif.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/interval.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/merge.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/never.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/of.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/onErrorResumeNext.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/pairs.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/partition.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/race.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/Operator.d.ts",
+ "../../../node_modules/rxjs/internal/OuterSubscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/range.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/throwError.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/timer.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/using.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/zip.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/Operator.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/operators/groupBy.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/Subject.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduled/scheduled.d.ts": [
+ "../../../node_modules/rxjs/index.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduler/Action.d.ts": [
+ "../../../node_modules/rxjs/internal/Scheduler.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduler/AnimationFrameScheduler.d.ts": [
+ "../../../node_modules/rxjs/internal/scheduler/AsyncAction.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/AsyncScheduler.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduler/AsapScheduler.d.ts": [
+ "../../../node_modules/rxjs/internal/scheduler/AsyncAction.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/AsyncScheduler.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduler/AsyncAction.d.ts": [
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/Action.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/AsyncScheduler.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduler/AsyncScheduler.d.ts": [
+ "../../../node_modules/rxjs/internal/Scheduler.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/Action.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/AsyncAction.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduler/QueueScheduler.d.ts": [
+ "../../../node_modules/rxjs/internal/scheduler/AsyncScheduler.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduler/VirtualTimeScheduler.d.ts": [
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/AsyncAction.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/AsyncScheduler.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduler/animationFrame.d.ts": [
+ "../../../node_modules/rxjs/internal/scheduler/AnimationFrameScheduler.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduler/asap.d.ts": [
+ "../../../node_modules/rxjs/internal/scheduler/AsapScheduler.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduler/async.d.ts": [
+ "../../../node_modules/rxjs/internal/scheduler/AsyncScheduler.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduler/queue.d.ts": [
+ "../../../node_modules/rxjs/internal/scheduler/QueueScheduler.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/types.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/util/isObservable.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/util/pipe.d.ts": [
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../src/__tests__/index.test.ts": [
+ "../src/index.ts"
+ ],
+ "../src/index.ts": [
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../src/web.ts"
+ ]
+ },
+ "exportedModulesMap": {
+ "../../../node_modules/@babel/parser/typings/babel-parser.d.ts": [
+ "../../../node_modules/@babel/types/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/babel__core/index.d.ts": [
+ "../../../node_modules/@babel/parser/typings/babel-parser.d.ts",
+ "../../../node_modules/@babel/types/lib/index.d.ts",
+ "../../../node_modules/@types/babel__generator/index.d.ts",
+ "../../../node_modules/@types/babel__template/index.d.ts",
+ "../../../node_modules/@types/babel__traverse/index.d.ts"
+ ],
+ "../../../node_modules/@types/babel__generator/index.d.ts": [
+ "../../../node_modules/@babel/types/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/babel__template/index.d.ts": [
+ "../../../node_modules/@babel/parser/typings/babel-parser.d.ts",
+ "../../../node_modules/@babel/types/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/babel__traverse/index.d.ts": [
+ "../../../node_modules/@babel/types/lib/index.d.ts"
+ ],
+ "../../../node_modules/@types/cosmiconfig/index.d.ts": [
+ "../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../node_modules/@types/cross-spawn/index.d.ts": [
+ "../../../node_modules/@types/node/child_process.d.ts",
+ "../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../node_modules/@types/glob/index.d.ts": [
+ "../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../node_modules/@types/graceful-fs/index.d.ts": [
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/index.d.ts": [
+ "../../../node_modules/@types/inquirer/lib/objects/choice.d.ts",
+ "../../../node_modules/@types/inquirer/lib/objects/choices.d.ts",
+ "../../../node_modules/@types/inquirer/lib/objects/separator.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/base.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/checkbox.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/confirm.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/editor.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/expand.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/input.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/list.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/number.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/password.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/rawlist.d.ts",
+ "../../../node_modules/@types/inquirer/lib/ui/bottom-bar.d.ts",
+ "../../../node_modules/@types/inquirer/lib/ui/prompt.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/events.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/paginator.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/readline.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/screen-manager.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/utils.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts",
+ "../../../node_modules/@types/through/index.d.ts",
+ "../../../node_modules/rxjs/index.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/objects/choice.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/objects/choices.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/objects/choice.d.ts",
+ "../../../node_modules/@types/inquirer/lib/objects/separator.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/objects/separator.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/prompts/base.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/screen-manager.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts",
+ "../../../node_modules/rxjs/index.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/prompts/checkbox.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/base.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/paginator.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/prompts/confirm.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/base.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/prompts/editor.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/base.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts",
+ "../../../node_modules/rxjs/index.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/prompts/expand.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/base.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/paginator.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/prompts/input.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/base.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/prompts/list.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/base.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/paginator.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/prompts/number.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/input.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/prompts/password.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/base.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/prompts/rawlist.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/base.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/paginator.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/ui/baseUI.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/ui/bottom-bar.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/ui/baseUI.d.ts",
+ "../../../node_modules/@types/through/index.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/ui/prompt.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/ui/baseUI.d.ts",
+ "../../../node_modules/rxjs/index.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/utils/events.d.ts": [
+ "../../../node_modules/@types/node/readline.d.ts",
+ "../../../node_modules/rxjs/index.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/utils/paginator.d.ts": [
+ "../../../node_modules/@types/inquirer/lib/utils/screen-manager.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/utils/readline.d.ts": [
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/utils/screen-manager.d.ts": [
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/inquirer/lib/utils/utils.d.ts": [
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/rxjs/index.d.ts"
+ ],
+ "../../../node_modules/@types/istanbul-lib-report/index.d.ts": [
+ "../../../node_modules/@types/istanbul-lib-coverage/index.d.ts"
+ ],
+ "../../../node_modules/@types/istanbul-reports/index.d.ts": [
+ "../../../node_modules/@types/istanbul-lib-report/index.d.ts"
+ ],
+ "../../../node_modules/@types/jest/index.d.ts": [
+ "../../../node_modules/jest-diff/build/index.d.ts",
+ "../../../node_modules/pretty-format/build/index.d.ts"
+ ],
+ "../../../node_modules/@types/mdast/index.d.ts": [
+ "../../../node_modules/@types/unist/index.d.ts"
+ ],
+ "../../../node_modules/@types/mkdirp/index.d.ts": [
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../node_modules/@types/mysql/index.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts"
+ ],
+ "../../../node_modules/@types/node/assert.d.ts": [
+ "../../../node_modules/@types/node/assert.d.ts"
+ ],
+ "../../../node_modules/@types/node/async_hooks.d.ts": [
+ "../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../node_modules/@types/node/base.d.ts": [
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../node_modules/@types/node/buffer.d.ts": [
+ "../../../node_modules/@types/node/buffer.d.ts"
+ ],
+ "../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../node_modules/@types/node/child_process.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../node_modules/@types/node/child_process.d.ts",
+ "../../../node_modules/@types/node/cluster.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../node_modules/@types/node/console.d.ts": [
+ "../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../node_modules/@types/node/constants.d.ts": [
+ "../../../node_modules/@types/node/constants.d.ts",
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../node_modules/@types/node/dgram.d.ts",
+ "../../../node_modules/@types/node/dns.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../node_modules/@types/node/dns.d.ts": [
+ "../../../node_modules/@types/node/dns.d.ts"
+ ],
+ "../../../node_modules/@types/node/domain.d.ts": [
+ "../../../node_modules/@types/node/domain.d.ts",
+ "../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../node_modules/@types/node/events.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../node_modules/@types/node/fs.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts"
+ ],
+ "../../../node_modules/@types/node/http.d.ts": [
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/http2.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/http2.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/https.d.ts": [
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/https.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/index.d.ts": [
+ "../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/inspector.d.ts"
+ ],
+ "../../../node_modules/@types/node/module.d.ts": [
+ "../../../node_modules/@types/node/module.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/net.d.ts": [
+ "../../../node_modules/@types/node/dns.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/os.d.ts": [
+ "../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../node_modules/@types/node/path.d.ts": [
+ "../../../node_modules/@types/node/path.d.ts"
+ ],
+ "../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../node_modules/@types/node/perf_hooks.d.ts"
+ ],
+ "../../../node_modules/@types/node/process.d.ts": [
+ "../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../node_modules/@types/node/punycode.d.ts": [
+ "../../../node_modules/@types/node/punycode.d.ts"
+ ],
+ "../../../node_modules/@types/node/querystring.d.ts": [
+ "../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../node_modules/@types/node/readline.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../../node_modules/@types/node/repl.d.ts": [
+ "../../../node_modules/@types/node/readline.d.ts",
+ "../../../node_modules/@types/node/repl.d.ts",
+ "../../../node_modules/@types/node/util.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../node_modules/@types/node/stream.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/node/string_decoder.d.ts": [
+ "../../../node_modules/@types/node/string_decoder.d.ts"
+ ],
+ "../../../node_modules/@types/node/timers.d.ts": [
+ "../../../node_modules/@types/node/timers.d.ts"
+ ],
+ "../../../node_modules/@types/node/tls.d.ts": [
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts"
+ ],
+ "../../../node_modules/@types/node/trace_events.d.ts": [
+ "../../../node_modules/@types/node/trace_events.d.ts"
+ ],
+ "../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../node_modules/@types/node/buffer.d.ts",
+ "../../../node_modules/@types/node/child_process.d.ts",
+ "../../../node_modules/@types/node/cluster.d.ts",
+ "../../../node_modules/@types/node/console.d.ts",
+ "../../../node_modules/@types/node/constants.d.ts",
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/dgram.d.ts",
+ "../../../node_modules/@types/node/dns.d.ts",
+ "../../../node_modules/@types/node/domain.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../node_modules/@types/node/globals.d.ts",
+ "../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/http2.d.ts",
+ "../../../node_modules/@types/node/https.d.ts",
+ "../../../node_modules/@types/node/inspector.d.ts",
+ "../../../node_modules/@types/node/module.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/os.d.ts",
+ "../../../node_modules/@types/node/path.d.ts",
+ "../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../node_modules/@types/node/process.d.ts",
+ "../../../node_modules/@types/node/punycode.d.ts",
+ "../../../node_modules/@types/node/querystring.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts",
+ "../../../node_modules/@types/node/repl.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../node_modules/@types/node/timers.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts",
+ "../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../node_modules/@types/node/tty.d.ts",
+ "../../../node_modules/@types/node/url.d.ts",
+ "../../../node_modules/@types/node/util.d.ts",
+ "../../../node_modules/@types/node/v8.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts",
+ "../../../node_modules/@types/node/wasi.d.ts",
+ "../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../node_modules/@types/node/tty.d.ts": [
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../node_modules/@types/node/url.d.ts": [
+ "../../../node_modules/@types/node/querystring.d.ts",
+ "../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../node_modules/@types/node/util.d.ts": [
+ "../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../node_modules/@types/node/v8.d.ts": [
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/v8.d.ts"
+ ],
+ "../../../node_modules/@types/node/vm.d.ts": [
+ "../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../node_modules/@types/node/wasi.d.ts": [
+ "../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/url.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts",
+ "../../../node_modules/@types/node/worker_threads.d.ts"
+ ],
+ "../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../node_modules/@types/react/index.d.ts": [
+ "../../../node_modules/@types/prop-types/index.d.ts",
+ "../../../node_modules/@types/react/global.d.ts",
+ "../../../node_modules/@types/scheduler/tracing.d.ts",
+ "../../../node_modules/csstype/index.d.ts"
+ ],
+ "../../../node_modules/@types/rimraf/index.d.ts": [
+ "../../../node_modules/@types/glob/index.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/classes/comparator.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/classes/range.d.ts": [
+ "../../../node_modules/@types/semver/classes/comparator.d.ts",
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/classes/semver.d.ts": [
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/clean.d.ts": [
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/cmp.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/coerce.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/compare-build.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/compare-loose.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/compare.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/diff.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/eq.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/gt.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/gte.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/inc.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/lt.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/lte.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/major.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/minor.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/neq.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/parse.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/patch.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/prerelease.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/rcompare.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/rsort.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/satisfies.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/sort.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/functions/valid.d.ts": [
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/index.d.ts": [
+ "../../../node_modules/@types/semver/classes/comparator.d.ts",
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/functions/clean.d.ts",
+ "../../../node_modules/@types/semver/functions/cmp.d.ts",
+ "../../../node_modules/@types/semver/functions/coerce.d.ts",
+ "../../../node_modules/@types/semver/functions/compare-build.d.ts",
+ "../../../node_modules/@types/semver/functions/compare-loose.d.ts",
+ "../../../node_modules/@types/semver/functions/compare.d.ts",
+ "../../../node_modules/@types/semver/functions/diff.d.ts",
+ "../../../node_modules/@types/semver/functions/eq.d.ts",
+ "../../../node_modules/@types/semver/functions/gt.d.ts",
+ "../../../node_modules/@types/semver/functions/gte.d.ts",
+ "../../../node_modules/@types/semver/functions/inc.d.ts",
+ "../../../node_modules/@types/semver/functions/lt.d.ts",
+ "../../../node_modules/@types/semver/functions/lte.d.ts",
+ "../../../node_modules/@types/semver/functions/major.d.ts",
+ "../../../node_modules/@types/semver/functions/minor.d.ts",
+ "../../../node_modules/@types/semver/functions/neq.d.ts",
+ "../../../node_modules/@types/semver/functions/parse.d.ts",
+ "../../../node_modules/@types/semver/functions/patch.d.ts",
+ "../../../node_modules/@types/semver/functions/prerelease.d.ts",
+ "../../../node_modules/@types/semver/functions/rcompare.d.ts",
+ "../../../node_modules/@types/semver/functions/rsort.d.ts",
+ "../../../node_modules/@types/semver/functions/satisfies.d.ts",
+ "../../../node_modules/@types/semver/functions/sort.d.ts",
+ "../../../node_modules/@types/semver/functions/valid.d.ts",
+ "../../../node_modules/@types/semver/internals/identifiers.d.ts",
+ "../../../node_modules/@types/semver/ranges/gtr.d.ts",
+ "../../../node_modules/@types/semver/ranges/intersects.d.ts",
+ "../../../node_modules/@types/semver/ranges/ltr.d.ts",
+ "../../../node_modules/@types/semver/ranges/max-satisfying.d.ts",
+ "../../../node_modules/@types/semver/ranges/min-satisfying.d.ts",
+ "../../../node_modules/@types/semver/ranges/min-version.d.ts",
+ "../../../node_modules/@types/semver/ranges/outside.d.ts",
+ "../../../node_modules/@types/semver/ranges/simplify.d.ts",
+ "../../../node_modules/@types/semver/ranges/subset.d.ts",
+ "../../../node_modules/@types/semver/ranges/to-comparators.d.ts",
+ "../../../node_modules/@types/semver/ranges/valid.d.ts"
+ ],
+ "../../../node_modules/@types/semver/ranges/gtr.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/ranges/intersects.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/ranges/ltr.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/ranges/max-satisfying.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/ranges/min-satisfying.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/ranges/min-version.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/ranges/outside.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/ranges/simplify.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/ranges/subset.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/ranges/to-comparators.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/semver/ranges/valid.d.ts": [
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts"
+ ],
+ "../../../node_modules/@types/sqlite3/index.d.ts": [
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../node_modules/@types/through/index.d.ts": [
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../node_modules/@types/yargs/index.d.ts": [
+ "../../../node_modules/@types/yargs-parser/index.d.ts"
+ ],
+ "../../../node_modules/jest-diff/build/diffLines.d.ts": [
+ "../../../node_modules/jest-diff/build/cleanupSemantic.d.ts",
+ "../../../node_modules/jest-diff/build/types.d.ts"
+ ],
+ "../../../node_modules/jest-diff/build/index.d.ts": [
+ "../../../node_modules/jest-diff/build/cleanupSemantic.d.ts",
+ "../../../node_modules/jest-diff/build/diffLines.d.ts",
+ "../../../node_modules/jest-diff/build/printDiffs.d.ts",
+ "../../../node_modules/jest-diff/build/types.d.ts"
+ ],
+ "../../../node_modules/jest-diff/build/printDiffs.d.ts": [
+ "../../../node_modules/jest-diff/build/cleanupSemantic.d.ts",
+ "../../../node_modules/jest-diff/build/types.d.ts"
+ ],
+ "../../../node_modules/pretty-format/build/index.d.ts": [
+ "../../../node_modules/pretty-format/build/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/index.d.ts": [
+ "../../../node_modules/rxjs/internal/AsyncSubject.d.ts",
+ "../../../node_modules/rxjs/internal/BehaviorSubject.d.ts",
+ "../../../node_modules/rxjs/internal/Notification.d.ts",
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/Operator.d.ts",
+ "../../../node_modules/rxjs/internal/ReplaySubject.d.ts",
+ "../../../node_modules/rxjs/internal/Scheduler.d.ts",
+ "../../../node_modules/rxjs/internal/Subject.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/config.d.ts",
+ "../../../node_modules/rxjs/internal/observable/ConnectableObservable.d.ts",
+ "../../../node_modules/rxjs/internal/observable/bindCallback.d.ts",
+ "../../../node_modules/rxjs/internal/observable/bindNodeCallback.d.ts",
+ "../../../node_modules/rxjs/internal/observable/combineLatest.d.ts",
+ "../../../node_modules/rxjs/internal/observable/concat.d.ts",
+ "../../../node_modules/rxjs/internal/observable/defer.d.ts",
+ "../../../node_modules/rxjs/internal/observable/empty.d.ts",
+ "../../../node_modules/rxjs/internal/observable/forkJoin.d.ts",
+ "../../../node_modules/rxjs/internal/observable/from.d.ts",
+ "../../../node_modules/rxjs/internal/observable/fromEvent.d.ts",
+ "../../../node_modules/rxjs/internal/observable/fromEventPattern.d.ts",
+ "../../../node_modules/rxjs/internal/observable/generate.d.ts",
+ "../../../node_modules/rxjs/internal/observable/iif.d.ts",
+ "../../../node_modules/rxjs/internal/observable/interval.d.ts",
+ "../../../node_modules/rxjs/internal/observable/merge.d.ts",
+ "../../../node_modules/rxjs/internal/observable/never.d.ts",
+ "../../../node_modules/rxjs/internal/observable/of.d.ts",
+ "../../../node_modules/rxjs/internal/observable/onErrorResumeNext.d.ts",
+ "../../../node_modules/rxjs/internal/observable/pairs.d.ts",
+ "../../../node_modules/rxjs/internal/observable/partition.d.ts",
+ "../../../node_modules/rxjs/internal/observable/race.d.ts",
+ "../../../node_modules/rxjs/internal/observable/range.d.ts",
+ "../../../node_modules/rxjs/internal/observable/throwError.d.ts",
+ "../../../node_modules/rxjs/internal/observable/timer.d.ts",
+ "../../../node_modules/rxjs/internal/observable/using.d.ts",
+ "../../../node_modules/rxjs/internal/observable/zip.d.ts",
+ "../../../node_modules/rxjs/internal/operators/groupBy.d.ts",
+ "../../../node_modules/rxjs/internal/scheduled/scheduled.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/VirtualTimeScheduler.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/animationFrame.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/asap.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/async.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/queue.d.ts",
+ "../../../node_modules/rxjs/internal/symbol/observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts",
+ "../../../node_modules/rxjs/internal/util/ArgumentOutOfRangeError.d.ts",
+ "../../../node_modules/rxjs/internal/util/EmptyError.d.ts",
+ "../../../node_modules/rxjs/internal/util/ObjectUnsubscribedError.d.ts",
+ "../../../node_modules/rxjs/internal/util/TimeoutError.d.ts",
+ "../../../node_modules/rxjs/internal/util/UnsubscriptionError.d.ts",
+ "../../../node_modules/rxjs/internal/util/identity.d.ts",
+ "../../../node_modules/rxjs/internal/util/isObservable.d.ts",
+ "../../../node_modules/rxjs/internal/util/noop.d.ts",
+ "../../../node_modules/rxjs/internal/util/pipe.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/AsyncSubject.d.ts": [
+ "../../../node_modules/rxjs/internal/Subject.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/BehaviorSubject.d.ts": [
+ "../../../node_modules/rxjs/internal/Subject.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/InnerSubscriber.d.ts": [
+ "../../../node_modules/rxjs/internal/OuterSubscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/Notification.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/Observable.d.ts": [
+ "../../../node_modules/rxjs/internal/Operator.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/observable/iif.d.ts",
+ "../../../node_modules/rxjs/internal/observable/throwError.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/Operator.d.ts": [
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/OuterSubscriber.d.ts": [
+ "../../../node_modules/rxjs/internal/InnerSubscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/ReplaySubject.d.ts": [
+ "../../../node_modules/rxjs/internal/Subject.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/Scheduler.d.ts": [
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/Action.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/Subject.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/Operator.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts": [
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/Subscription.d.ts": [
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/ConnectableObservable.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/Subject.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/bindCallback.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/bindNodeCallback.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/combineLatest.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/Operator.d.ts",
+ "../../../node_modules/rxjs/internal/OuterSubscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/concat.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/defer.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/empty.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/forkJoin.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/from.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/fromEvent.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/fromEventPattern.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/observable/fromEvent.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/generate.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/iif.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/interval.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/merge.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/never.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/of.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/onErrorResumeNext.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/pairs.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/partition.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/race.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/Operator.d.ts",
+ "../../../node_modules/rxjs/internal/OuterSubscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/range.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/throwError.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/timer.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/using.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/observable/zip.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/Operator.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/operators/groupBy.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/Subject.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduled/scheduled.d.ts": [
+ "../../../node_modules/rxjs/index.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduler/Action.d.ts": [
+ "../../../node_modules/rxjs/internal/Scheduler.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduler/AnimationFrameScheduler.d.ts": [
+ "../../../node_modules/rxjs/internal/scheduler/AsyncAction.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/AsyncScheduler.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduler/AsapScheduler.d.ts": [
+ "../../../node_modules/rxjs/internal/scheduler/AsyncAction.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/AsyncScheduler.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduler/AsyncAction.d.ts": [
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/Action.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/AsyncScheduler.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduler/AsyncScheduler.d.ts": [
+ "../../../node_modules/rxjs/internal/Scheduler.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/Action.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/AsyncAction.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduler/QueueScheduler.d.ts": [
+ "../../../node_modules/rxjs/internal/scheduler/AsyncScheduler.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduler/VirtualTimeScheduler.d.ts": [
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/AsyncAction.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/AsyncScheduler.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduler/animationFrame.d.ts": [
+ "../../../node_modules/rxjs/internal/scheduler/AnimationFrameScheduler.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduler/asap.d.ts": [
+ "../../../node_modules/rxjs/internal/scheduler/AsapScheduler.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduler/async.d.ts": [
+ "../../../node_modules/rxjs/internal/scheduler/AsyncScheduler.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/scheduler/queue.d.ts": [
+ "../../../node_modules/rxjs/internal/scheduler/QueueScheduler.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/types.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/util/isObservable.d.ts": [
+ "../../../node_modules/rxjs/internal/Observable.d.ts"
+ ],
+ "../../../node_modules/rxjs/internal/util/pipe.d.ts": [
+ "../../../node_modules/rxjs/internal/types.d.ts"
+ ],
+ "../src/index.ts": [
+ "../src/web.ts"
+ ]
+ },
+ "semanticDiagnosticsPerFile": [
+ "../../../node_modules/@babel/parser/typings/babel-parser.d.ts",
+ "../../../node_modules/@babel/types/lib/index.d.ts",
+ "../../../node_modules/@types/babel__core/index.d.ts",
+ "../../../node_modules/@types/babel__generator/index.d.ts",
+ "../../../node_modules/@types/babel__template/index.d.ts",
+ "../../../node_modules/@types/babel__traverse/index.d.ts",
+ "../../../node_modules/@types/big.js/index.d.ts",
+ "../../../node_modules/@types/cosmiconfig/index.d.ts",
+ "../../../node_modules/@types/cross-spawn/index.d.ts",
+ "../../../node_modules/@types/cuid/index.d.ts",
+ "../../../node_modules/@types/deep-equal/index.d.ts",
+ "../../../node_modules/@types/github-slugger/index.d.ts",
+ "../../../node_modules/@types/glob/index.d.ts",
+ "../../../node_modules/@types/graceful-fs/index.d.ts",
+ "../../../node_modules/@types/inquirer/index.d.ts",
+ "../../../node_modules/@types/inquirer/lib/objects/choice.d.ts",
+ "../../../node_modules/@types/inquirer/lib/objects/choices.d.ts",
+ "../../../node_modules/@types/inquirer/lib/objects/separator.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/base.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/checkbox.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/confirm.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/editor.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/expand.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/input.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/list.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/number.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/password.d.ts",
+ "../../../node_modules/@types/inquirer/lib/prompts/rawlist.d.ts",
+ "../../../node_modules/@types/inquirer/lib/ui/baseUI.d.ts",
+ "../../../node_modules/@types/inquirer/lib/ui/bottom-bar.d.ts",
+ "../../../node_modules/@types/inquirer/lib/ui/prompt.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/events.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/paginator.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/readline.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/screen-manager.d.ts",
+ "../../../node_modules/@types/inquirer/lib/utils/utils.d.ts",
+ "../../../node_modules/@types/istanbul-lib-coverage/index.d.ts",
+ "../../../node_modules/@types/istanbul-lib-report/index.d.ts",
+ "../../../node_modules/@types/istanbul-reports/index.d.ts",
+ "../../../node_modules/@types/jest/index.d.ts",
+ "../../../node_modules/@types/mdast/index.d.ts",
+ "../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../node_modules/@types/mkdirp/index.d.ts",
+ "../../../node_modules/@types/ms/index.d.ts",
+ "../../../node_modules/@types/mysql/index.d.ts",
+ "../../../node_modules/@types/node/assert.d.ts",
+ "../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../node_modules/@types/node/base.d.ts",
+ "../../../node_modules/@types/node/buffer.d.ts",
+ "../../../node_modules/@types/node/child_process.d.ts",
+ "../../../node_modules/@types/node/cluster.d.ts",
+ "../../../node_modules/@types/node/console.d.ts",
+ "../../../node_modules/@types/node/constants.d.ts",
+ "../../../node_modules/@types/node/crypto.d.ts",
+ "../../../node_modules/@types/node/dgram.d.ts",
+ "../../../node_modules/@types/node/dns.d.ts",
+ "../../../node_modules/@types/node/domain.d.ts",
+ "../../../node_modules/@types/node/events.d.ts",
+ "../../../node_modules/@types/node/fs.d.ts",
+ "../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../node_modules/@types/node/globals.d.ts",
+ "../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../node_modules/@types/node/http.d.ts",
+ "../../../node_modules/@types/node/http2.d.ts",
+ "../../../node_modules/@types/node/https.d.ts",
+ "../../../node_modules/@types/node/index.d.ts",
+ "../../../node_modules/@types/node/inspector.d.ts",
+ "../../../node_modules/@types/node/module.d.ts",
+ "../../../node_modules/@types/node/net.d.ts",
+ "../../../node_modules/@types/node/os.d.ts",
+ "../../../node_modules/@types/node/path.d.ts",
+ "../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../node_modules/@types/node/process.d.ts",
+ "../../../node_modules/@types/node/punycode.d.ts",
+ "../../../node_modules/@types/node/querystring.d.ts",
+ "../../../node_modules/@types/node/readline.d.ts",
+ "../../../node_modules/@types/node/repl.d.ts",
+ "../../../node_modules/@types/node/stream.d.ts",
+ "../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../node_modules/@types/node/timers.d.ts",
+ "../../../node_modules/@types/node/tls.d.ts",
+ "../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../node_modules/@types/node/ts3.6/base.d.ts",
+ "../../../node_modules/@types/node/tty.d.ts",
+ "../../../node_modules/@types/node/url.d.ts",
+ "../../../node_modules/@types/node/util.d.ts",
+ "../../../node_modules/@types/node/v8.d.ts",
+ "../../../node_modules/@types/node/vm.d.ts",
+ "../../../node_modules/@types/node/wasi.d.ts",
+ "../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../node_modules/@types/node/zlib.d.ts",
+ "../../../node_modules/@types/normalize-package-data/index.d.ts",
+ "../../../node_modules/@types/parse-json/index.d.ts",
+ "../../../node_modules/@types/pluralize/index.d.ts",
+ "../../../node_modules/@types/prettier/index.d.ts",
+ "../../../node_modules/@types/prop-types/index.d.ts",
+ "../../../node_modules/@types/react/global.d.ts",
+ "../../../node_modules/@types/react/index.d.ts",
+ "../../../node_modules/@types/rimraf/index.d.ts",
+ "../../../node_modules/@types/scheduler/index.d.ts",
+ "../../../node_modules/@types/scheduler/tracing.d.ts",
+ "../../../node_modules/@types/semver/classes/comparator.d.ts",
+ "../../../node_modules/@types/semver/classes/range.d.ts",
+ "../../../node_modules/@types/semver/classes/semver.d.ts",
+ "../../../node_modules/@types/semver/functions/clean.d.ts",
+ "../../../node_modules/@types/semver/functions/cmp.d.ts",
+ "../../../node_modules/@types/semver/functions/coerce.d.ts",
+ "../../../node_modules/@types/semver/functions/compare-build.d.ts",
+ "../../../node_modules/@types/semver/functions/compare-loose.d.ts",
+ "../../../node_modules/@types/semver/functions/compare.d.ts",
+ "../../../node_modules/@types/semver/functions/diff.d.ts",
+ "../../../node_modules/@types/semver/functions/eq.d.ts",
+ "../../../node_modules/@types/semver/functions/gt.d.ts",
+ "../../../node_modules/@types/semver/functions/gte.d.ts",
+ "../../../node_modules/@types/semver/functions/inc.d.ts",
+ "../../../node_modules/@types/semver/functions/lt.d.ts",
+ "../../../node_modules/@types/semver/functions/lte.d.ts",
+ "../../../node_modules/@types/semver/functions/major.d.ts",
+ "../../../node_modules/@types/semver/functions/minor.d.ts",
+ "../../../node_modules/@types/semver/functions/neq.d.ts",
+ "../../../node_modules/@types/semver/functions/parse.d.ts",
+ "../../../node_modules/@types/semver/functions/patch.d.ts",
+ "../../../node_modules/@types/semver/functions/prerelease.d.ts",
+ "../../../node_modules/@types/semver/functions/rcompare.d.ts",
+ "../../../node_modules/@types/semver/functions/rsort.d.ts",
+ "../../../node_modules/@types/semver/functions/satisfies.d.ts",
+ "../../../node_modules/@types/semver/functions/sort.d.ts",
+ "../../../node_modules/@types/semver/functions/valid.d.ts",
+ "../../../node_modules/@types/semver/index.d.ts",
+ "../../../node_modules/@types/semver/internals/identifiers.d.ts",
+ "../../../node_modules/@types/semver/ranges/gtr.d.ts",
+ "../../../node_modules/@types/semver/ranges/intersects.d.ts",
+ "../../../node_modules/@types/semver/ranges/ltr.d.ts",
+ "../../../node_modules/@types/semver/ranges/max-satisfying.d.ts",
+ "../../../node_modules/@types/semver/ranges/min-satisfying.d.ts",
+ "../../../node_modules/@types/semver/ranges/min-version.d.ts",
+ "../../../node_modules/@types/semver/ranges/outside.d.ts",
+ "../../../node_modules/@types/semver/ranges/simplify.d.ts",
+ "../../../node_modules/@types/semver/ranges/subset.d.ts",
+ "../../../node_modules/@types/semver/ranges/to-comparators.d.ts",
+ "../../../node_modules/@types/semver/ranges/valid.d.ts",
+ "../../../node_modules/@types/sqlite3/index.d.ts",
+ "../../../node_modules/@types/stack-utils/index.d.ts",
+ "../../../node_modules/@types/through/index.d.ts",
+ "../../../node_modules/@types/unist/index.d.ts",
+ "../../../node_modules/@types/uppercamelcase/index.d.ts",
+ "../../../node_modules/@types/yargs-parser/index.d.ts",
+ "../../../node_modules/@types/yargs/index.d.ts",
+ "../../../node_modules/csstype/index.d.ts",
+ "../../../node_modules/jest-diff/build/cleanupSemantic.d.ts",
+ "../../../node_modules/jest-diff/build/diffLines.d.ts",
+ "../../../node_modules/jest-diff/build/index.d.ts",
+ "../../../node_modules/jest-diff/build/printDiffs.d.ts",
+ "../../../node_modules/jest-diff/build/types.d.ts",
+ "../../../node_modules/pretty-format/build/index.d.ts",
+ "../../../node_modules/pretty-format/build/types.d.ts",
+ "../../../node_modules/rxjs/index.d.ts",
+ "../../../node_modules/rxjs/internal/AsyncSubject.d.ts",
+ "../../../node_modules/rxjs/internal/BehaviorSubject.d.ts",
+ "../../../node_modules/rxjs/internal/InnerSubscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Notification.d.ts",
+ "../../../node_modules/rxjs/internal/Observable.d.ts",
+ "../../../node_modules/rxjs/internal/Operator.d.ts",
+ "../../../node_modules/rxjs/internal/OuterSubscriber.d.ts",
+ "../../../node_modules/rxjs/internal/ReplaySubject.d.ts",
+ "../../../node_modules/rxjs/internal/Scheduler.d.ts",
+ "../../../node_modules/rxjs/internal/Subject.d.ts",
+ "../../../node_modules/rxjs/internal/Subscriber.d.ts",
+ "../../../node_modules/rxjs/internal/Subscription.d.ts",
+ "../../../node_modules/rxjs/internal/config.d.ts",
+ "../../../node_modules/rxjs/internal/observable/ConnectableObservable.d.ts",
+ "../../../node_modules/rxjs/internal/observable/bindCallback.d.ts",
+ "../../../node_modules/rxjs/internal/observable/bindNodeCallback.d.ts",
+ "../../../node_modules/rxjs/internal/observable/combineLatest.d.ts",
+ "../../../node_modules/rxjs/internal/observable/concat.d.ts",
+ "../../../node_modules/rxjs/internal/observable/defer.d.ts",
+ "../../../node_modules/rxjs/internal/observable/empty.d.ts",
+ "../../../node_modules/rxjs/internal/observable/forkJoin.d.ts",
+ "../../../node_modules/rxjs/internal/observable/from.d.ts",
+ "../../../node_modules/rxjs/internal/observable/fromEvent.d.ts",
+ "../../../node_modules/rxjs/internal/observable/fromEventPattern.d.ts",
+ "../../../node_modules/rxjs/internal/observable/generate.d.ts",
+ "../../../node_modules/rxjs/internal/observable/iif.d.ts",
+ "../../../node_modules/rxjs/internal/observable/interval.d.ts",
+ "../../../node_modules/rxjs/internal/observable/merge.d.ts",
+ "../../../node_modules/rxjs/internal/observable/never.d.ts",
+ "../../../node_modules/rxjs/internal/observable/of.d.ts",
+ "../../../node_modules/rxjs/internal/observable/onErrorResumeNext.d.ts",
+ "../../../node_modules/rxjs/internal/observable/pairs.d.ts",
+ "../../../node_modules/rxjs/internal/observable/partition.d.ts",
+ "../../../node_modules/rxjs/internal/observable/race.d.ts",
+ "../../../node_modules/rxjs/internal/observable/range.d.ts",
+ "../../../node_modules/rxjs/internal/observable/throwError.d.ts",
+ "../../../node_modules/rxjs/internal/observable/timer.d.ts",
+ "../../../node_modules/rxjs/internal/observable/using.d.ts",
+ "../../../node_modules/rxjs/internal/observable/zip.d.ts",
+ "../../../node_modules/rxjs/internal/operators/groupBy.d.ts",
+ "../../../node_modules/rxjs/internal/scheduled/scheduled.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/Action.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/AnimationFrameScheduler.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/AsapScheduler.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/AsyncAction.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/AsyncScheduler.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/QueueScheduler.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/VirtualTimeScheduler.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/animationFrame.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/asap.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/async.d.ts",
+ "../../../node_modules/rxjs/internal/scheduler/queue.d.ts",
+ "../../../node_modules/rxjs/internal/symbol/observable.d.ts",
+ "../../../node_modules/rxjs/internal/types.d.ts",
+ "../../../node_modules/rxjs/internal/util/ArgumentOutOfRangeError.d.ts",
+ "../../../node_modules/rxjs/internal/util/EmptyError.d.ts",
+ "../../../node_modules/rxjs/internal/util/ObjectUnsubscribedError.d.ts",
+ "../../../node_modules/rxjs/internal/util/TimeoutError.d.ts",
+ "../../../node_modules/rxjs/internal/util/UnsubscriptionError.d.ts",
+ "../../../node_modules/rxjs/internal/util/identity.d.ts",
+ "../../../node_modules/rxjs/internal/util/isObservable.d.ts",
+ "../../../node_modules/rxjs/internal/util/noop.d.ts",
+ "../../../node_modules/rxjs/internal/util/pipe.d.ts",
+ "../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.collection.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.core.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.generator.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.promise.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2016.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.intl.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.object.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.string.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.intl.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.promise.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
+ "../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
+ "../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../node_modules/typescript/lib/lib.esnext.intl.d.ts",
+ "../src/__tests__/index.test.ts",
+ "../src/index.ts",
+ "../src/web.ts"
+ ]
+ },
+ "version": "4.2.3"
+}
\ No newline at end of file
diff --git a/node_modules/@databases/sql/lib/web.d.ts b/node_modules/@databases/sql/lib/web.d.ts
new file mode 100644
index 0000000..bdb101a
--- /dev/null
+++ b/node_modules/@databases/sql/lib/web.d.ts
@@ -0,0 +1,94 @@
+export declare enum SQLItemType {
+ RAW = 0,
+ VALUE = 1,
+ IDENTIFIER = 2
+}
+/**
+ * A single, escaped, `SQLQuery` item. These items are assembled into a SQL
+ * query through the compile method.
+ */
+export declare type SQLItem = {
+ type: SQLItemType.RAW;
+ text: string;
+} | {
+ type: SQLItemType.VALUE;
+ value: any;
+} | {
+ type: SQLItemType.IDENTIFIER;
+ names: Array;
+};
+export interface FormatConfig {
+ escapeIdentifier: (str: string) => string;
+ formatValue: (value: unknown, index: number) => {
+ readonly placeholder: string;
+ readonly value: unknown;
+ };
+}
+declare const literalSeparators: Set<"" | "," | ", " | " AND " | " OR " | ") AND (" | ") OR (" | ";">;
+declare type LiteralSeparator = typeof literalSeparators extends Set ? T : never;
+/**
+ * The representation of a SQL query. Call `compile` to turn it into a SQL
+ * string with value placeholders.
+ *
+ * This object is immutable. Instead of changing the object, new `SQLQuery`
+ * values will be returned.
+ *
+ * The constructor for this class is private and may not be called.
+ */
+declare class SQLQuery {
+ static registerFormatter(constructor: new (...args: any[]) => T, format: (value: T) => SQLQuery): void;
+ /**
+ * A template string tag that interpolates literal SQL with placeholder SQL
+ * values.
+ */
+ static query(strings: TemplateStringsArray, ...values: Array): SQLQuery;
+ /**
+ * Joins multiple queries together and puts a separator in between if a
+ * separator was defined.
+ */
+ static join(queries: Array, separator?: LiteralSeparator | SQLQuery): SQLQuery;
+ /**
+ * Creates a new query with the raw text.
+ */
+ static __dangerous__rawValue(text: string): SQLQuery;
+ /**
+ * Creates a new query from the array of `SQLItem` parts
+ */
+ static __dangerous__constructFromParts(items: readonly SQLItem[]): SQLQuery;
+ /**
+ * Creates a new query with the value. This value will be turned into a
+ * placeholder when the query gets compiled.
+ */
+ static value(value: any): SQLQuery;
+ /**
+ * Creates an identifier query. Each name will be escaped, and the
+ * names will be concatenated with a period (`.`).
+ */
+ static ident(...names: Array): SQLQuery;
+ /**
+ * The internal array of SQL items. This array is never mutated, only cloned.
+ */
+ private readonly _items;
+ private readonly _cache;
+ private constructor();
+ format(config: FormatConfig): {
+ text: string;
+ values: unknown[];
+ };
+ format(formatter: (items: readonly SQLItem[]) => T): T;
+}
+export type { SQLQuery };
+/**
+ * The interface we actually expect people to use.
+ */
+export declare type SQL = typeof SQLQuery.query & {
+ readonly join: typeof SQLQuery.join;
+ readonly __dangerous__rawValue: typeof SQLQuery.__dangerous__rawValue;
+ readonly __dangerous__constructFromParts: typeof SQLQuery.__dangerous__constructFromParts;
+ readonly value: typeof SQLQuery.value;
+ readonly ident: typeof SQLQuery.ident;
+ readonly registerFormatter: typeof SQLQuery.registerFormatter;
+};
+declare const sql: SQL;
+export default sql;
+export declare function isSqlQuery(query: unknown): query is SQLQuery;
diff --git a/node_modules/@databases/sql/lib/web.js b/node_modules/@databases/sql/lib/web.js
new file mode 100644
index 0000000..e7bf7cc
--- /dev/null
+++ b/node_modules/@databases/sql/lib/web.js
@@ -0,0 +1,222 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.isSqlQuery = exports.SQLItemType = void 0;
+var SQLItemType;
+(function (SQLItemType) {
+ SQLItemType[SQLItemType["RAW"] = 0] = "RAW";
+ SQLItemType[SQLItemType["VALUE"] = 1] = "VALUE";
+ SQLItemType[SQLItemType["IDENTIFIER"] = 2] = "IDENTIFIER";
+})(SQLItemType = exports.SQLItemType || (exports.SQLItemType = {}));
+const formatter = Symbol('SQL Query Formatter');
+const literalSeparators = new Set([
+ '',
+ ',',
+ ', ',
+ ' AND ',
+ ' OR ',
+ ') AND (',
+ ') OR (',
+ ';',
+]);
+/**
+ * The representation of a SQL query. Call `compile` to turn it into a SQL
+ * string with value placeholders.
+ *
+ * This object is immutable. Instead of changing the object, new `SQLQuery`
+ * values will be returned.
+ *
+ * The constructor for this class is private and may not be called.
+ */
+class SQLQuery {
+ // The constructor is private. Users should use the static `create` method to
+ // make a new `SQLQuery`.
+ constructor(items) {
+ this._cache = new Map();
+ this._items = items;
+ }
+ static registerFormatter(constructor, format) {
+ constructor.prototype[formatter] = format;
+ }
+ /**
+ * A template string tag that interpolates literal SQL with placeholder SQL
+ * values.
+ */
+ static query(strings, ...values) {
+ const items = [];
+ // Add all of the strings as raw items and values as placeholder values.
+ for (let i = 0; i < strings.length; i++) {
+ if (strings[i]) {
+ items.push({ type: SQLItemType.RAW, text: strings[i] });
+ }
+ if (i < values.length) {
+ const value = values[i];
+ // If the value is a `SQLQuery`, add all of its items.
+ if (value instanceof SQLQuery) {
+ for (const item of value._items)
+ items.push(item);
+ }
+ else {
+ if (value && typeof value === 'object' && formatter in value) {
+ const formatted = value[formatter](value);
+ if (!(formatted instanceof SQLQuery)) {
+ throw new Error('Formatters should always return SQLQuery objects');
+ }
+ for (const item of formatted._items)
+ items.push(item);
+ }
+ else {
+ const before = strings[i][strings[i].length - 1];
+ const after = strings.length > i + 1 ? strings[i + 1][0] : undefined;
+ if (after &&
+ ((before === `'` && after === `'`) ||
+ (before === `"` && after === `"`) ||
+ (before === '`' && after === '`'))) {
+ throw new Error(`You do not need to wrap values in 'quotes' when using @databases. Any JavaScript string passed via \${...} syntax is already treated as a string. Please remove the quotes around this value.`);
+ }
+ if (typeof value === 'bigint') {
+ items.push({ type: SQLItemType.VALUE, value: value.toString(10) });
+ }
+ else {
+ items.push({ type: SQLItemType.VALUE, value });
+ }
+ }
+ }
+ }
+ }
+ return new SQLQuery(items);
+ }
+ /**
+ * Joins multiple queries together and puts a separator in between if a
+ * separator was defined.
+ */
+ static join(queries, separator) {
+ if (typeof separator === 'string' && !literalSeparators.has(separator)) {
+ throw new Error(`Please tag your string as an SQL query via "sql.join(..., sql\`${separator.includes('`') ? 'your_separator' : separator}\`)" or use one of the standard speparators: ${[...literalSeparators]
+ .map((s) => `"${s}"`)
+ .join(', ')}`);
+ }
+ const items = [];
+ const separatorItems = separator
+ ? typeof separator === 'string'
+ ? [{ type: SQLItemType.RAW, text: separator }]
+ : separator._items
+ : undefined;
+ let addedFirst = false;
+ // Add the items of all our queries into the `items` array, adding text
+ // separator items as necessary.
+ for (const query of queries) {
+ if (!addedFirst) {
+ addedFirst = true;
+ }
+ else if (separatorItems) {
+ items.push(...separatorItems);
+ }
+ items.push(...query._items);
+ }
+ return new SQLQuery(items);
+ }
+ /**
+ * Creates a new query with the raw text.
+ */
+ static __dangerous__rawValue(text) {
+ return new SQLQuery([{ type: SQLItemType.RAW, text }]);
+ }
+ /**
+ * Creates a new query from the array of `SQLItem` parts
+ */
+ static __dangerous__constructFromParts(items) {
+ return new SQLQuery(items);
+ }
+ /**
+ * Creates a new query with the value. This value will be turned into a
+ * placeholder when the query gets compiled.
+ */
+ static value(value) {
+ return new SQLQuery([{ type: SQLItemType.VALUE, value }]);
+ }
+ /**
+ * Creates an identifier query. Each name will be escaped, and the
+ * names will be concatenated with a period (`.`).
+ */
+ static ident(...names) {
+ return new SQLQuery([{ type: SQLItemType.IDENTIFIER, names }]);
+ }
+ format(formatter) {
+ const cached = this._cache.get(formatter);
+ if (cached)
+ return cached;
+ const fresh = typeof formatter === 'function'
+ ? formatter(this._items)
+ : formatStandard(this._items, formatter);
+ this._cache.set(formatter, fresh);
+ return fresh;
+ }
+}
+function formatStandard(items, { escapeIdentifier, formatValue }) {
+ // Create an empty query object.
+ let text = '';
+ const values = [];
+ const localIdentifiers = new Map();
+ for (const item of items) {
+ switch (item.type) {
+ // If this is just raw text, we add it directly to the query text.
+ case SQLItemType.RAW: {
+ text += item.text;
+ break;
+ }
+ // If we got a value SQL item, add a placeholder and add the value to our
+ // placeholder values array.
+ case SQLItemType.VALUE: {
+ const { placeholder, value } = formatValue(item.value, values.length);
+ text += placeholder;
+ values.push(value);
+ break;
+ }
+ // If we got an identifier type, escape the strings and get a local
+ // identifier for non-string identifiers.
+ case SQLItemType.IDENTIFIER: {
+ text += item.names
+ .map((name) => {
+ if (typeof name === 'string')
+ return escapeIdentifier(name);
+ if (!localIdentifiers.has(name))
+ localIdentifiers.set(name, `__local_${localIdentifiers.size}__`);
+ return escapeIdentifier(localIdentifiers.get(name));
+ })
+ .join('.');
+ break;
+ }
+ }
+ }
+ if (text.trim()) {
+ const lines = text.split('\n');
+ const min = Math.min(...lines
+ .filter((l) => l.trim() !== '')
+ .map((l) => /^\s*/.exec(l)[0].length));
+ if (min) {
+ text = lines.map((line) => line.substr(min)).join('\n');
+ }
+ }
+ return { text: text.trim(), values };
+}
+// tslint:disable:no-unbound-method
+// Create the SQL interface we export.
+const sql = Object.assign(SQLQuery.query, {
+ join: SQLQuery.join,
+ __dangerous__rawValue: SQLQuery.__dangerous__rawValue,
+ __dangerous__constructFromParts: SQLQuery.__dangerous__constructFromParts,
+ value: SQLQuery.value,
+ ident: SQLQuery.ident,
+ registerFormatter: SQLQuery.registerFormatter,
+});
+// tslint:enable:no-unbound-method
+exports.default = sql;
+function isSqlQuery(query) {
+ return query instanceof SQLQuery;
+}
+exports.isSqlQuery = isSqlQuery;
+module.exports = sql;
+module.exports.default = sql;
+module.exports.isSqlQuery = isSqlQuery;
+module.exports.SQLItemType = SQLItemType;
+//# sourceMappingURL=web.js.map
\ No newline at end of file
diff --git a/node_modules/@databases/sql/lib/web.js.map b/node_modules/@databases/sql/lib/web.js.map
new file mode 100644
index 0000000..6ec1bac
--- /dev/null
+++ b/node_modules/@databases/sql/lib/web.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"web.js","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,2CAAG,CAAA;IACH,+CAAK,CAAA;IACL,yDAAU,CAAA;AACZ,CAAC,EAJW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAItB;AAkBD,MAAM,SAAS,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAEhD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,EAAE;IACF,GAAG;IACH,IAAI;IACJ,OAAO;IACP,MAAM;IACN,SAAS;IACT,QAAQ;IACR,GAAG;CACK,CAAC,CAAC;AAIZ;;;;;;;;GAQG;AACH,MAAM,QAAQ;IA8IZ,6EAA6E;IAC7E,yBAAyB;IACzB,YAAoB,KAAyB;QAJ5B,WAAM,GAAG,IAAI,GAAG,EAAY,CAAC;QAK5C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAjJM,MAAM,CAAC,iBAAiB,CAC7B,WAAsC,EACtC,MAA8B;QAE9B,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;IAC5C,CAAC;IACD;;;OAGG;IACI,MAAM,CAAC,KAAK,CACjB,OAA6B,EAC7B,GAAG,MAAkB;QAErB,MAAM,KAAK,GAAmB,EAAE,CAAC;QAEjC,wEAAwE;QACxE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;gBACd,KAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC;aACvD;YAED,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE;gBACrB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBAExB,sDAAsD;gBACtD,IAAI,KAAK,YAAY,QAAQ,EAAE;oBAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM;wBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACnD;qBAAM;oBACL,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,EAAE;wBAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;wBAC1C,IAAI,CAAC,CAAC,SAAS,YAAY,QAAQ,CAAC,EAAE;4BACpC,MAAM,IAAI,KAAK,CACb,kDAAkD,CACnD,CAAC;yBACH;wBACD,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,MAAM;4BAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACvD;yBAAM;wBACL,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBACjD,MAAM,KAAK,GACT,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;wBACzD,IACE,KAAK;4BACL,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC;gCAChC,CAAC,MAAM,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC;gCACjC,CAAC,MAAM,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,EACpC;4BACA,MAAM,IAAI,KAAK,CACb,+LAA+L,CAChM,CAAC;yBACH;wBACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;4BAC7B,KAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC;yBAClE;6BAAM;4BACL,KAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;yBAC9C;qBACF;iBACF;aACF;SACF;QAED,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,IAAI,CAChB,OAAwB,EACxB,SAAuC;QAEvC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YACtE,MAAM,IAAI,KAAK,CACb,kEACE,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAC/C,gDAAgD,CAAC,GAAG,iBAAiB,CAAC;iBACnE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;iBACpB,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;SACH;QACD,MAAM,KAAK,GAAmB,EAAE,CAAC;QACjC,MAAM,cAAc,GAAmC,SAAS;YAC9D,CAAC,CAAC,OAAO,SAAS,KAAK,QAAQ;gBAC7B,CAAC,CAAC,CAAC,EAAC,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAC,CAAC;gBAC5C,CAAC,CAAC,SAAS,CAAC,MAAM;YACpB,CAAC,CAAC,SAAS,CAAC;QAEd,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,uEAAuE;QACvE,gCAAgC;QAChC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;YAC3B,IAAI,CAAC,UAAU,EAAE;gBACf,UAAU,GAAG,IAAI,CAAC;aACnB;iBAAM,IAAI,cAAc,EAAE;gBACzB,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;aAC/B;YACD,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;SAC7B;QAED,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,qBAAqB,CAAC,IAAY;QAC9C,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAC,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,+BAA+B,CAC3C,KAAyB;QAEzB,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,KAAU;QAC5B,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAC,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,GAAG,KAAiB;QACtC,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAC,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IAgBM,MAAM,CACX,SAA4D;QAE5D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAC1B,MAAM,KAAK,GACT,OAAO,SAAS,KAAK,UAAU;YAC7B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;YACxB,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAGD,SAAS,cAAc,CACrB,KAAyB,EACzB,EAAC,gBAAgB,EAAE,WAAW,EAAe;IAK7C,gCAAgC;IAChC,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAe,CAAC;IAEhD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,QAAQ,IAAI,CAAC,IAAI,EAAE;YACjB,kEAAkE;YAClE,KAAK,WAAW,CAAC,GAAG,CAAC,CAAC;gBACpB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;gBAClB,MAAM;aACP;YAED,yEAAyE;YACzE,4BAA4B;YAC5B,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC;gBACtB,MAAM,EAAC,WAAW,EAAE,KAAK,EAAC,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBACpE,IAAI,IAAI,WAAW,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnB,MAAM;aACP;YAED,mEAAmE;YACnE,yCAAyC;YACzC,KAAK,WAAW,CAAC,UAAU,CAAC,CAAC;gBAC3B,IAAI,IAAI,IAAI,CAAC,KAAK;qBACf,GAAG,CAAC,CAAC,IAAI,EAAU,EAAE;oBACpB,IAAI,OAAO,IAAI,KAAK,QAAQ;wBAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;oBAE5D,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;wBAC7B,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,gBAAgB,CAAC,IAAI,IAAI,CAAC,CAAC;oBAEnE,OAAO,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,CAAC;gBACvD,CAAC,CAAC;qBACD,IAAI,CAAC,GAAG,CAAC,CAAC;gBACb,MAAM;aACP;SACF;KACF;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAClB,GAAG,KAAK;aACL,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CACzC,CAAC;QACF,IAAI,GAAG,EAAE;YACP,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACzD;KACF;IACD,OAAO,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAC,CAAC;AACrC,CAAC;AAcD,mCAAmC;AACnC,sCAAsC;AACtC,MAAM,GAAG,GAAQ,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE;IAC7C,IAAI,EAAE,QAAQ,CAAC,IAAI;IACnB,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB;IACrD,+BAA+B,EAAE,QAAQ,CAAC,+BAA+B;IACzE,KAAK,EAAE,QAAQ,CAAC,KAAK;IACrB,KAAK,EAAE,QAAQ,CAAC,KAAK;IACrB,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;CAC9C,CAAC,CAAC;AACH,kCAAkC;AAElC,kBAAe,GAAG,CAAC;AACnB,SAAgB,UAAU,CAAC,KAAc;IACvC,OAAO,KAAK,YAAY,QAAQ,CAAC;AACnC,CAAC;AAFD,gCAEC;AAED,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;AACrB,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC;AAC7B,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;AACvC,MAAM,CAAC,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@databases/sql/package.json b/node_modules/@databases/sql/package.json
new file mode 100644
index 0000000..a4e1017
--- /dev/null
+++ b/node_modules/@databases/sql/package.json
@@ -0,0 +1,21 @@
+{
+ "name": "@databases/sql",
+ "version": "3.2.0",
+ "description": "",
+ "main": "./lib/index.js",
+ "types": "./lib/index.d.ts",
+ "dependencies": {},
+ "devDependencies": {},
+ "scripts": {},
+ "repository": "https://github.com/ForbesLindesay/atdatabases/tree/master/packages/sql",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "bugs": "https://github.com/ForbesLindesay/atdatabases/issues",
+ "homepage": "https://www.atdatabases.org/docs/sql",
+ "files": [
+ "lib/",
+ "web/"
+ ]
+}
diff --git a/node_modules/@databases/sql/web/package.json b/node_modules/@databases/sql/web/package.json
new file mode 100644
index 0000000..6d4c245
--- /dev/null
+++ b/node_modules/@databases/sql/web/package.json
@@ -0,0 +1,4 @@
+{
+ "main": "../lib/web.js",
+ "types": "../lib/web.d.ts"
+}
diff --git a/node_modules/@databases/sqlite/LICENSE.md b/node_modules/@databases/sqlite/LICENSE.md
new file mode 100644
index 0000000..a2b8362
--- /dev/null
+++ b/node_modules/@databases/sqlite/LICENSE.md
@@ -0,0 +1,21 @@
+# The MIT License (MIT)
+
+Copyright (c) 2019 Forbes Lindesay
+
+> Permission is hereby granted, free of charge, to any person obtaining a copy
+> of this software and associated documentation files (the "Software"), to deal
+> in the Software without restriction, including without limitation the rights
+> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+> copies of the Software, and to permit persons to whom the Software is
+> furnished to do so, subject to the following conditions:
+>
+> The above copyright notice and this permission notice shall be included in
+> all copies or substantial portions of the Software.
+>
+> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+> SOFTWARE.
\ No newline at end of file
diff --git a/node_modules/@databases/sqlite/README.md b/node_modules/@databases/sqlite/README.md
new file mode 100644
index 0000000..90c94a8
--- /dev/null
+++ b/node_modules/@databases/sqlite/README.md
@@ -0,0 +1,3 @@
+# @databases/sqlite
+
+For documentation, see https://www.atdatabases.org/docs/sqlite
\ No newline at end of file
diff --git a/node_modules/@databases/sqlite/lib/Mutex.d.ts b/node_modules/@databases/sqlite/lib/Mutex.d.ts
new file mode 100644
index 0000000..98552bb
--- /dev/null
+++ b/node_modules/@databases/sqlite/lib/Mutex.d.ts
@@ -0,0 +1,17 @@
+interface Task {
+ start: number;
+ write: boolean;
+ fn: () => Promise;
+}
+export default class Mutex {
+ readonly maxWaitTimeout: number;
+ tasks: Task[];
+ running: number;
+ runningWrite: boolean;
+ constructor(maxWaitTimeout?: number);
+ _taskStart: (runningWrite: boolean) => void;
+ _taskEnd: () => void;
+ readLock(fn: () => Promise): Promise;
+ writeLock(fn: () => Promise): Promise;
+}
+export {};
diff --git a/node_modules/@databases/sqlite/lib/Mutex.js b/node_modules/@databases/sqlite/lib/Mutex.js
new file mode 100644
index 0000000..b7eae31
--- /dev/null
+++ b/node_modules/@databases/sqlite/lib/Mutex.js
@@ -0,0 +1,84 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+class Mutex {
+ constructor(maxWaitTimeout = 100) {
+ this.tasks = [];
+ this.running = 0;
+ this.runningWrite = false;
+ this._taskStart = (runningWrite) => {
+ this.running++;
+ this.runningWrite = runningWrite;
+ };
+ this._taskEnd = () => {
+ this.running--;
+ this.runningWrite = false;
+ while (this.tasks.length && !this.tasks[0].write) {
+ this._taskStart(false);
+ this.tasks.shift().fn().then(this._taskEnd, this._taskEnd);
+ }
+ if (!this.running && this.tasks.length) {
+ this._taskStart(true);
+ this.tasks.shift().fn().then(this._taskEnd, this._taskEnd);
+ }
+ };
+ this.maxWaitTimeout = maxWaitTimeout;
+ }
+ async readLock(fn) {
+ const now = Date.now();
+ if (this.runningWrite ||
+ this.tasks.some((t) => t.write && now - t.start > this.maxWaitTimeout)) {
+ return new Promise((resolve, reject) => {
+ this.tasks.push({
+ start: now,
+ write: false,
+ fn: async () => {
+ try {
+ resolve(await fn());
+ }
+ catch (ex) {
+ reject(ex);
+ }
+ },
+ });
+ });
+ }
+ else {
+ this._taskStart(false);
+ try {
+ return await fn();
+ }
+ finally {
+ this._taskEnd();
+ }
+ }
+ }
+ async writeLock(fn) {
+ if (this.running) {
+ return new Promise((resolve, reject) => {
+ this.tasks.push({
+ start: Date.now(),
+ write: true,
+ fn: async () => {
+ try {
+ resolve(await fn());
+ }
+ catch (ex) {
+ reject(ex);
+ }
+ },
+ });
+ });
+ }
+ else {
+ this._taskStart(true);
+ try {
+ return await fn();
+ }
+ finally {
+ this._taskEnd();
+ }
+ }
+ }
+}
+exports.default = Mutex;
+//# sourceMappingURL=Mutex.js.map
\ No newline at end of file
diff --git a/node_modules/@databases/sqlite/lib/Mutex.js.map b/node_modules/@databases/sqlite/lib/Mutex.js.map
new file mode 100644
index 0000000..8a2e72a
--- /dev/null
+++ b/node_modules/@databases/sqlite/lib/Mutex.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Mutex.js","sourceRoot":"","sources":["../src/Mutex.ts"],"names":[],"mappings":";;AAKA,MAAqB,KAAK;IAKxB,YAAY,iBAAyB,GAAG;QAHxC,UAAK,GAAW,EAAE,CAAC;QACnB,YAAO,GAAG,CAAC,CAAC;QACZ,iBAAY,GAAG,KAAK,CAAC;QAIrB,eAAU,GAAG,CAAC,YAAqB,EAAE,EAAE;YACrC,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACnC,CAAC,CAAC;QACF,aAAQ,GAAG,GAAG,EAAE;YACd,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;gBAChD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACvB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAG,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC7D;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACtB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAG,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC7D;QACH,CAAC,CAAC;QAjBA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAiBD,KAAK,CAAC,QAAQ,CAAI,EAAoB;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IACE,IAAI,CAAC,YAAY;YACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,EACtE;YACA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;oBACd,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,KAAK;oBACZ,EAAE,EAAE,KAAK,IAAI,EAAE;wBACb,IAAI;4BACF,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;yBACrB;wBAAC,OAAO,EAAE,EAAE;4BACX,MAAM,CAAC,EAAE,CAAC,CAAC;yBACZ;oBACH,CAAC;iBACF,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACvB,IAAI;gBACF,OAAO,MAAM,EAAE,EAAE,CAAC;aACnB;oBAAS;gBACR,IAAI,CAAC,QAAQ,EAAE,CAAC;aACjB;SACF;IACH,CAAC;IACD,KAAK,CAAC,SAAS,CAAI,EAAoB;QACrC,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;oBACd,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE;oBACjB,KAAK,EAAE,IAAI;oBACX,EAAE,EAAE,KAAK,IAAI,EAAE;wBACb,IAAI;4BACF,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;yBACrB;wBAAC,OAAO,EAAE,EAAE;4BACX,MAAM,CAAC,EAAE,CAAC,CAAC;yBACZ;oBACH,CAAC;iBACF,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI;gBACF,OAAO,MAAM,EAAE,EAAE,CAAC;aACnB;oBAAS;gBACR,IAAI,CAAC,QAAQ,EAAE,CAAC;aACjB;SACF;IACH,CAAC;CACF;AA5ED,wBA4EC"}
\ No newline at end of file
diff --git a/node_modules/@databases/sqlite/lib/__tests__/Mutex.test.d.ts b/node_modules/@databases/sqlite/lib/__tests__/Mutex.test.d.ts
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/@databases/sqlite/lib/__tests__/Mutex.test.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/@databases/sqlite/lib/__tests__/Mutex.test.js b/node_modules/@databases/sqlite/lib/__tests__/Mutex.test.js
new file mode 100644
index 0000000..8c6a961
--- /dev/null
+++ b/node_modules/@databases/sqlite/lib/__tests__/Mutex.test.js
@@ -0,0 +1,120 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const Mutex_1 = require("../Mutex");
+async function delay(ms) {
+ await new Promise((resolve) => setTimeout(resolve, ms));
+}
+test('Allows parallel read queries', async () => {
+ const mutex = new Mutex_1.default();
+ const results = [];
+ await Promise.all([
+ mutex.readLock(async () => {
+ results.push('START R1');
+ await delay(100);
+ results.push('END R1');
+ }),
+ mutex.readLock(async () => {
+ results.push('START R2');
+ await delay(300);
+ results.push('END R2');
+ }),
+ mutex.readLock(async () => {
+ results.push('START R3');
+ await delay(200);
+ results.push('END R3');
+ }),
+ ]);
+ expect(results).toMatchInlineSnapshot(`
+Array [
+ "START R1",
+ "START R2",
+ "START R3",
+ "END R1",
+ "END R3",
+ "END R2",
+]
+`);
+});
+test('Only Allows One Write', async () => {
+ const mutex = new Mutex_1.default();
+ const results = [];
+ await Promise.all([
+ mutex.readLock(async () => {
+ results.push('START R1');
+ await delay(100);
+ results.push('END R1');
+ }),
+ mutex.writeLock(async () => {
+ results.push('START W1');
+ await delay(100);
+ results.push('END W1');
+ }),
+ mutex.writeLock(async () => {
+ results.push('START W2');
+ await delay(100);
+ results.push('END W2');
+ }),
+ mutex.readLock(async () => {
+ results.push('START R2');
+ await delay(300);
+ results.push('END R2');
+ }),
+ mutex.readLock(async () => {
+ results.push('START R3');
+ await delay(200);
+ results.push('END R3');
+ }),
+ mutex.writeLock(async () => {
+ results.push('START W3');
+ await delay(100);
+ results.push('END W3');
+ }),
+ ]);
+ const a = [
+ mutex.readLock(async () => {
+ results.push('START R4');
+ await delay(300);
+ results.push('END R4');
+ }),
+ mutex.writeLock(async () => {
+ results.push('START W4');
+ await delay(100);
+ results.push('END W4');
+ }),
+ ];
+ await delay(200);
+ await Promise.all([
+ ...a,
+ // because W4 has already been waiting for 200ms
+ // this read queues behind it instead of jumping
+ // the queue like R2 and R3 did
+ mutex.readLock(async () => {
+ results.push('START R5');
+ await delay(300);
+ results.push('END R5');
+ }),
+ ]);
+ expect(results).toMatchInlineSnapshot(`
+Array [
+ "START R1",
+ "START R2",
+ "START R3",
+ "END R1",
+ "END R3",
+ "END R2",
+ "START W1",
+ "END W1",
+ "START W2",
+ "END W2",
+ "START W3",
+ "END W3",
+ "START R4",
+ "END R4",
+ "START W4",
+ "END W4",
+ "START R5",
+ "END R5",
+]
+`);
+});
+//# sourceMappingURL=Mutex.test.js.map
\ No newline at end of file
diff --git a/node_modules/@databases/sqlite/lib/__tests__/Mutex.test.js.map b/node_modules/@databases/sqlite/lib/__tests__/Mutex.test.js.map
new file mode 100644
index 0000000..13cf0cc
--- /dev/null
+++ b/node_modules/@databases/sqlite/lib/__tests__/Mutex.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Mutex.test.js","sourceRoot":"","sources":["../../src/__tests__/Mutex.test.ts"],"names":[],"mappings":";;AAAA,oCAA6B;AAE7B,KAAK,UAAU,KAAK,CAAC,EAAU;IAC7B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAChE,CAAC;AACD,IAAI,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;IAC9C,MAAM,KAAK,GAAG,IAAI,eAAK,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YACxB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC,CAAC;QACF,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YACxB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC,CAAC;QACF,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YACxB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC,CAAC;KACH,CAAC,CAAC;IACH,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;CASvC,CAAC,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;IACvC,MAAM,KAAK,GAAG,IAAI,eAAK,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YACxB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC,CAAC;QACF,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC,CAAC;QACF,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC,CAAC;QACF,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YACxB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC,CAAC;QACF,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YACxB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC,CAAC;QACF,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC,CAAC;KACH,CAAC,CAAC;IACH,MAAM,CAAC,GAAG;QACR,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YACxB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC,CAAC;QACF,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC,CAAC;KACH,CAAC;IACF,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IACjB,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,GAAG,CAAC;QACJ,gDAAgD;QAChD,gDAAgD;QAChD,+BAA+B;QAC/B,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YACxB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;CAqBvC,CAAC,CAAC;AACH,CAAC,CAAC,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@databases/sqlite/lib/__tests__/index.test.d.ts b/node_modules/@databases/sqlite/lib/__tests__/index.test.d.ts
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/@databases/sqlite/lib/__tests__/index.test.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/@databases/sqlite/lib/__tests__/index.test.js b/node_modules/@databases/sqlite/lib/__tests__/index.test.js
new file mode 100644
index 0000000..61baa73
--- /dev/null
+++ b/node_modules/@databases/sqlite/lib/__tests__/index.test.js
@@ -0,0 +1,55 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const __1 = require("../");
+jest.setTimeout(30000);
+const db = (0, __1.default)();
+afterAll(async () => {
+ await db.dispose();
+});
+test('error messages', async () => {
+ const s = __1.sql;
+ await expect(db.query(s `
+ SELECT * FRM 'baz;
+ `)).rejects.toMatchInlineSnapshot(`[Error: SQLITE_ERROR: near "FRM": syntax error]`);
+});
+test('query', async () => {
+ const [{ foo }] = await db.query((0, __1.sql) `SELECT 1 + 1 as foo`);
+ expect(foo).toBe(2);
+});
+test('query with params', async () => {
+ const [{ foo }] = await db.query((0, __1.sql) `SELECT 1 + ${41} as ${__1.sql.ident('foo')}`);
+ expect(foo).toBe(42);
+});
+test('bigint', async () => {
+ await db.query((0, __1.sql) `CREATE TABLE bigint_test_bigints (id BIGINT NOT NULL PRIMARY KEY);`);
+ await db.query((0, __1.sql) `
+ INSERT INTO bigint_test_bigints (id)
+ VALUES (1),
+ (2),
+ (42);
+ `);
+ const result = await db.query((0, __1.sql) `SELECT id from bigint_test_bigints;`);
+ expect(result).toEqual([{ id: 1 }, { id: 2 }, { id: 42 }]);
+});
+test('transaction', async () => {
+ const result = await db.tx(async (tx) => {
+ const a = await tx.query((0, __1.sql) `SELECT 1 + ${41} as ${__1.sql.ident('foo')}`);
+ const b = await tx.query((0, __1.sql) `SELECT 1 + 2 as bar;`);
+ return { a, b };
+ });
+ expect(result).toMatchInlineSnapshot(`
+Object {
+ "a": Array [
+ Object {
+ "foo": 42,
+ },
+ ],
+ "b": Array [
+ Object {
+ "bar": 3,
+ },
+ ],
+}
+`);
+});
+//# sourceMappingURL=index.test.js.map
\ No newline at end of file
diff --git a/node_modules/@databases/sqlite/lib/__tests__/index.test.js.map b/node_modules/@databases/sqlite/lib/__tests__/index.test.js.map
new file mode 100644
index 0000000..120996b
--- /dev/null
+++ b/node_modules/@databases/sqlite/lib/__tests__/index.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/__tests__/index.test.ts"],"names":[],"mappings":";;AAAA,2BAAiC;AAEjC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAEvB,MAAM,EAAE,GAAG,IAAA,WAAO,GAAE,CAAC;AAErB,QAAQ,CAAC,KAAK,IAAI,EAAE;IAClB,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;IAChC,MAAM,CAAC,GAAG,OAAG,CAAC;IACd,MAAM,MAAM,CACV,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;;GAEX,CAAC,CACD,CAAC,OAAO,CAAC,qBAAqB,CAC7B,iDAAiD,CAClD,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;IACvB,MAAM,CAAC,EAAC,GAAG,EAAC,CAAC,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,IAAA,OAAG,EAAA,qBAAqB,CAAC,CAAC;IACzD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;IACnC,MAAM,CAAC,EAAC,GAAG,EAAC,CAAC,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,IAAA,OAAG,EAAA,cAAc,EAAE,OAAO,OAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7E,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;IACxB,MAAM,EAAE,CAAC,KAAK,CACZ,IAAA,OAAG,EAAA,oEAAoE,CACxE,CAAC;IACF,MAAM,EAAE,CAAC,KAAK,CAAC,IAAA,OAAG,EAAA;;;;;GAKjB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,IAAA,OAAG,EAAA,qCAAqC,CAAC,CAAC;IACxE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,EAAC,EAAE,EAAE,CAAC,EAAC,EAAE,EAAC,EAAE,EAAE,CAAC,EAAC,EAAE,EAAC,EAAE,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;IAC7B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QACtC,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,IAAA,OAAG,EAAA,cAAc,EAAE,OAAO,OAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvE,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,IAAA,OAAG,EAAA,sBAAsB,CAAC,CAAC;QACpD,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;CAatC,CAAC,CAAC;AACH,CAAC,CAAC,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@databases/sqlite/lib/__tests__/stream.test.d.ts b/node_modules/@databases/sqlite/lib/__tests__/stream.test.d.ts
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/@databases/sqlite/lib/__tests__/stream.test.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/@databases/sqlite/lib/__tests__/stream.test.js b/node_modules/@databases/sqlite/lib/__tests__/stream.test.js
new file mode 100644
index 0000000..93840c5
--- /dev/null
+++ b/node_modules/@databases/sqlite/lib/__tests__/stream.test.js
@@ -0,0 +1,27 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const __1 = require("../");
+jest.setTimeout(30000);
+const db = (0, __1.default)();
+test('streaming', async () => {
+ await db.query((0, __1.sql) `CREATE TABLE stream_values (id BIGINT NOT NULL PRIMARY KEY);`);
+ const allValues = [];
+ for (let batch = 0; batch < 10; batch++) {
+ const batchValues = [];
+ for (let i = 0; i < 10; i++) {
+ const value = batch * 10 + i;
+ batchValues.push(value);
+ allValues.push(value);
+ }
+ await db.query((0, __1.sql) `
+ INSERT INTO stream_values (id)
+ VALUES ${__1.sql.join(batchValues.map((v) => (0, __1.sql) `(${v})`), (0, __1.sql) `,`)};
+ `);
+ }
+ const results = [];
+ for await (const row of db.queryStream((0, __1.sql) `SELECT * FROM stream_values`)) {
+ results.push(row.id);
+ }
+ expect(results).toEqual(allValues);
+});
+//# sourceMappingURL=stream.test.js.map
\ No newline at end of file
diff --git a/node_modules/@databases/sqlite/lib/__tests__/stream.test.js.map b/node_modules/@databases/sqlite/lib/__tests__/stream.test.js.map
new file mode 100644
index 0000000..d0fe131
--- /dev/null
+++ b/node_modules/@databases/sqlite/lib/__tests__/stream.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"stream.test.js","sourceRoot":"","sources":["../../src/__tests__/stream.test.ts"],"names":[],"mappings":";;AAAA,2BAAiC;AAEjC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAEvB,MAAM,EAAE,GAAG,IAAA,WAAO,GAAE,CAAC;AAErB,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;IAC3B,MAAM,EAAE,CAAC,KAAK,CACZ,IAAA,OAAG,EAAA,8DAA8D,CAClE,CAAC;IACF,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE;QACvC,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YAC3B,MAAM,KAAK,GAAG,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC;YAC7B,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACvB;QACD,MAAM,EAAE,CAAC,KAAK,CAAC,IAAA,OAAG,EAAA;;eAEP,OAAG,CAAC,IAAI,CACf,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,OAAG,EAAA,IAAI,CAAC,GAAG,CAAC,EACnC,IAAA,OAAG,EAAA,GAAG,CACP;KACF,CAAC,CAAC;KACJ;IACD,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC,WAAW,CAAC,IAAA,OAAG,EAAA,6BAA6B,CAAC,EAAE;QACxE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KACtB;IACD,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@databases/sqlite/lib/index.d.ts b/node_modules/@databases/sqlite/lib/index.d.ts
new file mode 100644
index 0000000..ca1998d
--- /dev/null
+++ b/node_modules/@databases/sqlite/lib/index.d.ts
@@ -0,0 +1,41 @@
+import sql, { SQLQuery, isSqlQuery } from '@databases/sql';
+export type { SQLQuery };
+export { sql, isSqlQuery };
+export declare enum DatabaseConnectionMode {
+ ReadOnly,
+ ReadWrite,
+ ReadWriteCreate,
+ ReadCreate,
+ Create
+}
+export interface DatabaseConnectionOptions {
+ /**
+ * Sets the busy timeout. Must be a postive integer if provided.
+ *
+ * @see https://www.sqlite.org/c3ref/busy_timeout.html
+ */
+ busyTimeout?: number;
+ /**
+ * Defaults to DatabaseConnectionMode.ReadWriteCreate
+ */
+ mode?: DatabaseConnectionMode;
+ /**
+ * Enable long stack traces for debugging. This is global
+ * and cannot be disabled once enabled.
+ */
+ verbose?: boolean;
+}
+export interface DatabaseTransaction {
+ query(query: SQLQuery): Promise;
+ /**
+ * @deprecated use queryStream
+ */
+ stream(query: SQLQuery): AsyncIterableIterator;
+ queryStream(query: SQLQuery): AsyncIterableIterator;
+}
+export interface DatabaseConnection extends DatabaseTransaction {
+ tx(fn: (db: DatabaseTransaction) => Promise): Promise;
+ dispose(): Promise;
+}
+export declare const IN_MEMORY = ":memory:";
+export default function connect(filename?: string, options?: DatabaseConnectionOptions): DatabaseConnection;
diff --git a/node_modules/@databases/sqlite/lib/index.js b/node_modules/@databases/sqlite/lib/index.js
new file mode 100644
index 0000000..fdb042a
--- /dev/null
+++ b/node_modules/@databases/sqlite/lib/index.js
@@ -0,0 +1,174 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.IN_MEMORY = exports.DatabaseConnectionMode = exports.isSqlQuery = exports.sql = void 0;
+const sqlite = require("sqlite3");
+const escape_identifier_1 = require("@databases/escape-identifier");
+const sql_1 = require("@databases/sql");
+exports.sql = sql_1.default;
+Object.defineProperty(exports, "isSqlQuery", { enumerable: true, get: function () { return sql_1.isSqlQuery; } });
+const Mutex_1 = require("./Mutex");
+const Queue = require('then-queue');
+const sqliteFormat = {
+ escapeIdentifier: (str) => (0, escape_identifier_1.escapeSQLiteIdentifier)(str),
+ formatValue: (value) => ({ placeholder: '?', value }),
+};
+var DatabaseConnectionMode;
+(function (DatabaseConnectionMode) {
+ DatabaseConnectionMode[DatabaseConnectionMode["ReadOnly"] = sqlite.OPEN_READONLY] = "ReadOnly";
+ DatabaseConnectionMode[DatabaseConnectionMode["ReadWrite"] = sqlite.OPEN_READWRITE] = "ReadWrite";
+ // tslint:disable-next-line:no-bitwise
+ DatabaseConnectionMode[DatabaseConnectionMode["ReadWriteCreate"] = sqlite.OPEN_READWRITE | sqlite.OPEN_CREATE] = "ReadWriteCreate";
+ // tslint:disable-next-line:no-bitwise
+ DatabaseConnectionMode[DatabaseConnectionMode["ReadCreate"] = sqlite.OPEN_READONLY | sqlite.OPEN_CREATE] = "ReadCreate";
+ DatabaseConnectionMode[DatabaseConnectionMode["Create"] = sqlite.OPEN_CREATE] = "Create";
+})(DatabaseConnectionMode = exports.DatabaseConnectionMode || (exports.DatabaseConnectionMode = {}));
+class DatabaseTransactionImplementation {
+ constructor(database) {
+ this._database = database;
+ }
+ async query(query) {
+ if (!(0, sql_1.isSqlQuery)(query)) {
+ throw new Error('Expected query to be an SQLQuery');
+ }
+ return runQuery(query, this._database, async (fn) => fn());
+ }
+ /**
+ * @deprecated use queryStream
+ */
+ stream(query) {
+ return this.queryStream(query);
+ }
+ queryStream(query) {
+ if (!(0, sql_1.isSqlQuery)(query)) {
+ throw new Error('Expected query to be an SQLQuery');
+ }
+ return runQueryStream(query, this._database, async (fn) => fn());
+ }
+}
+exports.IN_MEMORY = ':memory:';
+class DatabaseConnectionImplementation {
+ constructor(filename, options = {}) {
+ this._mutex = new Mutex_1.default();
+ this._database = new sqlite.Database(filename, options.mode);
+ if (options.verbose) {
+ sqlite.verbose();
+ }
+ if (options.busyTimeout !== undefined) {
+ this._database.configure('busyTimeout', options.busyTimeout);
+ }
+ }
+ async query(query) {
+ if (!(0, sql_1.isSqlQuery)(query)) {
+ throw new Error('Expected query to be an SQLQuery');
+ }
+ return runQuery(query, this._database, async (fn) => this._mutex.readLock(fn));
+ }
+ /**
+ * @deprecated use queryStream
+ */
+ stream(query) {
+ return this.queryStream(query);
+ }
+ queryStream(query) {
+ if (!(0, sql_1.isSqlQuery)(query)) {
+ throw new Error('Expected query to be an SQLQuery');
+ }
+ return runQueryStream(query, this._database, async (fn) => this._mutex.readLock(fn));
+ }
+ async tx(fn) {
+ return this._mutex.writeLock(async () => {
+ await new Promise((resolve, reject) => {
+ this._database.run('BEGIN', (err) => {
+ if (err)
+ reject(err);
+ else
+ resolve();
+ });
+ });
+ try {
+ const result = fn(new DatabaseTransactionImplementation(this._database));
+ await new Promise((resolve, reject) => {
+ this._database.run('COMMIT', (err) => {
+ if (err)
+ reject(err);
+ else
+ resolve();
+ });
+ });
+ return result;
+ }
+ catch (ex) {
+ await new Promise((resolve, reject) => {
+ this._database.run('REVERT', (err) => {
+ if (err)
+ reject(err);
+ else
+ resolve();
+ });
+ });
+ throw ex;
+ }
+ });
+ }
+ async dispose() {
+ await new Promise((resolve, reject) => {
+ this._database.close((err) => {
+ if (err)
+ reject(err);
+ else
+ resolve();
+ });
+ });
+ }
+}
+function connect(filename = exports.IN_MEMORY, options = {}) {
+ return new DatabaseConnectionImplementation(filename, options);
+}
+exports.default = connect;
+module.exports = Object.assign(connect, {
+ default: connect,
+ DatabaseConnectionMode,
+ IN_MEMORY: exports.IN_MEMORY,
+ sql: sql_1.default,
+ isSqlQuery: sql_1.isSqlQuery,
+});
+async function runQuery(query, database, lock) {
+ const { text, values } = query.format(sqliteFormat);
+ return lock(async () => {
+ return await new Promise((resolve, reject) => {
+ database.all(text, values, (err, rows) => {
+ if (err)
+ reject(err);
+ else
+ resolve(rows);
+ });
+ });
+ });
+}
+async function* runQueryStream(query, database, lock) {
+ const queue = new Queue();
+ const { text, values } = query.format(sqliteFormat);
+ lock(async () => {
+ await new Promise((releaseMutex) => {
+ database.each(text, values, (err, row) => {
+ if (err)
+ queue.push({ done: true, err });
+ else
+ queue.push({ done: false, value: row });
+ }, (err) => {
+ releaseMutex();
+ queue.push({ done: true, err });
+ });
+ });
+ }).catch((ex) => {
+ setImmediate(() => {
+ throw ex;
+ });
+ });
+ let value = await queue.pop();
+ while (!value.done) {
+ yield value.value;
+ value = await queue.pop();
+ }
+}
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@databases/sqlite/lib/index.js.map b/node_modules/@databases/sqlite/lib/index.js.map
new file mode 100644
index 0000000..8d9161a
--- /dev/null
+++ b/node_modules/@databases/sqlite/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,kCAAkC;AAClC,oEAAoE;AACpE,wCAAuE;AAK/D,cALD,aAAG,CAKC;AAAE,2FALU,gBAAU,OAKV;AAJvB,mCAA4B;AAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAKpC,MAAM,YAAY,GAAiB;IACjC,gBAAgB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,0CAAsB,EAAC,GAAG,CAAC;IACtD,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAC,WAAW,EAAE,GAAG,EAAE,KAAK,EAAC,CAAC;CACpD,CAAC;AAEF,IAAY,sBAQX;AARD,WAAY,sBAAsB;IAChC,4DAAW,MAAM,CAAC,aAAa,cAAA,CAAA;IAC/B,6DAAY,MAAM,CAAC,cAAc,eAAA,CAAA;IACjC,sCAAsC;IACtC,mEAAkB,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,WAAW,qBAAA,CAAA;IAC5D,sCAAsC;IACtC,8DAAa,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,WAAW,gBAAA,CAAA;IACtD,0DAAS,MAAM,CAAC,WAAW,YAAA,CAAA;AAC7B,CAAC,EARW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAQjC;AAiCD,MAAM,iCAAiC;IAErC,YAAY,QAAyB;QACnC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,KAAe;QACzB,IAAI,CAAC,IAAA,gBAAU,EAAC,KAAK,CAAC,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;SACrD;QACD,OAAO,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAe;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,WAAW,CAAC,KAAe;QACzB,IAAI,CAAC,IAAA,gBAAU,EAAC,KAAK,CAAC,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;SACrD;QACD,OAAO,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;CACF;AAEY,QAAA,SAAS,GAAG,UAAU,CAAC;AACpC,MAAM,gCAAgC;IAGpC,YAAY,QAAgB,EAAE,UAAqC,EAAE;QADpD,WAAM,GAAG,IAAI,eAAK,EAAE,CAAC;QAEpC,IAAI,CAAC,SAAS,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,OAAO,CAAC,OAAO,EAAE;YACnB,MAAM,CAAC,OAAO,EAAE,CAAC;SAClB;QACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE;YACrC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;SAC9D;IACH,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,KAAe;QACzB,IAAI,CAAC,IAAA,gBAAU,EAAC,KAAK,CAAC,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;SACrD;QACD,OAAO,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAClD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CACzB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAe;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,WAAW,CAAC,KAAe;QACzB,IAAI,CAAC,IAAA,gBAAU,EAAC,KAAK,CAAC,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;SACrD;QACD,OAAO,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CACxD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CACzB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,EAAE,CAAI,EAA2C;QACrD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YACtC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;oBAClC,IAAI,GAAG;wBAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;wBAChB,OAAO,EAAE,CAAC;gBACjB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,IAAI;gBACF,MAAM,MAAM,GAAG,EAAE,CACf,IAAI,iCAAiC,CAAC,IAAI,CAAC,SAAS,CAAC,CACtD,CAAC;gBACF,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;wBACnC,IAAI,GAAG;4BAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;4BAChB,OAAO,EAAE,CAAC;oBACjB,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBACH,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,EAAE,EAAE;gBACX,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;wBACnC,IAAI,GAAG;4BAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;4BAChB,OAAO,EAAE,CAAC;oBACjB,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBACH,MAAM,EAAE,CAAC;aACV;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC3B,IAAI,GAAG;oBAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;oBAChB,OAAO,EAAE,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,SAAwB,OAAO,CAC7B,WAAmB,iBAAS,EAC5B,UAAqC,EAAE;IAEvC,OAAO,IAAI,gCAAgC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjE,CAAC;AALD,0BAKC;AACD,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;IACtC,OAAO,EAAE,OAAO;IAChB,sBAAsB;IACtB,SAAS,EAAT,iBAAS;IACT,GAAG,EAAH,aAAG;IACH,UAAU,EAAV,gBAAU;CACX,CAAC,CAAC;AAEH,KAAK,UAAU,QAAQ,CACrB,KAAe,EACf,QAAyB,EACzB,IAA6C;IAE7C,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE;QACrB,OAAO,MAAM,IAAI,OAAO,CAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAClD,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBACvC,IAAI,GAAG;oBAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;oBAChB,OAAO,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAWD,KAAK,SAAS,CAAC,CAAC,cAAc,CAC5B,KAAe,EACf,QAAyB,EACzB,IAA6C;IAE7C,MAAM,KAAK,GACT,IAAI,KAAK,EAAE,CAAC;IACd,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAClD,IAAI,CAAC,KAAK,IAAI,EAAE;QACd,MAAM,IAAI,OAAO,CAAO,CAAC,YAAY,EAAE,EAAE;YACvC,QAAQ,CAAC,IAAI,CACX,IAAI,EACJ,MAAM,EACN,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBACX,IAAI,GAAG;oBAAE,KAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC;;oBAClC,KAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAC,CAAC,CAAC;YAC7C,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;gBACN,YAAY,EAAE,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC;YAChC,CAAC,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE;QACd,YAAY,CAAC,GAAG,EAAE;YAChB,MAAM,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,IAAI,KAAK,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;IAC9B,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE;QAClB,MAAM,KAAK,CAAC,KAAK,CAAC;QAClB,KAAK,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;KAC3B;AACH,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@databases/sqlite/lib/tsconfig.tsbuildinfo b/node_modules/@databases/sqlite/lib/tsconfig.tsbuildinfo
new file mode 100644
index 0000000..f69b42e
--- /dev/null
+++ b/node_modules/@databases/sqlite/lib/tsconfig.tsbuildinfo
@@ -0,0 +1 @@
+{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../src/Mutex.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/querystring/decode.d.ts","../../../node_modules/querystring/encode.d.ts","../../../node_modules/querystring/index.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/sqlite3/index.d.ts","../../escape-identifier/lib/index.d.ts","../../sql/lib/web.d.ts","../../sql/lib/index.d.ts","../src/index.ts","../src/__tests__/Mutex.test.ts","../src/__tests__/index.test.ts","../src/__tests__/stream.test.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/big.js/index.d.ts","../../../node_modules/@types/cosmiconfig/index.d.ts","../../../node_modules/@types/cross-spawn/index.d.ts","../../../node_modules/@types/cuid/index.d.ts","../../../node_modules/@types/deep-equal/index.d.ts","../../../node_modules/@types/github-slugger/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/glob/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/rxjs/internal/Subscription.d.ts","../../../node_modules/rxjs/internal/types.d.ts","../../../node_modules/rxjs/internal/Subscriber.d.ts","../../../node_modules/rxjs/internal/Operator.d.ts","../../../node_modules/rxjs/internal/observable/iif.d.ts","../../../node_modules/rxjs/internal/observable/throwError.d.ts","../../../node_modules/rxjs/internal/Observable.d.ts","../../../node_modules/rxjs/internal/Subject.d.ts","../../../node_modules/rxjs/internal/observable/ConnectableObservable.d.ts","../../../node_modules/rxjs/internal/operators/groupBy.d.ts","../../../node_modules/rxjs/internal/symbol/observable.d.ts","../../../node_modules/rxjs/internal/BehaviorSubject.d.ts","../../../node_modules/rxjs/internal/ReplaySubject.d.ts","../../../node_modules/rxjs/internal/AsyncSubject.d.ts","../../../node_modules/rxjs/internal/Scheduler.d.ts","../../../node_modules/rxjs/internal/scheduler/Action.d.ts","../../../node_modules/rxjs/internal/scheduler/AsyncScheduler.d.ts","../../../node_modules/rxjs/internal/scheduler/AsyncAction.d.ts","../../../node_modules/rxjs/internal/scheduler/AsapScheduler.d.ts","../../../node_modules/rxjs/internal/scheduler/asap.d.ts","../../../node_modules/rxjs/internal/scheduler/async.d.ts","../../../node_modules/rxjs/internal/scheduler/QueueScheduler.d.ts","../../../node_modules/rxjs/internal/scheduler/queue.d.ts","../../../node_modules/rxjs/internal/scheduler/AnimationFrameScheduler.d.ts","../../../node_modules/rxjs/internal/scheduler/animationFrame.d.ts","../../../node_modules/rxjs/internal/scheduler/VirtualTimeScheduler.d.ts","../../../node_modules/rxjs/internal/Notification.d.ts","../../../node_modules/rxjs/internal/util/pipe.d.ts","../../../node_modules/rxjs/internal/util/noop.d.ts","../../../node_modules/rxjs/internal/util/identity.d.ts","../../../node_modules/rxjs/internal/util/isObservable.d.ts","../../../node_modules/rxjs/internal/util/ArgumentOutOfRangeError.d.ts","../../../node_modules/rxjs/internal/util/EmptyError.d.ts","../../../node_modules/rxjs/internal/util/ObjectUnsubscribedError.d.ts","../../../node_modules/rxjs/internal/util/UnsubscriptionError.d.ts","../../../node_modules/rxjs/internal/util/TimeoutError.d.ts","../../../node_modules/rxjs/internal/observable/bindCallback.d.ts","../../../node_modules/rxjs/internal/observable/bindNodeCallback.d.ts","../../../node_modules/rxjs/internal/InnerSubscriber.d.ts","../../../node_modules/rxjs/internal/OuterSubscriber.d.ts","../../../node_modules/rxjs/internal/observable/combineLatest.d.ts","../../../node_modules/rxjs/internal/observable/concat.d.ts","../../../node_modules/rxjs/internal/observable/defer.d.ts","../../../node_modules/rxjs/internal/observable/empty.d.ts","../../../node_modules/rxjs/internal/observable/forkJoin.d.ts","../../../node_modules/rxjs/internal/observable/from.d.ts","../../../node_modules/rxjs/internal/observable/fromEvent.d.ts","../../../node_modules/rxjs/internal/observable/fromEventPattern.d.ts","../../../node_modules/rxjs/internal/observable/generate.d.ts","../../../node_modules/rxjs/internal/observable/interval.d.ts","../../../node_modules/rxjs/internal/observable/merge.d.ts","../../../node_modules/rxjs/internal/observable/never.d.ts","../../../node_modules/rxjs/internal/observable/of.d.ts","../../../node_modules/rxjs/internal/observable/onErrorResumeNext.d.ts","../../../node_modules/rxjs/internal/observable/pairs.d.ts","../../../node_modules/rxjs/internal/observable/partition.d.ts","../../../node_modules/rxjs/internal/observable/race.d.ts","../../../node_modules/rxjs/internal/observable/range.d.ts","../../../node_modules/rxjs/internal/observable/timer.d.ts","../../../node_modules/rxjs/internal/observable/using.d.ts","../../../node_modules/rxjs/internal/observable/zip.d.ts","../../../node_modules/rxjs/internal/scheduled/scheduled.d.ts","../../../node_modules/rxjs/internal/config.d.ts","../../../node_modules/rxjs/index.d.ts","../../../node_modules/@types/through/index.d.ts","../../../node_modules/@types/inquirer/lib/objects/choice.d.ts","../../../node_modules/@types/inquirer/lib/objects/separator.d.ts","../../../node_modules/@types/inquirer/lib/objects/choices.d.ts","../../../node_modules/@types/inquirer/lib/utils/screen-manager.d.ts","../../../node_modules/@types/inquirer/lib/prompts/base.d.ts","../../../node_modules/@types/inquirer/lib/utils/paginator.d.ts","../../../node_modules/@types/inquirer/lib/prompts/checkbox.d.ts","../../../node_modules/@types/inquirer/lib/prompts/confirm.d.ts","../../../node_modules/@types/inquirer/lib/prompts/editor.d.ts","../../../node_modules/@types/inquirer/lib/prompts/expand.d.ts","../../../node_modules/@types/inquirer/lib/prompts/input.d.ts","../../../node_modules/@types/inquirer/lib/prompts/list.d.ts","../../../node_modules/@types/inquirer/lib/prompts/number.d.ts","../../../node_modules/@types/inquirer/lib/prompts/password.d.ts","../../../node_modules/@types/inquirer/lib/prompts/rawlist.d.ts","../../../node_modules/@types/inquirer/lib/ui/baseUI.d.ts","../../../node_modules/@types/inquirer/lib/ui/bottom-bar.d.ts","../../../node_modules/@types/inquirer/lib/ui/prompt.d.ts","../../../node_modules/@types/inquirer/lib/utils/events.d.ts","../../../node_modules/@types/inquirer/lib/utils/readline.d.ts","../../../node_modules/@types/inquirer/lib/utils/utils.d.ts","../../../node_modules/@types/inquirer/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/jest-diff/build/cleanupSemantic.d.ts","../../../node_modules/jest-diff/build/types.d.ts","../../../node_modules/jest-diff/build/diffLines.d.ts","../../../node_modules/jest-diff/build/printDiffs.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/pretty-format/build/types.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/mdast/index.d.ts","../../../node_modules/@types/mkdirp/index.d.ts","../../../node_modules/@types/ms/index.d.ts","../../../node_modules/@types/mysql/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/parse-json/index.d.ts","../../../node_modules/@types/pluralize/index.d.ts","../../../node_modules/@types/prettier/index.d.ts","../../../node_modules/@types/prop-types/index.d.ts","../../../node_modules/@types/react/global.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@types/scheduler/tracing.d.ts","../../../node_modules/@types/react/index.d.ts","../../../node_modules/@types/rimraf/index.d.ts","../../../node_modules/@types/scheduler/index.d.ts","../../../node_modules/@types/semver/classes/semver.d.ts","../../../node_modules/@types/semver/functions/parse.d.ts","../../../node_modules/@types/semver/functions/valid.d.ts","../../../node_modules/@types/semver/functions/clean.d.ts","../../../node_modules/@types/semver/functions/inc.d.ts","../../../node_modules/@types/semver/functions/diff.d.ts","../../../node_modules/@types/semver/functions/major.d.ts","../../../node_modules/@types/semver/functions/minor.d.ts","../../../node_modules/@types/semver/functions/patch.d.ts","../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../node_modules/@types/semver/functions/compare.d.ts","../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../node_modules/@types/semver/functions/sort.d.ts","../../../node_modules/@types/semver/functions/rsort.d.ts","../../../node_modules/@types/semver/functions/gt.d.ts","../../../node_modules/@types/semver/functions/lt.d.ts","../../../node_modules/@types/semver/functions/eq.d.ts","../../../node_modules/@types/semver/functions/neq.d.ts","../../../node_modules/@types/semver/functions/gte.d.ts","../../../node_modules/@types/semver/functions/lte.d.ts","../../../node_modules/@types/semver/functions/cmp.d.ts","../../../node_modules/@types/semver/functions/coerce.d.ts","../../../node_modules/@types/semver/classes/comparator.d.ts","../../../node_modules/@types/semver/classes/range.d.ts","../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../node_modules/@types/semver/ranges/valid.d.ts","../../../node_modules/@types/semver/ranges/outside.d.ts","../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../node_modules/@types/semver/ranges/subset.d.ts","../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../node_modules/@types/semver/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/uppercamelcase/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"aa9fb4c70f369237c2f45f9d969c9a59e0eae9a192962eb48581fe864aa609db","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"e54c8715a4954cfdc66cd69489f2b725c09ebf37492dbd91cff0a1688b1159e8","affectsGlobalScope":true},{"version":"51b8b27c21c066bf877646e320bf6a722b80d1ade65e686923cd9d4494aef1ca","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"2c8c5ee58f30e7c944e04ab1fb5506fdbb4dd507c9efa6972cf4b91cec90c503","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"1b3fe904465430e030c93239a348f05e1be80640d91f2f004c3512c2c2c89f34","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"4632665b87204bb1caa8b44d165bce0c50dfab177df5b561b345a567cabacf9a","affectsGlobalScope":true},"df8a08ef52447648d3cbdc817f5f011d4afe12868dcf13caee89b2e26dcde5c9","d555cd63a3fc837840db192596273fdf52fb28092b0a33bec98e89a0334b3a4c",{"version":"3e432cdf56538889e5742d388cdf03d670bfb17f4547dbbb1daf90701ec790d5","affectsGlobalScope":true},"85d545d430795d54a8b2896f67f9aeb7bf19fd74a1469ae0627311eb72f0dfa2","a473cf45c3d9809518f8af913312139d9f4db6887dc554e0d06d0f4e52722e6b","10b3076ac94d93d107062c0874fcc02305d8b915961cf848df17778535774f39","3d68ecf05475492f041c88395372c3a01b30351619bebcd38287ab185be7f7e4",{"version":"36c956a3a6dc279f1e6b77aa4b97b7b229b7d828102573ef5002de456ff5e1d9","affectsGlobalScope":true},"45ac321f2e15d268fd74a90ddaa6467dcaaff2c5b13f95b4b85831520fb7a491","6e8b894365ab993dbb55c58542598d1548fdda072c974f98b89c218891e2ba09","ddd6169dff8e5263397a9399ba7ba92521d3959f8f9dcdc27f24403dc7b751ba","508e1e25ca40ea6cde332d3232c826fcd82f456f45ae535d817754684f048f9e",{"version":"2866a528b2708aa272ec3eaafd3c980abb23aec1ef831cfc5eb2186b98c37ce5","affectsGlobalScope":true},{"version":"8f8f6ee2a0c94077f79439f51640a625ac7e2f5dd6866bd3b5a41705c836adfc","affectsGlobalScope":true},"ee97aed5b4667a5c3003a1da4b108827fc64b888391417617d89b02ff134de9a","839421b494b57cd2bc0074e914130277051850eba6def6c25870056e6652640b","e18a4b529c9a05593e612130554d93a2b78b949cf1cf48c0b183071258f0e95a","88587b5c94b0c4f5d78026e4beeb93383b3933c860d9840b55d6bf47d7b632bb","a473ecd14d9bafbd6a33105524b033237bbf1d6ce2cd81eb71cc54bec2d83d55","9e8947666e44137405fd378f3a8a0515a492e967e552406c02b991c98c78fc61","0cff7901aedfe78e314f7d44088f07e2afa1b6e4f0473a4169b8456ca2fb245d","7a2a3ff87ffd4313a6a2f3b012e801dd249ee58152cedf90c8718dcd2c811fe3","69640cc2e76dad52daeb9914e6b70c5c9a5591a3a65190a2d3ea432cf0015e16","a39a4c527b7a2dc7a2661b711a534c10c76852c5ad6ae320767d3f7d2621b67d","1bb5c9857b2ee32c199dd85bc0f4c0299112485d6e5dc91428eabfdee0dbd68c",{"version":"5daba568741c8ed283d67bf370c626a91e09fdfbc6d4abe22a7f93e2cf5138b9","affectsGlobalScope":true},"7f77304372efe3c9967e5f9ea2061f1b4bf41dc3cda3c83cdd676f2e5af6b7e6","662661bbf9ccd869f3bca82d34234b2abdc95c657e2187c35352d42dddb24c2d","5caa645cc390a0a8d5a031072b6b4e49218c17017cd80a63bd2557b19be13c5f","4c4334eb5d8fae83416a361d787b55a5743916aed8af812a909898bc7333e709","352104835f5c468c7d8a277f2c8c02fac239a37cd2293181fe421faa153878d3","4fd3c4debadce3e9ab9dec3eb45f7f5e2e3d4ad65cf975a6d938d883cfb25a50","0953427f9c2498f71dd912fdd8a81b19cf6925de3e1ad67ab9a77b9a0f79bf0b","a4aa075328fe61190b8547e74fae18179591a67fedb2ad274c63044a00716743","7df562288f949945cf69c21cd912100c2afedeeb7cdb219085f7f4b46cb7dde4","9d16690485ff1eb4f6fc57aebe237728fd8e03130c460919da3a35f4d9bd97f5","ad7e61eca7f2f8bf47e72695f9f6663b75e41d87ef49abdb17c0cb843862f8aa","ecba2e44af95b0599c269a92628cec22e752868bce37396740deb51a5c547a26","46a9fb41a8f3bc7539eeebc15a6e04b9e55d7537a081615ad3614220d34c3e0f","40c6ed5dc58e1c6afa7dcd23b1697bf290cc5b1170c63d0a4dd12f52aa39291c","71d6da3b0150ecdcd16c08b3b546fe4cc7f53df642eccfeb03c813ee788fae0c","a364b4a8a015ae377052fa4fac94204d79a69d879567f444c7ceff1b7a18482d","c5ec3b97d9db756c689cd11f4a11eaa9e6077b2768e3e9b54ff727a93c03a909","c14e9e86f18189c7d32b5dd03b4cf3f40bed68f0509dec06d75d41b82c065fe2","bdb07038733b2d74a75ba9c381dcb92774cd6f161ee125bfa921eae7d883ccc9","ad93e960a3a07dff7394bf0c8a558006a9ff2d0725ab28fc33dec227d4cb251e",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true},"1d4ac8cbd56a1d3b2077d1503afa0a82c608efd7a7afe393e0c8ec525c6e1cd7","7a255524a57e2a24851fd794ed17f3ed7b93b10d85adf437669fb0ad04f34ef1","16695f113ad37f9c96d48e5f15959d7c9a6f6add4bf99afb3353ffb81f560f77","0f0cf97336e01b853d828e7a6f9b14238ef005edfe465cf39291e81dea223fdc","f43a81d60817f3790fe2ea876f4ccee827d80845d9b731f5185cf2ad5b055661","81ac305a41f3dbf7edb69eecfa5fa95f2fdc12d33c7d7a4fc86a6464d06fca05","759f40e67c784a794a02c65d040e42a42f937d619632667ad871cc6f5bf2b65e","13a8737a6cad5eb7fe2b81b78c490f5648f7a9f72ad9d6a5d89cd443aa6f1771","d7ffad503b884b5ff9e2059830da54aacb11f845ef02682f41cec68344ecddf9","98f40132aab59240e3daa408377a6f779aa81f4340f4451959cd2eba3750e456","8dfed5c91ad36e69e6da6b7e49be929d4e19666db2b651aa839c485170a2902c","4aaf84a5ac87bad3211f041fab85de5cc42e5954c3ed56842faf6f08167e6202","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","3b043cf9a81854a72963fdb57d1884fc4da1cf5be69b5e0a4c5b751e58cb6d88","71c56bdaa82d7ce75a72d3c06c04fe10becec09bd9c4ef21776a2a055d3f428e","23a6a8de10b40eb59194c822e6d6bfa43c88d45792283ae63f42950736931f27","dd591498148d18c594e87cbbad92511e7a479517ab9d4987520ef5da5cfb963f","5e3a55837aa1f42af2d2334c9b750f59f5f50a2205471875f5dd6aadc3e49ddb","1cf1de1897be298c82af4e8e49e5743f3bab2bd25e5f5362ded0b9ec28b78f62","2e345cb6511f4c4c60c274df6626c94f3182939034f06cdf414bfbccc584f822","78a1efd7214a25b84e08af80fe2b027c3049e52b26dfcaf777b82c759d8548c9","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","725b884357ba84171341a8e4cc08edf11417854fd069842ca6d22afb2e340e45","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","6cb35d83d21a7e72bd00398c93302749bcd38349d0cc5e76ff3a90c6d1498a4d",{"version":"369dd7668d0e6c91550bce0c325f37ce6402e5dd40ecfca66fbb5283e23e559d","affectsGlobalScope":true},"2632057d8b983ee33295566088c080384d7d69a492bc60b008d6a6dfd3508d6b","4bf71cf2a94492fc71e97800bdf2bcb0a9a0fa5fce921c8fe42c67060780cbfa","0996ff06f64cb05b6dac158a6ada2e16f8c2ccd20f9ff6f3c3e871f1ba5fb6d9","5c492d01a19fea5ebfff9d27e786bc533e5078909521ca17ae41236f16f9686a","a6ee930b81c65ec79aca49025b797817dde6f2d2e9b0e0106f0844e18e2cc819","84fce15473e993e6b656db9dd3c9196b80f545647458e6621675e840fd700d29","7d5336ee766aa72dffb1cc2a515f61d18a4fb61b7a2757cbccfb7b286b783dfb","63e96248ab63f6e7a86e31aa3e654ed6de1c3f99e3b668e04800df05874e8b77","80da0f61195385d22b666408f6cccbc261c066d401611a286f07dfddf7764017","06a20cc7d937074863861ea1159ac783ff97b13952b4b5d1811c7d8ab5c94776","ab6de4af0e293eae73b67dad251af097d7bcc0b8b62de84e3674e831514cb056","18cbd79079af97af66c9c07c61b481fce14a4e7282eca078c474b40c970ba1d0","e7b45405689d87e745a217b648d3646fb47a6aaba9c8d775204de90c7ea9ff35","669b754ec246dd7471e19b655b73bda6c2ca5bb7ccb1a4dff44a9ae45b6a716a","bcfaca4a8ff50f57fd36df91fba5d34056883f213baff7192cbfc4d3805d2084","76a564b360b267502219a89514953058494713ee0923a63b2024e542c18b40e5","8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","a20629551ed7923f35f7556c4c15d0c8b2ebe7afaa68ceaab079a1707ba64be2","d6de66600c97cd499526ddecea6e12166ab1c0e8d9bf36fb2339fd39c8b3372a","8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","a8932876de2e3138a5a27f9426b225a4d27f0ba0a1e2764ba20930b4c3faf4b9","df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","027d600e00c5f5e1816c207854285d736f2f5fa28276e2829db746d5d6811ba1","5443113a16ef378446e08d6500bb48b35de582426459abdb5c9704f5c7d327d9","0fb581ecb53304a3c95bb930160b4fa610537470cce850371cbaad5a458ca0d9","7da4e290c009d7967343a7f8c3f145a3d2c157c62483362183ba9f637a536489","eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","914560d0c4c6aa947cfe7489fe970c94ba25383c414bbe0168b44fd20dbf0df4","4fb3405055b54566dea2135845c3a776339e7e170d692401d97fd41ad9a20e5d","8d607832a6ef0eac30657173441367dd76c96bf7800d77193428b922e060c3af","20ff7207f0bb5cdde5fee8e83315ade7e5b8100cfa2087d20d39069a3d7d06f4","7ca4c534eab7cff43d81327e369a23464bc37ef38ce5337ceff24a42c6c84eb2","5252dec18a34078398be4e321dee884dc7f47930e5225262543a799b591b36d2","23caed4dff98bd28157d2b798b43f1dfefe727f18641648c01ce4e0e929a1630","f67e013d5374826596d7c23dbae1cdb14375a27cd72e16c5fb46a4b445059329","ea3401b70e2302683bbf4c18b69ef2292b60f4d8f8e6d920413b81fb7bde0f65","71afe26642c0fb86b9f8b1af4af5deb5181b43b6542a3ff2314871b53d04c749","0d7f01634e6234d84cf0106508efdb8ae00e5ed126eff9606d37b031ac1de654","f8d209086bad78af6bd7fef063c1ed449c815e6f8d36058115f222d9f788b848","3ad003278d569d1953779e2f838f7798f02e793f6a1eceac8e0065f1a202669b","fb2c5eceffcd918dbb86332afa0199f5e7b6cf6ee42809e930a827b28ef25afe","f664aaff6a981eeca68f1ff2d9fd21b6664f47bf45f3ae19874df5a6683a8d8a","ce066f85d73e09e9adbd0049bcf6471c7eefbfc2ec4b5692b5bcef1e36babd2a","09d302513cacfbcc54b67088739bd8ac1c3c57917f83f510b2d1adcb99fd7d2a","3faa54e978b92a6f726440c13fe3ab35993dc74d697c7709681dc1764a25219f","2bd0489e968925eb0c4c0fb12ef090be5165c86bd088e1e803102c38d4a717d8","88924207132b9ba339c1adb1ed3ea07e47b3149ff8a2e21a3ea1f91cee68589d","b8800b93d8ab532f8915be73f8195b9d4ef06376d8a82e8cdc17c400553172d6","d7d469703b78beba76d511957f8c8b534c3bbb02bea7ab4705c65ef573532fb8","74c8c3057669c03264263d911d0f82e876cef50b05be21c54fef23c900de0420","b303eda2ff2d582a9c3c5ecb708fb57355cdc25e8c8197a9f66d4d1bf09fda19","4e5dc89fa22ff43da3dee1db97d5add0591ebaff9e4adef6c8b6f0b41f0f60f0","ec4e82cb42a902fe83dc13153c7a260bee95684541f8d7ef26cb0629a2f4ca31","5f36e24cd92b0ff3e2a243685a8a780c9413941c36739f04b428cc4e15de629d","40a26494e6ab10a91851791169582ab77fed4fbd799518968177e7eefe08c7a9","208e125b45bc561765a74f6f1019d88e44e94678769824cf93726e1bac457961","b3985971de086ef3aa698ef19009a53527b72e65851b782dc188ac341a1e1390","c81d421aabb6113cd98b9d4f11e9a03273b363b841f294b457f37c15d513151d","30063e3a184ff31254bbafa782c78a2d6636943dfe59e1a34f451827fd7a68dc","c05d4cae0bceed02c9d013360d3e65658297acb1b7a90252fe366f2bf4f9ccc9","6f14b92848889abba03a474e0750f7350cc91fc190c107408ca48679a03975ae","a588d0765b1d18bf00a498b75a83e095aef75a9300b6c1e91cbf39e408f2fe2f","656424ca784760c679bf2677d8aaf55d1cb8452cd0ac04bbe1c0f659f45f8c11","5d2651c679f59706bf484e7d423f0ec2d9c79897e2e68c91a3f582f21328d193","30d49e69cb62f350ff0bc5dda1c557429c425014955c19c557f101c0de9272e7","d3747dbed45540212e9a906c2fb8b5beb691f2cd0861af58a66dc01871004f38","05a21cbb7cbe1ec502e7baca1f4846a4e860d96bad112f3e316b995ba99715b7","1eaee2b52f1c0e1848845a79050c1d06ae554d8050c35e3bf479f13d6ee19dd5","fd219904eea67c470dfebbaf44129b0db858207c3c3b55514bdc84de547b1687","4de232968f584b960b4101b4cdae593456aff149c5d0c70c2389248e9eb9fbac","933c42f6ed2768265dfb42faa817ce8d902710c57a21a1859a9c3fe5e985080e","c5430542eeebb207d651e8b00a08e4bb680c47ecb73dd388d8fa597a1fc5de5b","a6c5c9906262cf10549989c0061e5a44afdc1f61da77d5e09418a9ecea0018fe","bc6e433cb982bf63eaa523dbbbd30fe12960a09861b352d77baf77ad6dd8886d","9af64ab00918f552388252977c1569fe31890686ca1fdb8e20f58d3401c9a50c","3d3cc03b5c6e056c24aac76789f4bc67caee98a4f0774ab82bc8ba34d16be916","747ce36fa27a750a05096f3610e59c9b5a55e13defec545c01a75fd13d67b620","1a8f503c64bdb36308f245960d9e4acac4cf65d8b6bd0534f88230ebf0be7883","a2c1f4012459547d62116d724e7ec820bb2e6848da40ea0747bf160ffd99b283","0dc197e52512a7cbea4823cc33c23b0337af97bd59b38bf83be047f37cd8c9a8","492c93ade227fe4545fabb3035b9dd5d57d8b4fde322e5217fdaef20aa1b80a8","83c54a3b3e836d1773b8c23ff76ce6e0aae1a2209fc772b75e9de173fec9eac0","475e411f48f74c14b1f6e50cc244387a5cc8ce52340dddfae897c96e03f86527","5573ce7aa683a81c9a727294ffdb47d82d7715a148bfe9f4ddcf2f6cdfef1f0a","2cd9edbb4a6411a9f5258237dd73323db978d7aa9ebf1d1b0ac79771ac233e24","de18acda71730bac52f4b256ce7511bb56cc21f6f114c59c46782eff2f632857","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","69da61a7b5093dac77fa3bec8be95dcf9a74c95a0e9161edb98bb24e30e439d2","561eca7a381b96d6ccac6e4061e6d2ae53f5bc44203f3fd9f5b26864c32ae6e9","62ea38627e3ebab429f7616812a9394d327c2bc271003dfba985de9b4137369f","b4439890c168d646357928431100daac5cbdee1d345a34e6bf6eca9f3abe22bc","5d72971a459517c44c1379dab9ed248e87a61ba0a1e0f25c9d67e1e640cd9a09","02d734976af36f4273d930bea88b3e62adf6b078cf120c1c63d49aa8d8427c5c",{"version":"516a426e3960379f310107635b8f3a7e8c307c6c665080b128039d9299ec4087","affectsGlobalScope":true},"cddf5c26907c0b8378bc05543161c11637b830da9fadf59e02a11e675d11e180","2a2e2c6463bcf3c59f31bc9ab4b6ef963bbf7dffb049cd017e2c1834e3adca63","875d567ecf2f865a1b19d30f2acf3203817e19fd95f7675351d046914ee39ac8","6a9c5127096b35264eb7cd21b2417bfc1d42cceca9ba4ce2bb0c3410b7816042","7c3419a20bfe129d5f5c470f0c78ec50a4a26625c0085a89350548f3163d8cd0","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","8f7a2387ecc680872d09a6edbca1612d699f77ee5a5129944935c3798a613d04","65455ea1b00bae7bd26d3c8c2401eb3d10401c09c55192d6f3b8b2275eda20c2","f7b46d22a307739c145e5fddf537818038fdfffd580d79ed717f4d4d37249380",{"version":"ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6","affectsGlobalScope":true},"4ee363f83d7be2202f34fcd84c44da71bf3a9329fee8a05f976f75083a52ea94","f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",{"version":"2612ddb9dec0fdb148b20bff58d3737fe467e01b8662b4dc5f1304f792a87706","affectsGlobalScope":true},"3034db2891e04de367126370bebec88ac3b4e3b1eb8b7dc30671ccddb717eed2","74b0245c42990ed8a849df955db3f4362c81b13f799ebc981b7bec2d5b414a57","d9e55d93aa33fad61bd5c63800972d00ba8879ec5d29f6f3bce67d16d86abc33","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","77c1d91a129ba60b8c405f9f539e42df834afb174fe0785f89d92a2c7c16b77a","c544d81603149987796b24cca297c965db427b84b2580fb27e52fb37ddc1f470","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","9eb2875a1e4c583066af7d6194ea8162191b2756e5d87ccb3c562fdf74d06869","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","6eef5113135a0f2bbac8259909a5bbb7666bcde022c28f4ab95145623cbe1f72","058b8dd97b7c67b6bf33e7bda7b1e247b019b675d4b6449d14ac002091a8b4f8","89c8a7b88c378663a8124664f2d9b8c2887e186b55aa066edf6d67177ca1aa04","5a30ba65ad753eb2ef65355dbb3011b28b192cb9df2ef0b5f595b51ca7faf353","5192f9a6469f849e0863616b668fde54bcd6704394b4bfbd115691865f66d761","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","86d425f7fcd8d100dafa6286cc289af88cbb639ecbdbd25c3018a8f0f7b09fe5","9795e0a3a45d5b6f1a791ee54b7c8b58bc931e8900966cea2dff9c5bae56073b","5890be29879d02424b7654f40592915189034948f7a18c5ad121c006d4e92811","0ab49086f10c75a1cb3b18bffe799dae021774146d8a2d5a4bb42dda67b64f9b","81c77839e152b8f715ec67b0a8b910bcc2d6cf916794c3519f8798c40efd12ac","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","464843c00fb3dd4735b28255c5c9fe713f16b8e47a3db09ba1647687440f7aef","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","d0f6d36b2d86f934560c48d8bfdc7ab60c67cfb2ab6dc1916706aa68e83d6dc2","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","d3edfa3fc810d29d0c125447f8119d3d33dec1a2e6118c01776e7513b5cdbea6","f7e133b20ee2669b6c0e5d7f0cd510868c57cd64b283e68c7f598e30ce9d76d2","09c4b2e2d3070239d563fc690f0cc5db04a2d9b66a23e61aef8b5274e3e9910c"],"options":{"composite":true,"declaration":true,"jsx":1,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUnusedLocals":true,"noUnusedParameters":false,"outDir":"./","rootDir":"../src","sourceMap":true,"strict":true,"target":6,"tsBuildInfoFile":"./tsconfig.tsbuildinfo"},"fileIdsList":[[96],[96,97,98,99,100],[96,98],[87],[45,87],[53,87,108],[54,87],[68,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,192,193,194,195,196],[197],[176,177,197],[68,174,179,197],[68,180,181,197],[68,180,197],[68,174,180,197],[68,186,197],[68,197],[175,191,197],[174,191,197],[68,174],[179],[68],[174,197],[198],[199],[205,207],[209],[53,70,73,87],[53,54,61,70],[45,53,61],[80],[49,54,62],[70],[51,53,61],[53],[53,55,70,79],[54],[61,70,79],[53,54,56,61,70,73,79],[56,70,73,79],[41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,79,80,81,82,83,84,85,86],[79],[51,53,70],[43],[75],[68,80,82],[61],[67],[53,55,70,79,82],[218,219,220,221],[54,87,109],[225,264],[225,249,264],[264],[225],[225,250,264],[225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263],[250,264],[53,87],[70,87],[267],[201,202],[201,202,203,204],[206],[76,77],[111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,130,131,133,135,136,137,138,139,140,141,142,143,144,145,146,147,148,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173],[111,113,118],[113,150],[112,117],[111,112,113,114,115,116],[112,113],[113,149],[111,112,113,118],[111,112,126],[111,112,113,114,117],[111,112],[112],[111,113,117,118],[112,113,114,117,150],[117],[117,157],[111,112,113,117],[112,113,114,117],[111,112,113,117,118],[174],[111,112,125],[127,128],[111,112,126,127],[111,112,125,126,128],[127],[111,112,127,128],[134],[129],[132],[111,117],[90],[40],[92],[40,88,89,91]],"referencedMap":[[98,1],[101,2],[97,1],[99,3],[100,1],[103,4],[104,5],[109,6],[110,7],[197,8],[176,9],[178,10],[177,9],[180,11],[182,12],[183,13],[184,14],[185,12],[186,13],[187,12],[188,15],[189,13],[190,12],[191,16],[192,17],[193,18],[194,19],[181,20],[195,21],[179,21],[196,22],[199,23],[200,24],[208,25],[210,26],[211,7],[213,27],[45,28],[46,29],[47,30],[48,31],[49,32],[50,33],[52,34],[53,34],[54,35],[55,36],[56,37],[57,38],[58,39],[87,40],[59,34],[60,41],[61,42],[64,43],[65,44],[68,34],[69,45],[70,34],[73,46],[75,46],[79,47],[81,32],[84,48],[85,32],[222,49],[223,50],[249,51],[250,52],[225,53],[228,53],[247,51],[248,51],[238,54],[237,54],[235,51],[230,51],[243,51],[241,51],[245,51],[229,51],[242,51],[246,51],[231,51],[232,51],[244,51],[226,51],[233,51],[234,51],[236,51],[240,51],[251,55],[239,51],[227,51],[264,56],[258,55],[260,57],[259,55],[252,55],[253,55],[255,55],[257,55],[261,57],[262,57],[254,57],[256,57],[88,58],[175,59],[268,60],[203,61],[205,62],[204,61],[207,63],[78,64],[174,65],[124,66],[122,66],[149,67],[137,68],[117,69],[114,70],[150,71],[123,72],[125,73],[118,74],[113,75],[111,76],[119,77],[147,68],[148,68],[151,78],[152,68],[153,68],[154,68],[155,68],[156,68],[157,79],[158,80],[159,68],[115,68],[160,68],[161,68],[162,79],[163,68],[164,68],[165,81],[166,68],[167,78],[168,68],[116,68],[169,68],[170,68],[171,82],[120,83],[172,84],[126,85],[134,86],[129,86],[128,87],[127,88],[132,89],[136,90],[135,91],[130,92],[131,89],[133,93],[112,94],[141,79],[138,76],[91,95],[93,96],[94,97],[95,97],[92,98]],"exportedModulesMap":[[98,1],[101,2],[97,1],[99,3],[100,1],[103,4],[104,5],[109,6],[110,7],[197,8],[176,9],[178,10],[177,9],[180,11],[182,12],[183,13],[184,14],[185,12],[186,13],[187,12],[188,15],[189,13],[190,12],[191,16],[192,17],[193,18],[194,19],[181,20],[195,21],[179,21],[196,22],[199,23],[200,24],[208,25],[210,26],[211,7],[213,27],[45,28],[46,29],[47,30],[48,31],[49,32],[50,33],[52,34],[53,34],[54,35],[55,36],[56,37],[57,38],[58,39],[87,40],[59,34],[60,41],[61,42],[64,43],[65,44],[68,34],[69,45],[70,34],[73,46],[75,46],[79,47],[81,32],[84,48],[85,32],[222,49],[223,50],[249,51],[250,52],[225,53],[228,53],[247,51],[248,51],[238,54],[237,54],[235,51],[230,51],[243,51],[241,51],[245,51],[229,51],[242,51],[246,51],[231,51],[232,51],[244,51],[226,51],[233,51],[234,51],[236,51],[240,51],[251,55],[239,51],[227,51],[264,56],[258,55],[260,57],[259,55],[252,55],[253,55],[255,55],[257,55],[261,57],[262,57],[254,57],[256,57],[88,58],[175,59],[268,60],[203,61],[205,62],[204,61],[207,63],[78,64],[174,65],[124,66],[122,66],[149,67],[137,68],[117,69],[114,70],[150,71],[123,72],[125,73],[118,74],[113,75],[111,76],[119,77],[147,68],[148,68],[151,78],[152,68],[153,68],[154,68],[155,68],[156,68],[157,79],[158,80],[159,68],[115,68],[160,68],[161,68],[162,79],[163,68],[164,68],[165,81],[166,68],[167,78],[168,68],[116,68],[169,68],[170,68],[171,82],[120,83],[172,84],[126,85],[134,86],[129,86],[128,87],[127,88],[132,89],[136,90],[135,91],[130,92],[131,89],[133,93],[112,94],[141,79],[138,76],[91,95],[93,96],[94,97],[95,97],[92,98]],"semanticDiagnosticsPerFile":[98,96,101,97,99,100,102,103,104,105,106,107,109,110,197,176,178,177,180,182,183,184,185,186,187,188,189,190,191,192,193,194,181,195,179,196,198,199,200,208,210,108,211,212,213,41,43,44,45,46,47,48,49,50,51,52,53,54,55,42,86,56,57,58,87,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,79,80,81,82,83,84,85,214,215,216,217,218,219,222,223,224,221,249,250,225,228,247,248,238,237,235,230,243,241,245,229,242,246,231,232,244,226,233,234,236,240,251,239,227,264,263,258,260,259,252,253,255,257,261,262,254,256,88,265,175,209,266,267,268,220,201,203,205,204,202,207,206,76,77,78,174,124,122,149,137,117,114,150,123,125,118,113,111,173,119,147,148,151,152,153,154,155,156,157,158,159,115,160,161,162,163,164,165,166,167,168,116,169,170,171,120,172,126,134,129,128,127,132,136,135,130,131,133,121,112,142,143,144,146,145,140,141,139,138,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,30,31,32,33,7,38,34,35,36,37,1,39,89,91,90,40,93,94,95,92]},"version":"4.4.2"}
\ No newline at end of file
diff --git a/node_modules/@databases/sqlite/package.json b/node_modules/@databases/sqlite/package.json
new file mode 100644
index 0000000..6d53b6e
--- /dev/null
+++ b/node_modules/@databases/sqlite/package.json
@@ -0,0 +1,25 @@
+{
+ "name": "@databases/sqlite",
+ "version": "4.0.0",
+ "description": "",
+ "main": "./lib/index.js",
+ "types": "./lib/index.d.ts",
+ "dependencies": {
+ "@databases/escape-identifier": "^1.0.3",
+ "@databases/sql": "^3.2.0",
+ "@types/sqlite3": "^3.1.5",
+ "sqlite3": "^5.0.0",
+ "then-queue": "^1.3.0"
+ },
+ "scripts": {},
+ "repository": "https://github.com/ForbesLindesay/atdatabases/tree/master/packages/sqlite",
+ "bugs": "https://github.com/ForbesLindesay/atdatabases/issues",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "homepage": "https://www.atdatabases.org/docs/sqlite",
+ "files": [
+ "lib/"
+ ]
+}
diff --git a/node_modules/@databases/validate-unicode/LICENSE.md b/node_modules/@databases/validate-unicode/LICENSE.md
new file mode 100644
index 0000000..43e831c
--- /dev/null
+++ b/node_modules/@databases/validate-unicode/LICENSE.md
@@ -0,0 +1,45 @@
+# The MIT License (MIT)
+
+Copyright (c) 2019 Forbes Lindesay
+
+> Permission is hereby granted, free of charge, to any person obtaining a copy
+> of this software and associated documentation files (the "Software"), to deal
+> in the Software without restriction, including without limitation the rights
+> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+> copies of the Software, and to permit persons to whom the Software is
+> furnished to do so, subject to the following conditions:
+>
+> The above copyright notice and this permission notice shall be included in
+> all copies or substantial portions of the Software.
+>
+> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+> SOFTWARE.
+
+# Based on "unicode-dragon"
+
+https://github.com/ConradIrwin/unicode-dragon
+
+Copyright (c) 2013 Conrad Irwin
+
+> Permission is hereby granted, free of charge, to any person obtaining a copy
+> of this software and associated documentation files (the "Software"), to deal
+> in the Software without restriction, including without limitation the rights
+> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+> copies of the Software, and to permit persons to whom the Software is
+> furnished to do so, subject to the following conditions:
+>
+> The above copyright notice and this permission notice shall be included in
+> all copies or substantial portions of the Software.
+>
+> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+> THE SOFTWARE.
diff --git a/node_modules/@databases/validate-unicode/lib/__tests__/index.test.d.ts b/node_modules/@databases/validate-unicode/lib/__tests__/index.test.d.ts
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/@databases/validate-unicode/lib/__tests__/index.test.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/@databases/validate-unicode/lib/__tests__/index.test.js b/node_modules/@databases/validate-unicode/lib/__tests__/index.test.js
new file mode 100644
index 0000000..503dc0e
--- /dev/null
+++ b/node_modules/@databases/validate-unicode/lib/__tests__/index.test.js
@@ -0,0 +1,50 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+
+const __1 = require("..");
+
+const pairEscaped = '\ud83d\ude00';
+const pairUnescaped = '😀';
+const escapedInvalidCharPlaceholder = '\uFFFD';
+const invalidCharPlaceholder = '�';
+test('Our unicode symbol is made of two surrogate pairs', () => {
+ expect(pairEscaped).toBe(pairUnescaped);
+ expect(escapedInvalidCharPlaceholder).toBe(invalidCharPlaceholder);
+});
+test('removeInvalidUnicode', () => {
+ expect(__1.removeInvalidUnicode(pairUnescaped)).toBe(pairUnescaped);
+ expect(__1.removeInvalidUnicode(pairUnescaped[0])).toBe(invalidCharPlaceholder);
+ expect(__1.removeInvalidUnicode(pairUnescaped[1])).toBe(invalidCharPlaceholder);
+ expect(__1.removeInvalidUnicode(`hello😀`)).toBe(`hello😀`);
+ expect(__1.removeInvalidUnicode(`😀world`)).toBe(`😀world`);
+ expect(__1.removeInvalidUnicode(`hello😀world`)).toBe(`hello😀world`);
+ expect(__1.removeInvalidUnicode(`hello${pairUnescaped[0]}`)).toBe(`hello${invalidCharPlaceholder}`);
+ expect(__1.removeInvalidUnicode(`${pairUnescaped[0]}world`)).toBe(`${invalidCharPlaceholder}world`);
+ expect(__1.removeInvalidUnicode(`hello${pairUnescaped[0]}world`)).toBe(`hello${invalidCharPlaceholder}world`);
+ expect(__1.removeInvalidUnicode(`hello${pairUnescaped[1]}world`)).toBe(`hello${invalidCharPlaceholder}world`);
+});
+test('isValidUnicode', () => {
+ expect(__1.isValidUnicode(pairUnescaped)).toBe(true);
+ expect(__1.isValidUnicode(pairUnescaped[0])).toBe(false);
+ expect(__1.isValidUnicode(pairUnescaped[1])).toBe(false);
+ expect(__1.isValidUnicode(`hello😀world`)).toBe(true);
+ expect(__1.isValidUnicode(`hello😀`)).toBe(true);
+ expect(__1.isValidUnicode(`😀world`)).toBe(true);
+ expect(__1.isValidUnicode(`hello${pairUnescaped[0]}world`)).toBe(false);
+ expect(__1.isValidUnicode(`hello${pairUnescaped[1]}world`)).toBe(false);
+ expect(__1.isValidUnicode(`${pairUnescaped[0]}world`)).toBe(false);
+ expect(__1.isValidUnicode(`${pairUnescaped[1]}world`)).toBe(false);
+ expect(__1.isValidUnicode(`hello${pairUnescaped[0]}`)).toBe(false);
+ expect(__1.isValidUnicode(`hello${pairUnescaped[1]}`)).toBe(false);
+});
+test('assertValidUnicode', () => {
+ expect(() => __1.default(pairUnescaped)).not.toThrow();
+ expect(() => __1.default(pairUnescaped[0])).toThrowError(`This string contains unmatched surrogate pairs: "\\ud83d"`);
+ expect(() => __1.default(pairUnescaped[1])).toThrowError(`This string contains unmatched surrogate pairs: "\\ude00"`);
+ expect(() => __1.default(`hello😀world`)).not.toThrow();
+ expect(() => __1.default(`hello${pairUnescaped[0]}world`)).toThrowError(`This string contains unmatched surrogate pairs: "hello\\ud83dworld"`);
+ expect(() => __1.default(`hello${pairUnescaped[1]}world`)).toThrowError(`This string contains unmatched surrogate pairs: "hello\\ude00world"`);
+});
\ No newline at end of file
diff --git a/node_modules/@databases/validate-unicode/lib/__tests__/index.test.js.map b/node_modules/@databases/validate-unicode/lib/__tests__/index.test.js.map
new file mode 100644
index 0000000..bb6a280
--- /dev/null
+++ b/node_modules/@databases/validate-unicode/lib/__tests__/index.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/__tests__/index.test.ts"],"names":[],"mappings":";;AAAA,0BAA4E;AAE5E,MAAM,WAAW,GAAG,cAAc,CAAC;AACnC,MAAM,aAAa,GAAG,IAAI,CAAC;AAE3B,MAAM,6BAA6B,GAAG,QAAQ,CAAC;AAC/C,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAEnC,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;IAC7D,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxC,MAAM,CAAC,6BAA6B,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAChC,MAAM,CAAC,wBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAChE,MAAM,CAAC,wBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC5E,MAAM,CAAC,wBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAE5E,MAAM,CAAC,wBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxD,MAAM,CAAC,wBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxD,MAAM,CAAC,wBAAoB,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAClE,MAAM,CAAC,wBAAoB,CAAC,QAAQ,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAC3D,QAAQ,sBAAsB,EAAE,CACjC,CAAC;IACF,MAAM,CAAC,wBAAoB,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAC3D,GAAG,sBAAsB,OAAO,CACjC,CAAC;IACF,MAAM,CAAC,wBAAoB,CAAC,QAAQ,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAChE,QAAQ,sBAAsB,OAAO,CACtC,CAAC;IACF,MAAM,CAAC,wBAAoB,CAAC,QAAQ,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAChE,QAAQ,sBAAsB,OAAO,CACtC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC1B,MAAM,CAAC,kBAAc,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,kBAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,CAAC,kBAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAErD,MAAM,CAAC,kBAAc,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,kBAAc,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,kBAAc,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,kBAAc,CAAC,QAAQ,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,CAAC,kBAAc,CAAC,QAAQ,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,CAAC,kBAAc,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,MAAM,CAAC,kBAAc,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,MAAM,CAAC,kBAAc,CAAC,QAAQ,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,MAAM,CAAC,kBAAc,CAAC,QAAQ,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAC9B,MAAM,CAAC,GAAG,EAAE,CAAC,WAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC9D,MAAM,CAAC,GAAG,EAAE,CAAC,WAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAC7D,2DAA2D,CAC5D,CAAC;IACF,MAAM,CAAC,GAAG,EAAE,CAAC,WAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAC7D,2DAA2D,CAC5D,CAAC;IAEF,MAAM,CAAC,GAAG,EAAE,CAAC,WAAkB,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC/D,MAAM,CAAC,GAAG,EAAE,CACV,WAAkB,CAAC,QAAQ,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CACpD,CAAC,YAAY,CACZ,qEAAqE,CACtE,CAAC;IACF,MAAM,CAAC,GAAG,EAAE,CACV,WAAkB,CAAC,QAAQ,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CACpD,CAAC,YAAY,CACZ,qEAAqE,CACtE,CAAC;AACJ,CAAC,CAAC,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@databases/validate-unicode/lib/index.d.ts b/node_modules/@databases/validate-unicode/lib/index.d.ts
new file mode 100644
index 0000000..0a93ce1
--- /dev/null
+++ b/node_modules/@databases/validate-unicode/lib/index.d.ts
@@ -0,0 +1,14 @@
+/**
+ * Replace any un-matched surrogate pairs with \uFFFD so that
+ * the string is guaranteed to be a valid utf8 string.
+ */
+export declare function removeInvalidUnicode(str: string): string;
+/**
+ * Return true if there are no un-matched surrogate pairs, otherwise
+ * return false.
+ */
+export declare function isValidUnicode(str: string): boolean;
+/**
+ * Throw an error if the string has unmatched surrogate pairs
+ */
+export default function assertValidUnicode(str: string): string;
diff --git a/node_modules/@databases/validate-unicode/lib/index.js b/node_modules/@databases/validate-unicode/lib/index.js
new file mode 100644
index 0000000..6355a50
--- /dev/null
+++ b/node_modules/@databases/validate-unicode/lib/index.js
@@ -0,0 +1,62 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+/**
+ * Replace any un-matched surrogate pairs with \uFFFD so that
+ * the string is guaranteed to be a valid utf8 string.
+ */
+
+function removeInvalidUnicode(str) {
+ return str.replace(/[\uD800-\uDFFF]/g, (chr, pos) => {
+ if (chr.charCodeAt(0) <= 0xdbff) {
+ return pos < str.length && str.charCodeAt(pos + 1) >= 0xdc00 && str.charCodeAt(pos + 1) <= 0xdfff ? chr : '\uFFFD';
+ } else {
+ return pos > 0 && str.charCodeAt(pos - 1) >= 0xd800 && str.charCodeAt(pos - 1) <= 0xdbff ? chr : '\uFFFD';
+ }
+ });
+}
+
+exports.removeInvalidUnicode = removeInvalidUnicode;
+/**
+ * Return true if there are no un-matched surrogate pairs, otherwise
+ * return false.
+ */
+
+function isValidUnicode(str) {
+ if (typeof str !== 'string') return false;
+ const pattern = /[\uD800-\uDFFF]/g;
+ let match; // tslint:disable-next-line:no-conditional-assignment
+
+ while (match = pattern.exec(str)) {
+ const pos = match.index;
+
+ if (str.charCodeAt(pos) <= 0xdbff) {
+ if (pos === str.length - 1 || str.charCodeAt(pos + 1) < 0xdc00 || str.charCodeAt(pos + 1) > 0xdfff) {
+ return false;
+ }
+ } else {
+ if (pos === 0 || str.charCodeAt(pos - 1) < 0xd800 || str.charCodeAt(pos - 1) > 0xdbff) {
+ return false;
+ }
+ }
+ }
+
+ return true;
+}
+
+exports.isValidUnicode = isValidUnicode;
+/**
+ * Throw an error if the string has unmatched surrogate pairs
+ */
+
+function assertValidUnicode(str) {
+ if (!isValidUnicode(str)) {
+ throw new Error(`This string contains unmatched surrogate pairs: ${JSON.stringify(str)}`);
+ }
+
+ return str;
+}
+
+exports.default = assertValidUnicode;
\ No newline at end of file
diff --git a/node_modules/@databases/validate-unicode/lib/index.js.map b/node_modules/@databases/validate-unicode/lib/index.js.map
new file mode 100644
index 0000000..7e976bc
--- /dev/null
+++ b/node_modules/@databases/validate-unicode/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,GAAW;IAC9C,OAAO,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE;QAClE,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE;YAC/B,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM;gBACrB,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,MAAM;gBACjC,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,MAAM;gBACjC,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,QAAQ,CAAC;SACd;aAAM;YACL,OAAO,GAAG,GAAG,CAAC;gBACZ,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,MAAM;gBACjC,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,MAAM;gBACjC,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,QAAQ,CAAC;SACd;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAhBD,oDAgBC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAAC,GAAW;IACxC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,OAAO,GAAG,kBAAkB,CAAC;IACnC,IAAI,KAAK,CAAC;IACV,qDAAqD;IACrD,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;QAClC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC;QACxB,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,EAAE;YACjC,IACE,GAAG,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC;gBACtB,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM;gBAChC,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,EAChC;gBACA,OAAO,KAAK,CAAC;aACd;SACF;aAAM;YACL,IACE,GAAG,KAAK,CAAC;gBACT,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM;gBAChC,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,EAChC;gBACA,OAAO,KAAK,CAAC;aACd;SACF;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AA1BD,wCA0BC;AAED;;GAEG;AACH,SAAwB,kBAAkB,CAAC,GAAW;IACpD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;QACxB,MAAM,IAAI,KAAK,CACb,mDAAmD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CACzE,CAAC;KACH;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAPD,qCAOC"}
\ No newline at end of file
diff --git a/node_modules/@databases/validate-unicode/package.json b/node_modules/@databases/validate-unicode/package.json
new file mode 100644
index 0000000..8f08f59
--- /dev/null
+++ b/node_modules/@databases/validate-unicode/package.json
@@ -0,0 +1,18 @@
+{
+ "name": "@databases/validate-unicode",
+ "version": "1.0.0",
+ "description": "",
+ "main": "./lib/index.js",
+ "types": "./lib/index.d.ts",
+ "dependencies": {},
+ "scripts": {},
+ "repository": "https://github.com/ForbesLindesay/atdatabases/tree/master/packages/validate-unicode",
+ "bugs": "https://github.com/ForbesLindesay/atdatabases/issues",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "files": [
+ "lib/"
+ ]
+}
diff --git a/node_modules/@types/node/LICENSE b/node_modules/@types/node/LICENSE
new file mode 100755
index 0000000..9e841e7
--- /dev/null
+++ b/node_modules/@types/node/LICENSE
@@ -0,0 +1,21 @@
+ MIT License
+
+ Copyright (c) Microsoft Corporation.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE
diff --git a/node_modules/@types/node/README.md b/node_modules/@types/node/README.md
new file mode 100755
index 0000000..9900a5a
--- /dev/null
+++ b/node_modules/@types/node/README.md
@@ -0,0 +1,16 @@
+# Installation
+> `npm install --save @types/node`
+
+# Summary
+This package contains type definitions for Node.js (https://nodejs.org/).
+
+# Details
+Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node.
+
+### Additional Details
+ * Last updated: Wed, 06 Jul 2022 04:02:23 GMT
+ * Dependencies: none
+ * Global values: `AbortController`, `AbortSignal`, `__dirname`, `__filename`, `console`, `exports`, `gc`, `global`, `module`, `process`, `require`, `structuredClone`
+
+# Credits
+These definitions were written by [Microsoft TypeScript](https://github.com/Microsoft), [DefinitelyTyped](https://github.com/DefinitelyTyped), [Alberto Schiabel](https://github.com/jkomyno), [Alvis HT Tang](https://github.com/alvis), [Andrew Makarov](https://github.com/r3nya), [Benjamin Toueg](https://github.com/btoueg), [Chigozirim C.](https://github.com/smac89), [David Junger](https://github.com/touffy), [Deividas Bakanas](https://github.com/DeividasBakanas), [Eugene Y. Q. Shen](https://github.com/eyqs), [Hannes Magnusson](https://github.com/Hannes-Magnusson-CK), [Huw](https://github.com/hoo29), [Kelvin Jin](https://github.com/kjin), [Klaus Meinhardt](https://github.com/ajafff), [Lishude](https://github.com/islishude), [Mariusz Wiktorczyk](https://github.com/mwiktorczyk), [Mohsen Azimi](https://github.com/mohsen1), [Nicolas Even](https://github.com/n-e), [Nikita Galkin](https://github.com/galkin), [Parambir Singh](https://github.com/parambirs), [Sebastian Silbermann](https://github.com/eps1lon), [Simon Schick](https://github.com/SimonSchick), [Thomas den Hollander](https://github.com/ThomasdenH), [Wilco Bakker](https://github.com/WilcoBakker), [wwwy3y3](https://github.com/wwwy3y3), [Samuel Ainsworth](https://github.com/samuela), [Kyle Uehlein](https://github.com/kuehlein), [Thanik Bhongbhibhat](https://github.com/bhongy), [Marcin Kopacz](https://github.com/chyzwar), [Trivikram Kamat](https://github.com/trivikr), [Junxiao Shi](https://github.com/yoursunny), [Ilia Baryshnikov](https://github.com/qwelias), [ExE Boss](https://github.com/ExE-Boss), [Piotr Błażejewicz](https://github.com/peterblazejewicz), [Anna Henningsen](https://github.com/addaleax), [Victor Perin](https://github.com/victorperin), [Yongsheng Zhang](https://github.com/ZYSzys), [NodeJS Contributors](https://github.com/NodeJS), [Linus Unnebäck](https://github.com/LinusU), [wafuwafu13](https://github.com/wafuwafu13), and [Matteo Collina](https://github.com/mcollina).
diff --git a/node_modules/@types/node/assert.d.ts b/node_modules/@types/node/assert.d.ts
new file mode 100755
index 0000000..8e02a66
--- /dev/null
+++ b/node_modules/@types/node/assert.d.ts
@@ -0,0 +1,911 @@
+/**
+ * The `assert` module provides a set of assertion functions for verifying
+ * invariants.
+ * @see [source](https://github.com/nodejs/node/blob/v18.0.0/lib/assert.js)
+ */
+declare module 'assert' {
+ /**
+ * An alias of {@link ok}.
+ * @since v0.5.9
+ * @param value The input that is checked for being truthy.
+ */
+ function assert(value: unknown, message?: string | Error): asserts value;
+ namespace assert {
+ /**
+ * Indicates the failure of an assertion. All errors thrown by the `assert` module
+ * will be instances of the `AssertionError` class.
+ */
+ class AssertionError extends Error {
+ actual: unknown;
+ expected: unknown;
+ operator: string;
+ generatedMessage: boolean;
+ code: 'ERR_ASSERTION';
+ constructor(options?: {
+ /** If provided, the error message is set to this value. */
+ message?: string | undefined;
+ /** The `actual` property on the error instance. */
+ actual?: unknown | undefined;
+ /** The `expected` property on the error instance. */
+ expected?: unknown | undefined;
+ /** The `operator` property on the error instance. */
+ operator?: string | undefined;
+ /** If provided, the generated stack trace omits frames before this function. */
+ // tslint:disable-next-line:ban-types
+ stackStartFn?: Function | undefined;
+ });
+ }
+ /**
+ * This feature is currently experimental and behavior might still change.
+ * @since v14.2.0, v12.19.0
+ * @experimental
+ */
+ class CallTracker {
+ /**
+ * The wrapper function is expected to be called exactly `exact` times. If the
+ * function has not been called exactly `exact` times when `tracker.verify()` is called, then `tracker.verify()` will throw an
+ * error.
+ *
+ * ```js
+ * import assert from 'assert';
+ *
+ * // Creates call tracker.
+ * const tracker = new assert.CallTracker();
+ *
+ * function func() {}
+ *
+ * // Returns a function that wraps func() that must be called exact times
+ * // before tracker.verify().
+ * const callsfunc = tracker.calls(func);
+ * ```
+ * @since v14.2.0, v12.19.0
+ * @param [fn='A no-op function']
+ * @param [exact=1]
+ * @return that wraps `fn`.
+ */
+ calls(exact?: number): () => void;
+ calls any>(fn?: Func, exact?: number): Func;
+ /**
+ * The arrays contains information about the expected and actual number of calls of
+ * the functions that have not been called the expected number of times.
+ *
+ * ```js
+ * import assert from 'assert';
+ *
+ * // Creates call tracker.
+ * const tracker = new assert.CallTracker();
+ *
+ * function func() {}
+ *
+ * function foo() {}
+ *
+ * // Returns a function that wraps func() that must be called exact times
+ * // before tracker.verify().
+ * const callsfunc = tracker.calls(func, 2);
+ *
+ * // Returns an array containing information on callsfunc()
+ * tracker.report();
+ * // [
+ * // {
+ * // message: 'Expected the func function to be executed 2 time(s) but was
+ * // executed 0 time(s).',
+ * // actual: 0,
+ * // expected: 2,
+ * // operator: 'func',
+ * // stack: stack trace
+ * // }
+ * // ]
+ * ```
+ * @since v14.2.0, v12.19.0
+ * @return of objects containing information about the wrapper functions returned by `calls`.
+ */
+ report(): CallTrackerReportInformation[];
+ /**
+ * Iterates through the list of functions passed to `tracker.calls()` and will throw an error for functions that
+ * have not been called the expected number of times.
+ *
+ * ```js
+ * import assert from 'assert';
+ *
+ * // Creates call tracker.
+ * const tracker = new assert.CallTracker();
+ *
+ * function func() {}
+ *
+ * // Returns a function that wraps func() that must be called exact times
+ * // before tracker.verify().
+ * const callsfunc = tracker.calls(func, 2);
+ *
+ * callsfunc();
+ *
+ * // Will throw an error since callsfunc() was only called once.
+ * tracker.verify();
+ * ```
+ * @since v14.2.0, v12.19.0
+ */
+ verify(): void;
+ }
+ interface CallTrackerReportInformation {
+ message: string;
+ /** The actual number of times the function was called. */
+ actual: number;
+ /** The number of times the function was expected to be called. */
+ expected: number;
+ /** The name of the function that is wrapped. */
+ operator: string;
+ /** A stack trace of the function. */
+ stack: object;
+ }
+ type AssertPredicate = RegExp | (new () => object) | ((thrown: unknown) => boolean) | object | Error;
+ /**
+ * Throws an `AssertionError` with the provided error message or a default
+ * error message. If the `message` parameter is an instance of an `Error` then
+ * it will be thrown instead of the `AssertionError`.
+ *
+ * ```js
+ * import assert from 'assert/strict';
+ *
+ * assert.fail();
+ * // AssertionError [ERR_ASSERTION]: Failed
+ *
+ * assert.fail('boom');
+ * // AssertionError [ERR_ASSERTION]: boom
+ *
+ * assert.fail(new TypeError('need array'));
+ * // TypeError: need array
+ * ```
+ *
+ * Using `assert.fail()` with more than two arguments is possible but deprecated.
+ * See below for further details.
+ * @since v0.1.21
+ * @param [message='Failed']
+ */
+ function fail(message?: string | Error): never;
+ /** @deprecated since v10.0.0 - use fail([message]) or other assert functions instead. */
+ function fail(
+ actual: unknown,
+ expected: unknown,
+ message?: string | Error,
+ operator?: string,
+ // tslint:disable-next-line:ban-types
+ stackStartFn?: Function
+ ): never;
+ /**
+ * Tests if `value` is truthy. It is equivalent to`assert.equal(!!value, true, message)`.
+ *
+ * If `value` is not truthy, an `AssertionError` is thrown with a `message`property set equal to the value of the `message` parameter. If the `message`parameter is `undefined`, a default
+ * error message is assigned. If the `message`parameter is an instance of an `Error` then it will be thrown instead of the`AssertionError`.
+ * If no arguments are passed in at all `message` will be set to the string:`` 'No value argument passed to `assert.ok()`' ``.
+ *
+ * Be aware that in the `repl` the error message will be different to the one
+ * thrown in a file! See below for further details.
+ *
+ * ```js
+ * import assert from 'assert/strict';
+ *
+ * assert.ok(true);
+ * // OK
+ * assert.ok(1);
+ * // OK
+ *
+ * assert.ok();
+ * // AssertionError: No value argument passed to `assert.ok()`
+ *
+ * assert.ok(false, 'it\'s false');
+ * // AssertionError: it's false
+ *
+ * // In the repl:
+ * assert.ok(typeof 123 === 'string');
+ * // AssertionError: false == true
+ *
+ * // In a file (e.g. test.js):
+ * assert.ok(typeof 123 === 'string');
+ * // AssertionError: The expression evaluated to a falsy value:
+ * //
+ * // assert.ok(typeof 123 === 'string')
+ *
+ * assert.ok(false);
+ * // AssertionError: The expression evaluated to a falsy value:
+ * //
+ * // assert.ok(false)
+ *
+ * assert.ok(0);
+ * // AssertionError: The expression evaluated to a falsy value:
+ * //
+ * // assert.ok(0)
+ * ```
+ *
+ * ```js
+ * import assert from 'assert/strict';
+ *
+ * // Using `assert()` works the same:
+ * assert(0);
+ * // AssertionError: The expression evaluated to a falsy value:
+ * //
+ * // assert(0)
+ * ```
+ * @since v0.1.21
+ */
+ function ok(value: unknown, message?: string | Error): asserts value;
+ /**
+ * **Strict assertion mode**
+ *
+ * An alias of {@link strictEqual}.
+ *
+ * **Legacy assertion mode**
+ *
+ * > Stability: 3 - Legacy: Use {@link strictEqual} instead.
+ *
+ * Tests shallow, coercive equality between the `actual` and `expected` parameters
+ * using the [`==` operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Equality). `NaN` is specially handled
+ * and treated as being identical if both sides are `NaN`.
+ *
+ * ```js
+ * import assert from 'assert';
+ *
+ * assert.equal(1, 1);
+ * // OK, 1 == 1
+ * assert.equal(1, '1');
+ * // OK, 1 == '1'
+ * assert.equal(NaN, NaN);
+ * // OK
+ *
+ * assert.equal(1, 2);
+ * // AssertionError: 1 == 2
+ * assert.equal({ a: { b: 1 } }, { a: { b: 1 } });
+ * // AssertionError: { a: { b: 1 } } == { a: { b: 1 } }
+ * ```
+ *
+ * If the values are not equal, an `AssertionError` is thrown with a `message`property set equal to the value of the `message` parameter. If the `message`parameter is undefined, a default
+ * error message is assigned. If the `message`parameter is an instance of an `Error` then it will be thrown instead of the`AssertionError`.
+ * @since v0.1.21
+ */
+ function equal(actual: unknown, expected: unknown, message?: string | Error): void;
+ /**
+ * **Strict assertion mode**
+ *
+ * An alias of {@link notStrictEqual}.
+ *
+ * **Legacy assertion mode**
+ *
+ * > Stability: 3 - Legacy: Use {@link notStrictEqual} instead.
+ *
+ * Tests shallow, coercive inequality with the [`!=` operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Inequality). `NaN` is
+ * specially handled and treated as being identical if both sides are `NaN`.
+ *
+ * ```js
+ * import assert from 'assert';
+ *
+ * assert.notEqual(1, 2);
+ * // OK
+ *
+ * assert.notEqual(1, 1);
+ * // AssertionError: 1 != 1
+ *
+ * assert.notEqual(1, '1');
+ * // AssertionError: 1 != '1'
+ * ```
+ *
+ * If the values are equal, an `AssertionError` is thrown with a `message`property set equal to the value of the `message` parameter. If the `message`parameter is undefined, a default error
+ * message is assigned. If the `message`parameter is an instance of an `Error` then it will be thrown instead of the`AssertionError`.
+ * @since v0.1.21
+ */
+ function notEqual(actual: unknown, expected: unknown, message?: string | Error): void;
+ /**
+ * **Strict assertion mode**
+ *
+ * An alias of {@link deepStrictEqual}.
+ *
+ * **Legacy assertion mode**
+ *
+ * > Stability: 3 - Legacy: Use {@link deepStrictEqual} instead.
+ *
+ * Tests for deep equality between the `actual` and `expected` parameters. Consider
+ * using {@link deepStrictEqual} instead. {@link deepEqual} can have
+ * surprising results.
+ *
+ * _Deep equality_ means that the enumerable "own" properties of child objects
+ * are also recursively evaluated by the following rules.
+ * @since v0.1.21
+ */
+ function deepEqual(actual: unknown, expected: unknown, message?: string | Error): void;
+ /**
+ * **Strict assertion mode**
+ *
+ * An alias of {@link notDeepStrictEqual}.
+ *
+ * **Legacy assertion mode**
+ *
+ * > Stability: 3 - Legacy: Use {@link notDeepStrictEqual} instead.
+ *
+ * Tests for any deep inequality. Opposite of {@link deepEqual}.
+ *
+ * ```js
+ * import assert from 'assert';
+ *
+ * const obj1 = {
+ * a: {
+ * b: 1
+ * }
+ * };
+ * const obj2 = {
+ * a: {
+ * b: 2
+ * }
+ * };
+ * const obj3 = {
+ * a: {
+ * b: 1
+ * }
+ * };
+ * const obj4 = Object.create(obj1);
+ *
+ * assert.notDeepEqual(obj1, obj1);
+ * // AssertionError: { a: { b: 1 } } notDeepEqual { a: { b: 1 } }
+ *
+ * assert.notDeepEqual(obj1, obj2);
+ * // OK
+ *
+ * assert.notDeepEqual(obj1, obj3);
+ * // AssertionError: { a: { b: 1 } } notDeepEqual { a: { b: 1 } }
+ *
+ * assert.notDeepEqual(obj1, obj4);
+ * // OK
+ * ```
+ *
+ * If the values are deeply equal, an `AssertionError` is thrown with a`message` property set equal to the value of the `message` parameter. If the`message` parameter is undefined, a default
+ * error message is assigned. If the`message` parameter is an instance of an `Error` then it will be thrown
+ * instead of the `AssertionError`.
+ * @since v0.1.21
+ */
+ function notDeepEqual(actual: unknown, expected: unknown, message?: string | Error): void;
+ /**
+ * Tests strict equality between the `actual` and `expected` parameters as
+ * determined by [`Object.is()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).
+ *
+ * ```js
+ * import assert from 'assert/strict';
+ *
+ * assert.strictEqual(1, 2);
+ * // AssertionError [ERR_ASSERTION]: Expected inputs to be strictly equal:
+ * //
+ * // 1 !== 2
+ *
+ * assert.strictEqual(1, 1);
+ * // OK
+ *
+ * assert.strictEqual('Hello foobar', 'Hello World!');
+ * // AssertionError [ERR_ASSERTION]: Expected inputs to be strictly equal:
+ * // + actual - expected
+ * //
+ * // + 'Hello foobar'
+ * // - 'Hello World!'
+ * // ^
+ *
+ * const apples = 1;
+ * const oranges = 2;
+ * assert.strictEqual(apples, oranges, `apples ${apples} !== oranges ${oranges}`);
+ * // AssertionError [ERR_ASSERTION]: apples 1 !== oranges 2
+ *
+ * assert.strictEqual(1, '1', new TypeError('Inputs are not identical'));
+ * // TypeError: Inputs are not identical
+ * ```
+ *
+ * If the values are not strictly equal, an `AssertionError` is thrown with a`message` property set equal to the value of the `message` parameter. If the`message` parameter is undefined, a
+ * default error message is assigned. If the`message` parameter is an instance of an `Error` then it will be thrown
+ * instead of the `AssertionError`.
+ * @since v0.1.21
+ */
+ function strictEqual(actual: unknown, expected: T, message?: string | Error): asserts actual is T;
+ /**
+ * Tests strict inequality between the `actual` and `expected` parameters as
+ * determined by [`Object.is()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).
+ *
+ * ```js
+ * import assert from 'assert/strict';
+ *
+ * assert.notStrictEqual(1, 2);
+ * // OK
+ *
+ * assert.notStrictEqual(1, 1);
+ * // AssertionError [ERR_ASSERTION]: Expected "actual" to be strictly unequal to:
+ * //
+ * // 1
+ *
+ * assert.notStrictEqual(1, '1');
+ * // OK
+ * ```
+ *
+ * If the values are strictly equal, an `AssertionError` is thrown with a`message` property set equal to the value of the `message` parameter. If the`message` parameter is undefined, a
+ * default error message is assigned. If the`message` parameter is an instance of an `Error` then it will be thrown
+ * instead of the `AssertionError`.
+ * @since v0.1.21
+ */
+ function notStrictEqual(actual: unknown, expected: unknown, message?: string | Error): void;
+ /**
+ * Tests for deep equality between the `actual` and `expected` parameters.
+ * "Deep" equality means that the enumerable "own" properties of child objects
+ * are recursively evaluated also by the following rules.
+ * @since v1.2.0
+ */
+ function deepStrictEqual(actual: unknown, expected: T, message?: string | Error): asserts actual is T;
+ /**
+ * Tests for deep strict inequality. Opposite of {@link deepStrictEqual}.
+ *
+ * ```js
+ * import assert from 'assert/strict';
+ *
+ * assert.notDeepStrictEqual({ a: 1 }, { a: '1' });
+ * // OK
+ * ```
+ *
+ * If the values are deeply and strictly equal, an `AssertionError` is thrown
+ * with a `message` property set equal to the value of the `message` parameter. If
+ * the `message` parameter is undefined, a default error message is assigned. If
+ * the `message` parameter is an instance of an `Error` then it will be thrown
+ * instead of the `AssertionError`.
+ * @since v1.2.0
+ */
+ function notDeepStrictEqual(actual: unknown, expected: unknown, message?: string | Error): void;
+ /**
+ * Expects the function `fn` to throw an error.
+ *
+ * If specified, `error` can be a [`Class`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes),
+ * [`RegExp`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions), a validation function,
+ * a validation object where each property will be tested for strict deep equality,
+ * or an instance of error where each property will be tested for strict deep
+ * equality including the non-enumerable `message` and `name` properties. When
+ * using an object, it is also possible to use a regular expression, when
+ * validating against a string property. See below for examples.
+ *
+ * If specified, `message` will be appended to the message provided by the`AssertionError` if the `fn` call fails to throw or in case the error validation
+ * fails.
+ *
+ * Custom validation object/error instance:
+ *
+ * ```js
+ * import assert from 'assert/strict';
+ *
+ * const err = new TypeError('Wrong value');
+ * err.code = 404;
+ * err.foo = 'bar';
+ * err.info = {
+ * nested: true,
+ * baz: 'text'
+ * };
+ * err.reg = /abc/i;
+ *
+ * assert.throws(
+ * () => {
+ * throw err;
+ * },
+ * {
+ * name: 'TypeError',
+ * message: 'Wrong value',
+ * info: {
+ * nested: true,
+ * baz: 'text'
+ * }
+ * // Only properties on the validation object will be tested for.
+ * // Using nested objects requires all properties to be present. Otherwise
+ * // the validation is going to fail.
+ * }
+ * );
+ *
+ * // Using regular expressions to validate error properties:
+ * throws(
+ * () => {
+ * throw err;
+ * },
+ * {
+ * // The `name` and `message` properties are strings and using regular
+ * // expressions on those will match against the string. If they fail, an
+ * // error is thrown.
+ * name: /^TypeError$/,
+ * message: /Wrong/,
+ * foo: 'bar',
+ * info: {
+ * nested: true,
+ * // It is not possible to use regular expressions for nested properties!
+ * baz: 'text'
+ * },
+ * // The `reg` property contains a regular expression and only if the
+ * // validation object contains an identical regular expression, it is going
+ * // to pass.
+ * reg: /abc/i
+ * }
+ * );
+ *
+ * // Fails due to the different `message` and `name` properties:
+ * throws(
+ * () => {
+ * const otherErr = new Error('Not found');
+ * // Copy all enumerable properties from `err` to `otherErr`.
+ * for (const [key, value] of Object.entries(err)) {
+ * otherErr[key] = value;
+ * }
+ * throw otherErr;
+ * },
+ * // The error's `message` and `name` properties will also be checked when using
+ * // an error as validation object.
+ * err
+ * );
+ * ```
+ *
+ * Validate instanceof using constructor:
+ *
+ * ```js
+ * import assert from 'assert/strict';
+ *
+ * assert.throws(
+ * () => {
+ * throw new Error('Wrong value');
+ * },
+ * Error
+ * );
+ * ```
+ *
+ * Validate error message using [`RegExp`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions):
+ *
+ * Using a regular expression runs `.toString` on the error object, and will
+ * therefore also include the error name.
+ *
+ * ```js
+ * import assert from 'assert/strict';
+ *
+ * assert.throws(
+ * () => {
+ * throw new Error('Wrong value');
+ * },
+ * /^Error: Wrong value$/
+ * );
+ * ```
+ *
+ * Custom error validation:
+ *
+ * The function must return `true` to indicate all internal validations passed.
+ * It will otherwise fail with an `AssertionError`.
+ *
+ * ```js
+ * import assert from 'assert/strict';
+ *
+ * assert.throws(
+ * () => {
+ * throw new Error('Wrong value');
+ * },
+ * (err) => {
+ * assert(err instanceof Error);
+ * assert(/value/.test(err));
+ * // Avoid returning anything from validation functions besides `true`.
+ * // Otherwise, it's not clear what part of the validation failed. Instead,
+ * // throw an error about the specific validation that failed (as done in this
+ * // example) and add as much helpful debugging information to that error as
+ * // possible.
+ * return true;
+ * },
+ * 'unexpected error'
+ * );
+ * ```
+ *
+ * `error` cannot be a string. If a string is provided as the second
+ * argument, then `error` is assumed to be omitted and the string will be used for`message` instead. This can lead to easy-to-miss mistakes. Using the same
+ * message as the thrown error message is going to result in an`ERR_AMBIGUOUS_ARGUMENT` error. Please read the example below carefully if using
+ * a string as the second argument gets considered:
+ *
+ * ```js
+ * import assert from 'assert/strict';
+ *
+ * function throwingFirst() {
+ * throw new Error('First');
+ * }
+ *
+ * function throwingSecond() {
+ * throw new Error('Second');
+ * }
+ *
+ * function notThrowing() {}
+ *
+ * // The second argument is a string and the input function threw an Error.
+ * // The first case will not throw as it does not match for the error message
+ * // thrown by the input function!
+ * assert.throws(throwingFirst, 'Second');
+ * // In the next example the message has no benefit over the message from the
+ * // error and since it is not clear if the user intended to actually match
+ * // against the error message, Node.js throws an `ERR_AMBIGUOUS_ARGUMENT` error.
+ * assert.throws(throwingSecond, 'Second');
+ * // TypeError [ERR_AMBIGUOUS_ARGUMENT]
+ *
+ * // The string is only used (as message) in case the function does not throw:
+ * assert.throws(notThrowing, 'Second');
+ * // AssertionError [ERR_ASSERTION]: Missing expected exception: Second
+ *
+ * // If it was intended to match for the error message do this instead:
+ * // It does not throw because the error messages match.
+ * assert.throws(throwingSecond, /Second$/);
+ *
+ * // If the error message does not match, an AssertionError is thrown.
+ * assert.throws(throwingFirst, /Second$/);
+ * // AssertionError [ERR_ASSERTION]
+ * ```
+ *
+ * Due to the confusing error-prone notation, avoid a string as the second
+ * argument.
+ * @since v0.1.21
+ */
+ function throws(block: () => unknown, message?: string | Error): void;
+ function throws(block: () => unknown, error: AssertPredicate, message?: string | Error): void;
+ /**
+ * Asserts that the function `fn` does not throw an error.
+ *
+ * Using `assert.doesNotThrow()` is actually not useful because there
+ * is no benefit in catching an error and then rethrowing it. Instead, consider
+ * adding a comment next to the specific code path that should not throw and keep
+ * error messages as expressive as possible.
+ *
+ * When `assert.doesNotThrow()` is called, it will immediately call the `fn`function.
+ *
+ * If an error is thrown and it is the same type as that specified by the `error`parameter, then an `AssertionError` is thrown. If the error is of a
+ * different type, or if the `error` parameter is undefined, the error is
+ * propagated back to the caller.
+ *
+ * If specified, `error` can be a [`Class`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes),
+ * [`RegExp`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions) or a validation
+ * function. See {@link throws} for more details.
+ *
+ * The following, for instance, will throw the `TypeError` because there is no
+ * matching error type in the assertion:
+ *
+ * ```js
+ * import assert from 'assert/strict';
+ *
+ * assert.doesNotThrow(
+ * () => {
+ * throw new TypeError('Wrong value');
+ * },
+ * SyntaxError
+ * );
+ * ```
+ *
+ * However, the following will result in an `AssertionError` with the message
+ * 'Got unwanted exception...':
+ *
+ * ```js
+ * import assert from 'assert/strict';
+ *
+ * assert.doesNotThrow(
+ * () => {
+ * throw new TypeError('Wrong value');
+ * },
+ * TypeError
+ * );
+ * ```
+ *
+ * If an `AssertionError` is thrown and a value is provided for the `message`parameter, the value of `message` will be appended to the `AssertionError` message:
+ *
+ * ```js
+ * import assert from 'assert/strict';
+ *
+ * assert.doesNotThrow(
+ * () => {
+ * throw new TypeError('Wrong value');
+ * },
+ * /Wrong value/,
+ * 'Whoops'
+ * );
+ * // Throws: AssertionError: Got unwanted exception: Whoops
+ * ```
+ * @since v0.1.21
+ */
+ function doesNotThrow(block: () => unknown, message?: string | Error): void;
+ function doesNotThrow(block: () => unknown, error: AssertPredicate, message?: string | Error): void;
+ /**
+ * Throws `value` if `value` is not `undefined` or `null`. This is useful when
+ * testing the `error` argument in callbacks. The stack trace contains all frames
+ * from the error passed to `ifError()` including the potential new frames for`ifError()` itself.
+ *
+ * ```js
+ * import assert from 'assert/strict';
+ *
+ * assert.ifError(null);
+ * // OK
+ * assert.ifError(0);
+ * // AssertionError [ERR_ASSERTION]: ifError got unwanted exception: 0
+ * assert.ifError('error');
+ * // AssertionError [ERR_ASSERTION]: ifError got unwanted exception: 'error'
+ * assert.ifError(new Error());
+ * // AssertionError [ERR_ASSERTION]: ifError got unwanted exception: Error
+ *
+ * // Create some random error frames.
+ * let err;
+ * (function errorFrame() {
+ * err = new Error('test error');
+ * })();
+ *
+ * (function ifErrorFrame() {
+ * assert.ifError(err);
+ * })();
+ * // AssertionError [ERR_ASSERTION]: ifError got unwanted exception: test error
+ * // at ifErrorFrame
+ * // at errorFrame
+ * ```
+ * @since v0.1.97
+ */
+ function ifError(value: unknown): asserts value is null | undefined;
+ /**
+ * Awaits the `asyncFn` promise or, if `asyncFn` is a function, immediately
+ * calls the function and awaits the returned promise to complete. It will then
+ * check that the promise is rejected.
+ *
+ * If `asyncFn` is a function and it throws an error synchronously,`assert.rejects()` will return a rejected `Promise` with that error. If the
+ * function does not return a promise, `assert.rejects()` will return a rejected`Promise` with an `ERR_INVALID_RETURN_VALUE` error. In both cases the error
+ * handler is skipped.
+ *
+ * Besides the async nature to await the completion behaves identically to {@link throws}.
+ *
+ * If specified, `error` can be a [`Class`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes),
+ * [`RegExp`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions), a validation function,
+ * an object where each property will be tested for, or an instance of error where
+ * each property will be tested for including the non-enumerable `message` and`name` properties.
+ *
+ * If specified, `message` will be the message provided by the `AssertionError` if the `asyncFn` fails to reject.
+ *
+ * ```js
+ * import assert from 'assert/strict';
+ *
+ * await assert.rejects(
+ * async () => {
+ * throw new TypeError('Wrong value');
+ * },
+ * {
+ * name: 'TypeError',
+ * message: 'Wrong value'
+ * }
+ * );
+ * ```
+ *
+ * ```js
+ * import assert from 'assert/strict';
+ *
+ * await assert.rejects(
+ * async () => {
+ * throw new TypeError('Wrong value');
+ * },
+ * (err) => {
+ * assert.strictEqual(err.name, 'TypeError');
+ * assert.strictEqual(err.message, 'Wrong value');
+ * return true;
+ * }
+ * );
+ * ```
+ *
+ * ```js
+ * import assert from 'assert/strict';
+ *
+ * assert.rejects(
+ * Promise.reject(new Error('Wrong value')),
+ * Error
+ * ).then(() => {
+ * // ...
+ * });
+ * ```
+ *
+ * `error` cannot be a string. If a string is provided as the second
+ * argument, then `error` is assumed to be omitted and the string will be used for`message` instead. This can lead to easy-to-miss mistakes. Please read the
+ * example in {@link throws} carefully if using a string as the second
+ * argument gets considered.
+ * @since v10.0.0
+ */
+ function rejects(block: (() => Promise) | Promise, message?: string | Error): Promise;
+ function rejects(block: (() => Promise) | Promise, error: AssertPredicate, message?: string | Error): Promise;
+ /**
+ * Awaits the `asyncFn` promise or, if `asyncFn` is a function, immediately
+ * calls the function and awaits the returned promise to complete. It will then
+ * check that the promise is not rejected.
+ *
+ * If `asyncFn` is a function and it throws an error synchronously,`assert.doesNotReject()` will return a rejected `Promise` with that error. If
+ * the function does not return a promise, `assert.doesNotReject()` will return a
+ * rejected `Promise` with an `ERR_INVALID_RETURN_VALUE` error. In both cases
+ * the error handler is skipped.
+ *
+ * Using `assert.doesNotReject()` is actually not useful because there is little
+ * benefit in catching a rejection and then rejecting it again. Instead, consider
+ * adding a comment next to the specific code path that should not reject and keep
+ * error messages as expressive as possible.
+ *
+ * If specified, `error` can be a [`Class`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes),
+ * [`RegExp`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions) or a validation
+ * function. See {@link throws} for more details.
+ *
+ * Besides the async nature to await the completion behaves identically to {@link doesNotThrow}.
+ *
+ * ```js
+ * import assert from 'assert/strict';
+ *
+ * await assert.doesNotReject(
+ * async () => {
+ * throw new TypeError('Wrong value');
+ * },
+ * SyntaxError
+ * );
+ * ```
+ *
+ * ```js
+ * import assert from 'assert/strict';
+ *
+ * assert.doesNotReject(Promise.reject(new TypeError('Wrong value')))
+ * .then(() => {
+ * // ...
+ * });
+ * ```
+ * @since v10.0.0
+ */
+ function doesNotReject(block: (() => Promise) | Promise, message?: string | Error): Promise;
+ function doesNotReject(block: (() => Promise) | Promise, error: AssertPredicate, message?: string | Error): Promise;
+ /**
+ * Expects the `string` input to match the regular expression.
+ *
+ * ```js
+ * import assert from 'assert/strict';
+ *
+ * assert.match('I will fail', /pass/);
+ * // AssertionError [ERR_ASSERTION]: The input did not match the regular ...
+ *
+ * assert.match(123, /pass/);
+ * // AssertionError [ERR_ASSERTION]: The "string" argument must be of type string.
+ *
+ * assert.match('I will pass', /pass/);
+ * // OK
+ * ```
+ *
+ * If the values do not match, or if the `string` argument is of another type than`string`, an `AssertionError` is thrown with a `message` property set equal
+ * to the value of the `message` parameter. If the `message` parameter is
+ * undefined, a default error message is assigned. If the `message` parameter is an
+ * instance of an `Error` then it will be thrown instead of the `AssertionError`.
+ * @since v13.6.0, v12.16.0
+ */
+ function match(value: string, regExp: RegExp, message?: string | Error): void;
+ /**
+ * Expects the `string` input not to match the regular expression.
+ *
+ * ```js
+ * import assert from 'assert/strict';
+ *
+ * assert.doesNotMatch('I will fail', /fail/);
+ * // AssertionError [ERR_ASSERTION]: The input was expected to not match the ...
+ *
+ * assert.doesNotMatch(123, /pass/);
+ * // AssertionError [ERR_ASSERTION]: The "string" argument must be of type string.
+ *
+ * assert.doesNotMatch('I will pass', /different/);
+ * // OK
+ * ```
+ *
+ * If the values do match, or if the `string` argument is of another type than`string`, an `AssertionError` is thrown with a `message` property set equal
+ * to the value of the `message` parameter. If the `message` parameter is
+ * undefined, a default error message is assigned. If the `message` parameter is an
+ * instance of an `Error` then it will be thrown instead of the `AssertionError`.
+ * @since v13.6.0, v12.16.0
+ */
+ function doesNotMatch(value: string, regExp: RegExp, message?: string | Error): void;
+ const strict: Omit & {
+ (value: unknown, message?: string | Error): asserts value;
+ equal: typeof strictEqual;
+ notEqual: typeof notStrictEqual;
+ deepEqual: typeof deepStrictEqual;
+ notDeepEqual: typeof notDeepStrictEqual;
+ // Mapped types and assertion functions are incompatible?
+ // TS2775: Assertions require every name in the call target
+ // to be declared with an explicit type annotation.
+ ok: typeof ok;
+ strictEqual: typeof strictEqual;
+ deepStrictEqual: typeof deepStrictEqual;
+ ifError: typeof ifError;
+ strict: typeof strict;
+ };
+ }
+ export = assert;
+}
+declare module 'node:assert' {
+ import assert = require('assert');
+ export = assert;
+}
diff --git a/node_modules/@types/node/assert/strict.d.ts b/node_modules/@types/node/assert/strict.d.ts
new file mode 100755
index 0000000..b4319b9
--- /dev/null
+++ b/node_modules/@types/node/assert/strict.d.ts
@@ -0,0 +1,8 @@
+declare module 'assert/strict' {
+ import { strict } from 'node:assert';
+ export = strict;
+}
+declare module 'node:assert/strict' {
+ import { strict } from 'node:assert';
+ export = strict;
+}
diff --git a/node_modules/@types/node/async_hooks.d.ts b/node_modules/@types/node/async_hooks.d.ts
new file mode 100755
index 0000000..0bf4739
--- /dev/null
+++ b/node_modules/@types/node/async_hooks.d.ts
@@ -0,0 +1,501 @@
+/**
+ * The `async_hooks` module provides an API to track asynchronous resources. It
+ * can be accessed using:
+ *
+ * ```js
+ * import async_hooks from 'async_hooks';
+ * ```
+ * @experimental
+ * @see [source](https://github.com/nodejs/node/blob/v18.0.0/lib/async_hooks.js)
+ */
+declare module 'async_hooks' {
+ /**
+ * ```js
+ * import { executionAsyncId } from 'async_hooks';
+ *
+ * console.log(executionAsyncId()); // 1 - bootstrap
+ * fs.open(path, 'r', (err, fd) => {
+ * console.log(executionAsyncId()); // 6 - open()
+ * });
+ * ```
+ *
+ * The ID returned from `executionAsyncId()` is related to execution timing, not
+ * causality (which is covered by `triggerAsyncId()`):
+ *
+ * ```js
+ * const server = net.createServer((conn) => {
+ * // Returns the ID of the server, not of the new connection, because the
+ * // callback runs in the execution scope of the server's MakeCallback().
+ * async_hooks.executionAsyncId();
+ *
+ * }).listen(port, () => {
+ * // Returns the ID of a TickObject (process.nextTick()) because all
+ * // callbacks passed to .listen() are wrapped in a nextTick().
+ * async_hooks.executionAsyncId();
+ * });
+ * ```
+ *
+ * Promise contexts may not get precise `executionAsyncIds` by default.
+ * See the section on `promise execution tracking`.
+ * @since v8.1.0
+ * @return The `asyncId` of the current execution context. Useful to track when something calls.
+ */
+ function executionAsyncId(): number;
+ /**
+ * Resource objects returned by `executionAsyncResource()` are most often internal
+ * Node.js handle objects with undocumented APIs. Using any functions or properties
+ * on the object is likely to crash your application and should be avoided.
+ *
+ * Using `executionAsyncResource()` in the top-level execution context will
+ * return an empty object as there is no handle or request object to use,
+ * but having an object representing the top-level can be helpful.
+ *
+ * ```js
+ * import { open } from 'fs';
+ * import { executionAsyncId, executionAsyncResource } from 'async_hooks';
+ *
+ * console.log(executionAsyncId(), executionAsyncResource()); // 1 {}
+ * open(new URL(import.meta.url), 'r', (err, fd) => {
+ * console.log(executionAsyncId(), executionAsyncResource()); // 7 FSReqWrap
+ * });
+ * ```
+ *
+ * This can be used to implement continuation local storage without the
+ * use of a tracking `Map` to store the metadata:
+ *
+ * ```js
+ * import { createServer } from 'http';
+ * import {
+ * executionAsyncId,
+ * executionAsyncResource,
+ * createHook
+ * } from 'async_hooks';
+ * const sym = Symbol('state'); // Private symbol to avoid pollution
+ *
+ * createHook({
+ * init(asyncId, type, triggerAsyncId, resource) {
+ * const cr = executionAsyncResource();
+ * if (cr) {
+ * resource[sym] = cr[sym];
+ * }
+ * }
+ * }).enable();
+ *
+ * const server = createServer((req, res) => {
+ * executionAsyncResource()[sym] = { state: req.url };
+ * setTimeout(function() {
+ * res.end(JSON.stringify(executionAsyncResource()[sym]));
+ * }, 100);
+ * }).listen(3000);
+ * ```
+ * @since v13.9.0, v12.17.0
+ * @return The resource representing the current execution. Useful to store data within the resource.
+ */
+ function executionAsyncResource(): object;
+ /**
+ * ```js
+ * const server = net.createServer((conn) => {
+ * // The resource that caused (or triggered) this callback to be called
+ * // was that of the new connection. Thus the return value of triggerAsyncId()
+ * // is the asyncId of "conn".
+ * async_hooks.triggerAsyncId();
+ *
+ * }).listen(port, () => {
+ * // Even though all callbacks passed to .listen() are wrapped in a nextTick()
+ * // the callback itself exists because the call to the server's .listen()
+ * // was made. So the return value would be the ID of the server.
+ * async_hooks.triggerAsyncId();
+ * });
+ * ```
+ *
+ * Promise contexts may not get valid `triggerAsyncId`s by default. See
+ * the section on `promise execution tracking`.
+ * @return The ID of the resource responsible for calling the callback that is currently being executed.
+ */
+ function triggerAsyncId(): number;
+ interface HookCallbacks {
+ /**
+ * Called when a class is constructed that has the possibility to emit an asynchronous event.
+ * @param asyncId a unique ID for the async resource
+ * @param type the type of the async resource
+ * @param triggerAsyncId the unique ID of the async resource in whose execution context this async resource was created
+ * @param resource reference to the resource representing the async operation, needs to be released during destroy
+ */
+ init?(asyncId: number, type: string, triggerAsyncId: number, resource: object): void;
+ /**
+ * When an asynchronous operation is initiated or completes a callback is called to notify the user.
+ * The before callback is called just before said callback is executed.
+ * @param asyncId the unique identifier assigned to the resource about to execute the callback.
+ */
+ before?(asyncId: number): void;
+ /**
+ * Called immediately after the callback specified in before is completed.
+ * @param asyncId the unique identifier assigned to the resource which has executed the callback.
+ */
+ after?(asyncId: number): void;
+ /**
+ * Called when a promise has resolve() called. This may not be in the same execution id
+ * as the promise itself.
+ * @param asyncId the unique id for the promise that was resolve()d.
+ */
+ promiseResolve?(asyncId: number): void;
+ /**
+ * Called after the resource corresponding to asyncId is destroyed
+ * @param asyncId a unique ID for the async resource
+ */
+ destroy?(asyncId: number): void;
+ }
+ interface AsyncHook {
+ /**
+ * Enable the callbacks for a given AsyncHook instance. If no callbacks are provided enabling is a noop.
+ */
+ enable(): this;
+ /**
+ * Disable the callbacks for a given AsyncHook instance from the global pool of AsyncHook callbacks to be executed. Once a hook has been disabled it will not be called again until enabled.
+ */
+ disable(): this;
+ }
+ /**
+ * Registers functions to be called for different lifetime events of each async
+ * operation.
+ *
+ * The callbacks `init()`/`before()`/`after()`/`destroy()` are called for the
+ * respective asynchronous event during a resource's lifetime.
+ *
+ * All callbacks are optional. For example, if only resource cleanup needs to
+ * be tracked, then only the `destroy` callback needs to be passed. The
+ * specifics of all functions that can be passed to `callbacks` is in the `Hook Callbacks` section.
+ *
+ * ```js
+ * import { createHook } from 'async_hooks';
+ *
+ * const asyncHook = createHook({
+ * init(asyncId, type, triggerAsyncId, resource) { },
+ * destroy(asyncId) { }
+ * });
+ * ```
+ *
+ * The callbacks will be inherited via the prototype chain:
+ *
+ * ```js
+ * class MyAsyncCallbacks {
+ * init(asyncId, type, triggerAsyncId, resource) { }
+ * destroy(asyncId) {}
+ * }
+ *
+ * class MyAddedCallbacks extends MyAsyncCallbacks {
+ * before(asyncId) { }
+ * after(asyncId) { }
+ * }
+ *
+ * const asyncHook = async_hooks.createHook(new MyAddedCallbacks());
+ * ```
+ *
+ * Because promises are asynchronous resources whose lifecycle is tracked
+ * via the async hooks mechanism, the `init()`, `before()`, `after()`, and`destroy()` callbacks _must not_ be async functions that return promises.
+ * @since v8.1.0
+ * @param callbacks The `Hook Callbacks` to register
+ * @return Instance used for disabling and enabling hooks
+ */
+ function createHook(callbacks: HookCallbacks): AsyncHook;
+ interface AsyncResourceOptions {
+ /**
+ * The ID of the execution context that created this async event.
+ * @default executionAsyncId()
+ */
+ triggerAsyncId?: number | undefined;
+ /**
+ * Disables automatic `emitDestroy` when the object is garbage collected.
+ * This usually does not need to be set (even if `emitDestroy` is called
+ * manually), unless the resource's `asyncId` is retrieved and the
+ * sensitive API's `emitDestroy` is called with it.
+ * @default false
+ */
+ requireManualDestroy?: boolean | undefined;
+ }
+ /**
+ * The class `AsyncResource` is designed to be extended by the embedder's async
+ * resources. Using this, users can easily trigger the lifetime events of their
+ * own resources.
+ *
+ * The `init` hook will trigger when an `AsyncResource` is instantiated.
+ *
+ * The following is an overview of the `AsyncResource` API.
+ *
+ * ```js
+ * import { AsyncResource, executionAsyncId } from 'async_hooks';
+ *
+ * // AsyncResource() is meant to be extended. Instantiating a
+ * // new AsyncResource() also triggers init. If triggerAsyncId is omitted then
+ * // async_hook.executionAsyncId() is used.
+ * const asyncResource = new AsyncResource(
+ * type, { triggerAsyncId: executionAsyncId(), requireManualDestroy: false }
+ * );
+ *
+ * // Run a function in the execution context of the resource. This will
+ * // * establish the context of the resource
+ * // * trigger the AsyncHooks before callbacks
+ * // * call the provided function `fn` with the supplied arguments
+ * // * trigger the AsyncHooks after callbacks
+ * // * restore the original execution context
+ * asyncResource.runInAsyncScope(fn, thisArg, ...args);
+ *
+ * // Call AsyncHooks destroy callbacks.
+ * asyncResource.emitDestroy();
+ *
+ * // Return the unique ID assigned to the AsyncResource instance.
+ * asyncResource.asyncId();
+ *
+ * // Return the trigger ID for the AsyncResource instance.
+ * asyncResource.triggerAsyncId();
+ * ```
+ */
+ class AsyncResource {
+ /**
+ * AsyncResource() is meant to be extended. Instantiating a
+ * new AsyncResource() also triggers init. If triggerAsyncId is omitted then
+ * async_hook.executionAsyncId() is used.
+ * @param type The type of async event.
+ * @param triggerAsyncId The ID of the execution context that created
+ * this async event (default: `executionAsyncId()`), or an
+ * AsyncResourceOptions object (since v9.3.0)
+ */
+ constructor(type: string, triggerAsyncId?: number | AsyncResourceOptions);
+ /**
+ * Binds the given function to the current execution context.
+ *
+ * The returned function will have an `asyncResource` property referencing
+ * the `AsyncResource` to which the function is bound.
+ * @since v14.8.0, v12.19.0
+ * @param fn The function to bind to the current execution context.
+ * @param type An optional name to associate with the underlying `AsyncResource`.
+ */
+ static bind any, ThisArg>(
+ fn: Func,
+ type?: string,
+ thisArg?: ThisArg
+ ): Func & {
+ asyncResource: AsyncResource;
+ };
+ /**
+ * Binds the given function to execute to this `AsyncResource`'s scope.
+ *
+ * The returned function will have an `asyncResource` property referencing
+ * the `AsyncResource` to which the function is bound.
+ * @since v14.8.0, v12.19.0
+ * @param fn The function to bind to the current `AsyncResource`.
+ */
+ bind any>(
+ fn: Func
+ ): Func & {
+ asyncResource: AsyncResource;
+ };
+ /**
+ * Call the provided function with the provided arguments in the execution context
+ * of the async resource. This will establish the context, trigger the AsyncHooks
+ * before callbacks, call the function, trigger the AsyncHooks after callbacks, and
+ * then restore the original execution context.
+ * @since v9.6.0
+ * @param fn The function to call in the execution context of this async resource.
+ * @param thisArg The receiver to be used for the function call.
+ * @param args Optional arguments to pass to the function.
+ */
+ runInAsyncScope(fn: (this: This, ...args: any[]) => Result, thisArg?: This, ...args: any[]): Result;
+ /**
+ * Call all `destroy` hooks. This should only ever be called once. An error will
+ * be thrown if it is called more than once. This **must** be manually called. If
+ * the resource is left to be collected by the GC then the `destroy` hooks will
+ * never be called.
+ * @return A reference to `asyncResource`.
+ */
+ emitDestroy(): this;
+ /**
+ * @return The unique `asyncId` assigned to the resource.
+ */
+ asyncId(): number;
+ /**
+ *
+ * @return The same `triggerAsyncId` that is passed to the `AsyncResource` constructor.
+ */
+ triggerAsyncId(): number;
+ }
+ /**
+ * This class creates stores that stay coherent through asynchronous operations.
+ *
+ * While you can create your own implementation on top of the `async_hooks` module,`AsyncLocalStorage` should be preferred as it is a performant and memory safe
+ * implementation that involves significant optimizations that are non-obvious to
+ * implement.
+ *
+ * The following example uses `AsyncLocalStorage` to build a simple logger
+ * that assigns IDs to incoming HTTP requests and includes them in messages
+ * logged within each request.
+ *
+ * ```js
+ * import http from 'http';
+ * import { AsyncLocalStorage } from 'async_hooks';
+ *
+ * const asyncLocalStorage = new AsyncLocalStorage();
+ *
+ * function logWithId(msg) {
+ * const id = asyncLocalStorage.getStore();
+ * console.log(`${id !== undefined ? id : '-'}:`, msg);
+ * }
+ *
+ * let idSeq = 0;
+ * http.createServer((req, res) => {
+ * asyncLocalStorage.run(idSeq++, () => {
+ * logWithId('start');
+ * // Imagine any chain of async operations here
+ * setImmediate(() => {
+ * logWithId('finish');
+ * res.end();
+ * });
+ * });
+ * }).listen(8080);
+ *
+ * http.get('http://localhost:8080');
+ * http.get('http://localhost:8080');
+ * // Prints:
+ * // 0: start
+ * // 1: start
+ * // 0: finish
+ * // 1: finish
+ * ```
+ *
+ * Each instance of `AsyncLocalStorage` maintains an independent storage context.
+ * Multiple instances can safely exist simultaneously without risk of interfering
+ * with each other's data.
+ * @since v13.10.0, v12.17.0
+ */
+ class AsyncLocalStorage {
+ /**
+ * Disables the instance of `AsyncLocalStorage`. All subsequent calls
+ * to `asyncLocalStorage.getStore()` will return `undefined` until`asyncLocalStorage.run()` or `asyncLocalStorage.enterWith()` is called again.
+ *
+ * When calling `asyncLocalStorage.disable()`, all current contexts linked to the
+ * instance will be exited.
+ *
+ * Calling `asyncLocalStorage.disable()` is required before the`asyncLocalStorage` can be garbage collected. This does not apply to stores
+ * provided by the `asyncLocalStorage`, as those objects are garbage collected
+ * along with the corresponding async resources.
+ *
+ * Use this method when the `asyncLocalStorage` is not in use anymore
+ * in the current process.
+ * @since v13.10.0, v12.17.0
+ * @experimental
+ */
+ disable(): void;
+ /**
+ * Returns the current store.
+ * If called outside of an asynchronous context initialized by
+ * calling `asyncLocalStorage.run()` or `asyncLocalStorage.enterWith()`, it
+ * returns `undefined`.
+ * @since v13.10.0, v12.17.0
+ */
+ getStore(): T | undefined;
+ /**
+ * Runs a function synchronously within a context and returns its
+ * return value. The store is not accessible outside of the callback function.
+ * The store is accessible to any asynchronous operations created within the
+ * callback.
+ *
+ * The optional `args` are passed to the callback function.
+ *
+ * If the callback function throws an error, the error is thrown by `run()` too.
+ * The stacktrace is not impacted by this call and the context is exited.
+ *
+ * Example:
+ *
+ * ```js
+ * const store = { id: 2 };
+ * try {
+ * asyncLocalStorage.run(store, () => {
+ * asyncLocalStorage.getStore(); // Returns the store object
+ * setTimeout(() => {
+ * asyncLocalStorage.getStore(); // Returns the store object
+ * }, 200);
+ * throw new Error();
+ * });
+ * } catch (e) {
+ * asyncLocalStorage.getStore(); // Returns undefined
+ * // The error will be caught here
+ * }
+ * ```
+ * @since v13.10.0, v12.17.0
+ */
+ run(store: T, callback: (...args: TArgs) => R, ...args: TArgs): R;
+ /**
+ * Runs a function synchronously outside of a context and returns its
+ * return value. The store is not accessible within the callback function or
+ * the asynchronous operations created within the callback. Any `getStore()`call done within the callback function will always return `undefined`.
+ *
+ * The optional `args` are passed to the callback function.
+ *
+ * If the callback function throws an error, the error is thrown by `exit()` too.
+ * The stacktrace is not impacted by this call and the context is re-entered.
+ *
+ * Example:
+ *
+ * ```js
+ * // Within a call to run
+ * try {
+ * asyncLocalStorage.getStore(); // Returns the store object or value
+ * asyncLocalStorage.exit(() => {
+ * asyncLocalStorage.getStore(); // Returns undefined
+ * throw new Error();
+ * });
+ * } catch (e) {
+ * asyncLocalStorage.getStore(); // Returns the same object or value
+ * // The error will be caught here
+ * }
+ * ```
+ * @since v13.10.0, v12.17.0
+ * @experimental
+ */
+ exit(callback: (...args: TArgs) => R, ...args: TArgs): R;
+ /**
+ * Transitions into the context for the remainder of the current
+ * synchronous execution and then persists the store through any following
+ * asynchronous calls.
+ *
+ * Example:
+ *
+ * ```js
+ * const store = { id: 1 };
+ * // Replaces previous store with the given store object
+ * asyncLocalStorage.enterWith(store);
+ * asyncLocalStorage.getStore(); // Returns the store object
+ * someAsyncOperation(() => {
+ * asyncLocalStorage.getStore(); // Returns the same object
+ * });
+ * ```
+ *
+ * This transition will continue for the _entire_ synchronous execution.
+ * This means that if, for example, the context is entered within an event
+ * handler subsequent event handlers will also run within that context unless
+ * specifically bound to another context with an `AsyncResource`. That is why`run()` should be preferred over `enterWith()` unless there are strong reasons
+ * to use the latter method.
+ *
+ * ```js
+ * const store = { id: 1 };
+ *
+ * emitter.on('my-event', () => {
+ * asyncLocalStorage.enterWith(store);
+ * });
+ * emitter.on('my-event', () => {
+ * asyncLocalStorage.getStore(); // Returns the same object
+ * });
+ *
+ * asyncLocalStorage.getStore(); // Returns undefined
+ * emitter.emit('my-event');
+ * asyncLocalStorage.getStore(); // Returns the same object
+ * ```
+ * @since v13.11.0, v12.17.0
+ * @experimental
+ */
+ enterWith(store: T): void;
+ }
+}
+declare module 'node:async_hooks' {
+ export * from 'async_hooks';
+}
diff --git a/node_modules/@types/node/buffer.d.ts b/node_modules/@types/node/buffer.d.ts
new file mode 100755
index 0000000..34b28cf
--- /dev/null
+++ b/node_modules/@types/node/buffer.d.ts
@@ -0,0 +1,2238 @@
+/**
+ * `Buffer` objects are used to represent a fixed-length sequence of bytes. Many
+ * Node.js APIs support `Buffer`s.
+ *
+ * The `Buffer` class is a subclass of JavaScript's [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) class and
+ * extends it with methods that cover additional use cases. Node.js APIs accept
+ * plain [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) s wherever `Buffer`s are supported as well.
+ *
+ * While the `Buffer` class is available within the global scope, it is still
+ * recommended to explicitly reference it via an import or require statement.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * // Creates a zero-filled Buffer of length 10.
+ * const buf1 = Buffer.alloc(10);
+ *
+ * // Creates a Buffer of length 10,
+ * // filled with bytes which all have the value `1`.
+ * const buf2 = Buffer.alloc(10, 1);
+ *
+ * // Creates an uninitialized buffer of length 10.
+ * // This is faster than calling Buffer.alloc() but the returned
+ * // Buffer instance might contain old data that needs to be
+ * // overwritten using fill(), write(), or other functions that fill the Buffer's
+ * // contents.
+ * const buf3 = Buffer.allocUnsafe(10);
+ *
+ * // Creates a Buffer containing the bytes [1, 2, 3].
+ * const buf4 = Buffer.from([1, 2, 3]);
+ *
+ * // Creates a Buffer containing the bytes [1, 1, 1, 1] – the entries
+ * // are all truncated using `(value & 255)` to fit into the range 0–255.
+ * const buf5 = Buffer.from([257, 257.5, -255, '1']);
+ *
+ * // Creates a Buffer containing the UTF-8-encoded bytes for the string 'tést':
+ * // [0x74, 0xc3, 0xa9, 0x73, 0x74] (in hexadecimal notation)
+ * // [116, 195, 169, 115, 116] (in decimal notation)
+ * const buf6 = Buffer.from('tést');
+ *
+ * // Creates a Buffer containing the Latin-1 bytes [0x74, 0xe9, 0x73, 0x74].
+ * const buf7 = Buffer.from('tést', 'latin1');
+ * ```
+ * @see [source](https://github.com/nodejs/node/blob/v18.0.0/lib/buffer.js)
+ */
+declare module 'buffer' {
+ import { BinaryLike } from 'node:crypto';
+ export const INSPECT_MAX_BYTES: number;
+ export const kMaxLength: number;
+ export const kStringMaxLength: number;
+ export const constants: {
+ MAX_LENGTH: number;
+ MAX_STRING_LENGTH: number;
+ };
+ export type TranscodeEncoding = 'ascii' | 'utf8' | 'utf16le' | 'ucs2' | 'latin1' | 'binary';
+ /**
+ * Re-encodes the given `Buffer` or `Uint8Array` instance from one character
+ * encoding to another. Returns a new `Buffer` instance.
+ *
+ * Throws if the `fromEnc` or `toEnc` specify invalid character encodings or if
+ * conversion from `fromEnc` to `toEnc` is not permitted.
+ *
+ * Encodings supported by `buffer.transcode()` are: `'ascii'`, `'utf8'`,`'utf16le'`, `'ucs2'`, `'latin1'`, and `'binary'`.
+ *
+ * The transcoding process will use substitution characters if a given byte
+ * sequence cannot be adequately represented in the target encoding. For instance:
+ *
+ * ```js
+ * import { Buffer, transcode } from 'buffer';
+ *
+ * const newBuf = transcode(Buffer.from('€'), 'utf8', 'ascii');
+ * console.log(newBuf.toString('ascii'));
+ * // Prints: '?'
+ * ```
+ *
+ * Because the Euro (`€`) sign is not representable in US-ASCII, it is replaced
+ * with `?` in the transcoded `Buffer`.
+ * @since v7.1.0
+ * @param source A `Buffer` or `Uint8Array` instance.
+ * @param fromEnc The current encoding.
+ * @param toEnc To target encoding.
+ */
+ export function transcode(source: Uint8Array, fromEnc: TranscodeEncoding, toEnc: TranscodeEncoding): Buffer;
+ export const SlowBuffer: {
+ /** @deprecated since v6.0.0, use `Buffer.allocUnsafeSlow()` */
+ new (size: number): Buffer;
+ prototype: Buffer;
+ };
+ /**
+ * Resolves a `'blob:nodedata:...'` an associated `Blob` object registered using
+ * a prior call to `URL.createObjectURL()`.
+ * @since v16.7.0
+ * @experimental
+ * @param id A `'blob:nodedata:...` URL string returned by a prior call to `URL.createObjectURL()`.
+ */
+ export function resolveObjectURL(id: string): Blob | undefined;
+ export { Buffer };
+ /**
+ * @experimental
+ */
+ export interface BlobOptions {
+ /**
+ * @default 'utf8'
+ */
+ encoding?: BufferEncoding | undefined;
+ /**
+ * The Blob content-type. The intent is for `type` to convey
+ * the MIME media type of the data, however no validation of the type format
+ * is performed.
+ */
+ type?: string | undefined;
+ }
+ /**
+ * A [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob) encapsulates immutable, raw data that can be safely shared across
+ * multiple worker threads.
+ * @since v15.7.0, v14.18.0
+ */
+ export class Blob {
+ /**
+ * The total size of the `Blob` in bytes.
+ * @since v15.7.0, v14.18.0
+ */
+ readonly size: number;
+ /**
+ * The content-type of the `Blob`.
+ * @since v15.7.0, v14.18.0
+ */
+ readonly type: string;
+ /**
+ * Creates a new `Blob` object containing a concatenation of the given sources.
+ *
+ * {ArrayBuffer}, {TypedArray}, {DataView}, and {Buffer} sources are copied into
+ * the 'Blob' and can therefore be safely modified after the 'Blob' is created.
+ *
+ * String sources are also copied into the `Blob`.
+ */
+ constructor(sources: Array, options?: BlobOptions);
+ /**
+ * Returns a promise that fulfills with an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) containing a copy of
+ * the `Blob` data.
+ * @since v15.7.0, v14.18.0
+ */
+ arrayBuffer(): Promise;
+ /**
+ * Creates and returns a new `Blob` containing a subset of this `Blob` objects
+ * data. The original `Blob` is not altered.
+ * @since v15.7.0, v14.18.0
+ * @param start The starting index.
+ * @param end The ending index.
+ * @param type The content-type for the new `Blob`
+ */
+ slice(start?: number, end?: number, type?: string): Blob;
+ /**
+ * Returns a promise that fulfills with the contents of the `Blob` decoded as a
+ * UTF-8 string.
+ * @since v15.7.0, v14.18.0
+ */
+ text(): Promise;
+ /**
+ * Returns a new `ReadableStream` that allows the content of the `Blob` to be read.
+ * @since v16.7.0
+ */
+ stream(): unknown; // pending web streams types
+ }
+ export import atob = globalThis.atob;
+ export import btoa = globalThis.btoa;
+ global {
+ // Buffer class
+ type BufferEncoding = 'ascii' | 'utf8' | 'utf-8' | 'utf16le' | 'ucs2' | 'ucs-2' | 'base64' | 'base64url' | 'latin1' | 'binary' | 'hex';
+ type WithImplicitCoercion =
+ | T
+ | {
+ valueOf(): T;
+ };
+ /**
+ * Raw data is stored in instances of the Buffer class.
+ * A Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.
+ * Valid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'base64url'|'binary'(deprecated)|'hex'
+ */
+ interface BufferConstructor {
+ /**
+ * Allocates a new buffer containing the given {str}.
+ *
+ * @param str String to store in buffer.
+ * @param encoding encoding to use, optional. Default is 'utf8'
+ * @deprecated since v10.0.0 - Use `Buffer.from(string[, encoding])` instead.
+ */
+ new (str: string, encoding?: BufferEncoding): Buffer;
+ /**
+ * Allocates a new buffer of {size} octets.
+ *
+ * @param size count of octets to allocate.
+ * @deprecated since v10.0.0 - Use `Buffer.alloc()` instead (also see `Buffer.allocUnsafe()`).
+ */
+ new (size: number): Buffer;
+ /**
+ * Allocates a new buffer containing the given {array} of octets.
+ *
+ * @param array The octets to store.
+ * @deprecated since v10.0.0 - Use `Buffer.from(array)` instead.
+ */
+ new (array: Uint8Array): Buffer;
+ /**
+ * Produces a Buffer backed by the same allocated memory as
+ * the given {ArrayBuffer}/{SharedArrayBuffer}.
+ *
+ *
+ * @param arrayBuffer The ArrayBuffer with which to share memory.
+ * @deprecated since v10.0.0 - Use `Buffer.from(arrayBuffer[, byteOffset[, length]])` instead.
+ */
+ new (arrayBuffer: ArrayBuffer | SharedArrayBuffer): Buffer;
+ /**
+ * Allocates a new buffer containing the given {array} of octets.
+ *
+ * @param array The octets to store.
+ * @deprecated since v10.0.0 - Use `Buffer.from(array)` instead.
+ */
+ new (array: ReadonlyArray): Buffer;
+ /**
+ * Copies the passed {buffer} data onto a new {Buffer} instance.
+ *
+ * @param buffer The buffer to copy.
+ * @deprecated since v10.0.0 - Use `Buffer.from(buffer)` instead.
+ */
+ new (buffer: Buffer): Buffer;
+ /**
+ * Allocates a new `Buffer` using an `array` of bytes in the range `0` – `255`.
+ * Array entries outside that range will be truncated to fit into it.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * // Creates a new Buffer containing the UTF-8 bytes of the string 'buffer'.
+ * const buf = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]);
+ * ```
+ *
+ * A `TypeError` will be thrown if `array` is not an `Array` or another type
+ * appropriate for `Buffer.from()` variants.
+ *
+ * `Buffer.from(array)` and `Buffer.from(string)` may also use the internal`Buffer` pool like `Buffer.allocUnsafe()` does.
+ * @since v5.10.0
+ */
+ from(arrayBuffer: WithImplicitCoercion, byteOffset?: number, length?: number): Buffer;
+ /**
+ * Creates a new Buffer using the passed {data}
+ * @param data data to create a new Buffer
+ */
+ from(data: Uint8Array | ReadonlyArray): Buffer;
+ from(data: WithImplicitCoercion | string>): Buffer;
+ /**
+ * Creates a new Buffer containing the given JavaScript string {str}.
+ * If provided, the {encoding} parameter identifies the character encoding.
+ * If not provided, {encoding} defaults to 'utf8'.
+ */
+ from(
+ str:
+ | WithImplicitCoercion
+ | {
+ [Symbol.toPrimitive](hint: 'string'): string;
+ },
+ encoding?: BufferEncoding
+ ): Buffer;
+ /**
+ * Creates a new Buffer using the passed {data}
+ * @param values to create a new Buffer
+ */
+ of(...items: number[]): Buffer;
+ /**
+ * Returns `true` if `obj` is a `Buffer`, `false` otherwise.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * Buffer.isBuffer(Buffer.alloc(10)); // true
+ * Buffer.isBuffer(Buffer.from('foo')); // true
+ * Buffer.isBuffer('a string'); // false
+ * Buffer.isBuffer([]); // false
+ * Buffer.isBuffer(new Uint8Array(1024)); // false
+ * ```
+ * @since v0.1.101
+ */
+ isBuffer(obj: any): obj is Buffer;
+ /**
+ * Returns `true` if `encoding` is the name of a supported character encoding,
+ * or `false` otherwise.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * console.log(Buffer.isEncoding('utf8'));
+ * // Prints: true
+ *
+ * console.log(Buffer.isEncoding('hex'));
+ * // Prints: true
+ *
+ * console.log(Buffer.isEncoding('utf/8'));
+ * // Prints: false
+ *
+ * console.log(Buffer.isEncoding(''));
+ * // Prints: false
+ * ```
+ * @since v0.9.1
+ * @param encoding A character encoding name to check.
+ */
+ isEncoding(encoding: string): encoding is BufferEncoding;
+ /**
+ * Returns the byte length of a string when encoded using `encoding`.
+ * This is not the same as [`String.prototype.length`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/length), which does not account
+ * for the encoding that is used to convert the string into bytes.
+ *
+ * For `'base64'`, `'base64url'`, and `'hex'`, this function assumes valid input.
+ * For strings that contain non-base64/hex-encoded data (e.g. whitespace), the
+ * return value might be greater than the length of a `Buffer` created from the
+ * string.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const str = '\u00bd + \u00bc = \u00be';
+ *
+ * console.log(`${str}: ${str.length} characters, ` +
+ * `${Buffer.byteLength(str, 'utf8')} bytes`);
+ * // Prints: ½ + ¼ = ¾: 9 characters, 12 bytes
+ * ```
+ *
+ * When `string` is a
+ * `Buffer`/[`DataView`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView)/[`TypedArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/-
+ * Reference/Global_Objects/TypedArray)/[`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)/[`SharedArrayBuffer`](https://develop-
+ * er.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer), the byte length as reported by `.byteLength`is returned.
+ * @since v0.1.90
+ * @param string A value to calculate the length of.
+ * @param [encoding='utf8'] If `string` is a string, this is its encoding.
+ * @return The number of bytes contained within `string`.
+ */
+ byteLength(string: string | NodeJS.ArrayBufferView | ArrayBuffer | SharedArrayBuffer, encoding?: BufferEncoding): number;
+ /**
+ * Returns a new `Buffer` which is the result of concatenating all the `Buffer`instances in the `list` together.
+ *
+ * If the list has no items, or if the `totalLength` is 0, then a new zero-length`Buffer` is returned.
+ *
+ * If `totalLength` is not provided, it is calculated from the `Buffer` instances
+ * in `list` by adding their lengths.
+ *
+ * If `totalLength` is provided, it is coerced to an unsigned integer. If the
+ * combined length of the `Buffer`s in `list` exceeds `totalLength`, the result is
+ * truncated to `totalLength`.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * // Create a single `Buffer` from a list of three `Buffer` instances.
+ *
+ * const buf1 = Buffer.alloc(10);
+ * const buf2 = Buffer.alloc(14);
+ * const buf3 = Buffer.alloc(18);
+ * const totalLength = buf1.length + buf2.length + buf3.length;
+ *
+ * console.log(totalLength);
+ * // Prints: 42
+ *
+ * const bufA = Buffer.concat([buf1, buf2, buf3], totalLength);
+ *
+ * console.log(bufA);
+ * // Prints:
+ * console.log(bufA.length);
+ * // Prints: 42
+ * ```
+ *
+ * `Buffer.concat()` may also use the internal `Buffer` pool like `Buffer.allocUnsafe()` does.
+ * @since v0.7.11
+ * @param list List of `Buffer` or {@link Uint8Array} instances to concatenate.
+ * @param totalLength Total length of the `Buffer` instances in `list` when concatenated.
+ */
+ concat(list: ReadonlyArray, totalLength?: number): Buffer;
+ /**
+ * Compares `buf1` to `buf2`, typically for the purpose of sorting arrays of`Buffer` instances. This is equivalent to calling `buf1.compare(buf2)`.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf1 = Buffer.from('1234');
+ * const buf2 = Buffer.from('0123');
+ * const arr = [buf1, buf2];
+ *
+ * console.log(arr.sort(Buffer.compare));
+ * // Prints: [ , ]
+ * // (This result is equal to: [buf2, buf1].)
+ * ```
+ * @since v0.11.13
+ * @return Either `-1`, `0`, or `1`, depending on the result of the comparison. See `compare` for details.
+ */
+ compare(buf1: Uint8Array, buf2: Uint8Array): -1 | 0 | 1;
+ /**
+ * Allocates a new `Buffer` of `size` bytes. If `fill` is `undefined`, the`Buffer` will be zero-filled.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.alloc(5);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ *
+ * If `size` is larger than {@link constants.MAX_LENGTH} or smaller than 0, `ERR_INVALID_ARG_VALUE` is thrown.
+ *
+ * If `fill` is specified, the allocated `Buffer` will be initialized by calling `buf.fill(fill)`.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.alloc(5, 'a');
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ *
+ * If both `fill` and `encoding` are specified, the allocated `Buffer` will be
+ * initialized by calling `buf.fill(fill, encoding)`.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64');
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ *
+ * Calling `Buffer.alloc()` can be measurably slower than the alternative `Buffer.allocUnsafe()` but ensures that the newly created `Buffer` instance
+ * contents will never contain sensitive data from previous allocations, including
+ * data that might not have been allocated for `Buffer`s.
+ *
+ * A `TypeError` will be thrown if `size` is not a number.
+ * @since v5.10.0
+ * @param size The desired length of the new `Buffer`.
+ * @param [fill=0] A value to pre-fill the new `Buffer` with.
+ * @param [encoding='utf8'] If `fill` is a string, this is its encoding.
+ */
+ alloc(size: number, fill?: string | Buffer | number, encoding?: BufferEncoding): Buffer;
+ /**
+ * Allocates a new `Buffer` of `size` bytes. If `size` is larger than {@link constants.MAX_LENGTH} or smaller than 0, `ERR_INVALID_ARG_VALUE` is thrown.
+ *
+ * The underlying memory for `Buffer` instances created in this way is _not_
+ * _initialized_. The contents of the newly created `Buffer` are unknown and _may contain sensitive data_. Use `Buffer.alloc()` instead to initialize`Buffer` instances with zeroes.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(10);
+ *
+ * console.log(buf);
+ * // Prints (contents may vary):
+ *
+ * buf.fill(0);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ *
+ * A `TypeError` will be thrown if `size` is not a number.
+ *
+ * The `Buffer` module pre-allocates an internal `Buffer` instance of
+ * size `Buffer.poolSize` that is used as a pool for the fast allocation of new`Buffer` instances created using `Buffer.allocUnsafe()`,`Buffer.from(array)`, `Buffer.concat()`, and the
+ * deprecated`new Buffer(size)` constructor only when `size` is less than or equal
+ * to `Buffer.poolSize >> 1` (floor of `Buffer.poolSize` divided by two).
+ *
+ * Use of this pre-allocated internal memory pool is a key difference between
+ * calling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`.
+ * Specifically, `Buffer.alloc(size, fill)` will _never_ use the internal `Buffer`pool, while `Buffer.allocUnsafe(size).fill(fill)`_will_ use the internal`Buffer` pool if `size` is less
+ * than or equal to half `Buffer.poolSize`. The
+ * difference is subtle but can be important when an application requires the
+ * additional performance that `Buffer.allocUnsafe()` provides.
+ * @since v5.10.0
+ * @param size The desired length of the new `Buffer`.
+ */
+ allocUnsafe(size: number): Buffer;
+ /**
+ * Allocates a new `Buffer` of `size` bytes. If `size` is larger than {@link constants.MAX_LENGTH} or smaller than 0, `ERR_INVALID_ARG_VALUE` is thrown. A zero-length `Buffer` is created
+ * if `size` is 0.
+ *
+ * The underlying memory for `Buffer` instances created in this way is _not_
+ * _initialized_. The contents of the newly created `Buffer` are unknown and_may contain sensitive data_. Use `buf.fill(0)` to initialize
+ * such `Buffer` instances with zeroes.
+ *
+ * When using `Buffer.allocUnsafe()` to allocate new `Buffer` instances,
+ * allocations under 4 KB are sliced from a single pre-allocated `Buffer`. This
+ * allows applications to avoid the garbage collection overhead of creating many
+ * individually allocated `Buffer` instances. This approach improves both
+ * performance and memory usage by eliminating the need to track and clean up as
+ * many individual `ArrayBuffer` objects.
+ *
+ * However, in the case where a developer may need to retain a small chunk of
+ * memory from a pool for an indeterminate amount of time, it may be appropriate
+ * to create an un-pooled `Buffer` instance using `Buffer.allocUnsafeSlow()` and
+ * then copying out the relevant bits.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * // Need to keep around a few small chunks of memory.
+ * const store = [];
+ *
+ * socket.on('readable', () => {
+ * let data;
+ * while (null !== (data = readable.read())) {
+ * // Allocate for retained data.
+ * const sb = Buffer.allocUnsafeSlow(10);
+ *
+ * // Copy the data into the new allocation.
+ * data.copy(sb, 0, 0, 10);
+ *
+ * store.push(sb);
+ * }
+ * });
+ * ```
+ *
+ * A `TypeError` will be thrown if `size` is not a number.
+ * @since v5.12.0
+ * @param size The desired length of the new `Buffer`.
+ */
+ allocUnsafeSlow(size: number): Buffer;
+ /**
+ * This is the size (in bytes) of pre-allocated internal `Buffer` instances used
+ * for pooling. This value may be modified.
+ * @since v0.11.3
+ */
+ poolSize: number;
+ }
+ interface Buffer extends Uint8Array {
+ /**
+ * Writes `string` to `buf` at `offset` according to the character encoding in`encoding`. The `length` parameter is the number of bytes to write. If `buf` did
+ * not contain enough space to fit the entire string, only part of `string` will be
+ * written. However, partially encoded characters will not be written.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.alloc(256);
+ *
+ * const len = buf.write('\u00bd + \u00bc = \u00be', 0);
+ *
+ * console.log(`${len} bytes: ${buf.toString('utf8', 0, len)}`);
+ * // Prints: 12 bytes: ½ + ¼ = ¾
+ *
+ * const buffer = Buffer.alloc(10);
+ *
+ * const length = buffer.write('abcd', 8);
+ *
+ * console.log(`${length} bytes: ${buffer.toString('utf8', 8, 10)}`);
+ * // Prints: 2 bytes : ab
+ * ```
+ * @since v0.1.90
+ * @param string String to write to `buf`.
+ * @param [offset=0] Number of bytes to skip before starting to write `string`.
+ * @param [length=buf.length - offset] Maximum number of bytes to write (written bytes will not exceed `buf.length - offset`).
+ * @param [encoding='utf8'] The character encoding of `string`.
+ * @return Number of bytes written.
+ */
+ write(string: string, encoding?: BufferEncoding): number;
+ write(string: string, offset: number, encoding?: BufferEncoding): number;
+ write(string: string, offset: number, length: number, encoding?: BufferEncoding): number;
+ /**
+ * Decodes `buf` to a string according to the specified character encoding in`encoding`. `start` and `end` may be passed to decode only a subset of `buf`.
+ *
+ * If `encoding` is `'utf8'` and a byte sequence in the input is not valid UTF-8,
+ * then each invalid byte is replaced with the replacement character `U+FFFD`.
+ *
+ * The maximum length of a string instance (in UTF-16 code units) is available
+ * as {@link constants.MAX_STRING_LENGTH}.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf1 = Buffer.allocUnsafe(26);
+ *
+ * for (let i = 0; i < 26; i++) {
+ * // 97 is the decimal ASCII value for 'a'.
+ * buf1[i] = i + 97;
+ * }
+ *
+ * console.log(buf1.toString('utf8'));
+ * // Prints: abcdefghijklmnopqrstuvwxyz
+ * console.log(buf1.toString('utf8', 0, 5));
+ * // Prints: abcde
+ *
+ * const buf2 = Buffer.from('tést');
+ *
+ * console.log(buf2.toString('hex'));
+ * // Prints: 74c3a97374
+ * console.log(buf2.toString('utf8', 0, 3));
+ * // Prints: té
+ * console.log(buf2.toString(undefined, 0, 3));
+ * // Prints: té
+ * ```
+ * @since v0.1.90
+ * @param [encoding='utf8'] The character encoding to use.
+ * @param [start=0] The byte offset to start decoding at.
+ * @param [end=buf.length] The byte offset to stop decoding at (not inclusive).
+ */
+ toString(encoding?: BufferEncoding, start?: number, end?: number): string;
+ /**
+ * Returns a JSON representation of `buf`. [`JSON.stringify()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) implicitly calls
+ * this function when stringifying a `Buffer` instance.
+ *
+ * `Buffer.from()` accepts objects in the format returned from this method.
+ * In particular, `Buffer.from(buf.toJSON())` works like `Buffer.from(buf)`.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5]);
+ * const json = JSON.stringify(buf);
+ *
+ * console.log(json);
+ * // Prints: {"type":"Buffer","data":[1,2,3,4,5]}
+ *
+ * const copy = JSON.parse(json, (key, value) => {
+ * return value && value.type === 'Buffer' ?
+ * Buffer.from(value) :
+ * value;
+ * });
+ *
+ * console.log(copy);
+ * // Prints:
+ * ```
+ * @since v0.9.2
+ */
+ toJSON(): {
+ type: 'Buffer';
+ data: number[];
+ };
+ /**
+ * Returns `true` if both `buf` and `otherBuffer` have exactly the same bytes,`false` otherwise. Equivalent to `buf.compare(otherBuffer) === 0`.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf1 = Buffer.from('ABC');
+ * const buf2 = Buffer.from('414243', 'hex');
+ * const buf3 = Buffer.from('ABCD');
+ *
+ * console.log(buf1.equals(buf2));
+ * // Prints: true
+ * console.log(buf1.equals(buf3));
+ * // Prints: false
+ * ```
+ * @since v0.11.13
+ * @param otherBuffer A `Buffer` or {@link Uint8Array} with which to compare `buf`.
+ */
+ equals(otherBuffer: Uint8Array): boolean;
+ /**
+ * Compares `buf` with `target` and returns a number indicating whether `buf`comes before, after, or is the same as `target` in sort order.
+ * Comparison is based on the actual sequence of bytes in each `Buffer`.
+ *
+ * * `0` is returned if `target` is the same as `buf`
+ * * `1` is returned if `target` should come _before_`buf` when sorted.
+ * * `-1` is returned if `target` should come _after_`buf` when sorted.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf1 = Buffer.from('ABC');
+ * const buf2 = Buffer.from('BCD');
+ * const buf3 = Buffer.from('ABCD');
+ *
+ * console.log(buf1.compare(buf1));
+ * // Prints: 0
+ * console.log(buf1.compare(buf2));
+ * // Prints: -1
+ * console.log(buf1.compare(buf3));
+ * // Prints: -1
+ * console.log(buf2.compare(buf1));
+ * // Prints: 1
+ * console.log(buf2.compare(buf3));
+ * // Prints: 1
+ * console.log([buf1, buf2, buf3].sort(Buffer.compare));
+ * // Prints: [ , , ]
+ * // (This result is equal to: [buf1, buf3, buf2].)
+ * ```
+ *
+ * The optional `targetStart`, `targetEnd`, `sourceStart`, and `sourceEnd`arguments can be used to limit the comparison to specific ranges within `target`and `buf` respectively.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf1 = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8, 9]);
+ * const buf2 = Buffer.from([5, 6, 7, 8, 9, 1, 2, 3, 4]);
+ *
+ * console.log(buf1.compare(buf2, 5, 9, 0, 4));
+ * // Prints: 0
+ * console.log(buf1.compare(buf2, 0, 6, 4));
+ * // Prints: -1
+ * console.log(buf1.compare(buf2, 5, 6, 5));
+ * // Prints: 1
+ * ```
+ *
+ * `ERR_OUT_OF_RANGE` is thrown if `targetStart < 0`, `sourceStart < 0`,`targetEnd > target.byteLength`, or `sourceEnd > source.byteLength`.
+ * @since v0.11.13
+ * @param target A `Buffer` or {@link Uint8Array} with which to compare `buf`.
+ * @param [targetStart=0] The offset within `target` at which to begin comparison.
+ * @param [targetEnd=target.length] The offset within `target` at which to end comparison (not inclusive).
+ * @param [sourceStart=0] The offset within `buf` at which to begin comparison.
+ * @param [sourceEnd=buf.length] The offset within `buf` at which to end comparison (not inclusive).
+ */
+ compare(target: Uint8Array, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): -1 | 0 | 1;
+ /**
+ * Copies data from a region of `buf` to a region in `target`, even if the `target`memory region overlaps with `buf`.
+ *
+ * [`TypedArray.prototype.set()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/set) performs the same operation, and is available
+ * for all TypedArrays, including Node.js `Buffer`s, although it takes
+ * different function arguments.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * // Create two `Buffer` instances.
+ * const buf1 = Buffer.allocUnsafe(26);
+ * const buf2 = Buffer.allocUnsafe(26).fill('!');
+ *
+ * for (let i = 0; i < 26; i++) {
+ * // 97 is the decimal ASCII value for 'a'.
+ * buf1[i] = i + 97;
+ * }
+ *
+ * // Copy `buf1` bytes 16 through 19 into `buf2` starting at byte 8 of `buf2`.
+ * buf1.copy(buf2, 8, 16, 20);
+ * // This is equivalent to:
+ * // buf2.set(buf1.subarray(16, 20), 8);
+ *
+ * console.log(buf2.toString('ascii', 0, 25));
+ * // Prints: !!!!!!!!qrst!!!!!!!!!!!!!
+ * ```
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * // Create a `Buffer` and copy data from one region to an overlapping region
+ * // within the same `Buffer`.
+ *
+ * const buf = Buffer.allocUnsafe(26);
+ *
+ * for (let i = 0; i < 26; i++) {
+ * // 97 is the decimal ASCII value for 'a'.
+ * buf[i] = i + 97;
+ * }
+ *
+ * buf.copy(buf, 0, 4, 10);
+ *
+ * console.log(buf.toString());
+ * // Prints: efghijghijklmnopqrstuvwxyz
+ * ```
+ * @since v0.1.90
+ * @param target A `Buffer` or {@link Uint8Array} to copy into.
+ * @param [targetStart=0] The offset within `target` at which to begin writing.
+ * @param [sourceStart=0] The offset within `buf` from which to begin copying.
+ * @param [sourceEnd=buf.length] The offset within `buf` at which to stop copying (not inclusive).
+ * @return The number of bytes copied.
+ */
+ copy(target: Uint8Array, targetStart?: number, sourceStart?: number, sourceEnd?: number): number;
+ /**
+ * Returns a new `Buffer` that references the same memory as the original, but
+ * offset and cropped by the `start` and `end` indices.
+ *
+ * This method is not compatible with the `Uint8Array.prototype.slice()`,
+ * which is a superclass of `Buffer`. To copy the slice, use`Uint8Array.prototype.slice()`.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from('buffer');
+ *
+ * const copiedBuf = Uint8Array.prototype.slice.call(buf);
+ * copiedBuf[0]++;
+ * console.log(copiedBuf.toString());
+ * // Prints: cuffer
+ *
+ * console.log(buf.toString());
+ * // Prints: buffer
+ *
+ * // With buf.slice(), the original buffer is modified.
+ * const notReallyCopiedBuf = buf.slice();
+ * notReallyCopiedBuf[0]++;
+ * console.log(notReallyCopiedBuf.toString());
+ * // Prints: cuffer
+ * console.log(buf.toString());
+ * // Also prints: cuffer (!)
+ * ```
+ * @since v0.3.0
+ * @deprecated Use `subarray` instead.
+ * @param [start=0] Where the new `Buffer` will start.
+ * @param [end=buf.length] Where the new `Buffer` will end (not inclusive).
+ */
+ slice(start?: number, end?: number): Buffer;
+ /**
+ * Returns a new `Buffer` that references the same memory as the original, but
+ * offset and cropped by the `start` and `end` indices.
+ *
+ * Specifying `end` greater than `buf.length` will return the same result as
+ * that of `end` equal to `buf.length`.
+ *
+ * This method is inherited from [`TypedArray.prototype.subarray()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/subarray).
+ *
+ * Modifying the new `Buffer` slice will modify the memory in the original `Buffer`because the allocated memory of the two objects overlap.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * // Create a `Buffer` with the ASCII alphabet, take a slice, and modify one byte
+ * // from the original `Buffer`.
+ *
+ * const buf1 = Buffer.allocUnsafe(26);
+ *
+ * for (let i = 0; i < 26; i++) {
+ * // 97 is the decimal ASCII value for 'a'.
+ * buf1[i] = i + 97;
+ * }
+ *
+ * const buf2 = buf1.subarray(0, 3);
+ *
+ * console.log(buf2.toString('ascii', 0, buf2.length));
+ * // Prints: abc
+ *
+ * buf1[0] = 33;
+ *
+ * console.log(buf2.toString('ascii', 0, buf2.length));
+ * // Prints: !bc
+ * ```
+ *
+ * Specifying negative indexes causes the slice to be generated relative to the
+ * end of `buf` rather than the beginning.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from('buffer');
+ *
+ * console.log(buf.subarray(-6, -1).toString());
+ * // Prints: buffe
+ * // (Equivalent to buf.subarray(0, 5).)
+ *
+ * console.log(buf.subarray(-6, -2).toString());
+ * // Prints: buff
+ * // (Equivalent to buf.subarray(0, 4).)
+ *
+ * console.log(buf.subarray(-5, -2).toString());
+ * // Prints: uff
+ * // (Equivalent to buf.subarray(1, 4).)
+ * ```
+ * @since v3.0.0
+ * @param [start=0] Where the new `Buffer` will start.
+ * @param [end=buf.length] Where the new `Buffer` will end (not inclusive).
+ */
+ subarray(start?: number, end?: number): Buffer;
+ /**
+ * Writes `value` to `buf` at the specified `offset` as big-endian.
+ *
+ * `value` is interpreted and written as a two's complement signed integer.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(8);
+ *
+ * buf.writeBigInt64BE(0x0102030405060708n, 0);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ * @since v12.0.0, v10.20.0
+ * @param value Number to be written to `buf`.
+ * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy: `0 <= offset <= buf.length - 8`.
+ * @return `offset` plus the number of bytes written.
+ */
+ writeBigInt64BE(value: bigint, offset?: number): number;
+ /**
+ * Writes `value` to `buf` at the specified `offset` as little-endian.
+ *
+ * `value` is interpreted and written as a two's complement signed integer.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(8);
+ *
+ * buf.writeBigInt64LE(0x0102030405060708n, 0);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ * @since v12.0.0, v10.20.0
+ * @param value Number to be written to `buf`.
+ * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy: `0 <= offset <= buf.length - 8`.
+ * @return `offset` plus the number of bytes written.
+ */
+ writeBigInt64LE(value: bigint, offset?: number): number;
+ /**
+ * Writes `value` to `buf` at the specified `offset` as big-endian.
+ *
+ * This function is also available under the `writeBigUint64BE` alias.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(8);
+ *
+ * buf.writeBigUInt64BE(0xdecafafecacefaden, 0);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ * @since v12.0.0, v10.20.0
+ * @param value Number to be written to `buf`.
+ * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy: `0 <= offset <= buf.length - 8`.
+ * @return `offset` plus the number of bytes written.
+ */
+ writeBigUInt64BE(value: bigint, offset?: number): number;
+ /**
+ * @alias Buffer.writeBigUInt64BE
+ * @since v14.10.0, v12.19.0
+ */
+ writeBigUint64BE(value: bigint, offset?: number): number;
+ /**
+ * Writes `value` to `buf` at the specified `offset` as little-endian
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(8);
+ *
+ * buf.writeBigUInt64LE(0xdecafafecacefaden, 0);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ *
+ * This function is also available under the `writeBigUint64LE` alias.
+ * @since v12.0.0, v10.20.0
+ * @param value Number to be written to `buf`.
+ * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy: `0 <= offset <= buf.length - 8`.
+ * @return `offset` plus the number of bytes written.
+ */
+ writeBigUInt64LE(value: bigint, offset?: number): number;
+ /**
+ * @alias Buffer.writeBigUInt64LE
+ * @since v14.10.0, v12.19.0
+ */
+ writeBigUint64LE(value: bigint, offset?: number): number;
+ /**
+ * Writes `byteLength` bytes of `value` to `buf` at the specified `offset`as little-endian. Supports up to 48 bits of accuracy. Behavior is undefined
+ * when `value` is anything other than an unsigned integer.
+ *
+ * This function is also available under the `writeUintLE` alias.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(6);
+ *
+ * buf.writeUIntLE(0x1234567890ab, 0, 6);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ * @since v0.5.5
+ * @param value Number to be written to `buf`.
+ * @param offset Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - byteLength`.
+ * @param byteLength Number of bytes to write. Must satisfy `0 < byteLength <= 6`.
+ * @return `offset` plus the number of bytes written.
+ */
+ writeUIntLE(value: number, offset: number, byteLength: number): number;
+ /**
+ * @alias Buffer.writeUIntLE
+ * @since v14.9.0, v12.19.0
+ */
+ writeUintLE(value: number, offset: number, byteLength: number): number;
+ /**
+ * Writes `byteLength` bytes of `value` to `buf` at the specified `offset`as big-endian. Supports up to 48 bits of accuracy. Behavior is undefined
+ * when `value` is anything other than an unsigned integer.
+ *
+ * This function is also available under the `writeUintBE` alias.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(6);
+ *
+ * buf.writeUIntBE(0x1234567890ab, 0, 6);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ * @since v0.5.5
+ * @param value Number to be written to `buf`.
+ * @param offset Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - byteLength`.
+ * @param byteLength Number of bytes to write. Must satisfy `0 < byteLength <= 6`.
+ * @return `offset` plus the number of bytes written.
+ */
+ writeUIntBE(value: number, offset: number, byteLength: number): number;
+ /**
+ * @alias Buffer.writeUIntBE
+ * @since v14.9.0, v12.19.0
+ */
+ writeUintBE(value: number, offset: number, byteLength: number): number;
+ /**
+ * Writes `byteLength` bytes of `value` to `buf` at the specified `offset`as little-endian. Supports up to 48 bits of accuracy. Behavior is undefined
+ * when `value` is anything other than a signed integer.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(6);
+ *
+ * buf.writeIntLE(0x1234567890ab, 0, 6);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ * @since v0.11.15
+ * @param value Number to be written to `buf`.
+ * @param offset Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - byteLength`.
+ * @param byteLength Number of bytes to write. Must satisfy `0 < byteLength <= 6`.
+ * @return `offset` plus the number of bytes written.
+ */
+ writeIntLE(value: number, offset: number, byteLength: number): number;
+ /**
+ * Writes `byteLength` bytes of `value` to `buf` at the specified `offset`as big-endian. Supports up to 48 bits of accuracy. Behavior is undefined when`value` is anything other than a
+ * signed integer.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(6);
+ *
+ * buf.writeIntBE(0x1234567890ab, 0, 6);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ * @since v0.11.15
+ * @param value Number to be written to `buf`.
+ * @param offset Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - byteLength`.
+ * @param byteLength Number of bytes to write. Must satisfy `0 < byteLength <= 6`.
+ * @return `offset` plus the number of bytes written.
+ */
+ writeIntBE(value: number, offset: number, byteLength: number): number;
+ /**
+ * Reads an unsigned, big-endian 64-bit integer from `buf` at the specified`offset`.
+ *
+ * This function is also available under the `readBigUint64BE` alias.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from([0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff]);
+ *
+ * console.log(buf.readBigUInt64BE(0));
+ * // Prints: 4294967295n
+ * ```
+ * @since v12.0.0, v10.20.0
+ * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy: `0 <= offset <= buf.length - 8`.
+ */
+ readBigUInt64BE(offset?: number): bigint;
+ /**
+ * @alias Buffer.readBigUInt64BE
+ * @since v14.10.0, v12.19.0
+ */
+ readBigUint64BE(offset?: number): bigint;
+ /**
+ * Reads an unsigned, little-endian 64-bit integer from `buf` at the specified`offset`.
+ *
+ * This function is also available under the `readBigUint64LE` alias.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from([0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff]);
+ *
+ * console.log(buf.readBigUInt64LE(0));
+ * // Prints: 18446744069414584320n
+ * ```
+ * @since v12.0.0, v10.20.0
+ * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy: `0 <= offset <= buf.length - 8`.
+ */
+ readBigUInt64LE(offset?: number): bigint;
+ /**
+ * @alias Buffer.readBigUInt64LE
+ * @since v14.10.0, v12.19.0
+ */
+ readBigUint64LE(offset?: number): bigint;
+ /**
+ * Reads a signed, big-endian 64-bit integer from `buf` at the specified `offset`.
+ *
+ * Integers read from a `Buffer` are interpreted as two's complement signed
+ * values.
+ * @since v12.0.0, v10.20.0
+ * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy: `0 <= offset <= buf.length - 8`.
+ */
+ readBigInt64BE(offset?: number): bigint;
+ /**
+ * Reads a signed, little-endian 64-bit integer from `buf` at the specified`offset`.
+ *
+ * Integers read from a `Buffer` are interpreted as two's complement signed
+ * values.
+ * @since v12.0.0, v10.20.0
+ * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy: `0 <= offset <= buf.length - 8`.
+ */
+ readBigInt64LE(offset?: number): bigint;
+ /**
+ * Reads `byteLength` number of bytes from `buf` at the specified `offset`and interprets the result as an unsigned, little-endian integer supporting
+ * up to 48 bits of accuracy.
+ *
+ * This function is also available under the `readUintLE` alias.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]);
+ *
+ * console.log(buf.readUIntLE(0, 6).toString(16));
+ * // Prints: ab9078563412
+ * ```
+ * @since v0.11.15
+ * @param offset Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - byteLength`.
+ * @param byteLength Number of bytes to read. Must satisfy `0 < byteLength <= 6`.
+ */
+ readUIntLE(offset: number, byteLength: number): number;
+ /**
+ * @alias Buffer.readUIntLE
+ * @since v14.9.0, v12.19.0
+ */
+ readUintLE(offset: number, byteLength: number): number;
+ /**
+ * Reads `byteLength` number of bytes from `buf` at the specified `offset`and interprets the result as an unsigned big-endian integer supporting
+ * up to 48 bits of accuracy.
+ *
+ * This function is also available under the `readUintBE` alias.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]);
+ *
+ * console.log(buf.readUIntBE(0, 6).toString(16));
+ * // Prints: 1234567890ab
+ * console.log(buf.readUIntBE(1, 6).toString(16));
+ * // Throws ERR_OUT_OF_RANGE.
+ * ```
+ * @since v0.11.15
+ * @param offset Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - byteLength`.
+ * @param byteLength Number of bytes to read. Must satisfy `0 < byteLength <= 6`.
+ */
+ readUIntBE(offset: number, byteLength: number): number;
+ /**
+ * @alias Buffer.readUIntBE
+ * @since v14.9.0, v12.19.0
+ */
+ readUintBE(offset: number, byteLength: number): number;
+ /**
+ * Reads `byteLength` number of bytes from `buf` at the specified `offset`and interprets the result as a little-endian, two's complement signed value
+ * supporting up to 48 bits of accuracy.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]);
+ *
+ * console.log(buf.readIntLE(0, 6).toString(16));
+ * // Prints: -546f87a9cbee
+ * ```
+ * @since v0.11.15
+ * @param offset Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - byteLength`.
+ * @param byteLength Number of bytes to read. Must satisfy `0 < byteLength <= 6`.
+ */
+ readIntLE(offset: number, byteLength: number): number;
+ /**
+ * Reads `byteLength` number of bytes from `buf` at the specified `offset`and interprets the result as a big-endian, two's complement signed value
+ * supporting up to 48 bits of accuracy.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]);
+ *
+ * console.log(buf.readIntBE(0, 6).toString(16));
+ * // Prints: 1234567890ab
+ * console.log(buf.readIntBE(1, 6).toString(16));
+ * // Throws ERR_OUT_OF_RANGE.
+ * console.log(buf.readIntBE(1, 0).toString(16));
+ * // Throws ERR_OUT_OF_RANGE.
+ * ```
+ * @since v0.11.15
+ * @param offset Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - byteLength`.
+ * @param byteLength Number of bytes to read. Must satisfy `0 < byteLength <= 6`.
+ */
+ readIntBE(offset: number, byteLength: number): number;
+ /**
+ * Reads an unsigned 8-bit integer from `buf` at the specified `offset`.
+ *
+ * This function is also available under the `readUint8` alias.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from([1, -2]);
+ *
+ * console.log(buf.readUInt8(0));
+ * // Prints: 1
+ * console.log(buf.readUInt8(1));
+ * // Prints: 254
+ * console.log(buf.readUInt8(2));
+ * // Throws ERR_OUT_OF_RANGE.
+ * ```
+ * @since v0.5.0
+ * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 1`.
+ */
+ readUInt8(offset?: number): number;
+ /**
+ * @alias Buffer.readUInt8
+ * @since v14.9.0, v12.19.0
+ */
+ readUint8(offset?: number): number;
+ /**
+ * Reads an unsigned, little-endian 16-bit integer from `buf` at the specified`offset`.
+ *
+ * This function is also available under the `readUint16LE` alias.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from([0x12, 0x34, 0x56]);
+ *
+ * console.log(buf.readUInt16LE(0).toString(16));
+ * // Prints: 3412
+ * console.log(buf.readUInt16LE(1).toString(16));
+ * // Prints: 5634
+ * console.log(buf.readUInt16LE(2).toString(16));
+ * // Throws ERR_OUT_OF_RANGE.
+ * ```
+ * @since v0.5.5
+ * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 2`.
+ */
+ readUInt16LE(offset?: number): number;
+ /**
+ * @alias Buffer.readUInt16LE
+ * @since v14.9.0, v12.19.0
+ */
+ readUint16LE(offset?: number): number;
+ /**
+ * Reads an unsigned, big-endian 16-bit integer from `buf` at the specified`offset`.
+ *
+ * This function is also available under the `readUint16BE` alias.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from([0x12, 0x34, 0x56]);
+ *
+ * console.log(buf.readUInt16BE(0).toString(16));
+ * // Prints: 1234
+ * console.log(buf.readUInt16BE(1).toString(16));
+ * // Prints: 3456
+ * ```
+ * @since v0.5.5
+ * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 2`.
+ */
+ readUInt16BE(offset?: number): number;
+ /**
+ * @alias Buffer.readUInt16BE
+ * @since v14.9.0, v12.19.0
+ */
+ readUint16BE(offset?: number): number;
+ /**
+ * Reads an unsigned, little-endian 32-bit integer from `buf` at the specified`offset`.
+ *
+ * This function is also available under the `readUint32LE` alias.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78]);
+ *
+ * console.log(buf.readUInt32LE(0).toString(16));
+ * // Prints: 78563412
+ * console.log(buf.readUInt32LE(1).toString(16));
+ * // Throws ERR_OUT_OF_RANGE.
+ * ```
+ * @since v0.5.5
+ * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`.
+ */
+ readUInt32LE(offset?: number): number;
+ /**
+ * @alias Buffer.readUInt32LE
+ * @since v14.9.0, v12.19.0
+ */
+ readUint32LE(offset?: number): number;
+ /**
+ * Reads an unsigned, big-endian 32-bit integer from `buf` at the specified`offset`.
+ *
+ * This function is also available under the `readUint32BE` alias.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78]);
+ *
+ * console.log(buf.readUInt32BE(0).toString(16));
+ * // Prints: 12345678
+ * ```
+ * @since v0.5.5
+ * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`.
+ */
+ readUInt32BE(offset?: number): number;
+ /**
+ * @alias Buffer.readUInt32BE
+ * @since v14.9.0, v12.19.0
+ */
+ readUint32BE(offset?: number): number;
+ /**
+ * Reads a signed 8-bit integer from `buf` at the specified `offset`.
+ *
+ * Integers read from a `Buffer` are interpreted as two's complement signed values.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from([-1, 5]);
+ *
+ * console.log(buf.readInt8(0));
+ * // Prints: -1
+ * console.log(buf.readInt8(1));
+ * // Prints: 5
+ * console.log(buf.readInt8(2));
+ * // Throws ERR_OUT_OF_RANGE.
+ * ```
+ * @since v0.5.0
+ * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 1`.
+ */
+ readInt8(offset?: number): number;
+ /**
+ * Reads a signed, little-endian 16-bit integer from `buf` at the specified`offset`.
+ *
+ * Integers read from a `Buffer` are interpreted as two's complement signed values.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from([0, 5]);
+ *
+ * console.log(buf.readInt16LE(0));
+ * // Prints: 1280
+ * console.log(buf.readInt16LE(1));
+ * // Throws ERR_OUT_OF_RANGE.
+ * ```
+ * @since v0.5.5
+ * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 2`.
+ */
+ readInt16LE(offset?: number): number;
+ /**
+ * Reads a signed, big-endian 16-bit integer from `buf` at the specified `offset`.
+ *
+ * Integers read from a `Buffer` are interpreted as two's complement signed values.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from([0, 5]);
+ *
+ * console.log(buf.readInt16BE(0));
+ * // Prints: 5
+ * ```
+ * @since v0.5.5
+ * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 2`.
+ */
+ readInt16BE(offset?: number): number;
+ /**
+ * Reads a signed, little-endian 32-bit integer from `buf` at the specified`offset`.
+ *
+ * Integers read from a `Buffer` are interpreted as two's complement signed values.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from([0, 0, 0, 5]);
+ *
+ * console.log(buf.readInt32LE(0));
+ * // Prints: 83886080
+ * console.log(buf.readInt32LE(1));
+ * // Throws ERR_OUT_OF_RANGE.
+ * ```
+ * @since v0.5.5
+ * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`.
+ */
+ readInt32LE(offset?: number): number;
+ /**
+ * Reads a signed, big-endian 32-bit integer from `buf` at the specified `offset`.
+ *
+ * Integers read from a `Buffer` are interpreted as two's complement signed values.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from([0, 0, 0, 5]);
+ *
+ * console.log(buf.readInt32BE(0));
+ * // Prints: 5
+ * ```
+ * @since v0.5.5
+ * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`.
+ */
+ readInt32BE(offset?: number): number;
+ /**
+ * Reads a 32-bit, little-endian float from `buf` at the specified `offset`.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from([1, 2, 3, 4]);
+ *
+ * console.log(buf.readFloatLE(0));
+ * // Prints: 1.539989614439558e-36
+ * console.log(buf.readFloatLE(1));
+ * // Throws ERR_OUT_OF_RANGE.
+ * ```
+ * @since v0.11.15
+ * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`.
+ */
+ readFloatLE(offset?: number): number;
+ /**
+ * Reads a 32-bit, big-endian float from `buf` at the specified `offset`.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from([1, 2, 3, 4]);
+ *
+ * console.log(buf.readFloatBE(0));
+ * // Prints: 2.387939260590663e-38
+ * ```
+ * @since v0.11.15
+ * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`.
+ */
+ readFloatBE(offset?: number): number;
+ /**
+ * Reads a 64-bit, little-endian double from `buf` at the specified `offset`.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8]);
+ *
+ * console.log(buf.readDoubleLE(0));
+ * // Prints: 5.447603722011605e-270
+ * console.log(buf.readDoubleLE(1));
+ * // Throws ERR_OUT_OF_RANGE.
+ * ```
+ * @since v0.11.15
+ * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 8`.
+ */
+ readDoubleLE(offset?: number): number;
+ /**
+ * Reads a 64-bit, big-endian double from `buf` at the specified `offset`.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8]);
+ *
+ * console.log(buf.readDoubleBE(0));
+ * // Prints: 8.20788039913184e-304
+ * ```
+ * @since v0.11.15
+ * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 8`.
+ */
+ readDoubleBE(offset?: number): number;
+ reverse(): this;
+ /**
+ * Interprets `buf` as an array of unsigned 16-bit integers and swaps the
+ * byte order _in-place_. Throws `ERR_INVALID_BUFFER_SIZE` if `buf.length` is not a multiple of 2.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]);
+ *
+ * console.log(buf1);
+ * // Prints:
+ *
+ * buf1.swap16();
+ *
+ * console.log(buf1);
+ * // Prints:
+ *
+ * const buf2 = Buffer.from([0x1, 0x2, 0x3]);
+ *
+ * buf2.swap16();
+ * // Throws ERR_INVALID_BUFFER_SIZE.
+ * ```
+ *
+ * One convenient use of `buf.swap16()` is to perform a fast in-place conversion
+ * between UTF-16 little-endian and UTF-16 big-endian:
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from('This is little-endian UTF-16', 'utf16le');
+ * buf.swap16(); // Convert to big-endian UTF-16 text.
+ * ```
+ * @since v5.10.0
+ * @return A reference to `buf`.
+ */
+ swap16(): Buffer;
+ /**
+ * Interprets `buf` as an array of unsigned 32-bit integers and swaps the
+ * byte order _in-place_. Throws `ERR_INVALID_BUFFER_SIZE` if `buf.length` is not a multiple of 4.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]);
+ *
+ * console.log(buf1);
+ * // Prints:
+ *
+ * buf1.swap32();
+ *
+ * console.log(buf1);
+ * // Prints:
+ *
+ * const buf2 = Buffer.from([0x1, 0x2, 0x3]);
+ *
+ * buf2.swap32();
+ * // Throws ERR_INVALID_BUFFER_SIZE.
+ * ```
+ * @since v5.10.0
+ * @return A reference to `buf`.
+ */
+ swap32(): Buffer;
+ /**
+ * Interprets `buf` as an array of 64-bit numbers and swaps byte order _in-place_.
+ * Throws `ERR_INVALID_BUFFER_SIZE` if `buf.length` is not a multiple of 8.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]);
+ *
+ * console.log(buf1);
+ * // Prints:
+ *
+ * buf1.swap64();
+ *
+ * console.log(buf1);
+ * // Prints:
+ *
+ * const buf2 = Buffer.from([0x1, 0x2, 0x3]);
+ *
+ * buf2.swap64();
+ * // Throws ERR_INVALID_BUFFER_SIZE.
+ * ```
+ * @since v6.3.0
+ * @return A reference to `buf`.
+ */
+ swap64(): Buffer;
+ /**
+ * Writes `value` to `buf` at the specified `offset`. `value` must be a
+ * valid unsigned 8-bit integer. Behavior is undefined when `value` is anything
+ * other than an unsigned 8-bit integer.
+ *
+ * This function is also available under the `writeUint8` alias.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(4);
+ *
+ * buf.writeUInt8(0x3, 0);
+ * buf.writeUInt8(0x4, 1);
+ * buf.writeUInt8(0x23, 2);
+ * buf.writeUInt8(0x42, 3);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ * @since v0.5.0
+ * @param value Number to be written to `buf`.
+ * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 1`.
+ * @return `offset` plus the number of bytes written.
+ */
+ writeUInt8(value: number, offset?: number): number;
+ /**
+ * @alias Buffer.writeUInt8
+ * @since v14.9.0, v12.19.0
+ */
+ writeUint8(value: number, offset?: number): number;
+ /**
+ * Writes `value` to `buf` at the specified `offset` as little-endian. The `value`must be a valid unsigned 16-bit integer. Behavior is undefined when `value` is
+ * anything other than an unsigned 16-bit integer.
+ *
+ * This function is also available under the `writeUint16LE` alias.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(4);
+ *
+ * buf.writeUInt16LE(0xdead, 0);
+ * buf.writeUInt16LE(0xbeef, 2);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ * @since v0.5.5
+ * @param value Number to be written to `buf`.
+ * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 2`.
+ * @return `offset` plus the number of bytes written.
+ */
+ writeUInt16LE(value: number, offset?: number): number;
+ /**
+ * @alias Buffer.writeUInt16LE
+ * @since v14.9.0, v12.19.0
+ */
+ writeUint16LE(value: number, offset?: number): number;
+ /**
+ * Writes `value` to `buf` at the specified `offset` as big-endian. The `value`must be a valid unsigned 16-bit integer. Behavior is undefined when `value`is anything other than an
+ * unsigned 16-bit integer.
+ *
+ * This function is also available under the `writeUint16BE` alias.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(4);
+ *
+ * buf.writeUInt16BE(0xdead, 0);
+ * buf.writeUInt16BE(0xbeef, 2);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ * @since v0.5.5
+ * @param value Number to be written to `buf`.
+ * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 2`.
+ * @return `offset` plus the number of bytes written.
+ */
+ writeUInt16BE(value: number, offset?: number): number;
+ /**
+ * @alias Buffer.writeUInt16BE
+ * @since v14.9.0, v12.19.0
+ */
+ writeUint16BE(value: number, offset?: number): number;
+ /**
+ * Writes `value` to `buf` at the specified `offset` as little-endian. The `value`must be a valid unsigned 32-bit integer. Behavior is undefined when `value` is
+ * anything other than an unsigned 32-bit integer.
+ *
+ * This function is also available under the `writeUint32LE` alias.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(4);
+ *
+ * buf.writeUInt32LE(0xfeedface, 0);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ * @since v0.5.5
+ * @param value Number to be written to `buf`.
+ * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`.
+ * @return `offset` plus the number of bytes written.
+ */
+ writeUInt32LE(value: number, offset?: number): number;
+ /**
+ * @alias Buffer.writeUInt32LE
+ * @since v14.9.0, v12.19.0
+ */
+ writeUint32LE(value: number, offset?: number): number;
+ /**
+ * Writes `value` to `buf` at the specified `offset` as big-endian. The `value`must be a valid unsigned 32-bit integer. Behavior is undefined when `value`is anything other than an
+ * unsigned 32-bit integer.
+ *
+ * This function is also available under the `writeUint32BE` alias.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(4);
+ *
+ * buf.writeUInt32BE(0xfeedface, 0);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ * @since v0.5.5
+ * @param value Number to be written to `buf`.
+ * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`.
+ * @return `offset` plus the number of bytes written.
+ */
+ writeUInt32BE(value: number, offset?: number): number;
+ /**
+ * @alias Buffer.writeUInt32BE
+ * @since v14.9.0, v12.19.0
+ */
+ writeUint32BE(value: number, offset?: number): number;
+ /**
+ * Writes `value` to `buf` at the specified `offset`. `value` must be a valid
+ * signed 8-bit integer. Behavior is undefined when `value` is anything other than
+ * a signed 8-bit integer.
+ *
+ * `value` is interpreted and written as a two's complement signed integer.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(2);
+ *
+ * buf.writeInt8(2, 0);
+ * buf.writeInt8(-2, 1);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ * @since v0.5.0
+ * @param value Number to be written to `buf`.
+ * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 1`.
+ * @return `offset` plus the number of bytes written.
+ */
+ writeInt8(value: number, offset?: number): number;
+ /**
+ * Writes `value` to `buf` at the specified `offset` as little-endian. The `value`must be a valid signed 16-bit integer. Behavior is undefined when `value` is
+ * anything other than a signed 16-bit integer.
+ *
+ * The `value` is interpreted and written as a two's complement signed integer.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(2);
+ *
+ * buf.writeInt16LE(0x0304, 0);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ * @since v0.5.5
+ * @param value Number to be written to `buf`.
+ * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 2`.
+ * @return `offset` plus the number of bytes written.
+ */
+ writeInt16LE(value: number, offset?: number): number;
+ /**
+ * Writes `value` to `buf` at the specified `offset` as big-endian. The `value`must be a valid signed 16-bit integer. Behavior is undefined when `value` is
+ * anything other than a signed 16-bit integer.
+ *
+ * The `value` is interpreted and written as a two's complement signed integer.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(2);
+ *
+ * buf.writeInt16BE(0x0102, 0);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ * @since v0.5.5
+ * @param value Number to be written to `buf`.
+ * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 2`.
+ * @return `offset` plus the number of bytes written.
+ */
+ writeInt16BE(value: number, offset?: number): number;
+ /**
+ * Writes `value` to `buf` at the specified `offset` as little-endian. The `value`must be a valid signed 32-bit integer. Behavior is undefined when `value` is
+ * anything other than a signed 32-bit integer.
+ *
+ * The `value` is interpreted and written as a two's complement signed integer.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(4);
+ *
+ * buf.writeInt32LE(0x05060708, 0);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ * @since v0.5.5
+ * @param value Number to be written to `buf`.
+ * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`.
+ * @return `offset` plus the number of bytes written.
+ */
+ writeInt32LE(value: number, offset?: number): number;
+ /**
+ * Writes `value` to `buf` at the specified `offset` as big-endian. The `value`must be a valid signed 32-bit integer. Behavior is undefined when `value` is
+ * anything other than a signed 32-bit integer.
+ *
+ * The `value` is interpreted and written as a two's complement signed integer.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(4);
+ *
+ * buf.writeInt32BE(0x01020304, 0);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ * @since v0.5.5
+ * @param value Number to be written to `buf`.
+ * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`.
+ * @return `offset` plus the number of bytes written.
+ */
+ writeInt32BE(value: number, offset?: number): number;
+ /**
+ * Writes `value` to `buf` at the specified `offset` as little-endian. Behavior is
+ * undefined when `value` is anything other than a JavaScript number.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(4);
+ *
+ * buf.writeFloatLE(0xcafebabe, 0);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ * @since v0.11.15
+ * @param value Number to be written to `buf`.
+ * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`.
+ * @return `offset` plus the number of bytes written.
+ */
+ writeFloatLE(value: number, offset?: number): number;
+ /**
+ * Writes `value` to `buf` at the specified `offset` as big-endian. Behavior is
+ * undefined when `value` is anything other than a JavaScript number.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(4);
+ *
+ * buf.writeFloatBE(0xcafebabe, 0);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ * @since v0.11.15
+ * @param value Number to be written to `buf`.
+ * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`.
+ * @return `offset` plus the number of bytes written.
+ */
+ writeFloatBE(value: number, offset?: number): number;
+ /**
+ * Writes `value` to `buf` at the specified `offset` as little-endian. The `value`must be a JavaScript number. Behavior is undefined when `value` is anything
+ * other than a JavaScript number.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(8);
+ *
+ * buf.writeDoubleLE(123.456, 0);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ * @since v0.11.15
+ * @param value Number to be written to `buf`.
+ * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 8`.
+ * @return `offset` plus the number of bytes written.
+ */
+ writeDoubleLE(value: number, offset?: number): number;
+ /**
+ * Writes `value` to `buf` at the specified `offset` as big-endian. The `value`must be a JavaScript number. Behavior is undefined when `value` is anything
+ * other than a JavaScript number.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(8);
+ *
+ * buf.writeDoubleBE(123.456, 0);
+ *
+ * console.log(buf);
+ * // Prints:
+ * ```
+ * @since v0.11.15
+ * @param value Number to be written to `buf`.
+ * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 8`.
+ * @return `offset` plus the number of bytes written.
+ */
+ writeDoubleBE(value: number, offset?: number): number;
+ /**
+ * Fills `buf` with the specified `value`. If the `offset` and `end` are not given,
+ * the entire `buf` will be filled:
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * // Fill a `Buffer` with the ASCII character 'h'.
+ *
+ * const b = Buffer.allocUnsafe(50).fill('h');
+ *
+ * console.log(b.toString());
+ * // Prints: hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
+ * ```
+ *
+ * `value` is coerced to a `uint32` value if it is not a string, `Buffer`, or
+ * integer. If the resulting integer is greater than `255` (decimal), `buf` will be
+ * filled with `value & 255`.
+ *
+ * If the final write of a `fill()` operation falls on a multi-byte character,
+ * then only the bytes of that character that fit into `buf` are written:
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * // Fill a `Buffer` with character that takes up two bytes in UTF-8.
+ *
+ * console.log(Buffer.allocUnsafe(5).fill('\u0222'));
+ * // Prints:
+ * ```
+ *
+ * If `value` contains invalid characters, it is truncated; if no valid
+ * fill data remains, an exception is thrown:
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.allocUnsafe(5);
+ *
+ * console.log(buf.fill('a'));
+ * // Prints:
+ * console.log(buf.fill('aazz', 'hex'));
+ * // Prints:
+ * console.log(buf.fill('zz', 'hex'));
+ * // Throws an exception.
+ * ```
+ * @since v0.5.0
+ * @param value The value with which to fill `buf`.
+ * @param [offset=0] Number of bytes to skip before starting to fill `buf`.
+ * @param [end=buf.length] Where to stop filling `buf` (not inclusive).
+ * @param [encoding='utf8'] The encoding for `value` if `value` is a string.
+ * @return A reference to `buf`.
+ */
+ fill(value: string | Uint8Array | number, offset?: number, end?: number, encoding?: BufferEncoding): this;
+ /**
+ * If `value` is:
+ *
+ * * a string, `value` is interpreted according to the character encoding in`encoding`.
+ * * a `Buffer` or [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array), `value` will be used in its entirety.
+ * To compare a partial `Buffer`, use `buf.subarray`.
+ * * a number, `value` will be interpreted as an unsigned 8-bit integer
+ * value between `0` and `255`.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from('this is a buffer');
+ *
+ * console.log(buf.indexOf('this'));
+ * // Prints: 0
+ * console.log(buf.indexOf('is'));
+ * // Prints: 2
+ * console.log(buf.indexOf(Buffer.from('a buffer')));
+ * // Prints: 8
+ * console.log(buf.indexOf(97));
+ * // Prints: 8 (97 is the decimal ASCII value for 'a')
+ * console.log(buf.indexOf(Buffer.from('a buffer example')));
+ * // Prints: -1
+ * console.log(buf.indexOf(Buffer.from('a buffer example').slice(0, 8)));
+ * // Prints: 8
+ *
+ * const utf16Buffer = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'utf16le');
+ *
+ * console.log(utf16Buffer.indexOf('\u03a3', 0, 'utf16le'));
+ * // Prints: 4
+ * console.log(utf16Buffer.indexOf('\u03a3', -4, 'utf16le'));
+ * // Prints: 6
+ * ```
+ *
+ * If `value` is not a string, number, or `Buffer`, this method will throw a`TypeError`. If `value` is a number, it will be coerced to a valid byte value,
+ * an integer between 0 and 255.
+ *
+ * If `byteOffset` is not a number, it will be coerced to a number. If the result
+ * of coercion is `NaN` or `0`, then the entire buffer will be searched. This
+ * behavior matches [`String.prototype.indexOf()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf).
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const b = Buffer.from('abcdef');
+ *
+ * // Passing a value that's a number, but not a valid byte.
+ * // Prints: 2, equivalent to searching for 99 or 'c'.
+ * console.log(b.indexOf(99.9));
+ * console.log(b.indexOf(256 + 99));
+ *
+ * // Passing a byteOffset that coerces to NaN or 0.
+ * // Prints: 1, searching the whole buffer.
+ * console.log(b.indexOf('b', undefined));
+ * console.log(b.indexOf('b', {}));
+ * console.log(b.indexOf('b', null));
+ * console.log(b.indexOf('b', []));
+ * ```
+ *
+ * If `value` is an empty string or empty `Buffer` and `byteOffset` is less
+ * than `buf.length`, `byteOffset` will be returned. If `value` is empty and`byteOffset` is at least `buf.length`, `buf.length` will be returned.
+ * @since v1.5.0
+ * @param value What to search for.
+ * @param [byteOffset=0] Where to begin searching in `buf`. If negative, then offset is calculated from the end of `buf`.
+ * @param [encoding='utf8'] If `value` is a string, this is the encoding used to determine the binary representation of the string that will be searched for in `buf`.
+ * @return The index of the first occurrence of `value` in `buf`, or `-1` if `buf` does not contain `value`.
+ */
+ indexOf(value: string | number | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number;
+ /**
+ * Identical to `buf.indexOf()`, except the last occurrence of `value` is found
+ * rather than the first occurrence.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from('this buffer is a buffer');
+ *
+ * console.log(buf.lastIndexOf('this'));
+ * // Prints: 0
+ * console.log(buf.lastIndexOf('buffer'));
+ * // Prints: 17
+ * console.log(buf.lastIndexOf(Buffer.from('buffer')));
+ * // Prints: 17
+ * console.log(buf.lastIndexOf(97));
+ * // Prints: 15 (97 is the decimal ASCII value for 'a')
+ * console.log(buf.lastIndexOf(Buffer.from('yolo')));
+ * // Prints: -1
+ * console.log(buf.lastIndexOf('buffer', 5));
+ * // Prints: 5
+ * console.log(buf.lastIndexOf('buffer', 4));
+ * // Prints: -1
+ *
+ * const utf16Buffer = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'utf16le');
+ *
+ * console.log(utf16Buffer.lastIndexOf('\u03a3', undefined, 'utf16le'));
+ * // Prints: 6
+ * console.log(utf16Buffer.lastIndexOf('\u03a3', -5, 'utf16le'));
+ * // Prints: 4
+ * ```
+ *
+ * If `value` is not a string, number, or `Buffer`, this method will throw a`TypeError`. If `value` is a number, it will be coerced to a valid byte value,
+ * an integer between 0 and 255.
+ *
+ * If `byteOffset` is not a number, it will be coerced to a number. Any arguments
+ * that coerce to `NaN`, like `{}` or `undefined`, will search the whole buffer.
+ * This behavior matches [`String.prototype.lastIndexOf()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/lastIndexOf).
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const b = Buffer.from('abcdef');
+ *
+ * // Passing a value that's a number, but not a valid byte.
+ * // Prints: 2, equivalent to searching for 99 or 'c'.
+ * console.log(b.lastIndexOf(99.9));
+ * console.log(b.lastIndexOf(256 + 99));
+ *
+ * // Passing a byteOffset that coerces to NaN.
+ * // Prints: 1, searching the whole buffer.
+ * console.log(b.lastIndexOf('b', undefined));
+ * console.log(b.lastIndexOf('b', {}));
+ *
+ * // Passing a byteOffset that coerces to 0.
+ * // Prints: -1, equivalent to passing 0.
+ * console.log(b.lastIndexOf('b', null));
+ * console.log(b.lastIndexOf('b', []));
+ * ```
+ *
+ * If `value` is an empty string or empty `Buffer`, `byteOffset` will be returned.
+ * @since v6.0.0
+ * @param value What to search for.
+ * @param [byteOffset=buf.length - 1] Where to begin searching in `buf`. If negative, then offset is calculated from the end of `buf`.
+ * @param [encoding='utf8'] If `value` is a string, this is the encoding used to determine the binary representation of the string that will be searched for in `buf`.
+ * @return The index of the last occurrence of `value` in `buf`, or `-1` if `buf` does not contain `value`.
+ */
+ lastIndexOf(value: string | number | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number;
+ /**
+ * Creates and returns an [iterator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) of `[index, byte]` pairs from the contents
+ * of `buf`.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * // Log the entire contents of a `Buffer`.
+ *
+ * const buf = Buffer.from('buffer');
+ *
+ * for (const pair of buf.entries()) {
+ * console.log(pair);
+ * }
+ * // Prints:
+ * // [0, 98]
+ * // [1, 117]
+ * // [2, 102]
+ * // [3, 102]
+ * // [4, 101]
+ * // [5, 114]
+ * ```
+ * @since v1.1.0
+ */
+ entries(): IterableIterator<[number, number]>;
+ /**
+ * Equivalent to `buf.indexOf() !== -1`.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from('this is a buffer');
+ *
+ * console.log(buf.includes('this'));
+ * // Prints: true
+ * console.log(buf.includes('is'));
+ * // Prints: true
+ * console.log(buf.includes(Buffer.from('a buffer')));
+ * // Prints: true
+ * console.log(buf.includes(97));
+ * // Prints: true (97 is the decimal ASCII value for 'a')
+ * console.log(buf.includes(Buffer.from('a buffer example')));
+ * // Prints: false
+ * console.log(buf.includes(Buffer.from('a buffer example').slice(0, 8)));
+ * // Prints: true
+ * console.log(buf.includes('this', 4));
+ * // Prints: false
+ * ```
+ * @since v5.3.0
+ * @param value What to search for.
+ * @param [byteOffset=0] Where to begin searching in `buf`. If negative, then offset is calculated from the end of `buf`.
+ * @param [encoding='utf8'] If `value` is a string, this is its encoding.
+ * @return `true` if `value` was found in `buf`, `false` otherwise.
+ */
+ includes(value: string | number | Buffer, byteOffset?: number, encoding?: BufferEncoding): boolean;
+ /**
+ * Creates and returns an [iterator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) of `buf` keys (indices).
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from('buffer');
+ *
+ * for (const key of buf.keys()) {
+ * console.log(key);
+ * }
+ * // Prints:
+ * // 0
+ * // 1
+ * // 2
+ * // 3
+ * // 4
+ * // 5
+ * ```
+ * @since v1.1.0
+ */
+ keys(): IterableIterator;
+ /**
+ * Creates and returns an [iterator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) for `buf` values (bytes). This function is
+ * called automatically when a `Buffer` is used in a `for..of` statement.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ *
+ * const buf = Buffer.from('buffer');
+ *
+ * for (const value of buf.values()) {
+ * console.log(value);
+ * }
+ * // Prints:
+ * // 98
+ * // 117
+ * // 102
+ * // 102
+ * // 101
+ * // 114
+ *
+ * for (const value of buf) {
+ * console.log(value);
+ * }
+ * // Prints:
+ * // 98
+ * // 117
+ * // 102
+ * // 102
+ * // 101
+ * // 114
+ * ```
+ * @since v1.1.0
+ */
+ values(): IterableIterator;
+ }
+ var Buffer: BufferConstructor;
+ /**
+ * Decodes a string of Base64-encoded data into bytes, and encodes those bytes
+ * into a string using Latin-1 (ISO-8859-1).
+ *
+ * The `data` may be any JavaScript-value that can be coerced into a string.
+ *
+ * **This function is only provided for compatibility with legacy web platform APIs**
+ * **and should never be used in new code, because they use strings to represent**
+ * **binary data and predate the introduction of typed arrays in JavaScript.**
+ * **For code running using Node.js APIs, converting between base64-encoded strings**
+ * **and binary data should be performed using `Buffer.from(str, 'base64')` and`buf.toString('base64')`.**
+ * @since v15.13.0, v14.17.0
+ * @deprecated Use `Buffer.from(data, 'base64')` instead.
+ * @param data The Base64-encoded input string.
+ */
+ function atob(data: string): string;
+ /**
+ * Decodes a string into bytes using Latin-1 (ISO-8859), and encodes those bytes
+ * into a string using Base64.
+ *
+ * The `data` may be any JavaScript-value that can be coerced into a string.
+ *
+ * **This function is only provided for compatibility with legacy web platform APIs**
+ * **and should never be used in new code, because they use strings to represent**
+ * **binary data and predate the introduction of typed arrays in JavaScript.**
+ * **For code running using Node.js APIs, converting between base64-encoded strings**
+ * **and binary data should be performed using `Buffer.from(str, 'base64')` and`buf.toString('base64')`.**
+ * @since v15.13.0, v14.17.0
+ * @deprecated Use `buf.toString('base64')` instead.
+ * @param data An ASCII (Latin1) string.
+ */
+ function btoa(data: string): string;
+ }
+}
+declare module 'node:buffer' {
+ export * from 'buffer';
+}
diff --git a/node_modules/@types/node/child_process.d.ts b/node_modules/@types/node/child_process.d.ts
new file mode 100755
index 0000000..79c7290
--- /dev/null
+++ b/node_modules/@types/node/child_process.d.ts
@@ -0,0 +1,1369 @@
+/**
+ * The `child_process` module provides the ability to spawn subprocesses in
+ * a manner that is similar, but not identical, to [`popen(3)`](http://man7.org/linux/man-pages/man3/popen.3.html). This capability
+ * is primarily provided by the {@link spawn} function:
+ *
+ * ```js
+ * const { spawn } = require('child_process');
+ * const ls = spawn('ls', ['-lh', '/usr']);
+ *
+ * ls.stdout.on('data', (data) => {
+ * console.log(`stdout: ${data}`);
+ * });
+ *
+ * ls.stderr.on('data', (data) => {
+ * console.error(`stderr: ${data}`);
+ * });
+ *
+ * ls.on('close', (code) => {
+ * console.log(`child process exited with code ${code}`);
+ * });
+ * ```
+ *
+ * By default, pipes for `stdin`, `stdout`, and `stderr` are established between
+ * the parent Node.js process and the spawned subprocess. These pipes have
+ * limited (and platform-specific) capacity. If the subprocess writes to
+ * stdout in excess of that limit without the output being captured, the
+ * subprocess blocks waiting for the pipe buffer to accept more data. This is
+ * identical to the behavior of pipes in the shell. Use the `{ stdio: 'ignore' }`option if the output will not be consumed.
+ *
+ * The command lookup is performed using the `options.env.PATH` environment
+ * variable if `env` is in the `options` object. Otherwise, `process.env.PATH` is
+ * used. If `options.env` is set without `PATH`, lookup on Unix is performed
+ * on a default search path search of `/usr/bin:/bin` (see your operating system's
+ * manual for execvpe/execvp), on Windows the current processes environment
+ * variable `PATH` is used.
+ *
+ * On Windows, environment variables are case-insensitive. Node.js
+ * lexicographically sorts the `env` keys and uses the first one that
+ * case-insensitively matches. Only first (in lexicographic order) entry will be
+ * passed to the subprocess. This might lead to issues on Windows when passing
+ * objects to the `env` option that have multiple variants of the same key, such as`PATH` and `Path`.
+ *
+ * The {@link spawn} method spawns the child process asynchronously,
+ * without blocking the Node.js event loop. The {@link spawnSync} function provides equivalent functionality in a synchronous manner that blocks
+ * the event loop until the spawned process either exits or is terminated.
+ *
+ * For convenience, the `child_process` module provides a handful of synchronous
+ * and asynchronous alternatives to {@link spawn} and {@link spawnSync}. Each of these alternatives are implemented on
+ * top of {@link spawn} or {@link spawnSync}.
+ *
+ * * {@link exec}: spawns a shell and runs a command within that
+ * shell, passing the `stdout` and `stderr` to a callback function when
+ * complete.
+ * * {@link execFile}: similar to {@link exec} except
+ * that it spawns the command directly without first spawning a shell by
+ * default.
+ * * {@link fork}: spawns a new Node.js process and invokes a
+ * specified module with an IPC communication channel established that allows
+ * sending messages between parent and child.
+ * * {@link execSync}: a synchronous version of {@link exec} that will block the Node.js event loop.
+ * * {@link execFileSync}: a synchronous version of {@link execFile} that will block the Node.js event loop.
+ *
+ * For certain use cases, such as automating shell scripts, the `synchronous counterparts` may be more convenient. In many cases, however,
+ * the synchronous methods can have significant impact on performance due to
+ * stalling the event loop while spawned processes complete.
+ * @see [source](https://github.com/nodejs/node/blob/v18.0.0/lib/child_process.js)
+ */
+declare module 'child_process' {
+ import { ObjectEncodingOptions } from 'node:fs';
+ import { EventEmitter, Abortable } from 'node:events';
+ import * as net from 'node:net';
+ import { Writable, Readable, Stream, Pipe } from 'node:stream';
+ import { URL } from 'node:url';
+ type Serializable = string | object | number | boolean | bigint;
+ type SendHandle = net.Socket | net.Server;
+ /**
+ * Instances of the `ChildProcess` represent spawned child processes.
+ *
+ * Instances of `ChildProcess` are not intended to be created directly. Rather,
+ * use the {@link spawn}, {@link exec},{@link execFile}, or {@link fork} methods to create
+ * instances of `ChildProcess`.
+ * @since v2.2.0
+ */
+ class ChildProcess extends EventEmitter {
+ /**
+ * A `Writable Stream` that represents the child process's `stdin`.
+ *
+ * If a child process waits to read all of its input, the child will not continue
+ * until this stream has been closed via `end()`.
+ *
+ * If the child was spawned with `stdio[0]` set to anything other than `'pipe'`,
+ * then this will be `null`.
+ *
+ * `subprocess.stdin` is an alias for `subprocess.stdio[0]`. Both properties will
+ * refer to the same value.
+ *
+ * The `subprocess.stdin` property can be `undefined` if the child process could
+ * not be successfully spawned.
+ * @since v0.1.90
+ */
+ stdin: Writable | null;
+ /**
+ * A `Readable Stream` that represents the child process's `stdout`.
+ *
+ * If the child was spawned with `stdio[1]` set to anything other than `'pipe'`,
+ * then this will be `null`.
+ *
+ * `subprocess.stdout` is an alias for `subprocess.stdio[1]`. Both properties will
+ * refer to the same value.
+ *
+ * ```js
+ * const { spawn } = require('child_process');
+ *
+ * const subprocess = spawn('ls');
+ *
+ * subprocess.stdout.on('data', (data) => {
+ * console.log(`Received chunk ${data}`);
+ * });
+ * ```
+ *
+ * The `subprocess.stdout` property can be `null` if the child process could
+ * not be successfully spawned.
+ * @since v0.1.90
+ */
+ stdout: Readable | null;
+ /**
+ * A `Readable Stream` that represents the child process's `stderr`.
+ *
+ * If the child was spawned with `stdio[2]` set to anything other than `'pipe'`,
+ * then this will be `null`.
+ *
+ * `subprocess.stderr` is an alias for `subprocess.stdio[2]`. Both properties will
+ * refer to the same value.
+ *
+ * The `subprocess.stderr` property can be `null` if the child process could
+ * not be successfully spawned.
+ * @since v0.1.90
+ */
+ stderr: Readable | null;
+ /**
+ * The `subprocess.channel` property is a reference to the child's IPC channel. If
+ * no IPC channel currently exists, this property is `undefined`.
+ * @since v7.1.0
+ */
+ readonly channel?: Pipe | null | undefined;
+ /**
+ * A sparse array of pipes to the child process, corresponding with positions in
+ * the `stdio` option passed to {@link spawn} that have been set
+ * to the value `'pipe'`. `subprocess.stdio[0]`, `subprocess.stdio[1]`, and`subprocess.stdio[2]` are also available as `subprocess.stdin`,`subprocess.stdout`, and `subprocess.stderr`,
+ * respectively.
+ *
+ * In the following example, only the child's fd `1` (stdout) is configured as a
+ * pipe, so only the parent's `subprocess.stdio[1]` is a stream, all other values
+ * in the array are `null`.
+ *
+ * ```js
+ * const assert = require('assert');
+ * const fs = require('fs');
+ * const child_process = require('child_process');
+ *
+ * const subprocess = child_process.spawn('ls', {
+ * stdio: [
+ * 0, // Use parent's stdin for child.
+ * 'pipe', // Pipe child's stdout to parent.
+ * fs.openSync('err.out', 'w'), // Direct child's stderr to a file.
+ * ]
+ * });
+ *
+ * assert.strictEqual(subprocess.stdio[0], null);
+ * assert.strictEqual(subprocess.stdio[0], subprocess.stdin);
+ *
+ * assert(subprocess.stdout);
+ * assert.strictEqual(subprocess.stdio[1], subprocess.stdout);
+ *
+ * assert.strictEqual(subprocess.stdio[2], null);
+ * assert.strictEqual(subprocess.stdio[2], subprocess.stderr);
+ * ```
+ *
+ * The `subprocess.stdio` property can be `undefined` if the child process could
+ * not be successfully spawned.
+ * @since v0.7.10
+ */
+ readonly stdio: [
+ Writable | null,
+ // stdin
+ Readable | null,
+ // stdout
+ Readable | null,
+ // stderr
+ Readable | Writable | null | undefined,
+ // extra
+ Readable | Writable | null | undefined // extra
+ ];
+ /**
+ * The `subprocess.killed` property indicates whether the child process
+ * successfully received a signal from `subprocess.kill()`. The `killed` property
+ * does not indicate that the child process has been terminated.
+ * @since v0.5.10
+ */
+ readonly killed: boolean;
+ /**
+ * Returns the process identifier (PID) of the child process. If the child process
+ * fails to spawn due to errors, then the value is `undefined` and `error` is
+ * emitted.
+ *
+ * ```js
+ * const { spawn } = require('child_process');
+ * const grep = spawn('grep', ['ssh']);
+ *
+ * console.log(`Spawned child pid: ${grep.pid}`);
+ * grep.stdin.end();
+ * ```
+ * @since v0.1.90
+ */
+ readonly pid?: number | undefined;
+ /**
+ * The `subprocess.connected` property indicates whether it is still possible to
+ * send and receive messages from a child process. When `subprocess.connected` is`false`, it is no longer possible to send or receive messages.
+ * @since v0.7.2
+ */
+ readonly connected: boolean;
+ /**
+ * The `subprocess.exitCode` property indicates the exit code of the child process.
+ * If the child process is still running, the field will be `null`.
+ */
+ readonly exitCode: number | null;
+ /**
+ * The `subprocess.signalCode` property indicates the signal received by
+ * the child process if any, else `null`.
+ */
+ readonly signalCode: NodeJS.Signals | null;
+ /**
+ * The `subprocess.spawnargs` property represents the full list of command-line
+ * arguments the child process was launched with.
+ */
+ readonly spawnargs: string[];
+ /**
+ * The `subprocess.spawnfile` property indicates the executable file name of
+ * the child process that is launched.
+ *
+ * For {@link fork}, its value will be equal to `process.execPath`.
+ * For {@link spawn}, its value will be the name of
+ * the executable file.
+ * For {@link exec}, its value will be the name of the shell
+ * in which the child process is launched.
+ */
+ readonly spawnfile: string;
+ /**
+ * The `subprocess.kill()` method sends a signal to the child process. If no
+ * argument is given, the process will be sent the `'SIGTERM'` signal. See [`signal(7)`](http://man7.org/linux/man-pages/man7/signal.7.html) for a list of available signals. This function
+ * returns `true` if [`kill(2)`](http://man7.org/linux/man-pages/man2/kill.2.html) succeeds, and `false` otherwise.
+ *
+ * ```js
+ * const { spawn } = require('child_process');
+ * const grep = spawn('grep', ['ssh']);
+ *
+ * grep.on('close', (code, signal) => {
+ * console.log(
+ * `child process terminated due to receipt of signal ${signal}`);
+ * });
+ *
+ * // Send SIGHUP to process.
+ * grep.kill('SIGHUP');
+ * ```
+ *
+ * The `ChildProcess` object may emit an `'error'` event if the signal
+ * cannot be delivered. Sending a signal to a child process that has already exited
+ * is not an error but may have unforeseen consequences. Specifically, if the
+ * process identifier (PID) has been reassigned to another process, the signal will
+ * be delivered to that process instead which can have unexpected results.
+ *
+ * While the function is called `kill`, the signal delivered to the child process
+ * may not actually terminate the process.
+ *
+ * See [`kill(2)`](http://man7.org/linux/man-pages/man2/kill.2.html) for reference.
+ *
+ * On Windows, where POSIX signals do not exist, the `signal` argument will be
+ * ignored, and the process will be killed forcefully and abruptly (similar to`'SIGKILL'`).
+ * See `Signal Events` for more details.
+ *
+ * On Linux, child processes of child processes will not be terminated
+ * when attempting to kill their parent. This is likely to happen when running a
+ * new process in a shell or with the use of the `shell` option of `ChildProcess`:
+ *
+ * ```js
+ * 'use strict';
+ * const { spawn } = require('child_process');
+ *
+ * const subprocess = spawn(
+ * 'sh',
+ * [
+ * '-c',
+ * `node -e "setInterval(() => {
+ * console.log(process.pid, 'is alive')
+ * }, 500);"`,
+ * ], {
+ * stdio: ['inherit', 'inherit', 'inherit']
+ * }
+ * );
+ *
+ * setTimeout(() => {
+ * subprocess.kill(); // Does not terminate the Node.js process in the shell.
+ * }, 2000);
+ * ```
+ * @since v0.1.90
+ */
+ kill(signal?: NodeJS.Signals | number): boolean;
+ /**
+ * When an IPC channel has been established between the parent and child (
+ * i.e. when using {@link fork}), the `subprocess.send()` method can
+ * be used to send messages to the child process. When the child process is a
+ * Node.js instance, these messages can be received via the `'message'` event.
+ *
+ * The message goes through serialization and parsing. The resulting
+ * message might not be the same as what is originally sent.
+ *
+ * For example, in the parent script:
+ *
+ * ```js
+ * const cp = require('child_process');
+ * const n = cp.fork(`${__dirname}/sub.js`);
+ *
+ * n.on('message', (m) => {
+ * console.log('PARENT got message:', m);
+ * });
+ *
+ * // Causes the child to print: CHILD got message: { hello: 'world' }
+ * n.send({ hello: 'world' });
+ * ```
+ *
+ * And then the child script, `'sub.js'` might look like this:
+ *
+ * ```js
+ * process.on('message', (m) => {
+ * console.log('CHILD got message:', m);
+ * });
+ *
+ * // Causes the parent to print: PARENT got message: { foo: 'bar', baz: null }
+ * process.send({ foo: 'bar', baz: NaN });
+ * ```
+ *
+ * Child Node.js processes will have a `process.send()` method of their own
+ * that allows the child to send messages back to the parent.
+ *
+ * There is a special case when sending a `{cmd: 'NODE_foo'}` message. Messages
+ * containing a `NODE_` prefix in the `cmd` property are reserved for use within
+ * Node.js core and will not be emitted in the child's `'message'` event. Rather, such messages are emitted using the`'internalMessage'` event and are consumed internally by Node.js.
+ * Applications should avoid using such messages or listening for`'internalMessage'` events as it is subject to change without notice.
+ *
+ * The optional `sendHandle` argument that may be passed to `subprocess.send()` is
+ * for passing a TCP server or socket object to the child process. The child will
+ * receive the object as the second argument passed to the callback function
+ * registered on the `'message'` event. Any data that is received
+ * and buffered in the socket will not be sent to the child.
+ *
+ * The optional `callback` is a function that is invoked after the message is
+ * sent but before the child may have received it. The function is called with a
+ * single argument: `null` on success, or an `Error` object on failure.
+ *
+ * If no `callback` function is provided and the message cannot be sent, an`'error'` event will be emitted by the `ChildProcess` object. This can
+ * happen, for instance, when the child process has already exited.
+ *
+ * `subprocess.send()` will return `false` if the channel has closed or when the
+ * backlog of unsent messages exceeds a threshold that makes it unwise to send
+ * more. Otherwise, the method returns `true`. The `callback` function can be
+ * used to implement flow control.
+ *
+ * #### Example: sending a server object
+ *
+ * The `sendHandle` argument can be used, for instance, to pass the handle of
+ * a TCP server object to the child process as illustrated in the example below:
+ *
+ * ```js
+ * const subprocess = require('child_process').fork('subprocess.js');
+ *
+ * // Open up the server object and send the handle.
+ * const server = require('net').createServer();
+ * server.on('connection', (socket) => {
+ * socket.end('handled by parent');
+ * });
+ * server.listen(1337, () => {
+ * subprocess.send('server', server);
+ * });
+ * ```
+ *
+ * The child would then receive the server object as:
+ *
+ * ```js
+ * process.on('message', (m, server) => {
+ * if (m === 'server') {
+ * server.on('connection', (socket) => {
+ * socket.end('handled by child');
+ * });
+ * }
+ * });
+ * ```
+ *
+ * Once the server is now shared between the parent and child, some connections
+ * can be handled by the parent and some by the child.
+ *
+ * While the example above uses a server created using the `net` module, `dgram`module servers use exactly the same workflow with the exceptions of listening on
+ * a `'message'` event instead of `'connection'` and using `server.bind()` instead
+ * of `server.listen()`. This is, however, currently only supported on Unix
+ * platforms.
+ *
+ * #### Example: sending a socket object
+ *
+ * Similarly, the `sendHandler` argument can be used to pass the handle of a
+ * socket to the child process. The example below spawns two children that each
+ * handle connections with "normal" or "special" priority:
+ *
+ * ```js
+ * const { fork } = require('child_process');
+ * const normal = fork('subprocess.js', ['normal']);
+ * const special = fork('subprocess.js', ['special']);
+ *
+ * // Open up the server and send sockets to child. Use pauseOnConnect to prevent
+ * // the sockets from being read before they are sent to the child process.
+ * const server = require('net').createServer({ pauseOnConnect: true });
+ * server.on('connection', (socket) => {
+ *
+ * // If this is special priority...
+ * if (socket.remoteAddress === '74.125.127.100') {
+ * special.send('socket', socket);
+ * return;
+ * }
+ * // This is normal priority.
+ * normal.send('socket', socket);
+ * });
+ * server.listen(1337);
+ * ```
+ *
+ * The `subprocess.js` would receive the socket handle as the second argument
+ * passed to the event callback function:
+ *
+ * ```js
+ * process.on('message', (m, socket) => {
+ * if (m === 'socket') {
+ * if (socket) {
+ * // Check that the client socket exists.
+ * // It is possible for the socket to be closed between the time it is
+ * // sent and the time it is received in the child process.
+ * socket.end(`Request handled with ${process.argv[2]} priority`);
+ * }
+ * }
+ * });
+ * ```
+ *
+ * Do not use `.maxConnections` on a socket that has been passed to a subprocess.
+ * The parent cannot track when the socket is destroyed.
+ *
+ * Any `'message'` handlers in the subprocess should verify that `socket` exists,
+ * as the connection may have been closed during the time it takes to send the
+ * connection to the child.
+ * @since v0.5.9
+ * @param options The `options` argument, if present, is an object used to parameterize the sending of certain types of handles. `options` supports the following properties:
+ */
+ send(message: Serializable, callback?: (error: Error | null) => void): boolean;
+ send(message: Serializable, sendHandle?: SendHandle, callback?: (error: Error | null) => void): boolean;
+ send(message: Serializable, sendHandle?: SendHandle, options?: MessageOptions, callback?: (error: Error | null) => void): boolean;
+ /**
+ * Closes the IPC channel between parent and child, allowing the child to exit
+ * gracefully once there are no other connections keeping it alive. After calling
+ * this method the `subprocess.connected` and `process.connected` properties in
+ * both the parent and child (respectively) will be set to `false`, and it will be
+ * no longer possible to pass messages between the processes.
+ *
+ * The `'disconnect'` event will be emitted when there are no messages in the
+ * process of being received. This will most often be triggered immediately after
+ * calling `subprocess.disconnect()`.
+ *
+ * When the child process is a Node.js instance (e.g. spawned using {@link fork}), the `process.disconnect()` method can be invoked
+ * within the child process to close the IPC channel as well.
+ * @since v0.7.2
+ */
+ disconnect(): void;
+ /**
+ * By default, the parent will wait for the detached child to exit. To prevent the
+ * parent from waiting for a given `subprocess` to exit, use the`subprocess.unref()` method. Doing so will cause the parent's event loop to not
+ * include the child in its reference count, allowing the parent to exit
+ * independently of the child, unless there is an established IPC channel between
+ * the child and the parent.
+ *
+ * ```js
+ * const { spawn } = require('child_process');
+ *
+ * const subprocess = spawn(process.argv[0], ['child_program.js'], {
+ * detached: true,
+ * stdio: 'ignore'
+ * });
+ *
+ * subprocess.unref();
+ * ```
+ * @since v0.7.10
+ */
+ unref(): void;
+ /**
+ * Calling `subprocess.ref()` after making a call to `subprocess.unref()` will
+ * restore the removed reference count for the child process, forcing the parent
+ * to wait for the child to exit before exiting itself.
+ *
+ * ```js
+ * const { spawn } = require('child_process');
+ *
+ * const subprocess = spawn(process.argv[0], ['child_program.js'], {
+ * detached: true,
+ * stdio: 'ignore'
+ * });
+ *
+ * subprocess.unref();
+ * subprocess.ref();
+ * ```
+ * @since v0.7.10
+ */
+ ref(): void;
+ /**
+ * events.EventEmitter
+ * 1. close
+ * 2. disconnect
+ * 3. error
+ * 4. exit
+ * 5. message
+ * 6. spawn
+ */
+ addListener(event: string, listener: (...args: any[]) => void): this;
+ addListener(event: 'close', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
+ addListener(event: 'disconnect', listener: () => void): this;
+ addListener(event: 'error', listener: (err: Error) => void): this;
+ addListener(event: 'exit', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
+ addListener(event: 'message', listener: (message: Serializable, sendHandle: SendHandle) => void): this;
+ addListener(event: 'spawn', listener: () => void): this;
+ emit(event: string | symbol, ...args: any[]): boolean;
+ emit(event: 'close', code: number | null, signal: NodeJS.Signals | null): boolean;
+ emit(event: 'disconnect'): boolean;
+ emit(event: 'error', err: Error): boolean;
+ emit(event: 'exit', code: number | null, signal: NodeJS.Signals | null): boolean;
+ emit(event: 'message', message: Serializable, sendHandle: SendHandle): boolean;
+ emit(event: 'spawn', listener: () => void): boolean;
+ on(event: string, listener: (...args: any[]) => void): this;
+ on(event: 'close', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
+ on(event: 'disconnect', listener: () => void): this;
+ on(event: 'error', listener: (err: Error) => void): this;
+ on(event: 'exit', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
+ on(event: 'message', listener: (message: Serializable, sendHandle: SendHandle) => void): this;
+ on(event: 'spawn', listener: () => void): this;
+ once(event: string, listener: (...args: any[]) => void): this;
+ once(event: 'close', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
+ once(event: 'disconnect', listener: () => void): this;
+ once(event: 'error', listener: (err: Error) => void): this;
+ once(event: 'exit', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
+ once(event: 'message', listener: (message: Serializable, sendHandle: SendHandle) => void): this;
+ once(event: 'spawn', listener: () => void): this;
+ prependListener(event: string, listener: (...args: any[]) => void): this;
+ prependListener(event: 'close', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
+ prependListener(event: 'disconnect', listener: () => void): this;
+ prependListener(event: 'error', listener: (err: Error) => void): this;
+ prependListener(event: 'exit', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
+ prependListener(event: 'message', listener: (message: Serializable, sendHandle: SendHandle) => void): this;
+ prependListener(event: 'spawn', listener: () => void): this;
+ prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+ prependOnceListener(event: 'close', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
+ prependOnceListener(event: 'disconnect', listener: () => void): this;
+ prependOnceListener(event: 'error', listener: (err: Error) => void): this;
+ prependOnceListener(event: 'exit', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
+ prependOnceListener(event: 'message', listener: (message: Serializable, sendHandle: SendHandle) => void): this;
+ prependOnceListener(event: 'spawn', listener: () => void): this;
+ }
+ // return this object when stdio option is undefined or not specified
+ interface ChildProcessWithoutNullStreams extends ChildProcess {
+ stdin: Writable;
+ stdout: Readable;
+ stderr: Readable;
+ readonly stdio: [
+ Writable,
+ Readable,
+ Readable,
+ // stderr
+ Readable | Writable | null | undefined,
+ // extra, no modification
+ Readable | Writable | null | undefined // extra, no modification
+ ];
+ }
+ // return this object when stdio option is a tuple of 3
+ interface ChildProcessByStdio extends ChildProcess {
+ stdin: I;
+ stdout: O;
+ stderr: E;
+ readonly stdio: [
+ I,
+ O,
+ E,
+ Readable | Writable | null | undefined,
+ // extra, no modification
+ Readable | Writable | null | undefined // extra, no modification
+ ];
+ }
+ interface MessageOptions {
+ keepOpen?: boolean | undefined;
+ }
+ type IOType = 'overlapped' | 'pipe' | 'ignore' | 'inherit';
+ type StdioOptions = IOType | Array;
+ type SerializationType = 'json' | 'advanced';
+ interface MessagingOptions extends Abortable {
+ /**
+ * Specify the kind of serialization used for sending messages between processes.
+ * @default 'json'
+ */
+ serialization?: SerializationType | undefined;
+ /**
+ * The signal value to be used when the spawned process will be killed by the abort signal.
+ * @default 'SIGTERM'
+ */
+ killSignal?: NodeJS.Signals | number | undefined;
+ /**
+ * In milliseconds the maximum amount of time the process is allowed to run.
+ */
+ timeout?: number | undefined;
+ }
+ interface ProcessEnvOptions {
+ uid?: number | undefined;
+ gid?: number | undefined;
+ cwd?: string | URL | undefined;
+ env?: NodeJS.ProcessEnv | undefined;
+ }
+ interface CommonOptions extends ProcessEnvOptions {
+ /**
+ * @default true
+ */
+ windowsHide?: boolean | undefined;
+ /**
+ * @default 0
+ */
+ timeout?: number | undefined;
+ }
+ interface CommonSpawnOptions extends CommonOptions, MessagingOptions, Abortable {
+ argv0?: string | undefined;
+ stdio?: StdioOptions | undefined;
+ shell?: boolean | string | undefined;
+ windowsVerbatimArguments?: boolean | undefined;
+ }
+ interface SpawnOptions extends CommonSpawnOptions {
+ detached?: boolean | undefined;
+ }
+ interface SpawnOptionsWithoutStdio extends SpawnOptions {
+ stdio?: StdioPipeNamed | StdioPipe[] | undefined;
+ }
+ type StdioNull = 'inherit' | 'ignore' | Stream;
+ type StdioPipeNamed = 'pipe' | 'overlapped';
+ type StdioPipe = undefined | null | StdioPipeNamed;
+ interface SpawnOptionsWithStdioTuple extends SpawnOptions {
+ stdio: [Stdin, Stdout, Stderr];
+ }
+ /**
+ * The `child_process.spawn()` method spawns a new process using the given`command`, with command-line arguments in `args`. If omitted, `args` defaults
+ * to an empty array.
+ *
+ * **If the `shell` option is enabled, do not pass unsanitized user input to this**
+ * **function. Any input containing shell metacharacters may be used to trigger**
+ * **arbitrary command execution.**
+ *
+ * A third argument may be used to specify additional options, with these defaults:
+ *
+ * ```js
+ * const defaults = {
+ * cwd: undefined,
+ * env: process.env
+ * };
+ * ```
+ *
+ * Use `cwd` to specify the working directory from which the process is spawned.
+ * If not given, the default is to inherit the current working directory. If given,
+ * but the path does not exist, the child process emits an `ENOENT` error
+ * and exits immediately. `ENOENT` is also emitted when the command
+ * does not exist.
+ *
+ * Use `env` to specify environment variables that will be visible to the new
+ * process, the default is `process.env`.
+ *
+ * `undefined` values in `env` will be ignored.
+ *
+ * Example of running `ls -lh /usr`, capturing `stdout`, `stderr`, and the
+ * exit code:
+ *
+ * ```js
+ * const { spawn } = require('child_process');
+ * const ls = spawn('ls', ['-lh', '/usr']);
+ *
+ * ls.stdout.on('data', (data) => {
+ * console.log(`stdout: ${data}`);
+ * });
+ *
+ * ls.stderr.on('data', (data) => {
+ * console.error(`stderr: ${data}`);
+ * });
+ *
+ * ls.on('close', (code) => {
+ * console.log(`child process exited with code ${code}`);
+ * });
+ * ```
+ *
+ * Example: A very elaborate way to run `ps ax | grep ssh`
+ *
+ * ```js
+ * const { spawn } = require('child_process');
+ * const ps = spawn('ps', ['ax']);
+ * const grep = spawn('grep', ['ssh']);
+ *
+ * ps.stdout.on('data', (data) => {
+ * grep.stdin.write(data);
+ * });
+ *
+ * ps.stderr.on('data', (data) => {
+ * console.error(`ps stderr: ${data}`);
+ * });
+ *
+ * ps.on('close', (code) => {
+ * if (code !== 0) {
+ * console.log(`ps process exited with code ${code}`);
+ * }
+ * grep.stdin.end();
+ * });
+ *
+ * grep.stdout.on('data', (data) => {
+ * console.log(data.toString());
+ * });
+ *
+ * grep.stderr.on('data', (data) => {
+ * console.error(`grep stderr: ${data}`);
+ * });
+ *
+ * grep.on('close', (code) => {
+ * if (code !== 0) {
+ * console.log(`grep process exited with code ${code}`);
+ * }
+ * });
+ * ```
+ *
+ * Example of checking for failed `spawn`:
+ *
+ * ```js
+ * const { spawn } = require('child_process');
+ * const subprocess = spawn('bad_command');
+ *
+ * subprocess.on('error', (err) => {
+ * console.error('Failed to start subprocess.');
+ * });
+ * ```
+ *
+ * Certain platforms (macOS, Linux) will use the value of `argv[0]` for the process
+ * title while others (Windows, SunOS) will use `command`.
+ *
+ * Node.js currently overwrites `argv[0]` with `process.execPath` on startup, so`process.argv[0]` in a Node.js child process will not match the `argv0`parameter passed to `spawn` from the parent,
+ * retrieve it with the`process.argv0` property instead.
+ *
+ * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.kill()` on the child process except
+ * the error passed to the callback will be an `AbortError`:
+ *
+ * ```js
+ * const { spawn } = require('child_process');
+ * const controller = new AbortController();
+ * const { signal } = controller;
+ * const grep = spawn('grep', ['ssh'], { signal });
+ * grep.on('error', (err) => {
+ * // This will be called with err being an AbortError if the controller aborts
+ * });
+ * controller.abort(); // Stops the child process
+ * ```
+ * @since v0.1.90
+ * @param command The command to run.
+ * @param args List of string arguments.
+ */
+ function spawn(command: string, options?: SpawnOptionsWithoutStdio): ChildProcessWithoutNullStreams;
+ function spawn(command: string, options: SpawnOptionsWithStdioTuple): ChildProcessByStdio;
+ function spawn(command: string, options: SpawnOptionsWithStdioTuple): ChildProcessByStdio;
+ function spawn(command: string, options: SpawnOptionsWithStdioTuple): ChildProcessByStdio;
+ function spawn(command: string, options: SpawnOptionsWithStdioTuple): ChildProcessByStdio;
+ function spawn(command: string, options: SpawnOptionsWithStdioTuple): ChildProcessByStdio;
+ function spawn(command: string, options: SpawnOptionsWithStdioTuple): ChildProcessByStdio;
+ function spawn(command: string, options: SpawnOptionsWithStdioTuple): ChildProcessByStdio;
+ function spawn(command: string, options: SpawnOptionsWithStdioTuple): ChildProcessByStdio;
+ function spawn(command: string, options: SpawnOptions): ChildProcess;
+ // overloads of spawn with 'args'
+ function spawn(command: string, args?: ReadonlyArray, options?: SpawnOptionsWithoutStdio): ChildProcessWithoutNullStreams;
+ function spawn(command: string, args: ReadonlyArray, options: SpawnOptionsWithStdioTuple): ChildProcessByStdio;
+ function spawn(command: string, args: ReadonlyArray, options: SpawnOptionsWithStdioTuple): ChildProcessByStdio;
+ function spawn(command: string, args: ReadonlyArray, options: SpawnOptionsWithStdioTuple): ChildProcessByStdio;
+ function spawn(command: string, args: ReadonlyArray, options: SpawnOptionsWithStdioTuple): ChildProcessByStdio;
+ function spawn(command: string, args: ReadonlyArray, options: SpawnOptionsWithStdioTuple): ChildProcessByStdio;
+ function spawn(command: string, args: ReadonlyArray, options: SpawnOptionsWithStdioTuple): ChildProcessByStdio;
+ function spawn(command: string, args: ReadonlyArray, options: SpawnOptionsWithStdioTuple): ChildProcessByStdio;
+ function spawn(command: string, args: ReadonlyArray, options: SpawnOptionsWithStdioTuple): ChildProcessByStdio;
+ function spawn(command: string, args: ReadonlyArray, options: SpawnOptions): ChildProcess;
+ interface ExecOptions extends CommonOptions {
+ shell?: string | undefined;
+ signal?: AbortSignal | undefined;
+ maxBuffer?: number | undefined;
+ killSignal?: NodeJS.Signals | number | undefined;
+ }
+ interface ExecOptionsWithStringEncoding extends ExecOptions {
+ encoding: BufferEncoding;
+ }
+ interface ExecOptionsWithBufferEncoding extends ExecOptions {
+ encoding: BufferEncoding | null; // specify `null`.
+ }
+ interface ExecException extends Error {
+ cmd?: string | undefined;
+ killed?: boolean | undefined;
+ code?: number | undefined;
+ signal?: NodeJS.Signals | undefined;
+ }
+ /**
+ * Spawns a shell then executes the `command` within that shell, buffering any
+ * generated output. The `command` string passed to the exec function is processed
+ * directly by the shell and special characters (vary based on [shell](https://en.wikipedia.org/wiki/List_of_command-line_interpreters))
+ * need to be dealt with accordingly:
+ *
+ * ```js
+ * const { exec } = require('child_process');
+ *
+ * exec('"/path/to/test file/test.sh" arg1 arg2');
+ * // Double quotes are used so that the space in the path is not interpreted as
+ * // a delimiter of multiple arguments.
+ *
+ * exec('echo "The \\$HOME variable is $HOME"');
+ * // The $HOME variable is escaped in the first instance, but not in the second.
+ * ```
+ *
+ * **Never pass unsanitized user input to this function. Any input containing shell**
+ * **metacharacters may be used to trigger arbitrary command execution.**
+ *
+ * If a `callback` function is provided, it is called with the arguments`(error, stdout, stderr)`. On success, `error` will be `null`. On error,`error` will be an instance of `Error`. The
+ * `error.code` property will be
+ * the exit code of the process. By convention, any exit code other than `0`indicates an error. `error.signal` will be the signal that terminated the
+ * process.
+ *
+ * The `stdout` and `stderr` arguments passed to the callback will contain the
+ * stdout and stderr output of the child process. By default, Node.js will decode
+ * the output as UTF-8 and pass strings to the callback. The `encoding` option
+ * can be used to specify the character encoding used to decode the stdout and
+ * stderr output. If `encoding` is `'buffer'`, or an unrecognized character
+ * encoding, `Buffer` objects will be passed to the callback instead.
+ *
+ * ```js
+ * const { exec } = require('child_process');
+ * exec('cat *.js missing_file | wc -l', (error, stdout, stderr) => {
+ * if (error) {
+ * console.error(`exec error: ${error}`);
+ * return;
+ * }
+ * console.log(`stdout: ${stdout}`);
+ * console.error(`stderr: ${stderr}`);
+ * });
+ * ```
+ *
+ * If `timeout` is greater than `0`, the parent will send the signal
+ * identified by the `killSignal` property (the default is `'SIGTERM'`) if the
+ * child runs longer than `timeout` milliseconds.
+ *
+ * Unlike the [`exec(3)`](http://man7.org/linux/man-pages/man3/exec.3.html) POSIX system call, `child_process.exec()` does not replace
+ * the existing process and uses a shell to execute the command.
+ *
+ * If this method is invoked as its `util.promisify()` ed version, it returns
+ * a `Promise` for an `Object` with `stdout` and `stderr` properties. The returned`ChildProcess` instance is attached to the `Promise` as a `child` property. In
+ * case of an error (including any error resulting in an exit code other than 0), a
+ * rejected promise is returned, with the same `error` object given in the
+ * callback, but with two additional properties `stdout` and `stderr`.
+ *
+ * ```js
+ * const util = require('util');
+ * const exec = util.promisify(require('child_process').exec);
+ *
+ * async function lsExample() {
+ * const { stdout, stderr } = await exec('ls');
+ * console.log('stdout:', stdout);
+ * console.error('stderr:', stderr);
+ * }
+ * lsExample();
+ * ```
+ *
+ * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.kill()` on the child process except
+ * the error passed to the callback will be an `AbortError`:
+ *
+ * ```js
+ * const { exec } = require('child_process');
+ * const controller = new AbortController();
+ * const { signal } = controller;
+ * const child = exec('grep ssh', { signal }, (error) => {
+ * console.log(error); // an AbortError
+ * });
+ * controller.abort();
+ * ```
+ * @since v0.1.90
+ * @param command The command to run, with space-separated arguments.
+ * @param callback called with the output when process terminates.
+ */
+ function exec(command: string, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
+ // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`.
+ function exec(
+ command: string,
+ options: {
+ encoding: 'buffer' | null;
+ } & ExecOptions,
+ callback?: (error: ExecException | null, stdout: Buffer, stderr: Buffer) => void
+ ): ChildProcess;
+ // `options` with well known `encoding` means stdout/stderr are definitely `string`.
+ function exec(
+ command: string,
+ options: {
+ encoding: BufferEncoding;
+ } & ExecOptions,
+ callback?: (error: ExecException | null, stdout: string, stderr: string) => void
+ ): ChildProcess;
+ // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`.
+ // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`.
+ function exec(
+ command: string,
+ options: {
+ encoding: BufferEncoding;
+ } & ExecOptions,
+ callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void
+ ): ChildProcess;
+ // `options` without an `encoding` means stdout/stderr are definitely `string`.
+ function exec(command: string, options: ExecOptions, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
+ // fallback if nothing else matches. Worst case is always `string | Buffer`.
+ function exec(
+ command: string,
+ options: (ObjectEncodingOptions & ExecOptions) | undefined | null,
+ callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void
+ ): ChildProcess;
+ interface PromiseWithChild extends Promise {
+ child: ChildProcess;
+ }
+ namespace exec {
+ function __promisify__(command: string): PromiseWithChild<{
+ stdout: string;
+ stderr: string;
+ }>;
+ function __promisify__(
+ command: string,
+ options: {
+ encoding: 'buffer' | null;
+ } & ExecOptions
+ ): PromiseWithChild<{
+ stdout: Buffer;
+ stderr: Buffer;
+ }>;
+ function __promisify__(
+ command: string,
+ options: {
+ encoding: BufferEncoding;
+ } & ExecOptions
+ ): PromiseWithChild<{
+ stdout: string;
+ stderr: string;
+ }>;
+ function __promisify__(
+ command: string,
+ options: ExecOptions
+ ): PromiseWithChild<{
+ stdout: string;
+ stderr: string;
+ }>;
+ function __promisify__(
+ command: string,
+ options?: (ObjectEncodingOptions & ExecOptions) | null
+ ): PromiseWithChild<{
+ stdout: string | Buffer;
+ stderr: string | Buffer;
+ }>;
+ }
+ interface ExecFileOptions extends CommonOptions, Abortable {
+ maxBuffer?: number | undefined;
+ killSignal?: NodeJS.Signals | number | undefined;
+ windowsVerbatimArguments?: boolean | undefined;
+ shell?: boolean | string | undefined;
+ signal?: AbortSignal | undefined;
+ }
+ interface ExecFileOptionsWithStringEncoding extends ExecFileOptions {
+ encoding: BufferEncoding;
+ }
+ interface ExecFileOptionsWithBufferEncoding extends ExecFileOptions {
+ encoding: 'buffer' | null;
+ }
+ interface ExecFileOptionsWithOtherEncoding extends ExecFileOptions {
+ encoding: BufferEncoding;
+ }
+ type ExecFileException = ExecException & NodeJS.ErrnoException;
+ /**
+ * The `child_process.execFile()` function is similar to {@link exec} except that it does not spawn a shell by default. Rather, the specified
+ * executable `file` is spawned directly as a new process making it slightly more
+ * efficient than {@link exec}.
+ *
+ * The same options as {@link exec} are supported. Since a shell is
+ * not spawned, behaviors such as I/O redirection and file globbing are not
+ * supported.
+ *
+ * ```js
+ * const { execFile } = require('child_process');
+ * const child = execFile('node', ['--version'], (error, stdout, stderr) => {
+ * if (error) {
+ * throw error;
+ * }
+ * console.log(stdout);
+ * });
+ * ```
+ *
+ * The `stdout` and `stderr` arguments passed to the callback will contain the
+ * stdout and stderr output of the child process. By default, Node.js will decode
+ * the output as UTF-8 and pass strings to the callback. The `encoding` option
+ * can be used to specify the character encoding used to decode the stdout and
+ * stderr output. If `encoding` is `'buffer'`, or an unrecognized character
+ * encoding, `Buffer` objects will be passed to the callback instead.
+ *
+ * If this method is invoked as its `util.promisify()` ed version, it returns
+ * a `Promise` for an `Object` with `stdout` and `stderr` properties. The returned`ChildProcess` instance is attached to the `Promise` as a `child` property. In
+ * case of an error (including any error resulting in an exit code other than 0), a
+ * rejected promise is returned, with the same `error` object given in the
+ * callback, but with two additional properties `stdout` and `stderr`.
+ *
+ * ```js
+ * const util = require('util');
+ * const execFile = util.promisify(require('child_process').execFile);
+ * async function getVersion() {
+ * const { stdout } = await execFile('node', ['--version']);
+ * console.log(stdout);
+ * }
+ * getVersion();
+ * ```
+ *
+ * **If the `shell` option is enabled, do not pass unsanitized user input to this**
+ * **function. Any input containing shell metacharacters may be used to trigger**
+ * **arbitrary command execution.**
+ *
+ * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.kill()` on the child process except
+ * the error passed to the callback will be an `AbortError`:
+ *
+ * ```js
+ * const { execFile } = require('child_process');
+ * const controller = new AbortController();
+ * const { signal } = controller;
+ * const child = execFile('node', ['--version'], { signal }, (error) => {
+ * console.log(error); // an AbortError
+ * });
+ * controller.abort();
+ * ```
+ * @since v0.1.91
+ * @param file The name or path of the executable file to run.
+ * @param args List of string arguments.
+ * @param callback Called with the output when process terminates.
+ */
+ function execFile(file: string): ChildProcess;
+ function execFile(file: string, options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null): ChildProcess;
+ function execFile(file: string, args?: ReadonlyArray | null): ChildProcess;
+ function execFile(file: string, args: ReadonlyArray | undefined | null, options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null): ChildProcess;
+ // no `options` definitely means stdout/stderr are `string`.
+ function execFile(file: string, callback: (error: ExecFileException | null, stdout: string, stderr: string) => void): ChildProcess;
+ function execFile(file: string, args: ReadonlyArray | undefined | null, callback: (error: ExecFileException | null, stdout: string, stderr: string) => void): ChildProcess;
+ // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`.
+ function execFile(file: string, options: ExecFileOptionsWithBufferEncoding, callback: (error: ExecFileException | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess;
+ function execFile(
+ file: string,
+ args: ReadonlyArray | undefined | null,
+ options: ExecFileOptionsWithBufferEncoding,
+ callback: (error: ExecFileException | null, stdout: Buffer, stderr: Buffer) => void
+ ): ChildProcess;
+ // `options` with well known `encoding` means stdout/stderr are definitely `string`.
+ function execFile(file: string, options: ExecFileOptionsWithStringEncoding, callback: (error: ExecFileException | null, stdout: string, stderr: string) => void): ChildProcess;
+ function execFile(
+ file: string,
+ args: ReadonlyArray | undefined | null,
+ options: ExecFileOptionsWithStringEncoding,
+ callback: (error: ExecFileException | null, stdout: string, stderr: string) => void
+ ): ChildProcess;
+ // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`.
+ // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`.
+ function execFile(file: string, options: ExecFileOptionsWithOtherEncoding, callback: (error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void): ChildProcess;
+ function execFile(
+ file: string,
+ args: ReadonlyArray | undefined | null,
+ options: ExecFileOptionsWithOtherEncoding,
+ callback: (error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void
+ ): ChildProcess;
+ // `options` without an `encoding` means stdout/stderr are definitely `string`.
+ function execFile(file: string, options: ExecFileOptions, callback: (error: ExecFileException | null, stdout: string, stderr: string) => void): ChildProcess;
+ function execFile(
+ file: string,
+ args: ReadonlyArray | undefined | null,
+ options: ExecFileOptions,
+ callback: (error: ExecFileException | null, stdout: string, stderr: string) => void
+ ): ChildProcess;
+ // fallback if nothing else matches. Worst case is always `string | Buffer`.
+ function execFile(
+ file: string,
+ options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null,
+ callback: ((error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null
+ ): ChildProcess;
+ function execFile(
+ file: string,
+ args: ReadonlyArray | undefined | null,
+ options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null,
+ callback: ((error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null
+ ): ChildProcess;
+ namespace execFile {
+ function __promisify__(file: string): PromiseWithChild<{
+ stdout: string;
+ stderr: string;
+ }>;
+ function __promisify__(
+ file: string,
+ args: ReadonlyArray | undefined | null
+ ): PromiseWithChild<{
+ stdout: string;
+ stderr: string;
+ }>;
+ function __promisify__(
+ file: string,
+ options: ExecFileOptionsWithBufferEncoding
+ ): PromiseWithChild<{
+ stdout: Buffer;
+ stderr: Buffer;
+ }>;
+ function __promisify__(
+ file: string,
+ args: ReadonlyArray | undefined | null,
+ options: ExecFileOptionsWithBufferEncoding
+ ): PromiseWithChild<{
+ stdout: Buffer;
+ stderr: Buffer;
+ }>;
+ function __promisify__(
+ file: string,
+ options: ExecFileOptionsWithStringEncoding
+ ): PromiseWithChild<{
+ stdout: string;
+ stderr: string;
+ }>;
+ function __promisify__(
+ file: string,
+ args: ReadonlyArray | undefined | null,
+ options: ExecFileOptionsWithStringEncoding
+ ): PromiseWithChild<{
+ stdout: string;
+ stderr: string;
+ }>;
+ function __promisify__(
+ file: string,
+ options: ExecFileOptionsWithOtherEncoding
+ ): PromiseWithChild<{
+ stdout: string | Buffer;
+ stderr: string | Buffer;
+ }>;
+ function __promisify__(
+ file: string,
+ args: ReadonlyArray | undefined | null,
+ options: ExecFileOptionsWithOtherEncoding
+ ): PromiseWithChild<{
+ stdout: string | Buffer;
+ stderr: string | Buffer;
+ }>;
+ function __promisify__(
+ file: string,
+ options: ExecFileOptions
+ ): PromiseWithChild<{
+ stdout: string;
+ stderr: string;
+ }>;
+ function __promisify__(
+ file: string,
+ args: ReadonlyArray | undefined | null,
+ options: ExecFileOptions
+ ): PromiseWithChild<{
+ stdout: string;
+ stderr: string;
+ }>;
+ function __promisify__(
+ file: string,
+ options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null
+ ): PromiseWithChild<{
+ stdout: string | Buffer;
+ stderr: string | Buffer;
+ }>;
+ function __promisify__(
+ file: string,
+ args: ReadonlyArray | undefined | null,
+ options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null
+ ): PromiseWithChild<{
+ stdout: string | Buffer;
+ stderr: string | Buffer;
+ }>;
+ }
+ interface ForkOptions extends ProcessEnvOptions, MessagingOptions, Abortable {
+ execPath?: string | undefined;
+ execArgv?: string[] | undefined;
+ silent?: boolean | undefined;
+ stdio?: StdioOptions | undefined;
+ detached?: boolean | undefined;
+ windowsVerbatimArguments?: boolean | undefined;
+ }
+ /**
+ * The `child_process.fork()` method is a special case of {@link spawn} used specifically to spawn new Node.js processes.
+ * Like {@link spawn}, a `ChildProcess` object is returned. The
+ * returned `ChildProcess` will have an additional communication channel
+ * built-in that allows messages to be passed back and forth between the parent and
+ * child. See `subprocess.send()` for details.
+ *
+ * Keep in mind that spawned Node.js child processes are
+ * independent of the parent with exception of the IPC communication channel
+ * that is established between the two. Each process has its own memory, with
+ * their own V8 instances. Because of the additional resource allocations
+ * required, spawning a large number of child Node.js processes is not
+ * recommended.
+ *
+ * By default, `child_process.fork()` will spawn new Node.js instances using the `process.execPath` of the parent process. The `execPath` property in the`options` object allows for an alternative
+ * execution path to be used.
+ *
+ * Node.js processes launched with a custom `execPath` will communicate with the
+ * parent process using the file descriptor (fd) identified using the
+ * environment variable `NODE_CHANNEL_FD` on the child process.
+ *
+ * Unlike the [`fork(2)`](http://man7.org/linux/man-pages/man2/fork.2.html) POSIX system call, `child_process.fork()` does not clone the
+ * current process.
+ *
+ * The `shell` option available in {@link spawn} is not supported by`child_process.fork()` and will be ignored if set.
+ *
+ * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.kill()` on the child process except
+ * the error passed to the callback will be an `AbortError`:
+ *
+ * ```js
+ * if (process.argv[2] === 'child') {
+ * setTimeout(() => {
+ * console.log(`Hello from ${process.argv[2]}!`);
+ * }, 1_000);
+ * } else {
+ * const { fork } = require('child_process');
+ * const controller = new AbortController();
+ * const { signal } = controller;
+ * const child = fork(__filename, ['child'], { signal });
+ * child.on('error', (err) => {
+ * // This will be called with err being an AbortError if the controller aborts
+ * });
+ * controller.abort(); // Stops the child process
+ * }
+ * ```
+ * @since v0.5.0
+ * @param modulePath The module to run in the child.
+ * @param args List of string arguments.
+ */
+ function fork(modulePath: string, options?: ForkOptions): ChildProcess;
+ function fork(modulePath: string, args?: ReadonlyArray, options?: ForkOptions): ChildProcess;
+ interface SpawnSyncOptions extends CommonSpawnOptions {
+ input?: string | NodeJS.ArrayBufferView | undefined;
+ maxBuffer?: number | undefined;
+ encoding?: BufferEncoding | 'buffer' | null | undefined;
+ }
+ interface SpawnSyncOptionsWithStringEncoding extends SpawnSyncOptions {
+ encoding: BufferEncoding;
+ }
+ interface SpawnSyncOptionsWithBufferEncoding extends SpawnSyncOptions {
+ encoding?: 'buffer' | null | undefined;
+ }
+ interface SpawnSyncReturns {
+ pid: number;
+ output: Array;
+ stdout: T;
+ stderr: T;
+ status: number | null;
+ signal: NodeJS.Signals | null;
+ error?: Error | undefined;
+ }
+ /**
+ * The `child_process.spawnSync()` method is generally identical to {@link spawn} with the exception that the function will not return
+ * until the child process has fully closed. When a timeout has been encountered
+ * and `killSignal` is sent, the method won't return until the process has
+ * completely exited. If the process intercepts and handles the `SIGTERM` signal
+ * and doesn't exit, the parent process will wait until the child process has
+ * exited.
+ *
+ * **If the `shell` option is enabled, do not pass unsanitized user input to this**
+ * **function. Any input containing shell metacharacters may be used to trigger**
+ * **arbitrary command execution.**
+ * @since v0.11.12
+ * @param command The command to run.
+ * @param args List of string arguments.
+ */
+ function spawnSync(command: string): SpawnSyncReturns;
+ function spawnSync(command: string, options: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns;
+ function spawnSync(command: string, options: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns;
+ function spawnSync(command: string, options?: SpawnSyncOptions): SpawnSyncReturns;
+ function spawnSync(command: string, args: ReadonlyArray): SpawnSyncReturns;
+ function spawnSync(command: string, args: ReadonlyArray, options: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns;
+ function spawnSync(command: string, args: ReadonlyArray, options: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns;
+ function spawnSync(command: string, args?: ReadonlyArray, options?: SpawnSyncOptions): SpawnSyncReturns;
+ interface CommonExecOptions extends CommonOptions {
+ input?: string | NodeJS.ArrayBufferView | undefined;
+ stdio?: StdioOptions | undefined;
+ killSignal?: NodeJS.Signals | number | undefined;
+ maxBuffer?: number | undefined;
+ encoding?: BufferEncoding | 'buffer' | null | undefined;
+ }
+ interface ExecSyncOptions extends CommonExecOptions {
+ shell?: string | undefined;
+ }
+ interface ExecSyncOptionsWithStringEncoding extends ExecSyncOptions {
+ encoding: BufferEncoding;
+ }
+ interface ExecSyncOptionsWithBufferEncoding extends ExecSyncOptions {
+ encoding?: 'buffer' | null | undefined;
+ }
+ /**
+ * The `child_process.execSync()` method is generally identical to {@link exec} with the exception that the method will not return
+ * until the child process has fully closed. When a timeout has been encountered
+ * and `killSignal` is sent, the method won't return until the process has
+ * completely exited. If the child process intercepts and handles the `SIGTERM`signal and doesn't exit, the parent process will wait until the child process
+ * has exited.
+ *
+ * If the process times out or has a non-zero exit code, this method will throw.
+ * The `Error` object will contain the entire result from {@link spawnSync}.
+ *
+ * **Never pass unsanitized user input to this function. Any input containing shell**
+ * **metacharacters may be used to trigger arbitrary command execution.**
+ * @since v0.11.12
+ * @param command The command to run.
+ * @return The stdout from the command.
+ */
+ function execSync(command: string): Buffer;
+ function execSync(command: string, options: ExecSyncOptionsWithStringEncoding): string;
+ function execSync(command: string, options: ExecSyncOptionsWithBufferEncoding): Buffer;
+ function execSync(command: string, options?: ExecSyncOptions): string | Buffer;
+ interface ExecFileSyncOptions extends CommonExecOptions {
+ shell?: boolean | string | undefined;
+ }
+ interface ExecFileSyncOptionsWithStringEncoding extends ExecFileSyncOptions {
+ encoding: BufferEncoding;
+ }
+ interface ExecFileSyncOptionsWithBufferEncoding extends ExecFileSyncOptions {
+ encoding?: 'buffer' | null; // specify `null`.
+ }
+ /**
+ * The `child_process.execFileSync()` method is generally identical to {@link execFile} with the exception that the method will not
+ * return until the child process has fully closed. When a timeout has been
+ * encountered and `killSignal` is sent, the method won't return until the process
+ * has completely exited.
+ *
+ * If the child process intercepts and handles the `SIGTERM` signal and
+ * does not exit, the parent process will still wait until the child process has
+ * exited.
+ *
+ * If the process times out or has a non-zero exit code, this method will throw an `Error` that will include the full result of the underlying {@link spawnSync}.
+ *
+ * **If the `shell` option is enabled, do not pass unsanitized user input to this**
+ * **function. Any input containing shell metacharacters may be used to trigger**
+ * **arbitrary command execution.**
+ * @since v0.11.12
+ * @param file The name or path of the executable file to run.
+ * @param args List of string arguments.
+ * @return The stdout from the command.
+ */
+ function execFileSync(file: string): Buffer;
+ function execFileSync(file: string, options: ExecFileSyncOptionsWithStringEncoding): string;
+ function execFileSync(file: string, options: ExecFileSyncOptionsWithBufferEncoding): Buffer;
+ function execFileSync(file: string, options?: ExecFileSyncOptions): string | Buffer;
+ function execFileSync(file: string, args: ReadonlyArray): Buffer;
+ function execFileSync(file: string, args: ReadonlyArray, options: ExecFileSyncOptionsWithStringEncoding): string;
+ function execFileSync(file: string, args: ReadonlyArray, options: ExecFileSyncOptionsWithBufferEncoding): Buffer;
+ function execFileSync(file: string, args?: ReadonlyArray, options?: ExecFileSyncOptions): string | Buffer;
+}
+declare module 'node:child_process' {
+ export * from 'child_process';
+}
diff --git a/node_modules/@types/node/cluster.d.ts b/node_modules/@types/node/cluster.d.ts
new file mode 100755
index 0000000..37dbc57
--- /dev/null
+++ b/node_modules/@types/node/cluster.d.ts
@@ -0,0 +1,410 @@
+/**
+ * Clusters of Node.js processes can be used to run multiple instances of Node.js
+ * that can distribute workloads among their application threads. When process
+ * isolation is not needed, use the `worker_threads` module instead, which
+ * allows running multiple application threads within a single Node.js instance.
+ *
+ * The cluster module allows easy creation of child processes that all share
+ * server ports.
+ *
+ * ```js
+ * import cluster from 'cluster';
+ * import http from 'http';
+ * import { cpus } from 'os';
+ * import process from 'process';
+ *
+ * const numCPUs = cpus().length;
+ *
+ * if (cluster.isPrimary) {
+ * console.log(`Primary ${process.pid} is running`);
+ *
+ * // Fork workers.
+ * for (let i = 0; i < numCPUs; i++) {
+ * cluster.fork();
+ * }
+ *
+ * cluster.on('exit', (worker, code, signal) => {
+ * console.log(`worker ${worker.process.pid} died`);
+ * });
+ * } else {
+ * // Workers can share any TCP connection
+ * // In this case it is an HTTP server
+ * http.createServer((req, res) => {
+ * res.writeHead(200);
+ * res.end('hello world\n');
+ * }).listen(8000);
+ *
+ * console.log(`Worker ${process.pid} started`);
+ * }
+ * ```
+ *
+ * Running Node.js will now share port 8000 between the workers:
+ *
+ * ```console
+ * $ node server.js
+ * Primary 3596 is running
+ * Worker 4324 started
+ * Worker 4520 started
+ * Worker 6056 started
+ * Worker 5644 started
+ * ```
+ *
+ * On Windows, it is not yet possible to set up a named pipe server in a worker.
+ * @see [source](https://github.com/nodejs/node/blob/v18.0.0/lib/cluster.js)
+ */
+declare module 'cluster' {
+ import * as child from 'node:child_process';
+ import EventEmitter = require('node:events');
+ import * as net from 'node:net';
+ export interface ClusterSettings {
+ execArgv?: string[] | undefined; // default: process.execArgv
+ exec?: string | undefined;
+ args?: string[] | undefined;
+ silent?: boolean | undefined;
+ stdio?: any[] | undefined;
+ uid?: number | undefined;
+ gid?: number | undefined;
+ inspectPort?: number | (() => number) | undefined;
+ }
+ export interface Address {
+ address: string;
+ port: number;
+ addressType: number | 'udp4' | 'udp6'; // 4, 6, -1, "udp4", "udp6"
+ }
+ /**
+ * A `Worker` object contains all public information and method about a worker.
+ * In the primary it can be obtained using `cluster.workers`. In a worker
+ * it can be obtained using `cluster.worker`.
+ * @since v0.7.0
+ */
+ export class Worker extends EventEmitter {
+ /**
+ * Each new worker is given its own unique id, this id is stored in the`id`.
+ *
+ * While a worker is alive, this is the key that indexes it in`cluster.workers`.
+ * @since v0.8.0
+ */
+ id: number;
+ /**
+ * All workers are created using `child_process.fork()`, the returned object
+ * from this function is stored as `.process`. In a worker, the global `process`is stored.
+ *
+ * See: `Child Process module`.
+ *
+ * Workers will call `process.exit(0)` if the `'disconnect'` event occurs
+ * on `process` and `.exitedAfterDisconnect` is not `true`. This protects against
+ * accidental disconnection.
+ * @since v0.7.0
+ */
+ process: child.ChildProcess;
+ /**
+ * Send a message to a worker or primary, optionally with a handle.
+ *
+ * In the primary, this sends a message to a specific worker. It is identical to `ChildProcess.send()`.
+ *
+ * In a worker, this sends a message to the primary. It is identical to`process.send()`.
+ *
+ * This example will echo back all messages from the primary:
+ *
+ * ```js
+ * if (cluster.isPrimary) {
+ * const worker = cluster.fork();
+ * worker.send('hi there');
+ *
+ * } else if (cluster.isWorker) {
+ * process.on('message', (msg) => {
+ * process.send(msg);
+ * });
+ * }
+ * ```
+ * @since v0.7.0
+ * @param options The `options` argument, if present, is an object used to parameterize the sending of certain types of handles. `options` supports the following properties:
+ */
+ send(message: child.Serializable, callback?: (error: Error | null) => void): boolean;
+ send(message: child.Serializable, sendHandle: child.SendHandle, callback?: (error: Error | null) => void): boolean;
+ send(message: child.Serializable, sendHandle: child.SendHandle, options?: child.MessageOptions, callback?: (error: Error | null) => void): boolean;
+ /**
+ * This function will kill the worker. In the primary worker, it does this by
+ * disconnecting the `worker.process`, and once disconnected, killing with`signal`. In the worker, it does it by killing the process with `signal`.
+ *
+ * The `kill()` function kills the worker process without waiting for a graceful
+ * disconnect, it has the same behavior as `worker.process.kill()`.
+ *
+ * This method is aliased as `worker.destroy()` for backwards compatibility.
+ *
+ * In a worker, `process.kill()` exists, but it is not this function;
+ * it is `kill()`.
+ * @since v0.9.12
+ * @param [signal='SIGTERM'] Name of the kill signal to send to the worker process.
+ */
+ kill(signal?: string): void;
+ destroy(signal?: string): void;
+ /**
+ * In a worker, this function will close all servers, wait for the `'close'` event
+ * on those servers, and then disconnect the IPC channel.
+ *
+ * In the primary, an internal message is sent to the worker causing it to call`.disconnect()` on itself.
+ *
+ * Causes `.exitedAfterDisconnect` to be set.
+ *
+ * After a server is closed, it will no longer accept new connections,
+ * but connections may be accepted by any other listening worker. Existing
+ * connections will be allowed to close as usual. When no more connections exist,
+ * see `server.close()`, the IPC channel to the worker will close allowing it
+ * to die gracefully.
+ *
+ * The above applies _only_ to server connections, client connections are not
+ * automatically closed by workers, and disconnect does not wait for them to close
+ * before exiting.
+ *
+ * In a worker, `process.disconnect` exists, but it is not this function;
+ * it is `disconnect()`.
+ *
+ * Because long living server connections may block workers from disconnecting, it
+ * may be useful to send a message, so application specific actions may be taken to
+ * close them. It also may be useful to implement a timeout, killing a worker if
+ * the `'disconnect'` event has not been emitted after some time.
+ *
+ * ```js
+ * if (cluster.isPrimary) {
+ * const worker = cluster.fork();
+ * let timeout;
+ *
+ * worker.on('listening', (address) => {
+ * worker.send('shutdown');
+ * worker.disconnect();
+ * timeout = setTimeout(() => {
+ * worker.kill();
+ * }, 2000);
+ * });
+ *
+ * worker.on('disconnect', () => {
+ * clearTimeout(timeout);
+ * });
+ *
+ * } else if (cluster.isWorker) {
+ * const net = require('net');
+ * const server = net.createServer((socket) => {
+ * // Connections never end
+ * });
+ *
+ * server.listen(8000);
+ *
+ * process.on('message', (msg) => {
+ * if (msg === 'shutdown') {
+ * // Initiate graceful close of any connections to server
+ * }
+ * });
+ * }
+ * ```
+ * @since v0.7.7
+ * @return A reference to `worker`.
+ */
+ disconnect(): void;
+ /**
+ * This function returns `true` if the worker is connected to its primary via its
+ * IPC channel, `false` otherwise. A worker is connected to its primary after it
+ * has been created. It is disconnected after the `'disconnect'` event is emitted.
+ * @since v0.11.14
+ */
+ isConnected(): boolean;
+ /**
+ * This function returns `true` if the worker's process has terminated (either
+ * because of exiting or being signaled). Otherwise, it returns `false`.
+ *
+ * ```js
+ * import cluster from 'cluster';
+ * import http from 'http';
+ * import { cpus } from 'os';
+ * import process from 'process';
+ *
+ * const numCPUs = cpus().length;
+ *
+ * if (cluster.isPrimary) {
+ * console.log(`Primary ${process.pid} is running`);
+ *
+ * // Fork workers.
+ * for (let i = 0; i < numCPUs; i++) {
+ * cluster.fork();
+ * }
+ *
+ * cluster.on('fork', (worker) => {
+ * console.log('worker is dead:', worker.isDead());
+ * });
+ *
+ * cluster.on('exit', (worker, code, signal) => {
+ * console.log('worker is dead:', worker.isDead());
+ * });
+ * } else {
+ * // Workers can share any TCP connection. In this case, it is an HTTP server.
+ * http.createServer((req, res) => {
+ * res.writeHead(200);
+ * res.end(`Current process\n ${process.pid}`);
+ * process.kill(process.pid);
+ * }).listen(8000);
+ * }
+ * ```
+ * @since v0.11.14
+ */
+ isDead(): boolean;
+ /**
+ * This property is `true` if the worker exited due to `.disconnect()`.
+ * If the worker exited any other way, it is `false`. If the
+ * worker has not exited, it is `undefined`.
+ *
+ * The boolean `worker.exitedAfterDisconnect` allows distinguishing between
+ * voluntary and accidental exit, the primary may choose not to respawn a worker
+ * based on this value.
+ *
+ * ```js
+ * cluster.on('exit', (worker, code, signal) => {
+ * if (worker.exitedAfterDisconnect === true) {
+ * console.log('Oh, it was just voluntary – no need to worry');
+ * }
+ * });
+ *
+ * // kill worker
+ * worker.kill();
+ * ```
+ * @since v6.0.0
+ */
+ exitedAfterDisconnect: boolean;
+ /**
+ * events.EventEmitter
+ * 1. disconnect
+ * 2. error
+ * 3. exit
+ * 4. listening
+ * 5. message
+ * 6. online
+ */
+ addListener(event: string, listener: (...args: any[]) => void): this;
+ addListener(event: 'disconnect', listener: () => void): this;
+ addListener(event: 'error', listener: (error: Error) => void): this;
+ addListener(event: 'exit', listener: (code: number, signal: string) => void): this;
+ addListener(event: 'listening', listener: (address: Address) => void): this;
+ addListener(event: 'message', listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
+ addListener(event: 'online', listener: () => void): this;
+ emit(event: string | symbol, ...args: any[]): boolean;
+ emit(event: 'disconnect'): boolean;
+ emit(event: 'error', error: Error): boolean;
+ emit(event: 'exit', code: number, signal: string): boolean;
+ emit(event: 'listening', address: Address): boolean;
+ emit(event: 'message', message: any, handle: net.Socket | net.Server): boolean;
+ emit(event: 'online'): boolean;
+ on(event: string, listener: (...args: any[]) => void): this;
+ on(event: 'disconnect', listener: () => void): this;
+ on(event: 'error', listener: (error: Error) => void): this;
+ on(event: 'exit', listener: (code: number, signal: string) => void): this;
+ on(event: 'listening', listener: (address: Address) => void): this;
+ on(event: 'message', listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
+ on(event: 'online', listener: () => void): this;
+ once(event: string, listener: (...args: any[]) => void): this;
+ once(event: 'disconnect', listener: () => void): this;
+ once(event: 'error', listener: (error: Error) => void): this;
+ once(event: 'exit', listener: (code: number, signal: string) => void): this;
+ once(event: 'listening', listener: (address: Address) => void): this;
+ once(event: 'message', listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
+ once(event: 'online', listener: () => void): this;
+ prependListener(event: string, listener: (...args: any[]) => void): this;
+ prependListener(event: 'disconnect', listener: () => void): this;
+ prependListener(event: 'error', listener: (error: Error) => void): this;
+ prependListener(event: 'exit', listener: (code: number, signal: string) => void): this;
+ prependListener(event: 'listening', listener: (address: Address) => void): this;
+ prependListener(event: 'message', listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
+ prependListener(event: 'online', listener: () => void): this;
+ prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+ prependOnceListener(event: 'disconnect', listener: () => void): this;
+ prependOnceListener(event: 'error', listener: (error: Error) => void): this;
+ prependOnceListener(event: 'exit', listener: (code: number, signal: string) => void): this;
+ prependOnceListener(event: 'listening', listener: (address: Address) => void): this;
+ prependOnceListener(event: 'message', listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
+ prependOnceListener(event: 'online', listener: () => void): this;
+ }
+ export interface Cluster extends EventEmitter {
+ disconnect(callback?: () => void): void;
+ fork(env?: any): Worker;
+ /** @deprecated since v16.0.0 - use isPrimary. */
+ readonly isMaster: boolean;
+ readonly isPrimary: boolean;
+ readonly isWorker: boolean;
+ schedulingPolicy: number;
+ readonly settings: ClusterSettings;
+ /** @deprecated since v16.0.0 - use setupPrimary. */
+ setupMaster(settings?: ClusterSettings): void;
+ /**
+ * `setupPrimary` is used to change the default 'fork' behavior. Once called, the settings will be present in cluster.settings.
+ */
+ setupPrimary(settings?: ClusterSettings): void;
+ readonly worker?: Worker | undefined;
+ readonly workers?: NodeJS.Dict | undefined;
+ readonly SCHED_NONE: number;
+ readonly SCHED_RR: number;
+ /**
+ * events.EventEmitter
+ * 1. disconnect
+ * 2. exit
+ * 3. fork
+ * 4. listening
+ * 5. message
+ * 6. online
+ * 7. setup
+ */
+ addListener(event: string, listener: (...args: any[]) => void): this;
+ addListener(event: 'disconnect', listener: (worker: Worker) => void): this;
+ addListener(event: 'exit', listener: (worker: Worker, code: number, signal: string) => void): this;
+ addListener(event: 'fork', listener: (worker: Worker) => void): this;
+ addListener(event: 'listening', listener: (worker: Worker, address: Address) => void): this;
+ addListener(event: 'message', listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
+ addListener(event: 'online', listener: (worker: Worker) => void): this;
+ addListener(event: 'setup', listener: (settings: ClusterSettings) => void): this;
+ emit(event: string | symbol, ...args: any[]): boolean;
+ emit(event: 'disconnect', worker: Worker): boolean;
+ emit(event: 'exit', worker: Worker, code: number, signal: string): boolean;
+ emit(event: 'fork', worker: Worker): boolean;
+ emit(event: 'listening', worker: Worker, address: Address): boolean;
+ emit(event: 'message', worker: Worker, message: any, handle: net.Socket | net.Server): boolean;
+ emit(event: 'online', worker: Worker): boolean;
+ emit(event: 'setup', settings: ClusterSettings): boolean;
+ on(event: string, listener: (...args: any[]) => void): this;
+ on(event: 'disconnect', listener: (worker: Worker) => void): this;
+ on(event: 'exit', listener: (worker: Worker, code: number, signal: string) => void): this;
+ on(event: 'fork', listener: (worker: Worker) => void): this;
+ on(event: 'listening', listener: (worker: Worker, address: Address) => void): this;
+ on(event: 'message', listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
+ on(event: 'online', listener: (worker: Worker) => void): this;
+ on(event: 'setup', listener: (settings: ClusterSettings) => void): this;
+ once(event: string, listener: (...args: any[]) => void): this;
+ once(event: 'disconnect', listener: (worker: Worker) => void): this;
+ once(event: 'exit', listener: (worker: Worker, code: number, signal: string) => void): this;
+ once(event: 'fork', listener: (worker: Worker) => void): this;
+ once(event: 'listening', listener: (worker: Worker, address: Address) => void): this;
+ once(event: 'message', listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
+ once(event: 'online', listener: (worker: Worker) => void): this;
+ once(event: 'setup', listener: (settings: ClusterSettings) => void): this;
+ prependListener(event: string, listener: (...args: any[]) => void): this;
+ prependListener(event: 'disconnect', listener: (worker: Worker) => void): this;
+ prependListener(event: 'exit', listener: (worker: Worker, code: number, signal: string) => void): this;
+ prependListener(event: 'fork', listener: (worker: Worker) => void): this;
+ prependListener(event: 'listening', listener: (worker: Worker, address: Address) => void): this;
+ // the handle is a net.Socket or net.Server object, or undefined.
+ prependListener(event: 'message', listener: (worker: Worker, message: any, handle?: net.Socket | net.Server) => void): this;
+ prependListener(event: 'online', listener: (worker: Worker) => void): this;
+ prependListener(event: 'setup', listener: (settings: ClusterSettings) => void): this;
+ prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+ prependOnceListener(event: 'disconnect', listener: (worker: Worker) => void): this;
+ prependOnceListener(event: 'exit', listener: (worker: Worker, code: number, signal: string) => void): this;
+ prependOnceListener(event: 'fork', listener: (worker: Worker) => void): this;
+ prependOnceListener(event: 'listening', listener: (worker: Worker, address: Address) => void): this;
+ // the handle is a net.Socket or net.Server object, or undefined.
+ prependOnceListener(event: 'message', listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this;
+ prependOnceListener(event: 'online', listener: (worker: Worker) => void): this;
+ prependOnceListener(event: 'setup', listener: (settings: ClusterSettings) => void): this;
+ }
+ const cluster: Cluster;
+ export default cluster;
+}
+declare module 'node:cluster' {
+ export * from 'cluster';
+ export { default as default } from 'cluster';
+}
diff --git a/node_modules/@types/node/console.d.ts b/node_modules/@types/node/console.d.ts
new file mode 100755
index 0000000..16c9137
--- /dev/null
+++ b/node_modules/@types/node/console.d.ts
@@ -0,0 +1,412 @@
+/**
+ * The `console` module provides a simple debugging console that is similar to the
+ * JavaScript console mechanism provided by web browsers.
+ *
+ * The module exports two specific components:
+ *
+ * * A `Console` class with methods such as `console.log()`, `console.error()` and`console.warn()` that can be used to write to any Node.js stream.
+ * * A global `console` instance configured to write to `process.stdout` and `process.stderr`. The global `console` can be used without calling`require('console')`.
+ *
+ * _**Warning**_: The global console object's methods are neither consistently
+ * synchronous like the browser APIs they resemble, nor are they consistently
+ * asynchronous like all other Node.js streams. See the `note on process I/O` for
+ * more information.
+ *
+ * Example using the global `console`:
+ *
+ * ```js
+ * console.log('hello world');
+ * // Prints: hello world, to stdout
+ * console.log('hello %s', 'world');
+ * // Prints: hello world, to stdout
+ * console.error(new Error('Whoops, something bad happened'));
+ * // Prints error message and stack trace to stderr:
+ * // Error: Whoops, something bad happened
+ * // at [eval]:5:15
+ * // at Script.runInThisContext (node:vm:132:18)
+ * // at Object.runInThisContext (node:vm:309:38)
+ * // at node:internal/process/execution:77:19
+ * // at [eval]-wrapper:6:22
+ * // at evalScript (node:internal/process/execution:76:60)
+ * // at node:internal/main/eval_string:23:3
+ *
+ * const name = 'Will Robinson';
+ * console.warn(`Danger ${name}! Danger!`);
+ * // Prints: Danger Will Robinson! Danger!, to stderr
+ * ```
+ *
+ * Example using the `Console` class:
+ *
+ * ```js
+ * const out = getStreamSomehow();
+ * const err = getStreamSomehow();
+ * const myConsole = new console.Console(out, err);
+ *
+ * myConsole.log('hello world');
+ * // Prints: hello world, to out
+ * myConsole.log('hello %s', 'world');
+ * // Prints: hello world, to out
+ * myConsole.error(new Error('Whoops, something bad happened'));
+ * // Prints: [Error: Whoops, something bad happened], to err
+ *
+ * const name = 'Will Robinson';
+ * myConsole.warn(`Danger ${name}! Danger!`);
+ * // Prints: Danger Will Robinson! Danger!, to err
+ * ```
+ * @see [source](https://github.com/nodejs/node/blob/v18.0.0/lib/console.js)
+ */
+declare module 'console' {
+ import console = require('node:console');
+ export = console;
+}
+declare module 'node:console' {
+ import { InspectOptions } from 'node:util';
+ global {
+ // This needs to be global to avoid TS2403 in case lib.dom.d.ts is present in the same build
+ interface Console {
+ Console: console.ConsoleConstructor;
+ /**
+ * `console.assert()` writes a message if `value` is [falsy](https://developer.mozilla.org/en-US/docs/Glossary/Falsy) or omitted. It only
+ * writes a message and does not otherwise affect execution. The output always
+ * starts with `"Assertion failed"`. If provided, `message` is formatted using `util.format()`.
+ *
+ * If `value` is [truthy](https://developer.mozilla.org/en-US/docs/Glossary/Truthy), nothing happens.
+ *
+ * ```js
+ * console.assert(true, 'does nothing');
+ *
+ * console.assert(false, 'Whoops %s work', 'didn\'t');
+ * // Assertion failed: Whoops didn't work
+ *
+ * console.assert();
+ * // Assertion failed
+ * ```
+ * @since v0.1.101
+ * @param value The value tested for being truthy.
+ * @param message All arguments besides `value` are used as error message.
+ */
+ assert(value: any, message?: string, ...optionalParams: any[]): void;
+ /**
+ * When `stdout` is a TTY, calling `console.clear()` will attempt to clear the
+ * TTY. When `stdout` is not a TTY, this method does nothing.
+ *
+ * The specific operation of `console.clear()` can vary across operating systems
+ * and terminal types. For most Linux operating systems, `console.clear()`operates similarly to the `clear` shell command. On Windows, `console.clear()`will clear only the output in the
+ * current terminal viewport for the Node.js
+ * binary.
+ * @since v8.3.0
+ */
+ clear(): void;
+ /**
+ * Maintains an internal counter specific to `label` and outputs to `stdout` the
+ * number of times `console.count()` has been called with the given `label`.
+ *
+ * ```js
+ * > console.count()
+ * default: 1
+ * undefined
+ * > console.count('default')
+ * default: 2
+ * undefined
+ * > console.count('abc')
+ * abc: 1
+ * undefined
+ * > console.count('xyz')
+ * xyz: 1
+ * undefined
+ * > console.count('abc')
+ * abc: 2
+ * undefined
+ * > console.count()
+ * default: 3
+ * undefined
+ * >
+ * ```
+ * @since v8.3.0
+ * @param label The display label for the counter.
+ */
+ count(label?: string): void;
+ /**
+ * Resets the internal counter specific to `label`.
+ *
+ * ```js
+ * > console.count('abc');
+ * abc: 1
+ * undefined
+ * > console.countReset('abc');
+ * undefined
+ * > console.count('abc');
+ * abc: 1
+ * undefined
+ * >
+ * ```
+ * @since v8.3.0
+ * @param label The display label for the counter.
+ */
+ countReset(label?: string): void;
+ /**
+ * The `console.debug()` function is an alias for {@link log}.
+ * @since v8.0.0
+ */
+ debug(message?: any, ...optionalParams: any[]): void;
+ /**
+ * Uses `util.inspect()` on `obj` and prints the resulting string to `stdout`.
+ * This function bypasses any custom `inspect()` function defined on `obj`.
+ * @since v0.1.101
+ */
+ dir(obj: any, options?: InspectOptions): void;
+ /**
+ * This method calls `console.log()` passing it the arguments received.
+ * This method does not produce any XML formatting.
+ * @since v8.0.0
+ */
+ dirxml(...data: any[]): void;
+ /**
+ * Prints to `stderr` with newline. Multiple arguments can be passed, with the
+ * first used as the primary message and all additional used as substitution
+ * values similar to [`printf(3)`](http://man7.org/linux/man-pages/man3/printf.3.html) (the arguments are all passed to `util.format()`).
+ *
+ * ```js
+ * const code = 5;
+ * console.error('error #%d', code);
+ * // Prints: error #5, to stderr
+ * console.error('error', code);
+ * // Prints: error 5, to stderr
+ * ```
+ *
+ * If formatting elements (e.g. `%d`) are not found in the first string then `util.inspect()` is called on each argument and the resulting string
+ * values are concatenated. See `util.format()` for more information.
+ * @since v0.1.100
+ */
+ error(message?: any, ...optionalParams: any[]): void;
+ /**
+ * Increases indentation of subsequent lines by spaces for `groupIndentation`length.
+ *
+ * If one or more `label`s are provided, those are printed first without the
+ * additional indentation.
+ * @since v8.5.0
+ */
+ group(...label: any[]): void;
+ /**
+ * An alias for {@link group}.
+ * @since v8.5.0
+ */
+ groupCollapsed(...label: any[]): void;
+ /**
+ * Decreases indentation of subsequent lines by spaces for `groupIndentation`length.
+ * @since v8.5.0
+ */
+ groupEnd(): void;
+ /**
+ * The `console.info()` function is an alias for {@link log}.
+ * @since v0.1.100
+ */
+ info(message?: any, ...optionalParams: any[]): void;
+ /**
+ * Prints to `stdout` with newline. Multiple arguments can be passed, with the
+ * first used as the primary message and all additional used as substitution
+ * values similar to [`printf(3)`](http://man7.org/linux/man-pages/man3/printf.3.html) (the arguments are all passed to `util.format()`).
+ *
+ * ```js
+ * const count = 5;
+ * console.log('count: %d', count);
+ * // Prints: count: 5, to stdout
+ * console.log('count:', count);
+ * // Prints: count: 5, to stdout
+ * ```
+ *
+ * See `util.format()` for more information.
+ * @since v0.1.100
+ */
+ log(message?: any, ...optionalParams: any[]): void;
+ /**
+ * Try to construct a table with the columns of the properties of `tabularData`(or use `properties`) and rows of `tabularData` and log it. Falls back to just
+ * logging the argument if it can’t be parsed as tabular.
+ *
+ * ```js
+ * // These can't be parsed as tabular data
+ * console.table(Symbol());
+ * // Symbol()
+ *
+ * console.table(undefined);
+ * // undefined
+ *
+ * console.table([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }]);
+ * // ┌─────────┬─────┬─────┐
+ * // │ (index) │ a │ b │
+ * // ├─────────┼─────┼─────┤
+ * // │ 0 │ 1 │ 'Y' │
+ * // │ 1 │ 'Z' │ 2 │
+ * // └─────────┴─────┴─────┘
+ *
+ * console.table([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }], ['a']);
+ * // ┌─────────┬─────┐
+ * // │ (index) │ a │
+ * // ├─────────┼─────┤
+ * // │ 0 │ 1 │
+ * // │ 1 │ 'Z' │
+ * // └─────────┴─────┘
+ * ```
+ * @since v10.0.0
+ * @param properties Alternate properties for constructing the table.
+ */
+ table(tabularData: any, properties?: ReadonlyArray): void;
+ /**
+ * Starts a timer that can be used to compute the duration of an operation. Timers
+ * are identified by a unique `label`. Use the same `label` when calling {@link timeEnd} to stop the timer and output the elapsed time in
+ * suitable time units to `stdout`. For example, if the elapsed
+ * time is 3869ms, `console.timeEnd()` displays "3.869s".
+ * @since v0.1.104
+ */
+ time(label?: string): void;
+ /**
+ * Stops a timer that was previously started by calling {@link time} and
+ * prints the result to `stdout`:
+ *
+ * ```js
+ * console.time('100-elements');
+ * for (let i = 0; i < 100; i++) {}
+ * console.timeEnd('100-elements');
+ * // prints 100-elements: 225.438ms
+ * ```
+ * @since v0.1.104
+ */
+ timeEnd(label?: string): void;
+ /**
+ * For a timer that was previously started by calling {@link time}, prints
+ * the elapsed time and other `data` arguments to `stdout`:
+ *
+ * ```js
+ * console.time('process');
+ * const value = expensiveProcess1(); // Returns 42
+ * console.timeLog('process', value);
+ * // Prints "process: 365.227ms 42".
+ * doExpensiveProcess2(value);
+ * console.timeEnd('process');
+ * ```
+ * @since v10.7.0
+ */
+ timeLog(label?: string, ...data: any[]): void;
+ /**
+ * Prints to `stderr` the string `'Trace: '`, followed by the `util.format()` formatted message and stack trace to the current position in the code.
+ *
+ * ```js
+ * console.trace('Show me');
+ * // Prints: (stack trace will vary based on where trace is called)
+ * // Trace: Show me
+ * // at repl:2:9
+ * // at REPLServer.defaultEval (repl.js:248:27)
+ * // at bound (domain.js:287:14)
+ * // at REPLServer.runBound [as eval] (domain.js:300:12)
+ * // at REPLServer. (repl.js:412:12)
+ * // at emitOne (events.js:82:20)
+ * // at REPLServer.emit (events.js:169:7)
+ * // at REPLServer.Interface._onLine (readline.js:210:10)
+ * // at REPLServer.Interface._line (readline.js:549:8)
+ * // at REPLServer.Interface._ttyWrite (readline.js:826:14)
+ * ```
+ * @since v0.1.104
+ */
+ trace(message?: any, ...optionalParams: any[]): void;
+ /**
+ * The `console.warn()` function is an alias for {@link error}.
+ * @since v0.1.100
+ */
+ warn(message?: any, ...optionalParams: any[]): void;
+ // --- Inspector mode only ---
+ /**
+ * This method does not display anything unless used in the inspector.
+ * Starts a JavaScript CPU profile with an optional label.
+ */
+ profile(label?: string): void;
+ /**
+ * This method does not display anything unless used in the inspector.
+ * Stops the current JavaScript CPU profiling session if one has been started and prints the report to the Profiles panel of the inspector.
+ */
+ profileEnd(label?: string): void;
+ /**
+ * This method does not display anything unless used in the inspector.
+ * Adds an event with the label `label` to the Timeline panel of the inspector.
+ */
+ timeStamp(label?: string): void;
+ }
+ /**
+ * The `console` module provides a simple debugging console that is similar to the
+ * JavaScript console mechanism provided by web browsers.
+ *
+ * The module exports two specific components:
+ *
+ * * A `Console` class with methods such as `console.log()`, `console.error()` and`console.warn()` that can be used to write to any Node.js stream.
+ * * A global `console` instance configured to write to `process.stdout` and `process.stderr`. The global `console` can be used without calling`require('console')`.
+ *
+ * _**Warning**_: The global console object's methods are neither consistently
+ * synchronous like the browser APIs they resemble, nor are they consistently
+ * asynchronous like all other Node.js streams. See the `note on process I/O` for
+ * more information.
+ *
+ * Example using the global `console`:
+ *
+ * ```js
+ * console.log('hello world');
+ * // Prints: hello world, to stdout
+ * console.log('hello %s', 'world');
+ * // Prints: hello world, to stdout
+ * console.error(new Error('Whoops, something bad happened'));
+ * // Prints error message and stack trace to stderr:
+ * // Error: Whoops, something bad happened
+ * // at [eval]:5:15
+ * // at Script.runInThisContext (node:vm:132:18)
+ * // at Object.runInThisContext (node:vm:309:38)
+ * // at node:internal/process/execution:77:19
+ * // at [eval]-wrapper:6:22
+ * // at evalScript (node:internal/process/execution:76:60)
+ * // at node:internal/main/eval_string:23:3
+ *
+ * const name = 'Will Robinson';
+ * console.warn(`Danger ${name}! Danger!`);
+ * // Prints: Danger Will Robinson! Danger!, to stderr
+ * ```
+ *
+ * Example using the `Console` class:
+ *
+ * ```js
+ * const out = getStreamSomehow();
+ * const err = getStreamSomehow();
+ * const myConsole = new console.Console(out, err);
+ *
+ * myConsole.log('hello world');
+ * // Prints: hello world, to out
+ * myConsole.log('hello %s', 'world');
+ * // Prints: hello world, to out
+ * myConsole.error(new Error('Whoops, something bad happened'));
+ * // Prints: [Error: Whoops, something bad happened], to err
+ *
+ * const name = 'Will Robinson';
+ * myConsole.warn(`Danger ${name}! Danger!`);
+ * // Prints: Danger Will Robinson! Danger!, to err
+ * ```
+ * @see [source](https://github.com/nodejs/node/blob/v16.4.2/lib/console.js)
+ */
+ namespace console {
+ interface ConsoleConstructorOptions {
+ stdout: NodeJS.WritableStream;
+ stderr?: NodeJS.WritableStream | undefined;
+ ignoreErrors?: boolean | undefined;
+ colorMode?: boolean | 'auto' | undefined;
+ inspectOptions?: InspectOptions | undefined;
+ /**
+ * Set group indentation
+ * @default 2
+ */
+ groupIndentation?: number | undefined;
+ }
+ interface ConsoleConstructor {
+ prototype: Console;
+ new (stdout: NodeJS.WritableStream, stderr?: NodeJS.WritableStream, ignoreErrors?: boolean): Console;
+ new (options: ConsoleConstructorOptions): Console;
+ }
+ }
+ var console: Console;
+ }
+ export = globalThis.console;
+}
diff --git a/node_modules/@types/node/constants.d.ts b/node_modules/@types/node/constants.d.ts
new file mode 100755
index 0000000..208020d
--- /dev/null
+++ b/node_modules/@types/node/constants.d.ts
@@ -0,0 +1,18 @@
+/** @deprecated since v6.3.0 - use constants property exposed by the relevant module instead. */
+declare module 'constants' {
+ import { constants as osConstants, SignalConstants } from 'node:os';
+ import { constants as cryptoConstants } from 'node:crypto';
+ import { constants as fsConstants } from 'node:fs';
+
+ const exp: typeof osConstants.errno &
+ typeof osConstants.priority &
+ SignalConstants &
+ typeof cryptoConstants &
+ typeof fsConstants;
+ export = exp;
+}
+
+declare module 'node:constants' {
+ import constants = require('constants');
+ export = constants;
+}
diff --git a/node_modules/@types/node/crypto.d.ts b/node_modules/@types/node/crypto.d.ts
new file mode 100755
index 0000000..0f01c19
--- /dev/null
+++ b/node_modules/@types/node/crypto.d.ts
@@ -0,0 +1,3410 @@
+/**
+ * The `crypto` module provides cryptographic functionality that includes a set of
+ * wrappers for OpenSSL's hash, HMAC, cipher, decipher, sign, and verify functions.
+ *
+ * ```js
+ * const { createHmac } = await import('crypto');
+ *
+ * const secret = 'abcdefg';
+ * const hash = createHmac('sha256', secret)
+ * .update('I love cupcakes')
+ * .digest('hex');
+ * console.log(hash);
+ * // Prints:
+ * // c0fa1bc00531bd78ef38c628449c5102aeabd49b5dc3a2a516ea6ea959d6658e
+ * ```
+ * @see [source](https://github.com/nodejs/node/blob/v18.0.0/lib/crypto.js)
+ */
+declare module 'crypto' {
+ import * as stream from 'node:stream';
+ import { PeerCertificate } from 'node:tls';
+ /**
+ * SPKAC is a Certificate Signing Request mechanism originally implemented by
+ * Netscape and was specified formally as part of [HTML5's `keygen` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/keygen).
+ *
+ * `` is deprecated since [HTML 5.2](https://www.w3.org/TR/html52/changes.html#features-removed) and new projects
+ * should not use this element anymore.
+ *
+ * The `crypto` module provides the `Certificate` class for working with SPKAC
+ * data. The most common usage is handling output generated by the HTML5`` element. Node.js uses [OpenSSL's SPKAC
+ * implementation](https://www.openssl.org/docs/man1.1.0/apps/openssl-spkac.html) internally.
+ * @since v0.11.8
+ */
+ class Certificate {
+ /**
+ * ```js
+ * const { Certificate } = await import('crypto');
+ * const spkac = getSpkacSomehow();
+ * const challenge = Certificate.exportChallenge(spkac);
+ * console.log(challenge.toString('utf8'));
+ * // Prints: the challenge as a UTF8 string
+ * ```
+ * @since v9.0.0
+ * @param encoding The `encoding` of the `spkac` string.
+ * @return The challenge component of the `spkac` data structure, which includes a public key and a challenge.
+ */
+ static exportChallenge(spkac: BinaryLike): Buffer;
+ /**
+ * ```js
+ * const { Certificate } = await import('crypto');
+ * const spkac = getSpkacSomehow();
+ * const publicKey = Certificate.exportPublicKey(spkac);
+ * console.log(publicKey);
+ * // Prints: the public key as
+ * ```
+ * @since v9.0.0
+ * @param encoding The `encoding` of the `spkac` string.
+ * @return The public key component of the `spkac` data structure, which includes a public key and a challenge.
+ */
+ static exportPublicKey(spkac: BinaryLike, encoding?: string): Buffer;
+ /**
+ * ```js
+ * import { Buffer } from 'buffer';
+ * const { Certificate } = await import('crypto');
+ *
+ * const spkac = getSpkacSomehow();
+ * console.log(Certificate.verifySpkac(Buffer.from(spkac)));
+ * // Prints: true or false
+ * ```
+ * @since v9.0.0
+ * @param encoding The `encoding` of the `spkac` string.
+ * @return `true` if the given `spkac` data structure is valid, `false` otherwise.
+ */
+ static verifySpkac(spkac: NodeJS.ArrayBufferView): boolean;
+ /**
+ * @deprecated
+ * @param spkac
+ * @returns The challenge component of the `spkac` data structure,
+ * which includes a public key and a challenge.
+ */
+ exportChallenge(spkac: BinaryLike): Buffer;
+ /**
+ * @deprecated
+ * @param spkac
+ * @param encoding The encoding of the spkac string.
+ * @returns The public key component of the `spkac` data structure,
+ * which includes a public key and a challenge.
+ */
+ exportPublicKey(spkac: BinaryLike, encoding?: string): Buffer;
+ /**
+ * @deprecated
+ * @param spkac
+ * @returns `true` if the given `spkac` data structure is valid,
+ * `false` otherwise.
+ */
+ verifySpkac(spkac: NodeJS.ArrayBufferView): boolean;
+ }
+ namespace constants {
+ // https://nodejs.org/dist/latest-v10.x/docs/api/crypto.html#crypto_crypto_constants
+ const OPENSSL_VERSION_NUMBER: number;
+ /** Applies multiple bug workarounds within OpenSSL. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html for detail. */
+ const SSL_OP_ALL: number;
+ /** Allows legacy insecure renegotiation between OpenSSL and unpatched clients or servers. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html. */
+ const SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: number;
+ /** Attempts to use the server's preferences instead of the client's when selecting a cipher. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html. */
+ const SSL_OP_CIPHER_SERVER_PREFERENCE: number;
+ /** Instructs OpenSSL to use Cisco's "speshul" version of DTLS_BAD_VER. */
+ const SSL_OP_CISCO_ANYCONNECT: number;
+ /** Instructs OpenSSL to turn on cookie exchange. */
+ const SSL_OP_COOKIE_EXCHANGE: number;
+ /** Instructs OpenSSL to add server-hello extension from an early version of the cryptopro draft. */
+ const SSL_OP_CRYPTOPRO_TLSEXT_BUG: number;
+ /** Instructs OpenSSL to disable a SSL 3.0/TLS 1.0 vulnerability workaround added in OpenSSL 0.9.6d. */
+ const SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: number;
+ /** Instructs OpenSSL to always use the tmp_rsa key when performing RSA operations. */
+ const SSL_OP_EPHEMERAL_RSA: number;
+ /** Allows initial connection to servers that do not support RI. */
+ const SSL_OP_LEGACY_SERVER_CONNECT: number;
+ const SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: number;
+ const SSL_OP_MICROSOFT_SESS_ID_BUG: number;
+ /** Instructs OpenSSL to disable the workaround for a man-in-the-middle protocol-version vulnerability in the SSL 2.0 server implementation. */
+ const SSL_OP_MSIE_SSLV2_RSA_PADDING: number;
+ const SSL_OP_NETSCAPE_CA_DN_BUG: number;
+ const SSL_OP_NETSCAPE_CHALLENGE_BUG: number;
+ const SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: number;
+ const SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: number;
+ /** Instructs OpenSSL to disable support for SSL/TLS compression. */
+ const SSL_OP_NO_COMPRESSION: number;
+ const SSL_OP_NO_QUERY_MTU: number;
+ /** Instructs OpenSSL to always start a new session when performing renegotiation. */
+ const SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: number;
+ const SSL_OP_NO_SSLv2: number;
+ const SSL_OP_NO_SSLv3: number;
+ const SSL_OP_NO_TICKET: number;
+ const SSL_OP_NO_TLSv1: number;
+ const SSL_OP_NO_TLSv1_1: number;
+ const SSL_OP_NO_TLSv1_2: number;
+ const SSL_OP_PKCS1_CHECK_1: number;
+ const SSL_OP_PKCS1_CHECK_2: number;
+ /** Instructs OpenSSL to always create a new key when using temporary/ephemeral DH parameters. */
+ const SSL_OP_SINGLE_DH_USE: number;
+ /** Instructs OpenSSL to always create a new key when using temporary/ephemeral ECDH parameters. */
+ const SSL_OP_SINGLE_ECDH_USE: number;
+ const SSL_OP_SSLEAY_080_CLIENT_DH_BUG: number;
+ const SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG: number;
+ const SSL_OP_TLS_BLOCK_PADDING_BUG: number;
+ const SSL_OP_TLS_D5_BUG: number;
+ /** Instructs OpenSSL to disable version rollback attack detection. */
+ const SSL_OP_TLS_ROLLBACK_BUG: number;
+ const ENGINE_METHOD_RSA: number;
+ const ENGINE_METHOD_DSA: number;
+ const ENGINE_METHOD_DH: number;
+ const ENGINE_METHOD_RAND: number;
+ const ENGINE_METHOD_EC: number;
+ const ENGINE_METHOD_CIPHERS: number;
+ const ENGINE_METHOD_DIGESTS: number;
+ const ENGINE_METHOD_PKEY_METHS: number;
+ const ENGINE_METHOD_PKEY_ASN1_METHS: number;
+ const ENGINE_METHOD_ALL: number;
+ const ENGINE_METHOD_NONE: number;
+ const DH_CHECK_P_NOT_SAFE_PRIME: number;
+ const DH_CHECK_P_NOT_PRIME: number;
+ const DH_UNABLE_TO_CHECK_GENERATOR: number;
+ const DH_NOT_SUITABLE_GENERATOR: number;
+ const ALPN_ENABLED: number;
+ const RSA_PKCS1_PADDING: number;
+ const RSA_SSLV23_PADDING: number;
+ const RSA_NO_PADDING: number;
+ const RSA_PKCS1_OAEP_PADDING: number;
+ const RSA_X931_PADDING: number;
+ const RSA_PKCS1_PSS_PADDING: number;
+ /** Sets the salt length for RSA_PKCS1_PSS_PADDING to the digest size when signing or verifying. */
+ const RSA_PSS_SALTLEN_DIGEST: number;
+ /** Sets the salt length for RSA_PKCS1_PSS_PADDING to the maximum permissible value when signing data. */
+ const RSA_PSS_SALTLEN_MAX_SIGN: number;
+ /** Causes the salt length for RSA_PKCS1_PSS_PADDING to be determined automatically when verifying a signature. */
+ const RSA_PSS_SALTLEN_AUTO: number;
+ const POINT_CONVERSION_COMPRESSED: number;
+ const POINT_CONVERSION_UNCOMPRESSED: number;
+ const POINT_CONVERSION_HYBRID: number;
+ /** Specifies the built-in default cipher list used by Node.js (colon-separated values). */
+ const defaultCoreCipherList: string;
+ /** Specifies the active default cipher list used by the current Node.js process (colon-separated values). */
+ const defaultCipherList: string;
+ }
+ interface HashOptions extends stream.TransformOptions {
+ /**
+ * For XOF hash functions such as `shake256`, the
+ * outputLength option can be used to specify the desired output length in bytes.
+ */
+ outputLength?: number | undefined;
+ }
+ /** @deprecated since v10.0.0 */
+ const fips: boolean;
+ /**
+ * Creates and returns a `Hash` object that can be used to generate hash digests
+ * using the given `algorithm`. Optional `options` argument controls stream
+ * behavior. For XOF hash functions such as `'shake256'`, the `outputLength` option
+ * can be used to specify the desired output length in bytes.
+ *
+ * The `algorithm` is dependent on the available algorithms supported by the
+ * version of OpenSSL on the platform. Examples are `'sha256'`, `'sha512'`, etc.
+ * On recent releases of OpenSSL, `openssl list -digest-algorithms` will
+ * display the available digest algorithms.
+ *
+ * Example: generating the sha256 sum of a file
+ *
+ * ```js
+ * import {
+ * createReadStream
+ * } from 'fs';
+ * import { argv } from 'process';
+ * const {
+ * createHash
+ * } = await import('crypto');
+ *
+ * const filename = argv[2];
+ *
+ * const hash = createHash('sha256');
+ *
+ * const input = createReadStream(filename);
+ * input.on('readable', () => {
+ * // Only one element is going to be produced by the
+ * // hash stream.
+ * const data = input.read();
+ * if (data)
+ * hash.update(data);
+ * else {
+ * console.log(`${hash.digest('hex')} ${filename}`);
+ * }
+ * });
+ * ```
+ * @since v0.1.92
+ * @param options `stream.transform` options
+ */
+ function createHash(algorithm: string, options?: HashOptions): Hash;
+ /**
+ * Creates and returns an `Hmac` object that uses the given `algorithm` and `key`.
+ * Optional `options` argument controls stream behavior.
+ *
+ * The `algorithm` is dependent on the available algorithms supported by the
+ * version of OpenSSL on the platform. Examples are `'sha256'`, `'sha512'`, etc.
+ * On recent releases of OpenSSL, `openssl list -digest-algorithms` will
+ * display the available digest algorithms.
+ *
+ * The `key` is the HMAC key used to generate the cryptographic HMAC hash. If it is
+ * a `KeyObject`, its type must be `secret`.
+ *
+ * Example: generating the sha256 HMAC of a file
+ *
+ * ```js
+ * import {
+ * createReadStream
+ * } from 'fs';
+ * import { argv } from 'process';
+ * const {
+ * createHmac
+ * } = await import('crypto');
+ *
+ * const filename = argv[2];
+ *
+ * const hmac = createHmac('sha256', 'a secret');
+ *
+ * const input = createReadStream(filename);
+ * input.on('readable', () => {
+ * // Only one element is going to be produced by the
+ * // hash stream.
+ * const data = input.read();
+ * if (data)
+ * hmac.update(data);
+ * else {
+ * console.log(`${hmac.digest('hex')} ${filename}`);
+ * }
+ * });
+ * ```
+ * @since v0.1.94
+ * @param options `stream.transform` options
+ */
+ function createHmac(algorithm: string, key: BinaryLike | KeyObject, options?: stream.TransformOptions): Hmac;
+ // https://nodejs.org/api/buffer.html#buffer_buffers_and_character_encodings
+ type BinaryToTextEncoding = 'base64' | 'base64url' | 'hex' | 'binary';
+ type CharacterEncoding = 'utf8' | 'utf-8' | 'utf16le' | 'latin1';
+ type LegacyCharacterEncoding = 'ascii' | 'binary' | 'ucs2' | 'ucs-2';
+ type Encoding = BinaryToTextEncoding | CharacterEncoding | LegacyCharacterEncoding;
+ type ECDHKeyFormat = 'compressed' | 'uncompressed' | 'hybrid';
+ /**
+ * The `Hash` class is a utility for creating hash digests of data. It can be
+ * used in one of two ways:
+ *
+ * * As a `stream` that is both readable and writable, where data is written
+ * to produce a computed hash digest on the readable side, or
+ * * Using the `hash.update()` and `hash.digest()` methods to produce the
+ * computed hash.
+ *
+ * The {@link createHash} method is used to create `Hash` instances. `Hash`objects are not to be created directly using the `new` keyword.
+ *
+ * Example: Using `Hash` objects as streams:
+ *
+ * ```js
+ * const {
+ * createHash
+ * } = await import('crypto');
+ *
+ * const hash = createHash('sha256');
+ *
+ * hash.on('readable', () => {
+ * // Only one element is going to be produced by the
+ * // hash stream.
+ * const data = hash.read();
+ * if (data) {
+ * console.log(data.toString('hex'));
+ * // Prints:
+ * // 6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50
+ * }
+ * });
+ *
+ * hash.write('some data to hash');
+ * hash.end();
+ * ```
+ *
+ * Example: Using `Hash` and piped streams:
+ *
+ * ```js
+ * import { createReadStream } from 'fs';
+ * import { stdout } from 'process';
+ * const { createHash } = await import('crypto');
+ *
+ * const hash = createHash('sha256');
+ *
+ * const input = createReadStream('test.js');
+ * input.pipe(hash).setEncoding('hex').pipe(stdout);
+ * ```
+ *
+ * Example: Using the `hash.update()` and `hash.digest()` methods:
+ *
+ * ```js
+ * const {
+ * createHash
+ * } = await import('crypto');
+ *
+ * const hash = createHash('sha256');
+ *
+ * hash.update('some data to hash');
+ * console.log(hash.digest('hex'));
+ * // Prints:
+ * // 6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50
+ * ```
+ * @since v0.1.92
+ */
+ class Hash extends stream.Transform {
+ private constructor();
+ /**
+ * Creates a new `Hash` object that contains a deep copy of the internal state
+ * of the current `Hash` object.
+ *
+ * The optional `options` argument controls stream behavior. For XOF hash
+ * functions such as `'shake256'`, the `outputLength` option can be used to
+ * specify the desired output length in bytes.
+ *
+ * An error is thrown when an attempt is made to copy the `Hash` object after
+ * its `hash.digest()` method has been called.
+ *
+ * ```js
+ * // Calculate a rolling hash.
+ * const {
+ * createHash
+ * } = await import('crypto');
+ *
+ * const hash = createHash('sha256');
+ *
+ * hash.update('one');
+ * console.log(hash.copy().digest('hex'));
+ *
+ * hash.update('two');
+ * console.log(hash.copy().digest('hex'));
+ *
+ * hash.update('three');
+ * console.log(hash.copy().digest('hex'));
+ *
+ * // Etc.
+ * ```
+ * @since v13.1.0
+ * @param options `stream.transform` options
+ */
+ copy(options?: stream.TransformOptions): Hash;
+ /**
+ * Updates the hash content with the given `data`, the encoding of which
+ * is given in `inputEncoding`.
+ * If `encoding` is not provided, and the `data` is a string, an
+ * encoding of `'utf8'` is enforced. If `data` is a `Buffer`, `TypedArray`, or`DataView`, then `inputEncoding` is ignored.
+ *
+ * This can be called many times with new data as it is streamed.
+ * @since v0.1.92
+ * @param inputEncoding The `encoding` of the `data` string.
+ */
+ update(data: BinaryLike): Hash;
+ update(data: string, inputEncoding: Encoding): Hash;
+ /**
+ * Calculates the digest of all of the data passed to be hashed (using the `hash.update()` method).
+ * If `encoding` is provided a string will be returned; otherwise
+ * a `Buffer` is returned.
+ *
+ * The `Hash` object can not be used again after `hash.digest()` method has been
+ * called. Multiple calls will cause an error to be thrown.
+ * @since v0.1.92
+ * @param encoding The `encoding` of the return value.
+ */
+ digest(): Buffer;
+ digest(encoding: BinaryToTextEncoding): string;
+ }
+ /**
+ * The `Hmac` class is a utility for creating cryptographic HMAC digests. It can
+ * be used in one of two ways:
+ *
+ * * As a `stream` that is both readable and writable, where data is written
+ * to produce a computed HMAC digest on the readable side, or
+ * * Using the `hmac.update()` and `hmac.digest()` methods to produce the
+ * computed HMAC digest.
+ *
+ * The {@link createHmac} method is used to create `Hmac` instances. `Hmac`objects are not to be created directly using the `new` keyword.
+ *
+ * Example: Using `Hmac` objects as streams:
+ *
+ * ```js
+ * const {
+ * createHmac
+ * } = await import('crypto');
+ *
+ * const hmac = createHmac('sha256', 'a secret');
+ *
+ * hmac.on('readable', () => {
+ * // Only one element is going to be produced by the
+ * // hash stream.
+ * const data = hmac.read();
+ * if (data) {
+ * console.log(data.toString('hex'));
+ * // Prints:
+ * // 7fd04df92f636fd450bc841c9418e5825c17f33ad9c87c518115a45971f7f77e
+ * }
+ * });
+ *
+ * hmac.write('some data to hash');
+ * hmac.end();
+ * ```
+ *
+ * Example: Using `Hmac` and piped streams:
+ *
+ * ```js
+ * import { createReadStream } from 'fs';
+ * import { stdout } from 'process';
+ * const {
+ * createHmac
+ * } = await import('crypto');
+ *
+ * const hmac = createHmac('sha256', 'a secret');
+ *
+ * const input = createReadStream('test.js');
+ * input.pipe(hmac).pipe(stdout);
+ * ```
+ *
+ * Example: Using the `hmac.update()` and `hmac.digest()` methods:
+ *
+ * ```js
+ * const {
+ * createHmac
+ * } = await import('crypto');
+ *
+ * const hmac = createHmac('sha256', 'a secret');
+ *
+ * hmac.update('some data to hash');
+ * console.log(hmac.digest('hex'));
+ * // Prints:
+ * // 7fd04df92f636fd450bc841c9418e5825c17f33ad9c87c518115a45971f7f77e
+ * ```
+ * @since v0.1.94
+ */
+ class Hmac extends stream.Transform {
+ private constructor();
+ /**
+ * Updates the `Hmac` content with the given `data`, the encoding of which
+ * is given in `inputEncoding`.
+ * If `encoding` is not provided, and the `data` is a string, an
+ * encoding of `'utf8'` is enforced. If `data` is a `Buffer`, `TypedArray`, or`DataView`, then `inputEncoding` is ignored.
+ *
+ * This can be called many times with new data as it is streamed.
+ * @since v0.1.94
+ * @param inputEncoding The `encoding` of the `data` string.
+ */
+ update(data: BinaryLike): Hmac;
+ update(data: string, inputEncoding: Encoding): Hmac;
+ /**
+ * Calculates the HMAC digest of all of the data passed using `hmac.update()`.
+ * If `encoding` is
+ * provided a string is returned; otherwise a `Buffer` is returned;
+ *
+ * The `Hmac` object can not be used again after `hmac.digest()` has been
+ * called. Multiple calls to `hmac.digest()` will result in an error being thrown.
+ * @since v0.1.94
+ * @param encoding The `encoding` of the return value.
+ */
+ digest(): Buffer;
+ digest(encoding: BinaryToTextEncoding): string;
+ }
+ type KeyObjectType = 'secret' | 'public' | 'private';
+ interface KeyExportOptions {
+ type: 'pkcs1' | 'spki' | 'pkcs8' | 'sec1';
+ format: T;
+ cipher?: string | undefined;
+ passphrase?: string | Buffer | undefined;
+ }
+ interface JwkKeyExportOptions {
+ format: 'jwk';
+ }
+ interface JsonWebKey {
+ crv?: string | undefined;
+ d?: string | undefined;
+ dp?: string | undefined;
+ dq?: string | undefined;
+ e?: string | undefined;
+ k?: string | undefined;
+ kty?: string | undefined;
+ n?: string | undefined;
+ p?: string | undefined;
+ q?: string | undefined;
+ qi?: string | undefined;
+ x?: string | undefined;
+ y?: string | undefined;
+ [key: string]: unknown;
+ }
+ interface AsymmetricKeyDetails {
+ /**
+ * Key size in bits (RSA, DSA).
+ */
+ modulusLength?: number | undefined;
+ /**
+ * Public exponent (RSA).
+ */
+ publicExponent?: bigint | undefined;
+ /**
+ * Name of the message digest (RSA-PSS).
+ */
+ hashAlgorithm?: string | undefined;
+ /**
+ * Name of the message digest used by MGF1 (RSA-PSS).
+ */
+ mgf1HashAlgorithm?: string | undefined;
+ /**
+ * Minimal salt length in bytes (RSA-PSS).
+ */
+ saltLength?: number | undefined;
+ /**
+ * Size of q in bits (DSA).
+ */
+ divisorLength?: number | undefined;
+ /**
+ * Name of the curve (EC).
+ */
+ namedCurve?: string | undefined;
+ }
+ interface JwkKeyExportOptions {
+ format: 'jwk';
+ }
+ /**
+ * Node.js uses a `KeyObject` class to represent a symmetric or asymmetric key,
+ * and each kind of key exposes different functions. The {@link createSecretKey}, {@link createPublicKey} and {@link createPrivateKey} methods are used to create `KeyObject`instances. `KeyObject`
+ * objects are not to be created directly using the `new`keyword.
+ *
+ * Most applications should consider using the new `KeyObject` API instead of
+ * passing keys as strings or `Buffer`s due to improved security features.
+ *
+ * `KeyObject` instances can be passed to other threads via `postMessage()`.
+ * The receiver obtains a cloned `KeyObject`, and the `KeyObject` does not need to
+ * be listed in the `transferList` argument.
+ * @since v11.6.0
+ */
+ class KeyObject {
+ private constructor();
+ /**
+ * Example: Converting a `CryptoKey` instance to a `KeyObject`:
+ *
+ * ```js
+ * const { webcrypto, KeyObject } = await import('crypto');
+ * const { subtle } = webcrypto;
+ *
+ * const key = await subtle.generateKey({
+ * name: 'HMAC',
+ * hash: 'SHA-256',
+ * length: 256
+ * }, true, ['sign', 'verify']);
+ *
+ * const keyObject = KeyObject.from(key);
+ * console.log(keyObject.symmetricKeySize);
+ * // Prints: 32 (symmetric key size in bytes)
+ * ```
+ * @since v15.0.0
+ */
+ static from(key: webcrypto.CryptoKey): KeyObject;
+ /**
+ * For asymmetric keys, this property represents the type of the key. Supported key
+ * types are:
+ *
+ * * `'rsa'` (OID 1.2.840.113549.1.1.1)
+ * * `'rsa-pss'` (OID 1.2.840.113549.1.1.10)
+ * * `'dsa'` (OID 1.2.840.10040.4.1)
+ * * `'ec'` (OID 1.2.840.10045.2.1)
+ * * `'x25519'` (OID 1.3.101.110)
+ * * `'x448'` (OID 1.3.101.111)
+ * * `'ed25519'` (OID 1.3.101.112)
+ * * `'ed448'` (OID 1.3.101.113)
+ * * `'dh'` (OID 1.2.840.113549.1.3.1)
+ *
+ * This property is `undefined` for unrecognized `KeyObject` types and symmetric
+ * keys.
+ * @since v11.6.0
+ */
+ asymmetricKeyType?: KeyType | undefined;
+ /**
+ * For asymmetric keys, this property represents the size of the embedded key in
+ * bytes. This property is `undefined` for symmetric keys.
+ */
+ asymmetricKeySize?: number | undefined;
+ /**
+ * This property exists only on asymmetric keys. Depending on the type of the key,
+ * this object contains information about the key. None of the information obtained
+ * through this property can be used to uniquely identify a key or to compromise
+ * the security of the key.
+ *
+ * For RSA-PSS keys, if the key material contains a `RSASSA-PSS-params` sequence,
+ * the `hashAlgorithm`, `mgf1HashAlgorithm`, and `saltLength` properties will be
+ * set.
+ *
+ * Other key details might be exposed via this API using additional attributes.
+ * @since v15.7.0
+ */
+ asymmetricKeyDetails?: AsymmetricKeyDetails | undefined;
+ /**
+ * For symmetric keys, the following encoding options can be used:
+ *
+ * For public keys, the following encoding options can be used:
+ *
+ * For private keys, the following encoding options can be used:
+ *
+ * The result type depends on the selected encoding format, when PEM the
+ * result is a string, when DER it will be a buffer containing the data
+ * encoded as DER, when [JWK](https://tools.ietf.org/html/rfc7517) it will be an object.
+ *
+ * When [JWK](https://tools.ietf.org/html/rfc7517) encoding format was selected, all other encoding options are
+ * ignored.
+ *
+ * PKCS#1, SEC1, and PKCS#8 type keys can be encrypted by using a combination of
+ * the `cipher` and `format` options. The PKCS#8 `type` can be used with any`format` to encrypt any key algorithm (RSA, EC, or DH) by specifying a`cipher`. PKCS#1 and SEC1 can only be
+ * encrypted by specifying a `cipher`when the PEM `format` is used. For maximum compatibility, use PKCS#8 for
+ * encrypted private keys. Since PKCS#8 defines its own
+ * encryption mechanism, PEM-level encryption is not supported when encrypting
+ * a PKCS#8 key. See [RFC 5208](https://www.rfc-editor.org/rfc/rfc5208.txt) for PKCS#8 encryption and [RFC 1421](https://www.rfc-editor.org/rfc/rfc1421.txt) for
+ * PKCS#1 and SEC1 encryption.
+ * @since v11.6.0
+ */
+ export(options: KeyExportOptions<'pem'>): string | Buffer;
+ export(options?: KeyExportOptions<'der'>): Buffer;
+ export(options?: JwkKeyExportOptions): JsonWebKey;
+ /**
+ * For secret keys, this property represents the size of the key in bytes. This
+ * property is `undefined` for asymmetric keys.
+ * @since v11.6.0
+ */
+ symmetricKeySize?: number | undefined;
+ /**
+ * Depending on the type of this `KeyObject`, this property is either`'secret'` for secret (symmetric) keys, `'public'` for public (asymmetric) keys
+ * or `'private'` for private (asymmetric) keys.
+ * @since v11.6.0
+ */
+ type: KeyObjectType;
+ }
+ type CipherCCMTypes = 'aes-128-ccm' | 'aes-192-ccm' | 'aes-256-ccm' | 'chacha20-poly1305';
+ type CipherGCMTypes = 'aes-128-gcm' | 'aes-192-gcm' | 'aes-256-gcm';
+ type CipherOCBTypes = 'aes-128-ocb' | 'aes-192-ocb' | 'aes-256-ocb';
+ type BinaryLike = string | NodeJS.ArrayBufferView;
+ type CipherKey = BinaryLike | KeyObject;
+ interface CipherCCMOptions extends stream.TransformOptions {
+ authTagLength: number;
+ }
+ interface CipherGCMOptions extends stream.TransformOptions {
+ authTagLength?: number | undefined;
+ }
+ interface CipherOCBOptions extends stream.TransformOptions {
+ authTagLength: number;
+ }
+ /**
+ * Creates and returns a `Cipher` object that uses the given `algorithm` and`password`.
+ *
+ * The `options` argument controls stream behavior and is optional except when a
+ * cipher in CCM or OCB mode (e.g. `'aes-128-ccm'`) is used. In that case, the`authTagLength` option is required and specifies the length of the
+ * authentication tag in bytes, see `CCM mode`. In GCM mode, the `authTagLength`option is not required but can be used to set the length of the authentication
+ * tag that will be returned by `getAuthTag()` and defaults to 16 bytes.
+ * For `chacha20-poly1305`, the `authTagLength` option defaults to 16 bytes.
+ *
+ * The `algorithm` is dependent on OpenSSL, examples are `'aes192'`, etc. On
+ * recent OpenSSL releases, `openssl list -cipher-algorithms` will
+ * display the available cipher algorithms.
+ *
+ * The `password` is used to derive the cipher key and initialization vector (IV).
+ * The value must be either a `'latin1'` encoded string, a `Buffer`, a`TypedArray`, or a `DataView`.
+ *
+ * The implementation of `crypto.createCipher()` derives keys using the OpenSSL
+ * function [`EVP_BytesToKey`](https://www.openssl.org/docs/man1.1.0/crypto/EVP_BytesToKey.html) with the digest algorithm set to MD5, one
+ * iteration, and no salt. The lack of salt allows dictionary attacks as the same
+ * password always creates the same key. The low iteration count and
+ * non-cryptographically secure hash algorithm allow passwords to be tested very
+ * rapidly.
+ *
+ * In line with OpenSSL's recommendation to use a more modern algorithm instead of [`EVP_BytesToKey`](https://www.openssl.org/docs/man1.1.0/crypto/EVP_BytesToKey.html) it is recommended that
+ * developers derive a key and IV on
+ * their own using {@link scrypt} and to use {@link createCipheriv} to create the `Cipher` object. Users should not use ciphers with counter mode
+ * (e.g. CTR, GCM, or CCM) in `crypto.createCipher()`. A warning is emitted when
+ * they are used in order to avoid the risk of IV reuse that causes
+ * vulnerabilities. For the case when IV is reused in GCM, see [Nonce-Disrespecting Adversaries](https://github.com/nonce-disrespect/nonce-disrespect) for details.
+ * @since v0.1.94
+ * @deprecated Since v10.0.0 - Use {@link createCipheriv} instead.
+ * @param options `stream.transform` options
+ */
+ function createCipher(algorithm: CipherCCMTypes, password: BinaryLike, options: CipherCCMOptions): CipherCCM;
+ /** @deprecated since v10.0.0 use `createCipheriv()` */
+ function createCipher(algorithm: CipherGCMTypes, password: BinaryLike, options?: CipherGCMOptions): CipherGCM;
+ /** @deprecated since v10.0.0 use `createCipheriv()` */
+ function createCipher(algorithm: string, password: BinaryLike, options?: stream.TransformOptions): Cipher;
+ /**
+ * Creates and returns a `Cipher` object, with the given `algorithm`, `key` and
+ * initialization vector (`iv`).
+ *
+ * The `options` argument controls stream behavior and is optional except when a
+ * cipher in CCM or OCB mode (e.g. `'aes-128-ccm'`) is used. In that case, the`authTagLength` option is required and specifies the length of the
+ * authentication tag in bytes, see `CCM mode`. In GCM mode, the `authTagLength`option is not required but can be used to set the length of the authentication
+ * tag that will be returned by `getAuthTag()` and defaults to 16 bytes.
+ * For `chacha20-poly1305`, the `authTagLength` option defaults to 16 bytes.
+ *
+ * The `algorithm` is dependent on OpenSSL, examples are `'aes192'`, etc. On
+ * recent OpenSSL releases, `openssl list -cipher-algorithms` will
+ * display the available cipher algorithms.
+ *
+ * The `key` is the raw key used by the `algorithm` and `iv` is an [initialization vector](https://en.wikipedia.org/wiki/Initialization_vector). Both arguments must be `'utf8'` encoded
+ * strings,`Buffers`, `TypedArray`, or `DataView`s. The `key` may optionally be
+ * a `KeyObject` of type `secret`. If the cipher does not need
+ * an initialization vector, `iv` may be `null`.
+ *
+ * When passing strings for `key` or `iv`, please consider `caveats when using strings as inputs to cryptographic APIs`.
+ *
+ * Initialization vectors should be unpredictable and unique; ideally, they will be
+ * cryptographically random. They do not have to be secret: IVs are typically just
+ * added to ciphertext messages unencrypted. It may sound contradictory that
+ * something has to be unpredictable and unique, but does not have to be secret;
+ * remember that an attacker must not be able to predict ahead of time what a
+ * given IV will be.
+ * @since v0.1.94
+ * @param options `stream.transform` options
+ */
+ function createCipheriv(algorithm: CipherCCMTypes, key: CipherKey, iv: BinaryLike, options: CipherCCMOptions): CipherCCM;
+ function createCipheriv(algorithm: CipherOCBTypes, key: CipherKey, iv: BinaryLike, options: CipherOCBOptions): CipherOCB;
+ function createCipheriv(algorithm: CipherGCMTypes, key: CipherKey, iv: BinaryLike, options?: CipherGCMOptions): CipherGCM;
+ function createCipheriv(algorithm: string, key: CipherKey, iv: BinaryLike | null, options?: stream.TransformOptions): Cipher;
+ /**
+ * Instances of the `Cipher` class are used to encrypt data. The class can be
+ * used in one of two ways:
+ *
+ * * As a `stream` that is both readable and writable, where plain unencrypted
+ * data is written to produce encrypted data on the readable side, or
+ * * Using the `cipher.update()` and `cipher.final()` methods to produce
+ * the encrypted data.
+ *
+ * The {@link createCipher} or {@link createCipheriv} methods are
+ * used to create `Cipher` instances. `Cipher` objects are not to be created
+ * directly using the `new` keyword.
+ *
+ * Example: Using `Cipher` objects as streams:
+ *
+ * ```js
+ * const {
+ * scrypt,
+ * randomFill,
+ * createCipheriv
+ * } = await import('crypto');
+ *
+ * const algorithm = 'aes-192-cbc';
+ * const password = 'Password used to generate key';
+ *
+ * // First, we'll generate the key. The key length is dependent on the algorithm.
+ * // In this case for aes192, it is 24 bytes (192 bits).
+ * scrypt(password, 'salt', 24, (err, key) => {
+ * if (err) throw err;
+ * // Then, we'll generate a random initialization vector
+ * randomFill(new Uint8Array(16), (err, iv) => {
+ * if (err) throw err;
+ *
+ * // Once we have the key and iv, we can create and use the cipher...
+ * const cipher = createCipheriv(algorithm, key, iv);
+ *
+ * let encrypted = '';
+ * cipher.setEncoding('hex');
+ *
+ * cipher.on('data', (chunk) => encrypted += chunk);
+ * cipher.on('end', () => console.log(encrypted));
+ *
+ * cipher.write('some clear text data');
+ * cipher.end();
+ * });
+ * });
+ * ```
+ *
+ * Example: Using `Cipher` and piped streams:
+ *
+ * ```js
+ * import {
+ * createReadStream,
+ * createWriteStream,
+ * } from 'fs';
+ *
+ * import {
+ * pipeline
+ * } from 'stream';
+ *
+ * const {
+ * scrypt,
+ * randomFill,
+ * createCipheriv
+ * } = await import('crypto');
+ *
+ * const algorithm = 'aes-192-cbc';
+ * const password = 'Password used to generate key';
+ *
+ * // First, we'll generate the key. The key length is dependent on the algorithm.
+ * // In this case for aes192, it is 24 bytes (192 bits).
+ * scrypt(password, 'salt', 24, (err, key) => {
+ * if (err) throw err;
+ * // Then, we'll generate a random initialization vector
+ * randomFill(new Uint8Array(16), (err, iv) => {
+ * if (err) throw err;
+ *
+ * const cipher = createCipheriv(algorithm, key, iv);
+ *
+ * const input = createReadStream('test.js');
+ * const output = createWriteStream('test.enc');
+ *
+ * pipeline(input, cipher, output, (err) => {
+ * if (err) throw err;
+ * });
+ * });
+ * });
+ * ```
+ *
+ * Example: Using the `cipher.update()` and `cipher.final()` methods:
+ *
+ * ```js
+ * const {
+ * scrypt,
+ * randomFill,
+ * createCipheriv
+ * } = await import('crypto');
+ *
+ * const algorithm = 'aes-192-cbc';
+ * const password = 'Password used to generate key';
+ *
+ * // First, we'll generate the key. The key length is dependent on the algorithm.
+ * // In this case for aes192, it is 24 bytes (192 bits).
+ * scrypt(password, 'salt', 24, (err, key) => {
+ * if (err) throw err;
+ * // Then, we'll generate a random initialization vector
+ * randomFill(new Uint8Array(16), (err, iv) => {
+ * if (err) throw err;
+ *
+ * const cipher = createCipheriv(algorithm, key, iv);
+ *
+ * let encrypted = cipher.update('some clear text data', 'utf8', 'hex');
+ * encrypted += cipher.final('hex');
+ * console.log(encrypted);
+ * });
+ * });
+ * ```
+ * @since v0.1.94
+ */
+ class Cipher extends stream.Transform {
+ private constructor();
+ /**
+ * Updates the cipher with `data`. If the `inputEncoding` argument is given,
+ * the `data`argument is a string using the specified encoding. If the `inputEncoding`argument is not given, `data` must be a `Buffer`, `TypedArray`, or`DataView`. If `data` is a `Buffer`,
+ * `TypedArray`, or `DataView`, then`inputEncoding` is ignored.
+ *
+ * The `outputEncoding` specifies the output format of the enciphered
+ * data. If the `outputEncoding`is specified, a string using the specified encoding is returned. If no`outputEncoding` is provided, a `Buffer` is returned.
+ *
+ * The `cipher.update()` method can be called multiple times with new data until `cipher.final()` is called. Calling `cipher.update()` after `cipher.final()` will result in an error being
+ * thrown.
+ * @since v0.1.94
+ * @param inputEncoding The `encoding` of the data.
+ * @param outputEncoding The `encoding` of the return value.
+ */
+ update(data: BinaryLike): Buffer;
+ update(data: string, inputEncoding: Encoding): Buffer;
+ update(data: NodeJS.ArrayBufferView, inputEncoding: undefined, outputEncoding: Encoding): string;
+ update(data: string, inputEncoding: Encoding | undefined, outputEncoding: Encoding): string;
+ /**
+ * Once the `cipher.final()` method has been called, the `Cipher` object can no
+ * longer be used to encrypt data. Attempts to call `cipher.final()` more than
+ * once will result in an error being thrown.
+ * @since v0.1.94
+ * @param outputEncoding The `encoding` of the return value.
+ * @return Any remaining enciphered contents. If `outputEncoding` is specified, a string is returned. If an `outputEncoding` is not provided, a {@link Buffer} is returned.
+ */
+ final(): Buffer;
+ final(outputEncoding: BufferEncoding): string;
+ /**
+ * When using block encryption algorithms, the `Cipher` class will automatically
+ * add padding to the input data to the appropriate block size. To disable the
+ * default padding call `cipher.setAutoPadding(false)`.
+ *
+ * When `autoPadding` is `false`, the length of the entire input data must be a
+ * multiple of the cipher's block size or `cipher.final()` will throw an error.
+ * Disabling automatic padding is useful for non-standard padding, for instance
+ * using `0x0` instead of PKCS padding.
+ *
+ * The `cipher.setAutoPadding()` method must be called before `cipher.final()`.
+ * @since v0.7.1
+ * @param [autoPadding=true]
+ * @return for method chaining.
+ */
+ setAutoPadding(autoPadding?: boolean): this;
+ }
+ interface CipherCCM extends Cipher {
+ setAAD(
+ buffer: NodeJS.ArrayBufferView,
+ options: {
+ plaintextLength: number;
+ }
+ ): this;
+ getAuthTag(): Buffer;
+ }
+ interface CipherGCM extends Cipher {
+ setAAD(
+ buffer: NodeJS.ArrayBufferView,
+ options?: {
+ plaintextLength: number;
+ }
+ ): this;
+ getAuthTag(): Buffer;
+ }
+ interface CipherOCB extends Cipher {
+ setAAD(
+ buffer: NodeJS.ArrayBufferView,
+ options?: {
+ plaintextLength: number;
+ }
+ ): this;
+ getAuthTag(): Buffer;
+ }
+ /**
+ * Creates and returns a `Decipher` object that uses the given `algorithm` and`password` (key).
+ *
+ * The `options` argument controls stream behavior and is optional except when a
+ * cipher in CCM or OCB mode (e.g. `'aes-128-ccm'`) is used. In that case, the`authTagLength` option is required and specifies the length of the
+ * authentication tag in bytes, see `CCM mode`.
+ * For `chacha20-poly1305`, the `authTagLength` option defaults to 16 bytes.
+ *
+ * The implementation of `crypto.createDecipher()` derives keys using the OpenSSL
+ * function [`EVP_BytesToKey`](https://www.openssl.org/docs/man1.1.0/crypto/EVP_BytesToKey.html) with the digest algorithm set to MD5, one
+ * iteration, and no salt. The lack of salt allows dictionary attacks as the same
+ * password always creates the same key. The low iteration count and
+ * non-cryptographically secure hash algorithm allow passwords to be tested very
+ * rapidly.
+ *
+ * In line with OpenSSL's recommendation to use a more modern algorithm instead of [`EVP_BytesToKey`](https://www.openssl.org/docs/man1.1.0/crypto/EVP_BytesToKey.html) it is recommended that
+ * developers derive a key and IV on
+ * their own using {@link scrypt} and to use {@link createDecipheriv} to create the `Decipher` object.
+ * @since v0.1.94
+ * @deprecated Since v10.0.0 - Use {@link createDecipheriv} instead.
+ * @param options `stream.transform` options
+ */
+ function createDecipher(algorithm: CipherCCMTypes, password: BinaryLike, options: CipherCCMOptions): DecipherCCM;
+ /** @deprecated since v10.0.0 use `createDecipheriv()` */
+ function createDecipher(algorithm: CipherGCMTypes, password: BinaryLike, options?: CipherGCMOptions): DecipherGCM;
+ /** @deprecated since v10.0.0 use `createDecipheriv()` */
+ function createDecipher(algorithm: string, password: BinaryLike, options?: stream.TransformOptions): Decipher;
+ /**
+ * Creates and returns a `Decipher` object that uses the given `algorithm`, `key`and initialization vector (`iv`).
+ *
+ * The `options` argument controls stream behavior and is optional except when a
+ * cipher in CCM or OCB mode (e.g. `'aes-128-ccm'`) is used. In that case, the`authTagLength` option is required and specifies the length of the
+ * authentication tag in bytes, see `CCM mode`. In GCM mode, the `authTagLength`option is not required but can be used to restrict accepted authentication tags
+ * to those with the specified length.
+ * For `chacha20-poly1305`, the `authTagLength` option defaults to 16 bytes.
+ *
+ * The `algorithm` is dependent on OpenSSL, examples are `'aes192'`, etc. On
+ * recent OpenSSL releases, `openssl list -cipher-algorithms` will
+ * display the available cipher algorithms.
+ *
+ * The `key` is the raw key used by the `algorithm` and `iv` is an [initialization vector](https://en.wikipedia.org/wiki/Initialization_vector). Both arguments must be `'utf8'` encoded
+ * strings,`Buffers`, `TypedArray`, or `DataView`s. The `key` may optionally be
+ * a `KeyObject` of type `secret`. If the cipher does not need
+ * an initialization vector, `iv` may be `null`.
+ *
+ * When passing strings for `key` or `iv`, please consider `caveats when using strings as inputs to cryptographic APIs`.
+ *
+ * Initialization vectors should be unpredictable and unique; ideally, they will be
+ * cryptographically random. They do not have to be secret: IVs are typically just
+ * added to ciphertext messages unencrypted. It may sound contradictory that
+ * something has to be unpredictable and unique, but does not have to be secret;
+ * remember that an attacker must not be able to predict ahead of time what a given
+ * IV will be.
+ * @since v0.1.94
+ * @param options `stream.transform` options
+ */
+ function createDecipheriv(algorithm: CipherCCMTypes, key: CipherKey, iv: BinaryLike, options: CipherCCMOptions): DecipherCCM;
+ function createDecipheriv(algorithm: CipherOCBTypes, key: CipherKey, iv: BinaryLike, options: CipherOCBOptions): DecipherOCB;
+ function createDecipheriv(algorithm: CipherGCMTypes, key: CipherKey, iv: BinaryLike, options?: CipherGCMOptions): DecipherGCM;
+ function createDecipheriv(algorithm: string, key: CipherKey, iv: BinaryLike | null, options?: stream.TransformOptions): Decipher;
+ /**
+ * Instances of the `Decipher` class are used to decrypt data. The class can be
+ * used in one of two ways:
+ *
+ * * As a `stream` that is both readable and writable, where plain encrypted
+ * data is written to produce unencrypted data on the readable side, or
+ * * Using the `decipher.update()` and `decipher.final()` methods to
+ * produce the unencrypted data.
+ *
+ * The {@link createDecipher} or {@link createDecipheriv} methods are
+ * used to create `Decipher` instances. `Decipher` objects are not to be created
+ * directly using the `new` keyword.
+ *
+ * Example: Using `Decipher` objects as streams:
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ * const {
+ * scryptSync,
+ * createDecipheriv
+ * } = await import('crypto');
+ *
+ * const algorithm = 'aes-192-cbc';
+ * const password = 'Password used to generate key';
+ * // Key length is dependent on the algorithm. In this case for aes192, it is
+ * // 24 bytes (192 bits).
+ * // Use the async `crypto.scrypt()` instead.
+ * const key = scryptSync(password, 'salt', 24);
+ * // The IV is usually passed along with the ciphertext.
+ * const iv = Buffer.alloc(16, 0); // Initialization vector.
+ *
+ * const decipher = createDecipheriv(algorithm, key, iv);
+ *
+ * let decrypted = '';
+ * decipher.on('readable', () => {
+ * while (null !== (chunk = decipher.read())) {
+ * decrypted += chunk.toString('utf8');
+ * }
+ * });
+ * decipher.on('end', () => {
+ * console.log(decrypted);
+ * // Prints: some clear text data
+ * });
+ *
+ * // Encrypted with same algorithm, key and iv.
+ * const encrypted =
+ * 'e5f79c5915c02171eec6b212d5520d44480993d7d622a7c4c2da32f6efda0ffa';
+ * decipher.write(encrypted, 'hex');
+ * decipher.end();
+ * ```
+ *
+ * Example: Using `Decipher` and piped streams:
+ *
+ * ```js
+ * import {
+ * createReadStream,
+ * createWriteStream,
+ * } from 'fs';
+ * import { Buffer } from 'buffer';
+ * const {
+ * scryptSync,
+ * createDecipheriv
+ * } = await import('crypto');
+ *
+ * const algorithm = 'aes-192-cbc';
+ * const password = 'Password used to generate key';
+ * // Use the async `crypto.scrypt()` instead.
+ * const key = scryptSync(password, 'salt', 24);
+ * // The IV is usually passed along with the ciphertext.
+ * const iv = Buffer.alloc(16, 0); // Initialization vector.
+ *
+ * const decipher = createDecipheriv(algorithm, key, iv);
+ *
+ * const input = createReadStream('test.enc');
+ * const output = createWriteStream('test.js');
+ *
+ * input.pipe(decipher).pipe(output);
+ * ```
+ *
+ * Example: Using the `decipher.update()` and `decipher.final()` methods:
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ * const {
+ * scryptSync,
+ * createDecipheriv
+ * } = await import('crypto');
+ *
+ * const algorithm = 'aes-192-cbc';
+ * const password = 'Password used to generate key';
+ * // Use the async `crypto.scrypt()` instead.
+ * const key = scryptSync(password, 'salt', 24);
+ * // The IV is usually passed along with the ciphertext.
+ * const iv = Buffer.alloc(16, 0); // Initialization vector.
+ *
+ * const decipher = createDecipheriv(algorithm, key, iv);
+ *
+ * // Encrypted using same algorithm, key and iv.
+ * const encrypted =
+ * 'e5f79c5915c02171eec6b212d5520d44480993d7d622a7c4c2da32f6efda0ffa';
+ * let decrypted = decipher.update(encrypted, 'hex', 'utf8');
+ * decrypted += decipher.final('utf8');
+ * console.log(decrypted);
+ * // Prints: some clear text data
+ * ```
+ * @since v0.1.94
+ */
+ class Decipher extends stream.Transform {
+ private constructor();
+ /**
+ * Updates the decipher with `data`. If the `inputEncoding` argument is given,
+ * the `data`argument is a string using the specified encoding. If the `inputEncoding`argument is not given, `data` must be a `Buffer`. If `data` is a `Buffer` then `inputEncoding` is
+ * ignored.
+ *
+ * The `outputEncoding` specifies the output format of the enciphered
+ * data. If the `outputEncoding`is specified, a string using the specified encoding is returned. If no`outputEncoding` is provided, a `Buffer` is returned.
+ *
+ * The `decipher.update()` method can be called multiple times with new data until `decipher.final()` is called. Calling `decipher.update()` after `decipher.final()` will result in an error
+ * being thrown.
+ * @since v0.1.94
+ * @param inputEncoding The `encoding` of the `data` string.
+ * @param outputEncoding The `encoding` of the return value.
+ */
+ update(data: NodeJS.ArrayBufferView): Buffer;
+ update(data: string, inputEncoding: Encoding): Buffer;
+ update(data: NodeJS.ArrayBufferView, inputEncoding: undefined, outputEncoding: Encoding): string;
+ update(data: string, inputEncoding: Encoding | undefined, outputEncoding: Encoding): string;
+ /**
+ * Once the `decipher.final()` method has been called, the `Decipher` object can
+ * no longer be used to decrypt data. Attempts to call `decipher.final()` more
+ * than once will result in an error being thrown.
+ * @since v0.1.94
+ * @param outputEncoding The `encoding` of the return value.
+ * @return Any remaining deciphered contents. If `outputEncoding` is specified, a string is returned. If an `outputEncoding` is not provided, a {@link Buffer} is returned.
+ */
+ final(): Buffer;
+ final(outputEncoding: BufferEncoding): string;
+ /**
+ * When data has been encrypted without standard block padding, calling`decipher.setAutoPadding(false)` will disable automatic padding to prevent `decipher.final()` from checking for and
+ * removing padding.
+ *
+ * Turning auto padding off will only work if the input data's length is a
+ * multiple of the ciphers block size.
+ *
+ * The `decipher.setAutoPadding()` method must be called before `decipher.final()`.
+ * @since v0.7.1
+ * @param [autoPadding=true]
+ * @return for method chaining.
+ */
+ setAutoPadding(auto_padding?: boolean): this;
+ }
+ interface DecipherCCM extends Decipher {
+ setAuthTag(buffer: NodeJS.ArrayBufferView): this;
+ setAAD(
+ buffer: NodeJS.ArrayBufferView,
+ options: {
+ plaintextLength: number;
+ }
+ ): this;
+ }
+ interface DecipherGCM extends Decipher {
+ setAuthTag(buffer: NodeJS.ArrayBufferView): this;
+ setAAD(
+ buffer: NodeJS.ArrayBufferView,
+ options?: {
+ plaintextLength: number;
+ }
+ ): this;
+ }
+ interface DecipherOCB extends Decipher {
+ setAuthTag(buffer: NodeJS.ArrayBufferView): this;
+ setAAD(
+ buffer: NodeJS.ArrayBufferView,
+ options?: {
+ plaintextLength: number;
+ }
+ ): this;
+ }
+ interface PrivateKeyInput {
+ key: string | Buffer;
+ format?: KeyFormat | undefined;
+ type?: 'pkcs1' | 'pkcs8' | 'sec1' | undefined;
+ passphrase?: string | Buffer | undefined;
+ }
+ interface PublicKeyInput {
+ key: string | Buffer;
+ format?: KeyFormat | undefined;
+ type?: 'pkcs1' | 'spki' | undefined;
+ }
+ /**
+ * Asynchronously generates a new random secret key of the given `length`. The`type` will determine which validations will be performed on the `length`.
+ *
+ * ```js
+ * const {
+ * generateKey
+ * } = await import('crypto');
+ *
+ * generateKey('hmac', { length: 64 }, (err, key) => {
+ * if (err) throw err;
+ * console.log(key.export().toString('hex')); // 46e..........620
+ * });
+ * ```
+ * @since v15.0.0
+ * @param type The intended use of the generated secret key. Currently accepted values are `'hmac'` and `'aes'`.
+ */
+ function generateKey(
+ type: 'hmac' | 'aes',
+ options: {
+ length: number;
+ },
+ callback: (err: Error | null, key: KeyObject) => void
+ ): void;
+ /**
+ * Synchronously generates a new random secret key of the given `length`. The`type` will determine which validations will be performed on the `length`.
+ *
+ * ```js
+ * const {
+ * generateKeySync
+ * } = await import('crypto');
+ *
+ * const key = generateKeySync('hmac', { length: 64 });
+ * console.log(key.export().toString('hex')); // e89..........41e
+ * ```
+ * @since v15.0.0
+ * @param type The intended use of the generated secret key. Currently accepted values are `'hmac'` and `'aes'`.
+ */
+ function generateKeySync(
+ type: 'hmac' | 'aes',
+ options: {
+ length: number;
+ }
+ ): KeyObject;
+ interface JsonWebKeyInput {
+ key: JsonWebKey;
+ format: 'jwk';
+ }
+ /**
+ * Creates and returns a new key object containing a private key. If `key` is a
+ * string or `Buffer`, `format` is assumed to be `'pem'`; otherwise, `key`must be an object with the properties described above.
+ *
+ * If the private key is encrypted, a `passphrase` must be specified. The length
+ * of the passphrase is limited to 1024 bytes.
+ * @since v11.6.0
+ */
+ function createPrivateKey(key: PrivateKeyInput | string | Buffer | JsonWebKeyInput): KeyObject;
+ /**
+ * Creates and returns a new key object containing a public key. If `key` is a
+ * string or `Buffer`, `format` is assumed to be `'pem'`; if `key` is a `KeyObject`with type `'private'`, the public key is derived from the given private key;
+ * otherwise, `key` must be an object with the properties described above.
+ *
+ * If the format is `'pem'`, the `'key'` may also be an X.509 certificate.
+ *
+ * Because public keys can be derived from private keys, a private key may be
+ * passed instead of a public key. In that case, this function behaves as if {@link createPrivateKey} had been called, except that the type of the
+ * returned `KeyObject` will be `'public'` and that the private key cannot be
+ * extracted from the returned `KeyObject`. Similarly, if a `KeyObject` with type`'private'` is given, a new `KeyObject` with type `'public'` will be returned
+ * and it will be impossible to extract the private key from the returned object.
+ * @since v11.6.0
+ */
+ function createPublicKey(key: PublicKeyInput | string | Buffer | KeyObject | JsonWebKeyInput): KeyObject;
+ /**
+ * Creates and returns a new key object containing a secret key for symmetric
+ * encryption or `Hmac`.
+ * @since v11.6.0
+ * @param encoding The string encoding when `key` is a string.
+ */
+ function createSecretKey(key: NodeJS.ArrayBufferView): KeyObject;
+ function createSecretKey(key: string, encoding: BufferEncoding): KeyObject;
+ /**
+ * Creates and returns a `Sign` object that uses the given `algorithm`. Use {@link getHashes} to obtain the names of the available digest algorithms.
+ * Optional `options` argument controls the `stream.Writable` behavior.
+ *
+ * In some cases, a `Sign` instance can be created using the name of a signature
+ * algorithm, such as `'RSA-SHA256'`, instead of a digest algorithm. This will use
+ * the corresponding digest algorithm. This does not work for all signature
+ * algorithms, such as `'ecdsa-with-SHA256'`, so it is best to always use digest
+ * algorithm names.
+ * @since v0.1.92
+ * @param options `stream.Writable` options
+ */
+ function createSign(algorithm: string, options?: stream.WritableOptions): Sign;
+ type DSAEncoding = 'der' | 'ieee-p1363';
+ interface SigningOptions {
+ /**
+ * @See crypto.constants.RSA_PKCS1_PADDING
+ */
+ padding?: number | undefined;
+ saltLength?: number | undefined;
+ dsaEncoding?: DSAEncoding | undefined;
+ }
+ interface SignPrivateKeyInput extends PrivateKeyInput, SigningOptions {}
+ interface SignKeyObjectInput extends SigningOptions {
+ key: KeyObject;
+ }
+ interface VerifyPublicKeyInput extends PublicKeyInput, SigningOptions {}
+ interface VerifyKeyObjectInput extends SigningOptions {
+ key: KeyObject;
+ }
+ type KeyLike = string | Buffer | KeyObject;
+ /**
+ * The `Sign` class is a utility for generating signatures. It can be used in one
+ * of two ways:
+ *
+ * * As a writable `stream`, where data to be signed is written and the `sign.sign()` method is used to generate and return the signature, or
+ * * Using the `sign.update()` and `sign.sign()` methods to produce the
+ * signature.
+ *
+ * The {@link createSign} method is used to create `Sign` instances. The
+ * argument is the string name of the hash function to use. `Sign` objects are not
+ * to be created directly using the `new` keyword.
+ *
+ * Example: Using `Sign` and `Verify` objects as streams:
+ *
+ * ```js
+ * const {
+ * generateKeyPairSync,
+ * createSign,
+ * createVerify
+ * } = await import('crypto');
+ *
+ * const { privateKey, publicKey } = generateKeyPairSync('ec', {
+ * namedCurve: 'sect239k1'
+ * });
+ *
+ * const sign = createSign('SHA256');
+ * sign.write('some data to sign');
+ * sign.end();
+ * const signature = sign.sign(privateKey, 'hex');
+ *
+ * const verify = createVerify('SHA256');
+ * verify.write('some data to sign');
+ * verify.end();
+ * console.log(verify.verify(publicKey, signature, 'hex'));
+ * // Prints: true
+ * ```
+ *
+ * Example: Using the `sign.update()` and `verify.update()` methods:
+ *
+ * ```js
+ * const {
+ * generateKeyPairSync,
+ * createSign,
+ * createVerify
+ * } = await import('crypto');
+ *
+ * const { privateKey, publicKey } = generateKeyPairSync('rsa', {
+ * modulusLength: 2048,
+ * });
+ *
+ * const sign = createSign('SHA256');
+ * sign.update('some data to sign');
+ * sign.end();
+ * const signature = sign.sign(privateKey);
+ *
+ * const verify = createVerify('SHA256');
+ * verify.update('some data to sign');
+ * verify.end();
+ * console.log(verify.verify(publicKey, signature));
+ * // Prints: true
+ * ```
+ * @since v0.1.92
+ */
+ class Sign extends stream.Writable {
+ private constructor();
+ /**
+ * Updates the `Sign` content with the given `data`, the encoding of which
+ * is given in `inputEncoding`.
+ * If `encoding` is not provided, and the `data` is a string, an
+ * encoding of `'utf8'` is enforced. If `data` is a `Buffer`, `TypedArray`, or`DataView`, then `inputEncoding` is ignored.
+ *
+ * This can be called many times with new data as it is streamed.
+ * @since v0.1.92
+ * @param inputEncoding The `encoding` of the `data` string.
+ */
+ update(data: BinaryLike): this;
+ update(data: string, inputEncoding: Encoding): this;
+ /**
+ * Calculates the signature on all the data passed through using either `sign.update()` or `sign.write()`.
+ *
+ * If `privateKey` is not a `KeyObject`, this function behaves as if`privateKey` had been passed to {@link createPrivateKey}. If it is an
+ * object, the following additional properties can be passed:
+ *
+ * If `outputEncoding` is provided a string is returned; otherwise a `Buffer` is returned.
+ *
+ * The `Sign` object can not be again used after `sign.sign()` method has been
+ * called. Multiple calls to `sign.sign()` will result in an error being thrown.
+ * @since v0.1.92
+ */
+ sign(privateKey: KeyLike | SignKeyObjectInput | SignPrivateKeyInput): Buffer;
+ sign(privateKey: KeyLike | SignKeyObjectInput | SignPrivateKeyInput, outputFormat: BinaryToTextEncoding): string;
+ }
+ /**
+ * Creates and returns a `Verify` object that uses the given algorithm.
+ * Use {@link getHashes} to obtain an array of names of the available
+ * signing algorithms. Optional `options` argument controls the`stream.Writable` behavior.
+ *
+ * In some cases, a `Verify` instance can be created using the name of a signature
+ * algorithm, such as `'RSA-SHA256'`, instead of a digest algorithm. This will use
+ * the corresponding digest algorithm. This does not work for all signature
+ * algorithms, such as `'ecdsa-with-SHA256'`, so it is best to always use digest
+ * algorithm names.
+ * @since v0.1.92
+ * @param options `stream.Writable` options
+ */
+ function createVerify(algorithm: string, options?: stream.WritableOptions): Verify;
+ /**
+ * The `Verify` class is a utility for verifying signatures. It can be used in one
+ * of two ways:
+ *
+ * * As a writable `stream` where written data is used to validate against the
+ * supplied signature, or
+ * * Using the `verify.update()` and `verify.verify()` methods to verify
+ * the signature.
+ *
+ * The {@link createVerify} method is used to create `Verify` instances.`Verify` objects are not to be created directly using the `new` keyword.
+ *
+ * See `Sign` for examples.
+ * @since v0.1.92
+ */
+ class Verify extends stream.Writable {
+ private constructor();
+ /**
+ * Updates the `Verify` content with the given `data`, the encoding of which
+ * is given in `inputEncoding`.
+ * If `inputEncoding` is not provided, and the `data` is a string, an
+ * encoding of `'utf8'` is enforced. If `data` is a `Buffer`, `TypedArray`, or`DataView`, then `inputEncoding` is ignored.
+ *
+ * This can be called many times with new data as it is streamed.
+ * @since v0.1.92
+ * @param inputEncoding The `encoding` of the `data` string.
+ */
+ update(data: BinaryLike): Verify;
+ update(data: string, inputEncoding: Encoding): Verify;
+ /**
+ * Verifies the provided data using the given `object` and `signature`.
+ *
+ * If `object` is not a `KeyObject`, this function behaves as if`object` had been passed to {@link createPublicKey}. If it is an
+ * object, the following additional properties can be passed:
+ *
+ * The `signature` argument is the previously calculated signature for the data, in
+ * the `signatureEncoding`.
+ * If a `signatureEncoding` is specified, the `signature` is expected to be a
+ * string; otherwise `signature` is expected to be a `Buffer`,`TypedArray`, or `DataView`.
+ *
+ * The `verify` object can not be used again after `verify.verify()` has been
+ * called. Multiple calls to `verify.verify()` will result in an error being
+ * thrown.
+ *
+ * Because public keys can be derived from private keys, a private key may
+ * be passed instead of a public key.
+ * @since v0.1.92
+ */
+ verify(object: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput, signature: NodeJS.ArrayBufferView): boolean;
+ verify(object: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput, signature: string, signature_format?: BinaryToTextEncoding): boolean;
+ }
+ /**
+ * Creates a `DiffieHellman` key exchange object using the supplied `prime` and an
+ * optional specific `generator`.
+ *
+ * The `generator` argument can be a number, string, or `Buffer`. If`generator` is not specified, the value `2` is used.
+ *
+ * If `primeEncoding` is specified, `prime` is expected to be a string; otherwise
+ * a `Buffer`, `TypedArray`, or `DataView` is expected.
+ *
+ * If `generatorEncoding` is specified, `generator` is expected to be a string;
+ * otherwise a number, `Buffer`, `TypedArray`, or `DataView` is expected.
+ * @since v0.11.12
+ * @param primeEncoding The `encoding` of the `prime` string.
+ * @param [generator=2]
+ * @param generatorEncoding The `encoding` of the `generator` string.
+ */
+ function createDiffieHellman(primeLength: number, generator?: number | NodeJS.ArrayBufferView): DiffieHellman;
+ function createDiffieHellman(prime: NodeJS.ArrayBufferView): DiffieHellman;
+ function createDiffieHellman(prime: string, primeEncoding: BinaryToTextEncoding): DiffieHellman;
+ function createDiffieHellman(prime: string, primeEncoding: BinaryToTextEncoding, generator: number | NodeJS.ArrayBufferView): DiffieHellman;
+ function createDiffieHellman(prime: string, primeEncoding: BinaryToTextEncoding, generator: string, generatorEncoding: BinaryToTextEncoding): DiffieHellman;
+ /**
+ * The `DiffieHellman` class is a utility for creating Diffie-Hellman key
+ * exchanges.
+ *
+ * Instances of the `DiffieHellman` class can be created using the {@link createDiffieHellman} function.
+ *
+ * ```js
+ * import assert from 'assert';
+ *
+ * const {
+ * createDiffieHellman
+ * } = await import('crypto');
+ *
+ * // Generate Alice's keys...
+ * const alice = createDiffieHellman(2048);
+ * const aliceKey = alice.generateKeys();
+ *
+ * // Generate Bob's keys...
+ * const bob = createDiffieHellman(alice.getPrime(), alice.getGenerator());
+ * const bobKey = bob.generateKeys();
+ *
+ * // Exchange and generate the secret...
+ * const aliceSecret = alice.computeSecret(bobKey);
+ * const bobSecret = bob.computeSecret(aliceKey);
+ *
+ * // OK
+ * assert.strictEqual(aliceSecret.toString('hex'), bobSecret.toString('hex'));
+ * ```
+ * @since v0.5.0
+ */
+ class DiffieHellman {
+ private constructor();
+ /**
+ * Generates private and public Diffie-Hellman key values, and returns
+ * the public key in the specified `encoding`. This key should be
+ * transferred to the other party.
+ * If `encoding` is provided a string is returned; otherwise a `Buffer` is returned.
+ * @since v0.5.0
+ * @param encoding The `encoding` of the return value.
+ */
+ generateKeys(): Buffer;
+ generateKeys(encoding: BinaryToTextEncoding): string;
+ /**
+ * Computes the shared secret using `otherPublicKey` as the other
+ * party's public key and returns the computed shared secret. The supplied
+ * key is interpreted using the specified `inputEncoding`, and secret is
+ * encoded using specified `outputEncoding`.
+ * If the `inputEncoding` is not
+ * provided, `otherPublicKey` is expected to be a `Buffer`,`TypedArray`, or `DataView`.
+ *
+ * If `outputEncoding` is given a string is returned; otherwise, a `Buffer` is returned.
+ * @since v0.5.0
+ * @param inputEncoding The `encoding` of an `otherPublicKey` string.
+ * @param outputEncoding The `encoding` of the return value.
+ */
+ computeSecret(otherPublicKey: NodeJS.ArrayBufferView): Buffer;
+ computeSecret(otherPublicKey: string, inputEncoding: BinaryToTextEncoding): Buffer;
+ computeSecret(otherPublicKey: NodeJS.ArrayBufferView, outputEncoding: BinaryToTextEncoding): string;
+ computeSecret(otherPublicKey: string, inputEncoding: BinaryToTextEncoding, outputEncoding: BinaryToTextEncoding): string;
+ /**
+ * Returns the Diffie-Hellman prime in the specified `encoding`.
+ * If `encoding` is provided a string is
+ * returned; otherwise a `Buffer` is returned.
+ * @since v0.5.0
+ * @param encoding The `encoding` of the return value.
+ */
+ getPrime(): Buffer;
+ getPrime(encoding: BinaryToTextEncoding): string;
+ /**
+ * Returns the Diffie-Hellman generator in the specified `encoding`.
+ * If `encoding` is provided a string is
+ * returned; otherwise a `Buffer` is returned.
+ * @since v0.5.0
+ * @param encoding The `encoding` of the return value.
+ */
+ getGenerator(): Buffer;
+ getGenerator(encoding: BinaryToTextEncoding): string;
+ /**
+ * Returns the Diffie-Hellman public key in the specified `encoding`.
+ * If `encoding` is provided a
+ * string is returned; otherwise a `Buffer` is returned.
+ * @since v0.5.0
+ * @param encoding The `encoding` of the return value.
+ */
+ getPublicKey(): Buffer;
+ getPublicKey(encoding: BinaryToTextEncoding): string;
+ /**
+ * Returns the Diffie-Hellman private key in the specified `encoding`.
+ * If `encoding` is provided a
+ * string is returned; otherwise a `Buffer` is returned.
+ * @since v0.5.0
+ * @param encoding The `encoding` of the return value.
+ */
+ getPrivateKey(): Buffer;
+ getPrivateKey(encoding: BinaryToTextEncoding): string;
+ /**
+ * Sets the Diffie-Hellman public key. If the `encoding` argument is provided,`publicKey` is expected
+ * to be a string. If no `encoding` is provided, `publicKey` is expected
+ * to be a `Buffer`, `TypedArray`, or `DataView`.
+ * @since v0.5.0
+ * @param encoding The `encoding` of the `publicKey` string.
+ */
+ setPublicKey(publicKey: NodeJS.ArrayBufferView): void;
+ setPublicKey(publicKey: string, encoding: BufferEncoding): void;
+ /**
+ * Sets the Diffie-Hellman private key. If the `encoding` argument is provided,`privateKey` is expected
+ * to be a string. If no `encoding` is provided, `privateKey` is expected
+ * to be a `Buffer`, `TypedArray`, or `DataView`.
+ * @since v0.5.0
+ * @param encoding The `encoding` of the `privateKey` string.
+ */
+ setPrivateKey(privateKey: NodeJS.ArrayBufferView): void;
+ setPrivateKey(privateKey: string, encoding: BufferEncoding): void;
+ /**
+ * A bit field containing any warnings and/or errors resulting from a check
+ * performed during initialization of the `DiffieHellman` object.
+ *
+ * The following values are valid for this property (as defined in `constants`module):
+ *
+ * * `DH_CHECK_P_NOT_SAFE_PRIME`
+ * * `DH_CHECK_P_NOT_PRIME`
+ * * `DH_UNABLE_TO_CHECK_GENERATOR`
+ * * `DH_NOT_SUITABLE_GENERATOR`
+ * @since v0.11.12
+ */
+ verifyError: number;
+ }
+ /**
+ * Creates a predefined `DiffieHellmanGroup` key exchange object. The
+ * supported groups are: `'modp1'`, `'modp2'`, `'modp5'` (defined in [RFC 2412](https://www.rfc-editor.org/rfc/rfc2412.txt), but see `Caveats`) and `'modp14'`, `'modp15'`,`'modp16'`, `'modp17'`,
+ * `'modp18'` (defined in [RFC 3526](https://www.rfc-editor.org/rfc/rfc3526.txt)). The
+ * returned object mimics the interface of objects created by {@link createDiffieHellman}, but will not allow changing
+ * the keys (with `diffieHellman.setPublicKey()`, for example). The
+ * advantage of using this method is that the parties do not have to
+ * generate nor exchange a group modulus beforehand, saving both processor
+ * and communication time.
+ *
+ * Example (obtaining a shared secret):
+ *
+ * ```js
+ * const {
+ * getDiffieHellman
+ * } = await import('crypto');
+ * const alice = getDiffieHellman('modp14');
+ * const bob = getDiffieHellman('modp14');
+ *
+ * alice.generateKeys();
+ * bob.generateKeys();
+ *
+ * const aliceSecret = alice.computeSecret(bob.getPublicKey(), null, 'hex');
+ * const bobSecret = bob.computeSecret(alice.getPublicKey(), null, 'hex');
+ *
+ * // aliceSecret and bobSecret should be the same
+ * console.log(aliceSecret === bobSecret);
+ * ```
+ * @since v0.7.5
+ */
+ function getDiffieHellman(groupName: string): DiffieHellman;
+ /**
+ * Provides an asynchronous Password-Based Key Derivation Function 2 (PBKDF2)
+ * implementation. A selected HMAC digest algorithm specified by `digest` is
+ * applied to derive a key of the requested byte length (`keylen`) from the`password`, `salt` and `iterations`.
+ *
+ * The supplied `callback` function is called with two arguments: `err` and`derivedKey`. If an error occurs while deriving the key, `err` will be set;
+ * otherwise `err` will be `null`. By default, the successfully generated`derivedKey` will be passed to the callback as a `Buffer`. An error will be
+ * thrown if any of the input arguments specify invalid values or types.
+ *
+ * If `digest` is `null`, `'sha1'` will be used. This behavior is deprecated,
+ * please specify a `digest` explicitly.
+ *
+ * The `iterations` argument must be a number set as high as possible. The
+ * higher the number of iterations, the more secure the derived key will be,
+ * but will take a longer amount of time to complete.
+ *
+ * The `salt` should be as unique as possible. It is recommended that a salt is
+ * random and at least 16 bytes long. See [NIST SP 800-132](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf) for details.
+ *
+ * When passing strings for `password` or `salt`, please consider `caveats when using strings as inputs to cryptographic APIs`.
+ *
+ * ```js
+ * const {
+ * pbkdf2
+ * } = await import('crypto');
+ *
+ * pbkdf2('secret', 'salt', 100000, 64, 'sha512', (err, derivedKey) => {
+ * if (err) throw err;
+ * console.log(derivedKey.toString('hex')); // '3745e48...08d59ae'
+ * });
+ * ```
+ *
+ * The `crypto.DEFAULT_ENCODING` property can be used to change the way the`derivedKey` is passed to the callback. This property, however, has been
+ * deprecated and use should be avoided.
+ *
+ * ```js
+ * import crypto from 'crypto';
+ * crypto.DEFAULT_ENCODING = 'hex';
+ * crypto.pbkdf2('secret', 'salt', 100000, 512, 'sha512', (err, derivedKey) => {
+ * if (err) throw err;
+ * console.log(derivedKey); // '3745e48...aa39b34'
+ * });
+ * ```
+ *
+ * An array of supported digest functions can be retrieved using {@link getHashes}.
+ *
+ * This API uses libuv's threadpool, which can have surprising and
+ * negative performance implications for some applications; see the `UV_THREADPOOL_SIZE` documentation for more information.
+ * @since v0.5.5
+ */
+ function pbkdf2(password: BinaryLike, salt: BinaryLike, iterations: number, keylen: number, digest: string, callback: (err: Error | null, derivedKey: Buffer) => void): void;
+ /**
+ * Provides a synchronous Password-Based Key Derivation Function 2 (PBKDF2)
+ * implementation. A selected HMAC digest algorithm specified by `digest` is
+ * applied to derive a key of the requested byte length (`keylen`) from the`password`, `salt` and `iterations`.
+ *
+ * If an error occurs an `Error` will be thrown, otherwise the derived key will be
+ * returned as a `Buffer`.
+ *
+ * If `digest` is `null`, `'sha1'` will be used. This behavior is deprecated,
+ * please specify a `digest` explicitly.
+ *
+ * The `iterations` argument must be a number set as high as possible. The
+ * higher the number of iterations, the more secure the derived key will be,
+ * but will take a longer amount of time to complete.
+ *
+ * The `salt` should be as unique as possible. It is recommended that a salt is
+ * random and at least 16 bytes long. See [NIST SP 800-132](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf) for details.
+ *
+ * When passing strings for `password` or `salt`, please consider `caveats when using strings as inputs to cryptographic APIs`.
+ *
+ * ```js
+ * const {
+ * pbkdf2Sync
+ * } = await import('crypto');
+ *
+ * const key = pbkdf2Sync('secret', 'salt', 100000, 64, 'sha512');
+ * console.log(key.toString('hex')); // '3745e48...08d59ae'
+ * ```
+ *
+ * The `crypto.DEFAULT_ENCODING` property may be used to change the way the`derivedKey` is returned. This property, however, is deprecated and use
+ * should be avoided.
+ *
+ * ```js
+ * import crypto from 'crypto';
+ * crypto.DEFAULT_ENCODING = 'hex';
+ * const key = crypto.pbkdf2Sync('secret', 'salt', 100000, 512, 'sha512');
+ * console.log(key); // '3745e48...aa39b34'
+ * ```
+ *
+ * An array of supported digest functions can be retrieved using {@link getHashes}.
+ * @since v0.9.3
+ */
+ function pbkdf2Sync(password: BinaryLike, salt: BinaryLike, iterations: number, keylen: number, digest: string): Buffer;
+ /**
+ * Generates cryptographically strong pseudorandom data. The `size` argument
+ * is a number indicating the number of bytes to generate.
+ *
+ * If a `callback` function is provided, the bytes are generated asynchronously
+ * and the `callback` function is invoked with two arguments: `err` and `buf`.
+ * If an error occurs, `err` will be an `Error` object; otherwise it is `null`. The`buf` argument is a `Buffer` containing the generated bytes.
+ *
+ * ```js
+ * // Asynchronous
+ * const {
+ * randomBytes
+ * } = await import('crypto');
+ *
+ * randomBytes(256, (err, buf) => {
+ * if (err) throw err;
+ * console.log(`${buf.length} bytes of random data: ${buf.toString('hex')}`);
+ * });
+ * ```
+ *
+ * If the `callback` function is not provided, the random bytes are generated
+ * synchronously and returned as a `Buffer`. An error will be thrown if
+ * there is a problem generating the bytes.
+ *
+ * ```js
+ * // Synchronous
+ * const {
+ * randomBytes
+ * } = await import('crypto');
+ *
+ * const buf = randomBytes(256);
+ * console.log(
+ * `${buf.length} bytes of random data: ${buf.toString('hex')}`);
+ * ```
+ *
+ * The `crypto.randomBytes()` method will not complete until there is
+ * sufficient entropy available.
+ * This should normally never take longer than a few milliseconds. The only time
+ * when generating the random bytes may conceivably block for a longer period of
+ * time is right after boot, when the whole system is still low on entropy.
+ *
+ * This API uses libuv's threadpool, which can have surprising and
+ * negative performance implications for some applications; see the `UV_THREADPOOL_SIZE` documentation for more information.
+ *
+ * The asynchronous version of `crypto.randomBytes()` is carried out in a single
+ * threadpool request. To minimize threadpool task length variation, partition
+ * large `randomBytes` requests when doing so as part of fulfilling a client
+ * request.
+ * @since v0.5.8
+ * @param size The number of bytes to generate. The `size` must not be larger than `2**31 - 1`.
+ * @return if the `callback` function is not provided.
+ */
+ function randomBytes(size: number): Buffer;
+ function randomBytes(size: number, callback: (err: Error | null, buf: Buffer) => void): void;
+ function pseudoRandomBytes(size: number): Buffer;
+ function pseudoRandomBytes(size: number, callback: (err: Error | null, buf: Buffer) => void): void;
+ /**
+ * Return a random integer `n` such that `min <= n < max`. This
+ * implementation avoids [modulo bias](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#Modulo_bias).
+ *
+ * The range (`max - min`) must be less than 248. `min` and `max` must
+ * be [safe integers](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger).
+ *
+ * If the `callback` function is not provided, the random integer is
+ * generated synchronously.
+ *
+ * ```js
+ * // Asynchronous
+ * const {
+ * randomInt
+ * } = await import('crypto');
+ *
+ * randomInt(3, (err, n) => {
+ * if (err) throw err;
+ * console.log(`Random number chosen from (0, 1, 2): ${n}`);
+ * });
+ * ```
+ *
+ * ```js
+ * // Synchronous
+ * const {
+ * randomInt
+ * } = await import('crypto');
+ *
+ * const n = randomInt(3);
+ * console.log(`Random number chosen from (0, 1, 2): ${n}`);
+ * ```
+ *
+ * ```js
+ * // With `min` argument
+ * const {
+ * randomInt
+ * } = await import('crypto');
+ *
+ * const n = randomInt(1, 7);
+ * console.log(`The dice rolled: ${n}`);
+ * ```
+ * @since v14.10.0, v12.19.0
+ * @param [min=0] Start of random range (inclusive).
+ * @param max End of random range (exclusive).
+ * @param callback `function(err, n) {}`.
+ */
+ function randomInt(max: number): number;
+ function randomInt(min: number, max: number): number;
+ function randomInt(max: number, callback: (err: Error | null, value: number) => void): void;
+ function randomInt(min: number, max: number, callback: (err: Error | null, value: number) => void): void;
+ /**
+ * Synchronous version of {@link randomFill}.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ * const { randomFillSync } = await import('crypto');
+ *
+ * const buf = Buffer.alloc(10);
+ * console.log(randomFillSync(buf).toString('hex'));
+ *
+ * randomFillSync(buf, 5);
+ * console.log(buf.toString('hex'));
+ *
+ * // The above is equivalent to the following:
+ * randomFillSync(buf, 5, 5);
+ * console.log(buf.toString('hex'));
+ * ```
+ *
+ * Any `ArrayBuffer`, `TypedArray` or `DataView` instance may be passed as`buffer`.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ * const { randomFillSync } = await import('crypto');
+ *
+ * const a = new Uint32Array(10);
+ * console.log(Buffer.from(randomFillSync(a).buffer,
+ * a.byteOffset, a.byteLength).toString('hex'));
+ *
+ * const b = new DataView(new ArrayBuffer(10));
+ * console.log(Buffer.from(randomFillSync(b).buffer,
+ * b.byteOffset, b.byteLength).toString('hex'));
+ *
+ * const c = new ArrayBuffer(10);
+ * console.log(Buffer.from(randomFillSync(c)).toString('hex'));
+ * ```
+ * @since v7.10.0, v6.13.0
+ * @param buffer Must be supplied. The size of the provided `buffer` must not be larger than `2**31 - 1`.
+ * @param [offset=0]
+ * @param [size=buffer.length - offset]
+ * @return The object passed as `buffer` argument.
+ */
+ function randomFillSync(buffer: T, offset?: number, size?: number): T;
+ /**
+ * This function is similar to {@link randomBytes} but requires the first
+ * argument to be a `Buffer` that will be filled. It also
+ * requires that a callback is passed in.
+ *
+ * If the `callback` function is not provided, an error will be thrown.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ * const { randomFill } = await import('crypto');
+ *
+ * const buf = Buffer.alloc(10);
+ * randomFill(buf, (err, buf) => {
+ * if (err) throw err;
+ * console.log(buf.toString('hex'));
+ * });
+ *
+ * randomFill(buf, 5, (err, buf) => {
+ * if (err) throw err;
+ * console.log(buf.toString('hex'));
+ * });
+ *
+ * // The above is equivalent to the following:
+ * randomFill(buf, 5, 5, (err, buf) => {
+ * if (err) throw err;
+ * console.log(buf.toString('hex'));
+ * });
+ * ```
+ *
+ * Any `ArrayBuffer`, `TypedArray`, or `DataView` instance may be passed as`buffer`.
+ *
+ * While this includes instances of `Float32Array` and `Float64Array`, this
+ * function should not be used to generate random floating-point numbers. The
+ * result may contain `+Infinity`, `-Infinity`, and `NaN`, and even if the array
+ * contains finite numbers only, they are not drawn from a uniform random
+ * distribution and have no meaningful lower or upper bounds.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ * const { randomFill } = await import('crypto');
+ *
+ * const a = new Uint32Array(10);
+ * randomFill(a, (err, buf) => {
+ * if (err) throw err;
+ * console.log(Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength)
+ * .toString('hex'));
+ * });
+ *
+ * const b = new DataView(new ArrayBuffer(10));
+ * randomFill(b, (err, buf) => {
+ * if (err) throw err;
+ * console.log(Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength)
+ * .toString('hex'));
+ * });
+ *
+ * const c = new ArrayBuffer(10);
+ * randomFill(c, (err, buf) => {
+ * if (err) throw err;
+ * console.log(Buffer.from(buf).toString('hex'));
+ * });
+ * ```
+ *
+ * This API uses libuv's threadpool, which can have surprising and
+ * negative performance implications for some applications; see the `UV_THREADPOOL_SIZE` documentation for more information.
+ *
+ * The asynchronous version of `crypto.randomFill()` is carried out in a single
+ * threadpool request. To minimize threadpool task length variation, partition
+ * large `randomFill` requests when doing so as part of fulfilling a client
+ * request.
+ * @since v7.10.0, v6.13.0
+ * @param buffer Must be supplied. The size of the provided `buffer` must not be larger than `2**31 - 1`.
+ * @param [offset=0]
+ * @param [size=buffer.length - offset]
+ * @param callback `function(err, buf) {}`.
+ */
+ function randomFill(buffer: T, callback: (err: Error | null, buf: T) => void): void;
+ function randomFill(buffer: T, offset: number, callback: (err: Error | null, buf: T) => void): void;
+ function randomFill(buffer: T, offset: number, size: number, callback: (err: Error | null, buf: T) => void): void;
+ interface ScryptOptions {
+ cost?: number | undefined;
+ blockSize?: number | undefined;
+ parallelization?: number | undefined;
+ N?: number | undefined;
+ r?: number | undefined;
+ p?: number | undefined;
+ maxmem?: number | undefined;
+ }
+ /**
+ * Provides an asynchronous [scrypt](https://en.wikipedia.org/wiki/Scrypt) implementation. Scrypt is a password-based
+ * key derivation function that is designed to be expensive computationally and
+ * memory-wise in order to make brute-force attacks unrewarding.
+ *
+ * The `salt` should be as unique as possible. It is recommended that a salt is
+ * random and at least 16 bytes long. See [NIST SP 800-132](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf) for details.
+ *
+ * When passing strings for `password` or `salt`, please consider `caveats when using strings as inputs to cryptographic APIs`.
+ *
+ * The `callback` function is called with two arguments: `err` and `derivedKey`.`err` is an exception object when key derivation fails, otherwise `err` is`null`. `derivedKey` is passed to the
+ * callback as a `Buffer`.
+ *
+ * An exception is thrown when any of the input arguments specify invalid values
+ * or types.
+ *
+ * ```js
+ * const {
+ * scrypt
+ * } = await import('crypto');
+ *
+ * // Using the factory defaults.
+ * scrypt('password', 'salt', 64, (err, derivedKey) => {
+ * if (err) throw err;
+ * console.log(derivedKey.toString('hex')); // '3745e48...08d59ae'
+ * });
+ * // Using a custom N parameter. Must be a power of two.
+ * scrypt('password', 'salt', 64, { N: 1024 }, (err, derivedKey) => {
+ * if (err) throw err;
+ * console.log(derivedKey.toString('hex')); // '3745e48...aa39b34'
+ * });
+ * ```
+ * @since v10.5.0
+ */
+ function scrypt(password: BinaryLike, salt: BinaryLike, keylen: number, callback: (err: Error | null, derivedKey: Buffer) => void): void;
+ function scrypt(password: BinaryLike, salt: BinaryLike, keylen: number, options: ScryptOptions, callback: (err: Error | null, derivedKey: Buffer) => void): void;
+ /**
+ * Provides a synchronous [scrypt](https://en.wikipedia.org/wiki/Scrypt) implementation. Scrypt is a password-based
+ * key derivation function that is designed to be expensive computationally and
+ * memory-wise in order to make brute-force attacks unrewarding.
+ *
+ * The `salt` should be as unique as possible. It is recommended that a salt is
+ * random and at least 16 bytes long. See [NIST SP 800-132](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf) for details.
+ *
+ * When passing strings for `password` or `salt`, please consider `caveats when using strings as inputs to cryptographic APIs`.
+ *
+ * An exception is thrown when key derivation fails, otherwise the derived key is
+ * returned as a `Buffer`.
+ *
+ * An exception is thrown when any of the input arguments specify invalid values
+ * or types.
+ *
+ * ```js
+ * const {
+ * scryptSync
+ * } = await import('crypto');
+ * // Using the factory defaults.
+ *
+ * const key1 = scryptSync('password', 'salt', 64);
+ * console.log(key1.toString('hex')); // '3745e48...08d59ae'
+ * // Using a custom N parameter. Must be a power of two.
+ * const key2 = scryptSync('password', 'salt', 64, { N: 1024 });
+ * console.log(key2.toString('hex')); // '3745e48...aa39b34'
+ * ```
+ * @since v10.5.0
+ */
+ function scryptSync(password: BinaryLike, salt: BinaryLike, keylen: number, options?: ScryptOptions): Buffer;
+ interface RsaPublicKey {
+ key: KeyLike;
+ padding?: number | undefined;
+ }
+ interface RsaPrivateKey {
+ key: KeyLike;
+ passphrase?: string | undefined;
+ /**
+ * @default 'sha1'
+ */
+ oaepHash?: string | undefined;
+ oaepLabel?: NodeJS.TypedArray | undefined;
+ padding?: number | undefined;
+ }
+ /**
+ * Encrypts the content of `buffer` with `key` and returns a new `Buffer` with encrypted content. The returned data can be decrypted using
+ * the corresponding private key, for example using {@link privateDecrypt}.
+ *
+ * If `key` is not a `KeyObject`, this function behaves as if`key` had been passed to {@link createPublicKey}. If it is an
+ * object, the `padding` property can be passed. Otherwise, this function uses`RSA_PKCS1_OAEP_PADDING`.
+ *
+ * Because RSA public keys can be derived from private keys, a private key may
+ * be passed instead of a public key.
+ * @since v0.11.14
+ */
+ function publicEncrypt(key: RsaPublicKey | RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer;
+ /**
+ * Decrypts `buffer` with `key`.`buffer` was previously encrypted using
+ * the corresponding private key, for example using {@link privateEncrypt}.
+ *
+ * If `key` is not a `KeyObject`, this function behaves as if`key` had been passed to {@link createPublicKey}. If it is an
+ * object, the `padding` property can be passed. Otherwise, this function uses`RSA_PKCS1_PADDING`.
+ *
+ * Because RSA public keys can be derived from private keys, a private key may
+ * be passed instead of a public key.
+ * @since v1.1.0
+ */
+ function publicDecrypt(key: RsaPublicKey | RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer;
+ /**
+ * Decrypts `buffer` with `privateKey`. `buffer` was previously encrypted using
+ * the corresponding public key, for example using {@link publicEncrypt}.
+ *
+ * If `privateKey` is not a `KeyObject`, this function behaves as if`privateKey` had been passed to {@link createPrivateKey}. If it is an
+ * object, the `padding` property can be passed. Otherwise, this function uses`RSA_PKCS1_OAEP_PADDING`.
+ * @since v0.11.14
+ */
+ function privateDecrypt(privateKey: RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer;
+ /**
+ * Encrypts `buffer` with `privateKey`. The returned data can be decrypted using
+ * the corresponding public key, for example using {@link publicDecrypt}.
+ *
+ * If `privateKey` is not a `KeyObject`, this function behaves as if`privateKey` had been passed to {@link createPrivateKey}. If it is an
+ * object, the `padding` property can be passed. Otherwise, this function uses`RSA_PKCS1_PADDING`.
+ * @since v1.1.0
+ */
+ function privateEncrypt(privateKey: RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer;
+ /**
+ * ```js
+ * const {
+ * getCiphers
+ * } = await import('crypto');
+ *
+ * console.log(getCiphers()); // ['aes-128-cbc', 'aes-128-ccm', ...]
+ * ```
+ * @since v0.9.3
+ * @return An array with the names of the supported cipher algorithms.
+ */
+ function getCiphers(): string[];
+ /**
+ * ```js
+ * const {
+ * getCurves
+ * } = await import('crypto');
+ *
+ * console.log(getCurves()); // ['Oakley-EC2N-3', 'Oakley-EC2N-4', ...]
+ * ```
+ * @since v2.3.0
+ * @return An array with the names of the supported elliptic curves.
+ */
+ function getCurves(): string[];
+ /**
+ * @since v10.0.0
+ * @return `1` if and only if a FIPS compliant crypto provider is currently in use, `0` otherwise. A future semver-major release may change the return type of this API to a {boolean}.
+ */
+ function getFips(): 1 | 0;
+ /**
+ * ```js
+ * const {
+ * getHashes
+ * } = await import('crypto');
+ *
+ * console.log(getHashes()); // ['DSA', 'DSA-SHA', 'DSA-SHA1', ...]
+ * ```
+ * @since v0.9.3
+ * @return An array of the names of the supported hash algorithms, such as `'RSA-SHA256'`. Hash algorithms are also called "digest" algorithms.
+ */
+ function getHashes(): string[];
+ /**
+ * The `ECDH` class is a utility for creating Elliptic Curve Diffie-Hellman (ECDH)
+ * key exchanges.
+ *
+ * Instances of the `ECDH` class can be created using the {@link createECDH} function.
+ *
+ * ```js
+ * import assert from 'assert';
+ *
+ * const {
+ * createECDH
+ * } = await import('crypto');
+ *
+ * // Generate Alice's keys...
+ * const alice = createECDH('secp521r1');
+ * const aliceKey = alice.generateKeys();
+ *
+ * // Generate Bob's keys...
+ * const bob = createECDH('secp521r1');
+ * const bobKey = bob.generateKeys();
+ *
+ * // Exchange and generate the secret...
+ * const aliceSecret = alice.computeSecret(bobKey);
+ * const bobSecret = bob.computeSecret(aliceKey);
+ *
+ * assert.strictEqual(aliceSecret.toString('hex'), bobSecret.toString('hex'));
+ * // OK
+ * ```
+ * @since v0.11.14
+ */
+ class ECDH {
+ private constructor();
+ /**
+ * Converts the EC Diffie-Hellman public key specified by `key` and `curve` to the
+ * format specified by `format`. The `format` argument specifies point encoding
+ * and can be `'compressed'`, `'uncompressed'` or `'hybrid'`. The supplied key is
+ * interpreted using the specified `inputEncoding`, and the returned key is encoded
+ * using the specified `outputEncoding`.
+ *
+ * Use {@link getCurves} to obtain a list of available curve names.
+ * On recent OpenSSL releases, `openssl ecparam -list_curves` will also display
+ * the name and description of each available elliptic curve.
+ *
+ * If `format` is not specified the point will be returned in `'uncompressed'`format.
+ *
+ * If the `inputEncoding` is not provided, `key` is expected to be a `Buffer`,`TypedArray`, or `DataView`.
+ *
+ * Example (uncompressing a key):
+ *
+ * ```js
+ * const {
+ * createECDH,
+ * ECDH
+ * } = await import('crypto');
+ *
+ * const ecdh = createECDH('secp256k1');
+ * ecdh.generateKeys();
+ *
+ * const compressedKey = ecdh.getPublicKey('hex', 'compressed');
+ *
+ * const uncompressedKey = ECDH.convertKey(compressedKey,
+ * 'secp256k1',
+ * 'hex',
+ * 'hex',
+ * 'uncompressed');
+ *
+ * // The converted key and the uncompressed public key should be the same
+ * console.log(uncompressedKey === ecdh.getPublicKey('hex'));
+ * ```
+ * @since v10.0.0
+ * @param inputEncoding The `encoding` of the `key` string.
+ * @param outputEncoding The `encoding` of the return value.
+ * @param [format='uncompressed']
+ */
+ static convertKey(
+ key: BinaryLike,
+ curve: string,
+ inputEncoding?: BinaryToTextEncoding,
+ outputEncoding?: 'latin1' | 'hex' | 'base64' | 'base64url',
+ format?: 'uncompressed' | 'compressed' | 'hybrid'
+ ): Buffer | string;
+ /**
+ * Generates private and public EC Diffie-Hellman key values, and returns
+ * the public key in the specified `format` and `encoding`. This key should be
+ * transferred to the other party.
+ *
+ * The `format` argument specifies point encoding and can be `'compressed'` or`'uncompressed'`. If `format` is not specified, the point will be returned in`'uncompressed'` format.
+ *
+ * If `encoding` is provided a string is returned; otherwise a `Buffer` is returned.
+ * @since v0.11.14
+ * @param encoding The `encoding` of the return value.
+ * @param [format='uncompressed']
+ */
+ generateKeys(): Buffer;
+ generateKeys(encoding: BinaryToTextEncoding, format?: ECDHKeyFormat): string;
+ /**
+ * Computes the shared secret using `otherPublicKey` as the other
+ * party's public key and returns the computed shared secret. The supplied
+ * key is interpreted using specified `inputEncoding`, and the returned secret
+ * is encoded using the specified `outputEncoding`.
+ * If the `inputEncoding` is not
+ * provided, `otherPublicKey` is expected to be a `Buffer`, `TypedArray`, or`DataView`.
+ *
+ * If `outputEncoding` is given a string will be returned; otherwise a `Buffer` is returned.
+ *
+ * `ecdh.computeSecret` will throw an`ERR_CRYPTO_ECDH_INVALID_PUBLIC_KEY` error when `otherPublicKey`lies outside of the elliptic curve. Since `otherPublicKey` is
+ * usually supplied from a remote user over an insecure network,
+ * be sure to handle this exception accordingly.
+ * @since v0.11.14
+ * @param inputEncoding The `encoding` of the `otherPublicKey` string.
+ * @param outputEncoding The `encoding` of the return value.
+ */
+ computeSecret(otherPublicKey: NodeJS.ArrayBufferView): Buffer;
+ computeSecret(otherPublicKey: string, inputEncoding: BinaryToTextEncoding): Buffer;
+ computeSecret(otherPublicKey: NodeJS.ArrayBufferView, outputEncoding: BinaryToTextEncoding): string;
+ computeSecret(otherPublicKey: string, inputEncoding: BinaryToTextEncoding, outputEncoding: BinaryToTextEncoding): string;
+ /**
+ * If `encoding` is specified, a string is returned; otherwise a `Buffer` is
+ * returned.
+ * @since v0.11.14
+ * @param encoding The `encoding` of the return value.
+ * @return The EC Diffie-Hellman in the specified `encoding`.
+ */
+ getPrivateKey(): Buffer;
+ getPrivateKey(encoding: BinaryToTextEncoding): string;
+ /**
+ * The `format` argument specifies point encoding and can be `'compressed'` or`'uncompressed'`. If `format` is not specified the point will be returned in`'uncompressed'` format.
+ *
+ * If `encoding` is specified, a string is returned; otherwise a `Buffer` is
+ * returned.
+ * @since v0.11.14
+ * @param encoding The `encoding` of the return value.
+ * @param [format='uncompressed']
+ * @return The EC Diffie-Hellman public key in the specified `encoding` and `format`.
+ */
+ getPublicKey(): Buffer;
+ getPublicKey(encoding: BinaryToTextEncoding, format?: ECDHKeyFormat): string;
+ /**
+ * Sets the EC Diffie-Hellman private key.
+ * If `encoding` is provided, `privateKey` is expected
+ * to be a string; otherwise `privateKey` is expected to be a `Buffer`,`TypedArray`, or `DataView`.
+ *
+ * If `privateKey` is not valid for the curve specified when the `ECDH` object was
+ * created, an error is thrown. Upon setting the private key, the associated
+ * public point (key) is also generated and set in the `ECDH` object.
+ * @since v0.11.14
+ * @param encoding The `encoding` of the `privateKey` string.
+ */
+ setPrivateKey(privateKey: NodeJS.ArrayBufferView): void;
+ setPrivateKey(privateKey: string, encoding: BinaryToTextEncoding): void;
+ }
+ /**
+ * Creates an Elliptic Curve Diffie-Hellman (`ECDH`) key exchange object using a
+ * predefined curve specified by the `curveName` string. Use {@link getCurves} to obtain a list of available curve names. On recent
+ * OpenSSL releases, `openssl ecparam -list_curves` will also display the name
+ * and description of each available elliptic curve.
+ * @since v0.11.14
+ */
+ function createECDH(curveName: string): ECDH;
+ /**
+ * This function is based on a constant-time algorithm.
+ * Returns true if `a` is equal to `b`, without leaking timing information that
+ * would allow an attacker to guess one of the values. This is suitable for
+ * comparing HMAC digests or secret values like authentication cookies or [capability urls](https://www.w3.org/TR/capability-urls/).
+ *
+ * `a` and `b` must both be `Buffer`s, `TypedArray`s, or `DataView`s, and they
+ * must have the same byte length. An error is thrown if `a` and `b` have
+ * different byte lengths.
+ *
+ * If at least one of `a` and `b` is a `TypedArray` with more than one byte per
+ * entry, such as `Uint16Array`, the result will be computed using the platform
+ * byte order.
+ *
+ * Use of `crypto.timingSafeEqual` does not guarantee that the _surrounding_ code
+ * is timing-safe. Care should be taken to ensure that the surrounding code does
+ * not introduce timing vulnerabilities.
+ * @since v6.6.0
+ */
+ function timingSafeEqual(a: NodeJS.ArrayBufferView, b: NodeJS.ArrayBufferView): boolean;
+ /** @deprecated since v10.0.0 */
+ const DEFAULT_ENCODING: BufferEncoding;
+ type KeyType = 'rsa' | 'rsa-pss' | 'dsa' | 'ec' | 'ed25519' | 'ed448' | 'x25519' | 'x448';
+ type KeyFormat = 'pem' | 'der';
+ interface BasePrivateKeyEncodingOptions {
+ format: T;
+ cipher?: string | undefined;
+ passphrase?: string | undefined;
+ }
+ interface KeyPairKeyObjectResult {
+ publicKey: KeyObject;
+ privateKey: KeyObject;
+ }
+ interface ED25519KeyPairKeyObjectOptions {}
+ interface ED448KeyPairKeyObjectOptions {}
+ interface X25519KeyPairKeyObjectOptions {}
+ interface X448KeyPairKeyObjectOptions {}
+ interface ECKeyPairKeyObjectOptions {
+ /**
+ * Name of the curve to use
+ */
+ namedCurve: string;
+ }
+ interface RSAKeyPairKeyObjectOptions {
+ /**
+ * Key size in bits
+ */
+ modulusLength: number;
+ /**
+ * Public exponent
+ * @default 0x10001
+ */
+ publicExponent?: number | undefined;
+ }
+ interface RSAPSSKeyPairKeyObjectOptions {
+ /**
+ * Key size in bits
+ */
+ modulusLength: number;
+ /**
+ * Public exponent
+ * @default 0x10001
+ */
+ publicExponent?: number | undefined;
+ /**
+ * Name of the message digest
+ */
+ hashAlgorithm?: string;
+ /**
+ * Name of the message digest used by MGF1
+ */
+ mgf1HashAlgorithm?: string;
+ /**
+ * Minimal salt length in bytes
+ */
+ saltLength?: string;
+ }
+ interface DSAKeyPairKeyObjectOptions {
+ /**
+ * Key size in bits
+ */
+ modulusLength: number;
+ /**
+ * Size of q in bits
+ */
+ divisorLength: number;
+ }
+ interface RSAKeyPairOptions {
+ /**
+ * Key size in bits
+ */
+ modulusLength: number;
+ /**
+ * Public exponent
+ * @default 0x10001
+ */
+ publicExponent?: number | undefined;
+ publicKeyEncoding: {
+ type: 'pkcs1' | 'spki';
+ format: PubF;
+ };
+ privateKeyEncoding: BasePrivateKeyEncodingOptions & {
+ type: 'pkcs1' | 'pkcs8';
+ };
+ }
+ interface RSAPSSKeyPairOptions {
+ /**
+ * Key size in bits
+ */
+ modulusLength: number;
+ /**
+ * Public exponent
+ * @default 0x10001
+ */
+ publicExponent?: number | undefined;
+ /**
+ * Name of the message digest
+ */
+ hashAlgorithm?: string;
+ /**
+ * Name of the message digest used by MGF1
+ */
+ mgf1HashAlgorithm?: string;
+ /**
+ * Minimal salt length in bytes
+ */
+ saltLength?: string;
+ publicKeyEncoding: {
+ type: 'spki';
+ format: PubF;
+ };
+ privateKeyEncoding: BasePrivateKeyEncodingOptions & {
+ type: 'pkcs8';
+ };
+ }
+ interface DSAKeyPairOptions {
+ /**
+ * Key size in bits
+ */
+ modulusLength: number;
+ /**
+ * Size of q in bits
+ */
+ divisorLength: number;
+ publicKeyEncoding: {
+ type: 'spki';
+ format: PubF;
+ };
+ privateKeyEncoding: BasePrivateKeyEncodingOptions & {
+ type: 'pkcs8';
+ };
+ }
+ interface ECKeyPairOptions {
+ /**
+ * Name of the curve to use.
+ */
+ namedCurve: string;
+ publicKeyEncoding: {
+ type: 'pkcs1' | 'spki';
+ format: PubF;
+ };
+ privateKeyEncoding: BasePrivateKeyEncodingOptions & {
+ type: 'sec1' | 'pkcs8';
+ };
+ }
+ interface ED25519KeyPairOptions {
+ publicKeyEncoding: {
+ type: 'spki';
+ format: PubF;
+ };
+ privateKeyEncoding: BasePrivateKeyEncodingOptions & {
+ type: 'pkcs8';
+ };
+ }
+ interface ED448KeyPairOptions {
+ publicKeyEncoding: {
+ type: 'spki';
+ format: PubF;
+ };
+ privateKeyEncoding: BasePrivateKeyEncodingOptions & {
+ type: 'pkcs8';
+ };
+ }
+ interface X25519KeyPairOptions {
+ publicKeyEncoding: {
+ type: 'spki';
+ format: PubF;
+ };
+ privateKeyEncoding: BasePrivateKeyEncodingOptions & {
+ type: 'pkcs8';
+ };
+ }
+ interface X448KeyPairOptions {
+ publicKeyEncoding: {
+ type: 'spki';
+ format: PubF;
+ };
+ privateKeyEncoding: BasePrivateKeyEncodingOptions & {
+ type: 'pkcs8';
+ };
+ }
+ interface KeyPairSyncResult {
+ publicKey: T1;
+ privateKey: T2;
+ }
+ /**
+ * Generates a new asymmetric key pair of the given `type`. RSA, RSA-PSS, DSA, EC,
+ * Ed25519, Ed448, X25519, X448, and DH are currently supported.
+ *
+ * If a `publicKeyEncoding` or `privateKeyEncoding` was specified, this function
+ * behaves as if `keyObject.export()` had been called on its result. Otherwise,
+ * the respective part of the key is returned as a `KeyObject`.
+ *
+ * When encoding public keys, it is recommended to use `'spki'`. When encoding
+ * private keys, it is recommended to use `'pkcs8'` with a strong passphrase,
+ * and to keep the passphrase confidential.
+ *
+ * ```js
+ * const {
+ * generateKeyPairSync
+ * } = await import('crypto');
+ *
+ * const {
+ * publicKey,
+ * privateKey,
+ * } = generateKeyPairSync('rsa', {
+ * modulusLength: 4096,
+ * publicKeyEncoding: {
+ * type: 'spki',
+ * format: 'pem'
+ * },
+ * privateKeyEncoding: {
+ * type: 'pkcs8',
+ * format: 'pem',
+ * cipher: 'aes-256-cbc',
+ * passphrase: 'top secret'
+ * }
+ * });
+ * ```
+ *
+ * The return value `{ publicKey, privateKey }` represents the generated key pair.
+ * When PEM encoding was selected, the respective key will be a string, otherwise
+ * it will be a buffer containing the data encoded as DER.
+ * @since v10.12.0
+ * @param type Must be `'rsa'`, `'rsa-pss'`, `'dsa'`, `'ec'`, `'ed25519'`, `'ed448'`, `'x25519'`, `'x448'`, or `'dh'`.
+ */
+ function generateKeyPairSync(type: 'rsa', options: RSAKeyPairOptions<'pem', 'pem'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'rsa', options: RSAKeyPairOptions<'pem', 'der'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'rsa', options: RSAKeyPairOptions<'der', 'pem'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'rsa', options: RSAKeyPairOptions<'der', 'der'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'rsa', options: RSAKeyPairKeyObjectOptions): KeyPairKeyObjectResult;
+ function generateKeyPairSync(type: 'rsa-pss', options: RSAPSSKeyPairOptions<'pem', 'pem'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'rsa-pss', options: RSAPSSKeyPairOptions<'pem', 'der'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'rsa-pss', options: RSAPSSKeyPairOptions<'der', 'pem'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'rsa-pss', options: RSAPSSKeyPairOptions<'der', 'der'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'rsa-pss', options: RSAPSSKeyPairKeyObjectOptions): KeyPairKeyObjectResult;
+ function generateKeyPairSync(type: 'dsa', options: DSAKeyPairOptions<'pem', 'pem'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'dsa', options: DSAKeyPairOptions<'pem', 'der'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'dsa', options: DSAKeyPairOptions<'der', 'pem'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'dsa', options: DSAKeyPairOptions<'der', 'der'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'dsa', options: DSAKeyPairKeyObjectOptions): KeyPairKeyObjectResult;
+ function generateKeyPairSync(type: 'ec', options: ECKeyPairOptions<'pem', 'pem'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'ec', options: ECKeyPairOptions<'pem', 'der'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'ec', options: ECKeyPairOptions<'der', 'pem'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'ec', options: ECKeyPairOptions<'der', 'der'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'ec', options: ECKeyPairKeyObjectOptions): KeyPairKeyObjectResult;
+ function generateKeyPairSync(type: 'ed25519', options: ED25519KeyPairOptions<'pem', 'pem'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'ed25519', options: ED25519KeyPairOptions<'pem', 'der'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'ed25519', options: ED25519KeyPairOptions<'der', 'pem'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'ed25519', options: ED25519KeyPairOptions<'der', 'der'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'ed25519', options?: ED25519KeyPairKeyObjectOptions): KeyPairKeyObjectResult;
+ function generateKeyPairSync(type: 'ed448', options: ED448KeyPairOptions<'pem', 'pem'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'ed448', options: ED448KeyPairOptions<'pem', 'der'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'ed448', options: ED448KeyPairOptions<'der', 'pem'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'ed448', options: ED448KeyPairOptions<'der', 'der'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'ed448', options?: ED448KeyPairKeyObjectOptions): KeyPairKeyObjectResult;
+ function generateKeyPairSync(type: 'x25519', options: X25519KeyPairOptions<'pem', 'pem'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'x25519', options: X25519KeyPairOptions<'pem', 'der'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'x25519', options: X25519KeyPairOptions<'der', 'pem'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'x25519', options: X25519KeyPairOptions<'der', 'der'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'x25519', options?: X25519KeyPairKeyObjectOptions): KeyPairKeyObjectResult;
+ function generateKeyPairSync(type: 'x448', options: X448KeyPairOptions<'pem', 'pem'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'x448', options: X448KeyPairOptions<'pem', 'der'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'x448', options: X448KeyPairOptions<'der', 'pem'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'x448', options: X448KeyPairOptions<'der', 'der'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'x448', options?: X448KeyPairKeyObjectOptions): KeyPairKeyObjectResult;
+ /**
+ * Generates a new asymmetric key pair of the given `type`. RSA, RSA-PSS, DSA, EC,
+ * Ed25519, Ed448, X25519, X448, and DH are currently supported.
+ *
+ * If a `publicKeyEncoding` or `privateKeyEncoding` was specified, this function
+ * behaves as if `keyObject.export()` had been called on its result. Otherwise,
+ * the respective part of the key is returned as a `KeyObject`.
+ *
+ * It is recommended to encode public keys as `'spki'` and private keys as`'pkcs8'` with encryption for long-term storage:
+ *
+ * ```js
+ * const {
+ * generateKeyPair
+ * } = await import('crypto');
+ *
+ * generateKeyPair('rsa', {
+ * modulusLength: 4096,
+ * publicKeyEncoding: {
+ * type: 'spki',
+ * format: 'pem'
+ * },
+ * privateKeyEncoding: {
+ * type: 'pkcs8',
+ * format: 'pem',
+ * cipher: 'aes-256-cbc',
+ * passphrase: 'top secret'
+ * }
+ * }, (err, publicKey, privateKey) => {
+ * // Handle errors and use the generated key pair.
+ * });
+ * ```
+ *
+ * On completion, `callback` will be called with `err` set to `undefined` and`publicKey` / `privateKey` representing the generated key pair.
+ *
+ * If this method is invoked as its `util.promisify()` ed version, it returns
+ * a `Promise` for an `Object` with `publicKey` and `privateKey` properties.
+ * @since v10.12.0
+ * @param type Must be `'rsa'`, `'rsa-pss'`, `'dsa'`, `'ec'`, `'ed25519'`, `'ed448'`, `'x25519'`, `'x448'`, or `'dh'`.
+ */
+ function generateKeyPair(type: 'rsa', options: RSAKeyPairOptions<'pem', 'pem'>, callback: (err: Error | null, publicKey: string, privateKey: string) => void): void;
+ function generateKeyPair(type: 'rsa', options: RSAKeyPairOptions<'pem', 'der'>, callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void): void;
+ function generateKeyPair(type: 'rsa', options: RSAKeyPairOptions<'der', 'pem'>, callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void): void;
+ function generateKeyPair(type: 'rsa', options: RSAKeyPairOptions<'der', 'der'>, callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void): void;
+ function generateKeyPair(type: 'rsa', options: RSAKeyPairKeyObjectOptions, callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void): void;
+ function generateKeyPair(type: 'rsa-pss', options: RSAPSSKeyPairOptions<'pem', 'pem'>, callback: (err: Error | null, publicKey: string, privateKey: string) => void): void;
+ function generateKeyPair(type: 'rsa-pss', options: RSAPSSKeyPairOptions<'pem', 'der'>, callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void): void;
+ function generateKeyPair(type: 'rsa-pss', options: RSAPSSKeyPairOptions<'der', 'pem'>, callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void): void;
+ function generateKeyPair(type: 'rsa-pss', options: RSAPSSKeyPairOptions<'der', 'der'>, callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void): void;
+ function generateKeyPair(type: 'rsa-pss', options: RSAPSSKeyPairKeyObjectOptions, callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void): void;
+ function generateKeyPair(type: 'dsa', options: DSAKeyPairOptions<'pem', 'pem'>, callback: (err: Error | null, publicKey: string, privateKey: string) => void): void;
+ function generateKeyPair(type: 'dsa', options: DSAKeyPairOptions<'pem', 'der'>, callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void): void;
+ function generateKeyPair(type: 'dsa', options: DSAKeyPairOptions<'der', 'pem'>, callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void): void;
+ function generateKeyPair(type: 'dsa', options: DSAKeyPairOptions<'der', 'der'>, callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void): void;
+ function generateKeyPair(type: 'dsa', options: DSAKeyPairKeyObjectOptions, callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void): void;
+ function generateKeyPair(type: 'ec', options: ECKeyPairOptions<'pem', 'pem'>, callback: (err: Error | null, publicKey: string, privateKey: string) => void): void;
+ function generateKeyPair(type: 'ec', options: ECKeyPairOptions<'pem', 'der'>, callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void): void;
+ function generateKeyPair(type: 'ec', options: ECKeyPairOptions<'der', 'pem'>, callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void): void;
+ function generateKeyPair(type: 'ec', options: ECKeyPairOptions<'der', 'der'>, callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void): void;
+ function generateKeyPair(type: 'ec', options: ECKeyPairKeyObjectOptions, callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void): void;
+ function generateKeyPair(type: 'ed25519', options: ED25519KeyPairOptions<'pem', 'pem'>, callback: (err: Error | null, publicKey: string, privateKey: string) => void): void;
+ function generateKeyPair(type: 'ed25519', options: ED25519KeyPairOptions<'pem', 'der'>, callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void): void;
+ function generateKeyPair(type: 'ed25519', options: ED25519KeyPairOptions<'der', 'pem'>, callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void): void;
+ function generateKeyPair(type: 'ed25519', options: ED25519KeyPairOptions<'der', 'der'>, callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void): void;
+ function generateKeyPair(type: 'ed25519', options: ED25519KeyPairKeyObjectOptions | undefined, callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void): void;
+ function generateKeyPair(type: 'ed448', options: ED448KeyPairOptions<'pem', 'pem'>, callback: (err: Error | null, publicKey: string, privateKey: string) => void): void;
+ function generateKeyPair(type: 'ed448', options: ED448KeyPairOptions<'pem', 'der'>, callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void): void;
+ function generateKeyPair(type: 'ed448', options: ED448KeyPairOptions<'der', 'pem'>, callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void): void;
+ function generateKeyPair(type: 'ed448', options: ED448KeyPairOptions<'der', 'der'>, callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void): void;
+ function generateKeyPair(type: 'ed448', options: ED448KeyPairKeyObjectOptions | undefined, callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void): void;
+ function generateKeyPair(type: 'x25519', options: X25519KeyPairOptions<'pem', 'pem'>, callback: (err: Error | null, publicKey: string, privateKey: string) => void): void;
+ function generateKeyPair(type: 'x25519', options: X25519KeyPairOptions<'pem', 'der'>, callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void): void;
+ function generateKeyPair(type: 'x25519', options: X25519KeyPairOptions<'der', 'pem'>, callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void): void;
+ function generateKeyPair(type: 'x25519', options: X25519KeyPairOptions<'der', 'der'>, callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void): void;
+ function generateKeyPair(type: 'x25519', options: X25519KeyPairKeyObjectOptions | undefined, callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void): void;
+ function generateKeyPair(type: 'x448', options: X448KeyPairOptions<'pem', 'pem'>, callback: (err: Error | null, publicKey: string, privateKey: string) => void): void;
+ function generateKeyPair(type: 'x448', options: X448KeyPairOptions<'pem', 'der'>, callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void): void;
+ function generateKeyPair(type: 'x448', options: X448KeyPairOptions<'der', 'pem'>, callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void): void;
+ function generateKeyPair(type: 'x448', options: X448KeyPairOptions<'der', 'der'>, callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void): void;
+ function generateKeyPair(type: 'x448', options: X448KeyPairKeyObjectOptions | undefined, callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void): void;
+ namespace generateKeyPair {
+ function __promisify__(
+ type: 'rsa',
+ options: RSAKeyPairOptions<'pem', 'pem'>
+ ): Promise<{
+ publicKey: string;
+ privateKey: string;
+ }>;
+ function __promisify__(
+ type: 'rsa',
+ options: RSAKeyPairOptions<'pem', 'der'>
+ ): Promise<{
+ publicKey: string;
+ privateKey: Buffer;
+ }>;
+ function __promisify__(
+ type: 'rsa',
+ options: RSAKeyPairOptions<'der', 'pem'>
+ ): Promise<{
+ publicKey: Buffer;
+ privateKey: string;
+ }>;
+ function __promisify__(
+ type: 'rsa',
+ options: RSAKeyPairOptions<'der', 'der'>
+ ): Promise<{
+ publicKey: Buffer;
+ privateKey: Buffer;
+ }>;
+ function __promisify__(type: 'rsa', options: RSAKeyPairKeyObjectOptions): Promise;
+ function __promisify__(
+ type: 'rsa-pss',
+ options: RSAPSSKeyPairOptions<'pem', 'pem'>
+ ): Promise<{
+ publicKey: string;
+ privateKey: string;
+ }>;
+ function __promisify__(
+ type: 'rsa-pss',
+ options: RSAPSSKeyPairOptions<'pem', 'der'>
+ ): Promise<{
+ publicKey: string;
+ privateKey: Buffer;
+ }>;
+ function __promisify__(
+ type: 'rsa-pss',
+ options: RSAPSSKeyPairOptions<'der', 'pem'>
+ ): Promise<{
+ publicKey: Buffer;
+ privateKey: string;
+ }>;
+ function __promisify__(
+ type: 'rsa-pss',
+ options: RSAPSSKeyPairOptions<'der', 'der'>
+ ): Promise<{
+ publicKey: Buffer;
+ privateKey: Buffer;
+ }>;
+ function __promisify__(type: 'rsa-pss', options: RSAPSSKeyPairKeyObjectOptions): Promise;
+ function __promisify__(
+ type: 'dsa',
+ options: DSAKeyPairOptions<'pem', 'pem'>
+ ): Promise<{
+ publicKey: string;
+ privateKey: string;
+ }>;
+ function __promisify__(
+ type: 'dsa',
+ options: DSAKeyPairOptions<'pem', 'der'>
+ ): Promise<{
+ publicKey: string;
+ privateKey: Buffer;
+ }>;
+ function __promisify__(
+ type: 'dsa',
+ options: DSAKeyPairOptions<'der', 'pem'>
+ ): Promise<{
+ publicKey: Buffer;
+ privateKey: string;
+ }>;
+ function __promisify__(
+ type: 'dsa',
+ options: DSAKeyPairOptions<'der', 'der'>
+ ): Promise<{
+ publicKey: Buffer;
+ privateKey: Buffer;
+ }>;
+ function __promisify__(type: 'dsa', options: DSAKeyPairKeyObjectOptions): Promise;
+ function __promisify__(
+ type: 'ec',
+ options: ECKeyPairOptions<'pem', 'pem'>
+ ): Promise<{
+ publicKey: string;
+ privateKey: string;
+ }>;
+ function __promisify__(
+ type: 'ec',
+ options: ECKeyPairOptions<'pem', 'der'>
+ ): Promise<{
+ publicKey: string;
+ privateKey: Buffer;
+ }>;
+ function __promisify__(
+ type: 'ec',
+ options: ECKeyPairOptions<'der', 'pem'>
+ ): Promise<{
+ publicKey: Buffer;
+ privateKey: string;
+ }>;
+ function __promisify__(
+ type: 'ec',
+ options: ECKeyPairOptions<'der', 'der'>
+ ): Promise<{
+ publicKey: Buffer;
+ privateKey: Buffer;
+ }>;
+ function __promisify__(type: 'ec', options: ECKeyPairKeyObjectOptions): Promise;
+ function __promisify__(
+ type: 'ed25519',
+ options: ED25519KeyPairOptions<'pem', 'pem'>
+ ): Promise<{
+ publicKey: string;
+ privateKey: string;
+ }>;
+ function __promisify__(
+ type: 'ed25519',
+ options: ED25519KeyPairOptions<'pem', 'der'>
+ ): Promise<{
+ publicKey: string;
+ privateKey: Buffer;
+ }>;
+ function __promisify__(
+ type: 'ed25519',
+ options: ED25519KeyPairOptions<'der', 'pem'>
+ ): Promise<{
+ publicKey: Buffer;
+ privateKey: string;
+ }>;
+ function __promisify__(
+ type: 'ed25519',
+ options: ED25519KeyPairOptions<'der', 'der'>
+ ): Promise<{
+ publicKey: Buffer;
+ privateKey: Buffer;
+ }>;
+ function __promisify__(type: 'ed25519', options?: ED25519KeyPairKeyObjectOptions): Promise;
+ function __promisify__(
+ type: 'ed448',
+ options: ED448KeyPairOptions<'pem', 'pem'>
+ ): Promise<{
+ publicKey: string;
+ privateKey: string;
+ }>;
+ function __promisify__(
+ type: 'ed448',
+ options: ED448KeyPairOptions<'pem', 'der'>
+ ): Promise<{
+ publicKey: string;
+ privateKey: Buffer;
+ }>;
+ function __promisify__(
+ type: 'ed448',
+ options: ED448KeyPairOptions<'der', 'pem'>
+ ): Promise<{
+ publicKey: Buffer;
+ privateKey: string;
+ }>;
+ function __promisify__(
+ type: 'ed448',
+ options: ED448KeyPairOptions<'der', 'der'>
+ ): Promise<{
+ publicKey: Buffer;
+ privateKey: Buffer;
+ }>;
+ function __promisify__(type: 'ed448', options?: ED448KeyPairKeyObjectOptions): Promise;
+ function __promisify__(
+ type: 'x25519',
+ options: X25519KeyPairOptions<'pem', 'pem'>
+ ): Promise<{
+ publicKey: string;
+ privateKey: string;
+ }>;
+ function __promisify__(
+ type: 'x25519',
+ options: X25519KeyPairOptions<'pem', 'der'>
+ ): Promise<{
+ publicKey: string;
+ privateKey: Buffer;
+ }>;
+ function __promisify__(
+ type: 'x25519',
+ options: X25519KeyPairOptions<'der', 'pem'>
+ ): Promise<{
+ publicKey: Buffer;
+ privateKey: string;
+ }>;
+ function __promisify__(
+ type: 'x25519',
+ options: X25519KeyPairOptions<'der', 'der'>
+ ): Promise<{
+ publicKey: Buffer;
+ privateKey: Buffer;
+ }>;
+ function __promisify__(type: 'x25519', options?: X25519KeyPairKeyObjectOptions): Promise;
+ function __promisify__(
+ type: 'x448',
+ options: X448KeyPairOptions<'pem', 'pem'>
+ ): Promise<{
+ publicKey: string;
+ privateKey: string;
+ }>;
+ function __promisify__(
+ type: 'x448',
+ options: X448KeyPairOptions<'pem', 'der'>
+ ): Promise<{
+ publicKey: string;
+ privateKey: Buffer;
+ }>;
+ function __promisify__(
+ type: 'x448',
+ options: X448KeyPairOptions<'der', 'pem'>
+ ): Promise<{
+ publicKey: Buffer;
+ privateKey: string;
+ }>;
+ function __promisify__(
+ type: 'x448',
+ options: X448KeyPairOptions<'der', 'der'>
+ ): Promise<{
+ publicKey: Buffer;
+ privateKey: Buffer;
+ }>;
+ function __promisify__(type: 'x448', options?: X448KeyPairKeyObjectOptions): Promise;
+ }
+ /**
+ * Calculates and returns the signature for `data` using the given private key and
+ * algorithm. If `algorithm` is `null` or `undefined`, then the algorithm is
+ * dependent upon the key type (especially Ed25519 and Ed448).
+ *
+ * If `key` is not a `KeyObject`, this function behaves as if `key` had been
+ * passed to {@link createPrivateKey}. If it is an object, the following
+ * additional properties can be passed:
+ *
+ * If the `callback` function is provided this function uses libuv's threadpool.
+ * @since v12.0.0
+ */
+ function sign(algorithm: string | null | undefined, data: NodeJS.ArrayBufferView, key: KeyLike | SignKeyObjectInput | SignPrivateKeyInput): Buffer;
+ function sign(
+ algorithm: string | null | undefined,
+ data: NodeJS.ArrayBufferView,
+ key: KeyLike | SignKeyObjectInput | SignPrivateKeyInput,
+ callback: (error: Error | null, data: Buffer) => void
+ ): void;
+ /**
+ * Verifies the given signature for `data` using the given key and algorithm. If`algorithm` is `null` or `undefined`, then the algorithm is dependent upon the
+ * key type (especially Ed25519 and Ed448).
+ *
+ * If `key` is not a `KeyObject`, this function behaves as if `key` had been
+ * passed to {@link createPublicKey}. If it is an object, the following
+ * additional properties can be passed:
+ *
+ * The `signature` argument is the previously calculated signature for the `data`.
+ *
+ * Because public keys can be derived from private keys, a private key or a public
+ * key may be passed for `key`.
+ *
+ * If the `callback` function is provided this function uses libuv's threadpool.
+ * @since v12.0.0
+ */
+ function verify(algorithm: string | null | undefined, data: NodeJS.ArrayBufferView, key: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput, signature: NodeJS.ArrayBufferView): boolean;
+ function verify(
+ algorithm: string | null | undefined,
+ data: NodeJS.ArrayBufferView,
+ key: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput,
+ signature: NodeJS.ArrayBufferView,
+ callback: (error: Error | null, result: boolean) => void
+ ): void;
+ /**
+ * Computes the Diffie-Hellman secret based on a `privateKey` and a `publicKey`.
+ * Both keys must have the same `asymmetricKeyType`, which must be one of `'dh'`(for Diffie-Hellman), `'ec'` (for ECDH), `'x448'`, or `'x25519'` (for ECDH-ES).
+ * @since v13.9.0, v12.17.0
+ */
+ function diffieHellman(options: { privateKey: KeyObject; publicKey: KeyObject }): Buffer;
+ type CipherMode = 'cbc' | 'ccm' | 'cfb' | 'ctr' | 'ecb' | 'gcm' | 'ocb' | 'ofb' | 'stream' | 'wrap' | 'xts';
+ interface CipherInfoOptions {
+ /**
+ * A test key length.
+ */
+ keyLength?: number | undefined;
+ /**
+ * A test IV length.
+ */
+ ivLength?: number | undefined;
+ }
+ interface CipherInfo {
+ /**
+ * The name of the cipher.
+ */
+ name: string;
+ /**
+ * The nid of the cipher.
+ */
+ nid: number;
+ /**
+ * The block size of the cipher in bytes.
+ * This property is omitted when mode is 'stream'.
+ */
+ blockSize?: number | undefined;
+ /**
+ * The expected or default initialization vector length in bytes.
+ * This property is omitted if the cipher does not use an initialization vector.
+ */
+ ivLength?: number | undefined;
+ /**
+ * The expected or default key length in bytes.
+ */
+ keyLength: number;
+ /**
+ * The cipher mode.
+ */
+ mode: CipherMode;
+ }
+ /**
+ * Returns information about a given cipher.
+ *
+ * Some ciphers accept variable length keys and initialization vectors. By default,
+ * the `crypto.getCipherInfo()` method will return the default values for these
+ * ciphers. To test if a given key length or iv length is acceptable for given
+ * cipher, use the `keyLength` and `ivLength` options. If the given values are
+ * unacceptable, `undefined` will be returned.
+ * @since v15.0.0
+ * @param nameOrNid The name or nid of the cipher to query.
+ */
+ function getCipherInfo(nameOrNid: string | number, options?: CipherInfoOptions): CipherInfo | undefined;
+ /**
+ * HKDF is a simple key derivation function defined in RFC 5869\. The given `ikm`,`salt` and `info` are used with the `digest` to derive a key of `keylen` bytes.
+ *
+ * The supplied `callback` function is called with two arguments: `err` and`derivedKey`. If an errors occurs while deriving the key, `err` will be set;
+ * otherwise `err` will be `null`. The successfully generated `derivedKey` will
+ * be passed to the callback as an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer). An error will be thrown if any
+ * of the input arguments specify invalid values or types.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ * const {
+ * hkdf
+ * } = await import('crypto');
+ *
+ * hkdf('sha512', 'key', 'salt', 'info', 64, (err, derivedKey) => {
+ * if (err) throw err;
+ * console.log(Buffer.from(derivedKey).toString('hex')); // '24156e2...5391653'
+ * });
+ * ```
+ * @since v15.0.0
+ * @param digest The digest algorithm to use.
+ * @param ikm The input keying material. It must be at least one byte in length.
+ * @param salt The salt value. Must be provided but can be zero-length.
+ * @param info Additional info value. Must be provided but can be zero-length, and cannot be more than 1024 bytes.
+ * @param keylen The length of the key to generate. Must be greater than 0. The maximum allowable value is `255` times the number of bytes produced by the selected digest function (e.g. `sha512`
+ * generates 64-byte hashes, making the maximum HKDF output 16320 bytes).
+ */
+ function hkdf(digest: string, irm: BinaryLike | KeyObject, salt: BinaryLike, info: BinaryLike, keylen: number, callback: (err: Error | null, derivedKey: ArrayBuffer) => void): void;
+ /**
+ * Provides a synchronous HKDF key derivation function as defined in RFC 5869\. The
+ * given `ikm`, `salt` and `info` are used with the `digest` to derive a key of`keylen` bytes.
+ *
+ * The successfully generated `derivedKey` will be returned as an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer).
+ *
+ * An error will be thrown if any of the input arguments specify invalid values or
+ * types, or if the derived key cannot be generated.
+ *
+ * ```js
+ * import { Buffer } from 'buffer';
+ * const {
+ * hkdfSync
+ * } = await import('crypto');
+ *
+ * const derivedKey = hkdfSync('sha512', 'key', 'salt', 'info', 64);
+ * console.log(Buffer.from(derivedKey).toString('hex')); // '24156e2...5391653'
+ * ```
+ * @since v15.0.0
+ * @param digest The digest algorithm to use.
+ * @param ikm The input keying material. It must be at least one byte in length.
+ * @param salt The salt value. Must be provided but can be zero-length.
+ * @param info Additional info value. Must be provided but can be zero-length, and cannot be more than 1024 bytes.
+ * @param keylen The length of the key to generate. Must be greater than 0. The maximum allowable value is `255` times the number of bytes produced by the selected digest function (e.g. `sha512`
+ * generates 64-byte hashes, making the maximum HKDF output 16320 bytes).
+ */
+ function hkdfSync(digest: string, ikm: BinaryLike | KeyObject, salt: BinaryLike, info: BinaryLike, keylen: number): ArrayBuffer;
+ interface SecureHeapUsage {
+ /**
+ * The total allocated secure heap size as specified using the `--secure-heap=n` command-line flag.
+ */
+ total: number;
+ /**
+ * The minimum allocation from the secure heap as specified using the `--secure-heap-min` command-line flag.
+ */
+ min: number;
+ /**
+ * The total number of bytes currently allocated from the secure heap.
+ */
+ used: number;
+ /**
+ * The calculated ratio of `used` to `total` allocated bytes.
+ */
+ utilization: number;
+ }
+ /**
+ * @since v15.6.0
+ */
+ function secureHeapUsed(): SecureHeapUsage;
+ interface RandomUUIDOptions {
+ /**
+ * By default, to improve performance,
+ * Node.js will pre-emptively generate and persistently cache enough
+ * random data to generate up to 128 random UUIDs. To generate a UUID
+ * without using the cache, set `disableEntropyCache` to `true`.
+ *
+ * @default `false`
+ */
+ disableEntropyCache?: boolean | undefined;
+ }
+ /**
+ * Generates a random [RFC 4122](https://www.rfc-editor.org/rfc/rfc4122.txt) version 4 UUID. The UUID is generated using a
+ * cryptographic pseudorandom number generator.
+ * @since v15.6.0, v14.17.0
+ */
+ function randomUUID(options?: RandomUUIDOptions): string;
+ interface X509CheckOptions {
+ /**
+ * @default 'always'
+ */
+ subject: 'always' | 'never';
+ /**
+ * @default true
+ */
+ wildcards: boolean;
+ /**
+ * @default true
+ */
+ partialWildcards: boolean;
+ /**
+ * @default false
+ */
+ multiLabelWildcards: boolean;
+ /**
+ * @default false
+ */
+ singleLabelSubdomains: boolean;
+ }
+ /**
+ * Encapsulates an X509 certificate and provides read-only access to
+ * its information.
+ *
+ * ```js
+ * const { X509Certificate } = await import('crypto');
+ *
+ * const x509 = new X509Certificate('{... pem encoded cert ...}');
+ *
+ * console.log(x509.subject);
+ * ```
+ * @since v15.6.0
+ */
+ class X509Certificate {
+ /**
+ * Will be \`true\` if this is a Certificate Authority (CA) certificate.
+ * @since v15.6.0
+ */
+ readonly ca: boolean;
+ /**
+ * The SHA-1 fingerprint of this certificate.
+ *
+ * Because SHA-1 is cryptographically broken and because the security of SHA-1 is
+ * significantly worse than that of algorithms that are commonly used to sign
+ * certificates, consider using `x509.fingerprint256` instead.
+ * @since v15.6.0
+ */
+ readonly fingerprint: string;
+ /**
+ * The SHA-256 fingerprint of this certificate.
+ * @since v15.6.0
+ */
+ readonly fingerprint256: string;
+ /**
+ * The SHA-512 fingerprint of this certificate.
+ * @since v16.14.0
+ */
+ readonly fingerprint512: string;
+ /**
+ * The complete subject of this certificate.
+ * @since v15.6.0
+ */
+ readonly subject: string;
+ /**
+ * The subject alternative name specified for this certificate or `undefined`
+ * if not available.
+ * @since v15.6.0
+ */
+ readonly subjectAltName: string | undefined;
+ /**
+ * The information access content of this certificate or `undefined` if not
+ * available.
+ * @since v15.6.0
+ */
+ readonly infoAccess: string | undefined;
+ /**
+ * An array detailing the key usages for this certificate.
+ * @since v15.6.0
+ */
+ readonly keyUsage: string[];
+ /**
+ * The issuer identification included in this certificate.
+ * @since v15.6.0
+ */
+ readonly issuer: string;
+ /**
+ * The issuer certificate or `undefined` if the issuer certificate is not
+ * available.
+ * @since v15.9.0
+ */
+ readonly issuerCertificate?: X509Certificate | undefined;
+ /**
+ * The public key `KeyObject` for this certificate.
+ * @since v15.6.0
+ */
+ readonly publicKey: KeyObject;
+ /**
+ * A `Buffer` containing the DER encoding of this certificate.
+ * @since v15.6.0
+ */
+ readonly raw: Buffer;
+ /**
+ * The serial number of this certificate.
+ *
+ * Serial numbers are assigned by certificate authorities and do not uniquely
+ * identify certificates. Consider using `x509.fingerprint256` as a unique
+ * identifier instead.
+ * @since v15.6.0
+ */
+ readonly serialNumber: string;
+ /**
+ * The date/time from which this certificate is considered valid.
+ * @since v15.6.0
+ */
+ readonly validFrom: string;
+ /**
+ * The date/time until which this certificate is considered valid.
+ * @since v15.6.0
+ */
+ readonly validTo: string;
+ constructor(buffer: BinaryLike);
+ /**
+ * Checks whether the certificate matches the given email address.
+ *
+ * If the `'subject'` option is undefined or set to `'default'`, the certificate
+ * subject is only considered if the subject alternative name extension either does
+ * not exist or does not contain any email addresses.
+ *
+ * If the `'subject'` option is set to `'always'` and if the subject alternative
+ * name extension either does not exist or does not contain a matching email
+ * address, the certificate subject is considered.
+ *
+ * If the `'subject'` option is set to `'never'`, the certificate subject is never
+ * considered, even if the certificate contains no subject alternative names.
+ * @since v15.6.0
+ * @return Returns `email` if the certificate matches, `undefined` if it does not.
+ */
+ checkEmail(email: string, options?: Pick): string | undefined;
+ /**
+ * Checks whether the certificate matches the given host name.
+ *
+ * If the certificate matches the given host name, the matching subject name is
+ * returned. The returned name might be an exact match (e.g., `foo.example.com`)
+ * or it might contain wildcards (e.g., `*.example.com`). Because host name
+ * comparisons are case-insensitive, the returned subject name might also differ
+ * from the given `name` in capitalization.
+ *
+ * If the `'subject'` option is undefined or set to `'default'`, the certificate
+ * subject is only considered if the subject alternative name extension either does
+ * not exist or does not contain any DNS names. This behavior is consistent with [RFC 2818](https://www.rfc-editor.org/rfc/rfc2818.txt) ("HTTP Over TLS").
+ *
+ * If the `'subject'` option is set to `'always'` and if the subject alternative
+ * name extension either does not exist or does not contain a matching DNS name,
+ * the certificate subject is considered.
+ *
+ * If the `'subject'` option is set to `'never'`, the certificate subject is never
+ * considered, even if the certificate contains no subject alternative names.
+ * @since v15.6.0
+ * @return Returns a subject name that matches `name`, or `undefined` if no subject name matches `name`.
+ */
+ checkHost(name: string, options?: X509CheckOptions): string | undefined;
+ /**
+ * Checks whether the certificate matches the given IP address (IPv4 or IPv6).
+ *
+ * Only [RFC 5280](https://www.rfc-editor.org/rfc/rfc5280.txt) `iPAddress` subject alternative names are considered, and they
+ * must match the given `ip` address exactly. Other subject alternative names as
+ * well as the subject field of the certificate are ignored.
+ * @since v15.6.0
+ * @return Returns `ip` if the certificate matches, `undefined` if it does not.
+ */
+ checkIP(ip: string): string | undefined;
+ /**
+ * Checks whether this certificate was issued by the given `otherCert`.
+ * @since v15.6.0
+ */
+ checkIssued(otherCert: X509Certificate): boolean;
+ /**
+ * Checks whether the public key for this certificate is consistent with
+ * the given private key.
+ * @since v15.6.0
+ * @param privateKey A private key.
+ */
+ checkPrivateKey(privateKey: KeyObject): boolean;
+ /**
+ * There is no standard JSON encoding for X509 certificates. The`toJSON()` method returns a string containing the PEM encoded
+ * certificate.
+ * @since v15.6.0
+ */
+ toJSON(): string;
+ /**
+ * Returns information about this certificate using the legacy `certificate object` encoding.
+ * @since v15.6.0
+ */
+ toLegacyObject(): PeerCertificate;
+ /**
+ * Returns the PEM-encoded certificate.
+ * @since v15.6.0
+ */
+ toString(): string;
+ /**
+ * Verifies that this certificate was signed by the given public key.
+ * Does not perform any other validation checks on the certificate.
+ * @since v15.6.0
+ * @param publicKey A public key.
+ */
+ verify(publicKey: KeyObject): boolean;
+ }
+ type LargeNumberLike = NodeJS.ArrayBufferView | SharedArrayBuffer | ArrayBuffer | bigint;
+ interface GeneratePrimeOptions {
+ add?: LargeNumberLike | undefined;
+ rem?: LargeNumberLike | undefined;
+ /**
+ * @default false
+ */
+ safe?: boolean | undefined;
+ bigint?: boolean | undefined;
+ }
+ interface GeneratePrimeOptionsBigInt extends GeneratePrimeOptions {
+ bigint: true;
+ }
+ interface GeneratePrimeOptionsArrayBuffer extends GeneratePrimeOptions {
+ bigint?: false | undefined;
+ }
+ /**
+ * Generates a pseudorandom prime of `size` bits.
+ *
+ * If `options.safe` is `true`, the prime will be a safe prime -- that is,`(prime - 1) / 2` will also be a prime.
+ *
+ * The `options.add` and `options.rem` parameters can be used to enforce additional
+ * requirements, e.g., for Diffie-Hellman:
+ *
+ * * If `options.add` and `options.rem` are both set, the prime will satisfy the
+ * condition that `prime % add = rem`.
+ * * If only `options.add` is set and `options.safe` is not `true`, the prime will
+ * satisfy the condition that `prime % add = 1`.
+ * * If only `options.add` is set and `options.safe` is set to `true`, the prime
+ * will instead satisfy the condition that `prime % add = 3`. This is necessary
+ * because `prime % add = 1` for `options.add > 2` would contradict the condition
+ * enforced by `options.safe`.
+ * * `options.rem` is ignored if `options.add` is not given.
+ *
+ * Both `options.add` and `options.rem` must be encoded as big-endian sequences
+ * if given as an `ArrayBuffer`, `SharedArrayBuffer`, `TypedArray`, `Buffer`, or`DataView`.
+ *
+ * By default, the prime is encoded as a big-endian sequence of octets
+ * in an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer). If the `bigint` option is `true`, then a
+ * [bigint](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) is provided.
+ * @since v15.8.0
+ * @param size The size (in bits) of the prime to generate.
+ */
+ function generatePrime(size: number, callback: (err: Error | null, prime: ArrayBuffer) => void): void;
+ function generatePrime(size: number, options: GeneratePrimeOptionsBigInt, callback: (err: Error | null, prime: bigint) => void): void;
+ function generatePrime(size: number, options: GeneratePrimeOptionsArrayBuffer, callback: (err: Error | null, prime: ArrayBuffer) => void): void;
+ function generatePrime(size: number, options: GeneratePrimeOptions, callback: (err: Error | null, prime: ArrayBuffer | bigint) => void): void;
+ /**
+ * Generates a pseudorandom prime of `size` bits.
+ *
+ * If `options.safe` is `true`, the prime will be a safe prime -- that is,`(prime - 1) / 2` will also be a prime.
+ *
+ * The `options.add` and `options.rem` parameters can be used to enforce additional
+ * requirements, e.g., for Diffie-Hellman:
+ *
+ * * If `options.add` and `options.rem` are both set, the prime will satisfy the
+ * condition that `prime % add = rem`.
+ * * If only `options.add` is set and `options.safe` is not `true`, the prime will
+ * satisfy the condition that `prime % add = 1`.
+ * * If only `options.add` is set and `options.safe` is set to `true`, the prime
+ * will instead satisfy the condition that `prime % add = 3`. This is necessary
+ * because `prime % add = 1` for `options.add > 2` would contradict the condition
+ * enforced by `options.safe`.
+ * * `options.rem` is ignored if `options.add` is not given.
+ *
+ * Both `options.add` and `options.rem` must be encoded as big-endian sequences
+ * if given as an `ArrayBuffer`, `SharedArrayBuffer`, `TypedArray`, `Buffer`, or`DataView`.
+ *
+ * By default, the prime is encoded as a big-endian sequence of octets
+ * in an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer). If the `bigint` option is `true`, then a
+ * [bigint](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) is provided.
+ * @since v15.8.0
+ * @param size The size (in bits) of the prime to generate.
+ */
+ function generatePrimeSync(size: number): ArrayBuffer;
+ function generatePrimeSync(size: number, options: GeneratePrimeOptionsBigInt): bigint;
+ function generatePrimeSync(size: number, options: GeneratePrimeOptionsArrayBuffer): ArrayBuffer;
+ function generatePrimeSync(size: number, options: GeneratePrimeOptions): ArrayBuffer | bigint;
+ interface CheckPrimeOptions {
+ /**
+ * The number of Miller-Rabin probabilistic primality iterations to perform.
+ * When the value is 0 (zero), a number of checks is used that yields a false positive rate of at most 2-64 for random input.
+ * Care must be used when selecting a number of checks.
+ * Refer to the OpenSSL documentation for the BN_is_prime_ex function nchecks options for more details.
+ *
+ * @default 0
+ */
+ checks?: number | undefined;
+ }
+ /**
+ * Checks the primality of the `candidate`.
+ * @since v15.8.0
+ * @param candidate A possible prime encoded as a sequence of big endian octets of arbitrary length.
+ */
+ function checkPrime(value: LargeNumberLike, callback: (err: Error | null, result: boolean) => void): void;
+ function checkPrime(value: LargeNumberLike, options: CheckPrimeOptions, callback: (err: Error | null, result: boolean) => void): void;
+ /**
+ * Checks the primality of the `candidate`.
+ * @since v15.8.0
+ * @param candidate A possible prime encoded as a sequence of big endian octets of arbitrary length.
+ * @return `true` if the candidate is a prime with an error probability less than `0.25 ** options.checks`.
+ */
+ function checkPrimeSync(candidate: LargeNumberLike, options?: CheckPrimeOptions): boolean;
+ namespace webcrypto {
+ class CryptoKey {} // placeholder
+ }
+}
+declare module 'node:crypto' {
+ export * from 'crypto';
+}
diff --git a/node_modules/@types/node/dgram.d.ts b/node_modules/@types/node/dgram.d.ts
new file mode 100755
index 0000000..247328d
--- /dev/null
+++ b/node_modules/@types/node/dgram.d.ts
@@ -0,0 +1,545 @@
+/**
+ * The `dgram` module provides an implementation of UDP datagram sockets.
+ *
+ * ```js
+ * import dgram from 'dgram';
+ *
+ * const server = dgram.createSocket('udp4');
+ *
+ * server.on('error', (err) => {
+ * console.log(`server error:\n${err.stack}`);
+ * server.close();
+ * });
+ *
+ * server.on('message', (msg, rinfo) => {
+ * console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`);
+ * });
+ *
+ * server.on('listening', () => {
+ * const address = server.address();
+ * console.log(`server listening ${address.address}:${address.port}`);
+ * });
+ *
+ * server.bind(41234);
+ * // Prints: server listening 0.0.0.0:41234
+ * ```
+ * @see [source](https://github.com/nodejs/node/blob/v18.0.0/lib/dgram.js)
+ */
+declare module 'dgram' {
+ import { AddressInfo } from 'node:net';
+ import * as dns from 'node:dns';
+ import { EventEmitter, Abortable } from 'node:events';
+ interface RemoteInfo {
+ address: string;
+ family: 'IPv4' | 'IPv6';
+ port: number;
+ size: number;
+ }
+ interface BindOptions {
+ port?: number | undefined;
+ address?: string | undefined;
+ exclusive?: boolean | undefined;
+ fd?: number | undefined;
+ }
+ type SocketType = 'udp4' | 'udp6';
+ interface SocketOptions extends Abortable {
+ type: SocketType;
+ reuseAddr?: boolean | undefined;
+ /**
+ * @default false
+ */
+ ipv6Only?: boolean | undefined;
+ recvBufferSize?: number | undefined;
+ sendBufferSize?: number | undefined;
+ lookup?: ((hostname: string, options: dns.LookupOneOptions, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void) => void) | undefined;
+ }
+ /**
+ * Creates a `dgram.Socket` object. Once the socket is created, calling `socket.bind()` will instruct the socket to begin listening for datagram
+ * messages. When `address` and `port` are not passed to `socket.bind()` the
+ * method will bind the socket to the "all interfaces" address on a random port
+ * (it does the right thing for both `udp4` and `udp6` sockets). The bound address
+ * and port can be retrieved using `socket.address().address` and `socket.address().port`.
+ *
+ * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.close()` on the socket:
+ *
+ * ```js
+ * const controller = new AbortController();
+ * const { signal } = controller;
+ * const server = dgram.createSocket({ type: 'udp4', signal });
+ * server.on('message', (msg, rinfo) => {
+ * console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`);
+ * });
+ * // Later, when you want to close the server.
+ * controller.abort();
+ * ```
+ * @since v0.11.13
+ * @param options Available options are:
+ * @param callback Attached as a listener for `'message'` events. Optional.
+ */
+ function createSocket(type: SocketType, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket;
+ function createSocket(options: SocketOptions, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket;
+ /**
+ * Encapsulates the datagram functionality.
+ *
+ * New instances of `dgram.Socket` are created using {@link createSocket}.
+ * The `new` keyword is not to be used to create `dgram.Socket` instances.
+ * @since v0.1.99
+ */
+ class Socket extends EventEmitter {
+ /**
+ * Tells the kernel to join a multicast group at the given `multicastAddress` and`multicastInterface` using the `IP_ADD_MEMBERSHIP` socket option. If the`multicastInterface` argument is not
+ * specified, the operating system will choose
+ * one interface and will add membership to it. To add membership to every
+ * available interface, call `addMembership` multiple times, once per interface.
+ *
+ * When called on an unbound socket, this method will implicitly bind to a random
+ * port, listening on all interfaces.
+ *
+ * When sharing a UDP socket across multiple `cluster` workers, the`socket.addMembership()` function must be called only once or an`EADDRINUSE` error will occur:
+ *
+ * ```js
+ * import cluster from 'cluster';
+ * import dgram from 'dgram';
+ *
+ * if (cluster.isPrimary) {
+ * cluster.fork(); // Works ok.
+ * cluster.fork(); // Fails with EADDRINUSE.
+ * } else {
+ * const s = dgram.createSocket('udp4');
+ * s.bind(1234, () => {
+ * s.addMembership('224.0.0.114');
+ * });
+ * }
+ * ```
+ * @since v0.6.9
+ */
+ addMembership(multicastAddress: string, multicastInterface?: string): void;
+ /**
+ * Returns an object containing the address information for a socket.
+ * For UDP sockets, this object will contain `address`, `family` and `port`properties.
+ *
+ * This method throws `EBADF` if called on an unbound socket.
+ * @since v0.1.99
+ */
+ address(): AddressInfo;
+ /**
+ * For UDP sockets, causes the `dgram.Socket` to listen for datagram
+ * messages on a named `port` and optional `address`. If `port` is not
+ * specified or is `0`, the operating system will attempt to bind to a
+ * random port. If `address` is not specified, the operating system will
+ * attempt to listen on all addresses. Once binding is complete, a`'listening'` event is emitted and the optional `callback` function is
+ * called.
+ *
+ * Specifying both a `'listening'` event listener and passing a`callback` to the `socket.bind()` method is not harmful but not very
+ * useful.
+ *
+ * A bound datagram socket keeps the Node.js process running to receive
+ * datagram messages.
+ *
+ * If binding fails, an `'error'` event is generated. In rare case (e.g.
+ * attempting to bind with a closed socket), an `Error` may be thrown.
+ *
+ * Example of a UDP server listening on port 41234:
+ *
+ * ```js
+ * import dgram from 'dgram';
+ *
+ * const server = dgram.createSocket('udp4');
+ *
+ * server.on('error', (err) => {
+ * console.log(`server error:\n${err.stack}`);
+ * server.close();
+ * });
+ *
+ * server.on('message', (msg, rinfo) => {
+ * console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`);
+ * });
+ *
+ * server.on('listening', () => {
+ * const address = server.address();
+ * console.log(`server listening ${address.address}:${address.port}`);
+ * });
+ *
+ * server.bind(41234);
+ * // Prints: server listening 0.0.0.0:41234
+ * ```
+ * @since v0.1.99
+ * @param callback with no parameters. Called when binding is complete.
+ */
+ bind(port?: number, address?: string, callback?: () => void): this;
+ bind(port?: number, callback?: () => void): this;
+ bind(callback?: () => void): this;
+ bind(options: BindOptions, callback?: () => void): this;
+ /**
+ * Close the underlying socket and stop listening for data on it. If a callback is
+ * provided, it is added as a listener for the `'close'` event.
+ * @since v0.1.99
+ * @param callback Called when the socket has been closed.
+ */
+ close(callback?: () => void): this;
+ /**
+ * Associates the `dgram.Socket` to a remote address and port. Every
+ * message sent by this handle is automatically sent to that destination. Also,
+ * the socket will only receive messages from that remote peer.
+ * Trying to call `connect()` on an already connected socket will result
+ * in an `ERR_SOCKET_DGRAM_IS_CONNECTED` exception. If `address` is not
+ * provided, `'127.0.0.1'` (for `udp4` sockets) or `'::1'` (for `udp6` sockets)
+ * will be used by default. Once the connection is complete, a `'connect'` event
+ * is emitted and the optional `callback` function is called. In case of failure,
+ * the `callback` is called or, failing this, an `'error'` event is emitted.
+ * @since v12.0.0
+ * @param callback Called when the connection is completed or on error.
+ */
+ connect(port: number, address?: string, callback?: () => void): void;
+ connect(port: number, callback: () => void): void;
+ /**
+ * A synchronous function that disassociates a connected `dgram.Socket` from
+ * its remote address. Trying to call `disconnect()` on an unbound or already
+ * disconnected socket will result in an `ERR_SOCKET_DGRAM_NOT_CONNECTED` exception.
+ * @since v12.0.0
+ */
+ disconnect(): void;
+ /**
+ * Instructs the kernel to leave a multicast group at `multicastAddress` using the`IP_DROP_MEMBERSHIP` socket option. This method is automatically called by the
+ * kernel when the socket is closed or the process terminates, so most apps will
+ * never have reason to call this.
+ *
+ * If `multicastInterface` is not specified, the operating system will attempt to
+ * drop membership on all valid interfaces.
+ * @since v0.6.9
+ */
+ dropMembership(multicastAddress: string, multicastInterface?: string): void;
+ /**
+ * This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket.
+ * @since v8.7.0
+ * @return the `SO_RCVBUF` socket receive buffer size in bytes.
+ */
+ getRecvBufferSize(): number;
+ /**
+ * This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket.
+ * @since v8.7.0
+ * @return the `SO_SNDBUF` socket send buffer size in bytes.
+ */
+ getSendBufferSize(): number;
+ /**
+ * By default, binding a socket will cause it to block the Node.js process from
+ * exiting as long as the socket is open. The `socket.unref()` method can be used
+ * to exclude the socket from the reference counting that keeps the Node.js
+ * process active. The `socket.ref()` method adds the socket back to the reference
+ * counting and restores the default behavior.
+ *
+ * Calling `socket.ref()` multiples times will have no additional effect.
+ *
+ * The `socket.ref()` method returns a reference to the socket so calls can be
+ * chained.
+ * @since v0.9.1
+ */
+ ref(): this;
+ /**
+ * Returns an object containing the `address`, `family`, and `port` of the remote
+ * endpoint. This method throws an `ERR_SOCKET_DGRAM_NOT_CONNECTED` exception
+ * if the socket is not connected.
+ * @since v12.0.0
+ */
+ remoteAddress(): AddressInfo;
+ /**
+ * Broadcasts a datagram on the socket.
+ * For connectionless sockets, the destination `port` and `address` must be
+ * specified. Connected sockets, on the other hand, will use their associated
+ * remote endpoint, so the `port` and `address` arguments must not be set.
+ *
+ * The `msg` argument contains the message to be sent.
+ * Depending on its type, different behavior can apply. If `msg` is a `Buffer`,
+ * any `TypedArray` or a `DataView`,
+ * the `offset` and `length` specify the offset within the `Buffer` where the
+ * message begins and the number of bytes in the message, respectively.
+ * If `msg` is a `String`, then it is automatically converted to a `Buffer`with `'utf8'` encoding. With messages that
+ * contain multi-byte characters, `offset` and `length` will be calculated with
+ * respect to `byte length` and not the character position.
+ * If `msg` is an array, `offset` and `length` must not be specified.
+ *
+ * The `address` argument is a string. If the value of `address` is a host name,
+ * DNS will be used to resolve the address of the host. If `address` is not
+ * provided or otherwise nullish, `'127.0.0.1'` (for `udp4` sockets) or `'::1'`(for `udp6` sockets) will be used by default.
+ *
+ * If the socket has not been previously bound with a call to `bind`, the socket
+ * is assigned a random port number and is bound to the "all interfaces" address
+ * (`'0.0.0.0'` for `udp4` sockets, `'::0'` for `udp6` sockets.)
+ *
+ * An optional `callback` function may be specified to as a way of reporting
+ * DNS errors or for determining when it is safe to reuse the `buf` object.
+ * DNS lookups delay the time to send for at least one tick of the
+ * Node.js event loop.
+ *
+ * The only way to know for sure that the datagram has been sent is by using a`callback`. If an error occurs and a `callback` is given, the error will be
+ * passed as the first argument to the `callback`. If a `callback` is not given,
+ * the error is emitted as an `'error'` event on the `socket` object.
+ *
+ * Offset and length are optional but both _must_ be set if either are used.
+ * They are supported only when the first argument is a `Buffer`, a `TypedArray`,
+ * or a `DataView`.
+ *
+ * This method throws `ERR_SOCKET_BAD_PORT` if called on an unbound socket.
+ *
+ * Example of sending a UDP packet to a port on `localhost`;
+ *
+ * ```js
+ * import dgram from 'dgram';
+ * import { Buffer } from 'buffer';
+ *
+ * const message = Buffer.from('Some bytes');
+ * const client = dgram.createSocket('udp4');
+ * client.send(message, 41234, 'localhost', (err) => {
+ * client.close();
+ * });
+ * ```
+ *
+ * Example of sending a UDP packet composed of multiple buffers to a port on`127.0.0.1`;
+ *
+ * ```js
+ * import dgram from 'dgram';
+ * import { Buffer } from 'buffer';
+ *
+ * const buf1 = Buffer.from('Some ');
+ * const buf2 = Buffer.from('bytes');
+ * const client = dgram.createSocket('udp4');
+ * client.send([buf1, buf2], 41234, (err) => {
+ * client.close();
+ * });
+ * ```
+ *
+ * Sending multiple buffers might be faster or slower depending on the
+ * application and operating system. Run benchmarks to
+ * determine the optimal strategy on a case-by-case basis. Generally speaking,
+ * however, sending multiple buffers is faster.
+ *
+ * Example of sending a UDP packet using a socket connected to a port on`localhost`:
+ *
+ * ```js
+ * import dgram from 'dgram';
+ * import { Buffer } from 'buffer';
+ *
+ * const message = Buffer.from('Some bytes');
+ * const client = dgram.createSocket('udp4');
+ * client.connect(41234, 'localhost', (err) => {
+ * client.send(message, (err) => {
+ * client.close();
+ * });
+ * });
+ * ```
+ * @since v0.1.99
+ * @param msg Message to be sent.
+ * @param offset Offset in the buffer where the message starts.
+ * @param length Number of bytes in the message.
+ * @param port Destination port.
+ * @param address Destination host name or IP address.
+ * @param callback Called when the message has been sent.
+ */
+ send(msg: string | Uint8Array | ReadonlyArray, port?: number, address?: string, callback?: (error: Error | null, bytes: number) => void): void;
+ send(msg: string | Uint8Array | ReadonlyArray, port?: number, callback?: (error: Error | null, bytes: number) => void): void;
+ send(msg: string | Uint8Array | ReadonlyArray, callback?: (error: Error | null, bytes: number) => void): void;
+ send(msg: string | Uint8Array, offset: number, length: number, port?: number, address?: string, callback?: (error: Error | null, bytes: number) => void): void;
+ send(msg: string | Uint8Array, offset: number, length: number, port?: number, callback?: (error: Error | null, bytes: number) => void): void;
+ send(msg: string | Uint8Array, offset: number, length: number, callback?: (error: Error | null, bytes: number) => void): void;
+ /**
+ * Sets or clears the `SO_BROADCAST` socket option. When set to `true`, UDP
+ * packets may be sent to a local interface's broadcast address.
+ *
+ * This method throws `EBADF` if called on an unbound socket.
+ * @since v0.6.9
+ */
+ setBroadcast(flag: boolean): void;
+ /**
+ * _All references to scope in this section are referring to [IPv6 Zone Indices](https://en.wikipedia.org/wiki/IPv6_address#Scoped_literal_IPv6_addresses), which are defined by [RFC
+ * 4007](https://tools.ietf.org/html/rfc4007). In string form, an IP_
+ * _with a scope index is written as `'IP%scope'` where scope is an interface name_
+ * _or interface number._
+ *
+ * Sets the default outgoing multicast interface of the socket to a chosen
+ * interface or back to system interface selection. The `multicastInterface` must
+ * be a valid string representation of an IP from the socket's family.
+ *
+ * For IPv4 sockets, this should be the IP configured for the desired physical
+ * interface. All packets sent to multicast on the socket will be sent on the
+ * interface determined by the most recent successful use of this call.
+ *
+ * For IPv6 sockets, `multicastInterface` should include a scope to indicate the
+ * interface as in the examples that follow. In IPv6, individual `send` calls can
+ * also use explicit scope in addresses, so only packets sent to a multicast
+ * address without specifying an explicit scope are affected by the most recent
+ * successful use of this call.
+ *
+ * This method throws `EBADF` if called on an unbound socket.
+ *
+ * #### Example: IPv6 outgoing multicast interface
+ *
+ * On most systems, where scope format uses the interface name:
+ *
+ * ```js
+ * const socket = dgram.createSocket('udp6');
+ *
+ * socket.bind(1234, () => {
+ * socket.setMulticastInterface('::%eth1');
+ * });
+ * ```
+ *
+ * On Windows, where scope format uses an interface number:
+ *
+ * ```js
+ * const socket = dgram.createSocket('udp6');
+ *
+ * socket.bind(1234, () => {
+ * socket.setMulticastInterface('::%2');
+ * });
+ * ```
+ *
+ * #### Example: IPv4 outgoing multicast interface
+ *
+ * All systems use an IP of the host on the desired physical interface:
+ *
+ * ```js
+ * const socket = dgram.createSocket('udp4');
+ *
+ * socket.bind(1234, () => {
+ * socket.setMulticastInterface('10.0.0.2');
+ * });
+ * ```
+ * @since v8.6.0
+ */
+ setMulticastInterface(multicastInterface: string): void;
+ /**
+ * Sets or clears the `IP_MULTICAST_LOOP` socket option. When set to `true`,
+ * multicast packets will also be received on the local interface.
+ *
+ * This method throws `EBADF` if called on an unbound socket.
+ * @since v0.3.8
+ */
+ setMulticastLoopback(flag: boolean): boolean;
+ /**
+ * Sets the `IP_MULTICAST_TTL` socket option. While TTL generally stands for
+ * "Time to Live", in this context it specifies the number of IP hops that a
+ * packet is allowed to travel through, specifically for multicast traffic. Each
+ * router or gateway that forwards a packet decrements the TTL. If the TTL is
+ * decremented to 0 by a router, it will not be forwarded.
+ *
+ * The `ttl` argument may be between 0 and 255\. The default on most systems is `1`.
+ *
+ * This method throws `EBADF` if called on an unbound socket.
+ * @since v0.3.8
+ */
+ setMulticastTTL(ttl: number): number;
+ /**
+ * Sets the `SO_RCVBUF` socket option. Sets the maximum socket receive buffer
+ * in bytes.
+ *
+ * This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket.
+ * @since v8.7.0
+ */
+ setRecvBufferSize(size: number): void;
+ /**
+ * Sets the `SO_SNDBUF` socket option. Sets the maximum socket send buffer
+ * in bytes.
+ *
+ * This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket.
+ * @since v8.7.0
+ */
+ setSendBufferSize(size: number): void;
+ /**
+ * Sets the `IP_TTL` socket option. While TTL generally stands for "Time to Live",
+ * in this context it specifies the number of IP hops that a packet is allowed to
+ * travel through. Each router or gateway that forwards a packet decrements the
+ * TTL. If the TTL is decremented to 0 by a router, it will not be forwarded.
+ * Changing TTL values is typically done for network probes or when multicasting.
+ *
+ * The `ttl` argument may be between 1 and 255\. The default on most systems
+ * is 64.
+ *
+ * This method throws `EBADF` if called on an unbound socket.
+ * @since v0.1.101
+ */
+ setTTL(ttl: number): number;
+ /**
+ * By default, binding a socket will cause it to block the Node.js process from
+ * exiting as long as the socket is open. The `socket.unref()` method can be used
+ * to exclude the socket from the reference counting that keeps the Node.js
+ * process active, allowing the process to exit even if the socket is still
+ * listening.
+ *
+ * Calling `socket.unref()` multiple times will have no addition effect.
+ *
+ * The `socket.unref()` method returns a reference to the socket so calls can be
+ * chained.
+ * @since v0.9.1
+ */
+ unref(): this;
+ /**
+ * Tells the kernel to join a source-specific multicast channel at the given`sourceAddress` and `groupAddress`, using the `multicastInterface` with the`IP_ADD_SOURCE_MEMBERSHIP` socket
+ * option. If the `multicastInterface` argument
+ * is not specified, the operating system will choose one interface and will add
+ * membership to it. To add membership to every available interface, call`socket.addSourceSpecificMembership()` multiple times, once per interface.
+ *
+ * When called on an unbound socket, this method will implicitly bind to a random
+ * port, listening on all interfaces.
+ * @since v13.1.0, v12.16.0
+ */
+ addSourceSpecificMembership(sourceAddress: string, groupAddress: string, multicastInterface?: string): void;
+ /**
+ * Instructs the kernel to leave a source-specific multicast channel at the given`sourceAddress` and `groupAddress` using the `IP_DROP_SOURCE_MEMBERSHIP`socket option. This method is
+ * automatically called by the kernel when the
+ * socket is closed or the process terminates, so most apps will never have
+ * reason to call this.
+ *
+ * If `multicastInterface` is not specified, the operating system will attempt to
+ * drop membership on all valid interfaces.
+ * @since v13.1.0, v12.16.0
+ */
+ dropSourceSpecificMembership(sourceAddress: string, groupAddress: string, multicastInterface?: string): void;
+ /**
+ * events.EventEmitter
+ * 1. close
+ * 2. connect
+ * 3. error
+ * 4. listening
+ * 5. message
+ */
+ addListener(event: string, listener: (...args: any[]) => void): this;
+ addListener(event: 'close', listener: () => void): this;
+ addListener(event: 'connect', listener: () => void): this;
+ addListener(event: 'error', listener: (err: Error) => void): this;
+ addListener(event: 'listening', listener: () => void): this;
+ addListener(event: 'message', listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
+ emit(event: string | symbol, ...args: any[]): boolean;
+ emit(event: 'close'): boolean;
+ emit(event: 'connect'): boolean;
+ emit(event: 'error', err: Error): boolean;
+ emit(event: 'listening'): boolean;
+ emit(event: 'message', msg: Buffer, rinfo: RemoteInfo): boolean;
+ on(event: string, listener: (...args: any[]) => void): this;
+ on(event: 'close', listener: () => void): this;
+ on(event: 'connect', listener: () => void): this;
+ on(event: 'error', listener: (err: Error) => void): this;
+ on(event: 'listening', listener: () => void): this;
+ on(event: 'message', listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
+ once(event: string, listener: (...args: any[]) => void): this;
+ once(event: 'close', listener: () => void): this;
+ once(event: 'connect', listener: () => void): this;
+ once(event: 'error', listener: (err: Error) => void): this;
+ once(event: 'listening', listener: () => void): this;
+ once(event: 'message', listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
+ prependListener(event: string, listener: (...args: any[]) => void): this;
+ prependListener(event: 'close', listener: () => void): this;
+ prependListener(event: 'connect', listener: () => void): this;
+ prependListener(event: 'error', listener: (err: Error) => void): this;
+ prependListener(event: 'listening', listener: () => void): this;
+ prependListener(event: 'message', listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
+ prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+ prependOnceListener(event: 'close', listener: () => void): this;
+ prependOnceListener(event: 'connect', listener: () => void): this;
+ prependOnceListener(event: 'error', listener: (err: Error) => void): this;
+ prependOnceListener(event: 'listening', listener: () => void): this;
+ prependOnceListener(event: 'message', listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
+ }
+}
+declare module 'node:dgram' {
+ export * from 'dgram';
+}
diff --git a/node_modules/@types/node/diagnostics_channel.d.ts b/node_modules/@types/node/diagnostics_channel.d.ts
new file mode 100755
index 0000000..a87ba8c
--- /dev/null
+++ b/node_modules/@types/node/diagnostics_channel.d.ts
@@ -0,0 +1,153 @@
+/**
+ * The `diagnostics_channel` module provides an API to create named channels
+ * to report arbitrary message data for diagnostics purposes.
+ *
+ * It can be accessed using:
+ *
+ * ```js
+ * import diagnostics_channel from 'diagnostics_channel';
+ * ```
+ *
+ * It is intended that a module writer wanting to report diagnostics messages
+ * will create one or many top-level channels to report messages through.
+ * Channels may also be acquired at runtime but it is not encouraged
+ * due to the additional overhead of doing so. Channels may be exported for
+ * convenience, but as long as the name is known it can be acquired anywhere.
+ *
+ * If you intend for your module to produce diagnostics data for others to
+ * consume it is recommended that you include documentation of what named
+ * channels are used along with the shape of the message data. Channel names
+ * should generally include the module name to avoid collisions with data from
+ * other modules.
+ * @experimental
+ * @see [source](https://github.com/nodejs/node/blob/v18.0.0/lib/diagnostics_channel.js)
+ */
+declare module 'diagnostics_channel' {
+ /**
+ * Check if there are active subscribers to the named channel. This is helpful if
+ * the message you want to send might be expensive to prepare.
+ *
+ * This API is optional but helpful when trying to publish messages from very
+ * performance-sensitive code.
+ *
+ * ```js
+ * import diagnostics_channel from 'diagnostics_channel';
+ *
+ * if (diagnostics_channel.hasSubscribers('my-channel')) {
+ * // There are subscribers, prepare and publish message
+ * }
+ * ```
+ * @since v15.1.0, v14.17.0
+ * @param name The channel name
+ * @return If there are active subscribers
+ */
+ function hasSubscribers(name: string): boolean;
+ /**
+ * This is the primary entry-point for anyone wanting to interact with a named
+ * channel. It produces a channel object which is optimized to reduce overhead at
+ * publish time as much as possible.
+ *
+ * ```js
+ * import diagnostics_channel from 'diagnostics_channel';
+ *
+ * const channel = diagnostics_channel.channel('my-channel');
+ * ```
+ * @since v15.1.0, v14.17.0
+ * @param name The channel name
+ * @return The named channel object
+ */
+ function channel(name: string): Channel;
+ type ChannelListener = (message: unknown, name: string) => void;
+ /**
+ * The class `Channel` represents an individual named channel within the data
+ * pipeline. It is use to track subscribers and to publish messages when there
+ * are subscribers present. It exists as a separate object to avoid channel
+ * lookups at publish time, enabling very fast publish speeds and allowing
+ * for heavy use while incurring very minimal cost. Channels are created with {@link channel}, constructing a channel directly
+ * with `new Channel(name)` is not supported.
+ * @since v15.1.0, v14.17.0
+ */
+ class Channel {
+ readonly name: string;
+ /**
+ * Check if there are active subscribers to this channel. This is helpful if
+ * the message you want to send might be expensive to prepare.
+ *
+ * This API is optional but helpful when trying to publish messages from very
+ * performance-sensitive code.
+ *
+ * ```js
+ * import diagnostics_channel from 'diagnostics_channel';
+ *
+ * const channel = diagnostics_channel.channel('my-channel');
+ *
+ * if (channel.hasSubscribers) {
+ * // There are subscribers, prepare and publish message
+ * }
+ * ```
+ * @since v15.1.0, v14.17.0
+ */
+ readonly hasSubscribers: boolean;
+ private constructor(name: string);
+ /**
+ * Publish a message to any subscribers to the channel. This will
+ * trigger message handlers synchronously so they will execute within
+ * the same context.
+ *
+ * ```js
+ * import diagnostics_channel from 'diagnostics_channel';
+ *
+ * const channel = diagnostics_channel.channel('my-channel');
+ *
+ * channel.publish({
+ * some: 'message'
+ * });
+ * ```
+ * @since v15.1.0, v14.17.0
+ * @param message The message to send to the channel subscribers
+ */
+ publish(message: unknown): void;
+ /**
+ * Register a message handler to subscribe to this channel. This message handler
+ * will be run synchronously whenever a message is published to the channel. Any
+ * errors thrown in the message handler will trigger an `'uncaughtException'`.
+ *
+ * ```js
+ * import diagnostics_channel from 'diagnostics_channel';
+ *
+ * const channel = diagnostics_channel.channel('my-channel');
+ *
+ * channel.subscribe((message, name) => {
+ * // Received data
+ * });
+ * ```
+ * @since v15.1.0, v14.17.0
+ * @param onMessage The handler to receive channel messages
+ */
+ subscribe(onMessage: ChannelListener): void;
+ /**
+ * Remove a message handler previously registered to this channel with `channel.subscribe(onMessage)`.
+ *
+ * ```js
+ * import diagnostics_channel from 'diagnostics_channel';
+ *
+ * const channel = diagnostics_channel.channel('my-channel');
+ *
+ * function onMessage(message, name) {
+ * // Received data
+ * }
+ *
+ * channel.subscribe(onMessage);
+ *
+ * channel.unsubscribe(onMessage);
+ * ```
+ * @since v15.1.0, v14.17.0
+ * @param onMessage The previous subscribed handler to remove
+ * @return `true` if the handler was found, `false` otherwise.
+ */
+ unsubscribe(onMessage: ChannelListener): void;
+ }
+}
+declare module 'node:diagnostics_channel' {
+ export * from 'diagnostics_channel';
+}
diff --git a/node_modules/@types/node/dns.d.ts b/node_modules/@types/node/dns.d.ts
new file mode 100755
index 0000000..305367b
--- /dev/null
+++ b/node_modules/@types/node/dns.d.ts
@@ -0,0 +1,659 @@
+/**
+ * The `dns` module enables name resolution. For example, use it to look up IP
+ * addresses of host names.
+ *
+ * Although named for the [Domain Name System (DNS)](https://en.wikipedia.org/wiki/Domain_Name_System), it does not always use the
+ * DNS protocol for lookups. {@link lookup} uses the operating system
+ * facilities to perform name resolution. It may not need to perform any network
+ * communication. To perform name resolution the way other applications on the same
+ * system do, use {@link lookup}.
+ *
+ * ```js
+ * const dns = require('dns');
+ *
+ * dns.lookup('example.org', (err, address, family) => {
+ * console.log('address: %j family: IPv%s', address, family);
+ * });
+ * // address: "93.184.216.34" family: IPv4
+ * ```
+ *
+ * All other functions in the `dns` module connect to an actual DNS server to
+ * perform name resolution. They will always use the network to perform DNS
+ * queries. These functions do not use the same set of configuration files used by {@link lookup} (e.g. `/etc/hosts`). Use these functions to always perform
+ * DNS queries, bypassing other name-resolution facilities.
+ *
+ * ```js
+ * const dns = require('dns');
+ *
+ * dns.resolve4('archive.org', (err, addresses) => {
+ * if (err) throw err;
+ *
+ * console.log(`addresses: ${JSON.stringify(addresses)}`);
+ *
+ * addresses.forEach((a) => {
+ * dns.reverse(a, (err, hostnames) => {
+ * if (err) {
+ * throw err;
+ * }
+ * console.log(`reverse for ${a}: ${JSON.stringify(hostnames)}`);
+ * });
+ * });
+ * });
+ * ```
+ *
+ * See the `Implementation considerations section` for more information.
+ * @see [source](https://github.com/nodejs/node/blob/v18.0.0/lib/dns.js)
+ */
+declare module 'dns' {
+ import * as dnsPromises from 'node:dns/promises';
+ // Supported getaddrinfo flags.
+ export const ADDRCONFIG: number;
+ export const V4MAPPED: number;
+ /**
+ * If `dns.V4MAPPED` is specified, return resolved IPv6 addresses as
+ * well as IPv4 mapped IPv6 addresses.
+ */
+ export const ALL: number;
+ export interface LookupOptions {
+ family?: number | undefined;
+ hints?: number | undefined;
+ all?: boolean | undefined;
+ /**
+ * @default true
+ */
+ verbatim?: boolean | undefined;
+ }
+ export interface LookupOneOptions extends LookupOptions {
+ all?: false | undefined;
+ }
+ export interface LookupAllOptions extends LookupOptions {
+ all: true;
+ }
+ export interface LookupAddress {
+ address: string;
+ family: number;
+ }
+ /**
+ * Resolves a host name (e.g. `'nodejs.org'`) into the first found A (IPv4) or
+ * AAAA (IPv6) record. All `option` properties are optional. If `options` is an
+ * integer, then it must be `4` or `6` – if `options` is not provided, then IPv4
+ * and IPv6 addresses are both returned if found.
+ *
+ * With the `all` option set to `true`, the arguments for `callback` change to`(err, addresses)`, with `addresses` being an array of objects with the
+ * properties `address` and `family`.
+ *
+ * On error, `err` is an `Error` object, where `err.code` is the error code.
+ * Keep in mind that `err.code` will be set to `'ENOTFOUND'` not only when
+ * the host name does not exist but also when the lookup fails in other ways
+ * such as no available file descriptors.
+ *
+ * `dns.lookup()` does not necessarily have anything to do with the DNS protocol.
+ * The implementation uses an operating system facility that can associate names
+ * with addresses, and vice versa. This implementation can have subtle but
+ * important consequences on the behavior of any Node.js program. Please take some
+ * time to consult the `Implementation considerations section` before using`dns.lookup()`.
+ *
+ * Example usage:
+ *
+ * ```js
+ * const dns = require('dns');
+ * const options = {
+ * family: 6,
+ * hints: dns.ADDRCONFIG | dns.V4MAPPED,
+ * };
+ * dns.lookup('example.com', options, (err, address, family) =>
+ * console.log('address: %j family: IPv%s', address, family));
+ * // address: "2606:2800:220:1:248:1893:25c8:1946" family: IPv6
+ *
+ * // When options.all is true, the result will be an Array.
+ * options.all = true;
+ * dns.lookup('example.com', options, (err, addresses) =>
+ * console.log('addresses: %j', addresses));
+ * // addresses: [{"address":"2606:2800:220:1:248:1893:25c8:1946","family":6}]
+ * ```
+ *
+ * If this method is invoked as its `util.promisify()` ed version, and `all`is not set to `true`, it returns a `Promise` for an `Object` with `address` and`family` properties.
+ * @since v0.1.90
+ */
+ export function lookup(hostname: string, family: number, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void): void;
+ export function lookup(hostname: string, options: LookupOneOptions, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void): void;
+ export function lookup(hostname: string, options: LookupAllOptions, callback: (err: NodeJS.ErrnoException | null, addresses: LookupAddress[]) => void): void;
+ export function lookup(hostname: string, options: LookupOptions, callback: (err: NodeJS.ErrnoException | null, address: string | LookupAddress[], family: number) => void): void;
+ export function lookup(hostname: string, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void): void;
+ export namespace lookup {
+ function __promisify__(hostname: string, options: LookupAllOptions): Promise;
+ function __promisify__(hostname: string, options?: LookupOneOptions | number): Promise;
+ function __promisify__(hostname: string, options: LookupOptions): Promise