moahmedwafy commited on
Commit
433085e
·
1 Parent(s): 5fdf02a

feat: admin crud

Browse files
.vscode/settings.json CHANGED
@@ -1,5 +1,6 @@
1
  {
2
  "cSpell.words": [
3
- "Routable"
 
4
  ]
5
  }
 
1
  {
2
  "cSpell.words": [
3
+ "Routable",
4
+ "tlds"
5
  ]
6
  }
package-lock.json CHANGED
@@ -14,11 +14,14 @@
14
  "cors": "^2.8.5",
15
  "dotenv": "^16.3.1",
16
  "express": "^4.18.2",
 
17
  "glob": "^10.3.10",
18
  "http": "^0.0.1-security",
 
19
  "joi": "^17.11.0",
20
  "jsonwebtoken": "^9.0.2",
21
  "mongoose": "^8.0.3",
 
22
  "path": "^0.12.7"
23
  },
24
  "devDependencies": {
@@ -843,6 +846,17 @@
843
  "node": ">= 0.10.0"
844
  }
845
  },
 
 
 
 
 
 
 
 
 
 
 
846
  "node_modules/express/node_modules/body-parser": {
847
  "version": "1.20.1",
848
  "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
@@ -1129,7 +1143,6 @@
1129
  "version": "3.0.0",
1130
  "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1131
  "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
1132
- "dev": true,
1133
  "engines": {
1134
  "node": ">=4"
1135
  }
@@ -1215,6 +1228,14 @@
1215
  "node": ">= 6"
1216
  }
1217
  },
 
 
 
 
 
 
 
 
1218
  "node_modules/iconv-lite": {
1219
  "version": "0.4.24",
1220
  "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
@@ -1756,7 +1777,6 @@
1756
  "version": "1.0.10",
1757
  "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
1758
  "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
1759
- "dev": true,
1760
  "dependencies": {
1761
  "abbrev": "1"
1762
  },
@@ -1776,241 +1796,2972 @@
1776
  "node": ">=0.10.0"
1777
  }
1778
  },
1779
- "node_modules/npmlog": {
1780
- "version": "5.0.1",
1781
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
1782
- "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1783
  "dependencies": {
1784
- "are-we-there-yet": "^2.0.0",
1785
- "console-control-strings": "^1.1.0",
1786
- "gauge": "^3.0.0",
1787
- "set-blocking": "^2.0.0"
1788
- }
1789
- },
1790
- "node_modules/object-assign": {
1791
- "version": "4.1.1",
1792
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1793
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1794
  "engines": {
1795
- "node": ">=0.10.0"
1796
  }
1797
  },
1798
- "node_modules/object-inspect": {
1799
- "version": "1.13.1",
1800
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
1801
- "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
1802
- "funding": {
1803
- "url": "https://github.com/sponsors/ljharb"
 
1804
  }
1805
  },
1806
- "node_modules/on-finished": {
1807
- "version": "2.4.1",
1808
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
1809
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
1810
  "dependencies": {
1811
- "ee-first": "1.1.1"
 
 
 
 
 
1812
  },
1813
  "engines": {
1814
- "node": ">= 0.8"
1815
  }
1816
  },
1817
- "node_modules/once": {
1818
- "version": "1.4.0",
1819
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1820
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
 
 
 
 
 
1821
  "dependencies": {
1822
- "wrappy": "1"
 
 
 
 
 
 
 
 
1823
  }
1824
  },
1825
- "node_modules/parseurl": {
1826
- "version": "1.3.3",
1827
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
1828
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
 
 
 
 
 
 
 
 
 
 
 
 
1829
  "engines": {
1830
- "node": ">= 0.8"
1831
  }
1832
  },
1833
- "node_modules/path": {
1834
- "version": "0.12.7",
1835
- "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
1836
- "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==",
1837
  "dependencies": {
1838
- "process": "^0.11.1",
1839
- "util": "^0.10.3"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1840
  }
1841
  },
1842
- "node_modules/path-is-absolute": {
1843
- "version": "1.0.1",
1844
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1845
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
 
 
 
 
 
 
 
 
 
 
1846
  "engines": {
1847
- "node": ">=0.10.0"
1848
  }
1849
  },
1850
- "node_modules/path-key": {
1851
- "version": "3.1.1",
1852
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1853
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
 
 
 
1854
  "engines": {
1855
- "node": ">=8"
1856
  }
1857
  },
1858
- "node_modules/path-scurry": {
1859
- "version": "1.10.1",
1860
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
1861
- "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
1862
  "dependencies": {
1863
- "lru-cache": "^9.1.1 || ^10.0.0",
1864
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
1865
  },
1866
  "engines": {
1867
- "node": ">=16 || 14 >=14.17"
1868
  },
1869
  "funding": {
1870
- "url": "https://github.com/sponsors/isaacs"
1871
  }
1872
  },
1873
- "node_modules/path-scurry/node_modules/lru-cache": {
1874
- "version": "10.1.0",
1875
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz",
1876
- "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==",
 
 
 
1877
  "engines": {
1878
- "node": "14 || >=16.14"
1879
  }
1880
  },
1881
- "node_modules/path-to-regexp": {
1882
- "version": "0.1.7",
1883
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
1884
- "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
1885
- },
1886
- "node_modules/picomatch": {
1887
- "version": "2.3.1",
1888
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1889
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1890
- "dev": true,
1891
- "engines": {
1892
- "node": ">=8.6"
 
1893
  },
1894
- "funding": {
1895
- "url": "https://github.com/sponsors/jonschlinkert"
1896
- }
1897
- },
1898
- "node_modules/process": {
1899
- "version": "0.11.10",
1900
- "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
1901
- "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
1902
  "engines": {
1903
- "node": ">= 0.6.0"
1904
  }
1905
  },
1906
- "node_modules/proxy-addr": {
1907
- "version": "2.0.7",
1908
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
1909
- "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
1910
  "dependencies": {
1911
- "forwarded": "0.2.0",
1912
- "ipaddr.js": "1.9.1"
 
 
 
1913
  },
1914
  "engines": {
1915
- "node": ">= 0.10"
1916
  }
1917
  },
1918
- "node_modules/pstree.remy": {
1919
- "version": "1.1.8",
1920
- "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
1921
- "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==",
1922
- "dev": true
1923
- },
1924
- "node_modules/punycode": {
1925
- "version": "2.3.1",
1926
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
1927
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
1928
  "engines": {
1929
- "node": ">=6"
1930
  }
1931
  },
1932
- "node_modules/qs": {
1933
- "version": "6.11.0",
1934
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
1935
- "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
1936
  "dependencies": {
1937
- "side-channel": "^1.0.4"
 
 
 
1938
  },
1939
  "engines": {
1940
- "node": ">=0.6"
1941
- },
1942
- "funding": {
1943
- "url": "https://github.com/sponsors/ljharb"
1944
  }
1945
  },
1946
- "node_modules/range-parser": {
1947
- "version": "1.2.1",
1948
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1949
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
1950
  "engines": {
1951
- "node": ">= 0.6"
1952
  }
1953
  },
1954
- "node_modules/readable-stream": {
1955
- "version": "3.6.2",
1956
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
1957
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
 
 
 
 
 
 
 
 
1958
  "dependencies": {
1959
- "inherits": "^2.0.3",
1960
- "string_decoder": "^1.1.1",
1961
- "util-deprecate": "^1.0.1"
 
 
 
 
1962
  },
1963
  "engines": {
1964
- "node": ">= 6"
1965
  }
1966
  },
1967
- "node_modules/readdirp": {
1968
- "version": "3.6.0",
1969
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
1970
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
1971
- "dev": true,
1972
  "dependencies": {
1973
- "picomatch": "^2.2.1"
1974
  },
1975
  "engines": {
1976
- "node": ">=8.10.0"
1977
  }
1978
  },
1979
- "node_modules/rimraf": {
1980
- "version": "3.0.2",
1981
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
1982
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
1983
  "dependencies": {
1984
- "glob": "^7.1.3"
1985
- },
1986
- "bin": {
1987
- "rimraf": "bin.js"
1988
  },
1989
- "funding": {
1990
- "url": "https://github.com/sponsors/isaacs"
1991
  }
1992
  },
1993
- "node_modules/rimraf/node_modules/glob": {
1994
- "version": "7.2.3",
1995
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
1996
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
1997
  "dependencies": {
1998
- "fs.realpath": "^1.0.0",
1999
- "inflight": "^1.0.4",
2000
- "inherits": "2",
2001
- "minimatch": "^3.1.1",
2002
- "once": "^1.3.0",
2003
- "path-is-absolute": "^1.0.0"
2004
  },
2005
  "engines": {
2006
- "node": "*"
2007
- },
2008
- "funding": {
2009
- "url": "https://github.com/sponsors/isaacs"
2010
  }
2011
  },
2012
- "node_modules/safe-buffer": {
2013
- "version": "5.2.1",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2014
  "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
2015
  "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
2016
  "funding": [
@@ -2258,7 +5009,6 @@
2258
  "version": "5.5.0",
2259
  "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
2260
  "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
2261
- "dev": true,
2262
  "dependencies": {
2263
  "has-flag": "^3.0.0"
2264
  },
 
14
  "cors": "^2.8.5",
15
  "dotenv": "^16.3.1",
16
  "express": "^4.18.2",
17
+ "express-joi-validation": "^5.0.1",
18
  "glob": "^10.3.10",
19
  "http": "^0.0.1-security",
20
+ "i": "^0.3.7",
21
  "joi": "^17.11.0",
22
  "jsonwebtoken": "^9.0.2",
23
  "mongoose": "^8.0.3",
24
+ "npm": "^10.2.5",
25
  "path": "^0.12.7"
26
  },
27
  "devDependencies": {
 
846
  "node": ">= 0.10.0"
847
  }
848
  },
849
+ "node_modules/express-joi-validation": {
850
+ "version": "5.0.1",
851
+ "resolved": "https://registry.npmjs.org/express-joi-validation/-/express-joi-validation-5.0.1.tgz",
852
+ "integrity": "sha512-BztcU64addcAdxys2j42pZVSnJjEyFaLxNko7YSYDUuEBtKq2XnhzYZuy9ex9Q+Fdhef+NwLXhX1djwZmShCLg==",
853
+ "engines": {
854
+ "node": ">=10.0.0"
855
+ },
856
+ "peerDependencies": {
857
+ "joi": "17"
858
+ }
859
+ },
860
  "node_modules/express/node_modules/body-parser": {
861
  "version": "1.20.1",
862
  "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
 
1143
  "version": "3.0.0",
1144
  "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1145
  "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
 
1146
  "engines": {
1147
  "node": ">=4"
1148
  }
 
1228
  "node": ">= 6"
1229
  }
1230
  },
1231
+ "node_modules/i": {
1232
+ "version": "0.3.7",
1233
+ "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz",
1234
+ "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==",
1235
+ "engines": {
1236
+ "node": ">=0.4"
1237
+ }
1238
+ },
1239
  "node_modules/iconv-lite": {
1240
  "version": "0.4.24",
1241
  "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
 
1777
  "version": "1.0.10",
1778
  "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
1779
  "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
 
1780
  "dependencies": {
1781
  "abbrev": "1"
1782
  },
 
1796
  "node": ">=0.10.0"
1797
  }
1798
  },
1799
+ "node_modules/npm": {
1800
+ "version": "10.2.5",
1801
+ "resolved": "https://registry.npmjs.org/npm/-/npm-10.2.5.tgz",
1802
+ "integrity": "sha512-lXdZ7titEN8CH5YJk9C/aYRU9JeDxQ4d8rwIIDsvH3SMjLjHTukB2CFstMiB30zXs4vCrPN2WH6cDq1yHBeJAw==",
1803
+ "bundleDependencies": [
1804
+ "@isaacs/string-locale-compare",
1805
+ "@npmcli/arborist",
1806
+ "@npmcli/config",
1807
+ "@npmcli/fs",
1808
+ "@npmcli/map-workspaces",
1809
+ "@npmcli/package-json",
1810
+ "@npmcli/promise-spawn",
1811
+ "@npmcli/run-script",
1812
+ "@sigstore/tuf",
1813
+ "abbrev",
1814
+ "archy",
1815
+ "cacache",
1816
+ "chalk",
1817
+ "ci-info",
1818
+ "cli-columns",
1819
+ "cli-table3",
1820
+ "columnify",
1821
+ "fastest-levenshtein",
1822
+ "fs-minipass",
1823
+ "glob",
1824
+ "graceful-fs",
1825
+ "hosted-git-info",
1826
+ "ini",
1827
+ "init-package-json",
1828
+ "is-cidr",
1829
+ "json-parse-even-better-errors",
1830
+ "libnpmaccess",
1831
+ "libnpmdiff",
1832
+ "libnpmexec",
1833
+ "libnpmfund",
1834
+ "libnpmhook",
1835
+ "libnpmorg",
1836
+ "libnpmpack",
1837
+ "libnpmpublish",
1838
+ "libnpmsearch",
1839
+ "libnpmteam",
1840
+ "libnpmversion",
1841
+ "make-fetch-happen",
1842
+ "minimatch",
1843
+ "minipass",
1844
+ "minipass-pipeline",
1845
+ "ms",
1846
+ "node-gyp",
1847
+ "nopt",
1848
+ "normalize-package-data",
1849
+ "npm-audit-report",
1850
+ "npm-install-checks",
1851
+ "npm-package-arg",
1852
+ "npm-pick-manifest",
1853
+ "npm-profile",
1854
+ "npm-registry-fetch",
1855
+ "npm-user-validate",
1856
+ "npmlog",
1857
+ "p-map",
1858
+ "pacote",
1859
+ "parse-conflict-json",
1860
+ "proc-log",
1861
+ "qrcode-terminal",
1862
+ "read",
1863
+ "semver",
1864
+ "spdx-expression-parse",
1865
+ "ssri",
1866
+ "strip-ansi",
1867
+ "supports-color",
1868
+ "tar",
1869
+ "text-table",
1870
+ "tiny-relative-date",
1871
+ "treeverse",
1872
+ "validate-npm-package-name",
1873
+ "which",
1874
+ "write-file-atomic"
1875
+ ],
1876
  "dependencies": {
1877
+ "@isaacs/string-locale-compare": "^1.1.0",
1878
+ "@npmcli/arborist": "^7.2.1",
1879
+ "@npmcli/config": "^8.0.2",
1880
+ "@npmcli/fs": "^3.1.0",
1881
+ "@npmcli/map-workspaces": "^3.0.4",
1882
+ "@npmcli/package-json": "^5.0.0",
1883
+ "@npmcli/promise-spawn": "^7.0.0",
1884
+ "@npmcli/run-script": "^7.0.2",
1885
+ "@sigstore/tuf": "^2.2.0",
1886
+ "abbrev": "^2.0.0",
1887
+ "archy": "~1.0.0",
1888
+ "cacache": "^18.0.1",
1889
+ "chalk": "^5.3.0",
1890
+ "ci-info": "^4.0.0",
1891
+ "cli-columns": "^4.0.0",
1892
+ "cli-table3": "^0.6.3",
1893
+ "columnify": "^1.6.0",
1894
+ "fastest-levenshtein": "^1.0.16",
1895
+ "fs-minipass": "^3.0.3",
1896
+ "glob": "^10.3.10",
1897
+ "graceful-fs": "^4.2.11",
1898
+ "hosted-git-info": "^7.0.1",
1899
+ "ini": "^4.1.1",
1900
+ "init-package-json": "^6.0.0",
1901
+ "is-cidr": "^5.0.3",
1902
+ "json-parse-even-better-errors": "^3.0.1",
1903
+ "libnpmaccess": "^8.0.1",
1904
+ "libnpmdiff": "^6.0.3",
1905
+ "libnpmexec": "^7.0.4",
1906
+ "libnpmfund": "^5.0.1",
1907
+ "libnpmhook": "^10.0.0",
1908
+ "libnpmorg": "^6.0.1",
1909
+ "libnpmpack": "^6.0.3",
1910
+ "libnpmpublish": "^9.0.2",
1911
+ "libnpmsearch": "^7.0.0",
1912
+ "libnpmteam": "^6.0.0",
1913
+ "libnpmversion": "^5.0.1",
1914
+ "make-fetch-happen": "^13.0.0",
1915
+ "minimatch": "^9.0.3",
1916
+ "minipass": "^7.0.4",
1917
+ "minipass-pipeline": "^1.2.4",
1918
+ "ms": "^2.1.2",
1919
+ "node-gyp": "^10.0.1",
1920
+ "nopt": "^7.2.0",
1921
+ "normalize-package-data": "^6.0.0",
1922
+ "npm-audit-report": "^5.0.0",
1923
+ "npm-install-checks": "^6.3.0",
1924
+ "npm-package-arg": "^11.0.1",
1925
+ "npm-pick-manifest": "^9.0.0",
1926
+ "npm-profile": "^9.0.0",
1927
+ "npm-registry-fetch": "^16.1.0",
1928
+ "npm-user-validate": "^2.0.0",
1929
+ "npmlog": "^7.0.1",
1930
+ "p-map": "^4.0.0",
1931
+ "pacote": "^17.0.5",
1932
+ "parse-conflict-json": "^3.0.1",
1933
+ "proc-log": "^3.0.0",
1934
+ "qrcode-terminal": "^0.12.0",
1935
+ "read": "^2.1.0",
1936
+ "semver": "^7.5.4",
1937
+ "spdx-expression-parse": "^3.0.1",
1938
+ "ssri": "^10.0.5",
1939
+ "strip-ansi": "^7.1.0",
1940
+ "supports-color": "^9.4.0",
1941
+ "tar": "^6.2.0",
1942
+ "text-table": "~0.2.0",
1943
+ "tiny-relative-date": "^1.3.0",
1944
+ "treeverse": "^3.0.0",
1945
+ "validate-npm-package-name": "^5.0.0",
1946
+ "which": "^4.0.0",
1947
+ "write-file-atomic": "^5.0.1"
1948
+ },
1949
+ "bin": {
1950
+ "npm": "bin/npm-cli.js",
1951
+ "npx": "bin/npx-cli.js"
1952
+ },
1953
  "engines": {
1954
+ "node": "^18.17.0 || >=20.5.0"
1955
  }
1956
  },
1957
+ "node_modules/npm/node_modules/@colors/colors": {
1958
+ "version": "1.5.0",
1959
+ "inBundle": true,
1960
+ "license": "MIT",
1961
+ "optional": true,
1962
+ "engines": {
1963
+ "node": ">=0.1.90"
1964
  }
1965
  },
1966
+ "node_modules/npm/node_modules/@isaacs/cliui": {
1967
+ "version": "8.0.2",
1968
+ "inBundle": true,
1969
+ "license": "ISC",
1970
  "dependencies": {
1971
+ "string-width": "^5.1.2",
1972
+ "string-width-cjs": "npm:string-width@^4.2.0",
1973
+ "strip-ansi": "^7.0.1",
1974
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
1975
+ "wrap-ansi": "^8.1.0",
1976
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
1977
  },
1978
  "engines": {
1979
+ "node": ">=12"
1980
  }
1981
  },
1982
+ "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": {
1983
+ "version": "9.2.2",
1984
+ "inBundle": true,
1985
+ "license": "MIT"
1986
+ },
1987
+ "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": {
1988
+ "version": "5.1.2",
1989
+ "inBundle": true,
1990
+ "license": "MIT",
1991
  "dependencies": {
1992
+ "eastasianwidth": "^0.2.0",
1993
+ "emoji-regex": "^9.2.2",
1994
+ "strip-ansi": "^7.0.1"
1995
+ },
1996
+ "engines": {
1997
+ "node": ">=12"
1998
+ },
1999
+ "funding": {
2000
+ "url": "https://github.com/sponsors/sindresorhus"
2001
  }
2002
  },
2003
+ "node_modules/npm/node_modules/@isaacs/string-locale-compare": {
2004
+ "version": "1.1.0",
2005
+ "inBundle": true,
2006
+ "license": "ISC"
2007
+ },
2008
+ "node_modules/npm/node_modules/@npmcli/agent": {
2009
+ "version": "2.2.0",
2010
+ "inBundle": true,
2011
+ "license": "ISC",
2012
+ "dependencies": {
2013
+ "agent-base": "^7.1.0",
2014
+ "http-proxy-agent": "^7.0.0",
2015
+ "https-proxy-agent": "^7.0.1",
2016
+ "lru-cache": "^10.0.1",
2017
+ "socks-proxy-agent": "^8.0.1"
2018
+ },
2019
  "engines": {
2020
+ "node": "^16.14.0 || >=18.0.0"
2021
  }
2022
  },
2023
+ "node_modules/npm/node_modules/@npmcli/arborist": {
2024
+ "version": "7.2.2",
2025
+ "inBundle": true,
2026
+ "license": "ISC",
2027
  "dependencies": {
2028
+ "@isaacs/string-locale-compare": "^1.1.0",
2029
+ "@npmcli/fs": "^3.1.0",
2030
+ "@npmcli/installed-package-contents": "^2.0.2",
2031
+ "@npmcli/map-workspaces": "^3.0.2",
2032
+ "@npmcli/metavuln-calculator": "^7.0.0",
2033
+ "@npmcli/name-from-folder": "^2.0.0",
2034
+ "@npmcli/node-gyp": "^3.0.0",
2035
+ "@npmcli/package-json": "^5.0.0",
2036
+ "@npmcli/query": "^3.0.1",
2037
+ "@npmcli/run-script": "^7.0.2",
2038
+ "bin-links": "^4.0.1",
2039
+ "cacache": "^18.0.0",
2040
+ "common-ancestor-path": "^1.0.1",
2041
+ "hosted-git-info": "^7.0.1",
2042
+ "json-parse-even-better-errors": "^3.0.0",
2043
+ "json-stringify-nice": "^1.1.4",
2044
+ "minimatch": "^9.0.0",
2045
+ "nopt": "^7.0.0",
2046
+ "npm-install-checks": "^6.2.0",
2047
+ "npm-package-arg": "^11.0.1",
2048
+ "npm-pick-manifest": "^9.0.0",
2049
+ "npm-registry-fetch": "^16.0.0",
2050
+ "npmlog": "^7.0.1",
2051
+ "pacote": "^17.0.4",
2052
+ "parse-conflict-json": "^3.0.0",
2053
+ "proc-log": "^3.0.0",
2054
+ "promise-all-reject-late": "^1.0.0",
2055
+ "promise-call-limit": "^1.0.2",
2056
+ "read-package-json-fast": "^3.0.2",
2057
+ "semver": "^7.3.7",
2058
+ "ssri": "^10.0.5",
2059
+ "treeverse": "^3.0.0",
2060
+ "walk-up-path": "^3.0.1"
2061
+ },
2062
+ "bin": {
2063
+ "arborist": "bin/index.js"
2064
+ },
2065
+ "engines": {
2066
+ "node": "^16.14.0 || >=18.0.0"
2067
  }
2068
  },
2069
+ "node_modules/npm/node_modules/@npmcli/config": {
2070
+ "version": "8.0.3",
2071
+ "inBundle": true,
2072
+ "license": "ISC",
2073
+ "dependencies": {
2074
+ "@npmcli/map-workspaces": "^3.0.2",
2075
+ "ci-info": "^4.0.0",
2076
+ "ini": "^4.1.0",
2077
+ "nopt": "^7.0.0",
2078
+ "proc-log": "^3.0.0",
2079
+ "read-package-json-fast": "^3.0.2",
2080
+ "semver": "^7.3.5",
2081
+ "walk-up-path": "^3.0.1"
2082
+ },
2083
  "engines": {
2084
+ "node": "^16.14.0 || >=18.0.0"
2085
  }
2086
  },
2087
+ "node_modules/npm/node_modules/@npmcli/disparity-colors": {
2088
+ "version": "3.0.0",
2089
+ "inBundle": true,
2090
+ "license": "ISC",
2091
+ "dependencies": {
2092
+ "ansi-styles": "^4.3.0"
2093
+ },
2094
  "engines": {
2095
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
2096
  }
2097
  },
2098
+ "node_modules/npm/node_modules/@npmcli/disparity-colors/node_modules/ansi-styles": {
2099
+ "version": "4.3.0",
2100
+ "inBundle": true,
2101
+ "license": "MIT",
2102
  "dependencies": {
2103
+ "color-convert": "^2.0.1"
 
2104
  },
2105
  "engines": {
2106
+ "node": ">=8"
2107
  },
2108
  "funding": {
2109
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
2110
  }
2111
  },
2112
+ "node_modules/npm/node_modules/@npmcli/fs": {
2113
+ "version": "3.1.0",
2114
+ "inBundle": true,
2115
+ "license": "ISC",
2116
+ "dependencies": {
2117
+ "semver": "^7.3.5"
2118
+ },
2119
  "engines": {
2120
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
2121
  }
2122
  },
2123
+ "node_modules/npm/node_modules/@npmcli/git": {
2124
+ "version": "5.0.3",
2125
+ "inBundle": true,
2126
+ "license": "ISC",
2127
+ "dependencies": {
2128
+ "@npmcli/promise-spawn": "^7.0.0",
2129
+ "lru-cache": "^10.0.1",
2130
+ "npm-pick-manifest": "^9.0.0",
2131
+ "proc-log": "^3.0.0",
2132
+ "promise-inflight": "^1.0.1",
2133
+ "promise-retry": "^2.0.1",
2134
+ "semver": "^7.3.5",
2135
+ "which": "^4.0.0"
2136
  },
 
 
 
 
 
 
 
 
2137
  "engines": {
2138
+ "node": "^16.14.0 || >=18.0.0"
2139
  }
2140
  },
2141
+ "node_modules/npm/node_modules/@npmcli/installed-package-contents": {
2142
+ "version": "2.0.2",
2143
+ "inBundle": true,
2144
+ "license": "ISC",
2145
  "dependencies": {
2146
+ "npm-bundled": "^3.0.0",
2147
+ "npm-normalize-package-bin": "^3.0.0"
2148
+ },
2149
+ "bin": {
2150
+ "installed-package-contents": "lib/index.js"
2151
  },
2152
  "engines": {
2153
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
2154
  }
2155
  },
2156
+ "node_modules/npm/node_modules/@npmcli/map-workspaces": {
2157
+ "version": "3.0.4",
2158
+ "inBundle": true,
2159
+ "license": "ISC",
2160
+ "dependencies": {
2161
+ "@npmcli/name-from-folder": "^2.0.0",
2162
+ "glob": "^10.2.2",
2163
+ "minimatch": "^9.0.0",
2164
+ "read-package-json-fast": "^3.0.0"
2165
+ },
2166
  "engines": {
2167
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
2168
  }
2169
  },
2170
+ "node_modules/npm/node_modules/@npmcli/metavuln-calculator": {
2171
+ "version": "7.0.0",
2172
+ "inBundle": true,
2173
+ "license": "ISC",
2174
  "dependencies": {
2175
+ "cacache": "^18.0.0",
2176
+ "json-parse-even-better-errors": "^3.0.0",
2177
+ "pacote": "^17.0.0",
2178
+ "semver": "^7.3.5"
2179
  },
2180
  "engines": {
2181
+ "node": "^16.14.0 || >=18.0.0"
 
 
 
2182
  }
2183
  },
2184
+ "node_modules/npm/node_modules/@npmcli/name-from-folder": {
2185
+ "version": "2.0.0",
2186
+ "inBundle": true,
2187
+ "license": "ISC",
2188
  "engines": {
2189
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
2190
  }
2191
  },
2192
+ "node_modules/npm/node_modules/@npmcli/node-gyp": {
2193
+ "version": "3.0.0",
2194
+ "inBundle": true,
2195
+ "license": "ISC",
2196
+ "engines": {
2197
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
2198
+ }
2199
+ },
2200
+ "node_modules/npm/node_modules/@npmcli/package-json": {
2201
+ "version": "5.0.0",
2202
+ "inBundle": true,
2203
+ "license": "ISC",
2204
  "dependencies": {
2205
+ "@npmcli/git": "^5.0.0",
2206
+ "glob": "^10.2.2",
2207
+ "hosted-git-info": "^7.0.0",
2208
+ "json-parse-even-better-errors": "^3.0.0",
2209
+ "normalize-package-data": "^6.0.0",
2210
+ "proc-log": "^3.0.0",
2211
+ "semver": "^7.5.3"
2212
  },
2213
  "engines": {
2214
+ "node": "^16.14.0 || >=18.0.0"
2215
  }
2216
  },
2217
+ "node_modules/npm/node_modules/@npmcli/promise-spawn": {
2218
+ "version": "7.0.0",
2219
+ "inBundle": true,
2220
+ "license": "ISC",
 
2221
  "dependencies": {
2222
+ "which": "^4.0.0"
2223
  },
2224
  "engines": {
2225
+ "node": "^16.14.0 || >=18.0.0"
2226
  }
2227
  },
2228
+ "node_modules/npm/node_modules/@npmcli/query": {
2229
+ "version": "3.0.1",
2230
+ "inBundle": true,
2231
+ "license": "ISC",
2232
  "dependencies": {
2233
+ "postcss-selector-parser": "^6.0.10"
 
 
 
2234
  },
2235
+ "engines": {
2236
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
2237
  }
2238
  },
2239
+ "node_modules/npm/node_modules/@npmcli/run-script": {
2240
+ "version": "7.0.2",
2241
+ "inBundle": true,
2242
+ "license": "ISC",
2243
  "dependencies": {
2244
+ "@npmcli/node-gyp": "^3.0.0",
2245
+ "@npmcli/promise-spawn": "^7.0.0",
2246
+ "node-gyp": "^10.0.0",
2247
+ "read-package-json-fast": "^3.0.0",
2248
+ "which": "^4.0.0"
 
2249
  },
2250
  "engines": {
2251
+ "node": "^16.14.0 || >=18.0.0"
 
 
 
2252
  }
2253
  },
2254
+ "node_modules/npm/node_modules/@pkgjs/parseargs": {
2255
+ "version": "0.11.0",
2256
+ "inBundle": true,
2257
+ "license": "MIT",
2258
+ "optional": true,
2259
+ "engines": {
2260
+ "node": ">=14"
2261
+ }
2262
+ },
2263
+ "node_modules/npm/node_modules/@sigstore/bundle": {
2264
+ "version": "2.1.0",
2265
+ "inBundle": true,
2266
+ "license": "Apache-2.0",
2267
+ "dependencies": {
2268
+ "@sigstore/protobuf-specs": "^0.2.1"
2269
+ },
2270
+ "engines": {
2271
+ "node": "^16.14.0 || >=18.0.0"
2272
+ }
2273
+ },
2274
+ "node_modules/npm/node_modules/@sigstore/protobuf-specs": {
2275
+ "version": "0.2.1",
2276
+ "inBundle": true,
2277
+ "license": "Apache-2.0",
2278
+ "engines": {
2279
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
2280
+ }
2281
+ },
2282
+ "node_modules/npm/node_modules/@sigstore/sign": {
2283
+ "version": "2.2.0",
2284
+ "inBundle": true,
2285
+ "license": "Apache-2.0",
2286
+ "dependencies": {
2287
+ "@sigstore/bundle": "^2.1.0",
2288
+ "@sigstore/protobuf-specs": "^0.2.1",
2289
+ "make-fetch-happen": "^13.0.0"
2290
+ },
2291
+ "engines": {
2292
+ "node": "^16.14.0 || >=18.0.0"
2293
+ }
2294
+ },
2295
+ "node_modules/npm/node_modules/@sigstore/tuf": {
2296
+ "version": "2.2.0",
2297
+ "inBundle": true,
2298
+ "license": "Apache-2.0",
2299
+ "dependencies": {
2300
+ "@sigstore/protobuf-specs": "^0.2.1",
2301
+ "tuf-js": "^2.1.0"
2302
+ },
2303
+ "engines": {
2304
+ "node": "^16.14.0 || >=18.0.0"
2305
+ }
2306
+ },
2307
+ "node_modules/npm/node_modules/@tufjs/canonical-json": {
2308
+ "version": "2.0.0",
2309
+ "inBundle": true,
2310
+ "license": "MIT",
2311
+ "engines": {
2312
+ "node": "^16.14.0 || >=18.0.0"
2313
+ }
2314
+ },
2315
+ "node_modules/npm/node_modules/@tufjs/models": {
2316
+ "version": "2.0.0",
2317
+ "inBundle": true,
2318
+ "license": "MIT",
2319
+ "dependencies": {
2320
+ "@tufjs/canonical-json": "2.0.0",
2321
+ "minimatch": "^9.0.3"
2322
+ },
2323
+ "engines": {
2324
+ "node": "^16.14.0 || >=18.0.0"
2325
+ }
2326
+ },
2327
+ "node_modules/npm/node_modules/abbrev": {
2328
+ "version": "2.0.0",
2329
+ "inBundle": true,
2330
+ "license": "ISC",
2331
+ "engines": {
2332
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
2333
+ }
2334
+ },
2335
+ "node_modules/npm/node_modules/abort-controller": {
2336
+ "version": "3.0.0",
2337
+ "inBundle": true,
2338
+ "license": "MIT",
2339
+ "dependencies": {
2340
+ "event-target-shim": "^5.0.0"
2341
+ },
2342
+ "engines": {
2343
+ "node": ">=6.5"
2344
+ }
2345
+ },
2346
+ "node_modules/npm/node_modules/agent-base": {
2347
+ "version": "7.1.0",
2348
+ "inBundle": true,
2349
+ "license": "MIT",
2350
+ "dependencies": {
2351
+ "debug": "^4.3.4"
2352
+ },
2353
+ "engines": {
2354
+ "node": ">= 14"
2355
+ }
2356
+ },
2357
+ "node_modules/npm/node_modules/aggregate-error": {
2358
+ "version": "3.1.0",
2359
+ "inBundle": true,
2360
+ "license": "MIT",
2361
+ "dependencies": {
2362
+ "clean-stack": "^2.0.0",
2363
+ "indent-string": "^4.0.0"
2364
+ },
2365
+ "engines": {
2366
+ "node": ">=8"
2367
+ }
2368
+ },
2369
+ "node_modules/npm/node_modules/ansi-regex": {
2370
+ "version": "6.0.1",
2371
+ "inBundle": true,
2372
+ "license": "MIT",
2373
+ "engines": {
2374
+ "node": ">=12"
2375
+ },
2376
+ "funding": {
2377
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
2378
+ }
2379
+ },
2380
+ "node_modules/npm/node_modules/ansi-styles": {
2381
+ "version": "6.2.1",
2382
+ "inBundle": true,
2383
+ "license": "MIT",
2384
+ "engines": {
2385
+ "node": ">=12"
2386
+ },
2387
+ "funding": {
2388
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
2389
+ }
2390
+ },
2391
+ "node_modules/npm/node_modules/aproba": {
2392
+ "version": "2.0.0",
2393
+ "inBundle": true,
2394
+ "license": "ISC"
2395
+ },
2396
+ "node_modules/npm/node_modules/archy": {
2397
+ "version": "1.0.0",
2398
+ "inBundle": true,
2399
+ "license": "MIT"
2400
+ },
2401
+ "node_modules/npm/node_modules/are-we-there-yet": {
2402
+ "version": "4.0.1",
2403
+ "inBundle": true,
2404
+ "license": "ISC",
2405
+ "dependencies": {
2406
+ "delegates": "^1.0.0",
2407
+ "readable-stream": "^4.1.0"
2408
+ },
2409
+ "engines": {
2410
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
2411
+ }
2412
+ },
2413
+ "node_modules/npm/node_modules/balanced-match": {
2414
+ "version": "1.0.2",
2415
+ "inBundle": true,
2416
+ "license": "MIT"
2417
+ },
2418
+ "node_modules/npm/node_modules/base64-js": {
2419
+ "version": "1.5.1",
2420
+ "funding": [
2421
+ {
2422
+ "type": "github",
2423
+ "url": "https://github.com/sponsors/feross"
2424
+ },
2425
+ {
2426
+ "type": "patreon",
2427
+ "url": "https://www.patreon.com/feross"
2428
+ },
2429
+ {
2430
+ "type": "consulting",
2431
+ "url": "https://feross.org/support"
2432
+ }
2433
+ ],
2434
+ "inBundle": true,
2435
+ "license": "MIT"
2436
+ },
2437
+ "node_modules/npm/node_modules/bin-links": {
2438
+ "version": "4.0.3",
2439
+ "inBundle": true,
2440
+ "license": "ISC",
2441
+ "dependencies": {
2442
+ "cmd-shim": "^6.0.0",
2443
+ "npm-normalize-package-bin": "^3.0.0",
2444
+ "read-cmd-shim": "^4.0.0",
2445
+ "write-file-atomic": "^5.0.0"
2446
+ },
2447
+ "engines": {
2448
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
2449
+ }
2450
+ },
2451
+ "node_modules/npm/node_modules/binary-extensions": {
2452
+ "version": "2.2.0",
2453
+ "inBundle": true,
2454
+ "license": "MIT",
2455
+ "engines": {
2456
+ "node": ">=8"
2457
+ }
2458
+ },
2459
+ "node_modules/npm/node_modules/brace-expansion": {
2460
+ "version": "2.0.1",
2461
+ "inBundle": true,
2462
+ "license": "MIT",
2463
+ "dependencies": {
2464
+ "balanced-match": "^1.0.0"
2465
+ }
2466
+ },
2467
+ "node_modules/npm/node_modules/buffer": {
2468
+ "version": "6.0.3",
2469
+ "funding": [
2470
+ {
2471
+ "type": "github",
2472
+ "url": "https://github.com/sponsors/feross"
2473
+ },
2474
+ {
2475
+ "type": "patreon",
2476
+ "url": "https://www.patreon.com/feross"
2477
+ },
2478
+ {
2479
+ "type": "consulting",
2480
+ "url": "https://feross.org/support"
2481
+ }
2482
+ ],
2483
+ "inBundle": true,
2484
+ "license": "MIT",
2485
+ "dependencies": {
2486
+ "base64-js": "^1.3.1",
2487
+ "ieee754": "^1.2.1"
2488
+ }
2489
+ },
2490
+ "node_modules/npm/node_modules/builtins": {
2491
+ "version": "5.0.1",
2492
+ "inBundle": true,
2493
+ "license": "MIT",
2494
+ "dependencies": {
2495
+ "semver": "^7.0.0"
2496
+ }
2497
+ },
2498
+ "node_modules/npm/node_modules/cacache": {
2499
+ "version": "18.0.1",
2500
+ "inBundle": true,
2501
+ "license": "ISC",
2502
+ "dependencies": {
2503
+ "@npmcli/fs": "^3.1.0",
2504
+ "fs-minipass": "^3.0.0",
2505
+ "glob": "^10.2.2",
2506
+ "lru-cache": "^10.0.1",
2507
+ "minipass": "^7.0.3",
2508
+ "minipass-collect": "^2.0.1",
2509
+ "minipass-flush": "^1.0.5",
2510
+ "minipass-pipeline": "^1.2.4",
2511
+ "p-map": "^4.0.0",
2512
+ "ssri": "^10.0.0",
2513
+ "tar": "^6.1.11",
2514
+ "unique-filename": "^3.0.0"
2515
+ },
2516
+ "engines": {
2517
+ "node": "^16.14.0 || >=18.0.0"
2518
+ }
2519
+ },
2520
+ "node_modules/npm/node_modules/chalk": {
2521
+ "version": "5.3.0",
2522
+ "inBundle": true,
2523
+ "license": "MIT",
2524
+ "engines": {
2525
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
2526
+ },
2527
+ "funding": {
2528
+ "url": "https://github.com/chalk/chalk?sponsor=1"
2529
+ }
2530
+ },
2531
+ "node_modules/npm/node_modules/chownr": {
2532
+ "version": "2.0.0",
2533
+ "inBundle": true,
2534
+ "license": "ISC",
2535
+ "engines": {
2536
+ "node": ">=10"
2537
+ }
2538
+ },
2539
+ "node_modules/npm/node_modules/ci-info": {
2540
+ "version": "4.0.0",
2541
+ "funding": [
2542
+ {
2543
+ "type": "github",
2544
+ "url": "https://github.com/sponsors/sibiraj-s"
2545
+ }
2546
+ ],
2547
+ "inBundle": true,
2548
+ "license": "MIT",
2549
+ "engines": {
2550
+ "node": ">=8"
2551
+ }
2552
+ },
2553
+ "node_modules/npm/node_modules/cidr-regex": {
2554
+ "version": "4.0.3",
2555
+ "inBundle": true,
2556
+ "license": "BSD-2-Clause",
2557
+ "dependencies": {
2558
+ "ip-regex": "^5.0.0"
2559
+ },
2560
+ "engines": {
2561
+ "node": ">=14"
2562
+ }
2563
+ },
2564
+ "node_modules/npm/node_modules/clean-stack": {
2565
+ "version": "2.2.0",
2566
+ "inBundle": true,
2567
+ "license": "MIT",
2568
+ "engines": {
2569
+ "node": ">=6"
2570
+ }
2571
+ },
2572
+ "node_modules/npm/node_modules/cli-columns": {
2573
+ "version": "4.0.0",
2574
+ "inBundle": true,
2575
+ "license": "MIT",
2576
+ "dependencies": {
2577
+ "string-width": "^4.2.3",
2578
+ "strip-ansi": "^6.0.1"
2579
+ },
2580
+ "engines": {
2581
+ "node": ">= 10"
2582
+ }
2583
+ },
2584
+ "node_modules/npm/node_modules/cli-columns/node_modules/ansi-regex": {
2585
+ "version": "5.0.1",
2586
+ "inBundle": true,
2587
+ "license": "MIT",
2588
+ "engines": {
2589
+ "node": ">=8"
2590
+ }
2591
+ },
2592
+ "node_modules/npm/node_modules/cli-columns/node_modules/strip-ansi": {
2593
+ "version": "6.0.1",
2594
+ "inBundle": true,
2595
+ "license": "MIT",
2596
+ "dependencies": {
2597
+ "ansi-regex": "^5.0.1"
2598
+ },
2599
+ "engines": {
2600
+ "node": ">=8"
2601
+ }
2602
+ },
2603
+ "node_modules/npm/node_modules/cli-table3": {
2604
+ "version": "0.6.3",
2605
+ "inBundle": true,
2606
+ "license": "MIT",
2607
+ "dependencies": {
2608
+ "string-width": "^4.2.0"
2609
+ },
2610
+ "engines": {
2611
+ "node": "10.* || >= 12.*"
2612
+ },
2613
+ "optionalDependencies": {
2614
+ "@colors/colors": "1.5.0"
2615
+ }
2616
+ },
2617
+ "node_modules/npm/node_modules/clone": {
2618
+ "version": "1.0.4",
2619
+ "inBundle": true,
2620
+ "license": "MIT",
2621
+ "engines": {
2622
+ "node": ">=0.8"
2623
+ }
2624
+ },
2625
+ "node_modules/npm/node_modules/cmd-shim": {
2626
+ "version": "6.0.2",
2627
+ "inBundle": true,
2628
+ "license": "ISC",
2629
+ "engines": {
2630
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
2631
+ }
2632
+ },
2633
+ "node_modules/npm/node_modules/color-convert": {
2634
+ "version": "2.0.1",
2635
+ "inBundle": true,
2636
+ "license": "MIT",
2637
+ "dependencies": {
2638
+ "color-name": "~1.1.4"
2639
+ },
2640
+ "engines": {
2641
+ "node": ">=7.0.0"
2642
+ }
2643
+ },
2644
+ "node_modules/npm/node_modules/color-name": {
2645
+ "version": "1.1.4",
2646
+ "inBundle": true,
2647
+ "license": "MIT"
2648
+ },
2649
+ "node_modules/npm/node_modules/color-support": {
2650
+ "version": "1.1.3",
2651
+ "inBundle": true,
2652
+ "license": "ISC",
2653
+ "bin": {
2654
+ "color-support": "bin.js"
2655
+ }
2656
+ },
2657
+ "node_modules/npm/node_modules/columnify": {
2658
+ "version": "1.6.0",
2659
+ "inBundle": true,
2660
+ "license": "MIT",
2661
+ "dependencies": {
2662
+ "strip-ansi": "^6.0.1",
2663
+ "wcwidth": "^1.0.0"
2664
+ },
2665
+ "engines": {
2666
+ "node": ">=8.0.0"
2667
+ }
2668
+ },
2669
+ "node_modules/npm/node_modules/columnify/node_modules/ansi-regex": {
2670
+ "version": "5.0.1",
2671
+ "inBundle": true,
2672
+ "license": "MIT",
2673
+ "engines": {
2674
+ "node": ">=8"
2675
+ }
2676
+ },
2677
+ "node_modules/npm/node_modules/columnify/node_modules/strip-ansi": {
2678
+ "version": "6.0.1",
2679
+ "inBundle": true,
2680
+ "license": "MIT",
2681
+ "dependencies": {
2682
+ "ansi-regex": "^5.0.1"
2683
+ },
2684
+ "engines": {
2685
+ "node": ">=8"
2686
+ }
2687
+ },
2688
+ "node_modules/npm/node_modules/common-ancestor-path": {
2689
+ "version": "1.0.1",
2690
+ "inBundle": true,
2691
+ "license": "ISC"
2692
+ },
2693
+ "node_modules/npm/node_modules/console-control-strings": {
2694
+ "version": "1.1.0",
2695
+ "inBundle": true,
2696
+ "license": "ISC"
2697
+ },
2698
+ "node_modules/npm/node_modules/cross-spawn": {
2699
+ "version": "7.0.3",
2700
+ "inBundle": true,
2701
+ "license": "MIT",
2702
+ "dependencies": {
2703
+ "path-key": "^3.1.0",
2704
+ "shebang-command": "^2.0.0",
2705
+ "which": "^2.0.1"
2706
+ },
2707
+ "engines": {
2708
+ "node": ">= 8"
2709
+ }
2710
+ },
2711
+ "node_modules/npm/node_modules/cross-spawn/node_modules/which": {
2712
+ "version": "2.0.2",
2713
+ "inBundle": true,
2714
+ "license": "ISC",
2715
+ "dependencies": {
2716
+ "isexe": "^2.0.0"
2717
+ },
2718
+ "bin": {
2719
+ "node-which": "bin/node-which"
2720
+ },
2721
+ "engines": {
2722
+ "node": ">= 8"
2723
+ }
2724
+ },
2725
+ "node_modules/npm/node_modules/cssesc": {
2726
+ "version": "3.0.0",
2727
+ "inBundle": true,
2728
+ "license": "MIT",
2729
+ "bin": {
2730
+ "cssesc": "bin/cssesc"
2731
+ },
2732
+ "engines": {
2733
+ "node": ">=4"
2734
+ }
2735
+ },
2736
+ "node_modules/npm/node_modules/debug": {
2737
+ "version": "4.3.4",
2738
+ "inBundle": true,
2739
+ "license": "MIT",
2740
+ "dependencies": {
2741
+ "ms": "2.1.2"
2742
+ },
2743
+ "engines": {
2744
+ "node": ">=6.0"
2745
+ },
2746
+ "peerDependenciesMeta": {
2747
+ "supports-color": {
2748
+ "optional": true
2749
+ }
2750
+ }
2751
+ },
2752
+ "node_modules/npm/node_modules/debug/node_modules/ms": {
2753
+ "version": "2.1.2",
2754
+ "inBundle": true,
2755
+ "license": "MIT"
2756
+ },
2757
+ "node_modules/npm/node_modules/defaults": {
2758
+ "version": "1.0.4",
2759
+ "inBundle": true,
2760
+ "license": "MIT",
2761
+ "dependencies": {
2762
+ "clone": "^1.0.2"
2763
+ },
2764
+ "funding": {
2765
+ "url": "https://github.com/sponsors/sindresorhus"
2766
+ }
2767
+ },
2768
+ "node_modules/npm/node_modules/delegates": {
2769
+ "version": "1.0.0",
2770
+ "inBundle": true,
2771
+ "license": "MIT"
2772
+ },
2773
+ "node_modules/npm/node_modules/diff": {
2774
+ "version": "5.1.0",
2775
+ "inBundle": true,
2776
+ "license": "BSD-3-Clause",
2777
+ "engines": {
2778
+ "node": ">=0.3.1"
2779
+ }
2780
+ },
2781
+ "node_modules/npm/node_modules/eastasianwidth": {
2782
+ "version": "0.2.0",
2783
+ "inBundle": true,
2784
+ "license": "MIT"
2785
+ },
2786
+ "node_modules/npm/node_modules/emoji-regex": {
2787
+ "version": "8.0.0",
2788
+ "inBundle": true,
2789
+ "license": "MIT"
2790
+ },
2791
+ "node_modules/npm/node_modules/encoding": {
2792
+ "version": "0.1.13",
2793
+ "inBundle": true,
2794
+ "license": "MIT",
2795
+ "optional": true,
2796
+ "dependencies": {
2797
+ "iconv-lite": "^0.6.2"
2798
+ }
2799
+ },
2800
+ "node_modules/npm/node_modules/env-paths": {
2801
+ "version": "2.2.1",
2802
+ "inBundle": true,
2803
+ "license": "MIT",
2804
+ "engines": {
2805
+ "node": ">=6"
2806
+ }
2807
+ },
2808
+ "node_modules/npm/node_modules/err-code": {
2809
+ "version": "2.0.3",
2810
+ "inBundle": true,
2811
+ "license": "MIT"
2812
+ },
2813
+ "node_modules/npm/node_modules/event-target-shim": {
2814
+ "version": "5.0.1",
2815
+ "inBundle": true,
2816
+ "license": "MIT",
2817
+ "engines": {
2818
+ "node": ">=6"
2819
+ }
2820
+ },
2821
+ "node_modules/npm/node_modules/events": {
2822
+ "version": "3.3.0",
2823
+ "inBundle": true,
2824
+ "license": "MIT",
2825
+ "engines": {
2826
+ "node": ">=0.8.x"
2827
+ }
2828
+ },
2829
+ "node_modules/npm/node_modules/exponential-backoff": {
2830
+ "version": "3.1.1",
2831
+ "inBundle": true,
2832
+ "license": "Apache-2.0"
2833
+ },
2834
+ "node_modules/npm/node_modules/fastest-levenshtein": {
2835
+ "version": "1.0.16",
2836
+ "inBundle": true,
2837
+ "license": "MIT",
2838
+ "engines": {
2839
+ "node": ">= 4.9.1"
2840
+ }
2841
+ },
2842
+ "node_modules/npm/node_modules/foreground-child": {
2843
+ "version": "3.1.1",
2844
+ "inBundle": true,
2845
+ "license": "ISC",
2846
+ "dependencies": {
2847
+ "cross-spawn": "^7.0.0",
2848
+ "signal-exit": "^4.0.1"
2849
+ },
2850
+ "engines": {
2851
+ "node": ">=14"
2852
+ },
2853
+ "funding": {
2854
+ "url": "https://github.com/sponsors/isaacs"
2855
+ }
2856
+ },
2857
+ "node_modules/npm/node_modules/fs-minipass": {
2858
+ "version": "3.0.3",
2859
+ "inBundle": true,
2860
+ "license": "ISC",
2861
+ "dependencies": {
2862
+ "minipass": "^7.0.3"
2863
+ },
2864
+ "engines": {
2865
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
2866
+ }
2867
+ },
2868
+ "node_modules/npm/node_modules/function-bind": {
2869
+ "version": "1.1.2",
2870
+ "inBundle": true,
2871
+ "license": "MIT",
2872
+ "funding": {
2873
+ "url": "https://github.com/sponsors/ljharb"
2874
+ }
2875
+ },
2876
+ "node_modules/npm/node_modules/gauge": {
2877
+ "version": "5.0.1",
2878
+ "inBundle": true,
2879
+ "license": "ISC",
2880
+ "dependencies": {
2881
+ "aproba": "^1.0.3 || ^2.0.0",
2882
+ "color-support": "^1.1.3",
2883
+ "console-control-strings": "^1.1.0",
2884
+ "has-unicode": "^2.0.1",
2885
+ "signal-exit": "^4.0.1",
2886
+ "string-width": "^4.2.3",
2887
+ "strip-ansi": "^6.0.1",
2888
+ "wide-align": "^1.1.5"
2889
+ },
2890
+ "engines": {
2891
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
2892
+ }
2893
+ },
2894
+ "node_modules/npm/node_modules/gauge/node_modules/ansi-regex": {
2895
+ "version": "5.0.1",
2896
+ "inBundle": true,
2897
+ "license": "MIT",
2898
+ "engines": {
2899
+ "node": ">=8"
2900
+ }
2901
+ },
2902
+ "node_modules/npm/node_modules/gauge/node_modules/strip-ansi": {
2903
+ "version": "6.0.1",
2904
+ "inBundle": true,
2905
+ "license": "MIT",
2906
+ "dependencies": {
2907
+ "ansi-regex": "^5.0.1"
2908
+ },
2909
+ "engines": {
2910
+ "node": ">=8"
2911
+ }
2912
+ },
2913
+ "node_modules/npm/node_modules/glob": {
2914
+ "version": "10.3.10",
2915
+ "inBundle": true,
2916
+ "license": "ISC",
2917
+ "dependencies": {
2918
+ "foreground-child": "^3.1.0",
2919
+ "jackspeak": "^2.3.5",
2920
+ "minimatch": "^9.0.1",
2921
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
2922
+ "path-scurry": "^1.10.1"
2923
+ },
2924
+ "bin": {
2925
+ "glob": "dist/esm/bin.mjs"
2926
+ },
2927
+ "engines": {
2928
+ "node": ">=16 || 14 >=14.17"
2929
+ },
2930
+ "funding": {
2931
+ "url": "https://github.com/sponsors/isaacs"
2932
+ }
2933
+ },
2934
+ "node_modules/npm/node_modules/graceful-fs": {
2935
+ "version": "4.2.11",
2936
+ "inBundle": true,
2937
+ "license": "ISC"
2938
+ },
2939
+ "node_modules/npm/node_modules/has-unicode": {
2940
+ "version": "2.0.1",
2941
+ "inBundle": true,
2942
+ "license": "ISC"
2943
+ },
2944
+ "node_modules/npm/node_modules/hasown": {
2945
+ "version": "2.0.0",
2946
+ "inBundle": true,
2947
+ "license": "MIT",
2948
+ "dependencies": {
2949
+ "function-bind": "^1.1.2"
2950
+ },
2951
+ "engines": {
2952
+ "node": ">= 0.4"
2953
+ }
2954
+ },
2955
+ "node_modules/npm/node_modules/hosted-git-info": {
2956
+ "version": "7.0.1",
2957
+ "inBundle": true,
2958
+ "license": "ISC",
2959
+ "dependencies": {
2960
+ "lru-cache": "^10.0.1"
2961
+ },
2962
+ "engines": {
2963
+ "node": "^16.14.0 || >=18.0.0"
2964
+ }
2965
+ },
2966
+ "node_modules/npm/node_modules/http-cache-semantics": {
2967
+ "version": "4.1.1",
2968
+ "inBundle": true,
2969
+ "license": "BSD-2-Clause"
2970
+ },
2971
+ "node_modules/npm/node_modules/http-proxy-agent": {
2972
+ "version": "7.0.0",
2973
+ "inBundle": true,
2974
+ "license": "MIT",
2975
+ "dependencies": {
2976
+ "agent-base": "^7.1.0",
2977
+ "debug": "^4.3.4"
2978
+ },
2979
+ "engines": {
2980
+ "node": ">= 14"
2981
+ }
2982
+ },
2983
+ "node_modules/npm/node_modules/https-proxy-agent": {
2984
+ "version": "7.0.2",
2985
+ "inBundle": true,
2986
+ "license": "MIT",
2987
+ "dependencies": {
2988
+ "agent-base": "^7.0.2",
2989
+ "debug": "4"
2990
+ },
2991
+ "engines": {
2992
+ "node": ">= 14"
2993
+ }
2994
+ },
2995
+ "node_modules/npm/node_modules/iconv-lite": {
2996
+ "version": "0.6.3",
2997
+ "inBundle": true,
2998
+ "license": "MIT",
2999
+ "optional": true,
3000
+ "dependencies": {
3001
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
3002
+ },
3003
+ "engines": {
3004
+ "node": ">=0.10.0"
3005
+ }
3006
+ },
3007
+ "node_modules/npm/node_modules/ieee754": {
3008
+ "version": "1.2.1",
3009
+ "funding": [
3010
+ {
3011
+ "type": "github",
3012
+ "url": "https://github.com/sponsors/feross"
3013
+ },
3014
+ {
3015
+ "type": "patreon",
3016
+ "url": "https://www.patreon.com/feross"
3017
+ },
3018
+ {
3019
+ "type": "consulting",
3020
+ "url": "https://feross.org/support"
3021
+ }
3022
+ ],
3023
+ "inBundle": true,
3024
+ "license": "BSD-3-Clause"
3025
+ },
3026
+ "node_modules/npm/node_modules/ignore-walk": {
3027
+ "version": "6.0.4",
3028
+ "inBundle": true,
3029
+ "license": "ISC",
3030
+ "dependencies": {
3031
+ "minimatch": "^9.0.0"
3032
+ },
3033
+ "engines": {
3034
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
3035
+ }
3036
+ },
3037
+ "node_modules/npm/node_modules/imurmurhash": {
3038
+ "version": "0.1.4",
3039
+ "inBundle": true,
3040
+ "license": "MIT",
3041
+ "engines": {
3042
+ "node": ">=0.8.19"
3043
+ }
3044
+ },
3045
+ "node_modules/npm/node_modules/indent-string": {
3046
+ "version": "4.0.0",
3047
+ "inBundle": true,
3048
+ "license": "MIT",
3049
+ "engines": {
3050
+ "node": ">=8"
3051
+ }
3052
+ },
3053
+ "node_modules/npm/node_modules/ini": {
3054
+ "version": "4.1.1",
3055
+ "inBundle": true,
3056
+ "license": "ISC",
3057
+ "engines": {
3058
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
3059
+ }
3060
+ },
3061
+ "node_modules/npm/node_modules/init-package-json": {
3062
+ "version": "6.0.0",
3063
+ "inBundle": true,
3064
+ "license": "ISC",
3065
+ "dependencies": {
3066
+ "npm-package-arg": "^11.0.0",
3067
+ "promzard": "^1.0.0",
3068
+ "read": "^2.0.0",
3069
+ "read-package-json": "^7.0.0",
3070
+ "semver": "^7.3.5",
3071
+ "validate-npm-package-license": "^3.0.4",
3072
+ "validate-npm-package-name": "^5.0.0"
3073
+ },
3074
+ "engines": {
3075
+ "node": "^16.14.0 || >=18.0.0"
3076
+ }
3077
+ },
3078
+ "node_modules/npm/node_modules/ip": {
3079
+ "version": "2.0.0",
3080
+ "inBundle": true,
3081
+ "license": "MIT"
3082
+ },
3083
+ "node_modules/npm/node_modules/ip-regex": {
3084
+ "version": "5.0.0",
3085
+ "inBundle": true,
3086
+ "license": "MIT",
3087
+ "engines": {
3088
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
3089
+ },
3090
+ "funding": {
3091
+ "url": "https://github.com/sponsors/sindresorhus"
3092
+ }
3093
+ },
3094
+ "node_modules/npm/node_modules/is-cidr": {
3095
+ "version": "5.0.3",
3096
+ "inBundle": true,
3097
+ "license": "BSD-2-Clause",
3098
+ "dependencies": {
3099
+ "cidr-regex": "4.0.3"
3100
+ },
3101
+ "engines": {
3102
+ "node": ">=14"
3103
+ }
3104
+ },
3105
+ "node_modules/npm/node_modules/is-core-module": {
3106
+ "version": "2.13.1",
3107
+ "inBundle": true,
3108
+ "license": "MIT",
3109
+ "dependencies": {
3110
+ "hasown": "^2.0.0"
3111
+ },
3112
+ "funding": {
3113
+ "url": "https://github.com/sponsors/ljharb"
3114
+ }
3115
+ },
3116
+ "node_modules/npm/node_modules/is-fullwidth-code-point": {
3117
+ "version": "3.0.0",
3118
+ "inBundle": true,
3119
+ "license": "MIT",
3120
+ "engines": {
3121
+ "node": ">=8"
3122
+ }
3123
+ },
3124
+ "node_modules/npm/node_modules/is-lambda": {
3125
+ "version": "1.0.1",
3126
+ "inBundle": true,
3127
+ "license": "MIT"
3128
+ },
3129
+ "node_modules/npm/node_modules/isexe": {
3130
+ "version": "2.0.0",
3131
+ "inBundle": true,
3132
+ "license": "ISC"
3133
+ },
3134
+ "node_modules/npm/node_modules/jackspeak": {
3135
+ "version": "2.3.6",
3136
+ "inBundle": true,
3137
+ "license": "BlueOak-1.0.0",
3138
+ "dependencies": {
3139
+ "@isaacs/cliui": "^8.0.2"
3140
+ },
3141
+ "engines": {
3142
+ "node": ">=14"
3143
+ },
3144
+ "funding": {
3145
+ "url": "https://github.com/sponsors/isaacs"
3146
+ },
3147
+ "optionalDependencies": {
3148
+ "@pkgjs/parseargs": "^0.11.0"
3149
+ }
3150
+ },
3151
+ "node_modules/npm/node_modules/json-parse-even-better-errors": {
3152
+ "version": "3.0.1",
3153
+ "inBundle": true,
3154
+ "license": "MIT",
3155
+ "engines": {
3156
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
3157
+ }
3158
+ },
3159
+ "node_modules/npm/node_modules/json-stringify-nice": {
3160
+ "version": "1.1.4",
3161
+ "inBundle": true,
3162
+ "license": "ISC",
3163
+ "funding": {
3164
+ "url": "https://github.com/sponsors/isaacs"
3165
+ }
3166
+ },
3167
+ "node_modules/npm/node_modules/jsonparse": {
3168
+ "version": "1.3.1",
3169
+ "engines": [
3170
+ "node >= 0.2.0"
3171
+ ],
3172
+ "inBundle": true,
3173
+ "license": "MIT"
3174
+ },
3175
+ "node_modules/npm/node_modules/just-diff": {
3176
+ "version": "6.0.2",
3177
+ "inBundle": true,
3178
+ "license": "MIT"
3179
+ },
3180
+ "node_modules/npm/node_modules/just-diff-apply": {
3181
+ "version": "5.5.0",
3182
+ "inBundle": true,
3183
+ "license": "MIT"
3184
+ },
3185
+ "node_modules/npm/node_modules/libnpmaccess": {
3186
+ "version": "8.0.2",
3187
+ "inBundle": true,
3188
+ "license": "ISC",
3189
+ "dependencies": {
3190
+ "npm-package-arg": "^11.0.1",
3191
+ "npm-registry-fetch": "^16.0.0"
3192
+ },
3193
+ "engines": {
3194
+ "node": "^16.14.0 || >=18.0.0"
3195
+ }
3196
+ },
3197
+ "node_modules/npm/node_modules/libnpmdiff": {
3198
+ "version": "6.0.4",
3199
+ "inBundle": true,
3200
+ "license": "ISC",
3201
+ "dependencies": {
3202
+ "@npmcli/arborist": "^7.2.1",
3203
+ "@npmcli/disparity-colors": "^3.0.0",
3204
+ "@npmcli/installed-package-contents": "^2.0.2",
3205
+ "binary-extensions": "^2.2.0",
3206
+ "diff": "^5.1.0",
3207
+ "minimatch": "^9.0.0",
3208
+ "npm-package-arg": "^11.0.1",
3209
+ "pacote": "^17.0.4",
3210
+ "tar": "^6.2.0"
3211
+ },
3212
+ "engines": {
3213
+ "node": "^16.14.0 || >=18.0.0"
3214
+ }
3215
+ },
3216
+ "node_modules/npm/node_modules/libnpmexec": {
3217
+ "version": "7.0.5",
3218
+ "inBundle": true,
3219
+ "license": "ISC",
3220
+ "dependencies": {
3221
+ "@npmcli/arborist": "^7.2.1",
3222
+ "@npmcli/run-script": "^7.0.2",
3223
+ "ci-info": "^4.0.0",
3224
+ "npm-package-arg": "^11.0.1",
3225
+ "npmlog": "^7.0.1",
3226
+ "pacote": "^17.0.4",
3227
+ "proc-log": "^3.0.0",
3228
+ "read": "^2.0.0",
3229
+ "read-package-json-fast": "^3.0.2",
3230
+ "semver": "^7.3.7",
3231
+ "walk-up-path": "^3.0.1"
3232
+ },
3233
+ "engines": {
3234
+ "node": "^16.14.0 || >=18.0.0"
3235
+ }
3236
+ },
3237
+ "node_modules/npm/node_modules/libnpmfund": {
3238
+ "version": "5.0.2",
3239
+ "inBundle": true,
3240
+ "license": "ISC",
3241
+ "dependencies": {
3242
+ "@npmcli/arborist": "^7.2.1"
3243
+ },
3244
+ "engines": {
3245
+ "node": "^16.14.0 || >=18.0.0"
3246
+ }
3247
+ },
3248
+ "node_modules/npm/node_modules/libnpmhook": {
3249
+ "version": "10.0.1",
3250
+ "inBundle": true,
3251
+ "license": "ISC",
3252
+ "dependencies": {
3253
+ "aproba": "^2.0.0",
3254
+ "npm-registry-fetch": "^16.0.0"
3255
+ },
3256
+ "engines": {
3257
+ "node": "^16.14.0 || >=18.0.0"
3258
+ }
3259
+ },
3260
+ "node_modules/npm/node_modules/libnpmorg": {
3261
+ "version": "6.0.2",
3262
+ "inBundle": true,
3263
+ "license": "ISC",
3264
+ "dependencies": {
3265
+ "aproba": "^2.0.0",
3266
+ "npm-registry-fetch": "^16.0.0"
3267
+ },
3268
+ "engines": {
3269
+ "node": "^16.14.0 || >=18.0.0"
3270
+ }
3271
+ },
3272
+ "node_modules/npm/node_modules/libnpmpack": {
3273
+ "version": "6.0.4",
3274
+ "inBundle": true,
3275
+ "license": "ISC",
3276
+ "dependencies": {
3277
+ "@npmcli/arborist": "^7.2.1",
3278
+ "@npmcli/run-script": "^7.0.2",
3279
+ "npm-package-arg": "^11.0.1",
3280
+ "pacote": "^17.0.4"
3281
+ },
3282
+ "engines": {
3283
+ "node": "^16.14.0 || >=18.0.0"
3284
+ }
3285
+ },
3286
+ "node_modules/npm/node_modules/libnpmpublish": {
3287
+ "version": "9.0.3",
3288
+ "inBundle": true,
3289
+ "license": "ISC",
3290
+ "dependencies": {
3291
+ "ci-info": "^4.0.0",
3292
+ "normalize-package-data": "^6.0.0",
3293
+ "npm-package-arg": "^11.0.1",
3294
+ "npm-registry-fetch": "^16.0.0",
3295
+ "proc-log": "^3.0.0",
3296
+ "semver": "^7.3.7",
3297
+ "sigstore": "^2.1.0",
3298
+ "ssri": "^10.0.5"
3299
+ },
3300
+ "engines": {
3301
+ "node": "^16.14.0 || >=18.0.0"
3302
+ }
3303
+ },
3304
+ "node_modules/npm/node_modules/libnpmsearch": {
3305
+ "version": "7.0.1",
3306
+ "inBundle": true,
3307
+ "license": "ISC",
3308
+ "dependencies": {
3309
+ "npm-registry-fetch": "^16.0.0"
3310
+ },
3311
+ "engines": {
3312
+ "node": "^16.14.0 || >=18.0.0"
3313
+ }
3314
+ },
3315
+ "node_modules/npm/node_modules/libnpmteam": {
3316
+ "version": "6.0.1",
3317
+ "inBundle": true,
3318
+ "license": "ISC",
3319
+ "dependencies": {
3320
+ "aproba": "^2.0.0",
3321
+ "npm-registry-fetch": "^16.0.0"
3322
+ },
3323
+ "engines": {
3324
+ "node": "^16.14.0 || >=18.0.0"
3325
+ }
3326
+ },
3327
+ "node_modules/npm/node_modules/libnpmversion": {
3328
+ "version": "5.0.2",
3329
+ "inBundle": true,
3330
+ "license": "ISC",
3331
+ "dependencies": {
3332
+ "@npmcli/git": "^5.0.3",
3333
+ "@npmcli/run-script": "^7.0.2",
3334
+ "json-parse-even-better-errors": "^3.0.0",
3335
+ "proc-log": "^3.0.0",
3336
+ "semver": "^7.3.7"
3337
+ },
3338
+ "engines": {
3339
+ "node": "^16.14.0 || >=18.0.0"
3340
+ }
3341
+ },
3342
+ "node_modules/npm/node_modules/lru-cache": {
3343
+ "version": "10.1.0",
3344
+ "inBundle": true,
3345
+ "license": "ISC",
3346
+ "engines": {
3347
+ "node": "14 || >=16.14"
3348
+ }
3349
+ },
3350
+ "node_modules/npm/node_modules/make-fetch-happen": {
3351
+ "version": "13.0.0",
3352
+ "inBundle": true,
3353
+ "license": "ISC",
3354
+ "dependencies": {
3355
+ "@npmcli/agent": "^2.0.0",
3356
+ "cacache": "^18.0.0",
3357
+ "http-cache-semantics": "^4.1.1",
3358
+ "is-lambda": "^1.0.1",
3359
+ "minipass": "^7.0.2",
3360
+ "minipass-fetch": "^3.0.0",
3361
+ "minipass-flush": "^1.0.5",
3362
+ "minipass-pipeline": "^1.2.4",
3363
+ "negotiator": "^0.6.3",
3364
+ "promise-retry": "^2.0.1",
3365
+ "ssri": "^10.0.0"
3366
+ },
3367
+ "engines": {
3368
+ "node": "^16.14.0 || >=18.0.0"
3369
+ }
3370
+ },
3371
+ "node_modules/npm/node_modules/minimatch": {
3372
+ "version": "9.0.3",
3373
+ "inBundle": true,
3374
+ "license": "ISC",
3375
+ "dependencies": {
3376
+ "brace-expansion": "^2.0.1"
3377
+ },
3378
+ "engines": {
3379
+ "node": ">=16 || 14 >=14.17"
3380
+ },
3381
+ "funding": {
3382
+ "url": "https://github.com/sponsors/isaacs"
3383
+ }
3384
+ },
3385
+ "node_modules/npm/node_modules/minipass": {
3386
+ "version": "7.0.4",
3387
+ "inBundle": true,
3388
+ "license": "ISC",
3389
+ "engines": {
3390
+ "node": ">=16 || 14 >=14.17"
3391
+ }
3392
+ },
3393
+ "node_modules/npm/node_modules/minipass-collect": {
3394
+ "version": "2.0.1",
3395
+ "inBundle": true,
3396
+ "license": "ISC",
3397
+ "dependencies": {
3398
+ "minipass": "^7.0.3"
3399
+ },
3400
+ "engines": {
3401
+ "node": ">=16 || 14 >=14.17"
3402
+ }
3403
+ },
3404
+ "node_modules/npm/node_modules/minipass-fetch": {
3405
+ "version": "3.0.4",
3406
+ "inBundle": true,
3407
+ "license": "MIT",
3408
+ "dependencies": {
3409
+ "minipass": "^7.0.3",
3410
+ "minipass-sized": "^1.0.3",
3411
+ "minizlib": "^2.1.2"
3412
+ },
3413
+ "engines": {
3414
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
3415
+ },
3416
+ "optionalDependencies": {
3417
+ "encoding": "^0.1.13"
3418
+ }
3419
+ },
3420
+ "node_modules/npm/node_modules/minipass-flush": {
3421
+ "version": "1.0.5",
3422
+ "inBundle": true,
3423
+ "license": "ISC",
3424
+ "dependencies": {
3425
+ "minipass": "^3.0.0"
3426
+ },
3427
+ "engines": {
3428
+ "node": ">= 8"
3429
+ }
3430
+ },
3431
+ "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": {
3432
+ "version": "3.3.6",
3433
+ "inBundle": true,
3434
+ "license": "ISC",
3435
+ "dependencies": {
3436
+ "yallist": "^4.0.0"
3437
+ },
3438
+ "engines": {
3439
+ "node": ">=8"
3440
+ }
3441
+ },
3442
+ "node_modules/npm/node_modules/minipass-json-stream": {
3443
+ "version": "1.0.1",
3444
+ "inBundle": true,
3445
+ "license": "MIT",
3446
+ "dependencies": {
3447
+ "jsonparse": "^1.3.1",
3448
+ "minipass": "^3.0.0"
3449
+ }
3450
+ },
3451
+ "node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": {
3452
+ "version": "3.3.6",
3453
+ "inBundle": true,
3454
+ "license": "ISC",
3455
+ "dependencies": {
3456
+ "yallist": "^4.0.0"
3457
+ },
3458
+ "engines": {
3459
+ "node": ">=8"
3460
+ }
3461
+ },
3462
+ "node_modules/npm/node_modules/minipass-pipeline": {
3463
+ "version": "1.2.4",
3464
+ "inBundle": true,
3465
+ "license": "ISC",
3466
+ "dependencies": {
3467
+ "minipass": "^3.0.0"
3468
+ },
3469
+ "engines": {
3470
+ "node": ">=8"
3471
+ }
3472
+ },
3473
+ "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": {
3474
+ "version": "3.3.6",
3475
+ "inBundle": true,
3476
+ "license": "ISC",
3477
+ "dependencies": {
3478
+ "yallist": "^4.0.0"
3479
+ },
3480
+ "engines": {
3481
+ "node": ">=8"
3482
+ }
3483
+ },
3484
+ "node_modules/npm/node_modules/minipass-sized": {
3485
+ "version": "1.0.3",
3486
+ "inBundle": true,
3487
+ "license": "ISC",
3488
+ "dependencies": {
3489
+ "minipass": "^3.0.0"
3490
+ },
3491
+ "engines": {
3492
+ "node": ">=8"
3493
+ }
3494
+ },
3495
+ "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": {
3496
+ "version": "3.3.6",
3497
+ "inBundle": true,
3498
+ "license": "ISC",
3499
+ "dependencies": {
3500
+ "yallist": "^4.0.0"
3501
+ },
3502
+ "engines": {
3503
+ "node": ">=8"
3504
+ }
3505
+ },
3506
+ "node_modules/npm/node_modules/minizlib": {
3507
+ "version": "2.1.2",
3508
+ "inBundle": true,
3509
+ "license": "MIT",
3510
+ "dependencies": {
3511
+ "minipass": "^3.0.0",
3512
+ "yallist": "^4.0.0"
3513
+ },
3514
+ "engines": {
3515
+ "node": ">= 8"
3516
+ }
3517
+ },
3518
+ "node_modules/npm/node_modules/minizlib/node_modules/minipass": {
3519
+ "version": "3.3.6",
3520
+ "inBundle": true,
3521
+ "license": "ISC",
3522
+ "dependencies": {
3523
+ "yallist": "^4.0.0"
3524
+ },
3525
+ "engines": {
3526
+ "node": ">=8"
3527
+ }
3528
+ },
3529
+ "node_modules/npm/node_modules/mkdirp": {
3530
+ "version": "1.0.4",
3531
+ "inBundle": true,
3532
+ "license": "MIT",
3533
+ "bin": {
3534
+ "mkdirp": "bin/cmd.js"
3535
+ },
3536
+ "engines": {
3537
+ "node": ">=10"
3538
+ }
3539
+ },
3540
+ "node_modules/npm/node_modules/ms": {
3541
+ "version": "2.1.3",
3542
+ "inBundle": true,
3543
+ "license": "MIT"
3544
+ },
3545
+ "node_modules/npm/node_modules/mute-stream": {
3546
+ "version": "1.0.0",
3547
+ "inBundle": true,
3548
+ "license": "ISC",
3549
+ "engines": {
3550
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
3551
+ }
3552
+ },
3553
+ "node_modules/npm/node_modules/negotiator": {
3554
+ "version": "0.6.3",
3555
+ "inBundle": true,
3556
+ "license": "MIT",
3557
+ "engines": {
3558
+ "node": ">= 0.6"
3559
+ }
3560
+ },
3561
+ "node_modules/npm/node_modules/node-gyp": {
3562
+ "version": "10.0.1",
3563
+ "inBundle": true,
3564
+ "license": "MIT",
3565
+ "dependencies": {
3566
+ "env-paths": "^2.2.0",
3567
+ "exponential-backoff": "^3.1.1",
3568
+ "glob": "^10.3.10",
3569
+ "graceful-fs": "^4.2.6",
3570
+ "make-fetch-happen": "^13.0.0",
3571
+ "nopt": "^7.0.0",
3572
+ "proc-log": "^3.0.0",
3573
+ "semver": "^7.3.5",
3574
+ "tar": "^6.1.2",
3575
+ "which": "^4.0.0"
3576
+ },
3577
+ "bin": {
3578
+ "node-gyp": "bin/node-gyp.js"
3579
+ },
3580
+ "engines": {
3581
+ "node": "^16.14.0 || >=18.0.0"
3582
+ }
3583
+ },
3584
+ "node_modules/npm/node_modules/nopt": {
3585
+ "version": "7.2.0",
3586
+ "inBundle": true,
3587
+ "license": "ISC",
3588
+ "dependencies": {
3589
+ "abbrev": "^2.0.0"
3590
+ },
3591
+ "bin": {
3592
+ "nopt": "bin/nopt.js"
3593
+ },
3594
+ "engines": {
3595
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
3596
+ }
3597
+ },
3598
+ "node_modules/npm/node_modules/normalize-package-data": {
3599
+ "version": "6.0.0",
3600
+ "inBundle": true,
3601
+ "license": "BSD-2-Clause",
3602
+ "dependencies": {
3603
+ "hosted-git-info": "^7.0.0",
3604
+ "is-core-module": "^2.8.1",
3605
+ "semver": "^7.3.5",
3606
+ "validate-npm-package-license": "^3.0.4"
3607
+ },
3608
+ "engines": {
3609
+ "node": "^16.14.0 || >=18.0.0"
3610
+ }
3611
+ },
3612
+ "node_modules/npm/node_modules/npm-audit-report": {
3613
+ "version": "5.0.0",
3614
+ "inBundle": true,
3615
+ "license": "ISC",
3616
+ "engines": {
3617
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
3618
+ }
3619
+ },
3620
+ "node_modules/npm/node_modules/npm-bundled": {
3621
+ "version": "3.0.0",
3622
+ "inBundle": true,
3623
+ "license": "ISC",
3624
+ "dependencies": {
3625
+ "npm-normalize-package-bin": "^3.0.0"
3626
+ },
3627
+ "engines": {
3628
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
3629
+ }
3630
+ },
3631
+ "node_modules/npm/node_modules/npm-install-checks": {
3632
+ "version": "6.3.0",
3633
+ "inBundle": true,
3634
+ "license": "BSD-2-Clause",
3635
+ "dependencies": {
3636
+ "semver": "^7.1.1"
3637
+ },
3638
+ "engines": {
3639
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
3640
+ }
3641
+ },
3642
+ "node_modules/npm/node_modules/npm-normalize-package-bin": {
3643
+ "version": "3.0.1",
3644
+ "inBundle": true,
3645
+ "license": "ISC",
3646
+ "engines": {
3647
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
3648
+ }
3649
+ },
3650
+ "node_modules/npm/node_modules/npm-package-arg": {
3651
+ "version": "11.0.1",
3652
+ "inBundle": true,
3653
+ "license": "ISC",
3654
+ "dependencies": {
3655
+ "hosted-git-info": "^7.0.0",
3656
+ "proc-log": "^3.0.0",
3657
+ "semver": "^7.3.5",
3658
+ "validate-npm-package-name": "^5.0.0"
3659
+ },
3660
+ "engines": {
3661
+ "node": "^16.14.0 || >=18.0.0"
3662
+ }
3663
+ },
3664
+ "node_modules/npm/node_modules/npm-packlist": {
3665
+ "version": "8.0.1",
3666
+ "inBundle": true,
3667
+ "license": "ISC",
3668
+ "dependencies": {
3669
+ "ignore-walk": "^6.0.4"
3670
+ },
3671
+ "engines": {
3672
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
3673
+ }
3674
+ },
3675
+ "node_modules/npm/node_modules/npm-pick-manifest": {
3676
+ "version": "9.0.0",
3677
+ "inBundle": true,
3678
+ "license": "ISC",
3679
+ "dependencies": {
3680
+ "npm-install-checks": "^6.0.0",
3681
+ "npm-normalize-package-bin": "^3.0.0",
3682
+ "npm-package-arg": "^11.0.0",
3683
+ "semver": "^7.3.5"
3684
+ },
3685
+ "engines": {
3686
+ "node": "^16.14.0 || >=18.0.0"
3687
+ }
3688
+ },
3689
+ "node_modules/npm/node_modules/npm-profile": {
3690
+ "version": "9.0.0",
3691
+ "inBundle": true,
3692
+ "license": "ISC",
3693
+ "dependencies": {
3694
+ "npm-registry-fetch": "^16.0.0",
3695
+ "proc-log": "^3.0.0"
3696
+ },
3697
+ "engines": {
3698
+ "node": "^16.14.0 || >=18.0.0"
3699
+ }
3700
+ },
3701
+ "node_modules/npm/node_modules/npm-registry-fetch": {
3702
+ "version": "16.1.0",
3703
+ "inBundle": true,
3704
+ "license": "ISC",
3705
+ "dependencies": {
3706
+ "make-fetch-happen": "^13.0.0",
3707
+ "minipass": "^7.0.2",
3708
+ "minipass-fetch": "^3.0.0",
3709
+ "minipass-json-stream": "^1.0.1",
3710
+ "minizlib": "^2.1.2",
3711
+ "npm-package-arg": "^11.0.0",
3712
+ "proc-log": "^3.0.0"
3713
+ },
3714
+ "engines": {
3715
+ "node": "^16.14.0 || >=18.0.0"
3716
+ }
3717
+ },
3718
+ "node_modules/npm/node_modules/npm-user-validate": {
3719
+ "version": "2.0.0",
3720
+ "inBundle": true,
3721
+ "license": "BSD-2-Clause",
3722
+ "engines": {
3723
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
3724
+ }
3725
+ },
3726
+ "node_modules/npm/node_modules/npmlog": {
3727
+ "version": "7.0.1",
3728
+ "inBundle": true,
3729
+ "license": "ISC",
3730
+ "dependencies": {
3731
+ "are-we-there-yet": "^4.0.0",
3732
+ "console-control-strings": "^1.1.0",
3733
+ "gauge": "^5.0.0",
3734
+ "set-blocking": "^2.0.0"
3735
+ },
3736
+ "engines": {
3737
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
3738
+ }
3739
+ },
3740
+ "node_modules/npm/node_modules/p-map": {
3741
+ "version": "4.0.0",
3742
+ "inBundle": true,
3743
+ "license": "MIT",
3744
+ "dependencies": {
3745
+ "aggregate-error": "^3.0.0"
3746
+ },
3747
+ "engines": {
3748
+ "node": ">=10"
3749
+ },
3750
+ "funding": {
3751
+ "url": "https://github.com/sponsors/sindresorhus"
3752
+ }
3753
+ },
3754
+ "node_modules/npm/node_modules/pacote": {
3755
+ "version": "17.0.5",
3756
+ "inBundle": true,
3757
+ "license": "ISC",
3758
+ "dependencies": {
3759
+ "@npmcli/git": "^5.0.0",
3760
+ "@npmcli/installed-package-contents": "^2.0.1",
3761
+ "@npmcli/promise-spawn": "^7.0.0",
3762
+ "@npmcli/run-script": "^7.0.0",
3763
+ "cacache": "^18.0.0",
3764
+ "fs-minipass": "^3.0.0",
3765
+ "minipass": "^7.0.2",
3766
+ "npm-package-arg": "^11.0.0",
3767
+ "npm-packlist": "^8.0.0",
3768
+ "npm-pick-manifest": "^9.0.0",
3769
+ "npm-registry-fetch": "^16.0.0",
3770
+ "proc-log": "^3.0.0",
3771
+ "promise-retry": "^2.0.1",
3772
+ "read-package-json": "^7.0.0",
3773
+ "read-package-json-fast": "^3.0.0",
3774
+ "sigstore": "^2.0.0",
3775
+ "ssri": "^10.0.0",
3776
+ "tar": "^6.1.11"
3777
+ },
3778
+ "bin": {
3779
+ "pacote": "lib/bin.js"
3780
+ },
3781
+ "engines": {
3782
+ "node": "^16.14.0 || >=18.0.0"
3783
+ }
3784
+ },
3785
+ "node_modules/npm/node_modules/parse-conflict-json": {
3786
+ "version": "3.0.1",
3787
+ "inBundle": true,
3788
+ "license": "ISC",
3789
+ "dependencies": {
3790
+ "json-parse-even-better-errors": "^3.0.0",
3791
+ "just-diff": "^6.0.0",
3792
+ "just-diff-apply": "^5.2.0"
3793
+ },
3794
+ "engines": {
3795
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
3796
+ }
3797
+ },
3798
+ "node_modules/npm/node_modules/path-key": {
3799
+ "version": "3.1.1",
3800
+ "inBundle": true,
3801
+ "license": "MIT",
3802
+ "engines": {
3803
+ "node": ">=8"
3804
+ }
3805
+ },
3806
+ "node_modules/npm/node_modules/path-scurry": {
3807
+ "version": "1.10.1",
3808
+ "inBundle": true,
3809
+ "license": "BlueOak-1.0.0",
3810
+ "dependencies": {
3811
+ "lru-cache": "^9.1.1 || ^10.0.0",
3812
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
3813
+ },
3814
+ "engines": {
3815
+ "node": ">=16 || 14 >=14.17"
3816
+ },
3817
+ "funding": {
3818
+ "url": "https://github.com/sponsors/isaacs"
3819
+ }
3820
+ },
3821
+ "node_modules/npm/node_modules/postcss-selector-parser": {
3822
+ "version": "6.0.13",
3823
+ "inBundle": true,
3824
+ "license": "MIT",
3825
+ "dependencies": {
3826
+ "cssesc": "^3.0.0",
3827
+ "util-deprecate": "^1.0.2"
3828
+ },
3829
+ "engines": {
3830
+ "node": ">=4"
3831
+ }
3832
+ },
3833
+ "node_modules/npm/node_modules/proc-log": {
3834
+ "version": "3.0.0",
3835
+ "inBundle": true,
3836
+ "license": "ISC",
3837
+ "engines": {
3838
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
3839
+ }
3840
+ },
3841
+ "node_modules/npm/node_modules/process": {
3842
+ "version": "0.11.10",
3843
+ "inBundle": true,
3844
+ "license": "MIT",
3845
+ "engines": {
3846
+ "node": ">= 0.6.0"
3847
+ }
3848
+ },
3849
+ "node_modules/npm/node_modules/promise-all-reject-late": {
3850
+ "version": "1.0.1",
3851
+ "inBundle": true,
3852
+ "license": "ISC",
3853
+ "funding": {
3854
+ "url": "https://github.com/sponsors/isaacs"
3855
+ }
3856
+ },
3857
+ "node_modules/npm/node_modules/promise-call-limit": {
3858
+ "version": "1.0.2",
3859
+ "inBundle": true,
3860
+ "license": "ISC",
3861
+ "funding": {
3862
+ "url": "https://github.com/sponsors/isaacs"
3863
+ }
3864
+ },
3865
+ "node_modules/npm/node_modules/promise-inflight": {
3866
+ "version": "1.0.1",
3867
+ "inBundle": true,
3868
+ "license": "ISC"
3869
+ },
3870
+ "node_modules/npm/node_modules/promise-retry": {
3871
+ "version": "2.0.1",
3872
+ "inBundle": true,
3873
+ "license": "MIT",
3874
+ "dependencies": {
3875
+ "err-code": "^2.0.2",
3876
+ "retry": "^0.12.0"
3877
+ },
3878
+ "engines": {
3879
+ "node": ">=10"
3880
+ }
3881
+ },
3882
+ "node_modules/npm/node_modules/promzard": {
3883
+ "version": "1.0.0",
3884
+ "inBundle": true,
3885
+ "license": "ISC",
3886
+ "dependencies": {
3887
+ "read": "^2.0.0"
3888
+ },
3889
+ "engines": {
3890
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
3891
+ }
3892
+ },
3893
+ "node_modules/npm/node_modules/qrcode-terminal": {
3894
+ "version": "0.12.0",
3895
+ "inBundle": true,
3896
+ "bin": {
3897
+ "qrcode-terminal": "bin/qrcode-terminal.js"
3898
+ }
3899
+ },
3900
+ "node_modules/npm/node_modules/read": {
3901
+ "version": "2.1.0",
3902
+ "inBundle": true,
3903
+ "license": "ISC",
3904
+ "dependencies": {
3905
+ "mute-stream": "~1.0.0"
3906
+ },
3907
+ "engines": {
3908
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
3909
+ }
3910
+ },
3911
+ "node_modules/npm/node_modules/read-cmd-shim": {
3912
+ "version": "4.0.0",
3913
+ "inBundle": true,
3914
+ "license": "ISC",
3915
+ "engines": {
3916
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
3917
+ }
3918
+ },
3919
+ "node_modules/npm/node_modules/read-package-json": {
3920
+ "version": "7.0.0",
3921
+ "inBundle": true,
3922
+ "license": "ISC",
3923
+ "dependencies": {
3924
+ "glob": "^10.2.2",
3925
+ "json-parse-even-better-errors": "^3.0.0",
3926
+ "normalize-package-data": "^6.0.0",
3927
+ "npm-normalize-package-bin": "^3.0.0"
3928
+ },
3929
+ "engines": {
3930
+ "node": "^16.14.0 || >=18.0.0"
3931
+ }
3932
+ },
3933
+ "node_modules/npm/node_modules/read-package-json-fast": {
3934
+ "version": "3.0.2",
3935
+ "inBundle": true,
3936
+ "license": "ISC",
3937
+ "dependencies": {
3938
+ "json-parse-even-better-errors": "^3.0.0",
3939
+ "npm-normalize-package-bin": "^3.0.0"
3940
+ },
3941
+ "engines": {
3942
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
3943
+ }
3944
+ },
3945
+ "node_modules/npm/node_modules/readable-stream": {
3946
+ "version": "4.4.2",
3947
+ "inBundle": true,
3948
+ "license": "MIT",
3949
+ "dependencies": {
3950
+ "abort-controller": "^3.0.0",
3951
+ "buffer": "^6.0.3",
3952
+ "events": "^3.3.0",
3953
+ "process": "^0.11.10",
3954
+ "string_decoder": "^1.3.0"
3955
+ },
3956
+ "engines": {
3957
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
3958
+ }
3959
+ },
3960
+ "node_modules/npm/node_modules/retry": {
3961
+ "version": "0.12.0",
3962
+ "inBundle": true,
3963
+ "license": "MIT",
3964
+ "engines": {
3965
+ "node": ">= 4"
3966
+ }
3967
+ },
3968
+ "node_modules/npm/node_modules/safe-buffer": {
3969
+ "version": "5.2.1",
3970
+ "funding": [
3971
+ {
3972
+ "type": "github",
3973
+ "url": "https://github.com/sponsors/feross"
3974
+ },
3975
+ {
3976
+ "type": "patreon",
3977
+ "url": "https://www.patreon.com/feross"
3978
+ },
3979
+ {
3980
+ "type": "consulting",
3981
+ "url": "https://feross.org/support"
3982
+ }
3983
+ ],
3984
+ "inBundle": true,
3985
+ "license": "MIT"
3986
+ },
3987
+ "node_modules/npm/node_modules/safer-buffer": {
3988
+ "version": "2.1.2",
3989
+ "inBundle": true,
3990
+ "license": "MIT",
3991
+ "optional": true
3992
+ },
3993
+ "node_modules/npm/node_modules/semver": {
3994
+ "version": "7.5.4",
3995
+ "inBundle": true,
3996
+ "license": "ISC",
3997
+ "dependencies": {
3998
+ "lru-cache": "^6.0.0"
3999
+ },
4000
+ "bin": {
4001
+ "semver": "bin/semver.js"
4002
+ },
4003
+ "engines": {
4004
+ "node": ">=10"
4005
+ }
4006
+ },
4007
+ "node_modules/npm/node_modules/semver/node_modules/lru-cache": {
4008
+ "version": "6.0.0",
4009
+ "inBundle": true,
4010
+ "license": "ISC",
4011
+ "dependencies": {
4012
+ "yallist": "^4.0.0"
4013
+ },
4014
+ "engines": {
4015
+ "node": ">=10"
4016
+ }
4017
+ },
4018
+ "node_modules/npm/node_modules/set-blocking": {
4019
+ "version": "2.0.0",
4020
+ "inBundle": true,
4021
+ "license": "ISC"
4022
+ },
4023
+ "node_modules/npm/node_modules/shebang-command": {
4024
+ "version": "2.0.0",
4025
+ "inBundle": true,
4026
+ "license": "MIT",
4027
+ "dependencies": {
4028
+ "shebang-regex": "^3.0.0"
4029
+ },
4030
+ "engines": {
4031
+ "node": ">=8"
4032
+ }
4033
+ },
4034
+ "node_modules/npm/node_modules/shebang-regex": {
4035
+ "version": "3.0.0",
4036
+ "inBundle": true,
4037
+ "license": "MIT",
4038
+ "engines": {
4039
+ "node": ">=8"
4040
+ }
4041
+ },
4042
+ "node_modules/npm/node_modules/signal-exit": {
4043
+ "version": "4.1.0",
4044
+ "inBundle": true,
4045
+ "license": "ISC",
4046
+ "engines": {
4047
+ "node": ">=14"
4048
+ },
4049
+ "funding": {
4050
+ "url": "https://github.com/sponsors/isaacs"
4051
+ }
4052
+ },
4053
+ "node_modules/npm/node_modules/sigstore": {
4054
+ "version": "2.1.0",
4055
+ "inBundle": true,
4056
+ "license": "Apache-2.0",
4057
+ "dependencies": {
4058
+ "@sigstore/bundle": "^2.1.0",
4059
+ "@sigstore/protobuf-specs": "^0.2.1",
4060
+ "@sigstore/sign": "^2.1.0",
4061
+ "@sigstore/tuf": "^2.1.0"
4062
+ },
4063
+ "engines": {
4064
+ "node": "^16.14.0 || >=18.0.0"
4065
+ }
4066
+ },
4067
+ "node_modules/npm/node_modules/smart-buffer": {
4068
+ "version": "4.2.0",
4069
+ "inBundle": true,
4070
+ "license": "MIT",
4071
+ "engines": {
4072
+ "node": ">= 6.0.0",
4073
+ "npm": ">= 3.0.0"
4074
+ }
4075
+ },
4076
+ "node_modules/npm/node_modules/socks": {
4077
+ "version": "2.7.1",
4078
+ "inBundle": true,
4079
+ "license": "MIT",
4080
+ "dependencies": {
4081
+ "ip": "^2.0.0",
4082
+ "smart-buffer": "^4.2.0"
4083
+ },
4084
+ "engines": {
4085
+ "node": ">= 10.13.0",
4086
+ "npm": ">= 3.0.0"
4087
+ }
4088
+ },
4089
+ "node_modules/npm/node_modules/socks-proxy-agent": {
4090
+ "version": "8.0.2",
4091
+ "inBundle": true,
4092
+ "license": "MIT",
4093
+ "dependencies": {
4094
+ "agent-base": "^7.0.2",
4095
+ "debug": "^4.3.4",
4096
+ "socks": "^2.7.1"
4097
+ },
4098
+ "engines": {
4099
+ "node": ">= 14"
4100
+ }
4101
+ },
4102
+ "node_modules/npm/node_modules/spdx-correct": {
4103
+ "version": "3.2.0",
4104
+ "inBundle": true,
4105
+ "license": "Apache-2.0",
4106
+ "dependencies": {
4107
+ "spdx-expression-parse": "^3.0.0",
4108
+ "spdx-license-ids": "^3.0.0"
4109
+ }
4110
+ },
4111
+ "node_modules/npm/node_modules/spdx-exceptions": {
4112
+ "version": "2.3.0",
4113
+ "inBundle": true,
4114
+ "license": "CC-BY-3.0"
4115
+ },
4116
+ "node_modules/npm/node_modules/spdx-expression-parse": {
4117
+ "version": "3.0.1",
4118
+ "inBundle": true,
4119
+ "license": "MIT",
4120
+ "dependencies": {
4121
+ "spdx-exceptions": "^2.1.0",
4122
+ "spdx-license-ids": "^3.0.0"
4123
+ }
4124
+ },
4125
+ "node_modules/npm/node_modules/spdx-license-ids": {
4126
+ "version": "3.0.16",
4127
+ "inBundle": true,
4128
+ "license": "CC0-1.0"
4129
+ },
4130
+ "node_modules/npm/node_modules/ssri": {
4131
+ "version": "10.0.5",
4132
+ "inBundle": true,
4133
+ "license": "ISC",
4134
+ "dependencies": {
4135
+ "minipass": "^7.0.3"
4136
+ },
4137
+ "engines": {
4138
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
4139
+ }
4140
+ },
4141
+ "node_modules/npm/node_modules/string_decoder": {
4142
+ "version": "1.3.0",
4143
+ "inBundle": true,
4144
+ "license": "MIT",
4145
+ "dependencies": {
4146
+ "safe-buffer": "~5.2.0"
4147
+ }
4148
+ },
4149
+ "node_modules/npm/node_modules/string-width": {
4150
+ "version": "4.2.3",
4151
+ "inBundle": true,
4152
+ "license": "MIT",
4153
+ "dependencies": {
4154
+ "emoji-regex": "^8.0.0",
4155
+ "is-fullwidth-code-point": "^3.0.0",
4156
+ "strip-ansi": "^6.0.1"
4157
+ },
4158
+ "engines": {
4159
+ "node": ">=8"
4160
+ }
4161
+ },
4162
+ "node_modules/npm/node_modules/string-width-cjs": {
4163
+ "name": "string-width",
4164
+ "version": "4.2.3",
4165
+ "inBundle": true,
4166
+ "license": "MIT",
4167
+ "dependencies": {
4168
+ "emoji-regex": "^8.0.0",
4169
+ "is-fullwidth-code-point": "^3.0.0",
4170
+ "strip-ansi": "^6.0.1"
4171
+ },
4172
+ "engines": {
4173
+ "node": ">=8"
4174
+ }
4175
+ },
4176
+ "node_modules/npm/node_modules/string-width-cjs/node_modules/ansi-regex": {
4177
+ "version": "5.0.1",
4178
+ "inBundle": true,
4179
+ "license": "MIT",
4180
+ "engines": {
4181
+ "node": ">=8"
4182
+ }
4183
+ },
4184
+ "node_modules/npm/node_modules/string-width-cjs/node_modules/strip-ansi": {
4185
+ "version": "6.0.1",
4186
+ "inBundle": true,
4187
+ "license": "MIT",
4188
+ "dependencies": {
4189
+ "ansi-regex": "^5.0.1"
4190
+ },
4191
+ "engines": {
4192
+ "node": ">=8"
4193
+ }
4194
+ },
4195
+ "node_modules/npm/node_modules/string-width/node_modules/ansi-regex": {
4196
+ "version": "5.0.1",
4197
+ "inBundle": true,
4198
+ "license": "MIT",
4199
+ "engines": {
4200
+ "node": ">=8"
4201
+ }
4202
+ },
4203
+ "node_modules/npm/node_modules/string-width/node_modules/strip-ansi": {
4204
+ "version": "6.0.1",
4205
+ "inBundle": true,
4206
+ "license": "MIT",
4207
+ "dependencies": {
4208
+ "ansi-regex": "^5.0.1"
4209
+ },
4210
+ "engines": {
4211
+ "node": ">=8"
4212
+ }
4213
+ },
4214
+ "node_modules/npm/node_modules/strip-ansi": {
4215
+ "version": "7.1.0",
4216
+ "inBundle": true,
4217
+ "license": "MIT",
4218
+ "dependencies": {
4219
+ "ansi-regex": "^6.0.1"
4220
+ },
4221
+ "engines": {
4222
+ "node": ">=12"
4223
+ },
4224
+ "funding": {
4225
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
4226
+ }
4227
+ },
4228
+ "node_modules/npm/node_modules/strip-ansi-cjs": {
4229
+ "name": "strip-ansi",
4230
+ "version": "6.0.1",
4231
+ "inBundle": true,
4232
+ "license": "MIT",
4233
+ "dependencies": {
4234
+ "ansi-regex": "^5.0.1"
4235
+ },
4236
+ "engines": {
4237
+ "node": ">=8"
4238
+ }
4239
+ },
4240
+ "node_modules/npm/node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
4241
+ "version": "5.0.1",
4242
+ "inBundle": true,
4243
+ "license": "MIT",
4244
+ "engines": {
4245
+ "node": ">=8"
4246
+ }
4247
+ },
4248
+ "node_modules/npm/node_modules/supports-color": {
4249
+ "version": "9.4.0",
4250
+ "inBundle": true,
4251
+ "license": "MIT",
4252
+ "engines": {
4253
+ "node": ">=12"
4254
+ },
4255
+ "funding": {
4256
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
4257
+ }
4258
+ },
4259
+ "node_modules/npm/node_modules/tar": {
4260
+ "version": "6.2.0",
4261
+ "inBundle": true,
4262
+ "license": "ISC",
4263
+ "dependencies": {
4264
+ "chownr": "^2.0.0",
4265
+ "fs-minipass": "^2.0.0",
4266
+ "minipass": "^5.0.0",
4267
+ "minizlib": "^2.1.1",
4268
+ "mkdirp": "^1.0.3",
4269
+ "yallist": "^4.0.0"
4270
+ },
4271
+ "engines": {
4272
+ "node": ">=10"
4273
+ }
4274
+ },
4275
+ "node_modules/npm/node_modules/tar/node_modules/fs-minipass": {
4276
+ "version": "2.1.0",
4277
+ "inBundle": true,
4278
+ "license": "ISC",
4279
+ "dependencies": {
4280
+ "minipass": "^3.0.0"
4281
+ },
4282
+ "engines": {
4283
+ "node": ">= 8"
4284
+ }
4285
+ },
4286
+ "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": {
4287
+ "version": "3.3.6",
4288
+ "inBundle": true,
4289
+ "license": "ISC",
4290
+ "dependencies": {
4291
+ "yallist": "^4.0.0"
4292
+ },
4293
+ "engines": {
4294
+ "node": ">=8"
4295
+ }
4296
+ },
4297
+ "node_modules/npm/node_modules/tar/node_modules/minipass": {
4298
+ "version": "5.0.0",
4299
+ "inBundle": true,
4300
+ "license": "ISC",
4301
+ "engines": {
4302
+ "node": ">=8"
4303
+ }
4304
+ },
4305
+ "node_modules/npm/node_modules/text-table": {
4306
+ "version": "0.2.0",
4307
+ "inBundle": true,
4308
+ "license": "MIT"
4309
+ },
4310
+ "node_modules/npm/node_modules/tiny-relative-date": {
4311
+ "version": "1.3.0",
4312
+ "inBundle": true,
4313
+ "license": "MIT"
4314
+ },
4315
+ "node_modules/npm/node_modules/treeverse": {
4316
+ "version": "3.0.0",
4317
+ "inBundle": true,
4318
+ "license": "ISC",
4319
+ "engines": {
4320
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
4321
+ }
4322
+ },
4323
+ "node_modules/npm/node_modules/tuf-js": {
4324
+ "version": "2.1.0",
4325
+ "inBundle": true,
4326
+ "license": "MIT",
4327
+ "dependencies": {
4328
+ "@tufjs/models": "2.0.0",
4329
+ "debug": "^4.3.4",
4330
+ "make-fetch-happen": "^13.0.0"
4331
+ },
4332
+ "engines": {
4333
+ "node": "^16.14.0 || >=18.0.0"
4334
+ }
4335
+ },
4336
+ "node_modules/npm/node_modules/unique-filename": {
4337
+ "version": "3.0.0",
4338
+ "inBundle": true,
4339
+ "license": "ISC",
4340
+ "dependencies": {
4341
+ "unique-slug": "^4.0.0"
4342
+ },
4343
+ "engines": {
4344
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
4345
+ }
4346
+ },
4347
+ "node_modules/npm/node_modules/unique-slug": {
4348
+ "version": "4.0.0",
4349
+ "inBundle": true,
4350
+ "license": "ISC",
4351
+ "dependencies": {
4352
+ "imurmurhash": "^0.1.4"
4353
+ },
4354
+ "engines": {
4355
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
4356
+ }
4357
+ },
4358
+ "node_modules/npm/node_modules/util-deprecate": {
4359
+ "version": "1.0.2",
4360
+ "inBundle": true,
4361
+ "license": "MIT"
4362
+ },
4363
+ "node_modules/npm/node_modules/validate-npm-package-license": {
4364
+ "version": "3.0.4",
4365
+ "inBundle": true,
4366
+ "license": "Apache-2.0",
4367
+ "dependencies": {
4368
+ "spdx-correct": "^3.0.0",
4369
+ "spdx-expression-parse": "^3.0.0"
4370
+ }
4371
+ },
4372
+ "node_modules/npm/node_modules/validate-npm-package-name": {
4373
+ "version": "5.0.0",
4374
+ "inBundle": true,
4375
+ "license": "ISC",
4376
+ "dependencies": {
4377
+ "builtins": "^5.0.0"
4378
+ },
4379
+ "engines": {
4380
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
4381
+ }
4382
+ },
4383
+ "node_modules/npm/node_modules/walk-up-path": {
4384
+ "version": "3.0.1",
4385
+ "inBundle": true,
4386
+ "license": "ISC"
4387
+ },
4388
+ "node_modules/npm/node_modules/wcwidth": {
4389
+ "version": "1.0.1",
4390
+ "inBundle": true,
4391
+ "license": "MIT",
4392
+ "dependencies": {
4393
+ "defaults": "^1.0.3"
4394
+ }
4395
+ },
4396
+ "node_modules/npm/node_modules/which": {
4397
+ "version": "4.0.0",
4398
+ "inBundle": true,
4399
+ "license": "ISC",
4400
+ "dependencies": {
4401
+ "isexe": "^3.1.1"
4402
+ },
4403
+ "bin": {
4404
+ "node-which": "bin/which.js"
4405
+ },
4406
+ "engines": {
4407
+ "node": "^16.13.0 || >=18.0.0"
4408
+ }
4409
+ },
4410
+ "node_modules/npm/node_modules/which/node_modules/isexe": {
4411
+ "version": "3.1.1",
4412
+ "inBundle": true,
4413
+ "license": "ISC",
4414
+ "engines": {
4415
+ "node": ">=16"
4416
+ }
4417
+ },
4418
+ "node_modules/npm/node_modules/wide-align": {
4419
+ "version": "1.1.5",
4420
+ "inBundle": true,
4421
+ "license": "ISC",
4422
+ "dependencies": {
4423
+ "string-width": "^1.0.2 || 2 || 3 || 4"
4424
+ }
4425
+ },
4426
+ "node_modules/npm/node_modules/wrap-ansi": {
4427
+ "version": "8.1.0",
4428
+ "inBundle": true,
4429
+ "license": "MIT",
4430
+ "dependencies": {
4431
+ "ansi-styles": "^6.1.0",
4432
+ "string-width": "^5.0.1",
4433
+ "strip-ansi": "^7.0.1"
4434
+ },
4435
+ "engines": {
4436
+ "node": ">=12"
4437
+ },
4438
+ "funding": {
4439
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
4440
+ }
4441
+ },
4442
+ "node_modules/npm/node_modules/wrap-ansi-cjs": {
4443
+ "name": "wrap-ansi",
4444
+ "version": "7.0.0",
4445
+ "inBundle": true,
4446
+ "license": "MIT",
4447
+ "dependencies": {
4448
+ "ansi-styles": "^4.0.0",
4449
+ "string-width": "^4.1.0",
4450
+ "strip-ansi": "^6.0.0"
4451
+ },
4452
+ "engines": {
4453
+ "node": ">=10"
4454
+ },
4455
+ "funding": {
4456
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
4457
+ }
4458
+ },
4459
+ "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
4460
+ "version": "5.0.1",
4461
+ "inBundle": true,
4462
+ "license": "MIT",
4463
+ "engines": {
4464
+ "node": ">=8"
4465
+ }
4466
+ },
4467
+ "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
4468
+ "version": "4.3.0",
4469
+ "inBundle": true,
4470
+ "license": "MIT",
4471
+ "dependencies": {
4472
+ "color-convert": "^2.0.1"
4473
+ },
4474
+ "engines": {
4475
+ "node": ">=8"
4476
+ },
4477
+ "funding": {
4478
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
4479
+ }
4480
+ },
4481
+ "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
4482
+ "version": "6.0.1",
4483
+ "inBundle": true,
4484
+ "license": "MIT",
4485
+ "dependencies": {
4486
+ "ansi-regex": "^5.0.1"
4487
+ },
4488
+ "engines": {
4489
+ "node": ">=8"
4490
+ }
4491
+ },
4492
+ "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": {
4493
+ "version": "9.2.2",
4494
+ "inBundle": true,
4495
+ "license": "MIT"
4496
+ },
4497
+ "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": {
4498
+ "version": "5.1.2",
4499
+ "inBundle": true,
4500
+ "license": "MIT",
4501
+ "dependencies": {
4502
+ "eastasianwidth": "^0.2.0",
4503
+ "emoji-regex": "^9.2.2",
4504
+ "strip-ansi": "^7.0.1"
4505
+ },
4506
+ "engines": {
4507
+ "node": ">=12"
4508
+ },
4509
+ "funding": {
4510
+ "url": "https://github.com/sponsors/sindresorhus"
4511
+ }
4512
+ },
4513
+ "node_modules/npm/node_modules/write-file-atomic": {
4514
+ "version": "5.0.1",
4515
+ "inBundle": true,
4516
+ "license": "ISC",
4517
+ "dependencies": {
4518
+ "imurmurhash": "^0.1.4",
4519
+ "signal-exit": "^4.0.1"
4520
+ },
4521
+ "engines": {
4522
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
4523
+ }
4524
+ },
4525
+ "node_modules/npm/node_modules/yallist": {
4526
+ "version": "4.0.0",
4527
+ "inBundle": true,
4528
+ "license": "ISC"
4529
+ },
4530
+ "node_modules/npmlog": {
4531
+ "version": "5.0.1",
4532
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
4533
+ "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
4534
+ "dependencies": {
4535
+ "are-we-there-yet": "^2.0.0",
4536
+ "console-control-strings": "^1.1.0",
4537
+ "gauge": "^3.0.0",
4538
+ "set-blocking": "^2.0.0"
4539
+ }
4540
+ },
4541
+ "node_modules/object-assign": {
4542
+ "version": "4.1.1",
4543
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
4544
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
4545
+ "engines": {
4546
+ "node": ">=0.10.0"
4547
+ }
4548
+ },
4549
+ "node_modules/object-inspect": {
4550
+ "version": "1.13.1",
4551
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
4552
+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
4553
+ "funding": {
4554
+ "url": "https://github.com/sponsors/ljharb"
4555
+ }
4556
+ },
4557
+ "node_modules/on-finished": {
4558
+ "version": "2.4.1",
4559
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
4560
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
4561
+ "dependencies": {
4562
+ "ee-first": "1.1.1"
4563
+ },
4564
+ "engines": {
4565
+ "node": ">= 0.8"
4566
+ }
4567
+ },
4568
+ "node_modules/once": {
4569
+ "version": "1.4.0",
4570
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
4571
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
4572
+ "dependencies": {
4573
+ "wrappy": "1"
4574
+ }
4575
+ },
4576
+ "node_modules/parseurl": {
4577
+ "version": "1.3.3",
4578
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
4579
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
4580
+ "engines": {
4581
+ "node": ">= 0.8"
4582
+ }
4583
+ },
4584
+ "node_modules/path": {
4585
+ "version": "0.12.7",
4586
+ "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
4587
+ "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==",
4588
+ "dependencies": {
4589
+ "process": "^0.11.1",
4590
+ "util": "^0.10.3"
4591
+ }
4592
+ },
4593
+ "node_modules/path-is-absolute": {
4594
+ "version": "1.0.1",
4595
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
4596
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
4597
+ "engines": {
4598
+ "node": ">=0.10.0"
4599
+ }
4600
+ },
4601
+ "node_modules/path-key": {
4602
+ "version": "3.1.1",
4603
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
4604
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
4605
+ "engines": {
4606
+ "node": ">=8"
4607
+ }
4608
+ },
4609
+ "node_modules/path-scurry": {
4610
+ "version": "1.10.1",
4611
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
4612
+ "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
4613
+ "dependencies": {
4614
+ "lru-cache": "^9.1.1 || ^10.0.0",
4615
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
4616
+ },
4617
+ "engines": {
4618
+ "node": ">=16 || 14 >=14.17"
4619
+ },
4620
+ "funding": {
4621
+ "url": "https://github.com/sponsors/isaacs"
4622
+ }
4623
+ },
4624
+ "node_modules/path-scurry/node_modules/lru-cache": {
4625
+ "version": "10.1.0",
4626
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz",
4627
+ "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==",
4628
+ "engines": {
4629
+ "node": "14 || >=16.14"
4630
+ }
4631
+ },
4632
+ "node_modules/path-to-regexp": {
4633
+ "version": "0.1.7",
4634
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
4635
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
4636
+ },
4637
+ "node_modules/picomatch": {
4638
+ "version": "2.3.1",
4639
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
4640
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
4641
+ "dev": true,
4642
+ "engines": {
4643
+ "node": ">=8.6"
4644
+ },
4645
+ "funding": {
4646
+ "url": "https://github.com/sponsors/jonschlinkert"
4647
+ }
4648
+ },
4649
+ "node_modules/process": {
4650
+ "version": "0.11.10",
4651
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
4652
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
4653
+ "engines": {
4654
+ "node": ">= 0.6.0"
4655
+ }
4656
+ },
4657
+ "node_modules/proxy-addr": {
4658
+ "version": "2.0.7",
4659
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
4660
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
4661
+ "dependencies": {
4662
+ "forwarded": "0.2.0",
4663
+ "ipaddr.js": "1.9.1"
4664
+ },
4665
+ "engines": {
4666
+ "node": ">= 0.10"
4667
+ }
4668
+ },
4669
+ "node_modules/pstree.remy": {
4670
+ "version": "1.1.8",
4671
+ "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
4672
+ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==",
4673
+ "dev": true
4674
+ },
4675
+ "node_modules/punycode": {
4676
+ "version": "2.3.1",
4677
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
4678
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
4679
+ "engines": {
4680
+ "node": ">=6"
4681
+ }
4682
+ },
4683
+ "node_modules/qs": {
4684
+ "version": "6.11.0",
4685
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
4686
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
4687
+ "dependencies": {
4688
+ "side-channel": "^1.0.4"
4689
+ },
4690
+ "engines": {
4691
+ "node": ">=0.6"
4692
+ },
4693
+ "funding": {
4694
+ "url": "https://github.com/sponsors/ljharb"
4695
+ }
4696
+ },
4697
+ "node_modules/range-parser": {
4698
+ "version": "1.2.1",
4699
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
4700
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
4701
+ "engines": {
4702
+ "node": ">= 0.6"
4703
+ }
4704
+ },
4705
+ "node_modules/readable-stream": {
4706
+ "version": "3.6.2",
4707
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
4708
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
4709
+ "dependencies": {
4710
+ "inherits": "^2.0.3",
4711
+ "string_decoder": "^1.1.1",
4712
+ "util-deprecate": "^1.0.1"
4713
+ },
4714
+ "engines": {
4715
+ "node": ">= 6"
4716
+ }
4717
+ },
4718
+ "node_modules/readdirp": {
4719
+ "version": "3.6.0",
4720
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
4721
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
4722
+ "dev": true,
4723
+ "dependencies": {
4724
+ "picomatch": "^2.2.1"
4725
+ },
4726
+ "engines": {
4727
+ "node": ">=8.10.0"
4728
+ }
4729
+ },
4730
+ "node_modules/rimraf": {
4731
+ "version": "3.0.2",
4732
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
4733
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
4734
+ "dependencies": {
4735
+ "glob": "^7.1.3"
4736
+ },
4737
+ "bin": {
4738
+ "rimraf": "bin.js"
4739
+ },
4740
+ "funding": {
4741
+ "url": "https://github.com/sponsors/isaacs"
4742
+ }
4743
+ },
4744
+ "node_modules/rimraf/node_modules/glob": {
4745
+ "version": "7.2.3",
4746
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
4747
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
4748
+ "dependencies": {
4749
+ "fs.realpath": "^1.0.0",
4750
+ "inflight": "^1.0.4",
4751
+ "inherits": "2",
4752
+ "minimatch": "^3.1.1",
4753
+ "once": "^1.3.0",
4754
+ "path-is-absolute": "^1.0.0"
4755
+ },
4756
+ "engines": {
4757
+ "node": "*"
4758
+ },
4759
+ "funding": {
4760
+ "url": "https://github.com/sponsors/isaacs"
4761
+ }
4762
+ },
4763
+ "node_modules/safe-buffer": {
4764
+ "version": "5.2.1",
4765
  "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
4766
  "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
4767
  "funding": [
 
5009
  "version": "5.5.0",
5010
  "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
5011
  "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
 
5012
  "dependencies": {
5013
  "has-flag": "^3.0.0"
5014
  },
package.json CHANGED
@@ -23,11 +23,14 @@
23
  "cors": "^2.8.5",
24
  "dotenv": "^16.3.1",
25
  "express": "^4.18.2",
 
26
  "glob": "^10.3.10",
27
  "http": "^0.0.1-security",
 
28
  "joi": "^17.11.0",
29
  "jsonwebtoken": "^9.0.2",
30
  "mongoose": "^8.0.3",
 
31
  "path": "^0.12.7"
32
  }
33
  }
 
23
  "cors": "^2.8.5",
24
  "dotenv": "^16.3.1",
25
  "express": "^4.18.2",
26
+ "express-joi-validation": "^5.0.1",
27
  "glob": "^10.3.10",
28
  "http": "^0.0.1-security",
29
+ "i": "^0.3.7",
30
  "joi": "^17.11.0",
31
  "jsonwebtoken": "^9.0.2",
32
  "mongoose": "^8.0.3",
33
+ "npm": "^10.2.5",
34
  "path": "^0.12.7"
35
  }
36
  }
src/configs/config.ts CHANGED
@@ -11,6 +11,7 @@ export interface Config {
11
  secret: string;
12
  expiresIn: string;
13
  };
 
14
  }
15
 
16
  export const config: Config = {
@@ -22,4 +23,5 @@ export const config: Config = {
22
  secret: Env.get("JWT_SECRET").toString(),
23
  expiresIn: Env.get("JWT_EXPIRES_IN").toString(),
24
  },
 
25
  };
 
11
  secret: string;
12
  expiresIn: string;
13
  };
14
+ saltRounds: number;
15
  }
16
 
17
  export const config: Config = {
 
23
  secret: Env.get("JWT_SECRET").toString(),
24
  expiresIn: Env.get("JWT_EXPIRES_IN").toString(),
25
  },
26
+ saltRounds: Env.get("SALT_ROUNDS", 5).toNumber(),
27
  };
src/helpers/validation.helper.ts CHANGED
@@ -1,18 +1,52 @@
1
- export const validator = (schema: any) => {
2
- return (req: any, res: any, next: any) => {
3
- try {
4
- let validationResult = schema.body.validate(req.body);
5
- var validation = [];
6
- if (validationResult.error) {
7
- validation.push(validationResult.error.details[0].message);
8
- }
9
- if (validation.length) {
10
- return res.status(400).json({ success: false, error: validation.join(), code: 400 });
11
- }
12
- next();
13
- } catch (err) {
14
- console.log(`err`, err);
15
- return res.status(400).json({ success: false, error: "Bad Request!", code: 400 });
16
- }
17
- };
18
- };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // export const validator = (schema: any) => {
2
+ // return (req: any, res: any, next: any) => {
3
+ // try {
4
+ // let validationResult = schema.body.validate(req.body);
5
+ // var validation = [];
6
+ // if (validationResult.error) {
7
+ // validation.push(validationResult.error.details[0].message);
8
+ // }
9
+ // if (validation.length) {
10
+ // return res.status(400).json({ success: false, error: validation.join(), code: 400 });
11
+ // }
12
+ // next();
13
+ // } catch (err) {
14
+ // console.log(`err`, err);
15
+ // return res.status(400).json({ success: false, error: "Bad Request!", code: 400 });
16
+ // }
17
+ // };
18
+ // };
19
+
20
+ import { NextFunction, Request, Response } from "express";
21
+ import { createValidator } from "express-joi-validation";
22
+ import Joi from "joi";
23
+
24
+ const validator = createValidator({ passError: true });
25
+
26
+ export const bodyValidator = validator.body;
27
+ export const queryValidator = validator.query;
28
+ export const paramsValidator = (schemaOrParam: Joi.Schema | string) =>
29
+ typeof schemaOrParam === "string"
30
+ ? validator.params(Joi.object({ [schemaOrParam]: Joi.string().required() }))
31
+ : validator.params(schemaOrParam);
32
+
33
+ export const validationErrorHandler = (
34
+ err,
35
+ req: Request,
36
+ res: Response,
37
+ next: NextFunction
38
+ ) => {
39
+ if (err && err.error && err.error.isJoi) {
40
+ console.log(`err`, err.error);
41
+
42
+ const errors = err.error.details.map((detail) => detail.message);
43
+ return res.status(422).json({
44
+ success: false,
45
+ errors: errors,
46
+ code: 422,
47
+ });
48
+ } else {
49
+ // pass on to another error handler
50
+ next(err);
51
+ }
52
+ };
src/modules/common/users/validation/user.baseValidation.ts CHANGED
@@ -1,98 +1,129 @@
1
- import joi from 'joi';
2
 
3
- export class userBaseValidation {
4
- static createValidation = {
5
- body: joi.object().required().keys({
6
- name: joi.string().empty().required().messages({
7
- "string.base": "please enter a valid name",
8
- "any.required": "name is required",
9
- "string.empty": "name can not be empty",
10
- }),
11
- email: joi.string().required().email({ minDomainSegments: 2, tlds: { allow: ['com', 'net', 'org', 'eg', 'io'] } }).empty().messages({
12
- "string.email": "please enter a valid email",
13
- "any.required": "email must be entered",
14
- "string.empty": "email can not be empty",
15
- }),
16
- password: joi.string().empty().min(8).required().messages({
17
- "string.base": "please enter a valid password",
18
- "any.required": "password must be entered",
19
- "string.empty": "password cannot be empty",
20
- "string.min": "password must be at least 8 characters"
21
- }),
22
- confirmPassword: joi.string().empty().min(8).required().messages({
23
- "string.base": "please enter a valid password",
24
- "any.required": "password must be entered",
25
- "string.empty": "password cannot be empty",
26
- "string.min": "password must be at least 8 characters"
27
- }),
28
- image: joi.object().optional().keys({
29
- url: joi.string().optional().messages({
30
- "string.base": "please enter a valid url",
31
- }),
32
- public_id: joi.string().optional().messages({
33
- "string.base": "please enter a valid public_id",
34
- })
35
- }),
36
- gender: joi.string().empty().required().messages({
37
- "string.base": "please enter a valid gender",
38
- "any.required": "gender must be entered",
39
- "string.empty": "gender cannot be empty",
40
- }),
41
- height: joi.number().empty().required().messages({
42
- "number.base": "please enter a valid height number",
43
- "any.required": "height must be entered",
44
- "number.empty": "height cannot be empty",
45
- }),
46
- weight: joi.number().empty().required().messages({
47
- "number.base": "please enter a valid weight number",
48
- "any.required": "weight must be entered",
49
- "number.empty": "weight cannot be empty",
50
- }),
51
- fitness_level: joi.string().empty().required().messages({
52
- "string.base": "please enter a valid fitness_level",
53
- "any.required": "fitness_level must be entered",
54
- "string.empty": "fitness_level cannot be empty",
55
- }),
56
- preferences: joi.object().optional().keys({
57
- fitness_goal: joi.string().empty().required().messages({
58
- "string.base": "please enter a valid fitness_goal",
59
- "any.required": "fitness_goal must be entered",
60
- "string.empty": "fitness_goal cannot be empty",
61
- }),
62
- target_weight: joi.number().empty().required().messages({
63
- "number.base": "please enter a valid target_weight number",
64
- "any.required": "target_weight must be entered",
65
- "number.empty": "target_weight cannot be empty",
66
- }),
67
- workout_frequency: joi.number().empty().required().messages({
68
- "number.base": "please enter a valid workout_frequency number",
69
- "any.required": "workout_frequency must be entered",
70
- "number.empty": "workout_frequency cannot be empty",
71
- }),
72
- preferred_days: joi.array().empty().required().items(joi.string().empty().required().messages({
73
- "string.base": "please enter a valid preferred_days",
74
- "any.required": "preferred_days must be entered",
75
- "string.empty": "preferred_days cannot be empty",
76
- })),
77
- workout_place: joi.string().empty().required().messages({
78
- "string.base": "please enter a valid workout_place",
79
- "any.required": "workout_place must be entered",
80
- "string.empty": "workout_place cannot be empty",
81
- }),
82
- preferred_equipment: joi.array().empty().required().items(joi.string().empty().required().messages({
83
- "string.base": "please enter a valid preferred_equipment",
84
- "any.required": "preferred_equipment must be entered",
85
- "string.empty": "preferred_equipment cannot be empty",
86
- }))
87
- }),
88
- injuries: joi.array().empty().required().items(joi.string().empty().required().messages({
89
- "string.base": "please enter a valid injuries",
90
- "any.required": "injuries must be entered",
91
- "string.empty": "injuries cannot be empty",
92
- })),
93
- dob: joi.date().empty().optional().messages({
94
- "date.base": "please enter a valid date",
 
95
  })
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  })
97
- }
98
- }
 
 
 
 
1
+ import joi from "joi";
2
 
3
+ export const userRegisterValidation = joi
4
+ .object()
5
+ .required()
6
+ .keys({
7
+ name: joi.string().empty().required().messages({
8
+ "string.base": "please enter a valid name",
9
+ "any.required": "name is required",
10
+ "string.empty": "name can not be empty",
11
+ }),
12
+ email: joi
13
+ .string()
14
+ .required()
15
+ .email({
16
+ minDomainSegments: 2,
17
+ tlds: { allow: ["com", "net", "org", "eg", "io"] },
18
+ })
19
+ .empty()
20
+ .messages({
21
+ "string.email": "please enter a valid email",
22
+ "any.required": "email must be entered",
23
+ "string.empty": "email can not be empty",
24
+ }),
25
+ password: joi.string().empty().min(8).required().messages({
26
+ "string.base": "please enter a valid password",
27
+ "any.required": "password must be entered",
28
+ "string.empty": "password cannot be empty",
29
+ "string.min": "password must be at least 8 characters",
30
+ }),
31
+ confirmPassword: joi.string().empty().min(8).required().messages({
32
+ "string.base": "please enter a valid password",
33
+ "any.required": "password must be entered",
34
+ "string.empty": "password cannot be empty",
35
+ "string.min": "password must be at least 8 characters",
36
+ }),
37
+ image: joi
38
+ .object()
39
+ .optional()
40
+ .keys({
41
+ url: joi.string().optional().messages({
42
+ "string.base": "please enter a valid url",
43
+ }),
44
+ public_id: joi.string().optional().messages({
45
+ "string.base": "please enter a valid public_id",
46
+ }),
47
+ }),
48
+ gender: joi.string().empty().required().messages({
49
+ "string.base": "please enter a valid gender",
50
+ "any.required": "gender must be entered",
51
+ "string.empty": "gender cannot be empty",
52
+ }),
53
+ height: joi.number().empty().required().messages({
54
+ "number.base": "please enter a valid height number",
55
+ "any.required": "height must be entered",
56
+ "number.empty": "height cannot be empty",
57
+ }),
58
+ weight: joi.number().empty().required().messages({
59
+ "number.base": "please enter a valid weight number",
60
+ "any.required": "weight must be entered",
61
+ "number.empty": "weight cannot be empty",
62
+ }),
63
+ fitness_level: joi.string().empty().required().messages({
64
+ "string.base": "please enter a valid fitness_level",
65
+ "any.required": "fitness_level must be entered",
66
+ "string.empty": "fitness_level cannot be empty",
67
+ }),
68
+ preferences: joi
69
+ .object()
70
+ .optional()
71
+ .keys({
72
+ fitness_goal: joi.string().empty().required().messages({
73
+ "string.base": "please enter a valid fitness_goal",
74
+ "any.required": "fitness_goal must be entered",
75
+ "string.empty": "fitness_goal cannot be empty",
76
+ }),
77
+ target_weight: joi.number().empty().required().messages({
78
+ "number.base": "please enter a valid target_weight number",
79
+ "any.required": "target_weight must be entered",
80
+ "number.empty": "target_weight cannot be empty",
81
+ }),
82
+ workout_frequency: joi.number().empty().required().messages({
83
+ "number.base": "please enter a valid workout_frequency number",
84
+ "any.required": "workout_frequency must be entered",
85
+ "number.empty": "workout_frequency cannot be empty",
86
+ }),
87
+ preferred_days: joi
88
+ .array()
89
+ .empty()
90
+ .required()
91
+ .items(
92
+ joi.string().empty().required().messages({
93
+ "string.base": "please enter a valid preferred_days",
94
+ "any.required": "preferred_days must be entered",
95
+ "string.empty": "preferred_days cannot be empty",
96
  })
97
+ ),
98
+ workout_place: joi.string().empty().required().messages({
99
+ "string.base": "please enter a valid workout_place",
100
+ "any.required": "workout_place must be entered",
101
+ "string.empty": "workout_place cannot be empty",
102
+ }),
103
+ preferred_equipment: joi
104
+ .array()
105
+ .empty()
106
+ .required()
107
+ .items(
108
+ joi.string().empty().required().messages({
109
+ "string.base": "please enter a valid preferred_equipment",
110
+ "any.required": "preferred_equipment must be entered",
111
+ "string.empty": "preferred_equipment cannot be empty",
112
+ })
113
+ ),
114
+ }),
115
+ injuries: joi
116
+ .array()
117
+ .empty()
118
+ .required()
119
+ .items(
120
+ joi.string().empty().required().messages({
121
+ "string.base": "please enter a valid injuries",
122
+ "any.required": "injuries must be entered",
123
+ "string.empty": "injuries cannot be empty",
124
  })
125
+ ),
126
+ dob: joi.date().empty().optional().messages({
127
+ "date.base": "please enter a valid date",
128
+ }),
129
+ });
src/modules/console/admins/controllers/admins.controller.ts CHANGED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Request, Response, Router } from "express";
2
+ import { BaseController } from "../../../../lib/controllers/controller.base";
3
+ import { Prefix } from "../../../common/decorators/prefix.decorator";
4
+ import { AdminsService } from "../services/admins.service";
5
+ import { createAdminSchema } from "../validations/create-admin.validation";
6
+ import {
7
+ bodyValidator,
8
+ paramsValidator,
9
+ } from "../../../../helpers/validation.helper";
10
+
11
+ @Prefix("/admins")
12
+ export class AdminsController extends BaseController {
13
+ static setRoutes(router: Router) {
14
+ router.get("/", AdminsController.list);
15
+ router.get("/:id", paramsValidator("id"), AdminsController.get);
16
+ router.post("/", bodyValidator(createAdminSchema), AdminsController.create);
17
+ router.patch(
18
+ "/:id",
19
+ paramsValidator("id"),
20
+ bodyValidator(createAdminSchema),
21
+ AdminsController.update
22
+ );
23
+ router.delete("/:id", paramsValidator("id"), AdminsController.delete);
24
+ }
25
+
26
+ static list(_, res: Response) {
27
+ AdminsService.list({})
28
+ .then((result) => {
29
+ res.status(result.code).json(result);
30
+ })
31
+ .catch((err) => {
32
+ res.status(500).json(err);
33
+ });
34
+ }
35
+
36
+ static async get(req: Request, res: Response) {
37
+ const data = await AdminsService.get({
38
+ _id: req.params.id,
39
+ });
40
+ res.json(data);
41
+ }
42
+
43
+ static async create(req: Request, res: Response) {
44
+ const data = await AdminsService.create(req.body);
45
+ res.json(data);
46
+ }
47
+
48
+ static async update(req: Request, res: Response) {
49
+ const data = await AdminsService.update(req.params.id, req.body);
50
+ res.json(data);
51
+ }
52
+
53
+ static async delete(req: Request, res: Response) {
54
+ const data = await AdminsService.remove(req.params.id);
55
+ res.json(data);
56
+ }
57
+ }
src/modules/console/admins/enums/roles.enum.ts ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ export enum Role {
2
+ SUPER_ADMIN = "superAdmin",
3
+ ADMIN = "admin",
4
+ }
src/modules/console/admins/models/admin.model.ts CHANGED
@@ -1,28 +1,35 @@
1
  import mongoose from "mongoose";
2
  import bcrypt from "bcrypt";
3
- export const saltrounds = 5;
 
4
  const { Schema } = mongoose;
5
- enum Role {
6
- SUPER_ADMIN= "superAdmin",
7
- ADMIN= "admin"
 
 
 
 
 
 
8
  }
9
- const adminSchema = new Schema({
10
- name: { type: String, required: true },
11
- email: { type: String, required: true, unique: true, dropDups: true },
12
- password: { type: String, required: true },
13
- image: { type: Object, default: {} },
14
- permission: { type: Object, required: true },
15
- role: {
16
- type: String,
17
- enum: Role
18
- },
19
- gender: { type: String, required: true },
20
- dob: { type: Date }
21
  });
22
 
23
- adminSchema.pre("save", async function (next) {
24
- this.password = await bcrypt.hash(this.password, saltrounds);
25
- next();
26
  });
27
 
28
- export const adminModel = mongoose.model("admins", adminSchema);
 
1
  import mongoose from "mongoose";
2
  import bcrypt from "bcrypt";
3
+ import { Role } from "../enums/roles.enum";
4
+ import { config } from "../../../../configs/config";
5
  const { Schema } = mongoose;
6
+
7
+ export interface IAdmin {
8
+ name: string;
9
+ email: string;
10
+ password: string;
11
+ image: object;
12
+ role: Role;
13
+ gender: string;
14
+ dob: Date;
15
  }
16
+
17
+ const AdminSchema = new Schema({
18
+ name: { type: String, required: true },
19
+ email: { type: String, required: true, unique: true, dropDups: true },
20
+ password: { type: String, required: true },
21
+ image: { type: Object, default: {} },
22
+ role: {
23
+ type: String,
24
+ enum: Role,
25
+ },
26
+ gender: { type: String, required: true },
27
+ dob: { type: Date },
28
  });
29
 
30
+ AdminSchema.pre("save", async function (next) {
31
+ this.password = await bcrypt.hash(this.password, config.saltRounds);
32
+ next();
33
  });
34
 
35
+ export const Admin = mongoose.model<IAdmin>("admins", AdminSchema);
src/modules/console/admins/services/admins.service.ts CHANGED
@@ -1,11 +1,12 @@
1
  import bcrypt from "bcrypt";
2
- import { adminModel, saltrounds } from '../models/admin.model'
3
-
 
4
 
5
  export class AdminsService {
6
  static async find(filterObject) {
7
  try {
8
- const resultObject = await adminModel.findOne(filterObject).lean();
9
 
10
  if (!resultObject)
11
  return {
@@ -29,9 +30,11 @@ export class AdminsService {
29
  }
30
  }
31
 
32
- static async get(filterObject) {
33
  try {
34
- const resultObject = await adminModel.findOne(filterObject).lean().select("-password");
 
 
35
  if (!resultObject)
36
  return {
37
  success: false,
@@ -55,8 +58,7 @@ export class AdminsService {
55
 
56
  static async list(filterObject) {
57
  try {
58
- const resultArray = await adminModel
59
- .find(filterObject)
60
  .lean()
61
  .select("-password");
62
 
@@ -66,7 +68,7 @@ export class AdminsService {
66
  code: 404,
67
  error: "No Matching Result Found.",
68
  };
69
- const count = await adminModel.countDocuments(filterObject);
70
  return {
71
  success: true,
72
  code: 200,
@@ -86,7 +88,7 @@ export class AdminsService {
86
  static async create(formObject) {
87
  try {
88
  if (formObject.email) formObject.email = formObject.email.toLowerCase();
89
- const resultObject = new adminModel(formObject);
90
  await resultObject.save();
91
 
92
  if (!resultObject)
@@ -125,7 +127,8 @@ export class AdminsService {
125
  const duplicate = await this.find({ email: formObject.email });
126
  if (
127
  duplicate.success &&
128
- duplicate.record._id.toString() != existingObject.record._id.toString()
 
129
  )
130
  return {
131
  success: false,
@@ -134,10 +137,7 @@ export class AdminsService {
134
  };
135
  }
136
 
137
- const resultObject = await adminModel.findByIdAndUpdate(
138
- { _id },
139
- formObject
140
- );
141
 
142
  if (!resultObject)
143
  return {
@@ -163,7 +163,7 @@ export class AdminsService {
163
 
164
  static async remove(_id) {
165
  try {
166
- const resultObject = await adminModel.findByIdAndDelete({ _id });
167
  if (!resultObject)
168
  return {
169
  success: false,
@@ -173,7 +173,7 @@ export class AdminsService {
173
 
174
  return {
175
  success: true,
176
- code: 200
177
  };
178
  } catch (err) {
179
  console.log(`err.message`, err.message);
@@ -235,8 +235,11 @@ export class AdminsService {
235
  error: "No Matching Result Found.",
236
  };
237
 
238
- const hashedPassword = await bcrypt.hash(newPasswordString, saltrounds);
239
- const resultObject = await adminModel.findOneAndUpdate(
 
 
 
240
  { email: emailString },
241
  { password: hashedPassword }
242
  );
@@ -262,6 +265,3 @@ export class AdminsService {
262
  }
263
  }
264
  }
265
-
266
-
267
-
 
1
  import bcrypt from "bcrypt";
2
+ import { Admin, IAdmin } from "../models/admin.model";
3
+ import { config } from "../../../../configs/config";
4
+ import { FilterQuery } from "mongoose";
5
 
6
  export class AdminsService {
7
  static async find(filterObject) {
8
  try {
9
+ const resultObject = await Admin.findOne(filterObject).lean();
10
 
11
  if (!resultObject)
12
  return {
 
30
  }
31
  }
32
 
33
+ static async get(filterObject: FilterQuery<IAdmin>) {
34
  try {
35
+ const resultObject = await Admin.findOne(filterObject)
36
+ .lean()
37
+ .select("-password");
38
  if (!resultObject)
39
  return {
40
  success: false,
 
58
 
59
  static async list(filterObject) {
60
  try {
61
+ const resultArray = await Admin.find(filterObject)
 
62
  .lean()
63
  .select("-password");
64
 
 
68
  code: 404,
69
  error: "No Matching Result Found.",
70
  };
71
+ const count = await Admin.countDocuments(filterObject);
72
  return {
73
  success: true,
74
  code: 200,
 
88
  static async create(formObject) {
89
  try {
90
  if (formObject.email) formObject.email = formObject.email.toLowerCase();
91
+ const resultObject = new Admin(formObject);
92
  await resultObject.save();
93
 
94
  if (!resultObject)
 
127
  const duplicate = await this.find({ email: formObject.email });
128
  if (
129
  duplicate.success &&
130
+ duplicate.record._id.toString() !=
131
+ existingObject.record._id.toString()
132
  )
133
  return {
134
  success: false,
 
137
  };
138
  }
139
 
140
+ const resultObject = await Admin.findByIdAndUpdate({ _id }, formObject);
 
 
 
141
 
142
  if (!resultObject)
143
  return {
 
163
 
164
  static async remove(_id) {
165
  try {
166
+ const resultObject = await Admin.findByIdAndDelete({ _id });
167
  if (!resultObject)
168
  return {
169
  success: false,
 
173
 
174
  return {
175
  success: true,
176
+ code: 200,
177
  };
178
  } catch (err) {
179
  console.log(`err.message`, err.message);
 
235
  error: "No Matching Result Found.",
236
  };
237
 
238
+ const hashedPassword = await bcrypt.hash(
239
+ newPasswordString,
240
+ config.saltRounds
241
+ );
242
+ const resultObject = await Admin.findOneAndUpdate(
243
  { email: emailString },
244
  { password: hashedPassword }
245
  );
 
265
  }
266
  }
267
  }
 
 
 
src/modules/console/admins/validations/create-admin.validation.ts ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import * as joi from "joi";
2
+ import { Role } from "../enums/roles.enum";
3
+
4
+ export const createAdminSchema = joi
5
+ .object()
6
+ .required()
7
+ .keys({
8
+ name: joi.string().empty().required().messages({
9
+ "string.base": "please enter a valid name",
10
+ "any.required": "name is required",
11
+ "string.empty": "name can not be empty",
12
+ }),
13
+ email: joi
14
+ .string()
15
+ .required()
16
+ .email({
17
+ minDomainSegments: 2,
18
+ tlds: { allow: ["com", "net", "org", "eg", "io"] },
19
+ })
20
+ .empty()
21
+ .messages({
22
+ "string.email": "please enter a valid email",
23
+ "any.required": "email must be entered",
24
+ "string.empty": "email can not be empty",
25
+ }),
26
+ password: joi.string().empty().min(8).required().messages({
27
+ "string.base": "please enter a valid password",
28
+ "any.required": "password must be entered",
29
+ "string.empty": "password cannot be empty",
30
+ "string.min": "password must be at least 8 characters",
31
+ }),
32
+ dob: joi.date().empty().optional().messages({
33
+ "date.base": "please enter a valid date",
34
+ }),
35
+ role: joi
36
+ .string()
37
+ .valid(...Object.values(Role))
38
+ .required(),
39
+ gender: joi.string().empty().required(),
40
+ });
src/modules/console/users/controllers/users.controller.ts CHANGED
@@ -1,9 +1,9 @@
1
  import { jwtHelper } from "../../../../helpers/jwt.helper";
2
- import { validator } from "../../../../helpers/validation.helper";
3
  import { BaseController } from "../../../../lib/controllers/controller.base";
4
  import { Prefix } from "../../../common/decorators/prefix.decorator";
 
5
  import { usersService } from "../services/users.service";
6
- import { adminUserValidation } from "../validation/admin.userValidation";
7
 
8
  const allowedRoles = ["superAdmin", "admin"];
9
 
@@ -13,7 +13,7 @@ export class adminUsersController extends BaseController {
13
  router.post(
14
  "/create",
15
  jwtHelper.verifyToken(allowedRoles),
16
- validator(adminUserValidation.createValidation),
17
  adminUsersController.create
18
  );
19
  }
 
1
  import { jwtHelper } from "../../../../helpers/jwt.helper";
2
+ import { bodyValidator } from "../../../../helpers/validation.helper";
3
  import { BaseController } from "../../../../lib/controllers/controller.base";
4
  import { Prefix } from "../../../common/decorators/prefix.decorator";
5
+ import { userRegisterValidation } from "../../../common/users/validation/user.baseValidation";
6
  import { usersService } from "../services/users.service";
 
7
 
8
  const allowedRoles = ["superAdmin", "admin"];
9
 
 
13
  router.post(
14
  "/create",
15
  jwtHelper.verifyToken(allowedRoles),
16
+ bodyValidator(userRegisterValidation),
17
  adminUsersController.create
18
  );
19
  }
src/modules/user/users/controllers/auth.controller.ts CHANGED
@@ -1,25 +1,22 @@
1
  import { usersService } from "../services/users.service";
2
  import { jwtHelper } from "../../../../helpers/jwt.helper";
3
  import { BaseController } from "../../../../lib/controllers/controller.base";
4
- import { validator } from "../../../../helpers/validation.helper";
5
- import { userValidation } from "../validation/user.Validation";
6
  import { Router } from "express";
7
  import { Prefix } from "../../../common/decorators/prefix.decorator";
8
  import { Env } from "../../../../configs/env";
 
 
 
9
 
10
  @Prefix("/user")
11
  export class AuthController extends BaseController {
12
  static setRoutes(router: Router): void {
13
  router.post(
14
  "/register",
15
- validator(userValidation.createValidation),
16
  AuthController.register
17
  );
18
- router.post(
19
- "/login",
20
- validator(userValidation.loginValidation),
21
- AuthController.login
22
- );
23
  }
24
 
25
  static async register(req, res) {
 
1
  import { usersService } from "../services/users.service";
2
  import { jwtHelper } from "../../../../helpers/jwt.helper";
3
  import { BaseController } from "../../../../lib/controllers/controller.base";
 
 
4
  import { Router } from "express";
5
  import { Prefix } from "../../../common/decorators/prefix.decorator";
6
  import { Env } from "../../../../configs/env";
7
+ import { bodyValidator } from "../../../../helpers/validation.helper";
8
+ import { userRegisterValidation } from "../../../common/users/validation/user.baseValidation";
9
+ import { loginValidation } from "../validation/user.Validation";
10
 
11
  @Prefix("/user")
12
  export class AuthController extends BaseController {
13
  static setRoutes(router: Router): void {
14
  router.post(
15
  "/register",
16
+ bodyValidator(userRegisterValidation),
17
  AuthController.register
18
  );
19
+ router.post("/login", bodyValidator(loginValidation), AuthController.login);
 
 
 
 
20
  }
21
 
22
  static async register(req, res) {
src/modules/user/users/validation/user.Validation.ts CHANGED
@@ -1,21 +1,26 @@
1
- import joi from 'joi';
2
- import { userBaseValidation } from '../../../common/users/validation/user.baseValidation';
3
 
4
- export class userValidation extends userBaseValidation {
5
- static loginValidation = {
6
- body: joi.object().required().keys({
7
-
8
- email: joi.string().required().email({ minDomainSegments: 2, tlds: { allow: ['com', 'net', 'org', 'eg', 'io'] } }).empty().messages({
9
- "string.email": "please enter a valid email",
10
- "any.required": "email must be entered",
11
- "string.empty": "email can not be empty"
12
- }),
13
- password: joi.string().empty().min(8).required().messages({
14
- "string.base": "please enter a valid password",
15
- "any.required": "password must be entered",
16
- "string.empty": "password cannot be empty",
17
- "string.min": "password must be at least 8 characters"
18
- })
19
- })
20
- }
21
- }
 
 
 
 
 
 
 
1
+ import joi from "joi";
 
2
 
3
+ export const loginValidation = joi
4
+ .object()
5
+ .required()
6
+ .keys({
7
+ email: joi
8
+ .string()
9
+ .required()
10
+ .email({
11
+ minDomainSegments: 2,
12
+ tlds: { allow: ["com", "net", "org", "eg", "io"] },
13
+ })
14
+ .empty()
15
+ .messages({
16
+ "string.email": "please enter a valid email",
17
+ "any.required": "email must be entered",
18
+ "string.empty": "email can not be empty",
19
+ }),
20
+ password: joi.string().empty().min(8).required().messages({
21
+ "string.base": "please enter a valid password",
22
+ "any.required": "password must be entered",
23
+ "string.empty": "password cannot be empty",
24
+ "string.min": "password must be at least 8 characters",
25
+ }),
26
+ });
src/routes.ts CHANGED
@@ -3,6 +3,7 @@ import { Router, Express } from "express";
3
  import * as glob from "glob";
4
  import path from "path";
5
  import { BaseController } from "./lib/controllers/controller.base";
 
6
 
7
  export const setAppRoutes = async (app: Express) => {
8
  const mainRouter = Router();
@@ -22,6 +23,8 @@ const setCustomRoutes = (router: Router) => {
22
  .json({ success: true, message: "Server is up!", code: 200 });
23
  });
24
 
 
 
25
  router.all("*", (_req: any, res: any) => {
26
  res
27
  .status(404)
 
3
  import * as glob from "glob";
4
  import path from "path";
5
  import { BaseController } from "./lib/controllers/controller.base";
6
+ import { validationErrorHandler } from "./helpers/validation.helper";
7
 
8
  export const setAppRoutes = async (app: Express) => {
9
  const mainRouter = Router();
 
23
  .json({ success: true, message: "Server is up!", code: 200 });
24
  });
25
 
26
+ router.use(validationErrorHandler);
27
+
28
  router.all("*", (_req: any, res: any) => {
29
  res
30
  .status(404)