diff --git a/action/node_modules/.package-lock.json b/action/node_modules/.package-lock.json
index 2d780f9c4..8a17d2cc7 100644
--- a/action/node_modules/.package-lock.json
+++ b/action/node_modules/.package-lock.json
@@ -4,6 +4,15 @@
"lockfileVersion": 3,
"requires": true,
"packages": {
+ "node_modules/@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/@actions/core": {
"version": "1.10.0",
"license": "MIT",
@@ -61,244 +70,5163 @@
"uuid": "^3.3.2"
}
},
- "node_modules/@fastify/busboy": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz",
- "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==",
+ "node_modules/@ampproject/remapping": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
+ "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
"engines": {
- "node": ">=14"
+ "node": ">=6.0.0"
}
},
- "node_modules/@kwsites/file-exists": {
- "version": "1.1.1",
- "license": "MIT",
+ "node_modules/@babel/code-frame": {
+ "version": "7.22.13",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
+ "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
+ "dev": true,
"dependencies": {
- "debug": "^4.1.1"
+ "@babel/highlight": "^7.22.13",
+ "chalk": "^2.4.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@kwsites/promise-deferred": {
- "version": "1.1.1",
- "license": "MIT"
+ "node_modules/@babel/code-frame/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
},
- "node_modules/@octokit/auth-token": {
- "version": "2.5.0",
- "license": "MIT",
+ "node_modules/@babel/code-frame/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
"dependencies": {
- "@octokit/types": "^6.0.3"
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/@octokit/core": {
- "version": "3.6.0",
- "license": "MIT",
- "peer": true,
+ "node_modules/@babel/code-frame/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
"dependencies": {
- "@octokit/auth-token": "^2.4.4",
- "@octokit/graphql": "^4.5.8",
- "@octokit/request": "^5.6.3",
- "@octokit/request-error": "^2.0.5",
- "@octokit/types": "^6.0.3",
- "before-after-hook": "^2.2.0",
- "universal-user-agent": "^6.0.0"
+ "color-name": "1.1.3"
}
},
- "node_modules/@octokit/endpoint": {
- "version": "6.0.12",
- "license": "MIT",
+ "node_modules/@babel/code-frame/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
+ "node_modules/@babel/code-frame/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
"dependencies": {
- "@octokit/types": "^6.0.3",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/@octokit/graphql": {
- "version": "4.8.0",
- "license": "MIT",
+ "node_modules/@babel/compat-data": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz",
+ "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.20.tgz",
+ "integrity": "sha512-Y6jd1ahLubuYweD/zJH+vvOY141v4f9igNQAQ+MBgq9JlHS2iTsZKn1aMsb3vGccZsXI16VzTBw52Xx0DWmtnA==",
+ "dev": true,
"dependencies": {
- "@octokit/request": "^5.6.0",
- "@octokit/types": "^6.0.3",
- "universal-user-agent": "^6.0.0"
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.22.13",
+ "@babel/generator": "^7.22.15",
+ "@babel/helper-compilation-targets": "^7.22.15",
+ "@babel/helper-module-transforms": "^7.22.20",
+ "@babel/helpers": "^7.22.15",
+ "@babel/parser": "^7.22.16",
+ "@babel/template": "^7.22.15",
+ "@babel/traverse": "^7.22.20",
+ "@babel/types": "^7.22.19",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
}
},
- "node_modules/@octokit/openapi-types": {
- "version": "11.2.0",
- "license": "MIT"
+ "node_modules/@babel/core/node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "dev": true
},
- "node_modules/@octokit/plugin-paginate-rest": {
- "version": "2.17.0",
- "license": "MIT",
+ "node_modules/@babel/generator": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.15.tgz",
+ "integrity": "sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==",
+ "dev": true,
"dependencies": {
- "@octokit/types": "^6.34.0"
+ "@babel/types": "^7.22.15",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jsesc": "^2.5.1"
},
- "peerDependencies": {
- "@octokit/core": ">=2"
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@octokit/plugin-rest-endpoint-methods": {
- "version": "5.13.0",
- "license": "MIT",
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz",
+ "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==",
+ "dev": true,
"dependencies": {
- "@octokit/types": "^6.34.0",
- "deprecation": "^2.3.1"
+ "@babel/compat-data": "^7.22.9",
+ "@babel/helper-validator-option": "^7.22.15",
+ "browserslist": "^4.21.9",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
},
- "peerDependencies": {
- "@octokit/core": ">=3"
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@octokit/request": {
- "version": "5.6.3",
- "license": "MIT",
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-function-name": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz",
+ "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==",
+ "dev": true,
"dependencies": {
- "@octokit/endpoint": "^6.0.1",
- "@octokit/request-error": "^2.1.0",
- "@octokit/types": "^6.16.1",
- "is-plain-object": "^5.0.0",
- "node-fetch": "^2.6.7",
- "universal-user-agent": "^6.0.0"
+ "@babel/template": "^7.22.5",
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@octokit/request-error": {
- "version": "2.1.0",
- "license": "MIT",
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+ "dev": true,
"dependencies": {
- "@octokit/types": "^6.0.3",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@octokit/types": {
- "version": "6.34.0",
- "license": "MIT",
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
+ "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
+ "dev": true,
"dependencies": {
- "@octokit/openapi-types": "^11.2.0"
+ "@babel/types": "^7.22.15"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/before-after-hook": {
- "version": "2.2.2",
- "license": "Apache-2.0"
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.20.tgz",
+ "integrity": "sha512-dLT7JVWIUUxKOs1UnJUBR3S70YK+pKX6AbJgB2vMIvEkZkrfJDbYDJesnPshtKV4LhDOR3Oc5YULeDizRek+5A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-simple-access": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/helper-validator-identifier": "^7.22.20"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
},
- "node_modules/debug": {
- "version": "4.3.4",
- "license": "MIT",
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
+ "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
+ "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+ "dev": true,
"dependencies": {
- "ms": "2.1.2"
+ "@babel/types": "^7.22.5"
},
"engines": {
- "node": ">=6.0"
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
},
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/deprecation": {
- "version": "2.3.1",
- "license": "ISC"
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
+ "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "node_modules/is-plain-object": {
- "version": "5.0.0",
- "license": "MIT",
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+ "dev": true,
"engines": {
- "node": ">=0.10.0"
+ "node": ">=6.9.0"
}
},
- "node_modules/ms": {
- "version": "2.1.2",
- "license": "MIT"
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz",
+ "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "node_modules/node-fetch": {
- "version": "2.6.7",
- "license": "MIT",
+ "node_modules/@babel/helpers": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.15.tgz",
+ "integrity": "sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==",
+ "dev": true,
"dependencies": {
- "whatwg-url": "^5.0.0"
+ "@babel/template": "^7.22.15",
+ "@babel/traverse": "^7.22.15",
+ "@babel/types": "^7.22.15"
},
"engines": {
- "node": "4.x || >=6.0.0"
- },
- "peerDependencies": {
- "encoding": "^0.1.0"
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
+ "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0"
},
- "peerDependenciesMeta": {
- "encoding": {
- "optional": true
- }
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/node-fetch/node_modules/tr46": {
- "version": "0.0.3",
- "license": "MIT"
+ "node_modules/@babel/highlight/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
},
- "node_modules/node-fetch/node_modules/webidl-conversions": {
- "version": "3.0.1",
- "license": "BSD-2-Clause"
+ "node_modules/@babel/highlight/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
},
- "node_modules/node-fetch/node_modules/whatwg-url": {
- "version": "5.0.0",
- "license": "MIT",
+ "node_modules/@babel/highlight/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
"dependencies": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
+ "color-name": "1.1.3"
}
},
- "node_modules/once": {
- "version": "1.4.0",
- "license": "ISC",
+ "node_modules/@babel/highlight/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
+ "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
"dependencies": {
- "wrappy": "1"
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/semver": {
- "version": "6.3.1",
- "license": "ISC",
+ "node_modules/@babel/parser": {
+ "version": "7.22.16",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz",
+ "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==",
+ "dev": true,
"bin": {
- "semver": "bin/semver.js"
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
}
},
- "node_modules/simple-git": {
- "version": "3.19.1",
- "license": "MIT",
+ "node_modules/@babel/plugin-syntax-async-generators": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+ "dev": true,
"dependencies": {
- "@kwsites/file-exists": "^1.1.1",
- "@kwsites/promise-deferred": "^1.1.1",
- "debug": "^4.3.4"
+ "@babel/helper-plugin-utils": "^7.8.0"
},
- "funding": {
- "type": "github",
- "url": "https://github.com/steveukx/git-js?sponsor=1"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/tunnel": {
- "version": "0.0.6",
- "license": "MIT",
- "engines": {
- "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
+ "node_modules/@babel/plugin-syntax-bigint": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
+ "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/undici": {
- "version": "5.28.4",
- "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz",
- "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==",
+ "node_modules/@babel/plugin-syntax-class-properties": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+ "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+ "dev": true,
"dependencies": {
- "@fastify/busboy": "^2.0.0"
+ "@babel/helper-plugin-utils": "^7.12.13"
},
- "engines": {
- "node": ">=14.0"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/universal-user-agent": {
- "version": "6.0.0",
- "license": "ISC"
+ "node_modules/@babel/plugin-syntax-import-meta": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+ "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
},
- "node_modules/uuid": {
- "version": "3.4.0",
- "license": "MIT",
- "bin": {
- "uuid": "bin/uuid"
+ "node_modules/@babel/plugin-syntax-json-strings": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+ "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/wrappy": {
- "version": "1.0.2",
- "license": "ISC"
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz",
+ "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+ "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-numeric-separator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+ "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-top-level-await": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+ "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-typescript": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz",
+ "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
+ "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.22.13",
+ "@babel/parser": "^7.22.15",
+ "@babel/types": "^7.22.15"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.20.tgz",
+ "integrity": "sha512-eU260mPZbU7mZ0N+X10pxXhQFMGTeLb9eFS0mxehS8HZp9o1uSnFeWQuG1UPrlxgA7QoUzFhOnilHDp0AXCyHw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.22.13",
+ "@babel/generator": "^7.22.15",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.22.5",
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/parser": "^7.22.16",
+ "@babel/types": "^7.22.19",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.22.19",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.19.tgz",
+ "integrity": "sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.19",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@bcoe/v8-coverage": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
+ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+ "dev": true
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.8.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz",
+ "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz",
+ "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "8.49.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz",
+ "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@fastify/busboy": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz",
+ "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.11.11",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz",
+ "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==",
+ "dev": true,
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^1.2.1",
+ "debug": "^4.1.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
+ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
+ "dev": true
+ },
+ "node_modules/@istanbuljs/load-nyc-config": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
+ "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
+ "dev": true,
+ "dependencies": {
+ "camelcase": "^5.3.1",
+ "find-up": "^4.1.0",
+ "get-package-type": "^0.1.0",
+ "js-yaml": "^3.13.1",
+ "resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@istanbuljs/schema": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
+ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/console": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz",
+ "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "jest-message-util": "^29.7.0",
+ "jest-util": "^29.7.0",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/core": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz",
+ "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==",
+ "dev": true,
+ "dependencies": {
+ "@jest/console": "^29.7.0",
+ "@jest/reporters": "^29.7.0",
+ "@jest/test-result": "^29.7.0",
+ "@jest/transform": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.9",
+ "jest-changed-files": "^29.7.0",
+ "jest-config": "^29.7.0",
+ "jest-haste-map": "^29.7.0",
+ "jest-message-util": "^29.7.0",
+ "jest-regex-util": "^29.6.3",
+ "jest-resolve": "^29.7.0",
+ "jest-resolve-dependencies": "^29.7.0",
+ "jest-runner": "^29.7.0",
+ "jest-runtime": "^29.7.0",
+ "jest-snapshot": "^29.7.0",
+ "jest-util": "^29.7.0",
+ "jest-validate": "^29.7.0",
+ "jest-watcher": "^29.7.0",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^29.7.0",
+ "slash": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@jest/environment": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz",
+ "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/fake-timers": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "jest-mock": "^29.7.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/expect": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz",
+ "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==",
+ "dev": true,
+ "dependencies": {
+ "expect": "^29.7.0",
+ "jest-snapshot": "^29.7.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/expect-utils": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz",
+ "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==",
+ "dev": true,
+ "dependencies": {
+ "jest-get-type": "^29.6.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/fake-timers": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz",
+ "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^29.6.3",
+ "@sinonjs/fake-timers": "^10.0.2",
+ "@types/node": "*",
+ "jest-message-util": "^29.7.0",
+ "jest-mock": "^29.7.0",
+ "jest-util": "^29.7.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/globals": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz",
+ "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^29.7.0",
+ "@jest/expect": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "jest-mock": "^29.7.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/reporters": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz",
+ "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==",
+ "dev": true,
+ "dependencies": {
+ "@bcoe/v8-coverage": "^0.2.3",
+ "@jest/console": "^29.7.0",
+ "@jest/test-result": "^29.7.0",
+ "@jest/transform": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "@jridgewell/trace-mapping": "^0.3.18",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "collect-v8-coverage": "^1.0.0",
+ "exit": "^0.1.2",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.2.9",
+ "istanbul-lib-coverage": "^3.0.0",
+ "istanbul-lib-instrument": "^6.0.0",
+ "istanbul-lib-report": "^3.0.0",
+ "istanbul-lib-source-maps": "^4.0.0",
+ "istanbul-reports": "^3.1.3",
+ "jest-message-util": "^29.7.0",
+ "jest-util": "^29.7.0",
+ "jest-worker": "^29.7.0",
+ "slash": "^3.0.0",
+ "string-length": "^4.0.1",
+ "strip-ansi": "^6.0.0",
+ "v8-to-istanbul": "^9.0.1"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@jest/schemas": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
+ "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
+ "dev": true,
+ "dependencies": {
+ "@sinclair/typebox": "^0.27.8"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/source-map": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz",
+ "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.18",
+ "callsites": "^3.0.0",
+ "graceful-fs": "^4.2.9"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/test-result": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz",
+ "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/console": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "collect-v8-coverage": "^1.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/test-sequencer": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz",
+ "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/test-result": "^29.7.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^29.7.0",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/transform": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz",
+ "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.11.6",
+ "@jest/types": "^29.6.3",
+ "@jridgewell/trace-mapping": "^0.3.18",
+ "babel-plugin-istanbul": "^6.1.1",
+ "chalk": "^4.0.0",
+ "convert-source-map": "^2.0.0",
+ "fast-json-stable-stringify": "^2.1.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^29.7.0",
+ "jest-regex-util": "^29.6.3",
+ "jest-util": "^29.7.0",
+ "micromatch": "^4.0.4",
+ "pirates": "^4.0.4",
+ "slash": "^3.0.0",
+ "write-file-atomic": "^4.0.2"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/types": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
+ "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^17.0.8",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+ "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
+ "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+ "dev": true
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.19",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz",
+ "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@kwsites/file-exists": {
+ "version": "1.1.1",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.1.1"
+ }
+ },
+ "node_modules/@kwsites/promise-deferred": {
+ "version": "1.1.1",
+ "license": "MIT"
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@octokit/auth-token": {
+ "version": "2.5.0",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^6.0.3"
+ }
+ },
+ "node_modules/@octokit/core": {
+ "version": "3.6.0",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/auth-token": "^2.4.4",
+ "@octokit/graphql": "^4.5.8",
+ "@octokit/request": "^5.6.3",
+ "@octokit/request-error": "^2.0.5",
+ "@octokit/types": "^6.0.3",
+ "before-after-hook": "^2.2.0",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "node_modules/@octokit/endpoint": {
+ "version": "6.0.12",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^6.0.3",
+ "is-plain-object": "^5.0.0",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "node_modules/@octokit/graphql": {
+ "version": "4.8.0",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/request": "^5.6.0",
+ "@octokit/types": "^6.0.3",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "node_modules/@octokit/openapi-types": {
+ "version": "11.2.0",
+ "license": "MIT"
+ },
+ "node_modules/@octokit/plugin-paginate-rest": {
+ "version": "2.17.0",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^6.34.0"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=2"
+ }
+ },
+ "node_modules/@octokit/plugin-rest-endpoint-methods": {
+ "version": "5.13.0",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^6.34.0",
+ "deprecation": "^2.3.1"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=3"
+ }
+ },
+ "node_modules/@octokit/request": {
+ "version": "5.6.3",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/endpoint": "^6.0.1",
+ "@octokit/request-error": "^2.1.0",
+ "@octokit/types": "^6.16.1",
+ "is-plain-object": "^5.0.0",
+ "node-fetch": "^2.6.7",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "node_modules/@octokit/request-error": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^6.0.3",
+ "deprecation": "^2.0.0",
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/@octokit/types": {
+ "version": "6.34.0",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/openapi-types": "^11.2.0"
+ }
+ },
+ "node_modules/@sinclair/typebox": {
+ "version": "0.27.8",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
+ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
+ "dev": true
+ },
+ "node_modules/@sinonjs/commons": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz",
+ "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==",
+ "dev": true,
+ "dependencies": {
+ "type-detect": "4.0.8"
+ }
+ },
+ "node_modules/@sinonjs/fake-timers": {
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz",
+ "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==",
+ "dev": true,
+ "dependencies": {
+ "@sinonjs/commons": "^3.0.0"
+ }
+ },
+ "node_modules/@types/babel__core": {
+ "version": "7.20.2",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz",
+ "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "node_modules/@types/babel__generator": {
+ "version": "7.6.5",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz",
+ "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__template": {
+ "version": "7.4.2",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz",
+ "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__traverse": {
+ "version": "7.20.2",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz",
+ "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.20.7"
+ }
+ },
+ "node_modules/@types/graceful-fs": {
+ "version": "4.1.6",
+ "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz",
+ "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/istanbul-lib-coverage": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
+ "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
+ "dev": true
+ },
+ "node_modules/@types/istanbul-lib-report": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+ "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "*"
+ }
+ },
+ "node_modules/@types/istanbul-reports": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
+ "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "node_modules/@types/jest": {
+ "version": "29.5.5",
+ "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.5.tgz",
+ "integrity": "sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==",
+ "dev": true,
+ "dependencies": {
+ "expect": "^29.0.0",
+ "pretty-format": "^29.0.0"
+ }
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.13",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz",
+ "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==",
+ "dev": true
+ },
+ "node_modules/@types/node": {
+ "version": "20.6.2",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.2.tgz",
+ "integrity": "sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw==",
+ "dev": true
+ },
+ "node_modules/@types/semver": {
+ "version": "7.5.2",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.2.tgz",
+ "integrity": "sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==",
+ "dev": true
+ },
+ "node_modules/@types/stack-utils": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
+ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
+ "dev": true
+ },
+ "node_modules/@types/yargs": {
+ "version": "17.0.24",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz",
+ "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@types/yargs-parser": {
+ "version": "21.0.0",
+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
+ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==",
+ "dev": true
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "6.7.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.2.tgz",
+ "integrity": "sha512-ooaHxlmSgZTM6CHYAFRlifqh1OAr3PAQEwi7lhYhaegbnXrnh7CDcHmc3+ihhbQC7H0i4JF0psI5ehzkF6Yl6Q==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.5.1",
+ "@typescript-eslint/scope-manager": "6.7.2",
+ "@typescript-eslint/type-utils": "6.7.2",
+ "@typescript-eslint/utils": "6.7.2",
+ "@typescript-eslint/visitor-keys": "6.7.2",
+ "debug": "^4.3.4",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.4",
+ "natural-compare": "^1.4.0",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha",
+ "eslint": "^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "6.7.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.2.tgz",
+ "integrity": "sha512-KA3E4ox0ws+SPyxQf9iSI25R6b4Ne78ORhNHeVKrPQnoYsb9UhieoiRoJgrzgEeKGOXhcY1i8YtOeCHHTDa6Fw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "6.7.2",
+ "@typescript-eslint/types": "6.7.2",
+ "@typescript-eslint/typescript-estree": "6.7.2",
+ "@typescript-eslint/visitor-keys": "6.7.2",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "6.7.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.2.tgz",
+ "integrity": "sha512-bgi6plgyZjEqapr7u2mhxGR6E8WCzKNUFWNh6fkpVe9+yzRZeYtDTbsIBzKbcxI+r1qVWt6VIoMSNZ4r2A+6Yw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.7.2",
+ "@typescript-eslint/visitor-keys": "6.7.2"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "6.7.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.2.tgz",
+ "integrity": "sha512-36F4fOYIROYRl0qj95dYKx6kybddLtsbmPIYNK0OBeXv2j9L5nZ17j9jmfy+bIDHKQgn2EZX+cofsqi8NPATBQ==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "6.7.2",
+ "@typescript-eslint/utils": "6.7.2",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "6.7.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.2.tgz",
+ "integrity": "sha512-flJYwMYgnUNDAN9/GAI3l8+wTmvTYdv64fcH8aoJK76Y+1FCZ08RtI5zDerM/FYT5DMkAc+19E4aLmd5KqdFyg==",
+ "dev": true,
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "6.7.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.2.tgz",
+ "integrity": "sha512-kiJKVMLkoSciGyFU0TOY0fRxnp9qq1AzVOHNeN1+B9erKFCJ4Z8WdjAkKQPP+b1pWStGFqezMLltxO+308dJTQ==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.7.2",
+ "@typescript-eslint/visitor-keys": "6.7.2",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "6.7.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.2.tgz",
+ "integrity": "sha512-ZCcBJug/TS6fXRTsoTkgnsvyWSiXwMNiPzBUani7hDidBdj1779qwM1FIAmpH4lvlOZNF3EScsxxuGifjpLSWQ==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@types/json-schema": "^7.0.12",
+ "@types/semver": "^7.5.0",
+ "@typescript-eslint/scope-manager": "6.7.2",
+ "@typescript-eslint/types": "6.7.2",
+ "@typescript-eslint/typescript-estree": "6.7.2",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "6.7.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.2.tgz",
+ "integrity": "sha512-uVw9VIMFBUTz8rIeaUT3fFe8xIUx8r4ywAdlQv1ifH+6acn/XF8Y6rwJ7XNmkNMDrTW+7+vxFFPIF40nJCVsMQ==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.7.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.10.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
+ "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-escapes": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.21.3"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ansi-escapes/node_modules/type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "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/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-jest": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz",
+ "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==",
+ "dev": true,
+ "dependencies": {
+ "@jest/transform": "^29.7.0",
+ "@types/babel__core": "^7.1.14",
+ "babel-plugin-istanbul": "^6.1.1",
+ "babel-preset-jest": "^29.6.3",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.8.0"
+ }
+ },
+ "node_modules/babel-plugin-istanbul": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
+ "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@istanbuljs/load-nyc-config": "^1.0.0",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-instrument": "^5.0.4",
+ "test-exclude": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
+ "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.12.3",
+ "@babel/parser": "^7.14.7",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-coverage": "^3.2.0",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-plugin-jest-hoist": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz",
+ "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/template": "^7.3.3",
+ "@babel/types": "^7.3.3",
+ "@types/babel__core": "^7.1.14",
+ "@types/babel__traverse": "^7.0.6"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/babel-preset-current-node-syntax": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
+ "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/plugin-syntax-bigint": "^7.8.3",
+ "@babel/plugin-syntax-class-properties": "^7.8.3",
+ "@babel/plugin-syntax-import-meta": "^7.8.3",
+ "@babel/plugin-syntax-json-strings": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.8.3",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-syntax-top-level-await": "^7.8.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/babel-preset-jest": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz",
+ "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==",
+ "dev": true,
+ "dependencies": {
+ "babel-plugin-jest-hoist": "^29.6.3",
+ "babel-preset-current-node-syntax": "^1.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/before-after-hook": {
+ "version": "2.2.2",
+ "license": "Apache-2.0"
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.21.10",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz",
+ "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001517",
+ "electron-to-chromium": "^1.4.477",
+ "node-releases": "^2.0.13",
+ "update-browserslist-db": "^1.0.11"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/bs-logger": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
+ "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
+ "dev": true,
+ "dependencies": {
+ "fast-json-stable-stringify": "2.x"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/bser": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
+ "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
+ "dev": true,
+ "dependencies": {
+ "node-int64": "^0.4.0"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001538",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001538.tgz",
+ "integrity": "sha512-HWJnhnID+0YMtGlzcp3T9drmBJUVDchPJ08tpUGFLs9CYlwWPH2uLgpHn8fND5pCgXVtnGS3H4QR9XLMHVNkHw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ]
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/char-regex": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
+ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ci-info": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
+ "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cjs-module-lexer": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
+ "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==",
+ "dev": true
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+ "dev": true,
+ "engines": {
+ "iojs": ">= 1.0.0",
+ "node": ">= 0.12.0"
+ }
+ },
+ "node_modules/collect-v8-coverage": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
+ "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==",
+ "dev": true
+ },
+ "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/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/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true
+ },
+ "node_modules/create-jest": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz",
+ "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^29.6.3",
+ "chalk": "^4.0.0",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.9",
+ "jest-config": "^29.7.0",
+ "jest-util": "^29.7.0",
+ "prompts": "^2.0.1"
+ },
+ "bin": {
+ "create-jest": "bin/create-jest.js"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/dedent": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz",
+ "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==",
+ "dev": true,
+ "peerDependencies": {
+ "babel-plugin-macros": "^3.1.0"
+ },
+ "peerDependenciesMeta": {
+ "babel-plugin-macros": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/deepmerge": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/deprecation": {
+ "version": "2.3.1",
+ "license": "ISC"
+ },
+ "node_modules/detect-newline": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
+ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/diff-sequences": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
+ "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
+ "dev": true,
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.523",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.523.tgz",
+ "integrity": "sha512-9AreocSUWnzNtvLcbpng6N+GkXnCcBR80IQkxRC9Dfdyg4gaWNUPBujAHUpKkiUkoSoR9UlhA4zD/IgBklmhzg==",
+ "dev": true
+ },
+ "node_modules/emittery": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
+ "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/emittery?sponsor=1"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.49.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz",
+ "integrity": "sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.2",
+ "@eslint/js": "8.49.0",
+ "@humanwhocodes/config-array": "^0.11.11",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
+ "esquery": "^1.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-config-prettier": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz",
+ "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==",
+ "dev": true,
+ "bin": {
+ "eslint-config-prettier": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/expect": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz",
+ "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/expect-utils": "^29.7.0",
+ "jest-get-type": "^29.6.3",
+ "jest-matcher-utils": "^29.7.0",
+ "jest-message-util": "^29.7.0",
+ "jest-util": "^29.7.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
+ "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/fastq": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
+ "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+ "dev": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fb-watchman": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
+ "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
+ "dev": true,
+ "dependencies": {
+ "bser": "2.1.1"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz",
+ "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.2.7",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.2.9",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
+ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
+ "dev": true
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-package-type": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
+ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/globals": {
+ "version": "13.21.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz",
+ "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true
+ },
+ "node_modules/has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/html-escaper": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
+ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
+ "dev": true
+ },
+ "node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/husky": {
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz",
+ "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==",
+ "dev": true,
+ "bin": {
+ "husky": "lib/bin.js"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/typicode"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.2.4",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
+ "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/import-local": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
+ "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
+ "dev": true,
+ "dependencies": {
+ "pkg-dir": "^4.2.0",
+ "resolve-cwd": "^3.0.0"
+ },
+ "bin": {
+ "import-local-fixture": "fixtures/cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true
+ },
+ "node_modules/is-core-module": {
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
+ "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
+ "dev": true,
+ "dependencies": {
+ "has": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-generator-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
+ "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/istanbul-lib-coverage": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
+ "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-instrument": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz",
+ "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.12.3",
+ "@babel/parser": "^7.14.7",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-coverage": "^3.2.0",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-instrument/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-instrument/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-instrument/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/istanbul-lib-report": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
+ "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
+ "dev": true,
+ "dependencies": {
+ "istanbul-lib-coverage": "^3.0.0",
+ "make-dir": "^4.0.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-source-maps": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
+ "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "istanbul-lib-coverage": "^3.0.0",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-reports": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz",
+ "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==",
+ "dev": true,
+ "dependencies": {
+ "html-escaper": "^2.0.0",
+ "istanbul-lib-report": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz",
+ "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/core": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "import-local": "^3.0.2",
+ "jest-cli": "^29.7.0"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-changed-files": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz",
+ "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==",
+ "dev": true,
+ "dependencies": {
+ "execa": "^5.0.0",
+ "jest-util": "^29.7.0",
+ "p-limit": "^3.1.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-circus": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz",
+ "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^29.7.0",
+ "@jest/expect": "^29.7.0",
+ "@jest/test-result": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "co": "^4.6.0",
+ "dedent": "^1.0.0",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^29.7.0",
+ "jest-matcher-utils": "^29.7.0",
+ "jest-message-util": "^29.7.0",
+ "jest-runtime": "^29.7.0",
+ "jest-snapshot": "^29.7.0",
+ "jest-util": "^29.7.0",
+ "p-limit": "^3.1.0",
+ "pretty-format": "^29.7.0",
+ "pure-rand": "^6.0.0",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-cli": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz",
+ "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==",
+ "dev": true,
+ "dependencies": {
+ "@jest/core": "^29.7.0",
+ "@jest/test-result": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "chalk": "^4.0.0",
+ "create-jest": "^29.7.0",
+ "exit": "^0.1.2",
+ "import-local": "^3.0.2",
+ "jest-config": "^29.7.0",
+ "jest-util": "^29.7.0",
+ "jest-validate": "^29.7.0",
+ "yargs": "^17.3.1"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-config": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz",
+ "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.11.6",
+ "@jest/test-sequencer": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "babel-jest": "^29.7.0",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "deepmerge": "^4.2.2",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.2.9",
+ "jest-circus": "^29.7.0",
+ "jest-environment-node": "^29.7.0",
+ "jest-get-type": "^29.6.3",
+ "jest-regex-util": "^29.6.3",
+ "jest-resolve": "^29.7.0",
+ "jest-runner": "^29.7.0",
+ "jest-util": "^29.7.0",
+ "jest-validate": "^29.7.0",
+ "micromatch": "^4.0.4",
+ "parse-json": "^5.2.0",
+ "pretty-format": "^29.7.0",
+ "slash": "^3.0.0",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "@types/node": "*",
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-diff": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz",
+ "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "diff-sequences": "^29.6.3",
+ "jest-get-type": "^29.6.3",
+ "pretty-format": "^29.7.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-docblock": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz",
+ "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==",
+ "dev": true,
+ "dependencies": {
+ "detect-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-each": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz",
+ "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^29.6.3",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^29.6.3",
+ "jest-util": "^29.7.0",
+ "pretty-format": "^29.7.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-environment-node": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz",
+ "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^29.7.0",
+ "@jest/fake-timers": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "jest-mock": "^29.7.0",
+ "jest-util": "^29.7.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-get-type": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz",
+ "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==",
+ "dev": true,
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-haste-map": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz",
+ "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^29.6.3",
+ "@types/graceful-fs": "^4.1.3",
+ "@types/node": "*",
+ "anymatch": "^3.0.3",
+ "fb-watchman": "^2.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-regex-util": "^29.6.3",
+ "jest-util": "^29.7.0",
+ "jest-worker": "^29.7.0",
+ "micromatch": "^4.0.4",
+ "walker": "^1.0.8"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "^2.3.2"
+ }
+ },
+ "node_modules/jest-leak-detector": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz",
+ "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==",
+ "dev": true,
+ "dependencies": {
+ "jest-get-type": "^29.6.3",
+ "pretty-format": "^29.7.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-matcher-utils": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz",
+ "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "jest-diff": "^29.7.0",
+ "jest-get-type": "^29.6.3",
+ "pretty-format": "^29.7.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-message-util": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz",
+ "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^29.6.3",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^29.7.0",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-mock": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz",
+ "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "jest-util": "^29.7.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-pnp-resolver": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
+ "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ },
+ "peerDependencies": {
+ "jest-resolve": "*"
+ },
+ "peerDependenciesMeta": {
+ "jest-resolve": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-regex-util": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz",
+ "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==",
+ "dev": true,
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-resolve": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz",
+ "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^29.7.0",
+ "jest-pnp-resolver": "^1.2.2",
+ "jest-util": "^29.7.0",
+ "jest-validate": "^29.7.0",
+ "resolve": "^1.20.0",
+ "resolve.exports": "^2.0.0",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-resolve-dependencies": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz",
+ "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==",
+ "dev": true,
+ "dependencies": {
+ "jest-regex-util": "^29.6.3",
+ "jest-snapshot": "^29.7.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-runner": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz",
+ "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/console": "^29.7.0",
+ "@jest/environment": "^29.7.0",
+ "@jest/test-result": "^29.7.0",
+ "@jest/transform": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "emittery": "^0.13.1",
+ "graceful-fs": "^4.2.9",
+ "jest-docblock": "^29.7.0",
+ "jest-environment-node": "^29.7.0",
+ "jest-haste-map": "^29.7.0",
+ "jest-leak-detector": "^29.7.0",
+ "jest-message-util": "^29.7.0",
+ "jest-resolve": "^29.7.0",
+ "jest-runtime": "^29.7.0",
+ "jest-util": "^29.7.0",
+ "jest-watcher": "^29.7.0",
+ "jest-worker": "^29.7.0",
+ "p-limit": "^3.1.0",
+ "source-map-support": "0.5.13"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-runtime": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz",
+ "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^29.7.0",
+ "@jest/fake-timers": "^29.7.0",
+ "@jest/globals": "^29.7.0",
+ "@jest/source-map": "^29.6.3",
+ "@jest/test-result": "^29.7.0",
+ "@jest/transform": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "cjs-module-lexer": "^1.0.0",
+ "collect-v8-coverage": "^1.0.0",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^29.7.0",
+ "jest-message-util": "^29.7.0",
+ "jest-mock": "^29.7.0",
+ "jest-regex-util": "^29.6.3",
+ "jest-resolve": "^29.7.0",
+ "jest-snapshot": "^29.7.0",
+ "jest-util": "^29.7.0",
+ "slash": "^3.0.0",
+ "strip-bom": "^4.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-snapshot": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz",
+ "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.11.6",
+ "@babel/generator": "^7.7.2",
+ "@babel/plugin-syntax-jsx": "^7.7.2",
+ "@babel/plugin-syntax-typescript": "^7.7.2",
+ "@babel/types": "^7.3.3",
+ "@jest/expect-utils": "^29.7.0",
+ "@jest/transform": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "babel-preset-current-node-syntax": "^1.0.0",
+ "chalk": "^4.0.0",
+ "expect": "^29.7.0",
+ "graceful-fs": "^4.2.9",
+ "jest-diff": "^29.7.0",
+ "jest-get-type": "^29.6.3",
+ "jest-matcher-utils": "^29.7.0",
+ "jest-message-util": "^29.7.0",
+ "jest-util": "^29.7.0",
+ "natural-compare": "^1.4.0",
+ "pretty-format": "^29.7.0",
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/jest-util": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
+ "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-validate": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz",
+ "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^29.6.3",
+ "camelcase": "^6.2.0",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^29.6.3",
+ "leven": "^3.1.0",
+ "pretty-format": "^29.7.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-validate/node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/jest-watcher": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz",
+ "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==",
+ "dev": true,
+ "dependencies": {
+ "@jest/test-result": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "emittery": "^0.13.1",
+ "jest-util": "^29.7.0",
+ "string-length": "^4.0.1"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-worker": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
+ "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "jest-util": "^29.7.0",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-worker/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "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",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true,
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.3",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz",
+ "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash.memoize": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+ "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
+ "dev": true
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
+ "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/make-dir/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/make-dir/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/make-error": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
+ "dev": true
+ },
+ "node_modules/makeerror": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
+ "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
+ "dev": true,
+ "dependencies": {
+ "tmpl": "1.0.5"
+ }
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "node_modules/node-fetch": {
+ "version": "2.6.7",
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/node-fetch/node_modules/tr46": {
+ "version": "0.0.3",
+ "license": "MIT"
+ },
+ "node_modules/node-fetch/node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/node-fetch/node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/node-int64": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
+ "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
+ "dev": true
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
+ "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
+ "dev": true
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "license": "ISC",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "dev": true,
+ "dependencies": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "dev": true
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pirates": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prettier": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz",
+ "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==",
+ "dev": true,
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/pretty-format": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
+ "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/prompts": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+ "dev": true,
+ "dependencies": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
+ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pure-rand": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.3.tgz",
+ "integrity": "sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/dubzzz"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fast-check"
+ }
+ ]
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "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/react-is": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
+ "dev": true
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.6",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz",
+ "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-cwd": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+ "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
+ "dev": true,
+ "dependencies": {
+ "resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-cwd/node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/resolve.exports": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz",
+ "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
+ "node_modules/simple-git": {
+ "version": "3.32.3",
+ "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.32.3.tgz",
+ "integrity": "sha512-56a5oxFdWlsGygOXHWrG+xjj5w9ZIt2uQbzqiIGdR/6i5iococ7WQ/bNPzWxCJdEUGUCmyMH0t9zMpRJTaKxmw==",
+ "license": "MIT",
+ "dependencies": {
+ "@kwsites/file-exists": "^1.1.1",
+ "@kwsites/promise-deferred": "^1.1.1",
+ "debug": "^4.4.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/steveukx/git-js?sponsor=1"
+ }
+ },
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+ "dev": true
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.13",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
+ "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
+ "dev": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "dev": true
+ },
+ "node_modules/stack-utils": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
+ "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/stack-utils/node_modules/escape-string-regexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-length": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
+ "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
+ "dev": true,
+ "dependencies": {
+ "char-regex": "^1.0.2",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
+ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/test-exclude": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
+ "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+ "dev": true,
+ "dependencies": {
+ "@istanbuljs/schema": "^0.1.2",
+ "glob": "^7.1.4",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
+ },
+ "node_modules/tmpl": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
+ "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
+ "dev": true
+ },
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/ts-api-utils": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz",
+ "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==",
+ "dev": true,
+ "engines": {
+ "node": ">=16.13.0"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.2.0"
+ }
+ },
+ "node_modules/ts-jest": {
+ "version": "29.1.1",
+ "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz",
+ "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==",
+ "dev": true,
+ "dependencies": {
+ "bs-logger": "0.x",
+ "fast-json-stable-stringify": "2.x",
+ "jest-util": "^29.0.0",
+ "json5": "^2.2.3",
+ "lodash.memoize": "4.x",
+ "make-error": "1.x",
+ "semver": "^7.5.3",
+ "yargs-parser": "^21.0.1"
+ },
+ "bin": {
+ "ts-jest": "cli.js"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": ">=7.0.0-beta.0 <8",
+ "@jest/types": "^29.0.0",
+ "babel-jest": "^29.0.0",
+ "jest": "^29.0.0",
+ "typescript": ">=4.3 <6"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ },
+ "@jest/types": {
+ "optional": true
+ },
+ "babel-jest": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ts-jest/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ts-jest/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ts-jest/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/tunnel": {
+ "version": "0.0.6",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
+ }
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-detect": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+ "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
+ "dev": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/undici": {
+ "version": "5.28.4",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz",
+ "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==",
+ "dependencies": {
+ "@fastify/busboy": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.0"
+ }
+ },
+ "node_modules/universal-user-agent": {
+ "version": "6.0.0",
+ "license": "ISC"
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
+ "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/uuid": {
+ "version": "3.4.0",
+ "license": "MIT",
+ "bin": {
+ "uuid": "bin/uuid"
+ }
+ },
+ "node_modules/v8-to-istanbul": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz",
+ "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.12",
+ "@types/istanbul-lib-coverage": "^2.0.1",
+ "convert-source-map": "^1.6.0"
+ },
+ "engines": {
+ "node": ">=10.12.0"
+ }
+ },
+ "node_modules/v8-to-istanbul/node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "dev": true
+ },
+ "node_modules/walker": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
+ "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
+ "dev": true,
+ "dependencies": {
+ "makeerror": "1.0.12"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "license": "ISC"
+ },
+ "node_modules/write-file-atomic": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
+ "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
+ "dev": true,
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.7"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ },
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
}
}
}
diff --git a/action/node_modules/debug/README.md b/action/node_modules/debug/README.md
index e9c3e047c..9ebdfbf14 100644
--- a/action/node_modules/debug/README.md
+++ b/action/node_modules/debug/README.md
@@ -1,5 +1,5 @@
# debug
-[](https://travis-ci.org/debug-js/debug) [](https://coveralls.io/github/debug-js/debug?branch=master) [](https://visionmedia-community-slackin.now.sh/) [](#backers)
+[](#backers)
[](#sponsors)
diff --git a/action/node_modules/debug/package.json b/action/node_modules/debug/package.json
index 3bcdc242f..ee8abb523 100644
--- a/action/node_modules/debug/package.json
+++ b/action/node_modules/debug/package.json
@@ -1,6 +1,6 @@
{
"name": "debug",
- "version": "4.3.4",
+ "version": "4.4.3",
"repository": {
"type": "git",
"url": "git://github.com/debug-js/debug.git"
@@ -16,7 +16,7 @@
"LICENSE",
"README.md"
],
- "author": "Josh Junon ",
+ "author": "Josh Junon (https://github.com/qix-)",
"contributors": [
"TJ Holowaychuk ",
"Nathan Rajlich (http://n8.io)",
@@ -26,24 +26,24 @@
"scripts": {
"lint": "xo",
"test": "npm run test:node && npm run test:browser && npm run lint",
- "test:node": "istanbul cover _mocha -- test.js",
+ "test:node": "mocha test.js test.node.js",
"test:browser": "karma start --single-run",
"test:coverage": "cat ./coverage/lcov.info | coveralls"
},
"dependencies": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
},
"devDependencies": {
"brfs": "^2.0.1",
"browserify": "^16.2.3",
"coveralls": "^3.0.2",
- "istanbul": "^0.4.5",
"karma": "^3.1.4",
"karma-browserify": "^6.0.0",
"karma-chrome-launcher": "^2.2.0",
"karma-mocha": "^1.3.0",
"mocha": "^5.2.0",
"mocha-lcov-reporter": "^1.2.0",
+ "sinon": "^14.0.0",
"xo": "^0.23.0"
},
"peerDependenciesMeta": {
@@ -55,5 +55,10 @@
"browser": "./src/browser.js",
"engines": {
"node": ">=6.0"
+ },
+ "xo": {
+ "rules": {
+ "import/extensions": "off"
+ }
}
}
diff --git a/action/node_modules/debug/src/browser.js b/action/node_modules/debug/src/browser.js
index cd0fc35d1..5993451b8 100644
--- a/action/node_modules/debug/src/browser.js
+++ b/action/node_modules/debug/src/browser.js
@@ -125,14 +125,17 @@ function useColors() {
return false;
}
+ let m;
+
// Is webkit? http://stackoverflow.com/a/16459606/376773
// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
+ // eslint-disable-next-line no-return-assign
return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||
// Is firebug? http://stackoverflow.com/a/398120/376773
(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||
// Is firefox >= v31?
// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
- (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||
+ (typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31) ||
// Double check webkit in userAgent just in case we are in a worker
(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));
}
@@ -216,7 +219,7 @@ function save(namespaces) {
function load() {
let r;
try {
- r = exports.storage.getItem('debug');
+ r = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;
} catch (error) {
// Swallow
// XXX (@Qix-) should we be logging these?
diff --git a/action/node_modules/debug/src/common.js b/action/node_modules/debug/src/common.js
index e3291b20f..141cb578b 100644
--- a/action/node_modules/debug/src/common.js
+++ b/action/node_modules/debug/src/common.js
@@ -166,24 +166,62 @@ function setup(env) {
createDebug.names = [];
createDebug.skips = [];
- let i;
- const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
- const len = split.length;
-
- for (i = 0; i < len; i++) {
- if (!split[i]) {
- // ignore empty strings
- continue;
+ const split = (typeof namespaces === 'string' ? namespaces : '')
+ .trim()
+ .replace(/\s+/g, ',')
+ .split(',')
+ .filter(Boolean);
+
+ for (const ns of split) {
+ if (ns[0] === '-') {
+ createDebug.skips.push(ns.slice(1));
+ } else {
+ createDebug.names.push(ns);
}
+ }
+ }
- namespaces = split[i].replace(/\*/g, '.*?');
-
- if (namespaces[0] === '-') {
- createDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));
+ /**
+ * Checks if the given string matches a namespace template, honoring
+ * asterisks as wildcards.
+ *
+ * @param {String} search
+ * @param {String} template
+ * @return {Boolean}
+ */
+ function matchesTemplate(search, template) {
+ let searchIndex = 0;
+ let templateIndex = 0;
+ let starIndex = -1;
+ let matchIndex = 0;
+
+ while (searchIndex < search.length) {
+ if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {
+ // Match character or proceed with wildcard
+ if (template[templateIndex] === '*') {
+ starIndex = templateIndex;
+ matchIndex = searchIndex;
+ templateIndex++; // Skip the '*'
+ } else {
+ searchIndex++;
+ templateIndex++;
+ }
+ } else if (starIndex !== -1) { // eslint-disable-line no-negated-condition
+ // Backtrack to the last '*' and try to match more characters
+ templateIndex = starIndex + 1;
+ matchIndex++;
+ searchIndex = matchIndex;
} else {
- createDebug.names.push(new RegExp('^' + namespaces + '$'));
+ return false; // No match
}
}
+
+ // Handle trailing '*' in template
+ while (templateIndex < template.length && template[templateIndex] === '*') {
+ templateIndex++;
+ }
+
+ return templateIndex === template.length;
}
/**
@@ -194,8 +232,8 @@ function setup(env) {
*/
function disable() {
const namespaces = [
- ...createDebug.names.map(toNamespace),
- ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)
+ ...createDebug.names,
+ ...createDebug.skips.map(namespace => '-' + namespace)
].join(',');
createDebug.enable('');
return namespaces;
@@ -209,21 +247,14 @@ function setup(env) {
* @api public
*/
function enabled(name) {
- if (name[name.length - 1] === '*') {
- return true;
- }
-
- let i;
- let len;
-
- for (i = 0, len = createDebug.skips.length; i < len; i++) {
- if (createDebug.skips[i].test(name)) {
+ for (const skip of createDebug.skips) {
+ if (matchesTemplate(name, skip)) {
return false;
}
}
- for (i = 0, len = createDebug.names.length; i < len; i++) {
- if (createDebug.names[i].test(name)) {
+ for (const ns of createDebug.names) {
+ if (matchesTemplate(name, ns)) {
return true;
}
}
@@ -231,19 +262,6 @@ function setup(env) {
return false;
}
- /**
- * Convert regexp to namespace
- *
- * @param {RegExp} regxep
- * @return {String} namespace
- * @api private
- */
- function toNamespace(regexp) {
- return regexp.toString()
- .substring(2, regexp.toString().length - 2)
- .replace(/\.\*\?$/, '*');
- }
-
/**
* Coerce `val`.
*
diff --git a/action/node_modules/debug/src/node.js b/action/node_modules/debug/src/node.js
index 79bc085cb..715560a4c 100644
--- a/action/node_modules/debug/src/node.js
+++ b/action/node_modules/debug/src/node.js
@@ -187,11 +187,11 @@ function getDate() {
}
/**
- * Invokes `util.format()` with the specified arguments and writes to stderr.
+ * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.
*/
function log(...args) {
- return process.stderr.write(util.format(...args) + '\n');
+ return process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\n');
}
/**
diff --git a/action/node_modules/ms/index.js b/action/node_modules/ms/index.js
index c4498bcc2..ea734fb73 100644
--- a/action/node_modules/ms/index.js
+++ b/action/node_modules/ms/index.js
@@ -23,7 +23,7 @@ var y = d * 365.25;
* @api public
*/
-module.exports = function(val, options) {
+module.exports = function (val, options) {
options = options || {};
var type = typeof val;
if (type === 'string' && val.length > 0) {
diff --git a/action/node_modules/ms/license.md b/action/node_modules/ms/license.md
index 69b61253a..fa5d39b62 100644
--- a/action/node_modules/ms/license.md
+++ b/action/node_modules/ms/license.md
@@ -1,6 +1,6 @@
The MIT License (MIT)
-Copyright (c) 2016 Zeit, Inc.
+Copyright (c) 2020 Vercel, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/action/node_modules/ms/package.json b/action/node_modules/ms/package.json
index eea666e1f..49971890d 100644
--- a/action/node_modules/ms/package.json
+++ b/action/node_modules/ms/package.json
@@ -1,8 +1,8 @@
{
"name": "ms",
- "version": "2.1.2",
+ "version": "2.1.3",
"description": "Tiny millisecond conversion utility",
- "repository": "zeit/ms",
+ "repository": "vercel/ms",
"main": "./index",
"files": [
"index.js"
@@ -28,10 +28,11 @@
},
"license": "MIT",
"devDependencies": {
- "eslint": "4.12.1",
+ "eslint": "4.18.2",
"expect.js": "0.3.1",
"husky": "0.14.3",
"lint-staged": "5.0.0",
- "mocha": "4.0.1"
+ "mocha": "4.0.1",
+ "prettier": "2.0.5"
}
}
diff --git a/action/node_modules/ms/readme.md b/action/node_modules/ms/readme.md
index 9a1996b17..0fc1abb3b 100644
--- a/action/node_modules/ms/readme.md
+++ b/action/node_modules/ms/readme.md
@@ -1,7 +1,6 @@
# ms
-[](https://travis-ci.org/zeit/ms)
-[](https://spectrum.chat/zeit)
+
Use this package to easily convert various time formats to milliseconds.
diff --git a/action/node_modules/simple-git/dist/cjs/index.js b/action/node_modules/simple-git/dist/cjs/index.js
index ee5167565..4c3db39a8 100644
--- a/action/node_modules/simple-git/dist/cjs/index.js
+++ b/action/node_modules/simple-git/dist/cjs/index.js
@@ -1,27 +1,10 @@
+"use strict";
var __create = Object.create;
var __defProp = Object.defineProperty;
-var __defProps = Object.defineProperties;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
- for (var prop in b || (b = {}))
- if (__hasOwnProp.call(b, prop))
- __defNormalProp(a, prop, b[prop]);
- if (__getOwnPropSymbols)
- for (var prop of __getOwnPropSymbols(b)) {
- if (__propIsEnum.call(b, prop))
- __defNormalProp(a, prop, b[prop]);
- }
- return a;
-};
-var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
var __esm = (fn, res) => function __init() {
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
};
@@ -32,47 +15,29 @@ var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
-var __reExport = (target, module2, copyDefault, desc) => {
- if (module2 && typeof module2 === "object" || typeof module2 === "function") {
- for (let key of __getOwnPropNames(module2))
- if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
- __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
- return target;
-};
-var __toESM = (module2, isNodeMode) => {
- return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-var __toCommonJS = /* @__PURE__ */ ((cache2) => {
- return (module2, temp) => {
- return cache2 && cache2.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache2 && cache2.set(module2, temp), temp);
- };
-})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
-var __async = (__this, __arguments, generator) => {
- return new Promise((resolve, reject) => {
- var fulfilled = (value) => {
- try {
- step(generator.next(value));
- } catch (e) {
- reject(e);
- }
- };
- var rejected = (value) => {
- try {
- step(generator.throw(value));
- } catch (e) {
- reject(e);
- }
- };
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
- step((generator = generator.apply(__this, __arguments)).next());
- });
+ return to;
};
+var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
+ // If the importer is in node compatibility mode or this is not an ESM
+ // file that has been converted to a CommonJS file using a Babel-
+ // compatible transform (i.e. "__esModule" has not been set), then set
+ // "default" to the CommonJS "module.exports" for node compatibility.
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
+ mod
+));
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/lib/errors/git-error.ts
var GitError;
var init_git_error = __esm({
"src/lib/errors/git-error.ts"() {
+ "use strict";
GitError = class extends Error {
constructor(task, message) {
super(message);
@@ -87,6 +52,7 @@ var init_git_error = __esm({
var GitResponseError;
var init_git_response_error = __esm({
"src/lib/errors/git-response-error.ts"() {
+ "use strict";
init_git_error();
GitResponseError = class extends GitError {
constructor(git, message) {
@@ -112,6 +78,7 @@ function toPaths(pathSpec) {
var cache;
var init_pathspec = __esm({
"src/lib/args/pathspec.ts"() {
+ "use strict";
cache = /* @__PURE__ */ new WeakMap();
}
});
@@ -120,6 +87,7 @@ var init_pathspec = __esm({
var GitConstructError;
var init_git_construct_error = __esm({
"src/lib/errors/git-construct-error.ts"() {
+ "use strict";
init_git_error();
GitConstructError = class extends GitError {
constructor(config, message) {
@@ -134,6 +102,7 @@ var init_git_construct_error = __esm({
var GitPluginError;
var init_git_plugin_error = __esm({
"src/lib/errors/git-plugin-error.ts"() {
+ "use strict";
init_git_error();
GitPluginError = class extends GitError {
constructor(task, plugin, message) {
@@ -150,6 +119,7 @@ var init_git_plugin_error = __esm({
var TaskConfigurationError;
var init_task_configuration_error = __esm({
"src/lib/errors/task-configuration-error.ts"() {
+ "use strict";
init_git_error();
TaskConfigurationError = class extends GitError {
constructor(message) {
@@ -161,7 +131,10 @@ var init_task_configuration_error = __esm({
// src/lib/utils/util.ts
function asFunction(source) {
- return typeof source === "function" ? source : NOOP;
+ if (typeof source !== "function") {
+ return NOOP;
+ }
+ return source;
}
function isUserFunction(source) {
return typeof source === "function" && source !== NOOP;
@@ -182,7 +155,7 @@ function last(input, offset = 0) {
}
}
function isArrayLike(input) {
- return !!(input && typeof input.length === "number");
+ return filterHasLength(input);
}
function toLinesWithContent(input = "", trimmed2 = true, separator = "\n") {
return input.split(separator).reduce((output, line) => {
@@ -229,15 +202,22 @@ function remove(target, item) {
function asArray(source) {
return Array.isArray(source) ? source : [source];
}
+function asCamelCase(str) {
+ return str.replace(/[\s-]+(.)/g, (_all, chr) => {
+ return chr.toUpperCase();
+ });
+}
function asStringArray(source) {
- return asArray(source).map(String);
+ return asArray(source).map((item) => {
+ return item instanceof String ? item : String(item);
+ });
}
function asNumber(source, onNaN = 0) {
if (source == null) {
return onNaN;
}
const num = parseInt(source, 10);
- return isNaN(num) ? onNaN : num;
+ return Number.isNaN(num) ? onNaN : num;
}
function prefixedArray(input, prefix) {
const output = [];
@@ -247,18 +227,33 @@ function prefixedArray(input, prefix) {
return output;
}
function bufferToString(input) {
- return (Array.isArray(input) ? Buffer.concat(input) : input).toString("utf-8");
+ return (Array.isArray(input) ? import_node_buffer.Buffer.concat(input) : input).toString("utf-8");
}
function pick(source, properties) {
- return Object.assign({}, ...properties.map((property) => property in source ? { [property]: source[property] } : {}));
+ const out = {};
+ properties.forEach((key) => {
+ if (source[key] !== void 0) {
+ out[key] = source[key];
+ }
+ });
+ return out;
}
function delay(duration = 0) {
return new Promise((done) => setTimeout(done, duration));
}
-var import_file_exists, NULL, NOOP, objectToString;
+function orVoid(input) {
+ if (input === false) {
+ return void 0;
+ }
+ return input;
+}
+var import_node_buffer, import_file_exists, NULL, NOOP, objectToString;
var init_util = __esm({
"src/lib/utils/util.ts"() {
+ "use strict";
+ import_node_buffer = require("node:buffer");
import_file_exists = require("@kwsites/file-exists");
+ init_argument_filters();
NULL = "\0";
NOOP = () => {
};
@@ -283,20 +278,21 @@ function filterPlainObject(input) {
function filterFunction(input) {
return typeof input === "function";
}
-var filterArray, filterString, filterStringArray, filterStringOrStringArray, filterHasLength;
+var filterArray, filterNumber, filterString, filterStringOrStringArray, filterHasLength;
var init_argument_filters = __esm({
"src/lib/utils/argument-filters.ts"() {
- init_util();
+ "use strict";
init_pathspec();
+ init_util();
filterArray = (input) => {
return Array.isArray(input);
};
+ filterNumber = (input) => {
+ return typeof input === "number";
+ };
filterString = (input) => {
return typeof input === "string";
};
- filterStringArray = (input) => {
- return Array.isArray(input) && input.every(filterString);
- };
filterStringOrStringArray = (input) => {
return filterString(input) || Array.isArray(input) && input.every(filterString);
};
@@ -304,7 +300,7 @@ var init_argument_filters = __esm({
if (input == null || "number|boolean|function".includes(typeof input)) {
return false;
}
- return Array.isArray(input) || typeof input === "string" || typeof input.length === "number";
+ return typeof input.length === "number";
};
}
});
@@ -313,6 +309,7 @@ var init_argument_filters = __esm({
var ExitCodes;
var init_exit_codes = __esm({
"src/lib/utils/exit-codes.ts"() {
+ "use strict";
ExitCodes = /* @__PURE__ */ ((ExitCodes2) => {
ExitCodes2[ExitCodes2["SUCCESS"] = 0] = "SUCCESS";
ExitCodes2[ExitCodes2["ERROR"] = 1] = "ERROR";
@@ -327,25 +324,31 @@ var init_exit_codes = __esm({
var GitOutputStreams;
var init_git_output_streams = __esm({
"src/lib/utils/git-output-streams.ts"() {
- GitOutputStreams = class {
+ "use strict";
+ GitOutputStreams = class _GitOutputStreams {
constructor(stdOut, stdErr) {
this.stdOut = stdOut;
this.stdErr = stdErr;
}
asStrings() {
- return new GitOutputStreams(this.stdOut.toString("utf8"), this.stdErr.toString("utf8"));
+ return new _GitOutputStreams(this.stdOut.toString("utf8"), this.stdErr.toString("utf8"));
}
};
}
});
// src/lib/utils/line-parser.ts
+function useMatchesDefault() {
+ throw new Error(`LineParser:useMatches not implemented`);
+}
var LineParser, RemoteLineParser;
var init_line_parser = __esm({
"src/lib/utils/line-parser.ts"() {
+ "use strict";
LineParser = class {
constructor(regExp, useMatches) {
this.matches = [];
+ this.useMatches = useMatchesDefault;
this.parse = (line, target) => {
this.resetMatches();
if (!this._regExp.every((reg, index) => this.addMatch(reg, index, line(index)))) {
@@ -358,9 +361,6 @@ var init_line_parser = __esm({
this.useMatches = useMatches;
}
}
- useMatches(target, match) {
- throw new Error(`LineParser:useMatches not implemented`);
- }
resetMatches() {
this.matches.length = 0;
}
@@ -394,7 +394,10 @@ var init_line_parser = __esm({
// src/lib/utils/simple-git-options.ts
function createInstanceConfig(...options) {
const baseDir = process.cwd();
- const config = Object.assign(__spreadValues({ baseDir }, defaultOptions), ...options.filter((o) => typeof o === "object" && o));
+ const config = Object.assign(
+ { baseDir, ...defaultOptions },
+ ...options.filter((o) => typeof o === "object" && o)
+ );
config.baseDir = config.baseDir || baseDir;
config.trimmed = config.trimmed === true;
return config;
@@ -402,6 +405,7 @@ function createInstanceConfig(...options) {
var defaultOptions;
var init_simple_git_options = __esm({
"src/lib/utils/simple-git-options.ts"() {
+ "use strict";
defaultOptions = {
binary: "git",
maxConcurrentProcesses: 5,
@@ -422,6 +426,12 @@ function appendTaskOptions(options, commands = []) {
commands2.push(value);
} else if (filterPrimitives(value, ["boolean"])) {
commands2.push(key + "=" + value);
+ } else if (Array.isArray(value)) {
+ for (const v of value) {
+ if (!filterPrimitives(v, ["string", "number"])) {
+ commands2.push(key + "=" + v);
+ }
+ }
} else {
commands2.push(key);
}
@@ -443,7 +453,7 @@ function getTrailingOptions(args, initialPrimitive = 0, objectOnly = false) {
}
function trailingArrayArgument(args) {
const hasTrailingCallback = typeof last(args) === "function";
- return filterType(last(args, hasTrailingCallback ? 1 : 0), filterArray, []);
+ return asStringArray(filterType(last(args, hasTrailingCallback ? 1 : 0), filterArray, []));
}
function trailingOptionsArgument(args) {
const hasTrailingCallback = filterFunction(last(args));
@@ -455,6 +465,7 @@ function trailingFunctionArgument(args, includeNoop = true) {
}
var init_task_options = __esm({
"src/lib/utils/task-options.ts"() {
+ "use strict";
init_argument_filters();
init_util();
init_pathspec();
@@ -462,8 +473,8 @@ var init_task_options = __esm({
});
// src/lib/utils/task-parser.ts
-function callTaskParser(parser3, streams) {
- return parser3(streams.stdOut, streams.stdErr);
+function callTaskParser(parser4, streams) {
+ return parser4(streams.stdOut, streams.stdErr);
}
function parseStringResponse(result, parsers12, texts, trim = true) {
asArray(texts).forEach((text) => {
@@ -481,6 +492,7 @@ function parseStringResponse(result, parsers12, texts, trim = true) {
}
var init_task_parser = __esm({
"src/lib/utils/task-parser.ts"() {
+ "use strict";
init_util();
}
});
@@ -497,6 +509,7 @@ __export(utils_exports, {
append: () => append,
appendTaskOptions: () => appendTaskOptions,
asArray: () => asArray,
+ asCamelCase: () => asCamelCase,
asFunction: () => asFunction,
asNumber: () => asNumber,
asStringArray: () => asStringArray,
@@ -507,10 +520,10 @@ __export(utils_exports, {
filterArray: () => filterArray,
filterFunction: () => filterFunction,
filterHasLength: () => filterHasLength,
+ filterNumber: () => filterNumber,
filterPlainObject: () => filterPlainObject,
filterPrimitives: () => filterPrimitives,
filterString: () => filterString,
- filterStringArray: () => filterStringArray,
filterStringOrStringArray: () => filterStringOrStringArray,
filterType: () => filterType,
first: () => first,
@@ -521,6 +534,7 @@ __export(utils_exports, {
isUserFunction: () => isUserFunction,
last: () => last,
objectToString: () => objectToString,
+ orVoid: () => orVoid,
parseStringResponse: () => parseStringResponse,
pick: () => pick,
prefixedArray: () => prefixedArray,
@@ -532,6 +546,7 @@ __export(utils_exports, {
});
var init_utils = __esm({
"src/lib/utils/index.ts"() {
+ "use strict";
init_argument_filters();
init_exit_codes();
init_git_output_streams();
@@ -592,6 +607,7 @@ function isNotRepoMessage(error) {
var CheckRepoActions, onError, parser;
var init_check_is_repo = __esm({
"src/lib/tasks/check-is-repo.ts"() {
+ "use strict";
init_utils();
CheckRepoActions = /* @__PURE__ */ ((CheckRepoActions2) => {
CheckRepoActions2["BARE"] = "bare";
@@ -625,6 +641,7 @@ function cleanSummaryParser(dryRun, text) {
var CleanResponse, removalRegexp, dryRunRemovalRegexp, isFolderRegexp;
var init_CleanSummary = __esm({
"src/lib/responses/CleanSummary.ts"() {
+ "use strict";
init_utils();
CleanResponse = class {
constructor(dryRun) {
@@ -651,11 +668,11 @@ __export(task_exports, {
straightThroughBufferTask: () => straightThroughBufferTask,
straightThroughStringTask: () => straightThroughStringTask
});
-function adhocExecTask(parser3) {
+function adhocExecTask(parser4) {
return {
commands: EMPTY_COMMANDS,
format: "empty",
- parser: parser3
+ parser: parser4
};
}
function configurationErrorTask(error) {
@@ -694,6 +711,7 @@ function isEmptyTask(task) {
var EMPTY_COMMANDS;
var init_task = __esm({
"src/lib/tasks/task.ts"() {
+ "use strict";
init_task_configuration_error();
EMPTY_COMMANDS = [];
}
@@ -770,6 +788,7 @@ function isInteractiveMode(option) {
var CONFIG_ERROR_INTERACTIVE_MODE, CONFIG_ERROR_MODE_REQUIRED, CONFIG_ERROR_UNKNOWN_OPTION, CleanOptions, CleanOptionValues;
var init_clean = __esm({
"src/lib/tasks/clean.ts"() {
+ "use strict";
init_CleanSummary();
init_utils();
init_task();
@@ -843,6 +862,7 @@ function* configParser(text, requestedKey = null) {
var ConfigList;
var init_ConfigList = __esm({
"src/lib/responses/ConfigList.ts"() {
+ "use strict";
init_utils();
ConfigList = class {
constructor() {
@@ -867,7 +887,7 @@ var init_ConfigList = __esm({
}
addValue(file, key, value) {
const values = this.addFile(file);
- if (!values.hasOwnProperty(key)) {
+ if (!Object.hasOwn(values, key)) {
values[key] = value;
} else if (Array.isArray(values[key])) {
values[key].push(value);
@@ -882,7 +902,7 @@ var init_ConfigList = __esm({
// src/lib/tasks/config.ts
function asConfigScope(scope, fallback) {
- if (typeof scope === "string" && GitConfigScope.hasOwnProperty(scope)) {
+ if (typeof scope === "string" && Object.hasOwn(GitConfigScope, scope)) {
return scope;
}
return fallback;
@@ -930,19 +950,34 @@ function listConfigTask(scope) {
function config_default() {
return {
addConfig(key, value, ...rest) {
- return this._runTask(addConfigTask(key, value, rest[0] === true, asConfigScope(rest[1], "local" /* local */)), trailingFunctionArgument(arguments));
+ return this._runTask(
+ addConfigTask(
+ key,
+ value,
+ rest[0] === true,
+ asConfigScope(rest[1], "local" /* local */)
+ ),
+ trailingFunctionArgument(arguments)
+ );
},
getConfig(key, scope) {
- return this._runTask(getConfigTask(key, asConfigScope(scope, void 0)), trailingFunctionArgument(arguments));
+ return this._runTask(
+ getConfigTask(key, asConfigScope(scope, void 0)),
+ trailingFunctionArgument(arguments)
+ );
},
listConfig(...rest) {
- return this._runTask(listConfigTask(asConfigScope(rest[0], void 0)), trailingFunctionArgument(arguments));
+ return this._runTask(
+ listConfigTask(asConfigScope(rest[0], void 0)),
+ trailingFunctionArgument(arguments)
+ );
}
};
}
var GitConfigScope;
var init_config = __esm({
"src/lib/tasks/config.ts"() {
+ "use strict";
init_ConfigList();
init_utils();
GitConfigScope = /* @__PURE__ */ ((GitConfigScope2) => {
@@ -955,6 +990,30 @@ var init_config = __esm({
}
});
+// src/lib/tasks/diff-name-status.ts
+function isDiffNameStatus(input) {
+ return diffNameStatus.has(input);
+}
+var DiffNameStatus, diffNameStatus;
+var init_diff_name_status = __esm({
+ "src/lib/tasks/diff-name-status.ts"() {
+ "use strict";
+ DiffNameStatus = /* @__PURE__ */ ((DiffNameStatus2) => {
+ DiffNameStatus2["ADDED"] = "A";
+ DiffNameStatus2["COPIED"] = "C";
+ DiffNameStatus2["DELETED"] = "D";
+ DiffNameStatus2["MODIFIED"] = "M";
+ DiffNameStatus2["RENAMED"] = "R";
+ DiffNameStatus2["CHANGED"] = "T";
+ DiffNameStatus2["UNMERGED"] = "U";
+ DiffNameStatus2["UNKNOWN"] = "X";
+ DiffNameStatus2["BROKEN"] = "B";
+ return DiffNameStatus2;
+ })(DiffNameStatus || {});
+ diffNameStatus = new Set(Object.values(DiffNameStatus));
+ }
+});
+
// src/lib/tasks/grep.ts
function grepQueryBuilder(...params) {
return new GrepQuery().param(...params);
@@ -983,26 +1042,33 @@ function grep_default() {
const options = getTrailingOptions(arguments);
for (const option of disallowedOptions) {
if (options.includes(option)) {
- return this._runTask(configurationErrorTask(`git.grep: use of "${option}" is not supported.`), then);
+ return this._runTask(
+ configurationErrorTask(`git.grep: use of "${option}" is not supported.`),
+ then
+ );
}
}
if (typeof searchTerm === "string") {
searchTerm = grepQueryBuilder().param(searchTerm);
}
const commands = ["grep", "--null", "-n", "--full-name", ...options, ...searchTerm];
- return this._runTask({
- commands,
- format: "utf-8",
- parser(stdOut) {
- return parseGrep(stdOut);
- }
- }, then);
+ return this._runTask(
+ {
+ commands,
+ format: "utf-8",
+ parser(stdOut) {
+ return parseGrep(stdOut);
+ }
+ },
+ then
+ );
}
};
}
var disallowedOptions, Query, _a, GrepQuery;
var init_grep = __esm({
"src/lib/tasks/grep.ts"() {
+ "use strict";
init_utils();
init_task();
disallowedOptions = ["-h"];
@@ -1055,11 +1121,13 @@ function getResetMode(mode) {
return;
}
function isValidResetMode(mode) {
- return ResetModes.includes(mode);
+ return typeof mode === "string" && validResetModes.includes(mode);
}
-var ResetMode, ResetModes;
+var ResetMode, validResetModes;
var init_reset = __esm({
"src/lib/tasks/reset.ts"() {
+ "use strict";
+ init_utils();
init_task();
ResetMode = /* @__PURE__ */ ((ResetMode2) => {
ResetMode2["MIXED"] = "mixed";
@@ -1069,7 +1137,7 @@ var init_reset = __esm({
ResetMode2["KEEP"] = "keep";
return ResetMode2;
})(ResetMode || {});
- ResetModes = Array.from(Object.values(ResetMode));
+ validResetModes = asStringArray(Object.values(ResetMode));
}
});
@@ -1078,6 +1146,7 @@ var api_exports = {};
__export(api_exports, {
CheckRepoActions: () => CheckRepoActions,
CleanOptions: () => CleanOptions,
+ DiffNameStatus: () => DiffNameStatus,
GitConfigScope: () => GitConfigScope,
GitConstructError: () => GitConstructError,
GitError: () => GitError,
@@ -1090,6 +1159,7 @@ __export(api_exports, {
});
var init_api = __esm({
"src/lib/api.ts"() {
+ "use strict";
init_pathspec();
init_git_construct_error();
init_git_error();
@@ -1099,6 +1169,7 @@ var init_api = __esm({
init_check_is_repo();
init_clean();
init_config();
+ init_diff_name_status();
init_grep();
init_reset();
}
@@ -1131,6 +1202,7 @@ function abortPlugin(signal) {
}
var init_abort_plugin = __esm({
"src/lib/plugins/abort-plugin.ts"() {
+ "use strict";
init_git_plugin_error();
}
});
@@ -1139,24 +1211,47 @@ var init_abort_plugin = __esm({
function isConfigSwitch(arg) {
return typeof arg === "string" && arg.trim().toLowerCase() === "-c";
}
+function isCloneSwitch(char, arg) {
+ if (typeof arg !== "string" || !arg.includes(char)) {
+ return false;
+ }
+ const token = arg.replace(/\0g/, "").replace(/^(--no)?-{1,2}/, "");
+ return /^[\dlsqvnobucj]+\b/.test(token);
+}
function preventProtocolOverride(arg, next) {
if (!isConfigSwitch(arg)) {
return;
}
- if (!/^\s*protocol(.[a-z]+)?.allow/.test(next)) {
+ if (!/^\s*protocol(.[a-z]+)?.allow/i.test(next)) {
return;
}
- throw new GitPluginError(void 0, "unsafe", "Configuring protocol.allow is not permitted without enabling allowUnsafeExtProtocol");
+ throw new GitPluginError(
+ void 0,
+ "unsafe",
+ "Configuring protocol.allow is not permitted without enabling allowUnsafeExtProtocol"
+ );
}
function preventUploadPack(arg, method) {
if (/^\s*--(upload|receive)-pack/.test(arg)) {
- throw new GitPluginError(void 0, "unsafe", `Use of --upload-pack or --receive-pack is not permitted without enabling allowUnsafePack`);
- }
- if (method === "clone" && /^\s*-u\b/.test(arg)) {
- throw new GitPluginError(void 0, "unsafe", `Use of clone with option -u is not permitted without enabling allowUnsafePack`);
+ throw new GitPluginError(
+ void 0,
+ "unsafe",
+ `Use of --upload-pack or --receive-pack is not permitted without enabling allowUnsafePack`
+ );
+ }
+ if (method === "clone" && isCloneSwitch("u", arg)) {
+ throw new GitPluginError(
+ void 0,
+ "unsafe",
+ `Use of clone with option -u is not permitted without enabling allowUnsafePack`
+ );
}
if (method === "push" && /^\s*--exec\b/.test(arg)) {
- throw new GitPluginError(void 0, "unsafe", `Use of push with option --exec is not permitted without enabling allowUnsafePack`);
+ throw new GitPluginError(
+ void 0,
+ "unsafe",
+ `Use of push with option --exec is not permitted without enabling allowUnsafePack`
+ );
}
}
function blockUnsafeOperationsPlugin({
@@ -1177,6 +1272,7 @@ function blockUnsafeOperationsPlugin({
}
var init_block_unsafe_operations_plugin = __esm({
"src/lib/plugins/block-unsafe-operations-plugin.ts"() {
+ "use strict";
init_git_plugin_error();
}
});
@@ -1193,6 +1289,7 @@ function commandConfigPrefixingPlugin(configuration) {
}
var init_command_config_prefixing_plugin = __esm({
"src/lib/plugins/command-config-prefixing-plugin.ts"() {
+ "use strict";
init_utils();
}
});
@@ -1239,39 +1336,82 @@ function completionDetectionPlugin({
}
return {
type: "spawn.after",
- action(_0, _1) {
- return __async(this, arguments, function* (_data, { spawned, close }) {
- var _a2, _b;
- const events = createEvents();
- let deferClose = true;
- let quickClose = () => void (deferClose = false);
- (_a2 = spawned.stdout) == null ? void 0 : _a2.on("data", quickClose);
- (_b = spawned.stderr) == null ? void 0 : _b.on("data", quickClose);
- spawned.on("error", quickClose);
- spawned.on("close", (code) => events.close(code));
- spawned.on("exit", (code) => events.exit(code));
- try {
- yield events.result;
- if (deferClose) {
- yield delay(50);
- }
- close(events.exitCode);
- } catch (err) {
- close(events.exitCode, err);
+ async action(_data, { spawned, close }) {
+ const events = createEvents();
+ let deferClose = true;
+ let quickClose = () => void (deferClose = false);
+ spawned.stdout?.on("data", quickClose);
+ spawned.stderr?.on("data", quickClose);
+ spawned.on("error", quickClose);
+ spawned.on("close", (code) => events.close(code));
+ spawned.on("exit", (code) => events.exit(code));
+ try {
+ await events.result;
+ if (deferClose) {
+ await delay(50);
}
- });
+ close(events.exitCode);
+ } catch (err) {
+ close(events.exitCode, err);
+ }
}
};
}
var import_promise_deferred, never;
var init_completion_detection_plugin = __esm({
"src/lib/plugins/completion-detection.plugin.ts"() {
+ "use strict";
import_promise_deferred = require("@kwsites/promise-deferred");
init_utils();
never = (0, import_promise_deferred.deferred)().promise;
}
});
+// src/lib/plugins/custom-binary.plugin.ts
+function isBadArgument(arg) {
+ return !arg || !/^([a-z]:)?([a-z0-9/.\\_~-]+)$/i.test(arg);
+}
+function toBinaryConfig(input, allowUnsafe) {
+ if (input.length < 1 || input.length > 2) {
+ throw new GitPluginError(void 0, "binary", WRONG_NUMBER_ERR);
+ }
+ const isBad = input.some(isBadArgument);
+ if (isBad) {
+ if (allowUnsafe) {
+ console.warn(WRONG_CHARS_ERR);
+ } else {
+ throw new GitPluginError(void 0, "binary", WRONG_CHARS_ERR);
+ }
+ }
+ const [binary, prefix] = input;
+ return {
+ binary,
+ prefix
+ };
+}
+function customBinaryPlugin(plugins, input = ["git"], allowUnsafe = false) {
+ let config = toBinaryConfig(asArray(input), allowUnsafe);
+ plugins.on("binary", (input2) => {
+ config = toBinaryConfig(asArray(input2), allowUnsafe);
+ });
+ plugins.append("spawn.binary", () => {
+ return config.binary;
+ });
+ plugins.append("spawn.args", (data) => {
+ return config.prefix ? [config.prefix, ...data] : data;
+ });
+}
+var WRONG_NUMBER_ERR, WRONG_CHARS_ERR;
+var init_custom_binary_plugin = __esm({
+ "src/lib/plugins/custom-binary.plugin.ts"() {
+ "use strict";
+ init_git_plugin_error();
+ init_utils();
+ WRONG_NUMBER_ERR = `Invalid value supplied for custom binary, requires a single string or an array containing either one or two strings`;
+ WRONG_CHARS_ERR = `Invalid value supplied for custom binary, restricted characters must be removed or supply the unsafe.allowUnsafeCustomBinary option`;
+ }
+});
+
// src/lib/plugins/error-detection.plugin.ts
function isTaskError(result) {
return !!(result.exitCode && result.stdErr.length);
@@ -1307,18 +1447,32 @@ function errorDetectionPlugin(config) {
}
var init_error_detection_plugin = __esm({
"src/lib/plugins/error-detection.plugin.ts"() {
+ "use strict";
init_git_error();
}
});
// src/lib/plugins/plugin-store.ts
-var PluginStore;
+var import_node_events, PluginStore;
var init_plugin_store = __esm({
"src/lib/plugins/plugin-store.ts"() {
+ "use strict";
+ import_node_events = require("node:events");
init_utils();
PluginStore = class {
constructor() {
this.plugins = /* @__PURE__ */ new Set();
+ this.events = new import_node_events.EventEmitter();
+ }
+ on(type, listener) {
+ this.events.on(type, listener);
+ }
+ reconfigure(type, data) {
+ this.events.emit(type, data);
+ }
+ append(type, action) {
+ const plugin = append(this.plugins, { type, action });
+ return () => this.plugins.delete(plugin);
}
add(plugin) {
const plugins = [];
@@ -1348,11 +1502,10 @@ function progressMonitorPlugin(progress) {
const onProgress = {
type: "spawn.after",
action(_data, context) {
- var _a2;
if (!context.commands.includes(progressCommand)) {
return;
}
- (_a2 = context.spawned.stderr) == null ? void 0 : _a2.on("data", (chunk) => {
+ context.spawned.stderr?.on("data", (chunk) => {
const message = /^([\s\S]+?):\s*(\d+)% \((\d+)\/(\d+)\)/.exec(chunk.toString("utf8"));
if (!message) {
return;
@@ -1383,6 +1536,7 @@ function progressEventStage(input) {
}
var init_progress_monitor_plugin = __esm({
"src/lib/plugins/progress-monitor-plugin.ts"() {
+ "use strict";
init_utils();
}
});
@@ -1390,6 +1544,7 @@ var init_progress_monitor_plugin = __esm({
// src/lib/plugins/simple-git-plugin.ts
var init_simple_git_plugin = __esm({
"src/lib/plugins/simple-git-plugin.ts"() {
+ "use strict";
}
});
@@ -1399,12 +1554,13 @@ function spawnOptionsPlugin(spawnOptions) {
return {
type: "spawn.options",
action(data) {
- return __spreadValues(__spreadValues({}, options), data);
+ return { ...options, ...data };
}
};
}
var init_spawn_options_plugin = __esm({
"src/lib/plugins/spawn-options-plugin.ts"() {
+ "use strict";
init_utils();
}
});
@@ -1419,16 +1575,14 @@ function timeoutPlugin({
return {
type: "spawn.after",
action(_data, context) {
- var _a2, _b;
let timeout;
function wait() {
timeout && clearTimeout(timeout);
timeout = setTimeout(kill, block);
}
function stop() {
- var _a3, _b2;
- (_a3 = context.spawned.stdout) == null ? void 0 : _a3.off("data", wait);
- (_b2 = context.spawned.stderr) == null ? void 0 : _b2.off("data", wait);
+ context.spawned.stdout?.off("data", wait);
+ context.spawned.stderr?.off("data", wait);
context.spawned.off("exit", stop);
context.spawned.off("close", stop);
timeout && clearTimeout(timeout);
@@ -1437,8 +1591,8 @@ function timeoutPlugin({
stop();
context.kill(new GitPluginError(void 0, "timeout", `block timeout reached`));
}
- stdOut && ((_a2 = context.spawned.stdout) == null ? void 0 : _a2.on("data", wait));
- stdErr && ((_b = context.spawned.stderr) == null ? void 0 : _b.on("data", wait));
+ stdOut && context.spawned.stdout?.on("data", wait);
+ stdErr && context.spawned.stderr?.on("data", wait);
context.spawned.on("exit", stop);
context.spawned.on("close", stop);
wait();
@@ -1448,6 +1602,7 @@ function timeoutPlugin({
}
var init_timout_plugin = __esm({
"src/lib/plugins/timout-plugin.ts"() {
+ "use strict";
init_git_plugin_error();
}
});
@@ -1455,10 +1610,12 @@ var init_timout_plugin = __esm({
// src/lib/plugins/index.ts
var init_plugins = __esm({
"src/lib/plugins/index.ts"() {
+ "use strict";
init_abort_plugin();
init_block_unsafe_operations_plugin();
init_command_config_prefixing_plugin();
init_completion_detection_plugin();
+ init_custom_binary_plugin();
init_error_detection_plugin();
init_plugin_store();
init_progress_monitor_plugin();
@@ -1485,7 +1642,9 @@ function suffixPathsPlugin() {
continue;
}
if (param === "--") {
- append2(data.slice(i + 1).flatMap((item) => isPathSpec(item) && toPaths(item) || item));
+ append2(
+ data.slice(i + 1).flatMap((item) => isPathSpec(item) && toPaths(item) || item)
+ );
break;
}
prefix.push(param);
@@ -1496,6 +1655,7 @@ function suffixPathsPlugin() {
}
var init_suffix_paths_plugin = __esm({
"src/lib/plugins/suffix-paths.plugin.ts"() {
+ "use strict";
init_pathspec();
}
});
@@ -1535,7 +1695,10 @@ function createLogger(label, verbose, initialStep, infoDebugger = createLog()) {
const key = childLoggerName(filterType(verbose, filterString), debugDebugger, infoDebugger);
return step(initialStep);
function sibling(name, initial) {
- return append(spawned, createLogger(label, key.replace(/^[^:]+/, name), initial, infoDebugger));
+ return append(
+ spawned,
+ createLogger(label, key.replace(/^[^:]+/, name), initial, infoDebugger)
+ );
}
function step(phase) {
const stepPrefix = phase && `[${phase}]` || "";
@@ -1552,6 +1715,7 @@ function createLogger(label, verbose, initialStep, infoDebugger = createLog()) {
var import_debug;
var init_git_logger = __esm({
"src/lib/git-logger.ts"() {
+ "use strict";
import_debug = __toESM(require("debug"));
init_utils();
import_debug.default.formatters.L = (value) => String(filterHasLength(value) ? value.length : "-");
@@ -1565,12 +1729,13 @@ var init_git_logger = __esm({
});
// src/lib/runners/tasks-pending-queue.ts
-var _TasksPendingQueue, TasksPendingQueue;
+var TasksPendingQueue;
var init_tasks_pending_queue = __esm({
"src/lib/runners/tasks-pending-queue.ts"() {
+ "use strict";
init_git_error();
init_git_logger();
- _TasksPendingQueue = class {
+ TasksPendingQueue = class _TasksPendingQueue {
constructor(logLabel = "GitExecutor") {
this.logLabel = logLabel;
this._queue = /* @__PURE__ */ new Map();
@@ -1597,9 +1762,14 @@ var init_tasks_pending_queue = __esm({
for (const [task, { logger }] of Array.from(this._queue.entries())) {
if (task === err.task) {
logger.info(`Failed %o`, err);
- logger(`Fatal exception, any as-yet un-started tasks run through this executor will not be attempted`);
+ logger(
+ `Fatal exception, any as-yet un-started tasks run through this executor will not be attempted`
+ );
} else {
- logger.info(`A fatal exception occurred in a previous task, the queue has been purged: %o`, err.message);
+ logger.info(
+ `A fatal exception occurred in a previous task, the queue has been purged: %o`,
+ err.message
+ );
}
this.complete(task);
}
@@ -1624,9 +1794,10 @@ var init_tasks_pending_queue = __esm({
static getName(name = "empty") {
return `task:${name}:${++_TasksPendingQueue.counter}`;
}
+ static {
+ this.counter = 0;
+ }
};
- TasksPendingQueue = _TasksPendingQueue;
- TasksPendingQueue.counter = 0;
}
});
@@ -1653,6 +1824,7 @@ function onDataReceived(target, name, logger, output) {
var import_child_process, GitExecutorChain;
var init_git_executor_chain = __esm({
"src/lib/runners/git-executor-chain.ts"() {
+ "use strict";
import_child_process = require("child_process");
init_git_error();
init_task();
@@ -1666,9 +1838,6 @@ var init_git_executor_chain = __esm({
this._chain = Promise.resolve();
this._queue = new TasksPendingQueue();
}
- get binary() {
- return this._executor.binary;
- }
get cwd() {
return this._cwd || this._executor.cwd;
}
@@ -1688,20 +1857,18 @@ var init_git_executor_chain = __esm({
this._queue.push(task);
return this._chain = this._chain.then(() => this.attemptTask(task));
}
- attemptTask(task) {
- return __async(this, null, function* () {
- const onScheduleComplete = yield this._scheduler.next();
- const onQueueComplete = () => this._queue.complete(task);
- try {
- const { logger } = this._queue.attempt(task);
- return yield isEmptyTask(task) ? this.attemptEmptyTask(task, logger) : this.attemptRemoteTask(task, logger);
- } catch (e) {
- throw this.onFatalException(task, e);
- } finally {
- onQueueComplete();
- onScheduleComplete();
- }
- });
+ async attemptTask(task) {
+ const onScheduleComplete = await this._scheduler.next();
+ const onQueueComplete = () => this._queue.complete(task);
+ try {
+ const { logger } = this._queue.attempt(task);
+ return await (isEmptyTask(task) ? this.attemptEmptyTask(task, logger) : this.attemptRemoteTask(task, logger));
+ } catch (e) {
+ throw this.onFatalException(task, e);
+ } finally {
+ onQueueComplete();
+ onScheduleComplete();
+ }
}
onFatalException(task, e) {
const gitError = e instanceof GitError ? Object.assign(e, { task }) : new GitError(task, e && String(e));
@@ -1709,108 +1876,148 @@ var init_git_executor_chain = __esm({
this._queue.fatal(gitError);
return gitError;
}
- attemptRemoteTask(task, logger) {
- return __async(this, null, function* () {
- const args = this._plugins.exec("spawn.args", [...task.commands], pluginContext(task, task.commands));
- const raw = yield this.gitResponse(task, this.binary, args, this.outputHandler, logger.step("SPAWN"));
- const outputStreams = yield this.handleTaskData(task, args, raw, logger.step("HANDLE"));
- logger(`passing response to task's parser as a %s`, task.format);
- if (isBufferTask(task)) {
- return callTaskParser(task.parser, outputStreams);
- }
- return callTaskParser(task.parser, outputStreams.asStrings());
- });
+ async attemptRemoteTask(task, logger) {
+ const binary = this._plugins.exec("spawn.binary", "", pluginContext(task, task.commands));
+ const args = this._plugins.exec(
+ "spawn.args",
+ [...task.commands],
+ pluginContext(task, task.commands)
+ );
+ const raw = await this.gitResponse(
+ task,
+ binary,
+ args,
+ this.outputHandler,
+ logger.step("SPAWN")
+ );
+ const outputStreams = await this.handleTaskData(task, args, raw, logger.step("HANDLE"));
+ logger(`passing response to task's parser as a %s`, task.format);
+ if (isBufferTask(task)) {
+ return callTaskParser(task.parser, outputStreams);
+ }
+ return callTaskParser(task.parser, outputStreams.asStrings());
}
- attemptEmptyTask(task, logger) {
- return __async(this, null, function* () {
- logger(`empty task bypassing child process to call to task's parser`);
- return task.parser(this);
- });
+ async attemptEmptyTask(task, logger) {
+ logger(`empty task bypassing child process to call to task's parser`);
+ return task.parser(this);
}
handleTaskData(task, args, result, logger) {
const { exitCode, rejection, stdOut, stdErr } = result;
return new Promise((done, fail) => {
logger(`Preparing to handle process response exitCode=%d stdOut=`, exitCode);
- const { error } = this._plugins.exec("task.error", { error: rejection }, __spreadValues(__spreadValues({}, pluginContext(task, args)), result));
+ const { error } = this._plugins.exec(
+ "task.error",
+ { error: rejection },
+ {
+ ...pluginContext(task, args),
+ ...result
+ }
+ );
if (error && task.onError) {
logger.info(`exitCode=%s handling with custom error handler`);
- return task.onError(result, error, (newStdOut) => {
- logger.info(`custom error handler treated as success`);
- logger(`custom error returned a %s`, objectToString(newStdOut));
- done(new GitOutputStreams(Array.isArray(newStdOut) ? Buffer.concat(newStdOut) : newStdOut, Buffer.concat(stdErr)));
- }, fail);
+ return task.onError(
+ result,
+ error,
+ (newStdOut) => {
+ logger.info(`custom error handler treated as success`);
+ logger(`custom error returned a %s`, objectToString(newStdOut));
+ done(
+ new GitOutputStreams(
+ Array.isArray(newStdOut) ? Buffer.concat(newStdOut) : newStdOut,
+ Buffer.concat(stdErr)
+ )
+ );
+ },
+ fail
+ );
}
if (error) {
- logger.info(`handling as error: exitCode=%s stdErr=%s rejection=%o`, exitCode, stdErr.length, rejection);
+ logger.info(
+ `handling as error: exitCode=%s stdErr=%s rejection=%o`,
+ exitCode,
+ stdErr.length,
+ rejection
+ );
return fail(error);
}
logger.info(`retrieving task output complete`);
done(new GitOutputStreams(Buffer.concat(stdOut), Buffer.concat(stdErr)));
});
}
- gitResponse(task, command, args, outputHandler, logger) {
- return __async(this, null, function* () {
- const outputLogger = logger.sibling("output");
- const spawnOptions = this._plugins.exec("spawn.options", {
+ async gitResponse(task, command, args, outputHandler, logger) {
+ const outputLogger = logger.sibling("output");
+ const spawnOptions = this._plugins.exec(
+ "spawn.options",
+ {
cwd: this.cwd,
env: this.env,
windowsHide: true
- }, pluginContext(task, task.commands));
- return new Promise((done) => {
- const stdOut = [];
- const stdErr = [];
- logger.info(`%s %o`, command, args);
- logger("%O", spawnOptions);
- let rejection = this._beforeSpawn(task, args);
- if (rejection) {
- return done({
+ },
+ pluginContext(task, task.commands)
+ );
+ return new Promise((done) => {
+ const stdOut = [];
+ const stdErr = [];
+ logger.info(`%s %o`, command, args);
+ logger("%O", spawnOptions);
+ let rejection = this._beforeSpawn(task, args);
+ if (rejection) {
+ return done({
+ stdOut,
+ stdErr,
+ exitCode: 9901,
+ rejection
+ });
+ }
+ this._plugins.exec("spawn.before", void 0, {
+ ...pluginContext(task, args),
+ kill(reason) {
+ rejection = reason || rejection;
+ }
+ });
+ const spawned = (0, import_child_process.spawn)(command, args, spawnOptions);
+ spawned.stdout.on(
+ "data",
+ onDataReceived(stdOut, "stdOut", logger, outputLogger.step("stdOut"))
+ );
+ spawned.stderr.on(
+ "data",
+ onDataReceived(stdErr, "stdErr", logger, outputLogger.step("stdErr"))
+ );
+ spawned.on("error", onErrorReceived(stdErr, logger));
+ if (outputHandler) {
+ logger(`Passing child process stdOut/stdErr to custom outputHandler`);
+ outputHandler(command, spawned.stdout, spawned.stderr, [...args]);
+ }
+ this._plugins.exec("spawn.after", void 0, {
+ ...pluginContext(task, args),
+ spawned,
+ close(exitCode, reason) {
+ done({
stdOut,
stdErr,
- exitCode: 9901,
- rejection
+ exitCode,
+ rejection: rejection || reason
});
- }
- this._plugins.exec("spawn.before", void 0, __spreadProps(__spreadValues({}, pluginContext(task, args)), {
- kill(reason) {
- rejection = reason || rejection;
+ },
+ kill(reason) {
+ if (spawned.killed) {
+ return;
}
- }));
- const spawned = (0, import_child_process.spawn)(command, args, spawnOptions);
- spawned.stdout.on("data", onDataReceived(stdOut, "stdOut", logger, outputLogger.step("stdOut")));
- spawned.stderr.on("data", onDataReceived(stdErr, "stdErr", logger, outputLogger.step("stdErr")));
- spawned.on("error", onErrorReceived(stdErr, logger));
- if (outputHandler) {
- logger(`Passing child process stdOut/stdErr to custom outputHandler`);
- outputHandler(command, spawned.stdout, spawned.stderr, [...args]);
+ rejection = reason;
+ spawned.kill("SIGINT");
}
- this._plugins.exec("spawn.after", void 0, __spreadProps(__spreadValues({}, pluginContext(task, args)), {
- spawned,
- close(exitCode, reason) {
- done({
- stdOut,
- stdErr,
- exitCode,
- rejection: rejection || reason
- });
- },
- kill(reason) {
- if (spawned.killed) {
- return;
- }
- rejection = reason;
- spawned.kill("SIGINT");
- }
- }));
});
});
}
_beforeSpawn(task, args) {
let rejection;
- this._plugins.exec("spawn.before", void 0, __spreadProps(__spreadValues({}, pluginContext(task, args)), {
+ this._plugins.exec("spawn.before", void 0, {
+ ...pluginContext(task, args),
kill(reason) {
rejection = reason || rejection;
}
- }));
+ });
return rejection;
}
};
@@ -1825,10 +2032,10 @@ __export(git_executor_exports, {
var GitExecutor;
var init_git_executor = __esm({
"src/lib/runners/git-executor.ts"() {
+ "use strict";
init_git_executor_chain();
GitExecutor = class {
- constructor(binary = "git", cwd, _scheduler, _plugins) {
- this.binary = binary;
+ constructor(cwd, _scheduler, _plugins) {
this.cwd = cwd;
this._scheduler = _scheduler;
this._plugins = _plugins;
@@ -1850,15 +2057,20 @@ function taskCallback(task, response, callback = NOOP) {
callback(null, data);
};
const onError2 = (err) => {
- if ((err == null ? void 0 : err.task) === task) {
- callback(err instanceof GitResponseError ? addDeprecationNoticeToError(err) : err, void 0);
+ if (err?.task === task) {
+ callback(
+ err instanceof GitResponseError ? addDeprecationNoticeToError(err) : err,
+ void 0
+ );
}
};
response.then(onSuccess, onError2);
}
function addDeprecationNoticeToError(err) {
let log = (name) => {
- console.warn(`simple-git deprecation notice: accessing GitResponseError.${name} should be GitResponseError.git.${name}, this will no longer be available in version 3`);
+ console.warn(
+ `simple-git deprecation notice: accessing GitResponseError.${name} should be GitResponseError.git.${name}, this will no longer be available in version 3`
+ );
log = NOOP;
};
return Object.create(err, Object.getOwnPropertyNames(err.git).reduce(descriptorReducer, {}));
@@ -1879,6 +2091,7 @@ function addDeprecationNoticeToError(err) {
}
var init_task_callback = __esm({
"src/lib/task-callback.ts"() {
+ "use strict";
init_git_response_error();
init_utils();
}
@@ -1895,6 +2108,7 @@ function changeWorkingDirectoryTask(directory, root) {
}
var init_change_working_directory = __esm({
"src/lib/tasks/change-working-directory.ts"() {
+ "use strict";
init_utils();
init_task();
}
@@ -1911,23 +2125,76 @@ function checkoutTask(args) {
function checkout_default() {
return {
checkout() {
- return this._runTask(checkoutTask(getTrailingOptions(arguments, 1)), trailingFunctionArgument(arguments));
+ return this._runTask(
+ checkoutTask(getTrailingOptions(arguments, 1)),
+ trailingFunctionArgument(arguments)
+ );
},
checkoutBranch(branchName, startPoint) {
- return this._runTask(checkoutTask(["-b", branchName, startPoint, ...getTrailingOptions(arguments)]), trailingFunctionArgument(arguments));
+ return this._runTask(
+ checkoutTask(["-b", branchName, startPoint, ...getTrailingOptions(arguments)]),
+ trailingFunctionArgument(arguments)
+ );
},
checkoutLocalBranch(branchName) {
- return this._runTask(checkoutTask(["-b", branchName, ...getTrailingOptions(arguments)]), trailingFunctionArgument(arguments));
+ return this._runTask(
+ checkoutTask(["-b", branchName, ...getTrailingOptions(arguments)]),
+ trailingFunctionArgument(arguments)
+ );
}
};
}
var init_checkout = __esm({
"src/lib/tasks/checkout.ts"() {
+ "use strict";
init_utils();
init_task();
}
});
+// src/lib/tasks/count-objects.ts
+function countObjectsResponse() {
+ return {
+ count: 0,
+ garbage: 0,
+ inPack: 0,
+ packs: 0,
+ prunePackable: 0,
+ size: 0,
+ sizeGarbage: 0,
+ sizePack: 0
+ };
+}
+function count_objects_default() {
+ return {
+ countObjects() {
+ return this._runTask({
+ commands: ["count-objects", "--verbose"],
+ format: "utf-8",
+ parser(stdOut) {
+ return parseStringResponse(countObjectsResponse(), [parser2], stdOut);
+ }
+ });
+ }
+ };
+}
+var parser2;
+var init_count_objects = __esm({
+ "src/lib/tasks/count-objects.ts"() {
+ "use strict";
+ init_utils();
+ parser2 = new LineParser(
+ /([a-z-]+): (\d+)$/,
+ (result, [key, value]) => {
+ const property = asCamelCase(key);
+ if (Object.hasOwn(result, property)) {
+ result[property] = asNumber(value);
+ }
+ }
+ );
+ }
+});
+
// src/lib/parsers/parse-commit.ts
function parseCommitResult(stdOut) {
const result = {
@@ -1946,6 +2213,7 @@ function parseCommitResult(stdOut) {
var parsers;
var init_parse_commit = __esm({
"src/lib/parsers/parse-commit.ts"() {
+ "use strict";
init_utils();
parsers = [
new LineParser(/^\[([^\s]+)( \([^)]+\))? ([^\]]+)/, (result, [branch, root, commit]) => {
@@ -1964,20 +2232,26 @@ var init_parse_commit = __esm({
name: parts.join("<").trim()
};
}),
- new LineParser(/(\d+)[^,]*(?:,\s*(\d+)[^,]*)(?:,\s*(\d+))/g, (result, [changes, insertions, deletions]) => {
- result.summary.changes = parseInt(changes, 10) || 0;
- result.summary.insertions = parseInt(insertions, 10) || 0;
- result.summary.deletions = parseInt(deletions, 10) || 0;
- }),
- new LineParser(/^(\d+)[^,]*(?:,\s*(\d+)[^(]+\(([+-]))?/, (result, [changes, lines, direction]) => {
- result.summary.changes = parseInt(changes, 10) || 0;
- const count = parseInt(lines, 10) || 0;
- if (direction === "-") {
- result.summary.deletions = count;
- } else if (direction === "+") {
- result.summary.insertions = count;
+ new LineParser(
+ /(\d+)[^,]*(?:,\s*(\d+)[^,]*)(?:,\s*(\d+))/g,
+ (result, [changes, insertions, deletions]) => {
+ result.summary.changes = parseInt(changes, 10) || 0;
+ result.summary.insertions = parseInt(insertions, 10) || 0;
+ result.summary.deletions = parseInt(deletions, 10) || 0;
}
- })
+ ),
+ new LineParser(
+ /^(\d+)[^,]*(?:,\s*(\d+)[^(]+\(([+-]))?/,
+ (result, [changes, lines, direction]) => {
+ result.summary.changes = parseInt(changes, 10) || 0;
+ const count = parseInt(lines, 10) || 0;
+ if (direction === "-") {
+ result.summary.deletions = count;
+ } else if (direction === "+") {
+ result.summary.insertions = count;
+ }
+ }
+ )
];
}
});
@@ -2002,22 +2276,51 @@ function commit_default() {
return {
commit(message, ...rest) {
const next = trailingFunctionArgument(arguments);
- const task = rejectDeprecatedSignatures(message) || commitTask(asArray(message), asArray(filterType(rest[0], filterStringOrStringArray, [])), [...filterType(rest[1], filterArray, []), ...getTrailingOptions(arguments, 0, true)]);
+ const task = rejectDeprecatedSignatures(message) || commitTask(
+ asArray(message),
+ asArray(filterType(rest[0], filterStringOrStringArray, [])),
+ [
+ ...asStringArray(filterType(rest[1], filterArray, [])),
+ ...getTrailingOptions(arguments, 0, true)
+ ]
+ );
return this._runTask(task, next);
}
};
function rejectDeprecatedSignatures(message) {
- return !filterStringOrStringArray(message) && configurationErrorTask(`git.commit: requires the commit message to be supplied as a string/string[]`);
+ return !filterStringOrStringArray(message) && configurationErrorTask(
+ `git.commit: requires the commit message to be supplied as a string/string[]`
+ );
}
}
var init_commit = __esm({
"src/lib/tasks/commit.ts"() {
+ "use strict";
init_parse_commit();
init_utils();
init_task();
}
});
+// src/lib/tasks/first-commit.ts
+function first_commit_default() {
+ return {
+ firstCommit() {
+ return this._runTask(
+ straightThroughStringTask(["rev-list", "--max-parents=0", "HEAD"], true),
+ trailingFunctionArgument(arguments)
+ );
+ }
+ };
+}
+var init_first_commit = __esm({
+ "src/lib/tasks/first-commit.ts"() {
+ "use strict";
+ init_utils();
+ init_task();
+ }
+});
+
// src/lib/tasks/hash-object.ts
function hashObjectTask(filePath, write) {
const commands = ["hash-object", filePath];
@@ -2028,6 +2331,7 @@ function hashObjectTask(filePath, write) {
}
var init_hash_object = __esm({
"src/lib/tasks/hash-object.ts"() {
+ "use strict";
init_task();
}
});
@@ -2056,6 +2360,7 @@ function parseInit(bare, path, text) {
var InitSummary, initResponseRegex, reInitResponseRegex;
var init_InitSummary = __esm({
"src/lib/responses/InitSummary.ts"() {
+ "use strict";
InitSummary = class {
constructor(bare, path, existing, gitDir) {
this.bare = bare;
@@ -2089,6 +2394,7 @@ function initTask(bare = false, path, customArgs) {
var bareCommand;
var init_init = __esm({
"src/lib/tasks/init.ts"() {
+ "use strict";
init_InitSummary();
bareCommand = "--bare";
}
@@ -2110,6 +2416,7 @@ function isLogFormat(customArg) {
var logFormatRegex;
var init_log_format = __esm({
"src/lib/args/log-format.ts"() {
+ "use strict";
logFormatRegex = /^--(stat|numstat|name-only|name-status)(=|$)/;
}
});
@@ -2118,6 +2425,7 @@ var init_log_format = __esm({
var DiffSummary;
var init_DiffSummary = __esm({
"src/lib/responses/DiffSummary.ts"() {
+ "use strict";
DiffSummary = class {
constructor() {
this.changed = 0;
@@ -2131,56 +2439,70 @@ var init_DiffSummary = __esm({
// src/lib/parsers/parse-diff-summary.ts
function getDiffParser(format = "" /* NONE */) {
- const parser3 = diffSummaryParsers[format];
- return (stdOut) => parseStringResponse(new DiffSummary(), parser3, stdOut, false);
+ const parser4 = diffSummaryParsers[format];
+ return (stdOut) => parseStringResponse(new DiffSummary(), parser4, stdOut, false);
}
var statParser, numStatParser, nameOnlyParser, nameStatusParser, diffSummaryParsers;
var init_parse_diff_summary = __esm({
"src/lib/parsers/parse-diff-summary.ts"() {
+ "use strict";
init_log_format();
init_DiffSummary();
+ init_diff_name_status();
init_utils();
statParser = [
- new LineParser(/(.+)\s+\|\s+(\d+)(\s+[+\-]+)?$/, (result, [file, changes, alterations = ""]) => {
- result.files.push({
- file: file.trim(),
- changes: asNumber(changes),
- insertions: alterations.replace(/[^+]/g, "").length,
- deletions: alterations.replace(/[^-]/g, "").length,
- binary: false
- });
- }),
- new LineParser(/(.+) \|\s+Bin ([0-9.]+) -> ([0-9.]+) ([a-z]+)/, (result, [file, before, after]) => {
- result.files.push({
- file: file.trim(),
- before: asNumber(before),
- after: asNumber(after),
- binary: true
- });
- }),
- new LineParser(/(\d+) files? changed\s*((?:, \d+ [^,]+){0,2})/, (result, [changed, summary]) => {
- const inserted = /(\d+) i/.exec(summary);
- const deleted = /(\d+) d/.exec(summary);
- result.changed = asNumber(changed);
- result.insertions = asNumber(inserted == null ? void 0 : inserted[1]);
- result.deletions = asNumber(deleted == null ? void 0 : deleted[1]);
- })
+ new LineParser(
+ /^(.+)\s+\|\s+(\d+)(\s+[+\-]+)?$/,
+ (result, [file, changes, alterations = ""]) => {
+ result.files.push({
+ file: file.trim(),
+ changes: asNumber(changes),
+ insertions: alterations.replace(/[^+]/g, "").length,
+ deletions: alterations.replace(/[^-]/g, "").length,
+ binary: false
+ });
+ }
+ ),
+ new LineParser(
+ /^(.+) \|\s+Bin ([0-9.]+) -> ([0-9.]+) ([a-z]+)/,
+ (result, [file, before, after]) => {
+ result.files.push({
+ file: file.trim(),
+ before: asNumber(before),
+ after: asNumber(after),
+ binary: true
+ });
+ }
+ ),
+ new LineParser(
+ /(\d+) files? changed\s*((?:, \d+ [^,]+){0,2})/,
+ (result, [changed, summary]) => {
+ const inserted = /(\d+) i/.exec(summary);
+ const deleted = /(\d+) d/.exec(summary);
+ result.changed = asNumber(changed);
+ result.insertions = asNumber(inserted?.[1]);
+ result.deletions = asNumber(deleted?.[1]);
+ }
+ )
];
numStatParser = [
- new LineParser(/(\d+)\t(\d+)\t(.+)$/, (result, [changesInsert, changesDelete, file]) => {
- const insertions = asNumber(changesInsert);
- const deletions = asNumber(changesDelete);
- result.changed++;
- result.insertions += insertions;
- result.deletions += deletions;
- result.files.push({
- file,
- changes: insertions + deletions,
- insertions,
- deletions,
- binary: false
- });
- }),
+ new LineParser(
+ /(\d+)\t(\d+)\t(.+)$/,
+ (result, [changesInsert, changesDelete, file]) => {
+ const insertions = asNumber(changesInsert);
+ const deletions = asNumber(changesDelete);
+ result.changed++;
+ result.insertions += insertions;
+ result.deletions += deletions;
+ result.files.push({
+ file,
+ changes: insertions + deletions,
+ insertions,
+ deletions,
+ binary: false
+ });
+ }
+ ),
new LineParser(/-\t-\t(.+)$/, (result, [file]) => {
result.changed++;
result.files.push({
@@ -2204,16 +2526,22 @@ var init_parse_diff_summary = __esm({
})
];
nameStatusParser = [
- new LineParser(/([ACDMRTUXB])\s*(.+)$/, (result, [_status, file]) => {
- result.changed++;
- result.files.push({
- file,
- changes: 0,
- insertions: 0,
- deletions: 0,
- binary: false
- });
- })
+ new LineParser(
+ /([ACDMRTUXB])([0-9]{0,3})\t(.[^\t]*)(\t(.[^\t]*))?$/,
+ (result, [status, similarity, from, _to, to]) => {
+ result.changed++;
+ result.files.push({
+ file: to ?? from,
+ changes: 0,
+ insertions: 0,
+ deletions: 0,
+ binary: false,
+ status: orVoid(isDiffNameStatus(status) && status),
+ from: orVoid(!!to && from !== to && from),
+ similarity: asNumber(similarity)
+ });
+ }
+ )
];
diffSummaryParsers = {
["" /* NONE */]: statParser,
@@ -2227,17 +2555,24 @@ var init_parse_diff_summary = __esm({
// src/lib/parsers/parse-list-log-summary.ts
function lineBuilder(tokens, fields) {
- return fields.reduce((line, field, index) => {
- line[field] = tokens[index] || "";
- return line;
- }, /* @__PURE__ */ Object.create({ diff: null }));
+ return fields.reduce(
+ (line, field, index) => {
+ line[field] = tokens[index] || "";
+ return line;
+ },
+ /* @__PURE__ */ Object.create({ diff: null })
+ );
}
function createListLogSummaryParser(splitter = SPLITTER, fields = defaultFieldNames, logFormat = "" /* NONE */) {
const parseDiffResult = getDiffParser(logFormat);
return function(stdOut) {
- const all = toLinesWithContent(stdOut, true, START_BOUNDARY).map(function(item) {
- const lineDetail = item.trim().split(COMMIT_BOUNDARY);
- const listLogLine = lineBuilder(lineDetail[0].trim().split(splitter), fields);
+ const all = toLinesWithContent(
+ stdOut.trim(),
+ false,
+ START_BOUNDARY
+ ).map(function(item) {
+ const lineDetail = item.split(COMMIT_BOUNDARY);
+ const listLogLine = lineBuilder(lineDetail[0].split(splitter), fields);
if (lineDetail.length > 1 && !!lineDetail[1].trim()) {
listLogLine.diff = parseDiffResult(lineDetail[1]);
}
@@ -2253,6 +2588,7 @@ function createListLogSummaryParser(splitter = SPLITTER, fields = defaultFieldNa
var START_BOUNDARY, COMMIT_BOUNDARY, SPLITTER, defaultFieldNames;
var init_parse_list_log_summary = __esm({
"src/lib/parsers/parse-list-log-summary.ts"() {
+ "use strict";
init_utils();
init_parse_diff_summary();
init_log_format();
@@ -2286,14 +2622,19 @@ function diffSummaryTask(customArgs) {
function validateLogFormatConfig(customArgs) {
const flags = customArgs.filter(isLogFormat);
if (flags.length > 1) {
- return configurationErrorTask(`Summary flags are mutually exclusive - pick one of ${flags.join(",")}`);
+ return configurationErrorTask(
+ `Summary flags are mutually exclusive - pick one of ${flags.join(",")}`
+ );
}
if (flags.length && customArgs.includes("-z")) {
- return configurationErrorTask(`Summary flag ${flags} parsing is not compatible with null termination option '-z'`);
+ return configurationErrorTask(
+ `Summary flag ${flags} parsing is not compatible with null termination option '-z'`
+ );
}
}
var init_diff = __esm({
"src/lib/tasks/diff.ts"() {
+ "use strict";
init_log_format();
init_parse_diff_summary();
init_task();
@@ -2320,7 +2661,7 @@ function userOptions(input) {
}
function parseLogOptions(opt = {}, customArgs = []) {
const splitter = filterType(opt.splitter, filterString, SPLITTER);
- const format = !filterPrimitives(opt.format) && opt.format ? opt.format : {
+ const format = filterPlainObject(opt.format) ? opt.format : {
hash: "%H",
date: opt.strictDate === false ? "%ai" : "%aI",
message: "%s",
@@ -2344,7 +2685,7 @@ function parseLogOptions(opt = {}, customArgs = []) {
suffix.push(`${opt.from || ""}${rangeOperator}${opt.to || ""}`);
}
if (filterString(opt.file)) {
- suffix.push("--follow", opt.file);
+ command.push("--follow", pathspec(opt.file));
}
appendTaskOptions(userOptions(opt), command);
return {
@@ -2354,18 +2695,21 @@ function parseLogOptions(opt = {}, customArgs = []) {
};
}
function logTask(splitter, fields, customArgs) {
- const parser3 = createListLogSummaryParser(splitter, fields, logFormatFromCommand(customArgs));
+ const parser4 = createListLogSummaryParser(splitter, fields, logFormatFromCommand(customArgs));
return {
commands: ["log", ...customArgs],
format: "utf-8",
- parser: parser3
+ parser: parser4
};
}
function log_default() {
return {
log(...rest) {
const next = trailingFunctionArgument(arguments);
- const options = parseLogOptions(trailingOptionsArgument(arguments), filterType(arguments[0], filterArray));
+ const options = parseLogOptions(
+ trailingOptionsArgument(arguments),
+ asStringArray(filterType(arguments[0], filterArray, []))
+ );
const task = rejectDeprecatedSignatures(...rest) || validateLogFormatConfig(options.commands) || createLogTask(options);
return this._runTask(task, next);
}
@@ -2374,13 +2718,17 @@ function log_default() {
return logTask(options.splitter, options.fields, options.commands);
}
function rejectDeprecatedSignatures(from, to) {
- return filterString(from) && filterString(to) && configurationErrorTask(`git.log(string, string) should be replaced with git.log({ from: string, to: string })`);
+ return filterString(from) && filterString(to) && configurationErrorTask(
+ `git.log(string, string) should be replaced with git.log({ from: string, to: string })`
+ );
}
}
var excludeOptions;
var init_log = __esm({
"src/lib/tasks/log.ts"() {
+ "use strict";
init_log_format();
+ init_pathspec();
init_parse_list_log_summary();
init_utils();
init_task();
@@ -2408,6 +2756,7 @@ var init_log = __esm({
var MergeSummaryConflict, MergeSummaryDetail;
var init_MergeSummary = __esm({
"src/lib/responses/MergeSummary.ts"() {
+ "use strict";
MergeSummaryConflict = class {
constructor(reason, file = null, meta) {
this.reason = reason;
@@ -2444,6 +2793,7 @@ var init_MergeSummary = __esm({
var PullSummary, PullFailedSummary;
var init_PullSummary = __esm({
"src/lib/responses/PullSummary.ts"() {
+ "use strict";
PullSummary = class {
constructor() {
this.remoteMessages = {
@@ -2503,24 +2853,34 @@ function asObjectCount(source) {
var remoteMessagesObjectParsers;
var init_parse_remote_objects = __esm({
"src/lib/parsers/parse-remote-objects.ts"() {
+ "use strict";
init_utils();
remoteMessagesObjectParsers = [
- new RemoteLineParser(/^remote:\s*(enumerating|counting|compressing) objects: (\d+),/i, (result, [action, count]) => {
- const key = action.toLowerCase();
- const enumeration = objectEnumerationResult(result.remoteMessages);
- Object.assign(enumeration, { [key]: asNumber(count) });
- }),
- new RemoteLineParser(/^remote:\s*(enumerating|counting|compressing) objects: \d+% \(\d+\/(\d+)\),/i, (result, [action, count]) => {
- const key = action.toLowerCase();
- const enumeration = objectEnumerationResult(result.remoteMessages);
- Object.assign(enumeration, { [key]: asNumber(count) });
- }),
- new RemoteLineParser(/total ([^,]+), reused ([^,]+), pack-reused (\d+)/i, (result, [total, reused, packReused]) => {
- const objects = objectEnumerationResult(result.remoteMessages);
- objects.total = asObjectCount(total);
- objects.reused = asObjectCount(reused);
- objects.packReused = asNumber(packReused);
- })
+ new RemoteLineParser(
+ /^remote:\s*(enumerating|counting|compressing) objects: (\d+),/i,
+ (result, [action, count]) => {
+ const key = action.toLowerCase();
+ const enumeration = objectEnumerationResult(result.remoteMessages);
+ Object.assign(enumeration, { [key]: asNumber(count) });
+ }
+ ),
+ new RemoteLineParser(
+ /^remote:\s*(enumerating|counting|compressing) objects: \d+% \(\d+\/(\d+)\),/i,
+ (result, [action, count]) => {
+ const key = action.toLowerCase();
+ const enumeration = objectEnumerationResult(result.remoteMessages);
+ Object.assign(enumeration, { [key]: asNumber(count) });
+ }
+ ),
+ new RemoteLineParser(
+ /total ([^,]+), reused ([^,]+), pack-reused (\d+)/i,
+ (result, [total, reused, packReused]) => {
+ const objects = objectEnumerationResult(result.remoteMessages);
+ objects.total = asObjectCount(total);
+ objects.reused = asObjectCount(reused);
+ objects.packReused = asNumber(packReused);
+ }
+ )
];
}
});
@@ -2532,6 +2892,7 @@ function parseRemoteMessages(_stdOut, stdErr) {
var parsers2, RemoteMessageSummary;
var init_parse_remote_messages = __esm({
"src/lib/parsers/parse-remote-messages.ts"() {
+ "use strict";
init_utils();
init_parse_remote_objects();
parsers2 = [
@@ -2540,16 +2901,22 @@ var init_parse_remote_messages = __esm({
return false;
}),
...remoteMessagesObjectParsers,
- new RemoteLineParser([/create a (?:pull|merge) request/i, /\s(https?:\/\/\S+)$/], (result, [pullRequestUrl]) => {
- result.remoteMessages.pullRequestUrl = pullRequestUrl;
- }),
- new RemoteLineParser([/found (\d+) vulnerabilities.+\(([^)]+)\)/i, /\s(https?:\/\/\S+)$/], (result, [count, summary, url]) => {
- result.remoteMessages.vulnerabilities = {
- count: asNumber(count),
- summary,
- url
- };
- })
+ new RemoteLineParser(
+ [/create a (?:pull|merge) request/i, /\s(https?:\/\/\S+)$/],
+ (result, [pullRequestUrl]) => {
+ result.remoteMessages.pullRequestUrl = pullRequestUrl;
+ }
+ ),
+ new RemoteLineParser(
+ [/found (\d+) vulnerabilities.+\(([^)]+)\)/i, /\s(https?:\/\/\S+)$/],
+ (result, [count, summary, url]) => {
+ result.remoteMessages.vulnerabilities = {
+ count: asNumber(count),
+ summary,
+ url
+ };
+ }
+ )
];
RemoteMessageSummary = class {
constructor() {
@@ -2567,6 +2934,7 @@ function parsePullErrorResult(stdOut, stdErr) {
var FILE_UPDATE_REGEX, SUMMARY_REGEX, ACTION_REGEX, parsers3, errorParsers, parsePullDetail, parsePullResult;
var init_parse_pull = __esm({
"src/lib/parsers/parse-pull.ts"() {
+ "use strict";
init_PullSummary();
init_utils();
init_parse_remote_messages();
@@ -2600,18 +2968,25 @@ var init_parse_pull = __esm({
errorParsers = [
new LineParser(/^from\s(.+)$/i, (result, [remote]) => void (result.remote = remote)),
new LineParser(/^fatal:\s(.+)$/, (result, [message]) => void (result.message = message)),
- new LineParser(/([a-z0-9]+)\.\.([a-z0-9]+)\s+(\S+)\s+->\s+(\S+)$/, (result, [hashLocal, hashRemote, branchLocal, branchRemote]) => {
- result.branch.local = branchLocal;
- result.hash.local = hashLocal;
- result.branch.remote = branchRemote;
- result.hash.remote = hashRemote;
- })
+ new LineParser(
+ /([a-z0-9]+)\.\.([a-z0-9]+)\s+(\S+)\s+->\s+(\S+)$/,
+ (result, [hashLocal, hashRemote, branchLocal, branchRemote]) => {
+ result.branch.local = branchLocal;
+ result.hash.local = hashLocal;
+ result.branch.remote = branchRemote;
+ result.hash.remote = hashRemote;
+ }
+ )
];
parsePullDetail = (stdOut, stdErr) => {
return parseStringResponse(new PullSummary(), parsers3, [stdOut, stdErr]);
};
parsePullResult = (stdOut, stdErr) => {
- return Object.assign(new PullSummary(), parsePullDetail(stdOut, stdErr), parseRemoteMessages(stdOut, stdErr));
+ return Object.assign(
+ new PullSummary(),
+ parsePullDetail(stdOut, stdErr),
+ parseRemoteMessages(stdOut, stdErr)
+ );
};
}
});
@@ -2620,6 +2995,7 @@ var init_parse_pull = __esm({
var parsers4, parseMergeResult, parseMergeDetail;
var init_parse_merge = __esm({
"src/lib/parsers/parse-merge.ts"() {
+ "use strict";
init_MergeSummary();
init_utils();
init_parse_pull();
@@ -2630,9 +3006,12 @@ var init_parse_merge = __esm({
new LineParser(/^CONFLICT\s+\((.+)\): Merge conflict in (.+)$/, (summary, [reason, file]) => {
summary.conflicts.push(new MergeSummaryConflict(reason, file));
}),
- new LineParser(/^CONFLICT\s+\((.+\/delete)\): (.+) deleted in (.+) and/, (summary, [reason, file, deleteRef]) => {
- summary.conflicts.push(new MergeSummaryConflict(reason, file, { deleteRef }));
- }),
+ new LineParser(
+ /^CONFLICT\s+\((.+\/delete)\): (.+) deleted in (.+) and/,
+ (summary, [reason, file, deleteRef]) => {
+ summary.conflicts.push(new MergeSummaryConflict(reason, file, { deleteRef }));
+ }
+ ),
new LineParser(/^CONFLICT\s+\((.+)\):/, (summary, [reason]) => {
summary.conflicts.push(new MergeSummaryConflict(reason, null));
}),
@@ -2668,6 +3047,7 @@ function mergeTask(customArgs) {
}
var init_merge = __esm({
"src/lib/tasks/merge.ts"() {
+ "use strict";
init_git_response_error();
init_parse_merge();
init_task();
@@ -2692,6 +3072,7 @@ function pushResultPushedItem(local, remote, status) {
var parsers5, parsePushResult, parsePushDetail;
var init_parse_push = __esm({
"src/lib/parsers/parse-push.ts"() {
+ "use strict";
init_utils();
init_parse_remote_messages();
parsers5 = [
@@ -2699,37 +3080,48 @@ var init_parse_push = __esm({
result.repo = repo;
}),
new LineParser(/^updating local tracking ref '(.+)'/, (result, [local]) => {
- result.ref = __spreadProps(__spreadValues({}, result.ref || {}), {
+ result.ref = {
+ ...result.ref || {},
local
- });
+ };
}),
new LineParser(/^[=*-]\s+([^:]+):(\S+)\s+\[(.+)]$/, (result, [local, remote, type]) => {
result.pushed.push(pushResultPushedItem(local, remote, type));
}),
- new LineParser(/^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/, (result, [local, remote, remoteName]) => {
- result.branch = __spreadProps(__spreadValues({}, result.branch || {}), {
- local,
- remote,
- remoteName
- });
- }),
- new LineParser(/^([^:]+):(\S+)\s+([a-z0-9]+)\.\.([a-z0-9]+)$/, (result, [local, remote, from, to]) => {
- result.update = {
- head: {
+ new LineParser(
+ /^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/,
+ (result, [local, remote, remoteName]) => {
+ result.branch = {
+ ...result.branch || {},
local,
- remote
- },
- hash: {
- from,
- to
- }
- };
- })
+ remote,
+ remoteName
+ };
+ }
+ ),
+ new LineParser(
+ /^([^:]+):(\S+)\s+([a-z0-9]+)\.\.([a-z0-9]+)$/,
+ (result, [local, remote, from, to]) => {
+ result.update = {
+ head: {
+ local,
+ remote
+ },
+ hash: {
+ from,
+ to
+ }
+ };
+ }
+ )
];
parsePushResult = (stdOut, stdErr) => {
const pushDetail = parsePushDetail(stdOut, stdErr);
const responseDetail = parseRemoteMessages(stdOut, stdErr);
- return __spreadValues(__spreadValues({}, pushDetail), responseDetail);
+ return {
+ ...pushDetail,
+ ...responseDetail
+ };
};
parsePushDetail = (stdOut, stdErr) => {
return parseStringResponse({ pushed: [] }, parsers5, [stdOut, stdErr]);
@@ -2766,6 +3158,7 @@ function pushTask(ref = {}, customArgs) {
}
var init_push = __esm({
"src/lib/tasks/push.ts"() {
+ "use strict";
init_parse_push();
init_utils();
}
@@ -2779,16 +3172,23 @@ function show_default() {
if (!commands.includes("--binary")) {
commands.splice(1, 0, "--binary");
}
- return this._runTask(straightThroughBufferTask(commands), trailingFunctionArgument(arguments));
+ return this._runTask(
+ straightThroughBufferTask(commands),
+ trailingFunctionArgument(arguments)
+ );
},
show() {
const commands = ["show", ...getTrailingOptions(arguments, 1)];
- return this._runTask(straightThroughStringTask(commands), trailingFunctionArgument(arguments));
+ return this._runTask(
+ straightThroughStringTask(commands),
+ trailingFunctionArgument(arguments)
+ );
}
};
}
var init_show = __esm({
"src/lib/tasks/show.ts"() {
+ "use strict";
init_utils();
init_task();
}
@@ -2798,16 +3198,17 @@ var init_show = __esm({
var fromPathRegex, FileStatusSummary;
var init_FileStatusSummary = __esm({
"src/lib/responses/FileStatusSummary.ts"() {
- fromPathRegex = /^(.+) -> (.+)$/;
+ "use strict";
+ fromPathRegex = /^(.+)\0(.+)$/;
FileStatusSummary = class {
constructor(path, index, working_dir) {
this.path = path;
this.index = index;
this.working_dir = working_dir;
- if (index + working_dir === "R") {
+ if (index === "R" || working_dir === "R") {
const detail = fromPathRegex.exec(path) || [null, path, path];
- this.from = detail[1] || "";
- this.path = detail[2] || "";
+ this.from = detail[2] || "";
+ this.path = detail[1] || "";
}
}
};
@@ -2822,19 +3223,19 @@ function renamedFile(line) {
to
};
}
-function parser2(indexX, indexY, handler) {
+function parser3(indexX, indexY, handler) {
return [`${indexX}${indexY}`, handler];
}
function conflicts(indexX, ...indexY) {
- return indexY.map((y) => parser2(indexX, y, (result, file) => append(result.conflicted, file)));
+ return indexY.map((y) => parser3(indexX, y, (result, file) => result.conflicted.push(file)));
}
function splitLine(result, lineStr) {
const trimmed2 = lineStr.trim();
switch (" ") {
case trimmed2.charAt(2):
- return data(trimmed2.charAt(0), trimmed2.charAt(1), trimmed2.substr(3));
+ return data(trimmed2.charAt(0), trimmed2.charAt(1), trimmed2.slice(3));
case trimmed2.charAt(1):
- return data(" " /* NONE */, trimmed2.charAt(0), trimmed2.substr(2));
+ return data(" " /* NONE */, trimmed2.charAt(0), trimmed2.slice(2));
default:
return;
}
@@ -2845,13 +3246,14 @@ function splitLine(result, lineStr) {
handler(result, path);
}
if (raw !== "##" && raw !== "!!") {
- result.files.push(new FileStatusSummary(path.replace(/\0.+$/, ""), index, workingDir));
+ result.files.push(new FileStatusSummary(path, index, workingDir));
}
}
}
var StatusSummary, parsers6, parseStatusSummary;
var init_StatusSummary = __esm({
"src/lib/responses/StatusSummary.ts"() {
+ "use strict";
init_utils();
init_FileStatusSummary();
StatusSummary = class {
@@ -2876,29 +3278,70 @@ var init_StatusSummary = __esm({
}
};
parsers6 = new Map([
- parser2(" " /* NONE */, "A" /* ADDED */, (result, file) => append(result.created, file)),
- parser2(" " /* NONE */, "D" /* DELETED */, (result, file) => append(result.deleted, file)),
- parser2(" " /* NONE */, "M" /* MODIFIED */, (result, file) => append(result.modified, file)),
- parser2("A" /* ADDED */, " " /* NONE */, (result, file) => append(result.created, file) && append(result.staged, file)),
- parser2("A" /* ADDED */, "M" /* MODIFIED */, (result, file) => append(result.created, file) && append(result.staged, file) && append(result.modified, file)),
- parser2("D" /* DELETED */, " " /* NONE */, (result, file) => append(result.deleted, file) && append(result.staged, file)),
- parser2("M" /* MODIFIED */, " " /* NONE */, (result, file) => append(result.modified, file) && append(result.staged, file)),
- parser2("M" /* MODIFIED */, "M" /* MODIFIED */, (result, file) => append(result.modified, file) && append(result.staged, file)),
- parser2("R" /* RENAMED */, " " /* NONE */, (result, file) => {
- append(result.renamed, renamedFile(file));
+ parser3(
+ " " /* NONE */,
+ "A" /* ADDED */,
+ (result, file) => result.created.push(file)
+ ),
+ parser3(
+ " " /* NONE */,
+ "D" /* DELETED */,
+ (result, file) => result.deleted.push(file)
+ ),
+ parser3(
+ " " /* NONE */,
+ "M" /* MODIFIED */,
+ (result, file) => result.modified.push(file)
+ ),
+ parser3("A" /* ADDED */, " " /* NONE */, (result, file) => {
+ result.created.push(file);
+ result.staged.push(file);
+ }),
+ parser3("A" /* ADDED */, "M" /* MODIFIED */, (result, file) => {
+ result.created.push(file);
+ result.staged.push(file);
+ result.modified.push(file);
+ }),
+ parser3("D" /* DELETED */, " " /* NONE */, (result, file) => {
+ result.deleted.push(file);
+ result.staged.push(file);
+ }),
+ parser3("M" /* MODIFIED */, " " /* NONE */, (result, file) => {
+ result.modified.push(file);
+ result.staged.push(file);
+ }),
+ parser3("M" /* MODIFIED */, "M" /* MODIFIED */, (result, file) => {
+ result.modified.push(file);
+ result.staged.push(file);
}),
- parser2("R" /* RENAMED */, "M" /* MODIFIED */, (result, file) => {
+ parser3("R" /* RENAMED */, " " /* NONE */, (result, file) => {
+ result.renamed.push(renamedFile(file));
+ }),
+ parser3("R" /* RENAMED */, "M" /* MODIFIED */, (result, file) => {
const renamed = renamedFile(file);
- append(result.renamed, renamed);
- append(result.modified, renamed.to);
+ result.renamed.push(renamed);
+ result.modified.push(renamed.to);
}),
- parser2("!" /* IGNORED */, "!" /* IGNORED */, (_result, _file) => {
- append(_result.ignored = _result.ignored || [], _file);
+ parser3("!" /* IGNORED */, "!" /* IGNORED */, (_result, _file) => {
+ (_result.ignored = _result.ignored || []).push(_file);
}),
- parser2("?" /* UNTRACKED */, "?" /* UNTRACKED */, (result, file) => append(result.not_added, file)),
+ parser3(
+ "?" /* UNTRACKED */,
+ "?" /* UNTRACKED */,
+ (result, file) => result.not_added.push(file)
+ ),
...conflicts("A" /* ADDED */, "A" /* ADDED */, "U" /* UNMERGED */),
- ...conflicts("D" /* DELETED */, "D" /* DELETED */, "U" /* UNMERGED */),
- ...conflicts("U" /* UNMERGED */, "A" /* ADDED */, "D" /* DELETED */, "U" /* UNMERGED */),
+ ...conflicts(
+ "D" /* DELETED */,
+ "D" /* DELETED */,
+ "U" /* UNMERGED */
+ ),
+ ...conflicts(
+ "U" /* UNMERGED */,
+ "A" /* ADDED */,
+ "D" /* DELETED */,
+ "U" /* UNMERGED */
+ ),
[
"##",
(result, line) => {
@@ -2906,18 +3349,19 @@ var init_StatusSummary = __esm({
const behindReg = /behind (\d+)/;
const currentReg = /^(.+?(?=(?:\.{3}|\s|$)))/;
const trackingReg = /\.{3}(\S*)/;
- const onEmptyBranchReg = /\son\s([\S]+)$/;
- let regexResult;
- regexResult = aheadReg.exec(line);
+ const onEmptyBranchReg = /\son\s(\S+?)(?=\.{3}|$)/;
+ let regexResult = aheadReg.exec(line);
result.ahead = regexResult && +regexResult[1] || 0;
regexResult = behindReg.exec(line);
result.behind = regexResult && +regexResult[1] || 0;
regexResult = currentReg.exec(line);
- result.current = regexResult && regexResult[1];
+ result.current = filterType(regexResult?.[1], filterString, null);
regexResult = trackingReg.exec(line);
- result.tracking = regexResult && regexResult[1];
+ result.tracking = filterType(regexResult?.[1], filterString, null);
regexResult = onEmptyBranchReg.exec(line);
- result.current = regexResult && regexResult[1] || result.current;
+ if (regexResult) {
+ result.current = filterType(regexResult?.[1], filterString, result.current);
+ }
result.detached = /\(no branch\)/.test(line);
}
]
@@ -2961,6 +3405,7 @@ function statusTask(customArgs) {
var ignoredOptions;
var init_status = __esm({
"src/lib/tasks/status.ts"() {
+ "use strict";
init_StatusSummary();
ignoredOptions = ["--null", "-z"];
}
@@ -2968,19 +3413,23 @@ var init_status = __esm({
// src/lib/tasks/version.ts
function versionResponse(major = 0, minor = 0, patch = 0, agent = "", installed = true) {
- return Object.defineProperty({
- major,
- minor,
- patch,
- agent,
- installed
- }, "toString", {
- value() {
- return `${this.major}.${this.minor}.${this.patch}`;
+ return Object.defineProperty(
+ {
+ major,
+ minor,
+ patch,
+ agent,
+ installed
},
- configurable: false,
- enumerable: false
- });
+ "toString",
+ {
+ value() {
+ return `${this.major}.${this.minor}.${this.patch}`;
+ },
+ configurable: false,
+ enumerable: false
+ }
+ );
}
function notInstalledResponse() {
return versionResponse(0, 0, 0, "", false);
@@ -3011,15 +3460,25 @@ function versionParser(stdOut) {
var NOT_INSTALLED, parsers7;
var init_version = __esm({
"src/lib/tasks/version.ts"() {
+ "use strict";
init_utils();
NOT_INSTALLED = "installed=false";
parsers7 = [
- new LineParser(/version (\d+)\.(\d+)\.(\d+)(?:\s*\((.+)\))?/, (result, [major, minor, patch, agent = ""]) => {
- Object.assign(result, versionResponse(asNumber(major), asNumber(minor), asNumber(patch), agent));
- }),
- new LineParser(/version (\d+)\.(\d+)\.(\D+)(.+)?$/, (result, [major, minor, patch, agent = ""]) => {
- Object.assign(result, versionResponse(asNumber(major), asNumber(minor), patch, agent));
- })
+ new LineParser(
+ /version (\d+)\.(\d+)\.(\d+)(?:\s*\((.+)\))?/,
+ (result, [major, minor, patch, agent = ""]) => {
+ Object.assign(
+ result,
+ versionResponse(asNumber(major), asNumber(minor), asNumber(patch), agent)
+ );
+ }
+ ),
+ new LineParser(
+ /version (\d+)\.(\d+)\.(\D+)(.+)?$/,
+ (result, [major, minor, patch, agent = ""]) => {
+ Object.assign(result, versionResponse(asNumber(major), asNumber(minor), patch, agent));
+ }
+ )
];
}
});
@@ -3032,11 +3491,14 @@ __export(simple_git_api_exports, {
var SimpleGitApi;
var init_simple_git_api = __esm({
"src/lib/simple-git-api.ts"() {
+ "use strict";
init_task_callback();
init_change_working_directory();
init_checkout();
+ init_count_objects();
init_commit();
init_config();
+ init_first_commit();
init_grep();
init_hash_object();
init_init();
@@ -3065,52 +3527,100 @@ var init_simple_git_api = __esm({
});
}
add(files) {
- return this._runTask(straightThroughStringTask(["add", ...asArray(files)]), trailingFunctionArgument(arguments));
+ return this._runTask(
+ straightThroughStringTask(["add", ...asArray(files)]),
+ trailingFunctionArgument(arguments)
+ );
}
cwd(directory) {
const next = trailingFunctionArgument(arguments);
if (typeof directory === "string") {
return this._runTask(changeWorkingDirectoryTask(directory, this._executor), next);
}
- if (typeof (directory == null ? void 0 : directory.path) === "string") {
- return this._runTask(changeWorkingDirectoryTask(directory.path, directory.root && this._executor || void 0), next);
+ if (typeof directory?.path === "string") {
+ return this._runTask(
+ changeWorkingDirectoryTask(
+ directory.path,
+ directory.root && this._executor || void 0
+ ),
+ next
+ );
}
- return this._runTask(configurationErrorTask("Git.cwd: workingDirectory must be supplied as a string"), next);
+ return this._runTask(
+ configurationErrorTask("Git.cwd: workingDirectory must be supplied as a string"),
+ next
+ );
}
hashObject(path, write) {
- return this._runTask(hashObjectTask(path, write === true), trailingFunctionArgument(arguments));
+ return this._runTask(
+ hashObjectTask(path, write === true),
+ trailingFunctionArgument(arguments)
+ );
}
init(bare) {
- return this._runTask(initTask(bare === true, this._executor.cwd, getTrailingOptions(arguments)), trailingFunctionArgument(arguments));
+ return this._runTask(
+ initTask(bare === true, this._executor.cwd, getTrailingOptions(arguments)),
+ trailingFunctionArgument(arguments)
+ );
}
merge() {
- return this._runTask(mergeTask(getTrailingOptions(arguments)), trailingFunctionArgument(arguments));
+ return this._runTask(
+ mergeTask(getTrailingOptions(arguments)),
+ trailingFunctionArgument(arguments)
+ );
}
mergeFromTo(remote, branch) {
if (!(filterString(remote) && filterString(branch))) {
- return this._runTask(configurationErrorTask(`Git.mergeFromTo requires that the 'remote' and 'branch' arguments are supplied as strings`));
+ return this._runTask(
+ configurationErrorTask(
+ `Git.mergeFromTo requires that the 'remote' and 'branch' arguments are supplied as strings`
+ )
+ );
}
- return this._runTask(mergeTask([remote, branch, ...getTrailingOptions(arguments)]), trailingFunctionArgument(arguments, false));
+ return this._runTask(
+ mergeTask([remote, branch, ...getTrailingOptions(arguments)]),
+ trailingFunctionArgument(arguments, false)
+ );
}
outputHandler(handler) {
this._executor.outputHandler = handler;
return this;
}
push() {
- const task = pushTask({
- remote: filterType(arguments[0], filterString),
- branch: filterType(arguments[1], filterString)
- }, getTrailingOptions(arguments));
+ const task = pushTask(
+ {
+ remote: filterType(arguments[0], filterString),
+ branch: filterType(arguments[1], filterString)
+ },
+ getTrailingOptions(arguments)
+ );
return this._runTask(task, trailingFunctionArgument(arguments));
}
stash() {
- return this._runTask(straightThroughStringTask(["stash", ...getTrailingOptions(arguments)]), trailingFunctionArgument(arguments));
+ return this._runTask(
+ straightThroughStringTask(["stash", ...getTrailingOptions(arguments)]),
+ trailingFunctionArgument(arguments)
+ );
}
status() {
- return this._runTask(statusTask(getTrailingOptions(arguments)), trailingFunctionArgument(arguments));
+ return this._runTask(
+ statusTask(getTrailingOptions(arguments)),
+ trailingFunctionArgument(arguments)
+ );
}
};
- Object.assign(SimpleGitApi.prototype, checkout_default(), commit_default(), config_default(), grep_default(), log_default(), show_default(), version_default());
+ Object.assign(
+ SimpleGitApi.prototype,
+ checkout_default(),
+ commit_default(),
+ config_default(),
+ count_objects_default(),
+ first_commit_default(),
+ grep_default(),
+ log_default(),
+ show_default(),
+ version_default()
+ );
}
});
@@ -3122,10 +3632,11 @@ __export(scheduler_exports, {
var import_promise_deferred2, createScheduledTask, Scheduler;
var init_scheduler = __esm({
"src/lib/runners/scheduler.ts"() {
+ "use strict";
init_utils();
import_promise_deferred2 = require("@kwsites/promise-deferred");
init_git_logger();
- createScheduledTask = (() => {
+ createScheduledTask = /* @__PURE__ */ (() => {
let id = 0;
return () => {
id++;
@@ -3147,7 +3658,12 @@ var init_scheduler = __esm({
}
schedule() {
if (!this.pending.length || this.running.length >= this.concurrency) {
- this.logger(`Schedule attempt ignored, pending=%s running=%s concurrency=%s`, this.pending.length, this.running.length, this.concurrency);
+ this.logger(
+ `Schedule attempt ignored, pending=%s running=%s concurrency=%s`,
+ this.pending.length,
+ this.running.length,
+ this.concurrency
+ );
return;
}
const task = append(this.running, this.pending.shift());
@@ -3178,6 +3694,7 @@ function applyPatchTask(patches, customArgs) {
}
var init_apply_patch = __esm({
"src/lib/tasks/apply-patch.ts"() {
+ "use strict";
init_task();
}
});
@@ -3200,6 +3717,7 @@ function branchDeletionFailure(branch) {
var BranchDeletionBatch;
var init_BranchDeleteSummary = __esm({
"src/lib/responses/BranchDeleteSummary.ts"() {
+ "use strict";
BranchDeletionBatch = class {
constructor() {
this.all = [];
@@ -3220,6 +3738,7 @@ function hasBranchDeletionError(data, processExitCode) {
var deleteSuccessRegex, deleteErrorRegex, parsers8, parseBranchDeletions;
var init_parse_branch_delete = __esm({
"src/lib/parsers/parse-branch-delete.ts"() {
+ "use strict";
init_BranchDeleteSummary();
init_utils();
deleteSuccessRegex = /(\S+)\s+\(\S+\s([^)]+)\)/;
@@ -3247,6 +3766,7 @@ var init_parse_branch_delete = __esm({
var BranchSummaryResult;
var init_BranchSummary = __esm({
"src/lib/responses/BranchSummary.ts"() {
+ "use strict";
BranchSummaryResult = class {
constructor() {
this.all = [];
@@ -3276,22 +3796,36 @@ var init_BranchSummary = __esm({
function branchStatus(input) {
return input ? input.charAt(0) : "";
}
-function parseBranchSummary(stdOut) {
- return parseStringResponse(new BranchSummaryResult(), parsers9, stdOut);
+function parseBranchSummary(stdOut, currentOnly = false) {
+ return parseStringResponse(
+ new BranchSummaryResult(),
+ currentOnly ? [currentBranchParser] : parsers9,
+ stdOut
+ );
}
-var parsers9;
+var parsers9, currentBranchParser;
var init_parse_branch = __esm({
"src/lib/parsers/parse-branch.ts"() {
+ "use strict";
init_BranchSummary();
init_utils();
parsers9 = [
- new LineParser(/^([*+]\s)?\((?:HEAD )?detached (?:from|at) (\S+)\)\s+([a-z0-9]+)\s(.*)$/, (result, [current, name, commit, label]) => {
- result.push(branchStatus(current), true, name, commit, label);
- }),
- new LineParser(/^([*+]\s)?(\S+)\s+([a-z0-9]+)\s?(.*)$/s, (result, [current, name, commit, label]) => {
- result.push(branchStatus(current), false, name, commit, label);
- })
+ new LineParser(
+ /^([*+]\s)?\((?:HEAD )?detached (?:from|at) (\S+)\)\s+([a-z0-9]+)\s(.*)$/,
+ (result, [current, name, commit, label]) => {
+ result.push(branchStatus(current), true, name, commit, label);
+ }
+ ),
+ new LineParser(
+ /^([*+]\s)?(\S+)\s+([a-z0-9]+)\s?(.*)$/s,
+ (result, [current, name, commit, label]) => {
+ result.push(branchStatus(current), false, name, commit, label);
+ }
+ )
];
+ currentBranchParser = new LineParser(/^(\S+)$/s, (result, [name]) => {
+ result.push("*" /* CURRENT */, false, name, "", "");
+ });
}
});
@@ -3310,6 +3844,7 @@ function containsDeleteBranchCommand(commands) {
}
function branchTask(customArgs) {
const isDelete = containsDeleteBranchCommand(customArgs);
+ const isCurrentOnly = customArgs.includes("--show-current");
const commands = ["branch", ...customArgs];
if (commands.length === 1) {
commands.push("-a");
@@ -3324,16 +3859,17 @@ function branchTask(customArgs) {
if (isDelete) {
return parseBranchDeletions(stdOut, stdErr).all[0];
}
- return parseBranchSummary(stdOut);
+ return parseBranchSummary(stdOut, isCurrentOnly);
}
};
}
function branchLocalTask() {
- const parser3 = parseBranchSummary;
return {
format: "utf-8",
commands: ["branch", "-v"],
- parser: parser3
+ parser(stdOut) {
+ return parseBranchSummary(stdOut);
+ }
};
}
function deleteBranchesTask(branches, forceDelete = false) {
@@ -3362,13 +3898,17 @@ function deleteBranchTask(branch, forceDelete = false) {
if (!hasBranchDeletionError(String(error), exitCode)) {
return fail(error);
}
- throw new GitResponseError(task.parser(bufferToString(stdOut), bufferToString(stdErr)), String(error));
+ throw new GitResponseError(
+ task.parser(bufferToString(stdOut), bufferToString(stdErr)),
+ String(error)
+ );
}
};
return task;
}
var init_branch = __esm({
"src/lib/tasks/branch.ts"() {
+ "use strict";
init_git_response_error();
init_parse_branch_delete();
init_parse_branch();
@@ -3377,11 +3917,17 @@ var init_branch = __esm({
});
// src/lib/responses/CheckIgnore.ts
-var parseCheckIgnore;
+function toPath(input) {
+ const path = input.trim().replace(/^["']|["']$/g, "");
+ return path && (0, import_node_path.normalize)(path);
+}
+var import_node_path, parseCheckIgnore;
var init_CheckIgnore = __esm({
"src/lib/responses/CheckIgnore.ts"() {
+ "use strict";
+ import_node_path = require("node:path");
parseCheckIgnore = (text) => {
- return text.split(/\n/g).map((line) => line.trim()).filter((file) => !!file);
+ return text.split(/\n/g).map(toPath).filter(Boolean);
};
}
});
@@ -3400,6 +3946,7 @@ function checkIgnoreTask(paths) {
}
var init_check_ignore = __esm({
"src/lib/tasks/check-ignore.ts"() {
+ "use strict";
init_CheckIgnore();
}
});
@@ -3429,6 +3976,7 @@ function cloneMirrorTask(repo, directory, customArgs) {
}
var init_clone = __esm({
"src/lib/tasks/clone.ts"() {
+ "use strict";
init_task();
init_utils();
}
@@ -3449,6 +3997,7 @@ function parseFetchResult(stdOut, stdErr) {
var parsers10;
var init_parse_fetch = __esm({
"src/lib/parsers/parse-fetch.ts"() {
+ "use strict";
init_utils();
parsers10 = [
new LineParser(/From (.+)$/, (result, [remote]) => {
@@ -3471,14 +4020,17 @@ var init_parse_fetch = __esm({
tracking
});
}),
- new LineParser(/\s*([^.]+)\.\.(\S+)\s+(\S+)\s*-> (.+)$/, (result, [from, to, name, tracking]) => {
- result.updated.push({
- name,
- tracking,
- to,
- from
- });
- })
+ new LineParser(
+ /\s*([^.]+)\.\.(\S+)\s+(\S+)\s*-> (.+)$/,
+ (result, [from, to, name, tracking]) => {
+ result.updated.push({
+ name,
+ tracking,
+ to,
+ from
+ });
+ }
+ )
];
}
});
@@ -3508,6 +4060,7 @@ function fetchTask(remote, branch, customArgs) {
}
var init_fetch = __esm({
"src/lib/tasks/fetch.ts"() {
+ "use strict";
init_parse_fetch();
init_task();
}
@@ -3520,6 +4073,7 @@ function parseMoveResult(stdOut) {
var parsers11;
var init_parse_move = __esm({
"src/lib/parsers/parse-move.ts"() {
+ "use strict";
init_utils();
parsers11 = [
new LineParser(/^Renaming (.+) to (.+)$/, (result, [from, to]) => {
@@ -3543,6 +4097,7 @@ function moveTask(from, to) {
}
var init_move = __esm({
"src/lib/tasks/move.ts"() {
+ "use strict";
init_parse_move();
init_utils();
}
@@ -3565,7 +4120,10 @@ function pullTask(remote, branch, customArgs) {
return parsePullResult(stdOut, stdErr);
},
onError(result, _error, _done, fail) {
- const pullError = parsePullErrorResult(bufferToString(result.stdOut), bufferToString(result.stdErr));
+ const pullError = parsePullErrorResult(
+ bufferToString(result.stdOut),
+ bufferToString(result.stdErr)
+ );
if (pullError) {
return fail(new GitResponseError(pullError));
}
@@ -3575,6 +4133,7 @@ function pullTask(remote, branch, customArgs) {
}
var init_pull = __esm({
"src/lib/tasks/pull.ts"() {
+ "use strict";
init_git_response_error();
init_parse_pull();
init_utils();
@@ -3590,7 +4149,7 @@ function parseGetRemotes(text) {
function parseGetRemotesVerbose(text) {
const remotes = {};
forEach(text, ([name, url, purpose]) => {
- if (!remotes.hasOwnProperty(name)) {
+ if (!Object.hasOwn(remotes, name)) {
remotes[name] = {
name,
refs: { fetch: "", push: "" }
@@ -3607,6 +4166,7 @@ function forEach(text, handler) {
}
var init_GetRemoteSummary = __esm({
"src/lib/responses/GetRemoteSummary.ts"() {
+ "use strict";
init_utils();
}
});
@@ -3620,7 +4180,7 @@ __export(remote_exports, {
remoteTask: () => remoteTask,
removeRemoteTask: () => removeRemoteTask
});
-function addRemoteTask(remoteName, remoteRepo, customArgs = []) {
+function addRemoteTask(remoteName, remoteRepo, customArgs) {
return straightThroughStringTask(["remote", "add", ...customArgs, remoteName, remoteRepo]);
}
function getRemotesTask(verbose) {
@@ -3634,14 +4194,14 @@ function getRemotesTask(verbose) {
parser: verbose ? parseGetRemotesVerbose : parseGetRemotes
};
}
-function listRemotesTask(customArgs = []) {
+function listRemotesTask(customArgs) {
const commands = [...customArgs];
if (commands[0] !== "ls-remote") {
commands.unshift("ls-remote");
}
return straightThroughStringTask(commands);
}
-function remoteTask(customArgs = []) {
+function remoteTask(customArgs) {
const commands = [...customArgs];
if (commands[0] !== "remote") {
commands.unshift("remote");
@@ -3653,6 +4213,7 @@ function removeRemoteTask(remoteName) {
}
var init_remote = __esm({
"src/lib/tasks/remote.ts"() {
+ "use strict";
init_GetRemoteSummary();
init_task();
}
@@ -3666,15 +4227,20 @@ __export(stash_list_exports, {
function stashListTask(opt = {}, customArgs) {
const options = parseLogOptions(opt);
const commands = ["stash", "list", ...options.commands, ...customArgs];
- const parser3 = createListLogSummaryParser(options.splitter, options.fields, logFormatFromCommand(commands));
+ const parser4 = createListLogSummaryParser(
+ options.splitter,
+ options.fields,
+ logFormatFromCommand(commands)
+ );
return validateLogFormatConfig(commands) || {
commands,
format: "utf-8",
- parser: parser3
+ parser: parser4
};
}
var init_stash_list = __esm({
"src/lib/tasks/stash-list.ts"() {
+ "use strict";
init_log_format();
init_parse_list_log_summary();
init_diff();
@@ -3708,14 +4274,15 @@ function updateSubModuleTask(customArgs) {
}
var init_sub_module = __esm({
"src/lib/tasks/sub-module.ts"() {
+ "use strict";
init_task();
}
});
// src/lib/responses/TagList.ts
function singleSorted(a, b) {
- const aIsNum = isNaN(a);
- const bIsNum = isNaN(b);
+ const aIsNum = Number.isNaN(a);
+ const bIsNum = Number.isNaN(b);
if (aIsNum !== bIsNum) {
return aIsNum ? 1 : -1;
}
@@ -3736,6 +4303,7 @@ function toNumber(input) {
var TagList, parseTagList;
var init_TagList = __esm({
"src/lib/responses/TagList.ts"() {
+ "use strict";
TagList = class {
constructor(all, latest) {
this.all = all;
@@ -3803,6 +4371,7 @@ function addAnnotatedTagTask(name, tagMessage) {
}
var init_tag = __esm({
"src/lib/tasks/tag.ts"() {
+ "use strict";
init_TagList();
}
});
@@ -3810,10 +4379,11 @@ var init_tag = __esm({
// src/git.js
var require_git = __commonJS({
"src/git.js"(exports2, module2) {
+ "use strict";
var { GitExecutor: GitExecutor2 } = (init_git_executor(), __toCommonJS(git_executor_exports));
var { SimpleGitApi: SimpleGitApi2 } = (init_simple_git_api(), __toCommonJS(simple_git_api_exports));
var { Scheduler: Scheduler2 } = (init_scheduler(), __toCommonJS(scheduler_exports));
- var { configurationErrorTask: configurationErrorTask2 } = (init_task(), __toCommonJS(task_exports));
+ var { adhocExecTask: adhocExecTask2, configurationErrorTask: configurationErrorTask2 } = (init_task(), __toCommonJS(task_exports));
var {
asArray: asArray2,
filterArray: filterArray2,
@@ -3859,12 +4429,17 @@ var require_git = __commonJS({
var { addAnnotatedTagTask: addAnnotatedTagTask2, addTagTask: addTagTask2, tagListTask: tagListTask2 } = (init_tag(), __toCommonJS(tag_exports));
var { straightThroughBufferTask: straightThroughBufferTask2, straightThroughStringTask: straightThroughStringTask2 } = (init_task(), __toCommonJS(task_exports));
function Git2(options, plugins) {
- this._executor = new GitExecutor2(options.binary, options.baseDir, new Scheduler2(options.maxConcurrentProcesses), plugins);
+ this._plugins = plugins;
+ this._executor = new GitExecutor2(
+ options.baseDir,
+ new Scheduler2(options.maxConcurrentProcesses),
+ plugins
+ );
this._trimmed = options.trimmed;
}
(Git2.prototype = Object.create(SimpleGitApi2.prototype)).constructor = Git2;
Git2.prototype.customBinary = function(command) {
- this._executor.binary = command;
+ this._plugins.reconfigure("binary", command);
return this;
};
Git2.prototype.env = function(name, value) {
@@ -3876,7 +4451,13 @@ var require_git = __commonJS({
return this;
};
Git2.prototype.stashList = function(options) {
- return this._runTask(stashListTask2(trailingOptionsArgument2(arguments) || {}, filterArray2(options) && options || []), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ stashListTask2(
+ trailingOptionsArgument2(arguments) || {},
+ filterArray2(options) && options || []
+ ),
+ trailingFunctionArgument2(arguments)
+ );
};
function createCloneTask(api, task, repoPath, localPath) {
if (typeof repoPath !== "string") {
@@ -3885,10 +4466,16 @@ var require_git = __commonJS({
return task(repoPath, filterType2(localPath, filterString2), getTrailingOptions2(arguments));
}
Git2.prototype.clone = function() {
- return this._runTask(createCloneTask("clone", cloneTask2, ...arguments), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ createCloneTask("clone", cloneTask2, ...arguments),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.mirror = function() {
- return this._runTask(createCloneTask("mirror", cloneMirrorTask2, ...arguments), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ createCloneTask("mirror", cloneMirrorTask2, ...arguments),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.mv = function(from, to) {
return this._runTask(moveTask2(from, to), trailingFunctionArgument2(arguments));
@@ -3902,46 +4489,89 @@ var require_git = __commonJS({
});
};
Git2.prototype.pull = function(remote, branch, options, then) {
- return this._runTask(pullTask2(filterType2(remote, filterString2), filterType2(branch, filterString2), getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ pullTask2(
+ filterType2(remote, filterString2),
+ filterType2(branch, filterString2),
+ getTrailingOptions2(arguments)
+ ),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.fetch = function(remote, branch) {
- return this._runTask(fetchTask2(filterType2(remote, filterString2), filterType2(branch, filterString2), getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ fetchTask2(
+ filterType2(remote, filterString2),
+ filterType2(branch, filterString2),
+ getTrailingOptions2(arguments)
+ ),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.silent = function(silence) {
- console.warn("simple-git deprecation notice: git.silent: logging should be configured using the `debug` library / `DEBUG` environment variable, this will be an error in version 3");
- return this;
+ return this._runTask(
+ adhocExecTask2(
+ () => console.warn(
+ "simple-git deprecation notice: git.silent: logging should be configured using the `debug` library / `DEBUG` environment variable, this method will be removed."
+ )
+ )
+ );
};
Git2.prototype.tags = function(options, then) {
- return this._runTask(tagListTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ tagListTask2(getTrailingOptions2(arguments)),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.rebase = function() {
- return this._runTask(straightThroughStringTask2(["rebase", ...getTrailingOptions2(arguments)]), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ straightThroughStringTask2(["rebase", ...getTrailingOptions2(arguments)]),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.reset = function(mode) {
- return this._runTask(resetTask2(getResetMode2(mode), getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ resetTask2(getResetMode2(mode), getTrailingOptions2(arguments)),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.revert = function(commit) {
const next = trailingFunctionArgument2(arguments);
if (typeof commit !== "string") {
return this._runTask(configurationErrorTask2("Commit must be a string"), next);
}
- return this._runTask(straightThroughStringTask2(["revert", ...getTrailingOptions2(arguments, 0, true), commit]), next);
+ return this._runTask(
+ straightThroughStringTask2(["revert", ...getTrailingOptions2(arguments, 0, true), commit]),
+ next
+ );
};
Git2.prototype.addTag = function(name) {
const task = typeof name === "string" ? addTagTask2(name) : configurationErrorTask2("Git.addTag requires a tag name");
return this._runTask(task, trailingFunctionArgument2(arguments));
};
Git2.prototype.addAnnotatedTag = function(tagName, tagMessage) {
- return this._runTask(addAnnotatedTagTask2(tagName, tagMessage), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ addAnnotatedTagTask2(tagName, tagMessage),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.deleteLocalBranch = function(branchName, forceDelete, then) {
- return this._runTask(deleteBranchTask2(branchName, typeof forceDelete === "boolean" ? forceDelete : false), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ deleteBranchTask2(branchName, typeof forceDelete === "boolean" ? forceDelete : false),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.deleteLocalBranches = function(branchNames, forceDelete, then) {
- return this._runTask(deleteBranchesTask2(branchNames, typeof forceDelete === "boolean" ? forceDelete : false), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ deleteBranchesTask2(branchNames, typeof forceDelete === "boolean" ? forceDelete : false),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.branch = function(options, then) {
- return this._runTask(branchTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ branchTask2(getTrailingOptions2(arguments)),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.branchLocal = function(then) {
return this._runTask(branchLocalTask2(), trailingFunctionArgument2(arguments));
@@ -3958,7 +4588,10 @@ var require_git = __commonJS({
command.push(...getTrailingOptions2(arguments, 0, true));
var next = trailingFunctionArgument2(arguments);
if (!command.length) {
- return this._runTask(configurationErrorTask2("Raw: must supply one or more command to execute"), next);
+ return this._runTask(
+ configurationErrorTask2("Raw: must supply one or more command to execute"),
+ next
+ );
}
return this._runTask(straightThroughStringTask2(command, this._trimmed), next);
};
@@ -3966,19 +4599,34 @@ var require_git = __commonJS({
return this._runTask(addSubModuleTask2(repo, path), trailingFunctionArgument2(arguments));
};
Git2.prototype.submoduleUpdate = function(args, then) {
- return this._runTask(updateSubModuleTask2(getTrailingOptions2(arguments, true)), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ updateSubModuleTask2(getTrailingOptions2(arguments, true)),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.submoduleInit = function(args, then) {
- return this._runTask(initSubModuleTask2(getTrailingOptions2(arguments, true)), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ initSubModuleTask2(getTrailingOptions2(arguments, true)),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.subModule = function(options, then) {
- return this._runTask(subModuleTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ subModuleTask2(getTrailingOptions2(arguments)),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.listRemote = function() {
- return this._runTask(listRemotesTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ listRemotesTask2(getTrailingOptions2(arguments)),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.addRemote = function(remoteName, remoteRepo, then) {
- return this._runTask(addRemoteTask2(remoteName, remoteRepo, getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ addRemoteTask2(remoteName, remoteRepo, getTrailingOptions2(arguments)),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.removeRemote = function(remoteName, then) {
return this._runTask(removeRemoteTask2(remoteName), trailingFunctionArgument2(arguments));
@@ -3987,7 +4635,10 @@ var require_git = __commonJS({
return this._runTask(getRemotesTask2(verbose === true), trailingFunctionArgument2(arguments));
};
Git2.prototype.remote = function(options, then) {
- return this._runTask(remoteTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ remoteTask2(getTrailingOptions2(arguments)),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.tag = function(options, then) {
const command = getTrailingOptions2(arguments);
@@ -3997,17 +4648,29 @@ var require_git = __commonJS({
return this._runTask(straightThroughStringTask2(command), trailingFunctionArgument2(arguments));
};
Git2.prototype.updateServerInfo = function(then) {
- return this._runTask(straightThroughStringTask2(["update-server-info"]), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ straightThroughStringTask2(["update-server-info"]),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.pushTags = function(remote, then) {
- const task = pushTagsTask2({ remote: filterType2(remote, filterString2) }, getTrailingOptions2(arguments));
+ const task = pushTagsTask2(
+ { remote: filterType2(remote, filterString2) },
+ getTrailingOptions2(arguments)
+ );
return this._runTask(task, trailingFunctionArgument2(arguments));
};
Git2.prototype.rm = function(files) {
- return this._runTask(straightThroughStringTask2(["rm", "-f", ...asArray2(files)]), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ straightThroughStringTask2(["rm", "-f", ...asArray2(files)]),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.rmKeepLocal = function(files) {
- return this._runTask(straightThroughStringTask2(["rm", "--cached", ...asArray2(files)]), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ straightThroughStringTask2(["rm", "--cached", ...asArray2(files)]),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.catFile = function(options, then) {
return this._catFile("utf-8", arguments);
@@ -4020,7 +4683,10 @@ var require_git = __commonJS({
var command = ["cat-file"];
var options = args[0];
if (typeof options === "string") {
- return this._runTask(configurationErrorTask2("Git.catFile: options must be supplied as an array of strings"), handler);
+ return this._runTask(
+ configurationErrorTask2("Git.catFile: options must be supplied as an array of strings"),
+ handler
+ );
}
if (Array.isArray(options)) {
command.push.apply(command, options);
@@ -4029,25 +4695,38 @@ var require_git = __commonJS({
return this._runTask(task, handler);
};
Git2.prototype.diff = function(options, then) {
- const task = filterString2(options) ? configurationErrorTask2("git.diff: supplying options as a single string is no longer supported, switch to an array of strings") : straightThroughStringTask2(["diff", ...getTrailingOptions2(arguments)]);
+ const task = filterString2(options) ? configurationErrorTask2(
+ "git.diff: supplying options as a single string is no longer supported, switch to an array of strings"
+ ) : straightThroughStringTask2(["diff", ...getTrailingOptions2(arguments)]);
return this._runTask(task, trailingFunctionArgument2(arguments));
};
Git2.prototype.diffSummary = function() {
- return this._runTask(diffSummaryTask2(getTrailingOptions2(arguments, 1)), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ diffSummaryTask2(getTrailingOptions2(arguments, 1)),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.applyPatch = function(patches) {
- const task = !filterStringOrStringArray2(patches) ? configurationErrorTask2(`git.applyPatch requires one or more string patches as the first argument`) : applyPatchTask2(asArray2(patches), getTrailingOptions2([].slice.call(arguments, 1)));
+ const task = !filterStringOrStringArray2(patches) ? configurationErrorTask2(
+ `git.applyPatch requires one or more string patches as the first argument`
+ ) : applyPatchTask2(asArray2(patches), getTrailingOptions2([].slice.call(arguments, 1)));
return this._runTask(task, trailingFunctionArgument2(arguments));
};
Git2.prototype.revparse = function() {
const commands = ["rev-parse", ...getTrailingOptions2(arguments, true)];
- return this._runTask(straightThroughStringTask2(commands, true), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ straightThroughStringTask2(commands, true),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.clean = function(mode, options, then) {
const usingCleanOptionsArray = isCleanOptionsArray2(mode);
const cleanMode = usingCleanOptionsArray && mode.join("") || filterType2(mode, filterString2) || "";
const customArgs = getTrailingOptions2([].slice.call(arguments, usingCleanOptionsArray ? 1 : 0));
- return this._runTask(cleanWithOptionsTask2(cleanMode, customArgs), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ cleanWithOptionsTask2(cleanMode, customArgs),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.exec = function(then) {
const task = {
@@ -4062,13 +4741,25 @@ var require_git = __commonJS({
return this._runTask(task);
};
Git2.prototype.clearQueue = function() {
- return this;
+ return this._runTask(
+ adhocExecTask2(
+ () => console.warn(
+ "simple-git deprecation notice: clearQueue() is deprecated and will be removed, switch to using the abortPlugin instead."
+ )
+ )
+ );
};
Git2.prototype.checkIgnore = function(pathnames, then) {
- return this._runTask(checkIgnoreTask2(asArray2(filterType2(pathnames, filterStringOrStringArray2, []))), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ checkIgnoreTask2(asArray2(filterType2(pathnames, filterStringOrStringArray2, []))),
+ trailingFunctionArgument2(arguments)
+ );
};
Git2.prototype.checkIsRepo = function(checkType, then) {
- return this._runTask(checkIsRepoTask2(filterType2(checkType, filterString2)), trailingFunctionArgument2(arguments));
+ return this._runTask(
+ checkIsRepoTask2(filterType2(checkType, filterString2)),
+ trailingFunctionArgument2(arguments)
+ );
};
module2.exports = Git2;
}
@@ -4092,9 +4783,15 @@ function gitExportFactory(factory) {
}
function gitInstanceFactory(baseDir, options) {
const plugins = new PluginStore();
- const config = createInstanceConfig(baseDir && (typeof baseDir === "string" ? { baseDir } : baseDir) || {}, options);
+ const config = createInstanceConfig(
+ baseDir && (typeof baseDir === "string" ? { baseDir } : baseDir) || {},
+ options
+ );
if (!folderExists(config.baseDir)) {
- throw new GitConstructError(config, `Cannot use simple-git on a directory that does not exist`);
+ throw new GitConstructError(
+ config,
+ `Cannot use simple-git on a directory that does not exist`
+ );
}
if (Array.isArray(config.config)) {
plugins.add(commandConfigPrefixingPlugin(config.config));
@@ -4108,11 +4805,13 @@ function gitInstanceFactory(baseDir, options) {
config.spawnOptions && plugins.add(spawnOptionsPlugin(config.spawnOptions));
plugins.add(errorDetectionPlugin(errorDetectionHandler(true)));
config.errors && plugins.add(errorDetectionPlugin(config.errors));
+ customBinaryPlugin(plugins, config.binary, config.unsafe?.allowUnsafeCustomBinary);
return new Git(config, plugins);
}
var Git;
var init_git_factory = __esm({
"src/lib/git-factory.ts"() {
+ "use strict";
init_api();
init_plugins();
init_suffix_paths_plugin();
@@ -4140,22 +4839,27 @@ function gitP(...args) {
function chainReturn() {
return chain;
}
- const promiseApi = [...functionNamesBuilderApi, ...functionNamesPromiseApi].reduce((api, name) => {
- const isAsync = functionNamesPromiseApi.includes(name);
- const valid = isAsync ? asyncWrapper(name, git) : syncWrapper(name, git, api);
- const alternative = isAsync ? chainReturn : builderReturn;
- Object.defineProperty(api, name, {
- enumerable: false,
- configurable: false,
- value: git ? valid : alternative
- });
- return api;
- }, {});
+ const promiseApi = [...functionNamesBuilderApi, ...functionNamesPromiseApi].reduce(
+ (api, name) => {
+ const isAsync = functionNamesPromiseApi.includes(name);
+ const valid = isAsync ? asyncWrapper(name, git) : syncWrapper(name, git, api);
+ const alternative = isAsync ? chainReturn : builderReturn;
+ Object.defineProperty(api, name, {
+ enumerable: false,
+ configurable: false,
+ value: git ? valid : alternative
+ });
+ return api;
+ },
+ {}
+ );
return promiseApi;
function asyncWrapper(fn, git2) {
return function(...args2) {
if (typeof args2[args2.length] === "function") {
- throw new TypeError("Promise interface requires that handlers are not supplied inline, trailing function not allowed in call to " + fn);
+ throw new TypeError(
+ "Promise interface requires that handlers are not supplied inline, trailing function not allowed in call to " + fn
+ );
}
return chain.then(function() {
return new Promise(function(resolve, reject) {
@@ -4190,6 +4894,7 @@ function toError(error) {
var functionNamesBuilderApi, functionNamesPromiseApi;
var init_promise_wrapped = __esm({
"src/lib/runners/promise-wrapped.ts"() {
+ "use strict";
init_git_response_error();
init_git_factory();
functionNamesBuilderApi = ["customBinary", "env", "outputHandler", "silent"];
diff --git a/action/node_modules/simple-git/dist/cjs/index.js.map b/action/node_modules/simple-git/dist/cjs/index.js.map
index 71b304523..b55274536 100644
--- a/action/node_modules/simple-git/dist/cjs/index.js.map
+++ b/action/node_modules/simple-git/dist/cjs/index.js.map
@@ -1,7 +1,7 @@
{
"version": 3,
- "sources": ["../../src/lib/errors/git-error.ts", "../../src/lib/errors/git-response-error.ts", "../../src/lib/args/pathspec.ts", "../../src/lib/errors/git-construct-error.ts", "../../src/lib/errors/git-plugin-error.ts", "../../src/lib/errors/task-configuration-error.ts", "../../src/lib/utils/util.ts", "../../src/lib/utils/argument-filters.ts", "../../src/lib/utils/exit-codes.ts", "../../src/lib/utils/git-output-streams.ts", "../../src/lib/utils/line-parser.ts", "../../src/lib/utils/simple-git-options.ts", "../../src/lib/utils/task-options.ts", "../../src/lib/utils/task-parser.ts", "../../src/lib/utils/index.ts", "../../src/lib/tasks/check-is-repo.ts", "../../src/lib/responses/CleanSummary.ts", "../../src/lib/tasks/task.ts", "../../src/lib/tasks/clean.ts", "../../src/lib/responses/ConfigList.ts", "../../src/lib/tasks/config.ts", "../../src/lib/tasks/grep.ts", "../../src/lib/tasks/reset.ts", "../../src/lib/api.ts", "../../src/lib/plugins/abort-plugin.ts", "../../src/lib/plugins/block-unsafe-operations-plugin.ts", "../../src/lib/plugins/command-config-prefixing-plugin.ts", "../../src/lib/plugins/completion-detection.plugin.ts", "../../src/lib/plugins/error-detection.plugin.ts", "../../src/lib/plugins/plugin-store.ts", "../../src/lib/plugins/progress-monitor-plugin.ts", "../../src/lib/plugins/simple-git-plugin.ts", "../../src/lib/plugins/spawn-options-plugin.ts", "../../src/lib/plugins/timout-plugin.ts", "../../src/lib/plugins/index.ts", "../../src/lib/plugins/suffix-paths.plugin.ts", "../../src/lib/git-logger.ts", "../../src/lib/runners/tasks-pending-queue.ts", "../../src/lib/runners/git-executor-chain.ts", "../../src/lib/runners/git-executor.ts", "../../src/lib/task-callback.ts", "../../src/lib/tasks/change-working-directory.ts", "../../src/lib/tasks/checkout.ts", "../../src/lib/parsers/parse-commit.ts", "../../src/lib/tasks/commit.ts", "../../src/lib/tasks/hash-object.ts", "../../src/lib/responses/InitSummary.ts", "../../src/lib/tasks/init.ts", "../../src/lib/args/log-format.ts", "../../src/lib/responses/DiffSummary.ts", "../../src/lib/parsers/parse-diff-summary.ts", "../../src/lib/parsers/parse-list-log-summary.ts", "../../src/lib/tasks/diff.ts", "../../src/lib/tasks/log.ts", "../../src/lib/responses/MergeSummary.ts", "../../src/lib/responses/PullSummary.ts", "../../src/lib/parsers/parse-remote-objects.ts", "../../src/lib/parsers/parse-remote-messages.ts", "../../src/lib/parsers/parse-pull.ts", "../../src/lib/parsers/parse-merge.ts", "../../src/lib/tasks/merge.ts", "../../src/lib/parsers/parse-push.ts", "../../src/lib/tasks/push.ts", "../../src/lib/tasks/show.ts", "../../src/lib/responses/FileStatusSummary.ts", "../../src/lib/responses/StatusSummary.ts", "../../src/lib/tasks/status.ts", "../../src/lib/tasks/version.ts", "../../src/lib/simple-git-api.ts", "../../src/lib/runners/scheduler.ts", "../../src/lib/tasks/apply-patch.ts", "../../src/lib/responses/BranchDeleteSummary.ts", "../../src/lib/parsers/parse-branch-delete.ts", "../../src/lib/responses/BranchSummary.ts", "../../src/lib/parsers/parse-branch.ts", "../../src/lib/tasks/branch.ts", "../../src/lib/responses/CheckIgnore.ts", "../../src/lib/tasks/check-ignore.ts", "../../src/lib/tasks/clone.ts", "../../src/lib/parsers/parse-fetch.ts", "../../src/lib/tasks/fetch.ts", "../../src/lib/parsers/parse-move.ts", "../../src/lib/tasks/move.ts", "../../src/lib/tasks/pull.ts", "../../src/lib/responses/GetRemoteSummary.ts", "../../src/lib/tasks/remote.ts", "../../src/lib/tasks/stash-list.ts", "../../src/lib/tasks/sub-module.ts", "../../src/lib/responses/TagList.ts", "../../src/lib/tasks/tag.ts", "../../src/git.js", "../../src/lib/git-factory.ts", "../../src/lib/runners/promise-wrapped.ts", "../../src/index.js"],
- "sourcesContent": ["import type { SimpleGitTask } from '../types';\n\n/**\n * The `GitError` is thrown when the underlying `git` process throws a\n * fatal exception (eg an `ENOENT` exception when attempting to use a\n * non-writable directory as the root for your repo), and acts as the\n * base class for more specific errors thrown by the parsing of the\n * git response or errors in the configuration of the task about to\n * be run.\n *\n * When an exception is thrown, pending tasks in the same instance will\n * not be executed. The recommended way to run a series of tasks that\n * can independently fail without needing to prevent future tasks from\n * running is to catch them individually:\n *\n * ```typescript\n import { gitP, SimpleGit, GitError, PullResult } from 'simple-git';\n\n function catchTask (e: GitError) {\n return e.\n }\n\n const git = gitP(repoWorkingDir);\n const pulled: PullResult | GitError = await git.pull().catch(catchTask);\n const pushed: string | GitError = await git.pushTags().catch(catchTask);\n ```\n */\nexport class GitError extends Error {\n constructor(public task?: SimpleGitTask, message?: string) {\n super(message);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n", "import { GitError } from './git-error';\n\n/**\n * The `GitResponseError` is the wrapper for a parsed response that is treated as\n * a fatal error, for example attempting a `merge` can leave the repo in a corrupted\n * state when there are conflicts so the task will reject rather than resolve.\n *\n * For example, catching the merge conflict exception:\n *\n * ```typescript\n import { gitP, SimpleGit, GitResponseError, MergeSummary } from 'simple-git';\n\n const git = gitP(repoRoot);\n const mergeOptions: string[] = ['--no-ff', 'other-branch'];\n const mergeSummary: MergeSummary = await git.merge(mergeOptions)\n .catch((e: GitResponseError) => e.git);\n\n if (mergeSummary.failed) {\n // deal with the error\n }\n ```\n */\nexport class GitResponseError extends GitError {\n constructor(\n /**\n * `.git` access the parsed response that is treated as being an error\n */\n public readonly git: T,\n message?: string\n ) {\n super(undefined, message || String(git));\n }\n}\n", "const cache = new WeakMap();\n\nexport function pathspec(...paths: string[]) {\n const key = new String(paths);\n cache.set(key, paths);\n\n return key as string;\n}\n\nexport function isPathSpec(path: string | unknown): path is string {\n return path instanceof String && cache.has(path);\n}\n\nexport function toPaths(pathSpec: string): string[] {\n return cache.get(pathSpec) || [];\n}\n", "import { GitError } from './git-error';\nimport { SimpleGitOptions } from '../types';\n\n/**\n * The `GitConstructError` is thrown when an error occurs in the constructor\n * of the `simple-git` instance itself. Most commonly as a result of using\n * a `baseDir` option that points to a folder that either does not exist,\n * or cannot be read by the user the node script is running as.\n *\n * Check the `.message` property for more detail including the properties\n * passed to the constructor.\n */\nexport class GitConstructError extends GitError {\n constructor(public readonly config: SimpleGitOptions, message: string) {\n super(undefined, message);\n }\n}\n", "import { SimpleGitOptions, SimpleGitTask } from '../types';\nimport { GitError } from './git-error';\n\nexport class GitPluginError extends GitError {\n constructor(\n public task?: SimpleGitTask,\n public readonly plugin?: keyof SimpleGitOptions,\n message?: string\n ) {\n super(task, message);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n", "import { GitError } from './git-error';\n\n/**\n * The `TaskConfigurationError` is thrown when a command was incorrectly\n * configured. An error of this kind means that no attempt was made to\n * run your command through the underlying `git` binary.\n *\n * Check the `.message` property for more detail on why your configuration\n * resulted in an error.\n */\nexport class TaskConfigurationError extends GitError {\n constructor(message?: string) {\n super(undefined, message);\n }\n}\n", "import { exists, FOLDER } from '@kwsites/file-exists';\nimport { Maybe } from '../types';\n\nexport const NULL = '\\0';\n\nexport const NOOP: (...args: any[]) => void = () => {};\n\n/**\n * Returns either the source argument when it is a `Function`, or the default\n * `NOOP` function constant\n */\nexport function asFunction any>(source: T | any): T {\n return typeof source === 'function' ? source : NOOP;\n}\n\n/**\n * Determines whether the supplied argument is both a function, and is not\n * the `NOOP` function.\n */\nexport function isUserFunction(source: T | any): source is T {\n return typeof source === 'function' && source !== NOOP;\n}\n\nexport function splitOn(input: string, char: string): [string, string] {\n const index = input.indexOf(char);\n if (index <= 0) {\n return [input, ''];\n }\n\n return [input.substr(0, index), input.substr(index + 1)];\n}\n\nexport function first(input: T, offset?: number): Maybe;\nexport function first(input: T, offset?: number): Maybe;\nexport function first(input: any[] | IArguments, offset = 0): Maybe {\n return isArrayLike(input) && input.length > offset ? input[offset] : undefined;\n}\n\nexport function last(input: T, offset?: number): Maybe;\nexport function last(input: T, offset?: number): Maybe;\nexport function last(input: T, offset?: number): Maybe;\nexport function last(input: unknown, offset = 0) {\n if (isArrayLike(input) && input.length > offset) {\n return input[input.length - 1 - offset];\n }\n}\n\ntype ArrayLike = T[] | IArguments | { [index: number]: T; length: number };\n\nfunction isArrayLike(input: any): input is ArrayLike {\n return !!(input && typeof input.length === 'number');\n}\n\nexport function toLinesWithContent(input = '', trimmed = true, separator = '\\n'): string[] {\n return input.split(separator).reduce((output, line) => {\n const lineContent = trimmed ? line.trim() : line;\n if (lineContent) {\n output.push(lineContent);\n }\n return output;\n }, [] as string[]);\n}\n\ntype LineWithContentCallback = (line: string) => T;\n\nexport function forEachLineWithContent(\n input: string,\n callback: LineWithContentCallback\n): T[] {\n return toLinesWithContent(input, true).map((line) => callback(line));\n}\n\nexport function folderExists(path: string): boolean {\n return exists(path, FOLDER);\n}\n\n/**\n * Adds `item` into the `target` `Array` or `Set` when it is not already present and returns the `item`.\n */\nexport function append(target: T[] | Set, item: T): typeof item {\n if (Array.isArray(target)) {\n if (!target.includes(item)) {\n target.push(item);\n }\n } else {\n target.add(item);\n }\n return item;\n}\n\n/**\n * Adds `item` into the `target` `Array` when it is not already present and returns the `target`.\n */\nexport function including(target: T[], item: T): typeof target {\n if (Array.isArray(target) && !target.includes(item)) {\n target.push(item);\n }\n\n return target;\n}\n\nexport function remove(target: Set | T[], item: T): T {\n if (Array.isArray(target)) {\n const index = target.indexOf(item);\n if (index >= 0) {\n target.splice(index, 1);\n }\n } else {\n target.delete(item);\n }\n return item;\n}\n\nexport const objectToString = Object.prototype.toString.call.bind(Object.prototype.toString) as (\n input: any\n) => string;\n\nexport function asArray(source: T | T[]): T[] {\n return Array.isArray(source) ? source : [source];\n}\n\nexport function asStringArray(source: T | T[]): string[] {\n return asArray(source).map(String);\n}\n\nexport function asNumber(source: string | null | undefined, onNaN = 0) {\n if (source == null) {\n return onNaN;\n }\n\n const num = parseInt(source, 10);\n return isNaN(num) ? onNaN : num;\n}\n\nexport function prefixedArray(input: T[], prefix: T): T[] {\n const output: T[] = [];\n for (let i = 0, max = input.length; i < max; i++) {\n output.push(prefix, input[i]);\n }\n return output;\n}\n\nexport function bufferToString(input: Buffer | Buffer[]): string {\n return (Array.isArray(input) ? Buffer.concat(input) : input).toString('utf-8');\n}\n\n/**\n * Get a new object from a source object with only the listed properties.\n */\nexport function pick(source: Record, properties: string[]) {\n return Object.assign(\n {},\n ...properties.map((property) => (property in source ? { [property]: source[property] } : {}))\n );\n}\n\nexport function delay(duration = 0): Promise {\n return new Promise((done) => setTimeout(done, duration));\n}\n", "import { Maybe, Options, Primitives } from '../types';\nimport { objectToString } from './util';\nimport { isPathSpec } from '../args/pathspec';\n\nexport interface ArgumentFilterPredicate {\n (input: any): input is T;\n}\n\nexport function filterType(\n input: K,\n filter: ArgumentFilterPredicate\n): K extends T ? T : undefined;\nexport function filterType(input: K, filter: ArgumentFilterPredicate, def: T): T;\nexport function filterType(input: K, filter: ArgumentFilterPredicate, def?: T): Maybe {\n if (filter(input)) {\n return input;\n }\n return arguments.length > 2 ? def : undefined;\n}\n\nexport const filterArray: ArgumentFilterPredicate> = (input): input is Array => {\n return Array.isArray(input);\n};\n\nexport function filterPrimitives(\n input: unknown,\n omit?: Array<'boolean' | 'string' | 'number'>\n): input is Primitives {\n const type = isPathSpec(input) ? 'string' : typeof input;\n\n return (\n /number|string|boolean/.test(type) &&\n (!omit || !omit.includes(type as 'boolean' | 'string' | 'number'))\n );\n}\n\nexport const filterString: ArgumentFilterPredicate = (input): input is string => {\n return typeof input === 'string';\n};\n\nexport const filterStringArray: ArgumentFilterPredicate = (input): input is string[] => {\n return Array.isArray(input) && input.every(filterString);\n};\n\nexport const filterStringOrStringArray: ArgumentFilterPredicate = (\n input\n): input is string | string[] => {\n return filterString(input) || (Array.isArray(input) && input.every(filterString));\n};\n\nexport function filterPlainObject(input: T | unknown): input is T;\nexport function filterPlainObject(input: T | unknown): input is T {\n return !!input && objectToString(input) === '[object Object]';\n}\n\nexport function filterFunction(input: unknown): input is Function {\n return typeof input === 'function';\n}\n\nexport const filterHasLength: ArgumentFilterPredicate<{ length: number }> = (\n input\n): input is { length: number } => {\n if (input == null || 'number|boolean|function'.includes(typeof input)) {\n return false;\n }\n return Array.isArray(input) || typeof input === 'string' || typeof input.length === 'number';\n};\n", "/**\n * Known process exit codes used by the task parsers to determine whether an error\n * was one they can automatically handle\n */\nexport enum ExitCodes {\n SUCCESS,\n ERROR,\n NOT_FOUND = -2,\n UNCLEAN = 128,\n}\n", "import { TaskResponseFormat } from '../types';\n\nexport class GitOutputStreams {\n constructor(public readonly stdOut: T, public readonly stdErr: T) {}\n\n asStrings(): GitOutputStreams {\n return new GitOutputStreams(this.stdOut.toString('utf8'), this.stdErr.toString('utf8'));\n }\n}\n", "export class LineParser {\n protected matches: string[] = [];\n\n private _regExp: RegExp[];\n\n constructor(\n regExp: RegExp | RegExp[],\n useMatches?: (target: T, match: string[]) => boolean | void\n ) {\n this._regExp = Array.isArray(regExp) ? regExp : [regExp];\n if (useMatches) {\n this.useMatches = useMatches;\n }\n }\n\n parse = (line: (offset: number) => string | undefined, target: T): boolean => {\n this.resetMatches();\n\n if (!this._regExp.every((reg, index) => this.addMatch(reg, index, line(index)))) {\n return false;\n }\n\n return this.useMatches(target, this.prepareMatches()) !== false;\n };\n\n // @ts-ignore\n protected useMatches(target: T, match: string[]): boolean | void {\n throw new Error(`LineParser:useMatches not implemented`);\n }\n\n protected resetMatches() {\n this.matches.length = 0;\n }\n\n protected prepareMatches() {\n return this.matches;\n }\n\n protected addMatch(reg: RegExp, index: number, line?: string) {\n const matched = line && reg.exec(line);\n if (matched) {\n this.pushMatch(index, matched);\n }\n\n return !!matched;\n }\n\n protected pushMatch(_index: number, matched: string[]) {\n this.matches.push(...matched.slice(1));\n }\n}\n\nexport class RemoteLineParser extends LineParser {\n protected addMatch(reg: RegExp, index: number, line?: string): boolean {\n return /^remote:\\s/.test(String(line)) && super.addMatch(reg, index, line);\n }\n\n protected pushMatch(index: number, matched: string[]) {\n if (index > 0 || matched.length > 1) {\n super.pushMatch(index, matched);\n }\n }\n}\n", "import { SimpleGitOptions } from '../types';\n\nconst defaultOptions: Omit = {\n binary: 'git',\n maxConcurrentProcesses: 5,\n config: [],\n trimmed: false,\n};\n\nexport function createInstanceConfig(\n ...options: Array | undefined>\n): SimpleGitOptions {\n const baseDir = process.cwd();\n const config: SimpleGitOptions = Object.assign(\n { baseDir, ...defaultOptions },\n ...options.filter((o) => typeof o === 'object' && o)\n );\n\n config.baseDir = config.baseDir || baseDir;\n config.trimmed = config.trimmed === true;\n\n return config;\n}\n", "import {\n filterArray,\n filterFunction,\n filterPlainObject,\n filterPrimitives,\n filterType,\n} from './argument-filters';\nimport { asFunction, isUserFunction, last } from './util';\nimport { Maybe, Options, OptionsValues } from '../types';\nimport { isPathSpec } from '../args/pathspec';\n\nexport function appendTaskOptions(\n options: Maybe,\n commands: string[] = []\n): string[] {\n if (!filterPlainObject(options)) {\n return commands;\n }\n\n return Object.keys(options).reduce((commands: string[], key: string) => {\n const value: OptionsValues = options[key];\n\n if (isPathSpec(value)) {\n commands.push(value);\n } else if (filterPrimitives(value, ['boolean'])) {\n commands.push(key + '=' + value);\n } else {\n commands.push(key);\n }\n\n return commands;\n }, commands);\n}\n\nexport function getTrailingOptions(\n args: IArguments,\n initialPrimitive = 0,\n objectOnly = false\n): string[] {\n const command: string[] = [];\n\n for (let i = 0, max = initialPrimitive < 0 ? args.length : initialPrimitive; i < max; i++) {\n if ('string|number'.includes(typeof args[i])) {\n command.push(String(args[i]));\n }\n }\n\n appendTaskOptions(trailingOptionsArgument(args), command);\n if (!objectOnly) {\n command.push(...trailingArrayArgument(args));\n }\n\n return command;\n}\n\nfunction trailingArrayArgument(args: IArguments) {\n const hasTrailingCallback = typeof last(args) === 'function';\n return filterType(last(args, hasTrailingCallback ? 1 : 0), filterArray, []);\n}\n\n/**\n * Given any number of arguments, returns the trailing options argument, ignoring a trailing function argument\n * if there is one. When not found, the return value is null.\n */\nexport function trailingOptionsArgument(args: IArguments): Maybe {\n const hasTrailingCallback = filterFunction(last(args));\n return filterType(last(args, hasTrailingCallback ? 1 : 0), filterPlainObject);\n}\n\n/**\n * Returns either the source argument when it is a `Function`, or the default\n * `NOOP` function constant\n */\nexport function trailingFunctionArgument(\n args: unknown[] | IArguments | unknown,\n includeNoop = true\n): Maybe<(...args: any[]) => unknown> {\n const callback = asFunction(last(args));\n return includeNoop || isUserFunction(callback) ? callback : undefined;\n}\n", "import type { MaybeArray, TaskParser, TaskResponseFormat } from '../types';\nimport { GitOutputStreams } from './git-output-streams';\nimport { LineParser } from './line-parser';\nimport { asArray, toLinesWithContent } from './util';\n\nexport function callTaskParser(\n parser: TaskParser,\n streams: GitOutputStreams\n) {\n return parser(streams.stdOut, streams.stdErr);\n}\n\nexport function parseStringResponse(\n result: T,\n parsers: LineParser[],\n texts: MaybeArray,\n trim = true\n): T {\n asArray(texts).forEach((text) => {\n for (let lines = toLinesWithContent(text, trim), i = 0, max = lines.length; i < max; i++) {\n const line = (offset = 0) => {\n if (i + offset >= max) {\n return;\n }\n return lines[i + offset];\n };\n\n parsers.some(({ parse }) => parse(line, result));\n }\n });\n\n return result;\n}\n", "export * from './argument-filters';\nexport * from './exit-codes';\nexport * from './git-output-streams';\nexport * from './line-parser';\nexport * from './simple-git-options';\nexport * from './task-options';\nexport * from './task-parser';\nexport * from './util';\n", "import { ExitCodes } from '../utils';\nimport { Maybe, StringTask } from '../types';\n\nexport enum CheckRepoActions {\n BARE = 'bare',\n IN_TREE = 'tree',\n IS_REPO_ROOT = 'root',\n}\n\nconst onError: StringTask['onError'] = ({ exitCode }, error, done, fail) => {\n if (exitCode === ExitCodes.UNCLEAN && isNotRepoMessage(error)) {\n return done(Buffer.from('false'));\n }\n\n fail(error);\n};\n\nconst parser: StringTask['parser'] = (text) => {\n return text.trim() === 'true';\n};\n\nexport function checkIsRepoTask(action: Maybe): StringTask {\n switch (action) {\n case CheckRepoActions.BARE:\n return checkIsBareRepoTask();\n case CheckRepoActions.IS_REPO_ROOT:\n return checkIsRepoRootTask();\n }\n\n const commands = ['rev-parse', '--is-inside-work-tree'];\n\n return {\n commands,\n format: 'utf-8',\n onError,\n parser,\n };\n}\n\nexport function checkIsRepoRootTask(): StringTask {\n const commands = ['rev-parse', '--git-dir'];\n\n return {\n commands,\n format: 'utf-8',\n onError,\n parser(path) {\n return /^\\.(git)?$/.test(path.trim());\n },\n };\n}\n\nexport function checkIsBareRepoTask(): StringTask {\n const commands = ['rev-parse', '--is-bare-repository'];\n\n return {\n commands,\n format: 'utf-8',\n onError,\n parser,\n };\n}\n\nfunction isNotRepoMessage(error: Error): boolean {\n return /(Not a git repository|Kein Git-Repository)/i.test(String(error));\n}\n", "import { CleanSummary } from '../../../typings';\nimport { toLinesWithContent } from '../utils';\n\nexport class CleanResponse implements CleanSummary {\n public paths: string[] = [];\n public files: string[] = [];\n public folders: string[] = [];\n\n constructor(public readonly dryRun: boolean) {}\n}\n\nconst removalRegexp = /^[a-z]+\\s*/i;\nconst dryRunRemovalRegexp = /^[a-z]+\\s+[a-z]+\\s*/i;\nconst isFolderRegexp = /\\/$/;\n\nexport function cleanSummaryParser(dryRun: boolean, text: string): CleanSummary {\n const summary = new CleanResponse(dryRun);\n const regexp = dryRun ? dryRunRemovalRegexp : removalRegexp;\n\n toLinesWithContent(text).forEach((line) => {\n const removed = line.replace(regexp, '');\n\n summary.paths.push(removed);\n (isFolderRegexp.test(removed) ? summary.folders : summary.files).push(removed);\n });\n\n return summary;\n}\n", "import { TaskConfigurationError } from '../errors/task-configuration-error';\nimport type { BufferTask, EmptyTaskParser, SimpleGitTask, StringTask } from '../types';\n\nexport const EMPTY_COMMANDS: [] = [];\n\nexport type EmptyTask = {\n commands: typeof EMPTY_COMMANDS;\n format: 'empty';\n parser: EmptyTaskParser;\n onError?: undefined;\n};\n\nexport function adhocExecTask(parser: EmptyTaskParser): EmptyTask {\n return {\n commands: EMPTY_COMMANDS,\n format: 'empty',\n parser,\n };\n}\n\nexport function configurationErrorTask(error: Error | string): EmptyTask {\n return {\n commands: EMPTY_COMMANDS,\n format: 'empty',\n parser() {\n throw typeof error === 'string' ? new TaskConfigurationError(error) : error;\n },\n };\n}\n\nexport function straightThroughStringTask(commands: string[], trimmed = false): StringTask {\n return {\n commands,\n format: 'utf-8',\n parser(text) {\n return trimmed ? String(text).trim() : text;\n },\n };\n}\n\nexport function straightThroughBufferTask(commands: string[]): BufferTask {\n return {\n commands,\n format: 'buffer',\n parser(buffer) {\n return buffer;\n },\n };\n}\n\nexport function isBufferTask(task: SimpleGitTask): task is BufferTask {\n return task.format === 'buffer';\n}\n\nexport function isEmptyTask(task: SimpleGitTask): task is EmptyTask {\n return task.format === 'empty' || !task.commands.length;\n}\n", "import { CleanSummary } from '../../../typings';\nimport { cleanSummaryParser } from '../responses/CleanSummary';\nimport { Maybe, StringTask } from '../types';\nimport { asStringArray } from '../utils';\nimport { configurationErrorTask } from './task';\n\nexport const CONFIG_ERROR_INTERACTIVE_MODE = 'Git clean interactive mode is not supported';\nexport const CONFIG_ERROR_MODE_REQUIRED = 'Git clean mode parameter (\"n\" or \"f\") is required';\nexport const CONFIG_ERROR_UNKNOWN_OPTION = 'Git clean unknown option found in: ';\n\n/**\n * All supported option switches available for use in a `git.clean` operation\n */\nexport enum CleanOptions {\n DRY_RUN = 'n',\n FORCE = 'f',\n IGNORED_INCLUDED = 'x',\n IGNORED_ONLY = 'X',\n EXCLUDING = 'e',\n QUIET = 'q',\n RECURSIVE = 'd',\n}\n\n/**\n * The two modes `git.clean` can run in - one of these must be supplied in order\n * for the command to not throw a `TaskConfigurationError`\n */\nexport type CleanMode = CleanOptions.FORCE | CleanOptions.DRY_RUN;\n\nconst CleanOptionValues: Set = new Set([\n 'i',\n ...asStringArray(Object.values(CleanOptions as any)),\n]);\n\nexport function cleanWithOptionsTask(mode: CleanMode | string, customArgs: string[]) {\n const { cleanMode, options, valid } = getCleanOptions(mode);\n\n if (!cleanMode) {\n return configurationErrorTask(CONFIG_ERROR_MODE_REQUIRED);\n }\n\n if (!valid.options) {\n return configurationErrorTask(CONFIG_ERROR_UNKNOWN_OPTION + JSON.stringify(mode));\n }\n\n options.push(...customArgs);\n\n if (options.some(isInteractiveMode)) {\n return configurationErrorTask(CONFIG_ERROR_INTERACTIVE_MODE);\n }\n\n return cleanTask(cleanMode, options);\n}\n\nexport function cleanTask(mode: CleanMode, customArgs: string[]): StringTask {\n const commands: string[] = ['clean', `-${mode}`, ...customArgs];\n\n return {\n commands,\n format: 'utf-8',\n parser(text: string): CleanSummary {\n return cleanSummaryParser(mode === CleanOptions.DRY_RUN, text);\n },\n };\n}\n\nexport function isCleanOptionsArray(input: string[]): input is CleanOptions[] {\n return Array.isArray(input) && input.every((test) => CleanOptionValues.has(test));\n}\n\nfunction getCleanOptions(input: string) {\n let cleanMode: Maybe;\n let options: string[] = [];\n let valid = { cleanMode: false, options: true };\n\n input\n .replace(/[^a-z]i/g, '')\n .split('')\n .forEach((char) => {\n if (isCleanMode(char)) {\n cleanMode = char;\n valid.cleanMode = true;\n } else {\n valid.options = valid.options && isKnownOption((options[options.length] = `-${char}`));\n }\n });\n\n return {\n cleanMode,\n options,\n valid,\n };\n}\n\nfunction isCleanMode(cleanMode?: string): cleanMode is CleanMode {\n return cleanMode === CleanOptions.FORCE || cleanMode === CleanOptions.DRY_RUN;\n}\n\nfunction isKnownOption(option: string): boolean {\n return /^-[a-z]$/i.test(option) && CleanOptionValues.has(option.charAt(1));\n}\n\nfunction isInteractiveMode(option: string): boolean {\n if (/^-[^\\-]/.test(option)) {\n return option.indexOf('i') > 0;\n }\n\n return option === '--interactive';\n}\n", "import { ConfigGetResult, ConfigListSummary, ConfigValues } from '../../../typings';\nimport { last, splitOn } from '../utils';\n\nexport class ConfigList implements ConfigListSummary {\n public files: string[] = [];\n public values: { [fileName: string]: ConfigValues } = Object.create(null);\n\n private _all: ConfigValues | undefined;\n\n public get all(): ConfigValues {\n if (!this._all) {\n this._all = this.files.reduce((all: ConfigValues, file: string) => {\n return Object.assign(all, this.values[file]);\n }, {});\n }\n\n return this._all;\n }\n\n public addFile(file: string): ConfigValues {\n if (!(file in this.values)) {\n const latest = last(this.files);\n this.values[file] = latest ? Object.create(this.values[latest]) : {};\n\n this.files.push(file);\n }\n\n return this.values[file];\n }\n\n public addValue(file: string, key: string, value: string) {\n const values = this.addFile(file);\n\n if (!values.hasOwnProperty(key)) {\n values[key] = value;\n } else if (Array.isArray(values[key])) {\n (values[key] as string[]).push(value);\n } else {\n values[key] = [values[key] as string, value];\n }\n\n this._all = undefined;\n }\n}\n\nexport function configListParser(text: string): ConfigList {\n const config = new ConfigList();\n\n for (const item of configParser(text)) {\n config.addValue(item.file, String(item.key), item.value);\n }\n\n return config;\n}\n\nexport function configGetParser(text: string, key: string): ConfigGetResult {\n let value: string | null = null;\n const values: string[] = [];\n const scopes: Map = new Map();\n\n for (const item of configParser(text, key)) {\n if (item.key !== key) {\n continue;\n }\n\n values.push((value = item.value));\n\n if (!scopes.has(item.file)) {\n scopes.set(item.file, []);\n }\n\n scopes.get(item.file)!.push(value);\n }\n\n return {\n key,\n paths: Array.from(scopes.keys()),\n scopes,\n value,\n values,\n };\n}\n\nfunction configFilePath(filePath: string): string {\n return filePath.replace(/^(file):/, '');\n}\n\nfunction* configParser(text: string, requestedKey: string | null = null) {\n const lines = text.split('\\0');\n\n for (let i = 0, max = lines.length - 1; i < max; ) {\n const file = configFilePath(lines[i++]);\n\n let value = lines[i++];\n let key = requestedKey;\n\n if (value.includes('\\n')) {\n const line = splitOn(value, '\\n');\n key = line[0];\n value = line[1];\n }\n\n yield { file, key, value };\n }\n}\n", "import type { ConfigGetResult, ConfigListSummary, SimpleGit } from '../../../typings';\nimport { configGetParser, configListParser } from '../responses/ConfigList';\nimport type { SimpleGitApi } from '../simple-git-api';\nimport type { StringTask } from '../types';\nimport { trailingFunctionArgument } from '../utils';\n\nexport enum GitConfigScope {\n system = 'system',\n global = 'global',\n local = 'local',\n worktree = 'worktree',\n}\n\nfunction asConfigScope(\n scope: GitConfigScope | unknown,\n fallback: T\n): GitConfigScope | T {\n if (typeof scope === 'string' && GitConfigScope.hasOwnProperty(scope)) {\n return scope as GitConfigScope;\n }\n return fallback;\n}\n\nfunction addConfigTask(\n key: string,\n value: string,\n append: boolean,\n scope: GitConfigScope\n): StringTask {\n const commands: string[] = ['config', `--${scope}`];\n\n if (append) {\n commands.push('--add');\n }\n\n commands.push(key, value);\n\n return {\n commands,\n format: 'utf-8',\n parser(text: string): string {\n return text;\n },\n };\n}\n\nfunction getConfigTask(key: string, scope?: GitConfigScope): StringTask {\n const commands: string[] = ['config', '--null', '--show-origin', '--get-all', key];\n\n if (scope) {\n commands.splice(1, 0, `--${scope}`);\n }\n\n return {\n commands,\n format: 'utf-8',\n parser(text) {\n return configGetParser(text, key);\n },\n };\n}\n\nfunction listConfigTask(scope?: GitConfigScope): StringTask {\n const commands = ['config', '--list', '--show-origin', '--null'];\n\n if (scope) {\n commands.push(`--${scope}`);\n }\n\n return {\n commands,\n format: 'utf-8',\n parser(text: string) {\n return configListParser(text);\n },\n };\n}\n\nexport default function (): Pick {\n return {\n addConfig(this: SimpleGitApi, key: string, value: string, ...rest: unknown[]) {\n return this._runTask(\n addConfigTask(\n key,\n value,\n rest[0] === true,\n asConfigScope(rest[1], GitConfigScope.local)\n ),\n trailingFunctionArgument(arguments)\n );\n },\n\n getConfig(this: SimpleGitApi, key: string, scope?: GitConfigScope) {\n return this._runTask(\n getConfigTask(key, asConfigScope(scope, undefined)),\n trailingFunctionArgument(arguments)\n );\n },\n\n listConfig(this: SimpleGitApi, ...rest: unknown[]) {\n return this._runTask(\n listConfigTask(asConfigScope(rest[0], undefined)),\n trailingFunctionArgument(arguments)\n );\n },\n };\n}\n", "import { GrepResult, SimpleGit } from '../../../typings';\nimport { SimpleGitApi } from '../simple-git-api';\nimport {\n asNumber,\n forEachLineWithContent,\n getTrailingOptions,\n NULL,\n prefixedArray,\n trailingFunctionArgument,\n} from '../utils';\n\nimport { configurationErrorTask } from './task';\n\nconst disallowedOptions = ['-h'];\n\nconst Query = Symbol('grepQuery');\n\nexport interface GitGrepQuery extends Iterable {\n /** Adds one or more terms to be grouped as an \"and\" to any other terms */\n and(...and: string[]): this;\n\n /** Adds one or more search terms - git.grep will \"or\" this to other terms */\n param(...param: string[]): this;\n}\n\nclass GrepQuery implements GitGrepQuery {\n private [Query]: string[] = [];\n\n *[Symbol.iterator]() {\n for (const query of this[Query]) {\n yield query;\n }\n }\n\n and(...and: string[]) {\n and.length && this[Query].push('--and', '(', ...prefixedArray(and, '-e'), ')');\n return this;\n }\n\n param(...param: string[]) {\n this[Query].push(...prefixedArray(param, '-e'));\n return this;\n }\n}\n\n/**\n * Creates a new builder for a `git.grep` query with optional params\n */\nexport function grepQueryBuilder(...params: string[]): GitGrepQuery {\n return new GrepQuery().param(...params);\n}\n\nfunction parseGrep(grep: string): GrepResult {\n const paths: GrepResult['paths'] = new Set();\n const results: GrepResult['results'] = {};\n\n forEachLineWithContent(grep, (input) => {\n const [path, line, preview] = input.split(NULL);\n paths.add(path);\n (results[path] = results[path] || []).push({\n line: asNumber(line),\n path,\n preview,\n });\n });\n\n return {\n paths,\n results,\n };\n}\n\nexport default function (): Pick {\n return {\n grep(this: SimpleGitApi, searchTerm: string | GitGrepQuery) {\n const then = trailingFunctionArgument(arguments);\n const options = getTrailingOptions(arguments);\n\n for (const option of disallowedOptions) {\n if (options.includes(option)) {\n return this._runTask(\n configurationErrorTask(`git.grep: use of \"${option}\" is not supported.`),\n then\n );\n }\n }\n\n if (typeof searchTerm === 'string') {\n searchTerm = grepQueryBuilder().param(searchTerm);\n }\n\n const commands = ['grep', '--null', '-n', '--full-name', ...options, ...searchTerm];\n\n return this._runTask(\n {\n commands,\n format: 'utf-8',\n parser(stdOut) {\n return parseGrep(stdOut);\n },\n },\n then\n );\n },\n };\n}\n", "import { straightThroughStringTask } from './task';\nimport { Maybe, OptionFlags, Options } from '../types';\n\nexport enum ResetMode {\n MIXED = 'mixed',\n SOFT = 'soft',\n HARD = 'hard',\n MERGE = 'merge',\n KEEP = 'keep',\n}\n\nconst ResetModes = Array.from(Object.values(ResetMode));\n\nexport type ResetOptions = Options &\n OptionFlags<'-q' | '--quiet' | '--no-quiet' | '--pathspec-from-nul'> &\n OptionFlags<'--pathspec-from-file', string>;\n\nexport function resetTask(mode: Maybe, customArgs: string[]) {\n const commands: string[] = ['reset'];\n if (isValidResetMode(mode)) {\n commands.push(`--${mode}`);\n }\n commands.push(...customArgs);\n\n return straightThroughStringTask(commands);\n}\n\nexport function getResetMode(mode: ResetMode | any): Maybe {\n if (isValidResetMode(mode)) {\n return mode;\n }\n\n switch (typeof mode) {\n case 'string':\n case 'undefined':\n return ResetMode.SOFT;\n }\n\n return;\n}\n\nfunction isValidResetMode(mode: ResetMode | any): mode is ResetMode {\n return ResetModes.includes(mode);\n}\n", "import { pathspec } from './args/pathspec';\nimport { GitConstructError } from './errors/git-construct-error';\nimport { GitError } from './errors/git-error';\nimport { GitPluginError } from './errors/git-plugin-error';\nimport { GitResponseError } from './errors/git-response-error';\nimport { TaskConfigurationError } from './errors/task-configuration-error';\nimport { CheckRepoActions } from './tasks/check-is-repo';\nimport { CleanOptions } from './tasks/clean';\nimport { GitConfigScope } from './tasks/config';\nimport { grepQueryBuilder } from './tasks/grep';\nimport { ResetMode } from './tasks/reset';\n\nexport {\n CheckRepoActions,\n CleanOptions,\n GitConfigScope,\n GitConstructError,\n GitError,\n GitPluginError,\n GitResponseError,\n ResetMode,\n TaskConfigurationError,\n grepQueryBuilder,\n pathspec,\n};\n", "import { SimpleGitOptions } from '../types';\nimport { SimpleGitPlugin } from './simple-git-plugin';\nimport { GitPluginError } from '../errors/git-plugin-error';\n\nexport function abortPlugin(signal: SimpleGitOptions['abort']) {\n if (!signal) {\n return;\n }\n\n const onSpawnAfter: SimpleGitPlugin<'spawn.after'> = {\n type: 'spawn.after',\n action(_data, context) {\n function kill() {\n context.kill(new GitPluginError(undefined, 'abort', 'Abort signal received'));\n }\n\n signal.addEventListener('abort', kill);\n\n context.spawned.on('close', () => signal.removeEventListener('abort', kill));\n },\n };\n\n const onSpawnBefore: SimpleGitPlugin<'spawn.before'> = {\n type: 'spawn.before',\n action(_data, context) {\n if (signal.aborted) {\n context.kill(new GitPluginError(undefined, 'abort', 'Abort already signaled'));\n }\n },\n };\n\n return [onSpawnBefore, onSpawnAfter];\n}\n", "import type { SimpleGitPlugin } from './simple-git-plugin';\n\nimport { GitPluginError } from '../errors/git-plugin-error';\nimport type { SimpleGitPluginConfig } from '../types';\n\nfunction isConfigSwitch(arg: string | unknown) {\n return typeof arg === 'string' && arg.trim().toLowerCase() === '-c';\n}\n\nfunction preventProtocolOverride(arg: string, next: string) {\n if (!isConfigSwitch(arg)) {\n return;\n }\n\n if (!/^\\s*protocol(.[a-z]+)?.allow/.test(next)) {\n return;\n }\n\n throw new GitPluginError(\n undefined,\n 'unsafe',\n 'Configuring protocol.allow is not permitted without enabling allowUnsafeExtProtocol'\n );\n}\n\nfunction preventUploadPack(arg: string, method: string) {\n if (/^\\s*--(upload|receive)-pack/.test(arg)) {\n throw new GitPluginError(\n undefined,\n 'unsafe',\n `Use of --upload-pack or --receive-pack is not permitted without enabling allowUnsafePack`\n );\n }\n\n if (method === 'clone' && /^\\s*-u\\b/.test(arg)) {\n throw new GitPluginError(\n undefined,\n 'unsafe',\n `Use of clone with option -u is not permitted without enabling allowUnsafePack`\n );\n }\n\n if (method === 'push' && /^\\s*--exec\\b/.test(arg)) {\n throw new GitPluginError(\n undefined,\n 'unsafe',\n `Use of push with option --exec is not permitted without enabling allowUnsafePack`\n );\n }\n}\n\nexport function blockUnsafeOperationsPlugin({\n allowUnsafeProtocolOverride = false,\n allowUnsafePack = false,\n}: SimpleGitPluginConfig['unsafe'] = {}): SimpleGitPlugin<'spawn.args'> {\n return {\n type: 'spawn.args',\n action(args, context) {\n args.forEach((current, index) => {\n const next = index < args.length ? args[index + 1] : '';\n\n allowUnsafeProtocolOverride || preventProtocolOverride(current, next);\n allowUnsafePack || preventUploadPack(current, context.method);\n });\n\n return args;\n },\n };\n}\n", "import { prefixedArray } from '../utils';\nimport { SimpleGitPlugin } from './simple-git-plugin';\n\nexport function commandConfigPrefixingPlugin(\n configuration: string[]\n): SimpleGitPlugin<'spawn.args'> {\n const prefix = prefixedArray(configuration, '-c');\n\n return {\n type: 'spawn.args',\n action(data) {\n return [...prefix, ...data];\n },\n };\n}\n", "import { deferred, DeferredPromise } from '@kwsites/promise-deferred';\nimport { SimpleGitPluginConfig } from '../types';\nimport { delay } from '../utils';\nimport { SimpleGitPlugin } from './simple-git-plugin';\n\nconst never = deferred().promise;\n\nexport function completionDetectionPlugin({\n onClose = true,\n onExit = 50,\n}: SimpleGitPluginConfig['completion'] = {}): SimpleGitPlugin<'spawn.after'> {\n function createEvents() {\n let exitCode = -1;\n const events = {\n close: deferred(),\n closeTimeout: deferred(),\n exit: deferred(),\n exitTimeout: deferred(),\n };\n\n const result = Promise.race([\n onClose === false ? never : events.closeTimeout.promise,\n onExit === false ? never : events.exitTimeout.promise,\n ]);\n\n configureTimeout(onClose, events.close, events.closeTimeout);\n configureTimeout(onExit, events.exit, events.exitTimeout);\n\n return {\n close(code: number) {\n exitCode = code;\n events.close.done();\n },\n exit(code: number) {\n exitCode = code;\n events.exit.done();\n },\n get exitCode() {\n return exitCode;\n },\n result,\n };\n }\n\n function configureTimeout(\n flag: boolean | number,\n event: DeferredPromise,\n timeout: DeferredPromise\n ) {\n if (flag === false) {\n return;\n }\n\n (flag === true ? event.promise : event.promise.then(() => delay(flag))).then(timeout.done);\n }\n\n return {\n type: 'spawn.after',\n async action(_data, { spawned, close }) {\n const events = createEvents();\n\n let deferClose = true;\n let quickClose = () => void (deferClose = false);\n\n spawned.stdout?.on('data', quickClose);\n spawned.stderr?.on('data', quickClose);\n spawned.on('error', quickClose);\n\n spawned.on('close', (code: number) => events.close(code));\n spawned.on('exit', (code: number) => events.exit(code));\n\n try {\n await events.result;\n if (deferClose) {\n await delay(50);\n }\n close(events.exitCode);\n } catch (err) {\n close(events.exitCode, err as Error);\n }\n },\n };\n}\n", "import { GitError } from '../errors/git-error';\nimport { GitExecutorResult, SimpleGitPluginConfig } from '../types';\nimport { SimpleGitPlugin } from './simple-git-plugin';\n\ntype TaskResult = Omit;\n\nfunction isTaskError(result: TaskResult) {\n return !!(result.exitCode && result.stdErr.length);\n}\n\nfunction getErrorMessage(result: TaskResult) {\n return Buffer.concat([...result.stdOut, ...result.stdErr]);\n}\n\nexport function errorDetectionHandler(\n overwrite = false,\n isError = isTaskError,\n errorMessage: (result: TaskResult) => Buffer | Error = getErrorMessage\n) {\n return (error: Buffer | Error | undefined, result: TaskResult) => {\n if ((!overwrite && error) || !isError(result)) {\n return error;\n }\n\n return errorMessage(result);\n };\n}\n\nexport function errorDetectionPlugin(\n config: SimpleGitPluginConfig['errors']\n): SimpleGitPlugin<'task.error'> {\n return {\n type: 'task.error',\n action(data, context) {\n const error = config(data.error, {\n stdErr: context.stdErr,\n stdOut: context.stdOut,\n exitCode: context.exitCode,\n });\n\n if (Buffer.isBuffer(error)) {\n return { error: new GitError(undefined, error.toString('utf-8')) };\n }\n\n return {\n error,\n };\n },\n };\n}\n", "import { SimpleGitPlugin, SimpleGitPluginType, SimpleGitPluginTypes } from './simple-git-plugin';\nimport { append, asArray } from '../utils';\n\nexport class PluginStore {\n private plugins: Set> = new Set();\n\n public add(\n plugin: void | SimpleGitPlugin | SimpleGitPlugin[]\n ) {\n const plugins: SimpleGitPlugin[] = [];\n\n asArray(plugin).forEach((plugin) => plugin && this.plugins.add(append(plugins, plugin)));\n\n return () => {\n plugins.forEach((plugin) => this.plugins.delete(plugin));\n };\n }\n\n public exec(\n type: T,\n data: SimpleGitPluginTypes[T]['data'],\n context: SimpleGitPluginTypes[T]['context']\n ): typeof data {\n let output = data;\n const contextual = Object.freeze(Object.create(context));\n\n for (const plugin of this.plugins) {\n if (plugin.type === type) {\n output = plugin.action(output, contextual);\n }\n }\n\n return output;\n }\n}\n", "import { SimpleGitOptions } from '../types';\nimport { asNumber, including } from '../utils';\n\nimport { SimpleGitPlugin } from './simple-git-plugin';\n\nexport function progressMonitorPlugin(progress: Exclude) {\n const progressCommand = '--progress';\n const progressMethods = ['checkout', 'clone', 'fetch', 'pull', 'push'];\n\n const onProgress: SimpleGitPlugin<'spawn.after'> = {\n type: 'spawn.after',\n action(_data, context) {\n if (!context.commands.includes(progressCommand)) {\n return;\n }\n\n context.spawned.stderr?.on('data', (chunk: Buffer) => {\n const message = /^([\\s\\S]+?):\\s*(\\d+)% \\((\\d+)\\/(\\d+)\\)/.exec(chunk.toString('utf8'));\n if (!message) {\n return;\n }\n\n progress({\n method: context.method,\n stage: progressEventStage(message[1]),\n progress: asNumber(message[2]),\n processed: asNumber(message[3]),\n total: asNumber(message[4]),\n });\n });\n },\n };\n\n const onArgs: SimpleGitPlugin<'spawn.args'> = {\n type: 'spawn.args',\n action(args, context) {\n if (!progressMethods.includes(context.method)) {\n return args;\n }\n\n return including(args, progressCommand);\n },\n };\n\n return [onArgs, onProgress];\n}\n\nfunction progressEventStage(input: string) {\n return String(input.toLowerCase().split(' ', 1)) || 'unknown';\n}\n", "import { ChildProcess, SpawnOptions } from 'child_process';\nimport { GitExecutorResult } from '../types';\n\ntype SimpleGitTaskPluginContext = {\n readonly method: string;\n readonly commands: string[];\n};\n\nexport interface SimpleGitPluginTypes {\n 'spawn.args': {\n data: string[];\n context: SimpleGitTaskPluginContext & {};\n };\n 'spawn.options': {\n data: Partial;\n context: SimpleGitTaskPluginContext & {};\n };\n 'spawn.before': {\n data: void;\n context: SimpleGitTaskPluginContext & {\n kill(reason: Error): void;\n };\n };\n 'spawn.after': {\n data: void;\n context: SimpleGitTaskPluginContext & {\n spawned: ChildProcess;\n close(exitCode: number, reason?: Error): void;\n kill(reason: Error): void;\n };\n };\n 'task.error': {\n data: { error?: Error };\n context: SimpleGitTaskPluginContext & GitExecutorResult;\n };\n}\n\nexport type SimpleGitPluginType = keyof SimpleGitPluginTypes;\n\nexport interface SimpleGitPlugin {\n action(\n data: SimpleGitPluginTypes[T]['data'],\n context: SimpleGitPluginTypes[T]['context']\n ): typeof data;\n\n type: T;\n}\n", "import { SpawnOptions } from 'child_process';\nimport { pick } from '../utils';\nimport { SimpleGitPlugin } from './simple-git-plugin';\n\nexport function spawnOptionsPlugin(\n spawnOptions: Partial\n): SimpleGitPlugin<'spawn.options'> {\n const options = pick(spawnOptions, ['uid', 'gid']);\n\n return {\n type: 'spawn.options',\n action(data) {\n return { ...options, ...data };\n },\n };\n}\n", "import type { SimpleGitPlugin } from './simple-git-plugin';\n\nimport type { SimpleGitOptions } from '../types';\nimport { GitPluginError } from '../errors/git-plugin-error';\n\nexport function timeoutPlugin({\n block,\n stdErr = true,\n stdOut = true,\n}: Exclude): SimpleGitPlugin<'spawn.after'> | void {\n if (block > 0) {\n return {\n type: 'spawn.after',\n action(_data, context) {\n let timeout: NodeJS.Timeout;\n\n function wait() {\n timeout && clearTimeout(timeout);\n timeout = setTimeout(kill, block);\n }\n\n function stop() {\n context.spawned.stdout?.off('data', wait);\n context.spawned.stderr?.off('data', wait);\n context.spawned.off('exit', stop);\n context.spawned.off('close', stop);\n timeout && clearTimeout(timeout);\n }\n\n function kill() {\n stop();\n context.kill(new GitPluginError(undefined, 'timeout', `block timeout reached`));\n }\n\n stdOut && context.spawned.stdout?.on('data', wait);\n stdErr && context.spawned.stderr?.on('data', wait);\n context.spawned.on('exit', stop);\n context.spawned.on('close', stop);\n\n wait();\n },\n };\n }\n}\n", "export * from './abort-plugin';\nexport * from './block-unsafe-operations-plugin';\nexport * from './command-config-prefixing-plugin';\nexport * from './completion-detection.plugin';\nexport * from './error-detection.plugin';\nexport * from './plugin-store';\nexport * from './progress-monitor-plugin';\nexport * from './simple-git-plugin';\nexport * from './spawn-options-plugin';\nexport * from './timout-plugin';\n", "import { SimpleGitPlugin } from './simple-git-plugin';\nimport { isPathSpec, toPaths } from '../args/pathspec';\n\nexport function suffixPathsPlugin(): SimpleGitPlugin<'spawn.args'> {\n return {\n type: 'spawn.args',\n action(data) {\n const prefix: string[] = [];\n let suffix: undefined | string[];\n function append(args: string[]) {\n (suffix = suffix || []).push(...args);\n }\n\n for (let i = 0; i < data.length; i++) {\n const param = data[i];\n\n if (isPathSpec(param)) {\n append(toPaths(param));\n continue;\n }\n\n if (param === '--') {\n append(\n data.slice(i + 1).flatMap((item) => (isPathSpec(item) && toPaths(item)) || item)\n );\n break;\n }\n\n prefix.push(param);\n }\n\n return !suffix ? prefix : [...prefix, '--', ...suffix.map(String)];\n },\n };\n}\n", "import debug, { Debugger } from 'debug';\nimport {\n append,\n filterHasLength,\n filterString,\n filterType,\n NOOP,\n objectToString,\n remove,\n} from './utils';\nimport { Maybe } from './types';\n\ndebug.formatters.L = (value: any) => String(filterHasLength(value) ? value.length : '-');\ndebug.formatters.B = (value: Buffer) => {\n if (Buffer.isBuffer(value)) {\n return value.toString('utf8');\n }\n return objectToString(value);\n};\n\ntype OutputLoggingHandler = (message: string, ...args: any[]) => void;\n\nfunction createLog() {\n return debug('simple-git');\n}\n\nexport interface OutputLogger extends OutputLoggingHandler {\n readonly label: string;\n\n info: OutputLoggingHandler;\n step(nextStep?: string): OutputLogger;\n sibling(name: string): OutputLogger;\n}\n\nfunction prefixedLogger(\n to: Debugger,\n prefix: string,\n forward?: OutputLoggingHandler\n): OutputLoggingHandler {\n if (!prefix || !String(prefix).replace(/\\s*/, '')) {\n return !forward\n ? to\n : (message, ...args) => {\n to(message, ...args);\n forward(message, ...args);\n };\n }\n\n return (message, ...args) => {\n to(`%s ${message}`, prefix, ...args);\n if (forward) {\n forward(message, ...args);\n }\n };\n}\n\nfunction childLoggerName(\n name: Maybe,\n childDebugger: Maybe,\n { namespace: parentNamespace }: Debugger\n): string {\n if (typeof name === 'string') {\n return name;\n }\n const childNamespace = (childDebugger && childDebugger.namespace) || '';\n\n if (childNamespace.startsWith(parentNamespace)) {\n return childNamespace.substr(parentNamespace.length + 1);\n }\n\n return childNamespace || parentNamespace;\n}\n\nexport function createLogger(\n label: string,\n verbose?: string | Debugger,\n initialStep?: string,\n infoDebugger = createLog()\n): OutputLogger {\n const labelPrefix = (label && `[${label}]`) || '';\n\n const spawned: OutputLogger[] = [];\n const debugDebugger: Maybe =\n typeof verbose === 'string' ? infoDebugger.extend(verbose) : verbose;\n const key = childLoggerName(filterType(verbose, filterString), debugDebugger, infoDebugger);\n\n return step(initialStep);\n\n function sibling(name: string, initial?: string) {\n return append(\n spawned,\n createLogger(label, key.replace(/^[^:]+/, name), initial, infoDebugger)\n );\n }\n\n function step(phase?: string) {\n const stepPrefix = (phase && `[${phase}]`) || '';\n const debug = (debugDebugger && prefixedLogger(debugDebugger, stepPrefix)) || NOOP;\n const info = prefixedLogger(infoDebugger, `${labelPrefix} ${stepPrefix}`, debug);\n\n return Object.assign(debugDebugger ? debug : info, {\n label,\n sibling,\n info,\n step,\n });\n }\n}\n\n/**\n * The `GitLogger` is used by the main `SimpleGit` runner to handle logging\n * any warnings or errors.\n */\nexport class GitLogger {\n public error: OutputLoggingHandler;\n\n public warn: OutputLoggingHandler;\n\n constructor(private _out: Debugger = createLog()) {\n this.error = prefixedLogger(_out, '[ERROR]');\n this.warn = prefixedLogger(_out, '[WARN]');\n }\n\n silent(silence = false) {\n if (silence !== this._out.enabled) {\n return;\n }\n\n const { namespace } = this._out;\n const env = (process.env.DEBUG || '').split(',').filter((s) => !!s);\n const hasOn = env.includes(namespace);\n const hasOff = env.includes(`-${namespace}`);\n\n // enabling the log\n if (!silence) {\n if (hasOff) {\n remove(env, `-${namespace}`);\n } else {\n env.push(namespace);\n }\n } else {\n if (hasOn) {\n remove(env, namespace);\n } else {\n env.push(`-${namespace}`);\n }\n }\n\n debug.enable(env.join(','));\n }\n}\n", "import { SimpleGitTask } from '../types';\nimport { GitError } from '../errors/git-error';\nimport { createLogger, OutputLogger } from '../git-logger';\n\ntype AnySimpleGitTask = SimpleGitTask;\n\ntype TaskInProgress = {\n name: string;\n logger: OutputLogger;\n task: AnySimpleGitTask;\n};\n\nexport class TasksPendingQueue {\n private _queue: Map = new Map();\n\n constructor(private logLabel = 'GitExecutor') {}\n\n private withProgress(task: AnySimpleGitTask) {\n return this._queue.get(task);\n }\n\n private createProgress(task: AnySimpleGitTask): TaskInProgress {\n const name = TasksPendingQueue.getName(task.commands[0]);\n const logger = createLogger(this.logLabel, name);\n\n return {\n task,\n logger,\n name,\n };\n }\n\n push(task: AnySimpleGitTask): TaskInProgress {\n const progress = this.createProgress(task);\n progress.logger('Adding task to the queue, commands = %o', task.commands);\n\n this._queue.set(task, progress);\n\n return progress;\n }\n\n fatal(err: GitError) {\n for (const [task, { logger }] of Array.from(this._queue.entries())) {\n if (task === err.task) {\n logger.info(`Failed %o`, err);\n logger(\n `Fatal exception, any as-yet un-started tasks run through this executor will not be attempted`\n );\n } else {\n logger.info(\n `A fatal exception occurred in a previous task, the queue has been purged: %o`,\n err.message\n );\n }\n\n this.complete(task);\n }\n\n if (this._queue.size !== 0) {\n throw new Error(`Queue size should be zero after fatal: ${this._queue.size}`);\n }\n }\n\n complete(task: AnySimpleGitTask) {\n const progress = this.withProgress(task);\n if (progress) {\n this._queue.delete(task);\n }\n }\n\n attempt(task: AnySimpleGitTask): TaskInProgress {\n const progress = this.withProgress(task);\n if (!progress) {\n throw new GitError(undefined, 'TasksPendingQueue: attempt called for an unknown task');\n }\n progress.logger('Starting task');\n\n return progress;\n }\n\n static getName(name = 'empty') {\n return `task:${name}:${++TasksPendingQueue.counter}`;\n }\n\n private static counter = 0;\n}\n", "import { spawn, SpawnOptions } from 'child_process';\nimport { GitError } from '../errors/git-error';\nimport { OutputLogger } from '../git-logger';\nimport { PluginStore } from '../plugins';\nimport { EmptyTask, isBufferTask, isEmptyTask } from '../tasks/task';\nimport {\n GitExecutorResult,\n Maybe,\n outputHandler,\n RunnableTask,\n SimpleGitExecutor,\n SimpleGitTask,\n} from '../types';\nimport { callTaskParser, first, GitOutputStreams, objectToString } from '../utils';\nimport { Scheduler } from './scheduler';\nimport { TasksPendingQueue } from './tasks-pending-queue';\n\nexport class GitExecutorChain implements SimpleGitExecutor {\n private _chain: Promise = Promise.resolve();\n private _queue = new TasksPendingQueue();\n private _cwd: string | undefined;\n\n public get binary() {\n return this._executor.binary;\n }\n\n public get cwd() {\n return this._cwd || this._executor.cwd;\n }\n\n public set cwd(cwd: string) {\n this._cwd = cwd;\n }\n\n public get env() {\n return this._executor.env;\n }\n\n public get outputHandler() {\n return this._executor.outputHandler;\n }\n\n constructor(\n private _executor: SimpleGitExecutor,\n private _scheduler: Scheduler,\n private _plugins: PluginStore\n ) {}\n\n public chain() {\n return this;\n }\n\n public push(task: SimpleGitTask): Promise {\n this._queue.push(task);\n\n return (this._chain = this._chain.then(() => this.attemptTask(task)));\n }\n\n private async attemptTask(task: SimpleGitTask): Promise {\n const onScheduleComplete = await this._scheduler.next();\n const onQueueComplete = () => this._queue.complete(task);\n\n try {\n const { logger } = this._queue.attempt(task);\n return (await (isEmptyTask(task)\n ? this.attemptEmptyTask(task, logger)\n : this.attemptRemoteTask(task, logger))) as R;\n } catch (e) {\n throw this.onFatalException(task, e as Error);\n } finally {\n onQueueComplete();\n onScheduleComplete();\n }\n }\n\n private onFatalException(task: SimpleGitTask, e: Error) {\n const gitError =\n e instanceof GitError ? Object.assign(e, { task }) : new GitError(task, e && String(e));\n\n this._chain = Promise.resolve();\n this._queue.fatal(gitError);\n\n return gitError;\n }\n\n private async attemptRemoteTask(task: RunnableTask, logger: OutputLogger) {\n const args = this._plugins.exec(\n 'spawn.args',\n [...task.commands],\n pluginContext(task, task.commands)\n );\n\n const raw = await this.gitResponse(\n task,\n this.binary,\n args,\n this.outputHandler,\n logger.step('SPAWN')\n );\n const outputStreams = await this.handleTaskData(task, args, raw, logger.step('HANDLE'));\n\n logger(`passing response to task's parser as a %s`, task.format);\n\n if (isBufferTask(task)) {\n return callTaskParser(task.parser, outputStreams);\n }\n\n return callTaskParser(task.parser, outputStreams.asStrings());\n }\n\n private async attemptEmptyTask(task: EmptyTask, logger: OutputLogger) {\n logger(`empty task bypassing child process to call to task's parser`);\n return task.parser(this);\n }\n\n private handleTaskData(\n task: SimpleGitTask,\n args: string[],\n result: GitExecutorResult,\n logger: OutputLogger\n ): Promise {\n const { exitCode, rejection, stdOut, stdErr } = result;\n\n return new Promise((done, fail) => {\n logger(`Preparing to handle process response exitCode=%d stdOut=`, exitCode);\n\n const { error } = this._plugins.exec(\n 'task.error',\n { error: rejection },\n {\n ...pluginContext(task, args),\n ...result,\n }\n );\n\n if (error && task.onError) {\n logger.info(`exitCode=%s handling with custom error handler`);\n\n return task.onError(\n result,\n error,\n (newStdOut) => {\n logger.info(`custom error handler treated as success`);\n logger(`custom error returned a %s`, objectToString(newStdOut));\n\n done(\n new GitOutputStreams(\n Array.isArray(newStdOut) ? Buffer.concat(newStdOut) : newStdOut,\n Buffer.concat(stdErr)\n )\n );\n },\n fail\n );\n }\n\n if (error) {\n logger.info(\n `handling as error: exitCode=%s stdErr=%s rejection=%o`,\n exitCode,\n stdErr.length,\n rejection\n );\n return fail(error);\n }\n\n logger.info(`retrieving task output complete`);\n done(new GitOutputStreams(Buffer.concat(stdOut), Buffer.concat(stdErr)));\n });\n }\n\n private async gitResponse(\n task: SimpleGitTask,\n command: string,\n args: string[],\n outputHandler: Maybe,\n logger: OutputLogger\n ): Promise {\n const outputLogger = logger.sibling('output');\n const spawnOptions: SpawnOptions = this._plugins.exec(\n 'spawn.options',\n {\n cwd: this.cwd,\n env: this.env,\n windowsHide: true,\n },\n pluginContext(task, task.commands)\n );\n\n return new Promise((done) => {\n const stdOut: Buffer[] = [];\n const stdErr: Buffer[] = [];\n\n logger.info(`%s %o`, command, args);\n logger('%O', spawnOptions);\n\n let rejection = this._beforeSpawn(task, args);\n if (rejection) {\n return done({\n stdOut,\n stdErr,\n exitCode: 9901,\n rejection,\n });\n }\n\n this._plugins.exec('spawn.before', undefined, {\n ...pluginContext(task, args),\n kill(reason) {\n rejection = reason || rejection;\n },\n });\n\n const spawned = spawn(command, args, spawnOptions);\n\n spawned.stdout!.on(\n 'data',\n onDataReceived(stdOut, 'stdOut', logger, outputLogger.step('stdOut'))\n );\n spawned.stderr!.on(\n 'data',\n onDataReceived(stdErr, 'stdErr', logger, outputLogger.step('stdErr'))\n );\n\n spawned.on('error', onErrorReceived(stdErr, logger));\n\n if (outputHandler) {\n logger(`Passing child process stdOut/stdErr to custom outputHandler`);\n outputHandler(command, spawned.stdout!, spawned.stderr!, [...args]);\n }\n\n this._plugins.exec('spawn.after', undefined, {\n ...pluginContext(task, args),\n spawned,\n close(exitCode: number, reason?: Error) {\n done({\n stdOut,\n stdErr,\n exitCode,\n rejection: rejection || reason,\n });\n },\n kill(reason: Error) {\n if (spawned.killed) {\n return;\n }\n\n rejection = reason;\n spawned.kill('SIGINT');\n },\n });\n });\n }\n\n private _beforeSpawn(task: SimpleGitTask, args: string[]) {\n let rejection: Maybe;\n this._plugins.exec('spawn.before', undefined, {\n ...pluginContext(task, args),\n kill(reason) {\n rejection = reason || rejection;\n },\n });\n\n return rejection;\n }\n}\n\nfunction pluginContext(task: SimpleGitTask, commands: string[]) {\n return {\n method: first(task.commands) || '',\n commands,\n };\n}\n\nfunction onErrorReceived(target: Buffer[], logger: OutputLogger) {\n return (err: Error) => {\n logger(`[ERROR] child process exception %o`, err);\n target.push(Buffer.from(String(err.stack), 'ascii'));\n };\n}\n\nfunction onDataReceived(\n target: Buffer[],\n name: string,\n logger: OutputLogger,\n output: OutputLogger\n) {\n return (buffer: Buffer) => {\n logger(`%s received %L bytes`, name, buffer);\n output(`%B`, buffer);\n target.push(buffer);\n };\n}\n", "import type { PluginStore } from '../plugins';\nimport type { GitExecutorEnv, outputHandler, SimpleGitExecutor, SimpleGitTask } from '../types';\n\nimport { GitExecutorChain } from './git-executor-chain';\nimport { Scheduler } from './scheduler';\n\nexport class GitExecutor implements SimpleGitExecutor {\n private _chain = new GitExecutorChain(this, this._scheduler, this._plugins);\n\n public env: GitExecutorEnv;\n public outputHandler?: outputHandler;\n\n constructor(\n public binary: string = 'git',\n public cwd: string,\n private _scheduler: Scheduler,\n private _plugins: PluginStore\n ) {}\n\n chain(): SimpleGitExecutor {\n return new GitExecutorChain(this, this._scheduler, this._plugins);\n }\n\n push(task: SimpleGitTask): Promise {\n return this._chain.push(task);\n }\n}\n", "import { GitError } from './errors/git-error';\nimport { GitResponseError } from './errors/git-response-error';\nimport { SimpleGitTask, SimpleGitTaskCallback } from './types';\nimport { NOOP } from './utils';\n\nexport function taskCallback(\n task: SimpleGitTask,\n response: Promise,\n callback: SimpleGitTaskCallback = NOOP\n) {\n const onSuccess = (data: R) => {\n callback(null, data);\n };\n\n const onError = (err: GitError | GitResponseError) => {\n if (err?.task === task) {\n callback(\n err instanceof GitResponseError ? addDeprecationNoticeToError(err) : err,\n undefined as any\n );\n }\n };\n\n response.then(onSuccess, onError);\n}\n\nfunction addDeprecationNoticeToError(err: GitResponseError) {\n let log = (name: string) => {\n console.warn(\n `simple-git deprecation notice: accessing GitResponseError.${name} should be GitResponseError.git.${name}, this will no longer be available in version 3`\n );\n log = NOOP;\n };\n\n return Object.create(err, Object.getOwnPropertyNames(err.git).reduce(descriptorReducer, {}));\n\n function descriptorReducer(all: PropertyDescriptorMap, name: string): typeof all {\n if (name in err) {\n return all;\n }\n\n all[name] = {\n enumerable: false,\n configurable: false,\n get() {\n log(name);\n return err.git[name];\n },\n };\n\n return all;\n }\n}\n", "import { folderExists } from '../utils';\nimport { SimpleGitExecutor } from '../types';\nimport { adhocExecTask } from './task';\n\nexport function changeWorkingDirectoryTask(directory: string, root?: SimpleGitExecutor) {\n return adhocExecTask((instance: SimpleGitExecutor) => {\n if (!folderExists(directory)) {\n throw new Error(`Git.cwd: cannot change to non-directory \"${directory}\"`);\n }\n\n return ((root || instance).cwd = directory);\n });\n}\n", "import type { SimpleGit } from '../../../typings';\nimport type { SimpleGitApi } from '../simple-git-api';\nimport { getTrailingOptions, remove, trailingFunctionArgument } from '../utils';\nimport { straightThroughStringTask } from './task';\n\nfunction checkoutTask(args: string[]) {\n const commands = ['checkout', ...args];\n if (commands[1] === '-b' && commands.includes('-B')) {\n commands[1] = remove(commands, '-B');\n }\n\n return straightThroughStringTask(commands);\n}\n\nexport default function (): Pick {\n return {\n checkout(this: SimpleGitApi) {\n return this._runTask(\n checkoutTask(getTrailingOptions(arguments, 1)),\n trailingFunctionArgument(arguments)\n );\n },\n\n checkoutBranch(this: SimpleGitApi, branchName, startPoint) {\n return this._runTask(\n checkoutTask(['-b', branchName, startPoint, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n },\n\n checkoutLocalBranch(this: SimpleGitApi, branchName) {\n return this._runTask(\n checkoutTask(['-b', branchName, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n },\n };\n}\n", "import { CommitResult } from '../../../typings';\nimport { LineParser, parseStringResponse } from '../utils';\n\nconst parsers: LineParser[] = [\n new LineParser(/^\\[([^\\s]+)( \\([^)]+\\))? ([^\\]]+)/, (result, [branch, root, commit]) => {\n result.branch = branch;\n result.commit = commit;\n result.root = !!root;\n }),\n new LineParser(/\\s*Author:\\s(.+)/i, (result, [author]) => {\n const parts = author.split('<');\n const email = parts.pop();\n\n if (!email || !email.includes('@')) {\n return;\n }\n\n result.author = {\n email: email.substr(0, email.length - 1),\n name: parts.join('<').trim(),\n };\n }),\n new LineParser(\n /(\\d+)[^,]*(?:,\\s*(\\d+)[^,]*)(?:,\\s*(\\d+))/g,\n (result, [changes, insertions, deletions]) => {\n result.summary.changes = parseInt(changes, 10) || 0;\n result.summary.insertions = parseInt(insertions, 10) || 0;\n result.summary.deletions = parseInt(deletions, 10) || 0;\n }\n ),\n new LineParser(\n /^(\\d+)[^,]*(?:,\\s*(\\d+)[^(]+\\(([+-]))?/,\n (result, [changes, lines, direction]) => {\n result.summary.changes = parseInt(changes, 10) || 0;\n const count = parseInt(lines, 10) || 0;\n if (direction === '-') {\n result.summary.deletions = count;\n } else if (direction === '+') {\n result.summary.insertions = count;\n }\n }\n ),\n];\n\nexport function parseCommitResult(stdOut: string): CommitResult {\n const result: CommitResult = {\n author: null,\n branch: '',\n commit: '',\n root: false,\n summary: {\n changes: 0,\n insertions: 0,\n deletions: 0,\n },\n };\n return parseStringResponse(result, parsers, stdOut);\n}\n", "import type { CommitResult, SimpleGit } from '../../../typings';\nimport type { SimpleGitApi } from '../simple-git-api';\nimport type { StringTask } from '../types';\nimport { parseCommitResult } from '../parsers/parse-commit';\nimport {\n asArray,\n filterArray,\n filterStringOrStringArray,\n filterType,\n getTrailingOptions,\n prefixedArray,\n trailingFunctionArgument,\n} from '../utils';\nimport { configurationErrorTask } from './task';\n\nexport function commitTask(\n message: string[],\n files: string[],\n customArgs: string[]\n): StringTask {\n const commands: string[] = [\n '-c',\n 'core.abbrev=40',\n 'commit',\n ...prefixedArray(message, '-m'),\n ...files,\n ...customArgs,\n ];\n\n return {\n commands,\n format: 'utf-8',\n parser: parseCommitResult,\n };\n}\n\nexport default function (): Pick {\n return {\n commit(this: SimpleGitApi, message: string | string[], ...rest: unknown[]) {\n const next = trailingFunctionArgument(arguments);\n const task =\n rejectDeprecatedSignatures(message) ||\n commitTask(\n asArray(message),\n asArray(filterType(rest[0], filterStringOrStringArray, [])),\n [...filterType(rest[1], filterArray, []), ...getTrailingOptions(arguments, 0, true)]\n );\n\n return this._runTask(task, next);\n },\n };\n\n function rejectDeprecatedSignatures(message?: unknown) {\n return (\n !filterStringOrStringArray(message) &&\n configurationErrorTask(\n `git.commit: requires the commit message to be supplied as a string/string[]`\n )\n );\n }\n}\n", "import { straightThroughStringTask } from './task';\nimport { StringTask } from '../types';\n\n/**\n * Task used by `git.hashObject`\n */\nexport function hashObjectTask(filePath: string, write: boolean): StringTask {\n const commands = ['hash-object', filePath];\n if (write) {\n commands.push('-w');\n }\n\n return straightThroughStringTask(commands, true);\n}\n", "import { InitResult } from '../../../typings';\n\nexport class InitSummary implements InitResult {\n constructor(\n public readonly bare: boolean,\n public readonly path: string,\n public readonly existing: boolean,\n public readonly gitDir: string\n ) {}\n}\n\nconst initResponseRegex = /^Init.+ repository in (.+)$/;\nconst reInitResponseRegex = /^Rein.+ in (.+)$/;\n\nexport function parseInit(bare: boolean, path: string, text: string) {\n const response = String(text).trim();\n let result;\n\n if ((result = initResponseRegex.exec(response))) {\n return new InitSummary(bare, path, false, result[1]);\n }\n\n if ((result = reInitResponseRegex.exec(response))) {\n return new InitSummary(bare, path, true, result[1]);\n }\n\n let gitDir = '';\n const tokens = response.split(' ');\n while (tokens.length) {\n const token = tokens.shift();\n if (token === 'in') {\n gitDir = tokens.join(' ');\n break;\n }\n }\n\n return new InitSummary(bare, path, /^re/i.test(response), gitDir);\n}\n", "import { InitResult } from '../../../typings';\nimport { parseInit } from '../responses/InitSummary';\nimport { StringTask } from '../types';\n\nconst bareCommand = '--bare';\n\nfunction hasBareCommand(command: string[]) {\n return command.includes(bareCommand);\n}\n\nexport function initTask(bare = false, path: string, customArgs: string[]): StringTask {\n const commands = ['init', ...customArgs];\n if (bare && !hasBareCommand(commands)) {\n commands.splice(1, 0, bareCommand);\n }\n\n return {\n commands,\n format: 'utf-8',\n parser(text: string): InitResult {\n return parseInit(commands.includes('--bare'), path, text);\n },\n };\n}\n", "export enum LogFormat {\n NONE = '',\n STAT = '--stat',\n NUM_STAT = '--numstat',\n NAME_ONLY = '--name-only',\n NAME_STATUS = '--name-status',\n}\n\nconst logFormatRegex = /^--(stat|numstat|name-only|name-status)(=|$)/;\n\nexport function logFormatFromCommand(customArgs: string[]) {\n for (let i = 0; i < customArgs.length; i++) {\n const format = logFormatRegex.exec(customArgs[i]);\n if (format) {\n return `--${format[1]}` as LogFormat;\n }\n }\n\n return LogFormat.NONE;\n}\n\nexport function isLogFormat(customArg: string | unknown) {\n return logFormatRegex.test(customArg as string);\n}\n", "import { DiffResult, DiffResultBinaryFile, DiffResultTextFile } from '../../../typings';\n\n/***\n * The DiffSummary is returned as a response to getting `git().status()`\n */\nexport class DiffSummary implements DiffResult {\n changed = 0;\n deletions = 0;\n insertions = 0;\n\n files: Array = [];\n}\n", "import { DiffResult } from '../../../typings';\nimport { LogFormat } from '../args/log-format';\nimport { DiffSummary } from '../responses/DiffSummary';\nimport { asNumber, LineParser, parseStringResponse } from '../utils';\n\nconst statParser = [\n new LineParser(\n /(.+)\\s+\\|\\s+(\\d+)(\\s+[+\\-]+)?$/,\n (result, [file, changes, alterations = '']) => {\n result.files.push({\n file: file.trim(),\n changes: asNumber(changes),\n insertions: alterations.replace(/[^+]/g, '').length,\n deletions: alterations.replace(/[^-]/g, '').length,\n binary: false,\n });\n }\n ),\n new LineParser(\n /(.+) \\|\\s+Bin ([0-9.]+) -> ([0-9.]+) ([a-z]+)/,\n (result, [file, before, after]) => {\n result.files.push({\n file: file.trim(),\n before: asNumber(before),\n after: asNumber(after),\n binary: true,\n });\n }\n ),\n new LineParser(\n /(\\d+) files? changed\\s*((?:, \\d+ [^,]+){0,2})/,\n (result, [changed, summary]) => {\n const inserted = /(\\d+) i/.exec(summary);\n const deleted = /(\\d+) d/.exec(summary);\n\n result.changed = asNumber(changed);\n result.insertions = asNumber(inserted?.[1]);\n result.deletions = asNumber(deleted?.[1]);\n }\n ),\n];\n\nconst numStatParser = [\n new LineParser(\n /(\\d+)\\t(\\d+)\\t(.+)$/,\n (result, [changesInsert, changesDelete, file]) => {\n const insertions = asNumber(changesInsert);\n const deletions = asNumber(changesDelete);\n\n result.changed++;\n result.insertions += insertions;\n result.deletions += deletions;\n\n result.files.push({\n file,\n changes: insertions + deletions,\n insertions,\n deletions,\n binary: false,\n });\n }\n ),\n new LineParser(/-\\t-\\t(.+)$/, (result, [file]) => {\n result.changed++;\n\n result.files.push({\n file,\n after: 0,\n before: 0,\n binary: true,\n });\n }),\n];\n\nconst nameOnlyParser = [\n new LineParser(/(.+)$/, (result, [file]) => {\n result.changed++;\n result.files.push({\n file,\n changes: 0,\n insertions: 0,\n deletions: 0,\n binary: false,\n });\n }),\n];\n\nconst nameStatusParser = [\n new LineParser(/([ACDMRTUXB])\\s*(.+)$/, (result, [_status, file]) => {\n result.changed++;\n result.files.push({\n file,\n changes: 0,\n insertions: 0,\n deletions: 0,\n binary: false,\n });\n }),\n];\n\nconst diffSummaryParsers: Record[]> = {\n [LogFormat.NONE]: statParser,\n [LogFormat.STAT]: statParser,\n [LogFormat.NUM_STAT]: numStatParser,\n [LogFormat.NAME_STATUS]: nameStatusParser,\n [LogFormat.NAME_ONLY]: nameOnlyParser,\n};\n\nexport function getDiffParser(format = LogFormat.NONE) {\n const parser = diffSummaryParsers[format];\n\n return (stdOut: string) => parseStringResponse(new DiffSummary(), parser, stdOut, false);\n}\n", "import { ListLogLine, LogResult } from '../../../typings';\nimport { toLinesWithContent } from '../utils';\nimport { getDiffParser } from './parse-diff-summary';\nimport { LogFormat } from '../args/log-format';\n\nexport const START_BOUNDARY = '\u00F2\u00F2\u00F2\u00F2\u00F2\u00F2 ';\n\nexport const COMMIT_BOUNDARY = ' \u00F2\u00F2';\n\nexport const SPLITTER = ' \u00F2 ';\n\nconst defaultFieldNames = ['hash', 'date', 'message', 'refs', 'author_name', 'author_email'];\n\nfunction lineBuilder(tokens: string[], fields: string[]): any {\n return fields.reduce((line, field, index) => {\n line[field] = tokens[index] || '';\n return line;\n }, Object.create({ diff: null }) as any);\n}\n\nexport function createListLogSummaryParser(\n splitter = SPLITTER,\n fields = defaultFieldNames,\n logFormat = LogFormat.NONE\n) {\n const parseDiffResult = getDiffParser(logFormat);\n\n return function (stdOut: string): LogResult {\n const all: ReadonlyArray = toLinesWithContent(\n stdOut,\n true,\n START_BOUNDARY\n ).map(function (item) {\n const lineDetail = item.trim().split(COMMIT_BOUNDARY);\n const listLogLine: T & ListLogLine = lineBuilder(\n lineDetail[0].trim().split(splitter),\n fields\n );\n\n if (lineDetail.length > 1 && !!lineDetail[1].trim()) {\n listLogLine.diff = parseDiffResult(lineDetail[1]);\n }\n\n return listLogLine;\n });\n\n return {\n all,\n latest: (all.length && all[0]) || null,\n total: all.length,\n };\n };\n}\n", "import { StringTask } from '../types';\nimport { DiffResult } from '../../../typings';\nimport { isLogFormat, LogFormat, logFormatFromCommand } from '../args/log-format';\nimport { getDiffParser } from '../parsers/parse-diff-summary';\nimport { configurationErrorTask, EmptyTask } from './task';\n\nexport function diffSummaryTask(customArgs: string[]): StringTask | EmptyTask {\n let logFormat = logFormatFromCommand(customArgs);\n\n const commands = ['diff'];\n\n if (logFormat === LogFormat.NONE) {\n logFormat = LogFormat.STAT;\n commands.push('--stat=4096');\n }\n\n commands.push(...customArgs);\n\n return (\n validateLogFormatConfig(commands) || {\n commands,\n format: 'utf-8',\n parser: getDiffParser(logFormat),\n }\n );\n}\n\nexport function validateLogFormatConfig(customArgs: unknown[]): EmptyTask | void {\n const flags = customArgs.filter(isLogFormat);\n\n if (flags.length > 1) {\n return configurationErrorTask(\n `Summary flags are mutually exclusive - pick one of ${flags.join(',')}`\n );\n }\n\n if (flags.length && customArgs.includes('-z')) {\n return configurationErrorTask(\n `Summary flag ${flags} parsing is not compatible with null termination option '-z'`\n );\n }\n}\n", "import type { Options, StringTask } from '../types';\nimport type { LogResult, SimpleGit } from '../../../typings';\nimport { logFormatFromCommand } from '../args/log-format';\nimport {\n COMMIT_BOUNDARY,\n createListLogSummaryParser,\n SPLITTER,\n START_BOUNDARY,\n} from '../parsers/parse-list-log-summary';\nimport {\n appendTaskOptions,\n filterArray,\n filterPrimitives,\n filterString,\n filterType,\n trailingFunctionArgument,\n trailingOptionsArgument,\n} from '../utils';\nimport { SimpleGitApi } from '../simple-git-api';\nimport { configurationErrorTask } from './task';\nimport { validateLogFormatConfig } from './diff';\n\nenum excludeOptions {\n '--pretty',\n 'max-count',\n 'maxCount',\n 'n',\n 'file',\n 'format',\n 'from',\n 'to',\n 'splitter',\n 'symmetric',\n 'mailMap',\n 'multiLine',\n 'strictDate',\n}\n\nexport interface DefaultLogFields {\n hash: string;\n date: string;\n message: string;\n refs: string;\n body: string;\n author_name: string;\n author_email: string;\n}\n\nexport type LogOptions = {\n file?: string;\n format?: T;\n from?: string;\n mailMap?: boolean;\n maxCount?: number;\n multiLine?: boolean;\n splitter?: string;\n strictDate?: boolean;\n symmetric?: boolean;\n to?: string;\n};\n\ninterface ParsedLogOptions {\n fields: string[];\n splitter: string;\n commands: string[];\n}\n\nfunction prettyFormat(\n format: Record,\n splitter: string\n): [string[], string] {\n const fields: string[] = [];\n const formatStr: string[] = [];\n\n Object.keys(format).forEach((field) => {\n fields.push(field);\n formatStr.push(String(format[field]));\n });\n\n return [fields, formatStr.join(splitter)];\n}\n\nfunction userOptions(input: T): Options {\n return Object.keys(input).reduce((out, key) => {\n if (!(key in excludeOptions)) {\n out[key] = input[key];\n }\n return out;\n }, {} as Options);\n}\n\nexport function parseLogOptions(\n opt: Options | LogOptions = {},\n customArgs: string[] = []\n): ParsedLogOptions {\n const splitter = filterType(opt.splitter, filterString, SPLITTER);\n const format =\n !filterPrimitives(opt.format) && opt.format\n ? opt.format\n : {\n hash: '%H',\n date: opt.strictDate === false ? '%ai' : '%aI',\n message: '%s',\n refs: '%D',\n body: opt.multiLine ? '%B' : '%b',\n author_name: opt.mailMap !== false ? '%aN' : '%an',\n author_email: opt.mailMap !== false ? '%aE' : '%ae',\n };\n\n const [fields, formatStr] = prettyFormat(format, splitter);\n\n const suffix: string[] = [];\n const command: string[] = [\n `--pretty=format:${START_BOUNDARY}${formatStr}${COMMIT_BOUNDARY}`,\n ...customArgs,\n ];\n\n const maxCount: number | undefined = (opt as any).n || (opt as any)['max-count'] || opt.maxCount;\n if (maxCount) {\n command.push(`--max-count=${maxCount}`);\n }\n\n if (opt.from || opt.to) {\n const rangeOperator = opt.symmetric !== false ? '...' : '..';\n suffix.push(`${opt.from || ''}${rangeOperator}${opt.to || ''}`);\n }\n\n if (filterString(opt.file)) {\n suffix.push('--follow', opt.file);\n }\n\n appendTaskOptions(userOptions(opt as Options), command);\n\n return {\n fields,\n splitter,\n commands: [...command, ...suffix],\n };\n}\n\nexport function logTask(\n splitter: string,\n fields: string[],\n customArgs: string[]\n): StringTask> {\n const parser = createListLogSummaryParser(splitter, fields, logFormatFromCommand(customArgs));\n\n return {\n commands: ['log', ...customArgs],\n format: 'utf-8',\n parser,\n };\n}\n\nexport default function (): Pick {\n return {\n log(this: SimpleGitApi, ...rest: unknown[]) {\n const next = trailingFunctionArgument(arguments);\n const options = parseLogOptions(\n trailingOptionsArgument(arguments),\n filterType(arguments[0], filterArray)\n );\n const task =\n rejectDeprecatedSignatures(...rest) ||\n validateLogFormatConfig(options.commands) ||\n createLogTask(options);\n\n return this._runTask(task, next);\n },\n };\n\n function createLogTask(options: ParsedLogOptions) {\n return logTask(options.splitter, options.fields, options.commands);\n }\n\n function rejectDeprecatedSignatures(from?: unknown, to?: unknown) {\n return (\n filterString(from) &&\n filterString(to) &&\n configurationErrorTask(\n `git.log(string, string) should be replaced with git.log({ from: string, to: string })`\n )\n );\n }\n}\n", "import {\n MergeConflict,\n MergeConflictDeletion,\n MergeDetail,\n MergeResultStatus,\n} from '../../../typings';\n\nexport class MergeSummaryConflict implements MergeConflict {\n constructor(\n public readonly reason: string,\n public readonly file: string | null = null,\n public readonly meta?: MergeConflictDeletion\n ) {}\n\n toString() {\n return `${this.file}:${this.reason}`;\n }\n}\n\nexport class MergeSummaryDetail implements MergeDetail {\n public conflicts: MergeConflict[] = [];\n public merges: string[] = [];\n public result: MergeResultStatus = 'success';\n\n get failed() {\n return this.conflicts.length > 0;\n }\n\n get reason() {\n return this.result;\n }\n\n toString() {\n if (this.conflicts.length) {\n return `CONFLICTS: ${this.conflicts.join(', ')}`;\n }\n\n return 'OK';\n }\n}\n", "import {\n PullDetailFileChanges,\n PullDetailSummary,\n PullFailedResult,\n PullResult,\n} from '../../../typings';\n\nexport class PullSummary implements PullResult {\n public remoteMessages = {\n all: [],\n };\n public created = [];\n public deleted: string[] = [];\n public files: string[] = [];\n public deletions: PullDetailFileChanges = {};\n public insertions: PullDetailFileChanges = {};\n public summary: PullDetailSummary = {\n changes: 0,\n deletions: 0,\n insertions: 0,\n };\n}\n\nexport class PullFailedSummary implements PullFailedResult {\n remote = '';\n hash = {\n local: '',\n remote: '',\n };\n branch = {\n local: '',\n remote: '',\n };\n message = '';\n\n toString() {\n return this.message;\n }\n}\n", "import {\n RemoteMessageResult,\n RemoteMessages,\n RemoteMessagesObjectEnumeration,\n} from '../../../typings';\nimport { asNumber, RemoteLineParser } from '../utils';\n\nfunction objectEnumerationResult(\n remoteMessages: T\n): RemoteMessagesObjectEnumeration {\n return (remoteMessages.objects = remoteMessages.objects || {\n compressing: 0,\n counting: 0,\n enumerating: 0,\n packReused: 0,\n reused: { count: 0, delta: 0 },\n total: { count: 0, delta: 0 },\n });\n}\n\nfunction asObjectCount(source: string) {\n const count = /^\\s*(\\d+)/.exec(source);\n const delta = /delta (\\d+)/i.exec(source);\n\n return {\n count: asNumber((count && count[1]) || '0'),\n delta: asNumber((delta && delta[1]) || '0'),\n };\n}\n\nexport const remoteMessagesObjectParsers: RemoteLineParser>[] =\n [\n new RemoteLineParser(\n /^remote:\\s*(enumerating|counting|compressing) objects: (\\d+),/i,\n (result, [action, count]) => {\n const key = action.toLowerCase();\n const enumeration = objectEnumerationResult(result.remoteMessages);\n\n Object.assign(enumeration, { [key]: asNumber(count) });\n }\n ),\n new RemoteLineParser(\n /^remote:\\s*(enumerating|counting|compressing) objects: \\d+% \\(\\d+\\/(\\d+)\\),/i,\n (result, [action, count]) => {\n const key = action.toLowerCase();\n const enumeration = objectEnumerationResult(result.remoteMessages);\n\n Object.assign(enumeration, { [key]: asNumber(count) });\n }\n ),\n new RemoteLineParser(\n /total ([^,]+), reused ([^,]+), pack-reused (\\d+)/i,\n (result, [total, reused, packReused]) => {\n const objects = objectEnumerationResult(result.remoteMessages);\n objects.total = asObjectCount(total);\n objects.reused = asObjectCount(reused);\n objects.packReused = asNumber(packReused);\n }\n ),\n ];\n", "import { PushResultRemoteMessages, RemoteMessageResult, RemoteMessages } from '../../../typings';\nimport { asNumber, parseStringResponse, RemoteLineParser } from '../utils';\nimport { remoteMessagesObjectParsers } from './parse-remote-objects';\n\nconst parsers: RemoteLineParser>[] =\n [\n new RemoteLineParser(/^remote:\\s*(.+)$/, (result, [text]) => {\n result.remoteMessages.all.push(text.trim());\n return false;\n }),\n ...remoteMessagesObjectParsers,\n new RemoteLineParser(\n [/create a (?:pull|merge) request/i, /\\s(https?:\\/\\/\\S+)$/],\n (result, [pullRequestUrl]) => {\n (result.remoteMessages as PushResultRemoteMessages).pullRequestUrl = pullRequestUrl;\n }\n ),\n new RemoteLineParser(\n [/found (\\d+) vulnerabilities.+\\(([^)]+)\\)/i, /\\s(https?:\\/\\/\\S+)$/],\n (result, [count, summary, url]) => {\n (result.remoteMessages as PushResultRemoteMessages).vulnerabilities = {\n count: asNumber(count),\n summary,\n url,\n };\n }\n ),\n ];\n\nexport function parseRemoteMessages(\n _stdOut: string,\n stdErr: string\n): RemoteMessageResult {\n return parseStringResponse({ remoteMessages: new RemoteMessageSummary() as T }, parsers, stdErr);\n}\n\nexport class RemoteMessageSummary implements RemoteMessages {\n public readonly all: string[] = [];\n}\n", "import { PullDetail, PullFailedResult, PullResult, RemoteMessages } from '../../../typings';\nimport { PullFailedSummary, PullSummary } from '../responses/PullSummary';\nimport { TaskParser } from '../types';\nimport { append, LineParser, parseStringResponse } from '../utils';\nimport { parseRemoteMessages } from './parse-remote-messages';\n\nconst FILE_UPDATE_REGEX = /^\\s*(.+?)\\s+\\|\\s+\\d+\\s*(\\+*)(-*)/;\nconst SUMMARY_REGEX = /(\\d+)\\D+((\\d+)\\D+\\(\\+\\))?(\\D+(\\d+)\\D+\\(-\\))?/;\nconst ACTION_REGEX = /^(create|delete) mode \\d+ (.+)/;\n\nconst parsers: LineParser[] = [\n new LineParser(FILE_UPDATE_REGEX, (result, [file, insertions, deletions]) => {\n result.files.push(file);\n\n if (insertions) {\n result.insertions[file] = insertions.length;\n }\n\n if (deletions) {\n result.deletions[file] = deletions.length;\n }\n }),\n new LineParser(SUMMARY_REGEX, (result, [changes, , insertions, , deletions]) => {\n if (insertions !== undefined || deletions !== undefined) {\n result.summary.changes = +changes || 0;\n result.summary.insertions = +insertions || 0;\n result.summary.deletions = +deletions || 0;\n return true;\n }\n return false;\n }),\n new LineParser(ACTION_REGEX, (result, [action, file]) => {\n append(result.files, file);\n append(action === 'create' ? result.created : result.deleted, file);\n }),\n];\n\nconst errorParsers: LineParser[] = [\n new LineParser(/^from\\s(.+)$/i, (result, [remote]) => void (result.remote = remote)),\n new LineParser(/^fatal:\\s(.+)$/, (result, [message]) => void (result.message = message)),\n new LineParser(\n /([a-z0-9]+)\\.\\.([a-z0-9]+)\\s+(\\S+)\\s+->\\s+(\\S+)$/,\n (result, [hashLocal, hashRemote, branchLocal, branchRemote]) => {\n result.branch.local = branchLocal;\n result.hash.local = hashLocal;\n result.branch.remote = branchRemote;\n result.hash.remote = hashRemote;\n }\n ),\n];\n\nexport const parsePullDetail: TaskParser = (stdOut, stdErr) => {\n return parseStringResponse(new PullSummary(), parsers, [stdOut, stdErr]);\n};\n\nexport const parsePullResult: TaskParser = (stdOut, stdErr) => {\n return Object.assign(\n new PullSummary(),\n parsePullDetail(stdOut, stdErr),\n parseRemoteMessages(stdOut, stdErr)\n );\n};\n\nexport function parsePullErrorResult(stdOut: string, stdErr: string) {\n const pullError = parseStringResponse(new PullFailedSummary(), errorParsers, [stdOut, stdErr]);\n\n return pullError.message && pullError;\n}\n", "import { MergeDetail, MergeResult } from '../../../typings';\nimport { MergeSummaryConflict, MergeSummaryDetail } from '../responses/MergeSummary';\nimport { TaskParser } from '../types';\nimport { LineParser, parseStringResponse } from '../utils';\nimport { parsePullResult } from './parse-pull';\n\nconst parsers: LineParser[] = [\n new LineParser(/^Auto-merging\\s+(.+)$/, (summary, [autoMerge]) => {\n summary.merges.push(autoMerge);\n }),\n new LineParser(/^CONFLICT\\s+\\((.+)\\): Merge conflict in (.+)$/, (summary, [reason, file]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, file));\n }),\n new LineParser(\n /^CONFLICT\\s+\\((.+\\/delete)\\): (.+) deleted in (.+) and/,\n (summary, [reason, file, deleteRef]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, file, { deleteRef }));\n }\n ),\n new LineParser(/^CONFLICT\\s+\\((.+)\\):/, (summary, [reason]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, null));\n }),\n new LineParser(/^Automatic merge failed;\\s+(.+)$/, (summary, [result]) => {\n summary.result = result;\n }),\n];\n\n/**\n * Parse the complete response from `git.merge`\n */\nexport const parseMergeResult: TaskParser = (stdOut, stdErr) => {\n return Object.assign(parseMergeDetail(stdOut, stdErr), parsePullResult(stdOut, stdErr));\n};\n\n/**\n * Parse the merge specific detail (ie: not the content also available in the pull detail) from `git.mnerge`\n * @param stdOut\n */\nexport const parseMergeDetail: TaskParser = (stdOut) => {\n return parseStringResponse(new MergeSummaryDetail(), parsers, stdOut);\n};\n", "import { MergeResult } from '../../../typings';\nimport { GitResponseError } from '../errors/git-response-error';\nimport { parseMergeResult } from '../parsers/parse-merge';\nimport { StringTask } from '../types';\nimport { configurationErrorTask, EmptyTask } from './task';\n\nexport function mergeTask(customArgs: string[]): EmptyTask | StringTask {\n if (!customArgs.length) {\n return configurationErrorTask('Git.merge requires at least one option');\n }\n\n return {\n commands: ['merge', ...customArgs],\n format: 'utf-8',\n parser(stdOut, stdErr): MergeResult {\n const merge = parseMergeResult(stdOut, stdErr);\n if (merge.failed) {\n throw new GitResponseError(merge);\n }\n\n return merge;\n },\n };\n}\n", "import {\n PushDetail,\n PushResult,\n PushResultPushedItem,\n PushResultRemoteMessages,\n} from '../../../typings';\nimport { TaskParser } from '../types';\nimport { LineParser, parseStringResponse } from '../utils';\nimport { parseRemoteMessages } from './parse-remote-messages';\n\nfunction pushResultPushedItem(local: string, remote: string, status: string): PushResultPushedItem {\n const deleted = status.includes('deleted');\n const tag = status.includes('tag') || /^refs\\/tags/.test(local);\n const alreadyUpdated = !status.includes('new');\n\n return {\n deleted,\n tag,\n branch: !tag,\n new: !alreadyUpdated,\n alreadyUpdated,\n local,\n remote,\n };\n}\n\nconst parsers: LineParser[] = [\n new LineParser(/^Pushing to (.+)$/, (result, [repo]) => {\n result.repo = repo;\n }),\n new LineParser(/^updating local tracking ref '(.+)'/, (result, [local]) => {\n result.ref = {\n ...(result.ref || {}),\n local,\n };\n }),\n new LineParser(/^[=*-]\\s+([^:]+):(\\S+)\\s+\\[(.+)]$/, (result, [local, remote, type]) => {\n result.pushed.push(pushResultPushedItem(local, remote, type));\n }),\n new LineParser(\n /^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/,\n (result, [local, remote, remoteName]) => {\n result.branch = {\n ...(result.branch || {}),\n local,\n remote,\n remoteName,\n };\n }\n ),\n new LineParser(\n /^([^:]+):(\\S+)\\s+([a-z0-9]+)\\.\\.([a-z0-9]+)$/,\n (result, [local, remote, from, to]) => {\n result.update = {\n head: {\n local,\n remote,\n },\n hash: {\n from,\n to,\n },\n };\n }\n ),\n];\n\nexport const parsePushResult: TaskParser = (stdOut, stdErr) => {\n const pushDetail = parsePushDetail(stdOut, stdErr);\n const responseDetail = parseRemoteMessages(stdOut, stdErr);\n\n return {\n ...pushDetail,\n ...responseDetail,\n };\n};\n\nexport const parsePushDetail: TaskParser = (stdOut, stdErr) => {\n return parseStringResponse({ pushed: [] }, parsers, [stdOut, stdErr]);\n};\n", "import { PushResult } from '../../../typings';\nimport { parsePushResult as parser } from '../parsers/parse-push';\nimport { StringTask } from '../types';\nimport { append, remove } from '../utils';\n\ntype PushRef = { remote?: string; branch?: string };\n\nexport function pushTagsTask(ref: PushRef = {}, customArgs: string[]): StringTask {\n append(customArgs, '--tags');\n return pushTask(ref, customArgs);\n}\n\nexport function pushTask(ref: PushRef = {}, customArgs: string[]): StringTask {\n const commands = ['push', ...customArgs];\n if (ref.branch) {\n commands.splice(1, 0, ref.branch);\n }\n if (ref.remote) {\n commands.splice(1, 0, ref.remote);\n }\n\n remove(commands, '-v');\n append(commands, '--verbose');\n append(commands, '--porcelain');\n\n return {\n commands,\n format: 'utf-8',\n parser,\n };\n}\n", "import { SimpleGit } from '../../../typings';\nimport { SimpleGitApi } from '../simple-git-api';\nimport { getTrailingOptions, trailingFunctionArgument } from '../utils';\nimport { straightThroughBufferTask, straightThroughStringTask } from './task';\n\nexport default function (): Pick {\n return {\n showBuffer(this: SimpleGitApi) {\n const commands = ['show', ...getTrailingOptions(arguments, 1)];\n if (!commands.includes('--binary')) {\n commands.splice(1, 0, '--binary');\n }\n\n return this._runTask(\n straightThroughBufferTask(commands),\n trailingFunctionArgument(arguments)\n );\n },\n\n show(this: SimpleGitApi) {\n const commands = ['show', ...getTrailingOptions(arguments, 1)];\n return this._runTask(\n straightThroughStringTask(commands),\n trailingFunctionArgument(arguments)\n );\n },\n };\n}\n", "import { FileStatusResult } from '../../../typings';\n\nexport const fromPathRegex = /^(.+) -> (.+)$/;\n\nexport class FileStatusSummary implements FileStatusResult {\n public readonly from: string | undefined;\n\n constructor(public path: string, public index: string, public working_dir: string) {\n if ('R' === index + working_dir) {\n const detail = fromPathRegex.exec(path) || [null, path, path];\n this.from = detail[1] || '';\n this.path = detail[2] || '';\n }\n }\n}\n", "import { StatusResult } from '../../../typings';\nimport { append, NULL } from '../utils';\nimport { FileStatusSummary } from './FileStatusSummary';\n\ntype StatusLineParser = (result: StatusResult, file: string) => void;\n\nexport class StatusSummary implements StatusResult {\n public not_added = [];\n public conflicted = [];\n public created = [];\n public deleted = [];\n public ignored = undefined;\n public modified = [];\n public renamed = [];\n public files = [];\n public staged = [];\n public ahead = 0;\n public behind = 0;\n public current = null;\n public tracking = null;\n public detached = false;\n\n public isClean = () => {\n return !this.files.length;\n };\n}\n\nenum PorcelainFileStatus {\n ADDED = 'A',\n DELETED = 'D',\n MODIFIED = 'M',\n RENAMED = 'R',\n COPIED = 'C',\n UNMERGED = 'U',\n UNTRACKED = '?',\n IGNORED = '!',\n NONE = ' ',\n}\n\nfunction renamedFile(line: string) {\n const [to, from] = line.split(NULL);\n\n return {\n from: from || to,\n to,\n };\n}\n\nfunction parser(\n indexX: PorcelainFileStatus,\n indexY: PorcelainFileStatus,\n handler: StatusLineParser\n): [string, StatusLineParser] {\n return [`${indexX}${indexY}`, handler];\n}\n\nfunction conflicts(indexX: PorcelainFileStatus, ...indexY: PorcelainFileStatus[]) {\n return indexY.map((y) => parser(indexX, y, (result, file) => append(result.conflicted, file)));\n}\n\nconst parsers: Map = new Map([\n parser(PorcelainFileStatus.NONE, PorcelainFileStatus.ADDED, (result, file) =>\n append(result.created, file)\n ),\n parser(PorcelainFileStatus.NONE, PorcelainFileStatus.DELETED, (result, file) =>\n append(result.deleted, file)\n ),\n parser(PorcelainFileStatus.NONE, PorcelainFileStatus.MODIFIED, (result, file) =>\n append(result.modified, file)\n ),\n\n parser(\n PorcelainFileStatus.ADDED,\n PorcelainFileStatus.NONE,\n (result, file) => append(result.created, file) && append(result.staged, file)\n ),\n parser(\n PorcelainFileStatus.ADDED,\n PorcelainFileStatus.MODIFIED,\n (result, file) =>\n append(result.created, file) &&\n append(result.staged, file) &&\n append(result.modified, file)\n ),\n\n parser(\n PorcelainFileStatus.DELETED,\n PorcelainFileStatus.NONE,\n (result, file) => append(result.deleted, file) && append(result.staged, file)\n ),\n\n parser(\n PorcelainFileStatus.MODIFIED,\n PorcelainFileStatus.NONE,\n (result, file) => append(result.modified, file) && append(result.staged, file)\n ),\n parser(\n PorcelainFileStatus.MODIFIED,\n PorcelainFileStatus.MODIFIED,\n (result, file) => append(result.modified, file) && append(result.staged, file)\n ),\n\n parser(PorcelainFileStatus.RENAMED, PorcelainFileStatus.NONE, (result, file) => {\n append(result.renamed, renamedFile(file));\n }),\n parser(PorcelainFileStatus.RENAMED, PorcelainFileStatus.MODIFIED, (result, file) => {\n const renamed = renamedFile(file);\n append(result.renamed, renamed);\n append(result.modified, renamed.to);\n }),\n parser(PorcelainFileStatus.IGNORED, PorcelainFileStatus.IGNORED, (_result, _file) => {\n append((_result.ignored = _result.ignored || []), _file);\n }),\n\n parser(PorcelainFileStatus.UNTRACKED, PorcelainFileStatus.UNTRACKED, (result, file) =>\n append(result.not_added, file)\n ),\n\n ...conflicts(PorcelainFileStatus.ADDED, PorcelainFileStatus.ADDED, PorcelainFileStatus.UNMERGED),\n ...conflicts(\n PorcelainFileStatus.DELETED,\n PorcelainFileStatus.DELETED,\n PorcelainFileStatus.UNMERGED\n ),\n ...conflicts(\n PorcelainFileStatus.UNMERGED,\n PorcelainFileStatus.ADDED,\n PorcelainFileStatus.DELETED,\n PorcelainFileStatus.UNMERGED\n ),\n\n [\n '##',\n (result, line) => {\n const aheadReg = /ahead (\\d+)/;\n const behindReg = /behind (\\d+)/;\n const currentReg = /^(.+?(?=(?:\\.{3}|\\s|$)))/;\n const trackingReg = /\\.{3}(\\S*)/;\n const onEmptyBranchReg = /\\son\\s([\\S]+)$/;\n let regexResult;\n\n regexResult = aheadReg.exec(line);\n result.ahead = (regexResult && +regexResult[1]) || 0;\n\n regexResult = behindReg.exec(line);\n result.behind = (regexResult && +regexResult[1]) || 0;\n\n regexResult = currentReg.exec(line);\n result.current = regexResult && regexResult[1];\n\n regexResult = trackingReg.exec(line);\n result.tracking = regexResult && regexResult[1];\n\n regexResult = onEmptyBranchReg.exec(line);\n result.current = (regexResult && regexResult[1]) || result.current;\n\n result.detached = /\\(no branch\\)/.test(line);\n },\n ],\n]);\n\nexport const parseStatusSummary = function (text: string): StatusResult {\n const lines = text.split(NULL);\n const status = new StatusSummary();\n\n for (let i = 0, l = lines.length; i < l; ) {\n let line = lines[i++].trim();\n\n if (!line) {\n continue;\n }\n\n if (line.charAt(0) === PorcelainFileStatus.RENAMED) {\n line += NULL + (lines[i++] || '');\n }\n\n splitLine(status, line);\n }\n\n return status;\n};\n\nfunction splitLine(result: StatusResult, lineStr: string) {\n const trimmed = lineStr.trim();\n switch (' ') {\n case trimmed.charAt(2):\n return data(trimmed.charAt(0), trimmed.charAt(1), trimmed.substr(3));\n case trimmed.charAt(1):\n return data(PorcelainFileStatus.NONE, trimmed.charAt(0), trimmed.substr(2));\n default:\n return;\n }\n\n function data(index: string, workingDir: string, path: string) {\n const raw = `${index}${workingDir}`;\n const handler = parsers.get(raw);\n\n if (handler) {\n handler(result, path);\n }\n\n if (raw !== '##' && raw !== '!!') {\n result.files.push(new FileStatusSummary(path.replace(/\\0.+$/, ''), index, workingDir));\n }\n }\n}\n", "import { StatusResult } from '../../../typings';\nimport { parseStatusSummary } from '../responses/StatusSummary';\nimport { StringTask } from '../types';\n\nconst ignoredOptions = ['--null', '-z'];\n\nexport function statusTask(customArgs: string[]): StringTask {\n const commands = [\n 'status',\n '--porcelain',\n '-b',\n '-u',\n '--null',\n ...customArgs.filter((arg) => !ignoredOptions.includes(arg)),\n ];\n\n return {\n format: 'utf-8',\n commands,\n parser(text: string) {\n return parseStatusSummary(text);\n },\n };\n}\n", "import type { SimpleGitApi } from '../simple-git-api';\nimport type { SimpleGit } from '../../../typings';\nimport { asNumber, ExitCodes, LineParser, parseStringResponse } from '../utils';\n\nexport interface VersionResult {\n major: number;\n minor: number;\n patch: number | string;\n agent: string;\n installed: boolean;\n}\n\nconst NOT_INSTALLED = 'installed=false';\n\nfunction versionResponse(\n major = 0,\n minor = 0,\n patch: string | number = 0,\n agent = '',\n installed = true\n): VersionResult {\n return Object.defineProperty(\n {\n major,\n minor,\n patch,\n agent,\n installed,\n },\n 'toString',\n {\n value() {\n return `${this.major}.${this.minor}.${this.patch}`;\n },\n configurable: false,\n enumerable: false,\n }\n );\n}\n\nfunction notInstalledResponse() {\n return versionResponse(0, 0, 0, '', false);\n}\n\nexport default function (): Pick {\n return {\n version(this: SimpleGitApi) {\n return this._runTask({\n commands: ['--version'],\n format: 'utf-8',\n parser: versionParser,\n onError(result, error, done, fail) {\n if (result.exitCode === ExitCodes.NOT_FOUND) {\n return done(Buffer.from(NOT_INSTALLED));\n }\n\n fail(error);\n },\n });\n },\n };\n}\n\nconst parsers: LineParser[] = [\n new LineParser(\n /version (\\d+)\\.(\\d+)\\.(\\d+)(?:\\s*\\((.+)\\))?/,\n (result, [major, minor, patch, agent = '']) => {\n Object.assign(\n result,\n versionResponse(asNumber(major), asNumber(minor), asNumber(patch), agent)\n );\n }\n ),\n new LineParser(\n /version (\\d+)\\.(\\d+)\\.(\\D+)(.+)?$/,\n (result, [major, minor, patch, agent = '']) => {\n Object.assign(result, versionResponse(asNumber(major), asNumber(minor), patch, agent));\n }\n ),\n];\n\nfunction versionParser(stdOut: string) {\n if (stdOut === NOT_INSTALLED) {\n return notInstalledResponse();\n }\n\n return parseStringResponse(versionResponse(0, 0, 0, stdOut), parsers, stdOut);\n}\n", "import { SimpleGitBase } from '../../typings';\nimport { taskCallback } from './task-callback';\nimport { changeWorkingDirectoryTask } from './tasks/change-working-directory';\nimport checkout from './tasks/checkout';\nimport commit from './tasks/commit';\nimport config from './tasks/config';\nimport grep from './tasks/grep';\nimport { hashObjectTask } from './tasks/hash-object';\nimport { initTask } from './tasks/init';\nimport log from './tasks/log';\nimport { mergeTask } from './tasks/merge';\nimport { pushTask } from './tasks/push';\nimport show from './tasks/show';\nimport { statusTask } from './tasks/status';\nimport { configurationErrorTask, straightThroughStringTask } from './tasks/task';\nimport version from './tasks/version';\nimport { outputHandler, SimpleGitExecutor, SimpleGitTask, SimpleGitTaskCallback } from './types';\nimport {\n asArray,\n filterString,\n filterType,\n getTrailingOptions,\n trailingFunctionArgument,\n} from './utils';\n\nexport class SimpleGitApi implements SimpleGitBase {\n constructor(private _executor: SimpleGitExecutor) {}\n\n protected _runTask(task: SimpleGitTask, then?: SimpleGitTaskCallback) {\n const chain = this._executor.chain();\n const promise = chain.push(task);\n\n if (then) {\n taskCallback(task, promise, then);\n }\n\n return Object.create(this, {\n then: { value: promise.then.bind(promise) },\n catch: { value: promise.catch.bind(promise) },\n _executor: { value: chain },\n });\n }\n\n add(files: string | string[]) {\n return this._runTask(\n straightThroughStringTask(['add', ...asArray(files)]),\n trailingFunctionArgument(arguments)\n );\n }\n\n cwd(directory: string | { path: string; root?: boolean }) {\n const next = trailingFunctionArgument(arguments);\n\n if (typeof directory === 'string') {\n return this._runTask(changeWorkingDirectoryTask(directory, this._executor), next);\n }\n\n if (typeof directory?.path === 'string') {\n return this._runTask(\n changeWorkingDirectoryTask(\n directory.path,\n (directory.root && this._executor) || undefined\n ),\n next\n );\n }\n\n return this._runTask(\n configurationErrorTask('Git.cwd: workingDirectory must be supplied as a string'),\n next\n );\n }\n\n hashObject(path: string, write: boolean | unknown) {\n return this._runTask(\n hashObjectTask(path, write === true),\n trailingFunctionArgument(arguments)\n );\n }\n\n init(bare?: boolean | unknown) {\n return this._runTask(\n initTask(bare === true, this._executor.cwd, getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n\n merge() {\n return this._runTask(\n mergeTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n\n mergeFromTo(remote: string, branch: string) {\n if (!(filterString(remote) && filterString(branch))) {\n return this._runTask(\n configurationErrorTask(\n `Git.mergeFromTo requires that the 'remote' and 'branch' arguments are supplied as strings`\n )\n );\n }\n\n return this._runTask(\n mergeTask([remote, branch, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments, false)\n );\n }\n\n outputHandler(handler: outputHandler) {\n this._executor.outputHandler = handler;\n return this;\n }\n\n push() {\n const task = pushTask(\n {\n remote: filterType(arguments[0], filterString),\n branch: filterType(arguments[1], filterString),\n },\n getTrailingOptions(arguments)\n );\n\n return this._runTask(task, trailingFunctionArgument(arguments));\n }\n\n stash() {\n return this._runTask(\n straightThroughStringTask(['stash', ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n }\n\n status() {\n return this._runTask(\n statusTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n}\n\nObject.assign(\n SimpleGitApi.prototype,\n checkout(),\n commit(),\n config(),\n grep(),\n log(),\n show(),\n version()\n);\n", "import { append, remove } from '../utils';\nimport { createDeferred, DeferredPromise } from '@kwsites/promise-deferred';\nimport { createLogger } from '../git-logger';\n\ntype ScheduleCompleteCallback = () => void;\ntype ScheduledTask = Pick, 'promise' | 'done'> & {\n id: number;\n};\n\nconst createScheduledTask: () => ScheduledTask = (() => {\n let id = 0;\n return () => {\n id++;\n const { promise, done } = createDeferred();\n\n return {\n promise,\n done,\n id,\n };\n };\n})();\n\nexport class Scheduler {\n private logger = createLogger('', 'scheduler');\n private pending: ScheduledTask[] = [];\n private running: ScheduledTask[] = [];\n\n constructor(private concurrency = 2) {\n this.logger(`Constructed, concurrency=%s`, concurrency);\n }\n\n private schedule() {\n if (!this.pending.length || this.running.length >= this.concurrency) {\n this.logger(\n `Schedule attempt ignored, pending=%s running=%s concurrency=%s`,\n this.pending.length,\n this.running.length,\n this.concurrency\n );\n return;\n }\n\n const task = append(this.running, this.pending.shift()!);\n this.logger(`Attempting id=%s`, task.id);\n task.done(() => {\n this.logger(`Completing id=`, task.id);\n remove(this.running, task);\n this.schedule();\n });\n }\n\n next(): Promise {\n const { promise, id } = append(this.pending, createScheduledTask());\n this.logger(`Scheduling id=%s`, id);\n\n this.schedule();\n\n return promise;\n }\n}\n", "import { straightThroughStringTask } from './task';\nimport { OptionFlags, Options, StringTask } from '../types';\n\nexport type ApplyOptions = Options &\n OptionFlags<\n | '--stat'\n | '--numstat'\n | '--summary'\n | '--check'\n | '--index'\n | '--intent-to-add'\n | '--3way'\n | '--apply'\n | '--no-add'\n | '-R'\n | '--reverse'\n | '--allow-binary-replacement'\n | '--binary'\n | '--reject'\n | '-z'\n | '--inaccurate-eof'\n | '--recount'\n | '--cached'\n | '--ignore-space-change'\n | '--ignore-whitespace'\n | '--verbose'\n | '--unsafe-paths'\n > &\n OptionFlags<'--whitespace', 'nowarn' | 'warn' | 'fix' | 'error' | 'error-all'> &\n OptionFlags<'--build-fake-ancestor' | '--exclude' | '--include' | '--directory', string> &\n OptionFlags<'-p' | '-C', number>;\n\nexport function applyPatchTask(patches: string[], customArgs: string[]): StringTask {\n return straightThroughStringTask(['apply', ...customArgs, ...patches]);\n}\n", "import {\n BranchMultiDeleteResult,\n BranchSingleDeleteFailure,\n BranchSingleDeleteResult,\n BranchSingleDeleteSuccess,\n} from '../../../typings';\n\nexport class BranchDeletionBatch implements BranchMultiDeleteResult {\n all: BranchSingleDeleteResult[] = [];\n branches: { [branchName: string]: BranchSingleDeleteResult } = {};\n errors: BranchSingleDeleteResult[] = [];\n\n get success(): boolean {\n return !this.errors.length;\n }\n}\n\nexport function branchDeletionSuccess(branch: string, hash: string): BranchSingleDeleteSuccess {\n return {\n branch,\n hash,\n success: true,\n };\n}\n\nexport function branchDeletionFailure(branch: string): BranchSingleDeleteFailure {\n return {\n branch,\n hash: null,\n success: false,\n };\n}\n\nexport function isSingleBranchDeleteFailure(\n test: BranchSingleDeleteResult\n): test is BranchSingleDeleteSuccess {\n return test.success;\n}\n", "import { BranchMultiDeleteResult } from '../../../typings';\nimport {\n BranchDeletionBatch,\n branchDeletionFailure,\n branchDeletionSuccess,\n} from '../responses/BranchDeleteSummary';\nimport { TaskParser } from '../types';\nimport { ExitCodes, LineParser, parseStringResponse } from '../utils';\n\nconst deleteSuccessRegex = /(\\S+)\\s+\\(\\S+\\s([^)]+)\\)/;\nconst deleteErrorRegex = /^error[^']+'([^']+)'/m;\n\nconst parsers: LineParser[] = [\n new LineParser(deleteSuccessRegex, (result, [branch, hash]) => {\n const deletion = branchDeletionSuccess(branch, hash);\n\n result.all.push(deletion);\n result.branches[branch] = deletion;\n }),\n new LineParser(deleteErrorRegex, (result, [branch]) => {\n const deletion = branchDeletionFailure(branch);\n\n result.errors.push(deletion);\n result.all.push(deletion);\n result.branches[branch] = deletion;\n }),\n];\n\nexport const parseBranchDeletions: TaskParser = (\n stdOut,\n stdErr\n) => {\n return parseStringResponse(new BranchDeletionBatch(), parsers, [stdOut, stdErr]);\n};\n\nexport function hasBranchDeletionError(data: string, processExitCode: ExitCodes): boolean {\n return processExitCode === ExitCodes.ERROR && deleteErrorRegex.test(data);\n}\n", "import type { BranchSummary, BranchSummaryBranch } from '../../../typings';\n\nexport enum BranchStatusIdentifier {\n CURRENT = '*',\n LINKED = '+',\n}\n\nexport class BranchSummaryResult implements BranchSummary {\n public all: string[] = [];\n public branches: { [p: string]: BranchSummaryBranch } = {};\n public current: string = '';\n public detached: boolean = false;\n\n push(\n status: BranchStatusIdentifier | unknown,\n detached: boolean,\n name: string,\n commit: string,\n label: string\n ) {\n if (status === BranchStatusIdentifier.CURRENT) {\n this.detached = detached;\n this.current = name;\n }\n\n this.all.push(name);\n this.branches[name] = {\n current: status === BranchStatusIdentifier.CURRENT,\n linkedWorkTree: status === BranchStatusIdentifier.LINKED,\n name,\n commit,\n label,\n };\n }\n}\n", "import type { BranchSummary } from '../../../typings';\nimport { BranchSummaryResult } from '../responses/BranchSummary';\nimport { LineParser, parseStringResponse } from '../utils';\n\nconst parsers: LineParser[] = [\n new LineParser(\n /^([*+]\\s)?\\((?:HEAD )?detached (?:from|at) (\\S+)\\)\\s+([a-z0-9]+)\\s(.*)$/,\n (result, [current, name, commit, label]) => {\n result.push(branchStatus(current), true, name, commit, label);\n }\n ),\n new LineParser(\n /^([*+]\\s)?(\\S+)\\s+([a-z0-9]+)\\s?(.*)$/s,\n (result, [current, name, commit, label]) => {\n result.push(branchStatus(current), false, name, commit, label);\n }\n ),\n];\n\nfunction branchStatus(input?: string) {\n return input ? input.charAt(0) : '';\n}\n\nexport function parseBranchSummary(stdOut: string): BranchSummary {\n return parseStringResponse(new BranchSummaryResult(), parsers, stdOut);\n}\n", "import { BranchMultiDeleteResult, BranchSingleDeleteResult, BranchSummary } from '../../../typings';\nimport { StringTask } from '../types';\nimport { GitResponseError } from '../errors/git-response-error';\nimport { hasBranchDeletionError, parseBranchDeletions } from '../parsers/parse-branch-delete';\nimport { parseBranchSummary } from '../parsers/parse-branch';\nimport { bufferToString } from '../utils';\n\nexport function containsDeleteBranchCommand(commands: string[]) {\n const deleteCommands = ['-d', '-D', '--delete'];\n return commands.some((command) => deleteCommands.includes(command));\n}\n\nexport function branchTask(\n customArgs: string[]\n): StringTask {\n const isDelete = containsDeleteBranchCommand(customArgs);\n const commands = ['branch', ...customArgs];\n\n if (commands.length === 1) {\n commands.push('-a');\n }\n\n if (!commands.includes('-v')) {\n commands.splice(1, 0, '-v');\n }\n\n return {\n format: 'utf-8',\n commands,\n parser(stdOut, stdErr) {\n if (isDelete) {\n return parseBranchDeletions(stdOut, stdErr).all[0];\n }\n\n return parseBranchSummary(stdOut);\n },\n };\n}\n\nexport function branchLocalTask(): StringTask {\n const parser = parseBranchSummary;\n\n return {\n format: 'utf-8',\n commands: ['branch', '-v'],\n parser,\n };\n}\n\nexport function deleteBranchesTask(\n branches: string[],\n forceDelete = false\n): StringTask {\n return {\n format: 'utf-8',\n commands: ['branch', '-v', forceDelete ? '-D' : '-d', ...branches],\n parser(stdOut, stdErr) {\n return parseBranchDeletions(stdOut, stdErr);\n },\n onError({ exitCode, stdOut }, error, done, fail) {\n if (!hasBranchDeletionError(String(error), exitCode)) {\n return fail(error);\n }\n\n done(stdOut);\n },\n };\n}\n\nexport function deleteBranchTask(\n branch: string,\n forceDelete = false\n): StringTask {\n const task: StringTask = {\n format: 'utf-8',\n commands: ['branch', '-v', forceDelete ? '-D' : '-d', branch],\n parser(stdOut, stdErr) {\n return parseBranchDeletions(stdOut, stdErr).branches[branch]!;\n },\n onError({ exitCode, stdErr, stdOut }, error, _, fail) {\n if (!hasBranchDeletionError(String(error), exitCode)) {\n return fail(error);\n }\n\n throw new GitResponseError(\n task.parser(bufferToString(stdOut), bufferToString(stdErr)),\n String(error)\n );\n },\n };\n\n return task;\n}\n", "/**\n * Parser for the `check-ignore` command - returns each file as a string array\n */\nexport const parseCheckIgnore = (text: string): string[] => {\n return text\n .split(/\\n/g)\n .map((line) => line.trim())\n .filter((file) => !!file);\n};\n", "import { StringTask } from '../types';\nimport { parseCheckIgnore } from '../responses/CheckIgnore';\n\nexport function checkIgnoreTask(paths: string[]): StringTask {\n return {\n commands: ['check-ignore', ...paths],\n format: 'utf-8',\n parser: parseCheckIgnore,\n };\n}\n", "import { configurationErrorTask, EmptyTask, straightThroughStringTask } from './task';\nimport { OptionFlags, Options, StringTask } from '../types';\nimport { append, filterString } from '../utils';\n\nexport type CloneOptions = Options &\n OptionFlags<\n | '--bare'\n | '--dissociate'\n | '--mirror'\n | '--no-checkout'\n | '--no-remote-submodules'\n | '--no-shallow-submodules'\n | '--no-single-branch'\n | '--no-tags'\n | '--remote-submodules'\n | '--single-branch'\n | '--shallow-submodules'\n | '--verbose'\n > &\n OptionFlags<'--depth' | '-j' | '--jobs', number> &\n OptionFlags<\n | '--branch'\n | '--origin'\n | '--recurse-submodules'\n | '--separate-git-dir'\n | '--shallow-exclude'\n | '--shallow-since'\n | '--template',\n string\n >;\n\nfunction disallowedCommand(command: string) {\n return /^--upload-pack(=|$)/.test(command);\n}\n\nexport function cloneTask(\n repo: string | undefined,\n directory: string | undefined,\n customArgs: string[]\n): StringTask | EmptyTask {\n const commands = ['clone', ...customArgs];\n\n filterString(repo) && commands.push(repo);\n filterString(directory) && commands.push(directory);\n\n const banned = commands.find(disallowedCommand);\n if (banned) {\n return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);\n }\n\n return straightThroughStringTask(commands);\n}\n\nexport function cloneMirrorTask(\n repo: string | undefined,\n directory: string | undefined,\n customArgs: string[]\n) {\n append(customArgs, '--mirror');\n\n return cloneTask(repo, directory, customArgs);\n}\n", "import { FetchResult } from '../../../typings';\nimport { LineParser, parseStringResponse } from '../utils';\n\nconst parsers: LineParser[] = [\n new LineParser(/From (.+)$/, (result, [remote]) => {\n result.remote = remote;\n }),\n new LineParser(/\\* \\[new branch]\\s+(\\S+)\\s*-> (.+)$/, (result, [name, tracking]) => {\n result.branches.push({\n name,\n tracking,\n });\n }),\n new LineParser(/\\* \\[new tag]\\s+(\\S+)\\s*-> (.+)$/, (result, [name, tracking]) => {\n result.tags.push({\n name,\n tracking,\n });\n }),\n new LineParser(/- \\[deleted]\\s+\\S+\\s*-> (.+)$/, (result, [tracking]) => {\n result.deleted.push({\n tracking,\n });\n }),\n new LineParser(\n /\\s*([^.]+)\\.\\.(\\S+)\\s+(\\S+)\\s*-> (.+)$/,\n (result, [from, to, name, tracking]) => {\n result.updated.push({\n name,\n tracking,\n to,\n from,\n });\n }\n ),\n];\n\nexport function parseFetchResult(stdOut: string, stdErr: string): FetchResult {\n const result: FetchResult = {\n raw: stdOut,\n remote: null,\n branches: [],\n tags: [],\n updated: [],\n deleted: [],\n };\n return parseStringResponse(result, parsers, [stdOut, stdErr]);\n}\n", "import { FetchResult } from '../../../typings';\nimport { parseFetchResult } from '../parsers/parse-fetch';\nimport { StringTask } from '../types';\n\nimport { configurationErrorTask, EmptyTask } from './task';\n\nfunction disallowedCommand(command: string) {\n return /^--upload-pack(=|$)/.test(command);\n}\n\nexport function fetchTask(\n remote: string,\n branch: string,\n customArgs: string[]\n): StringTask | EmptyTask {\n const commands = ['fetch', ...customArgs];\n if (remote && branch) {\n commands.push(remote, branch);\n }\n\n const banned = commands.find(disallowedCommand);\n if (banned) {\n return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);\n }\n\n return {\n commands,\n format: 'utf-8',\n parser: parseFetchResult,\n };\n}\n", "import { MoveResult } from '../../../typings';\nimport { LineParser, parseStringResponse } from '../utils';\n\nconst parsers: LineParser[] = [\n new LineParser(/^Renaming (.+) to (.+)$/, (result, [from, to]) => {\n result.moves.push({ from, to });\n }),\n];\n\nexport function parseMoveResult(stdOut: string): MoveResult {\n return parseStringResponse({ moves: [] }, parsers, stdOut);\n}\n", "import { MoveResult } from '../../../typings';\nimport { parseMoveResult } from '../parsers/parse-move';\nimport { StringTask } from '../types';\nimport { asArray } from '../utils';\n\nexport function moveTask(from: string | string[], to: string): StringTask {\n return {\n commands: ['mv', '-v', ...asArray(from), to],\n format: 'utf-8',\n parser: parseMoveResult,\n };\n}\n", "import { PullResult } from '../../../typings';\nimport { GitResponseError } from '../errors/git-response-error';\nimport { parsePullErrorResult, parsePullResult } from '../parsers/parse-pull';\nimport { Maybe, StringTask } from '../types';\nimport { bufferToString } from '../utils';\n\nexport function pullTask(\n remote: Maybe,\n branch: Maybe,\n customArgs: string[]\n): StringTask {\n const commands: string[] = ['pull', ...customArgs];\n if (remote && branch) {\n commands.splice(1, 0, remote, branch);\n }\n\n return {\n commands,\n format: 'utf-8',\n parser(stdOut, stdErr): PullResult {\n return parsePullResult(stdOut, stdErr);\n },\n onError(result, _error, _done, fail) {\n const pullError = parsePullErrorResult(\n bufferToString(result.stdOut),\n bufferToString(result.stdErr)\n );\n if (pullError) {\n return fail(new GitResponseError(pullError));\n }\n\n fail(_error);\n },\n };\n}\n", "import { forEachLineWithContent } from '../utils';\n\nexport interface RemoteWithoutRefs {\n name: string;\n}\n\nexport interface RemoteWithRefs extends RemoteWithoutRefs {\n refs: {\n fetch: string;\n push: string;\n };\n}\n\nexport function parseGetRemotes(text: string): RemoteWithoutRefs[] {\n const remotes: { [name: string]: RemoteWithoutRefs } = {};\n\n forEach(text, ([name]) => (remotes[name] = { name }));\n\n return Object.values(remotes);\n}\n\nexport function parseGetRemotesVerbose(text: string): RemoteWithRefs[] {\n const remotes: { [name: string]: RemoteWithRefs } = {};\n\n forEach(text, ([name, url, purpose]) => {\n if (!remotes.hasOwnProperty(name)) {\n remotes[name] = {\n name: name,\n refs: { fetch: '', push: '' },\n };\n }\n\n if (purpose && url) {\n remotes[name].refs[purpose.replace(/[^a-z]/g, '') as keyof RemoteWithRefs['refs']] = url;\n }\n });\n\n return Object.values(remotes);\n}\n\nfunction forEach(text: string, handler: (line: string[]) => void) {\n forEachLineWithContent(text, (line) => handler(line.split(/\\s+/)));\n}\n", "import { parseGetRemotes, parseGetRemotesVerbose } from '../responses/GetRemoteSummary';\nimport { StringTask } from '../types';\nimport { straightThroughStringTask } from './task';\n\nexport function addRemoteTask(\n remoteName: string,\n remoteRepo: string,\n customArgs: string[] = []\n): StringTask {\n return straightThroughStringTask(['remote', 'add', ...customArgs, remoteName, remoteRepo]);\n}\n\nexport function getRemotesTask(verbose: boolean): StringTask {\n const commands = ['remote'];\n if (verbose) {\n commands.push('-v');\n }\n\n return {\n commands,\n format: 'utf-8',\n parser: verbose ? parseGetRemotesVerbose : parseGetRemotes,\n };\n}\n\nexport function listRemotesTask(customArgs: string[] = []): StringTask {\n const commands = [...customArgs];\n if (commands[0] !== 'ls-remote') {\n commands.unshift('ls-remote');\n }\n\n return straightThroughStringTask(commands);\n}\n\nexport function remoteTask(customArgs: string[] = []): StringTask {\n const commands = [...customArgs];\n if (commands[0] !== 'remote') {\n commands.unshift('remote');\n }\n\n return straightThroughStringTask(commands);\n}\n\nexport function removeRemoteTask(remoteName: string) {\n return straightThroughStringTask(['remote', 'remove', remoteName]);\n}\n", "import { LogOptions, LogResult } from '../../../typings';\nimport { logFormatFromCommand } from '../args/log-format';\nimport { createListLogSummaryParser } from '../parsers/parse-list-log-summary';\nimport type { StringTask } from '../types';\nimport { validateLogFormatConfig } from './diff';\nimport { parseLogOptions } from './log';\nimport type { EmptyTask } from './task';\n\nexport function stashListTask(\n opt: LogOptions = {},\n customArgs: string[]\n): EmptyTask | StringTask {\n const options = parseLogOptions(opt);\n const commands = ['stash', 'list', ...options.commands, ...customArgs];\n const parser = createListLogSummaryParser(\n options.splitter,\n options.fields,\n logFormatFromCommand(commands)\n );\n\n return (\n validateLogFormatConfig(commands) || {\n commands,\n format: 'utf-8',\n parser,\n }\n );\n}\n", "import { StringTask } from '../types';\nimport { straightThroughStringTask } from './task';\n\nexport function addSubModuleTask(repo: string, path: string): StringTask {\n return subModuleTask(['add', repo, path]);\n}\n\nexport function initSubModuleTask(customArgs: string[]): StringTask {\n return subModuleTask(['init', ...customArgs]);\n}\n\nexport function subModuleTask(customArgs: string[]): StringTask {\n const commands = [...customArgs];\n if (commands[0] !== 'submodule') {\n commands.unshift('submodule');\n }\n\n return straightThroughStringTask(commands);\n}\n\nexport function updateSubModuleTask(customArgs: string[]): StringTask {\n return subModuleTask(['update', ...customArgs]);\n}\n", "import { TagResult } from '../../../typings';\n\nexport class TagList implements TagResult {\n constructor(public readonly all: string[], public readonly latest: string | undefined) {}\n}\n\nexport const parseTagList = function (data: string, customSort = false) {\n const tags = data.split('\\n').map(trimmed).filter(Boolean);\n\n if (!customSort) {\n tags.sort(function (tagA, tagB) {\n const partsA = tagA.split('.');\n const partsB = tagB.split('.');\n\n if (partsA.length === 1 || partsB.length === 1) {\n return singleSorted(toNumber(partsA[0]), toNumber(partsB[0]));\n }\n\n for (let i = 0, l = Math.max(partsA.length, partsB.length); i < l; i++) {\n const diff = sorted(toNumber(partsA[i]), toNumber(partsB[i]));\n\n if (diff) {\n return diff;\n }\n }\n\n return 0;\n });\n }\n\n const latest = customSort ? tags[0] : [...tags].reverse().find((tag) => tag.indexOf('.') >= 0);\n\n return new TagList(tags, latest);\n};\n\nfunction singleSorted(a: number, b: number): number {\n const aIsNum = isNaN(a);\n const bIsNum = isNaN(b);\n\n if (aIsNum !== bIsNum) {\n return aIsNum ? 1 : -1;\n }\n\n return aIsNum ? sorted(a, b) : 0;\n}\n\nfunction sorted(a: number, b: number) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\n\nfunction trimmed(input: string) {\n return input.trim();\n}\n\nfunction toNumber(input: string | undefined) {\n if (typeof input === 'string') {\n return parseInt(input.replace(/^\\D+/g, ''), 10) || 0;\n }\n\n return 0;\n}\n", "import { TagResult } from '../../../typings';\nimport { parseTagList } from '../responses/TagList';\nimport { StringTask } from '../types';\n\n/**\n * Task used by `git.tags`\n */\nexport function tagListTask(customArgs: string[] = []): StringTask {\n const hasCustomSort = customArgs.some((option) => /^--sort=/.test(option));\n\n return {\n format: 'utf-8',\n commands: ['tag', '-l', ...customArgs],\n parser(text: string) {\n return parseTagList(text, hasCustomSort);\n },\n };\n}\n\n/**\n * Task used by `git.addTag`\n */\nexport function addTagTask(name: string): StringTask<{ name: string }> {\n return {\n format: 'utf-8',\n commands: ['tag', name],\n parser() {\n return { name };\n },\n };\n}\n\n/**\n * Task used by `git.addTag`\n */\nexport function addAnnotatedTagTask(\n name: string,\n tagMessage: string\n): StringTask<{ name: string }> {\n return {\n format: 'utf-8',\n commands: ['tag', '-a', '-m', tagMessage, name],\n parser() {\n return { name };\n },\n };\n}\n", "const { GitExecutor } = require('./lib/runners/git-executor');\nconst { SimpleGitApi } = require('./lib/simple-git-api');\n\nconst { Scheduler } = require('./lib/runners/scheduler');\nconst { configurationErrorTask } = require('./lib/tasks/task');\nconst {\n asArray,\n filterArray,\n filterPrimitives,\n filterString,\n filterStringOrStringArray,\n filterType,\n getTrailingOptions,\n trailingFunctionArgument,\n trailingOptionsArgument,\n} = require('./lib/utils');\nconst { applyPatchTask } = require('./lib/tasks/apply-patch');\nconst {\n branchTask,\n branchLocalTask,\n deleteBranchesTask,\n deleteBranchTask,\n} = require('./lib/tasks/branch');\nconst { checkIgnoreTask } = require('./lib/tasks/check-ignore');\nconst { checkIsRepoTask } = require('./lib/tasks/check-is-repo');\nconst { cloneTask, cloneMirrorTask } = require('./lib/tasks/clone');\nconst { cleanWithOptionsTask, isCleanOptionsArray } = require('./lib/tasks/clean');\nconst { diffSummaryTask } = require('./lib/tasks/diff');\nconst { fetchTask } = require('./lib/tasks/fetch');\nconst { moveTask } = require('./lib/tasks/move');\nconst { pullTask } = require('./lib/tasks/pull');\nconst { pushTagsTask } = require('./lib/tasks/push');\nconst {\n addRemoteTask,\n getRemotesTask,\n listRemotesTask,\n remoteTask,\n removeRemoteTask,\n} = require('./lib/tasks/remote');\nconst { getResetMode, resetTask } = require('./lib/tasks/reset');\nconst { stashListTask } = require('./lib/tasks/stash-list');\nconst {\n addSubModuleTask,\n initSubModuleTask,\n subModuleTask,\n updateSubModuleTask,\n} = require('./lib/tasks/sub-module');\nconst { addAnnotatedTagTask, addTagTask, tagListTask } = require('./lib/tasks/tag');\nconst { straightThroughBufferTask, straightThroughStringTask } = require('./lib/tasks/task');\n\nfunction Git(options, plugins) {\n this._executor = new GitExecutor(\n options.binary,\n options.baseDir,\n new Scheduler(options.maxConcurrentProcesses),\n plugins\n );\n\n this._trimmed = options.trimmed;\n}\n\n(Git.prototype = Object.create(SimpleGitApi.prototype)).constructor = Git;\n\n/**\n * Sets the path to a custom git binary, should either be `git` when there is an installation of git available on\n * the system path, or a fully qualified path to the executable.\n *\n * @param {string} command\n * @returns {Git}\n */\nGit.prototype.customBinary = function (command) {\n this._executor.binary = command;\n return this;\n};\n\n/**\n * Sets an environment variable for the spawned child process, either supply both a name and value as strings or\n * a single object to entirely replace the current environment variables.\n *\n * @param {string|Object} name\n * @param {string} [value]\n * @returns {Git}\n */\nGit.prototype.env = function (name, value) {\n if (arguments.length === 1 && typeof name === 'object') {\n this._executor.env = name;\n } else {\n (this._executor.env = this._executor.env || {})[name] = value;\n }\n\n return this;\n};\n\n/**\n * List the stash(s) of the local repo\n */\nGit.prototype.stashList = function (options) {\n return this._runTask(\n stashListTask(\n trailingOptionsArgument(arguments) || {},\n (filterArray(options) && options) || []\n ),\n trailingFunctionArgument(arguments)\n );\n};\n\nfunction createCloneTask(api, task, repoPath, localPath) {\n if (typeof repoPath !== 'string') {\n return configurationErrorTask(`git.${api}() requires a string 'repoPath'`);\n }\n\n return task(repoPath, filterType(localPath, filterString), getTrailingOptions(arguments));\n}\n\n/**\n * Clone a git repo\n */\nGit.prototype.clone = function () {\n return this._runTask(\n createCloneTask('clone', cloneTask, ...arguments),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Mirror a git repo\n */\nGit.prototype.mirror = function () {\n return this._runTask(\n createCloneTask('mirror', cloneMirrorTask, ...arguments),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Moves one or more files to a new destination.\n *\n * @see https://git-scm.com/docs/git-mv\n *\n * @param {string|string[]} from\n * @param {string} to\n */\nGit.prototype.mv = function (from, to) {\n return this._runTask(moveTask(from, to), trailingFunctionArgument(arguments));\n};\n\n/**\n * Internally uses pull and tags to get the list of tags then checks out the latest tag.\n *\n * @param {Function} [then]\n */\nGit.prototype.checkoutLatestTag = function (then) {\n var git = this;\n return this.pull(function () {\n git.tags(function (err, tags) {\n git.checkout(tags.latest, then);\n });\n });\n};\n\n/**\n * Pull the updated contents of the current repo\n */\nGit.prototype.pull = function (remote, branch, options, then) {\n return this._runTask(\n pullTask(\n filterType(remote, filterString),\n filterType(branch, filterString),\n getTrailingOptions(arguments)\n ),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Fetch the updated contents of the current repo.\n *\n * @example\n * .fetch('upstream', 'master') // fetches from master on remote named upstream\n * .fetch(function () {}) // runs fetch against default remote and branch and calls function\n *\n * @param {string} [remote]\n * @param {string} [branch]\n */\nGit.prototype.fetch = function (remote, branch) {\n return this._runTask(\n fetchTask(\n filterType(remote, filterString),\n filterType(branch, filterString),\n getTrailingOptions(arguments)\n ),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Disables/enables the use of the console for printing warnings and errors, by default messages are not shown in\n * a production environment.\n *\n * @param {boolean} silence\n * @returns {Git}\n */\nGit.prototype.silent = function (silence) {\n console.warn(\n 'simple-git deprecation notice: git.silent: logging should be configured using the `debug` library / `DEBUG` environment variable, this will be an error in version 3'\n );\n return this;\n};\n\n/**\n * List all tags. When using git 2.7.0 or above, include an options object with `\"--sort\": \"property-name\"` to\n * sort the tags by that property instead of using the default semantic versioning sort.\n *\n * Note, supplying this option when it is not supported by your Git version will cause the operation to fail.\n *\n * @param {Object} [options]\n * @param {Function} [then]\n */\nGit.prototype.tags = function (options, then) {\n return this._runTask(\n tagListTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Rebases the current working copy. Options can be supplied either as an array of string parameters\n * to be sent to the `git rebase` command, or a standard options object.\n */\nGit.prototype.rebase = function () {\n return this._runTask(\n straightThroughStringTask(['rebase', ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Reset a repo\n */\nGit.prototype.reset = function (mode) {\n return this._runTask(\n resetTask(getResetMode(mode), getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Revert one or more commits in the local working copy\n */\nGit.prototype.revert = function (commit) {\n const next = trailingFunctionArgument(arguments);\n\n if (typeof commit !== 'string') {\n return this._runTask(configurationErrorTask('Commit must be a string'), next);\n }\n\n return this._runTask(\n straightThroughStringTask(['revert', ...getTrailingOptions(arguments, 0, true), commit]),\n next\n );\n};\n\n/**\n * Add a lightweight tag to the head of the current branch\n */\nGit.prototype.addTag = function (name) {\n const task =\n typeof name === 'string'\n ? addTagTask(name)\n : configurationErrorTask('Git.addTag requires a tag name');\n\n return this._runTask(task, trailingFunctionArgument(arguments));\n};\n\n/**\n * Add an annotated tag to the head of the current branch\n */\nGit.prototype.addAnnotatedTag = function (tagName, tagMessage) {\n return this._runTask(\n addAnnotatedTagTask(tagName, tagMessage),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Delete a local branch\n */\nGit.prototype.deleteLocalBranch = function (branchName, forceDelete, then) {\n return this._runTask(\n deleteBranchTask(branchName, typeof forceDelete === 'boolean' ? forceDelete : false),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Delete one or more local branches\n */\nGit.prototype.deleteLocalBranches = function (branchNames, forceDelete, then) {\n return this._runTask(\n deleteBranchesTask(branchNames, typeof forceDelete === 'boolean' ? forceDelete : false),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * List all branches\n *\n * @param {Object | string[]} [options]\n * @param {Function} [then]\n */\nGit.prototype.branch = function (options, then) {\n return this._runTask(\n branchTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Return list of local branches\n *\n * @param {Function} [then]\n */\nGit.prototype.branchLocal = function (then) {\n return this._runTask(branchLocalTask(), trailingFunctionArgument(arguments));\n};\n\n/**\n * Executes any command against the git binary.\n */\nGit.prototype.raw = function (commands) {\n const createRestCommands = !Array.isArray(commands);\n const command = [].slice.call(createRestCommands ? arguments : commands, 0);\n\n for (let i = 0; i < command.length && createRestCommands; i++) {\n if (!filterPrimitives(command[i])) {\n command.splice(i, command.length - i);\n break;\n }\n }\n\n command.push(...getTrailingOptions(arguments, 0, true));\n\n var next = trailingFunctionArgument(arguments);\n\n if (!command.length) {\n return this._runTask(\n configurationErrorTask('Raw: must supply one or more command to execute'),\n next\n );\n }\n\n return this._runTask(straightThroughStringTask(command, this._trimmed), next);\n};\n\nGit.prototype.submoduleAdd = function (repo, path, then) {\n return this._runTask(addSubModuleTask(repo, path), trailingFunctionArgument(arguments));\n};\n\nGit.prototype.submoduleUpdate = function (args, then) {\n return this._runTask(\n updateSubModuleTask(getTrailingOptions(arguments, true)),\n trailingFunctionArgument(arguments)\n );\n};\n\nGit.prototype.submoduleInit = function (args, then) {\n return this._runTask(\n initSubModuleTask(getTrailingOptions(arguments, true)),\n trailingFunctionArgument(arguments)\n );\n};\n\nGit.prototype.subModule = function (options, then) {\n return this._runTask(\n subModuleTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n};\n\nGit.prototype.listRemote = function () {\n return this._runTask(\n listRemotesTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Adds a remote to the list of remotes.\n */\nGit.prototype.addRemote = function (remoteName, remoteRepo, then) {\n return this._runTask(\n addRemoteTask(remoteName, remoteRepo, getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Removes an entry by name from the list of remotes.\n */\nGit.prototype.removeRemote = function (remoteName, then) {\n return this._runTask(removeRemoteTask(remoteName), trailingFunctionArgument(arguments));\n};\n\n/**\n * Gets the currently available remotes, setting the optional verbose argument to true includes additional\n * detail on the remotes themselves.\n */\nGit.prototype.getRemotes = function (verbose, then) {\n return this._runTask(getRemotesTask(verbose === true), trailingFunctionArgument(arguments));\n};\n\n/**\n * Call any `git remote` function with arguments passed as an array of strings.\n *\n * @param {string[]} options\n * @param {Function} [then]\n */\nGit.prototype.remote = function (options, then) {\n return this._runTask(\n remoteTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Call any `git tag` function with arguments passed as an array of strings.\n *\n * @param {string[]} options\n * @param {Function} [then]\n */\nGit.prototype.tag = function (options, then) {\n const command = getTrailingOptions(arguments);\n\n if (command[0] !== 'tag') {\n command.unshift('tag');\n }\n\n return this._runTask(straightThroughStringTask(command), trailingFunctionArgument(arguments));\n};\n\n/**\n * Updates repository server info\n *\n * @param {Function} [then]\n */\nGit.prototype.updateServerInfo = function (then) {\n return this._runTask(\n straightThroughStringTask(['update-server-info']),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Pushes the current tag changes to a remote which can be either a URL or named remote. When not specified uses the\n * default configured remote spec.\n *\n * @param {string} [remote]\n * @param {Function} [then]\n */\nGit.prototype.pushTags = function (remote, then) {\n const task = pushTagsTask(\n { remote: filterType(remote, filterString) },\n getTrailingOptions(arguments)\n );\n\n return this._runTask(task, trailingFunctionArgument(arguments));\n};\n\n/**\n * Removes the named files from source control.\n */\nGit.prototype.rm = function (files) {\n return this._runTask(\n straightThroughStringTask(['rm', '-f', ...asArray(files)]),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Removes the named files from source control but keeps them on disk rather than deleting them entirely. To\n * completely remove the files, use `rm`.\n *\n * @param {string|string[]} files\n */\nGit.prototype.rmKeepLocal = function (files) {\n return this._runTask(\n straightThroughStringTask(['rm', '--cached', ...asArray(files)]),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Returns a list of objects in a tree based on commit hash. Passing in an object hash returns the object's content,\n * size, and type.\n *\n * Passing \"-p\" will instruct cat-file to determine the object type, and display its formatted contents.\n *\n * @param {string[]} [options]\n * @param {Function} [then]\n */\nGit.prototype.catFile = function (options, then) {\n return this._catFile('utf-8', arguments);\n};\n\nGit.prototype.binaryCatFile = function () {\n return this._catFile('buffer', arguments);\n};\n\nGit.prototype._catFile = function (format, args) {\n var handler = trailingFunctionArgument(args);\n var command = ['cat-file'];\n var options = args[0];\n\n if (typeof options === 'string') {\n return this._runTask(\n configurationErrorTask('Git.catFile: options must be supplied as an array of strings'),\n handler\n );\n }\n\n if (Array.isArray(options)) {\n command.push.apply(command, options);\n }\n\n const task =\n format === 'buffer' ? straightThroughBufferTask(command) : straightThroughStringTask(command);\n\n return this._runTask(task, handler);\n};\n\nGit.prototype.diff = function (options, then) {\n const task = filterString(options)\n ? configurationErrorTask(\n 'git.diff: supplying options as a single string is no longer supported, switch to an array of strings'\n )\n : straightThroughStringTask(['diff', ...getTrailingOptions(arguments)]);\n\n return this._runTask(task, trailingFunctionArgument(arguments));\n};\n\nGit.prototype.diffSummary = function () {\n return this._runTask(\n diffSummaryTask(getTrailingOptions(arguments, 1)),\n trailingFunctionArgument(arguments)\n );\n};\n\nGit.prototype.applyPatch = function (patches) {\n const task = !filterStringOrStringArray(patches)\n ? configurationErrorTask(\n `git.applyPatch requires one or more string patches as the first argument`\n )\n : applyPatchTask(asArray(patches), getTrailingOptions([].slice.call(arguments, 1)));\n\n return this._runTask(task, trailingFunctionArgument(arguments));\n};\n\nGit.prototype.revparse = function () {\n const commands = ['rev-parse', ...getTrailingOptions(arguments, true)];\n return this._runTask(\n straightThroughStringTask(commands, true),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n */\nGit.prototype.clean = function (mode, options, then) {\n const usingCleanOptionsArray = isCleanOptionsArray(mode);\n const cleanMode =\n (usingCleanOptionsArray && mode.join('')) || filterType(mode, filterString) || '';\n const customArgs = getTrailingOptions([].slice.call(arguments, usingCleanOptionsArray ? 1 : 0));\n\n return this._runTask(\n cleanWithOptionsTask(cleanMode, customArgs),\n trailingFunctionArgument(arguments)\n );\n};\n\nGit.prototype.exec = function (then) {\n const task = {\n commands: [],\n format: 'utf-8',\n parser() {\n if (typeof then === 'function') {\n then();\n }\n },\n };\n\n return this._runTask(task);\n};\n\n/**\n * Clears the queue of pending commands and returns the wrapper instance for chaining.\n *\n * @returns {Git}\n */\nGit.prototype.clearQueue = function () {\n // TODO:\n // this._executor.clear();\n return this;\n};\n\n/**\n * Check if a pathname or pathnames are excluded by .gitignore\n *\n * @param {string|string[]} pathnames\n * @param {Function} [then]\n */\nGit.prototype.checkIgnore = function (pathnames, then) {\n return this._runTask(\n checkIgnoreTask(asArray(filterType(pathnames, filterStringOrStringArray, []))),\n trailingFunctionArgument(arguments)\n );\n};\n\nGit.prototype.checkIsRepo = function (checkType, then) {\n return this._runTask(\n checkIsRepoTask(filterType(checkType, filterString)),\n trailingFunctionArgument(arguments)\n );\n};\n\nmodule.exports = Git;\n", "import { SimpleGitFactory } from '../../typings';\n\nimport * as api from './api';\nimport {\n abortPlugin,\n blockUnsafeOperationsPlugin,\n commandConfigPrefixingPlugin,\n completionDetectionPlugin,\n errorDetectionHandler,\n errorDetectionPlugin,\n PluginStore,\n progressMonitorPlugin,\n spawnOptionsPlugin,\n timeoutPlugin,\n} from './plugins';\nimport { suffixPathsPlugin } from './plugins/suffix-paths.plugin';\nimport { createInstanceConfig, folderExists } from './utils';\nimport { SimpleGitOptions } from './types';\n\nconst Git = require('../git');\n\n/**\n * Adds the necessary properties to the supplied object to enable it for use as\n * the default export of a module.\n *\n * Eg: `module.exports = esModuleFactory({ something () {} })`\n */\nexport function esModuleFactory(defaultExport: T) {\n return Object.defineProperties(defaultExport, {\n __esModule: { value: true },\n default: { value: defaultExport },\n }) as T & { __esModule: true; default: T };\n}\n\nexport function gitExportFactory(factory: SimpleGitFactory) {\n return Object.assign(factory.bind(null), api);\n}\n\nexport function gitInstanceFactory(\n baseDir?: string | Partial,\n options?: Partial\n) {\n const plugins = new PluginStore();\n const config = createInstanceConfig(\n (baseDir && (typeof baseDir === 'string' ? { baseDir } : baseDir)) || {},\n options\n );\n\n if (!folderExists(config.baseDir)) {\n throw new api.GitConstructError(\n config,\n `Cannot use simple-git on a directory that does not exist`\n );\n }\n\n if (Array.isArray(config.config)) {\n plugins.add(commandConfigPrefixingPlugin(config.config));\n }\n\n plugins.add(blockUnsafeOperationsPlugin(config.unsafe));\n plugins.add(suffixPathsPlugin());\n plugins.add(completionDetectionPlugin(config.completion));\n config.abort && plugins.add(abortPlugin(config.abort));\n config.progress && plugins.add(progressMonitorPlugin(config.progress));\n config.timeout && plugins.add(timeoutPlugin(config.timeout));\n config.spawnOptions && plugins.add(spawnOptionsPlugin(config.spawnOptions));\n\n plugins.add(errorDetectionPlugin(errorDetectionHandler(true)));\n config.errors && plugins.add(errorDetectionPlugin(config.errors));\n\n return new Git(config, plugins);\n}\n", "import { SimpleGit, SimpleGitOptions } from '../../../typings';\n\nimport { GitResponseError } from '../errors/git-response-error';\nimport { gitInstanceFactory } from '../git-factory';\nimport { SimpleGitTaskCallback } from '../types';\n\nconst functionNamesBuilderApi = ['customBinary', 'env', 'outputHandler', 'silent'];\n\nconst functionNamesPromiseApi = [\n 'add',\n 'addAnnotatedTag',\n 'addConfig',\n 'addRemote',\n 'addTag',\n 'applyPatch',\n 'binaryCatFile',\n 'branch',\n 'branchLocal',\n 'catFile',\n 'checkIgnore',\n 'checkIsRepo',\n 'checkout',\n 'checkoutBranch',\n 'checkoutLatestTag',\n 'checkoutLocalBranch',\n 'clean',\n 'clone',\n 'commit',\n 'cwd',\n 'deleteLocalBranch',\n 'deleteLocalBranches',\n 'diff',\n 'diffSummary',\n 'exec',\n 'fetch',\n 'getRemotes',\n 'init',\n 'listConfig',\n 'listRemote',\n 'log',\n 'merge',\n 'mergeFromTo',\n 'mirror',\n 'mv',\n 'pull',\n 'push',\n 'pushTags',\n 'raw',\n 'rebase',\n 'remote',\n 'removeRemote',\n 'reset',\n 'revert',\n 'revparse',\n 'rm',\n 'rmKeepLocal',\n 'show',\n 'stash',\n 'stashList',\n 'status',\n 'subModule',\n 'submoduleAdd',\n 'submoduleInit',\n 'submoduleUpdate',\n 'tag',\n 'tags',\n 'updateServerInfo',\n];\n\nexport function gitP(\n ...args: [] | [string] | [Partial] | [string, Partial]\n): SimpleGit {\n let git: any;\n\n let chain = Promise.resolve();\n\n try {\n git = gitInstanceFactory(...args);\n } catch (e) {\n chain = Promise.reject(e);\n }\n\n function builderReturn() {\n return promiseApi;\n }\n\n function chainReturn() {\n return chain;\n }\n\n const promiseApi = [...functionNamesBuilderApi, ...functionNamesPromiseApi].reduce(\n (api: any, name: string) => {\n const isAsync = functionNamesPromiseApi.includes(name);\n\n const valid = isAsync ? asyncWrapper(name, git) : syncWrapper(name, git, api);\n const alternative = isAsync ? chainReturn : builderReturn;\n\n Object.defineProperty(api, name, {\n enumerable: false,\n configurable: false,\n value: git ? valid : alternative,\n });\n\n return api;\n },\n {}\n );\n\n return promiseApi as SimpleGit;\n\n function asyncWrapper(fn: string, git: any): (...args: any[]) => Promise {\n return function (...args: any[]) {\n if (typeof args[args.length] === 'function') {\n throw new TypeError(\n 'Promise interface requires that handlers are not supplied inline, ' +\n 'trailing function not allowed in call to ' +\n fn\n );\n }\n\n return chain.then(function () {\n return new Promise(function (resolve, reject) {\n const callback: SimpleGitTaskCallback = (err: Error | null, result?: any) => {\n if (err) {\n return reject(toError(err));\n }\n\n resolve(result);\n };\n args.push(callback);\n\n git[fn].apply(git, args);\n });\n });\n };\n }\n\n function syncWrapper(fn: string, git: any, api: SimpleGit) {\n return (...args: any[]) => {\n git[fn](...args);\n\n return api;\n };\n }\n}\n\nfunction toError(error: Error | string | any): Error {\n if (error instanceof Error) {\n return error;\n }\n\n if (typeof error === 'string') {\n return new Error(error);\n }\n\n return new GitResponseError(error);\n}\n", "const { gitP } = require('./lib/runners/promise-wrapped');\nconst { esModuleFactory, gitInstanceFactory, gitExportFactory } = require('./lib/git-factory');\n\nconst simpleGit = esModuleFactory(gitExportFactory(gitInstanceFactory));\n\nmodule.exports = Object.assign(simpleGit, { gitP, simpleGit });\n"],
- "mappings": "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",
- "names": []
+ "sources": ["../../src/lib/errors/git-error.ts", "../../src/lib/errors/git-response-error.ts", "../../src/lib/args/pathspec.ts", "../../src/lib/errors/git-construct-error.ts", "../../src/lib/errors/git-plugin-error.ts", "../../src/lib/errors/task-configuration-error.ts", "../../src/lib/utils/util.ts", "../../src/lib/utils/argument-filters.ts", "../../src/lib/utils/exit-codes.ts", "../../src/lib/utils/git-output-streams.ts", "../../src/lib/utils/line-parser.ts", "../../src/lib/utils/simple-git-options.ts", "../../src/lib/utils/task-options.ts", "../../src/lib/utils/task-parser.ts", "../../src/lib/utils/index.ts", "../../src/lib/tasks/check-is-repo.ts", "../../src/lib/responses/CleanSummary.ts", "../../src/lib/tasks/task.ts", "../../src/lib/tasks/clean.ts", "../../src/lib/responses/ConfigList.ts", "../../src/lib/tasks/config.ts", "../../src/lib/tasks/diff-name-status.ts", "../../src/lib/tasks/grep.ts", "../../src/lib/tasks/reset.ts", "../../src/lib/api.ts", "../../src/lib/plugins/abort-plugin.ts", "../../src/lib/plugins/block-unsafe-operations-plugin.ts", "../../src/lib/plugins/command-config-prefixing-plugin.ts", "../../src/lib/plugins/completion-detection.plugin.ts", "../../src/lib/plugins/custom-binary.plugin.ts", "../../src/lib/plugins/error-detection.plugin.ts", "../../src/lib/plugins/plugin-store.ts", "../../src/lib/plugins/progress-monitor-plugin.ts", "../../src/lib/plugins/simple-git-plugin.ts", "../../src/lib/plugins/spawn-options-plugin.ts", "../../src/lib/plugins/timout-plugin.ts", "../../src/lib/plugins/index.ts", "../../src/lib/plugins/suffix-paths.plugin.ts", "../../src/lib/git-logger.ts", "../../src/lib/runners/tasks-pending-queue.ts", "../../src/lib/runners/git-executor-chain.ts", "../../src/lib/runners/git-executor.ts", "../../src/lib/task-callback.ts", "../../src/lib/tasks/change-working-directory.ts", "../../src/lib/tasks/checkout.ts", "../../src/lib/tasks/count-objects.ts", "../../src/lib/parsers/parse-commit.ts", "../../src/lib/tasks/commit.ts", "../../src/lib/tasks/first-commit.ts", "../../src/lib/tasks/hash-object.ts", "../../src/lib/responses/InitSummary.ts", "../../src/lib/tasks/init.ts", "../../src/lib/args/log-format.ts", "../../src/lib/responses/DiffSummary.ts", "../../src/lib/parsers/parse-diff-summary.ts", "../../src/lib/parsers/parse-list-log-summary.ts", "../../src/lib/tasks/diff.ts", "../../src/lib/tasks/log.ts", "../../src/lib/responses/MergeSummary.ts", "../../src/lib/responses/PullSummary.ts", "../../src/lib/parsers/parse-remote-objects.ts", "../../src/lib/parsers/parse-remote-messages.ts", "../../src/lib/parsers/parse-pull.ts", "../../src/lib/parsers/parse-merge.ts", "../../src/lib/tasks/merge.ts", "../../src/lib/parsers/parse-push.ts", "../../src/lib/tasks/push.ts", "../../src/lib/tasks/show.ts", "../../src/lib/responses/FileStatusSummary.ts", "../../src/lib/responses/StatusSummary.ts", "../../src/lib/tasks/status.ts", "../../src/lib/tasks/version.ts", "../../src/lib/simple-git-api.ts", "../../src/lib/runners/scheduler.ts", "../../src/lib/tasks/apply-patch.ts", "../../src/lib/responses/BranchDeleteSummary.ts", "../../src/lib/parsers/parse-branch-delete.ts", "../../src/lib/responses/BranchSummary.ts", "../../src/lib/parsers/parse-branch.ts", "../../src/lib/tasks/branch.ts", "../../src/lib/responses/CheckIgnore.ts", "../../src/lib/tasks/check-ignore.ts", "../../src/lib/tasks/clone.ts", "../../src/lib/parsers/parse-fetch.ts", "../../src/lib/tasks/fetch.ts", "../../src/lib/parsers/parse-move.ts", "../../src/lib/tasks/move.ts", "../../src/lib/tasks/pull.ts", "../../src/lib/responses/GetRemoteSummary.ts", "../../src/lib/tasks/remote.ts", "../../src/lib/tasks/stash-list.ts", "../../src/lib/tasks/sub-module.ts", "../../src/lib/responses/TagList.ts", "../../src/lib/tasks/tag.ts", "../../src/git.js", "../../src/lib/git-factory.ts", "../../src/lib/runners/promise-wrapped.ts", "../../src/index.js"],
+ "sourcesContent": ["import type { SimpleGitTask } from '../types';\n\n/**\n * The `GitError` is thrown when the underlying `git` process throws a\n * fatal exception (eg an `ENOENT` exception when attempting to use a\n * non-writable directory as the root for your repo), and acts as the\n * base class for more specific errors thrown by the parsing of the\n * git response or errors in the configuration of the task about to\n * be run.\n *\n * When an exception is thrown, pending tasks in the same instance will\n * not be executed. The recommended way to run a series of tasks that\n * can independently fail without needing to prevent future tasks from\n * running is to catch them individually:\n *\n * ```typescript\n import { gitP, SimpleGit, GitError, PullResult } from 'simple-git';\n\n function catchTask (e: GitError) {\n return e.\n }\n\n const git = gitP(repoWorkingDir);\n const pulled: PullResult | GitError = await git.pull().catch(catchTask);\n const pushed: string | GitError = await git.pushTags().catch(catchTask);\n ```\n */\nexport class GitError extends Error {\n constructor(\n public task?: SimpleGitTask,\n message?: string\n ) {\n super(message);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n", "import { GitError } from './git-error';\n\n/**\n * The `GitResponseError` is the wrapper for a parsed response that is treated as\n * a fatal error, for example attempting a `merge` can leave the repo in a corrupted\n * state when there are conflicts so the task will reject rather than resolve.\n *\n * For example, catching the merge conflict exception:\n *\n * ```typescript\n import { gitP, SimpleGit, GitResponseError, MergeSummary } from 'simple-git';\n\n const git = gitP(repoRoot);\n const mergeOptions: string[] = ['--no-ff', 'other-branch'];\n const mergeSummary: MergeSummary = await git.merge(mergeOptions)\n .catch((e: GitResponseError) => e.git);\n\n if (mergeSummary.failed) {\n // deal with the error\n }\n ```\n */\nexport class GitResponseError extends GitError {\n constructor(\n /**\n * `.git` access the parsed response that is treated as being an error\n */\n public readonly git: T,\n message?: string\n ) {\n super(undefined, message || String(git));\n }\n}\n", "const cache = new WeakMap();\n\nexport function pathspec(...paths: string[]) {\n const key = new String(paths);\n cache.set(key, paths);\n\n return key as string;\n}\n\nexport function isPathSpec(path: string | unknown): path is string {\n return path instanceof String && cache.has(path);\n}\n\nexport function toPaths(pathSpec: string): string[] {\n return cache.get(pathSpec) || [];\n}\n", "import { GitError } from './git-error';\nimport { SimpleGitOptions } from '../types';\n\n/**\n * The `GitConstructError` is thrown when an error occurs in the constructor\n * of the `simple-git` instance itself. Most commonly as a result of using\n * a `baseDir` option that points to a folder that either does not exist,\n * or cannot be read by the user the node script is running as.\n *\n * Check the `.message` property for more detail including the properties\n * passed to the constructor.\n */\nexport class GitConstructError extends GitError {\n constructor(\n public readonly config: SimpleGitOptions,\n message: string\n ) {\n super(undefined, message);\n }\n}\n", "import { SimpleGitOptions, SimpleGitTask } from '../types';\nimport { GitError } from './git-error';\n\nexport class GitPluginError extends GitError {\n constructor(\n public task?: SimpleGitTask,\n public readonly plugin?: keyof SimpleGitOptions,\n message?: string\n ) {\n super(task, message);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n", "import { GitError } from './git-error';\n\n/**\n * The `TaskConfigurationError` is thrown when a command was incorrectly\n * configured. An error of this kind means that no attempt was made to\n * run your command through the underlying `git` binary.\n *\n * Check the `.message` property for more detail on why your configuration\n * resulted in an error.\n */\nexport class TaskConfigurationError extends GitError {\n constructor(message?: string) {\n super(undefined, message);\n }\n}\n", "import { Buffer } from 'node:buffer';\nimport { exists, FOLDER } from '@kwsites/file-exists';\nimport type { Maybe } from '../types';\nimport { filterHasLength } from './argument-filters';\n\ntype Callable = (...args: unknown[]) => unknown;\n\nexport const NULL = '\\0';\n\nexport const NOOP: Callable = () => {};\n\n/**\n * Returns either the source argument when it is a `Function`, or the default\n * `NOOP` function constant\n */\nexport function asFunction(source: T | unknown): Callable {\n if (typeof source !== 'function') {\n return NOOP;\n }\n return source as Callable;\n}\n\n/**\n * Determines whether the supplied argument is both a function, and is not\n * the `NOOP` function.\n */\nexport function isUserFunction(source: T | unknown): source is T {\n return typeof source === 'function' && source !== NOOP;\n}\n\nexport function splitOn(input: string, char: string): [string, string] {\n const index = input.indexOf(char);\n if (index <= 0) {\n return [input, ''];\n }\n\n return [input.substr(0, index), input.substr(index + 1)];\n}\n\nexport function first(input: T, offset?: number): Maybe;\nexport function first(input: T, offset?: number): Maybe;\nexport function first(input: unknown[] | IArguments, offset = 0): Maybe {\n return isArrayLike(input) && input.length > offset ? input[offset] : undefined;\n}\n\nexport function last(input: T, offset?: number): Maybe;\nexport function last(input: T, offset?: number): Maybe;\nexport function last(input: T, offset?: number): Maybe;\nexport function last(input: unknown, offset = 0) {\n if (isArrayLike(input) && input.length > offset) {\n return input[input.length - 1 - offset];\n }\n}\n\ntype ArrayLike = T[] | IArguments | { [index: number]: T; length: number };\n\nfunction isArrayLike(input: unknown): input is ArrayLike {\n return filterHasLength(input);\n}\n\nexport function toLinesWithContent(input = '', trimmed = true, separator = '\\n'): string[] {\n return input.split(separator).reduce((output, line) => {\n const lineContent = trimmed ? line.trim() : line;\n if (lineContent) {\n output.push(lineContent);\n }\n return output;\n }, [] as string[]);\n}\n\ntype LineWithContentCallback