From 72908b7de9054ee0d8277373173cb05f61c7133f Mon Sep 17 00:00:00 2001
From: dblythy
Date: Fri, 23 Jun 2023 13:17:27 +1000
Subject: [PATCH 01/10] feat: add typescript support
---
.github/workflows/ci.yml | 1 +
package-lock.json | 1592 ++++++++++++++++++++++++++++
package.json | 6 +-
types/index.d.ts | 2010 +++++++++++++++++++++++++++++++++++
types/node.d.ts | 3 +
types/react-native.d.ts | 3 +
types/tests.ts | 2175 ++++++++++++++++++++++++++++++++++++++
types/tsconfig.json | 26 +
types/tslint.json | 8 +
9 files changed, 5823 insertions(+), 1 deletion(-)
create mode 100644 types/index.d.ts
create mode 100644 types/node.d.ts
create mode 100644 types/react-native.d.ts
create mode 100644 types/tests.ts
create mode 100644 types/tsconfig.json
create mode 100644 types/tslint.json
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 74ef1f029..3923740a6 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -51,6 +51,7 @@ jobs:
${{ runner.os }}-node-${{ matrix.NODE_VERSION }}-
- run: npm ci
- run: npm run lint
+ - run: npm run test:types
- run: npm test -- --maxWorkers=4
- run: npm run test:mongodb
env:
diff --git a/package-lock.json b/package-lock.json
index 86db573b9..1860eb606 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -41,6 +41,7 @@
"codecov": "3.8.3",
"core-js": "3.30.2",
"cross-env": "7.0.2",
+ "dtslint": "4.1.3",
"eslint": "8.40.0",
"eslint-plugin-flowtype": "8.0.3",
"eslint-plugin-jsdoc": "43.0.7",
@@ -2215,6 +2216,77 @@
"kuler": "^2.0.0"
}
},
+ "node_modules/@definitelytyped/header-parser": {
+ "version": "0.0.163",
+ "resolved": "https://registry.npmjs.org/@definitelytyped/header-parser/-/header-parser-0.0.163.tgz",
+ "integrity": "sha512-Jr+/q+ESfc7uWldz/j11BfpjIN/gB4WmwhFENhWaMwM0W/9p0ShF+OiUqGhk2Q3Iz8v/oyWzSsxyxgasg9kCxQ==",
+ "dev": true,
+ "dependencies": {
+ "@definitelytyped/typescript-versions": "^0.0.163",
+ "@types/parsimmon": "^1.10.1",
+ "parsimmon": "^1.13.0"
+ }
+ },
+ "node_modules/@definitelytyped/typescript-versions": {
+ "version": "0.0.163",
+ "resolved": "https://registry.npmjs.org/@definitelytyped/typescript-versions/-/typescript-versions-0.0.163.tgz",
+ "integrity": "sha512-+GWtJhC+7UaCUnJ+ZkA7bfGuPd6ZbJKEjbHqh76/gOXsqAUOMEa49ufsLlIPUbkEeQlnDNoTHCegE5X/Q+u+/A==",
+ "dev": true
+ },
+ "node_modules/@definitelytyped/utils": {
+ "version": "0.0.163",
+ "resolved": "https://registry.npmjs.org/@definitelytyped/utils/-/utils-0.0.163.tgz",
+ "integrity": "sha512-6MX5TxaQbG/j2RkCWbcbLvv+YNipKqY0eQJafDhwC/RprUocpg+uYVNlH8XzdKRWOGJ0pq7SZOsJD4C3A01ZXg==",
+ "dev": true,
+ "dependencies": {
+ "@definitelytyped/typescript-versions": "^0.0.163",
+ "@qiwi/npm-registry-client": "^8.9.1",
+ "@types/node": "^14.14.35",
+ "charm": "^1.0.2",
+ "fs-extra": "^8.1.0",
+ "fstream": "^1.0.12",
+ "tar": "^6.1.11",
+ "tar-stream": "^2.1.4"
+ }
+ },
+ "node_modules/@definitelytyped/utils/node_modules/@types/node": {
+ "version": "14.18.51",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.51.tgz",
+ "integrity": "sha512-P9bsdGFPpVtofEKlhWMVS2qqx1A/rt9QBfihWlklfHHpUpjtYse5AzFz6j4DWrARLYh6gRnw9+5+DJcrq3KvBA==",
+ "dev": true
+ },
+ "node_modules/@definitelytyped/utils/node_modules/fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
+ }
+ },
+ "node_modules/@definitelytyped/utils/node_modules/jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "dev": true,
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/@definitelytyped/utils/node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
"node_modules/@envelop/core": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/@envelop/core/-/core-2.6.0.tgz",
@@ -4237,6 +4309,72 @@
"node": ">=12"
}
},
+ "node_modules/@qiwi/npm-registry-client": {
+ "version": "8.9.1",
+ "resolved": "https://registry.npmjs.org/@qiwi/npm-registry-client/-/npm-registry-client-8.9.1.tgz",
+ "integrity": "sha512-rZF+mG+NfijR0SHphhTLHRr4aM4gtfdwoAMY6we2VGQam8vkN1cxGG1Lg/Llrj8Dd0Mu6VjdFQRyMMRZxtZR2A==",
+ "dev": true,
+ "dependencies": {
+ "concat-stream": "^2.0.0",
+ "graceful-fs": "^4.2.4",
+ "normalize-package-data": "~1.0.1 || ^2.0.0 || ^3.0.0",
+ "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^8.0.0",
+ "once": "^1.4.0",
+ "request": "^2.88.2",
+ "retry": "^0.12.0",
+ "safe-buffer": "^5.2.1",
+ "semver": "2 >=2.2.1 || 3.x || 4 || 5 || 7",
+ "slide": "^1.1.6",
+ "ssri": "^8.0.0"
+ },
+ "optionalDependencies": {
+ "npmlog": "2 || ^3.1.0 || ^4.0.0"
+ }
+ },
+ "node_modules/@qiwi/npm-registry-client/node_modules/concat-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
+ "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
+ "dev": true,
+ "engines": [
+ "node >= 6.0"
+ ],
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.0.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "node_modules/@qiwi/npm-registry-client/node_modules/retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
+ "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/@qiwi/npm-registry-client/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
"node_modules/@repeaterjs/repeater": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/@repeaterjs/repeater/-/repeater-3.0.4.tgz",
@@ -4656,6 +4794,12 @@
"integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
"dev": true
},
+ "node_modules/@types/parsimmon": {
+ "version": "1.10.6",
+ "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.6.tgz",
+ "integrity": "sha512-FwAQwMRbkhx0J6YELkwIpciVzCcgEqXEbIrIn3a2P5d3kGEHQ3wVhlN3YdVepYP+bZzCYO6OjmD4o9TGOZ40rA==",
+ "dev": true
+ },
"node_modules/@types/prettier": {
"version": "2.7.2",
"resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz",
@@ -5649,6 +5793,78 @@
"integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
"dev": true
},
+ "node_modules/babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^1.1.3",
+ "esutils": "^2.0.2",
+ "js-tokens": "^3.0.2"
+ }
+ },
+ "node_modules/babel-code-frame/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/babel-code-frame/node_modules/ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/babel-code-frame/node_modules/chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/babel-code-frame/node_modules/js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==",
+ "dev": true
+ },
+ "node_modules/babel-code-frame/node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/babel-code-frame/node_modules/supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
"node_modules/babel-helper-evaluate-path": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz",
@@ -6627,12 +6843,27 @@
"node": ">=8.12.0"
}
},
+ "node_modules/builtin-modules": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+ "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/builtin-status-codes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
"integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
"dev": true
},
+ "node_modules/builtins": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
+ "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==",
+ "dev": true
+ },
"node_modules/busboy": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
@@ -6813,6 +7044,15 @@
"node": ">=10"
}
},
+ "node_modules/charm": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/charm/-/charm-1.0.2.tgz",
+ "integrity": "sha512-wqW3VdPnlSWT4eRiYX+hcs+C6ViBPUWk1qTCd+37qw9kEm/a5n2qcyQDMBWvSYKN/ctqZzeXNQaeBjOetJJUkw==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.1"
+ }
+ },
"node_modules/cheerio": {
"version": "0.22.0",
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz",
@@ -7560,6 +7800,12 @@
"node": ">= 0.8"
}
},
+ "node_modules/command-exists": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
+ "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==",
+ "dev": true
+ },
"node_modules/commander": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz",
@@ -9102,6 +9348,15 @@
"integrity": "sha512-39fCpE3Z78IaIPChJsP6Lhmkbf4dWXOmzLk/KFTdRkNk/0JymRIfUynDVRndV9HoDz8PyalK1UH21ST/ivwW5Q==",
"dev": true
},
+ "node_modules/diff": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
+ "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
"node_modules/diff-sequences": {
"version": "29.4.3",
"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz",
@@ -9342,6 +9597,301 @@
"node": ">=4"
}
},
+ "node_modules/dts-critic": {
+ "version": "3.3.11",
+ "resolved": "https://registry.npmjs.org/dts-critic/-/dts-critic-3.3.11.tgz",
+ "integrity": "sha512-HMO2f9AO7ge44YO8OK18f+cxm/IaE1CFuyNFbfJRCEbyazWj5X5wWDF6W4CGdo5Ax0ILYVfJ7L/rOwuUN1fzWw==",
+ "dev": true,
+ "dependencies": {
+ "@definitelytyped/header-parser": "latest",
+ "command-exists": "^1.2.8",
+ "rimraf": "^3.0.2",
+ "semver": "^6.2.0",
+ "tmp": "^0.2.1",
+ "yargs": "^15.3.1"
+ },
+ "engines": {
+ "node": ">=10.17.0"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ }
+ },
+ "node_modules/dts-critic/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/dts-critic/node_modules/cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ }
+ },
+ "node_modules/dts-critic/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/dts-critic/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/dts-critic/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/dts-critic/node_modules/which-module": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
+ "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==",
+ "dev": true
+ },
+ "node_modules/dts-critic/node_modules/wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dts-critic/node_modules/y18n": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
+ "dev": true
+ },
+ "node_modules/dts-critic/node_modules/yargs": {
+ "version": "15.4.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+ "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^4.2.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^18.1.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dts-critic/node_modules/yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "dev": true,
+ "dependencies": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/dtslint": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-4.1.3.tgz",
+ "integrity": "sha512-UHW14DNpWnE5GkmORiDP0f4pc3AvgV7N0grB0skamXyExGOsbsHtNIe+8xeuAkPCrsf10O+Ph3W6+UgXvE4fiA==",
+ "dev": true,
+ "dependencies": {
+ "@definitelytyped/header-parser": "latest",
+ "@definitelytyped/typescript-versions": "latest",
+ "@definitelytyped/utils": "latest",
+ "dts-critic": "latest",
+ "fs-extra": "^6.0.1",
+ "json-stable-stringify": "^1.0.1",
+ "strip-json-comments": "^2.0.1",
+ "tslint": "5.14.0",
+ "tsutils": "^2.29.0",
+ "yargs": "^15.1.0"
+ },
+ "bin": {
+ "dtslint": "bin/index.js"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "typescript": ">= 3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.7.0-dev || >= 3.8.0-dev || >= 3.9.0-dev || >= 4.0.0-dev"
+ }
+ },
+ "node_modules/dtslint/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/dtslint/node_modules/cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ }
+ },
+ "node_modules/dtslint/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/dtslint/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/dtslint/node_modules/fs-extra": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz",
+ "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "node_modules/dtslint/node_modules/jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "dev": true,
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/dtslint/node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/dtslint/node_modules/which-module": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
+ "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==",
+ "dev": true
+ },
+ "node_modules/dtslint/node_modules/wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dtslint/node_modules/y18n": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
+ "dev": true
+ },
+ "node_modules/dtslint/node_modules/yargs": {
+ "version": "15.4.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+ "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^4.2.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^18.1.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dtslint/node_modules/yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "dev": true,
+ "dependencies": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/duplexer2": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
@@ -11589,6 +12139,30 @@
"node": ">=14.14"
}
},
+ "node_modules/fs-minipass": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/fs-minipass/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/fs-mkdirp-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz",
@@ -11661,6 +12235,33 @@
"node": ">= 4.0"
}
},
+ "node_modules/fstream": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
+ "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "inherits": "~2.0.0",
+ "mkdirp": ">=0.5 0",
+ "rimraf": "2"
+ },
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/fstream/node_modules/rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
"node_modules/function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@@ -13113,6 +13714,27 @@
"node": ">= 0.4.0"
}
},
+ "node_modules/has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-ansi/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
@@ -16620,6 +17242,18 @@
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
+ "node_modules/json-stable-stringify": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz",
+ "integrity": "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==",
+ "dev": true,
+ "dependencies": {
+ "jsonify": "^0.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
@@ -16656,6 +17290,15 @@
"graceful-fs": "^4.1.6"
}
},
+ "node_modules/jsonify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz",
+ "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/jsonparse": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
@@ -18325,6 +18968,31 @@
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/minizlib": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+ "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^3.0.0",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minizlib/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/mitt": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz",
@@ -19392,6 +20060,35 @@
"node": ">=4"
}
},
+ "node_modules/npm-package-arg": {
+ "version": "8.1.5",
+ "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz",
+ "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==",
+ "dev": true,
+ "dependencies": {
+ "hosted-git-info": "^4.0.1",
+ "semver": "^7.3.4",
+ "validate-npm-package-name": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/npm-package-arg/node_modules/semver": {
+ "version": "7.5.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
+ "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/npm-run-path": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
@@ -22811,6 +23508,12 @@
"node": ">= 0.8"
}
},
+ "node_modules/parsimmon": {
+ "version": "1.18.1",
+ "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.18.1.tgz",
+ "integrity": "sha512-u7p959wLfGAhJpSDJVYXoyMCXWYwHia78HhRBWqk7AIbxdmlrfdp5wX0l3xv/iTSH5HvhN9K7o26hwwpgS5Nmw==",
+ "dev": true
+ },
"node_modules/pascalcase": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
@@ -25192,6 +25895,15 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
+ "node_modules/slide": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
+ "integrity": "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/smart-buffer": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
@@ -25591,6 +26303,30 @@
"node": ">=0.10.0"
}
},
+ "node_modules/ssri": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
+ "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^3.1.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/ssri/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/stack-trace": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
@@ -26161,6 +26897,23 @@
"connected-domain": "^1.0.0"
}
},
+ "node_modules/tar": {
+ "version": "6.1.15",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz",
+ "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==",
+ "dev": true,
+ "dependencies": {
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "minipass": "^5.0.0",
+ "minizlib": "^2.1.1",
+ "mkdirp": "^1.0.3",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/tar-fs": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
@@ -26189,6 +26942,36 @@
"node": ">=6"
}
},
+ "node_modules/tar/node_modules/chownr": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/tar/node_modules/minipass": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tar/node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true,
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/teeny-request": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.1.1.tgz",
@@ -26420,6 +27203,18 @@
"next-tick": "1"
}
},
+ "node_modules/tmp": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
+ "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
+ "dev": true,
+ "dependencies": {
+ "rimraf": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8.17.0"
+ }
+ },
"node_modules/tmpl": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
@@ -26630,6 +27425,66 @@
"integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==",
"dev": true
},
+ "node_modules/tslint": {
+ "version": "5.14.0",
+ "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.14.0.tgz",
+ "integrity": "sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ==",
+ "dev": true,
+ "dependencies": {
+ "babel-code-frame": "^6.22.0",
+ "builtin-modules": "^1.1.1",
+ "chalk": "^2.3.0",
+ "commander": "^2.12.1",
+ "diff": "^3.2.0",
+ "glob": "^7.1.1",
+ "js-yaml": "^3.7.0",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^0.5.1",
+ "resolve": "^1.3.2",
+ "semver": "^5.3.0",
+ "tslib": "^1.8.0",
+ "tsutils": "^2.29.0"
+ },
+ "bin": {
+ "tslint": "bin/tslint"
+ },
+ "engines": {
+ "node": ">=4.8.0"
+ },
+ "peerDependencies": {
+ "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev"
+ }
+ },
+ "node_modules/tslint/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ },
+ "node_modules/tslint/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ },
+ "node_modules/tsutils": {
+ "version": "2.29.0",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz",
+ "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^1.8.1"
+ },
+ "peerDependencies": {
+ "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev"
+ }
+ },
+ "node_modules/tsutils/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ },
"node_modules/tty-browserify": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz",
@@ -26721,6 +27576,20 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true
},
+ "node_modules/typescript": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz",
+ "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==",
+ "dev": true,
+ "peer": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
"node_modules/uc.micro": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
@@ -27199,6 +28068,15 @@
"spdx-expression-parse": "^3.0.0"
}
},
+ "node_modules/validate-npm-package-name": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
+ "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==",
+ "dev": true,
+ "dependencies": {
+ "builtins": "^1.0.3"
+ }
+ },
"node_modules/value-or-function": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz",
@@ -29472,6 +30350,73 @@
"kuler": "^2.0.0"
}
},
+ "@definitelytyped/header-parser": {
+ "version": "0.0.163",
+ "resolved": "https://registry.npmjs.org/@definitelytyped/header-parser/-/header-parser-0.0.163.tgz",
+ "integrity": "sha512-Jr+/q+ESfc7uWldz/j11BfpjIN/gB4WmwhFENhWaMwM0W/9p0ShF+OiUqGhk2Q3Iz8v/oyWzSsxyxgasg9kCxQ==",
+ "dev": true,
+ "requires": {
+ "@definitelytyped/typescript-versions": "^0.0.163",
+ "@types/parsimmon": "^1.10.1",
+ "parsimmon": "^1.13.0"
+ }
+ },
+ "@definitelytyped/typescript-versions": {
+ "version": "0.0.163",
+ "resolved": "https://registry.npmjs.org/@definitelytyped/typescript-versions/-/typescript-versions-0.0.163.tgz",
+ "integrity": "sha512-+GWtJhC+7UaCUnJ+ZkA7bfGuPd6ZbJKEjbHqh76/gOXsqAUOMEa49ufsLlIPUbkEeQlnDNoTHCegE5X/Q+u+/A==",
+ "dev": true
+ },
+ "@definitelytyped/utils": {
+ "version": "0.0.163",
+ "resolved": "https://registry.npmjs.org/@definitelytyped/utils/-/utils-0.0.163.tgz",
+ "integrity": "sha512-6MX5TxaQbG/j2RkCWbcbLvv+YNipKqY0eQJafDhwC/RprUocpg+uYVNlH8XzdKRWOGJ0pq7SZOsJD4C3A01ZXg==",
+ "dev": true,
+ "requires": {
+ "@definitelytyped/typescript-versions": "^0.0.163",
+ "@qiwi/npm-registry-client": "^8.9.1",
+ "@types/node": "^14.14.35",
+ "charm": "^1.0.2",
+ "fs-extra": "^8.1.0",
+ "fstream": "^1.0.12",
+ "tar": "^6.1.11",
+ "tar-stream": "^2.1.4"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "14.18.51",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.51.tgz",
+ "integrity": "sha512-P9bsdGFPpVtofEKlhWMVS2qqx1A/rt9QBfihWlklfHHpUpjtYse5AzFz6j4DWrARLYh6gRnw9+5+DJcrq3KvBA==",
+ "dev": true
+ },
+ "fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true
+ }
+ }
+ },
"@envelop/core": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/@envelop/core/-/core-2.6.0.tgz",
@@ -30961,6 +31906,52 @@
}
}
},
+ "@qiwi/npm-registry-client": {
+ "version": "8.9.1",
+ "resolved": "https://registry.npmjs.org/@qiwi/npm-registry-client/-/npm-registry-client-8.9.1.tgz",
+ "integrity": "sha512-rZF+mG+NfijR0SHphhTLHRr4aM4gtfdwoAMY6we2VGQam8vkN1cxGG1Lg/Llrj8Dd0Mu6VjdFQRyMMRZxtZR2A==",
+ "dev": true,
+ "requires": {
+ "concat-stream": "^2.0.0",
+ "graceful-fs": "^4.2.4",
+ "normalize-package-data": "~1.0.1 || ^2.0.0 || ^3.0.0",
+ "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^8.0.0",
+ "npmlog": "2 || ^3.1.0 || ^4.0.0",
+ "once": "^1.4.0",
+ "request": "^2.88.2",
+ "retry": "^0.12.0",
+ "safe-buffer": "^5.2.1",
+ "semver": "2 >=2.2.1 || 3.x || 4 || 5 || 7",
+ "slide": "^1.1.6",
+ "ssri": "^8.0.0"
+ },
+ "dependencies": {
+ "concat-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
+ "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.0.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
+ "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
+ "dev": true
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true
+ }
+ }
+ },
"@repeaterjs/repeater": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/@repeaterjs/repeater/-/repeater-3.0.4.tgz",
@@ -31331,6 +32322,12 @@
"integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
"dev": true
},
+ "@types/parsimmon": {
+ "version": "1.10.6",
+ "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.6.tgz",
+ "integrity": "sha512-FwAQwMRbkhx0J6YELkwIpciVzCcgEqXEbIrIn3a2P5d3kGEHQ3wVhlN3YdVepYP+bZzCYO6OjmD4o9TGOZ40rA==",
+ "dev": true
+ },
"@types/prettier": {
"version": "2.7.2",
"resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz",
@@ -32166,6 +33163,65 @@
"integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
"dev": true
},
+ "babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.3",
+ "esutils": "^2.0.2",
+ "js-tokens": "^3.0.2"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+ "dev": true
+ }
+ }
+ },
"babel-helper-evaluate-path": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz",
@@ -32980,12 +34036,24 @@
"readable-stream": "^3.4.0"
}
},
+ "builtin-modules": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+ "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==",
+ "dev": true
+ },
"builtin-status-codes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
"integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
"dev": true
},
+ "builtins": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
+ "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==",
+ "dev": true
+ },
"busboy": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
@@ -33117,6 +34185,15 @@
"integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
"dev": true
},
+ "charm": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/charm/-/charm-1.0.2.tgz",
+ "integrity": "sha512-wqW3VdPnlSWT4eRiYX+hcs+C6ViBPUWk1qTCd+37qw9kEm/a5n2qcyQDMBWvSYKN/ctqZzeXNQaeBjOetJJUkw==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1"
+ }
+ },
"cheerio": {
"version": "0.22.0",
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz",
@@ -33735,6 +34812,12 @@
"delayed-stream": "~1.0.0"
}
},
+ "command-exists": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
+ "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==",
+ "dev": true
+ },
"commander": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz",
@@ -34971,6 +36054,12 @@
"integrity": "sha512-39fCpE3Z78IaIPChJsP6Lhmkbf4dWXOmzLk/KFTdRkNk/0JymRIfUynDVRndV9HoDz8PyalK1UH21ST/ivwW5Q==",
"dev": true
},
+ "diff": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
+ "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
+ "dev": true
+ },
"diff-sequences": {
"version": "29.4.3",
"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz",
@@ -35179,6 +36268,248 @@
"integrity": "sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==",
"dev": true
},
+ "dts-critic": {
+ "version": "3.3.11",
+ "resolved": "https://registry.npmjs.org/dts-critic/-/dts-critic-3.3.11.tgz",
+ "integrity": "sha512-HMO2f9AO7ge44YO8OK18f+cxm/IaE1CFuyNFbfJRCEbyazWj5X5wWDF6W4CGdo5Ax0ILYVfJ7L/rOwuUN1fzWw==",
+ "dev": true,
+ "requires": {
+ "@definitelytyped/header-parser": "latest",
+ "command-exists": "^1.2.8",
+ "rimraf": "^3.0.2",
+ "semver": "^6.2.0",
+ "tmp": "^0.2.1",
+ "yargs": "^15.3.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ },
+ "which-module": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
+ "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==",
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "y18n": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
+ "dev": true
+ },
+ "yargs": {
+ "version": "15.4.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+ "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+ "dev": true,
+ "requires": {
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^4.2.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^18.1.2"
+ }
+ },
+ "yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "dtslint": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-4.1.3.tgz",
+ "integrity": "sha512-UHW14DNpWnE5GkmORiDP0f4pc3AvgV7N0grB0skamXyExGOsbsHtNIe+8xeuAkPCrsf10O+Ph3W6+UgXvE4fiA==",
+ "dev": true,
+ "requires": {
+ "@definitelytyped/header-parser": "latest",
+ "@definitelytyped/typescript-versions": "latest",
+ "@definitelytyped/utils": "latest",
+ "dts-critic": "latest",
+ "fs-extra": "^6.0.1",
+ "json-stable-stringify": "^1.0.1",
+ "strip-json-comments": "^2.0.1",
+ "tslint": "5.14.0",
+ "tsutils": "^2.29.0",
+ "yargs": "^15.1.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "fs-extra": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz",
+ "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true
+ },
+ "which-module": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
+ "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==",
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "y18n": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
+ "dev": true
+ },
+ "yargs": {
+ "version": "15.4.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+ "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+ "dev": true,
+ "requires": {
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^4.2.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^18.1.2"
+ }
+ },
+ "yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
"duplexer2": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
@@ -36983,6 +38314,26 @@
"universalify": "^2.0.0"
}
},
+ "fs-minipass": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+ "dev": true,
+ "requires": {
+ "minipass": "^3.0.0"
+ },
+ "dependencies": {
+ "minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ }
+ }
+ },
"fs-mkdirp-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz",
@@ -37046,6 +38397,29 @@
"nan": "^2.12.1"
}
},
+ "fstream": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
+ "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "inherits": "~2.0.0",
+ "mkdirp": ">=0.5 0",
+ "rimraf": "2"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@@ -38267,6 +39641,23 @@
"function-bind": "^1.1.1"
}
},
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true
+ }
+ }
+ },
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
@@ -40872,6 +42263,15 @@
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
+ "json-stable-stringify": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz",
+ "integrity": "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==",
+ "dev": true,
+ "requires": {
+ "jsonify": "^0.0.1"
+ }
+ },
"json-stable-stringify-without-jsonify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
@@ -40900,6 +42300,12 @@
"universalify": "^2.0.0"
}
},
+ "jsonify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz",
+ "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==",
+ "dev": true
+ },
"jsonparse": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
@@ -42250,6 +43656,27 @@
"integrity": "sha512-mvD5U4pUen1aWcjTxUgdoMg6PB98dcV0obc/OiPzls79++IpgNoO+MCbOHRlKfWIOvjIjmjUygjZmSStP7B0Og==",
"dev": true
},
+ "minizlib": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+ "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+ "dev": true,
+ "requires": {
+ "minipass": "^3.0.0",
+ "yallist": "^4.0.0"
+ },
+ "dependencies": {
+ "minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ }
+ }
+ },
"mitt": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz",
@@ -44775,6 +46202,28 @@
"pify": "^3.0.0"
}
},
+ "npm-package-arg": {
+ "version": "8.1.5",
+ "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz",
+ "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "^4.0.1",
+ "semver": "^7.3.4",
+ "validate-npm-package-name": "^3.0.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "7.5.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
+ "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ }
+ }
+ },
"npm-run-path": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
@@ -45551,6 +47000,12 @@
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
"dev": true
},
+ "parsimmon": {
+ "version": "1.18.1",
+ "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.18.1.tgz",
+ "integrity": "sha512-u7p959wLfGAhJpSDJVYXoyMCXWYwHia78HhRBWqk7AIbxdmlrfdp5wX0l3xv/iTSH5HvhN9K7o26hwwpgS5Nmw==",
+ "dev": true
+ },
"pascalcase": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
@@ -47434,6 +48889,12 @@
}
}
},
+ "slide": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
+ "integrity": "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==",
+ "dev": true
+ },
"smart-buffer": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
@@ -47765,6 +49226,26 @@
"tweetnacl": "~0.14.0"
}
},
+ "ssri": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
+ "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
+ "dev": true,
+ "requires": {
+ "minipass": "^3.1.1"
+ },
+ "dependencies": {
+ "minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ }
+ }
+ },
"stack-trace": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
@@ -48235,6 +49716,40 @@
"connected-domain": "^1.0.0"
}
},
+ "tar": {
+ "version": "6.1.15",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz",
+ "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==",
+ "dev": true,
+ "requires": {
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "minipass": "^5.0.0",
+ "minizlib": "^2.1.1",
+ "mkdirp": "^1.0.3",
+ "yallist": "^4.0.0"
+ },
+ "dependencies": {
+ "chownr": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "dev": true
+ },
+ "minipass": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true
+ }
+ }
+ },
"tar-fs": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
@@ -48452,6 +49967,15 @@
"next-tick": "1"
}
},
+ "tmp": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
+ "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
+ "dev": true,
+ "requires": {
+ "rimraf": "^3.0.0"
+ }
+ },
"tmpl": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
@@ -48629,6 +50153,58 @@
"integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==",
"dev": true
},
+ "tslint": {
+ "version": "5.14.0",
+ "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.14.0.tgz",
+ "integrity": "sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ==",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "^6.22.0",
+ "builtin-modules": "^1.1.1",
+ "chalk": "^2.3.0",
+ "commander": "^2.12.1",
+ "diff": "^3.2.0",
+ "glob": "^7.1.1",
+ "js-yaml": "^3.7.0",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^0.5.1",
+ "resolve": "^1.3.2",
+ "semver": "^5.3.0",
+ "tslib": "^1.8.0",
+ "tsutils": "^2.29.0"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ },
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ }
+ }
+ },
+ "tsutils": {
+ "version": "2.29.0",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz",
+ "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.8.1"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ }
+ }
+ },
"tty-browserify": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz",
@@ -48699,6 +50275,13 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true
},
+ "typescript": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz",
+ "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==",
+ "dev": true,
+ "peer": true
+ },
"uc.micro": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
@@ -49076,6 +50659,15 @@
"spdx-expression-parse": "^3.0.0"
}
},
+ "validate-npm-package-name": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
+ "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==",
+ "dev": true,
+ "requires": {
+ "builtins": "^1.0.3"
+ }
+ },
"value-or-function": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz",
diff --git a/package.json b/package.json
index 8f18cd2b1..171441948 100644
--- a/package.json
+++ b/package.json
@@ -23,11 +23,13 @@
"lib/",
"LICENSE",
"NOTICE",
- "README.md"
+ "README.md",
+ "types/index.d.ts"
],
"browser": {
"react-native": false
},
+ "types": "types/index.d.ts",
"dependencies": {
"@babel/runtime-corejs3": "7.22.3",
"idb-keyval": "6.2.1",
@@ -61,6 +63,7 @@
"codecov": "3.8.3",
"core-js": "3.30.2",
"cross-env": "7.0.2",
+ "dtslint": "4.1.3",
"eslint": "8.40.0",
"eslint-plugin-flowtype": "8.0.3",
"eslint-plugin-jsdoc": "43.0.7",
@@ -99,6 +102,7 @@
"test": "cross-env PARSE_BUILD=node jest",
"test:mongodb": "npm run test:mongodb:runnerstart && npm run integration",
"test:mongodb:runnerstart": "mongodb-runner start",
+ "test:types": "dtslint types",
"posttest:mongodb": "mongodb-runner stop",
"lint": "eslint --cache src/ integration/",
"lint:fix": "eslint --fix --cache src/ integration/",
diff --git a/types/index.d.ts b/types/index.d.ts
new file mode 100644
index 000000000..2d6c95323
--- /dev/null
+++ b/types/index.d.ts
@@ -0,0 +1,2010 @@
+///
+///
+///
+
+import { EventEmitter } from 'events';
+
+declare enum ErrorCode {
+ /** Error code indicating some error other than those enumerated here */
+ OTHER_CAUSE = -1,
+ /** Error code indicating that something has gone wrong with the server. */
+ INTERNAL_SERVER_ERROR = 1,
+ /** Error code indicating the connection to the Parse servers failed. */
+ CONNECTION_FAILED = 100,
+ /** Error code indicating the specified object doesn't exist. */
+ OBJECT_NOT_FOUND = 101,
+ /**
+ * Error code indicating you tried to query with a datatype that doesn't
+ * support it, like exact matching an array or object.
+ */
+ INVALID_QUERY = 102,
+ /*
+ * Error code indicating a missing or invalid classname. Classnames are
+ * case-sensitive. They must start with a letter, and a-zA-Z0-9_ are the
+ * only valid characters.
+ */
+ INVALID_CLASS_NAME = 103,
+ /** Error code indicating an unspecified object id. */
+ MISSING_OBJECT_ID = 104,
+ /**
+ * Error code indicating an invalid key name. Keys are case-sensitive. They
+ * must start with a letter, and a-zA-Z0-9_ are the only valid characters.
+ */
+ INVALID_KEY_NAME = 105,
+ /**
+ * Error code indicating a malformed pointer. You should not see this unless
+ * you have been mucking about changing internal Parse code.
+ */
+ INVALID_POINTER = 106,
+ /*
+ * Error code indicating that badly formed JSON was received upstream. This
+ * either indicates you have done something unusual with modifying how
+ * things encode to JSON, or the network is failing badly.
+ */
+ INVALID_JSON = 107,
+ /**
+ * Error code indicating that the feature you tried to access is only
+ * available internally for testing purposes.
+ */
+ COMMAND_UNAVAILABLE = 108,
+ /** You must call Parse.initialize before using the Parse library. */
+ NOT_INITIALIZED = 109,
+ /** Error code indicating that a field was set to an inconsistent type. */
+ INCORRECT_TYPE = 111,
+ /**
+ * Error code indicating an invalid channel name. A channel name is either
+ * an empty string (the broadcast channel) or contains only a-zA-Z0-9_
+ * characters and starts with a letter.
+ */
+ INVALID_CHANNEL_NAME = 112,
+ /** Error code indicating that push is misconfigured. */
+ PUSH_MISCONFIGURED = 115,
+ /** Error code indicating that the object is too large. */
+ OBJECT_TOO_LARGE = 116,
+ /** Error code indicating that the operation isn't allowed for clients. */
+ OPERATION_FORBIDDEN = 119,
+ /** Error code indicating the result was not found in the cache. */
+ CACHE_MISS = 120,
+ /** Error code indicating that an invalid key was used in a nested JSONObject. */
+ INVALID_NESTED_KEY = 121,
+ /**
+ * Error code indicating that an invalid filename was used for ParseFile.
+ * A valid file name contains only a-zA-Z0-9_. characters and is between 1
+ * and 128 characters.
+ */
+ INVALID_FILE_NAME = 122,
+ /** Error code indicating an invalid ACL was provided. */
+ INVALID_ACL = 123,
+ /**
+ * Error code indicating that the request timed out on the server. Typically
+ * this indicates that the request is too expensive to run.
+ */
+ TIMEOUT = 124,
+ /** Error code indicating that the email address was invalid. */
+ INVALID_EMAIL_ADDRESS = 125,
+ /** Error code indicating a missing content type. */
+ MISSING_CONTENT_TYPE = 126,
+ /** Error code indicating a missing content length. */
+ MISSING_CONTENT_LENGTH = 127,
+ /** Error code indicating an invalid content length. */
+ INVALID_CONTENT_LENGTH = 128,
+ /** Error code indicating a file that was too large. */
+ FILE_TOO_LARGE = 129,
+ /** Error code indicating an error saving a file. */
+ FILE_SAVE_ERROR = 130,
+ /**
+ * Error code indicating that a unique field was given a value that is
+ * already taken.
+ */
+ DUPLICATE_VALUE = 137,
+ /** Error code indicating that a role's name is invalid. */
+ INVALID_ROLE_NAME = 139,
+ /**
+ * Error code indicating that an application quota was exceeded.
+ * Upgrade to resolve.
+ */
+ EXCEEDED_QUOTA = 140,
+ /** Error code indicating that a Cloud Code script failed. */
+ SCRIPT_FAILED = 141,
+ /** Error code indicating that a Cloud Code validation failed. */
+ VALIDATION_ERROR = 142,
+ /** Error code indicating that invalid image data was provided. */
+ INVALID_IMAGE_DATA = 150,
+ /** Error code indicating an unsaved file. */
+ UNSAVED_FILE_ERROR = 151,
+ /** Error code indicating an invalid push time. */
+ INVALID_PUSH_TIME_ERROR = 152,
+ /** Error code indicating an error deleting a file. */
+ FILE_DELETE_ERROR = 153,
+ /** Error code indicating that the application has exceeded its request limit. */
+ REQUEST_LIMIT_EXCEEDED = 155,
+ /**
+ * Error code indicating that the request was a duplicate and has been discarded due to
+ * idempotency rules.
+ */
+ DUPLICATE_REQUEST = 159,
+ /** Error code indicating an invalid event name. */
+ INVALID_EVENT_NAME = 160,
+ /** Error code indicating an error deleting an unnamed file. */
+ FILE_DELETE_UNNAMED_ERROR = 161,
+ /** Error code indicating that the username is missing or empty. */
+ USERNAME_MISSING = 200,
+ /** Error code indicating that the password is missing or empty. */
+ PASSWORD_MISSING = 201,
+ /** Error code indicating that the username has already been taken. */
+ USERNAME_TAKEN = 202,
+ /** Error code indicating that the email has already been taken. */
+ EMAIL_TAKEN = 203,
+ /** Error code indicating that the email is missing, but must be specified. */
+ EMAIL_MISSING = 204,
+ /** Error code indicating that a user with the specified email was not found. */
+ EMAIL_NOT_FOUND = 205,
+ /**
+ * Error code indicating that a user object without a valid session could
+ * not be altered.
+ */
+ SESSION_MISSING = 206,
+ /** Error code indicating that a user can only be created through signup. */
+ MUST_CREATE_USER_THROUGH_SIGNUP = 207,
+ /**
+ * Error code indicating that an an account being linked is already linked
+ * to another user.
+ */
+ ACCOUNT_ALREADY_LINKED = 208,
+ /** Error code indicating that the current session token is invalid. */
+ INVALID_SESSION_TOKEN = 209,
+ /** Error code indicating an error enabling or verifying MFA */
+ MFA_ERROR = 210,
+ /** Error code indicating that a valid MFA token must be provided */
+ MFA_TOKEN_REQUIRED = 211,
+ /**
+ * Error code indicating that a user cannot be linked to an account because
+ * that account's id could not be found.
+ */
+ LINKED_ID_MISSING = 250,
+ /**
+ * Error code indicating that a user with a linked (e.g. Facebook) account
+ * has an invalid session.
+ */
+ INVALID_LINKED_SESSION = 251,
+ /**
+ * Error code indicating that a service being linked (e.g. Facebook or
+ * Twitter) is unsupported.
+ */
+ UNSUPPORTED_SERVICE = 252,
+ /** Error code indicating an invalid operation occured on schema */
+ INVALID_SCHEMA_OPERATION = 255,
+ /**
+ * Error code indicating that there were multiple errors. Aggregate errors
+ * have an "errors" property, which is an array of error objects with more
+ * detail about each error that occurred.
+ */
+ AGGREGATE_ERROR = 600,
+ /** Error code indicating the client was unable to read an input file. */
+ FILE_READ_ERROR = 601,
+ /*
+ * Error code indicating a real error code is unavailable because
+ * we had to use an XDomainRequest object to allow CORS requests in
+ * Internet Explorer, which strips the body from HTTP responses that have
+ * a non-2XX status code.
+ */
+ X_DOMAIN_REQUEST = 602,
+}
+
+declare global {
+ namespace Parse {
+ let applicationId: string;
+ let javaScriptKey: string | undefined;
+ let liveQueryServerURL: string;
+ let masterKey: string | undefined;
+ let serverAuthToken: string | undefined;
+ let serverAuthType: string | undefined;
+ let serverURL: string;
+ let secret: string;
+ let idempotency: boolean;
+ let encryptedUser: boolean;
+
+ interface BatchSizeOption {
+ batchSize?: number | undefined;
+ }
+
+ interface CascadeSaveOption {
+ /** If `false`, nested objects will not be saved (default is `true`). */
+ cascadeSave?: boolean | undefined;
+ }
+
+ interface SuccessOption {
+ success?: Function | undefined;
+ }
+
+ interface ErrorOption {
+ error?: Function | undefined;
+ }
+
+ interface ContextOption {
+ context?: { [key: string]: any };
+ }
+
+ interface FullOptions {
+ success?: Function | undefined;
+ error?: Function | undefined;
+ useMasterKey?: boolean | undefined;
+ sessionToken?: string | undefined;
+ installationId?: string | undefined;
+ progress?: Function | undefined;
+ /**
+ * logIn will default to POST instead of GET method since
+ * version 3.0.0 for security reasons.
+ * If you need to use GET set this to `false`.
+ */
+ usePost?: boolean;
+ }
+
+ interface RequestOptions {
+ useMasterKey?: boolean | undefined;
+ sessionToken?: string | undefined;
+ installationId?: string | undefined;
+ batchSize?: number | undefined;
+ include?: string | string[] | undefined;
+ progress?: Function | undefined;
+ }
+
+ interface SuccessFailureOptions extends SuccessOption, ErrorOption {}
+
+ interface SignUpOptions {
+ useMasterKey?: boolean | undefined;
+ installationId?: string | undefined;
+ }
+
+ interface SessionTokenOption {
+ sessionToken?: string | undefined;
+ }
+
+ interface WaitOption {
+ /**
+ * Set to true to wait for the server to confirm success
+ * before triggering an event.
+ */
+ wait?: boolean | undefined;
+ }
+
+ interface UseMasterKeyOption {
+ /**
+ * In Cloud Code and Node only, causes the Master Key to be used for this request.
+ */
+ useMasterKey?: boolean | undefined;
+ }
+
+ /**
+ * https://github.com/parse-community/Parse-SDK-JS/pull/1294/files
+ * feat: Add option to return raw json from queries
+ */
+ interface RawJSONOptions {
+ /** (3.0.0+) json: Return raw json without converting to Parse.Object */
+ json?: boolean;
+ }
+ interface ScopeOptions extends SessionTokenOption, UseMasterKeyOption {}
+
+ interface SilentOption {
+ /**
+ * Set to true to avoid firing the event.
+ */
+ silent?: boolean | undefined;
+ }
+
+ interface Pointer {
+ __type: string;
+ className: string;
+ objectId: string;
+ }
+
+ interface AuthData {
+ [key: string]: any;
+ }
+
+ /**
+ * Interface declaration for Authentication Providers
+ * https://parseplatform.org/Parse-SDK-JS/api/master/AuthProvider.html
+ */
+ interface AuthProvider {
+ /**
+ * Called when _linkWith isn't passed authData. Handle your own authentication here.
+ */
+ authenticate: () => void;
+ /**
+ * (Optional) Called when service is unlinked. Handle any cleanup here.
+ */
+ deauthenticate?: (() => void) | undefined;
+ /**
+ * Unique identifier for this Auth Provider.
+ */
+ getAuthType: () => string;
+ /**
+ * Called when auth data is syncronized. Can be used to determine if authData is still valid
+ */
+ restoreAuthentication: () => boolean;
+ }
+
+ interface BaseAttributes {
+ createdAt: Date;
+ objectId: string;
+ updatedAt: Date;
+ }
+
+ interface CommonAttributes {
+ ACL: ACL;
+ }
+
+ interface JSONBaseAttributes {
+ createdAt: string;
+ objectId: string;
+ updatedAt: string;
+ }
+
+ /**
+ * Creates a new ACL.
+ * If no argument is given, the ACL has no permissions for anyone.
+ * If the argument is a Parse.User, the ACL will have read and write
+ * permission for only that user.
+ * If the argument is any other JSON object, that object will be interpretted
+ * as a serialized ACL created with toJSON().
+ * @see Parse.Object#setACL
+ *
+ * An ACL, or Access Control List can be added to any
+ * Parse.Object
to restrict access to only a subset of users
+ * of your application.
+ */
+ class ACL {
+ permissionsById: any;
+
+ constructor(arg1?: any);
+
+ setPublicReadAccess(allowed: boolean): void;
+ getPublicReadAccess(): boolean;
+
+ setPublicWriteAccess(allowed: boolean): void;
+ getPublicWriteAccess(): boolean;
+
+ setReadAccess(userId: User | string, allowed: boolean): void;
+ getReadAccess(userId: User | string): boolean;
+
+ setWriteAccess(userId: User | string, allowed: boolean): void;
+ getWriteAccess(userId: User | string): boolean;
+
+ setRoleReadAccess(role: Role | string, allowed: boolean): void;
+ getRoleReadAccess(role: Role | string): boolean;
+
+ setRoleWriteAccess(role: Role | string, allowed: boolean): void;
+ getRoleWriteAccess(role: Role | string): boolean;
+
+ toJSON(): any;
+ }
+
+ /**
+ * A Parse.File is a local representation of a file that is saved to the Parse
+ * cloud.
+ * @param name The file's name. This will be prefixed by a unique
+ * value once the file has finished saving. The file name must begin with
+ * an alphanumeric character, and consist of alphanumeric characters,
+ * periods, spaces, underscores, or dashes.
+ * @param data The data for the file, as either:
+ * 1. an Array of byte value Numbers, or
+ * 2. an Object like { base64: "..." } with a base64-encoded String.
+ * 3. a File object selected with a file upload control. (3) only works
+ * in Firefox 3.6+, Safari 6.0.2+, Chrome 7+, and IE 10+.
+ * For example:
+ * var fileUploadControl = $("#profilePhotoFileUpload")[0];
+ * if (fileUploadControl.files.length > 0) {
+ * var file = fileUploadControl.files[0];
+ * var name = "photo.jpg";
+ * var parseFile = new Parse.File(name, file);
+ * parseFile.save().then(function() {
+ * // The file has been saved to Parse.
+ * }, function(error) {
+ * // The file either could not be read, or could not be saved to Parse.
+ * });
+ * }
+ * @param type Optional Content-Type header to use for the file. If
+ * this is omitted, the content type will be inferred from the name's
+ * extension.
+ */
+ class File {
+ constructor(
+ name: string,
+ data: number[] | { base64: string } | { size: number; type: string } | { uri: string },
+ type?: string,
+ );
+ /**
+ * Return the data for the file, downloading it if not already present.
+ * Data is present if initialized with Byte Array, Base64 or Saved with Uri.
+ * Data is cleared if saved with File object selected with a file upload control
+ *
+ * @returns Promise that is resolved with base64 data
+ */
+ getData(): Promise;
+ url(options?: { forceSecure?: boolean | undefined }): string;
+ metadata(): Record;
+ tags(): Record;
+ name(): string;
+ save(options?: FullOptions): Promise;
+ cancel(): void;
+ destroy(options?: FullOptions): Promise;
+ toJSON(): { __type: string; name: string; url: string };
+ equals(other: File): boolean;
+ setMetadata(metadata: Record): void;
+ addMetadata(key: string, value: any): void;
+ setTags(tags: Record): void;
+ addTag(key: string, value: any): void;
+ readonly _url: string;
+ }
+
+ /**
+ * Creates a new GeoPoint with any of the following forms:
+ *
+ * new GeoPoint(otherGeoPoint)
+ * new GeoPoint(30, 30)
+ * new GeoPoint([30, 30])
+ * new GeoPoint({latitude: 30, longitude: 30})
+ * new GeoPoint() // defaults to (0, 0)
+ *
+ *
+ * Represents a latitude / longitude point that may be associated
+ * with a key in a ParseObject or used as a reference point for geo queries.
+ * This allows proximity-based queries on the key.
+ *
+ * Only one key in a class may contain a GeoPoint.
+ *
+ * Example:
+ * var point = new Parse.GeoPoint(30.0, -20.0);
+ * var object = new Parse.Object("PlaceObject");
+ * object.set("location", point);
+ * object.save();
+ */
+ class GeoPoint {
+ latitude: number;
+ longitude: number;
+
+ constructor(latitude: number, longitude: number);
+ constructor(coords?: { latitude: number; longitude: number } | [number, number]);
+
+ current(options?: SuccessFailureOptions): GeoPoint;
+ radiansTo(point: GeoPoint): number;
+ kilometersTo(point: GeoPoint): number;
+ milesTo(point: GeoPoint): number;
+ toJSON(): any;
+ }
+
+ /**
+ * A class that is used to access all of the children of a many-to-many relationship.
+ * Each instance of Parse.Relation is associated with a particular parent object and key.
+ */
+ class Relation {
+ parent: S;
+ key: string;
+ targetClassName: string;
+
+ constructor(parent?: S, key?: string);
+
+ // Adds a Parse.Object or an array of Parse.Objects to the relation.
+ add(object: T | T[]): void;
+
+ // Returns a Parse.Query that is limited to objects in this relation.
+ query(): Query;
+
+ // Removes a Parse.Object or an array of Parse.Objects from this relation.
+ remove(object: T | T[]): void;
+
+ toJSON(): any;
+ }
+
+ interface Attributes {
+ [key: string]: any;
+ }
+
+ /**
+ * Creates a new model with defined attributes. A client id (cid) is
+ * automatically generated and assigned for you.
+ *
+ * You won't normally call this method directly. It is recommended that
+ * you use a subclass of Parse.Object
instead, created by calling
+ * extend
.
+ *
+ * However, if you don't want to use a subclass, or aren't sure which
+ * subclass is appropriate, you can use this form:
+ * var object = new Parse.Object("ClassName");
+ *
+ * That is basically equivalent to:
+ * var MyClass = Parse.Object.extend("ClassName");
+ * var object = new MyClass();
+ *
+ *
+ * @param attributes The initial set of data to store in the object.
+ * @param options The options for this object instance.
+ * @see Parse.Object.extend
+ *
+ *
+ * Creates a new model with defined attributes.
+ */
+ interface Object {
+ id: string;
+ createdAt: Date;
+ updatedAt: Date;
+ attributes: T;
+ className: string;
+
+ add extends any[] ? K : never }[keyof T]>(
+ attr: K,
+ item: NonNullable[number],
+ ): this | false;
+ addAll extends any[] ? K : never }[keyof T]>(
+ attr: K,
+ items: NonNullable,
+ ): this | false;
+ addAllUnique: this['addAll'];
+ addUnique: this['add'];
+ clear(options: any): any;
+ clone(): this;
+ destroy(options?: Object.DestroyOptions): Promise;
+ /** EventuallyQueue API; added in version 3.0.0 */
+ destroyEventually(options?: Object.DestroyOptions): Promise;
+ dirty(attr?: Extract): boolean;
+ dirtyKeys(): string[];
+ equals(other: T): boolean;
+ escape(attr: Extract): string;
+ existed(): boolean;
+ exists(options?: RequestOptions): Promise;
+ fetch(options?: Object.FetchOptions): Promise;
+ fetchFromLocalDatastore(): Promise;
+ fetchWithInclude>(
+ keys: K | Array,
+ options?: RequestOptions,
+ ): Promise;
+ get>(attr: K): T[K];
+ getACL(): ACL | undefined;
+ has(attr: Extract): boolean;
+ increment(attr: Extract, amount?: number): this | false;
+ decrement(attr: Extract, amount?: number): this | false;
+ initialize(): void;
+ isDataAvailable(): boolean;
+ isNew(): boolean;
+ isPinned(): Promise;
+ isValid(): boolean;
+ newInstance(): this;
+ op(attr: Extract): any;
+ pin(): Promise;
+ pinWithName(name: string): Promise;
+ relation = Extract>(
+ attr: T[K] extends Relation ? K : never,
+ ): Relation;
+ remove: this['add'];
+ removeAll: this['addAll'];
+ revert(...keys: Array>): void;
+ // "Pick | T" is a trick to keep IntelliSense working, see:
+ // https://github.com/DefinitelyTyped/DefinitelyTyped/blob/3bdadbf9583c2335197c7e999b9a30880e055f62/types/react/index.d.ts#L482
+ save>(
+ attrs?: Pick | T | null,
+ options?: Object.SaveOptions,
+ ): Promise;
+ save>(
+ key: K,
+ value: T[K] extends undefined ? never : T[K],
+ options?: Object.SaveOptions,
+ ): Promise;
+ /** EventuallyQueue API; added in version 3.0.0 */
+ saveEventually(options?: Object.SaveOptions): Promise;
+ set>(attrs: Pick | T, options?: Object.SetOptions): this | false;
+ set>(
+ key: K,
+ value: T[K] extends undefined ? never : T[K],
+ options?: Object.SetOptions,
+ ): this | false;
+ setACL(acl: ACL, options?: SuccessFailureOptions): this | false;
+ toJSON(): Object.ToJSON & JSONBaseAttributes;
+ toPointer(): Pointer;
+ unPin(): Promise;
+ unPinWithName(name: string): Promise;
+ unset(attr: Extract, options?: any): this | false;
+ validate(attrs: Attributes, options?: SuccessFailureOptions): Error | false;
+ }
+ interface ObjectStatic {
+ createWithoutData(id: string): T;
+ destroyAll(list: T[], options?: Object.DestroyAllOptions): Promise;
+ extend(className: string | { className: string }, protoProps?: any, classProps?: any): any;
+ fetchAll(list: T[], options: Object.FetchAllOptions): Promise;
+ fetchAllIfNeeded(list: T[], options?: Object.FetchAllOptions): Promise;
+ fetchAllIfNeededWithInclude(
+ list: T[],
+ keys: keyof T['attributes'] | Array,
+ options?: RequestOptions,
+ ): Promise;
+ fetchAllWithInclude(
+ list: T[],
+ keys: keyof T['attributes'] | Array,
+ options?: RequestOptions,
+ ): Promise;
+ fromJSON(json: any, override?: boolean): T;
+ pinAll(objects: Object[]): Promise;
+ pinAllWithName(name: string, objects: Object[]): Promise;
+ registerSubclass(className: string, clazz: new (options?: any) => T): void;
+ saveAll(list: T, options?: Object.SaveAllOptions): Promise;
+ unPinAll(objects: Object[]): Promise;
+ unPinAllObjects(): Promise;
+ unPinAllObjectsWithName(name: string): Promise;
+ unPinAllWithName(name: string, objects: Object[]): Promise;
+ }
+ interface ObjectConstructor extends ObjectStatic {
+ new (className: string, attributes: T, options?: any): Object;
+ new (className?: string, attributes?: Attributes, options?: any): Object;
+ }
+ const Object: ObjectConstructor;
+
+ namespace Object {
+ interface DestroyOptions extends SuccessFailureOptions, WaitOption, ScopeOptions {}
+
+ interface DestroyAllOptions extends BatchSizeOption, ScopeOptions {}
+
+ interface FetchAllOptions extends SuccessFailureOptions, ScopeOptions {}
+
+ interface FetchOptions extends SuccessFailureOptions, ScopeOptions {}
+
+ interface SaveOptions
+ extends CascadeSaveOption,
+ SuccessFailureOptions,
+ SilentOption,
+ ScopeOptions,
+ ContextOption,
+ WaitOption {}
+
+ interface SaveAllOptions extends BatchSizeOption, ScopeOptions {}
+
+ interface SetOptions extends ErrorOption, SilentOption {
+ promise?: any;
+ }
+
+ // From https://github.com/parse-community/Parse-SDK-JS/blob/master/src/encode.js
+ type Encode = T extends Object
+ ? ReturnType | Pointer
+ : T extends ACL | GeoPoint | Polygon | Relation | File
+ ? ReturnType
+ : T extends Date
+ ? { __type: 'Date'; iso: string }
+ : T extends RegExp
+ ? string
+ : T extends Array
+ ? // This recursion is unsupported in <=3.6
+ Array>
+ : T extends object
+ ? ToJSON
+ : T;
+
+ type ToJSON = {
+ [K in keyof T]: Encode;
+ };
+ }
+
+ class Polygon {
+ constructor(arg1: GeoPoint[] | number[][]);
+ containsPoint(point: GeoPoint): boolean;
+ equals(other: any): boolean;
+ toJSON(): any;
+ }
+
+ /**
+ * Every Parse application installed on a device registered for
+ * push notifications has an associated Installation object.
+ */
+ interface Installation extends Object {
+ badge: any;
+ channels: string[];
+ timeZone: any;
+ deviceType: string;
+ pushType: string;
+ installationId: string;
+ deviceToken: string;
+ channelUris: string;
+ appName: string;
+ appVersion: string;
+ parseVersion: string;
+ appIdentifier: string;
+ }
+ interface InstallationConstructor extends ObjectStatic {
+ new (attributes: T): Installation;
+ new (): Installation;
+ }
+ const Installation: InstallationConstructor;
+
+ /**
+ * Creates a new parse Parse.Query for the given Parse.Object subclass.
+ * @param objectClass -
+ * An instance of a subclass of Parse.Object, or a Parse className string.
+ *
+ * Parse.Query defines a query that is used to fetch Parse.Objects. The
+ * most common use case is finding all objects that match a query through the
+ * find
method. For example, this sample code fetches all objects
+ * of class MyClass
. It calls a different function depending on
+ * whether the fetch succeeded or not.
+ *
+ *
+ * var query = new Parse.Query(MyClass);
+ * query.find({
+ * success: function(results) {
+ * // results is an array of Parse.Object.
+ * },
+ *
+ * error: function(error) {
+ * // error is an instance of Parse.Error.
+ * }
+ * });
+ *
+ * A Parse.Query can also be used to retrieve a single object whose id is
+ * known, through the get method. For example, this sample code fetches an
+ * object of class MyClass
and id myId
. It calls a
+ * different function depending on whether the fetch succeeded or not.
+ *
+ *
+ * var query = new Parse.Query(MyClass);
+ * query.get(myId, {
+ * success: function(object) {
+ * // object is an instance of Parse.Object.
+ * },
+ *
+ * error: function(object, error) {
+ * // error is an instance of Parse.Error.
+ * }
+ * });
+ *
+ * A Parse.Query can also be used to count the number of objects that match
+ * the query without retrieving all of those objects. For example, this
+ * sample code counts the number of objects of the class MyClass
+ *
+ * var query = new Parse.Query(MyClass);
+ * query.count({
+ * success: function(number) {
+ * // There are number instances of MyClass.
+ * },
+ *
+ * error: function(error) {
+ * // error is an instance of Parse.Error.
+ * }
+ * });
+ */
+ class Query {
+ objectClass: any;
+ className: string;
+
+ constructor(objectClass: string | (new (...args: any[]) => T | Object));
+
+ static and(...args: Array>): Query;
+ static fromJSON(className: string | (new () => U), json: any): Query;
+ static nor(...args: Array>): Query;
+ static or(...var_args: Array>): Query;
+
+ addAscending(key: K | K[]): this;
+ addDescending(key: K | K[]): this;
+ ascending(key: K | K[]): this;
+ aggregate(pipeline: Query.AggregationOptions | Query.AggregationOptions[]): Promise;
+ containedBy(
+ key: K,
+ values: Array,
+ ): this;
+ containedIn(
+ key: K,
+ values: Array,
+ ): this;
+ contains(key: K, substring: string): this;
+ containsAll(key: K, values: any[]): this;
+ containsAllStartingWith(
+ key: K,
+ values: any[],
+ ): this;
+ count(options?: Query.CountOptions): Promise;
+ descending(key: K | K[]): this;
+ doesNotExist(key: K): this;
+ doesNotMatchKeyInQuery<
+ U extends Object,
+ K extends keyof T['attributes'] | keyof BaseAttributes,
+ X extends Extract,
+ >(key: K, queryKey: X, query: Query): this;
+ doesNotMatchQuery(key: K, query: Query): this;
+ distinct(key: K): Promise;
+ eachBatch(callback: (objs: T[]) => PromiseLike | void, options?: Query.BatchOptions): Promise;
+ each(callback: (obj: T) => PromiseLike | void, options?: Query.BatchOptions): Promise;
+ hint(value: string | object): this;
+ explain(explain: boolean): this;
+ map(
+ callback: (currentObject: T, index: number, query: Query) => PromiseLike | U,
+ options?: Query.BatchOptions,
+ ): Promise;
+ reduce(
+ callback: (accumulator: T, currentObject: T, index: number) => PromiseLike | T,
+ initialValue?: undefined,
+ options?: Query.BatchOptions,
+ ): Promise;
+ reduce(
+ callback: (accumulator: U, currentObject: T, index: number) => PromiseLike | U,
+ initialValue: U,
+ options?: Query.BatchOptions,
+ ): Promise;
+ filter(
+ callback: (currentObject: T, index: number, query: Query) => PromiseLike | boolean,
+ options?: Query.BatchOptions,
+ ): Promise;
+ endsWith(key: K, suffix: string): this;
+ equalTo(
+ key: K,
+ value:
+ | T['attributes'][K]
+ | (T['attributes'][K] extends Object
+ ? Pointer
+ : T['attributes'][K] extends Array
+ ? E
+ : never),
+ ): this;
+ exclude(...keys: K[]): this;
+ exists(key: K): this;
+ find(options?: Query.FindOptions): Promise;
+ findAll(options?: Query.BatchOptions): Promise;
+ first(options?: Query.FirstOptions): Promise;
+ fromNetwork(): this;
+ fromLocalDatastore(): this;
+ fromPin(): this;
+ fromPinWithName(name: string): this;
+ cancel(): this;
+ fullText(
+ key: K,
+ value: string,
+ options?: Query.FullTextOptions,
+ ): this;
+ get(objectId: string, options?: Query.GetOptions): Promise;
+ greaterThan(
+ key: K,
+ value: T['attributes'][K],
+ ): this;
+ greaterThanOrEqualTo(
+ key: K,
+ value: T['attributes'][K],
+ ): this;
+ include(...key: K[]): this;
+ include(key: K[]): this;
+ includeAll(): Query;
+ lessThan(key: K, value: T['attributes'][K]): this;
+ lessThanOrEqualTo(
+ key: K,
+ value: T['attributes'][K],
+ ): this;
+ limit(n: number): Query;
+ matches(
+ key: K,
+ regex: RegExp,
+ modifiers?: string,
+ ): this;
+ matchesKeyInQuery<
+ U extends Object,
+ K extends keyof T['attributes'],
+ X extends Extract,
+ >(key: K, queryKey: X, query: Query): this;
+ matchesQuery(key: K, query: Query): this;
+ near(key: K, point: GeoPoint): this;
+ notContainedIn(
+ key: K,
+ values: Array,
+ ): this;
+ notEqualTo(
+ key: K,
+ value:
+ | T['attributes'][K]
+ | (T['attributes'][K] extends Object
+ ? Pointer
+ : T['attributes'][K] extends Array
+ ? E
+ : never),
+ ): this;
+ polygonContains(key: K, point: GeoPoint): this;
+ select(...keys: K[]): this;
+ select(keys: K[]): this;
+ skip(n: number): Query;
+ sortByTextScore(): this;
+ startsWith(key: K, prefix: string): this;
+ subscribe(sessionToken?: string): Promise;
+ toJSON(): any;
+ withJSON(json: any): this;
+ withCount(includeCount?: boolean): this;
+ withinGeoBox(
+ key: K,
+ southwest: GeoPoint,
+ northeast: GeoPoint,
+ ): this;
+ withinKilometers(
+ key: K,
+ point: GeoPoint,
+ maxDistance: number,
+ sorted?: boolean,
+ ): this;
+ withinMiles(
+ key: K,
+ point: GeoPoint,
+ maxDistance: number,
+ sorted?: boolean,
+ ): this;
+ withinPolygon(key: K, points: number[][]): this;
+ withinRadians(
+ key: K,
+ point: GeoPoint,
+ maxDistance: number,
+ ): this;
+ }
+
+ namespace Query {
+ interface EachOptions extends SuccessFailureOptions, ScopeOptions {}
+ interface CountOptions extends SuccessFailureOptions, ScopeOptions {}
+ interface FindOptions extends SuccessFailureOptions, ScopeOptions, RawJSONOptions {}
+ interface FirstOptions extends SuccessFailureOptions, ScopeOptions, RawJSONOptions {}
+ interface GetOptions extends SuccessFailureOptions, ScopeOptions, RawJSONOptions {}
+
+ // According to http://docs.parseplatform.org/rest/guide/#aggregate-queries
+ interface AggregationOptions {
+ group?: (Record & { objectId?: string }) | undefined;
+ match?: Record | undefined;
+ project?: Record | undefined;
+ limit?: number | undefined;
+ skip?: number | undefined;
+ // Sort documentation https://docs.mongodb.com/v3.2/reference/operator/aggregation/sort/#pipe._S_sort
+ sort?: Record | undefined;
+ // Sample documentation: https://docs.mongodb.com/v3.2/reference/operator/aggregation/sample/
+ sample?: { size: number } | undefined;
+ // Count documentation: https://docs.mongodb.com/manual/reference/operator/aggregation/count/
+ count?: string | undefined;
+ // Lookup documentation: https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/
+ lookup?:
+ | {
+ from: string;
+ localField: string;
+ foreignField: string;
+ as: string;
+ }
+ | {
+ from: string;
+ let?: Record;
+ pipeline: Record;
+ as: string;
+ }
+ | undefined;
+ // Graph Lookup documentation: https://docs.mongodb.com/manual/reference/operator/aggregation/graphLookup/
+ graphLookup?:
+ | {
+ from: string;
+ startWith?: string;
+ connectFromField: string;
+ connectToField: string;
+ as: string;
+ maxDepth?: number;
+ depthField?: string;
+ restrictSearchWithMatch?: Record;
+ }
+ | undefined;
+ // Facet documentation: https://docs.mongodb.com/manual/reference/operator/aggregation/facet/
+ facet?: Record>> | undefined;
+ // Unwind documentation: https://www.mongodb.com/docs/manual/reference/operator/aggregation/unwind/
+ unwind?:
+ | {
+ path: string;
+ includeArrayIndex?: string;
+ preserveNullAndEmptyArrays?: boolean;
+ }
+ | string
+ | undefined;
+ }
+
+ // According to https://parseplatform.org/Parse-SDK-JS/api/2.1.0/Parse.Query.html#fullText
+ interface FullTextOptions {
+ language?: string | undefined;
+ caseSensitive?: boolean | undefined;
+ diacriticSensitive?: boolean | undefined;
+ }
+
+ interface BatchOptions extends FullOptions {
+ batchSize?: number | undefined;
+ }
+ }
+
+ /**
+ * Represents a LiveQuery Subscription.
+ *
+ * @see https://docs.parseplatform.org/js/guide/#live-queries
+ * @see NodeJS.EventEmitter
+ *
+ * Events list
+ * ---
+ * `open` - when you call `query.subscribe()`, we send a subscribe request to
+ * the LiveQuery server, when we get the confirmation from the LiveQuery server,
+ * this event will be emitted. When the client loses WebSocket connection to the
+ * LiveQuery server, we will try to auto reconnect the LiveQuery server. If we
+ * reconnect the LiveQuery server and successfully resubscribe the ParseQuery,
+ * you'll also get this event.
+ *
+ * ```
+ * subscription.on('open', () => {});
+ * ```
+ * ---
+ * `create` - when a new ParseObject is created and it fulfills the ParseQuery you subscribe,
+ * you'll get this event. The object is the ParseObject which is created.
+ *
+ * ```
+ * subscription.on('create', (object: Parse.Object) => {});
+ * ```
+ * ---
+ * `update` event - when an existing ParseObject which fulfills the ParseQuery you subscribe
+ * is updated (The ParseObject fulfills the ParseQuery before and after changes),
+ * you'll get this event. The object is the ParseObject which is updated.
+ * Its content is the latest value of the ParseObject.
+ *
+ * ```
+ * subscription.on('update', (object: Parse.Object) => {});
+ * ```
+ * ---
+ * `enter` event - when an existing ParseObject's old value doesn't fulfill the ParseQuery
+ * but its new value fulfills the ParseQuery, you'll get this event. The object is the
+ * ParseObject which enters the ParseQuery. Its content is the latest value of the ParseObject.
+ *
+ * ```
+ * subscription.on('enter', (object: Parse.Object) => {});
+ * ```
+ * ---
+ * `update` event - when an existing ParseObject's old value fulfills the ParseQuery but its new value
+ * doesn't fulfill the ParseQuery, you'll get this event. The object is the ParseObject
+ * which leaves the ParseQuery. Its content is the latest value of the ParseObject.
+ *
+ * ```
+ * subscription.on('leave', (object: Parse.Object) => {});
+ * ```
+ * ---
+ * `delete` event - when an existing ParseObject which fulfills the ParseQuery is deleted, you'll
+ * get this event. The object is the ParseObject which is deleted.
+ *
+ * ```
+ * subscription.on('delete', (object: Parse.Object) => {});
+ * ```
+ * ---
+ * `close` event - when the client loses the WebSocket connection to the LiveQuery
+ * server and we stop receiving events, you'll get this event.
+ *
+ * ```
+ * subscription.on('close', () => {});
+ * ```
+ */
+ class LiveQuerySubscription extends EventEmitter {
+ /**
+ * Creates an instance of LiveQuerySubscription.
+ *
+ * @param id
+ * @param query
+ * @param [sessionToken]
+ */
+ constructor(id: string, query: string, sessionToken?: string);
+
+ on(
+ event: 'open' | 'create' | 'update' | 'enter' | 'leave' | 'delete' | 'close',
+ listener: (object: Object) => void,
+ ): this;
+
+ /**
+ * Closes the subscription.
+ *
+ */
+ unsubscribe(): void;
+ }
+
+ /**
+ * The LiveQuery namespace is basically an EventEmitter
+ * (source : https://github.com/parse-community/Parse-SDK-JS/blob/8115e959533d1676fe5e5551bc81888b21fc12ef/src/ParseLiveQuery.js)
+ * https://docs.parseplatform.org/js/guide/#websocket-status
+ */
+ namespace LiveQuery {
+ function on(
+ event: 'open' | 'close',
+ /** When we establish ('open') or lose the WebSocket connection to the LiveQuery server, you’ll get this event */
+ listener: () => void,
+ ): void;
+ function on(
+ event: 'error',
+ /** When some network error or LiveQuery server error happens, you’ll get this event. */
+ listener: (error: any) => void,
+ ): void;
+ }
+
+ /**
+ * Represents a Role on the Parse server. Roles represent groupings of
+ * Users for the purposes of granting permissions (e.g. specifying an ACL
+ * for an Object). Roles are specified by their sets of child users and
+ * child roles, all of which are granted any permissions that the parent
+ * role has.
+ *
+ * Roles must have a name (which cannot be changed after creation of the
+ * role), and must specify an ACL.
+ * A Parse.Role is a local representation of a role persisted to the Parse
+ * cloud.
+ */
+ interface Role extends Object {
+ getRoles(): Relation;
+ getUsers(): Relation;
+ getName(): string;
+ setName(name: string, options?: SuccessFailureOptions): any;
+ }
+ interface RoleConstructor extends ObjectStatic {
+ new (name: string, acl: ACL): Role>;
+ new (name: string, acl: ACL): Role;
+ }
+ const Role: RoleConstructor;
+
+ class Config {
+ static get(options?: UseMasterKeyOption): Promise;
+ static current(): Config;
+ static save(attr: any, options?: { [attr: string]: boolean }): Promise;
+
+ get(attr: string): any;
+ escape(attr: string): any;
+ }
+
+ interface Session extends Object {
+ getSessionToken(): string;
+ isCurrentSessionRevocable(): boolean;
+ }
+ interface SessionConstructor extends ObjectStatic {
+ new (attributes: T): Session;
+ new (): Session;
+
+ current(): Promise;
+ }
+ const Session: SessionConstructor;
+
+ /**
+ *
+ * A Parse.User object is a local representation of a user persisted to the
+ * Parse cloud. This class is a subclass of a Parse.Object, and retains the
+ * same functionality of a Parse.Object, but also extends it with various
+ * user specific methods, like authentication, signing up, and validation of
+ * uniqueness.
+ */
+ interface User extends Object {
+ signUp(attrs?: any, options?: SignUpOptions): Promise;
+ logIn(options?: FullOptions): Promise;
+ authenticated(): boolean;
+ isCurrent(): boolean;
+ /** Since version 3.0.0, Returns true if `current` would return this user */
+ isCurrentAsync(): Promise;
+
+ getEmail(): string | undefined;
+ setEmail(email: string, options?: SuccessFailureOptions): boolean;
+
+ getUsername(): string | undefined;
+ setUsername(username: string, options?: SuccessFailureOptions): boolean;
+
+ setPassword(password: string, options?: SuccessFailureOptions): boolean;
+ getSessionToken(): string;
+
+ linkWith: (
+ provider: string | AuthProvider,
+ options: { authData?: AuthData | undefined },
+ saveOpts?: FullOptions,
+ ) => Promise;
+ _isLinked: (provider: string | AuthProvider) => boolean;
+ _unlinkFrom: (provider: string | AuthProvider, options?: FullOptions) => Promise;
+ }
+ interface UserConstructor extends ObjectStatic {
+ new (attributes: T): User;
+ new (attributes?: Attributes): User;
+
+ allowCustomUserClass(isAllowed: boolean): void;
+ become(sessionToken: string, options?: UseMasterKeyOption): Promise;
+ current(): T | undefined;
+ currentAsync(): Promise;
+ signUp(username: string, password: string, attrs: any, options?: SignUpOptions): Promise;
+ logIn(username: string, password: string, options?: FullOptions): Promise;
+ logOut(): Promise;
+ requestPasswordReset(email: string, options?: SuccessFailureOptions): Promise;
+ requestEmailVerification(email: string, options?: UseMasterKeyOption): Promise;
+ extend(protoProps?: any, classProps?: any): any;
+ hydrate(userJSON: any): Promise;
+ enableUnsafeCurrentUser(): void;
+ disableUnsafeCurrentUser(): void;
+ logInWith(
+ provider: string | AuthProvider,
+ options: { authData?: AuthData | undefined },
+ saveOpts?: FullOptions,
+ ): Promise;
+ _registerAuthenticationProvider: (provider: AuthProvider) => void;
+ }
+ const User: UserConstructor;
+
+ /**
+ * The raw schema response returned from the `GET /parse/schemas` endpoint.
+ * This is defined here: https://docs.parseplatform.org/js/guide/#schema.
+ * Unfortunately, `Schema.all()` and `Schema.prototype.get()` return this rather
+ * than a `Schema`. It is also the only object which provides introspection on
+ * the schema - such as `className` and `fields`.
+ */
+ interface RestSchema {
+ className: string;
+ fields: {
+ [key: string]: {
+ type: string;
+ targetClass?: string;
+ required?: boolean;
+ defaultValue?: string;
+ };
+ };
+ classLevelPermissions: Schema.CLP;
+ indexes?: {
+ [key: string]: {
+ [key: string]: any;
+ };
+ };
+ }
+
+ /**
+ * A Parse.Schema object is for handling schema data from Parse.
+ * All the schemas methods require MasterKey.
+ *
+ * @param className Parse Class string
+ *
+ * https://parseplatform.org/Parse-SDK-JS/api/master/Parse.Schema.html
+ *
+ * ```
+ * const schema = new Parse.Schema('MyClass');
+ * schema.addString('field');
+ * schema.addIndex('index_name', { field: 1 });
+ * schema.save();
+ * ```
+ */
+ class Schema {
+ constructor(className: string);
+
+ /**
+ * Static method to get all schemas
+ *
+ * @return A promise that is resolved with the result when
+ * the query completes.
+ */
+ static all(): Promise;
+
+ addArray(key: Schema.AttrType, options?: Schema.FieldOptions): this;
+ addBoolean(key: Schema.AttrType, options?: Schema.FieldOptions): this;
+ addDate(key: Schema.AttrType, options?: Schema.FieldOptions): this;
+ addField(name: string, type?: T, options?: Schema.FieldOptions): this;
+ addFile(key: Schema.AttrType, options?: Schema.FieldOptions): this;
+ addGeoPoint(key: Schema.AttrType, options?: Schema.FieldOptions): this;
+
+ /**
+ * Adding an Index to Create / Update a Schema
+ * @param name Name of the field that will be created on Parse
+ * @param index `{ 'field': value }` where `field` should exist in the schema before using addIndex.
+ * @return Returns the schema, so you can chain this call.
+ * @example
+ * ```
+ * schema.addIndex('index_name', {'field': 1});
+ * ```
+ */
+ addIndex(name: string, index: Schema.Index): this;
+
+ addNumber(key: Schema.AttrType, options?: Schema.FieldOptions): this;
+
+ addObject(key: Schema.AttrType, options?: Schema.FieldOptions): this;
+
+ /**
+ * Adding Pointer Field
+ * @param name Name of the field that will be created on Parse
+ * @param targetClass Name of the target Pointer Class
+ * @return Returns the schema, so you can chain this call.
+ */
+ addPointer(
+ key: Schema.AttrType,
+ targetClass: string,
+ options?: Schema.FieldOptions,
+ ): this;
+
+ addPolygon(key: Schema.AttrType, options?: Schema.FieldOptions): this;
+
+ /**
+ * Adding Relation Field
+ * @param name Name of the field that will be created on Parse
+ * @param targetClass Name of the target Pointer Class
+ * @return Returns the schema, so you can chain this call.
+ */
+ addRelation(
+ key: Schema.AttrType,
+ targetClass: string,
+ options?: Schema.FieldOptions,
+ ): this;
+
+ addString(key: Schema.AttrType, options?: Schema.FieldOptions): this;
+
+ /**
+ * Removing a Schema from Parse Can only be used on Schema without objects
+ * @returns A promise that is resolved with the result when the query completes.
+ */
+ // @TODO Fix Promise
+ delete(): Promise;
+
+ /**
+ * Deleting a Field to Update on a Schema
+ * @param name Name of the field
+ * @return Returns the schema, so you can chain this call.
+ */
+ deleteField(name: string): this;
+
+ /**
+ * Deleting a Index Field to Update on a Schema
+ * @param name Name of the index field
+ * @return Returns the schema, so you can chain this call.
+ */
+ deleteIndex(name: string): this;
+
+ /**
+ * Get the Schema from Parse
+ */
+ get(): Promise;
+
+ /**
+ * Removes all objects from a Schema (class) in EXERCISE CAUTION, running this will delete all objects for this schema and cannot be reversed
+ */
+ // TODO Fix Promise
+ purge(): Promise;
+
+ /**
+ * Create a new Schema on Parse
+ */
+ save(): Promise;
+
+ /**
+ * Sets Class Level Permissions when creating / updating a Schema.
+ * EXERCISE CAUTION, running this may override CLP for this schema and cannot be reversed
+ */
+ setCLP(clp: Schema.CLP): this;
+
+ /**
+ * Update a Schema on Parse
+ */
+ update(): Promise;
+ }
+
+ namespace Schema {
+ type TYPE =
+ | 'String'
+ | 'Number'
+ | 'Boolean'
+ | 'Date'
+ | 'File'
+ | 'GeoPoint'
+ | 'Polygon'
+ | 'Array'
+ | 'Object'
+ | 'Pointer'
+ | 'Relation';
+ type FieldType =
+ | string
+ | number
+ | boolean
+ | Date
+ | File
+ | GeoPoint
+ | Polygon
+ | any[]
+ | object
+ | Pointer
+ | Relation;
+ type AttrType = Extract<
+ { [K in keyof T['attributes']]: T['attributes'][K] extends V ? K : never }[keyof T['attributes']],
+ string
+ >;
+
+ interface FieldOptions<
+ T extends
+ | string
+ | number
+ | boolean
+ | Date
+ | File
+ | GeoPoint
+ | Polygon
+ | any[]
+ | object
+ | Pointer
+ | Relation = any,
+ > {
+ required?: boolean | undefined;
+ defaultValue?: T | undefined;
+ }
+
+ interface Index {
+ [fieldName: string]: number | string;
+ }
+
+ /**
+ * The id of a `_User` object or a role name prefixed by `'role:'`.
+ * @example
+ * '*': false, // public
+ * requiresAuthentication: false,
+ * 'role:Admin': true,
+ * 'idOfASpecificUser': true
+ */
+ interface CLPField {
+ '*'?: boolean | undefined;
+ requiresAuthentication?: boolean | undefined;
+ /** `role:Admin` */
+ [userIdOrRoleName: string]: boolean | undefined;
+ }
+
+ interface CLP {
+ find?: CLPField | undefined;
+ get?: CLPField | undefined;
+ count?: CLPField | undefined;
+ create?: CLPField | undefined;
+ update?: CLPField | undefined;
+ delete?: CLPField | undefined;
+ addField?: CLPField | undefined;
+ /** Array of fields that point to a `_User` object's ID or a `Role` object's name */
+ readUserFields?: string[] | undefined;
+ /** Array of fields that point to a `_User` object's ID or a `Role` object's name */
+ writeUserFields?: string[] | undefined;
+ protectedFields?: {
+ /** '*', user id, or role: followed by a list of fields. */
+ [userIdOrRoleName: string]: string[];
+ };
+ }
+ }
+
+ namespace Analytics {
+ function track(name: string, dimensions: any): Promise;
+ }
+
+ /**
+ * Provides utility functions for working with Anonymously logged-in users.
+ */
+ namespace AnonymousUtils {
+ function isLinked(user: User): boolean;
+ function link(user: User, options?: ScopeOptions): Promise